From 72790dc8e34826b39ac696b03025ae6b7b6beb2b Mon Sep 17 00:00:00 2001 From: Pavel Yaskevich Date: Wed, 2 Dec 2015 19:23:54 -0800 Subject: [PATCH] Integrate SASI index into Cassandra patch by xedin; reviewed by beobal for CASSANDRA-10661 --- CHANGES.txt | 1 + build.xml | 22 +- doc/SASI.md | 768 + lib/concurrent-trees-2.4.0.jar | Bin 0 -> 118696 bytes lib/hppc-0.5.4.jar | Bin 0 -> 1305173 bytes lib/jflex-1.6.0.jar | Bin 0 -> 1048690 bytes lib/licenses/concurrent-trees-2.4.0.txt | 201 + lib/licenses/hppc-0.5.4.txt | 202 + lib/licenses/jflex-1.6.0.txt | 201 + lib/licenses/primitive-1.0.txt | 201 + lib/licenses/snowball-stemmer-1.3.0.581.1.txt | 201 + lib/primitive-1.0.jar | Bin 0 -> 52589 bytes lib/snowball-stemmer-1.3.0.581.1.jar | Bin 0 -> 93019 bytes .../cassandra/config/DatabaseDescriptor.java | 7 +- .../org/apache/cassandra/db/ColumnIndex.java | 6 +- .../apache/cassandra/db/filter/RowFilter.java | 15 +- .../index/SecondaryIndexManager.java | 11 + .../cassandra/index/sasi/SASIIndex.java | 288 + .../index/sasi/SASIIndexBuilder.java | 128 + .../cassandra/index/sasi/SSTableIndex.java | 187 + .../org/apache/cassandra/index/sasi/Term.java | 65 + .../cassandra/index/sasi/TermIterator.java | 208 + .../index/sasi/analyzer/AbstractAnalyzer.java | 51 + .../index/sasi/analyzer/NoOpAnalyzer.java | 54 + .../sasi/analyzer/NonTokenizingAnalyzer.java | 126 + .../sasi/analyzer/NonTokenizingOptions.java | 147 + .../sasi/analyzer/SUPPLEMENTARY.jflex-macro | 143 + .../index/sasi/analyzer/StandardAnalyzer.java | 194 + .../sasi/analyzer/StandardTokenizerImpl.jflex | 220 + .../analyzer/StandardTokenizerInterface.java | 65 + .../analyzer/StandardTokenizerOptions.java | 272 + .../analyzer/filter/BasicResultFilters.java | 76 + .../filter/FilterPipelineBuilder.java | 51 + .../filter/FilterPipelineExecutor.java | 53 + .../analyzer/filter/FilterPipelineTask.java | 52 + .../sasi/analyzer/filter/StemmerFactory.java | 101 + .../sasi/analyzer/filter/StemmingFilters.java | 46 + .../sasi/analyzer/filter/StopWordFactory.java | 100 + .../sasi/analyzer/filter/StopWordFilters.java | 42 + .../index/sasi/conf/ColumnIndex.java | 193 + .../index/sasi/conf/DataTracker.java | 162 + .../cassandra/index/sasi/conf/IndexMode.java | 169 + .../index/sasi/conf/view/PrefixTermTree.java | 194 + .../index/sasi/conf/view/RangeTermTree.java | 77 + .../index/sasi/conf/view/TermTree.java | 58 + .../cassandra/index/sasi/conf/view/View.java | 104 + .../cassandra/index/sasi/disk/Descriptor.java | 51 + .../index/sasi/disk/OnDiskBlock.java | 142 + .../index/sasi/disk/OnDiskIndex.java | 773 + .../index/sasi/disk/OnDiskIndexBuilder.java | 627 + .../sasi/disk/PerSSTableIndexWriter.java | 361 + .../cassandra/index/sasi/disk/Token.java | 42 + .../cassandra/index/sasi/disk/TokenTree.java | 519 + .../index/sasi/disk/TokenTreeBuilder.java | 839 ++ .../TimeQuotaExceededException.java | 21 + .../index/sasi/memory/IndexMemtable.java | 71 + .../index/sasi/memory/KeyRangeIterator.java | 118 + .../cassandra/index/sasi/memory/MemIndex.java | 51 + .../index/sasi/memory/SkipListMemIndex.java | 97 + .../index/sasi/memory/TrieMemIndex.java | 254 + .../cassandra/index/sasi/plan/Expression.java | 340 + .../cassandra/index/sasi/plan/Operation.java | 477 + .../index/sasi/plan/QueryController.java | 261 + .../cassandra/index/sasi/plan/QueryPlan.java | 170 + .../cassandra/index/sasi/sa/ByteTerm.java | 51 + .../cassandra/index/sasi/sa/CharTerm.java | 54 + .../cassandra/index/sasi/sa/IntegralSA.java | 84 + .../apache/cassandra/index/sasi/sa/SA.java | 58 + .../cassandra/index/sasi/sa/SuffixSA.java | 143 + .../apache/cassandra/index/sasi/sa/Term.java | 58 + .../cassandra/index/sasi/sa/TermIterator.java | 31 + .../index/sasi/utils/AbstractIterator.java | 155 + .../index/sasi/utils/CombinedTerm.java | 103 + .../sasi/utils/CombinedTermIterator.java | 87 + .../index/sasi/utils/CombinedValue.java | 25 + .../index/sasi/utils/MappedBuffer.java | 253 + .../index/sasi/utils/OnDiskIndexIterator.java | 64 + .../sasi/utils/RangeIntersectionIterator.java | 281 + .../index/sasi/utils/RangeIterator.java | 279 + .../index/sasi/utils/RangeUnionIterator.java | 158 + .../cassandra/index/sasi/utils/TypeUtil.java | 84 + .../sasi/utils/trie/AbstractPatriciaTrie.java | 1151 ++ .../index/sasi/utils/trie/AbstractTrie.java | 230 + .../index/sasi/utils/trie/Cursor.java | 83 + .../index/sasi/utils/trie/KeyAnalyzer.java | 73 + .../index/sasi/utils/trie/PatriciaTrie.java | 1261 ++ .../cassandra/index/sasi/utils/trie/Trie.java | 152 + .../index/sasi/utils/trie/Tries.java | 95 + .../cassandra/io/sstable/Component.java | 13 +- .../cassandra/io/sstable/KeyIterator.java | 7 + .../sstable/format/SSTableFlushObserver.java | 12 +- .../io/sstable/format/SSTableReader.java | 20 + .../io/sstable/format/SSTableWriter.java | 9 +- .../io/util/DataOutputBufferFixed.java | 5 + .../cassandra/io/util/SequentialWriter.java | 7 + .../cassandra/utils/ByteBufferUtil.java | 41 + .../apache/cassandra/utils/FBUtilities.java | 5 + .../cassandra/utils/memory/MemoryUtil.java | 5 +- .../index/sasi/analyzer/filter/ar_ST.txt | 163 + .../index/sasi/analyzer/filter/bg_ST.txt | 260 + .../index/sasi/analyzer/filter/cs_ST.txt | 257 + .../index/sasi/analyzer/filter/de_ST.txt | 604 + .../index/sasi/analyzer/filter/en_ST.txt | 572 + .../index/sasi/analyzer/filter/es_ST.txt | 308 + .../index/sasi/analyzer/filter/fi_ST.txt | 748 + .../index/sasi/analyzer/filter/fr_ST.txt | 464 + .../index/sasi/analyzer/filter/hi_ST.txt | 164 + .../index/sasi/analyzer/filter/hu_ST.txt | 738 + .../index/sasi/analyzer/filter/it_ST.txt | 400 + .../index/sasi/analyzer/filter/pl_ST.txt | 139 + .../index/sasi/analyzer/filter/pt_ST.txt | 357 + .../index/sasi/analyzer/filter/ro_ST.txt | 283 + .../index/sasi/analyzer/filter/ru_ST.txt | 423 + .../index/sasi/analyzer/filter/sv_ST.txt | 387 + test/conf/cassandra-murmur.yaml | 43 + ...entures_of_huckleberry_finn_mark_twain.txt | 12361 ++++++++++++++++ .../tokenization/apache_license_header.txt | 16 + test/resources/tokenization/ja_jp_1.txt | 1 + test/resources/tokenization/ja_jp_2.txt | 2 + test/resources/tokenization/lorem_ipsum.txt | 1 + test/resources/tokenization/ru_ru_1.txt | 19 + .../tokenization/top_visited_domains.txt | 3 + test/resources/tokenization/zn_tw_1.txt | 19 + .../org/apache/cassandra/SchemaLoader.java | 139 + .../cassandra/cql3/KeyCacheCqlTest.java | 14 +- .../cassandra/index/sasi/SASIIndexTest.java | 1852 +++ .../analyzer/NonTokenizingAnalyzerTest.java | 78 + .../sasi/analyzer/StandardAnalyzerTest.java | 196 + .../index/sasi/disk/OnDiskIndexTest.java | 856 ++ .../sasi/disk/PerSSTableIndexWriterTest.java | 161 + .../index/sasi/disk/TokenTreeTest.java | 535 + .../index/sasi/plan/OperationTest.java | 645 + .../index/sasi/utils/LongIterator.java | 106 + .../index/sasi/utils/MappedBufferTest.java | 540 + .../utils/RangeIntersectionIteratorTest.java | 387 + .../sasi/utils/RangeUnionIteratorTest.java | 306 + .../format/SSTableFlushObserverTest.java | 5 +- 137 files changed, 40339 insertions(+), 26 deletions(-) create mode 100644 doc/SASI.md create mode 100644 lib/concurrent-trees-2.4.0.jar create mode 100644 lib/hppc-0.5.4.jar create mode 100644 lib/jflex-1.6.0.jar create mode 100644 lib/licenses/concurrent-trees-2.4.0.txt create mode 100644 lib/licenses/hppc-0.5.4.txt create mode 100644 lib/licenses/jflex-1.6.0.txt create mode 100644 lib/licenses/primitive-1.0.txt create mode 100644 lib/licenses/snowball-stemmer-1.3.0.581.1.txt create mode 100644 lib/primitive-1.0.jar create mode 100644 lib/snowball-stemmer-1.3.0.581.1.jar create mode 100644 src/java/org/apache/cassandra/index/sasi/SASIIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/SASIIndexBuilder.java create mode 100644 src/java/org/apache/cassandra/index/sasi/SSTableIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/Term.java create mode 100644 src/java/org/apache/cassandra/index/sasi/TermIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/AbstractAnalyzer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/NoOpAnalyzer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingOptions.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/SUPPLEMENTARY.jflex-macro create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerImpl.jflex create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerInterface.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerOptions.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/BasicResultFilters.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineBuilder.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineExecutor.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineTask.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmerFactory.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmingFilters.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFactory.java create mode 100644 src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFilters.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/ColumnIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/DataTracker.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/IndexMode.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/view/PrefixTermTree.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/view/RangeTermTree.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/view/TermTree.java create mode 100644 src/java/org/apache/cassandra/index/sasi/conf/view/View.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/Descriptor.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/OnDiskBlock.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/Token.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java create mode 100644 src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java create mode 100644 src/java/org/apache/cassandra/index/sasi/exceptions/TimeQuotaExceededException.java create mode 100644 src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java create mode 100644 src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/memory/MemIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java create mode 100644 src/java/org/apache/cassandra/index/sasi/plan/Expression.java create mode 100644 src/java/org/apache/cassandra/index/sasi/plan/Operation.java create mode 100644 src/java/org/apache/cassandra/index/sasi/plan/QueryController.java create mode 100644 src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/ByteTerm.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/CharTerm.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/IntegralSA.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/SA.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/Term.java create mode 100644 src/java/org/apache/cassandra/index/sasi/sa/TermIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/AbstractIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/CombinedTerm.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/CombinedTermIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/CombinedValue.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/MappedBuffer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/OnDiskIndexIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/RangeIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/TypeUtil.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractPatriciaTrie.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractTrie.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/Cursor.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/KeyAnalyzer.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/PatriciaTrie.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/Trie.java create mode 100644 src/java/org/apache/cassandra/index/sasi/utils/trie/Tries.java create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ar_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/bg_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/cs_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/de_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/en_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/es_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fi_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fr_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hi_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hu_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/it_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pl_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pt_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ro_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ru_ST.txt create mode 100644 src/resources/org/apache/cassandra/index/sasi/analyzer/filter/sv_ST.txt create mode 100644 test/conf/cassandra-murmur.yaml create mode 100644 test/resources/tokenization/adventures_of_huckleberry_finn_mark_twain.txt create mode 100644 test/resources/tokenization/apache_license_header.txt create mode 100644 test/resources/tokenization/ja_jp_1.txt create mode 100644 test/resources/tokenization/ja_jp_2.txt create mode 100644 test/resources/tokenization/lorem_ipsum.txt create mode 100644 test/resources/tokenization/ru_ru_1.txt create mode 100644 test/resources/tokenization/top_visited_domains.txt create mode 100644 test/resources/tokenization/zn_tw_1.txt create mode 100644 test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzerTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzerTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/disk/OnDiskIndexTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/utils/MappedBufferTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java create mode 100644 test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java diff --git a/CHANGES.txt b/CHANGES.txt index 650bf5fe14..9309ef4ef6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.4 + * Integrate SASI index into Cassandra (CASSANDRA-10661) * Add --skip-flush option to nodetool snapshot * Skip values for non-queried columns (CASSANDRA-10657) * Add support for secondary indexes on static columns (CASSANDRA-8103) diff --git a/build.xml b/build.xml index f9f42f7704..035628a67e 100644 --- a/build.xml +++ b/build.xml @@ -243,6 +243,15 @@ + + + + + + diff --git a/doc/SASI.md b/doc/SASI.md new file mode 100644 index 0000000000..64573b8d0e --- /dev/null +++ b/doc/SASI.md @@ -0,0 +1,768 @@ +# SASIIndex + +[`SASIIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/SASIIndex.java), +or "SASI" for short, is an implementation of Cassandra's +`Index` interface that can be used as an alternative to the +existing implementations. SASI's indexing and querying improves on +existing implementations by tailoring it specifically to Cassandra's +needs. SASI has superior performance in cases where queries would +previously require filtering. In achieving this performance, SASI aims +to be significantly less resource intensive than existing +implementations, in memory, disk, and CPU usage. In addition, SASI +supports prefix and contains queries on strings (similar to SQL's +`LIKE = "foo*"` or `LIKE = "*foo*"'`). + +The following goes on describe how to get up and running with SASI, +demonstrates usage with examples, and provides some details on its +implementation. + +## Using SASI + +The examples below walk through creating a table and indexes on its +columns, and performing queries on some inserted data. The patchset in +this repository includes support for the Thrift and CQL3 interfaces. + +The examples below assume the `demo` keyspace has been created and is +in use. + +``` +cqlsh> CREATE KEYSPACE demo WITH replication = { + ... 'class': 'SimpleStrategy', + ... 'replication_factor': '1' + ... }; +cqlsh> USE demo; +``` + +All examples are performed on the `sasi` table: + +``` +cqlsh:demo> CREATE TABLE sasi (id uuid, first_name text, last_name text, + ... age int, height int, created_at bigint, primary key (id)); +``` + +#### Creating Indexes + +To create SASI indexes use CQLs `CREATE CUSTOM INDEX` statement: + +``` +cqlsh:demo> CREATE CUSTOM INDEX ON sasi (first_name) USING 'org.apache.cassandra.index.sasi.SASIIndex' + ... WITH OPTIONS = { + ... 'analyzer_class': + ... 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer', + ... 'case_sensitive': 'false' + ... }; + +cqlsh:demo> CREATE CUSTOM INDEX ON sasi (last_name) USING 'org.apache.cassandra.index.sasi.SASIIndex' + ... WITH OPTIONS = {'mode': 'CONTAINS'}; + +cqlsh:demo> CREATE CUSTOM INDEX ON sasi (age) USING 'org.apache.cassandra.index.sasi.SASIIndex'; + +cqlsh:demo> CREATE CUSTOM INDEX ON sasi (created_at) USING 'org.apache.cassandra.index.sasi.SASIIndex' + ... WITH OPTIONS = {'mode': 'SPARSE'}; +``` + +The indexes created have some options specified that customize their +behaviour and potentially performance. The index on `first_name` is +case-insensitive. The analyzers are discussed more in a subsequent +example. The `NonTokenizingAnalyzer` performs no analysis on the +text. Each index has a mode: `PREFIX`, `CONTAINS`, or `SPARSE`, the +first being the default. The `last_name` index is created with the +mode `CONTAINS` which matches terms on suffixes instead of prefix +only. Examples of this are available below and more detail can be +found in the section on +[OnDiskIndex](https://github.com/xedin/sasi#ondiskindexbuilder).The +`created_at` column is created with its mode set to `SPARSE`, which is +meant to improve performance of querying large, dense number ranges +like timestamps for data inserted every millisecond. Details of the +`SPARSE` implementation can also be found in the section on the +[OnDiskIndex](https://github.com/xedin/sasi#ondiskindexbuilder). The `age` +index is created with the default `PREFIX` mode and no +case-sensitivity or text analysis options are specified since the +field is numeric. + +After inserting the following data and performing a `nodetool flush`, +SASI performing index flushes to disk can be seen in Cassandra's logs +-- although the direct call to flush is not required (see +[IndexMemtable](#indexmemtable) for more details). + +``` +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (556ebd54-cbe5-4b75-9aae-bf2a31a24500, 'Pavel', 'Yaskevich', 27, 181, 1442959315018); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (5770382a-c56f-4f3f-b755-450e24d55217, 'Jordan', 'West', 26, 173, 1442959315019); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (96053844-45c3-4f15-b1b7-b02c441d3ee1, 'Mikhail', 'Stepura', 36, 173, 1442959315020); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (f5dfcabe-de96-4148-9b80-a1c41ed276b4, 'Michael', 'Kjellman', 26, 180, 1442959315021); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (2970da43-e070-41a8-8bcb-35df7a0e608a, 'Johnny', 'Zhang', 32, 175, 1442959315022); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (6b757016-631d-4fdb-ac62-40b127ccfbc7, 'Jason', 'Brown', 40, 182, 1442959315023); + +cqlsh:demo> INSERT INTO sasi (id, first_name, last_name, age, height, created_at) + ... VALUES (8f909e8a-008e-49dd-8d43-1b0df348ed44, 'Vijay', 'Parthasarathy', 34, 183, 1442959315024); + +cqlsh:demo> SELECT first_name, last_name, age, height, created_at FROM sasi; + + first_name | last_name | age | height | created_at +------------+---------------+-----+--------+--------------- + Michael | Kjellman | 26 | 180 | 1442959315021 + Mikhail | Stepura | 36 | 173 | 1442959315020 + Jason | Brown | 40 | 182 | 1442959315023 + Pavel | Yaskevich | 27 | 181 | 1442959315018 + Vijay | Parthasarathy | 34 | 183 | 1442959315024 + Jordan | West | 26 | 173 | 1442959315019 + Johnny | Zhang | 32 | 175 | 1442959315022 + +(7 rows) +``` + +#### Equality & Prefix Queries + +SASI supports simple queries already supported by CQL, however, for +text fields like `first_name` equals queries perform prefix searches +-- this is similar to `first_name LIKE 'M*'` in SQL (excluding case +sensitivity, which is dependent on the index configuration). The +semantics of CQL's `=` were modified instead of making further +modifications of the grammar with the introduction of a `LIKE` +operator. Ideally, CQL would be modified to include such an operator, +supporting both prefix and suffix searches. + +``` +cqlsh:demo> SELECT first_name, last_name, age, height, created_at FROM sasi + ... WHERE first_name = 'M'; + + first_name | last_name | age | height | created_at +------------+-----------+-----+--------+--------------- + Michael | Kjellman | 26 | 180 | 1442959315021 + Mikhail | Stepura | 36 | 173 | 1442959315020 + +(2 rows) +``` + +Of course, the case of the query does not matter for the `first_name` +column because of the options provided at index creation time. + +``` +cqlsh:demo> SELECT first_name, last_name, age, height, created_at FROM sasi + ... WHERE first_name = 'm'; + + first_name | last_name | age | height | created_at +------------+-----------+-----+--------+--------------- + Michael | Kjellman | 26 | 180 | 1442959315021 + Mikhail | Stepura | 36 | 173 | 1442959315020 + +(2 rows) +``` + +#### Compound Queries + +SASI supports queries with multiple predicates, however, due to the +nature of the default indexing implementation, CQL requires the user +to specify `ALLOW FILTERING` to opt-in to the potential performance +pitfalls of such a query. With SASI, while the requirement to include +`ALLOW FILTERING` remains, to reduce modifications to the grammar, the +performance pitfalls do not exist because filtering is not +performed. Details on how SASI joins data from multiple predicates is +available below in the +[Implementation Details](https://github.com/xedin/sasi#implementation-details) +section. + +``` +cqlsh:demo> SELECT first_name, last_name, age, height, created_at FROM sasi + ... WHERE first_name = 'M' and age < 30 ALLOW FILTERING; + + first_name | last_name | age | height | created_at +------------+-----------+-----+--------+--------------- + Michael | Kjellman | 26 | 180 | 1442959315021 + +(1 rows) +``` + +#### Suffix Queries + +The next example demonstrates `CONTAINS` mode on the `last_name` +column. By using this mode predicates can search for any strings +containing the search string as a sub-string. In this case the strings +containing "a" or "an". + +``` +cqlsh:demo> SELECT * FROM sasi WHERE last_name = 'a'; + + id | age | created_at | first_name | height | last_name +--------------------------------------+-----+---------------+------------+--------+--------------- + f5dfcabe-de96-4148-9b80-a1c41ed276b4 | 26 | 1442959315021 | Michael | 180 | Kjellman + 96053844-45c3-4f15-b1b7-b02c441d3ee1 | 36 | 1442959315020 | Mikhail | 173 | Stepura + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | 1442959315018 | Pavel | 181 | Yaskevich + 8f909e8a-008e-49dd-8d43-1b0df348ed44 | 34 | 1442959315024 | Vijay | 183 | Parthasarathy + 2970da43-e070-41a8-8bcb-35df7a0e608a | 32 | 1442959315022 | Johnny | 175 | Zhang + +(5 rows) + +cqlsh:demo> SELECT * FROM sasi WHERE last_name = 'an'; + + id | age | created_at | first_name | height | last_name +--------------------------------------+-----+---------------+------------+--------+----------- + f5dfcabe-de96-4148-9b80-a1c41ed276b4 | 26 | 1442959315021 | Michael | 180 | Kjellman + 2970da43-e070-41a8-8bcb-35df7a0e608a | 32 | 1442959315022 | Johnny | 175 | Zhang + +(2 rows) +``` + +#### Expressions on Non-Indexed Columns + +SASI also supports filtering on non-indexed columns like `height`. The +expression can only narrow down an existing query using `AND`. + +``` +cqlsh:demo> SELECT * FROM sasi WHERE last_name = 'a' AND height >= 175 ALLOW FILTERING; + + id | age | created_at | first_name | height | last_name +--------------------------------------+-----+---------------+------------+--------+--------------- + f5dfcabe-de96-4148-9b80-a1c41ed276b4 | 26 | 1442959315021 | Michael | 180 | Kjellman + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | 1442959315018 | Pavel | 181 | Yaskevich + 8f909e8a-008e-49dd-8d43-1b0df348ed44 | 34 | 1442959315024 | Vijay | 183 | Parthasarathy + 2970da43-e070-41a8-8bcb-35df7a0e608a | 32 | 1442959315022 | Johnny | 175 | Zhang + +(4 rows) +``` + +#### Text Analysis (Tokenization and Stemming) + +Lastly, to demonstrate text analysis an additional column is needed on +the table. Its definition, index, and statements to update rows are shown below. + +``` +cqlsh:demo> ALTER TABLE sasi ADD bio text; +cqlsh:demo> CREATE CUSTOM INDEX ON sasi (bio) USING 'org.apache.cassandra.index.sasi.SASIIndex' + ... WITH OPTIONS = { + ... 'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', + ... 'tokenization_enable_stemming': 'true', + ... 'analyzed': 'true', + ... 'tokenization_normalize_lowercase': 'true', + ... 'tokenization_locale': 'en' + ... }; +cqlsh:demo> UPDATE sasi SET bio = 'Software Engineer, who likes distributed systems, doesnt like to argue.' WHERE id = 5770382a-c56f-4f3f-b755-450e24d55217; +cqlsh:demo> UPDATE sasi SET bio = 'Software Engineer, works on the freight distribution at nights and likes arguing' WHERE id = 556ebd54-cbe5-4b75-9aae-bf2a31a24500; +cqlsh:demo> SELECT * FROM sasi; + + id | age | bio | created_at | first_name | height | last_name +--------------------------------------+-----+----------------------------------------------------------------------------------+---------------+------------+--------+--------------- + f5dfcabe-de96-4148-9b80-a1c41ed276b4 | 26 | null | 1442959315021 | Michael | 180 | Kjellman + 96053844-45c3-4f15-b1b7-b02c441d3ee1 | 36 | null | 1442959315020 | Mikhail | 173 | Stepura + 6b757016-631d-4fdb-ac62-40b127ccfbc7 | 40 | null | 1442959315023 | Jason | 182 | Brown + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | Software Engineer, works on the freight distribution at nights and likes arguing | 1442959315018 | Pavel | 181 | Yaskevich + 8f909e8a-008e-49dd-8d43-1b0df348ed44 | 34 | null | 1442959315024 | Vijay | 183 | Parthasarathy + 5770382a-c56f-4f3f-b755-450e24d55217 | 26 | Software Engineer, who likes distributed systems, doesnt like to argue. | 1442959315019 | Jordan | 173 | West + 2970da43-e070-41a8-8bcb-35df7a0e608a | 32 | null | 1442959315022 | Johnny | 175 | Zhang + +(7 rows) +``` + +Index terms and query search strings are stemmed for the `bio` column +because it was configured to use the +[`StandardAnalyzer`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java) +and `analyzed` is set to `true`. The +`tokenization_normalize_lowercase` is similar to the `case_sensitive` +property but for the +[`StandardAnalyzer`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java). These +query demonstrates the stemming applied by [`StandardAnalyzer`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java). + +``` +cqlsh:demo> SELECT * FROM sasi WHERE bio = 'distributing'; + + id | age | bio | created_at | first_name | height | last_name +--------------------------------------+-----+----------------------------------------------------------------------------------+---------------+------------+--------+----------- + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | Software Engineer, works on the freight distribution at nights and likes arguing | 1442959315018 | Pavel | 181 | Yaskevich + 5770382a-c56f-4f3f-b755-450e24d55217 | 26 | Software Engineer, who likes distributed systems, doesnt like to argue. | 1442959315019 | Jordan | 173 | West + +(2 rows) + +cqlsh:demo> SELECT * FROM sasi WHERE bio = 'they argued'; + + id | age | bio | created_at | first_name | height | last_name +--------------------------------------+-----+----------------------------------------------------------------------------------+---------------+------------+--------+----------- + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | Software Engineer, works on the freight distribution at nights and likes arguing | 1442959315018 | Pavel | 181 | Yaskevich + 5770382a-c56f-4f3f-b755-450e24d55217 | 26 | Software Engineer, who likes distributed systems, doesnt like to argue. | 1442959315019 | Jordan | 173 | West + +(2 rows) + +cqlsh:demo> SELECT * FROM sasi WHERE bio = 'working at the company'; + + id | age | bio | created_at | first_name | height | last_name +--------------------------------------+-----+----------------------------------------------------------------------------------+---------------+------------+--------+----------- + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | Software Engineer, works on the freight distribution at nights and likes arguing | 1442959315018 | Pavel | 181 | Yaskevich + +(1 rows) + +cqlsh:demo> SELECT * FROM sasi WHERE bio = 'soft eng'; + + id | age | bio | created_at | first_name | height | last_name +--------------------------------------+-----+----------------------------------------------------------------------------------+---------------+------------+--------+----------- + 556ebd54-cbe5-4b75-9aae-bf2a31a24500 | 27 | Software Engineer, works on the freight distribution at nights and likes arguing | 1442959315018 | Pavel | 181 | Yaskevich + 5770382a-c56f-4f3f-b755-450e24d55217 | 26 | Software Engineer, who likes distributed systems, doesnt like to argue. | 1442959315019 | Jordan | 173 | West + +(2 rows) +``` + +## Implementation Details + +While SASI, at the surface, is simply an implementation of the +`Index` interface, at its core there are several data +structures and algorithms used to satisfy it. These are described +here. Additionally, the changes internal to Cassandra to support SASIs +integration are described. + +The `Index` interface divides responsibility of the +implementer into two parts: Indexing and Querying. Further, Cassandra +makes it possible to divide those responsibilities into the memory and +disk components. SASI takes advantage of Cassandra's write-once, +immutable, ordered data model to build indexes along with the flushing +of the memtable to disk -- this is the origin of the name "SSTable +Attached Secondary Index". + +The SASI index data structures are built in memory as the SSTable is +being written and they are flushed to disk before the writing of the +SSTable completes. The writing of each index file only requires +sequential writes to disk. In some cases, partial flushes are +performed, and later stitched back together, to reduce memory +usage. These data structures are optimized for this use case. + +Taking advantage of Cassandra's ordered data model, at query time, +candidate indexes are narrowed down for searching minimize the amount +of work done. Searching is then performed using an efficient method +that streams data off disk as needed. + +### Indexing + +Per SSTable, SASI writes an index file for each indexed column. The +data for these files is built in memory using the +[`OnDiskIndexBuilder`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java). Once +flushed to disk, the data is read using the +[`OnDiskIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java) +class. These are composed of bytes representing indexed terms, +organized for efficient writing or searching respectively. The keys +and values they hold represent tokens and positions in an SSTable and +these are stored per-indexed term in +[`TokenTreeBuilder`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java)s +for writing, and +[`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java)s +for querying. These index files are memory mapped after being written +to disk, for quicker access. For indexing data in the memtable SASI +uses its +[`IndexMemtable`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java) +class. + +#### OnDiskIndex(Builder) + +Each +[`OnDiskIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java) +is an instance of a modified +[Suffix Array](https://en.wikipedia.org/wiki/Suffix_array) data +structure. The +[`OnDiskIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java) +is comprised of page-size blocks of sorted terms and pointers to the +terms' associated data, as well as the data itself, stored also in one +or more page-sized blocks. The +[`OnDiskIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java) +is structured as a tree of arrays, where each level describes the +terms in the level below, the final level being the terms +themselves. The `PointerLevel`s and their `PointerBlock`s contain +terms and pointers to other blocks that *end* with those terms. The +`DataLevel`, the final level, and its `DataBlock`s contain terms and +point to the data itself, contained in [`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java)s. + +The terms written to the +[`OnDiskIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java) +vary depending on its "mode": either `PREFIX`, `CONTAINS`, or +`SPARSE`. In the `PREFIX` and `SPARSE` cases terms exact values are +written exactly once per `OnDiskIndex`. For example, a `PREFIX` index +with terms `Jason`, `Jordan`, `Pavel`, all three will be included in +the index. A `CONTAINS` index writes additional terms for each suffix of +each term recursively. Continuing with the example, a `CONTAINS` index +storing the previous terms would also store `ason`, `ordan`, `avel`, +`son`, `rdan`, `vel`, etc. This allows for queries on the suffix of +strings. The `SPARSE` mode differs from `PREFIX` in that for every 64 +blocks of terms a +[`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java) +is built merging all the +[`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java)s +for each term into a single one. This copy of the data is used for +efficient iteration of large ranges of e.g. timestamps. The index +"mode" is configurable per column at index creation time. + +#### TokenTree(Builder) + +The +[`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java) +is an implementation of the well-known +[B+-tree](https://en.wikipedia.org/wiki/B%2B_tree) that has been +modified to optimize for its use-case. In particular, it has been +optimized to associate tokens, longs, with a set of positions in an +SSTable, also longs. Allowing the set of long values accommodates +the possibility of a hash collision in the token, but the data +structure is optimized for the unlikely possibility of such a +collision. + +To optimize for its write-once environment the +[`TokenTreeBuilder`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java) +completely loads its interior nodes as the tree is built and it uses +the well-known algorithm optimized for bulk-loading the data +structure. + +[`TokenTree`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java)s provide the means to iterate a tokens, and file +positions, that match a given term, and to skip forward in that +iteration, an operation used heavily at query time. + +#### IndexMemtable + +The +[`IndexMemtable`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java) +handles indexing the in-memory data held in the memtable. The +[`IndexMemtable`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java) +in turn manages either a +[`TrieMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java) +or a +[`SkipListMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java) +per-column. The choice of which index type is used is data +dependent. The +[`TrieMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java) +is used for literal types. `AsciiType` and `UTF8Type` are literal +types by defualt but any column can be configured as a literal type +using the `is_literal` option at index creation time. For non-literal +types the +[`SkipListMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java) +is used. The +[`TrieMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java) +is an implementation that can efficiently support prefix queries on +character-like data. The +[`SkipListMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java), +conversely, is better suited for Cassandra other data types like +numbers. + +The +[`TrieMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java) +is built using either the `ConcurrentRadixTree` or +`ConcurrentSuffixTree` from the `com.goooglecode.concurrenttrees` +package. The choice between the two is made based on the indexing +mode, `PREFIX` or other modes, and `CONTAINS` mode, respectively. + +The +[`SkipListMemIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java) +is built on top of `java.util.concurrent.ConcurrentSkipListSet`. + +### Querying + +Responsible for converting the internal `IndexExpression` +representation into SASI's +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) +and +[`Expression`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Expression.java) +tree, optimizing the tree to reduce the amount of work done, and +driving the query itself the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +is the work horse of SASI's querying implementation. To efficiently +perform union and intersection operations SASI provides several +iterators similar to Cassandra's `MergeIterator` but tailored +specifically for SASIs use, and with more features. The +[`RangeUnionIterator`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java), +like its name suggests, performs set union over sets of tokens/keys +matching the query, only reading as much data as it needs from each +set to satisfy the query. The +[`RangeIntersectionIterator`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java), +similar to its counterpart, performs set intersection over its data. + +#### QueryPlan + +The +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +instantiated per search query is at the core of SASIs querying +implementation. Its work can be divided in two stages: analysis and +execution. + +During the analysis phase, +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +converts from Cassandra's internal representation of +`IndexExpression`s, which has also been modified to support encoding +queries that contain ORs and groupings of expressions using +parentheses (see the +[Cassandra Internal Changes](https://github.com/xedin/sasi#cassandra-internal-changes) +section below for more details). This process produces a tree of +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java)s, which in turn may contain [`Expression`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Expression.java)s, all of which +provide an alternative, more efficient, representation of the query. + +During execution the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +uses the `DecoratedKey`-generating iterator created from the +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) tree. These keys are read from disk and a final check to +ensure they satisfy the query is made, once again using the +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) tree. At the point the desired amount of matching data has +been found, or there is no more matching data, the result set is +returned to the coordinator through the existing internal components. + +The number of queries (total/failed/timed-out), and their latencies, +are maintined per-table/column family. + +SASI also supports concurrently iterating terms for the same index +accross SSTables. The concurrency factor is controlled by the +`cassandra.search_concurrency_factor` system property. The default is +`1`. + +##### QueryController + +Each +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +references a +[`QueryController`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java) +used throughout the execution phase. The +[`QueryController`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java) +has two responsibilities: to manage and ensure the proper cleanup of +resources (indexes), and to strictly enforce the time bound for query, +specified by the user via the range slice timeout. All indexes are +accessed via the +[`QueryController`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java) +so that they can be safely released by it later. The +[`QueryController`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java)'s +`checkpoint` function is called in specific places in the execution +path to ensure the time-bound is enforced. + +##### QueryPlan Optimizations + +While in the analysis phase, the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +performs several potential optimizations to the query. The goal of +these optimizations is to reduce the amount of work performed during +the execution phase. + +The simplest optimization performed is compacting multiple expressions +joined by logical intersection (`AND`) into a single [`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) with +three or more [`Expression`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Expression.java)s. For example, the query `WHERE age < 100 AND +fname = 'p*' AND first_name != 'pa*' AND age > 21` would, +without modification, have the following tree: + + ┌───────┐ + ┌────────│ AND │──────┐ + │ └───────┘ │ + ▼ ▼ + ┌───────┐ ┌──────────┐ + ┌─────│ AND │─────┐ │age < 100 │ + │ └───────┘ │ └──────────┘ + ▼ ▼ + ┌──────────┐ ┌───────┐ + │ fname=p* │ ┌─│ AND │───┐ + └──────────┘ │ └───────┘ │ + ▼ ▼ + ┌──────────┐ ┌──────────┐ + │fname!=pa*│ │ age > 21 │ + └──────────┘ └──────────┘ + +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +will remove the redundant right branch whose root is the final `AND` +and has leaves `fname != pa*` and `age > 21`. These [`Expression`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Expression.java)s will +be compacted into the parent `AND`, a safe operation due to `AND` +being associative and commutative. The resulting tree looks like the +following: + + ┌───────┐ + ┌────────│ AND │──────┐ + │ └───────┘ │ + ▼ ▼ + ┌───────┐ ┌──────────┐ + ┌───────────│ AND │────────┐ │age < 100 │ + │ └───────┘ │ └──────────┘ + ▼ │ ▼ + ┌──────────┐ │ ┌──────────┐ + │ fname=p* │ ▼ │ age > 21 │ + └──────────┘ ┌──────────┐ └──────────┘ + │fname!=pa*│ + └──────────┘ + +When excluding results from the result set, using `!=`, the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +determines the best method for handling it. For range queries, for +example, it may be optimal to divide the range into multiple parts +with a hole for the exclusion. For string queries, such as this one, +it is more optimal, however, to simply note which data to skip, or +exclude, while scanning the index. Following this optimization the +tree looks like this: + + ┌───────┐ + ┌────────│ AND │──────┐ + │ └───────┘ │ + ▼ ▼ + ┌───────┐ ┌──────────┐ + ┌───────│ AND │────────┐ │age < 100 │ + │ └───────┘ │ └──────────┘ + ▼ ▼ + ┌──────────────────┐ ┌──────────┐ + │ fname=p* │ │ age > 21 │ + │ exclusions=[pa*] │ └──────────┘ + └──────────────────┘ + +The last type of optimization applied, for this query, is to merge +range expressions across branches of the tree -- without modifying the +meaning of the query, of course. In this case, because the query +contains all `AND`s the `age` expressions can be collapsed. Along with +this optimization, the initial collapsing of unneeded `AND`s can also +be applied once more to result in this final tree using to execute the +query: + + ┌───────┐ + ┌──────│ AND │───────┐ + │ └───────┘ │ + ▼ ▼ + ┌──────────────────┐ ┌────────────────┐ + │ fname=p* │ │ 21 < age < 100 │ + │ exclusions=[pa*] │ └────────────────┘ + └──────────────────┘ + +#### Operations and Expressions + +As discussed, the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +optimizes a tree represented by +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java)s +as interior nodes, and +[`Expression`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Expression.java)s +as leaves. The +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) +class, more specifically, can have zero, one, or two +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java)s +as children and an unlimited number of expressions. The iterators used +to perform the queries, discussed below in the +"Range(Union|Intersection)Iterator" section, implement the necessary +logic to merge results transparently regardless of the +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java)s +children. + +Besides participating in the optimizations performed by the +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java), +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) +is also responsible for taking a row that has been returned by the +query and making a final validation that it in fact does match. This +`satisfiesBy` operation is performed recursively from the root of the +[`Operation`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java) +tree for a given query. These checks are performed directly on the +data in a given row. For more details on how `satisfiesBy` works see +the documentation +[in the code](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/Operation.java#L87-L123). + +#### Range(Union|Intersection)Iterator + +The abstract `RangeIterator` class provides a unified interface over +the two main operations performed by SASI at various layers in the +execution path: set intersection and union. These operations are +performed in a iterated, or "streaming", fashion to prevent unneeded +reads of elements from either set. In both the intersection and union +cases the algorithms take advantage of the data being pre-sorted using +the same sort order, e.g. term or token order. + +The +[`RangeUnionIterator`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java) +performs the "Merge-Join" portion of the +[Sort-Merge-Join](https://en.wikipedia.org/wiki/Sort-merge_join) +algorithm, with the properties of an outer-join, or union. It is +implemented with several optimizations to improve its performance over +a large number of iterators -- sets to union. Specifically, the +iterator exploits the likely case of the data having many sub-groups +of overlapping ranges and the unlikely case that all ranges will +overlap each other. For more details see the +[javadoc](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java#L9-L21). + +The +[`RangeIntersectionIterator`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java) +itself is not a subclass of `RangeIterator`. It is a container for +several classes, one of which, `AbstractIntersectionIterator`, +sub-classes `RangeIterator`. SASI supports two methods of performing +the intersection operation, and the ability to be adaptive in choosing +between them based on some properties of the data. + +`BounceIntersectionIterator`, and the `BOUNCE` strategy, works like +the +[`RangeUnionIterator`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java) +in that it performs a "Merge-Join", however, its nature is similar to +a inner-join, where like values are merged by a data-specific merge +function (e.g. merging two tokens in a list to lookup in a SSTable +later). See the +[javadoc](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java#L88-L101) +for more details on its implementation. + +`LookupIntersectionIterator`, and the `LOOKUP` strategy, performs a +different operation, more similar to a lookup in an associative data +structure, or "hash lookup" in database terminology. Once again, +details on the implementation can be found in the +[javadoc](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java#L199-L208). + +The choice between the two iterators, or the `ADAPTIVE` strategy, is +based upon the ratio of data set sizes of the minimum and maximum +range of the sets being intersected. If the number of the elements in +minimum range divided by the number of elements is the maximum range +is less than or equal to `0.01`, then the `ADAPTIVE` strategy chooses +the `LookupIntersectionIterator`, otherwise the +`BounceIntersectionIterator` is chosen. + +### The SASIIndex Class + +The above components are glued together by the +[`SASIIndex`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasiIndex.java) +class which implements `Index`, and is instantiated +per-table containing SASI indexes. It manages all indexes for a table +via the +[`sasi.conf.DataTracker`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/conf/DataTracker.java) +and +[`sasi.conf.view.View`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/conf/view/View.java) +components, controls writing of all indexes for an SSTable via its +[`PerSSTableIndexWriter`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java), and initiates searches with +`Indexer`. These classes glue the previously +mentioned indexing components together with Cassandra's SSTable +life-cycle ensuring indexes are not only written when Memtable's flush +but also as SSTable's are compacted. For querying, the +`Indexer` does little but defer to +[`QueryPlan`](https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java) +and update e.g. latency metrics exposed by SASI. + +### Cassandra Internal Changes + +To support the above changes and integrate them into Cassandra a few +minor internal changes were made to Cassandra itself. These are +described here. + +#### SSTable Write Life-cycle Notifications + +The `SSTableFlushObserver` is an observer pattern-like interface, +whose sub-classes can register to be notified about events in the +life-cycle of writing out a SSTable. Sub-classes can be notified when a +flush begins and ends, as well as when each next row is about to be +written, and each next column. SASI's `PerSSTableIndexWriter`, +discussed above, is the only current subclass. + +### Limitations and Caveats + +The following are items that can be addressed in future updates but are not +available in this repository or are not currently implemented. + +* The cluster must be configured to use a partitioner that produces + `LongToken`s, e.g. `Murmur3Partitioner`. Other existing partitioners which + don't produce LongToken e.g. `ByteOrderedPartitioner` and `RandomPartitioner` + will not work with SASI. +* `ALLOW FILTERING`, the requirement of at least one indexes `=` + expression, and lack of `LIKE` limit SASIs + feature-set. Modifications to the grammar to allow `Index` + implementations to enumerate its supported features would allow SASI + to expose more features without need to support them in other + implementations. +* Not Equals and OR support have been removed in this release while + changes are made to Cassandra itself to support them. + +### Contributors + +* [Pavel Yaskevich](https://github.com/xedin) +* [Jordan West](https://github.com/jrwest) +* [Michael Kjellman](https://github.com/mkjellman) +* [Jason Brown](https://github.com/jasobrown) +* [Mikhail Stepura](https://github.com/mishail) diff --git a/lib/concurrent-trees-2.4.0.jar b/lib/concurrent-trees-2.4.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9c488fea7c7467a640bfc14f9964d45c7dcbffde GIT binary patch literal 118696 zcmcG$1yrO>+cVw$zt__< z{a&t>vQ|d!6&ZQX-f?!EFXg2^gF%D*apPzT6#9=Be?CBcJj;kE3(!c&iqgsdISdkn z{bQKBn~RXu$J_oNca*;!CLF7KEk#2+4J$=MIWaa_r$|4?w6*U@ zEjcknEkz>;`DL$2H3^NXi^RPpD^d|zN>RxsTNfFf>c~tTC;~hyRC&{iI zkK=F-j__klf?ovFC_2?i)^Vt&o)Fij#qHYd+8}?O90&;OKYRzUkI5O?+5G49|L+m- ze~vJ-voo_cF|so@`J2IP{{V;oe-AdYvo&&YbTqMbc6Kx|ar!48Cj0L{{4rGHbF(cX76`{wE7e z^Dlx~*t(iHI-3~(e*ooZ@&V=aPoe&WjB~QH{($)>)A?60Tue>>CgmVO{s=#*bwK(i zCoD67k2{g@8Q;KU?$+^5xa;O-0v@MiTpz|bHoZ5~ zIm`|gFYWk1#)z;*$Y&Tz(~=enzk1Tohg%r$9o7b}`V#o%N@fd*+IttozSy{&P;)Vpb+o~{`j8bN5H%W3AY86auuVisC zSEfJZi**}?I)-5zv>a#>Mn<<=U9RUg(JGT9lW$Jwi5$sROcShR%u+A0g0}%l#s8;S( zhPc=OWc2dt;N5x4l=GVzSs5}Db;DcnLl%pvDr*hW-OBvuHwJ?iBiQC7_xv5&fzq-S zYIvcS8`f#X>I>vvZ!Ks5Vxa)TRg)#n+z;E(jC6Y8apLRz(@g!XO~ezp#K<37*KL6l zdL_H4bOD9K+82D;^SRa$sM?v95`$ny&SNT^?K+TC-~uLKI}RG^Si#5VgCHVbhBZlp z`kYJ1<+^4{Ad3RYA$tqPkbq{k2i;Su7aYuCR_E4sCQ!&soFbod?*RUfOzS)GI4+eXV ztHX3sl5i!RRz?__>>4ljQGEnJ%LcKhY8`u&&8`HHW9wEYPL z1o1<>x&C`z`G3xwKl4UO$8MG$g~wK?E~snd8v{meVU)A@=m5XCbw(Uz9GT0Nys|~C z?Ex@H5gW&B$E^FaAZR##SFE6RD6g~8etrtl>f#~Jv-b1b)9Wkww-WO&&EL2Pv6@eJ zb;CF>p53>M`Uiy|=!Lx`p=O6Y6v6@s*|$BU%He?~>L+-&$T@r3CK6^tGIHM3!IJ%~ zLPlbg7H*g+yB2w_x!tEnLf!P6$&&3fVxJ8*ZUtoHgR5jcHV#Ewf3qJg=NA#T9~FBh z8Ecxgh==DEX##-^f*MvqU(I>3EL<#`3K}FzG7?oWY#R*JqgMUkRW;Mey>{6R0&>Ps znt=JRY!l$;(oXeKcWTIymk@(Q4XeoUk^${6YD8zpGetYm-;o?f`dbSXI&~|U7lW0T zJ8Oh|jtWt?5mkwUnlT7_j7DapB`j??J;$!R$vA~>zx({Ss`d-1#JrQ>K_1ZwI7${1 zyGewpl=IU+B*~f4id`S|!km1JSn;uzA7(CP_O3CV1!hr}iRuMOp>#+WnlZb@+n*1s z)il_Z`jpY%-nmKZqmD;x4-i)Af2vxl+QG`t>OoT}(1P*J^W_KKIAj7nhw|5_w(sbn z?!k_=)h|1-+d=zpH z&)O_EQY*%_m4>OT6euGI(-KYb&!~45NrKAJuGZ?TO)PXE@W#@0KITD*PYG|n$`3F} z`8(eF%ecB7WWB#kq;oLc9$v=kfege&=3}O_GXq8!3Nco$nlXuoMkbL_3l*aJ^LH$= z)^;h$l)04{hVw8xckQ?LMZzx`Yq*6H)fm=EU_B>56!(I+WG7~HQriHD;JsC*qm4R^ z%?7FN3pFCy+Zr4s=v-%X1)8MSY`#C|$&3%4j`%}Qdl!ItnW5YOXta5FE23qSO7fII7uk1e_ zb1Y15@!XszT}`W@ImDXXr|)qC=`y=dveH+=a6}`UNdTj+G77rey8W~kX+8BJV4Td( zhVs3z^_FSf-y_hm4z3h?xzR8}WD7e{tMn?CV+N(HSkjX$B7r)Ai^hSfCjGSOmomgP z@Q|z6?D3-rkysao-&p5aMtkGfe@ZjYN1pc4J5)jf6mG$$U9=mR%r%;D*CjIw4wSBP zD%b=T_wiP6(a=q*ka{l=?)x}2QJ?ccsHYh;%}=uJD7rZ`K}^ABnl_O1pX=pZPI z62!*^19gKoWS!%iGBxSM30W%Bw|#2HJ_%x);E%8|22TlXx^L+U132y!r3@uvc-I2j z@t+*pVl+vCcfU;U^QK1c5qO1zwvp$q%z~2X_LM=*l?b$LLGBm)-2wnY>$lFB!{Z8O zhePgTDcYoU0s=jktQ3nv%oLBF30H{E^Q6`xUKrm$4^ki>N4^KOPUG?LpFME&oI(h` zgvF`nC0#5+Y1DL~4||Kfct7@sbjN!>(kJ+ze8PixCoBTB!k%fCsC50&Ai%3Ysdx4A z`R{XwRpRw(=ig*q#{U=A)e8hYj!UWak6U6!Kow6M37soLinTRWlq-XcVY;r{`b6m8 z2frmoSS5ttT6-fe6@Gr|6ysCn=EBjH5I0yCxc%S#+NhnmI=rsFI!zEr+qZU59#isTAz$i6#P>AKk! zr>7qMm>UqOdUTpUjfZ!L;>XlH#pLsvI2-;K9k>*fb5jntVp^P^1X3ux3r4zQfPUSR@CoZxpl>cDe34;&To!ABa zU|q7mu0tK-i2q{3Y z1d3IfMEPUgc9v$i*qRl<{WuUf8L-RF$w)u;xF_xN2{Ck<-0TIx7mN>tDev&YR;ZN~ zmxQUs>pjQG_otU{n;-AdmX6OZ%!-OlX@SN* z>a*CB7Fq;ctimS-PHC&!ZAfcdH(3Hz#?h1mW@}2`>z`L*t2TI6Dt-g3-oH*qLX_-{ zejR|xHtu^N;`;Lk4g1A2Os2bLGl-o^H?fRDRur??s+*YU5@vsj`Ns+=C+{I_J?C^JwU>8Xe~qH$U&M5;=DiWJlN+SCU}n1nqrxDNDp^ zaIqg>PGNN;%)s|LA$$t_a4e@<@49`YrtVzbF*kbW5a3$Eqb7Uio#K~o_?q|KY z0_nNXJVO*z0)wJs5h%Fm!KMLWXqO~KQomU4cDS_UM}(R~1mmnHn>r=A5qyg0N95fc z)cfYE?aZ=2yeIXxtw9w05!ss!Y`1Jp!-Wjbp=> zl5@m{@!K6SNip8kr-yi)Ek5&>Q=0DL%+!o~Iu_B-I9G`9zc0>H!gRmE$0amB)Y3ve zdqgItI$`v3xi5a<+6n|}*9_vxbB5iBz(_(9W4I{58IFmy3`-Ad|MGMcW%}tVT?5AG zR%<|ih~CYyc;g2T(eXxl>zc^hA)@EkU;eXS^0_trokWGst0Ohv&h0jt6_*_0JiUMHy<^h%)ZnthxCEe?UY;61`UM=2lFn_Pv%vxBsY%T$PbCiB zaFSr%EBIs7npL)9H}RGH5yt)ab7vO;Q%vX6Nt7HfSLY)`e zmP7ANj>C=T+s(~)5Pcji=mQjQjBj6>P>Vp#yS=&4>`QR*x2te?Z3l@`P`r`&L7MjY z15GF-zD)Uh@Lddhh`?3&u08B3wRj_Rji#wxr3XxcYuYdY(QW*<#Vv(i6{8PTh|zQF zSfq4DtrCe%42BnO9W2-=rWlP(S^OuGY|UYSJsGAn5=#E^BV(n%P3C9zo2ZoQ+f}Ck zTICgQm)~v7F^|UzbJ34HXv2_~S!po8UV@xj25l|scqex>l!Es(sN>n;?q1W8j?@_E3qq66v=CmVA-z`|Em`rnYZPuB=S}S&}Qh>ZE(I|ZYMiwr2O}2)!+KZ3? zYXmI3AEALm20URFM`yvCYqsRugj9T?}KbHH!M?mvXEjrrB6MxR2Xfe#Y1E?j+0}k7dZj@jqvW8CXNq( zWh(X)FRR(_UsUbhw%;BK`2?&BZxM2mk75y?uP*QkOib`QmG3|*L2nDc$b&Ubj|S`M z6SBH~V}+mL67%bGJuU#Rw#VV88hpsxf^Lo1kE7sqkcgRePtN#yKCnG#<({2CslX?0 zk2L1t+wqC8+uq0jmi|4ko^ti)u*x!}Vl9>fH)!^iE1ytkKw7}`Pe{WkL3r8(D;&G* zA(kyio6Y1?A27LH&jYY3w_%rf?Nm$>nePunF2BH=bv+5IcFCQxOShj`TXYAwXczU^ zy*MUu3j+H%m1^Y|@pL5@udySNp)LrMTusD&4hpW%I3FH0sh5gX8G0R6{@@i0+KS#8 z6fzu+U*&W-PTLA*3f=3xr27?6vqR0R<$R4i`wmX!84@a zA%?j4C-Si-u&X|QMc4CQnK4JS$FAD;Uw>1<|8Y=p7Ge7Q`J)Oc__(wG%Zw&v;-UJ7 z+bwTk;rJI)vymH>?WIS+NhPxwtq6A9hDm^l_XO($A|X*K#s#q3GnwueNm_5Si@#uf z;r$jXXgv#Kb8S+;o4%ZVnL9}b!X!E{%38i5!l`I2nef>a*p@ zL@u)S@eZo!jg2}}4yMitTDM-?H!h2$)dh-H8mft0`{AnYKjv-}7= zr|b?$+8HT=LKKTw8TNIW*Wa3@g8w=K0y%%J$>>< zFMGwjn<3Zs+$A;kVo6F6nq_B zfhdILjT^xe1yGOIr+Cy!Qrg#tQI^mr&e1qXTp2*-_gWq=-ivG#VB3Q{ymiKkaq}RI zQ})%PE3Qnr33Cl=ntqIxm~=H!K`w)4BXXE&b1qFt^*tAIcIP7`}S4+ zu~@|5G19cEN$woJ4L6NW9?Qh6W}V_P+_+{?Y&SWN&=D-7@uy@t{V#eE_*?BwatFlP zO}A(lyC?^crb>@+aM#rOh#F70s^-`~`s}kX94RKTOeJy(v`l75$KthLEyib0d)Ke+ zL20PIy83&=$tnW2km&3gI*#S{gCso+HT(8M_b>lz@9{^b5~P2pcKq<#L_P{X-v3=d zDLETBoBX*6QL>Snl}GWVJzcOx@xZ4eqAak@1IVK+6Chv=Czwi6Cs6y+19imCf~m9wxs%E_@_ZO4SU?&weuYAZEX5=zJu08{bFY39^RrrbCy0*AJYes znxV$V7>m12k8-!wSKf*6|K5iVF+kEeS345tt+TOGhP)Dw>;O?m1P0&aQ!>9p6T&hI zn-MIE!0deiap}@w%9%-_5Lt8UEv!oB7M=lxVz z0oMQzn9p)K!r=hlM2rr=4bCw~xn(=%Fb1#Mz2wR#*Xn;|-ezvO(>W2DP2t`a!3Hc- z6)E35C*k_snPXe5T0xRqhALCUC&Cr(JvscCPu4;^H$8r0vW_c_!mSrdz4TOk)pwf; zI5RTT-k5+wuC6H#L{hC@o#H`DBVrkSuMRN)dcB`Cpj5YFqXSXc(2v()r*>s*WyQ}yw#}oKF$PKCq(>?hib9yl z9IydOeWsB6!_Hlu1&4rex;~7HI2npfK)>9sEzZvXykAXj7%OXRB$Ii=K{+r`4?`J; z2F-HXPZn*)CgG$cN1yLnewQf~#k|K??dH$Lh*2Ie0QQD*sID!LJnnt@E8vgAl`zP~ zsS>79j#c`kDQ8NCDwBv_pX3a~;nq)D7X+$x}1TQ(fc2SoRo7?D2XX zt@h^SyQU5v_5MDZ(THCrWIlG%*^vJe-T7O3{L{fu)%n;=WB9UCQ){H$D0ERS*jm&R z5>eDQpeU|D<`)--vwjkx%QA72ZnV8Oz7Iq*Yrp4X-vw?AiI`ZY$78lUh;ek9)xp9X zN3Uh^9P%9cE!JZ&P-3y}Oh z;=_*W9OmcrO{Ql{(&jtG26mWLqzmy1_n9f=+Y20E2*2hmhC1%8mf8-xMis`vRDbJ@=YVgmYrF#k$d!(Ld#P<-^sY@lqC z;`6-(;m=MQ14i76zVb^=StAkV=PuDsb;|Ej>QXAX8lB5U7vhMfCqaxZA&m3+(jDQ9 z*D~=dF>NlR3}-dx<}}r6Bj6|b@)6$2cmoukpqqjLIXaZ48G88|pq$alGt896g_10s5d`3r*=uPkp4miLp6jEJh z)TmiC61i?6MfsvuPZXn^3xgcqac(5k4I=PcQ#Anw#W<1?g@PnqXDI<#WF^v0%_#Ea z-oz+(B6kfmI>n|5bf`+Ew&>X2OWX)xvrK?51)2Y}fFftO8@~3_-)xQlXegLWA+>e< z5L+L>|HNgL|7f~#_KGj||I}L5^$(X7<$e9YD3xR?V@8l)O5XqOa{vJWjp|pF z?;&Uw<~G0A$fR0L+OQK~T*vVa?i3OklCd`y`;>9?;jQZm&M zML2R`hyr>DukI@S-{t_4;}WPPdwcZ}OafW`9HE)Ir@P zQe9@2Lah{e#UUQ<1u%0c56y#;7#?B=i#1%;MR(tgmY7SaurOTPE6ikRkd0eNn|xZv zG}^xB-VUH@WT7HmvfW6G6G$)|$;PZU5(}xR4jL_cHLTT!y?5^4Sd>gAcf_Q$+AEK? z=C!Xw)80T+4p9uXG5!YgJQt(|;v?|U*I&I6?9&$eJ!m}^wV8*|6WUBFua!>=#yW=o zbCmg4lqq9l46hks;az;!#QU_T`uE!{9wB1Sh~V1R8IiAb)TaL36m%&5_hN0oKqW=p zB0jAkT4}%W$m2faHO<#X$V};-;el!yNu{Pi&}@@6);v#IG!B~=zPrT$7!VD)RlN9=sSN87t@HW zBn;09NUW7Y+xDMGbYtL9+%z2(u3B=UZuZjPWkCh ziOObiQ)Ipig*&|1!W}%Lm$&+X>oJo&-<#`88#G?$1Ao6$>7XupYiBd=xcPQz0h(5A z^wx|-``(`Tu!IZ8qhaT|^Hd#3eJdCx@Z3E_zx>QyM1ImVp#0mClHtZl#qGwxKp5S3 zSwj&%9dNK>M3hHp0ZSo8>}%9tiRu(Is!%UckmwaH>RECHWG`vVHn!=a&CqgdqUxX( z2Ag1@+bd9yJr(Q8VUxH$E*AvbC*Yc|IqQkuoVQauyDdJE+fnfs@vqk8B)et zM+S&DoZ;;`o*`?y2JW_$hK8<^L_D-t;G9Hn9CIc;9;9nvm?6cfq7Vh`yzxJAc5czqrI}Gy2UQ^=3wH5sDE2qEoa|-=uo2lX-{hi7m zy{7-w9#*Nk{)dJ8zD{Z&@k3pBB$aU?fE7%VpaCCLk;(!ETTlw2Vd2EY2?}PE_F{v+ zpHD#V#l4IvW;e5%T}Z*({;6Q%QLOCnA_N3HDc02VVa@B}_e-|ZpbF`YC@9-iv1jz@&_G<*IGCfmRON2_uhg@YKHwkA{k9{O)eIkh5_67r&}X6FvX5cO$FE^Srr?l}2^ zroI&$TMxiM&@QCi+CgXa-6d`wUk2OyzVounXd}G@n@wws#x?i0_%YOW36Jg%yrMy? zHH(Ja{K6caD$#+jF`g~@zj=f>FX+E*qojl;H7JbM?qT%)+Oq)snqU+jkcb2s*NXY7 zoN^e%)_Z8Z!+fZdxLUVXH`h55RmzMpAiK>Xp6611-H>earKFZSkD6TE4@e{;z#Rw3 z9^R;_Vs#riz6QTQ?Jq&yP74rTT}QQOfonQ%z>MX3Yd@ulL{f>4fm@VhZ)^Md;H()$ z*gA493Gy6sSk@w9AjxS>EonVwYHBQX#VSqsiFJND zMP~`Q**!q|E_$HB;~p<2*7uC;g>yI$M}h^?`AYb~X@cKe4(|yxfu4&Cd(qX)`uOrI`;- zP3c}+W>e_R__Ac>y*e2svNhrCpY%Tu!h}NWqB*i=VY^6`gPHB$6BI`5Y1?T&qGsY4 z!v$~g9qa-NS*~np1lt5!MUJPx>L2kXEXr&8RFoMi-D=Qsz(%7zy@QzFO$FuAnR?ZD zb(TrUplU8oJHgRS4|{0R5F!oT1E28xfxaOrk~ZIL@@Pro)@O zRVg=2BF=X5!=J-4N)}%+>JoYyz>`Zb7Yqo^U*{HK6J`*9fz=9Q@Qxha=A5{~2>0HE zh@xR;l)iuWZ?shI^EO2`gGTogn0<77NWbeY+9!!Z=QFT96`;WCSgRnp#WU03@)30x0j28=4Pk(K7fd zSlTip*Uu}|S=;;2yz8{=a>7%Uv16kruEwpO##6Hf%^8qCV;`tff(@pl*IeYV#^34# z44Tt~Lgb8aYj=xb)*1*zU}`-K4urFQ?nQ zy;2TZ#3}zYc?3`)zB+0W?fqkI}D1J|Twuu9}J!If7o^o>}v->|gAEcf~G7Nf<$;%donk ze{un)&^6dc=QN`57+CbxX((}jBbm4RT2^p}HgJ^Ni}^z{Zy83DT%0y36+(Z1|C8Z< z@~54BI&p6@9~?7_EJCY3Uj6uk#`MHXjy;JSzM>Y8+i$vkqy<<{5Wh1!?$}855FHO@ z5%&h6jGr(Vc|>*b@SdS@otfJt{jof7*~H20k-@XDLQo6AqI`$rAHn}#7neYy&r(0^ z>5dN%=HJrA|7_u_RMk?#5kYzLRA+4CiY5>hM2b$O{(=6Zw_ge=u2f1~JcZO$Z7%Ic zdAd!iLmhW?R7rpo)eZ_aJ192e zEtpQa-URXt85_R`gy-}h$lsTv3C!JR2(?zByh~6+X4EK?eprMST=3RN*<9FkRKEr&4(aN7QXUGi({Ue{o`ML03$UxY-5f6`|BEpKETS5L3 z(oydy#~G0{gWY2#VteXY7;3KWYgRe-GfPnaC>n?9ZZ5@qUQMN^<>%Lh2iDEZagi6P z_x+eYD}TGxe)!CDO;RZx^JB{?Xk3m<%dTx9BFdBX8GpTBA4W{8uaQFeeBOiu>>`Kk zHegVL+J3D|CWaA>gHoN*A#&Ggja6aa9W{{55=T!zeOD@qeyk(v&fXh{>oe}~g&1ek zd@J4dB+B6C$iukV+dCH^(G<;8ujfU#A;F`u?tUFjFZ&jwqaD;=md7YVDk!2+^!c)M zf2JI=;^sN!4!3f7apAi#F5lbx+6iw>1Gs=T_lF%_!ad?ZgM!UyJ<@W&FXJ}cwCor8 zyY!Q5qi2$>C1r%?RqmS4fq$X_y_yJ9C)-ij#gxsVSY!}B>38>f`%*M4MVi6aoPu*& zA2#x&uGKqS>^!;x0Xi2XAAoM8s?g`pt6qL& z5&`E391^#9!$(BoYwqzY6xEg**v?4akp9|3`aw$cM&GB?*cUk6<%qlq5!wWlF1Y4v zjFRYFhmEEF(rW<6t{O_zraW_wnE$>6--m_W`!(1%<0b*fQka)Of*s9BKaY5i;9&R) zdOXP3;m_dd6`sg;KjZ2DZC3-)Rd|pAF_=x7kFY^&!LfPk{U4B*FR5cp^jv`=8(=;twS4!i7Rw2JrZ{ zWV?Web8Xt^5%9HfRq94*+zo4RTmc3x+ab>}=pniU+B597U)R+s2pd!dg=2Pb-wTPy zQ?3cZ9M*po?lAV&eTY-8?j_NXigcU!{!&Qj(WNvL#*%s77qT#9*E z6=d{>>ykxi1I$}Kx)Ny{h|J2TYp&;PtAHMt=<7si4|I%P%zOYkQ`Je6^%)cTHq^~HVLjNj=EqDo-^P^$Pfm;7hQ+{ixK#Y|#y zVac!{XD-|RXK_XF=LAbhJMD-!(Bfgs5YuXlY(fsDvimMd7@i`^NS-1pz4+gPPs~*_ z?6M2uJ_FR_HcaH3R%yf@uTcjOW4-LLnL(CQY(tx88k-FFDFlPD69Ra!0-ERql}1Ba zuQhf`d4bEgl5;~|&2o%^U%u`r@>QZB(mxJB?6CcPn3^UiWVn4)ZM`2&j{lZAG5z%* zweruif{6s@kE)G-Bvj8loD@v*QNHw>GBj`|L>^gK%j#DRM^Ny%ZEKrB#2?Z`Ga;|( zJaC+h{sz{e;I$hZv)jOQ;>Ah`3qAm{p8nyyc}+Y!p_wE1fUsa>Fh=pnWRT{%CT=Y+Ax#^Vo9U{Dj7ug;nbF5CJ3zDw~*=l)CI|S`}#30!AY-{ZL z8nzP2j9wGTh*W4t%PHcRwX5_-!<9GpgM=ulRoJU9R}lef6x;&b<=x5S5FJ9@SpnbW(M24 z5)mIFdS-&ZH@eiOU*q(SNWA3GQVknBtGYl<@a8@lLfQ^ZJv?ix>ms*`CBkCHo}S*e z%ZIqX2&YL?(>?~T39f{)*IF^B@99}Dym;Yah5$&iY9nK4O<`L~?uF=2QVkSM^ctLJ zU7_ARwkuaOV4JSPLl&<>LT;N2x0TlBuP~ojyy2=0H3DP4L+9t?;!>(I@70udcYW<0 zyA@9hVL3L}2@F?&^*CM$s4U3a#w(>gkUaxpmA80z8=HHplDM5)UhTPt#N>j&b{r9d za>0I@J8N#${HSy<67x4omn_z)w$0!pThomDkW}E~ej>l;7)urEF`js?U3<@%mjaY{ zH{s??wPr*FE#vy7$fHB@$4Lmn2U&x5Bhp8vC8T}XTv0M{*}5z>uNX*w77Zy zc*K}q?QOudD@Du~z3w-zr_>S`N4lqRxxVrY_5Sb{N?Hw0#=LN7msKlfZOx>(LrR_Q z*d_J5votE)<2zZL_QKO)Mh0$hg1)V6xL7SJxpP>P7bMrl^{IGxoDT18Co%u?8~nOjoxyM zoiLCJ-h4tzz5<~)RIN$mN2v8~#)&XUpOR=FfA*42eRyQ;pwxK8u9L)kjvv5Wc{InormzGG#`W+tsdV2& zp&+HmIRNmk5WjD!GkQZ^KAvL?_*jtlzeeP4fb{!;(=*tw6gw=e#%coPjUAF}Iq9&_o&y&X5;>U|s}302mBL{x)n*JfvJA#M6a zpy)0K8>IpO|7LCXD*n9o-EG)d-m=R17gq18qH~(w{_iG<>3W@Xm@FN`W$74T|Mr z9b1U!&G1Dt?yyVg*R{G@*`GXM>200$#}h0q=n*y-`sN}uhcX~$ni z^5ySn#7(=QBZ#p&y&48M*knYgE;^h!_{~3Vm5+FSW)BpAW2?Y;WYy^#^z>**Yo_%e z#p8Dr_mc+JN_QaQ1`_%uaI^-Mlo>VSvq1J*iyes(*#}uWm5D6_wO)VRZDLtT50}|q zCmc72PIKk9maO%`dXh5TVVNRM9?GD8N>Co^ESj0A!zz47nMhn@9&fbBCg9LXKlN8R z@Cs8w^9)ntCAiMHbI{IX5ZMUx=?9F{FqL$mD-d`brtn1aD>(Ou|CmooM}2G!qM&FS|rHL(L@t>vk{1&0`(jTeE%VGhqbE^ zJwF7Q_TLp`=Km7pbtPmqly@E0;SA$sam1h$G^z%|eBmx=@CXr57Nh{w2;j=_(n+ zc2pf~m(C?Dql9ygf!zl!=4ci1Hs-jE#N?9<0mIk>0oAvU7|EQ_8ThFd5uVIsCY8j6!Ta zI(lx7_E+N)9a4o^Zgwq{BhelzpvjDXKnH>zN9Yzc-)5}_U>C5h`NAIInTi3bMAAQ% z#X_A!g|60IS6Y=OY%#o&VM$vSLwL_($RE^A?*ORa`HaG^Rd_S5xZdT!`~WkqkU*Er zle3GB*BkAAIlM*)OjD(o&fdP6M$rr)WsdvGbd+llXLX2SDmzjUcA1-&l}dd(0#sEu@%i7He*t)~J?R11_&R0^qOm10o;& zdsgAI8U|cGQ>f;8p54q@}24t5gYpH3d*H$SDC4ID^riX_h@z1n0+>F4p0)M({J;u z{%+YNFbPvp`>rj%sX@x5rYeKyZi-!Z;xc{YBBv@b!A6fo8dcd$fSWLd46Ex5arI7j z8Mjy}Xv%vly`WK>vJE`M=~@j&5ppPmONZJclNaJnGo%GL$tPZcH}9|fL#n9jhB#us zg-!4NhBdjrJ_nr#2>djmsRq?NKzw0USVa~eSCj2w!xgsx#yajyW`qdA(htanUEc-K z6%rdQeO0X5e4>&0#m;kYyk+`A{~BuOg%Q}Px^k=qVP3$;0^-@V`OEEc(6GR0O0(cy z0;ZcfXX;XnK(u_0~t1nWc-uDoQjxwRA+jCFjMd}bOGQeQO4uv z5j{v76^jx~^F$fjU1{)ffRhhu-x1-3XVi9Q)i>SlWirlbMyyh<4aB_OOJ^`jbCXBp z!;`9aqK=pIeZFCu%`b@Eq(Kw`&+;V6L{s(xGx13P?PS&Xl!d%mPZi211sy`ZSukfl zMG~GcMD2lZ@D&=7cc7->yu$IM3=)TYq+ud=HoSADG*6V5l+z&==z()jpgN4A#@+*O z{r1!{M^Ot^773>Q+HnXLt1IBVBw=7LcuU=CU2qoxI^#hMQO~!BX;)?I%^|d!E(sF| z;P-gLE`?84)w1vZa6q&n)t71Zp~=1ft|l}8Rg?en?*SobDKwFD5#QW}DpyiQ0}2=f zuk!T;zl#@jKN>Qw%Z?1Z%2SOdlhO&fxq{ZtWJ125n6y!~wpW-A@xWTp^?=T2*68$N8EKRQG&SQl(iFv8f$ zBLw$lfSm$SSj5YmI!loTu#%5c+O4Om)Ro7adxMYbla_{23@;$QN!M$VtfWU@h$JpK z4qFcIxDRu3HhS?l;Xu~L+Y9t111c1?6Ad-HqXIM_q^#PV1lx4> z?O0Yf=QTSw9fQx=zy&5RApEa-=n)DE!P}3|tb#W#TKmXa>O;2t*LBgetFSG>Q{6Zx ztOgJAcfA0$m5f3swdb5U$h-z&lXTYfB+$a$^okDL3a1ygkzISMwC7PO-kELK-1a2A zD^cM-A;TkZo4c)}9VxoE*g9=GjzO!;0bTHT3;-5E+n@PP!k1Iwn2fMLv6l+=hHzSt zDfJRC%b%9p*OxXML5PhsLI ziv98x`(=bXUl?;j?&6&O31GQ=D~!OR?2Pfl=j7==rbZ~_ONog*KgvPb>GL7Fn%@H> z0RMsfp?Nj=%Sx8sQhAmLEHhl-K*fB3g^JpEk5fo=U4g<&-m&{y^g#xMkMsCaeUxUc zfy$`J=vQ7QjN;J-!H%Z_!?b~FPwG0__5KKhc_}dgC30|u0^gu(y_mQTNj0I6D(IB) z;pG%GMU4ML+dBs57OmOBNp_4K+qUf;+xAZ0*tTukwr$(Co$T1&Uryh?xBHyBU)8PZ z?jNhxk5#q)%zDP0b3Ef2qo3gnQ7|Ml0W7iGAJ=onQ}iOib6+o3e374^4y})*&yPV_!`_i2jeHcF*g1{XFM_0IVLXAHR)H$tZXg+4@5g`C?kAD$KZ}Nr*p|>1pXp`3zD=~6v#zL zM_6xfOx@(-IKXt}j+@~y#~mBB5BUJvenq}Xghgu@|s;+ zx-#$CvUxt8LGSqh|BVX)mS{^IgTp635_0Y&G;j&RR#y}q!)l41dypJ0m)KcwP#yp5 zsGQVUv!?_HkMV-+HZH&IMUxF(Li>@d6eBoeW5sls9qud_%>^HgC&f-=(tXwBiTEf8 zy&D2yn6`fBNxyE~sxNDtA+67fQNNTcv7@*B=-IZz%^AO!$6-Da>qor~hvH#mf8s3 z;K}p)`KK{MOjn5OdE*$Rf!eQ~wlMNVaWvv?B-n-mn8HZm?cu+d-i7n`w5dp0(GO?g zl{&Vcf)`UA7GCeMczPk^Bm%6cH(KJ z?1#O78mna^KE6M#GvDNlj^0vbIV7TV`qI!7&6vm^8YRBa=o05-c}9}b{HQDbrBO+_ z3L6gU8pRTw#GytO<&$8zpFxg4;MAFv?3hwG9^2p}dORY4S#EtZgt06RqPUub7$G@% z!)A@J=*q>HZGEIyBvr~hCaRUG`iiT;Au&;N(+jp#Q1$h94D^zIs9=x1R60$D@+7yX|r-R;G2*yVdtX8U{dlKih! zy6m@q+IO}8$52w0;+W(Q0R*qCF@yLy8f&{BVDOCL#Mz)jQX~XW3eu3S7t-m5`-KqP z$c(#pGI;*GeegF0gXap10si4A%4#ZVJA>p!6mnaBFX0cwM{GAqtlNn zj3;i{9KtgF2?N(j+@aril9bAGN1xrfQ}Z*2s5=$pTr~^J=j7_`cKOF}iL{c@#?xMN zJ!RKMM1Ek%3WL&-gm?o)1ARUezr}qzHxwGEEpxglYw)d3YF^ay%)(|NgJS36DaTEh z8ky=r;}2!VWy=O~Syfsgs4HU-s4OFYZ-R-9jF~_|4x{!Dv+fVWkwt1r%X_^(VrZa2 z63Gnsiz5e(lKn`e%m-JPuOSLynf#aK1<|K`J^NnToA1N5=6_{*mA+l)0H%sY4o;Si zBtrji=`u4m1L!-N*;xPY6N}D2OuKl6O16p;Yy2U>M1YIHigI%)P|Gg!qk^!S^P}LW z>S>I|>N6}`2LJBi$Hj-vnYuoSVP4Z<2a0<#IA?4+%xrp?OmCh|#^mUA|7Z>IO)#>*{v7>>!|0SxI=npS4oF7T(7h^~Q%9qSYV=FNn+8Y^24vRa!VOg!MGm-2- zPr_pqS{8hK-hnOJrSB#T(`?nsDOIr&#q~WNlEz(J?N$t6wnTF>;n#7zhDH=jfRo9CAy+5QX{EHosnxuc#`!q%u)dUY}i) ztXd)Y)z;78tTC)fm_tw1li;pLg{n{-F3v!Py3F1%B$(X^Wv@$3HIU&_wJv`6s{t$D zCCRYdDB=cZYIs(M#R||>*JIRbWHphGIHuRtI8d8Hb7cmhxjuiPsrjhAP)%E;Swybu z=s2~$sI4>#*=Vb^!7h9OkGohDX_m3gG|)@R1XCtc{^TrkZqQ-AY&m7o%A!O;31TnW z;=jM;&=kJ4I@4(EGeN>p&IPB&t}0X4&?jY_il}JNN>+XPh@l#5MA0HB3wz*-CWKVh z`=HMdOsJ344-3QWFVNnF-a$+_lKX)!0js}dZ)q;#!{l^@AgSdMe5KHVHjQ6V<8xNu zb0FfU-11U$r)qo_6|oS2sey@v3k(?oA`Qxcvm4r*9mqjbzH2%{VePv|R>vrKE0Xa$ zXV%$&R?OhxBeYEAv!n8x)HsWK|49glYAG5F)hpIG5 zD9ryWJspoz^zerM2&p*GS^AyRh2Vg0O^Fm=n98fEW;dx7g)7)I&^brAO^(YG3Ff_U zfm{bM$ML;T>`tQQBTBtgBBiE3<5Zq{kBnKW?(cvTb{rP+zj7@@fQYp4gN%{AolK|jt=I>zsNY~<-};4zIi#MZ(dI7zpKFh zy`sML92=?#U!V|LZ2rF;N`PTy6alb5CDxBc(+4qZ0dzw@;kq~l`52)EoeeonH}}5hlDn_eLZU2se}BP%UIbLj)_q z=ltl6c;f5G4yg6tG>6%lx|43RB0Cv)o&a0$GXC*LW&O z5fJYX6XmN?>Lh_b6UXa+P5Tls zW-lQn&f>EgH2WM;C9N$S*lvroz8gAU=4!D&Zx=|mEiNn@E;m0De2$#lo~1@Qo(>k> zmwA#6rCXZDWMY5no^GSHs8~Pt*L;GEyHs3mc5I-?qvl$c_q8Yr{oSnG#KKnr^V|*C z=AiUP!9vvT6APun5R&fW*oP(yOhqvl48?9O+hr>LaLvyRh2wVwldCK1?M?KjC6p$V zOpRyojFnzza8+QXaLFjqHSN4`7P_8uyjF86=%s~1hL`!upJdHICz4a%D%IpMNFlO; zr=Ay|p9=M7%7)UXY>hHgfYFJUFIb3SVJ|N0I*5DoBzV;3nP1&pFn~AT@EbS|&Mrx9 zc0J5pkhnHq?3yNbpupqY{Fpvg;m?*5&l)?5owe)TnSWCUuD+H`C`#7%$Rp@wAqBIZQF;jhQ>(F%3wQKJOhXNuJP_ehWM8 zsCu++aa(y_M)Y~Mlzq77v-UCg@MQ5)TzxgYD;!z*du{Y9&>KYbtfx;7-yt0;kZVxg zRy7@Vnrp8rA)9xviiN<`%K3|{TCks0ux78I%eSJ=OT6wDE8XDx0R*tts_=Y{ig8+g2~Tn%1@v?HL=1lzHA*8Z0+xV z3G_VKTG><5hQJ{ikHsN@HnWeVC|VQ9$2cZXkc|is7T~L&Uv-#>)f7jbX@(flBc|9x zk928xv1pXMar{e7(Ggv)}K zg5TxC^#LtOHYb_rNIdG!(Cf}P_{KN}9vUpLX)H8at54H_$YWeUQ5*4-b!8Lje9>~H zY^_?UL8rucqu>}#p9oOuP@CXsHttUT&iop&+P|UvE?nM|7gi7V+|jDB3yi){=8eF2 zy^rPxp>u)ECq(xI!*j6@v=^Q8gpfDy@<*+Ye0$75mN)#}yC$1#)9%ou^_NBJETpn0 zWSY0OnC+SM4*x%&E{8dw%&^eE?K=4XpT=hYf5qSb3lOI?p*)qB+Wz{uBy(c}g8+;E z>dy}jL_ib3k`JuKNcJTm5}^K>Acc`R8JHFZnu3<3y58>GpjjoQWmhGiq%yQ3^6qJ6 z=2cZCRaB)@+0?Yuy`n1c#(%P%Ce0>I@TuW*ob52fyYs}q^V)r#x!3mm%nSBAd=s;m zsuTAY?>6IY3y`+!$V}W{rI^2JF+J}$b3k8yKH#@>+e*YC0UZ9%0UT8F@Ou>)hQxG_ zwiO{GF-iN62QUWUFE?dsJ_tuh@_GT@+7yJ3c{%R1^7wBRls`b2zuE zlx}6^C5xna$x6lA+@)b9gQV}q40EIvw#veH9UoJT#~*-V!tP~SQU$ZEo>U?_hA{M_QBKbRNILmy z(lHs;QA$Z`m`g@cPJki=mLo$^tDwddE~uv0G^vuH>h$zWwtRbU(3}V^l3-U3Egv7n zsgEZ*fcXF{^6TNHOva>#T*%4{G&nj%rk05hQpBg>$|N*Eh%MLh}$H)TS!k|?Sa zCQGQVbQGbQN3f`pXF+AP3S?D zMTRz0P#t;?Xg3h~(nf-p)Hsu-LYq=HG7&Wku0(S+8A7U?)bJmVKVUKckW5z@0v7m7 zS{JCYFyFW=xg@eY%&902Ms%ALr!3vY9dI@IhM|^UZvx^#WujX8%;lXgBDBuDy_spm z_ukqzU9QD;Pg9@m)+t`8D*v(wy<*A%E}W08Wk5-7v!qRGKJA-`+Cp^p0Z-29uryv4 zckaZhx+qyfJiha`WK1+Cl`NW$i!En=+L3u-Zk-pBrDE_d#uIN^S*nRIv80Ku)q1f! z*?DVZ!LB|xIeD8EGJ1>@F&XSMBC^}2Y=zh~s3ZT}pb0pWrkQJ<&psq-2Jx|~WJDZm zEaXt!tn$y~(v^dsk3V;EST2U*@oJqLH?@X|FMF*D^sG~~6>PC=Z=_0`-uUzn8o8u7 zxEmOi9>&LYS4~x<##rl;U8ggGN|JL>QGzbG2c$jvhw;`Iasi4Gkz-|g%}pE4wU(qet(iiO@nm2FtO!W~H&rcYB51Sjc-H)qGa z7B8l z%c+9fgNqJAofVpvt3*abqiOt11W|d#r2QnPF?B1xXg;3D?teilrT zg)?h5&&5;LcApiPyPT;Jj~DO6WIrj&7<1%WcX{4C>TM9{D#B8)T*qO-`0(!P&C?j|z18$+^Vu@aYYc?D_!E4i z4lKijw&J35eWVoQO;CpXEql>Uf1NFHHx6E?4jFn&=pb%_ZKa6Fv9EE-7~QJvd0?si zT{_!keU1#pNHI>>U5Ba289hL=nJs<30CqKx;-Q!*;{hCUH7GfrA`~Y;We4SVB#*Q? zRrBd?;ScGGhQIwk%iJfXf4`cRnf=IcNF&UWQSm$Ov_zaFR^5}a)597QUa1h~V)@&| z6_=xgv6!qLCaNNt>gbl?DJcPeImQ37HTPJ2%CpG4j2q3}H7iy^F8U;Ge1E4*6E~Ke z*EE)_yr_wwM4q6pQ@JQyWCm&1SPD__aR|uPUMmqYUdPoJQjbxGgsT-?_5Fr4)OdG| zDO3D-n8SXA<-EDXnBYSq4Z!#iVOTCJiNz8zm4)C7S~qULk>^m&ttMp72rZ$RJiOF$ zP$6Ozp$0vQZBYIyK}sM=^e5p5C_kJ;0*T-YadSpItVDw)tc2t|;TYtUTO9HYlQ$Jc zLd&<;MFk^LPJ+3mf}4Z4#iDuhpKIGK_lneP1suC>RGaX^2xQt@j<`4}q18g=&C0~p z!b)!XKrhLdl_dYFdQOs*u_GSJhv^XMHX;(W@e#p0yEUZ#>oHiH-yY)C@lpPLuT5(E zNEHGqziG$>?VGfb% z(dIynIYE#933|7c&p>lfEE_d03hX}&j@_jA16shkwd3&fj7!dhz4S}Ig)eE-FhlS8x>ar$vFg(;_9XV_32|TJ zL3=)+X<@jGYD^qS1qsvlLsiMaxPi8+*3k2W*@_^&9>eZJczZD-K}AfpBBlVG;_OU^ z9&T-M8GmCsRyJ|^=%y4twZFhhn|(VuaO<`xGeT@x>|SlEtX!+XQC4S(GgAPA$j+%i zejXFjDP&KsaY?-ULL)<>v~c3!B;Bql!+@sx8|_CB8|UyNx`EgZ} zE5R{(8C=OFl_R4hahGN*+eezan9oH2d{rJ_q9F0uz5If%c*C#{a6{+!7vZ%V&PKc8 z>w-6@wGQyR>cC0O;duSs<1tz<-i=SAqD5^IQiktT046@qwc{o zsH_`Hv+C+3VM=l!IGEF}UAxs#LXB{&`*vbkvCna0y;+?nzwk|cJ1?`fe2Y~Yc#Qdc zGC?U#o=UqcP_d|OO%c1kvtsCy<#17jnS1gYq$>K}E3J@s(Qbgd9yI4P&%^OCLp}$$ zMJ+oQuPbrol1!(p+LM!s96+zG(m|8SJv2YynA8<%bXOZ+9vz)`!l66oO;2}$!G2LT z5|@p4)zA@rey%&P^5lC$q$=2D6F)k^gVP{?r6%F<$l~}eFRBB}@;2NdWsqDO^@PW_h z27-Fb$;~1rXrkoGMl@?Yx(JtSM6FJ;<0rTYm>i!Zyq4oJ_0Wv)oHO7H9v@d>m`P%I9wyZnP zxCpY?Cvyh8&zN{8cCb*`7KgGDcRZXqRe<}hZ8_pFZNfs=V9zmWZ!69XY}^Pan@CG? z3ejiySui>1Bz7hd9QH?M6Nr&=YuR>C&$Bm8}1$!*+fU;?=6C zI6ya`c7gst5-DE?BRgOu*fP*JE6&5#zNmxdVmm-VYQ31N_i{C0A4j7|&7~8fF=o;b z1L%1EQ)NSVL!~1v*=jnED<}i#1!>2c7+mj|t|yD}n!3;{Fi{WC`^r`D-gS5j$;tBz zFUB-c&cwH>04#?%+FFqeH}ReM$qTQ=l%!^Q&x@7R@V1$KYsrlwCh#4S4ABU=i;pdPPB4`}UO19-OIY;(V$ z$F2r-oShwNid?CzVd*^3KA!-VUVE)u97jM^{7u-qgf$$s6+HrN;!^G_jzK$SB3B_7 zb4UV3+>`DmJQKS$`bbJ8>@5WG83*%V3PmA5iu8|{nSN}LCKq+UO!QmJrv2VEOZ=n3 z_JcJE4n3hlWLm!l3)9@k6kuWATs+V$-?f(RX0M|qKafDN6A+f9yW+UOx>eF@>)PHk zN^`dp5MEm{I%$Ro36Y4WC#Juub+~b!VEdb%N}I!{f^s9~OWdwlvd=@my=6cqSl?zj zJ*ineYBiteo^2A|V`K7uLodngE7J|wO7~Y3Y!kn{Sy5E|ObhM-&TpxPZ0q|H^EFP9 zN^QX+eSE3uON!k{3H=<=LEf!`l*xPfjeQkx6>=P&T&as7(bzxQ#MkA^2m@6cxpQ(c z8`D1YN_aQ$-Jc0gvmS+9{lZUtxOWuBp}(_R>tZ+BMLkQ=`LPQ5tKo;wcy4P)I>KeO)wGOP4$M8014n1P7c!&01 zD>k)tt#=6)i)ANCMds@fp+ zFqGb+s7t!r`_0r!xby8vBo%m68DIOxPspjJdmz!y5|urwqsGFUKD0ZYT+ewFN<+ zVFOQp`@seSeR`E_n{kG*zECq<8+R1IspTL*c6DB2`gi!QAn_)GoufM(6`V>lX1{=X zc+UsXT7H`S0{g3af8CBurMcK^$XcZjUtC(7SfHXcIWU?~WNXl4!1v1L+ESptU|z47 zQN3Y4x`=xZgx)KY;^t>g|C>bZQq-7p$s2WN`SRO*sNBm>;~;2LRda0M$01SckpY)N zAVgFXhYl8lR&^i9ny-pI)Cxf~oaYV&cAbb~tHk`K;L2`=JtbbODi4j??-uPa8;1+d zHU9w1q(3zT4;A)p#xTSCc3T}#0pIOScxP_jq_FOs3E`Pzrnx+AGOoe4OXj&e9&+kn zH_#Fj<~hT^p@2knkGEyc=!(hnGKa{kGzUkep2s)`ZLyP9ziB(-tOGKx5tB0AgEzp z`3oF$2M#`wF*)kfPvI7^w5d1xR1^4YHJQ|NLH=_HtcVFFGja_ghh?jBhO@mf{);h=6ifrv6nE0{AHdb zD+?jFzHvvoZX1J(Y*C07`Nh~3E^$JOo9yvUk*Alxk9)JufttJ6cCdi{H8TaIN7G0) z8k@`M`C`_FoGg0{h#K)4Ql=xH%*lpA@i2MC$SAnhdspgFeylBC2QSBh@h-~eFnL1gfPxoNXzN!4~ZPcfg`g#{WFiR&8P24fGj%c>ahgvyQ?A#731ZDz7@@d80(3?;*C#;Ep2$tb&K;YiMSw&StKVb8V&b%JMXm?I-V z+{d;$jSr*wVQroNTeIRuDC4-gg)~$CFit^VDKl1-)37@rqpq)YCKNjcQ(}EV(qevC zDzPeme1j**uvSxa){9Xf??BG$^4i^@%vu*3$b0s;mon zHL~xHhSgD5cuBTZk=Lq9-{wV)H+eKkaNp?_fj2kAGHjUQSP0Wv%8x?4tKs~Oa zVNOexWwvpy@ixxu6(M5sk=`1vL~hZmk!ZaG)(q-DFge}7I<=A|qo6;MtXCXkEZSG1 zrx&J(7BXAtUQZ` zi`7!dqjW+Xu~jGyeC7KdCmy+$>?^h|5o>kTv*tqQU5fEH;8XueBNsoQJu%PjAx1Y) zTTpKO*>C$98un)dvNd}IXhn`;@=+<$zRS0)I!8bF59y@iCx}VA?$BDbQ0mDWDO$UC z&{4G>Am9(H=j0=|_K`cTmX1$v6HdqWquA!5yV4IgOyDw+qHbrXUBTdnomzB5LG`Ge zbC`r9npE!+kT?)Jh?gx{bp`NGUHVFFmr|e53ZINNFrVKuQQolPHnBMnKWrP`#QL=d z^T3!mC{=WGiG7Q(gcei7=2^eOUYj$LgpoH@8%|tU# z*?DU}l#*WW%3Y0j?jZ1Hc?&&ogd6z~c)<9~UFz8(Zis*$35uG)-rWAKg|>iP8L}iU z)SX}(zdq^zvPoN@b6OvgeFszYzP-@@`!DJ(*_}Z}#cxeV+jryN<^Q!O`EU7m|0lQZ zKVs$tzXRt4{t-C$pToLHB&@%Kh-|;x|KHBq|M;K}_%_@UaRnIJ{)ZxUL5k-j&sMTOrRsQwX3_G(rWJtv`6)0{ zsfgm92;X@@+x}-_s(T@roX4g(dQSo=cOquMR5g-2%dslb2B!T$kca~tDo3*-HTY7s zqA3^U3=@eLS{#pbqpTvzB0Y*`*d~VZGS(msizh)z-dih^DdWWqjXmInhKJN~Kh^^E zfJBVc_T(8;6IT7W`K6gPK(f+-_(r=uiOsvx`*gls-v1Q{3zqCJAAdmA%vgt6IFuY< zg4SC>`|DG=77p(d-{ll|>&wt9e0|X4@bfbO;`ehP59FvS^i#Scd+o2%*J6Jr)Usg+^nZ3>e zvdZM8#B$!|`E&mY{SBOUEZngM5e|Ga2-&;1+G^P0+A=FZ_OQ!Km?720}w?@>1$gHkZ-FVhcl@WvvB@MFz-a`bLw0O2elvH zWMDuY?tnfp2IY=Z;k(9k-RXq@@nEXf$wXwMw&FbDHc}%~$N94SL}KNcmy+6S zhKl3f%*ALTp^(?TlDRjS)UIg!!&eT?fH&ufN3<5oYWBs%b~9h| zJm~~&v4!4QT?AfcQlWqA@eUWSC@RdGFwdIpF6J&DsYb-Xw2IebR()KiEk)hduISAa z5K1di*O~M0uUaNCP@*>brG}%{0+y{V!Z{&mvT(KAyk9d|hQ-S9A{8tbs1*&B03q@# zZN1RAawRHpB(r5NQ&C1ZsWhG@W{9Z)h0H-p)c#|Lr;@S3Nx}v)c63@tO-}QC?r^+| zhzy*( zY}VLbe_o_nv>Y7Xpg2=KyAN`DK%FivcwhB4bg=svx9iYRvNjrwp3{_H>EJBAJJ{Mw zZVyk7+wwBt?Qr~U91$+dfnP0VtKH>ey4+b>XQK0XfkM#&Um!fQGy_9@LcF9PrD+K{ znnLAG7C_PuU>LXtGHG&+5aY)V4yGTFs z4<;*r5H=Sh!Owjm-$M~eYy>b=jlp)bT?s_P@{z{OjO|LB-;a{upgAN5v`k5SCOg#-T$O&#i97eTnLh?}~hT|vu;HwjNM}k&-?8vH9{?w|J@CJ!LGU-2;^Rw zHHRJ+A1YP1^a^ukPux+b?eSwjKVoO7oWTDr?PQPQ;Uste9OwCzd-R_ib^qaVM$G%P z>G7?xb3*vW+|1*85JKIu1d1te;(;;{Ae1T;OdeRnPc#xjK8oX- z?4^L3V);(GJk$ zG&62%_sPWGC%=Yu5!(3XM`03kthq)biGgTSHjPkGuB@X{oD|_G$r1UEUqiKc>@3_? z5`OA);7{-fo#LA;2T+)-04Axa=0a%^8rotxQCMTR`I1kdHkyu7()mNW({?FSQ6451 zXH`)vgXHTKxGg?{S;T1rhtq*O!F1dfdew=3-rSOlr(tA}qOC)@T=!q>hri!GQX8Yq z08k@Um`h0HEK(;8Vl++Uj*@$}h_?(A@y(HuGHZ$lmcs3(Cx=0R%eVtgu0BTE6y3*T zL4;Cj6dZ{YQDS-2tXX76w(}*Q4b!?X^imy+XJvc3r)r!KDXQ|e2YcE+eDqc>y34Q1 zKZLbpo9Y}@e;fwi9jT2PBGHIVp9_|39ywVang@}w7-67wo2C~O(najWZw z_b1R2-FlZ%d^L-)896Bl-pqJlH#8qM^=Ua*p3e-W8;%4st@aEM?ary0J}GLOUSg9^ z3M1%rZRzUPtachgTML&THjZnp;%YYE+LYrdB%+`e>GvIrC?&~j{PdZvM9N?@N8dbG zJYlFSOb4`}w^eU{ZlkU$;;5ru?|J!k|E)PX3{qj{owdrAn_p%-<9+)z6!H>ErF@}$ z!oa6G7fwr6eGnXO+*rCAdm&M;Q6uPy&IQnnr|0) zXVSAPRc0C#6pJ)#-C>SlQQW%>VVXC&c_9@6LPK|JiTP=x{Df2^Ju8uELj}t znM%4gR`ldpRZcS3gk7T;n`U|jcEIrRccd`DM=u0tMxO;6%fKmBUer-*-nGX);kprT(&Ty*>~psYn$SfcVVkpgCqp26gSitg@{#oCF$_b?^MY!gPb;Rm{1mnr_?drMxIiPR zAo>Sch8dx%>RF!XhTHR5Ueh0fVna<+k1OIX4wJ%V&n8`DNZjiT7Q{tUtY3SC)b0sn+8W<3umKQDI$e$W zK4y%IH7k%_Bn+%9SB@%&Gy_+aV9FAIIstr1zCnYWDe@@3P@{f)F!PB?({m}#JZwKR zeib>C8zOSku&c2yH9uM5T-jLF%fDj1ITWtV%&TEs&TRZQ3GUYU8BkmsPSM+8lyWyQ`1z5GxuZ5PU{g1?f; zCQj`oY%(5pO_EC-*@;5dkZ85%5v*X_>vF?gl{?=i9hWSNyG&Pa4RTON?Fx)tE@x|4 zKi3+LXJB%%84p*~l%sp3oU$5pifl|rC-^gpGYSRFJ;COL{wyv_8J9$52?+ZD5eB8X z=?1XcAFij~*Rt1~q0j}P8BS->zyBh8MOVQvw*QvBN`2owbpBiSJ82_*V_7Fl%YTbF z`QJiVtA7}NdRs#pO0)zO7Zo)Y{h@}kDHD;>%0*Qytur&lh9=6lW@8_7PS)Anw9?1< z+~>bZIgJDvm;StpQJm@05QH4WGdv~)JmGuJ^teCK>*)cug>lCD;ff%Jg70zw zZ45|F2$05sXT%>6gpJvsz4C${ zsuPtQ(g^XYQQM={aqVB+s$9b`y1QB=9g`o}mkG|=f~OdR>CyDH)dyJB%shW>BnvtH zj3Vg)FOnlG3}N$xkCg{E;b$nIS??doL+nA9ZHd!XY$LUaj5;gGqP!}w3P-^+6Pqde zuzO`;^(P$L7I#d_Xc+O-GH>PzWQ7XI#q@=J7Fxvbv^;EAoF-$Ni+~W+soxNvkibLit$v6yUISeI;%Ai_@7%Y#jlLe8i zSmZOPc%M~unac{j-klt^nZxlA{C~HD#{#aw7m`sQZtBhS_d|YOdBJ=%UU1M4m z6NA&g!S3UK1ng98%nbjpV0S^bg_fS2oZM{bMGP!SWxC_5DegC1EU_VvPK5HRdRjGl<%iNKFHklaoJ6aHxSIo4Ce6U?_q@ zpLRTh6g8(*UG=ui9~CTz(sgXsg0r~8nDc1OAgzQdnEldi7){93C^*kz-k!!TCyzf{ zgOx3^(2C=zFme38#$uE4RoEboFw;IFGmjg<$)lx3ZEMpw|x1 z!s9PfNy9~KFjyO^%pqczyKXieF)x1$k1eSvZONm(bh^)>D4n!r=tQHe2bkU3BI?=WMaOw%2Nh%(u(L!opAv*lFjjD2bw@ zR(o^~@|ww_SNq7@TWxrWXtw9TwLhf&*MiAKI=3@R!&=NT7#C}c63vxw zBfej98YSx4d%g($DD*@-F#mTkjUr9UB3u8#Fl=lVF-2ubtWCmlO*`F#P}0S?j1=`# zyX$+inkcRwR5PA83$wdQT`%#-Nzo3o98|j0T-(H!ZxrBpSsf!2C3pSeb9nAIKj;1}qlTh|jFitk#j>y%RO;&#HkR6L9OmkX#$196ARY692s2Bw5~3y6i_=w9dE zkAOR;(Ay1+ES}E;lO+`45Nwf}xvg9lMCJ_b?0nWnRI8@ek)>XJBVyl*zNi<3-_4A? zrjrf(Sul2cfjD@3i)k`phH&XfTEh2 zqv=0^qQ$=j4aq_pCW!hqHllc}xf8RC)0)$3Cl<=rA!>pMe4B4i5o%~V+d0hlbG-fd zIHjM%grQ)5?BJL5ni)e9B$#F>(3`&W+BxaUJmKx|`Feb(26CxI?ZX}wosH7Q5OSpm zNkcF`8Y_V0>(hqJ3BKX*XQ;=zv;VpPsn*x6Mq}ZLyI+80p%InujSn`08-nbs6dyam zQf2kb)29tIA*>9!Asz5NO1(-xQZ^n(&91=OZal&4fc0yl5qfqQsCEce_g-+dHnbcl zGencj*hD#i%$1}yW&a0|L-t}taQG&?g*$BiENn@D!} zV>9JQC#zC5xG9c0002WsOZk)0OlJq)S7Lt5u+EZU`_;CLD~c?^d9L{lZ;xz`8WR;z zWq?$F4_Gx>Oln{ab3+YF?cO3}$tmjCJeoz3A* zHYsp@a>Gn${55K0(X|>)7k8ccqnGy~TPvza`LY+Ku1@-EX`LzwMKI`<;egO~F>AbR z#Z-=(14=i&ep<+wkLDe1MZ~S{Q#iALEh3jedLFea8@3%w+rE zgH}PC8xeGsY7fr|Md|!D_T5fi7M!M{|7ZNomja35tTkR5;%8}LWW7)P#p*{AYGd|9% zVB|M3{8*nkd=8i#1AGqaD;&Fs-=Reh41ur9&8tbD)p!-ML8qs2FU-O@mgPhsp<{T3 z*RImdgi}~qJN+3f-69<(g>$4uV_vm}=Rkfbr;^2bL@zK|;5W_nu=A<;j8PP#voQ*t zLgelPNY@4!@)aCNfgXp{zbuF${)6}Lb!heyH_n^68COa0w(D;#0xvhc#TeILbN z$Vp(O-f`4e-?}5dv9rMU2!@8)ACS-Z@+wvI6M( zMnc|)%Ywf#Y-$a()krdGP|#P^_D*t1lI>WJ4sdt`%Xl{j$;ttI<3Ea+WlbLNUiZGl z$>$dm@y+>AJH+>@3Jp?BC9m{5?Jh+LHxqOe_pV^gUu37g?~^!On}$%V$soq3~$ z6@w8?AfcLn)9}rQY)4{63g7vH;zxIN{b^tS0*B(#yUd2)1Tf(@0sQ;F^+GIbWBq@- z6RVy5g9-lI1)7EcK1;Fdk5yF#?5|K}09NHYXMm_>N10zGbO#wQAe||V(&(&rY5lys z?0x3qAqz%ZvOM#d;l94jjZ6@@%b59enAx)FlCq<-?Uly=_v@0+H|vEmR1{Wu9~K-n z^XN6x-x-V^Tp`+zK)2rwOcMbWqx=_W7(sd5VUjY#WQH;V@oWIb5ZEyj)!s-dh>{L& zuPSS@O2#eep#;h`-u$(!<|-M;m;aBpw+yZ;+KzQ?Fi)Hlj2) zSF*H*De;xI((@tqaCUN&+$&f8FLFhcCDj!M1w~(#GP9CfONE=vAPIUQn9`bRQb^D= zRZk*$+EOwzYAGIXGsdO-*juitl8*_xD*4_av&iy9#MsnWp6b3DPBmRU@e}uYk61bI zQz)+}z(H7hyQw_^M#D<{MDbW7P%m0hvz%m`-F8kR05cJaEIfK(!h%huWTs+haZ78x z+E}&vQaHZ(fG1hI4knuf7Baf=)MM84betowYOMRn4)|@<3dNW+$)wg()^5{=r3AR8 zX{3H}Z%P;gNT~FbI+ysYQVPq{o|Tf4#bm7$FdMSiXlN(D&+jDLGu%_f6!=!~OH9b_ zNYbprN%jX2n$xDdob0q{If!A-^w+Ae_>8VQYAf2_Nuo_KYa0>;jEmDH_*lpSuG8-X z3{LwMX?Zlyw!D=*&Vn;5(v=b14;anMR1LkZ>1kLY(N}twlnt*E-yA5HVA}40datd?Ens&f<`Q~vcQ9q3Z97zebg1;iyN0o)Lu`%m zxXtS?luCC7A1Z1dp0kTBwK~^s3wqYjAB9e-Qr%?lzAcQR)>ZcniPvB+)Y*ISU&Ot? zrowv@A1J341R_G_SHFOLt$Km`T73r5tAlsyyl9HeT8g8-9TyW%WwtTTkbHGbx{k&@ zUz=HW9Mb!S#7D+zJKKTdPM^+fixcLSSu$vE6^ zNejP*7}P5!N1ic5BO|OgUsIJ+3_0drwl#OqmJm{Gh~KU5h$Mn|la;q?Ji75alee~# z<*fdlXfLGIuaSi_B#5DO_=&8CqCgUu-oXtD5X)T2iWp}QZu!GcD-HC~xbOc6c)A|K zXO{&C4d#}3|Nba@<|_W0ctz97JlyC!t4Ge-(QwO&Svb9RH#jngqiMZf!lx@QV;G*< z&1RooO=q3_MN>_zP?nk8$8P~=2d&(L;+!)hOoFIa^7oHYaj0%@Z|%_uQpB8@ZF&Mc zO1#9Y;ho|(iignT7UE*DuF7?^kCc|7F_OurodB}Lg+HG#{kN$B-!3j61SPzq1XGT6 zc^RflgyqbPi451WPH}Jee`l)mhkS3#_y*T41iZN*6&Pmgwt+1)>RcIK?4y>pEfTtn zC6>P-8LCYcWEb7Cjckiu5gbA;cy#|+@TgeyD~9#$vz>w(^8A^=3&gkZKZFy$p2Dl& z0l3HDYRXrnbL_EEfoU`l*9A?LuZ&B46>p*9AC{#~41O&EOKFK4-u#i%YZ8qu!JNmVt76#?YRUb8`*lAN+pTR_aUz_Tm8HY6 z&7Gl!R+>5MTcpgIM|GZ^8grgY|36RY{n!U+(i^Cs@ z4$>LBXi=MkIaZf8uuJ)aT+^pKSsP7v67f8r!5*kAOTh}TvuJpzIHGmul5xggwzA!8(NZ)vHSPfz_AKWh)`!HQ z#Tw4!9Ii$l6npv44DXyMgUXY(@i)ZP7Rfo44p=tqZX@D-hN#ADHtgIYkACMoA}U+r zm-4v>E|?ezj5I(}t~XVTEihK`&YFDD2pCD`KGvME(wc?;SE`7sJV7uC?(1E{LTU;;v2u1SW{cTsv2IOz{PtBK=1;P|aB!H^jAjIbf6FP&qfGK!tNGw0?U^zqn(_sLSm46O zGw#F`1F@`SW1Wo(VF~~8eqS~ls%d-{vIZV+Nxu5frnWq|VFj|hR(h*7l4(lBTjlV3 zUQ%d^+>z4a3WWmRGAhLB8C_LkmA0TK>H&BP1-8s2CpHrJAzQf#`LPAmH|a4WRW5;z zr-bn;_wBh$0kCP2RU=upB$6ja%2|Mphu-IeioC{6Tpvi$I8oE#p#w5;b|nw9g4LX)ORtqop+5Zmf%v)I;jvYtGn;B`6;Sf%)pv zrX+nGVi&JWamEH$&ish(HHN^AmxMgoh9`Y($zrX@1?Uw6y*toWU=F}7d@Y^*cu zM$`h3>9TvmjrVm;BX`M1=@k7dvtVv{_T)zq0TFW?@$0(3ei}0f=v=M4iZ&m+=I8|- zlOD`zomMLunZ7bIP{UzubNw+hf{*syjREpt6s>Zawn?-_-Jj;6N=cXt8?7VATBP;3 z9$Z9c>d+}#?FrX)UtjL@>#Exh{(#$2zNOqjT~j8s#&9?!2>d`|JcfvnxF4Pad?~lG z%1#UN(C7(&rqMWVvvNNK$EaN^IDivWpO3)|B>SUaL*J8cdsY<$YL|~uLiepYVDqip zgU9%KK!>q<(;B7d3R{yop+cUTB*P$~VLy2ztzTxh&3;BWn>~|T zBjW+yc8-sbRhi-ySOTUP3B3l-+k#KJJ0v`^LZ6Mpc=n`h)C;1UEc-^dt}lurjqwz5x_Di$XF~3sbcNPc8EJb zHR=r;x-t*qxnk&oopwrl@X1kHMEpjNQ=aUgcRcum=k59<8m~NnYHYj2{f(d;Cug2X zHeA+DzHxdh0v_t!f^&BS)grlVE1}UbEHw-B+@7Yiq+n8h8?StkBc(+qq;yHW0!}rl zSI`{k3TDw(hFih>xF)zh@y|D!f!{OIA#U`v^FxtWW)&6*wh-Os*)o8KFyFEnHAejH z!k`-UQPOSbqWxllZ7}H5yYli7&B1oRFTFpo8K|kjy9#xRS!kjxDC;|4znR~*FN?eca za>b~%?I(W%c<7{SN|B;Ld8m5->}7sm#4mp2GkWnKaJC`oE7@m!m0)^jM^Loq(6$b^ z;g(jN!Ek}Q`<=lPa9hPIOT2+qeNNQv`*vBvZeM?J`?f1DF8ShJFiic)6c_M}$(ua? z0awzIq|Q{B?6xLr-ahZZS1a6r&o)CiV-4+&if-6yf;FHM^l4*G@y&g)GOPTOBn$qx z6L0aAv{KkkoY$9lf3Q|Rh3_VP;Y1#zDjtjb=IR<>q_Ttim(ONNkogOpv)oa+7BBD_ z^e_+dPwRI^f=oDk;Fp$;mw$?JmxmQkwM=|%Xwc@=C)UeM-;M|8S$7$_EPRFwQWhI{ zyf*YgydP57slx{r`P^(xjc!~I-7))Fx|<5-ku$SM`Soig#^1u>i-#bnCl8VEi%=FZ z7JOG8RYpqgvH8twWwzd6`uhte{1J1Dd_kWB7@|6a+%LJ&hN;px<4%9bYfF}})I;sZ zaPZWp>hh?fKvjr0u=-({Ajc?Fr>uigi~z*bfv|b8x;fuMKa@32C^=Imt>#VXq{9kD zBSfk`bNs*q&&eQ95XfzhGJFqBS^#i|{$0a=lRj3Ab8N8A5c((eG6|`Qk4OjTI-0@cQ zp(3Qf<=OfBKUHh}T?x;tIj?FB@TN8&?qA>_=to;o&;M$7X>sx0 zoRS2uZT|su&)dH2p6qtG12I3pzZfxnyCV%?)5sWtM>RyhmqYEM==muDIpcW?hYqV| zs7|UMnH%8=;#V|PScZl)9}nnfyii7C_7QT~rauplMk0pH09S zVV-zk?+tB-C6E}sZmNh4pY}MA>O9B$HIV9LIvDq%#B!@bA8|CIzlaz0FqL8Vh80e+ zbx^)zS3RcSEEAX{8DHP%9QUBgXIk@Pue3T&Fn5?kVI;GM1oy7ECMmh_BD%<_V2J^w zW38hyS-HhZ%pkXc5KP$1kCr*%k1(^SY=|?-B4UvhE+PsEl9p$@;*^uKbhqf4_v*xq0|X8Ya|vt=Rsb)t>*TR`iDpVovH)IZ345L$s%BT}kt zYFpT9Wd~_G0yRUU7-AScrwvmvmFR=Yu)krF1{8FWxh2HOGR6~bTJx3YDm!kh2t1n7 z-2)4aIZh+^cJacp9OYxBLR6{#_)y9r@{9S^?cPVWTua>{)X`MFZ7jAz`H&8@s@Q)4 z7$Aiy1fDDdyC~xQlsS^h_EZKbxv)7gVe}x99ukf^44UwqGgu|)3S!I+B*Thd_Zw0< z((^cpn84cXF)EI$F!x;$Y$GSsoLt5^8__S}z~kmsMn8$5f6h8Iz-{+eye{9ZZ2j85=QK z^-V`kYlP;a=wUoW>=|#UW^Z8K8Qeq&{$nr^6^%T-B%CjpTu@qxhq{vpYCa03MSst2qxcj#xUKK#?;@m#*h_gS#8RqhaWf* zY8_evtLZFFt^8@TSR2+Q9ebScqTa>fGk{v`)cviC#ka#TT-K50ltH zn*Bc>tXF$JVTq{CD)f0p&OT(aL3d>8e}tda$uCi-!NlV~J(De4W$$|9_|%jZkVm?L zQJo8ZHRrzlE~Ma!cAt$C%tvhRsc_X>49!|;c!Zg%8*O$mBZdwmkI6Z7LTX{9=bjMa zs7k$zxUj7$FS9cJmBzaIeF>{oCM3>35;@VrmEqKw7+Iq%?-8)va>2J^>*u0?_a^`4 z-E3EkF!xbngFSRs_Wq3B4+;XVWU=;FKki09jc&p`jfPsxE3#IMqpdR6Pep%v<+oGg zTdo+meg%RY!@_>$`O^kb8S)NHV@o7-_sv15o&|H4m&Hgw7=Htn4|SNUk^n6tY+6IA z_Z4I~l6DHF^-jlzT)`c1;vWz9kzq1_IDLzv7j*b)4b~)lE(%+o=GF<{m<~jtFVj@Q zoU@SH>4RF^cf+IixjL?kr$V8rg|t_++hU?3C8XtUTIh?NiyCcFc6=(Vtqg*Ek(L?k zo|W&}DjkcHM`{x+e^RxATlTB`>}NBxhf&(c{<5$0lgzr@4)xvXQ-h`wYOW65=LJBm zu2X_5XM&Bv8Ks|qD`-t>ZOPuX(pFr830L2HtR zM^AhR`5vM;Un(c~EUmF_zVrshuR!fICvY=Yya4)@p>3vby_32*se zhsvi*Z*)(Z^}C^9;oGFF%90-Js!A|~NJeQ$7J7p^=2{@a+Gp8$7l`t(CoiLJ2yO4w zoQ-XzB+|G$);2|$>gcsJqU+Zh&&fE%Zd*}TNv68P7Y1Gw0M}jz_twRIvR=8K-=-C6 zYeRsP)pJH~HHn8+yVy_6n~q+eLDT~3nt%oeppCkf7B!z%Bjjp@d%argZb4SBRbX{H zBHtdr`spFJ-SXUhT3)38KP{a2Yj2hN%reTLdkqhM{HN*MK%<>oPm;Cu z6O-i)cPpyQXS+#*=8)o*d2@ZuTwI`J-hnw?-&dzjh2J`x&p(A>u4HJq>j9w}&QDD{ zw~2d6l;|6(5Y32HkgQ`a)%q~{QAbd|X~q#!m%p= zXk3L1z;rzcK5UX;X8*I-#SxCGS;v}5OVdZrCTmd>>R8ln!Ci^LE3ft&!Uatz4BxmC z3Ex(zHR~FKPExybrfe=pRaKl|_eDpks5Ys`jG|A40xE6pQKM&|>z3_KCC&L;l;Uu+ z88P*gN%+8)4meZAd(t-*xTwuRfa9;iwOlN5$unLKK>+C%&)uT2f(z z1giK}8Uy>a*4P~}RuOz-84!1|Uodx3`eh0LtH&6V46&)oxg^s;U&u!|?#SZXfAKfG`hpS{_Taknk$ssjQX|btonR9ga~1?KMv3 zu#~KIgp)N0uguo|x)lO?EywB>hdY6;&<(%Eegr|~$TW6GaDY5pj+*l?;o`dtE$NaD z7UMqUi7B5F6j&aVgXI&hcI>rygdcy@-V35^{4)@eEvgB_@=|C&D*reZ9}?`^STU>b zd@MLv4;63g)mzVl1NN_5G8|3}7ke0U?zV7Rl+ROHTgTPIpPl5+THQT5wM;s4FMQ#0 z>kp3*Th^p%uiT!1<@?E5Kq@6(sZd#F^}7-+qTTh>_ls0D7kjzy7KOVe-H76tHiI|zc!EomBi2mey_$7+RvQ;vBe^xl_filWa(ZyxuR(U17 z=kR&|r(KVjW6V!`i3SfK2PEDf3<0T#KU=~-5ue#el2qCw6EeKD692I4R5yp*U1tgo zcDje~DZoTRiQ*oj42lmCk8B8Bb9jy5=4H-_dG#ro{#2iRS9l%8eI0egOEzwyZ>%!4 zO*EOH{ebJmt1qy_7gc&9AWnQG_&|VWP6D@SIgw?AB_euy&BJ10pYlS@|e)L{~=`x+Hhs1p=~W7SW!7BR1;Fv4k*`XRRkp>z65ZQ!Q}b} zz9ZD{UmW*;E1B!axY_k4&n(X=&uQNF_dlCmJlLF9?jbE-Vc)EdF2O}&NVO;^!pxx3X`60RNM~24i zVH`5yX=;fDdQEVNi}#U}2pX%MG<33?Rx^3R{>V(04aN#W_k;z`n-}s_Wi~=^E*SCm zX#E=YhJHt~yfb>iEz&+SFANd@f|_IezIS$$zi<|<)f*$Lz8&g>-LUo$jMkopCvqKL`-$5tzRT`1r0VPD*w%br`lS(mgvDO% z7n$PSHNW_BquoVCEwM++f|xjL_vsM1oaBHYYW;JrEl^!~uD?-C*aAw+HX93(kBM3@ z8k%w!E$xRgio0W^F^3&@9NmL%kekXu*QiGaRka>g-S@^rP$Zqx;wt3PRT9c6@JBf< z(GcY?u;U_^@_>RUk@AjCaJ#x~-kL)M`85A(&<0igYOZy3k*j<8q9Ho_~z5v1-(#@ZQ2e z-wU??K2#N-YrDsl^mUxk0#nOHCyc88j*=TX_16#1r>71zqYgZW?{$}4FF*4*$DuD@ z0C(W0`)X~_GaHIoj3@(hZY92wo?c4$6N=(Y326`PriX6cr$~W@q7U)ol)^-iwA0~E z*?At8twG2i0Xy@i4fBm?A>YJSXIoH$6lW*TicU9S4hbx=Nrd-w6+S!cDfH*}N}#$% zOPiAi^q$s_ubtJO@rt~Z^P04O7dj!c;>i3IInGCPrj*>mA1(V)caElSEs9I=8T z3ELUQjN*y>8*;n0>lx1#=(g>&h3HB&M{SDGs5zYp1tsbRC2GcSzL`DL{dokFM6PlO zo*Iv-z#g9rHJY%{;-`ltg49{8K^k2ae&IFthkt8^_nHx{3Rfzzb-AzFBD!P+&k|Y> zh|wA3DHOZ`>=X-JWCwN&LAfP>7@e45lcSwC?VoUntngADveln;QHqZ^80wbE>)yd7 zoXmf5`ms$M6d}nz?9*WAhdJNJtc@ql>x)@d_S2*eW)9R4P2|KUzx~sI;_sWJ@5h`M ze^-V%{IAH~eN?3XpR<~Cx;VKRzk_klw~dHj#?RL z$!Y6RGZg;_`z!Dzf3o{WQSodYz;u$EfbgwoIZt5Mqt2(~AF7AeaELwd!A-blEW}8{ zM0jt~jXX-mAGhC(jd`f-^mX{u$=d6m>v+9-qd>NQo` zYPW6(KUjRxfMG$#lPuc=la=%-wDey&dZ6>Wb{f9Bcb34#b*GHWpAf5&4~D*mj|%>1rTPcT&Qoc6a#lPXGtDs^!x0-w zwvlWThl4avS*15Lz?fGd7o(5p-R}sJ+ZHALP8Y+}My@b$Y*y9%ww&-rHd*adXqu7Z z1;^+faQvA>L$q!M-my=iQU`2*qG^`Selc})Uw3I-wR|jZ4B3fl4R+>>hZD#CbsECV zhF_+9-b&S3+_z@y^-_v;5V?5$q)bh*#2YDj=WD;-8Ki+$`GZLpV|1@i%KU^6-CWVe zQ*kM}TjDBl+p+gTbs=J@4Lt^QsC%F>$sF~Ze-ubwVC400@mY+6heIs(Bm|a)Io#%k zc{oV`HS`y61Y)q;*fXe6CL3ENHq9}BjLx*ngL&iboyWXOfd;=+8j`s1M~}UGyLjta zw@m>jkt-{mbdZ46w(azg1;D;*A{wgqo$^D1;bGWl=%AeQSE9v!<&^|U$sU!aherCs zhb#xpAD@6v87dpA>x8LAoTWAygDnwlxWT2ycpg^lkvYG_tA(fF%7`k!bPN=0bSBI+ zotMqII5DV&=(OMSPoP`%U(9K-g$&-Q&t#%@@_!*=6I^#FZiW>8Cfu{1-0NF#!z~|@ z7E*iK%H@2F{iRp7+KG169h5P3=bU+B)&#zt0qZw%#pohicrE6L#almmOJTX_;LEjB zB;<=K1aNtIQ9P}bi45Dwy<47jcYp2cIAPBf+i!O{VT~05AOB>+HL#t8H)A0n3`h%TcpQOoZ%N{&xpeBqGcy~@}*g2swvr< z3rhrBrEJF5{1F`9Ava+D5><^^>F^BWtTwDKta5xPrj^ME?X`cc+3N%slVvImJ zr3%f#g7KX+)c?of^f|PByZDRY(3jWdzjHl4JoIJCNQ*Xvxp+IX-k;Qc@9udw|NVB_ zF7)Z=0D+J$i*7U)3*~-JN4y+2^?nc0GWO#k7^7^*krbj~)j+cHuZ#d%O{d0#Z}O!3 zQm9$TnN^`!=@cd8^6!m=#e!!C_7QR$;dBS~Z;fAYNbF_C-sXd<1@-TZC7CV!IbSwC4F%w9N>4x71>}iLIz%lT*w;BNb@0Ql(cG zR8f}amTRn>x1*>rb(G2co-WbzkHj@P?JB|x&Bf);qEb0{#ClA?!%ZQWl9*$}qpBry zuqt#YPctJbhgvfu7`4S*&v`@{tC4KF%n6LoV0gZ$Mdd|AoJqc<)--IZeIhRd)a11_ zBWS3w_Rk?Nx(cS`=IxzW0Z1iMgr}5Kmvn}ghMMJSnv!sjk9;9NK~5fFGQdQU4n`lT zG4>;&c$N_jlo6@@7#z`#JI#lJ!4RA5Vdb5^Pos73@e_q|ns!hzP=LD>~ zGQvv9;n!8^V-dE>RyQzSY$WWh7>Q)F*?wuQ%^6BVz5P5rr7bF{!eGy8t6gTxCcP+? z<-U)-f(47HB=4l5E+&k_xTcOUDi`b#)2d-u@`(w&%?Yx?hFxIB0(*_v?jA)>g(+Ws zq0@b~>@aFL+UW{WBTBlYk8;-!p_>-T%1)-s@;jt+B!lgp>10H;wRk=tMw{}Lwl-gk z0#?a9$as-;W}aTc>U3Gi#7rS|f*7^)u&}#ZPCIcvbd~%cgV{L^9BUkheY>zgsnsSl za`pRZWR9}MmKFrHK|a=+0ho5LqD9$vjj)E5$G3XNfSvI%ABl`99NUX+KHNvc!zV*FjZI( zgXJh2^1C;N$T8cvVo)?iuJmlDuOq2!0cKHX!4TuIOT^=IkygNaq{tWO`Y6VW<;wgD zHz4N_LL+F&`uiItu=CHgSy8PH?>2T1N#pU4Xf9HM6r4-m_D*&i@=3?pLS;+e*AQDe zvB_6wR>~B%!3yJ~OGh3u$YP_)&P%5y^%W|Xr{7Xl5dwB+5>$|Z6|FHrT4g5~@r|7C z0P6+zvgo1FVkDl>mDJ456v6HjVDbYdvTj*!_9e6?%a@tCpd3ZZE|Zx!$6@tk@UZik z-)MysyYCZ3)=QrZanD`pL!l<~;+JK4ryse+EG%DN3l%;}9q29caR;(d zZn8v!k3sWaT2+z&8YujpM=T(eeT(v zsi1IaFcA#?cTcDwz8gb`0R*9D6%NDP!x2X@_ldP3Nmcrl-k1l&v9q1Syuq0aaQBP6;_F823rl*gIVX}SXacm?6nhaNs4)>lEBw*sBa^w$4_vqqb7*Ej zC;xDIxb1J7AAS(n`Uv|HHF$bM-c??v1y*11@UQSWp*SO{bf=8(`P+V3iItw7loDDF z;&#Oq5}v{ga%)_XO88cOvh^pl6@qk0+FMeKmFs_kX>fh(VCc$cmmoZrXo-QXzhBeM za%d&qZTbN`&peHkEU(6UVJPwx2W%so5(L_zuUJYEOLNV`xU4BE@!=mF262byqH_oc z7^BhrqPW&0ndgxCC{@uZJ5zgQbtjduEUWzEil>o$I4^Nr>?!HEah1c?mfQTVw9PvB zPP-?_$8!GXw9Wt9$NqI}@gKAeDpZ3?Kcs6*v~g^=#tS> zg4XxG4Zr5r>|Hyhe{!*LQJ4YTne*}Sp69DKpXZ(DtEsPlemy}4Ty|WB5?Ro)gfydu z4SOmM3c{ZDR`laAG42(GSoGcqKN`VH_RJxpurZn!8;Yac3y)@Cr6XfGAEr7EBpAs` zd#XgU+3RB#QxM8<*|L=NXve~me3KX~!NOxc9?{^cgFSJv*Y`N|V)F7Dh{dAlA>Rjt z>2A+WIc-O{OBL~BtJN}2s+MCw6GWm7W3h5@2v+EJXr$5xaRt= z(K7(M#%vT)HhaAQGYvDlEw0FT@IyYXbXM><8qJ-<%HO5ejT6eU*>i_jY7B{&gjh#7 z5)nU_3SBF+;4^OdZfL8W%iP_P8rh@=bcu42`X&WFF0deNR=J;dWR0cy(4wf=^&y{r z@vn>!KNIM@FkRDqOVh**iJr-3!dv@AD%29uQ6uWQX};Drre*wl0n{cS7sp&$}tJ{X$QMAbdi2iG6o?9l$Z7oSbN%B^WEj769 z9k`jQFXS4!&iSN=W)c67o%*hZS`z9AAh>g2xbTI;s%bfM*F>RtJ0o`Lt9GRPu+`Zixy>pE|7Q&oCj17C7$> zvvJdG0SYtl%N2k)CS;;7f(2-`w9X!CFFC%?@eA1j{)z5S-p=pHYuk<( z4iHqBF6M=EwP?4(86H)LBi-!CH9Nqz#0h?Fpw8JoCE6EVl`pd_@l~y#_stdzhmmUW zQG7jy;K-KB-4ttDSQ(#7d>xXzdHca)rUp_8HOHHJE!xklKDfd;u07w=>Lyp5FQELa zbNV&RG%lw5RZD%k=q-+ntU;aop*L=~g}`Hk39XjC_bhJrS|S9Rb1pE;+;Yfa zG|5<&vsm~2?x+3kpxiGM7X{Gy$u|6x+y{$VNwbciBXuoxZHt~RKc)7fCx5T^U}8D( zlKFKt~dy9k_I%a5NFc`(?|)_6Yt>Gt+_WTo0& z%gqCFy-U#T?SEJ+@YnTR08VZIdsD!_VKr+1{_&s4n$~|R(=oPEhmeS^WgrP~S`Atw zjV^+zC6>M9BnQz8Qz7HxA~puy_3mG7-5Y9k_{!j)lQ3)YPCFv;g7^G|si-{#yI6WI3UX*!OFGj#kMuEBDV z?>QLOVA{D!46-rosod)d!UK!#LSZR)BU>Sg9pC9NkDbVDVJA(J7Q{Z) zl`9yL-(+C}rlPJL8Y*mhlj5_)N^dlk7>9FYi%Sg(%(&_*%0$2V(930$k!TcqPtE;o zk?1O-fam5H?*Ota#!#3I#Z1t1ZYHr}w6#HU=?9ZN10v*o$1rz6s^SLt(~ zGl9;0b;DbCCa9y~=xyV%)+?do z`gTRLO)aMY$9}95S2iv?THmJvD$b!s_&Ih$dfb!zs_}DB0kT~kw5>QWw{&0Q7IOy^ z`{i0c&L+c+2hn@_oSeaKQS~Mc^p=7UvT})V#=NJVG=vjFq@`*tvLOgb9R$^&`_>$w z`Bv@KMa|xHMuBLWsMC3}2D{<#;K+~|E7%E9y{B18vjvdFUDQORLymZJ0GTfXvdcg7 zF@mq4Rs`7bLaY6)%b~0bNDlh^^qD~SOClXbLKDa234FR6AEBknEk@tTK3<@(93KmW z>bdk*Z#4ydrNk+ibDA^VGLEtnZn5oKJ8d8E84O4PRg^%-x>iYb?x|at zBJRT3LP{yU{Co=g(>+aI2E_`3Ntxp-8uz+7WHNfq~BhVc7%SLZPaU ziY?ncHe~SWeYS~BU^9h5U3CV}u&6?`SvwYLlEw#}&ZTQXSP*Zf^2_G}2bd>GBs~;- z+e-{>t%Ber4MhaWvNJroHNBrA+#O+e{9^E`yp?!a99*;D;7 zG1cCFb}HqRu%`HRi-B1F;q;VK>id^pTlZ%*xhsIP0s%KcU7vGXEceBA!VLj&9$HI5 zeBFSvGtUs#z}-EskULg>NeK%twO3MFD$D}@5U!Sps>rfC$QQx_-leBc))gP0t-n!z zLwZ{1z<`VOBX1^(uq(+omoE1-I zu=$MK%fPkD+&=VdH@UGodnRs=2X{S-dD^#}^Z|b9eFid2;~YPZ`@(<(1LrX)+b`@D zdD~oQy#rwuFdH`M*0f2TG`4k$|=N56u4Otu$wEyW1 z-Yw>lJdE|ipEPo6^SZ(x;=3@E*gNTp0=C_j>#VX`6h* z3Z(7ygMY~G}7VY{VhGu^*qBE{@}+nKGbbNUBR&V+l}mTxCt)rC!! zZmacVkACrZZUG7#YJc8O17@o`uhQ^xosHfp(2nb+EVR>HUvcl@>JQ^M8p@ur0zhR32T?_>tMgd;Crk!>?6$SgVZO`4FSXKf}>cp_LUvElBh1YQBA#U0czSw zy#PcHfDcpbx0;e$iYpsxD^Fso$-l3lOZROsb}K3>v`x7I-D&Nn-L0k8u~KPO$V8FwTk|jz!!7gakpz6W6rw-r07{lqxaH&MohI$PY=#zxT??8`!a1N zn+M?iQRXn|#Gi@m);)03Aszz9FtIgGGiAJHX!_E5Pnn-8;b*v)RGkfVg;#UnRgHK-jm+A*LnSc*scctc%4FHJXVaxx0jzMG`~P z{dr38_f+G1|6Zz!iwz_y;M6T`L?IL1q<_o1gy?g{kxO&{+Ip&f;=Xu#@>oF_YYix* z%3*lw(oQW&db2ocEbu6n{BZIWo`uC_5Gy1~$m9K#J@E(f7zvk#TW(h5 zVgBBfyh2i~Bfy0nH@3zYnR9T*OSH6VP|6I)7;}(iPUw*;WjEV#+|ijfWS%S-J8WDG zna^Kx#o11o_qkU*KL|^@r5IgT87iAPd2EDwkp(ie)yL58Ry`|^=K#aYuw3)}!mC)~ zQz=bAkT3ovskupvLXy1hv0D*&sBX3N&@ zXAs}F-mUffbXVvPm?NS)*kMNeA$n7=c7H8|;OHgy6>+(-3Q!dc_rz2??Qnuv@vzQ! za`Yw?|GT`=r%;GKQBWr;!t>F=2R7l5a-6XSa20ojo!<<*-C%OFZTmvCbi##Wk?EcY z{7N^c4NhswfbB5Do@23#ZIqeWp}S4nh&%fNkYZ>Wanb|#84=4i9V_@!;i^6>`%5i3 zJV>={K&s`{fsMh@J#*6`9KxzGTg?knt(gB%t-RamsNQs^uMV&JbMT>c;f3)x)JZyl z*`Nv)10A+p;U=Peg3d2mon!6P1CErbSGj*)Iqw0R_3&1vxK4im*;w2R~d{iT=SYSv;S5<{9R9o7N+2^olyM< zt&aFbHb}PIuOLzy7g$uDz;;R30f}F|O`R0w&W~V;{y;BP3CTYMwk$A!c7v-g#G|G$Gow;sx(ZT_F7V%^D-Xvv zex^v!=By)72~ejGOpBv6$9^j%6`H3OXhN-&lwt<_lyzz%KTa8}vLLc!Zpg>s{Jm-@ zlDhg$1g9)sO9H`<#tU+!iwo_dG-=ijEUxVC93L3T*q$h&hMLk=!BFnpn>Bf-SJ5ap zPWw|{ZsXRuuR~Q^mjMIks!u`aDu`AH?*tUMS8~^t@H(iT9`p8yO8o>XzEZx=+rPNN z6o(U#NMR^4yJ}Tr54}Fcc~WMFTsZa$S_zOH2)rrB2fuy#pgLYIjrWY%nce3XV4AbV zL3sm5MT0g%OZF$e!<#1Uke(%Zn0EnFktdC#!Dh#^(MG$Y5bo_&s!)Ff)xd;h;BY{{ zQRR`{*`V1AGZ<jPHWNX1K<6uMlNU`_j*%_aKWdsaN%s!?LJpO2ksm6GR_8 z9@^h$+Fm5H`_NL%fX`5|tm7~?&ppeeA|*5;Atjwf2MX0o6eCb1a@7xX2sPh>+P(#7 zv-ZUg9myfE{uEQ{BeQsDiZ295__K{^-AJL{g+r@w=T{?Y07SSXka>iZ+<-mpE_sV= z>QuB@Iuq^s9-@(eScyrQe2v;0o;*&Dct`%^6l6|iB^iZklNG~BKe8mOgAesxSm;Lp zX{s(PutRFtJ^#T^cxlqLubQC}Ag0Pf>WY?Mscw!jv*rIE%Jw(>#SKY)Py#6%!T+MN z{U`3lP76;0{TnCjPfGEAyTTUTt`#iQ0*Kn$R8ea@%UDTeF|kGy15U9ffk{Stb3JeV z-=FT zzMLVO9myiFleC)ZThqc4DnJ32Z-OEB)Y0o$xP9oR6u~0CsROht?7p@8c*egp#Wa9j zVehoow4Cbv%FM=~u@Xs2LSTd2O7Kr@qAKqOEiN9u@nh?&799z)lG?J%B`pBg zRDRx*r9A2d>W6esz@}oMNqdOvdDXU~0^v)FdFQ0@ZA)bIK~IO)vEXrRzLq6Lyts|t zz-wJD-)9Yaw<-1B{&s2i`J?o&n>j9E6wxxa=1!j-0JofsRWFRu;V*{6nwUa+i9vFs zofC0D+%mOeS7o|)%+15LQ`J9@#>GaxW?glou{XAeJ7!_C?ioyH*jveA1hY;(<>-Jh zQ??LNvxnodGveZ5g?#w%@}aGai32I*OZ+<%NoQ=eW^_OcSTzn*M%?Vw8(Z+@qDTv7 z488rHno31!Q640a!#g+xUucnAnHDq@nzsdh%Wnz4`aXE6zgrCPJ^1i^ z?lO}W#(EC=rtId#VYxIW7%BI_Vc9A}D1$3ihEym&%P(c({lt^>J()&?nUr2)m+paq zIMxf{P)wgP8YOJspa*(v{XIo8ku8y0cxz65fU7vzUAaW`eg#BujMQxCMljrO)>aL z9-G$W%vcmTRK21x3=7Jh$6t*d?=hC9#VozwK4oU6W2-s_)cg+9o1GEsL30iLFvQb>@KD z8;fI5E`mS&d1mgywnG-xPB%7`@zA+|HLh7{;SW=R>_@vIgLA%aiKIod$WJ2Wnd!KV zC=|L_Plmm+8i2|H{l~wQ%D@?kQ&ND&p_!m@sQLfG)$+eXTHe+EmWe;mytK z?hZi~waGX)Gr#UV-Ex`nAbj4+2I<DNrt)=6KF%!d>c3ALK0fkkPh!_ZiL2>MA7TiHM7Tg0ioFE!Wx)_)y zlXpZ|cWj2S(7liZtf_30EjVLZd8jh64u<`>kaV1t^D=XV3-d0a)Du6PWx{=~yR9Ye zMpU#51rGZPb6&%#b8~ILac;}8+%fi(x88l6{Se3G(p}rM0#zMviEi|B7f?rV#*Spy zX7hrbrjlTOvFzf=t|_%jdms^FKdzjC&dzaK_Lh`o^n@R)eK|!CgA39oLU3DZ+-w?U zdnvaV;d1^shYl=h&PCDVhgVqD|Do+2gDVY`ZsANa@s4fVp4hf++sbANSUyYIzXQ{|XVL)I~Ch;;5ld=#@k?6Pk;!Md~xcHJdMhfFG!Y%fs=N2`7e-iFY znT<|T*ba#?oZgoz7@lePwRC*i(LF2$sG?+1&tWB^nW0zu6?ZUYpjgUc6V^npzm+M~ zgmC0Gh2*U=xy>$ogKU^8m_U@^Qr}-=He0;C_jyT#{d3ZG{!PC_{=BEWruDvL#3i%A z57KgG=gg@L|IKHFG*|Q}ZxBl{zjg;%7QI_tk6jJ!i5_(yzq5D2PTS`!5jG75w z&7i2S5459bFs4%l5^#}B5pa=A14*1TbA^5%X9@*ykxYnqMMveI_MiLf64g0sgo(>m zRgk(#N5m2)7Y!Kwu4_jx=`T~v@o9{zL1D6K5sc*k%i3P|TDvu^1-4V0YXjd-=&Dd#3h zy39Z^Waow~u#QFyREoaZw4<}k(3y>`@{+2odd*ODh;a(4x;x>Dt;-Ozj1h7_pVF$C zqsWYkM(D2DMM<>me1=ls7Rq6hX@qINm@*eXQ7RmU<3MNviQE6DOW6gp&P#VSAy-Zj zUJMZ?+HjZem0_Vb(~r#q`qby>J&ku=)M!1u6*BGdnFCu-M--rmc)m{3y&@|i->pVr z-A>wy+FF@$Y!m9%3DNKvO-}?;`vp@i)v|OiIWunC(Thj)C8eDRzG^EiW-cg-+*P^p zhj@#Xb^53A`?l**i~Z{A>j$`fGKuvRJAhN24ye_ z!eIw^M}?kQl>B)SzCB${nl&1yNT7gjqDLszPdvrK8%&`YwVDzLNLHD`XBxw_eFzFm zi|-)U)1(*!cF%UX-SC9js)hAf-Zjzh<}Ue>zAqNwbr&myRv24T_eksqQ(Cp(Ygmm@ z;I{~mxkXf3d%QzD@UQztPKJ=4Vb&b62XlTm=@V|cb3hTY(O<<`&nqjP;h5$(zx0J# zG;b}y8eY4qf*>gBmlgexkp3z-UhgrrgnUEvS)+8XmUvV^urBo|XAdqP!g5XG{$zz9 zKkvsrq)PpZ(K2)3&@j{n!vOov&^hT_FjuhZmuQGA#|4_42q77ce1zdq0XoTBV?UX! zOOUrU^o{Dum;BE#=T%$!byyiH)?@-fYFXROM_ z*T}Htcl}tbS7ND;>LsJ#rUG!2k2^PuIb9N^GC7VkIm-4lhgs;=FJW7hWFnX zs{KkB5e~DgkCTVOP-Ehd3^$1pS%fSkzylwHR0lxpC;f>heB4N(j1h({?6U`mu>?eX z0J+Fe`Bpy~bX!n3;iAC^g78E!=A5q%T0Po;l}S(w9TCoenas1}WGq#0*8Of90Y|{z zJ~+Rfl!s!UG~k3)n2my!WI0jd`aH>K@M(dTLq)FQR||8gi0hz)*bV0ypnReto0Yc` z&~K;CYHjVM!Uo4?t+`fH5FuNC z4s+u`T)w#|k=0W|-2%E;k3wZJD=(4Emr~-~rHY8J-06 zTk^%7@P%X-g{o-B(Q|3#Jq;XiJk^p7pt0p|vhOyDcEOw+DoN(kvW(UELLXYB0&7lAv?Kvy&=+GK2p7_i0z;vX5`A=71iL8E-^YL_FUB81^~a6| zlmXfp*ULXncuJ4vgosjEu3-^32-L~Yc z1m2XA1M>h^urJp#2NwOu<}@PSY@c>aF9wo$x7U?_VKY;K?jd~YIqoQX=L01&mZq2T zpB-l}PR@UETUy4Sr5K4_R|N&byH^#p<@13TJeCXSBM{T+5=Thr8*}vkCSIZz-A6Sx zh~mp7ULWs7Cc|COQ6#6@jybc?`we#0^}bu1)BCCHK0MjS5w%w85x!!Jno}B9YOKVJ za?vG=CMDxH8{NbH7c8nb*xJWTiLbi_82)-})Izlor7CllcBGhEB+~X5MHtV0jhzy{ zT?Fr=e(D&rjD{2lklnRn{2_&^$%# zfuJfo`9Sy~;>CBG?+Erb{Arn%BJ=Ln+=BZ)F1C~PyZ{f%e>d>n`;&QNYz>q7LeN`K zQO|i1V!z-|_=s+t9-$5{@HN0(6%@kW`A8WWginVok@tlMjKSNkjY-N`QR_duQjn`;ay4lY*0bWxMH4Cl2yf(g8`z&GH zcz>KIFaIWzuc+1dN&%%L6Ic)smH%1k^|#AS|LcI_9|MXQ@KBTCD%kjy~W% zv+E*9pi(w1Kvcrm^sS_zkEfCbGj*2?gNABZp`rP*pHz9Q0Vd-b6 zP0j8`=Ij#eUrmww1R)>|q-JxwpTC~l`?7eOzrUUw>VxR?MnrHh7H$PH+Lc)JIKYZA zmKn&1vV`_vJ?4(s^Fh|wm}$f!$Fhw9$7&;b!wUlF()LDKg;%Vcfe+-ZDjCp7S%W0ESM zmaDSS103TBxWmQ%Q@H zbq#MhW#K9QjJd!z8cLcs{%~-CAnk;rCmwQe%zUjd4d-c=04iww>>{Hqc$wRCI)Veg zIk<<`JM>AZYwbNa&0bQ-W|?8oi62olL+V#cET`GdUW4SlX>}lM7mNE14nPOeYT;T> zTbNdBQRvTHW$3NHp!X8!Ntf#iHCyWp>!RP>!f1}L! zAV9d>d}K@|_M(r;FGb=T{oT@u8!^@6HF_PY{nNlUhD>!0_;-HCM^sDQpQcxPamq2B z;u(D(@rICZFBFh^FUO?TiA1h-Xy40r&!zeu&MZugV9T7%Im_P*NUrTpR=P(Nv6_Oi zA7Fa%zDVopQA2YN$NfUEh%LYWP)=_1f-=OW=W^3^YQyNuQ3f{(BhUzYC@%8B>wIYo zeebjr#7o_oOcaEHZkOQ@8cV;HPO%&@k}Qh)l5@QN)l*VX`{XMiLNkXxrK3?mvTbgP zpd)93-V>qK&7{Lk!iTrD_T$pxXgn7Z<4AVslAL!2yQBywxQloGXQ}Bt`<;4^FHFd0 zzP5};lfygLXo2jVJovC5udU?s)(9gTw+qWnp>@z6~)E>6H@9hBF zX{#%ksS5jC;WqB2azoa+4 zeD$}Qriv7^lBAJK#|E?ZGeJ=7lC|CcWs2P{)D+=Rj^2p~*DM+yz7{JO(Tc9I^a1g& z**Imk*@pOk1-pd*c`eodKX#EGYr!ZzDe=*<6*l-A)To6{#?jij?V4eXb9OzQ2F6zY z9l9)I8N6ctsNb2FNPHrQ`flfItvBu6Pm`zFPdC;2`k+Vs89?YN*-}F!C@bk#KnY>W zH&78Jfe6G*JQJtp8)|7F4@gsC3O**E*g^qsMw=+J=*0ux5VH^!>dlH^UzRUB>d^(i zq2@C6mLDWrQ;$=s$u)@2a~!AvxJTu6wNp$YrZvHHgv@ei}QL)!KUmscNQpfcink zoq0Ojad;a?5<7dl&6*phA3zQ6s80HoJ@|Y8TmLX)v@(mFqHusCr^bb;WB8l9sqB&6 z!ftCwDOpqkcgLDDs1q|DnLYY)R-9*8jDv-Lw)noeg~nm=;fb?fgpTM2V?A=RfY!Y- z$yM~+*Ht&HU(CYdm3=saw#gLtvbdbb5kr)!U-q5ePB`@{0&=9WI3wG0gzu++EIpv= z$kmfrjostwPGBZ@?GeOGxk@qwm4`9vtdsFuXAlp|&h?=EjCE0Tfm=0dX^O*$Uzv~D4%yzJw;FQ=&~R+e;=_g#aaqqAGS=}KiEIYzG-ijH zYCDGBa}lSqp+XyCeW&q2?8ES&vP zmK>=zh_MReYNT99NYALMEwI~YQ&h&nc7xB~Qd3bIS{H|NF^i6cX4fy13u(@-XHO(A z5+Bm6#fQXW!>h?So(b^bcr9JFVLC@KHwq!O@ETnTW|||tup6URLN=IxF}z=D-`d`0 zJ9fx!Dv*IJUBWj4E_Qe$@<&gJJaI-ISf3&Lv`fYt7E_Tt7Vtd+HjZFf8F>U#Z|(D# zltbpQfj7fv4;4y1L&&jkHgmA9y{D04x&>JJjc2GsW(}Me&m3Ugsy>J3rSZp^KM`hmmIMNq zA);|h@Tv*fQEywAA`f9~u6vokW71LhGoINM@8r8bvF`w`Z(m2X!Z*?2GNHNOVzJdL z%D2Q)K;RPdT6|e_P2lx=aBoO9=CG)UwL$AWuy~aE@(X!L_8b2*m03?S-y_aHfa{Ny zs)-)o?+z|Fk|At+gfAX$(2+&M=Xi*r{Rja^C7*fMVx+3t1 z6n#3jpe7)ARsQMOwE)EfP1?i9gL(wMCcei-b014BPVs+$7mXiO-}uy@#Ov*xqyAw^ z|J%nkjUNs0N)9{(>KfEeaRe8D-4LoD#;(+2Kmd`%=~ZO#M+;riEa8w!lyN?EVoSkR zRR9$lUCWOx7PLwU$~3iE@N!$$=v&yQQeCEzjXl?8uc~?NaCjsk65EJy-Ce^3$+&eNr9y<< zjWqRV*`%ADSMGU*S8rJ&$JY>5qbX#hrPIim8i2NPA7)%|`-5fNR7WUycdFs3w;dMN zildZ6(hIt{9_sKcoVI+W!f1WYLX!#&qzPL3zJOO(F5)7Ig^!lTf z7K2)Lj#N6QHb##0wY>P@1C&OL6S39Ul}@012J&;!w{G6A$c9iDNQNyf!QaN}Jmi|g zAbKfsusSGZhRs@dG7sak5AkN#v(yP$!>137KoB|05dgCW*RCqxv?|G1Q^jB^fsC2mU2yco< z>>)<872-&1^-X^tJHE(s-P6}yQ(%~DQ{N2ZT)<0Tt+YL;AiTP7yhbpLW|H`0?zn|}iO*p@L;y3c3@Nl&#+>6STjzwC zgKRE{L0VbV2%`n_gpAFnw;Rc&8E=8Wg!@^rQ}=-OJN_JuKgb2jyM?(?w4{Rfygy{d)Z1HTB*1Oc03X=bVT+5AV7j-|scgngQT0n*$EHj8K0eiGa)NZ|Js?;UY6s_UJ?m~ob3WCn&iM2NQ zc_F>@@lO)yAMA1+HEHYy1p!Hf1OZY0pB0SCwuVkFf7t>mWaw;a^1s!KovPaMD1xZ( zA$p4`N-&^1XbPy5sj8@oM5IkpLP}CXaN!-Y&BmH*=PApYLf@h<_$-NutacDC#j&Po z34u4M$@p9jCpcL)pANWxu<(ET`tr#Ddpgl#xX{0pbcHcp0J+#dRC3^+B6cOdufd-J z!VJK}#yCD>Z0qo(B(*{5g;qO4w?7KeZ_|5iWwvlr7E?oMpp|0{t^}h_MHOT(rB~}N zqaK>UK80k^nm1tC^Vo5=V&zZ7%+)l6IH??$S8vdsk2yak)U|CI%CinWy)%WK+LS}^ zrNFBH9!rg0Kq|CQ0oc23Q6c({`yjgiWtp^cTMAW}xpB6SeDk2Vf4wZ7LQ~3!2C<6l zAmf#0U)Hb`Og`6UnD$p!hBiTau0c|k;uNlDcKSl z^M%7E2C4sM#OF3*9U6lJc8}8Z^z1xHn*;pAEV9>}SSbv5`FU#m%PasEI^7yTc`5^BNG<_PIzDHcUHmOZkItU2FqR-hak@y)! z_ssfX_~%&AemF9|fDb(mnAqRaR1I7ni$>wjl8cAMkq>+(BG|_wn#M$$ z4DmzTO{pgK?{pq!-cDhl~&}&?(C<%xt)xm$<$ad#!LR zSVHJ=Cyut6USS!wq_=T#n0}c3aCPzB8|3BJ*skrT3n_BN1$r06{_)V=TaQ{$61`Fj z1eZt;Lil$b^-}_$uME!uT2##qDD_w+1uL{_QxszjTeUJXFx4&lcoX8Ix;27rL2X$RHLejls)J_Y@5@vUEXLUC2`5M{4ZED903af;hKv zO}+Q9o}!#>X~#@-wU-BI>h>KmZqTK_#}1-CrTYwBE)evX^>U+kaN$ezl6yr*e06{x zr;;T>i>oy8os9FzQi{utn`xrDB@8}rvybmg_mjR~(EU;(kHk|>X<#dK*((R?>~6qs zxBV)1K4kYK9~l2Iq*TrSPdNI=!=*0U9>fleiv}Q;vi?VL@dq#eDy$_Z$V!7TA%;*i zy0zaGG^)V{JlxOu;iED55~0%2-s0B_%V?rZk`Hbk^b%~vBAa8-xt#RkC%8*&c#i&LcwF<(%ia>t(e=+yOv#wwXf;(K~ofp59jh@#+Vz?dyq%%L`Jhf zoJo-f7NFS&RDX&VspA;sL(?SGw;$#3%*wmv?~%M5qxWkLr zT-7!$rmSl1=YY7%0SJoYXlA3K!RwM-X3R>+0`js4dGlBPg428ux{bZwoe|J!pg*#jq-0e=4z zz-PhzA3ukG$+xrRne6%m5Z6fHW3tJo{X!Cnib`+9Q1%G~TDw)-2%C44oN3Dq8`lZjFcpRFwDv*dDFc0x9Dw2m)T)zNCA zAa&L4T@#rL#vu3ls1iceFB$2EPMZo_u08{bS?t>hlPu$W!Md_Ly^NL!$6&vTxoE{H z=aF|$9&ca!>z%wNPg7o!N*9dZU80UfGn#x8MtGkH9ys-40vFD{8Giy5Llh?k%^`$- z<*Y%90+X6P+W-8oK!z$*I)w=g)(2qW@}DWit}d1~41zB9wwA_9re>y2e?}JnLjN+B z&Mtx`h7K;KPJa#P%0ydh6hXw{kIYbVcV2DT%tu6mRjWkG92F4@VM0nFqK3htu1%fA zlaz7YWt+k~mM0-Wn#Vqbtx#n1i-b4}0no4Y_1xSyACnX7@6T_$6n=CnwzOM0!L;YA z9)4`~6^AwP{lX!tRRuY>8xape;WH?*MUR~QY9~S8w$25{d+zdQa46dr?2u2{&G$|j zHA3eQTJb4+FP-fCz1ll}5+(Mef3gZm54NfsfN+MRW>Qlc;36gI=R* z#SaIPR26a}WMh4$eE~qyG5l`zMSb$Wr2Gb2l8pFO{i=$`S=bp3gB5l&;p_V8wK5$l zn^MM5_V<{$3;J}njJ5k$FlnX9`MItcz~Go28xpj~QTt0a%C=>~)L0G86y`7buY?hK ztk}BxzJ+dc$<&_TmsVFl%-G4Pt=yiq9OW~|#K~4eX9YZWqFJ4nALYNxN2dge@;Jo_ z^M%SniYDQzD46|fU(1_&$kg>(V}v_h?x-&w1t-3}W9sat<(2gFmHY{%87W8gOX8<5 z68u?p+z(-P(Z#B-kmbDZA@dkqMYSR)$eM9V5Y|bZF{WI}2^KnoY=j$Rzk^HLldrOQ z$*bq8Fo!YE-{Y(ox`&C1(j{54#Vwi0 z%4`VG$35L*>`G2ZxLga18IIK>my@qFJ5n^c|NEU<;D~|7Gw^l22S(z5MyY>^#6S4? zr)~zeC`_G%?QI=^zXF>Te~Un6-9Nb}Z#|tZRl5=&YK31eaXX!3@)9z#G8sGj!sosh zH*U?425u8BvRBxTForIJ+uq01Smq5)_T;4NJu{YvjaCBl^BnG*m+9E=AomIk{X@^V z5x*#Rq1kP1k`?=uai(o}nrkN&RxrY6AOYah{Dze5rm-v&&7ytW1%j#NyEUs6(?;52 zh99IVeWxtuir*uES4!PTAq8no*A9^uAme5708g!v`?TkbhDDu7%1kS79B;^b(3U*YN*um< zXJjM@cZZp1ICx_(V}eV#l2Y7anX-)YB?VBvF|X7eOy@Pij(I*S%@9YfB{?-qPdF(t zJ>TX3m8?HNxGssS+(D9S3A!cLb8bQ*70sQpU7$_r13uD_BUzo&C%tD`!jZk&nFZIF z&WI{ny+$TQ)l+ye5by$Kn(5Q5_7S{8Ur93|1FCKh(r#>kfl!+;q+5|-I{QFbS+V0- zw)77A548J3&pQM6F~-0c%K##t=zl~D|9gx{oBpj4R-~va4GIjdf)n!;vnM1I1$nC( zp=wd26vS}w;EUbUn&^sl#u%lKvRo*yBgor={PuDx5#CWomWMU(^K|F*>FNgrkkDUa zeSKmOjyAwWgLzp(!9*nItp|M)lM259k3p;W54!DliF`&9_%!Op992Ll#ux zO$RYvHE%Vn>|^!qsFRzW39%+s2U5<*i80sfu*1o=MdHPcm}N@#uPkc!?3mVqaCrrD z_Q!!WRH3Y8oTTwaUv%eagblZM+xX-97_%5iyb1!to%)D&@5B(=ZyV7uksBiO%%ATu z2Q5vGCXlUAVrH{#yZqT6^pU({zRMUSh2<+G&yE!^{%jxt zkY+H1@lNh1C^|7DjLJf@V1?X;slNVOhhX2}TDl7O^iF{vssGETsNiJpW@++wrm~Ic zgaKtj3^KpFogb4!JZ)q$us%kB$`6o7be4|Fg05)oH?P0^_N~56RJ^}z*NvS zy~%44By`cZMzL!`O~vnIxZVRB>P+U|OrfB!QGGtj`7G}0U1Fjxt4HpwZU6PAhv4gyjE00H6spM5K;KuZ4`V5Ixl3~GFU=R0hxx0_Q z*L?bFcZxI)G5;{=-qg(PV5;-M{lfly;{E`1( z@}~(yz20>~^f*8+QlwD>>Hzb3_<=5XDWR4Ff7ruimqh{$pTZ@fpW6WTmBKASgc!=C z6o~B%8s?{4s7Re&YGG?5JFDmIy|vTV$G*p%HBe!7AKBFzV$bOY;>0O0HD|VI#{z(? zB#W)J-o`!vp$sN^(AAtb!7Zy{&~7fx~S`jIR1BBR+#v3qte2EK;brF;UZCk}^g&Pa8&gS(=3twk~2`B6q=MQiaR zz1(wWRJw7C7p{AXg~0u)x{S7SbApcZ-9*%`9FC=u54TQ8dm)|B){-nQGkrUF*O;Z+ z;civAttc!v?WCMIe6ARz5#STAu~tZpWS3rrE|dS^-a^#zK?m3*AX^oVxglv{a58Jy zA%CJU4T)+>vcvrmy?-K7vY2o_57pN6;U{p~t`$81+MP663GK^ph#s!&_eHrdV}nO| z7*|Jb@k6F~dQfqt+9x|@RP?|&<`FJ|{*n}<4p}BS{1t8$Ru(}9&T~I+#p|`y5@ZFn1VaqlnCXWdghc8b zWttnjBMdk*ociZ2%`tn z>{W!2vI)2Pq>#2c(iQGd@gYtAIplZhc9G&xF!CxzkF~x2AbAy+U^x9sy2zw*%pnjQYK;eR7_V=fZ5;j(2A{E@E1iZ zNi5$TJlB7g@#7}`nBeJIM#C@B`>DlGfh^Lm{?Z5 zm8TuSmZqEUYlfkMO`mupOgWqu`?xJKCKU!HB0HCZN!iG@Meu7EuorHBo7Ja6HjrNl zgYm$tF+_7)cv?h3QLsdi?fF~yR#p7Q_jjq>tPFoNz2bC9HNn~^Z*oz+A~ha)qTm;Y z95E|FsA?jauP6|V639Zm>X(wqKOPiPiOIT_c^{R9xl7~$u|BaO1bIH<<9ww}!CnRd zs4{aWE>dOqv^K+tA)h$0dnwbciNm4jr&yX9id2|Qt4B$t9-apus7T+*Tf#!<<7Q>^hHizkxdY=OR`C7Zcr=R_hgVc zYQxaH1}?zh3$WB3qX}J=sPi!sb6q-Q{Y2AJ9Pl_Op~!lS&awj=9knuZtJNOgg?+!QRllb)g$NebR zlQ0o2vpCm&G!Glz2`dpIjESNoX5Iw!ZZE7%*S}^{6pZ!=X~1lX7nrgCAB!DIh9;IC zDo&<<7dwdrxz&zCFJ`e)co|CEsU1lX;Ct8e558g&ou^$i$kiH^_U3BX=E&Iz z*{(PhYWF2`>7}8&n%h4Wa9SkZ)QK07J(A?yKCYBR3ewZY8}t~!chI0vd_$z*k+*h%JkQS zqf<>+8HWRv7lt6xmdugTKZsSI?$d4|rUd_7#tbqFG6lpBrXrTFDAtDdZHo!IbYO23 zZx|-zd3gxgJcpr$2xl@MfHp#RS~klVw=w$SO#5HQ)G`hknBwCde3vPzigK=cT|p z>9PP0#8%U{VHPNpGWx1Vf8?n&70x8G(VY?;4q8_||R&iHj0IGlQ8$Sl_<~H_lLi)zXd66Sv8#_CSl;!Z3 z*26h(f8ZV~KuJUT{|v7q$!v8_!> zO{E-j$SG8EO*=k6s6a}z%^ShXJ?q6OvDYdh7dUPx`7IZwI$zFR*h)#L891Z-d#qvx zRQ-sHPuTqh+N;EBrg916Zpy5__!rPUH4W|~L4q-ArLZ{=vsc{>GX4>O^7QIlb9m$t zKGn3)7<_K40brQ9p#^Obxo}}UgHw9MOC8<$EWt>+McqhncH<*s`-6&($x@&a3x_-) z$F>mDcWAjO+sq?)g8fUsnJ+Ab{`R~X>#9Re#K4E($Ty{rYTk~1NRLqCjcp00_M~jG zPb9T|=^6qUidh?Ly2|c*KJ}2zCm?o9=Uyu~nf(^?2adeg@LLd5iEI*SU>4u%9K93Y z^^#|A{>?VZNjgtR4J?hPfMtZjfAuy0TUDWAYmY35=!-5_wM7-Cb>gk6lACP(X7w{I z4!d?9+fw4S1^1+O((#A4_rN>N+f14Tu>WVD_Q(=d?-$ZFBkw+XHZe89SI<(NNgeNs2`P^vhiUItU?`a_MBSDFyX`NEUVfKDC*>`25tIN8k&*gU*DGm% zyn@#4`oT9_Yicj+TW=F91r8I+JMzGiVn}X=Fs;;HD`a-zS~}q?F0A{YmEBH1(tWqR ztK9Kq)|b*5W;OHU-@mu|`Q4A7EHU|Em0$;53r9>F*+-@FO}Cngo$5y2 z3kjUEDV@6A%4UZ;TZ# zdXA)wzejdlZJ5TE{JM`=(d88;^F~vrFOejgzKDwj+U=08Wz`U&d^2^08Pg zqaYCVltq^?@DE?NS(4oP?>!du8uueElS&R?wHJ-F*{aWA_cHL8OcI+K7En9I$)&bV ziG?c!C;_}=+7Yd}wWJ;3U3+oG)q7fNntM5whqk6N-E93jL5hXLN8kwOq}tYY$YP_c z`RNHkOMs*_l=28AibPw}kbYA-eLXL7T2Z+d>Im&=bI*D_QFC%>$Z3Z+2Ib-b{VLlc z%`|2}cm$3|N?I-3)+GTb-t4E@a2e@w$FJIpX2E6cswm1WruhV+vVfhYaPAiCT!S5a zGnutvFfdURgsTyOQ4xlFoHRD3(7Nzp38ttI@1{(TfTVEGPM$fGj}wa~d(!^?BO`;b zRqYl?j{2=(j46t$mrt!8hl-(^bxUC zjP?OpZL=x|3SHOATtPWNXtVCRP_{SP6*1!6T&DJiz9JLg89jAA>1gNC9Tg2;J~=fq z!3xkXao|p5$G~mara9W)3nr+{si1RO>zy~D-Y3)dDE6gLzmjVRh|OrtB?!qV>&%C>VZnDjVS_I;KC zR+8qF^t@(qaL^EO{X_{daW5cR-_P&Ah)g!>wdO&pGElR|wPk$%sN*STJmMu$k`tf8-wH=9PIp>f>*(MU+!2*rMmj&nOrna+5+q#O$qQ-T8L_5~+N8xPX zjyBmRpKIL)t5_W?-!2M60%7V3boil)uJs}|K^GB)Un)q`%86zNZ&V zvH@J=|hZNQiiBM zEt43HwdyUgJDI|&nM{kf_Qgh@ zHQQF)R#Jc5thA0_>ntND<4QFnquX%g0B_&Is0<_FbB>PjQ6(Zwzr&=W6WM8n^f%Rt zb`z{p&nAbZpo=u$rC-(^W*U+TqP{7(Jnm^W=FYKmx{al z^AXa`d1a)irnTB;2^M!jE2Zs>jq`j5e^@ih(WJKL3XB>Zo%4M6)3C4#9nX$OR7S9A z3}8w_W4mM*dN?-CAnoO2hcm}00Qi>7)k*_fVigBl_bfb8a$x;_^|9V|3}Ww@hh8uT zxWi8tA&)4lpZk2%P|<@^YHYC-#n9M|Yxtd%m_ouclMb#uItYX-UL=Q$P z(NE%~F)p#VjptYhgXDn==z>`mR1)9vPlQFYlT;?3hw^7YcU=Y%e!BNjc~Roc$Z{dy z@r|3vpy#lOpi zS4d|c|AnbU8yPu&2&`XPg2q*134p4_IU82+BBqiki5achhRm+fW#>cuA zSi9dAd3iX@ZOft#ZqS-3+yd#`Lg^<;2PCzH3>yK~>7sLtv#vgQ<$19sa@}k0<(rtJ zmCcV|#V=p(btC+%3lJ9)Da95QWwv=5=@AbocQzH8a|)^($pEkamL~S=%7F0$DTfd^ z%l%(1Us(Q5Il92|1(jDhj;=*ZMEk`3Px*4U3;Z_SGng7bVW$=R+9(dPX6fXB0BHh`)KLH=?@52D#QS7%D=kU%|Y$;~zC9 zkEz$>!+Q%_8L05s#=xUb!_O1~VniachqaMPP_%+Uj{dd!iK3koy0i8P-nOv>uGFMs zh>-fYH%C>ZaXiiznY~{}n)-?wSi2lw>Pf^aNx$%%I+2`tAy2I2V`-IUSH5ON=zWoL zy?p1;_2O|IXQ44R^r(PSR4d!9BCQ2f1=H_7`=#4l*Y`o{S;5lB(9w z?f9Q_m$YgOMMT239PRMvU^siocokB3Ka~zv{JfJyNX+x-Xuajoz*pwl@S@a|-dOiiA*NP@It@Nwl0ZTA5(nkuI_k=kGCs^m2j+@&X4GaZBP9U4pwlr|Sci@tx7!CiN=Ex~L;G zinO6u6x{6H|8$}FPfa6l!sv(!6i#n}+rIv*k{atj80fD@?NTypI*H)Hg)HXc(6t!h z4i*oLgoI=XdNBou_0{X`?Lb(Xpa^&)Finh~ZJ3FAz*;n%{ zi|0AKFWDD5_Y&XU?^Z8BhHB6SA^9TmQ3%8xz&Y|;!nK*!hJrREM47_5nPgN`-Hls9 zE#Dpo1hh`3MH~t06(_a@lTeu<@P`~e#oiKI8*KD|3U_Q}B-gp9bk((4*-CxSBWWjR z7pcpqpQyx&)PZBp5z^P980rK$l}mr-x=>_*Nn@oK#B1rTsLshF7tMoz7g?OA0;VIB;Et(kuS~L$c9c2q&`v zS6Vin0POBFzK)TF6belLQ^o#Bu#~5$SESJ(xuo|ZTW}{Sk94)LVd8y;VO|XFv)E{F zm6oyg$qU4ZrKN^;1k#3=D6nf*is=ObAx}dYQXoV39Cs_a(-%y=x!!u!y=9JZAVYX_wiH zvuYb!9DfOp*2yP?4D7qJ%XYp$!djnV!R%o)k3Z@L9Y#5Vg)cm;klq{e4^B$gtcLQc zs>&y+_SDRS@_m<-k|JDYq`wnq-&X#V_-18!+jL&6`Tz0uR>5(0*|MNyF*7qWGg@dd zGg{2dEQ?Ca%oZ~_EVeY$VVot~Hz^PrHb>O~Q?znyF4%FG4EINNYM z@_Ol^%hj*=8+WTH`^iGRxC;^&3Qcsn7nNxyPLdzY8!)8DewmlP%cG6j!TdN=ejNWD zEKJa=*^-(w0vfO1lrzRJ!7-46xic2Y0>3mKer}}@PtW3&B73MJ<$R$p)D<~$uQDJw@bKgAj)f{klnQXVEqhQB^$h=#2>+2@tW?2) zmeCkU;;p+km^FvJoCHAk2BYmvAhn!V;AE_Au%qSAE#-hAQN&c62h^KuLK%ehq?{bq(fR=QTH z;kFeVPQix1NvUPl03>KWUb)n5AW@9Gk>Gdf(Xc)*sxn)p3(|912TE$dI-%1dTCNI- zz->a_&rn0CYkVz*_dXW2w_F~{kaL~Ph+SvEFN zXRo`wFJ?K}I}q~=CpZ;%L>=47p6Op{nRTfJ zxI(2mtoDj?BaV4|Tb-!3Xp#$B%^%JspcFkcxjMnfktgiWtjt37BfhWZmK~9FwgT-T z!_j^SA#nc2QfBhfZdufIp`EgpKRZl2$(U)jfa;VSK|?N-R4)CSLBbygV@{vMF7?rq z%(9vwfMYo}&e~7n6EFO(bWZz6x*LNo#TE-cK{w!BEHzfj?ic(Z#s;|%Sf}W5boDdZ zl0;zV%>($s5x&VSx``vCr?u1mI=f%V2Ej)5jCZTTLcS!?PchwO6A0O_*3$o7rS%sy zR)a@WJ_4IFkN;_C;WTj=rG?WY&7w6Qto9#8Q*yXOl0 zxpW6PRzfm{ClYt~g4LJSH;m#Fs8G-v2ElQo1s*vfcI#Qufj&r~s~$^-+pYM!0fm0w z3Y_klRRpctazxw_f0<)rCeA!e4Zq(WS_kvPYH{F7E6jF7G1ROxH5|lJgU$u40eYs&%Y7#Z>mO&^3n|<=VtN$zO3iiYJiAl+gjk zp7WU2e#WA$6y1jL=Iqzl8??^Lsvpg4h4p5d=VX!3{1n_T z)~bE-A&w;1jb1&3Cl}fBPhSG0o8*|9_`-Q^ZbJg3+h~Bjs{=MJwA9bSg7TECKiBS3 z5^_}+6-kJ4h2Fc{;6#N!R_9!lr4MNb0f75+-I8-BJM2eXw4CH z`U^{{duj=n>fS=3CNeJHzCW^N`SkLiYYs?d#K_I|=g%gsd(M-M6$rr45{cuTKDhKf zU4RCuAM2l^&Y5kL%o#yttLtSKu$^WCfw9SNF#l~7Va=WP!&&TZ!n*hfS1!`9#2+J5 zzQ+D9U|g$z{Sz|Ce2TMCoXV*NbsbTdaW*ExVXl&{Zq+~+a>kmfdIqo-fjkU?UB~vV z00Fx%@%qNJqhdnP3oby_@mgZcq6Pzo*LX&N>zP^!`H*Z*$@7Lz|3Vi-o~ZCE$G`w9 zPXL~ke^Aj0YmE?)Oz=qo;vJhq2AhO|Y<8Yz#DzkYD{n}HU3@FpM0D?gx&RoFM*SK1 z8MH)q!U_s_LN+7V=IYqgvE=aa52Xk}kL%HZl& zAc~bAaRz<5B@bnKeMSoh?ETA;jes-Pn8W`fVa*D6FjsVIUKQ#ZaWK~4v))OF&a5_MApz}?!5Gv z9Uu^&rAF63fLo3%Or;hF(S||khvPxn(|8$j5;Xfa@PlHV;e*f5AiNM4 zUVwyGkF3Rs$QFut8a1I-%|#MTNaBkh?g!NfSY`Sf_$97w($>(NEG7cMkDx*-vO|Et0=C$2roT)KQ)#h%%&An5;`4aj- zoogNz#Tc4*K)Ch3KNknKYMkC_h!XzDEMMMmynVsd&j2|n4Tr^EQ*Oiv4|yKx8ua8; z$Ob8fY(h%WQz+VqGoVr8A|-K_UmN~D(@dykg690^|g(3Rbu!LlEG z_1k|Rc}*~%@9^Hn?4I5rY>>Bmi8#TT9aZgeg5vJz@!Gq*JLy#S|P z5Ww#!?$j|5DaF#J`@-v>fsDzuLp^Kr{LOXnV-{ z-!SkmAGseSv`hknTwakPPYSICGzX~mEkvOaHM=cwla$i=c`Z&tRi@TPw)oAn#68k; za?U)dhrGbY4wZkB7ZpqZG{Z`w@zm(lM0WbI=hY^k`{Q(v-y6X%@-f5vy-VmRW7;U; zPPE<*52lDGM?D2u3FaWA{In_rd$C)Rqx*d_Fv~7K!N5$-Fawkp(nezAoo2gh>=9f| zqc99Tx>D$}yWX{oE*c-e@6}MBppq}9d}UFngc{XclgLx+6n~q89k9rlS#gGrE7R&7 z>FfJoL0g8OYOVRy^(Cueeg>WwflXWAupGpM)Ne?aAGA|QXxb?i(raip*^Z(0l{gmd zjV%z=HT7i+Z5%dpsf?f`9-XP0t`p@j*G_;yvXK?t%mF85mwJ!nHnCWjayoX<3gJey zn`x5^a!>a@0V#+Imi0I~YgQ@mVJ)a0E+Khja@6qV4bAA|!lr5-5Zz~SMO5d&N!e~r z)v&8^D6lnb3!w#2jr4Y#)mJ_E_NlW{aHu5REP+v^3>F)uMZ|WCVIs?l&3%4cocZf3 zvu2Ib+4*)1ET4bM_MjUwT%OF#T!EEuoQWFJuy&LLPuvkTYbSohcLIlInzc;|qD*04 z%Hu`%?KBL-54Kv`sO1-!at98}19Yu6M$kl=t)Uf=ca*TL_6CCk5cfFG0|O<`6TiUF zz`Wku!hw63!fWF4lXwJ=D7%NaAX~%L&=F=l5T4|c?o&qpT-Apwk)QClux=|b9NfGa zwQlkv!0Wkzwb*|x`_zkE-)|R6!`r~ws@aBLmZ$o-q00+Ip@S)N9PEXNi~4%KfIoFx zj?c?OUUFQTyxSLW*LWUBY1)x6)1O~o-CWwxzrZPSZr6O#&o%g?m)f~UorW44 zsq}O7?5Fzs@M(4iGg8!XVC@pL?}Jm_mlX{9%9OG>;;>WNL_;KmxiMpn5Nldm}F<$Ve1w_Hf9vSomu z7a~6H_lQB4mx>zvK8y^{XfKQm>jF1+mPc^yW@L_}4+3v^~fne;MpKNt-#z=bY zM1HCv9@#mYxDjf|W~f0EgUqY4!0s?=2f=FFrhcI8a^@i#n&Uxbt)>i440}s7c-MSF zxu;?64@|iB*RdOTvu4Kg3C8weH-~0MhWGJpe{wfuZ-DbUN7~t)^ST;i)twr4;aun_ z`m5Ftl;!}OM*+K92KsuUit;zfVQ2^|c#R4xIEj0#v)Ao>|1g(n+=o_5s_u)oA0JO@f`1^p((Nv4_>k1ughC>onTxAx5xd?bTm2XRHG z9!+%p`floR&V*+c+wsB`-NlftFerzRe{hHl1nd&LD3#|itGfig64@IYd7Zz%H7@2= z%TQcG29*{7Tfd5&kxw-r5YGEUBw?sPMTxF6cj$0yujM$Q`Ywm@ zjW?ydgUm+3oqxfH-gs~rLigU0usfEAzu2o#1^{Ilqwe#*VngJ+4gG}ULObzsVSm5-5|UMIG{=d z(Iat+@B1fS{WbL6Mu~A;5Y5Ot%*Z?V-O$Mpm*vmcCY@G+1b2s2la#+yB9;{Ohs=KU z#<%}Q|I!5U2l1_0s=Az$j(wVDsNZj2fHHXlm$xHho+&O#<$ex(mN( zQ^?88e<3YuipUcpwv9`<%ad%$l&PoKWXJ@16mJU!d4RTw6Zn33Ho;wZjB>UZ1>XM1 zg4lP8n4rCDyE#rpNatvQJIjTAWEtr>dejXF4=BXtDU zZF8UUnVY5|7z=){(u0?*Kv4mA3>u3GGd2ZhAxVY4eEB*bE+84Gp8e)X8PUXDVKQaO zU9+nfkf!CPXXz~}FAwWtDr?S~?w;kNlp&T-Y^(vnuQ8@P$KkZJSXkA*5T*~hNsn!3 zIdd}+H~|yZ`0FgoIE9LblI*fm1KHvRR=uoArynBVvJ4{G(p$SdXChl!TB7u;0FPSX zP@}C3mm0e?h1T3nHwbvdxRIF}2W75N;R6o1b_Y)dKybXd(+`wNU!mW&;7eXo54tsL z3Pb2v;{F@~%TT1)k}3W?bqsEG(N=|lWSjc0YBHH^VLT!VHZ~50(i~Y{j7029xnuzz z@*1x%Z~L~>q`$7DhUIhO*b2VY(JSDl$Z+(bS~Qjw)T1>oTto)w>K9`l0#2n;r?#@v znTw-MW@~>-g&>X7nObIAaaA^tC&JPe*>Xr5EY_N*r9ws1YzyErT4AGw!RvUg1MSch zUK#_f_T=m93PE_>Uh#5nJ|Y=}hUV$CY(q`y?B=E(G3zZxxDk>rD>NO&{6=NOE4M%^ zfvOA6HdwQki*!mhQIdY|=qWREbpZs^xkX4B8C2Om>K!kqab!%Dhp+^w_sLfROiC9U zl@U{P4%xHX-I+GtVh8ciNWuVt>92SM6dt@|C$r29ar)}4x>;vN2TQb7auPcM;OAMan1lDQA^s{zY4E}mOyvuJBJ}vi2DCwLLRVkDF z3icQk!?3)uCDD+sAUtCH=n5@G;7ecI3H|0UXNnh(#`TRJV@lRo72@)eIXq8I$Mv@i z)yoU73vQ_*s!bs0rc9X#IQa{VsBBdR1GB4chj|v!lfOm0wTbThl2$=IH!0)q#?D&b zJH1ztz0%WHFC`f4TRGwB&l#73apAveg*a?dr<-eRq3cH1(_UWC=XvxGp>eyx?+ll? zLS{fpE==*DH_^$wlygZp_E4V?4#*5qW5N5&{O1x9$KSg|;m#MfIGGRWvyzFwYQp{m zHyxK31Y!7{2OhNe2_GSHZnVGDdh4ftH9oA_zsF_{#;(7gmwMepf81sFdKOOX!+Fd- z{NQKY6Uaeg+;Ju(?>_jg5%&z~=`%dvcg;`r9-e=F?0dh#-P4euyN4W~d9t?$clP>a za{z4N8RxNHgW>Ii;@q*Po$$@WR+Nm;pa!t~DJ;_OcMAeK`^nYkziR+eqeA)vOfIy| zNnmk@XF%N&#yMxQ1v4U%Sq8mdtSKx^Mzji%`JU7Jpz=|UV7(?Um|LYb0_ll%T%@*hrM)pftBGdrxYk_|L zVzsDTOXU+1X8~51r`;4h5W9Z9X6L-w-z7l$_1B*QqOfqvPZ0kk$L1=4yP(AtV@m@U zAJ?=qTLa(UBWfV%7+F0GLX9vH33)w|#BpN@lJM!dsrfXG(kcLBu}zp`3kx|j-x{~? zn%`TiLP{Up!2r5)GN@Ds8 z=E92L$+#LB3jM*4l$rHTj5xD;!dL#4UG24}cvjn>A!PEQu2xy$OkQbI|0ksE0}oaD zSVzm?BgzG_vPR}8D;txY#cy8qj+ylZt>GNA-p=K-YvP5LZA7&8G8fl3#F#a03)bt= zi>~cB&v_=C+5)?o{ig&5iWZ*;Wb5$8myvRo#{B;BCbXF85$2*V!q`%ao;0#tHpe&M z$@q8F2M!P#&S^g+My0FGBE~W2uPzUmabSnpL^DrJtnlM3xoGs^+2W@c%}Qw&XW8c2 zbu)+F)^0p1lcxA_jDjY9&ff603RkvUlKLgWy^^;k{f(3iwT4yPuX3{(NnSvoRwzw zNS%Wj-mRb4ml_I&P1q~fV5NOEImR#BC z*?i7Z0_Im&pP#??v3?w<5s7?>Wk~bL&(uP5#)LPKJ&@%$O=En^nNLynDBrt;EgLxE z>ps1zk|v?8%BB>p-}4kn$>fI?`vn3J8-37i8mVR0aD7kNy!rU1!u?rXo6VR(`r}s$ z?)amNMS2Fs74`QkEH-QSZ|RiS-^#10Qr4>wNHku)C7KPDclT#n>$bmkvssohq^`6~ zi=Vh9t(b?&{E_g8H(WU{nz-3Z(8f`wg1EfK55IdWE^gGOV^pRc9M4&47p!-r`9h&5 z;kt^?3aDa}g+zQx@p)0dfT~f|b1bvUrQMR(VL3Q1U-wB}m%HM)xWi0!y={}z5od9x zS5y+Q(x4t~#k0-gwk7IU+_d%3ZK7y9(TDE2{|ZLEaVLTo~*sX6_v%^Hl+EBBDs^hJXMOR__C_YAl+SB?RicEF& zemYzIwDlc%4oU6+b3(h+tn&ub{@m}3Sx#Ynn}^7x-9yulBChOvU)s;UL8NyXqVwAY zi5Pt}`)XRaiJ9T?;7^?U&Ahw3N8HUSgCC5<@sk8bJ9yDXt@2eEQ)Va2;uXvh zcqGz5oibHaCi{}6(gh}RehKdh5e&n(uJlPc0@6n&pB&Crl6Tq0N;rGBore=nN(04koNQz{F*9F~ujnj7 z2t@RSlXN6{_3hwb*V^IsU=jO{#3OA|M1V=9!zBFhyYWKHwWd}O>q~M}mW(IO z1ts?7md1{AOAjV?f^^7I8O3%;=8Hc1({Mt>HZ{QXSiHqbU4CP&^vY^2OMz;P2mFk< z*zq<16~T6(n-87>DtHbvYw;Pn%@>_%cz*75X?PUh;h%=MQ*pn96vQuDM@5ZIzNt>u zT@;DgNdL4<;{|t%#Vr<8ADKLPEaXir$~h@5DqE#li4E2)t$^+bVkwCh&+QwS%$A3aq5NNq^gzh7;^{GVTTis9`R=4*(lo#v4|{t zZEo=Q3-Xth82JkfPA#ci=mLK&t6YeHUmNfSu6v|j)q0I8qdev+zM8%GOEiiE?CjH2 z(D~||x>kk-v>c-6lx)lCSqO0n%y#ukWUpbJN~nQ()yC$W;wK153AoRQb^XfO!eGCz z&Ubu0fX(m&JO}XNIYwMCS_Oo%-=chkc}1n3^tidBydpy#%v)xWjQV-SD4xe;Ly%u& zL1l_IEJRfI^J>iK0v>T@1*xK$$g9@%)C$D~aKB~`L)@8W<1sju4a`70&o|~^ByHsq z%jakh#gvF|A-0`WpvEX4P8{{e#+X zBo;J|t0h>ssN00tq=cwm8|?u1K@TZd>^*MVDlkfUJ6dSO*>8jhG_KBeJ{dOn;!gCl z5~lAI7b*DSQS`GM_@`F|G|m%jZhgeksXncj_j^*040RFJ@8Z~eo3Ujv9%)tOwf7`{ zt9*w(%5kMf=`lef@r#P^J{<23{31Q&$2S^Z4s)Aw{320h#AliU4)Y6jo-tu5o`aH! z#VnTB@>?tBWwxC8K0HsH>~2(g!DM)il0oBp`x8evCSTHI4gQO#*Kuid9i1D(tta&T z93wV5!DQh|`zbUEr^#obF%GZ1t=`ajHOHtm&|r%L=or)k;*B1}8r!F}E`7X*HT9O4 zfAgS~>OK=U08PdHz~P73|J&>Re>0f={Zda>l~Vvlcx7XNLwr@b)d{DPjFP*j1PowD zM^j?65X$n?o0eLSRok_Ie^?T}gML!)gNW3wP={VV%9(F@Hvm;lzb^?u9!XMzC&_In z3^Rom$ih>3MJlbBvVrVb{qVSY-eaRc(xHt!-qjqD1 zUl<@Qm7C6o)rcs{sMtAG6KR*p=-}MpF?HEnHsEe#Pv5*Z#OFcDpD?jj zAHHT#mD{|$loxyP^JVtz(e)`En#T}$vGvNwe7taL(ZNjcrc$fH+boBW zT|Gw!(`nVwdsT~U+358=CZx(227pU4K74`eFxt6N3x!Eyi|$?2qHku0jxO(67Wcd~ z8esJ+Veu1v#il@NujT_kNd+U)7hw-`gDT8dw!~j#TS}qu3R5%){Rg9;NRNJ&$ncfv z(hY`H^pDrnLo@rGfBx*(R~?z^Mi3{(5IjQLB&6H2$p$BQ_tJfLTOJUeOvNJ&+lVtP z)7(CM+i+=HW~t!QwToCrDT1;7Yy|0|Oz6pDg;yyt25@D^4EIaU6?K-fr^J%rRp}Xq zE{(173KTDfSCGV96cb75Ea1ETei6)Pq;&%0WyHZA>SU!LFa?84Te^+Qa~7@v>7W12 zIa%w|O!M|uGQex^#IG6qCthZ^`Z_xe^tJvZ+z5UevWV&KUS(wFPr#wmnV@Cr7dgCo z6N!_1RM7*_Z_huiHWc|hb>(5Q|!^8d668A4ht3x8i-U5KsZPZsKxEoMi+SY0KsyQn3z-A81zEN*+4TA4XZ@X6!9S)NI~WyxfAih z?R5ixB73F}ghH*ZOarJNX5ldSgGh8d`q(oA z;RG<`v4VWabrFXO-k}X@tYjo1s(Izs*kiVQ+sTEwcRjwFWmz5W3K1rOml*PPb?B6^&>a zNJMySxDm_*Sr&J*Nyc(h>LW`O6wVsU8}JAnYWTuxtj5Gk|q$Bj4nx~P5j@@v9dQiNT4gPPs)+hJOdTrRr;WaGw= zTG~&dS&~;If^Ycu?cs3Z`{J*rm%SC(g)h{M@%Utu#`g)B*ubD4_75sALfL72vU|L~ zo;c3naq{U|=nb*7>J{V^$B^!Cx=ft_$6x7kJFb0Mg>AA0)*aFX2HyR~-VuUObX&hT z-J-TAU4SY{k~nX~&DL}El1OhCqesfEe1jac;q!q7_7T#s77KLH@%bK7{@;ABF~~1% zQ!B^Mhj^%o=d!HDEY74XtNre9yfVCJGK31@$l`@{xYHLXuODKuxXKZW;YNhTFR|54E?+x`_BBgi$mtj|6!4Re+$!d+@lBNCi|j!g^U+hJG2v+8zkhjw1_ zkViBV8!^>rQd-c-e3jGhsgHQ<=hx*A@(Txj-vK-HOVCKeF>7h6U8v6hM&f$A6UR<{ zBopBptvc9)n}1lj4g+wOK;8kcb6!py+2K~LT&_+zHIAcPUYa-E7S7x-MrB|jHDgKA z@-vB>pY1v>4wWOpGp=sudLG+h&uXAQQSx{r*GiF7J=kG@eR zj66sOYil}Z7sB?4^07bo)c#)du@L%xXTrND_7H>TlwM!A2VP!_t_Qs-re;xE+NUl+ zW7$zH<^rvgQk(qqoIN_1>I~by@m;cP1Gv$#i3#&b{d@D6s)mR1V6h=8-*zvGG*lDf za+G7NE}dXV&Lh!m;Wm^1$XFn3&_t(e6lf5~jRL838;P_>_6+U-^zgC6mjn=(5@LZ0 zd*rR)Dx59KESMeo-E5F4l&z4i(Lap|p&z5ZHwgdw4gU(qK#B#51e}pUK-B-A%QI(t z8(?Y1BrB@oYUJz!Og}PL`P)0>|E$JTT+Ph>9uxG>I;=}WN8_)}&WJdyaZwRrlB(KF zD*y)-8}R^T3^5v%%5cS6tIz}FZvdREbj4rlRf}udI+wmLTWa554VLq3Eo?P%UuSX) ztu3F@;dd!%>DNNDvevh@x3*Wkb9w&oe_kqpG(D3L>CEB@(a1+0>CI-LOlr+$jSqV( zf;AQ?d?Q7YniaqTm+(iXfe-tZ=qN~Z&WtT4=rW6k+5wMK97l*q8Vm=D-V56YAR}Wi z`}W0ysDO3IB#P}h8+4L!ebRwAgE`bnxj22!vrqOeBiNFBE@cp5xQ@HU+D3(FS6!}= zC*`VvK!#13#l1KniQNit#Llv^i(&1V^RtMuX%<(M-c@nFoDzQ?*P8m;C@#Y?&`?j6 z%|pVgG*-v4NueaYuQXlpfpKweU?nptco?2yQtO9id(U^gXf)aNncAtJjX01k8Lo@X zJeT}!%DH1Hfy85hLzQUou5|Y~c^=)7#{Fz|ZZ++T(YMtA%0QRTC($d6lFr^e5skjl zwN&CGO(xNRjMlg%`Yl^aL@Gf@93MjxWdq0TipPx*xprPb%of%9p(BP3c?YsGTttH3 zs}A>_y!lHfGw}rPhipjv{uSV>6xlFl^WYsol9DDv@n3{cs)|`9rp<4*q zf^_OtQdGn)x~MZD<`veVwAJmUB$Td^ku{q&C`U*bsSf57PEcMWB^;9!)-vIk8ckkwK7!1kcmcx5 zY)$$`T~2jjPyC@$TZq;JhKX(kfF$lL)oXX5bmCWH#-yL_ z3|qa+n_V2J;2_#t@*I_C$`Pp9D|exC!(&JD{N)V;UjnNCRm(57>=DGVaz`dh(Lv{8 z9l(cf2-}USUYYKW4hxigv39H75OkY!*R5e8^nWIMO)7SEG8e}N4~9=F{@LKW!r3N6 zpu=#xZfnPwlbW?Mw={_>i!j5lEXruR@Gf+43@^cx9YPf1R>Osr$~3w(G{~jfDyNt%A?Q}-m0|X7#VUmn z3oGjpqc>SBPso>H*?L%RkOx67fm3=`=xOXx=X=nml{qX5~Ip z3dM6X>(8uwOQ%`r1k2MiGZUJ#I{HlY+o7qDJ_^I?RC>0ia%7XgGGFoS>@(l@{bA3gMMYRMJ+77AE8-oZ`YNtu|BI{JVHJA?5(_8BP-LiFl!2IsibHIXmM2W zSjnG4ez7&o$b5_f(D%lvDC4xX!$f*1Aq?dvb#yU)5-~Wqo*8M)mN+Q4s>WDcj9RTgj?E;Fu#a-Q2aoE zAbekNjH6Y^A32i;lDk$Id(?1@lL2AeNQd?VN7Aj(&~O-Oumt;Wa4-6>$?}!1`agB= zR(Pa)Qg^&bjpT<|aBNw(5@s36VEIMfM4u#2Q*P5DQ8H>D_O7YVMr&JuYpmf_Ru)JE z;=)=zy2Q-WC}ODZ!uUwN2pvD;a;Y=Eg<}KG4&&ar+*CsjEN!NQ-IGf^QFX3Ju@iih z-wEG=|GAR;^|aPn`KaCwYgc4VT%tyJl(pEX>%i%nKoFkTmK^*(rjipLS?j*CN5aH) zp+1$oViUlAv5pPZww18+HvFe0>_GZQD#iCa;K z!VYHsS?aOvWZTAKCRquy;^<%d>O$>SN5L(*wjBR>m(GENEUZh{{Lv`wiJ3Xe`*-g# zRVdI-3538(p!n!NNMHTGgTTL6H(l!MKpheGpKSJ1fQgQDUQr%#vUP@jK5YZz#drwsL{aW~K~&)(lt3BvLkFu`1&W(HX)dy!#_gB@@AsWD|l zNPkG*LmH6L?8XJd03tBw6%&CN$CrXnxJ2nqKeawQ?hLp> zT*QwYl4GlOUc}#1;xHbf3=v~DJPU2bxU>kTfI@37!nsW&(@LEFPSziohRKD_XBi(9 zj(7F5Z2yOoWH_a*T?twapS4x@> zxH#GyLk8`-dd51|0{yP}g)*)W5tj{x*(Tlm1U~w=xB#&MQ*&#WOcNW18VxSzFU6nm z2rR0AhJ-EFd`%WVW+~~;x(t_y(2cvIF_Hw13Nd)U`hn1PZn?m(z5xKzTtfg*4_#W2 zJ=U6N3zIlSjDt$u=){_G#*=fx(gD%9(3lir{)P#SRjgynm3wy7uiDhN5Xa)t$N?`? zpHaDalp->Ua)@)N!iQ?9`x$)BT5#R!cuylX$24u5Sa$1Du`r#torL7=ToBxkN=PYh z2tC-gX^87st{BO~X@;9lX{3o+J(b%7ySNuIX=$=1YdsC`6XB=ys=t(0)uo+cKJ$fz z&9bah4y|^~{K2KGmAn8~0{d~x!U)BUD83H1!gM3Z4(Gg9e}vFfGdcOY-m#Z$JV$S_AvA8% zT`3%eT}zzIo2V#rN3kJ9!xJ8Ug^;A%FZzX6V?Y!f_kgHT-a4wzh+4kkb@h`cFzF27 zGQH^42e`6Pv5iJe6+ zsSM^^-r8wwh67B7EZO1K^&0xHA4n$lf3Ecj>KSC4VuHG|6Us}W5;F$h=qHcFhzj8G zY7F&UJ%~%3ElNL{)2pRz{kn4^Gn^&a)NDdmWaz7%DdGvVrLyqy-S|`T`d-hSQp6Md z7*sy*@aINJ^)1DuTyCY-M^QueII>bHc!G}s(t48ks}(0w^0LdkQlpd^9b5D!QRq=r zqoU4RGR_AUjBKWC9@?@-q-u&tMP(y9Xn~Oo&QX*}d9+y}S>(|gDy(+Jf3oOK?JJ=u z0`Gp+4teUxT#NanKQY5vevgK(;vmQQ5nK4HeuQ1~fS&&&KEo0{>jxJq56m_UI-&d3 z;+!@tQ`PnSD=6l!Xz&fnnWS<~{SPlOP;+-UJBqiyX~<yar6D6e3_HZAE5J&@KdRfebs?jWID!hSM#{fL14KH`pIn(t5s zAKXc@EfxGK(v3^y?o0HYhwALq^+!$r7ww)B^|t`4XEKO)w8eAtz#BO2TRPB>=pUa~ zAhyL8XHpd*8A}q=UKiww`Xhy_5u8v??vPGgSNSH)a~A`Q(iu?h9SG_5D8-2jt9A+D z1N7p(rX#4lSN)-)ji1MWcL-PZs(9C-k|>F?c*_~+6^=De|CduOI$V#I`_Uq zT86)6W~qY*nk%h-jXo@?-LpdTH%o_Zr&K1xEwGPm=tx}ygN};{9qNF6hWghAZd`oF zuOHZ+M+4(<{(~0X`ET9XemqekvK37_bMOnr&4`M#gyrO-)3%18cRy>3a&>izj#m@mvs$#`;pgt~4in2e zX9*`8GW2O&jAOPtrrl-u5}El)pIa=5db0Vv-(87-b<~uwPqZ@Q#0+P$W8q50--Yb61J3BR~X-Q;R^O(^O0PU z(==M~p+7r0yC!;&=Vx(D?OS~@%t02|Q5Z3OvyKS|Su@QDbu>?z^$T`}*DlGiCqlDv2onag5Ap@N5Efn9wH<$cTTl~;lQ->&8^_Fd@H7p!a2&LkB; zWJrJ6S)2g;ynt_D^)qlbcs1k7gWT1XF>sh||!G`z} z!B<*Il3uTwaj)5FcKAB>JNh7+ltK1=ly1Yjw2}?o0UeaPRmwT=Vi@E2TH1*qhSiXi zO0oJ`>b(OMa`q?$c&>(5PQ$P=$CFv!fKljGWM7kP(ld5X0+IJ|j%A!zpI7wfe;dMi zDB6}&0EciKK=F;pf57tmpDu~N*SSTif44}k|HC4Qbp<|BG>{~LD=wl$tA=n-qC`u` zHMO)lrWe#zee%6mGz1)#=oc4>0jHGGS~1f=g8PuU`SjG}@83@?L?HUTlf==(W}XQl z(fQFOTACha`)$z)(X3$DS++%D3-BKJk!d8}13^Yv7uVwo@Z*rJ|JuyiF-bg?{O*`7=CZpcTj1sH-XNT^SO%=~ zk%CJ~5_#$=TNJ7qvYEsA>nP;N>DctxLuu9-4j~NblmDon7;@JtIVuje2U)jX?a<;w z@pS%lnMgd|0~nSmVNLb-#eK~MvxxiD)QtJ7v@115Bp$s-QowFbc z&_12R%uzxt7b`dMdYk0;M|iMo3k_u_w!sCD)EqgMGXzOcrNAYHyFZF6*~BZnoN*r` zPCkRtH2naFOa4neNgeW~%90h_Z_Z-OQ7 z{LZ@<{KH(Du?dK=iC`z!gInCm);c$=r*C(HgmI13a}py7>csTXx5m+f|3)T*$k7pq z0;gg1KwsqlN2K~+;h#$$9CG zM>3F-OQf*P^vt$=26WG*>#nCG+NY1Id@3@TQv@M!QVgn0Yj$`)>URIWTqWyzJ#YC6 zBHN2d8WAhX9b_$hPlh3ayL@Ov8I0FjW}q%D7_Xhqe8fzYzZw{*<8)gVDBkv=h20Xb zR*Nr!bR`)*jj^E?XROGe!*oW;Wfyq~E6U!{OLS|pI2(PCPiAwa=@vnfHXljpUfygF z)}koo%^H+BXfjpj+K`q((jZ?_s9}@{tBxa7hbgDBf)k`c8)!6X!ePy()mWKN!d^j~ zkYQ@2wvJi6zapZVkbL&q-km&g5$RlQkj!bUGUuz!EW=R`(bPeeAEhnT>`$fL8tR~B+@r&Ia`@i6OxxY-PTM_<1ltdkG8ndEU3^Z_u+l6mtsBVFG~`0?1RG1h+~eVK>lJ z%c=y4yCCeX0>_gdCTZV#Y_d(r3c8Dv2OJ|!SLaq_WK{}x;DWLJzH#58@9LHEsfaDWhXfPXE(=!l|@-2H-=-z^Yz zZZiPEw-Ztm@L)*zfA#hiU{x*O+kha_h;&LycY}0ycOAMrC8QCQl#rB`kdhWbO1e{8 zKuV+(Bn0{Px!0=~M6W;f|7|^w_;B{T@0zt{W=*XHcMna6pBcO5BN>h(-0o<_Gw9c| zoSiWhZ^YUkZqqzaVDxZJZ+oX=9P#9t(xPj;Sf_w5Gk1Ntyv`$ZGzXUnS8Of^gI!c3^5ln+_tWWfX3R9Z-ZZIRt&K{gRLXX>opJ|98}|9mY0b6_C8 zt+lRu1BjZv55&&iJU-srfc2H-#L3|ku~b@nE{s$Lo;6Ty%wL|slny$y*duW%|`3O&_-OdCkq&I3cfY9*WNd$Ah9SYq2 zpv`v;;u0Afb<^t(biH1eb7c$=!?EkAY?KVTA9Y6ZA3LCi)S5m>Fs5Wh@s^eAinDmF zNO{xDEOnW6%E2LNJq&;yKC=QpkUtWYQ(W$P(iqh^~)OnLU#I=s^}IL zDesh|cs=ZR+|&b3TExTh#H;{!J{LrW(>bJ;Nrk}onn+dNvhUM#F30A2<3wOvE+N?U z`fDi(#+W#z>bLthl8qMDmbh4^l#@EYFU7wVPOe%qn|hh}R8+EehsIek`ZLBg_Gz;8oRfB6Qcr}uahv<$7xf2*=LV>|GqNjM;%REY3p}@5R zme@k4*hJtj&eBF_gnE9FTqREpPxQY1L*p@M+3m*sD!NM!VtGm{R(R z--qyOM(4(*#5XSuIkaO7ag`f5X*$5P?2+bXBOg#I)LS{!MfFIIS0ET!9GTs*zVl`i zH~3&D8aDxrUTZa6yZF`N8-j7Bz?D$mme4kDi-nxqzJVFCn6eD)kLR5(Gp-I-(M{ib zK}C&0oXVD>^yC#Mj5M~K9vMI~h*ji;pPy%DEjgDeekatBB1DOo#DF^1Aj1G?|@WlX0+{ zdQ8BIv)(9X4NTV8#R@iTo1SaRosTiPQGT5KM$y{3F-HQuj|*cQRXLZsYa;6jflA@p zDuqppBQF#$jqzaTdQBubLBe)K1ZTs*4tYGASB?>kPCGRs605j@tgv7^SIW4;2*^;k zB{+gF#f-DI|J~Fy4cf5Fv(Rc*4Q{DY7tR_fad*~R1SV{ggZ9c2$a)MV5wP|yh(>{% zB2He0*oXV0W)f`WG{SYYSovlN=q1wHjK%btvZ%r4?GzodgJP#2ElJQhVoP5H2Varc zQgq6dHn}@rXR2cI_<7>GCqAW=?(L4Emr30S~OEsVH zWF6Jf!nYEibTDG`BM%5xZifmA2~lQ+)FaM(#P8z7oKMI#x<4B%l22QxIh@s#g`}d) z7dAGrI)OCTD27%?vTvCrQK6#*+BiO*gigpNp>wtIU0HiEPQXv=a3W0xS-%SdSuqgl z9H3`|)dBws>DC8=RsHN6oiFrGH;U=W#f@Rtu*CVp$vTeWk033FL;dJVTM?kqLd^{N zQN2RrlSYs5ZKejWs|M2CLkHNKyCTSZ{C!SgxT^*ZMQh+ser87VjWe=!)(ziw9{$p|_fxlE*-vaRR-v1rxdR}Q1@Mxy z*_2m}sww>}vL_HtHR2mcmrHv#k2-fpUX9*|Gr&>b=JT7Ax5`NygKc=UhXT#&h5gJu zx5UaHtzJvsIYo=DE>4N7yjH!1eJLAvbG&FzVMc5JjT+A!Fny`c!hT=Rlx;t;A`$g= zQs1t=cOYS9yz$&j0G`>C&ibCbfh zR!U-ArTe*gD6H5-AseOE(+o{iAd*-jTIeIP9bx4qM{ zbhrnV)zAkl<-Y2A@A1ZvLx>f2E~>m+2{F31F(rr`H}r$l{FpWR(Fsm=>NC z;9||m8S);vuh~JN@sgBIQdlezu2kv~8&Xh)J2TUW*dvyf?YF0qAdPoHvsXiyJlGy> z2_GTubxjjKRK%qg$TdtlHA(6Z!>yfsA)7?Z-Ww)Li+(qk5JHj~xi=98NXbREg=WE1 z(T6QhdW>-huC=#inZR5A1^*QI~ ztuc4VB?2QV|L;#mzeH`VRGR}I$oyn0q!~jSE0#V&G8WT>8U-;%gdS+91&x=ED`j&s zn%pb<#JC*Kl_PfK!|3hCN8Anjm46MWi^(i}2UuKVP8`H!Fu9gu%+oi4G^2edef4uE zuD4IuAL&EL%=T*wYwXWS*@ zIAo7Z(4D!%P}jU%Y|_sNt#qsJwe18Z;;^_(qRqBqrq=i?Q~ESVo0*>8p20|B71X#B z?BLa%#3W%jEEsNtU^@3)$KEQ|c}|iR`zIc{Nu0YVQH&LJ9y6gb)Cc~Mh;N=)!1I9Y zyQGpC6Gk2z@|tOK37e~lwX$`ObXC#Gj8_KPFUWBvkGd^{KIK{B8na+@6wG}%Dm#;E zq;aPz-qJWAgHF)liOLLm;gX@&%XMCxs2eF2thUzn+6gB~<+5sR_W3z3r1w=s^qr2R zEN+L6IYxF*6L%?4*BPq5t#Pgyj1D%^lD31FB{a$NOM5aYe52FeFd5He5IA?dUs9qt zmFQTjrZG>BQt!_|Ma{i{B>Vg^DlWa2DR1Z2m?n>Obc|qAtZEfoSzb2*my-%`_a7~F z3PYKNHe|c_3WuGEidRsHD&o8>hT^nZQ?y!oe#iAfl8|Rmx-Tf;;Sn)P79RU&!e5K` zj|me@G2wI(*dgD19lA{2H;)9PO>NCdts|39X%tpq_Y}!_Nq<@dW2z?05EcW*P1P&F zv-NbWriF2DYd;QD6{ng^UC8X4AzX4}YwFR56vCh6aZeMya=d_Ot% zhzNoa@pWJw@o1xFh4og@vf~ta@Z7)*Z;Sgbr$G4R;?)3Se}!NaPn=sQoUx^d&0BBc zB^~ilU&LrjzCl(cw9QP~RjevD?e{sNU}vWE*i<2pHusRuWn;0L=$)^%=8BQ6a|uMjSKm@(@W)~D-yB7t*^ox@HWT{d;4lr=a}j5)al`%qOY zQmsiF`;pnRPL}ym7RiUV_(DS^@A^b zSpVv53k~6ukp9!W%O0C)7;l`zH!{XUU{~`K#>I<=`N)X)PC>iTu!5M35vYQcjqQjP ziPa$)L(sJ}|3DdYN0{`8X=0n!KUrR@;>6Qj>RO*%#M znZRswoSouM=Ab5nL&tLb{^xL5c$;wTNI7^kqR>FVJT66E{3HF85BxPekhdx<+>;u1 zUGC27lEV#(MyP#6Ok^)(Lg#Kkw_Ds1$Ri|z4vgi_=nmjhZ_p$Pz`2GkOykF~q>lb_ z!Qx$u{0%HJkS+Eyj6RSPDsMGL$_3Zs@k!$ZcUvdL_}(yp`Q zPZ7LDQ17R3GL*G_sIgK9daP5nmMjs!^3)tzxr!qjFEE;+o*+YfJ}oFIoO{e#r%4qr z0W?MV3MYqDGOe2dQ99r$BOHS8jx}-~SKkf4`Mp#9meK{dnH53W%w7eXyDfKmSRZ{z zAQaAW1R?ZO!K#wzGS#0@bm|LxYi%s@g&G;-Q&8N{>czHTBq1rqprBn_CnUB+)111#E!Zeac1FYK7q6fG?1puLm;Zrxj=c^ zOb>d%QGbk(etTB?B|L1U`Z{CnOFuKCqBK`>gnu%CBISbL?vTsU$Ej>~)ZE8;vV8B8tXBU_V3YuL+`Ud?;QH?t z*NR&o5W^>#|I?>E4v3ovw7#Z@Fl7kxu&8aJ*MoQN;in>!L`0*CF;OPmgK>cG54PtP zr$E04n<159%8S(u-3M*4`^;ZbQijT%IM4=LWjoXBIoW6felv}`YLhdntVGw65OA#+ zT{zWbooeQFn`E>LTC)pwRr|_;2Vrl`)2jroLA|=&nGzF@VEp-E@CKxhe;){icFPOJJbRi9lkaZ@gzM+A47r5GCnfxabU`_rDvkn<#SR&3t2 z>5eojbBhDI zAd>agq12EGqSk&sb034Tx?HOmNaA`^U|bm+Q+9W%6?HXvD%y>u@$`J0cwt4ntDBGG zRG31_sXt`siozmdSUiBI#du$;%4v^btdi1h1&^u18#n|1gqr@93yfXf%YYd~ZS{x+ zxXqp+2bIAvar9^T3v|zl76|Z-Ru8u}^WD{@Z0Wh)sPwCCJr4s?U5BA;XZYWx=4)<; z=L2EuwP*I;Ctvf_8q)iK8GtRY^$-~9ybMfvNoZY1l{&$}arj}Hm*?GFy0aTFP}e*-@Wu(=J!>EvC5x=E zp<1FXWat#TY!c5?J1bv^HmLI!YxT*#uf!l}(Z5*dy4%& z_#vI@{5n7|umy=Ny!t!_^k)f9^{wlq1(>6^n@V26!JMepx#4%%&EI!vr;=!YhsPmc zhtp^Y-yEQhuro)Nh<+OPK)oc?!==emZU-Xm-7FKZz6wGlSy;M{zrxph=yr{h6?zp2 z@ZJY`dM>#|SAq8!FW?;%{JwYaIhyX-1@N)4eQN4~uKZAaT4JVb*`&--0Y)F4;%Qf6vaL00&|7!MrUYW*6q>Qgo9y z0t&4PEigMbu#*I4=dTpWNRl?+r}HXIH7d+c z&2MO4F=PMQ9kdG5jN}%y7(5gnM*>w8cqfID5b+pAZk=Ho=aQ}#D=(7%5imQ?jR{<> z2vGAxOvD5ngvkbU1|Zj09(cz%b`o$92-O=B<(uv~+{;LO#k%z9^~(jtcL8p<5y?Qs zc%L1F4v8G@9o{jYSJtu)llRvT(q40`8E@}R%bxb&(M1ZaS>FvHL^0e6`&ckIqiHwP z-Dn2YFg$myI8CM~q6<(2YOa7PJkmDQi*eWbmvN}F^HK}MxHQmeF!p^!a_kZm&z z%)BPw5Np_Mpyp4iX9KI?VxeucGDIKm+|8a6d-RZDp1Jb{X$Qsw*XlqM64q9{-RGL! z-r~!2ifM;l_udU7nruRw*h+c0cr93sXxx}|na1u0E>u)xXmPwTNHUpsT{vp3+iLfe*B~CkE4uP$qe8h(d_z z!wcGO^lJJ#7uV{^hf4v(f8QIP)l@4*szho%a5USjcLGudZTcJ^9B%OV-k@w_3h{(% zwbxIA9Wu`Gz;0Q@c0_dA^la(0Wm3U=I-~AcHN#SC>sDJZ6~77BL^qC+!c(wFK#2Qr z^oVkL_Y$3y+LcF^8o}B|oSnT;&YDF7PgN{CN9Yr6WZi5Wv?i=sMBbnqJg~#YoZCAh zpx4rB&+ZUv8DlFif)hRxWF+}$s*&b=H}z9lXZl+WOe_~=Cw#dZ`)1}eo>vjz5-Qrf z8F?QnK?Ltk(91{Ob~~~SzN@b78KAr+p-e-ar@)RD*lzgg2fFmv^Z9LbYQ z!LhlwcM+TBuCy$X^}+_*%f)9ybJQ*$C*I)*Ps^!IyI%RBaKmv?f@e@gx%}1}y_Gxb zwmGhq(h(m$=}t2Ig~QQgr>=3&vA>p3qkvP4c?@4nTzuV6*5V!frh#e`u9^`gBkO4s zX~(wV3{y1@T7;35*l(MEG1x$`!^J5;0AF)7OW4&0#EPzX|u=!+u0njI>P zhaZTss_!IBsZ4LaAmDpF-{(c!YWA$A`)+@j{KNP2w$t|`J$F2aY`g?JHm{Y4i#R=x z@>bk!AloJEXji=V+6cW}ge7-DFypq)3t^!h(2gSskqIYNl5(bpNC)BGJd>9uYh>X; z7zzzz@d6wX^^5m~d@6TW?(>b@SyAR2G1M{OqZ9L@BhqibQ~C}GV@_p<4r5MjhX96L zHroEWDfX?GZ}07WxExZ4sB4FVjYzd!9oX`85Pc|9@n!)8{5!;=_8|p(3#;qQ3R762 zyFt4G+2SQgoWU~GB34;LIyMv^yPx<03$ZLOvBr8H2;M6+^Bo)*Rh+A###0bp=i5kE z!($1^n3S8T&==OKDXAJ}^`CDz68l86O*kUNR4zO2xrH| zT}_OQoD>fKhPn^4F6HiI>A?t)r5clwv@PSPOBa4x7M=3J3@+mOMwy@O%<9ln;aK!a zF(@tb1XJi2b#%_jCxU%;Er=btD~I!e*Wl?N2ubcp)pUj zT2<^*YjnO2g{V4Fc-@TAl-m5UMACS!Pw(moN^4&B_>E4Ur~7M=a zszu%KD4o|z0biGj?lsF%{H*MZ;u8taBYQ^6A^oX#9buw7_{L^}YSMApr5fvNWfU@z zuA;6K>`8|h*Ah|7nRpDLKl+2{DrEU9l()jeyyP`U47oJ9G8!>-at-u`_A!+?SmlcB zA9~q@wR!A|+1$YQhNIonU+Cr)yBhX5J@ zIi&EoOlo5?shGGw)Dh34Oh>3oD>>ayYIv&UIhFzkE#EVi`y@+b#!Wn;RbHm+DyF|? zf-D$V*gH?Su!)>>^4dZPRdV+uDV1QMPHb6Jr=F@-`sl=jn*C)pidEahn7d}IF19Jl zlpb=A3};5{-`=z-6D_ECs*8Y|NDKQ2yGfH>(ueR)pw)dvIy>C^6p6{%`DIC+qN7&k z-j^IbA2bR)(W}ykahV=`1uFAURjHz+L~IwzkSkJ;EHTR!6wQ5>-}CH4y`Z+BpoLgO zow1BI-qSY}6kbLYWL6RsH8o6ef>qs6_3?L|EcfoTcxzox7tiWeE72=@m0ONk!J@iR zo+F=hizH zF+(wdIs90-1gbIBW=(#*09hYagDfIhcQL`0Q-id?H6m&aA56nu^=m29iq6 zAwstvVonJP$V1z^o)tD2Hn9>w?uJQYXJX+gfrbZh*!6nHP+waZTz3Pd!+K_yn-Fu#YP)EeE zK%p0&YZnDW>dm51daIxgQvQf#3QlSI4iWDPg^2Enm~lr#ne1am2auFQG)(lPg#eaG zb2IxD{G;0t-By~mUUifsP_TxA!gDsI1@CcdABq=rrW(g2@XE*Nv7kMS>rC}cMVO2! z$D)S8QZuHMykAF*iF-?8JhPK{d7HDzhBu(M2lHsRR03zk=PEyRCmD5dhogeh$4c`$ zKI<;tMVDTJc!u}X%>J*pnG;-{?tW}7vt*p)Wi)^1!^H15iVnI7cLz!+62AE;s%C!s z4JpoDeW9FO$`98Vxb<`&yhYb}o2E%^nrxS=l?H9GbP|7;F^HNt3#(j-T;tx}O9(9b z#vtpvB9gGxD86=BJE<+D65L0J{ z{zj2=Sk_d}(1wE?nLDXRA2Wpr&ZN*hRHJDRGinQ`9y567z61^lb0UWG(U z*9mB%9W*Pt_up$s-Y|K)mC;*|RzLk@Aw6MYHFMl=W0!7TJaG|Ln&$ZciV0qOVQf%A zyP`e5hi8~qRtLZ4&CAdIBPTMUh_!IkACS)$5c*m{mlsB6l%{&;m@Z*2zfSMdeM1;h zU0@0=nzP9rnZsT^;*?F#G24Gr@-5QKAevB5^8Tv}Yw?P<0+8C_b~6uN7~V#9mUAHL z6Xv%pi=2a1h`e;K#h8pqj7fwig#6ly6Zd-lL@0e*1q^vj>>RWeaY!mE&NCUut0W*4GtbNNcGaX7bm$mURobt?sZdYhp=llB&R0yh{*N94o^=k^N??E zk61`zI5G>~@Po45eeNThDj)wu<{CMpHDmMno!+k7Id@`oy4=VHhbYX6Y2NFam*9wl z`Yu=ZHhS&XtI~)oSkt5|Hru+rYbTqOlWORGO;TtebjOUv!rYaz&_8mcXyj>l#dIH8 z-8BSztoG^lt8Q7B_w6}q6O6X*@2Wba5S7I5*5=hqp^?SUAcr&%uzMGM2sW_TaH)W{ z@GpSzF9_pQMVNn*_r%?wQ+MjPXI`PHUk*)qsO^C?MhtVX6UOwtyDv4Z$(hrd$AB+c1W>c7(EmT;>k9qWE&-6y97pO8CC9Y!A^$`>ikZUxdu zGFL}1jW8YAr+AJEJAVR63X#@piWd1m=j-=<;=4?H$D+-r_}bM~xsZrdokzO&T3Z@h zrp>QS7*Alo#*)@YHL@TmEnmZbof51cltFR}7pqHz`83qaCyZ;i=I!oUhlqR&&MGmA zbcb-h8KQKMt)LDFr`Ch4sTa+CA}!M{a$r$>ZQqENIkG&3x9Mb$%JIE38pB?ZTzC@cZCm77-H2KBWo=@Ke1~) zYuoYSVS>5Qu&6=YkAboFen)C(t!d?8x!hZNdr^9RWh1tp^qN$TNWPS?qEv2>Bb~`s zPoNT=qFQd&<9`2l#Vnau+KRgal}HuUaEp8HNCj$V>Ftk zC$~vDeVF<$MWcTddgr4-E*WIy%Ce8n6NREMFGfiCSb)AvuwKpkCV%SV_85a_*P6Gr zK!R%sucaBkNWo_}|{m7v<$2>hN=K=Pm zg)OvzwWs!E91UWZ>>PD;=Y4FXK2CRmtHIN;%3~ye%Mfv3=o+NrX+yWxiRnz8EyL z;%%Eu<7HY(G{<5&;Kh6MfwdnHC4(nHmN?ZDG>Is6`Xmo`t)s7}PFJ(_rN)X1{B zd8Cp!EDvsf2oy5ee(=>xqj>bYlqO83P}(kZ;#BRT+H8YQ;wrq0*0ylNSFdim##J;I zw^&eT$ou4G&kGG9k{X8Sx4~R-ib-?N2v4F!FGPgDQMowRt$L&vx^1+!3F3UQ0qzQLqLfCfzs^(+1zccm$0X7r`UJv^_!M* z5>yOhOm#u#ZNZP#pci_obZ( zWMt%>trfEb0gaeIX`|3=#5_bIoZIfXlw~@do>zpY7>@;+`9HaD?_95EIh;L!6Vl9g zr0_ACgxD`Li<+NJ6sE2yC>-{ZQBA~@!thrVkj#&%7)z2&*64lEX&x^pExvjBxWS3_jwVB z?54dwM)q(PF^=F)@4m%t15(Zz>^GJhLUiMTnXSZJG`F*hHo#|;38i^f%+^=hf)b12 z;JZDKf;;S2sFX!k)(wAbdL$NJL$D4hhUQ*`$F{&;b)0La2JvbWgSm<7esChP39nY_ zV?-Y|qg78LtyLx24Jgixa^FvAFFFLp`{HQCEAY9+oHPgE2A9ze-tNBMsOzqVE0x$t z-M}thig7YxdtO}6!CHuZ@W``b=+ZvA1%FmSVulH9?aE-o=~0HhAxlCsUsX0EXRyQ8 z5Kg*O9`2^?bw}uttah{!P<>27IoGuU!y{vjQV+yVVIej318T`za-NT9@iI_YD6U2c zn8rnQ+_~NhO&WZtQ;w>vTpTVMpMWa+G=5$NE(6ndZgG`){3MGd$Jb9a!a@y{KBxV_5mWzDBF$hC zLH+wOEeSWG(>nR!@l|ff(FayD5;)FtU0kK&SlW)abe*DwPadHaCyH;vqp>+ZWK&&S^Zm4rGjJ^URK`P5c;cDgtkBg5l?zaY0CY5x>hej&R`0GCYE6}_U;-YT}>(slm2rN1xCLx zJXX@nk|vN?Xd}!Ecy>OiIO1!lX;Gw+>)P$@Sjd z#-d zP(;*8zhM(~I}=ldk+zIUCrmye%I(wodumwYto%awW2313-dfLKuDD!y&(U-<_H1{$ zPk1k2Gw;o|tzmY_o3E7OHMc=zy-7LjA&tYEU<;uXXMEaynU4O@yzM&DUU75Tt41&Q zkC7`_M>8TTp#LAj8az?MLKPhepr&U*0Ls`^|sLtgZ0hfPl_pEa4A zo$FGJqo7b1MYLwJKT5~6%aEt(*1X`Y`tsB{Ggg#fTs&E(a&&R!kL?*(CgYD)Mh*uY zpGGWr)K$U?BL`1heeOO_!soly4#92_IwRmWGu-$lC;hz;D&Z9f9qQ2jj)&dK>s=K? z`B@(W8!>q+Y_}#k7i5Vt)PgOsxc3)F`1Fgt8cunn)SZT&LA~l@5x5-2lE@Y}ZyKD_ ze;qpD1je`M(SQ*LU|b6XKH!*)=f>^-8j8OeJ;CFfJ&^s^#L?Np#7VcS48EBW_42Em z@(u&F#JLzb1G1FJGe=N6@9^N0?prBsZv;j3&5g@+3@D(k?c{L1?a0-nUcF2)9=+dk z$h@nbv>fz|$Hg?nw(#}f)GYUXl{YJd;_=n8Bx^A7SGr?r3rG^GC`%L5O}sDDi=UJe zDM&*?p71pv=^w*ccp06~Ere|e_d^Ww9dDVGS?Z2Kvyf0YZaW=9j} z9|M3R?EL+Jm1X~H0EQmUCLl*gkjD>YISbYOYfwh!AjkiP68J|b2(VNXKs<(Ds5UT^ zlZk_iiLKH9Qip-RhURK#VeAUBcKI$G~1-gx& zsWl5*AOxW^5FPqQP3~;bZa-P{m)Mm*D*9{>(fr>Rh9{SIL|=%;{Ggzw26lrxF=EoSvX#d;(%YXa0nn| z038tb8I%dUpGA=Y-SYTL7-u`je=;fm+W^4QTu*#V>j>DID4-j@GdR?Qzl5Xg3~~lm zbgV&6PUo>ONss$v0p+9u&E;&(9bEqvtZz}kJwksxxve80jW^_(!GQTf13c9UOk|yv(kAn{|4H3`=NkJOJhkux(PsWXQguj z)|7u)y3aS#|80n16ETfZOahOPEkI{L$$X=`9bnA* zb-asp*Qrx{^%fu<{WsDT0#*CVXkTu9otJJ_x;5Dhkgnw$>4HRm2k&C(a>R7*fzxY9 zeq$+862F1=`RL|(*~&#FM!bP`unZ*gkU!JvaHM|&?ce?X*Pzko!95O)+uVRLU=|Qp z>J0cLfXgo{QVy6B0R%1{d%(>D3Pg3d24HRj3e`G;yP)tJxXQo`#>iaB#L30lnM@cw zKv})SqHG{l3T_s@1Xn-LDwf*JE_7hh5Lp&}9ZsUZrz{LVQ2>$bfA_zEz z`KuLwF_zq1tCA9+A>I zlwyOE04m4dP`MHKr>Up`ljk2$nU2?Eiv_6Ud_#pd^iNY!w{SN90Tl_ES1iVWl@J3~ zVsJ)5(h+}>ikzM8Pw0r_Q50Vcz-H(hHgs|S2W)q!Kx$MlTK(ntP0q5p1Q;7W>3RdJF7I7tER>ntb9ssA%hKTsUF zo+i~weWU=z83Ud_;Oc*Qvij(m+p&43~pRvfah!H=<%&@1+Ep!RMT1U3mJ?r z{|)c_{p(rH}z9GIEh2j;)ZU(^7e zoycte5(#A+kfZZoeu5APNO<|51jeO4(G&yIBZN!9^2r$jUhjX2fa{lCpdZ*E*aFmL z>jK#U;vX> zwmFF&{4YR%?QaP>+u2wcDVdm>00;Jr{+?jUSU5Qg8iVY=yIML6d0FEK5c31T;H(<^ zkN#%{;2H(DqrYaZ!r;lQBM4~87gzE^>xT#<067VeA6Sn1@?`t5octa#u!eFm0$urE%1^00tjw2ho62AQo+&A)x!9DOVaXbcM@=bS^8td^Lt?^5Rm`FEd4JvgDY7T z*w4IJMA!7E!@!IIVhQ+&oDneq=6{Cz*J?X>-{oS&8;o`+4*)&h1T5%mbM(9XlZand z*}p{q_jN_0laJkiZss=NPbr;|$?D3_A$-}W{kpRMO_t~Hukdq`ja;V&th5hMp~4w_ zCB#38f3fsqd)*@E(?X9ngVxwF~&kXLa9z_Xp9x zyMw@*WN-uy&@}Lk?uD-ZN&JhYFNO|#`~lFt`!~{0ko-aPFA;mrFY|MFtc`&!zvLU~ z`EUG5{EMZ3kS3Z4*1bO9W}emk4Amb*XTN9z8r8Zq{ zAAut>*#N1~9MAN*s7!wl{RiU#c>Cx3W5N>G_H{j=b|L`(+x`r{VZb;2nT7YC8k7E$ z-^H~jbtACsF~H6g7&C0ouzSw+|Bv0p+{CA{wVVLW?f~aLH&Ik;X9 z_$nS$--TB^laXz!pS44Y*-$T4u!t+U7 zzT)i}{ubVMJ>l~i8NMPWnf)H(#S)&6wf_~5(ek(OzU%Ft4~P8~@znPB5HFVSeC*?| zc>WH*h4)>L_I$|EuZZ5RzlV6Sgy$nme#N`&@mqM`^;*w|P5X+N?DKnw7fX0P6xLTf z4!_^R`#RqJOy7DwiqTgZmjZu>#qa z+7b=<^(M?ew|u`|`Z$04hT)%gfy3>mr`zAY47jWRaqIW{g$tZ1{ASEI%>Juzqc4Xo zzuYnY2kqi}!2bYd`z8MYw9mJK|2_A+=yKLqP|w8Q7xC;>Ed^;9V2%YGp8@`GvjGQr Kk^mPK;{O2v+jX)4 literal 0 HcmV?d00001 diff --git a/lib/hppc-0.5.4.jar b/lib/hppc-0.5.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..d84b83b4e08ef6aaab9fcf8c588b79d7c3971238 GIT binary patch literal 1305173 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μ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

%1=eDvx-cfsyJdyk5GGp>V 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

yH+z&mL-}TJDUFh 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�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

`)+myE7JuGlsvzK>_xAm^gd434#t_NT2R zC@RPHaPw&}Kgcv0=s4+Wrh`YN8+AJq{9X!yS+s(ipLa%XUia9yP48EbUnA^=L}r>E z$i-Y$xrTKq&{uTAxzP0Ru+Z#YS~yG^{tXTmcteeOe-@je?2Ne z?c^v{j^+8}a^vc76vX4x`&Wy)e*eJO;7OFfBBGveiX zjn6dP)=_(W8qX$d3gI2$tB+>6QD5M22Mz=}?NCXa#d;{PEBKwP!Kf;7%F@Ot0u&3o zG6mK4L~+j!-lVJY@u@X;BTZLHfk#qg5mB7-;%(HQ!PzS4%Tj zE2MyYsTpr6A~5XkC%s}9^~kXe=s*vCS+CsR2>z+WzUvjXdp(N<(ktdSQ==7n5-EUQ z;iq`y_WY^8O01c$;if&Cq;?z8PEJq|c#>=Pu^>yEj+$i`u^x2gRYc5ysWa@iPX z&|jW#j%`RtL+*eH7_ec!&K?>mbxulxi=2${@{cp5gEp`w2&p;n z?<{#(zS`=FQE~*IRlP>RMkSAT4F2V5Vz&B1eEZ46mt_-r-0dqeAeAyzdE_$wv7!48 z{9n%!NTujw#b*CH?EsOEzp}6YG3^+z>E|K;C)yET!J^7^@C*fbmR51WKE3txuBE{2 zK6^ApqA=g3C-R^`6nK`F@zQR&#nZRJV`fhg($F&niz_bWh^h};-zt0nq)Pj4PMW`i zcOY|0K&2U~6jYLXEZ$|BEM*_ri(IR(VI9kZh&C)@U)m5w1WrPkFj22Dn|p_MB!#

nNM4`eA@uBTsrTtmg< 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

sP=^_=VZ7IbWs@R5&_(c;nyoLU&S_+i2N=bzz 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�q!;PiPok>{i#*3~M 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�{&CT)f?2I-gap1RisO?S5Q`%P6G*e|>%RiQ0 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

B%xBWVD7A{UH)jiZv5U7 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

KKslno|;0j1tJ)qtw;-e9eZ&C`ms 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

    Q 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ℜ$oIv5wTd88t&78j>7SzSsubItT6=F~$l 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

    Jd{U-K>QPRnwP#c^q#LHXzHP)2H3~8 zu}RDBE5LEIAgv6lkLlD&BI3MQA2Z&?v|vq&BOgf4Sz<9AZrU~i;yDGm_ia-8DY7nv z+bwV&VU)@~8uK_sN%SCXUKfnlKA9{VD~wI7$2IXrc@G;+1lR#(WPQr*escPLj15%$ zAvQZ*HEY~N3i*B9Nuz3%nP;)-%Vd8k<`FfB>0)D>vkauu4vFuDVykP)tQBE6&eYf+ zS~mK&4A64<@d6nEzqiG>#Chbh<`PWd=yXH%;V_v|3mW zM(r%^BKHY0-Fvm(t8Wwj#P^mnNJ>uDQg;ZV3E

    5}XMJ2i$91NXxhk;8RZRv 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

    N-)VOrYp-aW`ih(Oxzw>VQcO)t)I_pCeJhgfAJg z5Kh*=iWMuK0AH^FK$k=w!9IWwcjrbs`i$vvpVb`y-a^i`&}3@wrOKPVX-C>#B2sIgK)h@0bf!~P_Yqi|1^lG+eq1$%JTP9Avz>O4I7Y`+}GJi2Gh>ZMZujZBh2hk zJjk##h4-JdW1GiXoUWKWA8HgVIeL{QpftPc_%XajFYaxZMKl3qLE6#e#eqn~7y z>?42|eXT=Nv(JJ{f$t{HjKZ|PJgnEOb`)?C<#*c}+j|aq-`6H1r!l`ck1Tly=GKYM zr>ucH zb|8+^$*Dt`WQ=a7YHsQz#5m|^iXDnZoxw|5o$$w|W=Of1Jdv=BMf)>3W((+|U8FPF z(6{605fwLPl$Z#yX+C!2^@v_;t26~ZQ4MI35i`5MSKFM^0WfX%WHu_|LheWYwSWrMQHbS$NWNCZI5k;@LmT!UXEXrkYZ8=-6sVFfkhttSJM~sfu zQ+2cQmjo53owKMsD+c?^RTzb`HxhH+B2Pj%J;Lq6CEW(@C`E7~&5%3u!_3Sx)8%2b z_!B!|YHbE4)6~i)yo3jp&%$fp46_1-m8}FHWYD~3eRY}%54yE1N=cJjYm@)mFl<{DUh$%NYBsfEHf{xtTZ>{A>ysl75a?#~;&O+f6% z;VnOAvCopQmvdU`tyiWiq{OyoaV*arqr_x zywOwJkIlqL(KJWl+@EeTU&C&ZdgFh%8ws z-?wMg!ILkFncJbd*fru`EuQw;|$GdUT6s@U}r<#qW(-irt~_ z4uh}676FU5uQOvf4>>Ags=?H8I-rg~;}RUa;p47~XMk21^(9!^v*x%xjxtF{LWx2K zKdU9)D$-ni2nP-0YFElAiFIn+uQQfkgzz|{xIm-l>abP|!J=a#)NdcpAO!x^>ERk~ z_(vj-R|i(l2B(Hbu1v^NX#^_%u#!R}Zd!{xwt?B3m;-RYK34W{gi-vQYRVy z<_yup0J^TMe{93p87ZW|4d6Eb`PB^5XGq-bpfu=qP#J%9cd*G~Ng8(4a=YIuJfr?~ zX?LLO-T)&P(`cwQh|6e{GH6qft_rr8XBoOfe))HW7&db3UA{i|ot_n11>3t1D(q0G zL=3lwV(bm_OcFhuEy91WcJ_^KkWTjK8IhK)tr>K2nt*-o!eNx|SrxP{3%XCsjmJcaeNRGnPE?cel%8>Ck(6Z z%SSCE4!WLa@Ogbt__N_D2r+`ae!#|7%M;tC9EnLY+wXnloL)%;&qq_dylps`7e2wd zKpj392!(6hsprogvAHC3Asgsj0mz5~cKa*de;S_A*lS3>8g?G2_Q92xc1X>xwdr3+ zEG2swUHUc?H{)dWcnEB(_;807@Ahz|4sq&RRpy7d_cAzlkDtjK6gsDip2(CFGZ)zU zeNR8HLUX3_f2$fyLvsJbRl2*LadIX8v{+G_H}rEJGG2GT^F+{Tiqxn-;ot@Wlydi6 zJjVV&VN++w+g~v{rZc@U*5Rif?TC*?$WI4s0tGw_Twudf!^D-upjaCs>=+3<`ia4< z?MBcroWhs}+LnX-yZH}N0S#Z2_8{%MkxTBO4)~O3gI_6vmxmSI1S7!C#MgVhB;VWW z!+Y}^A~ie{1k357WeQQ`=#@Hm8lE=_>I=j5gQB}Ah+#b;d#o069KqWAzvSy*iwiQ)BiJ6< z`iwdl>E~=)BEebDC^+CXHuVHFgNqd@-(s2WI;iYJ(;Cxot}u%#tet!NR9AN45W>A)Ci^>w z*A{fE>V+pl8%uh=g^Lsud^qd%$E`Q5nR(PG=#rtVHf)uktjuzUf4WUF{7pr6Tx(uW zKs%Q^Bzl*&61q><4azVPF>sUD_Zl(x{Q8R5xrnG3OlW{0Y=&$|@Ql&ekJz|zHZ?;& zbq6{DkD<9w%Pf0!xP}ODfLm$iz%psO33qDKsP_#L4|*&OZRCH)udCV6@C(m1OP|(f zI%i-x?z%gI0rh`*Jfcm64VDY>DDR@ks zs(DSp;NZ4iFj=0s&H6ZO1bOETtqP8aP-P*xip=N0t_~eXqAE>Hb@*;t98?R7zZXaHJgmQ?wNX(ck+*)5qNoM>#|58QWoK8OR+U(295^= z&oG@pKBL!_LNF%6Fl9#6rIi?<%Z_3I1bK8LIFp&35%(zoqr??`;^r7vK#(d=Lql2` zQA5k~(?@v|nf|B>)-)@q)Tp(uuT1dn*DtT(^tToMZ`Kr&f(c23oM

    jx4d777Wr) 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 RO3y2Pgb-yHR2%;7{{VX6T$}&^ literal 0 HcmV?d00001 diff --git a/lib/jflex-1.6.0.jar b/lib/jflex-1.6.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..550e446cdde8a8ff86ebd4a5e236b5f3bcc55215 GIT binary patch literal 1048690 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�}LE^4l-GDD`!;BoL^~I&73i%GK=;` zx>;wv>T`&taJ_xjT;d47jZ1FhP9tRN!NQu843i-f(hjf&McdZ9xpWPIh+Gp~(NqUzpR z$nA~M>S}EiO#=p_vh4i)tX!1o2s$g-RG5VYn8k5)xBvw$T1hB%_ACGy<%2Y-X16sP zf;yX8l2pC9(3&`0pjBy96!Cw+A$Vh`+3k~OH$?2!xb-v(gz93g-PUaUYIKdVj8;Ho zX}w}Z!8XL*NK zTicqWBgOxVpBs)eAvT{Tgk?7cBlV#gnj1BB*~V@~6md|^OdcQzp+rL{i$wV`)~BJl zmNs}=Py#Dxj==zmkD)rMtti(<6ClLiak!t z0`g$Cy$G2w*o?ZFMku0XD7Kf_MVfU8^Xza=v1YqettT48L3eyx8Yc`-VM_|MqZrQ4is6)%qo>q6$_5F;jX*d9qIC%) zX`tGScXpY`*n&Wet+Y~TMy-G>+=^~!L8+4?18Dj40?jG3hYq#pG}Hw1gXp+bN5;{@ z#tn=6z=oO$wg;fY%wEIL}MvStm-1#b@_-4HhzDup3>ak?kk2`n4q5X@_+ywo!` z%fmo1W2K_N(8YI!4!tEbPzZQd0`-u11X70taLt1#_+gV72WuaV%%V3eA^hjH2RU2s z>qu&9%-|kK9w??+wiz(bj$bWDf17`vd1xmqCELKJX8EyZtLsT#v+aRVJ+W?G3GI~Z z9FOK0`Cqk<+M+J8UNs?)pzf0gVgt(ToE%5jyKLo*oH#JG8y;=tu%34bDnpT}p|<9l zM0PCMKRZ%ayE%jcPn}VPEY8Zxb(SzU3twp5A^RBDV{)C*ru_x;&vX=|o*Z$%R-+w_ zxqlLBF6ftlRw6Q^_m9ln=HQwZly+47!D!EMdhGtOj_qBjgaxzXb`QAOsGPa1qNJ*H zIED1M)Sgu0S>IjLFxY6+(1M zA_&XuGRyPqIIwwMsEES2c%WVca^qlAEQ&%~+0Mw+xs!)6J@j@ghMAJ#PQt%$$M`Q; zfDPiQYTGMNN>|c`E!64;UAiT}kN1>qQqnq}qxXxr=wx^8mXL|ghZ7omr)nb>aZ`_( zsc7ShKpSFy&fW&dduiVHD0futYoPx-kts?9``-!8sG;P)l4si37+URyl4y@?;u_8l z`OvA2!8P{qg3$%Ta1ZRW7V|58))KzmXDy{oMjC=CojYrU-O$t$YIWis{mqLVtZ6HV zv^5prj(tQy)Kd5h_tBsZz4oR6HSqDv_~kxp8Qfs(D5p?i9@rB^~8#X28zw(7#v8OzSdBaanw=g zHqmbj+p^ z_gO*O_@$sikI;bx7SvLKkBHdl#E*QulFv-G>U{hvt3KIk@L5MtIBccWh+9S)y2-*F zWXNhswvO~!tyVbM!cA$LwJO|oNS+$a zY`jg;#G@H7T&q%>HW_F#%BLJYr>dlC%A&?4(T$FdcVRdELQ%2kKBv)~ayShT`SiGkloxD?7f}qwT&5q%R`K)7kEd>_O)SLPZg+A*z>v&vx6H7Gv z6C-&M_srIgP)t3F9nPPEvF(m=koWX4ug^MxpXReR@{@hmi8vy!O+^CH`9 zik+AJbZ0Q$^md{K(SOvtt@%IcKf2v2P;(PWHPb1r2(&~uss^Ig@Y)lIwrvWuINmpv zEE=}PXPu#CX-U)t_XN~%t?;!56(91XgJamh*9y*Ue?$lE-B|_bAWOIJO6?t&nKnKs zWEw-q-Vr2QALb!A(^)HRv<9>*iWx>d8GYKfuZB*f5nX(o@S-DfbBQ-~kHRPd`T1t3 zV%)J8I=DHD)1(jfhZ+`*x&-0a^5`f@Y_Y1Nr$_#M2uhUrC@iHFC9_COe7pe##5&U& z@8fq8lb&Ur?c*WdqQ~tJinFo~kY%$xs~N`_Ei)1n!~s ziHSyF;{FhD0C=!yKfI6M&mZtv7g-l4TbKB(O?-Q@b*ay~%tBx03Jcw)tLRj&k6yu2 z^d=3n&`^#Sqqchoz z3Zo4-L}WM+kD%5f*o6*PH3#8nY1s)lH8lJ9BXoMja(vb`6nNjP&rXfuXb2b3hQ^7_ zG&G})y_RTvm35to4(@}zo;b9Zvk8mw+J;Rv(>xHAkjR|oT=j?L=&VDo+g&^joVaH^>~L^Vh9IecKvwcB6ev)9CIT z$ELt2vSBc4iOra}o2!p)UZW+>HZHcQ*74Q&ogWSFj%eEn8}RnA9nXF|J`~h`N9jSq z)@xGXX73 zlZK4zxT16)6=OzqSTSPQh%x)B7)urDF)}(QbGcq*ZP#izrxuAQ0)?OX7>*+p-_H|KPQ6EAa)iV0V zZPoQTp7n^y<1B>l4MZ6{JVFu|4~+}Po6ep%Rrw-s&n0w5MhoC2T)PNm98q0}(S_&| z*Ka+=EZl$liTDllf^=hL@o}<)ylp)5O$^Zu@V1Kv=;C5?9^QB3ZSJYvJ|@;RR;Q=N zU{r_g|C+RJ_}5UC`sFx0o1c#w`xesJL-w(_#a`v9c`q*tE~Z~P!XSV6lK7)STic9D zGs|P5=+Y%7x3+6MIz%Ud*E}Z$Uhw;($v~GT9@=-naD6)l8(o@&Q0snJ92G z=AKt-3|j^T|4o1Do%i20ci__@MKEHwwa~oG?JDvmf=w-vwYI)=p}BON8|ybNNbKIN zCZBeS7CA#NiK$H@i6M&He6T%SUoRSN=XlQW?bz_+qf?cL$$RiU6a<9M!n#$ z$5%H0;=N+m=6DWy?EJ(E&x_C6P16|vUri%cADv6(|2Fw;J@x za1&4+@%E0ByY-IPPmPM7&$^GM8+XF#G%>V~-(@XL6eWG-HhNX5$fNn4GUTw1uH`OD zY)1;4&iOh#YSjSB^96e6eYwAU*Fu^OcqnQ8oX=8c2elgA3kxrkwf2BUZg9Y{w)m_dg zu}m2JFUVzYu;Vwto)y#UGrrvd4QV&6#4)4JLeGSD(doDIhg^pCdR9|9z-nLuI~;YC zy|4KVr1`bGyYUzNFe!*0L9k<aaRQ4;5TA$rH8R|j?arlXJ7&{@_qv|IJ*cu8X@OxL=6*0a`g zjwjUaLizL7b3Xnt1|$gI{-ORzPvHd_m2K{!ZZb0kg{ot0cesBGigef%kU`iPQUl-xkcy_B3s z$$gaEPsy!x05-B663+1PQtK3kBduET>1|ou@2%_=PHrrITwS(%E6%;Zs>51#p-mnu z0(Ja>>>Mo8130lQYFbU9P-^2ft@?DTz}sm5@y%)--E{WBI!spW36ePsqkqm(Zx`Dm zwI6|xMfUI!hvdYGwKLCxKub%oxh6ZC;N%$a4$>Q9Q2`HHQJXPpAAk(S3d~*g?5xF$ z+YTCb@Zni`h(?Y_y>D=1RsS)dxd#m!?E%!^BOB4Kk&x*{0>RHG=6IBn$0)golE*1| zk&-tlxsZ|z=(zbsV*Wb{{6iP}7yGjd{5gyLL$fE0TO9UJTolM(w}g^m`D2$Y@l$C* zLRk(eJ=1(~HYWI(MXy;$En1qjB**Uwak~GG8iFkrEgiDtsKtx%X~l4C$!LqNO=Ya&i~v+|=SwdSYm^bLe?+lsJ*^a1qK^^VYXC^WOhxwe^v`fPFo5k0%z zPwG=h*9GWY16{&>{vto|_w)z0`&21XhGy66=dbo!!mZ+%TQbrG=x{ggyMDqCdT7kQzJXWzb0<{LYNF zs%~qUOa=7Sg0_}9`Zs!LzG|Hxo135Fr|2_y`Xw=a0V3@FfXY12Z>7&rC`7M{emI52 zWI9UC58XQ%x6OIezs)y4+D(dXXuHr&!qQMv3t9$!xuUacbV$o0GqeU<8UxiqTKUq_ z4p&|^glFlaM4W6xxWu{4M|>2XO7;%%Xb4ZySNAjvbwR|V_x5yw=l8&IpB_QuotSw(M$;6{7jNG#MpMmImE z&WL?FBlf`p3S)OrjN|JcQ4tqG-P$Y3)mKy7hsu;X>K0 zvv`%`C>JA-=4&1u%VSQ5zq3~j&R1aQs}LPfF{Yw?&23GjI-R+v>Yvu@Hzb5}t4A!N z&#iP12MK0X>{gp2Oy(;NDF`SEg+7bm{j!C*hJ@^elkt3lftEO@!!I**Z&zqKR|M9W z12&SBPLa@b!rW*-AHj}&F2QGh3>y6=OW*9A{e6|C=RT_FJ0N6AtT62oNf$(0AS*;d zGpi%SHUONxFQ7Q=s5MrF`Qb7xNom#0*~=zR znKXA=jFaQq6zb2ZAe@}+4y!wqqGb9!gho8wETVfkqf|3!3f*dP6qllBGqc`PD$1&= z$||QVE32F}w`xw+>?tJ`%LqlR>v;Gw^CgzDj`^D?MH-Yop%Dz#I`qRQXY9_X2EAG^ z#r5m311e>s>XXdXL1Pz7X}vp8h%v73x+wAc6Ql>p7cm^~5p(@5p}~J)_}%Fw>kD0E zpbvQEKP)0^+!O4=(2(HDlx?oh`QyOF6sp*Wx^nsdk$EMKx6pw@} z+<$~x^|y$UNvmqJuN%3at8g?^`;S<3ODscHMY(rhNOMI$aM4{8Bc9@^pt7^flDfAT#^KqSC`(XBYhJExV6ZrwBRsFw^J0>Uu0UZd$*!*Z@ zjuuwS86cUi9_#OE6m+1T%i0^m=*PQYI4|cF0FVxS=z=^x_2IMlVZiuoeCB)(zE^qP z=i=WyK3_i{&KKx>Az!5P#e9j*m-1ygU(N$MU%{(&jyrIj2YIc|>zwj>r@X-_Kf);$nLq(9Bt4oSNq z8Q)djHb~h9sk@-l4)CRQ#$*R{87F(o++EOhoaMAi>xLD*tsT%kEzLC91?dQ~$AaCE zfqw@q=xyzUo;#t}PUyWI`uOv5q|2F8m4f^4r{@m@*-=Du724H7<0aob`>RhW*0E|^XM2@{|zltKnfgON}Mg)jr=Lj|-#C9H;-a16|X)8H^T8)m}= zFbA%MD!v+f7MnTqHGD0AexkKu`iWM7>nByUC1p*QgL*v{fdVZB5;Zh#c} zJPJM`EujiqQ_mj$Zbdubz@p5{!Sdhf7nwU?(48*sY1k8BDI~)(=mg85GgNDw4lsS` zn=6V4lXIOqxR=k9^j+#N9Z3Fx{ThAhA(%&yo11L&EG z@jVCMbscuVSARv`4#?dE8}5R(>IuVd?R36>Nli;beF9`hd`D!NKo7)xbQy5ufOLdH3lx1O0TOUfZ#7g42%E=U1FH z8;v!z?uyuK2aJmGSgKx+({Uxv(4+cHJBMco#wiYr5`u|&3c*0ak4^+~HVWA}o<&Y^ z883yOifA$o?zE1;A@3ZL2=06YcfmfuovwL?(`RM&f!&xya2F%EOa218Gxmwy*hFxb zA-K!`61y`Ua93g*;^<*0EJ_w{fuwG!#eFyOz4AKfow*Cf_1la?r4{akqJG^{>x;MS z{nVei6UN6z&BE~ju0bf+60XB_x&eB?7A(IJdE*us3b$%(4h9SPM)0!`2jY-nE?&bN zyy)p{eBuaWkkgLSCwLrOM|gN;z&0qp)x{x6m*3GLpPc9N+8l&Tb-hs%CtM10t3Pex zPAKuGO`>!sl*T4?03r);H%@Iks=6IGAyk{N%QHZ4cYyPw1F#%KnChPKr%gtJ8I?L^ z57@5UPDMF%ilc&FaItfeYa| z)ELhr2fPSR!%H5rJ>!z?f+*RNZZvvZo?R7xOerFPC}T#C!YG4$})a zo6_hU=D2gHicuzQu1@FabiPgx*XaUp*M)Ii(-wL9FV^W2oi5esGMz5hX+WndbXu*` z8l47pTI(q}%sXD4J6=7F*WelNh>o%DXlV-*mUiV6Fv2`FZlXnQ!kR7MSoUUJ6w*aK z{b?=wp^HsxFcn@0Dv`DN$*vsGXRa0U-9mTrMo$pFQd{zAPS9_+v z#)Z3f6Dgi`?)!TEev}5jLAO0Rk;sO9Hc<=1AIErzd8|&4^OPK~(-T}GZ-EINb=;`a z6Loshe!83C$xAEur=6^ePw^7rRGelm&G$6Vd=1l_uG2GgdZtd#(&^bcJx8bK>hwIF zp0Cpjbb4Vsro6~I>c!DfFY%0OU~SUrrQX(;MO$C)RW63A*>0;V_O*Unpf)O`p5|BX zyZIshw5z=1Umf4{8V}B!J;G#Wd#z5d^ORh#(;IZU#Z!KxPH)ob&F$z_oxn$~&ST#L zd77`n0C*j8;0?58Z^9^e3%%L5;c$2dy~w|z*YhqM0q>!w^gf&iAHXH>AzIas&=P(O zH^V1zCwz(qT2~f3dOf z11p6eSq1#W=D{y)IsD2R;CI#vf3gi|2v1;~oy8=(fF-djSu(qhDRu|z#O`4}_8{xb zo@U+Hi!6;Zmd=w|58jhy@FDB~p3i#nk*pUV%X;$(tS>KP{rF7QpU-6j_#$TW02|2b zSQc+$2l6l*#MiQe`0*^8pTctZS< zDK?tFzz*TBu`&ERHkSX)#_>N`p%AP{q_FX#D=QWmY=X#S6U9JQB8IR@BA=Ctk!-RU z%ch74Y^s>TrimGBx~OAiqKO?U!fb|E%gV)ttU_GHD#c@LmUx~WCjP~$#IJ0w%w+TA zKsH|vVGCtGTO>!a#d0iLA}6q=atd1}XRzh+Fcy&W*$TOYRm*BtBO6#yhFGm^V|8*p ztCz>I26-|&BIY^CQ;e;`89k_X1>`wh=z0^Q9B(4opLR=}q10{|Yl0-!>@j@FuHn1L z^%urEAg=YN-Kx3oHl5zC(>ru}r%t!(^e#{N-8$W-)9pIlq0^l@-KEoebb7B&ckA>% zo!+n02Xy+NP9M_g!#aILr;mEd?}(dTEA&OwkHqP^P`p$3r7K0b1EcSi??)quEKYk(~^u zu~Xn2b}C%NPJ_$Y>9Co3{r_uSGG6Si!~}g#isG-Mqz@96iyWf3_sl+EXK|k^u{b^6?QJ>Q3(>oJ=$-(Fr1G@k^vkM`U zT?_}YOCX1Bf}!kE7{xAwLUuV!U{`wZn&{%S$>o)Rv$=iC!DJUab158#Fa2@nSbi5g z+imDo&^cE>?11Oc1U;|uc|oTydX?-;Q6>MfN4>t{&g)feXkT*;@9X;g4fp*`{r;9V z#BayUeyZEx9qkePEmrl8TlKE4dM{S>uInts2(}RA57;$Gu+5Ocu7iH;dKkiPgnV`r zjAS>%Sau7{Ww*j2b_c9vTVXxB8%}52;as)@Ic68!!0v%t*}brn-47452jB_zAiT^T zfj8Nsu5@R>RDP+JX(Xvb?iBjmgu@04oo!auUGTnt2YgVD1p9Ck^vIPv;G?vUcfco? zLbBWfQp9#4M)02l#h&-!To{r3u|32x}W+5uk|cjy!T!|eEdY2RRC^+PNA&$Mr226yi*asFu9 zcRKxEr~lIF4>5lx?MF<-cz;?OE|Mt9w9LNir+Qhl89hz&_H$-|wG)0Z9^gjK`gZGf z4Rkefq5F;B$k>*>kH?ztgkSw>zs0S1E%ZiOyaETZS78Ku9fIr)sAqqJX7(;b*n6;! zy${E-58x#BA)LWJg7etNa0&YqE@hv=)$9w{%D#jL*;nv5`v*MFzQNW0C$9Fl@HW;2_{FiA%$IPPf<=hyP)>cturuVxTAqtRU|JL;T!=>eJ_;W$p-kl68^W_f4@^>&UM#~JTdoi&Y zmif0ad>?r!%oL-o3`1&WZ6-a$k}@o;80HL-AxC6b1%0oE6rwEj&d=<-gC)zNxa#p6 zEu{Lr8zrWfnHD&x@?(+`NBX7E6DRU3aP}K?VgH66><{R}{sbF&*UuRYNQb`?YBlX9d6!l)P(MWD*h%-Xg{3HZ|1k?Ai%BB_y?Pf{V06!7*02H2TQHU+rc_@ zXSh_fpEta%sh`e#F=suUbv9X-7<;F)t{$zJ&bn#QVV&giU93Akr?a$}eoSZSChHN` zCxfIclcX%29pG)<(`3C&);s2Brn5e-yBS-Bd8m+p4* z4YxeTZ_|`ka38;&-=SIhPM4(%kiHcAIK`oFc>+;0y#(y*Q4qOEx?;`L{jP;#6nEAy zHv^fyzt#^}x*7WKM@wW#x%|A*a?9RFOzCg!?5H*id@Rza5W4Up=)uQBCNGA8d;((K@ zoejAT1|p0hJ6X0rBMDPoSTou}jezvuviDtl@MlX1o^*f8x@eFdE+6)=9jaR}De5}UB3ql&Ng#&mU^x}=EW}1=7L&)SU$mB=DSk%Q6 zc?8u>8!C*|xQJ_EK3@mTd_5e^kA{=@F>oe77S89#A>$v9>gEJgHz&dteiGb9}~! z$R0OpHFY#B(~2mG7BtEVj5(|@2}dxjFayUsU9& z#`ks2Rtk#+hFE=UoQ~7S4IKRxlouc0fqHHy>bZMh5Wg4Y zcQ?xIeJ~mGL-_-^><_{`{*bG`{KzP$YjPu^&U6ML!`zJhX*&11`fGt>lCO7MoOCuW z&I+fq!ky$^p#_%XMX{Mlkr=rNEQxQpK}A!m`gK#s7RxvbJz0!)ta1_B=}nL%wd9T0 zMmsgb!XBfoei;_oWuyXh$?e;Z?DF^wt5}=i9i||c%y4dpW|%*Q#CaUIC3}!KPeOnG z6t3zsNT6p?MxKL%`SU0jFT!E`B~)xLLk)ig+W2c|1YU>Z_*E8YVcNa_hhYNy1zPb${RBArb%D^g;zNwK(#sV+6;ljF)`G%AL!`1m=b@-L9% zzl6U0YoyCJsQCX0!}+&3v+rO6{~o#jU#L5NfLZ)UWR{;`3I7=a{8!HgYlXYPy5F7A zT4zRuez}uPaYNCaolx{97-S|k^&U2jp+3vFi%s9f%673sHTD8K#Zc`-Jjnk5i|>VO z!C<&Rn;`^@6P5>!LJt}bI5y;Cvms#5xcoaKN=a6}2~x43!t2*my4;=4W>#b(@A~s} zQMtS6@@(j0F-m$%XR|QN+yu#Jo({v;+0j01&K~H66}VZO>h@!Eyr&iTUgb6_k2R_? zkmtrPZWRBY?qc)!E;iqt-Qgx%;GNS#cTWH9d=~w$^GRomO}4~9C=tc|yz9LghPwN$ zNHj>vruMssE#Ux+0r& zM>ffTV$l=zO>d|YePD&iga*+Ujuic1jTitY2^-E31L0yZ2(A!=;TACj_aE7CpU8zr zMLs+w3g9_09NrKk;5{)CJ`o4QS7H==FGj;J;t<#?#xP5aWnDxe>miERATgee5XEe) zn7~TJL^fSaV)H~PTP!BCIx&qki82-uhqCoz20KQSvvWlS+ll%8VitQ$9LAm&b2Ll) zL9*kZ$gzdUz)`D%PY?2kkl{zMi}=HOuf^%BK91boMD`N%Anq{ZDL%IYiZ9P>M{&1R zVQgL6x6-@NYZ6ZQ#5_n7^I?oQ9G2p9jacZKO^!+;dMp`q<@8Y(?Y+)f-??VQz!Q4^ z;V|_IlT~}Yq8gVMgL@MAFzDsOT9egzBR1~&2@AA4JMbPd#Rt9)g*2Sv66hqBL3gnn zdWirG5G&vyQ3H9R7DkIY^y=zinpg=Hq6xXJ85W5Ua#;%;EslhZq7_aPVK_%bJWA_a zml%(^CwM0sV#r*BWc?;oo9V1UpD|_qe>uA<{C|FS<(#Revm?xctTb7pr%q3{X%lqA z^5)nwnByzgbgbXRUd9F?)4#=JN1CkFWMPvdP$wmVG6!OJ#6dd6gO#`Ksk*J_ zh$d=52>MCb;55_mbd#N7vNKI~mdVaG**PXV*JS6J?0l15V6qEMc9F?0HrXX6+Z4kj zon0D3NU!{5o8Uz(zTDJa5l5ZBT&{F>WgIQ8GTGH8yT)XjO?GXJ#wNg@&aN}r^(MQ) zWLr#jqseYE+0FYV{4I%e_VP8(ZZNjF)ik}$WVf5_4rftF3e(x0(IrY}TTT64CcE2Y z+Y%R&265FC9}Q=snpy*?Vjc7l8(^e37RHO?P%Rw~v&2SNC{BcGaWXWD(_pnY12%}W z;1qEVoF&eKOT_tbrMLiY5*NeW;u5$=Y=Xzc}K&0+bSMryTv2y5%DN{Ry@XD5s$OC z#UA#dc!GT)o@DZm_<{c-e&l<_Pa;YD zEINx{L=W++$P~YcEb+U@5&ss$#2?}i@uw&jd&Lw9qFgdDM{==H3b9;DQ7bLcB$Gr$ zCX4k_iQ{F8I8~;Kb7UuRvGj>6WM^@m>>_TFUBz9po7g40iw9&6@whxdydZmu*JUs9 zuIw#7k$uEhGE;mn`-@-Y0P%;+l2RThJIO&ZO&%nB%fWJh9D*e|(l7lnlO%Iplk~W2 zpHFw(d5WZLH+;CmWIJQ*y33T@6Q}R*jlIQesUK2tpaMviL!pZt1{rcV^p+#RmZM;Z zJOm2lSQsS>p-2{aY~^?tu|3gSifp18wAnv1){`)TWW zi{7)J51==+DfqWopE3ZPLWfuQS4Zayw6Dj%A+(`z+8mab&K^JuJAVtz$HxcFV>v!P zWFAZK@nQ2gx}RK5BVPqwbMX-A5W4njtTsQPK0QagU^wtfw zM!iVbIvwR ziLT`?_VhSqYJ01D*fRp=_f|XL>(NR5GLoVZf%LvtLTYar4GSa{>lppfo>Ia~`6-Q$ z4(Kyixd6Ca2vRPBB)J59aw(+CWypog;UF0RzpRF_vIaRY2xYPs=E^!)BI}_^HX!|v zfc0`EoGP2(9C;*MBwOKf*#=wWDqN4%a4Yt`ORk6eJcc`@m!$n(QN!eQdH% zO!leCKGRb0ka_vsWM7!<%UBiZL>G&{Ctx9$x5wivlYMQnf0*nW&yeZtpCyu6xC zme;Tuax;t)-{T&zWJGqnnE_ZP*@8LdqFHe`dc^`QnFOv83GWh_XB_HOE z@)6!DALZxE$M{9^aW_ynkE}@c7;V)?sAH|pQm-%Zb#92I|4@)_TtRwd6e52Vh z^Vb~%XxhJ_Lx*p=qJE`0CE+W~Dajw@&dzp^UhqGW;AoEaUde{}(>WN9Ar(D7;e;H8 zUh4tI@}no@giw$t^Dn zaoXJWPU?^~llIA)JlW~xWzC1;S`fl?E|bWbfBqX$P?}~ur6O++T!HVY-pSNqL8t$1 zGCn#H?PxA}`<_Z?)5kNDbZ+kY)#(9w*FCtccbj*MMmBg?y&By;mjg$;0fB>@t^OY9 zeiu*M#nX559t(Ezj0X|;0lF>Df%lBE4uuCFiZh@uql*FZNl@}>NR!W?(R>bFx98Dy zdl`nxS7DBP4Qk};&?w)8BjsCYB;STh>A33K+`z^S8_y3XcZB6<^5T z=I;PwvspL(H|$Hnxp!SJ`VP9XkNE<>BZc>&Y8h`Lb;fU^v&wC3d?sB`=O^zAE`pEtgMU*+7HsoJvlIUSI@H{m?X>JFW)bm(LCfWB4+46_b^+4z3A)yq8! z>Iwfkhktj-Ol>CFF2DVFW`?YpDaQBB+zgGpSdz!M2@Xd0x1URZ!OkrEjmRu;ANv+u?M!vFg>$7|gXzGP zU{cbzU?$z`$dpz71=~>n*Wl<|jGMUkLQR=9G0Mz_9!Qx?q)cC=%mC|Q>ZsoxYD<76x1#p}-3{J9!!>QH?xX>C2msiGNGFPi~1`~&_FvQY^{oVzYaJBO}*IK!cJKXko5bWS-x+9$0A(R!4ZYh;YpVmt5U zvE*^Or-TJr1fD)>)A-_Dx~#Xr1d^;D$w(*H-a{@4}D z1}F49(kRZ}n?T219W$EF`|RSG+gTu17EI@TckzDPSui$H{WCZ#2&q;r^tb9@gw^2L zxQ=vCVf>Tmu>28o1CgEQ-^u$sq1Go%kTabR*benrZsXrT{L8|>1MzQ=KmMmF>HHv9 z;SWymC!+?7RQV9kj(jK2#=o2*{|@fQhlIUjbfxXGH5}V^I<{@wwryJ-c5K_Wopfy5 z>Li`4*y?4ACOvT7?9U2cbzfX1?4L(SfM@)B( z$wu>eOH=F{Q2mjMMVE`+Wl}l;_ z+tq{$t#F(EdWg5M`<}4E#5l{1kg78(lH*3qszV`C+PAu8Xir|bNN&wJF|=xJ==UYj>*>61`rzxT(j-L5$&#Z z(Q|+Hb?^A;dIEEn8i{qhb0_v)?;yICTw|JQ3(epMJex*+L*#R^))DVee3PCL`T8Bh zGA)M&mzp*cOu{uU1k5_~jCme~cNL9j2&)3nTW*94c2CSaCywquwL4z`g;|E=>MX09 zz)9WN9;^w&Sk?=T6xDwYEV&|!p=<^N0&0T>0>b$Bt_d*(aUl~|D+ha*f3BQ}QPoq? zQA5+CAk>wl4^@;F0u!qUBV|oh77bE75-}DjFDYq#I2WdOWFnPyUM%S4I*jIhK2Bob zfBwe6yM}EQGh>-|7X2v_5Y|2;)lQl=bvnpr;PW+9Zo?<%?L?sO9bymW7TDEDeNY#O zV5)TwWzL(? zG%eQ@FKOpsI^FXe4I(RxoX=)rk5y8w$A!YFaYdYeBF#hP;xNo^n?w~}EVx*l(gdIa zcJQ=R>*vUtO=sq!u_%?{u`%CoZAks~Rm|?QH`Ry!ZAa&2~@(1&(8*oYM+UY@QA>Iw`3k z%bU(#DikXiLjt+D%%=@jdN{8!$9zb%&&3pEZ+5i91Clt~eoYbHC2j?f1q)w$~nt_!jS*;OFhB;6tp) zUoNMLjv|e?-XDnJpO2j~HWV0r)x~J3yV>>dH=kuCFnDkz+qP?zy^bo82<7~qC^riq zxFXne)Qpr!8fjy|R-GP`75pbDOQ-pCQle^Zel3;Wffe@(5Um8vZ)`Eca=@zh8m`BI zy$;f2w`Uddu{M&qc!`vz;#oh-YoGt2mIql*=U}KVyg$y*1;F8xfkWejuMHTtPe50H_7IaJQCTwquzzYWX z1wGeCVV^JPs-g1+M&hLka^6qWFNLP(AWlg4VCrno4RW%`H;cGO;<^j@bKH+g~KR5 zq3gZpI?%0%Az}fcfS?tU)13-_`}bXw%%r+2i)@;r>EIKr%1r?g9-&GKn5vfOcubGJ z`^ezKUBapjX?EmWV2zq16!IT7M*@RW4s*9aN`P-+4DFvV4wS7?bEjqVC?sX_%=jZ_ z#utwG78btg!+13xyd(x?)NkDZV$0ryB=>iFl`4K#xNhFQa%%R~8=(&2r-#|`riGE4 zgr|yGnxXT+5b}0MIqF^eDidWj=gM;J(v3y3M$u@yLts0~L&R{X1xTdO8Qud@d^F)dxUV$Z=Eq$0K%YRzSiUucc_MRQC3X=4G z3}l#!lwvt#zD#pw3~SyZr)VLTP{`1WaaG`Soe*I=}4fx~%Pr!mK9_ zj|}?jN65%X4(grq@VB>*+l3(Y)qvi-*(|TSTCckWd%ov>2p}vf`#Zq`tR-OXC=)8_ zVk`i1i80jhoG%lt0o>Dfv|vhcMLY>6W`pQk!-qpY<7UpEBqQOdcf(RBEAzui6$L7! z)fBNQ^?{u710q8zWVWQaf^BEmxGhMb`l zkSHYAq^skvNtq~(aGeT6%EFUKdF9}wJj1Y3>vJrnJyR{EJY%sEu6dmrL-2>nLomZz zLog#^L(;;Tpm`!xNV{dLldoYKqz9^o+Cx^uRmcFu@=4d+PMskf;TDo>a=a=7S)v*P zIz!kfJLKe~0HT@XYlH^vfvzDO=quzTlpTth#B1ON^?@Hl>nQxhD^hDR*(CcW2fEOC zNatj}(%BS7gbhLi7DM9Dd8k>WzCye*18GCaA$8%?D81yRWWFM{3H5oL1_NzFO=P|j zy5IJF4uqj0!%rli13ha)f``OV{7G{uz>#LtgpnBHg-PgBg(>tY#Sok#&^m^qipNOk zQ;73C8_*IxBhc`})1>!_=#vV+duE{Nf2}4$L#ac`pOvFWn0$W*wW|Jx<{yA6*L@NfZF z(^(R%I97$K33axuz5Eh+R)ckcQA$@z>iHdy(Bx2Txh>>0G!Y37EVd_+xjb`?^kNHf z22PG~sS-NV`%-h?zz;i20_R~kqnLOlGoH0JTo%xVsoTLua}Ez}RllMOC)IX8x$d zPyJBmj7GJqn&bYacD!>Ta&=gZNM%7jJ7}Y)*&SLHCelCbX4jpLjWjc2h5sFs0W3(# zw?A@(Ma(A=*?BVfot&l!BR0Dh3qg&c**G?eFD!;}^@@`V1J3AEXtW|+J4G{)!Em;6 zD`N776G2FiD*tJf+aE_!tGatD`~V}<`Wgx^JBDG8rU=>7@>{LIr2~zscyMgO#m3{C zY|AZpDHC|s{=-P8ug-&(sV0&BF<^6O!*`c3YVC$meJuQ(X0%6C!|A9O37+Iq+@y5; zsu1dJA~tpvOhSf0RVJkAqy<)ceOl31a~&S*SFa}2u5+(9+>e5dW?~3>hg_{omtgh_ z;$#5MI1mQjWM&9DNM+EFf|}l4ym_6Er(2^3-sH_bG1y?cexsdcsJz(R$l2wPvo8Zk zr}-1Bok$)w6u6vk{m4Y6MbbBGW1e#aZV z&8?$7gO2mo?HjR%5&|KYNCq_9D$Iz32?_kI2{K?`c(Yzgg!V*?et6BWi-oTJpPlO> zz?dBZd}fR7P7Hhek;cP$@Kt5VBXvRQ6qe$~2>x?n41fjN8%l&Q5)67{?2C&PRPr+x ziao3@6&~cMR6#$xGx44F&alpVtM(dcfB!wiT;gw|yP8SGgUz)>R;^Q68M0gv8Lsyp z&}`}yXJw?yZmQ~-E(=ZPnKu;0>=`3sv{p~egj+idQT;z432seLYHjRCc-D8(OoZGT zsq|LYzNT>_kzAI|K4e{EUjWoMB0!taY4%*2+r^AwX{>W8&4tik*Pi@5hP zf{!q(K7l#eb0F=MqM=KtzK8MtImxgWo`+CdT~gaio^cy#Gt`2%>NPCw#FuL;pr>4S zN*;MP46pB0)J|ov1wd~L*KxYp)B?ltq+qBHhU}@&H3l6PLBpjYDD@0EP>Pg8i&Ns2 zZ^$r)9Y#gdp~@{@6Td+lUPPN!v@P>YJ>ZHwp>kL37Q7)ImO`hD0M&_7!bNJ1~htT|ZM z*YwJAn2#>h6mRFU5Q=bjeB%?g+rAxH>ITd8^J+@Y-jXl7z~i`J-|e{2t|!W=mMgus z@b@q5C9|3yVCgxkFA`qHg8j&6K|2trLa@C5UF3CoF5#Zf5ZR&c6nr2OiHlCC?kjqu zG%ObxN5x;;uH_VUfEuZTo~OE1`kZ{Q7&%L6ui>kH!!>+@?m^j`|6F(=6Ul>apzbSn zqxNM4531hU=dc6&VGi_NWnUeqxWDW{-COqDdjJ_pNbO(Tu5n{Btbq2l@v-bVIpttAa+mT_<6ZrRXZQ*ok@8Qzr{c{h+;3My7%@2|jVYxmwJDV;jpRstG`>ji zNc~}9a{^1(xnLwQP3qB)%6WS_JAb6CZ6T?1ei0kgaTQ=`x;|xgWgju1QKP?8A!xP5Pu-3;#+V$l!qQ8td`9 z5u$Sk_N%pUy{n1v=T2}Bg%88y4#00M&Qu`s!}75g@UiyRglI@O<`4Jw?a^diW(~3_ ztr5|PaDqSDkMj-c@o-I|G0s>Z*N^oL8ep=fU@8#tVfv`DHrg0xB9QXI`nb40+Vr+I zx%L47b`S2!_5<+&_lfr-ej|NE@=4z|ZCfJ&B&`<#*t-S^O!5Zw$MuH^Eb=D!WBj<^ zumKj0T>zFfQ~=9*)w<1E5};|#X5FG`wPDsMZ&H7jKdvXRC!r_egZ2^4hs7teC)AJs zZT+hQ3bQe9(4YQ|`0;LS)}rsbAJbbXKxU1>*kHn+>5UAK*2rMe7yaSYy*&P1Dbg_ zdOT9wPgy4l)u^|8aodpMHHfAm`Eqn0!`3xOw*#Q5dD5xnPNAL^%wsE&0wEq~oE9Kf zD`ZZYECeb$c2*lJNt>twF&%`vmaIM73k1#lnxN2)V8_^2@R?=zequY0?6Ql{yOs~f zz+BL%2jX_cD^Qtxly*r%c$tSA#|DBRnS1JX)w)14Z&cks@Gsn~;}9WW43(bt#Y-x5K>%-+n|$koAF%+tio z@voZ5KT9HRie2&`LTG%TurlgMx?tOLk&MEobI z0!EM;XGrX-PciokMif68vJn)zYtpNP&Uw|;V}}?TH=z7aYuS|HH>Qzr#})#BkHitY z&gkv1(JTvBjbp77;_(Nt+&mU76vlYv#mFiN+zeByZPLpsp6NueQ>*|3s=ot(|E|TV zMBp1GK!Jd2z=41W|7~asH!FsJ8(Y=V+04lFzbvh4qk<}h#+S27I`~b}Fm1H+tT7IW zK+DY|Zv``#!!Lb4^aP9y?E!Ut*f^pT7{?R$VgQuhuPmQ zT?%=k= zvKgmC%@NpJ>O)$f9&lT1j1-2?cB^h%Vc*w~#yBs9cqqB#sOD65nm(IhimtOFHh zSfTZKzM1UYfGb0`GHeUx*LAloCjST(-=tEt9i@AD>?P%5J8YL{q+v|rNxON0$Ri=K z0f~6qVF!0h!PijVeA8JlXlWCU(BHPNUGFXGC1FGcaMJ}Au;|cBYP`Ddy;ODeHn&mH z&6uzpFWm--1tY)lHF;{LK?WXnkd|4TO`npQPusk?VRJ9Njd!9-_k0tHeht^%U zg!-d<&s*%}hQ6h9C^jn&1O-B3VBE|NTv5XI3l0mT%Rr>ky$7NL%XIB~g16*odkhOs z4^R_mX%5y4ex`}S!uj6ZgKQJ(`a_zDc+Wra^%3jPbrJnGTGjO`;pFJ+?YJ%1)~lxX zZ9j_(uVfJRteAF}lxCB1>u?#LxCL-s^q<>?NPB%p`LMr`rj|KkR~3_xftc()e38Fa z4UB>T{At!(bGen;v{&{qxRhm~v%47gX5<^dxQb4;&Kr|)GTNRYM9==s&qAxny$+Kg zTG@kjQ}p)LD)RkSCs4&SoW4QF_9n&`{F7{-kRz6R0wOmUl21hA8`R=F6TTac#Frsx<{=cmV`%O_K@}rq z^?$@pxPRQFwL3=Es<>8hJ1;t6@Qs!@gAMPBn2Y^t_|#XtKu=a06wC1_&kvK!@tB+A z;&oAbuRd)A_v8qAhlh?WqgxharoMFj9nl;)&I>kc=xoS6{fWy* z>kaGB7qWL0af67%nJ$KK_hlfUz)zO?=NU{$YSO|r(xHO3@g?2gIq0y3^F1082I5fPx!ZXfb&lzTy`udXhTShO;&cNiVLJsUR&Gu z@`wf}oK=r?SfBAmOoquxsk_D|cbSFumUCWJF|}fhijM_phz0GMLVw9+|BEzfB>^$D z&&bk`oQ_q@NT;ghY%Z7MDXu=QyR444w7P&NNTAuhLr!g@;rX!Sz98|;D`a{iu!ftX^i<} z!FAcLt??9~GQqnsMxU-b133<&UrI@RWCVNh%bwUGytey!AR-~`DOKe+y+$VxHeakp zr*m*m)f7k3Cw#WHTz^iWht&Y0@n1G^gZH~+@;+3Ec+bqsezOR&UCk)LTa46Dxi@vv z;HHFnO^%~;KCSJAu-Ujxp=H~S*7IpQ-a(=pi_Cb=P){A%h58|K;o)RsO>W%bAF{}g z&UYvAoBRUUDj?k(a*&ATY&Fx}RCWJa(Je3$%rd==PjZ3ThDlfn3~V(bK6hG_Z84i0 zUoSH!S8@L%Mw8M4p2IUyqeBZc+RLOn#u=^KgAFInfwcsylj#mw1MX3pk7SK5Vmc#* z$y_ZbAY^K5!8=HmqQ2G|*0`F{?4oQHrd$LQ^J&p`pJ}0E=n`(X(IFk)pv05KcSRNz za4MVSA)?Yd2c8vd2gVFEC9VhL9{G93yaxFwfQRQIWU|bIf{4(-3jL^ zzSBy_8I?u;oH#n$GU-?g(zW?RGL_)*`FC|C84k_|stdX4nlH;Q~7&Bb==S zkGs_U`%9+k5Zgl@!}+fXca^?Ge@kmK`ta#0e*NAe4cHc9Ppe!5sCH zL$eQuSvFriYKbS#tcuTq%aBnwkfj_DWes!)3jT9A;j@ZxZ2gsNZ6T=_VL^ggNE&hh z4nA}!X<9?{g6TH1%PIp&uC1oHR%0grF-{n{Iiw6yX)E~j`xYtHrdFyR?U22_SKP?T z?_V(WZV+qSezt{Dfx_BJD4|@t!TN{}<9*?6aEbxawfVmFen$kJ1t#KF6A^Ypa(v(H2o31t0roj1OZlt$vld^Ob`%<$v(L#_iIzB=|_8 zQM_9Yqop)Twx*v&UdC6963W^wtCZ$4o0dMB0Bn)34$|S;Fey5vJ;I|nY7aSEzj`ar zHRc?@>Elv#8*5bDqYu}nBizd9QNHW1YR@25W4kWLHR&044Y(&=AZ*s5%%_T4Rq{&s z%6RI;jWqLTF}jl)dyi-eo9FBX$YtwuXt#CBWQ{gY*2dWIxwz#+p5O0W9!4aHx-uEj zl1pQvHVmt=*6xj;8@1d&9N>g%(tfN`2@|u%gUsG~q;njCT@8utM8HY;#60bzY6l3t zR>uzn9HYKz+#kyHb{p)sd*cOHVpA;3XRG6L7CjzRd&kBd8)d6dFjj{->Bks~mN+TN z9gwkwrY(ceSFAc}ZGSJZCn~Wgsqu%=`M`^P#nU^3?JlhF!T&YYk%Iju^~fMOSF~h2 zWe{P4wZ}G94$F(uQL&ot7T=`gTbTJA|CH2ha6tHHqwd-x;DU-RP9^hzv^ju^_$=;S z87}_vN5pTq4{66Bs6IJ5Q5pe|9W}+b4ti>h_Ug83hNbQ6?>{+-wSyJ*9PQRl(j`@Z2n?$DO&gaZiR7@~>myc_1bnWL*j3hPC9y5j9BMiV#~lts^XUgP`K~^s#aCSx zSrwZ#WQ=aVpYJ7iz3>8Y#p)LJ1yLWpXretUPTfYIX!g-;-Kj0Ss_7mFEW_!KqU{`w z_l0&P&z@r`)vlM=;2%$r>wQAijJmOjylUN5Y6a!(i>b%%k}{uU*Or2K?Fj^I<4v|i zl5f6D*!ikDFrLZfG>zQB5Y(3Ym%OY-NlLtHo_J00O7+INJ?uMLKEY_SL+F}*)*__e z>jr-}yPaQUFv{?KY4O13a8)9F1@Athkb1dlsYqg73gZ~R<=5EJe%i?t!eALQhS0jt zgVSSGIe|U@>alwv&rpz5pYerX-dD6UO$ur2xR-ZicSS%+g@m3A4*A6k$za4aE8dis zSsZ)1l=i-KbrXgKz)fnIR|9Y|RQJYZBEuJR6OZK3czVOjh9bNIWBN%3`4$7?-wA_# z#{m_L0nQ%*QZxZ7SJEIWWDCUjm3eh0oAwF%_Y{6G=ouLOrB!@DfPhH;evJNC3K#i$ zgX`*SWM%LA&t&eWG$}tI_$69Opww?dBZHoUEHT+@+3Y2KNk!#Y0gzZml6G=*{C~!3 zqDF>73HKzhukg=jIH&oZrlxaz+O`@{HA=cAQHr001Vw6h8^FkiXTWsogru{*zi(J8w3qISqM2s z^z3mc;+_b$MPM`T0QlWB;7?b`Zr>Fl5Jx++qm`lT9G?Ib)DbFRoLc8ZDOEti3fZO` z0ZcCBtAQwJ{Flt0chFqQuOUCAOIZXRFd29AKijHfVdAH1ht9#aze8r+C3FZh=*sm& z{4eAre|T(#35Pr>LrADsUKy@#gk|C>b8rx07(803`A(TQWQ=qh;+Q#Db@$2_&W1C} z?kqk}YN5%L5g3r7vwM&}DzwEWU28e~VyvaQ;$Js{|+(>%VQ z+%ZE$LtOWPzoOwcB&6myCgkuf^cc`?^9n6|n z3@P0%YyEDHcJ51jCQ7&wUV7HZ`g2v8`3=jfDTvuS;nZnPp~EU-RS&8I0>}nn{eP*H zu0iu&dU#Pj_$4>Nx2Qy%j!Rqc)Wab zA1+dC@Ua52!^f404zd0W!~)#q6M7$LTB{`W1?gmp##zxgP|@pq*!crZ^*bcov}*4$A<;5wX^LYwb9R2q#~#j1LpLD-=hE(M~R8($+dEcVidZ zbX~>n>V1Jx4;Wl)`YAh?OAc2L`on#6i2auG)H+?|$Ybmh;V%0NpYk>b z+p+k@AP#rtPud0*O6(cD30Lj=mdbQyUz}#4ga0VMl!BnBLVQ71{#6;k`=4NA{4d;8 zHtiP$k@z-4+S%+;7T7};7C?X(z^u!@1)_z76p9N=16Qbd?r?6p(pb=~XD!4D_Sb!L zs_@(ceWo0$wn_Mr$?wU>!tFA%e)Ig4m)8f>eB%j>VZWX}8WzK5yU`xQL*8i<+ZpPE zajE0kuQ(^cT}sKX>-Ah6x>7j)d+oGe53YW)?t?^>8kM}geAka zgZfH|r)9~xCcGFJQ-y$s+HyTNKmxhxi0^61v-Xo%gzb$S?$?k)|MHq23ok~mx#n#1 zT3Q1JD}GoB9DU}tBXzJ6hiV9MqVAyX`f)GALHnO6l8Ti8{xw@t$OF}5|I+9Fj3-afsO`}s&SbacOa^;2BTJb|p8Mqb@P1`Yww9;*GG%YZK5m3)SrD?Z!74D!Hz%>jAO-F;t;3Du3@ooxK`f4t$R zJVYmc#e26e|3PI!;_kjrZ88}pO5Qw-}gk;i0jJVCeMi4iX&Ba3S`RDEq^E@ELg3N52MBqQ+_ebdMK$Y@>5ZQcIQyr~HH7iX7Yip2G281b5eCg~n zq>DTxa$Q9TtxS3PF*J9yAovFXLBWL)cI^*zlZ*Vr{PTULT+g-8**VJE?=bbk#0!^w zIRsIHEVk&DxRa`|XV4-&-y^u$r%lliOvES)DO==9=n+8@N^3Cryhks|W}8n###s`H zVJaY7qVypw$eTNutK054Y2FnnmSTSr@89jHgb6tfL^*-0vL>KsDtujITdw>~D|d-f zgYJ3MBfi4Yi5s{1+aL7&y?+5SN~@$t7;BGY#qz28qA-$s%C^RY#KJR)Wr@ci;`<7h z^sW;BXo?3c^{Oy`LD+0+?F|EI8H+mTYD9fVX-r3;9QWjXmc4RxL|L72!hd?pdFMP& z;g`2G{Vz#^`Cmz5^D9Xp@ii>BI4yhk=`f%-2k8uRh$R<(TY{zR4Hxc=VQZWoxK#h3 z6H@ZM27RY=LW%07Nw9w!=0_LG2+J2y%>KqQ-ndCB*f&fKf zM<&P92cyx!*(Ne!=|12agg-_ru>k?4N!68x^K`tVtHGNP7R@$i;<%lr2ji77a1=eB zYu8vtHI#gjOv`k9+d<$Q{8h0##Ycz{`LcrAa73{bBV0*yA=k1tb-9MH9Hn)l7W>KJ zz>^ss=IW%`)clA0f?!wwt(Qq$ZBKA79;ccQ1{x@EHR9Z4WdHJ*|A=0ge|0O7+ci!?aDqf zPhi4#AOY#@p+bfzM4pVPT$U5l#M!zhL?9has&8@FnA_=YOrczmcL>r57+Bs5rLq%Q za3(FAS(3c3F|GFs9jc>D4iS1F04cIXzp(LT*`W5YLmKi*hGaI#Dl_BH+_{YYsF* zLiP~AkkgoCh^JX)6<7|F)Z+Z{`cMa>8q_V#%am0XN;1S6w-j@!Y%@bsZy`ow8?VW{ zdmxkhaP+r$hQ>Gz>ar^2GaN3wk$Bn>GXSPnd!yVe=&5K=dBCin!0pVX9VwEejr_Wl z%a_%K)sHlV4{uVuxc^;!v7qf1?lE$UaJS{*yQ|2i$vfogZ=*(~Xk;FV05}Vfq~_z_ zRPsfZFZa~6D7$~hwTn&_<}Y0TH_Ed9U%387*%o~oOYk<~T{IRzD zw#*rP7Bl0r|CBjKEI(*dIU$txGzI5>HU^_ZR>6sk=S0e&hh>PLu*b*gca?Rs6x>UZ zb~@()K}uI0#T)t4pf~sp#@B?>jWg~jYUe(6%3PFk-m<6~Wv(;!oxQA0c|afjFS~`!PfIav(LB4fA}>ao=!FY(|vK(OR$4F030J zF~r^nb2|1OHO#m&FDw#OD#tKgno7*i`cZYRGBi_Bm9)w1ay0a6GTmIG!Z78SM-m<% zWb!1259bZYkIQi)R#CO2Y5e+j23GS09rTN@3(~aOn^+~wEli_WxXb~*_IHu4Jgp-D#9D(v(ZzHk_pm=$GkC{VvkNl1qC2<0l{88JQ~JP%otu{Z zKX7IH7p{5=n~Z3Dr6mRW5c@X1?)Au|D^kU>0INl?N$Z5o zZv@Z4Z%U}E`fU1zd`GXZ$JsuybsulDi!9&qZPk@VU`9FBxl$GHu6G7Af4GH7?`UYP z8KyhvxuSZZK7>(oV@MO08h`6U-s@VR{`^_rt``36I-_Wx8EcwuO+}{=7ThWu5aBMI zl93uA=1i|__EcoNF8xJYfd%c-X;IUR;tAmd!RHiN*$7Sz@x1Y7n}t9CV|4N6>8SjQiJZKh=N_4UM=NG&J(~L2{3L0C0LX#r zmHs4sh!uc7ZRoya6sNvvROk=+7`{N0*VRe1Ewg&KZLn4TWBQm;0f6$+kPS}z^?%da zqx)}uD{+$Q1O1)1s^v_H|1aLM{|n#0rP|%UXj}MP7_N*K;tf3fK|{5Yegigs>UO=oni7+?N`Bi+52BMGtDzrr!!vbOlL;7~*HU*Xs)O%@L3U$kv8 z4K@ng3U9q05;+)eU5fB9B^o7fE5(wU{__vo;=J67V(WnRC1!<*7LNXdw#R?bHY}J7 zb5hf3KYvy1rzzPNuBCQiU*(PvdvDAKpWhU4E*bvT)bgZqK}MuS=+hOsmHA5WYz5^~ z_S4yMu)Aqax*N5s^^#AUa-bK$G#D{_osaadFng*OMYca4O9v)#84Q1ExPDD6kV()) zGr3p!%Ck)0iN5meh-BFy(N~^zc=^h+9e?H7WY^8s(PzZk#X-{|EE4zFFW!QYTTL&@ zWQ))Lx4fMqrUm|g9ice>TU`Hngc7E7~>9u`2WpAZ}-D znv*?9llj9%RqT-sb*xeVjL{5b#Om}|jVbl?*soR6lZWa}pp10y>Lz_+U zen~oClr8-PWx8&vM}N5$#MbfaOSJid_U#|gjwHy|4s-^4VZv&`BpL^93zSg@5Hgp`|SOf_6n&s0YPbSSe|$k&6(sm*KFzU5VZ#_OdMrVgo#N7T3r1 z0{{M3f5nE#I>d!sXqvh~zjWQHXCqb`aRcQ}QCgvmODsQJzwZ3Eunl~7D>nR2nOQ@J zvG<#f8iDxBq6?iy`zf;yCfe8)#>-bdq zrKSF-5(?*kLHlu(Dqw>M!S)t!~yD=n3NtJ z(HDp?G~JElR&nu%-fZ-jl=5-^ip#SGK$)Jbps;OrvL@Rj)a03Xpt-)jER^0X_csV1(wKr9jeNGhMKiz#H~JXFYahiVagiRH{Ps( zsIOYMNTq6L!t5YHT*>(8a5wfi5X4D}GO_&+UMVoO)J6!^yo7L+r{ENf%rr}$+$IZkKUJEL?l4gl5< z4;;f9p;gJl@URnfR1}`K{(9~wf-WRMCW1SYjJY{MNI~`lbO%nm!z;zWDx6IQOc(Qf zP`6R~WIpl9D+xBlg(PyMq%)g~an@U}Wa61h+-1{E-gzdcGv$n{L?q)k3hJ~fxD`Rm zB<88r5xb-Kj6K)7w>t^`zOpy*n56cX(O0dXcwO{ z{VFwH#og^c6JUHG8&0-lK!SMw?z~}SjLX4@c(;d9&uM-dgROq{4^j1(5+7~xz|=At z_)_AJ|4`xwE)(6J^L*y)^C+niJQ7fgZ9zKs(~G;UVI8WVFB!x)n1A=4IgXvjyRU>E z@V|Hu*FU}IFCqTVLQZ;TX-wjdB~@E#Jh>tym?UL*T6qEz6>l@lm+MQmIeR3j{kbe~{L*DrWA;Du^fJ zjVldhYB?JGq*RznBs870>%-N)_ntzimrwX5wQ4n3alqJbms%RK> zF{bi+5^nTIZ*`t85_h8f`thVg=DOzLzY6VKCtd0_<1H2_l3)n(-#2!2~i;IE9 z-xB3g+(Z4^>ZC!it$j~SKM-x!B(zLrk6N_F8h6r#XLJ{YcSis46#B|;#IB`JsM+7} zQYK96sAb?whNpTyG_HxEyRD6Dk4V>Eb8D2h^)>ct%V^GWt~UJqWbP}$ooev)r^H72&t4!+H<%2VuO0-guQ2m}?q&Sdhw$%W z?LR#wMFZLw?HBrIA0Km;(YJAseY8QVwGh0mGQ2>+uQ5fOaN(Wf@&g0r6qhp~H-Z;J zb~YDAEkWfEmKEA`1nc*y-zz& zmsgt<0)3y1-=#ZAF%5pQfcR7GX#vkxz~y3I(*XBjTnByMeZDS?oOGP}Q3w5@1I|!^ z6>=#2F5iCz-klvKu!pYoq4cwgzq{0!GB)CP)z4GpI*Y%X>{)@oo9-E(a0mU}0z5#8 z3F8X-Mgu%Rg$eiy_9n2JAMM%$obcru5k2Xq;kyFZyNWx%+70%fl06r6bmK+EcO9bg z^sqyigh=clJ!*4k_o{S~wIbtO!@5XtVpjDKXI0upC}p(UigJ`#UGzz?D(cilpiowH zHdev#KoAJ3|N*Fd1YI0zb6(Sic%6{Uhm2%O`heSRFG$pn6!VWYwX5b>rg z*GOR#)oi&k=Ke`M8*1a(a>}%k1QX=^zwFcoNHQTZQU0-ov zt(50-)oU~*<>Mk}^QK!VbZWH)RYJMDc~`9&Ma$AS^NQ2_b+{t{LT1sNE_&B+-Zra( zeC|~dI6wEc1gu#=!uMeqI;C>yf)X&K=1fb~I5n}Ln|1<4uR6kDMcxBG?iJmjtaKw4>?96)QWLrZ>y#4CsD4uQFz&*ew zNq$<|cm-pdqG!NExuky$6U zBL$OapnSuQ4%tt`%Z6CDcdPYhcuf;~DBTbd^V%^P*`-h zs}*O^&@hKrWDGUS8hev76&X_-=|6(LuDl=F+U;$qWvpEy)R%@k=AwiU&r9|MsbL@G;YwUO7)Fv&bG;YL!;?$zoEA;CFYa9Y$_D@)|mzOu% znrnrI5iT&pdyG95Xu;(uj^lYM7Flc8&cmz-v9%i%q~PQTwcso(@vU0ash@H)}Io!3V#psRO_DX-rb*k~$Qf*#y@n89FY4>3Jlc-Y!%YQc*h^ib4T!9 zSROPfqI@b)Sd5AI)NuifD5Xosz)VpR1#LS75gl$bdWQHY$Aw?Z`U=9{+DRQ@{ROdB zW?eDWHd$SXE9Tr|h?h#0REv9KuC7bwu9k_M!@{y0o5U{`qzAoc!^oId*P*!MbdrpR z?(6}#OPsXUPRB+GEbuxg36c^S;^br@KG+nb!8~h2wPyv)@Q9KOmvfdBHN?@dt!)zb z%m~U_GS=VKaT`kH4F{bCyr(pUS1mE!Bop5dbbFBjSsXctH0im8%o^`xww zihwRjz+EdCiL)M}W3f)PPzow#Qo2=hRvDZgEe?bQRmW5a41m{x+I6^xIIIxKEQ7mZe7bk%O zZ4G=SFw6`_Co3l!N$ZC0P$YeP*0%0%GX$w*tdGFb-4Z2z?P=ocGcAWxe3qj|FRz*0 z=Rzu)*}uq^Q7?w4mBT;jHYl7mgS==dGZ&1-{DzpH=!ilOO?eV0SJqK~BqbAB1~jE_ z`+_`CMVX5C)@+BL#deX1=>=pJRX4rv)=a0{Gy9(fDG{)?=G--reyb|AB~++RxlbbZ z11;Ur*5%?EB*J!8HL;lTa$hIUURosc!Ss6Z5R9(sS2LK5nQRhGBhF2%IeGPU9?4oN zw_3|1mD1Xke8JwW{H12UZLO?dkQjhyFe1>>8_63z^y?X-u5QoZj@}nl=4hsV z@?T^CcwJRzl2VaTUU7b96jBPgY;L&qK4Ta_<&h_m=$ml6?Em8>y!Qc)L^ z+}Lk+u0~vzkZh|YlTId?v2}K?UR;-uY?~yp?R1JG-z--Tlfd{giiSCIOy~~I2r^k^ zj>-^S>nr9C*)i*#i;-LLyn)NcCz>T*=?gh@&tsL!Oa0@v_> zA2BAIaD+H6NbOrP;yarUQDdyf>1x36nd{$fi|w-K(>M_44Hw57Ht+uaO<#hBUlg|k znL>cul9s*{22c>%o_*#-X7^KnBi7HA=y8!iS7LYIp&5~5j;=j{+X!qXI*Kl}cJXf^?`YIL>_XnOFC-CzQQ~}@{Yze1$FI`%_ zh%P6@ttl^uN{3Z$Kb}mJ=3kVz?YXn5wt0&Ybhi<2_gk(Z@6IqXH1Edv(e%*+1<}2D z7uoW+xo-D$MpBrE1=TE?I>r`-zx7!?3OkMrrEk8m!@jrQACy%;*OxTUVYnuHC(J?; z7`M=SY4Ds~xh(xCX%r_zPJG2}L5w^B;m|BbR=(s{pz2obfoGJKO*IBq z3+C`6<;IL2S_iJ3l;{Tps85Ed56TIC|4^@NgT8DJyieeM)Yvf7WpP@&L#)M+sT?)A z4d;cs>|=@XLVt3)fUqwAK#G+Y0b;yppo-BW|Ct&6q((=g{vnKau*$8uIGlKKZFH3i zCkR9~Xd?@cL1NT5%0-K5l2h4hCR8l)>gpAfHEHRp6Q&=;8(zELx-^wSj#goY6 zAxZSl(e!YIXYcpqy5RsLF8*1lGnmm{WXcnNE?e-2jpULi&Q$wW+7`O^Lc4-b87be6 z(HTAoMv^^KZNSm{ga*%aj=E6d$A|K7qzWaiTua~okFa-)u0&nBg}Y;RY;|mRl8)2q z*tTukwr$(Cvtrw}la77YKDhTi`yJnR##q0y#>kIV^C`@lRpsM9Kn$go0yifxWharFUT7Xt6ziW#TOq{{5}foohk57p3!9f!0Q z7m1n5(@sTSS3HUrNqLQ(U0<{j+9W&s&QKkUyR_636at~TOV-?pSdIY-`K6AME$5#w zTB}O@qvm{p4`{BHAs8taCzj4imofrsjn8T{-YGNi%mB2G&jxUB-)iQ~fUhbLuhpZy z;kX?=y|=hrL%sF5T>ZUsxEed#zgS-o{k^#`tBU9)3;WSI9=E`o;n^>2Bv@(r< z{K~^WoXkwOzhrkd+T_*R`eLDHh-f>mCZaRh_rs2Iytt+(Cc?@<1<0J2Zfd#jZkjd~ z+HZyxRQG|7aCf&#=HQhYG>pYiKL}PXV(uDlp}`R=mI72?tLXg1wH`~DlPn-Tx7 z{zX$71!%?Oq$*AHl9KN-Zxw1`PU?I9p@YdV(4v8ma0nfe%}W>Cb>eOE`^lK^Sc6kf z+X&Y{Js+H8$jnO(v-4yY`{R1Mv-ii#2Phv7!Wf0_L~yVPO>HFGBiiR&wDAhi+*G0@dr3_NOMkgvS$y35Dy^;jOi=Vg1k*ZJ z$&W)GT}h8p6tprnvV9aO$rjoSNgQ^4k`pB|d8iL9R&1e;!pt?^IMxdmN;BrjIGQEX zH@}JRXYMT+IZ^jt44=LlSSq-*Mjt;=D|%t3~F+N7r~h;-z7VJlwu0C*->IV7_K9HWm3vkyOcD31sa_L^&;4+9$y<&nS zo+sO*=xmHdU59bNTdLQ)kzDI6@dojqK!Kt8k^ct>6qWx5lz$7{<)CnZBEDhU46vE9~_WW6x5St+bT0etG6Sl7JKAbfoBPB5H`p&Ffa zSx(K`T)J|6ynB1Qe~0uzzf6|x3qwFq_Mq7-i#Bi38iZfJlex7S>$l_|xpUMqM@Hv_ zq(|X_-pl>w92GG+`&OzXiq4BXt)FRj8z55|Em(Pp6n0TD6tEH{1(lJVL*&ZruEg=-7WHvS@az}GaB(90*i0`z2gBEtaA4bUh!-Dd(*CkHDPH31dOexa1{ z6}V`qz_!X|Wm$l$miux-yXNOqW2R%_#?i4N8)vLj#^;#mPmFq7O=slSfD`#iq-+r~ z-16gza4j;$=`IO%Q6p)PUx{HCaS{gs9`aBCPTECKcJ=5jl~*`3j{yK=aB6HL3FbDf zks*A>MZO-ANt<_d2Pcs37UQ0YnoCHys6 zbDSv2fPU1zRBv)%?2ePf>u(xic>&qlb0A*i{u^HYt#y(AyJN{Sqg=HNr5D;04-6<6 z1r37SELzj$Y{?|up#0+=@$qHP*y9@VDL=wFhzxN2mt(oiaG&gSzWn$HURaw(|KV70 zfR1Huh<2TB@7p5xJlFcYO|%RXXySrez`^B>EYVb-OGRHNO1@ksw=$9F9yy#_Sp(A) z)PftG*`ANgd4Z>B$`uu@c2qDoyBnz+v^#p6DM=hCquc|REqdjTuK_yB=Io~=L}MiG zWv)bx59r47vO?b;BN^(L5jm1P`>>Blr35K9Q)IHlEc-MEE!4+Ig=m`N5D1@MPh3z( z@DA$Ue>a%+x0G1ok(w4cyz!^~T79(P<-^1II(iK{u2SwRiGTpYB{26JGbfPs>=2{B zu_XhUj(GhHZ)_M*=`+?y*-*$X97>$sBH% zEx32<@1G(krg8?AB|L3X*tNtXzHaJeE%mJMP_=+?QYzb8_SN*a8>X0hfO!7ifej;I z^z7YjUvrM|yh=fznn58mr_~E(hiSRgORDX2kM&NVLf7D$>ioUS_Me_by+Q-x5r`DM z|Av%*OK0RIt%1zF=UM@y?K*42^epQEGhZ5i#uqlk35N_1_>9s+u4B99>pa3&F zU_0Om71HYqFAQUQqyixWM* zUmLxakj`LYZUuF2>N=g?Z&Z2mycty9-g%11##0Fqao3FgStTkb#UPDBbY`zIIm?nk zBsKHOjGZY_kO^H0{vq6B?<6rZxe|%&QyGHsYF|LK=%XkvgqX%cxEni2?k9gM$t$J- z*C(2tMj7DF0_l6l5tNfLw$);ku*NO@@v7PihTap_KZGEcz*V}StMW=01fuF>5#g(m z{uCn$xIEsehQ#H*jAZWV(OY-?| z?;@uujsr|vmPo2rtjyoa8V6s{ei64c-bqrTndinV`t80N*rNz9s;*>~c#GG-@H~OO z;x{PQu3H48g=3kUYO-yK=ONfQkd@r$ZSq=NMKr<_HVr$Sx!bPa-td3 zC6ZEc%eFebepPX*g#Ip|9kJuVt0>s(H;!OF>q2fcsJNSRmEm0fmcbbyXj@39SW#s$ zo@`;!aYPA8_c$oBy6`DX6d{g6sr zbJcKRl%E-kv80fWKo=GNuWZo=t%q;W>FKa}23dks2$(YYv09c70?m3bo z2sED2Q>q9S>tD_k?+d~Bz**9J7OjsRc(WD@Z00<=5rX2>0czDTro?L5TQ@AYDZt-a zz-n!NJOx100{)9>|LqRsEP)v*qE}E8uI9H=MH&&L`7|BL4(vAwLPP+dpo0Xl%eq>8 z#qB({-SWUXmXF~dQ3I;p97Ui1-KM^NiktcNeEhAe`xSf}WiwG0kjDq@=nGB*?t-Sn z-UFjMn|0DLLqyZ?S{&LI;RcF_r=gOW_7Mevj8to)23gcX=tF3x6}2gWodK~v`X$cTX(sLZ&DOx~_N1vLVty5jX$&`-Q&P^Yc9?h#*K5tS+2y}QAexK<9*aY*Z&@^B6@@oM?XV$EoKz)q+h zrB}|_&wAI@gTfVi!qt0Ke4*r{g|F5KOM(Q6WM-vU6G9?9(99SWV3UV_^ zhiL=^BV(x^(T-;u-e`;=gi}!u(7xZfp1yh|+)OS5Qd9^YCNt}g*4>Q`Kb~A4@p{M> zPfPSB2o#PiqK#7pBv`@V|^;Dq3O8vJVXJ zwvbiQvNF@&e(_X1@THAb%&r-)+D{$dZ=IS?W#VxspyVWs9t>Gy0lwW3YbTY%)BGr} zPqSAlsMedP5!kZ^EDxoR=?4@p=^K!8N@R(`lHdyPUS;-0;0;kp)LFQ?jm_9mZrzjY zuC`Uz0pQyukdKnFA4QOcO1!rbA-vUKUs^qPsOdw{+Dp#_W5MnvnCb=dc7zhTvTYi8 z^$B?xWGV6V4;>p8Wv>g%AMlJa9S6tPf!L`uy0KB%!K=>gQ+S1O2p=Wr40)n_q}7ic z>UPb?CUg&AS5khGo*v(Wu2#gKC^iw`mKHYH{aY7asSTv?6lh<0U_k%>BL@C0t@~Fz zp99A84OUc>6AW$mm?Fetv43- zKJQ49^m(Zgyltu!)Ap+qL*|ab{k6&jPLu;0l_T1kcArG2X#T`e^_d9HF*9N1r za?kI$r7$YtsDI0HaS4k8-TIBOw!Sp0)`Ch+c}VrtV9)K4NNcuc?{GfAz1DQt!~Ek`aP}VXEBN z5(9qS2P-kXg++IH54bnIk=M5?_Ye3&bV`?=?ZpMS{!o(X4KlYb(;`t)O1|G3s}UA; zhw`(uYQJCPQE#)z-z&;r){rBARR}Ww1t$Mi=>5O6Z>7zWVtSUIXZ4FIj4ezEY>2o? zp_ngznA@@C9^54QP}QzuX}~rwAK~FUQxD~M?)Oc@u{T`e3;l$)W>jT>L>O4P1 zXoMw_BwNj02rH%9AV&m8gl4XF^pX_c$x}<;fy?D^*g*f;{Il$AzZ@=c#8!xnT(NB5SwHs!gRp)y5SWbRzuQNnTeERdS(}Le6H2j}!%CFP(l<<-sX(hGi)x(f7wW z57gNxr-6^ydc%H|IVT`eisFyiQ~#7`Kd3dD1dkjAh5K5~C8b|&9ZpN~PpEU^mQM6s} zoK_j^(S*OU{suSm78Z)|jk(`Ekg-R7{Ld+;dR~xtjlCU~@*o^%2e6bpBoDEs@ci{m zOg5!j@cJ56`&TK6TzyK@H(!sC~J!oTD5pJ)Yq#X zSR0|YFi?b^--JeN=tzD#BYUYUE6-ieH__Q!U7#g;Y~eJEv??tIJ0NuGEq?sy%C?fJ zONpuqdi??;fTBJZV+Z^kwm55^;9xqB6K-+nRtvu&=lX3&Rn^|U>afI z+upLVqTJ_??XOhHxe5=*KMxFs?^@=Wrx7iKQe`Je2;iOh$Q--4g{rCVB<^1GWG&3? z_DvzoNZVA3!JAA7Cw&g=%IX`IJ>JlZZoWa3rZTGFLyRN~+@KYD zNdh)awgYAVfT@^@tB@U|D&1`;R?IBr5d0yUG!2UgTb!c*&q7p}>MQMEb6m>*1!sTL zAO01$*8hrIk>b#Q#Vsg85=8pkL@MwXnfc%@1sr4Brk`h2n+ajkeAkR2<^LQ7JZF^) z?BQ~8cJeqJA75F??(X{hQse7xm{7CZ-;YKh-g3H!U6ouLhJ$a0Z{^k^NRiq#YDU|~ ze{^j~B;Dsy(3eU47iXae?hg%<&%J%MX}^RISYw2uhm-{PCh*Izc>qp ziiMswAmeqJ_ZJ!32XU6R2HU(VCe{*eQ|wMb+~4_`KN>X}Vc-jO%We=bB9S(O1mrB> z|HWA}JQ<~bwl*-!u6km1o)(c;3_f>f1lZU9ka9@Y%VuyKWj`cVaBySTX2dFCi^%oF zZ$gg77xpVtEJsE-0P{uzJI~ZRzd!FdCy5F z^)HT#IpPEPe{)<}?w763m;dBM9l1*K{0s^3tDaQ=js$Er^zO$|x@QdEC5>WphCMBf?1ODTz?ogx_O<}f&7x%-&L zkjaTqttBX=3s`s1^;s(p9DsPC2ts_zwD=ivP-OR4wo?bpc7mejXp}iz2_<>YfFx*+ z@4^?wr>|td7?u|7{`E5d0Em}Cj>pCtbh-givDPpfPL7z`oz>6Wx^g?>)?WdwAWVHO zbQ9MpGG@zuo=8JXQ)khu9`%)<8mq4I9G+MNLMxQcd%M7FCr|);35b_y2G>FMU19~t zCW6qX>98Db{6-iA{2^ap7$e3XVf-LNtZ|O}M;PmFeZZQ33#$c&v4MYtF^OC3pKHSK z$vVLYOjQw>tgg*)@)OcI{|sY;Q>q@1k9hi9oJA|lcOfHc^(p#M$W?7At~A$Lhs|{X zSQu0JS20h2n+~(+!=vuLJEEr><9sPKi}_N<6LpVWX!gQ@B-~^^JtYD7Uq_gjg_mCkw$*s2HNCI3)Lzc zmC6@AwaY3SD=*j|x#NA|Zb`S2?I*pb?5?=4GTg6lpZ2Rfzo3T{f{W<+j9f@u>M#wH zOc;cW;FCEswTctR>DDO^RR36B9_n|#9j;DY&)?R9A83j0eTTu9xycC%U7j-Pmc2o| z1*P&Ddvk`tUz7>*hw}n|wH&WQP2`=W0@(VX?7Ox=V6npT)7Gj6dpv4#u@- zYW$wdvC~qzi*#AEl&^z=8eKAb(@VVAV*xS&#e6P-(GNs#G~g)|5(;GC z5M| zZIH!iQem|BENh;VuwdYDl_#aWVJMu<2|#v&^mJ+#b+kh} z;NBF(xgnQKS3aRVy8hrHHWC6SGjy$xREd>$NvQw_&%8WcOuJ)*Tb(@psG-b{^NpUP zVdzzDN2@+esMi;Oz}rNO{6?>TapP zvO`(JeoUd_O`n5C5dB$8%7_(NGE-~72$}?)u^nN2c#6kY<+G=+RYhiw`X?=N38zoE zJk@*Y1!yR$oEK0hDfK?*w*GWvp(6@*!S|>Kt&PE;QZu$ZT_TmYC(3iSU-e0k?}+IG zbViPg_O2TM^gCRd5@>TJib93jI+8IjL@HW}Narl)HqEJUR_yh}O)MreSi0D;Iv(w~ z$080g-;|vSLRc9!<(6X0DoZtqO#79n3UlVB&1_nn!~NDfesNe>P@AgjQnkeC)D4}& zwpCi#aF|^6s&F0O+1s?gaSZetU7oV8%>ODb756_=8~@Pxxw$6nm8mpeH?_m=@~#P; zU#~i@y=a)ds;q9i^hi@|*zshtm9( zlJZv}dlX&OTp=<`{ME?o%1X z`fXczPD==zNuRilhcXE-HB|F0t=eaC9VmoXgSOlU4uZRc_Ji{TZ@C4kC5P53t=vj2 z4u|qg+oxjX>X+*3Ctt{1=cD(q)?cH>+k+-fuo_oHM@})9biwM6;VtH@v-l;3=u{9>?xG{{@C?69HBRdMF~Z?W0e6{Zpq3%nNcn zzURot4mtpoibMt%F|J2EUV0=aE}n@uat}&sEGJC25!Bc~rr*XF6c)H9rG+6<5NrYN z6myYNW<-avpY+?E@pO+(DX1sb4viC7hu^s@?yJI1pnRdBK%?3UcA=Vi`|;Y4Fc{Z7pEWH z108RkUcD5xdB-gyP#tlQ=hQD4X=qMl2fpqJ^C%QVgRE$miZR;i-c5sAY0s_pD_bao z6_W9uk}VGez-pbYYA~k-%ak#M(3buZ6*3k{TDRH->lN_YqVD16&V_w>FERL@wc^qv zANZc-#jJAmKH8!vme$mv#!m%XJ=o@Oeqm|5Sw1O9)|+IuNKZEQ(xL}M|gd#g#W$ z;6)X{9|zo048bbk(d%Jp^)U_0N*Ql0XL!fXt#Gm)X&*W~0KZDgnAC%tEO4%{>X+K(JYKf)yKU|}7}NCX7{k%r z-2O8_S8eZFIcBb*b?`?l8H4lu^FNE@tBmSqJm9$|Zs6)p;3bnUW=0lo+YKcoCRY z`F#VQ)V3rVFY$F!Pesof$Q9H$^g2=tH3R*1RS&l>xbG`SILH;{QykM(uuo^F6HW7; zZ%~N*N{S8F5>xXJ6M5`D)v?+RB>3XJ*0@^B0?U3?@hPO83Pa>uY_*{=aQXh5jDr;B z#7MNcPW_7IJAmCmhwcW5^VV^983Ti<{W3nPl=Pq6IFD-#_? z$Y-c6%T11TtT4Ayw2=NLKC~{|H9)Z|QZmf4SPziTs>mNJFIO+})6z>6Bw7B_xL~t1 zCl}~~nlwt1WGp;XOm0Od->U$hT6Q22!&wBSF<0IqH6d;+G8)Zthv(Y%j$7)I6RIFy zA7e(vc)!(uvyDx+D6RVp8N*a*ugX9$yGW5TM4sTL)}P4HCE&s5{=H;(z7KARh3DEI zyKfZ^#tG75PW3kIMnH2UljzDPLY;})vYSbB)Js9qW4)e`(U|XV%5F z*3XVvU48pG2bhG15@VNP#rAd@QI~_B0bvYYIFh_%=_7BbzGuAw)uZ%_;p9wO>p}0_ z9kit%3C!o+qqZ4)(ssVx*kg*yY4wOl9>xunRYJ$sJD7{{(m9?Js<3pkLLSxx-VODb z+ZCLAgpuMtynFsc!9mIlm^P-_aq77ri~6*R0e4ht_g6Db*I+v;?r8j<5O}zHNNH4A zvN11CKb9{mc2&-wKAbATSraaH7DIkKJ=d<(PuA?axVOGPOgInN8uXfDW*3PM^MCcMEm;UhEoLgvA9|(7oJ};F1d5N(xVdQTp#1N?8 zGI9SSJ=@&O+dKdLorY#`C4L3AbAsT4v{@cSOZn!b;W&X(TN?)yEg zq=aJ8S$!rfMrRK+Q9-mUVu6DxDsysqsbNm4v09e%f?##XVelm4Ag@wMyrz3Vp9-urDKofoVIk@s4k=i${Roq+C~AQ;i=amR-Me|^XJDCfs3tS$Lv z+@V#fqsZnZC7`oKI<24SzzfTrZ$2tQ|2F5xR>I})SzOeU{#h=fc!K*KM#k3`hpd=G zb-kyxKM#1kSpZpA_tD^D*lSH*qa7^MD70-=SN!C|fS!k!>EdnGZruyVWa^R&n7t)O zGPx5IqE1rmE7lDSLe#+lWK-r=a%^czRF?Co%TOifV*Q)bAQh_4xZNTZccQdQsWh1S zTL24uyYt{g)~Oqgt|1=Ux@M+;+&#=@nhH@;)t=128!gOW+a#->ghdGHc;p5it&yF5 z1La0ae5x)f+IijjmTD)h1Qm}6c{GM?W~X+0yJ7pf<>%-<)MA{;o&ql91;{GDvjaU}&%OI=-9 zQk^o7%hWVt!ef@#msbG93_+QYsZBWEl<-NOPAV&=+&3P>QDIStII|YU7bL8ts}>rK zVjomYm-IGn)Vicordl>QIbGDV2)CbFpPoxKr6muLw2~VM!h$jQkhTQ0Q{pVKj2Jj% zgR%L5mnfyg;QW&PNhw*0Faogy{V%j}uPB0Vg+Fj&$2fMcN*sO$)@MpbxmkJ0o@oQL+XB1x=S?&M6z z)o|*4?KPUB!FQH)1vYzrVl*AT{>x2}&$(;M16jLs3EHOMO-h?h^l zf^t^Wu0&LjtkAL2@V)-RbIHI(%G0J zN7TnW1{0Zf?2J0e92#dY2A`7_>wfb=`#_PCIe1*NgNzJc=vC#i(qucmsFDBCjkQubA5u9Bm>!ei$KPW*2F21lbPR(!B6p}HH?;eTZ<&tC?Eb(T8P_|}NR-%d5P7tw zwic$*kCeGa>EE_gpmCIAGe4I}$qTnU_37p}KI{d? zAYlRa^VhwIsG>}6L?ve2>T-#GLv{I5TET_HWzC0wS$MJ=l$*}+#O7}^ma!YI1iU1+ zE^?=ttpRUgZpF{=gx(PTb}qFvmplmK+{eBoz{mcs^?6N%HPx2TPT(9bLpTxbB+*Bw z6umLN{?nP??}zg)go7@mTta~@?8CMbvh$Z$8-jP^1Q`Y_mx7f4% zy6jXQ_>kxrG~gOH)GZ6p;nUyI!v(z92Ukr`AC~~Uve&~oWmZMF-g= z(rY}?)%SS{!m@pD#JT#I#nd}iypPzROjF9AHSw4!XVB!ZaT|2s{=gXFlr+PmCMDhX zDvMc<{psXp18JJ}rQK&$sW=E+hYM#pkJRtY`iXE3`AJ@(r&$kM&_=)$k$?VP4|P*Q zZ{o1jTABZ=_(e_{;Ci0~$=&I~Y68~T>B7YJ>>0b>U+{fDepfcR`BkI2gxxUF ztGbH69yc*=FU2DN%#2?C3YVP)^UtxX5c60PdUJ$AmQiSUBrCgvhS-!!B~suWP25aU zX%M?l(_nzb42KUa355+MJ)ELX=xFpxm@_e2j~NSABvpv{JnD~9#Iyy6hBCQxg?byA zi9sYsLVP*<>yohTlrlhg84P_n_|Ho8UD`${f|7x!P&Ge<1=6QhwV)%OG9`DngtPAJB#kww~;RiSIBz7wv4 zL8Q@CaCMC7bar&%;EO@{gwYHtzXZ-I+@rwEY!tWe9g%St{EhL|s`_mZ<&sckMMx0k zxYj7^6-l|?wnY}bcsswwO&n-Mv0$+eI+tU-rxskB=W!Yygb0iT{5F4S)bthecO7k4 z!#zVV+Mf{ue`I~lqRA)k zuU(-Zl{<%5c~?9_&Q(0u9VOe%D~%lCVX2DBrx`Is@sy;TE*N5`_D0m=kqL339my5V z^sR4V&BWJWuX(EW==Du#Q}}&>@H?_g8&o>Y2t-fojLSO0jp)o}c^e#i^+C#Kf~ ztp08+;-+`);3o!LAA&Qc0dJz%mC{DWd?w0yrG?w?!Rt%cq)in;~1iHXB)o_8^ooE z?#%*Xnz+o|(}MV18VL*GX@3?J%H@!LM@KOhDYoM_;-dRL`ujT~vSuxxA3Uv~L%d+D ziC;;;Ds8uqw*OCOBePbi^}z0-&MlxY*Z%4$`}5-krw0xlo-4o@B1c~-$++HyF8s*e zrI!zz9{UI01Q^iQns_@73`!|HO>g z!CzeJJ*3a1bcyWPl$YxY0;V->3kt8gSEW;dw)?mA+#~i*lM?{X7$jq6CL}U zV{t9d``{^fGrAB$0zHT{~Z z_HDiL9&oF2P2=k<%gsH@>aIfwkAkJQ!=Z8E?{1EaN$*ZF_R?;B><&}5B0UljJ7_5A zLXziwC4JZLGcfJ1HcYS1q%Q%XOk}Q{I=duVi3cpI%T_D{Tkd2QxCzPNtd+{NlLElK zg3@~hcD2SCM$Fi0rJ49#e9?NQJH3}?-fTzOM^B)X6tO|%q^CA)E_$RI&bLi{7}$@o zqv#5TyXbO>yR;_V!np|cjZk0`b{pYe&-)o3^bu&?_ZTAdK|-YX^Yh{n3yIS7_;1m# zC@=MqBHtn9`T&}1z7>E*I21IH6(m){Z_CGkYFF~FdFVZ6BI1hNo#oywjOse~KWl>hk*C_O7&|?SAhWAhh*f$n(Q@_2# z;SZsRDw80cOvnF>Az{i+NR1^tHVZ{k-8$sm6;qZ?{bojX+JvgOibcH;-Y8a~Mo{4r z1ow=OQqf8QJYbTQ{f72??|I7mg!p9uYA!CRYrTCV z@}u9F5v$hQ@>EY)w{L#GpGk#}s6XyKCTd?H&YsXEJ%SNz3&pF)LbV`3B#?v~vIpfw z6NA~|^Y}hk?-JcrtqHyBg)0f#=10jx!kCGwvpxv^voaT9BjCjcDz2)5&l=@_K4}?U z(|_@Nj!xKBO*eXieAU?t zYK{EH7Gg(OWSM1?4~l$ggYFp6WygEc;L9r>+++L#~2p5U8Fb_0wc6E!`NxUM|BmD^^TP8M?t?)Ry(Yh6R<1As3c(1&l#YaHl18 zcD#aP3znJScj8ZpFqNsw_AELud^Hl#6yw_!C|7@leg`dUB$&NEh^ayz1aIT^xmq){fTO~i+?))mCV3|yNrsMU^E!&JTuxS?A;h^sj;|6FlpcGu7DC)+HX#<_rq}!W zmyrQ#rme?AKJJnzNB}F3f$^2+q?Y@|SO%}R_ZtX9gdMgf=7KFTJbXT-gPz3D#1G^y z+j4mD2y)-4P$ zIm2?ZbgTYYko;HaAhf7i2@1rqs(EZj^UUv=gfVf7&aNK0 zBP<`hnC-P{-%`SeOrzDC4y2#}5cT#TH<0FIatk^uc15*qB$>&Fa*nOEm@35!O_D%G_?xR_qy|os)FBvB* z83cw;cUeD!uTq&encGPg?L$0LaIx?f#2hT&JJv78)LYLJq2&)@x^I1dQvu@xGbk7T zUhn-);74*YCA+xq2Zf$2#fY<=f4FbG2TR-2FyN{77V)QmWWTOhllu~n*hrK-*~uOh zrSz=Zq)6{)=sH`-y0i)G7UCLzhMAw49qdaHq|K-}V)1!?htIb=6ss@ACyX9Y8H9K; zyur6$--I_68QJW$k-A$VL9uxVyHeGk!shkf?$PD8VzX|((Oc)!20d>|4^Jx3ZeqwymUhnu%VAVuu72@@TW!-!B+M*j#bzK<^%EYX5vl2Xj*AMn}r%rbd1 z1_`^s_9DJDWV4>_Z@D-)zOlYM90p?tql*oXPJXob{;OmDh%7}o*NfEYl?Cv90u~?I zZ!T<{l>;m-R3aF0_NyQ7F7+M!o|zA7Q7)T*M?}t!zec__V6N)#M_J}G!*{32fLjw4 z{%0Bnd}K1ZcJ_wuT!gnP=(|ctrd2x?6el7orCbCI_Ym$5Z+7p^C%p z6arW_Oq4KNwE$c7C9Ibn!!kxj2!03p#;d8rl`-V{>q_so!S(I&CVgJ|(j&MvF4QH| zCKqA`%q9oso1@K(56Wf~epaZK3whgf`f*@)WY+6J*S0dG|Epj3D#qK!$F?>u>ciC| z-qSNvKFr_%KXRE5d9KZGal!Mudy|! z(@Ow~v;qOay4&+SHE%WarT5KIb*I;Ea(=vmIJwtz=3em@&&|pN%BEKp+4AE< z`OucfE#M?=`=Jsg^RDiwqv>&se2dHVuzVKZ^$C*Y*T$0c`@Vp~<_Mc~$K51Ob;i&4 z&Iu3aPM6b#z3R{Hr<3@Zy-M=4$+z?UHI`nyE8)rl^ap)mt+(f!Zg#Kp1?Nq-w>wVj zEcWNY&>`*30vEbb`8~_Wji-dPZR$@EA3Uw+1>k>mdv}eK&iqg$?agY|E{EoMmd*@) ze*syy+usp`KIK*MeL+Ca;rU}(E&{-P8Y!)WWa-Vub=`RZRA=)%C>czmf9zdlus^@- z(Py)NoYH5x@9f~%3Jsv#FQ;F1^wwh}m@^9%?z2tu^{>eqz@E1mP3ybL;Klc4+ehEd!KXDx1gA?d*ed7C#)f zRxV1TemKt#_vIv%S^IP4W=`At{b|iQdwYpn7{7{c^)Va5IUS|&$-k`H**g32qkc*; z>}HYD1T83SJ9lE?&(qn^)*EGJv2@q-+)N~;nP=(hXV9lD~)6}q0 z8)MRp_xaGgnCEF#Nk`i1ro-uN{AQ_K;kEni^h|xj@%ljiD#Pm@a7#|zsbQHglqYiE zo8LQgd^mD^c=EE%+-rR151E$^=|5!_kMrns7gY4Jox3gKIgRVl$m88?yI}$H;+L@G^$w0n6#|EU^#yF(ssCk;vG%k&K?eNGssD#g4i6@r+o`|Gb>qu- z{EZBFL=>*=4 zy|aL;b@b&1KDV>G!>Hy=XL}yTgAo0BW##61xYh>7#+r6(Y568@%ORQDns4XYqnY*Y zp$_WyHtiald$aX}<<|LD7yEUudt$nOxBsnGc!^c{dv}L20cBbACEm;bq3tce<5se5 zVKYM##}s4C?8MB>%*@P=nc5UHvmG-tGjq($%*@Pg`|tB+{&(r!x%1|n_igQ6Yps$> zYL!Z|yGvEHHphNS(G^d}sNQRrsfoI*r)xJlSUd`jS-WEB$cQTp|%PBMSX$|{z^<$VQ>rR`O*{!x7O&#v*B{wSRjmK@u2jwF4T$-)l zbslsc&vgd82C^e039b)%BR%j4>{bsRi*~#Q25>VS0mE131E#o9>={1*>sNU@h>?Z3 zvYZ)qfT^pp+~Mj-L%acwNGIGAbnd%GRbAct=bDA2_KwrLy<86oe$$tT!4)=0^lhy^L00f_wKNe_cqz1-T11SSa$X1 zNtXMm3zO%1cB_#0Y80s3cCy5o^UZtEzqXO>o*m2X9v_x`+RA2 zezYS+VEW89Gmy+Pers0{#ps##uS&|nbRV<{TlgG(4`w?EXAP&2*4#|axoC;edzFwB zzf1Lf`-{MjdbDRJflisj1$ZDwwl4YYiN9C+WaXa|bps~hvt{6%1d0#^v_BmGl*9CI zA)JNIrh{|h|4&i^fyPtzKMeZDdl&7dJ3WRt#B&nHN>sTD*a^c$N+S6TR0;CM;eTFI z0?l==Kp*FxJUf!7Lw3hdoFv{Z^{-0Grk~Qpe~@)2L;XcSXfD}i+|i*Rm2oZYXkUue zw1s_U>|d4Ioy4KHxcqNkq9EAbyQc{E+$bkhMg1=iT=3CkS6wSs4>@Q`BovfmOJbE0 z@=8dQNsFn(mBs(Ov}?;ukjs#AolQvq3h)Fem;Xa3#!orU{)b_!%LID^QIs#-2Mhc= zgaOoVxZsZ;hzUjh4}usM(NS<7acra*$G-t{<8|EF%QXK35>E0>cJK-K9~By_b=w8# ztmRGSebUr68g?_GsVaY3I1`;PW6O!6B%3(!A4b!z>A962Ev(UwkLI+ZNPo`WC!|kW6xFz_4kV3O`moo!v7*b z^V8kv0_`OV-}QcThLirKkmvnYaf0iqZy*Dx<#;VWnwU$ zTEQKt57j%^otZP4V63e^|8F6}cuj5okATnr{igv`03FRqPtD&$l+vE|hv%PNm{1*r zm(afSZ~*>IL?CV6iFgOAej!*;V160z(#?cD@79_?WI*{}i~QxHPq8YOd7n zIoRbTe`kN181j~RbGXiodry1)hmsBBe0TJem~F;fhObe_yVfPk*6tevkx>3K6U)8^zyOj#UfBkN#f<`Aygd0`A9Yn-NA|J&10opYTv)-w zqDyq&N;rVF7I{<}`_D_MbFRl`sl)i;f8K3?sP@)lz>8u$Z z21iHK6ue3F^Pd89T?f!S^p|eF6Nmtv%^QeJ%*VEWEOk(w;k3qJ)awS_pGt}TxC+Vi+lpo5fWyhh)3;v}XhRUX8$KlH9)g_E7PW>h0 zYJXoLsO&ge8Ly^9P{nDm1Vw%BYiR}OU1+q57Ba2Btue>ERbtumM;V|Dr>PP;jXB}c z7Bgkca+RZZ$Hv={!=x$tTwRgQa4&2i!?W?95ITlFd73s7g$ZGV(0o!SsSz`Z86=7k z{u4skw6{y+t=nH>PsjDsnQNOGN3f_~@7Wiga)L~Ax=Y5=sBe2Vvaee<40h2mXAw9Mt==Z%6|`An`X_j<=gP-0QZD^hPg#P#F_lp zg)K5kN2^Bbwwwsnx~otYovD86WmjRGO0ymGzf3HiCfJ|_etIUol{`$Eq|eqB==Ar3 z{}X~ujS%lr`5;6LG!dc@Mlj6>b;24xBi}zEl-yRHCGrIQC8qjR)1}B;>ZOI%#~5n- zd4wWSo+ejKq&nOHyYE}5{^wqbKzXEGERpZwp}bUYMUT1LQK7u*zkOpSs-?*%8D+UhrODW@}yH*2{HRFl{(>ZZ)gc zu3Mzju)?Hm2*X$r4m-=~bDlEzt7X>aN!DfOR+Zs-i6sq6O=@Gye5>;K@`Rdtg@(UM z+_Qd-T-&bf*7fUz@kW08^2+>ZdAYFpuM1};VYBU;35ZH`a?N~u5PuQqVez`KxjNXI z=*1@Btnid8WV|%poaoB*<%RTy zc|&@|{u4s6mnxApOySsO9d;Uv_sqWS@~d=er}+)5^;^N%M%`2De-T&fl2ch6W=w3B zN2ODn%^6v(_Y21Uqqw5GDCYZTtO#)Ce36b*EXvy87VG-YTMm5;$<=?d(hu-|$`WiV z=hm95feBY^zy3Kp)MU2%_FwJlcp;O4@PD*VrX*uxDKSjM<|5PKdD!BNu_h$tfLgl? zTAWZO2 z&pqB%p?3+RBf0_ofwjmWJmr+HOoC>ClStXv0*wA9aAP0-X+ddubHrmE@xTHvcH+!Q zjLT)vu29gvRn80(;Y=V~o1zXez&ZQJxgko(8DBOYMIB^-bIK$g+On}gtCU$1{24>G zHd)<>zjHE3RB=u&B*9&2ttQ#{#btOMKEy~i@po`vjjT$%^^3`HI$WHQZ0!F85^RZP zx!b;L&#C9tQdq}~=d=lPggIjD(GTm!cT#xEzva9NKY;}B&;P9{y=_#`vsb)4NTPL) zcy~J1??T67?&?IZDC;%xT|*32KnSY(W|wwND(f9meRD*|YC%B41QW_=g+S5<53B$a zRCUiTZJSiqIi#X@Ou%dzM%3O5sJIqTbpy#&_6e#kFCu$8E9)yP6{~MLYEOx)IxciJ zzH`mGPZnd0gJjXtgsDx2#2U6}S!8_DJ}F?#;1&?GP(|=^|3E0YCQW%Ccn?06Tv&J= zk6686FjP8^wNJ{U71xYy$Xg}dqZ8MPZ6dJ~-;VuF8Y1~AiR6C}H23IE<;J$(FXm`~ z6{YNzDL2#Ok|&IEY#>x}#3*<8Ulum{>IvTLe_PnIC)obGMSqV`W-Vqz>5cft_Nx7n zyee`BcYrn07I%ZK!w#_X*nbsah%>+vX^p$W)?jC~v)Et#AB2Pp@%f7v>0WM}6M_x3 zr{Dd{^Q2Nnvn07>q?w?^M_fdj!Q#^(Nwhd&93Ppl6htxUkrZmFNiP>k>< zpGHZ3{Rg2Y#Z_XPGNh0sBlcee$Bkv-IVv4pb*%OmtP#qu5dWg}ko9_Ol}RQoQ3<2` zJ7c1Cps@dEZSJ>Q$jzq%(s9YOBsO|Go$a>&8=;acBhgi3+dQO@^j`xNr!BA#K(goi zpoxvGQI!j!{HE=z1S&O*f6*FDWXINfQ{U^_&J$ZwQVt0sF2deUpEjkn&$`cEUQSr( z)~dgI9rW+v$$)+iUiNtJkUjIh>;lc-%jUQdA=9!o)(ynLw0SFEcRB~U;4QbtEP;26 z3$`MAUT)6ZMXlYBW|P}KE)U`9wjTRm=s5Mf`RSH=pHHefbDZUSQ;j1oWK=!fvR1ge z-y|QfW;U}d)JL((zRi!Ny{50F1Lk(d9@=Z3I>unV-R}GdbVT0|SRoxxO=RAN&Sg60 zH@z31tW)XV*5(Y>o1eQi7brPB8LPZK7|Gv(w(3a{wW?^gj$WJcBTf*YK~-Taa$gF@ z&pVfnPqz!aHu?``&b-eFY~Nd2Sum))Z8rw3d7B$;dhc!@=WpUT+t2PJs0jcj9%AF# zX!;Y#_)-ldB9hXI?fePd@cofge# z+BvA8jrYFPQZLwp%NR@VkJQgc*{GhI z1CUtUc$Y< z$vkCC`Q)+KF6x(S!+S8b^ENMZ;cfK2XsET8+;#M9eK^j=jUDcoRTeG-jz<^%#_V!; zKDBfAlzVC^imL_dwE2GRL1`VBJ;vCuj<@zAaH&Lkl-oU{Y1e^0`>gxn)MIxlH;n(R z-uJv5>Unpca>e)F8anix8x1hUY4Ow4Z({}FX)&>)ML;g8m290rhqTm2b3V!0{epI( zt?}L$Z{uZE=3>p`%mdcN)mHm*?@WX1K>l{wI;srj#Ve2SMY7xXVT=unT|E{4*fOXR z!EuG*E<66x|L^sR) zHR6yBl#W{T+acPa7vklo&B=Pn?G4?4MsLkWUc`>pn-|;8d*Hj>z(Xf4!1e@q0AC)4 z@jT^?xBC4vm)-3`Hy*vG4Nucd4jq&WEp!n1PY+_u13%EgaqB!q@AOJ`x1)9Y3S539 zZ?o+w%!jjhSFEbM=d}!Z|Abostn3EXztcVf&b(1GN`M62Nfz&>&<7tWb9FO8RSg{e z;$^dvbMTV@%3H`yYEPliLTgC4qV^bAg5_Ao<_DmO(w>6bL1G{>Kqa(jkFt&uN{|6fLG=3L zTNo-fXx0J9SBiml*&8BM6Ee$k&zgyjvZ4Pq39MT02$Q{QbPu5lRwz;_k|h!_DHl~P%Bg#Q#`fz%YDf_VYIBDo&!bOK=T+j#!2n_s_ zm&g+r=|%i<$L<+Nk4_H~UaPEa6DFD>At#nA_EMA@2QYK8u|Lkv^NCx}ojLK&zi?7g ze&D|x-Y8ctmShaQx7gEp*LbQQaT58NWyKx{?C0RLmD79}y=;C>+*5mt{MoZT_C$S~ z7N0Uk7M5=aeHFV>K<%ge;k!Zp+ul`D1N=YW7UN+4YH)w8l2ts zSUn*;V=VnTQB> zv-`o1AlHnaPQSnLkvjolKYOwZNo68U70Lz#pJ;FibynO3i5)%(!DU+#2`MbZepP5m zM2MNMcMJ}%Fcv6kDF_@q)?oSFgxD(hVG(11A_TQ4II1W_wn>t?!Pj)F}*uTjzzW?WGjYF4S zWbiD(z;N&WeRur7U)X=Uj_W*O0m=gjZ=>z97uww1z7#oXi~Xc9{>XG{4d5%_>R5e* z`cR9Ti)z8JgBY=81~_RSraUfkf{8w~!;x@M9MdjY4cjyrxyaL7IkPS$uDw^hZ?L&gSuvA#N_IYHJ$-#8?(#z3q}7)u z|3L+!jSo-0f-heqwi=9uyo5;n2JMNcgUguelpS@YjgVvN^Nu;F${FkK95?jLaE>~L zvaOv%DHOLch&1t*SqgvI*f*dpZB06J^wGrCj%1$|?2WVRQXDq~{qk`78jv;3L-dla zQQ+(&0ULsAZxK{aQ|K(jDKTfL#C<+lQ*8fpP`pqrZ*Q_k<|(%>eo%+#CFGRYK6>yg z=(yNLcA;VjK7EZy}BWE zr4kYa;W>+-d$dBfG9VM*3*(t7$>BuEYuX@v@M~<~duY}R;_-XZ?-%B?K3(~v$|0S% z{%j!a*e%YndyIs)Xze?<^fjtdi){WEqI#iYr1FeKWF>Q^I$uXyhB}j$Ml6leZ0@XW z-dN-J#DXXCk~hW}@9%XRQ^1G7`^vz3+raw^r59A9ckx|Rp|`L>Z=B`#+?V%gpLf#5 z4q;_Xl3St#l8?ycEi%7FeoyG$&Y#K2xX6|A|IYl9ri4Ja-9vT9M|GDIxGwawXnA1r zh2zf4-Ma(|%>yg}M#20;0!-ZMK+zWgBRFLO@@pvNOcI9pK}Deq=ferMJJY)hw!4E{ zeW5_k+mCM=1^CCGy(dM#Jl`>yABS;BK<&Xv zavXOO=~r$+a?C>6uM7!dpJU7fGffUJaGo7Y`q*xUKFFHm63iQrZK|vo`!C0uYn9Iq=_IptrCQ=#B2yumUl4&{y&v(poh*cAkxDGgqLRPsi~Nos#4=gT ztCCIsz{AZEXyHr=Q6SoebG60fm@^`D4%7XXzoWAr{JqY5Je3kchE2+ zA;(KFkr4(;&wb` z++K8unzJt=m5I;2Hp@-rem)D&*hBe?w-$d`qr&-ZZ?(9Kc zwKQ7>%>=AJgb_YS@1mqJQZh-#WnkQ;P>)Pe3NURJCm2nm{Ur_~bsxqblx63QM}V1{ zg@wfini>b<3s#lm(d=UU#M(_EY4@?VWKv*ZVO|s3Ow*SxB86!&vTvF#Ohk4a>J9Yj zu^%!I_XSpS)ZiH8#3aOY(*_x3LDPnELl>GxmRzY5fltM)i|5z@ljzbvXJVy(WB1z1 z!IDa@i)Owl#6FTUxaZkVnV#831CzE|J=i$}>!X(nmzI>}-%#afh|0WPf=D}_QnQlM zvf8f2Lw#y$giCa*2IGv>3z5`l!;-xF24S!>y&d=IAcfjt+%VW+J1NIN^Ft<|AlElp z0lewgU{vkQV*$*I45r$c3JBu=nL9D@yW5Y(_T9uzcAL|=1-_gx zAxRo5`vBYx0JyudlHwB1g?W9Y=nPFI=C`Af+G4Wp%*pjhBNS)!b5t*2oA2J*K z9sPFUDG?R9$unqeBmfp)HoY4lEdiz**BBR{{G%_G*6kg%yRA(Jb|}mw@d|vi1}4X+ z-F`!z>q*G?<53dKc-UEKNlbH|LmM?BmF2ao`kDNuH!(!j3#AkK-P?9F;`$M7)Gab$wP}Ive33nPrA^z~!c+VhTi8bqdU+b({|65p zWJ^kF4XfvOW(Q|K@lROA?5EltHPaZP2G0fw33*MOVlIURG2gpvK~IKXfI?AqzB4|1 z0}ktjSkj@R;xH-RF`aIyEQl^yiH61LTNiFqG`1tjL>d_hI}Zj7DM)(34(NQP8Ppu6 ziS}<9YbqrC`g+*IqC{>CXY1c;ix!z`G4-RR;ISUz&wmF%G3*(rd`lvlMQnkmq^y=C zLOW>fjFgcL)A<(TOf~0G`ntw6c$*m67i?9HNLlquY_!*lFHXogE3Lde?ziup_&9)0 zl!#Iw@WFBL40L~VX#FZ8>S%O#a78G6aq2rZIoR|P>M?9sUkUAm!ynvf{Zn=n(H-wXb77|dJ1iv`aEQ=qc6pT zeGvfz`4Rj5cDTjd*6XdOg$-1}waLxvt)`l|k}zy~u9&hoCPs43yiIG>55s25`@)(= zbq{SQ!{5<{oV5_Q6&2XQl2Oslg{&C%za`m(Nvj6~8TtoEDO9(@#U*4z6f*|%$CoHl zgpc2;^Jkww8~Ge7&00^(E;9$!Neb3VrrsvW!~>mLk@&_)A*a3+-9enu`WX={N!}*_ zjl8jGUdVMx4psw7hl-S-~Mp;T6l`wHpxVwu=qh$wsrW z9d10FUXQmOxfq7GCnDP9WPoTBzt(0~7a6`7VlCeB5Goif#wr!YrVt%5cQl{6_GH)Y zAH=pVNF&`KSt6L6B^X|EoqQfd?YmF}k`}QAA`n>WPwT#r_|H!6=R8uy2T3h{*NQREQ@D{;i4j{^l0xIw_>3Q|kIAX$b2s zU`@9G%ugwK(BLN*UOLn#jTs|%dhfK&N~U+d+eeLu^J;(Jcu70IN!wjiCU1f5AQH=D zF+M+A} z(a2sw*o!(kmQtcegO2#HSlpIWu)>FzRCTK@J2z+%DjS#!X}EyLe8dUk%1m+fU*{i4;S7Xqc9Cu(_gx zuk+7&G^1PUGE<*LN6`%?Mdpo&rJa95DPl@;9_ONG1kwbaAR%&$Sf%&X@KgSD#&-_v zPjeW;sp-m}h~;%SA~5rbRFpOTGB7cTw63`Al_T~Q!*IlO`d<>(7#`bnABHURx zKwx+~R^jj8u%Z}zTmeF3cXogFb{X4!?~P$56m=W<$YaKQ=)v)H5C#kO8+gICqgS`ugW@p@8ce=r`y-;sU zoWV1i%5E3BqMkKQXzT|@mU?C5b@?toMg+8B)qCVd*WM7cC{m2A$^w zi@6rCvPC`Fr7D{95`7#sg6NS3)E5N3I_tcVV{P6BVa*Qnp=Ee&-k&r9yg?F$RYMOG zdPx_VeJmTiLF*3_xhuf1#od=AkWO#tcX43gccI${voX;N@&TBQ&Oqc2Z#*2pI~mL4 z8?DtPaAk4x#bp+h5rkYZ)CIFZGa-*NfumVVv~en5Yf-;^nKIY<*%G;-*@PD4+#rYi zQMUAJ?uKXHs%28T*W?%f*t~S&UbOP8Rd2z96>qNlX;=Tksm8*Tk%jZcnb8+!4?TEh z4}Ey%7mz1c{Y-%znDy~nyie)<=95BW-w%4KZohMU3@$wV%$y*jsVHf`{CIF?pU`1oURTl8Ooaga>JI~_x zJI|Wv_gX~hQCmbAfV@;uBQ=7ygxgMGPR2mjLRKH-hPoCLxQfo*EOH(g9~LqO&S!PH zK>i!#Js|H`gHb#~KNUGs=F?7vEwa1;cRIVPFS&x@t7tDqF*qwPJ##6#M~SX%N8Gi% z0Do#hBGhTb4PGdRT6QY+abB~yE!BjqJDCSRYq{fVwSkf+^VPGdfNJ90$!EwXZXfDoeZbi`haY z^zz+_k0a2XP`eYHV!;-o<}TIO3W!0d*@-?lZwpy-$LV7QlmSu1>th$lrRR3O1}}o> z@(om@6GqUA{Dhj`aD(#%<0=)EJcyU`1ki1F0}YyOJ6%mYI9LmrVEuROT}^MZ{H1qH zJ{7zUGbI_2%XbH$1Axxb_Wo$LpbN8n*W6l0ryAMVt>}&JGj{;_{A}sd@y3x=*$IAl zVhi#7yaJ*qAc}Z+asmDvxaZTM51nPJ27id70;0@(ZThs)HfpeWIP;K4fe~HR`e@NM zi%5Am4PZxs<$NvroFEGBgX0Xb8K@1`q>l<_vxw+}a}T~52n1`|0t2&QgY&^b0nuKt zrmu)#thmr!$OB+MdaoQ*MhT~*k&AF-AdUlZ`PP0Q$g!ru%p#kDJN2@ID83x47T7Ry zl8=2aXh^eYP@xrIn}MY+2^2jAUkSumwIHXF7r^a%k$qNwAU?9J!gL_J_}KPpZ?60T z2jC<@ZuF!3G}w_6T5BPT;Vghn_t#TNF;zg8MVx?J?uc|PHy!b zxxm(bp=RM!f*HD9V4%D~HLPrxik+(8t)s=*4Xj5ZZSF+da@MExviS3oO|BNyb* zwt`uY*zm2?z)m)tLe|l~fLlwFWm&U>nQ5YcFDLebibtGmzy&X%74@|kvCCSHMOM<3 z0h>#V&gnM&21zby0wWw*KMS&Zxt^%T?ywunB zL}PQM1?91!0=Aa1vYh1fP9Kg2Hl_uk#f-j=pYecDWc@fBYR}mEP4niHHqCnii2KhYu z_3{DvG32~|DCIk%MuI=V4#=v#o|cweb&H>N`{9CIanTR9uo@P1Tn`mLtrwq*EsERq zhcA@YZ+xyMsnUr)P?Ce+h_BUdQXJRWpPMF`I0VuB=$*D-+PDd}dIsF*>>q(5dZUl@IJ$JrOA|E+CNjg!VtH-(GdH7GX4(};%BZb{Efaurn1Dt=#S8Dx`RgVA84^lWfG64C>FEoJ%@|OVqJ+?1Xxbh|466N0*wZhG{q?p zE&Up4%ZT21Nj+z+Ff^OAM0+G;Mf1Y0u-|;~6DfE48*Ie-TWr4M7K*L$VSwY-c+hd} ziR@(I4_5QbHUiAC#%3YWcKA(>7j;Uaz(wGTV&t}_6r)@Yc{@bEi&2mhp|4(44Rbea`66T>9*o1`pomoU8PEcNdXJN3dsmxrcS_35)Pf-%n1o*ZfiLf zN9FTInLRXRa~gUqtzcP=wxrcv5oZi2w|Pt$J&5!q|pnD_!&& z=c=wjjkhSBl%2%noeHi4Ds=)F<+s!t{InE?1_kt( zdmhV@MhsG4oCud1O<9OLM$l+bhs_V=+!fWRJ%1F;EkKr9us?{XF++RU7@ea<$!K_Lr<^y6_RdUZ?^ItQ+|IwEfIFOfT{Tr_)HY$%weX^*{=a;H-jZgP?aP} zaG3(9-A2=_OZ8nm+h#z@&g`pJFL$4^X;o$^E;oCCqPqAhNWIMIf5?;AyrCXn+(Urg z6Urc7m5K{!g~1V<0#85W=bRFZJ=`)K0}tyF$9n&%7@uE1MeHl3o?fOGW=lQnj?3gb z`gMz$LaMX+s~83zau#QEp^*LcZxP)55~bfF$nI0$6TPem6}>gyzNe2&hgpms?3KQe zZ4Avu?c$og*(Exp?ctiT59DJSvk$089@}24kJ}~2jlEiNbPJQq>B%qAP-(i$VFJ8+TN9RKVEtfsy-8limyZCs`>p|GMjwLdO zYeyzSK7!#1lwOzg;a-Ni)Yh$)J=rAo`i|w$1o@@SZS2;jtxbGd>&0nH`c$&*8SjOj zvDrouBw%voH6A&BOIzi&_TYcIE%j`c``E=ObQA`uJ}ODaBPFh3hk^Rtp%xHGl-WIm z+Q7y_ccOAk8Wsih!}maV*e*iL>7n=w^u)GdaGzg{A3A||{bfcigMw^AoOmU zW&7%?9?s8m07n z^6A?VJY#7ys|QTBW9IlC8t(GzDKl-%C7nYDlP?orGD*fOqdS0+l*ZI zNE3Yo>Yp=>b2)Mw?LO~ePh5su#19={Pk>4@d}B{^j%4N?upbwvAGRN_#{FMs#KB8D z_4$c+d{)%iFdDd$N_4hl=`&-(93b^KV4aqy@PnJn$SJze9;3Wi5j?26LqFa|AE zY&y^$8A0hQ*Zx6u8dqZ6fc&T~^bMtGa30@q`VV$^$BBhjXsg zj&N*7!TZv)Ej1eWFe%hAx@wDb>&8R6gj|0avzW-eR84Z-OSO5-1B8=Kou3&Xwk7XxU!|t|a6MWx{H}Ln zJ>y>zPT&2__8oTB792F{-|jNdJTo)0j)L(Imydqz7G%8Im;6!^V0ep7Fdi8)M7X$0O+`w8mY zuAU)DFG%F2?nCH_-T`;bJVfCJJSApoqLAEWFqr8{^A5^U}%9|}Ke0z5S+)+9dI#^tY^b%YD;E4K6&lJkA3u08k& zbyC5*r#J2H{1VSSvwm@9esSb_c1O8U5LZ8O5LdrZ7#ASgG(8%m@39$EmCst94@;{KCYhVkhpg#X#={(YyWpo2NmAY9;1Arveh=M(o)}sM~XDsuX09B-y{y?9EQ((1fB1S_Ti9 z%B!{v^$d#Zc;2!Jm7B1Q-`w?Sn0Lt9pmQYXoIE|KE9^XHZmWoQA!p9>+uRk%+9arW zjT9!tF*ctmHVOJux6izPB{n+Jz6t5LT_<=Fikh!M%KQvjY4yaXE7J9lSblkTro1GP zX@KyJLUV7XVFtIN-42??j35UFEX+GhFOtP^I`^WQE3S#^O_ttx+a1L z?}K;v;_eJ99MgbF<~|{4O2atiyZ+#E@Q!dkca?^*LfnWli&j|`Vd{;onc?cgnslB$ zvl^=;*^9BQq7i48vm(kJs+AkSL*b9g%JD`k-G$OZr9vxS&mHAN@nV@JaGfDvUnxq1 zM7+snn)af8z$ZP>iIgdrK-&XUpMLP%RdN0`q8`tgh?m`%WGuRo*ZjCr&hR#08s2$F zwPV{p{AfuRcCGbVo&;)DH=tA%yU@)z4I|M`L#^LjADi3@!OuO^BK0Hn?tOi#`zWj|WbMHr} zMt>#B$ara9arg#H;?+t&gIA^*sD<0&lz%156i&Y&Gbd_v?Iv#&^S#WO@V$(!)cu&C zeLuuL$zkuQ0n6S@&BM-apQq|+pH~;jl{x=)1n@!;p<-8lqFfcAWtzM|y43HqD}DP_ zYzcYI;3uTRv8hv)I-otg(~0HfTYYj)qP%tTHrGiti^ea6*r}dF`WT6k>ZoRuD3kh18q{DPJHF9IsK2e zVbv$cwko^5QqSkHxH^rU6Jn{S=v_LuL;)GmcQ_ibV2b$=x$~7<^vV9Yd#N(bD`kH8h}wF-*hMyN8BSYHXKQ46SC@~W$KzZc~Eap(T_w>x*hp+)Ex zy5%8GUTFR273z7?kJ=kyBGy?;)GU*kJ<3)_@HlS$5nMYW88Pqq0%6zTIBp_;H0^Ml zqtfK-Q93`XzJh!HM4qdP#aH{nq%Y{2{Z0s*=$e9K3m*{0pp}@rA~#xaR9)eq>*f^PN5%tc2euz z2d~??P|S9u*uhV1--6!_dmdlLX04!ZCjm*@*-b8JC$|UbQu6nYQ24ixFpFK0QT=Gj z5yEXq2DPfHSTj*|%E&!fVBh$?bNjUSEmTD%O)=5^O`c{hbfjh*LX?w(vglczU1*R1 zZJ4@6-0jIxClS4wY>ulgji=hl-gkoI%CB4{l}a}TT{T&U1@Q|7Dial*Vsb6Sc`!e) zjE;r*yhg`vt|E}i!cbzpoQOX92$1uHn^x&5a_depg|oYZFwu5`o`zkPn#%#BjFQ#3 z3_GdwyOq0)Vn)4MSOx5;H49t|rF3yxSgwP$=hdTR7%8r%cBTJ|O)Vq&FUoXXWgQfM z{uZR)2_uy3xz5(f5gyOG^;D{kXZ0j!Sns};&_M7NOA2B#)ziA~d)E3W_eSJ7^(xhj zzpaWFjZGu#ir8~-a)U6-w2n>`ZS!qA*?KjoRbAdq+t6QJ6F|#nQe~qutzLa-(_hI6 zmcX(u{At6od3Fhh#WmA@)9pIp{SUSIL^BoJEjjye4GWL}zKL3N{6hvY1*|eHQ}10l zasEpCb_5@-Nj_>6r{J`dLe0LfN9e*Y>Vj4#uu@9R>o%b^MdkL~q#qM-m^Wb0QF?`Wp%a}sdI7?qm;KdQbtxUw(k zHqOMhCblQGZBBG!XJXxOVsm2Kwv&l9v2EKodilNY)vNld&N+3?pWVB6_ul*TT1y6W zo5@JeRpF@X?IBvWUJhgTy2pMrb|E+@mu?rTWD!)md1CWRrLE#@JwR!JR#2nlSzU!j zeWxbjv%KRiq~BEY@}?o*T{;&0=aKS6-NPTepzt|tU$Keg2zEEDPAm?oTA51@THP%J zC{R#=w}!waaEdV73`n zo$q`Aj+I4^@{FD3nH%vh3Dzg}AO4*{{3@m-p&EKq=soUQ7M5oxCkP|FHlkCd@m36T zlOCl<`Uic|F&fYd;5lDo!cx+!?|ELNsMMb{3}6H3YptK$t1G|>n>}7Xf@eUuf?=3F$%xV|wXKFY)SkG;WB<$A9b>mT3XA#p*%aVDh0D>TsVysP5 zN*Gt=B3M(&q+y_QqhJj)RMTY$8PKdP#FDZw$dgr0#j63 z?Bx7iEoNKGBTp;mjHg+ZBla)AcPZzS)oJPZP2WVlI&EgLGJgVDpJRog+hFwbE#$QS z>p^RZw~$PGS?@Nx8hYhhzR_H15x#M-zU1ShrhKxNqdyZC>Z?OfZ%;d5FT}vQ(+?cO z=$K?9(ezENTJNXdB&WZ+j+utVEB$H=G}7HP`P%Y7N=L4?YP1-aSMCc9RvNeH3~tt2 z2mg{hD^L2?<*SK_a>B}Trg1O3SQBBeX{~Xeuvn@iVbVtUx9ZsBziAn*>q?L6UNhnQ zvkCtuJ!xfX%!OdGsoI!J;;5YCQ7UHpBg^>SX7hK$IL+Jj^4GGiF*(3&q1`>ax+EvF zg0pjBLCao)01Z7WY1nLm>Sq()5C3taq+!0$`EthoiEHhqg+lzf-|~TsF;&(!eydq_ z_0}CSW(%B1jkgqx!@Ie3ZL3pXF`j;3e&MFXRm@3g4Xfp@{YI2EaLEEm{j~7soQT0o z3Z=em{lW39OJ4KBdpVT6-a5r|z1&Ucyj2C=a!?>}++N#p>Wc&(dZ+>1F7Jwgk9Wbe z;dvuO>I})!9emO@A@&2m$r>f6Rls}qIR_8A#JZ*{A`8q}v=s%oI;k1CTK;$qT!R)9 z#Lon2UYLx&k$9D_4qJGVjIR%~@%;SiKWBTAiCj(PMT?CiCPUvDaj;drDYX_d>6rP& zR>AgO>3~0L5;V`l=~UZcDk-tsIN1M{t=N{T^ULxN!>;1oV2_WA%LA3%U*$DiM@pWW zMs~}Q-E#(i)=6ucK|AzKMWm9(qPLnZpqVvDk&w<%oK^5rRm5bdYZA=~)7#&Ssu8Nc z2$P)sPjD_cc9amPWuPZbF4#uqY{=L)mvr(`VxUT^$jM&`N3^Ec=8NXo6Mf%#q%v$-h|M#C{OhoMMKS z&FzI{;{^rkH>qf5C21T9L$(rXHpOQzmvg!TjrXoyKZ>eF(dm6jODlT!#S#6_3}Zj> zhau@(fYWs&CSYC$uk@)u(;k73iBn#^O2Xsz-0!Yy^mm&r)re5` zo~~J8x|}~b$Nq>;&fNJB`FJQnpmAror_w;0Kmhp5bTuTR=?n z``nWBl5YKJ^H;1hMjxYb!VHQeZQND)YQknL6l!fWx44p9tL0xhJj4w4%*mV+vHLoF z<(KaM`m6iz1oJDH=uW4`Q+KwWtAQdn?;P3gFA*q5nDStD6lOW3M3$n&Pb`H{~-JqHECL# zGH})wHa-jBH=a}U=6Xt@S_&dZ-%a$R=*CYK2zN&{TvH*c7+&CO9(It&hZM^Lr`XbN zXZUe)+z*nLm-f4iJSpd3t@fL5Ay)}8-s!{ME2%ODuVy`GaK;xhEKoOY)mxZ}%UeMA zv)4XO*S3Zd`V6WB zJ0vNr`fn_pFxml&H&S}Z3qotVY9i#o!a(84xhhcDJ^JPpzA-!BwD^jf+8+tKg%!e6 zrOu5~@0wnMGD zX|@p5kZHGqIR`37*=Kl&<+FZ$xggP}&wu_+(HmvfU#@BhJ}UK&H-OOqoPL-oKbQdk zFd9d0?`&bQ{aC>3((coTZI!GiYC#Y6Blq|1KE-?dBlsn+5iIZ5pMg%n8Tv=?{99GT znU5F0vYO>IMA zzS(pSoMyFTN@YHXuBDlc?br%COp6#CMs04}<(QJm^=?C1gjlZ|mYGeC zhKi_T6=js-^7(>2b3znsYemo_J?76ByBeGAooclPl9th%vJ*8V2KoJ~?gOT$CsOlZCRy2H;qp~!m4-9w< zlmp0<`%(0`oP+}tR!XpPbybsPbPjl6|%DtEvKby<`6|wZ(B7#b=%*j81D7kD{sGAF`fU-M|S8a9%p6 z$cGv@!MWxI2;2y?kPd4DQ{8S zHv=z2MW4c-d18RWS--+PsFLY_j46|<{5vXvkFP5{a@2Y7x-P>^G4gtG`w3-Gy7^XP z^m-s!pCmZ|t;ye8)b=#EBFalr0kcx>&fg=x@P-7 z%2-ja$?vp1abII}R<^@kRT>`jfzMwhr1O9Tl1%BA**Z_qf=g%ou?r6;Aikhzb{+g{#rjo`4qRx7oPe372otFOJ(dTN)>jI z@~rHY7T+Tsh#_?-Sxa}12_a-)x~$;j-lhjM^CJZe<$#+S$;r@KcbD2)rTY>)R=aK zDW(={aGEG^7A8OG4BdNlL;qNu83L-${%DoQNLyr1k&JEN}eS{igABdZd3# zq4R+7W0$O{x=4m-l=cR&OTl+9$MnvYwrq5oBS)mE_DQe4>Yu>rFTX>FGzB^HW;mWM z+3CHjPwtd8g5>n)qxhl^h37tl={?zZEpN;5#CI~I0GshtJbGZoTR6-T% zUlfp;4is3L$DY3x8RldK*(Ac$rTxjOr!DH8@5O*;1xF{gmw-O>cMr*D2Ua7X9L<0|fcne*N6ocX`m*WGbF3}os?lAc`HcnFC59QceBZtTSN|v(B&J=KI z)@AFPT_8lbL2z)(o&CP9@73(zMv>I$AS4BOS%P+dJ#_4c#$fW%$VVrYK(d0+_E9b* z1xf^}NlSgqxY-A5+5iix_MVU?vhu&B3oM2@-%xBaIbcS9kC5oihJQle zfli~y`SZSy`hg;coQzhV5|!}#menf7euVWFP9eqQ;0v2kNEbif6-&tcI`;90-0Ifr zR^g=?jbST6&8#+)VGEMOL18A)%-$+d(WhriSb;8eB~F$iZ(u(U;+FFg0{B@bwj_ zvz5*_%V$XG#X)3gmeU{Ds?YLM6{czYDuM-z{U($y%=HxS81(ByFF%-`u?nk!mQR55 z_?lr}(ma2LWpcivroN_n82DJ*?-44smK_A8Qn4{ms9;|(SKHkbD*b@(k@R`e}{g8cf2!paur@MZ{y_oChh!93FfCVy9;+oJhc;~gn3OZY#s%!zNS zYdkK0w@BHtpzhcFu~|gKwyT7Op_<7{vHW?T{wmOT>?ctgnFZ#7 zjixyF*;Wm;W5Q;OP|AR_;`n~}`*Sd@VJMWMA~{zG`NAC4lK8r3mgVoL`~E+n@nY4u zaQe>4KF@-VcC$byLjh4i+kf>PnqcA1d7x&&tQ#;q|EaNcHgA$CsrFY~=%@VBWTYNa zq@BL+T%XQxvq9x0M+70|YN7VMtMhN`|3FI4Oh+V^wef@4 z0o|3S4#6jktPiE$VR};oK6ehCj1h~)`q@Eg4#L-!hOy&CdCpez4%W{>qRYA4ODC4e z7MP~%LTMy#T>()b4(h<8FHDQK^R<07rs=%i2y*pLA5@iVh*3Noz1ECk_jm`PMH?`B zqT@Q_l}#mTWj%Txf~bCwegY~sejU{{pr+HEggKy(n)#WX?VM4rUTfQTzwfvx-y>>nFc~I_2kQV{?*~BHfdm5GAqB z4?sex7$JODn>#AHb*{jKoaQu^9X?udRK>NDVJ(jp;N-zmqF3!?>2#j@7q}3a>6i`c z17lRqmxO+-PAh6IIXIEY$p{2Rg}ER8i;6&u^`$nxtPDG0jh|7GrYUh@{Z=1R)}}$n zUp@Y-Q#R>I(wQ#e#Wp7o-VD2au6W3osE6Cfk-G~|_HTARs~{_Ji*G-9Nuyi}UaK%- z8g|C6qI>~uom9V6qZS0;x=fWKm`EHXIxW|5fs6WmRNEXmRVTaA?w@bM8K*G{;r)Uz zC|AZ;WH%!$v`(@E>(?tg^J|iB6obzC4;K@swE%sW^H#v=Px^HElRW1e_ggV(zuW^)RR=?`&w1H1(DStY}Bc_?=kN>JG5L}q`SqY9C&d?%enmkMG z9HXsV{*K**9o$`k+yD-jD8>LQJZhaJl)t2MGDS2Pr9v@_8HWO5|r!S=eq1 zu6djf#mn#VsHrLCX8b%-40(6e$g!zQ7;j1gz`HCYCA_&A$ub#uyl;a}R1y6s*g3Sy ziRF(Zl`{H@Nl-0TD2XiB91N-g^(F5i1j{!gzJz5P?aD42X~#$q`|`b(cdDDG5!`$& zq-xImCC=YoHc}~tk<#%v$c;hsBc*VS_o;YuFFb3367!fY;bGZqTx=1Ja5-$GR4{^+ zJe-tRN_88{32mE=6ssDUx|A@QU1ctg_iGipXwZYV>nQmI))krnt*CDV)tcP0Xcr%AN zTSn^FK+y%EC#63zip85fyR7C4N+jfSSP9t3bDv;moT-B{ny=RjmeH(Ez5UGh|Fp4F zDaC$(VGkr-r_C9gD-C8#N=#*OJI@w|oqVwc9L0S~J23lqi8bg`vw1nltV04IqRKG-mPidZE-+eF0w)l00a5NgK-2jSyN46BtH0mZy37vT zhq+mndu47egI>y93?;qyn;tQ_7BNyd(=&#fUeogRG1l{~plfL`^Nn##nt1CWVhpX1 zisKPDwkCwtuS^>v_zht?lQWFnQuJ4_DC04R**YV)&xrthu_4Bn%(EsKsu~|Gyl5AH zD0(wj0L2NTyx0^)sl2hLg2nEvPI?(!_MeAk8NEwIpQ)4v2|fo6q8Oi4J>=NoefMsX z(s*=1)BDmlsot9v9}ufjo(ob1ANgAElwU~r@}2+?ZVjlSG}LneAolKB10pDmeJGC= z^Xb%jSD4?rE$@j2xp$pnDCZn&ph&$F)c~PR6FX0@@ah{HioU$1$BgB5~U4>UEv zAJ=JATT(BqU$9S)XVTKCIQBFlxhB8qMJ9?<61opt=5CTxXUtD>=I-C1r?s7r)VJk| z54cn3wTpg}d&qC&X(juEo}tRK zRdwk#?^Dx$rS|lGnq77YJO7^BPNMqMf0|u%DK-CI+D@YOw0D|abxA$Xt61(8)1IUH zGZCE5L4DVDk=_~e`faE1h%>4+c-1AZ ze>LcMO^U>C?Il~Vy9N=ii>dJ@FU4cR&KiSr8pa4Gy7rC=jUxSk$N|Q%P``CwzZn4O zbQK@m@CHHIgMW*(K73{$9JC^O7fgKkW5WFHlIegdGtig$Q9%f+n z$+_%%ytZ}V{aRtT#uH051?M;IH_+KLDDy^*_Wk4MJ=!Ok=)l#0`@oe%>a*4j%-cSZ zK^nMk*c+=$eL+(!gZQXO`v@6^(I5HfGVzM(>z=xLTz;ZkKq4j03d^`$Jtn14Wo0Go z{@XVmFY0~M&f4**AW|V55$+5Da;-y=OWs3ryMA7>CnAKJ+}xV}b9gqCFuWO_t&eCf zb0v%qHoPY0pd5KLa5gOM!fLs;g*|`kX_q-$>3#PD0KfKPtb)!R=mWBAA>Dr|X>YoQgjCy6j^jUN)us_H(=o zit4@mYiGUNa}*#goO-@A-OMY_ZHnyTkBPE5;w|(pi_kdE)`09DDv*obELJkl{P{)v ziq?lL=`zmq2eg%Bjv&nmT5pt+1>eb%_*Tr{8c*8wVe-yc^y(Q{^kQiWO*hU`d+AkO zikQjrEo~uz31VB4b65;Ms(hGN=(Ux?03wlp3^zpU5Dfzutw@vTkdAj#=pvO1dwrY+ zOs@Q7dMpwG6UpS~ECU*DX?GXF#Bp#Kzm-3jPE7_}&5E|YJBaPYeD7!AN988B!IaMaZIu)Q}(4dR*alrzG+?Njf z9IHSISm#M~r4XA40HZX3(ktHyI=IKgcvoGWaio40*!#|JPoDaB;sNFOkri@AFvOe& zdTCn*rdQ&Y=(YGIlHC>fePY+;t3AwnSOR?ikZ1nT?e@T?fBk2MP4XQWPQ9=n8&AZu zO+wUz(M9-40p$Dm$$#V&XA;(xo2pds zmYXut;I-)i*?y))T+X`1YmBszKoPh>rzJL;&jH0t|07)DxX%gd@6xt^J|S=-hPgn# zV&F-YqQ}f)HQ`I55BxVk%bcr-HDAx&Xk}gEbBszy?KcmG>q-6_?1e3=TYWN&Qs?Z{ zWQs>U+7{f$qy8(M)tve&wgOYL2WiwK5e~-^x-+WJ2LIGobgXHv-xSv#? z`dPXBxk`$6(cL-gj~V$rWj!2)u?3&3xTA3z_!d~4N~87^X83)+>{=_`NXr zb0>XkC85o)M-bZA{rpXB1$Xtq_UeXo3)s(ufDt1>3P=EdC#h9J*m0&P{u}CAHv;)W8%ozi>1U@oscy(VS3^0Hk(YXJAJr5A`%pG z>Ojy5&omf+QdgJy@LezGAiTF(;|3$HPCkf$e$dn;Db>0XyCI5Wm)wL=?~eC;4;XK5 z>mRv!d;q2CnF;ofjqkVMeNz74CXEA#EgD3tz8A7QVTN>c-rI8RiB$uv@IsbLnL?(^ zQ5QOg&wxKe0>Lrxmt~Eb>vNWEttCg`IO{!yt~(!C*y2w$b)4N3+xamjVP60NV?dkDQa<2Npwnsi zCLYD*OGkz47h>|k&N}z(%&cziIboDMOh~9NsNc1T<_~a>Pk6{vYTy&l4>m+2%C3&W zr_oz`m`ge|C7BNW=oKA>=Q_d+v=6s8_u_G!V+CLc9mg@_Ga8H`J<=S_LL~KGmFxAJ z!6Cf3$PYt*q@)0uVu4ImDXKLsuqCWxL_7j?u5kx7o+o>a3F07p0~u`y9~v3LOnP73 z+go*ycbY%kJcZM!5c#2&#x%hil4*cai4qHm=kdFx{ZRF z0Z5OfLfU8Jr)v^IRV2Igm?bEON%$mm+AzW2Ner^1_qVRnwfjg}f_4FGOismDBy@I{RWw$h>O(YJDbts`_-HzNJI{(xmtXWci*W&YS9PIg++t8W@H*5IaMn@;P8A#nQPYOml`S7Q0p) z3-5do=1v1vC$4TFM%Tr}Fx_B@0mdM}J$*XclNe>Vibr!x z%i6$9rfN?kH~58D3BUc1v(dH{L82sT&i$}W?7;HCQFG2HGI85+TPY}owjG6KxW>yb zdKM%+c0nn5R#%Q6f0jaF)<)A{`DkEtjx#WT(_A>hUcDyfK+`Ukw~(k87jqP9Q8a~tM@>x)k6IXh&h1*O+qmUUY354T9`~+)f9R{e}n5Dvs#gN z+9N7(aTH75ms+hInsz~2dfZjW%TeUGOAW2F4t4`g1WRywxM#iGQsmyuF94t-el!9K zxb%8Ze8gF3E9c&7Ac7!?qvCV_<6F)URw%;JydMS=Zkf>H4j|%esW^?-YX=Ck1f@6U zFgXZ~mJXLu1hXc z@>DpXw%qA*0sc^JIA~ZZ@#K+YbOy)mVYy6^l{9n}VPW4Gt&bdG*=jU31!1eyUZosiLp1fiWj8?3I><$|Nl8sW6|z zgKR_xar=iGJ6tv%8)8-CQMeUxM>1#_Rj^m4nHFLUO~gy8_G&~r=oOV%GBvoC5Zo2> z1rhwg#Aplq(IzjZ^70!um(FsHEA`*^Z+B?ZRGLVC1);o$Br}$e5!`TsM80v6Z{yk# z7DW3R6=d7qBfXm458lZ5`JjSd{HfzTsi6@Y(hRDZ9-eP@Lly-WwFrttt(Fk>3Z^36 zZXliaD}@3-szn8P9uoy^e9IxrWfGG@o5oJFrbl>43J%3T*@du^RVJSa?Gj2iz?0SjvSQVu(TFg%$)M*2U(XY$Sv@ zJgJQQb*e*yAeLiHgR&NUEi(&XRpdF1UHgXXPWUj$y2yPBzlG5|<3_j_P9pOBB}8VT zZc6SV-0KN$!QPYs1;ZqV81)m<)i4(s@g5KI!p=MXUaPU=1_4BRx-_uNGGjnB6taQ> ze!!vPNA-{K5EE+OYFC>Alq}wpY^k+^1n#36BiXB+a#irTQ(^~o5SH6TzU*!a1u>)p zwZ|LqLHP6ZB1;U)gem}3S8I>(+N3O{iS`%k+j32Cx5Y-JzoT8ALZ$0B+$n59lL7_X zduRfazumYyFi>A3WzsmqY&)MA-EFkDI%Tj2MP~$()iT&0LvTpGJhLaZKyfx(x`$aW zILUg$JJVayw!<$ANfpur*J@X7P2goy2WQtW?rW}x! z+z%loTVvB7ZxkE8!@=(BJm2>FudmDgir`}vIp6cLg>_wdoIuQ0*-bUM?(1@f;<8lv z!tNd|^<0U;fbUcddvqP@Xf^_=6r(S&d{9YAgZZk=za+Fx`B+X32_b2Bs;1Y?CfA*k zflhUmB!SW3w<=KxPrYaJb)%`?E<1jb@jXs#{LEnd#8r>o7|Y+1yCmY-TU;x0=3j=U zHwCMA+S>x<%{ia~7K0RHKTx~{zTmB7ySYq1eoJ<$j8{0dx5h{#ot~K;KnLKpt7KL2 z)2bqTN9H0zq?Co^ECo1wf1)UJgl;!0DzK(ZLw}-Uvpu`t7g=MF@>ys}TVYtH^PT78 z;~kyZ8Z<19#ZUo;GntfV-qi_iW000m{QK17TJn@a zC>vN(Ob+_x#CtO&zr@FOX;rAf(W#v2LZ{vvnX2(uE*sb7cZsH-TjFxplRwu<;eFcC z9dQc0#?}0fFr}_@qHo6Qvw06^r$2bcBYn%82|(iw-uYkD1UZ)HXam#?v8aOaJ80|V zBTB?*kKsB}oOe)UIUV~LQrOP}On$hVCFGzK_4Z#GvmAXdpYFaLIHy*7IqD+jz=m%8 z-|mZ^=B5Lx&fZ20W-op?1cmm%>M%N+IMIW`Se`Uum0V*A35r>TyUqZ4sqDaCU9(;y z!Ai8wA1Dl%n=#eJ*(mms7WZ*WSOtH6c8YkCBQdLWH^{o`LRXBV-2vKm@MJ65xZZNd zmP#cLG$pXqlf`&;H8LC}8x3ef=_m{y!cLt$u)>!(_gcJ9DSlP?p)Va{bln$#%`AdP#N$ZNQ!BvOpHkD7r%C`lwe(Cdf&09( zzFd-$;7q-}tXr0AsSGo`1>YL^eQJ+{w{(Q@*Rcs#qf(yIw*2{0XTeCz#xzV)&t6F9 z)2Akv`XO^rG+0yx zgfkxAe6{zlIO1bF6f&y7XE165mQ^QvY>Jqax&0NosSN6u&Z&4bZsJ{#WI@>p9# z(~?Tw&N}?u*h*ZuW#M8GlFHIF^6hRJzPx}G#k^zPTokZ;oodoQn)kI*l=Y^C~or;QaQ8d_UC5eCWeM62P;I@2dvuTT@+ZvZoC{WK~;?%%feCZ1j9CktKwmV`q< zl0(j`tNnE4xtPL!{6b#jg6xS40e6%P|j46<6--+hCmarTf6mPr{ zOSm31N<#egw>Et9IF)PeHf-#;v)n&XA(Z<-ZOLCjSo>7k5<|iqZP1H}LVsaysh7ov z{<^VY3Vz=+5^6)}{_frncWd#SBtH*fnjkqMkS;@I!+NX5n6h5ML8{hxxbItq;3>?P z!(WI*HrMF6&w63SrbbWM@FRskuZpsviEEV5jy|p8g5s_bWz_ouLp9$=2HP@pL~T{2 zUKu4pRUnbSz`0(XE3D!u{^;I(-}9aDHefTdvl8Vy{loYOoexdfYzF;}A2LtUW` ziIl+{b=(68FhT&rR4ot^-<&6*BzT}6q4E)2sbnUzKbcBk1hL&Ve-N$|*HEoJ;Ma@! zg`Us5$LWIv>vcZ^ymS2&9*>*$#onpw0iS8!_|qdtJ2Lyi&w@@YZ(ux_*^<`%4WsTm zZTr&Clukc7BM1>{sE7LrM#`?KZk;{oUpU@~d5AWpny!a`pnk-g2Pw_Uqvsom(o!a{ zB}hPz=22P6kQZ_^$w=XoXIWvt2uxDFTQSiVzwFDdrbZPhj1o2CrAZ@<2sA=_rZ$ts z&MumA+Q}WxKAMtV2xHI1nDShRYfdwn5?#nzTXNkJUnsiGW}7l!CJBh7Y8BdWg-_~GZwS*25{zS&6wX?uVx#FA)L52(i17X z&YqnV-Ba=Y*_0pN-pabi25A8ax?*FBlx7`W1c{X7>RjNuGO7zPtnjkLmu5yALpJ4} zj4NV~)j^Oxal|EaxFsm;iHa7JCy0v?|4b!Zu+J1N8shI|+>o+{six80xO^fMiV;>Y zb;gQkESAade{#k$nIIfHHKz(rWfw8mT7%HNvZ_rxPOKkE_4|>ho!o*nYv&pxhOIcJ zifue~+hcMRwzfAck*<`uu8myCd!oAs?Mv+MI*v63A!a_S4#}?kO?*Ui&fLq9W`VXx45R#J6XIhTY0G2q1Fx0A&;Cv5Bn^wZ z?2DS2<`+m=t}IYzmePx(VGaKzNzbfZjF0dnDm!K}9#}vP*+Z0-v5wGZHc^I01mr8w zL;B~UCS)DUsgq2shxKyNgXd0rKiz_F&3ZS!CFI7iR_QDt;3cO9Z~ z4t9oYSZt15a$Omsq@pxf9TuD$IfG~XVlri)IIt~l3z%dZU$Je75U~1Xd^f>ZIj}yM z&Gu9)aVS+e&)*@F&P?es z;=I4y%&%F~U}SMr#I~z5p^LP}gyYt{StQ2HevEHL(i3HkBF8wRXuNskXob&-e2r?$ z_-d5Mw&N}8BCg4{gnw)^R=JtaxIrMEdyT+q;!$F??mfQxyg*v%(b1Iq^@kJED?eL0 zQJB0rEV<>2 zs>++VCHDb_M>5|c)aFoo zMoYuxj)m^it>_u6ZwyDId$XQz^#eb1eYpphjeyY9>V%h0hX=q0<;v{hpsT9??a3|d zsRf$EUoJoL9GAqB`uRIw4#1piC-5T1J8UBjr2+QZ_|;hOZ+8N~3@};KJbYtw4)@0U z>MOXK{ja9w=$7Cd-8b?52Z>3|e#>&rjqXLuv)$v-o7=0LZ>Uc~Y%I)kQ0e4VMDq?t z!Np6VrIH}eYUmaLom6r~1dR^~yjp z=CfMM%!dZc^oI<~XhTX(^@mvWwGg1Kh2uo z|A55FaJ(?atKb48P<&uS50d3k?s7&{)qlL@FZ~69CUz{wIYxFE1BgEn7$1s3KMf`E zORUK+RGZ?f%XDn)Z$(>;H2P4x(yT3%V8u|5d&F!hU9Mkim5PCZZs8KZ-%ka>mb+M8 zZBKXUnc``i5Opj+WI9V*2Cz7O2MjoMVHsoUP$i!t$3&k%?y5a3F2__5Fn@I6`nYzg zsKQEiO4{$~ry)@_pW1OeurnttSGI^Te3Q(Vw2#%6?8^Aj4%+e`Jrhnk<(c4Hap;6l zL`1wFvA+Yc$E{KIC|CF=wiOAZRr%*=Dk524o&+-0{;|gq6W?*v9-J zAy(13`EJMx&o;5MHLTVkXYA{-vW@vr`pK_Y!MK@pGG9TxZDBjs- zWWIZ0O6H@R)OD>iadWi8uCVO$TWY7>55AYz=$+Q$kB8lbYh7!T%f=qo(5)FP{B-#{ znKTMl2@o}FGq$q$8HY}->Ub%Aul)r)qx#imL*AuM_)Q!sRj;z6Mc1oxefZ#i{uZ$GjmIoc_b5#3+J97fFq)PwXwEE3d=0l{Ry&L;D*YDV z2}~{2E#b7@*GCAN` zLTU4%%)`xCr1+to2j`T7J({$kY$RyC$*}viq)E`_ay9u8gd&O@;5{?3r#v}{5fI_? z%8p{eaRV_#w7R6<|9-peluIH_t*~w)*KWqvG3xjgwh*u*5dWK8CpRbb11*U3+Ix1+ zj=R$R$(skEd&bLy>tUXwJ$uuBrXN@{uLNj(Gzf#pOt$EfjD-9xGAI%hwVk_*Dr!EI zyUP-Q7|b#{F+f2$6eKO7RtBG%;#4*koPwWVXbmj;gE<$LqLW}`?PaCzByVDXp8_$* zz^ot*IcLi}8BbN*W|00RS@UABDlN%kcV47W7;L2`KfZ0>oUB`Pkklupq2r6kuUf=G z7YJM4IAq4c(TM$_N?6-O6&M-Vyy)WK7*dtR(TaFkHk+Q*7kDa}e%K~Xer2wM;(?*J z48z>}dW~?taQRzFj9V>uaR+f}t;1(U%4X*x;MgJ2+-i~(R-YD70euVj-!gGnI^hT6 z;9y|4UpM~$mx)s_GI6q(@GvoRaIv!g^*^Foc5&m1e}yqaKFL$k;RDvyIZu&U>hM!= zIZMNf+fmJg=FvhM)#k7RV-F$*f>CnmNd|FPva$1T>QkLFKD|Fp4Ft2Z!O!!4kwxne zY9dwQX;Wj0;nD0onxWDG09l0S$A99kK)g{wF`&OhI8K;Ifg<(>Rw{HtgUy)6q``dC*=4PtkzsS5@_Qt|psWN+o(z$P$jITKJ zR%@kp4YaGL#VT;1Wl`4ZB6mhvF#DlirG#0$KDZtB>mmfkgv$8p1Yt4c9JNW+KklgJ zd)jbJh-j63^^Fl|KiK>=M!t`)Z2tm}^rn$?p13j1VR!u3Se!d7o^WL81jC727j9PV z#Eu3}L#6DyNH}d|Ryo<+T%!G~V0o)ZPdaa2&O=%)OGAB_WLg4(``^Cb-^Uf)h5-Yk zK?Vau|KGlM{vV%5Yo2MTYhZrrA37Sf=0}C?l7}lBnSWDZ$7%pWtHYE3qRZFcj=%}! zo6F*ZPqSKieP^4KrKca0$|E(c)Tq*-*Y&Y{XtMXQY|?p0Ti86>#0yC)dvlmF$!YNO z%Guhq*t**T0DPfy!L@u^vGmz4pYp);B})4Zei73IpjflE&-51<5L>Z5zF5vuoAjW- zw`-T;6p+A1pbdg?g+yty?s_PPoRDWiaba_flKt7qjS`b6?fuRr#zsu{*PHOMFE-SS zkoGS*_i4dlDhk34jS|V;iQ}T5-VlZ$gQON|_WlR$uWY6P_H`lpJs!L%xohN70dodY zBVa2)pmdR%Q9y@8WiJ{%g7=FAswttED$nTjRL2WnBf1-;I6fcUJ>>A&UCOE5qj6?K z6vb6d?&Hpu_aLk730ZC>`gOBQKqIiYRYwwPvnNmav6v_YYz@0o-IG#k%U9pG9d`iXoz_aO%hkecw{W zg$c^T{{fglXTO*+X~@x)P&lBP2eu0aX5}%(;9fmpZ}27!n=5}!Z3bImJz){j%sl)^ zDA21Vlx6I0w=`3=VrHYjvw>&iqLoi&Ybc&#tU7CNoKHDfkdgSt|_+KEkkqj~TWs<94M3 zCgT$Y=W&6Lcae#?q~KF~`k8`ev`Cnp?P+sTkM?S&ggHs$fDt=nR8q)IEs-F+N{f=T zQo#r=b904=snm^1QMf8aX7DZrpJOzA(1=sjGAP;H-LLh~#rJGz3U{{hsWQtFRhf8_ zR##;vm#xy6E2+&DQLWgvbvxm@DDU~2+@O}yZO43v8ck}V)^TMxpbd30OzD){Mxw?k zj*C5ox^wgCa!=WwQ4##PQcCdsYNA6Mw7ATPuB;}nizQR55w)cn6|?2G0>=luo=D5MsU!1v<`O)i&eM_ zO|)C$V&qudM7vqP+_6|FtbCti#VZij3k&78M%qHTV?pBj>fp8tYJpOLdksYe_y)c) z6lX(j&VVdULzbo?Td{%G81j4SJ=AwhKq0QDg&F!9N+evvbjnR4Xof_;hk6>6N@UL8 z!8__w#@Dzj+~mM%6bDH*vj97X|NbdBLWnNm&s_2dxR)Zn2LW`EU-zROdl7~zd|W}+ zS7QbpvW-F-pqD56=)!EukBzjGPtf640`dDko`F1(|@6MN!|K@zJWvr!SyHexOH>l{S3k2&%F_(^Y z6?5&$JTaLU8lesIIW+>o3il`$5ba`RfxRLm{xzOpg=Y*moq~S?3wK{ZW$+8!JdUcb z11v9JZtV6F>nTlaTZ7DA#xnUI6-fblemC$xP*)J(wLw}!gsiWALvE!3$Ef< zjN=b{jX&|N2-8L)Tcw@bv4aA39M57W(c~ume(a{uc}RN`<$n|318G_+zi8wX5E|J9 zWHOu*?i2p*`3F!-0|W{H000O8u%^{SSOOwarWgPKKra9Q5C8xGYG!O@crQ(1X>KlK zY+-YAr8)_CRMpkz+?nLPnLL6_2rz&!B4D;jAnYN6Aqf)5MiPPu7+)rjWMDEg%mM^= z#9h>Cm7=y3Z5eHCE768vDpHqPw_0thR;_#8x@xuB*2;g*eY0hu_WznMIrqM^-FweH z=iGBIJo)7VM*(2A*kgxRaiJX-VVQ!9?O>q~0_8S59hcal6_+yY3`oXa?!XWPyM592!QXy7LP>{PLf zKQ=P(GG;S_Eh_pH>}H*Q1_4F}8EjQBWP`;RW)NWzWw4FaZdY)J9V)PgKXxj39t)gr zhbmmE;063~AyY0=@M1fx#7h+1Wrtc^sN$t|xF2_`co{QYZl@((q2iS)Ud7*6D|ijt z_*%yAQSmwzujf_YpyJn5yivuQ`0MKoZdUOY75A$64HfsPc&m!Hsdzh6zNzB3RNT+{ zzOCW`1@Ev!HxGTMir-Q3yDA=3F=mHX@GceaR`Gj0)9p8pTH+od`iWqReZ*dzrbf1{L+rk;q!Lb!`}BC{z}DPtN0rgU$Eng_>zkG-2T>% zFXJl;W~o@9;H!2xhzk|`ogMDNg<1F-zRrN?Z)Cwe_#}V4nT2oR+gbPy{+_|R3cjBO zz4(EGA9DK#Ui=@K`%etsR`Jg&{)Lf$Rq-PgKUVQ?Dt@Bkrz-wk#m`jyT*ZH=_)iu8 zrQ#PV{#(T_RXnZ=Pz9<&sKTNOt12>7kxAAN3NQCh4BqBXRS`Bjyujh`im=l-BFio` zF-j5HiWrTcY%@Y(Z@`b>sNJk@(@T81zq6z{67u>x7bA?S4EVzl-5+VyeNh7;v)t?V zMwTF0^72~|td)Td!j7)>`i=T%ce@d4(c66nD+_pZU#lMS@^>6*jdXd#2wLstO+I5s zNuBQX(-3N>;Wt8hgc!!;nRD<4N|t+l#$q0Vf(ND!Le~c(%L7q=NA(Vm5sc8>Nr}b3 zNk_&6Zj!RC|6AGjga+C9^X-LOU zPBURcG}5rC&gc$=da6UA01q`WuJ259!GX{SI;Ctn-sbfOqY+*=LiS+u5HS*n=)M+j zHxWn0weuH`W{pU+5;hl>T6?XrgBMFInL#}iX3|M1QX`{?mLkUUpY}y)sI2sHFLJ^~5jo<4bCu%j_Fu8KlUBlC^ z^y%TSLAtBrQ;eGYC2_gNP#|c8B3>gr{i~JI(Am*JB=WCK^yj6&8Zwz4>fDBqGr}qm zGB(l5!_rnm*E4RgxAz1S9`72$TRwOLmyoPIIXlvAYxZ{f^++^Cvh)5MV~(J3dXP9H zgU!<;!#7;v@2K#3b!pGsyb-ihyk&TN`p%sci)m!J38o1QUk8FSjTSO!TRagOpGeHJ z&CC>J%g}Uce1@MI;U$ov^Wfx?dU6tJ%W0N7*KDvs$EM+HB4)6#Zo?l5^-x=Fw&~(^ zdT_c#^CriWTBFWE?oUowGKP#!a-%qjn3Zll;^|^1AI?>0l89>zB^*-f34~IvlN}sn zU7GeFMAFpb2lKTADo(t9T1IO9DdU$H@Yd#!WUlhz`^daaBiUvI-v3(VP^HQF{;x{y zro)EyPI8-ZBYHg_HJfA#w06^}ArC7vYZKBRsovpbudz1=q9KoA=1LnMFU71%gE!z! zMVzFGG4LiOwzM><2?vvMG%;4>YGRxiuZao5N&1JUJ67{PrP)DAl#pVgCMGc@dvFeA z(qx2_|Kri6iIaKYDLm$c6P*s4m?~U~I7LIJm_{p09&(yEm8U;l6Enn2^0T3aTNd^D zc;@0X9wblXYob6DYN7~U(L{-urHR?_z9vdpY!2GkD04M2 zPt4cE0(ess3yA>#6pIv5risO(Tob2@Trw@4xbAjur>SQNb1r2SXC#T;v?oMNnlXM3 zv#n?~%UGh4C8}6r+{h=hhI8OEO;j`Aa-Q6o45o+`6gMLs*qW%}eVu}1DYcJqaBE^E zk2dkdXSXI+nY&b*&@lLz)O})pI&OC$8tL$ozDCx! znrD>hc89kZK1yn`)kG6dMoae^vJP)kGdo#^do!(2ig8C1ExdWcO~;na?WVlf9taye zRJ^N+HDabFT1~F4w9jt$)~MHru!>~I-4X2$vU0N}gjqaf$dn*o>C$jE8;|f_|E2)*bE}E77)!JD2f8`p zGtG`B*7013JE(iMFt^!C#&&&+$w(bdoXw0`Znw|q)IB|NaC_=Q6YH5ihKHp>CmabG zdbfwdjutT#rHKv9o5N!a<93XMw7cC@XmH-=Q$5+JH(bF+(Q7r6)&&nt43(r@uB z35sXW<#x6N#fyqubLf|8bC|}B2~1R}1l%X7xw19c=Eeb|Xn=XLC6a7rOJMd(CE)&i z`jxH8HlNw%n{4x$ZGN1sc#Z_zUqHXIWf2W?aI7NEL0I;`muZ@4V=E!$r*nm_iFOVa zkDxFzM28|aX`++EX&fCbp`Id_ClK{@_)m+tXb8WH5+u^!q`VCsh530)%Qh6tUj9lA72l&Qrwsnz%q*sECU+aWT*B z60u7Wmktt19_pIdEp~C}4axqRxJ>NQ#O0hjt`Jw!+KOBVK*^l*&UAU;mbv6IUF89@ z1YP1Pm%i+l#V+0RW~`<9$4H}7GIq5au7IEZLM}>?)KUpO&)wlFr_^S!|Mx6$(a-jf zH)6OFx4RA(t8_&I>1+taX8LoLGgXSYqG7{j?BME5_qmv8L<0Ue1HuwB@?B{^VI$(| zFgEE?U&O`xlNggG?CLfmU4af)UYwqfP-te(K?=xTo``ED9o?j$J4mAKUY|EYd$c$$ zf5f@Dmsgz6s&!A7PDYSbV%W9*oDKesE-zh}sbG*+S>PJ>!%Q1O8=|vj%~~d5CBudD zHbhHjl`fQU(ME)ZVR?y#y?&1`N(PB|}8tLfh`DVYy~0m%i>*BV;dL z3`frYS1&?dJTa$Raf>(TB9yn=yVEp286qeRE;Di(t2wHNRFQ|Y({@IKuK4w;&^(ON zP1fNJ2Yq^vD-zQEVXxF2;rkVF*UQ6Ykb&cF7t(`W+q^qnTyB`UU7L68Y3`+{9MS?LV-wxK(g7(UIbD4BPLjBuEIAk1MDPB-)n_tq1sFu0lsQ}Fo6wdR_q z>{kpWS;7(e2uHl0FwZb?_9n$-0WFu7p!nru4Edmo-&|-ngFXBqgB@X(dDf|5lDld z4NaT!;}PXU&lb6oaI)4VHH2coxq*a-UwNx zEvbes9dg$yJn?OsHq?oRJ`&0)RmC?@jc0zoeALy{$ERWEZi1y~$n)+{eQ8UQH-4j= z?+^C1O*Jjm34JXMEfuwGEj4x3{Bo1X6jqZQXoYwDZVG&VLgwNzIPm2XQ? zDw=5RcA0#`YrT=K6TDWE9dp*yuc~iYTi;gMP*+z`UsYREPokOLu$c!fdCa7c^KzQx zCz?U8r^KLlbR-^5hQAK7D3ya!)qlt`BR(t6N$0PmGO?L_!ti^H5u{SjjKgM9mw23v zKU4Cl)ENr!w&mv4jF=cl4|zKzSvrgBb-vKg_=;Sac*)qV5$l)D;KM&TpR@tx0y({}GI~tw$N#}CL&h;@cp0|j&^2agBzo;fDfhXFHfjK}*SQbF=rU^z#+POG!WdJ+F#tKFZ|p-( zYais^595w8xgRFxEPILAEo~ zF&+D1Mjy=Vh0~mw_d{MkAO>6czP@+o`yD#A4*R3>v9q&`8S2BPotq z=18+?s&WKkEH(AdVf|9+^rX_c!;}tDH!rS^bq&D$bp=kVQ#lL^%2cP?2MbNji&%4^ z?3NW$HwKZiOkQU>gVPx-VX(9x&Pdpm8Tw#ZKUAhLy->}__G8GA?H91p^gXo0GV-%Ruz(w~pqS{h zAQxuC1So|`FqgD1fP7d8b6^pi4rRo>n8rJUMm!x>!xC5zOThz`5QJ(7( z9D+Ld32_~RMtGb!pMoZM9$MgKXr&N2i^g4#C&31s1n1xsI2WgZj;BF87D5M>!X{h@ zowyD*V;gM2&Crd02;lh;#7iKAmq7%tg>85P?7+Qn1Fd=|-VW#CeQ-Xl{6c&XF2cv) zVp{z!d=@Unmti+q;BtHiuD}oBO0vS$_z7G?R@j4I!gay|*NZH;QO4gLWXaXwfDhn9 zipwC)=@0Nn>OBs>gg?QbL7`bpBI;j2r7@>c@2`+aBc4RPkEr)7S?~k+n0oI(Hue5S zy-z@;-Y3-i5=K$)Q_@Fq41b5uXv8dm@Hza0qC5xx0so|)fL#0x{smvqu1p~5f5Vqx zg-Q4k97oO#Hol_~jkCi0M9BcK6c0cxxkO#9<@Ct~NAIvqEtp*DsPBV@TOpgfjnv%- zr|uR=oIvP#A}hfvl-iwVla|} zI%8riV>YFTok?O>3_oLxH$~hmi8;Nn#o?35vzr#_XVW+WDXw5r#i=p8pD|lg6Ah*K z!sbN#A(E~rnqt_NVA!6{up`CLlN@Ph3|BJdJSO5&?w&7+nK6{>zaS-bVN&X%7|Qiu zoFZP5B<_lVT>qsh;_f8zvKYL~n9EbdD@>wA5+7vDl_}y?l30=O5;Eb{j%(7=8S&J+ z`{CLc5z^z>!p0H-rWZ`?t@%vZXyE~x{tuu1+0z1 z%y@!#+)Qbms4mAXiIXCkZfTCOFWxM?7f|dMcZ!3shvJCy;7ZC*05?;l?xk4X2Q%ST zI<9Ynd2l;rx^Gd2+YierJ8XbE!GQ0;7WgjZySw0GxEn5odr0C3@J;w3<-bGlQ|N`q z;68W)?uV!0Fy)PY$_+;-?jN8?e-N|bC_3OF%!P+3-#vmQ@F?ZH$8iPx92?;YJPV$t zeD@57;1?K$=kOMI9{0ho@BqAkhv7wh0A9j};T3!dUd318clbKIfuF)#_&NMuWW&3{ z0q==i_)rwWA4CcKQIx`8#R~XH)WXN20sbxw_)K`=bK!%3iCyr8xCZ_$Zi3_DHcBh| z(IW0dRUAaCxC=AHy{L$Ow25P=iKlRs_%&vW7jd+B9dpEoI97a)xfTnKw@kqamYJ~E zQiPLb9$f;N;x5jLm;qL?A5OtcDvT`RLnudu@}7m9X&S0%qijdn3+E+&_w_)VQ5I1B)`Ka}ZR=H)Aj{;XL0WiX@o6W5W6bb-(FardNHNPh-b{ zKDeVyaVppccOHZ9&~KTQ(BB=7&WOP%KFSlbIY@1cbXb}1=zP^O-gD@ekL8`Mk?WQKD-KiddA5h@zRz&Q0uQT%q{1C}We}ur(IRf`0IrVn# z9YRvq%f-(TxR3ky(?Hb!F`C0TZT-;4iVq`2N;&uXNlTV9E3PG zTlU3{|H|<|KMcfKh+X4I_YelPJ5eACujj^6f-$kMCV~KwBlUw<2=}o z^WidF0M}97a62xB{kRAYU>V$v<$^#%ivS2gfFp*JgXWVxEv?p znRpu3;B2hG1-J^=V=Z=K9fql}-hmCc3mfqOuEqgu!DF}vAHi1X|@{tez<&b1q@b zb-M{;&a;?CHODVbj$cCSF(qdaUm}9{&`f71E=70>X8_K7c`)fGy~6;%NvawU@UF~C!Ry8qzz8Rb7@<3+T?a9MGq{%4%$)!DsU4l zr!88AUC@YLSVQIP*|-JT&_|_iH+U)4`!N7v3{p9}6)vE(zl#ic1xDa{O8;NSZF~)+ z141S`I&K6R5nypaKRjPsc!bUc3cAy%^J|2qS#(D4sio6%s z@}kVRn#h$X?xaPX57~GDE#N|${3TF^mrDOGprP`>%KsaLBywS*^d#P|#qo@t0rQ7s zY!fpmW7B@mr3ILm;LE9H4HIYqFU26IwjX|L?T43Rpw@DGNK&ojuQ{@Hki2mm=Y7Xb2?~@J@`|!&=|e=9!|@&{U1$g8r1T zuL-iZQrytV-#vXYbw5Qh(v>Xyu{)ZQ%2eFuDKC&L75AnYnK4NZ?*JSI^jy@4v*APXZ?FOZ4L|PFl6e2?R9H&Zb zKFL8S)*Vhyr>aHMpfraEoH?T~=(DIIn(?%*zM4QPW#q=mFG)0WrYiHJzCw*?S>CX= zs#sIpPK%=P>MTyEq zpMi$u@&J7500Ny*3ze6q+it5`C((98wDe==lZqnR$(G+TQP&kY(N7XL41>_5`HqAi z#0j8r7U(jNgl#1{1i1t}+KoU(*142K2r3=IvVkAq1o7wsX-&>FxW;)VpSNt46M%S| zZb<72C%P7`<^az>qK|{VGgPz6(e=4y4whD#=ru>dY=%a9L^G{Q0(7rsEB|dRUE*Fz z)h2pOsZ@nK@PsydR7n#?kvIDgbsIgVSl{ccBQArjZy9(|@*R4)%p0OsHu&+?fDK;a z``-fwoDTjPyi_#>)g=*3T2#cU0fZ;nKwBS1ikGLA|dS7QC3QR zo0nb5-hZ62jo@2M#xH1ze=fW!pyS2yMHpP_{>^3Hwwt=TVN!^UrYNC|+`Ras;{{Ed z?B&7aX^a^l$66sXqFVhwR+dXZ$Jl|D-44h7n|5gK9dr@dSymmG6+41Nk|}v#1g3@R zq2`o*6jb<5%AF>pv&CfMhS)TI(>unqt8TUGM{J{EhWuG7vxbcr%wzQAAa7Gv&660P zW9O`g(WvT*OhFUFQiB2B31`V@IWl5OaF-T&YWp`Wx<)TUO7t@H;=QO#w9Ibmyj6AA zKsAYtMviZp97i%Sle|sr!wE(3?nh)pv9xs*VxdwimlU7r;6f9%$le%lJrcAxRl(-_ zOXvnuMb&o79TSq-s2&(~>_u8snwdaIN9>`(8ZGA0a@L2HcH3rGKAHfnl{gcuKV;%S zwb`gL+NJYKfDD9s`t*r2rIIg`aN+xAYlwlCwLsoEEe42>7wFP#N6jqN8go$)$!&3qErw-<>Ka9YWyPq(Cky!cME&|kNM@R4{PU1yF{6HS{ zpStIV5HPJx2*HD=PsVr}2f>FSet~6)Io;{0fj#S*K|{;H;Mf?%%|@%tK!|1jh2IgU z=SD?KNc6i^R&A-(FZ*t^nsE?2=n!w_4g+)#?Rb_!3^tUfycBP=f=&6*k<5D)oai>M z(zL^NYh>aJFG4KI`w94SsKzb+>1m+^?7BzmkK>Q0p6?Eop*O6P*OG2QW^uC_)?2nB zqoH1}DYM94%X3Nnl7g8;F9F;IlE{s4K=Xvm(wJ1Mj&{IqHdIbDH7*Jo z3a<$Yb8PB_WtF@+ubboK`L>e&*DE>2bLWCO$amdwWEO@Y=6}Bs>Xx!?dy}^tRzRO` zsLA%L5mC`>9xo01Vc~c{NG};1{@JjgHplI~st|IGzhBeVj;$kc!gHc(OJ*R^gIgRW zsXrCnBkFZWdnl8<6xPDnJzFRnB_{P@w;gIy5VRg_L6D^YL!x4+2~|Vw!^%}AuDbOr zG>go5p)X?|?wG(w5-;a2E&K+V`0?BvGDkRMsuq}bLZ-N1i?*v#f!$WveZPTIg<*Bm zh!*pC5Ym3R@V!wmb`y-0h>Eh1{hb69pR35w6m~EDs$#N#;)L$E%&?RFwa0$e*v|4l zI#X|Nd>(>=!gx9KtJmU>4y!LU^WCiV$ooe6e)xgK!8mxM=9(wB zT^qHS03|aB#3|Ml<2QWA2;sFTc6Lq2G;jC5Ry4siS-n2}mEQEsu#*xEc>a75@3IG5A2mr9A z)kIU?i(PLc0053b000jF003%cY-M;aPDVj4V{Bn_bDdfVd{oudKj*&L^THAsU`PTH zS;8a%S&SGK#SkPK0umMhkqpU@41}3DnXqZ=1}?bPwV+kRC2Fk#LV{x5#n#rf*49>A zt=4L-R$E)`V)_2(zBg|si{GZd+S4eZEG*?M;wKUhr>b25* z$B$#z1^9ZtK|XJk<|ZHCY@C1e=+OXq`MUylr%dmX(JeW2fNzx>z9*yGa`<-MEzKQX z-Xk0C4A5A<%TFDAw|w3sO@{!wSLW^$K=%ul-bL z=K^#x9|`dD{G$N>m|yVmPkj7SAHNvjm-yuXx%m}oG{;^I&=dTcG(VH(bszs+E_*}P zej&SlDb1VG{7RZ%OY@dA4+?p2%jh>={%wFF{GgZL2~dOd?*=H!zw_~Xa^?H7^Y_B5 z4|4bq{GqIUBy)e1(Z@3SlZ-wQ3O^Nyf0lip$=r>8{+$2f|KK|N|rT_T&s85ksu~(@8U80NtZC5TFRc?#~tL@6;RbIdH zDL;UzfLG-N=o)ZVnLd^4Q~iL8>hDtnd}<)nM& zguH6FpLX-z(%dH}@`02pkft!8MyQcqRTO|~?2xr%q!}gn91FVCXrCG*_l*VX)i`O2 zWo^7PVQEUds#N+iX(mWB(Wj2{sYy^QHQB4C$kbH%I9^8OUUh`O|LKw=*<^bOKc+u@NSH?#Zu8m0G<(x$5OMv?BeR` z@k_CzGSL_n6k_pcZTp5b(d1%V3N?v_NXyblGA7^lq$|}N16DcqO|^4pK?@P zpr;j z1g<5)2qPK?sebIYFaX}gnpmG^Ypq-Yc||rxCbmT4O%to*sc2JFII3c!nFd=+?WtJH z#Ojp8ZSUGda#JMPn2{IGEsVru&9^4fu-;m9M+J3&N>0isjD?3>ken=1NhH<-`*OEYxaZZ6e|!-Q~2UH7%<#J@(G%gW_2NAQo?nCQ~)QX?Alo z(pcG?h&9M%MUGr;?79=9IiKvQy_2W+oSB3f-VAD5qOeHsnn+u;O3SAueIwWqjkmQY zqm_}?NJA{OMQky;sWxM&{zOY-O*Gz=Y6f&HS@Y=`A7*Ux_hVSywy?de*&5Hb9f54I z`4YgeD(y^ip(KlwkvPml@AJScw5qscmQ!#w!VRF?5ZPP@)xdW9Z1yPwtAN#zh^Hdp zrj5&>;+_UM9=^$F6I=B+MN?_qihA$ssTH{m?a3q*D}BU|3)5rxpoB0_F03Bk+XuL{ z(t~bo9d-6cJdtvo!l-XVAPY=R<~Ri6Nk-e+TR=#T?U(1qT0pXQ&fM8mjZL`V*j_OE z!p#FV;0OpTPOr|X{`5DljifQ`pQZluBVv1AtcoE( z2907^Io)m)@1F)N$8E@&yQX#rIHM;u-(X&&dYfVQbF#_b*uJ6F)=yt5QI|@_;!RLD z;fe#*niXqm5%=83La5i|DebYAM(x^so05?BoCL@pSZwW!B_={_QEkZ{y$o{>I%^97 zAhk?S%carmwdw^`n;W97wtBkO#su?z-N6c3iPYRgazg}{vM|+lHPIAc){5M{#Vc%s zb46RC@OeJm8BJ~!`x%gNvwCK_raC<(@x#{42Dp@#Xj_|(g1+<@u7tU%hGyqpizWKr z(ZwrzGjMz_zizZj*f-izU`#&?h>lqrMzFZ2H?}A-B9*}26-g#XOFmL94nG>l*q^4Y z?VHuYAy%tJU92e{NonIA*YmbMPFVL3v=FULWZ@cUNNi{YgQ3w`4kt}$Z^C_+B}p`O zN0Z3}=no{L8xk9%bF{;Di5+SeyE$!qrp=$q8hxYV{p@gI;pR!&5!r7eDO*SO*xDN% z7b4*#t3&+s&1h(`)0jYAqCMFVovZcF2WS(7NhbZ4J~rtUdeNkpr1>em2my9CJd=*l z^FTY>)tdAI{lugn(T`1fmY(yf3R6v2GrVf1NpGrIUUibGPNt6p{yQf9oZc|$7xYV$ zUZvMe`Wd}$(#vw)huFgX>2p)frWd{H6jN2o%rFj_TuARQ<=1U#L-IBu(Vm*nDrQ!^ zWlIXIEFM38I)JM=rm9kNP1sDzRHv$Wrm9w_nd)>^W2*V8)~gnnY9VGguFinKdwCvH zEmC!+S}dr33XIeefi_AlHMyV6{TXxYVXvu{v0IOf!}>N8?47-eA5+@`s4z4@J?ilAeeR)H`PY) ziQc4NnQD{TY^p6Hr>*o6)37;F80H2jDu7r8Nl{{LQ3Y;3SDk0lujwsQeG7W3zAb0Y z7Y&JVi7;lf$zyq(;I%m|U2XRBB5lnGJ-{t9H#?b(Y_YGB#YIE``SMv8K9AU2du!>Izd`DHQHd zS9#Udrn-jD1Sck#>RMsLcjSvqb)7;=;%nDpg9w~g;Sb<%#E zMMaxpsb+9A&mP&?ga{~2W%o#gt=U1wniO(R6?WZZa;;o-Gku(OJS$jv)pt#`Q|&Uj zMco1hSsXhx8n@DXXCHLCG1iofv^HzToeMt!HCW#mOBT&6s#ydzEn3;u9D!oZENV=& zBXBpwk_|1VO4*T?%Z zHRLTKKj9lPV#LmN%eSiUs|Or^YxxY(_;sfG0bCD)^-4z|y~|xkyLH6K@-Yk6tcy0J zdiWwK-?7mu-v_3{i(P<9F`3(~VAYvTdLo8$%E|(#iw^akhF-^Yr3@Z5MdPc*53O!U zv`c6m*sHk3T}X0K%Q)XdihHLXIyg#Ekgiw8u?dBuI4^uo>c+o^`6C*&5^cRoeXr(RxPyrq$rcF7okT}`G4%p%z-e7u(9v?>lsKQd`o_AR=wN=7#_jp!-to=i+% zT4j~#f|ck)nbbT53;SxIz5 zWplJ)JqT^F%i4iG)1qpf$F**;Ds)LS8|6tS(%PyYJj(jM?i(wD0!M}VTrTU2&;QN- zU|-iSP5Ti&J3k_H>8Gda?umjOQ6{)3G?UKuUIZV{}bBswbcI zU?k#n!$C=L&__v*!~LPc^HF0~SqZW{a7kWUmClz3Lay^-P0i6H0#PEVA1E9>vsJa1 z=DHCLBCwAE=~saa^g&Ym#~T-Eg?4W7>O`Ah#1+BKh z`&yHUrlc<9+?qAQm}qiMqD|~m3TBvt_}+B2?1`S!u4^k*TVsjZj{kNItDkk`u_WsF zb)9q0#~qO-@r;4F)iqVCmo2JZT$Kq4-S$kk2UjiwOfl5du@_h7>6sJ0{Hmi|MAH9zA9={hYhDzl}{bLtheGE z4I%-F%uc1VEKPy{fWMZ&=x>k+XvM_b?Bi_`CwhjT@lqrYkT99(w$mSLbIcvX* zP&=D~bP5fpN*YCTuwDgD%%$mcD!qrDMb_Q)KK))(FhkSKdL+~;jq3+Cu0JC;dC^yg z^UFf6PBPu42Pn6b`Zd>gQU7r1K^hP)J4ge=A>fx64gu*wVSCF#8XWGVV7Vt8^mNe> zw4kgf;%5NaIv~54M$!@*LrbZI&ZKf$33Sc^8LMa>ovjg{XCdMsUhN=Wt;M1ANCaZ& zk%-KtM#IPsDD4(cc|D0DKS7zymb2zWD(MO^;rVXcSCqtBnHF zAL(No%&XWZmn{PX*9>V~^)roGg%}O$q+xr&ru@Q!P6}-^xZ~)@*2-Xa^Byp-kSG=_@!)-sO4uc?DfmSceIJfopMwYZD-3q8R8|2XtB}L>nN|78*+lnoO-U4gD-i z(gJD&FH;)rso33*hS8ruy+Oq^gg((Dplg%jrbY5f0Afr!UET(?8hl2dTjZ%wvUe6 z1*LI^+?`b146PXtMx;Mo_4Y)^(I@QP;Uny`hb02IlS)0iX`JXAlrz1lizZlTOq2_c zQ?#suUP`0w+#Ig(ghL)sQQ@`Dd+qBX0T~0JX1*S~7VFEryJ>q^up3$7!(lAvb-A^UL4?&)ig#^L?h~(%LCzHK+bDyf&o{(?3a&_D;Vgc zsU0*zpa{}wX6PGA^#!6ShSroFFn^*8p!F9);@ee2y4*H7jWTv}W{`J5xx{r^g`}uf!fKR3$ za2-9wjkK2&w2#lDhxuaaci8Uk*|Gz4{D9KkG^*@LDz9*b z^Gidn19XDumNlG)VF%r&_f6eR$6()ydY@>8Y^ZpWrgzc|y=_z3A(~n43c7Bgs&JVo zj60kka$9084MMkORd}>&xJC0kmd3c#8l!dD^9Y@!bvb;PPF{YPW-sreQ}QZ1X^!B~ zNmY4sW!y=pcGA2qs(vElGZxWcw9k_tVXr>|(r|>mF$jFc;OQiA>I8Vw8ic$BaAQm0 zEmy#wM&L=;BdoO{u$_;vwgW+7Cqme*kmWN744OYifD*(gfKdcqNaW+j z>9L#x`FH>~&L-}1>0q4p;m>le?Zcnda#VV*AEYdD>7VvLJO{A+qSN4p=kb~O1$z)l z3f#^4hv>9fg^#%^T++A;5iKh`;#v)flNDY}xGThG_>GXu5Vw4YP8UWSAy3w)#|Zhd zK68wa*ZBe!eqPLqE{ATWIVzT$=Fbiup!wsWZ9GtW<-xR(^R)L4(K$Q_ z(sbdb79Na|8~3f{ASCO-tt)v5k{&PaUcy5meIK#BKidK8L+o**-8fZ_xsL^~3 z3etl@8Ps9`r8-0l@(aOmSADrF9CRV12gT{S?gD>;F3DQJy8OunlaIiu+e4gR*g-?> z&%@+ij-e{-qBH6;92^DQh&@!sJ}QR>&48wy4lP&;4Tys7Euc6Z$AGcJovn7v!ia}! z?#L)#bEllO1W)U725?37HiJDnkk_DtzHWiwI9XNEl!Z3N!&h{gFn$ zpgZ~_#ASf(J}^8NtR4;~9}9$z0|KYu^7nMIqpx*PuXIqa)CeoEU^kmW7s2@*4X#){Iq^7g%Xrl-UW(~#$${alZD6R+A;{f6pB_hzXRb2 zu4vi(j-$UU-P=8R;ZuQGHJtqEG?M32F)yI0dOQGruF<7ya#-dwU z?kbgN>Iu3gchXs%v?}wps^jRJWf>ZD+RAYRt^^I_bKvxnka!9S&?XwkTcN<`f`;>; zeit}OI}SUFZRa=F!GA8~BRb%MmV`lxf+IPe$6{n?N=j@>w%hf>lr$AxboTs`BQ&~) zP7E#$TaxIa)f(-OvRFSHnooQwnS42vVh0W7E1(!x(j>knt1Ot}AU6d{^OnvB$8niP zPRWl2HcDp!X;G#EV@AGUv`44Tp8PNvyt-~1BbWVS#y~8EynzCIBiMBV*59BDOr&)EuS;d)x?ZjV_nUN#d9!g(r9t;2bdEw6@2>C|<$+*8 zu-rp$gnSTB$S*l{UC6IlJuD=lH%GpfOb!MtZhsK+%GM;d`Z8OCA+L~OZMBp)Jk^mqOzea-)77k|wr|A$8?gU2c#Pf-D$rc9ov z`g5JiBrZgmXbqek;SHC8L}cagy@glbQLntD+= zF4ETM;|QI|Q!!^^r3rcdU*Wo+rMI+V2auEhp3AW+KILKC08H-S6L=bwd>G%tCnBR! z;L4?3!PCLBiM)+xXcst{FXWjRxk0PPzV{a7{_=F<0}lr2#}vQL)Wt(saA!GiPmnpM90(&fAS@@wapm)TzCQ#;z#7&8kjzxJz= zyz>zGmgz!#%1)Y8lJ_n9+b8bk+qGqRTRQ3dT{NIXXH3gV%5#_iS8APgsxPfemcHJL(c3XM`zX}mg~rl@k7p-!MmHI1rO1uaxF zD6VGFW_1#MN1aUjF+QZ`(u?X;dJpG6Ql~kAZweK1C9-#eT4|ov9RpJNt=2K6vt~;c zKKg*mxJo3+bCGPlW0NLelq^`b?dq~^ciCo_ZQHhO+qP}LWvjbv`_}Bt-r1Shi0219 zA5I))p3Gkwi9IP>+|>AP>8(Wv9mXD#m^vGxX)_EV)555zd@ITa7t(ML0XcIEZ)1F9(b`~v*>qwLbzhs- zpK-obs}*l9MzYe?uyZV>TGSs-f>qMMR!WQUG#Pv-k@VD)+NopQZllpbH^gfKi}FMT zTB0Xgv!zsea_fqkcWMfkl|yjDJHe`=)+o#@l^Z52oS*P63vDhzbPA1}Vx;&Fwk#S{ z3zTe}fTt9$s`7kl+7!DjlfSiX$cU?=b}f5km-SwvsTEZ$sddvRSklhZpYU=^cHv^W zir9erU_wuVTvqCqq4Zex)A47kX&S$@E;{;YS)_ar*j5cvW+#Qs)V%Ugxu)CxiM8Bc zfpL?_^?-0*eC9rFg^3fH*sOtMt_$Y){LL;a_7-667UC<|S+qsCR43(iRcv7JnF@8a zOBIc1a~}k_7PiKxZ0%%tbT?E@ig&J+z^CaLU(3=BX?n|QC?ldaLM_% zsCiK*q}B_S{DurS>WI$}dWse#eW!6);@g}ZCm4DaiYI?ug5}YfX50cXO*q2VR=;GLTC4{W>sqU&jXyQHwwEzPTcs`y5UAkhvz)r1K^ z;SoF|<2P={a&L^iJ`EQPGB};B9}Cw%O}tbUVkjOI$dzdo@>uI>V2P0arZ%=P#(i{3 z*E5pT16~nyjI^z+cO_Q2;P5a#wA9e8pw@M=6P=kyEWllkJ5ggBSh*_`wCpzUk#ob* zRW7nEL{X__QSwI6Qoea&_@G|NbAsbSv0Zdk+OxJ>akUJx4zp4%2tf}rQINta2rClo zT!|4*2!pc#a=RE&z9RCAKl~rWj5p$}ci!A$BmxAFkmo4!B1<>S&L4wM2Q3MH?rLwevO!Ov7}gKE=w_1%|PGKISgz3-~X z^agzvFRX+tfm169!%6z+CNVihY*8q@C=ym2fgp+MmB8A7DaoX3rjC{M5F~IbFLean z;9IH!_h&@RMy)}S=m|n;WZUTZWdgmoF`nVXweep(%~8{$X%>;&V$2{?8O#mNL232c zQfwjd$#vnimRbaMw)8y1ke8PV!5NuxOPx~e8#cUZ z9l-n%;x1iJLE{sr;DPSQ(hlJL$P>KqY?1NiUw9@we~+9~#UI-D8eOaESAe^W>74hL zh*0jQl=jBKSJqpawyfxh>$S_G{g99#orn8*LMY~EYV_+pT99`QYno&}jy=@Af+>0` z25FAz?v>RDjDbz;Zhf?&dlqXZE1JohXf(}mPIc6M$0qm{xF{GA8}$X+D3U!+uKc@& zRc{po*iy`dRXZ$)(gx5HlIC>L28_BquE94M(pK53PElB!$Y>K;$Yb{{u)y#Y{b=UV z!=78<{d<)R0y=n>o| zkV{U-a3JSzKcD3LH2i6s7=JMOE8RYNxQpFavJNTCivm9i|E1vbzn|gz80F+Rh=(d4 zQzt5i)lPKHla(%eOZ2_w=qeQEa}z7E0kv3<_$l3w2W283QZf|Chw=pYLmO8utXE0j zUT19K*d@?Sea&+fOhNL3*}^CyhaF-YD1#886F>fn3j2XO_KP-2x4LLwVe${_I4AU| zf}~Llmx}3h5o)w$C9_-+&Y`oW_0qglQ7Z8$h$Z`MesM$iEDHv})rd+bv_~Cx%A%|x z(3V3@=|`C2Zma3kzabL=7uj=GLs)a(js_=BHuoNslQjK6a=!ljYAp<(z5_I@IlN!Q!7W%7BW zdlmZDdG;3)#(Cw?H#Rr%`7<$}<^Qf0+H%TSpWaRKdIhR$vCj|EL@DkFQ%BN2 zENp7A$X3FS#Mx&tl$Zjn**{(xn~s|{Ov*+?3J`8gKO;7gnb5Kbx5i5RO&I^pqtIyM zU4hVzKvZHO)OmebIA*`06i#^HWtZwAb6q(0Y>FNFxIIOFwDdhfOc2&bbolEpRu1d@ zNn!jg6uuF!lyc0NdFd^uDz5y3?IBm^n0xLMjzFP!4CaZ&A;m-BEivr@*;~vlvyXYV zkROw7(KnV|{nQKDGt17A!Dt<_!S26`Q66oJk63w*okQ-!=kCcD|Ey?4E(7o3V;n+~ zPTxrm?7Ul>(PQtpTlF0)?}0cRzhjb7^^eS32H(|}OaZ3YyH)xUi1w|@`M=60wRmiR zW%=a}2=0*E-F?*{vKC0FKg2C7b3;M+U-u*H5pvq7N*);qm;kSAU-;aNmA@ zFT}pWn$4gix1@VH4#`ax#T!OG;3xi9M!LkZ4SLTr18(I&7&C&)y?IbpRI$E4W^Gzu zu>X^rGrfN>2?YiOqzwrK^g}iVvNW|eac7YKe-zyQOHRy3#YP!d70nkzh@Eyyno6Ux z+=ALBKjg-+3S2WKjaX_RHC4(AHtPt5-P+Z`Eok1)(9b`wW?Dha^r1^&@|G)$jcPA_ z+Gn=sIQQA<>g)0O+7Ae8hz3->VJ#A_cj2}sz?2r7mp6X9F%}(^8$o;NDm;=t)NSz4{oU;BTl^s=RBIhf!7-uvi3YWnm)h);tCjkNdL$0--OUbtG2w2Csu%VP+clw81$EVvwA)q^asbgE#gg>_HtJbVQO#5BMx7SznxmBOwMm{M zX9f@OsXtBLTC+?n$hMmS5@~H%j*BfikiC?|vGb^=tQ*?i^ zk}gwANg;AZ{b^ zJ(YS2hJr!Z;{3#+vfhzeACn3`g1X6TWo!TV$U+Ue${tsV4(SeNeLPJA&JTt?4 z@VYa!?Q?_9{?O1$1GXFk*%NOlP;y(SEi^0)EaY+MXqaf|XjmEj-(&LRPh_8<6OI^d zoc(2)Q>pBYx)W)qada&~nnYY8c(27RT~*qx#xH%`-m&QFHfPb^GcVthWkPkMi}Oi* z3=$D5oG;Wx){07Ov7z|WY`J=kjYEx0b+JE}`Q{rMONP9Pc;H+UCB~67-dF0c$+Fs` z6j*yny`##gwL|d}`@O1>gbTP#J=lQ#^w?omOu#~V?1(dODJt^vX;6@4_l$C^3W*K2 zC+wx{(Hn~)v*FXhJ!P{5kQ*a*M#i9X^%mhaP{i*1gVh6{<;hOLk3*=EVVhm_57k#+|H5V8aFy+ zZDZ$sqhnE>?<&vb8yUJs86}_3LkCCv&^>2q@CqxCwIHYtP^O;z-%Z#LiHy91Rlo9# z;BnpGdc#rQ7yT5qR_nYWn6p<)te>3xI#&%}Z8BQ+%p4+JES|NkZR$-6lJC#i2l z<3CiF(7)`MCwN1Nh){t8ka8*6peN>mAn@lwU?LNL0}Gm0@sl%5?9txN;DWZcsx54c z(6?IBtoot{&-=od#$Ez)yR#u;M-Q}=R-=W}=jV-7aM`nU=e2i59>Zh(d5YF};VeLA5|?rCYS>NHy~u&utl0 zDoR*?-r$k?Y%EE}Ee7WGB#`#(m(y$9hzrzMXxWlkm?`FpF!tyTCZKRvrAoS79+h#h z&K=AMQOXS%q*D~=MAHoau+&(S3~Y;Yxh*& zAaG_0>CRTs69cKTtp>|==!~cPdoqB7zYH@L<|P{3d-9sC9f~&U?vT&eT%a%=Za;d! z3zWIsPVPJta<9Sfni@q{rI>ZyWORz zOxgib!JFvm^Oog`sl(I8zN@Z~ezumDdQsR_xzx8nK+Bo90)iw!h?7@A$ z3(+7Ol9<%GdIDf{*N`-bGXl!se48f}2Zn1Ne&G>y-zv{U8;g$=T|R1$tfEp>#Z-T^ zw8X0$MR!=vH)NI_c0ey%8=|s)Sad|Zw&t43OF)5WaCAX8xv~Qs{iR=YT&{m-o z{o_Su3(~)DpR&H?Ql+^+3>o#p<2WF^J>mr}h@5xQwRmq{8CC zaVNKzV)m~lTj!t6e0Qw4Buq%O)`fQ+7Ta4~TOuMgn!zanjjF~OU#j*W=L{P-EQSch zR>gY7oKc(vSm(2U$WQ2l9?aZPDCZn8V-XmUCQylV6nu=av{3{e*^*3&;x&JA$NdUD$n ze-h;?ICm&s89nDp3oUK4*WChzCNV8dqC$WsnWI#g0BMp|KusgmnIqXLGnsgB7?C4z z(qua@(%ZmOY#vUJ&j1a1c^j3*Ej7vvE~~aM9^=0gYK)JEHk#c7^0@Zf151M;!otE6 zja;T;GA6BA!41>he8xN`44H8MWLB!?Gh3E+0(GYIE;2z^Oj;>C=BeUmGf!V;K-Iny ziF@|byF8AwMi%p5m?u6GdFcK$L(=(R-b=wv^7gV8rER_8^LU6w>*s0v<}SHTJT1UP zxYcXjT-kc03hnlf#;0XH!s#i6m@u@v!wAPN^6S z8?@}+-?Ygo^aYnwJH=X{WNrst(1Pba%&7NzqZ zb+&!xhCsb@DJZ4YZ%?cXJ$Y{_09?V&kRVmtgKcVbv%_dN+sFLz?k*@KsSfR~h}-6) zhsrH+#U4+-u)OrC3OQRqhWbnFS;dfR;~H?5GgsWv5^Pio|M{vQ%f$p#k)YOtBsHKw zS6BL5i$JGYj1yhl5z$?td|`(vdcopsV!)AbgA`@eUk;_S!er%l`QMvga{G$A8F8;z znI~qTl(JcoY80IpN<5zvCNp%1z*Y^m$avxmH zPxf)c(XlgaAQYBFtndJDSa~-SI7Wd($EZ=5!=6MU4dWr-e>@N_g#&tY0=A*GC9O*u z^mv$_E|6sq26kjGrXoHop&Pu|o>T)cQ^P!ne677N3m|KuAN!Yq7eT&)+3DMNbsH4H zai4=L7|AYv@uKg@qT9kM5|NWRxo1WXt<5QPdC6oZw{)_y>#jy)vH@dk1g{bL0n`AfU|!w`;~x`(enLa`qxS`QfoL^w%w zAk?jr_Y%!FtDaA^oV_cK?N%!ub~CX=^L}8$V{66 z{$X>AsUzM=2fxF}4XV>@2?*GK;|6K$%G>Vm63`DnfH}|g!aI3Obyer}o4Otub}E*q zBzqLDK*_-^SaV-%?onAjvGTpaf!>Zi?8paZMQDO`H0AgvZ&{G1xoJhL*xfa&(TwXz z*Mb&oloH#>8|KPqVk1vV<~IGK&{Z+D*oaCRt2cs)*wj(sG z$jm^FounsyXy)=lwzJA)32gOY+{hHG-$Qcg3xD;ZI~=$d$5e)UA-UcWAPNykdZRu4 zCLPf5+Q(2Gnd`IMDzUVWi?sC15qz&J5~v%?YEehrqjRr%+5)~5E)hQ% zqUQ6&6<)0)B2qFkeS&mOvS#-c{2QSpf z=1y(f&*Pnd;1OJPE|8ge65pSIWSyb#Rgvt6Bd1sa^Qsf@LGLr1`|%wQHSz66>^}Qa zha#90gMEfqyrijJys~fE0=!yDpk20d=-HAGQJ)cE&yQ*Vi@Fa&KKS&lNW2xE^#S+* z_889k(ZA7K1Kg4-;j@-S$j=lEM=2+q)n;0-$zG3X@8U1vJ%%FKFMS8Pi?@YhS7tA^ON`{kJ<%2)P~+h`BFu7QZipO zQLKu4riPOVE_fq`y?fHdQv83RIy+INy(+ti0mMyq;`quZOSyc=o=?wsxhoF#7e&>! z{VIPf8?2BVvEgZYB zCkKYepO3wFEVE7XDUp_RdA?GK2J29%kW>n#+4RXQgOm)&laY**QU%p8McGuzO@owG zA&unGj;#u_&_&hglN|=h_rZCDOQAv^;&{{?EyabSR4c85{@*92N)&^Z%}F6by{4L~Sgb zolPA7a{>!d)p9};Mf)OOzmQ{3il;?F!LZjr9)y6x6eQhB`whY*DBK@>Zp^YS!<+%1 zwT=~}jfRZGpqi>m?M@X;UCD|lC1@yE@wci(^=&WeP23x~?e~C5 zr_9Um>v;zeXl3t{@!$k*Umr{Kgm%Oc4`pbIx-+<}3oXonG`fhBymU-88_H>2VWEha zYFd{meWX7KlIWpAA_Q5m&t4P6{I^EXVB<)xp9)-sy-KkvToq>pG0BP;SbG(*R-|Hg zp`px3l|l4ja^&jpvon;L5NFk|JuKnUK#6mICQH_}&?L(fdzREBOBJLm-g+;is?*{v zUvR0Yz<3+3fA*fi(!!$}NkcK@6n`U{Sq^Ywz2@ti0=cNs(aM@?12@F&-Aw7aR;Q8p z(=X<@gLnyvHNx2Ba0I7L+3<5=ZCmlCwk!2*w~MAz2}!R-I@2IcTM`wuT+7F%@fba= zGbFh!)*xe|$^PZC>^*70v39xS&#{l;JmF3ZloCz3ki{()=kJocq${_1lar}%zgrf~PCb3NS!=0oX*$R=?<&QT|^)oi` zMF&sEDlBywt3Yx0*z$m(Yv7++lUrQ1ikPN=cT}THvsr@${NodIgFnBi4)v`5^?h}9 zh%>wYh_o|rPhb~nFF2&tUTy%{N~2MH4##WRUOIc%sit(@gg3M@Au8alvRW^DK@Dg- zIXnb(C?<))*GQPJQMeD^@oHLc%3wdm%24wR6LZ9n%^0jou~cOm_a!hT$_S=mpZ{B{ zpRlNt_~!x7kS{wVRgEIt6$(*ZXx|{lw4_X%nCog2cZAgqq~tQV#zSkfA z8O*YzV`+0Fh2GK%UGr$_tld<~d|-a&-x_N|2MZBO<(6z4h0f3{7f95r#>lH-IaGLQ zu_`GwT_5}%4`J1->Ps`suI7~yBmf~CX7Ujp{JbSwKs@{O6~w%GT@;UF0T5y68PIV{ zMS1&9d6p@3s{?lM=%#pA!@D@nB;;P-2O69ia+yAa+mMlawq;;Fp!Qqyky+#S7C6H& zL8!uu&PjoIU=q~Gb^a0il4P7_)+HQAqCEutF9=|aO4j}SvRP-miO+e$|) z?pTG0BHB?V2wpi53K&Y8d#X#JB=J)iRa60t^P*J+oEVjDkyjs)PU5CA#^bRQNUa0d zQjOADo^p(pZd5l5do|R2)g+2WD5BUPQo|-0i|HXrHNK%*9D}^}#Nb@mqcj^n*Qwl$ zF@V=RZHvWiOXrov^6WQH&F*Bf*qLDVw+d>LD?Dmxxr_!l*iBosk!Ph<{*DG0n}>YqQ_o8~xuV z4OXL!JZj1&{)iDSyNmA^^(j&jaA!qezPwq8WT%htzaLoWFTor))Tw(o*Oz6aPuS3Y zaxs1Sak^tf-VIW@x|+8UNjTSokjQd3Qo?QrI0$+3Unp+$e9Tbc|p0f%)#bQ*Wr!H;!Q z43X50ph~?aSiNeh>Sb_e%>10SO8qPySFhbRT03Tn7Og8RHYV2ec!H1uL0zZ>I)xTj zJptw$h}a7z?7|_#^V`4tPRaZp#dyon`4ShLPA6mu{cPL>bzks#bC?H<*u4wuEYTWgXV!?NY4G8xcv1rRjH2MDZX25auDje?T!Ms2BobidRW=0y2^?bbN@ACx)sg^jb)d&yG%u~y%&o$T14zLlZ6?Kw!Sx!AL&W+A?DK0BS&tKW!HBODJH?0X zL@Guk3FPnoLP5Giqe&i9_x+JZnZMU`^r$k3RnWeokC0u&>Fs{%ClvyM8#_H7ihbz= zaECZ>IcG}!CWz`lV3c&xL@o06MdYa@K`C>&T$5H@dW5mrA+o2(){jkAC1b8LZ*5l6 z;=VQ}I}#O6I7T2liX&N3Su_X_Q*N#VaV~T5HCZWB0)IOR^I#1zFX`Og$+_W05$y$3 zXODM)GS6sOC|nYcMQMV}FnKiSLV9=V+bhp3qIUy99&f75DY-BXM|)EkC^IJr`T%&7 zPJ?+OMNR!Pp}eROok1*8#cZF=qUg5!PRxT zCl^NjELqPh3W?ea0@+64{#5(k005^quuh7hx6}ZUAazajkB`m}{{^N-X3V84V2NUA zagf9Qy%nbLGPOqnE=LS?m4$m(Q2 z5vplr2h3>}!HCiT$CdkBPJAhoUNv7FOIWg8B&|l2qfC-(1^m4erlZmr3(EC4kG78@ zPJym$8Zi*8JtXDN)P0C>+QYzr2YpEz{s1-kIXOQ^V2F@`&LDfoaA!)7j{ObdO{gi6 zP>Vpoq39EycW!@K|AZ&LHk6|(345cu&D`j=IcRli^W;a6SH0x=M|tBPK1j1`T5VYt z`!G|5;W;>7b>^q2YGs?r2CbY1tr*uWtMwA+lsgrSChIo^5dAxnai$HVUE3RfH!)Hvz`|O zKl{{0>DVK$wj5W1w;SNCO2ZKpouxc^ui1(FP?V3idWh3Mt{}{X5a9sK5vm`*dJ5t z=|Md+kF-l1jE-LRDCj<&oANJbJh_;D*D7=Apl7-M1YAOZEeTT?BvN zXeNa{uvKfnei)1}TM2fa2veQ_wCdTSJzC3JvnvJ!F~}m$NGxZ(G0su@$OW#kJOj+N zu3%_y%%t||1xyDVhFi=P7v2E91Gt@jG~YR}Z%p10zdc&pyBH6`V-aZja7W&mc0Dv2 zd&%nIwh>ESnvEO$C`6m5n$p+))R{2YmyCm;SU(zm?LjtvOB>@rJ#ycY$ZKQ==|8gu z9t^5lY_NVBzHKXfQ7HwT*jo)YBWz2q?U^67*h~18_g%W!TW=pVZP;1pf8g2k(;rRF zuHQe1-aw3QLCK3ON)rj0KR?2qe6zV6=#rMi)5Ws06+{2-`$ZP5OG0Gb!zX@Q za*6O={F9{l+f~-?9eJn{nLfLJw~j}zXWUWQ{-K52bd&Xw+VoJxoIA2;w3KD3m7EjQ z)@Im4Z2R**Y1MQm2D1c!W(#)kCcS8cFdoApUJr~*2&Kpvl*v{nW^k7V<|e-N;&b{8 zAv|N?Jac$I+042F)NgUSBX;-cED!NNfUo!CR7UcGLH#iJKT`gj+Nlifj%>SYJ?!Z) zh5JQN+D1x#i1Wri4|{y99&82O*vk>Ju&PWSTIZSXp*zPtvVJ;FvLxtpl{VVx0R%=7WY+o40XH#5?4&ypO|t9h74F z?oWHbsaG|j6~(T9|8hH3yw2cr9A6yRk49hzfL44};NhP{o%~jJ*Mz*Jb)ns-HH~SZ z!I!A^DL}wMU%sFuke*^UWLI>hE>)7GsO@D!?U^*d)I~ycQ?2aLHDFwayO3H#T}P4c zBb|rHH$(NAqXRFHuY`MvP<&ruY7Of;Myd|N&wP@qyX)! z+_wq;8^d#`E&nG50tBS>Ljd@1@c%!%1E&9K50tI!7WL75cQ7c^Y?ZU~ZK<7f+YxS= z@uOwUOofEl(VK>SXcQX2v<4$H1V%n#*fz*Au|CfbZ;r9%ENB{KW7tn8I(Uyg=A7Q1 z&YuzUfRgJmLZY3)9E{P7(T@tDe$AC4je;CU;c3SpJ!xXC4z&;5%GzofU#nrY6@h7~ z)RX2n(*jmxwSMVdTQW2o%Cqo{%$Ta%t)o-p@*vU%O&MzaYPL=f?IDhrSdA@Y(E1VWZrdIIv2B;r#fl~BsYb4yQ%h_EoHW-o+|@2`n^95!d;bDX8Q zz!JpKz^4_G@AlG1{-m*vN|P}^z5I&s*36Utj-ls^t55TRJcT_{H}@9Vo8S-Rf-Gnk z3Z*uHOlS*N+A}pW?vC%`7bdV%oZw8iXFTPq`wp`k?jJ@dZU2tnAXCyDWv{H=_#vW7 zToTah=Qcz4QuK}{R$(hN-WnmqeiOrWoVuh*JpSTG{#2qroBUsTFtCz6N{l~YNBsX2 zcFg}7b}`CU@__#cyQ{@o40cFs%5YJIuEF%I$g}`Tu_Q8BazlxaH5-@YX`70i0r?Ly zyJ!(qKYxKq_t{NT?C?=G9-p~;-s6p@<2pM5pyY-cBN#Q9KWJ-f)N0Pd4U?ti1~CID zJZ(zFwdUXR|cmgo4&4Vb2*^)!&<)ZCx{VvTHRFrUVxuEkLVGBV9URW8eV~F#v zo`7BFJg==>WVYr}Ay5w$c$uGD3j`LB*QWhV&^myl4~8w)8kmjDU#@9cKtD(=b8E># zLjZ*aiUixUq+P1)POoI5i8hD6p@WEOdSL%>#iN4WAwS(z-v z5BRsM6cW{N3DcFv7j^TY5F-fvW#L0bpWmez+ntDu6;~7+b zXmXw6ppNFVb^yT>l3G}@z#QC=IALmR=UzkEa z9f$Eb?YPZ)?HuzSGrzZeYkvaun{I^{;E%cR;s^tc6`2n~Bky9|;v>gJywrwYN4$KY zEFIip;n*wv7>9iP9!t9OmKp;vE$w6D&z-##VDVv&#N8ZX`34@lbR!MHbexMaeVw9o z2d9aC(1v<;qZHjM6Z_I1s3Mmcxx?3u)uZ$wU8XsH*BxEpa{JaCa^MWE%gj<+YOvdn z^IE#jBr~tq2FNrl)ev!KOCC=z$_y;lw;nvodF8M_a*a~8lQJJg$*>)$GP-n~|vY^)Sm z^ZRKC%Mcu@)v9oo66Ll!9$J#5yrW{_vBY3*bY&MVsgO~u{wzQbnUJY9M|U6jw3(RPO1@VhFi$a`oY_o5 z!5v^4qSiV{d|q#68Fh5(ZQy#^;pAv=XBHK;@JW$A)d`o9`SY(hwDfK*4nHIAdoS>$ zQhoFr|1PsNtNw%ℑ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 z z!Sah>Js9*0wXSS<)WUrc&jaH%7jfWaJMaX@U;VBM+2lT|jLrJ^Xs-z-UOjA8ZChlK zx<}iFRk8`f!R3$MX=cIy2oIF>s<>yZm@Z=)_5DBj zIb6imz_@ZM7-zqT(_h2~KZ27IfJs~@`>+**8*L50LT|Lql45t^w}BU=HhLQJhrcAt+hjir%>0X&t#az~Hfjj7bcU5%vDpOayc<>Ggo_M3$G9Gr zSq%`jP_k7Dg(|7f=%3?E-$hsePw-p*lU0Td?+*WZz8iIO_89)M5<+l$H`@Pe?4#Ad zs;Aw%QPE#x6;=Z?o=)#Zld4yuSlTv1-J7~CEk8R%<-g+JM&##RGZA6j)uuJ$)(GG?HB(nh{66iJYy^~8Ka8jcX47x$O+n)uO!>QzOW0=C20caBp@?q^skf@hQpPm$K2+yYFYtmQs93oI*&2gK z5H>FLvNn$2H5FG-F#UcmOLb$9N*GX@|LG;rCtj$*h4x*j$c0v2sKB$omhCXewwI3vXS3lX?kOKp(+;|aiQcFs(GQE7dox3RY1U#-#D1` zxczC!&2u@5hq*ZTk~v@Y;9iPh;`*Tq#GR{Iyn_u?}#D< z6?i@_M$QPZ>NmnxojWzKSe3tZx=^CAFhtF&?Ys<6$T+xkF^Jl^7$g|WH4jD*{^w2P zzKme}1z0WIYw^yV&#{kyZl%aAbbQlfmFi#9&&YQfS2i1imz+C+SEfMYd(duUInNP$ zEIQt3vajG_7U%gg>G#5tqUG9Y%bityc-!1y20{IMkp%Ypi#GL1P0F_Wldd$VlWsE+ zdZrVtVO7f=CIcI*og7`8M>{$C`C>=i`#|K1dTaxV5ej`F;kx$`vf1I!mHrRJyAwRr9-{aq==1tA=Yo?2eqDdw>2 zz%u`PvBvhh+|wixqj1z+dY=FFMEBV~y-w)z6=r`J2eB0Q?JHYEFvF!%9NnVN{*2k} zwqLUOe*j7K&7X)g}(k6Sj`7Orum)bEf@{KH~P4NSf`!+AJovAO$0pV30(KdBVaG+cZiAl{saw z5bQ@xK9cs9csu(OtF+kHf)tIEhvDAT&JplOD$^(>RQi<2!l56r@JQIZHfgpS3tg;g zK?+Bz!ElLc?by-XODz#m;a6ZBuhf2EFD-hsAo(Ai4cF}G#x36dOgLunBq_Tdi2a2@<#1DwtLa08L4o_3oCjBStev3 zJ(!M^M!lV~Sv2t{Rvra;LlV_Gu@#F-%}A9qQCQJy9e=3KiGsHp>ns|(cC%lTDK%0?DXV+j3Nw{S~;Zfgoq!21)3c6V9LtGA_g&qDp^e1M8 zh{Bu}E;S?7*t@Y4NB6urUUmB`iATPgy0rM;baD#E3ZW!~8+Ls`Z(8-X$x6^u<+v%m z-G|-+-6=jwe36+`mAkUu9Iq?2>7kNwLCiTQgwr!({C4N04YYRTnY8Oa;F za=F#JLAkCAY?4z81(H*Xc9Kd9Gm=V+Dw6O8q$GSXLK3=gDhXXAmn1I4N)i_}B`+O9$>PcZ@gJhQP9m7YqM+8=i7I6hx+lGItS&Mox?PJUo} z=>hAiqo1#eq1`k|MhdIr#^R#nmEAqbx4Sfw-HWxI${a<}pD#D{kgqk+~3$Z zzFU;b&2DDQahArke{#$^2-|wD{4^=p$>xV7iI>MFC*!zPQaGl}uXQcgy3mhHcYG+sb=@&RU zPb7_>L^4)LswGE}W&BW!(_1Y1e!_dE&~LKn(0(F%#@9c%=UD*dK!o977aN?9F z{L#?sTdZg$4uUcsLrdhxi$|*zAzwT%JDKnEp)s+G8#euJu(&H;aJOs>#XD8 z#wkvCpowY|^cle_TY*av6om60I4L0vuS!k4iuZnrj6tM)kIY2mKY{S#7V9{8aL*?4 zdx#WU-Do%^;Tc}_KjMFQ?>J-}!sL5oI%4Vxgb(+pu812KG%?jfq}{4O!^sIjcvTuA zGhVwBa}TrnM9lzGP*;j3DsQd!z-b7^coYdS6u%vhOhia@M8+VXPjLJ=gE|LZoc#o} zhbX<3(*vg`*yB-TL>GKlJ4Od{TIaw85#73lXOBh}A$;qc&`<^fDZZ;SnFq%;aS5GI zqEv`TaOB{IaBorI`M;|gVw@*lFB!!Y+{ZkeKrg9~Da9dl94pf0uMn={KX$6>V`wMb zmj+%I7-O93WP0)`l`;_BjvPD?xh+wAVRXcMgn*-K#^Iw0fgUI|K@X3jB0j? zTq)%}^RBgi8s=CT38$n1#49Y-I6s8GM=lil{Tq7fQmYXra>ol#7wwY~%#f6i&@7%_ zQla@}gmFyu#ut)r^4DH#%tr|Cc;o9iF-wnPLo+PNH;gb>eIWSc7vUMfv|ITI>mdl< zZ*F#JG$uMD=MuRie7xqIF#`T#7ENA8)GEe$IwK+ zHO0_2G6w+&$;$$SL+sa#Lsruud?d{;V+>Ax60P*#7+~&Ap^4-nN}*8{z5+OtC)-P> z%p(PewrF_9p=D|?{)~!XjG4VRizZ$=QVKn%h!Ma!JlR<~Wo0ZxoJV(N96F?i;O$8h z1u{tA3M|HSXGn44ox>$VrEfkgG$au>;it$GxE?c*5u^TIor-$bQ9AY2b+kH^3_-bI`k>PW#Tb-(py+|31&R?UnxGf}BE(0&Ht>Z96ahdyIYHqCg&P!pKr+)v z_n&=B1*8{E5+-xQnFN_v4T@_IFr2y&u%HAwCD6e^2L~M#bWqR{K}Q7LCD2_0T>|I^ z(}B)(8Gsam+js~LKZ6A;>1d4M9cFdN$9Ul8`o9Dv6O<(I)`OczgFD**v!P&C1#bNOLEj8)}d2I`q6!J`-X7-5tflLw1aFzRz_Yo20uGm45Z@iG(zF z`ni$zLwuC;y%#?uxpN%2cv9a3A6scLPoKSZH<_yK&1x)g#YCOVG>sWwF5}k2S6<`J*Wl<^G00jU!f+!C_%@RP|%^!#_fE^Tp4xEDkS_2VT0f00> z^czeC0Einz`XKsa^|Yt8A81nxv|-o+Ix{K(ozYQvt&d7!DqXvU5?q);~34lC)9z2CohnY zO9K-5U_u&9&>TZJ?63~f!q3fK&$p2)9ZNCBM+tqy>u5YV!u_y6v-%(r?isC9uNB2| zJaLJGAHG+S0i5V;zFsei>UiP?2N(3fH9ciuH?7_(>gMqT4+kHVAay(;EbzBAitTtp zO3fx{$H7EZ?$==2+Y|ZJl+!(b7q#=ZOHQmaUYi*yGy8ik!RG@@P7hAW{w_t)98cJ^ znG*iZ>Z^X6kVqFhhoz+y5E5Mm&#_BRou}7?$PuyOTW|;AK}1HlXPX1RR!neOiXHHq z2RY!0{ws4-T;^qrrYd2nHdFsQ6x}^`^2l5=gyVRkq|JJR3Mat9dH`Ix{`)0#cjW0E zbFCwWbK-sFqltqyBjIaB{2ck`FayU0nWa)HpM((s zRRdLh($aFnT?M?^)#eAEZxjh|#KpkN+;%DPW*p5n&zT%}Ib2>q%U=5%_0fcd};%??cvye3Pw1xG@pF||CYG7BoI-Z2aF~rNO-Q@10 zdC7oGe|#ibOW$#L^QVSKXeh%ZjQ3^`JTu%es_!XROCOr)S~K^}8hCp6{EMomB?yG< zWj@>MG<(Zg_ij15i&Eq=QE|m@I?aDah+kHlzD2{f;&RVzVde2-saooeo3Kwd#;DY; zH;hh~Vn=)%Q(u2X zQ8?F6wO1}Hk-8|KMUJ1+{%ZUVf_~Tf`pcJS9-Qfk${aqx$4Q=xX6F$VjyrOquJ-kx zriTm3oC;^>v2r@}8npq-MQWll3nGE_PLsoh)CxvkOybZv(jy#=bp#!J`RxM%vAWZ| za3Ot28wZ0gKVc4T|60tC zoGfrOL`4(oXv2*NF6^oSSE>S1V)~R!=(2SAVO)p9CvnX($>YQ_vr z&Od`P@16h*Q&?2x2z}lFu>&uWp~#&P>dMmWPn& zKNqf)kxo0*BC!=a&|cX^twq!8&ZM~`B>d)BD%GSD54CRCiUjKN@1kDCZkDm5Z)2F= z`XER6@;ZpzH@s8-@ydiaFm}E*uW%;ACHge$ZDjS&M*OCiH<(FZhf7E=+^lqvh8}7e zO$!Ga^5ami-b|GhqNit=ynNv!ck)_^+)~@A|M-DRBWHHGRr*W&9%}ha3mq7*U{Pzy z@Um@m;|$YZU)YFRUK8UNrw@(M=x2f(h zZM2zv?tHS+aUu_2pmVAdtQ0f9L%0>IrTeJa`g&~L<k)l>+&Z9M#Ei^4M|6Ua;gzBK*s4Hn(P*{suU3F7n+EuLQ9>KFTgw=l- zXW6f1MZfV>+UB1Nt>>P#Pvu4&2G)OAFka)3PrD&CF4`1Y8~4Sn)k0py%UNrxX|u|K zSL7Ow)td|jtcEcVUtn|A!Uwhr2BzIuAIF}s*K?CX?Q;M1ykXo5jtR;8qT2ykH$@p) zWX=cMn(e@ywYVZvz6k!nW!#`VB4^6wNC%EQhbJlMH`fepeP#JX-s}j}gzP`4|3DkH z@}^ZyK!kdisiv7|Q2&83YWWR<+*wQNY!Z1U@2sV8Hg*FVrDMUkq-VK*s$yl99>pmF zBXXeMq@QH$of}%b`4#1>^}Q`UYhiEJR_X}nTz>hKo~b4(J?rUyo2~EBtaG{GDMv8! zoKIx@;LS}|qj*tvd3Gz?HYw+?54^(*=$z0`yQe8wIIgGvylYsde^EL)YTR&kY&(nC<;}>sYL7Cxw$Cq>hX0P zQTQeNmxA@}I}px9wh(`DtF88Y`Sh$!Rg=WX6(i@brtkLd*bL;OpXy+2i`U&S8WvrF zB^c_JYUgEtiQxbl2v1@`nE%(6oKPjJt%-bt=>tTpXwddRxu1V-aQaUwR7?MrLp$fM zX%O+?oI~&Wi6ME*yXPv-U%x_XcoW}7?Ag~(OvqcV&p2UpZqmS8-igW`4G_^!V`szL zjb<;QHN^5fWL5eTdNjoIJnTYL4R3~_fh*4mOr7)4e0Q!H-m9p+?jHSI@ARzi;qSlPUw<}WzxQALwQ`&3<%o3AhZ!x8aO`_R^{GZHa`LQ2{32$E z8M|MuJ^GBe)a&vq4bCw(&l+2cctq|Y9?&i14raueO9!K4Ztqdno9eH42e#?n)JISA ztOoSw^k@j>L6;H9$I@1UeEvo6r=%RXMCRFeR)hObol7$NA1ib_v2)UtJ9nW&+4nes zkc|Bda65$Z{`2eaRyG7089ofY268Lo^IRct&O-%CXLc@N4*MwmJ8du#EZ<36pQ``t zqqxP2RQ-_tvux4o6<^SN6OCB;4=^iwIjs(SG+&(yhg<%!SiR!gYdqV%UC&AStcHI> zx!zRg8450OGd1g_@NY{AUXkO*p5^(c_30)C(_Rgkq7>;?E7`A?ol8>tsaI=xX9 ztk*kRWW;GpdrW&ZWsBZV7aA@3!b6khJO+n*l3RV^Z7{QRZ+I>0oc?!mxfr;#`M3HRUiIp-F%AP3aT1nuQxS#Rtr5< ztxq+0)&>`&OO3OazBCiz^GcK=Bhs1+yimlx9E?ZCui!rIO$KFQS;Yw?y-~gB9<1qIq4}~ z6laJsJ(?PM-mvG=J(`+%_Ao=Kp4jwvkuXtUESCpq35+$fU)fa>w_#ph-o>>9IA`V@ zEM3~Rc#@eAAg$)N-X%znb-tG4kc4M2SrOO{yR}?W*gv?x@+37OOuEgd(w8aYnu>Rp=|hMRkm1kET{$ zTgwh`)Xs})cFDNMuGo9hS56n`(}#{ktjC zrD<>+V_!IUi(YD3C+rX?m_9g@EVxo6#qQV3QIoR>ButKZmfXq*8R%7(Q!;t7Re6;6 zGu8Byt^d*PFi5MSS#UBaAmiF6ye)$O%xaJIrc5hndKWfinn8ocugiP`P2X3eq7t^S z-ZphQ%YR8*Ll4g4{P4rBPZIifCDO0wsxB%zCr5p~{e7Q#jLZMTU`g=f;3vAgMF(M5 zsR-@Bp4;cr3MK0@pEOsFa{8_s6-lvqe2j{_J-W|4{Pp9pWpA2M(N(sNi8lRY?|-yw zL+WRvenEd+m2-rSquW`~zf+V3ftF%BhR)IGqs^C3#pSh1K>2&i> zWki>sF6TLwO53VTw&vcEeDAzTQOWJ$i8j5Ih<{1Trc!4Eek>!df(c8zkl%lbRW%iy z6QimMsSlWYOJYu@mS`&nb?JUD&ekMoMQHo=+&ZUIk=>BV)a*VgJ@EN7_*fk6Tfxq9 zz}(NLwC$%_+EUg%vwc9jI@EKf6835Y*s31Nl0FaEe7f4F z^mY3nX?>3J?CxP0RUiX-6apHh9Vkg2^@82vfO+iRm6O+DZlkWYIq&noBs`3u3PKN6 zhUJdBI_EG(j2zQqIZ4g}RF*bm8e>V1WC{j{#N8DP=-d7!VbgOOfX8;T!A-Sw)uQiq z*A9eKZUdh}gO94%@c3Z#Kueh0m}_{>NC7UqD_C#rnu_73OuNB1@nOv-RdPhx<~0>t z5TL~URmqhD8rwAJXMo2>dVAITK@tgOgf{&=IBX~nyF2dsGAGj>R|p(B$#m!W%9 z15||v;f%eh(!VLwVSstGR$^at)qa@3tTMd`DOIlzgR|ogf=xNy5r2;1f~m3?EZ&Kp zG93mzV5nIH-6oNy#vA<{#!ZQCp^tZ|*&|qUKGh zI*|P8pc%6?e|43kTphoY%Pvju5K2|fzR>i{g|ak4ea&=8^KhBdtf9hWx4=X{M-RpVu>}Z=kGZ`03_BOUE5;G z(22&Y!DgJHLstqF`$1cJNsrV-F(IfIf#f`%!)6K&f}_1ZU2<_fN$| z^z2Y5HS{EgUE?rHH>Q6vWnZ%O+=<#5a}5?*#@M5L`lDJxtz3O&*>yYe9Jm@ZeVfl_ zr-V>y^LcMIJvpQ9`zS1aS)NhXHfnQwaMp~|S809waP|S`;#n-b?OZqJ$Fj-x*{KYr z^mbb_@t~G5+Uj4F|KaMa5J|({`TRC4%AACM`Mht&;rt^>>-2dF+~LfCG@#}D%|AI! z(qc?l*!g2k(z=;{@6N}}N$kAI2OzBAk!Qda%0fA`9F)6Kt5QI==BH%4H(Gd)^iw=r z$+7!j8HwR&@<@22s~O3Pn~wY0-&`PK@GgoF$QUjBx8ct0)}|1NOw+0x>aV;hNrCs^ zXm~xOj6`v!u;SQx_C6`Ty|DJ!Y1WW5w;ZXi@Fs$Wa%i2Pq2dgg)h7*TMe5Q|O~K57 zc@h@dkXd6=^f$De9Dgk^xV!RzX12 z3`t)ifGdZ#o~luEE@2OPhp;+=(Wx-`wfS(O8FhOm_HCH%Y-AFdqzg2IodDygATj)l z`I2ym6%ZtO@C~-c6-m^iE?&Y`hvm*jz9AC~h2}@naqT2`kOgm>M+WBp9Dc$DArtGVBq=Pt9Xa$tX?t2;Pqv35ksAzowuM%_bzwNK_!W zM_P_;hNKioqzNX5WsxIk$BwMY6b{)ML z$s>rsTF$ktPDb^ysn`FO$(3G{t%WIBwY_{&VM^i%sd)3WE(J6kkF=gtn31?ZDwLwA zC`}1LA3d$7x&@=_U=2%~3Itzj&MmCx>B@_U7i5A^Vp*jB_sA^JWk$w+k9v4#$Jdda-^I(+(?insm>zK6v-vO^US}W_-3pwa zkd+}wfztFaC~nWvoFoupxh~JM^_;pGxJdJAZ8^yXCVK+_iqxDqY}hGP+>AQu5_0C# zY*}5tU^D`jU*Mn(f)BHGb<2$Em?`R2NI3}}qq>MG`p$vJc#lJ#Jf@23fx;iOy>?_i z;lg3PS7nYgF;mEYSFZHU(T73~l`fL(BM|S4B=JjRY^O9BS$#hU2CDY+*|NcA7XP30 z9q$Ht$~^6mVBZ9NAjE$|dS7#TDqK`VfJdzn>1CP|1H7e{y<4cnEZdi(7lSGm?^Jz> zREcrYEEO$P4M2KX-$c*ROz{;1AI5Y2-tOIX#mY&lbo-(ey zWYq-~44bMJ?^K~cVzcn6E{zF=u+t6c3C&+q5WS`z>9M|dr)+`D8_U@zg^VepJSq>% zPh(nX_fzq}Zzuxq_1&fCgIpKlvx*PB97?<%$h=&#h#g!a#%2SrB`{|iIK{4zo)Dr) zAoD`W0=Bl?&zX6iYXJ*co{G;VWoN+@j<_<3hd284av&`N^8@Ry)^JtjHtwOSE&k&2z$O-K2~1(xT1QOOW=RD>Llj>P0U5 zRJ0W1&1%o~waKW)Kj+fjLZL^nyr`QD<|k~ zA-HB@^9u&&u3*`xKP)Ic+0lMZ2~#Zk&YH(G{m~g1$A{2+2dl=yc&FI(Ysje}uMVFy z?lB|yX0{*Jvq^>+yqH-Ir-JBJ!m|u1X)z4A?<&7s!AaYX{BB5wXd*5hDgfOURBn|z z3tx2W0=om_iY1}{je&bYNLU(o{F!^BqV*N|xg>&}_2%7g(8|73|$ zCV?v%uF8Z16U? z`4tfb>RWAmrv~o_kHr3K(?#pGA6?mH7xh(Lgq590^N9fW?hj~P$MHo^VXMpJ@esGe zCvP##Nto2_dzJMm(Z5-TRUYHQwIRBPPfF|4qJP_*c{l7aBZ2!;tk)RWEP8<&*lVBB zUQ*<_)P#1)wCq$tTdYQlUeLxNcdQ*_uhG}3W2j)}m)WY>SXzRapcQKN_!2Ny{WP0G zO9zZkzU}*t*SxdBpVc>sz;f;~r7z2)(>do2<|V zlzKTUW?{4&f-lSd!~d$SV7Mmf=JR)47x<5MAKSJZW@QsDAGMJ0#|{+?x*YF^a2`}f zj2eDa1HT|84A-RHMse;`UW{bK*q~sfg!$!0dQ{0QjuxfIRR-Nj-%}EN`GZ#R09tg9 zDK0hl9xU=)W(}OS78uC^f;J)|N9bh$J*s?`{tC(noW!;om7}41I0yX~@q3QQsPTeI zZ3vf0rB=p}u6UHT7iGxB>z>*S=P74Mmpyt-;=A*Jx6%4m)H z$naF=C=rO%GHNJMMLjsgF=}j3o-_E}ILXiu%$jr9ILp_#{CiGKqvplA`DHd11h;o? z34@=?{!81qc#Tg7Lzd&_uL5OgfgxAiWByLvnLmO*KHs9d?sucmm@6~vuI-GB;7e0_ zoy#rMgJlegDz_`Qtr#^_<4b`VQgM&fHO&tL8J_}YyT4g;168Quw!d?m%W|Go@cvo+ z>Sv-h_1DMot9sL&@@AJ~*b5~*^pBoVm;C9V8Hu2YOKqBu>-g9KGk+B)i_raeH=H%@ zv3zIZ!C%;eS1vM$`#q12=%~|}=F2xw85*ML^DY`i9l>U=?nohQfs!|MNmQrENCbUc zYTJC)zlB5d%T28Id`rUN9B~Zr`Oytjk%rsM4!K562fg`acUJq-?F7M>^;c?d_}z%i z)wtZZqZoLeqOsPq69#NpNAP75EyVP&lu_etf;@E#wVF29kC2dzR*nh=Yh{ELu;72x zTt7Q)MoxL-9*=a|#M#CbePHki3CV9Q`pBTDjIdjKaKuc_mC&gK+%rYx48qE{tG8DL zUtXrijW9(OYV-{3hyx2T3BIJD$5|XEGCpmg$6W>X@>=7|_B?VUGEYNvWj+GfZmsF% zW42_o!$@i_<<74!1n0>aHC*Et8R8&GCVuRr)=rr*L?#Mo*8=hq@x4 zYjLJ;=ba;hsN)!3&p$luPBFb~c1!j1wD5avuKSL6XO4l-;~KTAFpQd`l!06F{qjk- z(91O%*Ubu*dt9;(M`eChJ5`Jti*Y6j=N^n2f8tC;VAQLomq(~q6{FbW)GK{ZepNoC zaYGo#*LzInm$7W(=H55NKQc@z*)E)vGXnp2)|Y7$*C+InKxcV3iZ4#R#U~4xaVJi_ z$>;6fxcOy98iOpGxJ^L{;g_2QZ7~|f7R_cYkD6a=6hCbKd+fqU7S|!xTixMD9i!+N zw+924P%WJncHXD@{Bo*baP7*&|AK`lt@K&my7zOQuwc9FkjcZe6v)(G5B${+coJhO=yA+u+=0CaQPD{@cV3dg2J)| zSE>9+aBeWrZz*`9_@dt#U5XOWk4!oIUdyANwJVhDg+4%?H)P@q4Oc99{2WZ>1RiUE z{8l^_ecOC^m-nlk9X_C+ll;SwiFIJyvr}gS%%8Zz#!gTy`pT-Iyk+TqLpq3DwiBWN zjLnr#l7anxWwlm5Dcoa*b9Hrc2*RkD;U$0p1AfYe;C^R@7UxZX7fM&|v7Z?N4dUFy>#MG)J`%LtDSI zS|x5tA!3{FTdu1*{5Ycfe9f+!7t5Or1Fdf+D%yp?rU?ah6Ggqai0aAM4 z{puF(p4|r}(Cpl^_yCtB@@R(-WvqD*5MFU{w5qh~L~-#y?N9Jd*$({MQw*-PT3=)a zR9F`43mn1YW__M7c&u18@SWl&N>W#v;$L&GW~_GlB+pGWv!xo_@6E% zc&2>ZXvun&#!;^lHo_;*1D5QfQvX+awn0C9Kj|bD`&;zX@!dt}UA3Cwb*cT>6fKht z`my`8r%#^zey|-HAL&!G=6*_=|Eh#TS@_*%czop07dO;dozagWdj1<(cZ*6mriHAR zY7$C-m8?IgMT1RLwEFfFAl&hhJp{M7Gf870`Ckm3eydl6tZWmu>6jEI4@_)r``eDsV zzOa)qhD>X)W%r>u#XS3?md(M7BYd;EW&vw^T563@j|~UwZjL@eSv6 zDdH^E^r6Ysm(Y>9n|<0KS!{i*YI0T9dH;pY?Kb1951j%un7aAja88vz6HOkyI&XPT z<@nK%jErjJe*s6adGJB^C{1Ryu)LF}Yw$A;Qv-4eY7!EX%OrIlNAJ7jA3BTDlalzo zASdAk=<{cuE+Gj+Ga?VX8?PwYpucW?*n0vw zSDG!Mt(;QV!yFQom1LBZfR8;)B)nqkoW;tz;n~1)7yZ(Kn(g`c!R9&D7t%4Z3X%%4 z3epPl&FBM$b6#~SMs-SAb>O8v?VRD9=$z-=?K#^y<+<=VvN`wmxb{CWt|UyPgA|37 zwzSHuA#^*obD`~fF-#;96!sK|TOt4Ln9sSi_r(}Q8^rWQ_r-`rTawgL*i#}{Layvs z&jq$`#>kUEC@>TV<`9}4i#f0MshD6A90i6F!5TupV?P(sPK==^;h<2Z2)}i7dB<$d zsl7YKgrtZ>Q_x^GfB$Zo7w~0588v~sOGBL$D?b>XGu{1<*GBA(mf=}Qomt( zWrU|b?sl@e%lBjW+R3~r zP?XaY)3o8NM|3_kJ9cvxb8>S*b98gicGWrKIq^B~IrcgGIn}wyInpO;J|uT9-zG!R z-=<=xU?*dzVkf=TPRjb2>i+1O5v94bmD&YayKi=~PIkK{_4MI!Noq*q0cLoy(p0qIOgXF)m}(m9aMg>)XI^C4XT>1mKIg!FVs&wz9hq-R2U7Nm)ID%OPC>=@pP(3F%dk zUJdCrkX{Svb&y^U=?#$H2X3F%#s-VNzJklqXFeURP{ z=>w2H2O3S3&v` zq%T8qLD~RmBcx4`av)s|X)~lPka8hi18FOyJV^PF3Lq6i+6L(>kcuD`Ln?t(3h7!% z*Fm}-(soEUK>8}AuR;1cq;Ej_CL|M58KiPZ6_6?+RY9tTR0F9NQXQmvNDYu0AvHm2 zhSUP7719n!J0b0Yv>VbMNNteXA$36NgwzG88&VIXUPyhA+>ktw`XTLwGyrK3(h#I! zNF$I&A&o&Ahcp3c64Df;X-Hm3K1hB@Gmrw1f{;Rx!jNVm%|V)n6oIq=X%SKs(h?*K z(v6V51?eV8H$(b1r0+nw1=4pR-3sY8NVh|}1Jd^(?UUC3K)MssU6AgEbPuF^A>9Y* zen<~M+7Iafq=S$SLHa(V!;l_?^bn+nAw2?#LE?~XNXw8Oh4ceRKZNunNI!=36G$;g zKZW!&NJk+398w(8FChIA(yt)>8q#kd{T9;iApIWFA0Yh^(w`vx8PZ=M{U4;iLi!uz zHIUarJ_YirkWYhrI^=bb*NdrNmLSWJ704=N4YCf|fP4nzGa;V^`E1DNKt31pd63VC zd;#RALB0_3(;+_t@bK)w|6Wson2di@)4?+Ggj4;PeHyC z@~0tx2J&Yie-85JA%6k#7a?B-`Ad+$4A}*F1LTd6H$l#Ud^P0Fkheh2g?tURP`tB}72`RkCs0r{JdO~_@C%OO`l zu7q3#xf*f}o`pOIc^+~E@&e>V$Wh2kkS)kJLjD%yn;_o|`P-1c1Nj!n--UcD=mP~HdS{ZKvt<%3W@1m(j} zJ_6;VP(B9b<4`^U<&#i81?5U8pN8@oD4&J$IVhip@&zbggmM*>FG2Y-6c>~YP&Pu@ z1SJQ`)lfD=*#adO$~927Ldk=Y52XM~A(U-Uz5=BPN->lYD5X%Yg>oH~>!ECias!mF zLirk$uS59;ly5>Yp_D->hf)Eh5=s@6YG<-kYM|6Yse@7vr2$GKlqM+6P+Fk0LfHXj zCzM@Kc0<_%r433ulnyAJP`aRWL+OFi3#AW=8;S=?Ka{;t2A~W=8G~@pxgxI zW+>l=@*OC*K>03|TcO+r<#s4{K=~e&eNgU%au<}lq1*%IUMTlLxgW{{Q1(MP0OcT* zLr}gCB z@(U=xgz_sWzlQP~D8GgBJ1D=0@&_n?gz_gSe}?iGDE|lLuTcI5bq&#)b)b)s}fWhssdGoszKGE8c@%GdM4Dfpq>r&9H{3)JrC;nP%nV`G^iIseLB=< zK)nd+God~U>cvo>4fQ!tp9}SQP@fO=1yElI^+ix$4D}^YUkdeQP+t!95~!C#y$tH* zP_Kac3aGDy`YNcehWZ+)uZ8+LsIQ0m2B>d@`X;DvhWZw$Z-x3csBee*4yf;h`Yx#N zhWZ|;?}hq4sPBjR0jM8@`XQ(vhWZhxABFlcs2_*=38pneJJm!Z0#Zh*QG>L#c;P_Kr%8R{0Oxlpfxx)o|3)O@G~Pz#}MgZdSy zMNo^OmOw3qdM(uJpk5DkJJcJXeiiE1pne_dH=uqKstL6WYB|&jsFhHwpjJbzfm#c- z4r)Er2B?ito1ivBZGqYfbqCa)PaU>w8tQML{ub)*p#C1}AE5pb>Yt$g8R}o4 z{vXu8Lj4=GHPF^VI|bUQ&`yJPI<$4r)(g$6Nzi0y3N#g(22F=%Ksy84nb6LHb~dzg zpq&ftJZR@by8znLpj`;<>Cm15?ILK;g!U|G7ejkCwC6y3F0|)Cdp@)mKzkvy7eRY5 zw3k48DYTbCdpWdApj`^>GH91Wy8_xPpuG~>tDwCa+H0V_7TW8ey&l>dpuG{=o1ncJ z+FPK#724aNy&c*+puH2?yP&-r+IyhA7ux%vy&u{KpnVY9hoF5J+DD*$6xzq2eH_{+ zpnVeBr=VR4?bFac1MRcWJ_qgd(7piei_oru_9bXvhUS8{0oq1ro1o=DyBgYNXj`D= zLc0dqR%m(9@}U(#D}=TU+E<_zK`Vw<0<9F_H}6Afc8yj zCbTkW<ENS}n9XX!XzE_XupB> zTWG(7_Iqf5fc8gde}eXBXn%qBf6)F4?QhW6Kwk^}6zHcyKMnfn(APmp+5`y#n7J( z{W;K|3;lV}pAY>7&|e7sMbKXi{Uy*}3jJl!Uk?2e=$Asj4Ep8JuYmpv=&ywSD(J6< z{u=17h5kC|uZR8y=x>DnCg^X5{ubzOh5k0^Z-@R4=h5kP1?}z>Y z=pTgsA?P25{t@UOh5j+sZC&q4n@^e;gFBJ``Ee+l}R zp}U}OfW8s>Cg?fPuZF%E`WEQ9(652M6?z`@eCP$x3!!g={uSs&(2Jp$Kre-UE%fW4 zUk`md^c$dm75dkpe;xWapnns(3B3$@IrIwXmC&o8S3|FXUJJbrdOh?8=#9{upf^Kr zf!+#z2lSoLcR}9`eGl|D=p3FLWPtKlB;s0q8;KA?RV~v(V?D&qI$uUx2;{JqmpZx&{44 z=-+~V6ZD&*e;fLDpx*-hyU=fiejD`Lq2B@hd(ihmzZ3dh(C>zR5A=JX-v|AE=np{O z5B&i2gU}B_|337?&>w{U5cG$kKLVXW=g@8F%g`T%{sZVgg#IJwKZgDj=rQO&h5j?> zN1*>4dK~&Mp#Kv3ub}@L`fs5B7W(g?{~r1up#Ks2pP>I4`d^^`AN0RM{~L@oFxJ92 z1;(i`PJ?kejCC;9i>IB21Ve_Qz))dmFmxCOj5A=I3F9mnXTvxL#tVbB#v5V03C5dYyamQvVZ05-+hM!| z#yerW3&y))ya&d6VZ0B<`(bp%A4UO; zLKxd%d<8}kjA9riFiK%u3*$N%*TdKj;|3UCh4D2QUx)Dx7~h0p!YG4L4x<7_C5$Q< z)i7#c)WWEPQ4ga5Mk9tMmvlS7@aV>V06Rifzb=2 z4~83t2Sz`Py)Xt~48j)z7(V?|!RAXpQBss!u=x#Z*GNt&IYrmH@|+y!tT^Ot zdAY7)ao~j;o&WQ4ii+eFf=}e$;GApCn$y;A_M9*t zUAt!88*>YCOWwS8&8aVX@s(@WoF=Yl?Hc2Qxdk~NF3sPNQ}jvKhP)hceBnk{-j%MR zT(O^wJgsC)u2c5KAH3%3yqxPVEiK61=p26OCRd5;(oZFJzVxauUEy3E-ncO@c_R4} zg{4IsbKadRN;o4c+a;og>iXZT|E&{$bZytJS?}7M^QOx$xjY%V;*!hKp;X)}(s8fI zin}5idSyEGmFd)1rQ=?e73UnGi%@BStGGCKb3x9gwQEjy^cw=tvmYnN1fu$tHMa_U9%coIZmTGO{k|5Qf-_*by4AU zPEEArZmM;Y`7>>-q#~%L&q(b#ZII{GpdejBx(kwxO*SV{jp9tXh1&}A3$HFr*EkiC zbA3rp!6wnusZ$hQzp2P|9gW{}lTk&k+`PP;ZLSjMb}z^(v~=@Pl`Y+p>y&g+a&P+$ z&b;E}NcP;(y|7W-na+jC$=xlk{B+S9x8xKRZq3O_*LUMJTQ?TwJ5|WtkeioVvVHBE zryoBdIe;!ceroQfoWjjTu5DYKEHC+cS+e^xbG9PaCc2vJ)HBkl#U-NN#p$6Vq7v8b zD%iBGv|wXNX>#~pn9kr#LRaVJY|5_N^G=*dJyz@#;X1i&8%{2pb2~gMnXNE?gER3J zY~GaX+F0bw#?IB|yNb3t)q3&Y$>B79x|jc6-t6|f;HbP?TzOX~Px*{=QhuS6 zB&U_5doXqG(xRfAf{okLSDqTO+qV_v7CMtpUY=`%t7v;>aBnYi?k7>L^H)ZsZbsJ$ zQ#NGUDw&eqjL9islXFiNx?9?*dsK-ssx`t=3 z%;t>Qyc{v_h}L&TK#4ffb64g`kLKe}!8y)~U${-Q_IWEKGFN`V%7o*L%*{CkVzeBu z`#0wl=I4}%tJvb&mXnzso%o{7G{If4GU7NB$L2iO=EA&O8mh^WySdP*&BpXfM$4Pi z1gQaic2@K;UAVdQ8fQf+$<2x=$}iozB{w}UiW}^@+)X7;7i_w^G%t_B$y@58RF;Cx zrFko+#%o;ph3Psc(i2fnJ31XSUfUddgW?id-8@h!-SJn49l#)m&GelaTKc&6%8xa|_Z( zIi2m=lIOZMH$AS8N-T2vNAzy8CvvyB(sOBM5C~3~SR#{`u+^1YBKje{Td<+DAl=K( z?&j-rQ!7lm9h~R_muO2pwO``eN*8|d%7|@S3JV0I%C1SejP1_#T z26bqP)8Fa&GckAMPnIqo0prvp)_+XPFb#^4aotNUwm{z)+8>c5{gSRXWhOr zo8;wf-$c8~mdtl;xu&pSb8-eXQjvL1kK_r?^ZZmy$(9_)h`wJjJEm&>^kef0&E+a7 zEXvH*`8hcyIl1|+?Kutse_=8%w|HZYa{&c8g{8&Who`8?N$1> zn^>7r6)MWz?#fii>Cb|!eP@7eF5c!!k5Xqpx45LRc$3pB={hV>ITI}3cIj;0QQ(vhTSN8PzaLbRuwrr4Rm9aoL+cq;J;jv=dAU z7af~(1&4XgG3iCyS9Xx=WHN0?-x$tB=}<+7S{7v%xnhT^x;Ca8zr=T3B_ zvMWh(hz?(NvRO0iE;%n<>&ozW8n5)c%$XuLCi?t2CrZk`8Iu#vwGMk;aVMXhiZ7y} zl$_y`E6?^^(Xd-`u6NNQnQGuOQmGl@a%L(ji_{_W5Mq7uk%EX!KSVe^`S{?hV;f`b znsuqC1*ePWg-$L_{GYqIps*u|SwYQGL>{6i5(wDNApz zPfA5`a9SIlw#k{qoOxhV&eg8cypr^#if5185)W`?C*(~0&V4AJ)TL#goGtjIwC;8~ z_qehR8HI%8U~|?>Wb})iEl<{^gvsf|w4FPM{&$Ae2AAl?XQXyF=7~kU$YJcRv_5wx z+~X%ZCw%&GQxX+&mha=Hp0L2Yt52A6t#k97AjN6B3y+)RT(W4B<6oQ81>2~O7aun{ zwSu^cww~xRN=}sE)KyOK4&~>kN>B)zz>r#5+^rT)`pA-a6ZAB>2P1(=a&(4a@-;lex)Zw-(GLv;(T_R3)?orVj zoLQ8 z+0@|tti;rFxx^s8U`2|vq+BnW-Wi|HY?YlvkJ_BG(f*2yb&hb9Px3^1CVn&VZ#5IK z<%*TNuW(kItli`w%_@1t2+eA++=8ofuTKi9l?N11qa+rQtW#Z+w{o{+<*svQo|V}Z zp{sM~QBo!{Unm}D*l$l>e^!1WT*cmsfl)x7xFQ-DXJ$pGDxKA~&K*^-qO-D2yRERe zB>P&k`q7!GvQx4~*;h)_ZWSXFE2gfT6_qJ1*ji9{UBQZaUsqVPN!))&)%%9)l82v` zkjkgzQJlF^@q6&ZZ1UuM~-bvL|pg8Izo&b=u8p zaET%kt(iznGaH9-r5r%p9R+Z`)7Q!U>$W)4ce1Zf*(SPR+a_UX*I9?xrspc~nZywqq(+yzQ7`i;vql)b~ygq}B8Kv~E77Slm~|;$|)`6s=!)b;+i} z5?aPjPnITSX<=oBE?k#VgzM8<5E&JCdQ$SOPm8_vX_9@1Rxr9VmF&(Z; z>ABMqN^X5x!y%*IkkM^t9PJl#4oOdSQr10iDv7T%kI`066J*~8XNoy7#SM}@sb=ED z_&OuAo94JjM>(S-kNh~9gw%jLD-)HWHd&{j5t!M{&)t-&#~CYP=>>takB*|VW?h6c zK_-@~?6}m>H8OF@;khowD3$B8XCGXjo_S8$E^huC#4LNmHerg@^*>$zv$gB4y3zb@ z=(~|y+iz>Vee`zU9esCr?il-?xvy%UXJ7xm;J(nlh_fy2Te`FI&iXqWovr!K{yPWm zYQC%WuC}|noUO;%`kc+uofJv?>TcX*x+ma)MKHdw_5o$w+XYGOmJ zY-l$d>R>}YHeAMrE7))q8*XI7Eo``z4ew&ZqilGb4LhkbgfJVPXTytxB{ovYMrznd zEgNZIBTa0iozTNZdfAAZjSR4nVKx$BqveDuHd@a{Ti9qT8{Nf5N7?8&8}+f#88#YV zqaijLW}|a#be@ea5|-FlIUB2CW3_CofsHk>u}(JD!^Zju!)z?b#>?1v1skto;|*-Q ziO|Bvcd+qYY78tP51Z~}(_L)3htS8S z-E4Y*O%Jl^Q8qo!rl;9-h)vJ3>3KH2#JuIqTg|++%v;aAP0ZU)7-8NS<||{q3g)X~ zzDDM2X1-SD+sS;R%s0+_0p<%a-#qgzF@GiVS2KSt^Vc(f6Z7w3{x;_KFn>Su4>P}) z&6Km53N};4W*XT{Gn;8;GdtPLD4Q8)GXXXeVl(q>W{CwVS)iH)YFVJ31)5l34-2%h zKp(-w0{tv7%mQ8(EN8(A7OY~yMiy*l!B!UB$%3OSIL?CeEV#r%6)aTELbWVZ&q7Ts z)K2iQP(KR|vyhj~m9e=9o3q$_H;a_9NI8pC5^7kamPP6bO@!Sn(#|5CEaGO7eij*E zks-neVVp%KSY(Pt=2>KcMWSrMWDAvSp_)+37Mj>XD_iJf3q5S1mzR5ZMHR1T=s@~Tc=<>u9UdG#o-ndfsRk96^fhcC?YMUyY?;fo!7v6nA;c(jT~Yk9PZM_YNc zoku$f-Gp9(n@6L3$>d8xz7*zGCAX@%wToMA-0J35FSoqhn&DQETTbedZJM?@ZJR#3 ztlBOcx67PB&@OMb%RP4axLwg|SM=MJrd>H_SM9Q^%kAn`yJp<3HSGq!-DncZ?WTy` zYTB)X_72nDQE%_?*t^E<-KO2P$8Pi3?OwaXv^#d$9bI;(*X}8^dn)aoYP+Y-?rF4p zM(mz3ySKsaZ6dVTy*usRHbRHp+h_Oo+r1-pZ`khJZTEH9eO|lIZ}%-No941PyKGtl zWo66dyO+y5m&^N>%lnrrmX<54mMbThEB(vW&CAuT%hm4XT64L!XSvq1TvxGN=h%hi zI%~P!x7=VZH#96av@SO+EjOCWP2uIHh2@sshj+$j zYvQxM`0PS_&J&*-h|l@r^Of=Wy7>Ig`26np{BV4JG(JBOpLgPC;`2d5IKHqLU$6ug z%i__#c(gyhv=q0><5o@Fs*hVOacgJXYL8o8ajPe8dE(Y^+!~Er({U>rx2(16-}-N} z!0g!Hzkh%hnab5gW_6KSU1XlDMTRY!ELy{&bu2o@qJFm2z?NFs(jKi#!alqOaerNp8X^O;Bb2L5xGrXwEfh_yu4I?_+!ehTlU@LmcJPc!a{E6dtAU7=_0uJWkJs|jvxH8rE}{SVOX%W%(h`cn8_iqYx9+_);4Gn2&JsH9ET7HJ^11i#ET8Sp z;u*Nxbe724d+Y9PT(L|ZZ;7lw$t7}6Vu_?>ap^(x!KMdW9-Ms8_fY-A=EJ_#WpZ_y z{100u!{sbo!NOH6+{VIPEbM3D01Gd$a8zK{WV6+5ww}`a#uWRCUt-P*{*L4uOcwH~A^YHp=USCV7=k-mzzLnQc^Lig)hS!I9 z{T#1f;teLDoHtbQhFadx%o|#HLmO}C;0@Ef!N(h$d1EVKCvV)t8#{PoA8+*VrfS|) z%bU7*Q$KH7 zvwW|~_l`Z)^gZ?53#Q+(q02-u6JZSAowpKUD=`G_o=OD9J@X8$?zvD|7t8V)5X zh-t=lHpX_g#&-6{b`HjN24Xuyv0Y|tS9xq#Wo%cqzzJze@4r1wng36sDe`5HgQkR5 zY04^1S*0nfG-Z{htkRTKn)3K*O6yZjQ_LfaCfPo+9ueZofTk9f+CIF~8x5ZO^- z{Y^(aL5dF^350|VQaCtFc3jxm-Xoq6`V{YKC*7Id$a5i*EK0&Hakm?hp`UI)`Ae9_k5;jC7hbqZd zXIUyO)Jk@zu#o|>qrzHsWShyR=wScYk%hJ+{Y#=v96Q(h??(;IBfhdM>k-y}6lJ{7 zp^ToRC}WF58NGjpGKLd$@xJCXMKtek`R8fkaVesIl_IWE#8ry;A5IbH{;McrkI8!) zc~3L%+0A=AyeG_iP2RhU_j-8mB=4Q(y*}PM!+Qh&mSl3LUDi%;+hqepDg9ZL(od9f zJV_}lqjpt8hFG>VA44OT1dSBbvCZyiCjuF@yG*;Q?w_HNM-fPOtL>h!-9CHbv1w$2 zK(+}2Sz#TAI@b8IsN;?#b^J$3<5A>r)E6Hce}X9DVtmew&$VO`#p)9f#bYSqDmh#w zhfgj!{Ha3@!?(5WYv0%VcM0LbKTQbDgB1=X+;bEu>^S5RWbmQ-hngO0Nt40HO#@Gs z0G6@QiYJ)>J|5~fkfeSSeu0xBfT4ec0Q#R~0vLH}3E<)?0bC`3{|W-wn+9-4T{Y2)sbri}~7(8kuI zY2ym2xWn%9*j@ckBw?IvdfbGuFGUzzm+PWL7zI@n#Bla0BZkpqh~X1S2?gWxHIQv0 zJ4|+zY=rD0*(h1!kABMOZzbC+>nZtJf4%1Du+!HZe!ES3-u-k?tyX{M}+rBJzJN20Cb|@?Re_2 z$%n`Iu#b<_@sUL+JSL9FmDHk?4ZvM4cQ^DK-jdy zZFbmWhllO(s2!fR!#+D4w!?FFc*&kM?b&L3w$`3)wr5-I**1H&!=CN4=S+L9-Ja{Q z=XxI>CpMRBT8?JMD>(7O3QpW(#(LUf9y8{dI1WD^^Tj7RpHPOSUS= z){@=x7jyDSlTS79sa8I&o2Et@pCWn^Je1bmBi0SPQcG+o*;f+pT*C+ z>`9M3Ik1AI`#rXQ()I^!|LlJeWABRfcw#;MN#5RX#`&_czn#?u^zJi|1lNN@V}t~b~!3w_E-gQ|G?j6{?#eg zpUwCmlkLy^C$Rk;grhir=-+_zS3V}^A9!*&e=Ff1W&Y6|kmUdVIp(+i z6)GUgLX{^_0RyB0LM$}TLe_tU7MMJ-7HDSHZlMLr9k$>1zsL5+pJ28>ZSv`HK0VE+ z=ef`1zFF>D;Ql)9Z{mJ>*JO5BXn`l4{|`PU|MwC9Zz29)djkI7OZ^a{*$p5E~;r|1V#s95}75sm<8S9vcb(*nG zcdT=7tTPbnT#R+K3tiCH7;`UV6v19IHc%NGXpRkZ#sx_-{#KzoDp@JCxFHsO-IyT%b>@0<6sr(2X8|fiS%3`7QKU{IlleIGT-&%c) zt*VccQy+_T?T(!w>l1cn*MF@l(Jw!NDj9lQs>EY5&lL0cm}iL%nkj|SObTUBN}6E#QPN}XVg)(}yLg{X@yIbt;e!F{sFlu*O zC#_RXUZHdztxy8~CsdXApGZ}*LXR}8&?CEAkFQ6%JhATC6{^JJi+SdcqfG`pv4Mpw zg|ZkMHe(}Av5}V8NM~%MFE(-_&9V?1H)9j!v5D^3ggfRnW8SHl*BA57C$!9wKHm{{ z^$~Z&5%)rtu9;fZHUD$E#!pJbPfEn^&eAyD|2mE1SPxlBU8Hj@(zPs7O`=qClyXLA z$Wob6Cw~RCNyQO=t+1jT$2z*8lKQ&xNTBTGG*lzSHy!a!uj;8MQ%@~YdoEJl9NS8E znyf#|MzgGyv7z!TTb*U8v`{nI_AKkpvh!JXf$Sn#D`Ue{PPmC|YsSu*SvCI9ta(<4pttlI@oit_n_yX=aBo5`@!Z1n;&X;sPW;Mhpk5z9178*|^EZD+$enorE!h zpAaNO*!TjQs3z1Cn%P7Po7ll7+-zcyO$@OKAHmUsCY!7zG_lEMHo1dM?qri=1V152 zh_J~8HdV!@s@YT>o2qA1&1`B9o9bXw-E69lFvzBc*whT0E@RV`ga$U<#HM!;+Sqgl zo9-s`5(<5wpf=y4c=?I&SGH(U*RxxiKp_zGGn0E*BwlQx9^A0iZ0`r;7 zS4n6h>>!L0f&@oYE;4@=p^nhZ{JWXIozTVnZss3k{vqb~G5;)^G1*KRo2eu;5q1#9 z2th)G%`C7$6`_vM%mTYvpq&MJS-?#gWPu?T@DTzmSjK{tgeJlc!WbdKf{QFvMW`b* zvrrogb+C||g$7w@h=sx|G{?dw3zxBQC83>#J6U*!ut->9VT;Yyu-Q5`+rVa<+3X%d zJHf+d{cJYG=1exXz~+|Nd=HD5EK)(JVv%YVsUtM7NF$3hv&b$M=^%IrgM?wiD2t4- z$Rr^`SYi>2EmRR|2+eGvg)MZkg>JUc#}+IWttCvcsE;i*vZWTb)Io>}SWSdZW?8(V znpd>&iYTwJcwHT#nb)=Ox^_Y*p^w+Od3_zBnb)`QdOsn|>t}hrCD2etsOAkdyrEs7 zaR;G|H@5SpZr;?#o1(nQ;>}&W+09!*yv5>Oy}ZlKyZyY|;yq1-J-o-wduDl$#d~-2 zUN`TZBKQeG-fMApA9uUCdz`zy+#TU=i+frKUEJg5{d2tE;(I6fUN0XA^8t$w_VPhD zADrZaUOu?U2Q5BS#)m5S&@>?|i+r(-FShf=KECLP!D=3@;n8LuZQ;=lLKmTj&_`I}QHw8y1gt8;Zf@=2 zRu93)EkCzH1j~V4He{EL*<~|!S->uDA?&fs-FErBUD0A!`0WbIuCBMMTkMuGyT!6w zN9jf7^xF1vS+-Rrh{J$Bz7yRY5u z^ARiocLSlxcDLA5P4<*yyKJvz`@8~vw?JUV4$RrXVLRwZ#bG-%ZHFA?XxZU*JM6Z@ zBLpvDmS73Y)(~0AYM*^w@Rg`mA)*;bovd2MUawj8x+3Y51mmv<~zn#+}y z%azm1mA>Wb7Q)T`jSW z$ykRK>-5Ar`(vHKSm#2lt0UIsj&;w)x~*7WQ_LNSc_w2XZ_MKatXThCtlx?aRK*6G zVgp^V0e5U*F*abuhIYq>`eH-T*pL+)X(n{VMtWl-p4f;L8=Z}fTCuU_*jP(!tSdIw z9UEJWjajjYir7R~Y{CuO^f;Vo>kqm6ivLjh`AB;aMtqo{o)>=!=l(Ti8K1@sYVZ%MOzDl3=7Vqm*Zml1umOgi%86-PGmW0^MRF;io*~N?vRAy|jI?IxX3pSG7lVy9eY$VHC85^p~vLru4 z^qEg+N5)1-*hZ+f7M;a%q*j=u;zCL`PLlPKVB9TiARz!7$hMHB)F6q<;0#%ka$*Fg zY>1>;sElj{*($O%Wb4RMX`wc<9c25+ddSX^jbvF8q#-IlOy!5EoG=N`FqIbGA?z&G zd5+FLNAYu1&pC>puOq=2CBfKE)*`_eI?^AdpX_%8V;@Py=#jmqXrH|l9-#05g$F4- zNZ}z04^eoS!ow6Eq3{TWM=3l?;V}x2QFxrf;}o8t@C1b?DLhHxDGFz7Ia#-`GZYgb z**NPX!5Ceu{^hdQz3p?Z8*UnRwve+$Zi?J&-rRO`$IaoJ=k6%Gqxy~=cX;j?ykpYY zrtg^ESLJNJeZhTUa!N+;tai5A6(3B6?wY-~?B4pcgR+wxl)nAZ{nmc#K-q!v1C={Fn(>X2P49aA*#&pD+82|K^EY zoc@2@#d(x-v+;>=Zbnx+Hye-R-24aJn$eYR&BhbBHNC>K`2;&R8;@~rdjBcsX5$H+ zni(I9F$8weSIX2AQ zwcOoK=*jx6*OPRZ&heq@$8wd9n&c|=kgK$xj|KU-ndK@S5tuajWPneG_*4a-s!F*{ zJIQT2mgP1Lale^zn?`wHj0YxpU^?kM4O`*|86J=G)EN~^O9EDT%8}a0t=24es)t*X zS?<(D@}fGh1QL$a%5p*tq28|CWmoPYblR1@cI6;pm@rBhw=1XYO0QixZ&xnbm6lyq zWmnbFmtqb);$_jDVSCruF)qb~-dJC4tgj*EDlLn7Dq^0hn5QP@sgHRYW1bOmn+C{jS`iy)CAaBJ zY+zP+P7}`4!SUFjFE+F@HsndVP=~Fg3-vh8Q%`KniHQh|o3Zhw*n~+aPq|Zj$(=fW zB6n(h@b9`)N8^*@C+Ad+9_Oz{WxGumTjPtJ@x}i5Vk90di$}ZS(c#B%p^~sQpLow{ zh{B=ZNqa(1?W=p1!r}HUC!PXQlA*9*!I(e(E2O_<6Er zkMBv7J-#PW_B_FY=Sh}2Pn5`cqU6ov5;jkQqmq3}2vv9ac=gVhHc4mLT2zt7qF4_b%H4%HuObBO==A@3o-L;U*=TMxB9 zWW}diPkehXX5Ze~@6xVabKZ(?!s_?eCuWqjYt~)%y0^XCb@f^;y!tiS>epneUz4qV zO}6?q+3MG1t6!6?eoglHz9#cM*}}bOIANCTm7tT^|P|o&&r;V&&p0h|DDul zT+>v}G`-8`rLdRY(_3@F@o$YqYwa2}n};}BFR}EjUGvE&Lv1;yv(0APY_ZL8+nipz z=4Fy}@x?cJZt~FYlO>2)v)~|Ry={60#9wxE)2eGaM`umFPTkjuRcNY(;?uWOOEO#H z$x%49o0yDeo!!$8nuqCNM<>rxz*%J$oWN;9Jv;y1@7wQWTPFxkjYWs28&71X2D4I4 z(fp>fE52PD5%G4LX}7tZ0DU^(6#?<2l9G0t_8tm&OnZPz6A!6HW@4=FAiDT2Fl4_M1n4*ooXYLcn6CtF_n044`q7u$hE|Q3`(4`8BNCEL%WLEMDlM`KH zH#NsviQV)xOGi1(v!W&04ap@;)ZlLOK1!yC$>Mwti|TTV?lbTAQufqJ=of7w9xV(} zKEasi$R5+~OPnx0$0XW6J)P4fia#iw%9faZ=zPny=5j+SK5=tX+lpWKYohWU`Z=5E zDMz(X`wMbSWwv?jcFHVVIFwmDTc;$4*!tbceowCaV$kmM-9-m1nw>YK2#Bz9Z^<8*DRh!ivW>2iV+-7WG1;J+H-&F0lF;l-3wJ#@ZHq#_nV0& zKe?NHx|m8$K6n(3e_QMA)cJyhCUU3O(iXZA9D+=x3r;Np;v>HRow(eyT#*=@;(@*> zM7-wXO`an`BIc<*g@&WXpg%n+3W+$1R$RnQ=FQ^2Z=2tt^f{AL^eyIXbVrLH#-oyZ zJh4Oxj@Y8%k@zJ)5#tEHq12?2WPGXHFhL{}B?#|A`u0o^x>V~VpYx`NR$?g=&BB5v z3nk)H%R6m!%kK3i z@2~{*ps`B7Oi8nca6C|qqgh1#Y#MJPkgcB%Y3Dh{dGz9S0veAd93(?qc!sd zN5stff}=I{1xFqAQ~FB{U*<~88~e@x z&%Ckk$$VISoVVhsW2##1#0@A`HR>3DEBB{{OOoe%led5^SIDIw22JXGtoK)IFLc>Qou=w_0fsgoQKH2?%{RkhtZ1j*3j4I?0DA zr+Calcba%wOF4xIbtmf}`lu{%V~7u9ldEcLeBP!I5nl{aD;&45ZS z4OC6?87J0X47ewXQ%$SsSvSl_L@eb?=KZlAlu zyrWFK*OYvpDR9#7GxhJUNxrf0ukxWkUcY&eT<0h7o>y7)N7^b+#)qEu#AhnjWzz4N z?v3@;B>c`Ro~>kgV6z#`|CT=d*ZJnwuDkMuFTCWE*T4R%tG@i@n?{{&%Gtcm7Ie1R zo91r!W&SMdot1Z1-C1*I&Ak=()`{2m_U|~(t9!wuORV)^*CEr{8V>ax@*VOWZaX}B z%)NC~9M8V)9g;wh015685@685C0Kw!g1b8ecLw*M!2?Wi2{K4f?I_JHxr-cRX%HT1fQ;eQA z9kR4!Up6~LXuZCeSm($45JTIs9ODmUn~S#SuGMIBk`&BL-i;-rdIpi<+LoT=a99=X zKObSDBt6BTRGWxYWzkXTkXDU%RGE%V7-)x14LX=~Y`!x;y@LWxL!*QKh_H4Aai9y=YY$``Ac#h8B=wF+S&px>ec-aFf z$<_k0z3hWofvF_f2VPYH(bcctE7@Ya@I({yvW|^Lj*WV`Hu$;qvuZnCKp<;I#8JOE zqMOGVuhFT}CM@>QW)#UBX@6kFRSOdyK@ra-5{r7@mvrVVa-pH)mK4K2MbvyyB2 z_6{m)8R6_eNjB-O+F+~UPaK$;d6d1IW-Q9k~v{uu*mIj@%vM##Y=dr#xK7?N>VBvJvSQn`8D3@nn zC8OyE(tORAJVIkS?@m~9u<~Q2tR-NN9yZ$nIUkoF7z@bQ@;!)c@G-vqXg1J?(ihx6 z5*PVBGS~X(^EaVGta0PTvByeRV7cR$Yxh-m(vuI4uAYIKF9S8*-f7pENZMGvAu9V+ zHXYFZfw8p8a=v0eh%lIqXh_NO@?*;i{F49V-lvu0Eyr`0X%kfkjr|f!Rdvk8-3X8w z{_D`jq;94y-GDghgDu2fjnS~o|G=hPgvZ}4>7d+%CrtAhO*sq9 zOCu?%Tmcpk&jADQr6MPORsqPRqS=2&0B{E)DsqbGNyF~q?`lGgGUotTVS6^0i+W)h zI5~mzic+buIXU#2Qt8x6Qebq5goT0@7z^@=SV01eW+I{4)a>OcJFoD&b`vyNf4wAC zp20t&yOj=lbl(X&wBI zMz&w+1TRJjVF{O1z(kf4Kybj1Jxd0_G2ma3^%;EdVi7wCTb5D_z#SH_p5+D*lKPI5 z`;p#3DmFIv3%z^TXL>~jFbPD&Lh(JA!sG+7A}yHML_|~Z-M~fXLG<&mBqPWiyF8L@E&n(nT*Rl^hHCO-~K^SfF5DciZQ{wKT5Lo79f(V((Adv>HMc_y*nKvnWZ$ z_ZP3F6uy#h{zN9Xj4N*rQj7KQV$tX;Cj{t8&Lx>{d zLWn>QuQra%v$~6HOvxSY*2E~WDVf}^UhxWet;#n_hGH^WYlP5NWex^AMf3a9TVInV z$NWRdUxmEOd4us^l%4dyEIVn#b8OJJe|4mPyDr{`SD}gj=st_KKl;>9Bi=YWSs<77)RNlp-^wCpD;(A6^NJ@wBW=gc(ZhQ~;Pzp?_*#1q1YG9K-7$?>A!6B) zum`c6=H=J*leAWP@Z8wmEq682O9fLa4S;(Zhg}!JLMB&-+spJOr-v}XuSS`?E2k}l zK0vRHoxPipywbZKOQ$+XE#Z}=>vt{-#eEUaD;a64%KJseVzM+xFJaZ9` zG~6t{H$`7lrW!$xGDn-!ax6^+ks_(OQe&X(bgd!kRv z{?67#*Xg-1?+`z-(4LpR&)~;$1#7$)-QvdzUf?G*A43(4z|U#K`xP9)Pa&V_m4AWX zLnJMf8xR-znOHd&%x5AV16ZuBvBSXQ=$0y1PPJ=Z0UAfkmUDsf(J z(u+$aDM2^^x`>9IIRua%fbkM4?K{2Q&muMa$2--2+)~^>6>1qZnqGMzwj$RWaDsbH zj@ykmHW?max7e}bQ}8Pq(NIMkFdmIqzal!A9U@hroDAlMNbe{IgW1Hh`rzpBWO}Ty z@b%0qz*ipDTP%9xfjibm6#BHShb@tz=FlxfRmW!I0sboC6uqoe$^_)hLM~m20DOLW zj*TMBbXWE-J(AQ^=El1YVV7OZ#TLM$r1^lRNDU^U5s_462a`cQ&?CM+3=laBr3Ekx zM4niw2TX4wr>Qgp#uR_}@GvG*uC$Lw_t%Y(5=H3c|Fu-%A?EMTrN1r-N$ML;W)}cW zDl9hhHvm~GM(N@8$|t?<%1}~y8W{s5QrO?*oiY!hLoh8()N_w z-VZ}yHQ-4g)l;_5AJEyq2Rz05SD7_q$inctD!CP7cEdOoa_TEyA9W48&CoKWG*l3i zWt8$E=8u`D1sCUA?+v)vd#!V~o_7s9oOCgNrL#Scqq9BTIITuXFV(F7{AzSIg3d}j zzrrvQlXT19vzfAH)$&<%|S)a zjI{Mf&3I&0oNbPv-EVG>qc3Onr1$?h@xZumc5^iw_DrhFpY-0|keZ9fU*YbAEN=fT zwJt1fi;;Hx-cP9v=?tgD0{ZYaU9BCh|HH#&hAnnfEakYlJ5%M;I zGK%#fjKYw~ci?r;r69Y8gzxB#`LT%m=!M4GscR%wmbwekLx=o>&egr}O`NdjlGl|3AK#ma!+S)TZxy4@^q+A9VA>x(PT6p6YLqe7p zp6O*-FR)koF_?e>+Q_EG>{e--DMJf}GjA%Rl7@S&kxUtXYF?M->(o=7KFuu*+YD+8 z|6XbpT}+60niKlFy?MzJ$R}JN{v9}!gaL{ttUJc4`DIYre~T3F*$c&&UWGVUzfd%AfDo?aXY2_nyTcEDjh24; z`t$rT`ik?6-X4%WJpJ?Iv3>;+wSVn+62QiA2f1$H2I5hbsWiYl!Q)-a>QUjIStN#&=< z9qpC%tw67;d-K7@?r-LFGN|ltdSqT}fK0KsUV_4(=ky1C4?+rQ6=EUm9PHk9ObTSD zyY8FMer(fbPe)Ei#?uxl4-I)B2 zuhq3{bV=c33XKIaUK=Y$)b=+Ot3T>rjoOmyi&B^Ji9i8%!nax*zjSs@%fXMDN1E%J zhnhQ82D{G&Uqp%3s~l&aMEcY3(WT3GWV{oSYymXA(pS-+(yP*Qk_*pqF><8KjXGCU z?^YZ)HUTRV1SRK-ae<@xr-U+h`}1Ad8PXzlbKel*%QnUJyXG6QOC`ofEl(gqx=~Bj zPFgCoBo_|fxz}>(t22`Cf?>1bQl>AYVxN9j8%i?XdA%DI!H^9*Ysl@(r`^?R&wp#_ z08GG6BfzQ#*Q+MI5E7gIuK3z1A6fLxD8-(Q+dT|9{H!y zWV>FwPiJ+qEA?S%_xB@`=UBTgdfE_B0oh*V`(#zA@XG0ao9e|Xqs2|AyRW7l|J zF>-%3KLX;?^^>XrIlC`G}ry2B@ER#n*Gw(bC)f6yd9CxFCxVS;d)s-$dsd zY3vXtZ!Rp&_hkDwxlvjtf@IZB0+#)tdGwIfJK zXTqNiH}uQdjU&h-_f_GFCzH^jz@gxe49r8410hy@E{?P)*Tv`>VFCa_Sehf*`99@~ zqxYRe=SvyicprFzw*+MoQ}4D?(cHxeMfy&+k{La>zISpYdS=YehKXZN@VMz zYN+mf@JmnTn|gGG`DdneNdI)cdCO&f9g@2`p&W_?&{X2FzfD5`D4X1aw#0Q<$_hN4Q{Lrw<}2P=bXtU z@8=+T2F~oP14}a~axbGfSr=R?HhSg&PI!i>7#fWJIj9vzQh?klqXGKdEF%&?Zh;Xu zy=k~n&HD8(b+%i4kQ&=oYgfB+)5=cEn~2oTP7F;Uw_w|s>70%*i=)(bHTpTQzZgC5 z4^b8RFLsexwi`|L+RrSWaqLJNTWA(cfu&A)Q?Y&wXcRCV3TE~Ekl5wT?*W@W4O37{ z#)r(SCclNyERpCIOPLip<(36UPH@rd4m#x6&@ZE*Xje`!GBhVo6jG);>SNd2n6N6M zOr~TXE|-?A4DB#o@|h)O920h-T9cjf)OqgTGhj6}^Kc)L0O$2x7wmE2y(K-+p%e;F z&qS~O3*Nhn>7i{Hse(+Nar`~k$e#EObAk5}JwF)q%;u&oufE9C z={*QrC@r{eSg>0+8CcHd5&nFvEMcc~MfU89k$^8X3hK2zvUa{H_{nak zkjFz>xHr4j0n_KEt{JbT>-A#99_lP#35HJOTbg$|wfa*;LdB^}DSWyDlg;q;q)t@3 z28!R5J=Y-)4?Y`r^V!1pptXdShsf5>XnptLdB*e&&F)AZkEesPE!V@9t>=SxPjr3c z=5);h*R0F-KEx_%F!*f$yvU*^(`%x>cVss>-H`$xOum!tlr*P zf(W-s=7=1cM2z877IpCDs~lqf4V|8>R37KunZ40Pk9$e&496Y<=!}8G=(%Nr^3LH zi|X(*_a`Jt?MJ8noXUrWJAxC4W#%jzREhRI2-z&U!w=+^+0Iu?<=<5w%euBCvTaX6 zr@~wML{r1Q1@Mx$m5@ZI4I$NGMZ;ym3&bLH5e*7QMMw!FJN&}kGuylWNNEt#ScH_G zPNlBuk2DGJvaSdr9r+^_Lc=Y26^KRmKC=TKxv#^YQQWZYNAuV!gW4;R^S_SIBQ zbq%--I%0lIOm(JsC^~}}m?bvIuiur#1)|MjiiYg*Wp8#9S>!x0|V360wJ~i5r|fcB^nZku!;MRO*YxAt6zYe-&iz6o`-VK7@IQX%HN&AzWke+(IS54GdW|q~gfs|g>r^!0R2w11 zcxTvwjF5^Vq=tW_)Cj2}kh3lkA+2-6q1B;AC1=?QL{Gp$NLk2(kP?nX0|vDa(m}*o zHxW{Fgf#1qP2C8aVi7jY|FMY%VG~IpmO4l@s1O6;@a(q^KP!*S_Ua;p!_{%DYwr;b z>mnRZ|0BIeNWT)2ER7+gO8_)nTe3hb9tY8&6m*1?C%nTi#WS;=`Hz$tAyq?2tq}Dp z`Nt+%giSLTm~wx=1cqz+?Xj@Tkh9Ek};+j=P)0z&v- z|HuDRg#Ydc|GobBe}|BMMfm>{QFWjH9M~RFbzK;kES3l|xuaQWqtK3LaIdd4;l)?&DV2WlQ|J~HWD!#3Nm3f znxH0Tj-8|iF;`4wy=Eqv%<^V_KV?M044X7^W}cZ^Ct$XnTt{Zsn_9PGZW+fxV~&}? zF=l3)jzwZ7o`|(!o}X62V&0rkGGSJoR;q~Sw%Cb?AFId+2#Rec7m$l}rxvV=o5$ay6~|4yH!kLwZa^v~ooKKrUYz#8D&Cs# zFez4__NbWQvABwMmcx7Wt<;3nnhd<_l~7<2)DDvWCeGzrLty9QkAAe%4XHPP6~6i`^S{t zDtG-9?CPLT+E-QLy4sx85OM8=DiaZHg6d5zZQCkUQEf=ow1&29wettm+AWoASJhIN94?H1GAZ;F3=WwywIwxt(S{3K;B5m0Qu54{kgL8>?LIZQw zqESO}>0)rha`vKkLvzVuN<(KBzjZ_QPyVn5<6?g9298XA1ERKX13+U*=Dijt#NOmW%XHa*=4)&d+ufZ zv3v35)|q=!!S7?w=mlA4o+%3wjRm|BoSO;I75qIW#v-UPBc>|&ZqG1|Vq|+Ql_Gs_ z4MGvR9g|40vlo*|alWmXK~cOno=Z`=&6YyJxLuw_p}kigNg=;|45pymJ1$5^-46Yp zZoU^UI_(KRR_Tqdcm0 zRwO%0aAvJIT5`TGF-mi$BQ+X%zN9kx;>_#wXzjTdV(r8;e`z52TvQd<*I+);9l-)~ zawrLxZYCNJXKS9D4Hs+vJuWTOtTHPt+iX2P$la_nHYncQG&4xr96QEH-^@P4sN764 zR`{lQVWv>G88&9c(yTUPrP@rp=NzXux_zFim$7#afqvVLOoVRlMP@?Jwq-M*MSH`! z(28y56ez=XaTZi-uQ(Daw|xMHQtTZRK+(3-zC$hc(n_Gt+qwx*=Dp=#&>!dNl5mqV zJvsRBIaCS$>C8t4etG_&Knu~2lHklxk+S4`O@fl_@VTUFM&Hd;jy%T=XP*4ljZ?uW^$k<*=*^9F{;1&1Qr_s^ zO;Z7o>82wWh<=lm51hF%$_C=zutR{oH;%tbpZ=L^ec|R;VJZ2|0;F{Crr}qqi7xw& zl0<@I1LrIR(h|CzlGw7dmy+3XzO9|nQoOgA%cAWxpF4=G%d&f-mB8cqrkqd-F_9o) zuBWnr9r}UnL32SP5C4VfEK~=YQs`OPRGWAaKLm|k)P{KuI@(3<7ne6zx7K1^a*sk` zi;KIS+912y{ezn3=CWGC%Zqbp%RE1h=O;@z5uALonWM}#_+sP&I=|dV=9ypxXMpQY zH%mhsWj$R@;Ufpjr_G-Amme?E=b)1-p241_X7KZa=JV#-`b*6Vp+%_r+-;cWiU)jg z|30)?xcV~s@?l5l)!Ylw+Yg?U+lK*B-ec9+@t5tpLIAi}t~a0(d-EdmTBvF%m^#R(Aoms!0kupjPI9{lR`=JbfDYcUKu)v$}!#yHS*_|1#3bF^LgI4PTm=|haBxUCgMl?N=C`e2IHL& zI#g?X>*Kl3>c$Y=p*(u6+VOR%+Ohi;gHVe<93KH)ZbK?h^cn_G_AZ}llo1Lu&GDa2 z6k`t_*>a9vM-PLtuIEw$8k z9vkF#@r?@$W0NlC=8H{P0mXfbvsjTb6Se5F`d$HV&k$$w5g~+;e-liHe5L9NSrLZ)nC2G}f z6=j*`IB^{xR0bGcyj{PSC#@YVZn+bKi^h9IShhH}xAFC{gM-RL8P$NsgVO?_C#6$H zYPtQk^GX!K+D1UFv2fkAHF|pz7@Tc-X(THqDglBqJRz6^O&k%IfyCiaCGn(~?x4B- zIkK9%W2q4Jo5YUK$sgEMaY&msBvw5w@Yn5(ibkV~^2)}s{XBY9Ap>1w8pzcOja zM80;f)GpQv9;Y&4x>!9>m^fbuy}tOu++H{k7Quy5D;*lRH}NwDdGqt0~;Y_+FFsw-{~-%`?PE%&Gc_sX5Pdd4DNl$-ix#=rWPt9=pk9{ z)LKF8a*I4~s8wHUv0N@HSDVpz;i&;{@Lmp^=^U8Wwo;D#kq<28BByj|G^WX;u7c|o zT7(%Fn@X~&;wkI0IolzoPg+3EXg2QND4bzDaSruYay^+2?FswXLUugOh;w}-w#PU_ zsZ|ae({OPEZLa-vY=#|`b=ZGYDfiOhQ`;)+mZGiZT(jzls5bOcP28OM#kvL~VKrVR zyy&3_J3zI`%C=#L{v?Ruk@LfHB9?ph1H+)YaCkxnVFq^k;6P5UjMe~Wo=o^a6=E*cZM7et^^exwQXL0<&18Z$Di-#1 z!_A@}j=}*=i19EweJA-|#5kmvC*-!=ycp zHPz9U>(+7Xi!|R$_``jMkgejM*JI~y=iY0#$8fr93uSp(`2%?|`R=?QdE`=Xi|9ie z+ELRGVZsYiUy9t(Ey_f<^QnHdZoC=>r~{?bl{4}2?VIdKSR9P5nJ|Wst$~hV)#tOv zo7V5XI8B!MNm&WK<^}bQ8L+5_BH+(L)2rE{LfCNa)Y-LM7qF=?_c6H95^60yymgSb z1J5nw8JFh}I-5KSop04faUGmWSXSyJc5PXgvxMp{x@7nF)L~pKITJDgXcLUk*W)iX zJ&J&k#b8eSl~<&g&w3++X=$bvmF|s4Wl2)7w54)g)fb0!qBe-TdQ zz>uji_w4Z*ZOnXHE%&vmec$~Uz}AyvncK_1oZQaoCd7r$r}3?B?Ls03A#6R!B&el6 zq2?xZZkMO-r)P59Vs__6%V&j1>#2M{$A$#%>omMq6x`Ru$brZ{tAcQGC8y zul;&73Qt>@m+*?Aw7z=rOZ#4C3Vyr5&Y5QZ1>29+e4S#GlOri)+-t=vOwT6KT+V4} z=j;sLUVZP!r7az8c@Xx!<)?eQoEHHaMd9hGPoQ)ldb=#Wu{6EilValGMmOBcz0vFh z7k}*D?f`-v0vd^Tii{m@)9 z{>(A^cEd79W4ZCXlZaO;BYR`xG?Iiz0{tbfehl0CASroEmBZRYBx!~jUY(XCC_`~| zjo?ALKB#q8@Z7ia_v^S`#PB_GYj)t?ih6HwLggo}qSG>OgU7B@$%xXewwv%HGjCV# zo0c0yS8VwD9&%Zp!A%NHP55;lb2-xphhyT*K>zOIe=iH{AdW>FkyCDIzB z6!&{Pw@&x_<8~CnN!)jF{a1)JR3b-yVd(omrq%7}+Xg3S-}vsyL+?O-Dfs+%Rl$p@ zo6d>_lcj6E59}GW8G>PY!>&B0jh6&oB^#GgaSS7Xeul|d_F{&~8um2CNeKJmiD!Pb z*Q__@a$Z%Eb5|NPb4<5ip=YaR;|A17MJaSICzQQiJ6N21);6Erdb`l!a)aV~CGO>w z=6(A3aO?X>`Ovv?H@tG2(E6Ar{4fdkhC4(~L5ogGBU*tXHAti_7%2y&H zw3>Dem%X&G_ogimQhKdG&%&Xlg_otgiy#jrt>LFtXCASTv zy1<;+@>2Mkhjz?Hs6M_KNu`Gkv6{v6g%4>OjUa+*FuY-899#Z;vqSYJEH6OyiG!Uw zLNIhT^}u@cAyuOib`V!$VZRPJY?po3uU>Y@#>AEs#Gk}Ju;c)fV|PuiXB^TsK4d;c z9U?V?qMmXm*4{hHTYQ8W=@DR*&4IhW5MWohee2#}(la>5snYQ3TgN5HsJQa)o@Ht= zaY&*WVlp&FBb2Vw>=?umibt*d7(-*pG;SPI%y%W^Zb{Y}}#DmQ#Dw46A6HW3z3d?lJyMNU-sumZm z*17*S|ACKEWNKQCS4gKJIJj%2wnCAjp6$w2YFo#1uH^DMgj4&=od1JaJ8$oS{l}f= z^q{5r^!FY%o(wfvWDCk$O&`w3GCgjbenYmXkq<4krIt%(mV5cH+9G?VNadv}$kM&M zqF@t^>1ISBRp~<0tF8xJ8zuLX3sUa#JA~)f8>K}*&Pum6`&cc8is(kg*@41@?#9JA z{c(GYT9R-gUigZXho|cVY%;yn?Q-yWiMx+(l7026W#{y8>D{Ni!ZTu0DL7(Xkjx)v zliHH{lZaUKsEd)7i$}o{VOxVI6oM4O>ElF9f=~+i8=u{ub?F}IHvkc-6APHdp+!^% zH)B^46?{t-+XMNwhUnS0g6mUPgIK=} zseUOz2TdmxcI(){cG=W3>W7DH3~l*A{E7T1^!ffn?wvZHzr-+yqcgz_%c;W0y@T7< zkqEFW-6Fch34j%DN!=+-LPp1I;iDQ}BkMTfb{e7vXt>gInjQT(6i1aGztKoBDVl@| zB~+E?q|xZEn)N@Cme6ExkJao0(IX8}Rj9;32AEV$3f@asYy9d|(v9B*?FdK{YIqDz zun%g$S=>iy40=vp&qS8n?sjZ8*^l=Qp={2&#xJ_G4s6z#nYHWRK;S-?bu%e&d|@($ zR+&={z&mW2I?^p+YgcV|x{y#KM@HJ{bwi%9yQcR76H1K3sY+#j|Q zJ1}rbALZ%GFD7-W!R#J42Qu~)Jg`_+THVay$Hg|`!?Ex~?c>G% z{^LFH(S)wpP|SV;8B^P3&hhT$bK%pPI-P%y@hLF~dC!@Nsk;s0`p1aH{%Pg!UomR| zV)(mb?|4f`z24NdJrhFxfNJ#J5AO?=?;AWfDm)2#YJ+_`TcEVyjkHGU~JD`lxdyuJ_)? z+uB#>s`Ys)Jk4G00f!r`g+(fLoo@M9T$~fXSDeGcEx81hvb?T3zyjLPRFl=jp4`s? zZA|JGq%7;9QXZEmK`Dsl1=TRHrs3kowbn1!ZJSfDZ0cgI`C+SnT+xBpV0v6>F-j7y z`9X2v-0E`tuqXe%b+l)E*6!BJ-E-@hUSMS+iEqBdLXg7Wr~2j6T&2zaq|owrcdxXd z<%L>3OJuB&A6d`uWvxe;R+e7)c!rxk*XCpn5gWU%8Ja9k6xx4cw=95p|3wm>`SU)~ zu2NuG)u*BQaij$-?J9BJYiPdnY}m}|FRbM0(}aa8lR>U6OX9uLw;9(AhJJ>~N} z8>I-3?lwb`y3n+s<7>w-G)l$le*Plxr~G#1o%YIme$TDyyo*9ER%SKPdly)V_u0&tfIb0>ld91Xek6N?RAYz57`8e-`rW^1g9{Vmeg*^o_Nqlhqm zA_(%7%UnmJfiV6d$i&ewX@j}wt^qeFLN-qBxMQ=<9yxjoz5j7kR3Rvzp{sNRe|^t< zfn9ho7?@qF%W{w)O-L{qLWLHzLCn*`#&aOu??tc4LURlGT?bxDh}|lSRzx?L_r6fd ziZ**44yTzjnwB9rN!4ipGiGdBqmqqlbRnT zeD-g5*7Gn-D{#&#zxQoY4-o!F$ETgLx0c`C9|!u}lk!q#NnW}{+eF(Ssz8ap3k~-j zt#x95yG+Rj!7Nh|_Fxt7UvXjpkm;YlKHta_+%|zj)V>L}EPq z$>q%jJgeHtSSd;V1FR5Qajtm*YrQp6H62UAKK1uR+Dc{1zhP>@dyo|~vwa?)jp&E% z(T9D97;548@$rxEvT`^A5fRHET2gD?%IH(>dYylda4sQej>`9pN9l^?wHj~C)hXe-(oq?2>wouF zV1P_ZIwLBz+Qd~HL|C?PYONh&BRBFKLJ@Vp`Q)OvaO02RLZ6uk&O z-{8WHmHEu})h7g&sPN<_TBBSiIK#DfH2Jh#Jf7Ln`b~v+j8MPNx%z0!yhn{&jTddJ zo%;$RvQ-M6;G=Roz6!+gjk&`(26jcK;*EZ4r{wn~yK=bgy{D8P*D<^0y>&P=J~lp% z>!1tDxbj_pEKPshy&oLcA3)5Qs{*TbGV-Mx0OV;OJHFSGCj7vxYotyN|AoOhNxbRQ zRajLZdOsHP0 zm#8nC|7z6pp0$E|EbH1it7GaL%wm%dT-{9T`g#}rek+73f=gSrfSIF?cM)@DtFc<` z-MMSaJBPW|7-L^_^!Lx#k$qj&Z#P{wo~pQP?Ai+W9hdJ%Ur{}m)i|J?V3c}-(e&J2 zYgyK;amR=U7c0n5$B0Mz!1V2RgT|Ep#`=wF=dY8?q91fuU22C8)jDiVkQQxCR*H32 z=Zl*f@t3zgxfH(p_J>@2^p)ZTKnO6Ex$6QBNh zDbY^_Cq5Igq#F$DF41@zX3~lAT$kmDvBYm(>I3>oSmDn)-BtA^q;A2$r1f-0+oaRP zwh}k8FuHbku~+I%Xx#}STx$}?{b9nzR~S+Tzn*`gNmHIcrr}UwuZTStk?Ehn6Hu>U z55vHaD#7R!3pJF3od*T^E1A;=wJ2%OBWu2X_Fb*ZUr7fbu1R10LrI^06kJiH;>g2* z#aN-lMXwsJbU;7dqLjvjaNc+~w2rp6gpK5^`cJ_M6CBjP;+`JtpZY zQQtuUAEF?Cvw_U2dN4wOr%$`urHC7TWU3RR0mR4{H;m6S@ziqysWGj^kiD! z4bc9y{tJ{aEVTY&!oT^2^dmlBZl5L*;6x!Nk1EbMX8l`I&k&g(5eH$SyL-M`Ro~E| z>BSQaPR$Rd?e8%Ln0^~(J{`P5+$!P=DvO?Q+gBEan2_p>VEBA1(}~zbXQHd{irByl(UioAX|?-HAkwr^sFMf$zIgxFfg&S@T7 zUoL3SV%3qLDK&^?Yh=*<(XmC`-Q-3=uYOyf<*h=<$YyMd=|C}0h@~{tmR^4#S9;!^ zzL8~f6++ekj!SUdRT|M92$HVH@}APS1)4O$Dc$5t&g1rOem69?VBOcPAKboz!$Yoo zdamM)z1;mT&v5xm=3cNR8G1jNp&mMdkCf3GL;**S1%b!#lA{*iAXhA_re*z&JxE7? zwZ9dm74ng{?U7B*^&X>swVZm9`uB~xfy7TIbp-Y{$AuAQ3eN=cNLFR<+MFHJ(sYjH zjQuV~k@@aJmSZet3453#Dq>;mk}5Sz(L`5Kx3Nrv7qT^$U2*Q z>67K|!1qTsskfLH=10KBi%#|uZ=Id3o%Y$=i)S~oNJ4my9qcxP>L2dJRC z;H!zAqo?{058l_z{~f164Us8O+6B`>WOtNqz;8@sl9XU}%uuaA$X4;e;?wTG@QAI& zl3Kz4Te9MhREM_~0lLt2dmi#*D;t5Q++hOpf8#JjEYfO68^K5>qDhMJTZN~?^>qPH8@SWYq>^kaW%nCk~ zOZne$6}UJwym{7_J12r3G;lKyyQhMjE0ka7w_^@6X zu7&&qra~_^kjM@hqL&^>uE^{Y1`D$){{M(X$yM=H*<92ri^-2<{@4S{tg2xBifq05 zgwU<+1rn;r^S^ZmUmycSiGL~l!Ok$ei8_dKSwm=w44<*ra{g~Jv;Sk}0fxLHbcH~~ zfCZMUxftOMYapA9A(pg8C(0LFn}6an{`{Q8`Y$qzI|7tmkurT0|HU}*AqF-e(Z-Eo z91xUmy*prPzofFJP$OcJqEM4nQOvm5UT$mPQ)t`fpv3e2!}5pwFB{!t+SK1NG@tcy zee+IiJJFyiGvvN?{^7SgKu*v~m^l#4#cllo<2|Bqq;hliJ;6An|05LgpWqtO{|c^& zunfjJD?ulj0;4e*JbUr?&Nua|faf_>&-efz{_gf5E`;$?$%n{s-5R432^&sWcG4nA<`+_Z}zLd~trTh)$+ih~vlj9Y~-e9kY z7+34QUf)5)4&7eJ%AJSHg)5YFX3Mk6GAz^Q$hePF+Ye4-Q6Y@fR0Fk=J5Gh5wc_}CIA(4bP& zW97(IvFaIc)k6h@i@lM+m9lL+X2;tybd>|ORf7UsKec-NcnELxY7x>Gex0rX4R0ZA zE`i=?JanBY-OuEy*pYMNwmME8ZD$(nZIv1fUWgM|dm~M2NfgYeXUgqy;92OZnkW6p zIzJ__SgsYd@@a5R)XW=d;I$6ABOc7zr%J>7j4y|tV+(xc>HKwSI*YZ%*)gg(EzEF7djN272_Pj@4+wZ?YXX}rX9LF9U@@{`}TVbRAlJ5^{xS5RQ$KIP(b!exkn zK##Xu#O)E$C5C5&r+L$L5(Vr8bMs^^#`aww^>D^c`yp(t{jf7&IV0soBX+b?>q4{> z<^3TpX}9FDf`q)pz)XSlvjOe`Ym9-KOzT_ot@yFN1MwG0P8X3^wXL9S^PyIn{}sm^ z$eztaZ#581-AdDHlcn(&C7kO<@AH2{2_Ija9B`SOUci=|Y=vr-_P3%yv-Mj`z7+4H zQ$LMvZ1tb+yB{{$v!o{=Nb!RvA83vfp!xLS`pC;m2r@KExHVCK)+Obju=G!lsefk6 zbN-)m+K<)<(Ajj<6qsiH+D*8tQDDVR7+axZH2Ys8+PDL$6<#eKE!QHCA%9WNmS7Z! z_>O`H;+gm{Nx>A1{1@~|X)F8+@CO9XdrogC1;)vHM{gk&ADj0Li~|uZP$U5pK*V+w zQNXYNJV*(^_=puJgy(z!UgkGr|3PK?gIQ^$LX~6x6)OI0;M*Sp6k{NaTCs-G*7x22 zRMqTv;a8asj&J@Eq5f|{WNq~S1w^g(XXNoeQQ!Xs-2A@>vkx*b#djGeL}Pv%zt~PY z$jHgG-WGGow4M#ySNRf6O*j59-BEfQ1%q9W=Z1-hekWr-$z$iKfb||{47RrLM4i}Fh*mZ z`tD!x?El87uTA`uOAh}}=%8RXjb`t~`i4v!hisaHNHnl`M8Y?X zB{h>@ZC&8C6YUrs<25!4$f$HE=^_wraEK4w=Pu#BS-ruWTSEN(@2Az_WCt%AJvq`6D-t@``O;$$938QU4``OQ*a&7j+d*h7|3c+1J zfp6~Snj4!@+I-3o)c69a52RaqfacjO=zX*Y8F$ z3?JxEN9#Yls$f!hACGf^B_0@pF8U(uyCBnRgHTikR7vDrrg6hiWa++;_Z$j)!Uh*rphxdrV=}R`@uIFSFFnaAMOcqpYa;Td(bI-bCIA-h z7>Oxfh`TE}2SaDgHU{qMFZQAEma^xiXnXyQEjy-~iI))P+p%FCmzYlY_obHidhgRK#G%>L%S}9l8{2!*i0XUQ9`+B2|ZQHh!O`h1cZCjg-oqb~4 zwr$(CZSOyC)%UCVs=9i*drnQYrsmF_Ip-=_TQ@cd)vEuGqU7LE6N@Q|taq)d_|D#_ zul_!1yr_O$5Om%UVI6diw>&6GuYURPu=q{P?1!8})cIxw-A%+9V*oX!CWN2)z}Q9q z-Qa3`I&uMDE-(r9v53C8k=~8>=zc?P0{6L@)mCe&neAnWdS@rB_&jfC6fO_1J7vk! zJ|~CPX;;hR<^m6Qjk3df0+dp(a^9~p-=);^w3(@6-lw}k`-i(nh#SX_V0jN$*zDPE zO6QK>u^zMCp+}vi(1d9Mzoxfx4HybaN)E#gwy5S{r$?cK38GZAaNY0^ziA31)!}4^TPDHA~L69K* zPw^_Ln%beV;M;=c{88;qLz+3+xQ+EMC4h-p_KtUACpNBfl}h-OWM^oWR0Q37F z`}xew1jCYF-wsqY+M_!Y85iH2Ce1m3*_(z`(1gz?UHS{j_GLTHo0O+)$EvUoI}W1> zbt%cTK++wOXR=VNCb^bqtC}Os2zWjEpn;&nW202e0cibDr+ytjW=<`sw$1IWbDoiRtJ=9s?iG`L9Z59&w|DZXQq(=sj#qdRnN)7-S4O+&mea#^0qzaGZ8 z>OrI$(u+*sG>(qw{7}x(drI(CM?RgX$ERRE%|MH%aAiJiWeSs|BFU6Q0#dku4dt%T zfs*Cp|BP}^VW^TdYx4-5-CNs?#<*ru*TJ=~@(9h{TeD_T(eV}q3^tC!pUhIb zL|DhCQf&=#Ic8v~LK266XF_4pxkmM2LHDVe^D-1ctk?j$vwor@R#FP&QqUr1My*WeS#$PHu2jc!u^4lMITTiVzKHq+?6g#i$@(0pz&?q9-CZR# zh9QL(ikjZB4>-fT)(=+xW+NrQ0WJLtu|`VykaYQ$oD&RU|`YRoyR zaC=(V^vSXmbjgdBiP5)J(|edRXPeNlroOkZru8ifW}QXBb+q(A*<9{97&dX9XfyFq zmlMqfT$}+@X5=^KnLP~~p$kmw-E+#5GcLI}{xCV~qS|j?a$$kBXQ3$nKlhny#6sEdG$$9ZLyXhNTGY8B7CCx?7G%|7)yu zI1iU}gg|UXdn{kxguL(-JvK{Q@$zazmd^<#z1n{>neG9iCX-sRN&BM`cbWR1WoGck z-Ztol>-)mav#thIJV+Qq55KQ{tFJ&ry_kiXabEs}a02C!T>{5$oY;csiY#JmW0jlP zqtVeSC0UmcVmSR2JM21Ke&aF@&JWpbvAcOJoQTHa2-kcPX;xkK81(N1?obaZ#N^@t z@PFclI9qf-neowb6kji-d}d2lGwuwUetdAH4cUs%x9C#Lx9CkO2js#5&_lG~bg{fd z4HzT09+#TC?>Dcz-mkpBrzce4ZkF*kb~GT886gcR1wORauH3mCav~I0FOYU1``q%G zRdre=P||U;;j`X&S}wrz{kUR!kzeq+L*46x++J{Jdzs*PQT6Q~HCX<`!9AqTR6|~K z_RsHM;(rMI7V{V;yH1h1d77ut{p=z6)#~CNF?8<=_&k|JlX*bAtwk2#2=DUW>-Yie zR>D)9&Pk^~qvAWUiEN8hVsqUJ`V84}^_Ttnk#;yN*RNdRNy9cxJ*ga+OTf?Al&_yt zPw_9(*rK1%2mCZs1_>04<~hCNC;I>&W5f>u%;TBUm@A=@ZPd$WNkQQQe&i2|B}x78 z9qd|4o-KU*`Ww|Mk-txazkS}x=tv`@z_v`@wsgI!paE6L|-7v-{3 zCO8Gut`0miw4qWrl%#zWnqz%lUv@-fq{f zZ}rpQJ$#d4-eC;Y&bLwu=J81Pm}u3HRA-~EWmtroZtc&_wrg$!c8KW``LnCaN)IJ| z|N2(3jLF9Isgn7OD=oP)$h~9V$G47YuEwocYc)S#1dmDc6TjFW(Qx3S9bqeci4P>E3DN+NyUbM(8`+J^E%Qw;iq-T2QPrwm7FQ z`|-Ld>~P7@<}&@8`}=BkU*5&Cr$ZnA;4^erQk6XpwZGa8#=q8kuym7OnRMw$*6hW= zR515;AHb!6n_kja(Iy5NMOpF zs-1#4hZ>(3Z5?!BS1;PSaC$_3n=NYv8N{2v+{s%0xcNIc>f-&HhK8PY6jc{6+@ug5 zPQ*J@Su4!PJ0&qcdUtM<1>Y1!SP=fVYyk!dr&<%#fGWvye{6(3(FoB8sLOs>YwnW=Mq>=^x$k<2b>OqaCYpgnTm62D4eQ1af8BSnH~z$Jkabr>X>3m$`Gbw^!u~+-|zo zcXH|#-*~;ESG||skju~vtIr~LpT9#c-s_rYAb+ichJFW=~Z zUAx_1VLLJ8+V2AIkM(>94Ya0a3(^l+5}2SP)a8Y12^kTfLDFgpMm;w&(Pr+aF8r9q;_lTkpBsUnk<-ABT_xA48m7 zu3Z;CgRfcl$5XL+!MUaPSNHWED=S<-?nFjW59QeeXYU7gQ1|6!BDzm0`{bv>1gGP- zC;{V#IlEmtq+e$P`rA(1V;5r=-@({Mk7kN|&nML0)sB}|E3+!Misiz)&x&z&Kg2R9 zK1z#mvj~2By;(lb@0yQgm3kI^rT$dGxbiJ}Ud=KWqV>C29W|%yW~KQG*oNj;f7AJN zx9-w@=Rbb#o1PZ)cCs#%xuP3gF8JtLpzaCucZ6vSY^x$;zPJ3`?A2> ztdW;rCO%9o35649Sw^neriRm zOje9clQ_k+7)3iXoCpOZX}lZU)QF0sNf{hK)})MqWicq1o@J3Bl_#<{B$tzA5i=Dh zN(NrMXoyrf9!RZkLW7mc5G|7|UR2JsAYOz^GA|1}Z5na$Ht|A==~%Bs_Qnq3fs@4& zV{T!7A$j^Wpcs=21MnS~#c|B&oxyf|5WxdO9yS;-jOB_XonnD=#Y$uP?(BD0Grq#g z@xE=Dx3F^dJswoYRgx+KI56a8g8|dnmPpd8|6y-LH~x&saEH*qJpxmkMr6EAiYQrF zky5b-03TZ;73?h9c&YUL4iqfw$f>SIPzF$lv`D(#;5xB>GQk;Qg};cAc0t1l zz~zQ9;@u`2mkcNn-g1h3WFr4t4eRFJLlg%c1oos#fCZT~gc?JOd|)pvNssD~0Spc$9!uqSpL!3C{Rz}a>@!Bz8)pSOAHG7@B- z9=ifOl-MWEaXozz?NdN1jk)AmM|o{K>cz9lxX*XY`#Z`J`YpE>1CMR`HkQV0`8PPi zd;j!K+8WNkrq_2Ar$0a3WHE1|K@tr7neoq!e}1}gCh%jJcpviIX1mTl{4^9W*azeH zF$h4Ex&QNnknS*0*~cLbaq6a*i7;&kFz?fnhRAudTkpd)A>OvbHcb^wL?^72kzqXSzeSnqiazDzHjdQFV?=v=B+`n

    qgiNc?+k&?!Mqu zoY;V9P+B;54q;C1Bd8x{|gaO?Z$u{ap~Rw46(`hWMC#Z7Z(r)+0Vxo zNE}8y(Lczi6O$VgitEvm7%G47fQk5gb3=y6>*4Ve@He#I1EmHV0c>nu;xo;a=}QI$ zUz%n8L$)XevQ^t}MZi7;&np#C-qLnGS)+%*ng%qvz;7rJH zQhQ^aU!@IFKU0VzoHCY=R;oU2v(=%gmS>}yUU4F)1Swu4sn%u75+9ftmrZ6`rFcDj zAazU@OJ%XrIrf6r#hOAm$3iZA_H0OdgJCxZUH~BJ$r37t0IEu8lD()k!y#sjzo0eP zM6h5|#*$Td2GP3SykV8V)(xwlErc7+5Xw0b>$``&GhiTc`l<3dvVGy@4p_0;iMmZ3 z`b|wI$F$zx3gO9>^~sga4p`+YUabcchjDH^W3t7Jr$I}HEa!)Hb>pVW$>SHvv^Wgv z4?0yhI#n56K4V_3#2=rltJl-Pzmcjwg}Cr+t0J4&cEYQWvQAJ8N!Az&{%u(db1%d^ zjnC_5Ud~Pt@a>Za@Ors%crBq`T1C1&inULPwwLE^F3w)HS;R7~@uFP9?{n9ro^Z=Q z=y0v+6I@nDKDmp%dmp6MeEn(=jH2u>`X>;v#l`vaT_-Lt!B>AU+luv1 zN_}#R--5GxVEGLdO0E#?V`Xe(W$a_+Y-8o@W8LjyLz^jSnkmzoDc71Q+X^Oo!@1#v zzGpR_9BYhNhP$~qz1h5Coz+N+h~lU0x^r<40!)d1a5MiTme!-Q4gY$UA>Wu-s7>^| z4gC5R#zOnm>eG|0H)K=i{Q4F))YndvU;}=Q5!I}G{o)RB69V7BQgrBwm$7(P;1U;Z zSg#ON?u}cE2d|G6uTCSr-39`uZRmP)KmNMmy4y-UK0?kS2JzHV+D;Ahn=BJrU`?Fm zAi5lgqtb5Aam$UIJC|9B83HA%^9wCw(Yr(4F5nYRP>%j1g`g+l$J#aY9yoQ_X|7%T zoGW(U*bA#CXcIBq{y_n*Az~l1|92SG6~*=b7^{gV8q^GSp$v~-e$o!0Y5}kGy^Cuo zHHS0SSPR63)(dELTC_5vV*j{x@RZG6OIg`Zmu zcw!QKAV1eDbiP(&K1>mFOwfIBRUD=l?JWUwZLcK4jFHj&KVf_LIU^(1=m-)pC`EY) zy1q936nasOkQxl)v-XL+xyEL$A_e&A)LzL<1j9UwUk%jf1L(%)f_)%C4L`rxB$To< z<^g}OToMO!+WWvA6IXO2ZyKQ2WWHN>u`;MRg>(?JdlQdSi?AMY1DX-Lm-KA{%w=Z? z1OLoZaG?hF{zT1)=~YOCju|p&Spa8t-)+P6GI!*WN=h0Kd4TI5v_FihU>DpK;0twS6g%2Zo)Gw|MbI%@&@^|clPt#t1VxmZvXkW^K-xSf*Pu` z5UY%6=G2EhPtqlfISYEd&DeT8^*6x8be}<31c^^}# zd6v1cc@|_5F8g1V@cv&IU_{62p-52)_&Hs?X09e3xr()7B|D%`r?` zOnG`W#w8ufV!A2*Vmfa*&8LjI3vSa@=dru`-30Pk%rr>f+)QD83*LIk7 zDXkf%g{<);{$zS@2JI)ECZdm4$JM*rWV?XiLZ9260~gsfl{}dp;d64(RPT zYPE-L^}Df!s^upOG*edSomg+oaE2)X3Yyib92SY+_vm*RUd~9^&)N(CC!O<2NTG(8 z=4r}OXX%Vq(`qqHm36#%;=tnNL6_RwL*qy;mp-lfcN~Lw4S2)SY+gY!dYU+PQC}+2@4wj3+U%18dRU-|M6QtogPyixY5d*+TWV&S`@K>az^kk>AH2lTw zOcA!`p=DT*e4s7C8c$$!h2BQT*0hM4=r7V@@sJEVtDh}Hp`CA)FTE3O8dsVLS;lP z9{Sm-3Cl~h8qGDsZiFQZn|_PG6k8Os)vD*1s!L_EGS=~jYbL=Bl7MxVcC8p{R@;IZ z3>e$2pq@N9jTp-|o!Ou3q$Yw#3Fw!@QMy%D9XgBNtu#KZZEsGEpH9(EfO$>S$Bz76LaPt9Ia=h5;HHf#)MyLUWAKFL#4m`;6P0>0yo*NWj8L_~qmeowx$eO< zp@#mZtdefefKv3{h$acc4Nk{i=*{ZYbHjKnH?M`v1Z84W7%v+m-00?dai~(I zKkUFZ%<5c*loCY1%pGDSrxOZ0pwXq>*#SR~2xKsFG{yos*U*SONLoOaeqfikoL9A9 zcO7RT`kjyx&e~RgKM3cFrL#-Xe;b&ytA&?km-|*dc}^qnmd}-)QNy_cf7R>tqR^E} z;m61|5my_hokXS(@WYWP_?_*vT0*T{I;{L7+u z50&b*@^hzFXjQSTv#i)uFwGTQYd=z}%x&7%_M9In*hNe8R(SDG;ji;bJoZ)4zyytH zB9JmTe<|LIl~cV{*GJ?TGwe0!nTv`-RV7zcap9)k>L9ufV(aQMqusiFwxFZ$t03%dqDl4p$-aZ|aAA1YXkbOQi zFIG~)94a&omw75H{li5vQo+3k5kZbLLCcb!3N&yyWdS5BvSk5=3g`)CzvU`d(3PKQ zPiLh%luoPJDpXah(c!iFOO}w9a6%i0YL-;M1Q4f|j8FQRax&3b#c4yF;1;#iqnFr0 zd(|Ry2>_91ywMSUom$V9mG4nYw!=svGv8iIxpT`Iit`3Z5MI=U&y2Kj=TEfn182o6 z5An-pnqWondc#cv27-T^el2^^ShKQYH3-@>ON)8&4KJ&qlfo^|eh0 zkKVPb((wB%+O2R&*m5cDwrqY`CR9HbMO^usuB2|2IWJ$7A&%;?FsF#?RB!|C^p3w) zyuU})Fn{Fvj}i>d$nMNRRsm;tMy1Y}ogQ@6%QjS%OFz0ZSCpqTmCH6Hw_%mb4Ud0O zk3UN`cUQ?7)BfDK4XE7sEP?%>FA3d=mJ{dgdS*FON`~TB)h*nx?=toJAT6|8>(YCVi`u`H3rTCjmA!Wgt&z|m> zbca({ChL~FZ%g;D?Fz-USy|kHjryCB_c>1ZzK5Va%0`&hx#O9KB@28MU^Yl0trtAS zsAE{|icWS9u4reeXKB{!(6ep1JO9yM=3O-YB$K>JG;i9TibQJpX}(Ohk_hh)%&jII zZArG^YUtIo`p~!3rvP1`cb%emL_%maPzW?lMrqFan zk4f$)%Z^0=Z!-v*M#1CUxmAx0xF8n2G?SbgyRu10JO`TuMP|e4&(R<(P>xY6mrz^I zIl5K5pF?hKChc2Ag9>#-=XrwvehwMQE%^O`k9zzf;Uu>j5ZvpY+P}-u5=EOHQ|?jec5#XeFDe{42?){oL=DPy}ba(+by1l@i6E{rjKj* zmXjhqt86^Ou{IYqptkos=I!NI;pOq?EP7(+J_F6tX@kI-y78f#_-gxsx(}d3}#s2;H5s0~c8rICbclp=P5v&u~ zL&ey1w@0HlHzLhb@K56on^&V361QM`nb}&V6NRtc?S`87#l=-)Hr<-k-9=>GJO46& z_Dk$$o!cN9K}9qaw^y3-^+04h{Z;_iSm1UgcgtS;nb2>zed~VfdCU9S-uFQok?&<^ zc{XJGQ!X(`ZCRz%ewEk>co4;-gU&& zy8@;2bi{TRdbd6utzVm>c`RWR&#=uac1Wt^Bt2I3nj8DM_sOqo9NU{zIBs?Qa^mCc zg2pZpSYKr)Y6!faUlML_Jq^yZYpxu0532ip6OG!3w2-Pk3TXh=Y2J(5=q3vF%t-1< z*DJd~`R1-;s82SHZGgE!w1s=Ma&tRpkhB_cWs3$agD7P*z1FRzPVbtbJ7bXBvt7*~ ze_iAAeocI2r&MFHx6V)(6R%v3V%E~{WKH(rg!U3;gGvuxY>*WExqMJB#W*}Us+jD2>S zf}Pi3gzp81#3`X)bkjo3V9_g^nd=B}yH5IpSM_slz(YpA$MT}h67E~~MEuh3x-ooe z!7B;!E3w2X^{Wk_)Df%Zl@fQa`yK0X*5wd{KlMiG*_#~Vn_N=6ibKSmH-aKjZ6@_y z(glS2=niEo@+VnyV73WOUCSobU4{?6x6&Vv?y<)+aa5+ zejJupldh!9ieCZ4X2$B}`fBQ@ov&JMEuif$ZX8b?Z>ERIy!xCE6Q>WZ0uD6%()ym) zbTyH~md2cw`W$YjzFyCnjR$(A-o3Q!u4qofm*i`_j;T}DOXE|=Z(L|3+snK<(7A** zXB!iC!3E|vCs%Rr!!f+VQhIgPah{_?Rdp@MKKlP&+|ftZIaXraKO}ggDqH$bhVX}y z29&qv9{)b9*>Vxpod$w>-4x{#H+^eZV_H64!1s%H7?a#Q>XJjEtu*qrzf(IoX_y3W z%HY@;`E?(9x^1jx%tPkzY^<{R`12Z?$A9?!OL6C@G^|`HLvJ>cSUCjW-q+PS<%SE~ z3H{cjn10%P=6Bz|mFZeOZL#ytoYQaHt+3=tt*5xj_tVwoNOhMeF0_AI5hyiI_MJ2I zRbPl8SW~0}5xgAQDnajP?BBA8?BcY7u)nO~T>ImlU*E#1MG29TGEUJw+5*CD8t1nr zInv4jDa-4oQtipO`2E5SN4Bo`_^lC~?6z_~1KJK22-}bMlkulu2vG>rRX@&Nsy#1K z$S?1@8ufeB&G=}~)_;yy(`lmfgzI{?)WSZIkjEWaYvtGLUN_MM8Pi^U%r9|I&XrKU z%T3v|N9lo3qkPk3!hBH>KWzql>cNSp*mnPB`*TTW4)S(-ENVA3Gk)x^VsgkgRt>JI zXSnVDsUVb;ocWiR2%hOJ74V%nC%Q}Tf4*?Kex-b*e^r#TeI1d*B^MH1wT^JHUi zH%r-qdSYVIlZsPty@iyLUb(>hptzWDnt^6SrrzZ6V9u8AaFO?#DXS`_3N2$oATFI8 z#ePr(2>DXPIY0t^-K6tcx6?~&lnfhjclRw|Hi(}GN2MvkLeD(}d+#hC)_grIA*5Ag zFb`5dD9K0_w0@)B(~Wma;z@eLoL-1Wp>@D3-61Ich0+pvAvQ!XIws4TC6}#`BS_E5 z$jSShtMgju#r8Sd_mGi)D*gz0Ea1hq?L>k)CN&u3BWK}6>k`vr7#sDWV*M<6johkRC#Ne0 zy>%XM+;BP2vO`h*iuO>pdjd}2DIVk*%-ylV68~OJ`q}$xmO?5;M9ZjL!y~v^qSfjdJky~s3nVGY zzcob4m@}p)I)yu_>6PTD2&*4Vi-OoGE$>9)6Ha?i>`I*@fFFHzp zNp>=1PhiSI3mhgMm2831w-*r3YEsOjTATJk_)tECtK3{!0U~z*Z>6* zo{R!VS0=XW&e@gywrsj2RkkWzPTc&T^A=!t(cM$8nP^<&1UNfyG|cP>9Ny87Ea^VH$4`?3CL)El)QBuS;`uQ=Ts+ncWj*fmK%#D-!6aP# zv07?cnzzW^f8nH_Wl*8a9P~aVG1a#~;-Awkob(s6CTkt+Uc4;-HGP7PLP7VbiIxn~ zIFBb9=}42!cx|Y&Gm8nOdsti@_>98cOo*w{kYAA>l{!Kd4=Ynkqc5j2+66O+rl za~BT}eGd~hk9#tQnatvdQaq*7*f=jU*a0$4#TN@P(#;L=shpf)^BCd@)Gu|3Q zqOE8<$7L+JM9n2PSYy|J%l^rH>t5}eb1@mp+l;dCWPLm|Y(!X{tMz-@!unNBtEfs6{Kn6w)so zpoEIiHhG+u|GfelAkf9oEdh6{L>6J~_9`486OTuY#9#jRdd z2fY4Q?F1h4*U6>U4Jj=w%mp&q6YL`mu`G)s#-j6hm3qubl37=sw6@>p)cf8+5U;z=q#*XR-}s_EH;HxY z$!O3Dxk!VLZw@umTo$=3ON#>6?n$2+C<~sZB1GCNSKX zMGG8-Qi}b$he}rQp*8m~%tFk_&vKMy66LzJ3D>v|*^MAp!$lJF91l(Y&q?cC3EH)c zU++d*jk|}4M4IE|4T994U=4blGz5{1Cof4rZqejSW#rCK=kUxTN)7BG?u5*DHq3IP$%p$S`=Q^58K# zQNWld(Ig3(lT`=Zp{b^&!y(q3<=)*TRqZf)eEQsgi>ykSdYGp+LY=_Xod9=c;Bij&Xq7-zy;>$Knz7Jn18VLb+#h!KW`=NG+Qvl1$d z7hkcpPzZOdhmT)ruWqPh1(I|ug`jc=cm;h{&_*UC6o3B4aA6DD7t#*Q@eyeCVMk>!x!<5 zn-ly?-D^G?LD0_ZMCcL2cMm$)K$%36wF!3ux+N>--LftvH=p|t;Gi@8yWP{ zRJ^)-czYHfNEq2>3u-_LJM%g$=NKtE!pwMS!Et2#XgthYR)18lE@DAuH)p3>i;z#KuLMbte4!ws`9HN|;N0(2Y)%_`zSWGYGm`IGY1N4UBY9C#P}^Duwhw=a%18_#Fx{Fd zKG{pl$SkpU@r>H4aM(+=)aB3n+)v@6c+GH9Y#?uEQkY0QRYG^K&(2aXG1V^ns`k;> z!TOC)!H&M|2hGV3nVuA)>g6woaFTWB9P<%}^77mdB$IyzT$qHnN=8r^{*d_4G^`uQ zBkMq7^c5AxNg6*#i8sy{@9VFRZ$!jWM?rOtQyI=AovPwIA^iInXmUw+Y*9C0l8xA} z+Q;i2qYM2AsQv*>p1@Q_&W5l$O8y}1xUYLx{-%wJBey4!@&VF*$HXWZDaD~dQNzfn zd3sE~@26Ks0|I7aWMo!1utA2-YL`f~Yb1nnHIB^lhhP1Q6DE$2;OFf!1)1I-Ri*|? z3JU9Yh|#kHIcOqcSoNyfcDHBf0AbMNNhLtvG^$7#_z`~+S!gV|bp(+m8ATsByc_8c zQ%#m1;cajLf(2P-W|{E-*RBuJ*VCkZt{#eRP$S7ZS|Tg5ZqUN`4;Uy+PV)o8+8sRQ z2{A>O(c#i~3C#T;G9@e#1Vh&hW01QaSXHVZV`Sj>N-G>l&I~G262Z1$$fH4xM=BaP zLlPij2Ck4uE;o{tgf+jYkScB??LE0TQJ=(>W8)FPDi@0T>Ui^PM7YJ7k&AsxHC?2W zAez{~X~01Q&qqQHx1u!oK9P)cdxa!wkuXtTqw+TLK-(@y-pQLJd_?y4ADj=e4~bFE zA76kj%r(XH_f#O`FC6?j9##cck+N+H(WqWns>>l?BIPe$_;%8KKCl1YC+`^g`S2E<3cmVTC_F&Spk_q-D63IDoK*AEwglS-NW}{_*fgi_f91!0pgs7ZEla1_7 z!}w=n@#Dxs&xcKr0fv1YZ8GdPnu?w>+F2zx3@DJ>stkCv4zri1fG9hg@xpmDu$`fd zhB+BM4XZ-t%qC#1ANkK#h%Xd&k5CmUTe*a+=p_GECxFJuV)$U^P_tFz{8v$^Sch_x zd~l|KNX_45sm!@bGfh5r-g7c4mCJ-&L`u5Vo-2%;J{O+_$&)YpK6ne{Np1xGuiZ@H z>q#%)PHuIY@lHO>ZZb|VjBWd=#C}~XhG_LxHl;(eUWDbzRu+BE!#>Q&4|2APg^iE> zVWeIHWtt0)-b*q9!Z6fO#DVbcX3B_m$i0E}bZ12xWPB+W?586>X~SMgi}e71+kTam zHQ^wD=~gYCMsJw5$kaIGV^Dg*g9niSp?-aj+fSmFV{0d7_J4*Zo_>l5H!VGJvQ+<| z@< z1$w2TjmWk1EIA(D?k!EE{=mE{!UfYJ*L2)=Yq6ukFmh~c}doHovfmm1WdD3 zXdR#ha6`o_j%+hh&!F_FBs?KXL@WfOAxkTO1>B8IAd6;dLMg43GpET=pRk9kyJQl1 z5Kkic=SlW~NJ@%oAkVW0JP~J_D%@B$qlnV{f@I3G{xM5lx*gcv13dg&;3Ar>%@pG$ z;G*0lw<`ipz5mFD--=zT!%xkboJGPON?of^tZ?@I+0ghdoXlpEq?CjoS)^J!TxwV@ zH4gRx*WqH5kvj7a8`^a;njHdWL29B60$`zn7_2)_5r-Nt1W`(=EPV$8FJ;#o4joly z=nu{nCw1ZvX@z1FLgctS#aE1inqvQAY%Q{PDyNJrGbKuH5k)|{NUlc*OZZ20m2?0j zu_&?+L(IMiwk22EHccrWf2!D;HhJ(FSwe+69*z$pF}gBkFYT+Bcj2v?QXQX*ERsYa z5K}DLUZ!4?>cf zMqpqTq6)U*^RYS7uXPyb5hynr0C^)q(HI3(Hfk9IxJ0rOzfw|S(gG48!6k8eA@oy0 zkwYk{362u+hwOs>=y&o&;&h2!08c+GYn{s()=9`kvP#ULL}KH*LfMKqGWX6v11%AL z0xcDPkr{{}2ZiYjr~r?xd{zzDl>FuKyelXe5cDB+ z$xtHTHi_uP+%Ow(Z6$O2?PjJ!2N{`U)D~r=BgQQn3#@QTrxtT1bHg`D3M|rSIwcun z2$f~lz03U;=e1)Ul!#%j%BOQ)K?8UWwM4N@+7_+E$OBf74CsE|OrA9duxmEVy z1xEZHL1T4}G|AF{GnXpD8Wk9-F8nawh-H}}R+fQDMibXOapT8`4|PexVgcTY0T_6Y zq(>t@d;Z2EU_moYY#BzJI>k9cj!Ah%9TYC78bPzfJJKQ~G^ZMo@t!VA`n64>jfd^i zjVijQ7`4%vZv44h_`dKM2^wYV*)KY;jRzh;*Y_ovf5#A;4^|!T2L%}oPv}drEE6kN zP|;pleUF<{jUWWh?0eW3f2n`gr8uG=)~?Gi$BpWdE2A8+bY7*H)Gy;ojvmy1+d^gI z7H^?{Gm3^K)Y>P}@>obcV8jHb z5CR`wB#;iPUB{pc+q4f*l+rpQ!NF$|k!#cxm2M&;D$g<={-!LU#%4stxMde1nL677 zawzus4!=6v5_OmVec|_(!Afb|qcr?hwD03^3%Q zN=L6Z#rCO}%pQ&SH)2!_&16c0?h0otD^#`?@7^>{2r=D=Ds+e;omOx(-yN$qMaF6a zXn%Dq!NEQ#<0_o2_*hO>e1@G+clJkPLB)k4_3;-S^)?>svUZ&Q_4nwp)u!EKCb^Rg z&R`_7_-!I`Wvq3?TA$pMCr}vi{`!=s7==XPwv%r!Sh;Gd|1KoHCI}7iN@7gEz_CqY$n)HU*KI(XyrB84}YLCx_|; z8go^wa7$J4l}l-gl?r7G*V3dG*%FtGl}ojXlze3hBT{I}RRRQl(JU6GM_2&f)arS9 zWSzL5n?z)V%K(ht;BvKD{<_Ax=8r)-(*nfH_3{Ht_4ceM-ws(ii%JK~Du-;QN(b0C zE;jUmwhz$KmMdT3DsR{*Qo$V=K)1c1sIviy>r76xJIFNB@r-#Sv$CB{R!+3+faqOb zmz&>s_=?jjwAP9MRC{m{e!T`-opFS)oQ&cIOr$6^WUYmo4;v*z8tQNK<~}1u6-}ll zD#Ak9baBi1kTegP#!D5ekrey0t}LQpLgLp+CzHV;fo%74300uC zpggepYfXKdaqWjh=`+kJ!~WJZo+lT7<=;;JL*pcS?QYx87i9nL_@6hZ;vipkJU#LP z;5W}KKfb=0{eS=Ew$FC=IWx@pchjQA@nm~WXex9NTMy#L1G!`F1o9{S@I12SXgkeF)yYB3OihNz9BeZH5-4W<3W|0bj$Pj_bji1DBY5VZ00;$nJVK z!~)*Eu`TDqKWZ<9ksP0ck@g6#&c#SN{1H={r!YwwQW-^cIP_y$jJi;6OJ8XQ7Vp`^ ztdGx;mZv$1>@w_yH~6*#T3o-__L^Q^k=&=UMK{>(0UP|=fi3O?+=APjv3S{p zDTE??Y_V`zgsI{~Q?ZkzfMd!dAn;!Kex%3qn2*J3i$4}FEju$CaFHn?y9V|!UP1z0}f|$4#z6U*W&vga4 zZ=Y%Mf7P|n@A+VGVfco%VSK|j|ATG)2iyLJ85(@Um>RxeSeoCkDEe<0#eXp6Zy3Zo zs9FNVG3b$ZZ>RsOUW#sy52FVr(>ClE#Kg0(1IWGatQYk7v(YX2$5kXbCbga$^7y;a zV4>PTA|~@c%yNcC;;OEo*ES93S`5celA~jze)5Uq!6E6C=}1}3bmV58J`C5|N0g)M zy;ISO8q9SD!!Cxb)*$#Jqj%9a-(wWDnMmDarr(&h$u%H47kYWe4?2Axx)+^cKJ6>+ zz${(|X{(Q%Cmy$VgV49yDdis5tk$mp2YPoy{W)hN^Gd+K(vf?ofp^oVk2UFrtC-mmnD(iB=aL~es9Jt?hGourjq!%x>p zZ`i46rQheIcc#^k`n{4SnCf&>ZxtgQL;s!vIfjD3C0c#FQ;<{5|u9;ooa8 zw}5iwJlYj>X)xOQUslY00`f&(@ghw;`A7FrNyFIywZ&u+FXdQzFuCSZpT-;S-mUb* zv0^=$hQTn4F|$qNbTOG}I@yZxySAv`$ER<#fcJu&oW=&}w^(R4`DgKbuH~o)`5+G9 zY#{%ex`f*S&a=*^)p&IrkV|VqPPZxcfDRBbTJhpo|j?aR^a@rr;MwYh-EGwB1|j&n)el0@xz!M&e9vi~rOUk4bG4O(=Fn-JrOUq66}$Z7 z?({GfT~RV=J*oDLFttQ%5$5E?6sBEYE&sdYYcF;DD;N-KeE0vs)_IGnvQe-Im-S`AzMZ+oZv3Nk4R?*JptJPd4y87`=J=4Pdf*=C1D|8QvE$KX z#RtDCP`*dA6{TYzt7@#P<_~MEYg}`jtL}D0R*qG>PCHlGcbrv@)yz+{PJN6&w)1oN zYE(b+4mrpl@`?t>;Fs=TvdazdES7H02!qfWGC7Wp*Iaq~YMHY6n&q{#b zy1&|j)NK8!ta8fwlZ#D@4KPK3C}O-avA@by_|sHl{9liH1j}jiXpExN+-N&E6)Fno z*d&a9MA{gPfz$X$&8oC2*W>E68elT1bo~l^LtjU7i&}j=S6Ijsmgz~mO};m4b_8IW z!hzEOIDH4F32^EJrx9Svj$%1(SaQ&bu4)>8Vd`7w`#oQ=pKr&#w=w?AmZ?%ic4QP8Lxc2qQuG(0_{#ZyQ{hHsJEotrVn(f9~?wak- zHODpEzO~skTg+P9S{8O66VgLC!Kp0;M0pABHfq(T9oq}rcb!$4R=SbKO2_07YX^X$ zIS6oWI01ZrHNa~Eks$;iNb@70XRC4}DOK`krKc{iNR6isu}Jl&?yyL8rQ%tnu&L!N zQjMwEEK)V8%`8%-soz+7$ojiRs$$L(DP3i-0=|2=;d&DK{%Y$^5hYS>)88 zpo{>>+*|;e+-E?>GYQC2`~aC4D6<4)ET@2?qX}?63;=i!Wq{8EBI5&qAodAB{}hns zjNOqU^uD@N*`MQ{W1Frlsq~5DpEuR{q~&f~(jxY53pinuBBvkBbe;t$1>7Sk+bheF zbNq6$$h`-5ddMEjVoQiRU(Q|ZWLwfPVSN^m9rytN_o}CfOXa6I4RQNM>yH-Sl!ST{k=~drKD-(0_{tKM+iDq0|wC=XF)v~WL zbtTTI5ih(Mww|`MH4QhcS!&=2F$ucJIa=CuJ8^YhOZe(0{-i*!4Y8tk z*)4CyGnf2D@KsIrN!f!lrAgVNGk&_g-W&3|;R<2u=1#q{H!@6v!Z;SkXFQV_y*6Zu zVza09;kSaqIJw4VY}vxgtbz_XtSX!O*{zD2P7@)cGeljK_XcGVUQv1MhSsmtsaRbG z!-S39MD3C}iFu)gw$hY{#9w)g8^EQF$s@K$3{LeK+A3LUh|2K5KGEl$n!2*pZRqO|3g!zXl6!UXGH3-hkbEgNY-3yW1Ev} zPG}+jTBqg&>lYiEh5W{+5lM)j*Eg<`!X>|C9xZErZR>;uC?0Z|0%oMmcMLDy@;B*&Ai9@P*!e0y|b-Td-L2O2X&hp zNSgd3fhyWHxe-Y*PCx?cHvf&QbWc2+GI>_^LHF7(r+Wp;I6xDS2xzp}6JszO8=`b4 z_%G=^D;0BE_X;*I9I{hKjm{V_?~Miu%MIA{M|EmDi-Ke?NY;bocy|;$H!^C*U}lTu zq41*)<<6*17Q(qhcI8Mnki7Gc{0flyxu=QzTGv32|Awglkw;Vdm-$`Lz5GjSAzl^- zXq*!PO*DHVKZ#@Gn*UMvm;5jDHFMDm@#G7KoXTgTGo~|JDlh#BiMF73`gvQk%G{HPUe|=xJ%nKU&UTj9$nmbO3H_`e_n^L;-3<01d5f!Tcq&9_r3QZ3ec1hv&r? zDHp5?Qs})@&SmUUJd!qRr&a*oY70jmUG(}*xr(8_qoFOpsIW^BLWtoOy5vM_7mjQW zfR33sFzxN&&Y3SiMt)&m`4uBqbOOY1@XW<96w!qvRW9%>#7Gpyha(?zecVMRh|{y3 zSEe!%+G1Z^pj^0(>!qeF@^}o$vKC{`n+IuVw=yOJgM0VVHpKS7xXua}2{w+JSa*$E ztyI5ufh8v!hjOg6#x0F=c}q9&syrV`PdL^WZ!Fx{5@6$Ci;V(32SD^C6!3PYq>tqlLUMIL~IcP}j&M&#XP3IMQbDXv43Td1ZVCxPz*n(~=tSq`N zcn@@S?3|uyNMU7h9Xo9|ggzX`rbaypKxZYav=wp)6&=PKg(v>xhx`&*a7MpNNJJDe z3KcbTm;V+i_bt>1q0fTIfT*U)Wc+uu3A ztreV>ka$?AB~;Y<>?AyKhnsIsWFgAy1xShrUH+L6AD;MFn4|TY(=(dQBpZ>7Z03$k znLE%$j#ef!t^e+57#~x}QtwI62Wc1+ID~$?J_)eR;MdZV4Dwn0esPP-%>UZzJL`>0 z<))Hh9HTX;mPEb*{H!jE&!W68i}zxkE{pGCkZ!8iqEL~3eW0wln_W{n`cc)4>Bv)S z6M}_S8HzqBdkC+id&hTi;>qV^iz+HwcvZNyulE%n6JPJk_~Lp6&c#tXyTl!D=_=jh z`ZvS6w4dK76~)?h^A_E-yRB~ST19(YTAw&z2>&z|_y)~URq`BdQT0_H{&sBW4!mh> zNC*CGZ0I(;WGpZZZE1H~*xbtQHq3m~uA9PK(XRWFdA(itdGipvZm9XbUH3V27CWXl zS5JZqhH5YRhC-wxk~~U>YBPO6`1T+C$36q04alBK^qQ2o*9@)0?GAkY!9ft({e#0G zd;-FN0TAl08d!&03u#Q=?0kz)~5S_VmVN(RSk--{S&_j#rdFEV4(ty zQR#eL)+4wO?xvemYJ7fiL;#LS(Yn;&yG}>Xw@X*@)Fc(IJsJu(3gRHY z8_fp3B)M|*U8kgH+tL+QRer^5+g~RuRg?Jpta}YL9yWNJ;G60kgDj$RbF*Iu{#hS- zm!a(0xb)t7eti^#`AhG)=L81c!8dbtvS0hO1nCA@2!^G3_dNn$U6-$zTV@Aki?=Mj zf3g|uW3muGT%}r;rtYbDZS+B@L6AjM=!wF$(R-fSK^C(i@c^{VJl6@cNm{y0YQigA z-0rt3Y)V8_TV_8$S}q@R09;j|YgG|&jiN!9N3Y&lP`!`LLVm@aAa=6DUr@R_0!lMM zY4bm61t`@5q|`7OxTwSHY^E-@y;KWhxZ&sG40NrRfvP#zV46{piJp3SVtHEV$ayRN zzi82Nt*Jq6xZCIAB=nM(0h4*vVA`;5y`FmC`B9<2E0@aUryjjQS9>L-qBpz@*vz8_ z)1r&$iUi|yS@hK7llYQCQ#cg4|MFb(xjYq9BK-G4%+Aj&dq4-`}U7k1?dO>=;j0zgp{`?%%H@wKvsVH(#24)`P zW%B}U_L*tTdqj+C8)wZ?&(8M1-JBnQ>>w;HQd)?qQu7fNn(!$Gp%w`F{y|j`+Wmvl zAe<^zf;iiIj_5D?t|d>QBmHL0`B61h%0B7_aOV+yhdLHrzfQ$zGZ3c!gSH^N^AEy7 z7+$O-Y)(Q;Ys1BTME!%GYtO96B!zM+H+L7!cBXD5dnp5VmQzyF{(KPoRd?Ty9=N_E zu)g6?{3s|T>hnd;Su z8JoE?|6sjfJ!=-QR)-7GThWBbTfj~CyX~jr4?WDVWzyw<{Gb zHN<%)?mVEMPTKJw?xD;*ntOa<_o17x+``v$2C0u3{*x1RN`5$#m?`oOy0CceTB^#E zkVaG9ZKJ2d`ezqzwy@XST!Ai(p3Bv5r7P@C9KRgQzpeIEUcXgnzLGsaTg9`JpZ!V7 zW6qm3>;d{K@(a@Ei2AKuuDHb4gn|P003Dv|3!dlWQy;5qzj_J%8MA#)^k>pGhiEkS zuM+)MreE&*0*DL zNX$gi|A~(xw{0S5Fzy8M5aJAXYGI*ggr{yKw7-dykZmC^;=4CnU{;20o1~nKoQ)Q; z$KulI2BCDlWs_u|VGj@oIVd94hNVB(7WX0&d5Vgo`dKc(v4sq@#l_+MsDv#1FK&Gd zOh7hDBqJLo%aLK?HRsLDog@m%Ta9ow;x*h`D7-ICBx=Ww(z&YD1UD{Tb8)L4&rcJX zyQ5F(T+?cZQx*^4-b%&iQeh06ZsU|C1K77r7OSX!mbBi%HHrsZ+^WK>(?sU%m{1a` zTW{mS#IaZA)KOtfM>30=RHRpdjmS;wpOSMC84)zC_DwdpL&zrQme67*ZL3W<7P)B| zt%q~Aj<&)bN@B(4YQ(WJb2SjG$XtyCR${J3QuzFqat0gYQ4T(V<_x)GPZe!;{1GW^ z5p9nHUSTiKC7{w7kEZcmG-ruBk0@c~XK6@bOD&PPE);=lD=fp5@rYsZkmk&B@sRfH z{SG}9DQ`!D65)KTLrK;?7NvxhoP9zf(2;gHn1z<;oUkO~@?0qj#UMckURnbOCqk3y~LGqsPU8bz+T8fCqtCuNAZBT|iv zzo5=Yxj?3b{>7a?v?EpTs7H$TC|9jcD0408DE1}dkS8b+ZE8HU;D$TRz>DjQUbei{ z3PmZ@d{$xY|-%t|ToOp!-!>_DfMvo}6t=}QnlbK%VJfaSS$Ri!_QkNR9(|hS} zQ)FAUB9|@*UrJw~|7}Huj5Ip`!kK}RQQTGg#^N;cCf=EfQF56w%D#zWMHUsVy^NyO zzL@bGxrEZwX2Nq6JjY+vevbcze3NmF!qI}nIPeSq8kuMIhLVV?rCKp`=NhQ3rSsCe zOaHn20fn8V5@nU7JyI#7l)?{UN31gnBqvb zfgt=Y5>uf|5oJ1$%(GF@W?#I1sX9{l#fLMNf^Iy4>IAbBh9v19M`$A|&L{>566V^7 znltJGVc=c`@$y!R72ynFsuKfu{sAUDjPj&#rytpXLQw9R;;~dGo{Izu;`5zNB+2TS zO`H7T>{?)9u0Vz!IB5W?Df=lGz5x=64zA$Q9S= zj>u)}?o@RbP;CNG%e#=d%(8VcoUF}cFVfPgfo z_$I0Vt4R?YJv@|W>jr9;?&t;HpC0&fg)j=t9e2jLX{!%Z7#;T-ic0i43TcIEW89L2 zANb&E;FG=-SR?lu+A|+i8|#)Y{NM?$#%hwE0&C(PKy&s4)yA;J4?pn01;8hBk%afP zEfm423mMweuK`0KWu1upFvacu+zp{h255^LkWNgbJvkLKNKgG9jQ4$IbUD9E+=Xs)eOs{>yo zLeCw`dSqjDz>h@SamO+ojawa1;;@CaY*eH>sHk&W^zZ|FBn(~4MooHwkLKSBC|egr z!YXUisYrgPDCR8#_`xHbu+`)y1t|-!MS1iKa_We~7T20mk)GnC*|s*z*AFQX7VZd& zqeJ+C1P)tM3!^!shn$My@+~HXsYyDhD84P>vUPbR+14FFbu=siPp3d?gZFQhN`FD7?-S`_{@GN>_Ie)qbhR2u@cF1wIwb+)-)l4rQ$iM73-8K;U$u zausl1=CA7+co!)TD@a^>mQ@9_zMFONb)K}lRd^Q-j}S;4<=at!ygycOo#)lvV!Vs7 z#~n!Ajkk&b={{C;o#)Nn3cQPhN2wJZwY;w-Z%WU43f{%b<1Zxc)7ua#@W z$-Aibt)6B$-7opNGG;ojv8wAlg?H2OE{Ps(kT|*QTuWZ&p-NMCs8L-ssvX)(2PhTz zf$l~g+;WFn)VZSC&3g6WbZ(0Lz;TQ{0FJ}1?h&f}VXqjVRLlXC6Az5sq4(;%QSC2! z*MXcls&KkErJ!>#dV(6w?OeH z@>smfkq0HJ{irt=jkI^xI+``b|G=*?;Oo|nSVWSa)+kX z(E|I~Cj%4;Y(QVe^>d!SuOBb#2g#u|Sb~I6n$)j>iK$K)MN~9Kzz+no$mn&|EQ+%A z7AUpF}W``Tq!*7vpNjAP;7T)E$0XZdgg(!#uZ2^A$Qb`x^SpT$tN9^eXjUyF@v zdVwbiiRnO2DSP7K+|T|1OUfl+X^?fkY@IfXy=*-Jdevf5sV513U<#G6n1ppy-f|~X z4PV|TA3i*o=QjCzO7Qe((|C2CV7P<2V)*L+`_BPTw|4TLUJ?0!T+u;)nq__fQkBANU{y65O5HA)dL`;gwl~G?!II4$3++ z6ubDJD|W>&>VKU%r{5K+nDVMgF6GTJACF=XCy(ZCJv4dg12lVS%>~}u>k`~M-XWfo z)8Um9fHYTbL=Gww&J{oOXDEJzVbEWkVboualusFIQcM{;=H{sn;^%4Gt%4>mH$bzO zr(NLve_ew68#~1Fr#rmzH<9MBFytVNz)+0bI9D8lVbZ6aWzeUOQcmG$mQUe65#mt{ zzR07w*9J{qsfK2+oVvgVXI+8^4?Dz*TROaog^}h4hsZ$#*ty~t8w|xSqtEGIon_L$ zMuetVG%KfApRn`P2MhDG?G;0l|6rimf4W@Y!$cR|&Glc;pOY~Fe;~m#sIGnv;I&vppLo)D0K6v{bROVOrGOwoMu5+c1A;n0{voIb^JuXF zyaAZ!BFKw_`pcjm%;Ovj=-oiR8z>SA=82*Og3`b|HDJ&-SX>cIMhWmHPXYcls9yv1 z*Fils$j1PD0H`kmc|L&8Wd-tk;sEL`NO6M{SdtL?Bf3Av5P@ZRP0nL_O@W{n1HLyv zj8;onj2=TF#z2xW=8hCG<~!5O(m1-DrF(P=eY^D)TDHaJ5;%X`<<_KCcej~ZR?2Z0RASc;s=B-B`f6#~wRQ=Hd*2&|``wFpYWQyR>5q40n%8Os+Slr2 zUa@ctzgPr`$@nCa&6sp%lSOmll*N1!0F~H_f~xKjTwkr6y4J2BaPJ4%aK8u1PYvG- zKmGBZT(Stg&n8wvQZ_arLX9nm!daCk>{*{ru+Z@RVrbGn+2#6Lm&?sZ9u&T+~ULA>YQnweIyOTrE>i+V;sdZI8=zYCBUg#waVK#~ng)&YqZAh`odrU1z} zm<5zH0Fq`<@)wXi1SF}TWCoBdgIU4=Ni!gs0wo)OHD*f^1UjdJd5Z*Im8}Ot8o)EyZ@(TzSVOx|>>jv0Y2|KDNfGzu77%6iV zA>v?!SvqoZqRGszq0P+3^2jJU^UEkA7#w^stPVaTi!URQv)gTL4U{xI;WV$c#=;yz0iRa(`)A;oE9|BG0P=MmM>703s(<)#z;z|ytff4ZR_TNTe z5a=?e0_ZcRu!1u61R`LWu}$6y2+ZkilC4gB~Z(Zk}o-wW3M@slSRJ35wc(4UyE!hj^?D-PudAPHFl2)+c2;fK9(aq||$ zeq6~(0xZ<47_L>HB<+<4eOi8NvKr_lJI5XXmS{ zV!P+3AYZ5eAPImYb_aV}oA!FEEw?WXjMeeJ6?4}fM)i&30LBtzo(Z>pZ6dwB`hnB( z`0TuOv-Ypu{@Rg!UB-N2yxlm*jwadRj~tMCND`ZIS=A!8UuX5$g+K{Y)jT}o4n?< z<>nO*L1?m&+>P?eT}%^%Z+BVBt@Ccxm~F#3BgD>B`0|Y0`ePBO*iy#Hy7{i*O}Kaj z>zVI}x>Z*m6D%gQbYXIL?wZ90Tqi>7>`HU4k#~Dijpg6HcgW5k3hG>AvF8Z|6J;3g z$12a9O0V00oX;6ivzn%2E*)Bh2S@OpDH!GY1jIZY{u2yor)BFa7%Jm9G&*{#pvLvv zi5B+!W*6~rOBI%*ReISGI%hwkI=V_lu{^K@uYEpBp3YFU+PL=zmMK$8!_s`0X+!e=c z5&`8Gzga}9&fanFuX-L($!2gGZjn-d+BKqN#qBna z$sYSaYeC96J>aZU-byZY8`Y3Q5n2diw=P??AnE4!=Nzm{How|#F_t{N?qnWAWSHHUM_ z0&iPn)vW3*QbHGowW=B+L!VlI_iBF7^^}skCHXM9xt?bC1MaZ801Y)U??@4^ef5Wm1u; zs)vSIg5GY)&O>g@s$`xgGge!S+zATbu9=4z&T3=|k?E?3Mx=x8?gY$3%xBdyrO2$+ z7NdSa!0YQgDdT3NIh<8tT9^yKynt6-NAXC`lE0a%>ceq;BvOKhkEkM_X z^gDzSZ7y(q+34liC75Nw`!~9`HpP3YJP$n=kA=mJt3286)1Ksu_k8qZ^SFBAEN=YS zlg(Z4gdpD2=*i~kegYFWZt+aN|Lg=S-h=T>_b53*h#UXsnO=5Ju+J(ZLKYn;h_}j! zZGlXvsFg4Y&m1tgta+0CJQnvVy|a7yioo) z!51Y}Q??^mZk3U(!?gviDq@Z@wE9oyb27(%37nm+AA%pxw074}s1Wya*5}&!SXs0l zb=L~7Q=9ziXb~>Q)&;@OXWA@kT&NI7Ip5&ggH{%$MC(}%>3mG)I6=Y9*{~4&nvJ!) z=3cpYo3kF*!N-asDTI~PlumW>E8-~p5nCe!e{5s3s5w$DzVEEVbp)-rOl@n4Iyzr* zncem_*YQ^QWno);)bT+1WocUju9J`Dm(^`;P$w_SFB{sLa-BXbzieacj5;+dzwADt z&2~i{qEs8i$b~$%Kmy7hV>~h5f97TFjcDZaqs$;zP zyR?!GwKf|5((XZ_J`!4XxnshDg;K;qujmtskNUsj2sQ1{>-d;_#QR)(iAwq3Fxx9+aQ9T? zd8)^?E5QLs}7y-7KV2% ze(8L%cquPfNSA0<`9n3;!z&wekYthaXnAg*b4lPtuyZJm>;qT>;(5GBnlT%+;x6VmGUNzhv`NM7k|Lvby_DeJa zeQRFE;N^dgF_)jUSZE5k>gtJwq10~POiX^dv1)EfWJvDZ;0sB9%Eom(TVG6bDt{sT zXUOqZzxn%!@e2C;^B2WyG5jMmwOh9@{2-(jN1sSuFr2&NqjL91G1+0uLorY4j84z! z@pC>i?&#;2j|y8e?CO}zUn zHgt@;2vn*t^5Mu*Tn9&Y!pKDJd4V_1T9tH}&*nZthSF1vLXo!Lqu?xROqBOT4&^S? zj>UF9t(5+4;~R6&V$6XMPn&Fbx8g|yZSwIa`~I4-*sq#= zjk=Gfs_Jd70CzA@ziNHuBTnAj*SGk^C+5rfu=ZvErQgkwP=R7a^qu4> z6E_vQh9vXpaN}olN~%6BDf8TOK-qCQOzg~+vcF0{O$&0w>t}-kX_}KPrrpk3+Wl)s z4g>;Z=k8=pIf=49dHtb5IXT{b&ORU_UoIk+K!g7K{AQpX#k=pHiQmRA(p;1GBg<(} z&HsKW2-V7SQ7QALuQeBmrt3_)qwd9=U!c)U(@)D-u9#EW>8dr(wd7@E%WHQpPxtDo1~~7+8GlR z*qhc((qzixd=MIWuzi;z_kJCxzJPA&lD9wy{T^)MN z)7>6+eW1EWR`$qbu)bpFM|;@K-s--W{Ex3u{>_#%kKKHq<(Okb|I<*n#h3had36PpW5Mk?{fMe_BGH1T zaHIoSr-WkKt*PgP8AZ3wbR0cvR)*VXl6iciggTNpArXxZFqB(Jqzvhqzp8Qc(i}aJz-1|R_Zgr5BK?$RJ;M~b;vp@e~ z?ng(H?!)mPWfe&zOEd2dOt4Hb2@YTVDEoTt4OtixHIdmHGL#>0ByzAAD6(BzJd_x9 zEKo&ahC@EpyyzIrPcpi8z!d~Jsxy=Lim_l-Mkqn5CT#k)7yECNaGyec5j8HNyfHQ9 zKj!;&N-m!I{31kYLB3Ad2nTG^q7~en-8yA;OZZN+n<`J9oBjEQvF;N>$Uzn-#`{8s zonwvE4?@0;A6mdyKe4TzcANd_!u&jX?38A7<6u8XaNnk2=tWeVfELLJ4yg@LaUxrx zgYOf>6DqKLs8{R!zV2J&1s1QOUJJC5?BI5_0ct;gu9=nnz}y9jXhJk6m4yl4_{}8n zn6Ho319VFyPT#B!9VizLWkgl1j~yr%TcD!W)~5~{3x-fpIS%{8Ds+ZBLCGcr!4Ijz zH+EZ%6Vi+v5B>(B_QMK>GNTe4^oY6W3mycy797zLt>8hBXsIL4qTwC{)s{x0COX)I zaJA(Nu??N!K~Mxh6#BCVLAs@hNJNi#5HtZmjo$Mhh_-ZU+57}0t^70=si!^rIrrjYxD&# z7!&}OXaz5r7xRH>aUlC{TwTOCEUsMd_ltFo!~PZIMOT3MSd&9(928iA0U~iaGi!o6Wo#73W zY3U|5UC)j^CiR)?K%T~Y(%jg z`Lbg}Iw=v-3ytnJSo*X2M1s}=64o}o`CSIVc4XN~>{}-tBC+3yj=#2%SnlH%1A(p5 zC#RafPLNpZfhbL|Kn4zYz=N zqNzxqA0bpsc^?CRhI)J-sJZ$DmR-uGF=r}#*mYfo62TaL_q!#-)j3m9S+IxH))9>= zGb$2%X9%qMDpPOgf)2xx<&W+nFz1i%d*RK6G-qYM-M884L6fAh|4$wZEdTs={~-_n zq$Cl?S>o-D=aQSIYZ+;w`Q;~xAY9Hhki35Lq`y`cFDq)1nhf8&*tIU}~ z-f(@}r$nedxhrStn1O@|wpA(s-2moYsVyK&bF%*N`xDLCpB48}<20iIkmw$kxw_JS zrMfb&)CpkvoW{QIm(UQK(ol*)M2Q;+wTQct<8d5&rFEJ0K}7L?#I^DCe?&-7YeoSq zx2-aBx1NUhXWgCnjtnGwU-{t0ZW};sxp%zlzq(?YAj`iPDFcK?PO2;iFq{p~cZ;by z-=527byn&iAJyLNYved8?a1s6B4yxUf|v(#3;)d9-7*?7kg4Jw+tni=ll}5z z*>*6KN6O|LtPWlKm!}_CM@{;t5awXHmF#qoqb2{@bI+6`#gcZ8>?(^e|%%He6jB0NjNEwe+XxU(Bza;Qz&J zhZ_Nvy@`uYHKgIOCwYy`Ro9{lg}Jc2m}7NdgCGk1{KEF2I4bXScHvz`1eOtr%|m zk%r_=TAa#w3!D=tnQQt2pqZJHy@AL^G>P;Jy(xh8VrQ~E%YajM$=M%Y2M10wNpa=n zx8*zh3U)V|uJ&7_2t|X8_^R+Xm1nG}tIq!2@-~ZyUOlVbf5Vr`&nQ#J%ru)}?~gg2E0V-)4miATKM$W-4D50j2h9?KT}b# zGjvqw&l>G29yD6L7d}?0MVV@CaZz}i6KFgnNh8jB+3RygGCPbR^^HZQz~<%;Fz$W`(qg z=9}^Ty2aQLuH}=2{Ac=6Ws>ek4-}^K9mA^;WL2+>m(51;{d&dSBUZ~N(7Xiw(XtBn zqezA9JC2TuO(#?e$#)z@J1!OtTCQe821hRznp>{g@nU#V@9I0+bG4jsD2TC#N82wK2i$NQa&9!&tj2Jqsv>5UIvNY*zM`kg?pqVm zzA+d3*X-Cw(erU8HtWQ1>bganhxI%MKCrphy7B(RE=rlNZnrroe)EP~pi`K6copVi zYLmgNV#i^jTzz?qcR~?HIQ8wVS(M zE)n)jzp#dW5g-)!IFp_{^uIOIU%-C0|AHOCo$6AakhTU(_}2Me=nemc{f7!-V*82g z2%*%Q&gnfY&rfI-7^5_OI-PahiY(Im0OG2G7-T<-9eD6z(k;!i%h+L6LX;%N$BBC4<1aokJRrWezc=#{ z?FpuN+vIBAf75NjqQ8$N=|oyV>}3Dl_EF>Dxs4|qk4a$zSw|zgfpNuo>ECoqoS+Mv zMZl3>T#7d!3T6L1)DtCX@jb&hX*g}td+FM@-ESq_9?W_?(j7?so^(Dn$)HU`S$mZW z+%A+TiJgzL?1`0s;)rmu+{<#C^rLHD#_v`YB~7TlVustR*4|*sY%`3(keWPe6I`(ZPwYg4pH#C1V%gOTaT50(c+&Grdn6=!PWr z_8ZvgL38lWon+i5$~nY$%X7hEQy~4HqxyditG0;Fm|(`JHct)Mi$2|&pE(SEEbrwN z%MMdjUYHct94^Zp0deIP!ry5c>4x5xkI)+k{9EIn)&uM8kpy5}Ixuc-;WTUp4<;#W_T`TsNa?1>MjbrQpt6%Z9paF0^ACte~2Ly2Vz1)5b@H+Ov z8bY@`R|mMeX&PvUl9n2d5~=?fb4_u))dux(@nBxQ&sT#m;4-EGE|wvkWwO^;Vjy5v zI?(7IsMT1Y_6#E}8T}clruja##p-i`n&t=TeBOIZmGZLwk|`=*O!5OHJ-$s)t?wN- z3?;^aCeY)B^Z>wDq^L}QCM{il4z%w2ld&6nNpH_Ou^j0rz-$@@8?^xg7UTE#R!fIm$| z8#IgFMDF*c{f()+BhgGF!^_iRqO4sROCZ#MuWQ0gBhN{Hg_ z4uQ(_F_+|%4fe_e@f{BkVsWQgJ#*0%FZQUixA2~ zc76!jo))Ih6tF1FUxkHBpm`T2=oJ%v5;=W!Q)?iW2-H|hq$UAo`f*zUD98)D<`shg z1a6)GjQpnc02LV!*!-+2pe6nB_SS~M+{Y$nozfOp#&6#N7P1W35j0xT#fWGC~3d|zY}ksbs;0Odu;*K6Q~gJaF9trNj>B{CQD;y742m^8Z~ zDznmD?V&ZxuSPc66wMn5nZ5kh^suXN?eKZp(e?^_4`bW6K%xmIMsGXFop1uRqLO}x z9o6D3xH_b_{j`N<}Ro89*@Q()1S2TNT<@0BOBi`Nkw zrUv6{GWo~;2)bscuxHyx@`L+fHUj+!ZnZmYH5tdj2&HBx&qa0^y(7XC)l+&J1o*85 zw|55s1H4lb8LSzwza8z2tX>CJ~!C?tn7gBx*A!{fK2{?+~N6)K5%Zxp0JW2afX2 zioy|Q^zm8m3j7EY0)$Ef&&k5{CK8fOk~XK)ma#0k+=RyN$Y!iyE+3&$cw2qo&vsOT z@ud^>L5ZEHF5rM$2E2EoW}?fn{J9W97;q+F>2qZWU4KhYA_gUPqs9Tr>45icR3kf9 zI9H7jCj9G^dS&kzV?fn}IG?LUIP7`)5pfO#__HPi4+#1IKm!8abi@VF3Z^5NK?^j3 z5CDPj_O*dOyF?_A{MsM@aO?<1N5bw6H%v4i;AaEcK+u7JciR*656I=i5=`8wBgQAKI@4~Yv5@b7fi z17yFtx{ejWwaD(D=*!LVKMX}lYHA^v{CCH}WV+_~QSkbpIli|HI4g$-%65r+?D;X( zuE8F_-bw|tJiSP(8)BV(@YE=EfLWe1K)I>9WjyXA#9YzlmB9aO8y>_8jNiXXbt2Z6Gyz|NS0 z^|RT@7l3WA5kzcyu8bT6~ zj8T6;VxwhVosuna&ajLB_?l(uH>ZdH!cvLHz{e8SzLCx@Y>kI}Cm#KadegI14baQd zsJZ|kTlnqe2RT%v6XNx7*#>|o$maAq0pUt8>C86I|AG9vM~p|qOQl?a2X`nD(P_iU zlQ~MXXWqNRMyjVk3we!!egAS+y{dBuayDB9H5gMO(iXhy-w6V(_1kNDb^$%?j(wkm z(w?bGmMZS%g#eE6DpYX@5U^R9TjvHgv-bNz78U8q&t}!BQsB_AP6uN^#lBbGM1fgQ z@Au-c73lU!F3V_yGVN)|q<%P4tHeZ2w^E-IVEbKF{9eT&7!TH(@9c7iTYhxL5~KoN z0?Pf<-d$^uaGvH4uK+{V8hY$k?zBfcHjX~ln5ZEHYs(Gc6>Wej zAGjo#0QR~;c=H-)L%-Ya073Y(&u%}H1As!yCgBwriGQv>`-A_vy1!`sBLv6kPbGGT z{ePXfz}%y!Gy}GQP5?p(s1U@Jb@;!2obi&Ii8k5f}z z0azc82kwt$L;Stn0`9xZ-ggalm9_fc!db}~D&zLRH7ID^k^Zs3*U1K!2EyN#JwCOV z3u;%cymNA<}=ehxH%X^*nJY}@$cVK)N;$~O>)4)(67l{7lrGyzdG|ik`|45 z*)HyqMir!x<%SbrT2g^_#i>&EB)OPS1zpdw#Jyu&a&$4F4pPgK$Gu}%l7f21snYi} zx%^~V(ts|m&;&_lvAERY?#KP0e9hz`nzb48gZeew2MS}6tZCc~s|RORugeC-ZWI(ov8w|m z(=Qpgth*%RF2qStS~7lMHdf7IgrZ!^aqze@N=v2>tj3yIbkJ0n2IM582Y=RImr&#+ z!v_Xq`7CZ|mCF?FbKD<_VTNy%-xxkH^~gYHU7q0fV*gMNvw2YTT*?xGcDOjW=;Kmi zAH{7Ww_|y!e^LLU=cJHl^`Ppxk|hDX0UdVnz&*wF#G1FyFf4VsY)}O$XXPW0C9?8k zn&^AlTsEkKU|ICIGl3p|C|hj!xtk?*KFfISlIYOrg- zt_2IQ3|JN{2bKpbfEB??U}dlh*rUK64fYtY$AUc$?D1ev0DB_Xlfa$~_7t$Ef_)d* z)4-k%_6)FRf;|iD*V_>fV`*E<>g8c;8PlCM;?5Dtf8tiAl zeirQKz+Mmb^I*RK_KRR|0Q)7dUj}<4*qgw91?-U@aD*etNwU~|Ccg53!Adtmdx=7TK&TL|_x zu(yNV1a>pnJHUP)><_^H5bXbf{SjC@*dnmSU`xQ3f-M7E4z>bpCDb5R06PhG3TzPUG}sxiA+WPx zRj_x0{V~|Pz}^k^Ct!aH_Ge)40edgl`@r50_5rXz2fG{WgJ2&5`!Lu?z&;B0F|dz= zeFE&0VE2H13hZ96PlMeD_8G9xf_)C`^I!>B4Xh4!4(tnHe*yNFV1EVn*I-`+8wUFu zu)hU65B7IpBVd0I_77nH2=-54{|xpoVE+pCZ(#op_8(yX3HD!L{|)v(VE+sDC2%Xi ztpv9U+!5f81h*R88gOgD0UQI41;>Ho!3p3*a1uBfoC5ABa7TkX2HdgWjstf*xD&vg z2<{|sCxbf$+^OK+1@1I(r-M5K+?n9c0(UmJbHJSo?%m+d19v{S_kepZxc7m3Ke!9P zT?pv*2QCBLdT^QGZUwgiTo$-&a5>;| z!EFThJ#cy8^1&5=D+G5NxZA;P0=F659pJtX?g!w02=4#D{Ro^LToJfpa3$bM!Ign4 z2Uh{E5?mFyYH&5+YQfcks|VKrt`Xc8a9hD`1GgRA4sbicHGyje*8;8;TpPG{a2?<} z!8yP=!F7S#1+E)h54c`%ec<}R4S*X2Hw11NoD19txKVI!a2{}8aAV+n;QZhM;KspC zfSUw21uh6~8r%%H5V%=zD!4nr{TSR`;O++Z6L3ET_cL(!fV&smec$ALc{{0ZPs1b-6vlfj2mCGIzYE?5J_UR#_%!h8;MalA0KXo5 zCiq*yZvdYKJ{x=v_+0QC!G8~Y9{7Cl1>g(8-v<76@SDJI27d?m?}PsV_#cA*Kkz>S zZwFrlz8HK7_)_p?;LE{RfUg8!1-=@54ftB{b>Qp4H-K*hzXkkO@Y}#|2fqXSPVi0O zo58n$Zw225z8!oA_)hQ+@J{eu;CF%V2Hyj|7knT1e((d}2f+`49|rFNKLUOfyc@g+ zychf!cprE__yG8E@Dt!C!B2q?f}aLI13m!T$vOPr?5T{5|0B z1%Ds-`@uf|{^#I#gMSeGL*O3<{|NX;!9NE6aqv%oe-iv2@K1r?3;t>F`@lZ~{#o$P zfqx!60k47A!Owwz0sJq({}TMK!2cTji{QiHe*^xv;OD{r4txas@4^28{2#&p3H+bI z{{{SC!T$~X-@*R_{6E3}3;e&q{|Eek!M_Ay1%#ClRzWxd!jTYGLs$c0Ed)SdAg~ZP z2s{Jv@gbzcw3c}S8J_6yR5IzRs8VDbUa4m#SK=>qt>mYmz!lxm82Eu0{d=A3( z5Izs#3lP2t;RXm_g79SsH$u1x!dD>N4B@K~z6Rmz5WWH7n-IPQ;oA_t1K}13--Td< zkOCnULK=j02#kLMH?V1SfeAv_4-AqWpccm%?u5FUf@ID{u4JPBbB zgr^|vh43_leGs03@GOMqAUqF&K+quQ5auAf0O1!9ehJ}M5Pl8eMF?RCzk%>u2=fqr z2O$FC_YnR7;g1mh1mVvR{sQ5z5dH???-2e0;hzxx1>xTi{sZB^5MF|~0^&-Ds~{c$ z@kofPA+CYA79t=r5Lt*EL>{65QG_T#lp!h*kAiqK#A6^H3-LIJ$3r{;;)xJXf_O5- zQy`uS@m&y4gLpc`Ga#M`@hpgELp%rKxe(tC@jQstI0OExZFM@b6 z#7iJv3h^?CmqWY);s+pp5aN{(KLqi^5U+xGHN=lV{3yhaLA(ay$01$|@e>d~3Gq6J zpMv;lh@XM@S%{y5cs<0=L;M27FG9Ql;+G(P8RCr)Z-V$0h&Mz0D#Wir{5r&MK>Q}e zZ$bPv#P2}71>$!h+90MtOof;RF&*MMh#3&qL(GJDE5r>DvmjB-aU;awj31TzE7Kp77+aR_>?10z_(E-s3u?ylZ zh}{r-AofD+gV+yo0OBCTA&A2eT@XhgjzV-p^g#4N9E0eC=!Y19I1X_F;v~c=h(UIk`#}My=csInKK>R7hpFz9_;=K^>gLps02O$0&;%R(#KS2B=#6Lm&GsM3@{42!2LHs+!e?a^v#D78jH^l!y z{4d0pAgzG364EM2M?g9f(rQR+AgzT2NDL$v5(kNgBtQ}&Nswen3Z$bT9S!LiNXJ4t z4$|?EPJnbGq>~_>4Cxd|r$Txcq|+ds4(SX?XF@s)(%F#CfpjjUcSAZ4()p0y1L?hx z-UsRZkS>69A*72ST@2|GNS8vo4ASM0u7LCbNFRiBC8Q5Q`Y@!cAYBdVBal7{>0^+t zf%I`m*FyRPq)$S+4$`L}eHzkdAbl3n=OA4V>GP1j0O^a6Zh-V9NMD9@Bcz)keFf6Z zkiH7(YmmMU=^K!~3F%vqz76R+kZytWT}U=aDUebjr9n!Ev<^}Rr1g+8A>9gT1EefS z*^qJ|3fj!Amu|UfK&+SHb}Qa+5~Acq&pyeAJPvX{SeasLHZFSJES5=#gIxM zl|m|mR1T>EQYEA+NY#*PAk{*ugH#Wx0a7EREs(ZC+6HMmq#clULTZB445ktwypYBq`5^fr z1t5(>nt(J3X$n#h(ln$QNFhkGkW@%_Li#bJyCB^S=_inW3h8H%?tyeKr28P<59t9& zKZmp%(u0s5g7h$?M<6{4=`l!;LwW+zlaTg6dJ58BNKZrB2k99|&q8_*(({lABn^@d zX%5m0kbVK_mymu1>DQ26gcOGK8%V!}G!N-_kRp(N59tq({s`$$kp2wmFOdEU>2Hw! z4(T6|{t4+{kp2znKal*9P+i0KLPoZkgtRMDafCO{29ofh5R|l*F*k1Ro3Cdglbd^6;)LjD@$uS5O@4EZj|cSHUOP*ychD*koQ4; z2J*9zpM(57WCB@(tV5oI`~u`(K>j7nzDwKCYIStC` zP|kpICX}M%GFRl0_CGnJ_h9)C?AJ%EtF3{`6QI2IcEez5(T%P`(A_+fcp(>!4&nSq~)>%B@f~K*@rV4J8LkE|iT>z6T`_NoO4DMC=Ww<1j?gO9)t2YlqaA( z31ttIr=aYG@-&ovP@aMEER^SVB?9I5Q2qerk5K*u<dHetXv^no12qgV9P1E*_Kt9e#8p- zrI%K&5I5%KZcNWB*i0kySFSkvo7dlJyUliCmMtga!W#?nGIKIMymAF&l#-rzn=Q-8 zam=DyuF1-@<(oI2lxqB&m7bsfd0Rp1`WtL{1(^kzxj8px-eJ_WV#SdwR~)}|4&&aV zlIz4##vN;}%FM|u_{ho?N1S*5%_~$JE+Lo15m~A|WEoJ3S}UmSao@TYhS0=KAzaX_*)osyNCy5VYDdPce} zCx?!fF&f85W3y7%r)OsxgOgm{E1QEVi9yKjKs-Zl`ZV^vP24Z0oZ# z6HU#tWoBiiZ?qK{>q(BKj>3%np0IFzrcv;z(W}jO7z>w?BRbss4_&JH>KjkVMlaXf zvg1V?Gc7N7Lwb6=`Kh;VNX^YQnvj{2nUz_vdF6_emrjVzy3?0V%}h(r&B(KDTyJD~ z&nsoIj!vSsJX;!lnkB~0NX;)W+npbuZ)ViObK7##HWucj78FM3{7LZ)#wxciGd<1P zwzChMNCz(76M z9L5;MC&Me{wRZCf`{iA4%UTz$@|1W|cCL|R4AH^@5}gjm#**oRw=vTghP-skRLtE- z*W43hmxboU&B)75GfGL%qg$vHO)Jbv&ooO-^j9n45+NlEloG{xGD(S;<UEyH*#<98>b63a%kb!kTb7z>l}97;4IH#^f<(Tz{e-+sK?ssYLYUGI}Q~H{WBti^fa^Lxn!Ki%LWxf{*?KW=eEqA!kLI>8q2z*x!>vp6F?$DCP9O_hxF-0buM z^ZC}>Hl`;QTq8a&gRYq;ERI-WEy~EUW#ndM(rF!?SNEv%oo-MV2@{?$Vnb`)v&a`D23E4KYJEQA+W={MrW3X-Ovuw9z z#%KI~iFwBOn4=pViOh|*__~{z1SXGN*ma|iu)&sDV2;Bvu}gzlTINGMS58V{jx|@t zrp(x07VjP-I>%;qu^78Hs0Zzj(-%ivmtq*mKCBZT=PF*TGEiH4QgO|Q7W$EbDrK8j09cmCF zV;aQQfQ7{-E7REgV^0!&*sRR#l)}Wb7-iY=Qlj%JJAeNK%Ra!y67mZZwQf$ea?q^J zY4kGMli9ZQx8~+#L>FNx7MW#?NS4X2gjh^Y8l9u(#I6erW^bdL?xN*2_9Q1K=QHJ` ztsplqu>oYKrx&DWX4^KW8)Ws}(YVa~)O6#4a?*1P^R2hXNYO#(Oo_iyi*m-Bc-Dav z&8LlW_48gfm&ps_6zr5GvKFMLuFo+W6<>q0bJI+!lviN94$=K4(ecJm7)!7%@z(9n zgk$5e*_LDQnD|tPURx%1w8WhB+Y1aXUYH(#O>#Em#*4|xrT@kUWDx_3PR87f^_Gc{ zYe>4x4Vm%sbF++h#YQ=Y9FH*uI-fqovGJ(<+`@wOR4JM9iJJ{pwZXhOx);-p#gvWF z)iN(VH8&$Cb78NGH7GB0vn|meW9V}%*T!7T$lqv-PjKTpGru4=Kg}4GcpHti$WUgf z){Swg<>|}=C0Q4iSUtuoV-OreqNF7xsKL{2vlXNl<{R&6x-I?==B3|iGsRQ1>bydO z2Sr)qek(zqd7csPuY6;pFqp2{YB?5Dm}fIq%DhAe7!2UH1?eBX&df13+QhPB^jB7v zImEY7HC2$9xJI|78jld0pz+Bm#*)*G9Bijn90=Y%i0R5`WpPX$M$TPEF3ah$@|#l%BVF@c`KlCR0lMZ7~*JgOD0**W|x^ zEY9fE)OhC?7~CK$HzVGM#&wD<=XP6ssWu`Kqiw#a>6UwqUE1>M8P~UErYGp2alNU~ zmUF8yWcyE>0$X-wR=iCG=~;yti4DOhl0{R)u_?jcWf!f+nZq&86{eju3vPpSrZ&Hx|ZE$ zODGRIo#{!Vv8<*pOo=lOlw^H@ql?sS2D@MM_8%RK&!aOfx++FDw#}Jlzpqc ztQ+K5YJw*zu_z0*MB=bzP3-7oZS>H@OpPCttd1U#9F^QF#;vjQkk#gqtC34E|IN(E z$<13h8(o!}YQnmeD~?<^D>*jRWVz}2x34z@jgfbqu>zYn?jLWA?8g1$vvO}w&x=-M zjW5V7Fgi6k-ss_Yek4w3R;A{cU_SYR^rnFYJ;7L{^4h4%HE)i~+9T79#m-nS($d%2 z3bP90k7^#@Zd^D6XN{1tYZ&jVdBho4tgKb5GVvn=W0aRvoJdGHL}#6`*&-pQSgTrE z6VpknDHSl@H2SYGzfx@GD4r6#OwBSGL7pKXZ1JN7V_{x8*{Ja3B~um}WbFM*rXH}s ztaS%Wxy^Ws4v=E>-APL(8INrC$jDiCt7;P0}39+7t z_qRcbH_%~7Hz_3&8WaijdBl2i0M{(&J!6i<1>TyNw1efmJfZK_tT*OHx;gflY3A4& zd$xIyY0-Pe%buB*pJKe7d7EP!lTm>YXKW)TRWL(&`z1?BI*>7TY$Jxw;A56ngU22~ z2O^>MxLb`EB0k5~#5CX9xL`vPUBB_&!Z#POEI*pcGGBtBtLim|tBGP~ZG zpT=rsO`@lSMs4(Z(Zd>d7>X-ek(h|jpyZuTM6ADL@#Uq)wqv=BPEt$Bi)N^$!!mQ$ zWp0WJx5YQ)&`w#{L@ZU^nzi_{VDY8#W*(KeG(+ps%{gr88>%CXX}>x8{FeNtU^cH7 zO^h7s%*>+`L$O518g1!Ybx5O|i_f?-jJaWkR+Ix#ke$W>8X_XKXjdd`RE8 zP(2ghd(DgmCKQ_QVN}_#iD`PqBHY);CHs*kUpDT^HpxJ?xiT!$-K(ZsUT8<%+! z-FK|3%e!dI%TR)&X@>pxjD>=%OF18niLTZny|i>aLn9V?b0IO#aSZMib9QYuG{Yui z)T7t8uQwL*=%}ySXb!=~G!y8hu_LdI3s%;uN>^>nG{IbU4H{%V#j1^_{Ett{g=J@L zlxG@~ASNnTM>Qj3QH!iqC$2Ju@bL@VM}qIh{h}u>krMM`o{*dt^I<06mT+etw?rEC zY%Y~RJ(tN9#hsW-R1_!E$xjty*Gm)_quWaq80X(hG;o2CpOuub6hlvLPmHo3o18-5 znB>MJsPht~MH%!`DGQYPq~w$Y$4>5)IO$%Z9dQ<(d|RAmpS(m;f_I;tl)5DOPOdw_ z#*@<$oIJU5D@jl8qZn&X9^@#0T%xi#p; zb4^yCyRINDw}9^0tD~hcmUoF;^y;jMy(w$sF9s6t!RqL=UmKt0YvYr8b#xA|iA~v~ z&ALpAyGU@aiOt(17pCdj_^d=?5+X6@X< zojyfJl262$^Gi-##!pfAk1}RQ7X6Y_A|W>6j!Hx&*oLJFIs+4z*_mmvcF2oj>34UJ z-am@gYIz7_CtNrXvBt%wu9S$2PR}*5GfQrhRn=lsT+yyF-_TWenCktGjV9#t_!s`Y za?N+{wBHlBCwOnueU0}I-0yjy^8x1rgFm1lJFq)wd}epgK3Mu-^@Fv> zr~bjN2fH7tf2i@Hoe#AdpLXNZX?&c{qsmHxf?0ll-3C9y%PgXoxWqdqOPCYrjr({p#o}oRS zJ^rU^jZd5LaTuSjr-FO!d$;a&?j70dd3xgM;M24F?EC8XHSQbP=h-(!dWuL-3F#># zJw|wj^wyEyM$)^T^fr@T59uo+eI=x?jP%u#z6R3QNcy&sz5&uVMEZ=>F>2$aZ;JHI zP@5(FrKG=t^jDJp8q!}!`kSb=ll~6U?;!o%q`!~!2gyJ&wK6hLO$HjsKqDF0Mg|7R zzz`YmkbyBW;3ES8GB8dCCdt4Q8JM9qO9qR{UND~=pCnFtX#6d>7$VeX<@sQDCGFn1L%gAUo8LcOyjbwBy8Qnof zTgYfD8EvQ5Nk$!Hw403fkkJ7$Iz&cC$!LI#PLR^In2eQ>u`)7NOUCNSSR)zRO2!7r*bo`>k+A?7n<8Vg#8*mu<-}J> zeAUEPM|?YoZzu6}Qgaet7xDEGpPTrLiNA#S%ZR_0`0I(kk@&X~{{Zn15&snN&yqk1 z36zsSB?(lMKphD*QFD?&7YX!{fSXJfk;x#LRLN8u2^NuHF$tDZt02Kj60D|HM{PR^ zHj!Wp2|7ryiv+t#u$NjtwILE5CczOBoFc(#5)6@PJDDye)8*7E$#fl=ZY0w!WV)S9 zcWA{UNJ_RIV2d=|x7suNT+r#ZJ9=NH1yBOS<$@yIwk}mu=I_ zi}mtGy<$kOwCgoqz1B{xSg#A}jds1UN8e)Cw^Zv}ocgvQeY;)XxkKOS)SKLTvt4iA zrZ>0hEpENNNN+FI+spO#D!si{Z|~RJ2lb8`y`zp=gWj=K@7PJLS?}o7JG%6ae!XK{ z@7%6;HtU^kz0<3A&d%BGbM}cjyJ}id(OmKNx#E_&;?B9^uDO!gxze(^QrBFmcdopC zuDo%s+%Z>apQ~)2t8~s)mCRKcI6YUT&Q*KnYV310HFGtMb2YPbwf4EX@wvL`xrUCp z2IpME>%$6s+p6sTZOzH9_v%JYHZ!(8#lOZ#95~?7f zDiRtbAupM&A+wESb_bblqSiuYN64%ZKS5@v3_IvesqIa$DGe`gN(-A(*khmX?0)NR zP4iB5UY(_=&Uevp7Y*;C;axP`O~c(Z+(W}XG~7$Wy)@iM!+kW|Ps9B*JV3((G(1Sd zgETxu!$UMYOvA%8?4n^84Uf>U+YB#nq03w7@)o+hg}!~ZP}lMn`qtkYRzGKd&a=EtE^m`>v2Aj^n2eW@@iH>LlZ>~LaW5J7k@0CV z9x`phPA1C9L^ZVrGO?XZ?4;IACLCm9j7<371RL#;Wusl#VrR(gEKzHT+F+Pww`=w; z&EBoq`!)NZW*^e*F3mos*~c~elvZTdidqh88?Ll#mE~GxrB+q0RaH`})~f2Xsz$A9 zr&iTWtyQb)(5jqTb-7kuNv&F|uG6X;wdzr=+Cyzjs}5+@lUntxR%54DtkslhHI-UT zy;jqx)$G)2nzfoyt;VC()@!wm)V6B1JG9znt+rFEb!v6xT3w}9*Q(WZX>~JNy;E!O zYmG%(%edBR*IL`PR;SkH(K_v#qg``2HOHXlv}?|K&Dp3qTQsLr>zdGZ*|lARZ#2Cy ziAAMeRF_0A+>~B)Q+g4k^rD2)3txg>)J^MkA-%qp(u=+W(2I!}y=c)}yoZWj=uW%d zt?EI$9&FKrZThrNpRw!e4qf%=>NF)E!8!Zv!I6)N*G4|(8tpHP2ci_jZVzv*4R37> zZ|w?i?Fn!7g|`O6+w9?O#o=wG;cexn9gwDUyys*k$)8tQ^n5b4!tfv^GgI$C3(>v$8X3ah^aI)jgM-A=so+1l6P4w8*CXwd%Fd$o&YUqfvJZ>kf}T{PHw%fk5sw31o@7 z1a++NSg7NcD0O_bq;WrTIN*s44jm$jI1`z)M^1G62w>pV5J2x?CV;^=mH^Hy6ToEx_`e{49Z>@4@Mw;y1Jb}AyVldL z^*FVjVXeob^-OEMc503gnoOr{CVJL|h9!g4RGCofY#X5?86bC2< zDb7#~QKbCQOLKY~DR!7RMj54#=J(UEznEeLMIXfpiU-L+?enuV&nzu}))B)PGac)o z=%i?H#$p<8U>U_q3szGMP@JGRNpZ%4Y77sC;reO&{qv!nZy?)UX1Ir(;nKNk;Dmb- z+vVEswBJ``u-#W+x^b3!AckwQ+loc(wkFDMJLBxO)52~?UY6bVhD>|y9JhX%;~oZ% z`!ejdZ<*b`mD%l2HLa%105!RohW(3`Rjh1wNWqLPMK?fGS^{~xt7&hIBVPfoVB%` z^3>PlAK#y++I2^{g{^MWJ$BtQs(U=Tw^JXp>%Jk~H>LY~b-zas^y&e(Y2$W%e5XF{ z)W`eu@d15&R3G=~Ucc_0cpEYH)^NKs+};)C?Opb8*Tgb=f7`NmKP|^kIl14Fz{AVx zD{1>H=R*dsuAaC?#paO+;L?hPGc6)@q{Cq1u{|Boc`|L&LL|7yu1{=eNGZXOP|*uyQ3 zaLcZ6i!a-ZVUH1OdGI=2gbvL_V8d` zc(5@%*b*LW4-Y!tKn2nFHc=4c^xp9{6DMeRf|eho_XgW3Qe`pS_!d_jQxw$%zNyv6 z;IjHSIQ20@pWVP=iXIckw!LjtiFok=R7vmaQYB71agGqDhd5_Rk3FVP>ZwB65mP8r zhex4IFDsN~g|e(rUXwy;HWi9ho4nCV*M<8V!u>7b{?2g!fi%l>c*q_eE)Ea3g@+wsw>|703A;UE_tb)xneX(> zJId!BHS>;Xi>?`2)-~@qUE`%n#7mWk*J05(ZT~xsW1y2FO`V~2&Cq9=p)Co~l0!6S zXpAB)Gi2m1p?y*^@2xb^EXP1Y7nIVmE}i!k9h`=$rSWz1p3!AJbvX6Z4DHVu+BO3l zDUMR~S}u^zn!s^d&UhWg#sp5BIVWfIduChOKX`GVFM#C_}ehbNe*+%**P-ng4}8Y^VBgDoG#ulJp@}g9$}f z|7sMS5m5gZiZ1w?6kW2Gs}FZJhC8=}JDuUq!LTFvM(8?MQP@=;c2$L4^RVQQZvoZkp{mcE0|suT=ze`_u$6{e=@YqV*kv;2WtDhX zRiZinXXq0dNVV43tcm6b8rVQ_3q{Avs!CdBV2~mWkGGmQ(MMHWu|?4Z7c06MI#&&( zwan1?8QQ8DT8=qa4V*ABM3v+$%`;2eKTC6}r4*?~RcYJQg?OWc5Pfz7XHE3lEm&-# zZ-U|!#TgU*G}TnaA=<+R_M12{O;I&*vWOy0o!m-sJH?$AY_?#l1=}fhQgl-6r8q!w znBs^9=~I~RyMX}{r)Ue!*=}Hii9s4OO=D(gIOIF9S{|7X8R5}+PsiI!IbX1Qa`)73 z^}&({Ym85w@!9p@uEz%+_dL<`MDr8QC!9}K8lRdc8~0T1Y1lKo$Gs=8M}4aFsj{cq zpXzv~{+aq`Yo4urZtOYr`RV6X;v6MTH*u<_b+wbO4$|cy-74vwG_B80t(00F>8mGw zTS(tl(lbkb!zKu!Rh4B?E)hywv>ECa49;fT6TQrVW;m!E!QKMFy+MU_BXZB!gSYU^5x) zpynWhy<~8l4B5$0DYbfPTd56F^HTFu3zDH}GF(ornp!;>ZXm;3$gqP9_mJUUGVGyd zsA4;Dl~SuCu6p9yLR?#kYml0knx9&bxTeWS85t=jBUNOinvB$wksV~DnT)iNkxpto zWTcmjOp?(eGFnQlhK$yc(Jj<=lF?=|+D5H|nv;y~BBQ-zw4aO)lhF|}8YH73;w~ZX zGUBeHR!`gw#Jz>McM^9qarYAUH1XJpr<7V9wJp>JsrjiH(t3t?%cxaRt0&&=#M?xz zm3SS*+e5s)#Oop62{L9UV?|`Flv*9NEz}07`KblT*fjB#QLCa>Pkh^nuZj3Nh|fW- zhxmGl&qK{e{6)lHO0ACC7HZSPKSKg#)T*d8kibq7XeI#%3G|RaFA0p3z$6*Blkp-l zUP`TrjJJ^SF={i^X34lpCMw886`80Z6ZK?b2el?@PBP&o69F=5CzI1;a+XZBlc1dh zOQ@BRU^xj^QL7=rS`w@$!EGeiOwCEHhgu)C0TLV}K^L_kwOJBW$#faD3TpLax`9l$ zlIb=w-ASfZ5~`#&LP8!g+e|HFnp#J#ji{T5mw>Rkc2s*5}sxtF`_Ht-np{@6ZO?wSf+8&_OMv4bEyq)!I;lHq@#O zIkcfsZCKStYPFFDZ6u_PsM_eTHaen>2DMRDbNe;-wC0)AJVDJ{t$Ay;F}vn#(0o44 zr)m@Z+QhUrvs0UC(q=lf8AB46YoQ7)RIh~^v`{m(R%-3kI;qWSAyu0Vn5LFd+peiQ zG_{?YM^n9;8la{crWf_XGiJHT-$uWIO)q}03P5bp}RabZFs#{lQbk)$z zcGHTR=8Bu=O6_x{rE{gDbETfS@&;MbBJ?d#=)9T8(Ph3*+N2jH@rIwJ)k_ zcxzpFYeRTjMR;37xY-qMR>Lj+aLaVKwK?4C2)9j!+thGp1GTN;PDi+NDD0RDJ6&O? zJM1*{vl{N240oyF?y_)qUAVh7-0cW=&xE_xaPRhTZ)dnS6z)~S{q@vZ!~GrMerLE} z4G&C&2h{LjeR!}TJlGl@Yzq(0ga_5|a7lQ$H9Tx6WP8|E5q4FET@7JZW7yRcb{Sf_ zpPD;7s)pT$cy@=~!LYGgclOM8y5}7g^N#9y$IQG#jSP%N2HcUs(a4}XGTa&&RwJ&8 zh-+)a)f{oPM_d!sLex~#MvAGGndUBzxVJ_E_DI0c%!YE_5}BxsOf*C$W+M}7WU@6f z>4;4BM<(5oscqEysktIkMohr8=}=^PHZo&3ZB~t_MG>_!qEG@VNTu)e7K#ghV9jB{9*S-%n`xOLnrF5%fhMIkkVKvoya-#k04H3T6jI8e_(n(m7z@7K$EQ7;|dBZgxg7IaeVqDcQV+*l9Aeu`9%j*VC_Xu+8T`brb%FSj6- zvi@3%J1p2?!Jq}z1P011NJV&n{z;6$mIMZ=ybsdWskm%!7G)~9Fvx}me%H!=6 zsTdwxh*^-+G^dYBQ(vP6sSx!oI9F>ZQc>-9ConKXk%rCVFhe%?QmI@*k>;PIuGC3d z&Quje8b7tw#AzBo(?yY%W6sqWhNy!#MDxtj_RrGxt7R6XZBrNG=|O->g|5ef-l7Eh zCM`&%vXAERQ<)v0qBKAS?L?3YSGxtbSa630n=II3!8QvzEZ9epit|aA1xG2mDf$yQ zMO!{qN|8$UDca`ga*8w@@>AIyqO!S(qDp0RfTBuebLV_l$m}0eHg{6N9Gc%{H|NYQ z8t$gyZW`{P;T{_9rQu#0?xW#88t$jzei|O2;Q<;Rq~Spt9-`qP8Xl(MVH$SPu#1LA zXgGnz6dfjx(HI{U&l4Uhn?oyww2Q91<{P#%Z!g_w}1CIbx?;MEH^%ti~itB;Gu~}iyp0xJF8o$v)c1y z=t=cSbx+Zr;ytB%%Jx*m9oJ(|H9pn)lyh&>-j=RsOZIlF5Qg|j=f*x6mXgtPlqxVb}%-Q2YYaC5uO??WHruSC}- zIlJAj$=O|dKxg+sxw%7&-Q2Z@$jx0#J>AL9ZZ`=858Bziq?_9pb#qVI$y7O+s-xCO zrdkfC%e!s~m$zw7GBZd*`?4VE8vy0jLz)}m^yMOtesb)XMvZKI3b z=-a3p-S={C^iBiEHAki9Xrk6``5$5q(wRP~^_CyljozXS*r^-cN!{pO+Mr(>vRmBf z{ieC>n#-rT0@_H4Hc}RIskcy<`k=+7-mAI$HMf_3@j9S+?J>uCNb?P9K9}Yjjk?#z zRr60ez8?3wF+*l&O;d|wuJ&3@ZL~Ptoto;hINWEbpWQIkv;|jtX)(15YSnt_HobHQ zwHCd!Loe;2)<NO}CEg+XjQ?^2mOx{gL5S_ zNltkub;^6@D%8aPWD|G9Z)*&13(=o?)`pwo?)cGgiyCvsyTk2G;dV#3eOI`%GTd3S zlxw~y>?{d8%filzu(LYstPMN+shi$M-Sj2l?ndgS9}9O+n4bCtXMN95xW^Oj-5Tz7 zMqT!OW8pr3xKE8b?w4@cJHvxUOwhC;dw6IzJZz^{9CPA#9E1~p=s-^VNY5)e@dqNV zp@aJZcW8E)Dw+J0)kxJ%?7*5M8MqRDvV5)15O&0?!zu*wFatM5y`c&M z6`FQ^gDGCoy#DDiim+{kjM8pEn*fM$Sqr(UPk|cSPHos60?P`mCJ!d^bC=DUR9A5~q9DuzTE( z9pO&Wcx&Eyzu1qhl!GIj8AlT~P071iPO-vunzq)eVAVa`H5Afp_G`SV19`~Q77ofQ z+fvBK7FYUdS@4l;&1Q1nx!uq2msL{NoD_@V~|Q0rNay(!s^zmR$2IC|B!|*8iOu+**KOX5(;=wC+X7;=JZcJD>Ad9$?5Np8g{P30yDk>+x^Y>*0i&9XR(cN{@c5(SLmpTdvZf~DcU zfw8GCckOHaCViB5VPWqryqNoPkM=Cn;^V;b7FN4{x39&uYg<{7d3*P+#dUe;-Fc%t zCI4o(5V~E6E32WiPQGMy>8(5dCo7$0zp3l&e(4EDtFw85&}!|R`MGzbk<$b7^iebB zmfpI3bYuP08GwAT&Wf^eF5J3FvtEBLx_-Q|m$oVvMMz9yZNss4y~T7L%UajDxqIC5 zdfen;ep;4Q;dI!0mDMIY~;$Nmr~ z$NWbdEttcF6&XFI$M{kfpDS!!@1OA4TEE?Vo7=Z=)%XEYaq9ATCvy#&ZU$h8 z--)W&GI7x=Y>u;@>}N=cgH{(g8<%gD@9cBW_|ML*iw!rIqpSoyEZZod^ftofui8?( zD~8V&5qrh_Po1-i5$*1Z`an?_rp>yRN@nE;0DNVmuHXUPUdfrCAe{Ip)4y z;h3B=KFF#e0d`TGlWU{yPFd7{yu=1-f8q7;L@KxW{M@$XYDWY2{F93I4;~#e>ExmZ z)-x&AxC&~lz~46p((h5i5-~S)T0OiCl9|PH(R@ zMKt26UQ@eda&uJy2YpRcJA5-3r26Z^;k!_D-@?SS|fUwMJ#JRP?a9P$zp? zU_MP;AN|WxcG;3|UR~_r*Ts*Gc_qVXp{YH|9>wDjyIp%5ad&7h-OQq@cdti$tj;Pe zg>%bHtz(qR+BX|d%zD=bOK=1EOL z&VRfUke<&&)feZ_A11@#R)^@@mp%QW>d&AEXaIE=MQklSUYoJ4;NGLTG;nQ4e^N;< z)P}CnPlNZ&!h(=1olKipIIp5R7m)#--RHj3UU%xvxmXu)NvFS>(u$a?)^9LgA)`o* zC4X5z9qS-Od8(@|xrbNO?SM`JqGWDE=eX-whTH&dRshZfTkF75mXEkM$^KQ=5Ob>gs%BR z`<+@hb3DfOptU`dH&bh5+%jX;`n<`j!48_c18q4&oAv2*{jGidxtIH;mixJ%g|L_}JXcbdbC$C< zUK>SQwDycvdYj2B5npIbi+AmF?>3pkDcB2w5mPc*eRYq>~|Ng;qnd8j1s4nHMQ^m$3Ux}Yle3+lA zTEhPW9L;D=eGF?Puuh{X3E|vsQ=P6yIoLEcX(B(7&XIxC{jYpYelgvsqiGJu6er!X zZ4n3h>f|&&#Ofg=0Xk+7uWxl2++&Eu-1RdnB**MEM0-^f|BvSl^K3$-+uj&2)_FsE z*aJHc`8H*p`0R>++uSg=5`ByM+@z=*J4O2Wn=8uXi*G8l`SVk5ub%)c0~&u(iwVSztCKtfg)XhU?O^a~hu(SXgiFV%91SPH~eS9V2-q&nI><53(03 zi=Cg{?!%FX-Sp9)C!hB_)}#+S1lXpVXr>=V@qvm=;28DLT?*c@of z%u(?Ihg#-(d>8P9b$LlNr}&0pixEqFrhoM0SRf6vH^x6M!Wg!*O`l)rCTY5{%p@m? zABM!)7uQner!kBHo3BxJ?GgCJ7%v%;`fW8e1_vF&fs}+ihI<<5!aFTO6~R8aCg?4Q z^L?kdp=d6=C<=(X*yOTS0Xx6*JS^hXh5C#Y^eEizaR)qYjPRtx^%GQ+x@IHPmWyt~ zmx^V-Zn+FY@nw&sFQns=Lu?xuq=z@Np9Scl!chFkfG_gJw4LNMSSs`=3(%bEV@0wF z`AaS$5UWav^Vmf&=m*7=#FM0or$w`aP!36kwRCdSWCXd5AQjTFhw|O-S+@_{7P0V= zexBh@eXVrk34K26t~ygULnlKo!+H*Est$rA$F$F*mWf;m520!iwmiAiV~!6o;60=1 zJoW+bd7UNy{j8G##JACT9VzBcM0Sdcl9!z*AGH2g zrh|x_h%kWhFj?VyMszCRSFt!d>1PpRz~ypWqcMO@)Lq?u$7RQ3hYVC9j{u4QitzMz z=Fx}!1H#12DL4+xP1(y@|9p~Ne zJMJ}4JP$lFK@kSI^mvkd5gfV5{|0^kaC7P7aOd*kA|@vqHV|elPC`B;c@_Ht(3A_Q z6Aq2N6NQ@sqm&$uy#nyZ^05;qhzP0oDC{3SE7aRB2wc56cn%6Enw#iRp z`2g+CcXMFE_lJ~+Cx?sTV8T1?*f99#KQq}xV~nefhm2vy|KBC_oOA!R(G|$-`pfgz zyVQOw{9%X!8Gf7@01ebeGDp!u0N7zTGnu3)mFeYb-}4vKBy{4_m|TFToSy@aSX>Q& z^Dr6^9Vucs#ZWB7{_UrzrCgGO7;f~Ki2hVOAQtnSo-3Nm#$$unRfJ2<2c0BP^#3L* z45lB-AY-n_iAcq!?T|i-wgOO0qtHoD|j2v-{@6dSPd-3&#(XcLf@6HtXZpT@edC4AvAfdb%C z8_-%CFs($8cRc7P{*bJnOrxP(ZD7%DAcr@wXS(1_{C*wy$^ZCdtbRrA)V9if9+yN*BV5 z4pu-HL5QDc^d}gi&oxBINWS2aJUDp%xU6836VRGA@X#BG;oay(I^9KHnh_RXNPcRb z9vrDC*Gs1E%t6A*PVeIbL`{AR))@R9igir=8_X<<3m3bjvIyXeaa9FDSA7pt3|V*nPjc_!6G@p)5eiRv~}c z_ypj^-0A)%(}hamuP*~Zo(;E@jUd(iDczSL861NqxdZZlmX(<&j3+n52At&roO=Q4 zTNO;M4k1Ywn20~kpg(`M&vzNWcZ0cYFK5rN(6m!@vBaJ7Y-5lIAQ=c zrIc8#8~~A0m@3*pE=GY^QAANLV}__+1Ya&{hWxYW_kT|HD1b0sZ14_wpvW_Tgpyx& z`&+RHRSXpXw^;D#-+6jnAc2J5G83ZC^*{3So9$+`1XZjU0KQnPBn}sVSL`^hJ9FXwzg6d77pUhYnExZ0o%;{M{MR+& ze~by7sZeTM9dg|{o5+W_-=Rc!<&x3A^@-TZ#l{mGim=J~lEj7n!_=!X^rXMOEeN8? z2j+q26C^LT01x6{-Y)Y_hKNXE_d#&+L5Ac3 zopz9adGJVL;;8k_VWD@F${Pt;i~O3$2wu#%1gD?6vWuWTIaN@H|^ z>6(tz#w<$)2Q7mW%_%PEIP4rO%8(e79GLC@WLOwuVDbM?SqjeoXIV`A?v%Wy!8E!c zJcvH|5g`&2L2nVk$q_-=Wq&e|fh3gyQ&V8=YO#szh8S@zxK1N6D+wsn;zqPeE)iWwmtnEasS%??6vLLdD*e< z@;+nPM&G!2WC^q5lp}L+t8S$!&vyT>ee2e3?-dqp^LLp38QMzc0}bm@mYsylUfd0@ zUKY=<3wO`er`+56%N$wv3wH>XwmIFldtNTjuNQaEo2U1^%jdz3?+Tx-=ehbW?pl$= z=QmL5t2}dckn0zc1zsVRcaIXZvbeRM3vPtHpCUS4RJ<2lSY27&i#(|XaXrm%&UXI1 z0ImRUfJXs$b|TtLy0z;$4v|Va9aT_U~>iky8lH?P5hn^1XWjg~FlCtDdvW&Vy$nkZoOEYVLS+ zw4t$-SmscaR<6oC4R1ZH&tKw<&N+KLu{qAlGrcX8#w%}-9}|p)$JuSl`{H36`kzNz zlWWg8AF>*OX5Ns}9=}>%%g;s5Ti5SBD@%}Z5j6rV&NENJP&km^dgnX(Yh$=HJeqWr zfAd{_;R}VQq{OrRp`Xs%-#H#GPb8i$?mA(3(c{K&rWr0xPi88kH}j+VdSksdYGitF zI^-1ptHa6sRA5h)>h?oW5<>fW%Z1hx{W?+`zRQ~Tn)aBm z4&OmA>8p*tD|$)T#89cXZztUR`a#W?;PHjanyEzsN%N@Ag~#TleAgw%?Yj2D$-?5o zz(V0=XtVRywfpkX=}^MN3Y?hX(82ETRGBdZ5gTr6pg(n2LYMnpqidtn>k z5!$DyBs6IhEt_q$R0GRTyM>hdb)*O-I*Ex&Iqbip(JweJ&S~6kCY&Z(*3a5OENdMH zxGplAFH;-~5H{b+3J{K-o5dKatCvTV>FD+~D7r2v75^wcS}~GKSh9e6nYS#$6>5&~ zrMRpIQ&iMDVv_hh>2f4m=xT^*sLtO$cX!xwIVEl+UL}u9%=2|j%eu{BHKPUe>^IGV z{#9`F_mc%0hc@?Dqy290T<(U+xPv(CbJI=YK`-Zq`V8k&DC5?~%eXy>^U;t9ZJhLB zmx+DHD8}Us;2nJJYS+fS;k%v_!OPL8Xw#i7Y1)c)y_B}|^4jX-F0%J4Jt5{f%;+j| zYAYeLGq=fE7#?#YLE>vc|7hU(z^Eo63s#%mOngg^ZPPCAgFKVZm@T)@nb)V)*H10a zU=H^X2WL$2pl`3K+F0$KPc7QjUZ?bgRLE(_%hGj)tIOak_ZdlJCd<5MTfKevq@Zyb zsU^79xiBi8B0kr;XN3-|$5r3AKlXZ#a%te36sGSm`0zp0+$Z0NxE@`qkV50cNfCy# zq3L>eZpb8@Xh-4-u~E{IPH`saPTMMQ7Pt1|)4LripUtVNS%>+zhMAds0&M>j zy5bhVVPyQ-;8CRC8O2d##ToXIRPdR@p%ly2k9h<1yb&(VyJI`Pq-&O*J5Be&y@-wWpoiCdlny{r)UBN-+Ti_- zoi=^cIo=rIK|PSHNc!j&ox(3xi~jgFQHy(48t_%OL*4rBb`J&ErD4r>lW30imUU1L z7W+x6U2|r6z^%1~3!_O4R^dhpBmE$wV9nHjS~52~#~H@W+2yyUjXPU!TFS9QlItz! z9djtN-|xpdclV=>QIgL~jU=DBl(x-Qt`GkzM*;mzR@+VB6H|Ie z)%*c@Ar09SRz`tJrBvB>5^9f15$%m%g@r1%Bl3uU+3JM{id3+)9YXb0)~M!}=$6b@ z>rKov2y8V-MbG3(?~7xf6^4u@6HYiEuC2wi--eaFQ-tN(jR+KNm@Yc*gbL+eSLk1- z#>U_2Ie9Ynf2{rTN3F%G+@ssm9;6?pFF9Teo8PCqW3XqaRj?D!uT!8B&u>vU$})uC zzI*B0hO)PW&(jpW=mY9$to#aNaJ0nKclU*O02$Zrnx6}kM-CvDr*Tf1?0_bCG|A?1 zxTkUFr>+sGRX^)vkZX63YrlF{Ca*rA{iwf0+xxkeKGXCw?{ZYi_~m7fvBQjbTcjnu zhXN2C-E+*edK>?@^f5#o%5c&A8tIg{hUMq{#Vy)rZSIi^MR~;eYXsY;5WTum`4+yKCSlvd!bKaAYqCJd$c zv-@vWdBCWcMEt>+!u`nX_h1Z-NPIc5nYJMh7~@ci801-Ge1?HjI$cGw69#);GDetR z2K^cGNO_We%^qrc%?7%VM8oL!r+w1w#{&P^e+~^Vlfr|Gn7m41 z!pO@_!SoGor#l&roF{1!!50_J76PhBg84JF1Py#Du!Ar@r3vy%2T1ZIdxQkU46n%- zT!AbB8iEWTN|J0F#*mEqgIP0(*&_%V>H`|DpxY-VFMEgr#4PlKnSJ~x%>s1rp9Lo$ z&|)CyZ4k5~2>Ry-bTJ5;4bB&L+U5hA2?R|IpDMA8JS-vnAxaBK6t{0O`cfaFOiP1A z3GpLiy76bUC;NcT13_BX;evT07VSTnk${*ngO~x4hk>AK zi8{c)XdqGevinIsnAt~zM8N=watadV`v|6a%;Y6} z=K*UA==_x7D5PL)*;=>@~Y9GWILBwl7#O*$a4;6O% zP=cV@ZqODq*ut&G4lu*d1`njdwN?&DBeVt%Zo{XuZE=4|mG+yi9<+vc3>=IIb(-85 z3wc{1%JmcJBR=)(m>_=d|6zpqwZF*b!!Z;kh-^3uCte@2? zJg&bQu(h#pM-L+L%l@fxC4xY^N@qGM5B=#UIDqW8+?JWfg4!? zixp@|_(pv<_X2v8r=EgJv!|nib;GCM1=_z}1*f^0UhSEp86j|(CRiZ&?OF8B`hlxK z&C87bTuj(M{7IQq82nRl?2>cRaj24WVsKKEH=A&zQa2-U&QjcY?ddJf6i3@zaBNdh zqi|wIMJB_6z`>R90-#BM_}%EiM7SVO1sMJls4}v0pYjZ5-)V5B4D=ig=K#8lg<}C9 z2E(O+0xJ?EqXGjGH$a04iJ(z~S&6w(h$Pny24sWlY!daj}G z1oRuA88pf!{mqu-`;97gTNnUJG#RjzVB zrH_ny4S#VOf&74iwG2$4I&>+FX*jiuENT3;7!2wRwX;9eX=_iJmceQ@8J96?%Tw@! z7l%?Z{1$OiGX5+^q^$xLPm@u>)@Ct0 zd)9I@!=T!uFu{DbpI{8;vd8`rOlq&f5S;3|_hZ~{Pqmx#Yl<SY^Q0{Ic#CcwaIMe$+d~aPZB?MN=W6) zlS_=o@b@^4#}M{B493X!h^^>i_j2{=+zK$6>#K?tCCjZu>BO&8Vl6}k#Zy(MR_p*Y z!u@tPv;z}%LNvxeyI(ZMBX*B8%3XE|G|GK;rishC&Gw0{I?cj~?s~3UiR7lP?1_cO zuKtNE7OtgaIx%_bRT7 z!&v1nz~S+7zF{hZGQM>x#PZ${N9Zt4GacnFB{dN|h$JMoQLJ83kq2;f_mT&Tuhg9M^e&VQ2hy09CoeuhGsmhe~6G5dm_GhUI)2JMN zVruP-Uw$Nwqu%KD9H;3h$6T8+t=}B61#QV(u9YdB__a!^g{h!;n(C4VX}*%25$Ub+ zl+A8P8D4clUbS7FlGOSzjtZMNwXxyuj1t|zaDsX>JoUWEZfe=eWdcXDowL%}+Ax}i zYY(-w<8E#~<}#jZwpNG0DX zDj8L%y4ec-`ZV=ZOr_Sm*)s!-@JhcS#j0BPJEfcrDs-*Dl2RE@45#v*Ohpx~z_8K_ z3yjRlJGs(!pjl<-($@;&7)6qXP-dl=IjSRdL5NZlQ;hPm+$E|#l|H*t6kd98J3n> zcqZ7F+hr|bRbCY7+yG zbUU$iX}Dy?Tc;VX(S!q;h56`;*aNk*A>TVC7vq>b&w!Tj2}T-421yjFa-j|e6hH5F zIP7qRJz1}ZG`t)XUE+CWQPUqIS2bJ|9JA|8>J+8wjAsf@hMX1on4zxCNd+>#=S_b) zRrh>o${V74(%o-6SYjK$>#rSgSh$yJFLA@6Z7AW`P0Av|1Y# zS=$vf4W31-lmpJn54lF^&~}i2hn|%$)%$ZGcQjXkRgK?U=Ak|dycIMLN~)t;&1P=7 zEVXla?(y$H5)z|bap`A0F6|K>!(b-(lz6L-W0+ANw)* zBx&mgPZiufn6+N zirk);V_6rE71A6@OCCS0=ZT(4D>#rS_I(3A&)mf`PRvW?7kx6tZ(%r)y}XxOw&Rw) z)nhVXI-j23U!vX%z3)4tfd^ zrR0(1Yvk4B!*N$}WW}$5SLLbc?&;cF?TGs&?U9Sc15X$ZJWEG+!--Qz@sz122KHUM z{HXZ-+x=54+fdFXjX&ZEGgwOqr!bS^t#RLgnieBy%O?SrQdZT5Pk1!aZr%el(rayt zqQ;9y3|W=CqWhoKGhYl+G8__n57T~d99E7>xrnzkrVAv+0kJGydlvePhvmxG&!C+~ zG5hEQ+>0S4r|`j6Q3Zc5jzo%ShscJO1s}UL1xu9;7NCvf7^k`w)G|m8b+$0d3|W9GAvMY#id`ti z{qmH(E(dR7F(|MbQ7Jg}m0&|OFta-KQ}|}u^9@cI{Klt$!BbYlMc5owL8ojBlBz+NS zaW)&7v|8mbRx6qDmjQbvZhhV{fdx?+9+Dik*_Ay9ERUqQ>`B}hcDZR zT}>hMipUmb$&uKD@0NBlxSvo!<9uLNqRA}HrE5KRmQ!l#l~-!&RL*L*(us{sN46Oz zy5puiz3XJ+e?ipJXS+TN#22#roge? zg7hhzYdOlDamllB(0D3awNdp}EAR)GPLM7n)tP_jGY>CmrE%NXBop(1a^^O9hO?{Y zL-p1(-GwG5`2k&z^W;jS1HLD8USz4>u65Un2ZvT>$Dzw(>A~(PoF!4+;+V3T_sea$ z%_SONU*W2G&eq5f28V_Rr9vAbLc)IQ_%dtcR@IL`+eLR_V_}D6%pOCZ46vYyly$c( z_vIU22dJeB8vF-2mOWPVjwS^MUG{Y@)mTl`T~35IML4e-AX^1miEf!W!W@ zVLO9LaM6ZENdKBi)@B*2>aA2xHq@x?uj(zEhgMnM!@?7B<@R0VHGRu#*O`qP8aqX4g92-3v(&a`9)|Gc`RD^QGL;<^YWu{TJZ%jvApDnpv>^ z4hlUPj6n0XGWtC15bZV8&O55;XSHWqK{2y7Ij`$a2UVg38JLQ5~fQu7fj$JMbY zjd9ktnVLt@$-{b+edS8-%1R5KU+?v=H;t=&2f{Db)^6a}`u^@nVQm5 zR}%MW_w8(*=Zoid-9?u64g^w{rH5_y4Ck5`$J4v(i2`72Y2$_(&f1%{&@7rArJ-8+ z!nfRBG5hcw$nhf!S85uMXUY0vYYCsJurFiggN2`}a*@A2*#MBqpBDX`&6!Rc@X=30 za6yh3i}OH}_vz^>>5J74>FD~~=fk;Hg5N1~Y**ChRfA*x-WO`?_AMXj-#UcjUGkLh zt#|#Y-1|!Ut*`SXukw8{>wQ<7i<4|tRFdw&V__54lbZdWYtj8n&I9Ky$%i8?$tmMn zy5_iz2D_aruIGJnO&C?+sJvXHy-JgF7?oqZyy>SJVf!z&&c2#!#TfT{NujgZ?izM2 zr9$9(3Ps0ro|;(&vVQBxSn?{d7z(;# zqQ&@d{R3^90`!$xV|!x2U1b9DqAX`v(UCBi=-{Gkf_|NIec5tmxqxpZlzr*2AxG&e z3{Xcs`?3Z|?LouJgxDN{m)3HD=Y)^TIp*kL+P$Z-R(jCu!GaOpoDNtATj@E+c=Ne9 zhxZnFxDVil|FXgJz|@n4_SSZR75FalFtUMN$0Pjk+{2CemU2Na&_xaoh6)?XqXMZ% zjDiKG3K=PoO#=QCwJ3~79#V~X0;3hF`WUm7p!yiA6|UNy$Z1-Sh1zLE?_TAEPC({M zPBLttU=bN#M3N=-Hf|i^9|HlBVB+FG{za@IfBYeAiNgH9+YlqUZRrpp1#RijAQ^4x zd_!W6u?vkC27nXSQ_Fpefe)MM5Wx^UQUNRx&tjN1iaZM}(NDD!<6|Bci3|v`(@wF) z(0x(`{EV^vlr%UmOOf`C zcJ$3j_Vm`kF~;`#j-Iir#80q@6BCq~#em$Djc96;aw^EK8SGUpRc=*h zSHt%|AoaV`nzK37RMwh#x7Ql3;w-7xvlR`W%~mrhJ**iX_h`tRz0TfUR6JGq&9-lJ z-!~U~5BYC5^_W^-|3sm?eDU}~CMbGH-b@}y4n@#LjSnk|Dkm$#6ck*H{0j~#*k-C> z3SujpVnuk+nK^*`8>i^zkS~8WEVAZ0M&{6Lw4=4q!yT{RrFa+R3*F{DT&MPf|A(mp zt|pu4CG;W*zN(GBMUi9EQ8^ThH4VRqYlZgH&5xL zsW(sU~FUSUeT5gom?!aV)QVzoL3CI-|v{vKQl2RiUK9QfZxQY7>A!0&<;aH$OYI* zL6c1e4M;X1LkH0X3rH9-Vv0k7e+HQa3rHF9$=oSwY6j^9l+f532LlD^i0uSpsC{uc zny}I5`T-AYP%6;JQ`R6G(KuriyAx`P1YzIR^4|m8}gQ zmiw*AvFgsv-mLMRn^v{n!w+>HmXO>9q6@nlDzYN+sIl7h$ZlATyeZr$PR?T!SkGf@ z|7MV~3X(SN`h(s0H~Fp9_%D`_2Gf)-imsh!L!hzzJ?y=FB8Skdu>yopyUvVZ>(?*t z#3!m2$JWc|HkNf)3(g$iPK6gd?rZNEAp+qLle4R45ik*vu@=yB&e5S~8_4Csse*iC#e4}J{% zhjlU9s01e(!rn;ZA8!tL9$d!0+`s)+B>y;^@G`|2zs{p=FZ8**>!m~gZ}%wihkKO! z!v+d6nGP0#flQ=2V?YF+=434Tz5Fm&oaJh~Iq(LZvGUo*dgzL|NAzQheR1zQ$wREg zw1wA+XPGx@IQ>C;X>sjj?J9G9%(jjG`J~@|n#u&-^J>;sZjh~9#eeolqjct%z9)Y* z(Kd^2zJYbpbcI}ByR%#U{;=zWvHX3(N>;Tk7p~6Xd#{BbR$H{Ul+rCca+DamFr8`sgYfWF5Ro-vk#fnvm*3;5f zHU)v!lZd>&LAMerkJ|P00jondjx))^Rn~MT&EvzgC} zR>f;Liy5jY{GzyP{+ltGH6S*_yjSON6&*roCIjaEx$^y~^GW$6Mo&8LS;Q;GCFa59 zis4l?Fv-lKm<(3a_9#?b`K9Gcmv5FZdZa+kUnZwyC?+d3A-5>XOq{;SK2}!-uBK!Z z%1rN`!M~t;gG(9LBF>2DE9t1j62gEkt~^7R4GbYRxFHz5Z2k$P4Rh_~Mb!=`668(x zq?NR#%~yL$FFMLJ+27OlrjfqC|LrZ_kIb_deq1@^bZ+s*dKk~xv^U;aN#V)Cvi+C; zb*Op7^~^4-HF8YT&<4?LzhbVr)cy=Ny;X>neqM`(ZqRD^mUqs=^2e z_=c~6^m$9IIH;fBq)E2dp5anU0^DRi#FsgmrPuW2kvRfk)-|VvPT@T8s8z<9erBV^ zT`3~F`nz||R9cJQ9TEnO3{C<}aJZ90PC}*fh(^Qdn&m=o%Mk<tb z+4<`lA!x2DmNeGCd{|EuFP9J7)izCV3r;APVYYtaP5Cv^kqp7)wbvV1omYy8q(#$G zmpS`6!Ed>ak3J}|RDfoihk)-@rUPUCi!I?%wqVE?zMm)p!R-D!y2OY^CG@f`WEJ*h5*2cfNCap5-mo-nF6j~!@=yt2rSx=qBTP?swqgo&= z!y5)hTbhwAJy&Y5c>T5Zma>^zp(pF) zhn6*g+Eo#|S(&QZ?_T@PZ#UBKTl55&qD%ar6S)G!4i@pg0ccna@Cbewr|Xg_7{mXU z6&!mJ;$vLtLuSG>@SjG@f>dbLY{qS7(0u_Y^naUo{%uA7mxr1H15zwj3>QC*pc_p zjq)3p&dj1IEgUiPR?YaqiEY<2eUKkxqtuPF?d1DOmqLF_55O3QCUpCQ(@cEP_2S(7 zn&thF`*r^PN%v59SNB{u3MS#p9p}VY0FHS8-99X^kOOlp)dnfhK0wtGCfr;5VH+!s zJ+B3)9F_`eiJ^V@wcq;X&YIgI+6dX0PYi+bJBeEmW&jDq)3<`$Xf!DI1r3$(YdsAV zeZlas8>@Ts&W7ue-NNm{xWXm(ihGb@_wb-S?|imn{`Gi9yYOA@(R`PmoAN>T=K1Yh zxMTgnYyX*FCDWB_*jwSD8?*%Y8`%R(4q@h-%(Kf~bw7cTm~pX*1VbkcW};xqE09V* zsC>lYo{_kXb4{IKAaUS%WSjlK_wCB1i8HgNck!on?O^{hO=B5>-&Kv8s?u!4I1Z}D z++AY*LQO+w*(@(IVi&9g_Yf*=dl{BbTbXi$$7IOwD&(VV7-*g0HBQ+Hg_>`* z&T4rz77pEq{lXEj^l9!RMiz@J+P{wfIZn&Gv9)YBv7BE-q;{zxR_$exg7E%#Fri0=dh-< zqh~T=kj|a)x#gB>M9X>cE3I^X#K2cnXa*S=h#!V9P0Q`;@FN|F!y{gXi|2lC{huRY z{jrm2VU8TVn+E#{rHs6rbPd@!)sY59m`qPG1^|i1DZ7iH`3icj1+>B)^Xx;Pll0-F z?80_QI@85QiV<8A<z%_bjIkFPrL|p4qx}#eq|x}ugFb1Bq=)!I?ShQ?t+6=6~Yj^flRI&GRT8Z zR-aA|TTwk5Va9G&V>(J1cwsJ%c(Vv37;>;#C-^CUr~7NKY9O0GX(_G8-44n`nYcA% z8yo(fpSDlUMD_<{7CyKF_J1}l4!Pw(xtSZc`t@fz)s&5px2#O=7Soxxd;zP=NxI!q zp*MSy<>x*+$Y*K?9Pak~TyL!@P{woX%U51<%g<8|aub}6O1tP?o-M6g9z2`{f8Lyh zpMSk@x{V9*ik+1JrzR+ zw{@(oKWrAmw4_eW@@ppCHY;a6-#lh=MIBr-5BhPkLLzup9EN?%bLHWik8MeW(F9#3 zmrzXp_G_Lius-$RfI)4>2imvXE!&&+v{JXBqT+;vkmV|(&I-^_=+z90hvPx&76=Lm zP*by~9yldu0&k=Ry=kBa^d?Yy^%*R}bdd?XC~e8YYN-x0duISRLr6IB>gFR!aR)*XHHqI%ll_%%`D(X`&y?f%3Sx3W3P;8GqC#H z7AL~tP2(ZL;SSRx=0ZkYTz-pnF$obX3xlTpx{xPdgKKPE^aj!RO>xBrWD0_EarzkC z;cL=#7AOoiDT{DPKU?_)o3nHu5e(wa`pGJWm-J`){RC}9&CC3G#CC^XW-iog$Xp}D z&yX5Bd4nU_IT?;US~MwvBe`gz#5-VOZi9J(opDJ03MIZII1PGo)M-*cpZXZK2Me-J z*QIy$I;3M|yoTjCFobKQ3(}A2VSRt^E3#)$>&p4j>O_I(Oh;xb12q~3r^#esbY1WL zO&!||D|MUiTHC}Ifz~ajkFM?}FtK?89xK%&N0AqXAUF)+vm(ao#GKlynz8!vmf7j4 zu3!W|vf`KD9vNI#ivzo0CEuX6$_`9$(sSS;FbItwR+tpD!fjjwDmlCNrDPQu`WF8p z{zPZes2o-|$1#V&zfstyAxV+lohka;)fa^+epYwc7M=n3wb`z#~NQZv-l>Qpi&NLZ8~mOJ{~ z7A%sKh>#7|OUeu|bT5vgubUgqn{O1#oQ5K=ivEZ=2KExPQLI)d<_{nYZ0+ ztYxU(+5c3|P_|0VG{V*Q%C*wpnVNSUL=U6X{$&nHspXwlgHX%yFcp!`SXtlA;%n22 zz^|&P5r4&ZL~1(Z2`z@AoY*ZC>WVBE*NjcZcY(TL6Z9Y zSYkH4BdmCj*4FO?p>cP2FWem(*T&tUac$haaretN z=gj@j%$%8f?)_KAT2)z<5)nJIa_4^c6S31}d4KlhUN->X`yR5!HZ>I%+{*VeRFHFz|j)lVTFvL@&c zMhYgb)VcI0Iy4+SXDR-4a$Jyw3LcP7+9-uM zdR?6bLZxolZ)ZHEH2B>6?!$NVo6v!4jGd+3|C#*wkBmwuyRY?M_*^sA{{{=~pf`~I z2{!{smc&#_R-t15i+r9ZzmpP~4gW$>Ry0U{obVS(DU~m=E%6u3b3^@b6tD7ctH(HB z|G4_`ccN!+=62>a;r_P_T)c1*pHfnzf^peQSWUF6 z_)k=i?d$qpdv+0_S;Gw0|wy{r4bj3Sa#_i4iugO4w$P}MyoTa8oD7rhgc)~9|h zC}(QJH;$b_G)CG?VUd6vB3P(e%tOs^4d>gA{Z7lkV*o;lKNr(_>0Tqt(P3-0-lzBv z;19UZ41V}V`cc`={C`1l{xh!gx5s`6a%NCAW@x-Qx4(fl{v89* ztmUL{F@IHpy5qr7S!fE$!*IerquPd_UZG3phjPO$tU@@5t7aV4E%VmFA7BBG4C0uNnzk(E zFyFN>+}D?%_TAc>ANvp`=Sr3Dy}cOuQd_iN$J)=ti8){D?-p;qf5U6MZ>x{;i)0*f z^*M=Y4NBqzi+r{p&)UCjSoH?=bQ(I(6FFQh+3LM#$YA;2<_l9(5Ta{lFfhD^JuK%y z>PkrVy*pnx)$kYTM;leuhAAFo;3*2D465&y0AI%ED}|_iL#`vUg|+=f((BxP^zs~i z{Cv^oCfC5y&C|~Ep~1@X@QIhtR^^0?fOW_%% z$2Jk%gZnzpEAH89hv0hs_rzxURoj%E&XxMJ`qxfR&j!+xN1t#_aDo8&sKoc!?8#I-PP2x)hi0!qH&Ys8PyEZTbIIR*FQMc300K0U+&0{Yz>8PpxR5m_Z6*-w`pH={!M{3ytnDe`ijm`Q_>uew*arCyM z)ZDYA)GMpeCelcX{>qeJnqv42(w{^!fdn=ILre(+R*?iIkO>4rs$-iXfkbs-kb_QD z*%W(9)z{frF6DiEDo3+ns(A{MFrB|fK%Bmk|m2k|Z9#0{dgt9fW7UH^@MGuJVOvsv0N|i{N zu{ot1nDI9V)+a@nprsF#XBQZTHGnaI2#qNsZa{%m zj#UN?0Gmi(Ev{w^fCbK5SxpEVk$)aiaz%1QDhr?sU<48Y`GLMbP#`JL5QvJ#F^Urr zHXyS@ew8SjI1Yr66b97&eAIGeaM_fe_1<*ojw#9>keYSrKD`5x3OBjB8w6LhZCk35 z;$Ocji?Idf#B{~{H~R{fN|7wUuZ!6`SWC$?`KxIZR|$`QHBAZ(Kni3YC6fvUhyzKa zY>Jy00A~PsAR`*K6tWbtl)xy+D9R}FC``ovyj`g)JR#8@2R^c5=T=J`Ucd027jdZm|3bMbI{)MLT5cl(U3nd?1s$#AF+yqTG5o z%OxTWZdR_?X%1Xn6Is6Xn-hbjTD6ZzjPpr-T&P0CH}ZzEe5dvN+&b0nEaD{q4ob`_xywD9DafQ2I1KP zS@C!6fprFD%!57xe+~dOfWd(h2jO6batC4B0)OrK!VE7Oz!^WjA#Ex_|2HduA3^B+ z`#FKiDKDHe%I@!mZMKhqu!COrEpTfD;W`6VG)|E>n>e`23G{;7JuGc_gSm!f3z~ywChT)q{K2)^&gbpfqed9#S9ErPWV>zntLC3ab1f)wI?Kcciv7NeK!hZvZGD~j=;nBqG7h!e= znr6fYRo&(~s_MqP(x7ggGn;W3i$xuiL!1b-(B&6CQV4X96y1x@Ado$ckB?46&oEYU z8n=q|KY+1{6`QCl;zH9pm8-hL+M3ZC{<&DYn6Q{-lhGjJ)W&{jQ^iI)Y?~92EJSg7iAJAcf#3 zhEh~1dz@INwDlaQ%~173qZQj^*jyso%&JEu{;1hpe&X+=TXtaY0f-Nx;kBVBw;#(# z+qXY>)T+M5=#8$yobfBf&41$b*NNTEKA+5OKrgO|03hcEhRnN;S5oe zmK_h_0xYxz%NuA+%Y+o>wq8$y2^KRD8sCHh=o6;x@d9P5{S~UYcs9V1TFpqZ?ifuv z>nb^N?kIbyI8yH*>${#RnW8n0vVj57B%1rY%UpJ@wq!gUWo+Ye_&8h9y!KzgA2Jg_ z8G{vES;BFCZ*>e!PZv|Sbc&x7H@G(Il_|OOTh)NQ*ZLOJ@P#2_SGOl2eqB*NPJ-v{ar?P*%(4 zu1D-h5I>QukS9z}NvjJKtXD3L{lkvh8D2tX*0K@>ju#uASB8(bW z1m_TfkY$o2Ue|#51QHY|a(z0Sr$9js^931d%FcdjvN&NR%XHKf|JvYSQz?ytJ~Z@{ zqS~Th7eNi^5EoI6^*%g|#oF3se=I{M7;P$hnVp$iAi0bYfJU6KN0s?y9mpxk!$rx9 z-nWaMgMzX^Lk&G(BEXz?^MX3$@4&*vKzT^9tDjR+uQ{tCO&@ujmL@Mb{@b6xp;&c1 zHe%U<+g1Ts&a3h(FlUydE40g*ot$ zftYkufkWZ=#R}h4ZFCm+k?C>ho6dDeM5%*}9wcFuL-*uOdQn0*+^(tR7SdTbuWXo%m<$6iz0Af9fPb* z?7>`^RXiiw9!t2gJ}Htq6vv>zNlAP`=?a;`l-h^~vZt9?%z(;M%6>FWRyN0PqUvsK z-t&z$5EZ?NTzCpxVhViNWmJ0k>(kcBPiS=s;zn(vMtz@YBJb%O@$t-%pgIk#Z}liF zq9&G1(N&HlDX{J|oGDU52xvMMGfAXfBS*cDWJ76WPrpfrH1IrtPqRS35BpJyGBpfL zxRfU1CTCxSV;;#(p_QOU=wpYX;e>m#GcixFW7r}e$(Q&XQBO2Wfmz?8()b)0+_8aHm(d(1KL+9W+>yza6E=G|G}d!S^d z&NN>AB-~)F*yTiMa>sw!p*2--D-o!u zJkYj|Kt6~}UM%tXK;~B52)o(T$^tYZvi-^zYi5+@XxU6~O^Hdv@Ra)L4mC!@c^U+y z{1J)@1F7+P=y%>S*h9t*Sq2c7S5)_*-!2Ztu` zHm(_##hS0{$7|22o5RJLzY=blRp5PEzaYXn*Jj2)+1>60gg$U@E?sVHC4@fA^P=)K z)%^13h&7xLQn*^pFqU<4|1!)u^y>cGuEgSZjk2{1=8!Hu0n8sbY{bVHOr%E!qn;_p zBG7IL#Jh<=^Ci%nb*{@}R;qJ3lpRWz4v7}uwgNr3=kc&f{(#{?-{+J&!PA#ae zsVN#=w=s6UFLqroZxjNmP9j_N%UxI(@Ls#Y znY0ItEuj0d^TIOaOZ6CkU;hYi%PbFtj3=2~p4T?IY!B22raP1x$e(0-48E*j}m^jKWlv6@Hb!Qx*zX1-x)Nfjywirn5b(MRrANpwU*=N2_jQ z`sQ9vkyNH=L&@jJ;P+cOY?<&H+mV9s7!~QiL(lOJ3PneBoftO@(k~;~$EcjM4oe zB{#X0`Tg98+q~#up{P9VuYGYBZFO*TKW(QxNH+Ak8+b_hmhPb*#P=hK+E7+DTf{G- zW%*Ei=dR6eGFf{@M|iR?oIe`hO0xyv$LjE=;m40s1$|@HyC@E5ARlcmsRzI!`Z$Id z-(pxKSnZ*AjU3+2u0~YA<08;Z0c4kW8(eY167kfLfaF5TmO}CKG^7u59OxeFvzKBf z<_KL#VQ}Au_}yrhxAjK{4Cn*JYR4jIw|Vzs0tK1Vi`lpmAxQ!>WIBmxdx;odTF+qQ zlcKzhabmfg%O6KthM1Ssz?A0aINmMPArB`AcrGhQF2+2Cu_C1x%R}Eb8Ga*rtm6dQ zQFJt7E|0*h0V#iB!*8YEYI}5?qB23jZG?#}(6NLvr?mw$^M(lN(>8lY*yCEppmRsV zJwZbPSXFm}ocZ%ltdo5H6@!9BM7RJk7#23hr=)ucnng<5z`lgT>OyKF-}lW3;TD zGm0Y10d$nnICL?~HxyldlEb163Fjw@`pLk!Xrbgq8cHZ)%6*Zh%DLUXo^N)<-jpeIfONP>CHhH7 zB>GA0o2+v=7n)@jMldoDm_u-eHd9Gl{P+>{F*%ZGiGZ~1voorXC>pv`5G{XpW9o0g z>yzGUggvyp(qyyQ!h-pB;*w5+3Zj{FATj1lFbmnKSGZm-FRRp`V!=`z))XX$cqPYV zj8FK?sU41)ccgwEQk0(G@1sLm>T$|<7=dz(Gn(B zGnLsTK{nz3J?S~{$IWoUf!x{_|NM`eLBmROWO(E3I9b1eG>_q#Q-S%TyNhJ|18PN4 zc-%Qe`r~4vSiOe|{GaFQq0*y zhPRs~Hsn9%@8)j%aZ_!pF&lg!i5Vw$ldjFuuX;7LuC*b_xzFqx8$zg|xnyLz3WsO~ z0(;YEfvJc$@JlG1t{CT5Y*sCs^$8br>{yhjA?)3~3- zZ#vy~`pkDaTPeuhvC-z0{li-MqzdGVQ$5G!FTjwjOs@MCRf^rm#KQ;D4V5C7aluq- z2cD13?a!+vO8rb<2E-giE|@jp*|v@6`>JNUGE$w}khj~rw_AU_oPAPFgn|?PE-ueb zl#M~|y`%_FY~$`cjMu=n`F5PnkiRB>4dzFVz#U1EuPWxbV0RvH`{KGY)mb)5x@=$w zq0ci7-Vz`dQQ>;*;LOed8dnHSI0;R-j?5i|%x#R^MvvSkLF}B^H+M^Uhb&|Hl=8(J zf4unY)vU-YY7d1DN`3!T=(P7CWQ`|~fU@`{2=W2C`N^xd(B{$p83mvJ$~{x==}W(d z9q6QQ)Wl=s?p%ZdK`Uow^HuCwoBo&2*&Ys2>WEg|1vv08P%^6;_u`nhE>?&ylF#-3 z^w7elFJOQmXI`S0Htt1T!xk-$uw~PwWu%jTE)T|e+v{gbH2vdPem*icA^V6zm;&1S{n|A>=Qx{k1Orb{FM# z_Q2z}5DBK>erHW8wTQJo;e^q^hQl&T_6Zkocq^=1%j&PPL2(8rFXb6;YVaoRNLi_) z(MIVACG`q_XalnT0%GMH4ZL0mldFw?EX2m0RRAt|jAY zuBQlEPs!`qP*7FFvnTXK^2LQ-O2lo8tGbfu#;M+1Y_8x!NHs6_LD*qj_0brd&oG>7 zfy7^td?Btgr*}u}kSghzN_vhL)KjN|d@3wlxEk#ELN5Xf1G#z#r;}86NV;PGzP9hwp=808wB`EyEDZcCw zUB8R-_a9pQ74X@7U?zhLaZ zSB5}ZdRQ0vjL%9*vW5lt#QAKZuRj1NioB={4g6l4W}0s-tf7Huj-!I9pI718TSU*h z=p~=KC)T55=si`xM4^SG^qwWIE%5|AJx#*HQ(LD1dQ!Ze{Ke8t#CitNX)ho<&GB8j znOGt@K4}DCwV~hA*^L5z*Gv93Uv!~tAb_?KH{K6Ec14jt z|Mt6MkAqXvA#V;(Qh+X~LbcpRU_VI(3ah)eh@z6wu#>S;q|Z}E!w!76?*wyE(-0Bn zG_dw_m@}EaEsNI#bP~yvAlvNc9$Ki#nZ0#<9|HkufFSeZ6-`?ZY(<&{CV$lBU4K=L!Xp)+M0?=2Bh4~l52|6p zXc5u8pKBT~I?7)R;@p2aPa7gkl-W|_1Px*egp|Rsov{q+4?IwE%5c=-9*=kPpi%7C zOFm5aII45pch_O0zSS>ex^jqJJ#7ls1>w{^hy@_-t$0~23(=xAbgP*IfKWD`tudr% zGw4?mxHQPw&%lv?C3ro#cpXFu0}tL*Ta~7p)8abNrP*x#OtYEolqiVq$lG;1g)nn! z1J?9{UaA^I3VS-|F4}lGL*z-w>rB%QrU-OB5B~BqoS%~2Ximk`1K*jJ9WC|9p!uP* zNDP5h|2|kLka0)Vpp4a1@?x;T4OZNf7V+Vdz{Udu0aJ)v>VsVR7DtMnhDcP;&7dcU z9e>L&yYAUo^B^IHWMC4;KWp^SkM)S1_|~UQIz?|Y$aQJ-fovDhtu;SoDH2ZfGd@>9 zH%`B!2J3(diE&&(3jzLS{khM3*U0-t04n2Zbek+5X@aop=p6?BY;!j-V%A*YW8nIB zdGoDP;IXjAcNgF9`Ec|7^Z)A1t^1>p`0cU!t$O$TXnoa<3RTkL-uCgF?01I~-J4!R z=i;>%vf7JW=T{Nd2d(EjNVH?K%pFWWarM=h!I(jt)h32RN1jGECp(qa^``D^;6NxO zhC>^^Eskvqp`B~zGJ{9`#;Gba^YM{qbCBQVe^tb(R6U0!cvl zaBZ3?-RV5+A_X5rn7Gc#c1y%{@@>%Z7oy}?C2}tVM`ind$<3Dt;sz(%zP8+!x?G$U zh3LR-fsR}a2r@Lt>h?UFajwe}?fbc^S(l}gq`jCXR73oQb@w`@M`OnWmmrqw*rVIP z7A}T1ow2$lQ_z^b=<|)JBeo8x?EpPl|+isGwMcbD=p5dQ# z-(x8vQg^@6L5fLh)>Tw`ZTgL!7S{(9kfi5J8^{gZIr1nfXEMYrnax6WAdgtv>J}a^ z?JOJA(pHf(VoFjA9}rVr(P3kTem5jIYkbslsqzdMtlWy`)DaPHCTF1A%66ePjx^|6 zVP?1Z2WeuXWVy!b{!{j$-yqL;LrTfLfpgXi<{$mDk-=B8ysH%@W?g5^a0Y2To6SGL zReVQ3B8k-;+NfQ)QU!}UWi($M(_~e+yJ8`Dv-0I4@2i7ICe9+|&WdRHh?Iv;=0m?K zm+nzH!6QiZm~Mz@Asf)*OZJd7yWZ1A1v+B8lg_XPWH*3I(kXV_;425cW)ybo*Es1V zv*Y>i38y>Q*dK69PK9opBfC}vibF|rcB+srSN1ppsRO>RHP&moPm3H{J<%kcc`Ly<^ z&se>E>E-9f6f?+|q7Mj*1xyYtI<7^p#tJolU1}5HmiBOQ+t|kvP4GzI6BZ<+->ULS z%jcsvCIBB4k!BD_kqkgbYsobCLJ`yzJ@!R3??>g30HY>D|aK&BVk`)RBJ#vni5${oeL=otkMJ>dhnU zhya{Y(2t+4ci_-blYP4!A~9Pg@P-B@YZHTw+{g?A;t-aSbBP{y0tgZEq*hkH4>0m(QD8YwPfWA;C9g9fzX1&1k)+;Cb^3;^eu)5EJnrP$ShU$%ItvDI?C$OCPG)__jHl9X*c!smnpxTFq= z(FyL79RPkbfzdCc^iuZhjd+xrIx&?)l4yXkh53w-0dXTLhxo>X#zao3Hpx$~0^kF9 z1AqfW0Q~@RfGzN^W2X*C>`;9kn*ugISklP)>gS%;Nmp{wQ`fHV-*oO%-=)*f+=S7c z)2LGUJ{KoA^{+amGIWql#{0@mFxh0hY&^e(+(o^zT@>vQ> zGE_43|I3z;vaiuk*b)7^TKj*gnHOO7K>Y@Vo`z}!m(PQ@2jvqao<>Fh5$R!O25Sjm z=>c~KCEkKA3D6_~3HE2Mg%S0~i3d?aV}UmS|KksC0lorCH4WL~Pn3s@1G?6Ovjy7W zk9-L}*F%p2A}omWc~=rdkOZNL_zWC@y7quJf}Z)KAA#uzB2Po#f`j*Q zg6Q=?KL%JDV8MWpk|5B7p^`uW{F6irW7 zlbc9Lh^!`rEm!D2wWs%Y zDSZh}L~Px~aVb-VS-gYB4O=7(I81{u`N_LjMi!IT%sye?w7B0EYTiHb^CJm?cNWT! zAh)1rliI8`pSdeD{GoYRK0ySL<1>%B8(n}=RFd3&?%UIG02W6+003Ltrv}B93 zS*`Y;i=SsQj5VR<#BvE2&zDkdr;SB!bTnO#pVb~!UK*!eRd-BMYqemgXX0A;S&2A5 zkNQu<%heI;*tV^&1YcCNGLbCUTy08JGabseRk=1sMRN3_tV8TFgx4%vH{%UpJeSK<=x?nt47y!5vx!L;qF_QITpaxpP;{KwF z)a*QX6Rk0{W%9PSRd95((6%-@tK*)emXmfP&-@Ji%5B!yxq=B! zj0@(eQv$r7s>uizm>GLo_nF}e_@h5AGZK~akYVQbTn}pp3MA?1f}i(CbpM4zQWHse zu;IYHL2v|eLcjxOMjz9cIa|xo59KGIj%y@ERM$(Fx?MuB9-_^--MHOdBEomX@DP@W zLEj$mM}T_(E*1@qz(mT|)^W--k{-N1bbfzB-~Bv4@Fs+uJyL{)FoU3AW)K15KB}yj z{@S3v+FGnFvTlF#0kXACY=;m1KF~&qCMUF~`^coI zY%U!yO6(jxg!w2eCFYwvXlY~3X@1R1{srFj%kv2FpMus_zAR;k?AoA)Sy8Vx(Fw5|fmu;S< zMvD}CS%A;uAOyRpf5ni3!b~$v*O`Vs58%#9EEM!>#*Zl%Wf`gNX8T zguwzhIb+r+4y>;!O;xLB?dY`k8+m&~+Vn;biB~sz&Q^s3onA(qGwS<`w!Gcm=o2;8Y(Ih_RF3}J{_S@wLZ(s< zeff`5j3|}#n86NNW>Pu#bOZT}OV<1n$`08_Omw}H*w45%(r(Ke%x@c+cUjb|y+!f^ zNjX{YJIv4{I)wu8^_z$7Ze(Nj<6y0~UON8TuENH>ny&kw0&mJ(Y{9r+ z4>Pmvk1E1@||q`#@Yqg!*INuU_QQ<8Z}LL zJsck1V|Tp3JH03_`8wMRoUg9L`WI_ggI3;bb?*Y!*Pk4k-|i>Un3oA9}Jd} zMS$z3ARegH;|>NT9)$(DAfQJ+(>46E*H^f@}x zm^_l%A=q*&wXLkJx4co`aFl|3#}TQM%+zaGu7-ThTae%Ng24N(o%ilk*Bi&?+xusb zJ{psi=;x$bojZpTPUdq$H0JSL%5beJZ%&y}zJHm~mtmC|2_ut=S^|TLa3BVYnnCPk zTJz3lS&C{FrV@=Bpdi)C=_He|8bZJr6<&-OzLF#PJ!q^+g>Y+rCQ&T#;&H8v;iNQP zzKx5!xQjZD0UySyEGgW`Uz@+rNwdQ8`*U=bNGz!&%2q1DSXci5qxz|=0J14QmRrt6 z*latpv}ducOc26ucv*B2?zv#>Aj5ytvnODF%vNaD7=Ql*GA9Zri%!fk4ACItO^}6( z)shCWm3jnHrW1=vMyW{(Acm0KC;A03Gc&P$M&yiy!76mbPZwtp=#KmcdHiMC2j-$* z2lb-gFdCU<^zPDvyLGrhKo&G^*WZ0J8hLx3G#YuS=h0sG&=ZD~Bo5s=z2W)$KJ}yHkJyv#%dc0x7v}B0v#b05VC??rSn{r8rMvE%&I{awnG{JPw$%Fz z1}jE}*w)4!kH&+u#ULk3v#YuJS1rjQMK9&gD2|b@+>l}-%l!OWhI8(lW;`CHK?eIV2zP_F=tO;swfim}X@`lduyHb8xU+x2c2jqSBs$oS zIC}!DJLi92mXEEbTE-5#us&!&X3I4k_rAyCxuFBI$1G-&0QZ&g!yqvt7C^aXD-Llg z8j|$A&R3K~W;A}$9W*w9X(;0mLbDA&OZBRyUa^nLGTjf8<)6$YW~){lZ<#b6a*^_T zbT%4d$G%|#nCoy&ZVvPAT1i=}MVXy}N1ExIRti0LAV&Xc2@0DWMk3%R_Ii}9d?NTh zZGz-V`sRCJplUKep!uAItJxNv_L#3!ax;FG71^DZ+l@$M`0gs4TlJHKj2rCMk2NQ6 zrL<`?wcX^EuU#fIcAX+_okAd`MLa)_q+0RFIMVv|*ZJBLJns5YYA?mDh&SZZ^qQa_ zQ9_1q@0z&ZWL+kI+RHJyp4>)1U3jn9-4ft@uCDMzQ6Dch<}GgUw_nZGPigszReH{3 zX_=hh_7da>sYjdlnVIx%1%bB@{kqwkT6pZGBgy%oFL2`H_iV zh%t>^>T0SHaxUm!V^a4@3J$>D-de|QlJ|=#rm`#AZma4e;W16w+2s}vX;1K_W%z^Y z%dev_7n1i)RT0(8rxw%{pDrA^-p*SihsLhko+CpeGluGi##S=0txqeQB<7RUm7YSL zBO_%N}(cVkKy4cJ*@-+C?6)|u;Hv`o$G*I=kSvH zPllR^*$yFAV>)wrsY$5|N!e6`>^f!Tfo2PKDX9x0*$U)Nb(LCgD0gMgD>9gv<#78< zy0kS_C5dIc>YA#{f0=`0B2x9@nXthp`H;?vX+Cv9w+Q@wv=EuODeRr+&iT1sP0U8@ z1rKk(_3Muu3iy_DQ})Bt468BxOqJaCj+J#4wr7J$^kBm}i(EcYV|M z%6ac9=#url!Tn=dUiKqtv!p_Ps-k_iH|0S8dwEUG51MWukJR~?`pF5MHU5(@bwzi9 z+aukbbLXh?Q#4D3euHUPQtq5;$yijo?F`Z@>NRY*DA(atv$F?K>pxtToq zxLak_Rl&PN1$b)0hfpTswyAI3o9slQ*{$Wm8xD{k%Uc659OO;y99lJDj{_I+;XSgkF5Pad4X%M;Ip;IEvG#;tWpPasVuMLUn5G)-$-rB72qsw~W2H-_6r)m2uq<4C^TCx=-+ zyrfgE>Zhj+f2v*9(X%JmT;6HVvefhQHbcduOv%UG2J`NkmG^wAoR{4IT>e41JTJeg z?22qd#H8%q+@wPX=ocDBe138bDZ4&!LN{j3G_P_U6snNlbuFFl3pby|-b!#+4v*+! zS{|iTU7ugqw9RX&osGWEe56~-`@zfF9@Jsb)$hK2^PucTRS_`$c7yo*u%zClv#2ox zunU>O#`;E{R0dzxwNuRc6dK6(!;VZwMAHls+nx`%eqUM&(Rr8hMk(iBbCP2rb%wA? zuZD}yNngB*Q(aRej^hnUh_<{OX!FRbCyRHdCz(N;>RNhY*V^Tp;ieX!;W%U@f_~@H zHTd!M&~$Z&l(gMlWR5FYG5fbchUyi&lIu~9(+Ms6IoBTlWk}F4W*R9I!EbH9;%{%J zaRPf;Cy&kwfWlaMF-tD~eu|D#=YpwMezf4cwr8GMc_r=r_Uhq9> z52^{rI(0Pj@l}(&ipwewD6C@p%bTx}7^Xdx9j{|+pOKSRVE-jO1HfKjw%0{}2 zIh1}WQ81QcmA)&@eN)%oq&^$1Z(CE?{!M9#**<}tGSWd%#*VpDC`t{9`Z~*a>!|Zz4F0hHI-lEsQ(R`;CYAaftLK?%c1k! zZekYuhNk?;403B3Q~L;hv@^Tz)`XbSEiCshsP87w{Hl85Oz_?TsVT4Gs;z5IsK<^g zZ&Dqy7&_7lNpqPLE*%PUUUG<9c?J*4ClkuP$m_NHCDnQv*C7{S^{;|=$}%bpV_{Ci^{H-EMU~*3~f^V=>F!i&#vfx=&p31%KG$xJ=QI@LX(V)kpAW53|8}7 zb(2b&!l+H%fk_#`TQ8QhXo9yw&!TMZ)FqMHu@kG4VBD0lWG#C6`5bQ1kCA}{ezm{4?m%w zD~pcn0MF%@ z4^=4qVLVM*jOg9c*eL(Y=AB;J?}w|dlJ>$aqI9NG@{p~gS~BL3C3nIvYF}qXdZ*R* zJUC{w%|!M?@Sc(qpl1l1YDGrTRn4zO7IFkCm9@E_sF;#+`(3=?VBfU%c07~g6OpIv zh52VLmkzs%i9hf7IqtaGDwKE*&xf~*!{=?>cXTdym@bca7&4u_QNeZBk0IheeKZN5 z$LN$?cu|z)t6cJ%-Xl9~eDZ&cyMK6gS=hB|k}m9o6!aCW>RfFujKpfFgyS1r_0Hex z(=dK%XZM}lW46uQq*-y=DtT&$My75HdUu^c4QZY$fGhK|p4lX9nZcr|eXM?2E)bb# zc>D$JmbM-jrL`&h>zYybmd(@dvET`*^FWN9*Pe~(on?;g$5*;acFT+cXu+#o_6*Fg z=|_RSw{v2q7O9)GjFSR63^W)Bb+_~L0Amcfj`_8Ty|;}uFuyF zs<)ZYxw>L+A{QWH3@W!ObZwmTa@9wSDwiE>n-w2cGa<^afG;0`A}$){j$-M2^ilKb z=8MlRW-B#pr)bxp+BzDRY8uwFEb!uJk*;6UEcE&EqvmgpUc`e&mwtsk+F@bxe`e6n z=;>Ivo^hnzjRs)}Dq<3?8zXnFW8=b!X?@i~6!X(F5yqgo2%}_w&0j92W{BAlehQ?d z65T5){}Z_OO+O`$cbVh(t+qoN33)NMqK3LX7`pO_$TB7EBB3PoiD;Soz^lmNYA@v3 z$<%$JC{;;=^v>O-z|j+F1iKtwj%m9i^Q73p7j;+DQF#>q$&=Qc@hBUf5ua*r9MY6_ zf8-vP3nfMtoYfIR(smDV<91&pmTp#Do^86dLq(hB&`Uwb2pKsCo0Am!sjh6OXbpni(5P<-OVk(Uw&CrSpYK6gZ>Yj^pzat zRhierY5nD>?~A8TPMEg_HCq?EV2xJ|o?kh{FA0*TPd$B1mm#@=mQ`xx>vi6wxw7|4 zYpVu-Dk+LQbcT*W8C&*7{h%*adoNnUlc1be`1IRVRXfP4Xuh1?sD8hn6}p|^WWOVH zvC^K>Ud}SFW2m96`1<-AlDoIGHhFifey>33_uz+;O-(#kG=mGz=M)LcJM>Mht@J+& zLw~Ah-WcuES=9>?YV~tOIXQl3Q2&+>ciCJ%s8_DE`g!W7H_xgFP&Av&cW98-_?Dr` zYD^OzMV5E+3d?tm6h2;9sYoO!%na3g`YI=T+Vakw^ryoopi$p97HTP|2nO}uRBu>Pt>o@Tl zW=UAh5cy`^HAIBe?nOkJN-nXj;gG8>X-5{Z7R6iv#!a}R(_Je>l0RibvKt#HQDovVzD2PZ4p(r3d^e!ME0cnZ~ zh%{-27J3PUj)2m82_zvX-6TkFfp_vhU*5IO`LOrwef_Tco*~ibGBM+smMs`oYi>q- z2MXzXK3uSMs^dv2PMrJ6UB>2H`AA^Ie5dqM`O)(z_Oo9v%MYJNrJXuTC$Y6ueaWmf zo=KBe0HbZ|?8! z?B)JwG-6-3HY<(oW4 zWuGH*Rf*e4kIc+AoTEbGO(mR^R31N89TpEcJbSEt+?3#)d}N>7zVtb}OR4l(%iTHn zM^i+^^8}Klj~w6H)SWMd0Dg9HtM_xSYvus5``6~JAccLnvRETb$)cBLg>N`l>mlg7 z^YcfCN<9LP4S!x6ef-+II05|2n|5g0RHAppx;ER6)u?nTHk;!Jj!Sy9K`@=86xl6$ z^y^t^uzb(nH8I)Js-b2BwO(Zs%=i2mScZ`#CLUmN5uk8lT=v}5tg`-YMwye%it5*= zNwd+wBV&{GG~qA?=&f!vYFha-$e_`}iBUelsjz-QJ+2~CY;rB}a6RSm4$X0n*7u`^ z<nI+VUj zMt>zD*Ummyr_5Zo48G!JVl)k&D}mX=a-NqaZt~8nhJlK|?rFJJsP&Z6FLpE|G&TM+ z-ufg_EcrnYBW6Z#I>NZ}Q0yD*Lt4;3;8|e|Hh+~=sj9>@8d9`#yJC~SB-lamR9PGILZ$L=f zX-+Wa!ZPxUNtwZgcJNE@7XdQ+wdZ2&JDr~-0yJ%ulVvyQy;`3Z!(<-mef}h2W|}T( z)~2%7_3xVVl;17lfY4xZ-Q|omw89_3H4Nbo`+s_gFs1xwRa0gq?zlAQ&Et=HrIK#g zv`3^8!Gh8cExs!WkH$653R?3d5?7Oi#739q!M05vJN*_G9Dm%#>a!=|*^3a%`=KfD z9A`#lg2*vxVpG}krx|Zu>(3i`@~igLIr4w}dlDGz8P(i>*64m-U@l)z5^}B(vDO0$ zEcKhw)gN=^|1eF_&rEE*HUd5FD6M^EK3RI!e%Zmu_MY<<<-&sbgn_l~##cXUw zolI6z;>-g2KA5IUuf4Dde>S=zEoCFBEGc=IsBF0PyuC=`f<`%U3%HqwIwJ4hAOAtg zAgT&kwSJB{FK%C5b4$Wg)zCcoKXW{jhjqFK6+%Jz59&NJ)trBB%vcdY#kqA$ew^y6L%?per*NPG8+u99Yib!%g$N2w{)o4dupj;HN&)nkvt? zj)M6fmqlk+bkDy|0q!B=N8MufMMK95+U)fv;3!)NW*ranbDG{{*Bj;WlOMRW0`4j` z-#924nC1!k1y#uz?1~;DddRKX8|2>kBf}GsDm^d>1%L8^)k}@8`gz!_1}SneL(@X~ zKHO8_vCaa1JVZfx>-fH^#SMG{aH037cSEDbFAb9zE5^V~>FZ*Q%1+6vOmB3*p3hs$nS=(bb?(4(a8=gFGUjm<3rZ<%suRXFiTf4Be znt@(wtOUO1P7XRZFcQfvg+CkFj9whgNcPp(!U74cOe_>z_g9 zIxwhb#IWZLc743KvbG~IHSk?gG9wV~8j|d)JaoA1tMF%dpqRqTTqZf-lkXS&&6Voe zCj&2FS?O7M%#Z!*b`sZy2j-U*B&!rj0*!S*WSsT6=c9snTmTq6@~XxlBn>5lLp?KXHfu8~ zS)|U__4k+bEKL90*d58p`MvhxzV`;eR~()=Q~oUC`~CqqTQ<-Kk}x-Kn} z+4$XCw)NwVRq*@O)?V8e{h1bXK2R?zv7;7^u8d>4_A=vb-Pc;Sb+EkiiyQN^#MZr+ zX1$Ww53;KbYm)6gxu_-Hi-ddFQyBJ?t>to2{yt;vOPSZd?Xts43tDUT4lnlY(n&vd z*aq!#KIL7QHJ_br?e6S$RDQ_2IMY2o#)5$bp1d%Vp-GRqAQ|2zX@DpGp66Mf_e*3R z=asFjU4TV2E_C5%XLg%^)-FyckB?=y06J6s@%-INq}S(-$mtsz7w6n- zlNx?_v)U86)^o7gX5g_vJg&hb6l3AL7`eur!&lY#7R5wQ;6@!DHiwtyY>}Kl8rN)T z7cgPFa|dV!hcFW6QX}b*qlO>B*%i2Ldu<^z-W5@g!ojCMeP44YSQ^P_Qw(mfCoWc6T6oMURL#|RTKU*7 zv`j!fPw6+2%V5oLix%^zSoT?9H&GXTQn?5J)-FksEFlhb0_bi%fUZ;lNCZF$VbuFJ z+}1#iDtQ+K?EaDUbM~nqr%+&*X#-@JB-d|A=Ce?Y?i40k_C-NX7`N#yD#DFS##3T-n}lGqk1&8EaA!v*(;5QM^9 z;4`fP9%01a2?Kj*J<{D-i}4rtNQWj>L&>KId*EiM=coDd{$oSi;Zw4HTk0}zhJNxy zj;;f{-y;vaGHb3xR*6xzIki?5sNG}ZKF9pBXttf?UYEXiDlzLU6T=|Q_PT+8VXWK* zJM{W8r{yc5p0(yZiCK}4U9o8fjz?z`a0Nr{qOrGG*j3hU>7vpRX z=z`~D7}d#x3h{JdBsqEpGm@M=9U1p+c&)Y7W>wuw*1iTY?t^#X`MK`r@>71Ep};Q7 z2FNbCBba8i$kR*EhmPy*(3Fn!iD-mbRdK_0nW$3^>G=EDCQN@rB=%flGq7XDY!82$ za$2%WYCHvFA_N24iLLMNV~H)m6y&Oz{e$EVy6POzp~p}Vh87%6*{(4KU48%YR8u{v4>S+3f{|AVv63Ft&{-O$1@8v z|H`*4X8#Ru;kT4>0@f~X)?gZ<{49x>2YKL*#uTg-(TdsgDG^Mx=_kSu;f2I1J3G6% zZS##WwHCDMKZd`r+&ykql;WKl zob~duR9xqrB?7;RN-W@E3f}K+1hEgWphJj~LP7-f#DgFSh2Ay2{N$q|@(+M*Jj9Xu#=+C&g{U&d=xxb5A;R?vc?GKp07_Bx1 zo2+%4tXYNe4_Rti2m{Cgq(DgVl)Rl)^cnX$@B+489>7GSV3If7^<>J+&xMWo-EdYG zxC8eDd@rj>VZ1s^B+F%Pc>Ian-|u0A(RjS{qLe~^qc?>o26&UkVX`jvGKLSUMd=mV zw0#?$JqN5#8pk@bK3OBG6-d@D*x^#?dgAIH$9=-;5PAAbo)$S|5YmSnr~r2l27JrP zycQA?(ll0S-7a0fl^zKo`L@_V^j9>%sT;pF!N)lE8rU(>xs4o6-}2x;IreJV7oyc0 zS*^!<%-tCFv5g*um<9ZT64rA~VZ;yV&b!uxM?LJABg{XHoFgne)R-e+AD((KdlaIZ z;u^;>3q1=iYxq>pdSYW3@BV_o!b4J{+CmAoF$mZlcos%1oO@1rg@ppUTr`kT0$HF7 zuw(K9vPAOE5!j`W&3AyQ(vW^$1xzD1pl8G1g76?uSpdx3R6A!R>R4gXY23c|e8I{@WSZGQ-As!G5&XJS=B8&k@r4>La ze*r|WnTibZ;M~XVlXnf&f7!Y&dLe zH#eO5FsChDZ9QzXChl~^c1vKdeYO!;VW!pABdh+Grl{5TUQ#F$Qk=6;oOOE3N^ zwUS=!Emf9Y94>vs5$GdP5?kdXQ4|}dBwrO9rp!Lm9i9yu>z-9^D2Y8)ZYYZN@|Gxw zrBPy^?vBY$aK#B3^)_rjF%qrcz76{bI^uvm0|mb|b(Ky!zx7obG&d|>&e1+Bp2Z>X z`*|HldyhDh5mpoK25x`(j@JFwgsgBy#?LqL)e6Ge!rk}duO!mW zs@@eA24mx`br9*PcUVl;{<5%Cn*5LyX3O4r_wxqqO!#hZsVhq+ZmJ@F$VcM3u%=P0 zj$^Lr3l^)Tse*VZ9|>V$6Qf?88zZG}n}`UsfbrYLT7KfCJqA?&0Fi<%(p4%?~SHpSbusg=J6S5mbCr zqLRA^;hN9P!&XCbl0iBkFXk*$3Xh=0)o+lOJ^xz@la~+{XHsv!PWC?M zVZ73oEP>r;#%@t;xuOGM_rogkpDQ_b)&*i_axB0K#Hvz2d{hu$cfQO*jva(YP7=k) zEsWm*j^m8%vM5--O7LIpRFb;BS%WLnh!P0er z&Nr$nKbogH+K74z|7v-pka%ND!j;otChbb^kCsQaYz8wAYb|bA(fryH{w1IB;wz%# z23q*neSHjv!HlNwV{)QG-iPXZ4EVqY6lzXLeyoW3^H#r>=_5tz^2yB@;okixP#w^; zgKd$STDLHKv*!9lnLwiOFg_j3>KZV@lKLv=W})!#{U?1opd34J(e$yX4u}MKR&*TX z^h5j{{n@POD9BVHbs76aKJnTGWI*OwMaT0*{hIS2B=e1b6WaeIGkR8#eJ7 zNSR*IQMPHDaPM07CL0iyZVC7D81E-u%c3vk74B^@Zq`i*$ZL^)R&hG@Mc)VgEJ!C| zD}5*a+LpRJ(E9YVMUmxUDP8JIG)(`nqWs!MZa~^sPN31otJGD{fTcC~{hoa4YUs}| z)~{tY7KDe_J_>NUo}=X&c-wXB;_5lpbsvtn(Rpt+&anQO`ZB}1JjD-p$~6^$iw>3g zz@4H@ZQ)L-rfi@=R^av0@GbCqY53VR0xsHDDh?MNDRqU%jutyTbT{yIGj})eaWiu7 znl4oSDo=CeIo#P~E5OIiV5_aKG=65Gr?g~dVX*Ye%tC)DVkRudln&mMXKDaHybQcH z690oufMoYz`>aqUr|D2H-+}M@OnzlnTW!7K$QhOHQVw{~XHzEl>~N_${7?ags>j?h zvY8GgdY9R3?R%GLZ}G2vHr?9yEi>K9S$du^v-SIV(@bKc&f9ws_!~0@Z+B`B&>L&X zu?lKL!=*s!PB^>E_@zY9cxMgjdhjsf~wO@DM8iArZJ#x2^h5A zUIhkm>tZrubk`JvL0r3xjFMe63BRLEq=7#UnmGQbUqisDo0+Nm>aQQ>ck)aB48OHB z9=#ZM={M-Z>C?_~a(0uPy)kC+6{LUcrb*DI=pfg9nILPEWDWS5R3IB7XPWmV39_0e zuOPeE!}Ib?_oOGY>0LD;*rjNWKaE#dEJua1I9}qRe?jp9JiabMGma%s7;4V7@Sykx z4qrE+8M6{Yh8n1rjP#FCx_uyjSYpgj!=yz5#k&jejA?_3rDvX|F1-SsrV+GIL zeMM~LaNYT84oY>)tKBfmnKX>751GNfeoxkjldD#dyCiZJ@qnB$lUp3WAlGRWkn7O@ z%N_&SuM+5@$f|RFh^od_@v#AM>%i(v(}TbE3^2a=E_0&>Cz>kXGBuUCE^+6;>QAON z^IZ_5=GvH9rRh)ne^;K{1#aJmoz%rBD#?G~=le7DG;sSS3|be{q$K~5pKs-}ib`;n zsl$AiO7@N;O~3NWFq4t@Kn8#IpU)a9O1-5Uf3Kft2F7-Bn24fd?Q&yexW;eV}8?y=O!6S)b-a$b@%p8ko zv=9RMiH>08&AN!T;!E#^IyqY{c7&FnXkeKmY?|(V`ZKcOcd`NV3Rqh_H^jqQ_s;&$ zp__c*3o*OU4;vM!+7NUlhWrU2iQv`Vx8_F{wXLNp?!T`;RNYBGPd&)h!^~*x1cn7z zT>KnA*d&~%9?q4Ao$6tns|ZBF<2P-g)scU+58NJK{H!_H#GR*x_8%Pnx(H-ENx>8A z+{c1mN9NhYw6mR_{^i-rS;RWeej`qut0OOm!wwJU<=0i}Iz}rsvGb&Gpk(C#ltlcm zgyDZBHb99QI>v|_NP=^STH83&Dh$g-9AtX3mER4`;DJ&pmZ>K@3%BE>_RKgBr;_?49>%jwQY^NA`47@ z+sU7kE;_2xS_9yML)yl+O*NiHPj)1C53?*bn)mM2jYoKC6;~MABX1EaWNk0+t z%vFqV^HbnQh_9;{{`-f(TF4_;G2-`+fe8>dSJ>b0sexq>kSmPv{ZrsqNT@3e4}GL! zqZm^^8FcTFN`00Ain}GVIHx8{7nRv!Rh-kD^#oj$Xg7V6@h4r_fBbxUlqO|`WSDz-(p*al(!7^U0N zTWnKrt%d4s5iPc9wSI&WZ7D9cskMHHDsFKqwrR08LOHdp6x%dfYoblS&RP%E&=OE=gS0kA z1+?rJ+cYgaK<&4@n5e{h-ojr-Kb&CNQb-T%fv~wMZYrb&{)Qmxv;4CRkgiS5^*u=G zB6P*VGt@8=UW6`K0HLIjo<-=g1#=V}i7!HbU$8}aBKeEZl?x^)JTj*Uoxfm(;z!yP zp-UIcP&r6+5xRK624#a(D?-B;Oi^fLTM@c&!5XE83@<{LFIb@3kfb6sY{3o{j-)I? zSE)Qjk&rP(YTr~WQItsSBDE5g=cpKDPmx-Y3K*r06e&`xPz9GNh zx(Te%#1=zt8G?)hqKNmGx9e=bx0PbT3&$X3ZMz`qo)W?%=peG3t8%^a6`~di#g!32 z&~oG!SLH^fGole0g=--^gl-|TxFGA0SBM&9EbcqO9GZn(;DT&GoDmJk7+fR42)cko zauL=a-dmhU4|`h#G54$!Y@tZxDHmab;EZSrdxL8yXhKhsaa;oHeYaKTlAVG}!oIwC zd`R0fM=*iLA^W)mHUyl5>%*dPH3S1_KN7~3yPo?hxHb%mDKo4;Kr~h zTr)uzx`xc)vR$`*6j?;Kt48Z})j5Ov_-&A)xLY#{Ah@qXY5 zJaRr%?r}zQUb)z8cRXr6O~54*+@Z3_2xwJ{7gsyse0U5SKDhnlP!Jj!M0o`pc;R$p ze8}JP;7|j45s1C_dY06=-9gZU5|Mda5$h4Jj%rS0aWH}fG!Kd8ir9#7K596P!8H+# zp;%-G*ZKPSt0T6`{v*z8hcn(0Lw_|y=lYUxVVpY`CHQ5McVx0j0#5*prH@w|SLg0QS7Cx@H&L=~2T~E4c5eD31(5xgM zR>UuEvDmC=pSuWgZn3zm1Rr`tDL3qG7Su-q;mQqzW~KP>AU3#RvAhFH{EJtTCVPf| zDqVxz?BiZ~^(vbM!qJzx^vWrl8=}x>we-q4n;pW`H@~#%n9UE7=~G@>eU;4y5$J1P zT6N0ig{b$1EUh|cb3!Qkj+ZzbvjrhSebh@FufSI!EPb&{98O>^$eljjB@SosH3(f_ z?^3!Wm=7Y}C%TmW3d{=O?kiqOcLMW3l>3~P(w)H^5bC~_C38ox07SHpeaZY4m<7V# zm$qc?1m=dw_n9r3JA>IFjD6EfGmc<>h;*O)(#$I`8-%~FVQIz*%nMQL3s{C1-@9MgIM(C z-~t^MsUbmqHn;=(MMj8m9~yV?a*-0^)u)C#c(KR;vFmHY9XKq~KqC9XaZL7$%!CJh zBplOA)&B_geUvz+7pk;`r+qOvCI?k2f_I-bF2!E;3PHcG2bc0v^%B9QPXw3pLX{pu z^?Te~r&{H5%9TKoCE6E3QhefnQ({D*=zrdSs#Pdbt_O;Br~V+^P%4l7imw{!^nunergexjXeIK}tz@K8I27Cem+-)+tDauk`Ooj7U2A*!xc{ z^1l@OK+f*eA%d_{!Mx2CJq4uU60LKPIN!!!nHZ5=w7$~L{C*e97~~os9bP6*qyWwC z?O2awP5BUL(Um$ua8r7TvZ2&7Lb~H<-Gcb}4Dgk4B4ubsZ^s5COG7HN&6^$6nSdxwX_iPWO`y&W5oY$;=bL0zdRh#X%Ho&XhTLaTXGH6b}u{sbO& zv7iYNO0^4W|LFxIX>j^phgbRj;rlvMu@EUf3W5Msqzf(Lt%C@=mU1QNeHY6z!AI%Y zq8f!>5>gEJ)93ISpC%y}D)I|`&s(QCj3Y%VXtaxEl@OvdvDo&XUN({w_tWo?l`jf- zc@r5&OM2_Hgt4bQ4yx*6*(3xgJwvxq=v5#UaX$kNIrzE=7^uiRTE$xjc}l}KPr$^A zETY4_i;!W0DZxR4ovB2Ew$dd`IF(*E@;xp-_>hi|o2VWu@&~Pf(+@f12EN1foLX-L zIf|nVJ*4I{Ahy31*+g4-JGPzjq*Moyyo=gSFQ*`aE}$Yrbdxt#`zbTuJL2V~_}7Pa zN_Vm0G}lYLYUG^Ea^Wz0#Xo18*#|S_lp<-6*)o6dOLQUvZrhZb#$ek6M~eM zu_Ow;bEF3DSL7k5>M`*gDs~ahoO^c21PlRSPymAk7>q#328?^aU;u`7@DBDprSbWx z4^XNh0FeGTu?rH__MeWttANke_30vl7QiZiNJ$1g0AK|+#`HkduO*;L8HizTfU3{r zDtbUNB}+VHi2;x{$dVc$#dQPtGJr>E0h~$3y*f1@t@fSy1hJN;y;(w%)eqJPC7&P&|SW*1vM5dhMhM`2QzbL;| z=*N#z{04^U5k)r*6(>FwbBYg4ypwa<&@QX>7qYPm{ZK2#uWy}xUMORDIG#~_cxz}P zMDEpwibS11e~wjX%7hfZo_l&kp@L!4cvkW3t&s^=xizPy(viXL$()QBjr2i|?S3Eh zrSo7JaA#g;8p9D=vp+>7>#WR@@#-@5nK-!ZjYira=QhlTbm`n*#=bMJi~Y*cz2>(R zksPzPmqu5GFP|xcd*5he403I+`S4Sozm{?AwChZ}a>UU5nIe*9_U@AG>dVV#qTt~- z9iIoew=;ayC?jrg$}OED3Me!Z40*OQ{GL#r)62MZ+Wj(PJSs<2P(;el$}d&nx-XwK zfal+Iq!{vU&-!^%o?n)MbYg!_Gah9jS}7v$%_=T=;V#jf!NIsU9m$4#+f9DSl;=z` zzMa@#W=uyMtX*Db#7AisRdbAd|#PV8VY)6pqnh9XjfQ)NkT$&KbL226Mp8NbE9 z?SNRK&`6gQ*k<b^e;Km45Hvw%eFkXSr4$ zZ52~EYwM%EU)yfuu+H*_dGu8R;XJJgdmGzs6V9FGkMiiMWWqUG2lnQ--6q#M%Z>6F zs?@^;TIu(Xx80^VJIkNh(N-CSv$Q_i@7;Er&gd*Rx1+DJ4d-r6*w+u1-%<}Y+cMeS zoXO}Z2is9p1%`{ZZtk0HZ_Zlul-t`;Rzbt1TO|$xwm0Wyd&(WL|5c@ji?q5OJlWoy zSL^}aQ@>R8JzTQ2?7(w-6V=pH?t!JKY77@^-8`__-drfenIVW!i{I@uwrQuf!2yKR zC9@V{oW)kef3^*$n!)>oxFxgJ{?77{_puiH5nP(nrz})vL_L;x490<0$BXDgRnT-u zb!mJdj5TTsQ;_oXMIWSqmX+m&h6mptZdPG+VM(Mb<3Hnmbtw zAZwS&8XH+7cf*i1B3X+hPeEiijO>P!T?)WGy$ZPD=Ux2K5(vGg z)XcPHODvk~t>Y$XhBBIFsv;!`oK$B2I5f>(^8rU6mgl|w+E3X91p#mg0CWHl(*i*B zHwlbTNdhInUjp3VD!_H0vgcg^fG+^V0RYnh06hRUPu8Bqe0!uW9W8O}Ph0k9Ql#V~ zv+h&TJPOUU*AJ=8b~3L%|KJ0#d z0r057&ivt1T{~(`_HZ*Qv%Tr7&&MtF06+ww#wdh%159R#pEpP$u!>SQOV znHC;{BKEjxKrByv3PS}wlD<9apo^9ueWxwk>tT7mp{V_|7|W-b7QsMeb|MXcCM^K) z0DzaOt*S{E*o*}KZq$3)fThr!j?kkrJI&c7HQtMsIG3RAOL_c zGKd9$A^_9@a7qSo0MGyc1psIOAo%uMLgZ}#2mv6D41gYyN&sN#;|~HJkaH8-vJ*Yt zpv611WoIH+pC7;1eY&E-q?vXROl5Y?1^{Cn0MG%z5dfxSKsFcw;17U%02n133;^%| zfFBu<4Q5T^?k>yoW7!8!S30f&sW6Zxl7S`wt^wdK08)X|h6AGzD3jF#0(KlZW7(O18^!n4+ra%Wi_N1wH~u`^^52tN`^RC0>Uv%?YwPe6zBZe@!l2Dv z;j`J|&p}&$JGSBKn5xl!ntkP?YIPdH>9wWbCw#A;<;56p`CSJtBXe|9MI z-}=9lbJhP}5-ITisPR+Z2vcYe!)dIg*&dCC6f-MeLV-<2d(FRTh70AJ3|hkgtD=5F+B|52TM?={o5C1%?waJb~c=jKmT{-ASR%XXAT;{G_MIl!(i~cnFM} zIyR5K&R4?ns7*3HziQapbk?3KE}mxzaCK$Uu>pOpvz=|;49HpN)6ifpkWn568X4_Q zZ>ee&$f!vJ7h%jGyg4zc72mQ~f18Y=0hCBaFUd%WjG_Q!NJh`dNN(A`=VAXwTsrkhPvcoxil45=iB=|H$Xy5-r z&GFlvyPqn)qVCJna^)g-;C`VxiT8`_tO6+D_%B?ky_}z1-o@?Ra=(3Zl81T2DE;N* z{9*x9;aXt_3HZ?$p43?GhHc7JqT7A=#TS88Cm!vFD~^|S%-x4drms(gNTI%1C2AF| zSt9S0&p`E?YTh~oO0%S@JBapYgT(K03Nzeaorz}Ike&$`D&H5{6{>A@h>#Xejd+>X z9}O}T&iV23eQZOKPH4QmV4|DTJAYxOPQ@BEY4qld~9B~tgV54uhN z@{N~bu(C}wHhbb<9&LO83Rx zg?x`aJf%&oXi^hhw%i&9LgT@Ytn&nAjq53dIj5km)PvA?u=#>MgO$R=Kg+0_pwU`! z;fy(`yVc;Uc(BU?xZJw&!5`m+bkLt#c41C*;|wUn^J?>6BRsv;Bkm_P0^hLXM580q zgD;`Jts>-m2jUEmnWs)Q^hLTU4?*I=Ulwf2UmiU8v$L2B;;Z8n=G-`#;mHiY+Wfq! zDt+KD&;m(nc)9wYj?4moN$fouA>V%ldw8BQRjOfd+-4I$^k-~qPs8_BS{<1+{?cN3 zJt1EcqKo;Q_wbDgmQWE(w;s_?`ey6={a<-2zv!?w1YJt>LfEs4GqruPjP2R~s2{nW z)9uSAlcD3LLzJ6Y@ou;=aWmAp`axWxXzH_ZmBh6BV99s>i5O+6dE7IDqL+Ikb$hRM zzCI*gO5gF$zrp&aEzxqaC*Y$#aowhSSwQBK&datS?()}&N2~^iwt|D<2z^$%W6Vm$ zDUQdW=+j=MBgNGWec^E|@@v`yu+Y0~ioHrFgR7kS1qsCc9NR+PtIEvl=(!E~7P{2Q zD9kW`tgk9duA@-^Vod!MgTVtx<*KsYI(i;J45_BEn02G7addq4ojtS^Cf+d=)SJ4LFLuAp z(OB3mf6O$;wid?HV85PeBs*Uh4^r9#!!rJc=ty4=&7U+p5H8?gZJXK<4dXUpNU+`5 z``DIH602Jk5c(*U`WtEFSb`F9PUCsUxj( zQVsNDDd4yfzPKTJN@c?ENgcoUk;G=g@L7EeSTL9{q^T44K88n?P#f9>hW={Tn(8jD zQfYG}#e+KclBb`Ocug2G+Z#}27uVf1C*Mq4k~mEmvfArF!8D6c$vt5*mL$!#_P# zC+FE^X|ykk2_t-*RYr{Oxyc}CV1?@KraL^{Us*HXNV|V}LPqTN^DtgJ!`AGjr=k!o z>3!czIyr?*;~!-66^wwz##wKRSx(XYbp+9`QYCGMn7SBzVUsH(JSi@I zVYE~-qnMl?uiRB=6bhSsc1P^Zlrr(DG`C;0e$L5ANwI^`_0oIT%!ao^bT`eYoTs1N z75g?7vi%qIY?UglEY{D>HIvPe5TiCFupq6tK`g%b<^|R5@jz4BcG6vIUo!$-qV3jJ8XCn=8`GlqpK? zukL_qSE=&LzDl}nd}WI-^Qo*5^)R|!w%lBnUaL$|Ie4J-a`%3czx z*n^F}m46TUX1=W4RY||r1xj6`YTe9=b92gN+be?zRI-N}EtM;T6q#=-cU3*YjDu>{ z-ga!dh}8Rz(nXq$r%ckTi=CP6-q(~o&fd15{(A$y?$>R%Uu{}nOBVW#Ch0W*K~hCq zk^~4Vf2H6@fDlmcSHD9Rrbi~}9{_>_@_{5p&bCD_UKmd64|HfUtiL-32)|_}=`{f% zYisfm`B;hsOI`*Fg+g!MXkT>IC*iQ26{(cWL|`WQpt<)3rbKXumDkP ze=xswA6Lb3DQWtV?%{17I8CsQBnP_CrCw_34jkC;Z}LdXyf!oxLoc}0_igh_=lfqgC@h8&-NcK-n3K)<+N(s<2$XW5;G_I> z^OpBxE+kyPOa1van;ay$KRSvbjivZTaW+2Zd(u?A#2#pVB9D zh(*{Wemxm?NnKVvScxng2laZvXC_EA$um++Q=q|%f^k$Y(e25^#h44@??ceSMg(yB zBn`J@*ePAIxf}=%JEczMP&hA>&m$g;B zn76snsv3`UB(3@Ch6s;zj7!DPq?jCtDHYB)#VH5k7zZ801Zk4f^^&YFTK@qpejJ(0 zY>GW7Tw!GcWtQa8CZ|8SQd6sl%^%;Pvpg=z<4R69dHm9;DB_tM$mmXH+PmXl<1SXc z*Fe{{U^<1ZLR#LL>_ia2nNf|G&?Uz5^oz#p+u4xwTbMJx#Pmjl3 za{A61L^vK4?(;CrFf?7|fiGAhRujLCpCs#U#e%LR&-h5$%Kl(=LBwxl)C)R^%Yg^? z41xcrZg-h+R*qEbay0+Zj)_sjdS`H!q3#k-MBg8a3OhSGMh%A@No(bNJ8DJ^_nq>Y zyC0{=yrrkAAWo?fjB>9JNMFqbHfFVYM!%h*%x`YYYW9p4oVDzq&T99_n|8FP8J;kX zdE=*;>uL=;gm^-8v9yfTqh3kSS8Ix;$KPH2J)MK4IZ;;_(IZ|Er_T`#a-UT?oZ7(F z`Q!4raCr8FR}3_CtqD#HQjyzJ=?ItBMo}=*$aaYElx1V-82LwtV59@5+-Ic@_cnE8 zetz#U8vb{J7zO27JFJMr+PbX!L=aEb@G(%~wZn!T-3~#Xui4lR41(rc{=hNi*1ifY zqs@pQ_~J}^?CI)RzB$tdv$l5DZrp5bsmR#VwX;;9!}%?_Q1tuC6^;IH<9T5^ZPxE~ z3nNE;_5)P~fGfy*Dj3T){&e}wU_VfWJNaNieET}mM5tzYxrLkX+04+_yCLOl4s#LY>+J3O0TJE)RvF^1z$$IhG@ zP9GNJ=O4F+h9zkgq60(PR4u;c7amJmQH%bQkoznb8PFD9sac2)^(38EX%}XYPC}8G zH_+TwuliKnO}Ra}NWZo)FHLQe-KLqQAYPuYUpv~=)q=j|mmRCPdo9L7D_8YqoBR}c z2EKOmC*VkJE-vop?O(C)p)IR|)xsec*LhC9M*d7#A#urFQ_yH!y%fZg75O7!y=^RK zU{$d0WvFa0tnOH>q6EW$756+Bm#jRz6x@x{aL_%lr8PF*9kr@y!u#x}deDVVmtvE43lX58>; zRS@n}VTOKl|K{0PpO&Ut>~JKQ=%m?(d7B4XquX@#IKOu~939G&b+JeQ3#la!M_LJ9 z(^N|vj`YMz7r|t#<&6F>?=B}4b(`<)QGN66!T`Oi%cg7HL;EMRI~#s4%y|Q2Zs%!nzN(7M zdyqFdbK9A;OLgLpxZRZOr&(hBj$s#-%=`AF9&tOeEkY~Y4QyF`eykN93bvesj$fYw z&aLaYNUs(C6>PcK_X_|6v7(;W>7v71z?LY&%=J0gP^=R^@Je(z3T%lHhy}n%EIU4s zAv*j7Y&lP;0>D_T+14q`-^umv%@c2`eD!3R3adzPzIvKWg$*|MX`T`147~Yi-ZRdb zrWf+G`>p{mzNo1I7YAqHokwuLJ=triHo&XrtM|%0-=xV`AC~d3m3{v-&yBOO-baph zeueb=BDr=dvt{nDTpdi>nc5As4e11p279^^%E2Ex6JzZrKi zAZKBE-;8@0!e%g6*G>O*WA^d1dmF(o>=qcTnXaM%61GZ2Cj#P!>Fe1ndUcRW(L@NZt3+gSbXd~kJ0B>Hz$8|TQz1#(C(MM z#PKZ{vcEm?ukp^smjX|Kn?IuSz??c?9WM!X46BHKnim5>{5Y@#h+eOECcXi1%KX>s z+RTARE{Z;5L7)P7wlrfUJ(2`(AjXqU0h}2gcO2fT{4NVI|2fx`x$v+vwMC-bNkx$0AeLV{ifs zTkHhgg8JCg3aHxRdz~64<~dB|_H|ZKDOJa?)^4sFkF2@e!9=DYdBf!NGUqR@isO|wZ1DlJhpD^mugKedcUvIm?3pWX+S&; z@*K4aW_~xBx!sP}We~jXbDvGU!tR2WOlt5?81nu{;Kv%Nd(B5f2NkiALK}X2A*9px z2NP@SgC}c|u|=fqfbd9?es<+sFOT=uM~WZS6|pmC8u}-TSLQHH+jcj?N7~DeFFx!k zpI{Dt#0ruZ;|G1Qc^~$gkLM45#@YdklZMp}a%&_$havJhuy7u}&;m~3wP45@rvEyn zpiV7tT*Rc^p~UXJ{_Dz@rn_%{tVyh%kf`5{ns|5`+w#%88@1w_Jy`Ai_u&ZK`_J>e zZT5ffrV`muwrxr*te&b&r6F-Tyzi?|#f*}4_}_n;vu#%rXU#(@Sq+QnE&Fl8s?{QV z9^FtE^C|mkocv?$mXSl)#d5v=Yo_1+@_7R9MqT;b!Y=*3qW@avcanS_-Mdkz?D+%w zKC2H$*}Yco>b$IZbxKIQP?FzupT+lnGp}WCq@4Od{y&z^1Dvhzec&QQh!M57v}SA7 zter@Q7L}F`JE&E=_9kLgRf?)TS}ne%6g6rkN@>lacI{EMckKV=_wUo^Iqx~|dp_^D zS8`YG88zWtKuuQ*EEMktY6q@PA9**nP!q^wE!56TR;JLHZaq`rxI=KGCMI@diHS91!GM24b$;m#qVqcGH)}RW5b1n zhLYFLCHAI3DNv@rZR6b)gvJNmz0&zw6bQZotqRWi4yLe}J$KX5-Q@3HXG31jfiX)6 z0JtG>;2XRLY`@)s3_Z~W3;?bP`uI(@2Vl{JXjP>?f?bJ^2Fg?(AuK2~72rdRy zy;nbVzamuMU0J!H?h>BY=xP#>HRG-AZ{h6P?J)+rz4nf8Wj{_8u^3cdu3qBKAylvL z{bfOVH8O9nWp%f%MIBhGX{cO7GXUYxxMsE$M5wUXEAH+K)*g{Q99)>95L&4MFC7QN z6L#B4J0}`cF?|KT_Vw9J=;Ka4r!tnU8uf_$toej$J7+=H%Nlo)70roR3+8I7AI!@Bg zb*wQ10@CI674AY8iZypr^_uT#XZ&t$cmB#*f_%Hv3VfWn)X@PpC5k4|gFw}SiuIIc zytFf3w=OxaIoE*zm1{+P&4!53(~!F1-P!LZgo5LZhoc@m5vLiqnn#^oU06>H4relL zneLJGSK{Aw^1ofr2G&pfTwi%Uus57FDt45=+e+gk?aF$xw5R?g!2R92MWbuc%8$6F zkmH?OPG^jz5>4BHP(TrKOgmZ*(7ChA>TBjuJlU`tZQ`XqO*$oibhdek3;7vx^rzAVfX!*1IGAL-o6O!6IIWb-iUWj+ z>NMDi_^DoLarSvvUV-Dt;3VD2M2iQoZ**{Ww7*2oKT?_*FkRQ*cl}-^`R?3K_p!&B zp3BPQ=DA^*v!pW>;L`TOsMQD*Aa*|aA4%M4$>E$}@cW$bp)jQ3%&)GUiNX0yuBRr3 z=R)e|`LkH%%AL*rhZ;B!t#i5Z{TJr5pp=~*9nVo7gXgIEFOnta!E{)h2V+#)pm`RQ zQA$e)nmbqXPoq)){V>hnjYb(ez<{M@XQNSX*DHJcvHYp6!(mxY_Vk2AJ0%GbN5~$Z zkZ>&w%^sO3YI_b0xMdGa6gd@QvwJ6seqLxo#9^|#CW>4Nk!Q`1G+;m``{zWFbD?1N z_lctRi{B7&@a(3EBG*ES?1l;YKK(uJDRr;L;kNrEb?3(6>zd1s_}!#q+v@j}0bhg5 zYl3$Np-Y7aoyo~`{~QiF2M+FGFXiR`RT?$EoRhzxG`b`j9_N;oHnD79h&^kH1XvZd z{EUOkKfb5*yAxbq8|*R!omnJzW+l^27m_>2{ke56;q#}I4*%sx$5CYACYD_b*E54B zc<tY;Bn_8#vW6u#|_G38lq14we7=sZPkzOnH&1n(%&r&MgRl0_@JRd z=)~e)r@I2j**MGcx9XeZPaG#ghi)az4NLDe-p@Dr)K};KUgKz3np69xQRj$X^9ObR zSF>&=J*>PtWp*iWFxJz&^9(mnX>w|R?&xhA?2Ia0$=`d9w*l}=4_3=}Ufm?$ZFH3? zsX2?!)M1J1JWx}!^FV6`2Bf*qBCcrwysqT)IIF)q4>#RWDo_-fW&-qU7>o`#yiL~Z zSCIq3wdM0Z2uIDhPZJ?ZWxIXql_$T(VvCNSS#+-58VCbkd&lI!e|;cqBR4G`H4x@j zR2(JGbjh(%?f%xSS6?RhKUz1hCyTyQ#m z=f`h!I7bcSWe!;Q7S2mwTJj2M8Mu=6=oOHlBamR-%Odn3&zTTY6y9f2IsU6IPWO}2 zT7StYI5l{p&LreCpiRZJ-gQZ|lcr4t8T5E7p5Uc@Ff?G0rcdyKA5_erULUYrC_mUc zh5-`-%_r74+JI{6m{>S8Xbq6R6qm>!pADp^o${O+I4((ch7bVv$j;MP;D(jYyng2? zVW;7sVO~>kDQNrM{{1bMvT+X0!6S|*^{&ARAy0$R1BcUlX{TXDd!%e{5xp%A+2e-& z(fQWGsE$LynzVo?2SId-7I&FbgR|4pM1kH3#d09A5$o~9qu z5q!sBm`lmw>62aSwD0qM4#rQ$l^njN>Bn~*iZFcHcTWSQ?%huNJTHgXYS5MgoOI$k zg7wM=0u|3@{8>Gfr;$CB>~yf3&8r~{>pQrlyS?`#3`;whr!(d66BfTX1Ooy!VX@wU zbg&a~HZXOtbK|VN2L#wcSR^@Y0QaYL*Y4Y}+2MxYwz4^8-h|-oKqOR-m4dqg0B{ zkw78S2LoY1okx1R7;l>(`qFy`6eb{mLFE^@8@=9b+kY#9I(?8IZsqf>(7&o+kyTe& zG2JpFEdFwMq-r9x5~&-1w{|d)>50GRNM9H4?EpmIyS{OS37XXLjNLEg+P%ST+tU?| znYR-dksp-u!H&UjS#@PTC%e~qXu`f}KH6FBP86aqyl=|e`?d;YYF66IqKObzS@p|& zX4&!9gvH+u_)PbNmp48<%Aa`}tOn$mi8-xf0XFEOkSa_#^F`6jcX0(xHlx;W7&RQ+2QEOcL^73o>3r4LG4QcUOz>M}4iDXaeGV`b_X98Q5UnUJZT-Y7Z<$$py6|Jkrj zzg$0lkzRwAEWW!)s}pg!eXyMbsIl3`*;$_r3-r_PcAu%Y#k&`&bt3jX7q$}swP5z0 zZ1c~C(faT7AAWj6MP@zNj(pz~a1iLPW48{hJoarsHJNV3%h3N3(8cPf>aUqxF3NAu zXYzt%Q|%b;Z-0KT<)0RKU8x8`@Bskc;2gB%Jm=C|@o&bpf_oI%!w zGUlymu3lQ%R2!aT`5Za25I(;te@%jo*f-g?w*!Hnweeoa^M1Di$62>T(Ndq%mpkyF zemwNNEe|%M&=1!S8Ku&IO**XC@OPz9ugjBpop4!at?9>|GKwrnwnyh#Z){-gjIvd& z7}k9@o4;}XtjX#TSvLYG-RP%Mq4^}cq5rY`64K6)ezNIAJCGWKhWFsDfNq6h{k$9@pJIN|8jpzD=%st49H3 zd@=jVWI08aNcN*Iw0i7BgSoAL=Q)23G%p9j{26FID$)i_Oz&PA!K=Y03%C4&(o2EB zf;5=QX}y6Nf46S#ECJOC8qYfk2C2Q)V5*`GWGD75Zp{Om!rS-f zc@jkF>mM}U&|m>lYtdM&OW!aPnT|j2&mz~*p{O!!|H>Kz%DQ4TAE7sGx3mPpbxYY{goy+P+z#f+^eO?wIg4h2GHBhY|7JSHlQZsw6H5=U`%EsFI5%avqNl2}T&rjU8o&`Vz76HU z$5N~>NBumH5B`YpR&A*Rti88?uLYeQ8sttc&;Yxdz;!@~da415z-6}%EbLpd^5qMB zrVR{cz0tbS`t;-)9kr(Bz3e^Fd!A##KYbIkZ~k&WNL4Xci`61^cMnr(XvV*t*@h{E zFyCmMdjkM100Z*tw8rO6F`mJlBJ2BJtaoiTc@#oeA`)L8J*>}ieTP}!QUyXeMFOsU z98dV^@}>8K(uoU9m}{0l1O|>SvEIG6*$P->=eXTZ&;%|)+`Go`BO7pb3X5P_I`Zpm zL{42-4sl>1AF(}u39}fi1FkDi9mVNQZZ+P!cCYK~8iZH|bODsUK7aaF%%`E8Ht`pC;S$(u4BzYPQZwfg$L_$fSx1EvMeJVb>j<1O$#oj2%N=t zU=yZNM2v~E31A3oE1rm{!yiuVmuHR#4`y-dng$Oc7>iOG#@nc8Y0M1OWDW?wGP zam$bfJ`Wl?BHz02rgeukxz}|#bl*yaMa+1oj?R17@Uy<`vl%}Ko=4|SzS&>t87iXy z+)3C+Q+kNv`EsiBe`WZS6S(Tjm8+?Na_G-wI_JDIT_Ib=_FTvvu&3Z zV?8P>;!`n6K10o|tPht_0;nSUsGj84XDA!h7nMb4sE;GL6*dZIs6UMPl8$GnG;eKZ zBN%`hsQmV{UF8h*iSMDwz!_?1rF5hW1fb~40bS&o?iHW0iQ-K_r?=cQQYL<;tNP~D zZhNMy;j;yv(ExOkE11zTHbCd(95tHkd=`R<>TIP`6cEDbsAZK64G_ZcFUERF)m$Ki zE^o5)Ff|Z@_ZPHVyUQ7>mJesLdxlb9aT_b+08q=$Q8URwXDAC*p{nIG)ZwUQ%^U@Q zQtn}VElG2RB6(}OC{smbNJow2R?o?t>Bbn_C2yT&`pWyUi}G2~URI(#+OGm`WSba= zC0l{Lrrq6}?4ryM=Qx;dvaKdp>2k_%@nKW{NtWdVRCRf_g&j}Xh?NQzx99e;Ke$imbr zYCBoy-nDqKH^Wo)HbQg@wC}qa*CgKoiOoGzt*bHxc9hSi4pHRfj~D>|XwlZflIIYr@_-<|Z&Spl zWr{zoINFTn69I(&qs8LKBRUuy7 zV(^6d#AEz^!)J7LEby#a!e%jF@>xKqve+m%$5i9X!--+hzh{Ly+S`rs10I#TcKR;p zqB;IlrR&rwJM_$Ct8qlM|J-D4m)7UpBtPh_*|~{xHm0g6lxFL`;*e-p z@p|@5;OLNO$GKp_Wakob%DXT+K$miE;%%Dl`lTu4AVjsHv&0yfbnLCA+ELARvZe9` zU6fM;2o0{5JHLV1gY}us^A><$YA;&8|M1F@D94C+(aBe~lSJ@}q2k2Th|}5Ys&Sq9 z0H&truHDwVhh%-J3bb=@Ki%n%2=ANeOn|3nxtYWB=yQtQmwo+n%J53h!nv)-$Wb1E zgRP7y3Y_7PswJHv08aT=m+Mygxe3hp*!O%=gtJE9IrpBbJP?CNR*%%Dow?%4>?+IJ zyiCL&x)bH)3LTSrzboVgnLa7UzRZW~`Y$TlN4fd{qi?~rZ!@m~MlliIHmZ(a*^XGQ zto-La;CY2C>OJy%h5jF4-BIBAoKlB1D6-O-p*T1=Q z3_Xd7^JY=)1MCb=N2k1#&kSykbgmRFojW!eNgV_n57}3Jnvf=oJ{)ld4!q9h90E78 zLag5Z`PJ3tLVen-T?-sDp7MSlF5l4jJ(F413|>a-aX;8xEM01MPBPSnoZy8my>&f9$TuMHt2&8xjH3)UW; zRiyRzp6FSmEdORMpQV(zth)~Qb*ji88lF6lSigMH<2+kAr-Lz|WO2I^=~7hy`<;60 zhxW5-`UYg_y)ikXniCf{|89a$#pUx)Sx2bqi6JLWZ^Qkg7?1rAGG`yP_JxQzADz-* zbih<}6ciLtiqa3iulo+n-UL~ID8RN<6hgr0Q(Gq+UuiEF2W!_SHquWlJuRgl{I6r7 zXmM4_+R4(xV>yu8m#1~WJ3;YBxhlo>lVuy-ju zE~X?BGwA18W%6;#3>}NuE(#BklyYJQ!#uCd0#2E!V;?I;;ekkrC7RODUyyl&tD*0h z!+xUh5Kj3>G-a6QmKns=Fm~)JKfXHlX>yuM1AO zDWiu?BUOYtQ1?MT@afWU(xlv#F~fc(ZHF#W_tAV1=%7eJ$=sDeVrpjC7bESH~5sIdwT#ha=XUrkuLt zp^R&&A4`V`b{w+BnBqgKqnQtqp?bmioxzsAg9fWXwZ)tgPYR@*H;|dZYJj(tQ)p!@ zLN`M9FLXS@HbAx*Qd~)aH1h#6nxXs59s1Z{$QCTcf^-C#_mK$+%>;Ri3>jg4C~M`0 zhOrBwnJ{+jLRcnKGN>IlN8H3xmtK5KTSWg5^bz-)7#a45difL92VAQ(N~+<@H!*J=)diTu!A!BU!Vb*klDEE723+R!B;Kkcqq>8)^e$ns}wJUBpYh=rI1 z-4!Yo4OgdLF2w4C15}3Oh*`9|5~X(G>NLwW*luuu#t@8X4&A+2$`M{qwfr6{4GvHq zx#3KEv990%)ge{lIPI=fsZV%4&2l|f z68nvGGc=CMk-C<`iFGIf>x|_HGox4JcA_78T^X3|w z!>-XBQVh|MG^lo^u>ufBnsiD`{Ko04K9+6xihulMhBo|OE+cFP! zg6fccsEX78-Zd*-3kwpE0DTPi3g-hKf`*t#!Bo4}rP-m!tjpJix{1Mz-jvH6Saob8 z)gjwZ2`L!7Yf?H9cFe!bgbkrOWEsjPolx#RDs2oq=35q+v<*$Cbz!g0B(BiAC{_c% z7si3Bf!_#+TN6J|UUO5s2Fifmr4$V}AQn!_yID?pgQ~7n{~@k0x-hu~;6`C%D}ybs<5%)$u5wORP`1ylWCRGjRRK;9c!7C0{Mtnw-e16SLxgy z;cDr|eouY^`AAkT5zUxZA#O^zTH3MBNf(gMmFiLAAI4QiHy>OrZ0yhED#%Cr8m!vQ zjd}7S$%rIL!9neUxW-cr{JJ?j7Qz9RVmIZj_I29})1i0+m7+D3tpp3F7XYF4+x$zJ07@OFwfv@X=u5^lqj&xmulcJLdfPZXwz>Wgky zNX3*@++*Bsj-+DnBl=HNWBzXMCly1lfFCh_qBIq*zU=mUQW5tN^a%Ee(Nw(};ubfV zMpOuQ1P#)CVlY*$W^`k8%bfg5^a@`B4Z=P#nQB&p+`=a_CL@Uq;XEKEx-RNfX191; z0R7m^WERDqP<1|0one*Bts57>IJPxuPEkcW7CUK9xhGrwh*(eOB3C^~tY>tARToc= zQ|yUUR}t$OR{7l4Z~;tXhm+82d>K4roYhRkAn58PH-Yd&sgeaBIXJGK{TFo=|9lk960|iEC8BcI)M& zZjdI28nGL!DWC?ecA=UqM@Ey~kPt?)2PvE8BygQ0v=M%EV^SItLQB>mSwK#ntv?EF zym0hjvIG*sKz1Zq(46?MD}^>PAL&iHLPB6<6Ve3a#CzQ*w2|e=Y;p|}!bA=rnGmDG z<0%AafrZ&XWU+M^X_P2U*~l3vPv%_zJUK&b4R2%$q$FQozde~qk_I&bXGy?m)dbTC zXq^cc0zI-IYSNE0YETDWCd;ocPRbGOa26m9SfC=AcfDqEi?|RjO<@6TfF9jh|41x> zG(wJy*O!PK;Q)$1P@K##*-m^DUP56(+dvnnK#rSqBo5+Az!ppmpukIHk@e0=6Jiz4 z6+FS%0ImZEijt+)|4arD_i$@q-~~ezM}oehWW@Tn$y>yDoKIK?)zQ020r2THvM5oL z_C$PLKRg6-R6dyvK2;-g5M3!xFOuI78|hEj)=O{`^d}1ICE*j4!B@yi#75c^$#vK8 z5SpXf$qDeOhA*W#%^E}#aspl#z@0*mS|>F@r{ZMy_3W@y-XkiqG%KbnoGyEmqjTQe6!3&;x3~fbS<8Pvc-^IIKz$YRyD5nge`KW7r zOSU&Xs|;A;_M;3;z`J9G+uQSiD}sn%l(1YMIB zR1q30C=m%~KtQx4@YkRl@YQevR$^D{B3=mk1D=e0OlQf3pM$SPtyAD>5NcFY(s2Gr zY!rbK!KTHH_k?o6Wf4W81Zo7279-vi>IdIMup-6q7%EF)`~&zy^kcB4B;E`D9Fc^4 z%#_R81cBPXe>cq90Wd)kBfXti^)2g-XJW5fv!l@&||n%4N~w zz`H=z;r@ti)ZZu>3QIVSr3sF=gkFN*L{tl^QBK{1#-n_Bn^@pk_;pr%K0*yVWd!X; z`SLfx;EE_;<|ZAudE`1B{t?0{a-ADLh;RxkWozPrkK@;07Gj1?O`)Jj{rvJd#!hEH#!=CXn{Ka6&Uk0QL0p2%hV5cOvsE2d`i z=pgtZf)UA!|BJsy<<2<`ZN3*R6&;TZWSzE#3q+Brnne*B)Ef@b-N-=pX%BdI6q&MF z4{m`cUub@VXrSD95S@-_fNXe0n+Uo@kRi=Vhz9Bn=jb(LAjfn7d?HF)@E`mSyj3um zVgns5fI8xw7KLj@Tw~mji_S)8gp#SRGc`*if~hwgqbHC@?9)E*#waqlSpacDwP6?C zh&*DOc7=yTk!kX{2)0^j)DEKBs^~NZ2S(tAB!vTi-adg-TSAEO0@LkKA*}?#9|TtI z%R&tIIrGc}SLhs+v}@5L;NC34F0Mi;FGz3&=Afy4h*qKK4I?n(JZ19Gf_!v~GTKpS z70TXMgqJu^`8;buKG@`!J z>7~;)B9tNKkUt}mXv78XgYvYrZx9}88B;qb3hE^1QYA2)qOpgcs^xWIwo&pQl%qFdnhZpSOo#)>aWx%Dbv9fINWr z-Xds3Zqw%JBjV5p^t}rN5y2qP5AdRnwgu{dyH|TSiGgJi8|owl_ms7 zZ1dzzAdW$Pkl9p%9cr9*vx{Jd&I0>MJwayC_-Q|2Z*(cOxbVlL4 z5I>H#TCH)0%~ir)Xr1V6z2F*ypFrE8);QDV34tjzP;fR}P=J0P-WH{$LBBaghz|`E zntdlIz_8ER)~cn!xVb^l4-LFH3*48a-)C*h*V16vTqJad28zs<3uZIy^R_K$X)tZ> z6Qn}}5wo#^7WDfU+TLh2&~MHWNLiA|A;fv5Y%{&fY?3LiXL;^pU|AHVp{bkw^5ib_h+HeZMwoYNIM+9A@yN-=raE;*XeT z;}Id0`vz?@1kLaxlVJgl0dWO%r*-ys1wJi9CYMS|Cm# z`#xn-?royN(^Qcs&h_EKDsho8TmDojA+UN8)!rp5A%E6secw??uI{8Ns`OSpq-NtvqLM>{H(!rg+J3s zg5{V(=PrtIplhgpzQ;&~KT}S+l4D9ccUkNax(4#|3+7Y!Gxa2%oH6K}h?o+(hWckQ z#wGljYLaTs810;tm=C&!=4U-d0@IXx9T|hSiYTMF!EMzVOFCyDUxV%)u`sAG5nEMQ3;g7YraT74d!RAA+ivE zpZY!b&zoWjn5Vh@sKTgTiucTSSdwhTBr(Rh6)1YJZB`CF3BxF&{Fs00 zV9X;o>5?AhIz?`BCk^I0g_W`Wy`dLIjf9bOa%d2e_;Q{F?(TOrTdR_R+)Av3TU*{q5nu2rZ9i8{%<+_j62YR zTUzRL|9)ZO!~7-sXL9(NcBl$OwbW_<{lMsl`Csnu%gJKgp)au0QiuH;#&n1IOZ9K% zWHIef7I0|QL;tm4q{IBh``dHO8F%Ok9%%_Q* z`CsWD%^7FhVJz^`s)zmigINpnmo|j;yA?2FF6A2MN`-P$dm#*Y`fp%3&~cI6U=LC^K3ww*KFkL8KYXi?83RKo~QKmW=ocddk)Rtbh%3 zCHEn!IPxp=Q-*%y0x!%`t|HPIKSK3|>nW`NVSzJdG}jyHgV2T}d zfdJ~5^Peb2GeU)NN3I|nof&#SZOGIwof}NO<5)0(JZAsrgK3O90QU>zo>1-B6*MA` z+5Wj=LZS|6D!6)VwbH4bMeSA5=?u<{6*WB+&ioboJ)HIu@{HU}dZ8j(i8()dSnV&% zGZ=GLnB}a{IV;)MqDR3aSv|YBN~MaRoE4a}ru`vWm0~2UhY{y3Q-RLmqg#=&k3y?b zj=bu5iSw4Pu+HIwtz5HjMXQ2FVtVf4yk#p4ax&>w-*in9Z1{!rPv&hqp&1*9)~2IRGx^Fczo? zwg>k>a+Px#P&|=}l+LVau#rnW{1LmH6|K4Ipq1P9`ltZz5xJhMh+W=_h1_}yXO;?% z+PfUb+uAn z$WU8eZj#4GAe=bxE6+>+z$;aoc9BC_&{3FWz$GUE{7P);F}(6r&GzmP$m1Jh29I}7 z2ba|gn^Z{=<#}AS_R<&k%AveeIa_l@4~P%S)X6GASaH!-$Fs~UpKDqmq$7jWD%#v) z!jh0|U^Csp^^@{IPGbFycq@li1jLl6T|1!53Vr-5H(%jw&tBpJz7vQjrX&6qx%9Ygr%uHk- zc~Q1k|LhmeeyPkl!P=Sm`%3F|;{=J;F?m1t?jL)+c4~ZGFQRuJ%AZD7&*Gs=EsEt- zSH(tu*}{x&S~t-jR~9QA{JLPHenoj8A;muS`Innr8CM4lC6rgMS^OhgAB#7xQZ=sP zLsxw*{#|d}0sad$uI7byg|z+%UiuN~RVl2ZsQlemNXPR?OQ%}l2fO8VfiUTUiwO31 z^ylv*5}zZjA78lSR2eZ~^QuzJB*B5s|GDtPK0A7w>XyHk9N+$uEdM5X)t2;qLa5#9 zl0mhC;?L5q3=)3yVjO?0-ks=J#g&^JT;9TJDpFP(M(mDBzc29Uw03g7F{>N-8yzvg znSM1erX6@(SC?kA+ipWaRfANZr1-fz!!}`pVD`;{DmnDhoLgLKKyW;OXT;P^N`i58AN}33l!g~q}_1kf|N+DPwu58@Pe0EPZ z)40EVJjXoF6%vYnZ~mhg_djx()|O_;=q=4R`cq32$O!lLi!2g4 zi$|LpM!q;3%NLS8{Zz4%DkI#kw`CvZ59O#NysPwUnvGC=H(6izsC`W-8FeXY(58~_ z1nPmH^|Wi&YMPm-K4L#k_)N6j*!t8$aW~|dxrM*e-W~$t7%J`($ zY*2pH$i-s!d$h^Gs_4nzP9G*ulIZ%Au`zi}N}U+)fo7rdKcG|j2Z?{MF>x>SU&d+Q z*}ePj&oS2vVb8EmZmzLPaFuJ`OsYMr<-W&o)2V4?wC0;m&Xu6L;c2U;xZmoEmwRnv zv`c^aaa-Shobflib+ps+#j6RWlZWGzF5_P5buh_au(}7Ui%KocTq4%dB7;IDs`eUk zX6PB`?=nJ z({*k+WfJ%Lxc1Toog(3%DS5yGI{y(bPdl6C{nGrdVxtx{`=GgH=!IU>&=kutpF^Cn zi)WFrcW!4&*S%lug{}drz1-GMUgoH^sMfp~k9nyhpVe-<;?T;ovg@-|F_4o#;`&ta zTkN~y`2(AmQBy3pZGY3~cFydrISht;M0rk6cb+h%{|DV}k?P}-IAPp2`mixA=2*07 z)K_ySNkQs++7pclEuA`r(i83jyx3R#s>*|_oyM$e&N0tpEALh9`uiDX{7QqKis<>c zyz>a`DxoSwN2*@-d-eIA$S{tT_UeyVj*%msVr8y3BNr22kYY>;ynK3n!fmh@i%kd z$4ke2PuDMfV>ogo&RVfJ%PEFTB>D;{jITw;_u>^V-$zk7W$fR-WO1B^QmX}y(?MLAUb?W zKAY>Kal-TkN*?5k-)T?2v^-8W;h7=^*fL_7?qK^l#LeQYQ*;uu(x*SHSXa+% zEyp(lpSWR#|NXb*v7_lTE4QV;YbVAC3vrcq)@D+F|IO)O9Z^LkvQt?%sx;Ov`5B_O8IZQ8Vn6Py z^Wuw?o@`1;*>6plHAm|{@X7ctMBi2Si-EZqTG{c!i{*>#hs%x_()(*_u@bHZB_Y4$*UY-vALFN;aWn zkd4$({5#^dQ_$=i8*;)qSlOIc-K=eGc;qafta6F*1$5je-{g3AB1_!&&*pFI4()JF zF3`Ovg7%8`lNWRn6qJ8Gh7_@%vg(&gm8ImSRsF+13AgpTy{HJ&!}+n#td(517Lbju z7zSRrc>8WCC(K!%lHUX;aU z{&`yYduiMGvb+@RmmT@4vqVT{2Ugbl?A|cdl}lCuLU0ciVnt{G-`9{5pkq zwI2F))F-h5x%pxo(va( zw3f}d-aMwXypT!1-SPWz-X#&fC#Nf^IQ8M$S;?zfuf!c=ru#%Oja#2SkE?stbn-?3 zU*ha{1OxvF9u$G@i|!ku)HuV!-zqm)XV;8_1^WJJPN%M@kG(<%v{e80NtPQ`3sijO zK5t=SSoE2$$6(rsnOQ_arrf{V&pS(P>eoeG7Z*L#uRYLjFVfjLVYNn0mHyVzGgZHD zwMu>w@pYsh5FJiXv(IltqOX;uadR&oL=l)uJ`_&{l@3y*F`yyH~<|dAL_wfDQ2?M3~#nhOIRI?lm4R+nCB-m>Z0MC21g?B5qF-|{$ZFI)1I!!KlY$$5LD(PoC3 z8rr`rS+Xv|ak8=W@q4PjcrCP4joR)ZVn&VA9pIl`>W*D6hCx6b8V%XQ|bnFd=!7lrqf7~wTu6Q-!FHD!5QxHXNA)lTP~Y;|Q3!x^pP;8^8` zchCJ$3(OwJqRgu4YNOSn-}4x*&i|C1yM}@)Uⅇ7aH>0^u<1;FBXFfcJH(j%RAl& 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

    3~e(tGY3u{5mjbd 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%0DqBI`P$dE7Y2j(5xyj%q=tA&GSV#v?M%AIZT;R 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�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� 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

    ETYr2 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 literal 0 HcmV?d00001 diff --git a/lib/licenses/concurrent-trees-2.4.0.txt b/lib/licenses/concurrent-trees-2.4.0.txt new file mode 100644 index 0000000000..50086f8b44 --- /dev/null +++ b/lib/licenses/concurrent-trees-2.4.0.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/lib/licenses/hppc-0.5.4.txt b/lib/licenses/hppc-0.5.4.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/lib/licenses/hppc-0.5.4.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/licenses/jflex-1.6.0.txt b/lib/licenses/jflex-1.6.0.txt new file mode 100644 index 0000000000..50086f8b44 --- /dev/null +++ b/lib/licenses/jflex-1.6.0.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/lib/licenses/primitive-1.0.txt b/lib/licenses/primitive-1.0.txt new file mode 100644 index 0000000000..50086f8b44 --- /dev/null +++ b/lib/licenses/primitive-1.0.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/lib/licenses/snowball-stemmer-1.3.0.581.1.txt b/lib/licenses/snowball-stemmer-1.3.0.581.1.txt new file mode 100644 index 0000000000..50086f8b44 --- /dev/null +++ b/lib/licenses/snowball-stemmer-1.3.0.581.1.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/lib/primitive-1.0.jar b/lib/primitive-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..288daa0e4896774fa69593431262bc5d25f4fd40 GIT binary patch literal 52589 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 Gr~d~9v(P>O literal 0 HcmV?d00001 diff --git a/lib/snowball-stemmer-1.3.0.581.1.jar b/lib/snowball-stemmer-1.3.0.581.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..92189b95f054296ed09b047abec06acc98c9ab65 GIT binary patch literal 93019 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

    + * Tokens produced are of the following types: + *

      + *
    • <ALPHANUM>: A sequence of alphabetic and numeric characters
    • + *
    • <NUM>: A number
    • + *
    • <SOUTHEAST_ASIAN>: A sequence of characters from South and Southeast + * Asian languages, including Thai, Lao, Myanmar, and Khmer
    • + *
    • <IDEOGRAPHIC>: A single CJKV ideographic character
    • + *
    • <HIRAGANA>: A single hiragana character
    • + *
    • <KATAKANA>: A sequence of katakana characters
    • + *
    • <HANGUL>: A sequence of Hangul characters
    • + *
    + */ +%% + +%unicode 6.3 +%integer +%final +%public +%class StandardTokenizerImpl +%implements StandardTokenizerInterface +%function getNextToken +%char +%buffer 4096 + +%include SUPPLEMENTARY.jflex-macro +ALetter = (\p{WB:ALetter} | {ALetterSupp}) +Format = (\p{WB:Format} | {FormatSupp}) +Numeric = ([\p{WB:Numeric}[\p{Blk:HalfAndFullForms}&&\p{Nd}]] | {NumericSupp}) +Extend = (\p{WB:Extend} | {ExtendSupp}) +Katakana = (\p{WB:Katakana} | {KatakanaSupp}) +MidLetter = (\p{WB:MidLetter} | {MidLetterSupp}) +MidNum = (\p{WB:MidNum} | {MidNumSupp}) +MidNumLet = (\p{WB:MidNumLet} | {MidNumLetSupp}) +ExtendNumLet = (\p{WB:ExtendNumLet} | {ExtendNumLetSupp}) +ComplexContext = (\p{LB:Complex_Context} | {ComplexContextSupp}) +Han = (\p{Script:Han} | {HanSupp}) +Hiragana = (\p{Script:Hiragana} | {HiraganaSupp}) +SingleQuote = (\p{WB:Single_Quote} | {SingleQuoteSupp}) +DoubleQuote = (\p{WB:Double_Quote} | {DoubleQuoteSupp}) +HebrewLetter = (\p{WB:Hebrew_Letter} | {HebrewLetterSupp}) +RegionalIndicator = (\p{WB:Regional_Indicator} | {RegionalIndicatorSupp}) +HebrewOrALetter = ({HebrewLetter} | {ALetter}) + +// UAX#29 WB4. X (Extend | Format)* --> X +// +HangulEx = [\p{Script:Hangul}&&[\p{WB:ALetter}\p{WB:Hebrew_Letter}]] ({Format} | {Extend})* +HebrewOrALetterEx = {HebrewOrALetter} ({Format} | {Extend})* +NumericEx = {Numeric} ({Format} | {Extend})* +KatakanaEx = {Katakana} ({Format} | {Extend})* +MidLetterEx = ({MidLetter} | {MidNumLet} | {SingleQuote}) ({Format} | {Extend})* +MidNumericEx = ({MidNum} | {MidNumLet} | {SingleQuote}) ({Format} | {Extend})* +ExtendNumLetEx = {ExtendNumLet} ({Format} | {Extend})* +HanEx = {Han} ({Format} | {Extend})* +HiraganaEx = {Hiragana} ({Format} | {Extend})* +SingleQuoteEx = {SingleQuote} ({Format} | {Extend})* +DoubleQuoteEx = {DoubleQuote} ({Format} | {Extend})* +HebrewLetterEx = {HebrewLetter} ({Format} | {Extend})* +RegionalIndicatorEx = {RegionalIndicator} ({Format} | {Extend})* + + +%{ + /** Alphanumeric sequences */ + public static final int WORD_TYPE = StandardAnalyzer.TokenType.ALPHANUM.value; + + /** Numbers */ + public static final int NUMERIC_TYPE = StandardAnalyzer.TokenType.NUM.value; + + /** + * Chars in class \p{Line_Break = Complex_Context} are from South East Asian + * scripts (Thai, Lao, Myanmar, Khmer, etc.). Sequences of these are kept + * together as as a single token rather than broken up, because the logic + * required to break them at word boundaries is too complex for UAX#29. + *

    + * See Unicode Line Breaking Algorithm: http://www.unicode.org/reports/tr14/#SA + */ + public static final int SOUTH_EAST_ASIAN_TYPE = StandardAnalyzer.TokenType.SOUTHEAST_ASIAN.value; + + public static final int IDEOGRAPHIC_TYPE = StandardAnalyzer.TokenType.IDEOGRAPHIC.value; + + public static final int HIRAGANA_TYPE = StandardAnalyzer.TokenType.HIRAGANA.value; + + public static final int KATAKANA_TYPE = StandardAnalyzer.TokenType.KATAKANA.value; + + public static final int HANGUL_TYPE = StandardAnalyzer.TokenType.HANGUL.value; + + public final int yychar() + { + return yychar; + } + + public String getText() + { + return String.valueOf(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead); + } + + public char[] getArray() + { + return Arrays.copyOfRange(zzBuffer, zzStartRead, zzMarkedPos); + } + + public byte[] getBytes() + { + return getText().getBytes(); + } + +%} + +%% + +// UAX#29 WB1. sot ÷ +// WB2. ÷ eot +// +<> { return StandardAnalyzer.TokenType.EOF.value; } + +// UAX#29 WB8. Numeric × Numeric +// WB11. Numeric (MidNum | MidNumLet | Single_Quote) × Numeric +// WB12. Numeric × (MidNum | MidNumLet | Single_Quote) Numeric +// WB13a. (ALetter | Hebrew_Letter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet +// WB13b. ExtendNumLet × (ALetter | Hebrew_Letter | Numeric | Katakana) +// +{ExtendNumLetEx}* {NumericEx} ( ( {ExtendNumLetEx}* | {MidNumericEx} ) {NumericEx} )* {ExtendNumLetEx}* + { return NUMERIC_TYPE; } + +// subset of the below for typing purposes only! +{HangulEx}+ + { return HANGUL_TYPE; } + +{KatakanaEx}+ + { return KATAKANA_TYPE; } + +// UAX#29 WB5. (ALetter | Hebrew_Letter) × (ALetter | Hebrew_Letter) +// WB6. (ALetter | Hebrew_Letter) × (MidLetter | MidNumLet | Single_Quote) (ALetter | Hebrew_Letter) +// WB7. (ALetter | Hebrew_Letter) (MidLetter | MidNumLet | Single_Quote) × (ALetter | Hebrew_Letter) +// WB7a. Hebrew_Letter × Single_Quote +// WB7b. Hebrew_Letter × Double_Quote Hebrew_Letter +// WB7c. Hebrew_Letter Double_Quote × Hebrew_Letter +// WB9. (ALetter | Hebrew_Letter) × Numeric +// WB10. Numeric × (ALetter | Hebrew_Letter) +// WB13. Katakana × Katakana +// WB13a. (ALetter | Hebrew_Letter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet +// WB13b. ExtendNumLet × (ALetter | Hebrew_Letter | Numeric | Katakana) +// +{ExtendNumLetEx}* ( {KatakanaEx} ( {ExtendNumLetEx}* {KatakanaEx} )* + | ( {HebrewLetterEx} ( {SingleQuoteEx} | {DoubleQuoteEx} {HebrewLetterEx} ) + | {NumericEx} ( ( {ExtendNumLetEx}* | {MidNumericEx} ) {NumericEx} )* + | {HebrewOrALetterEx} ( ( {ExtendNumLetEx}* | {MidLetterEx} ) {HebrewOrALetterEx} )* + )+ + ) +({ExtendNumLetEx}+ ( {KatakanaEx} ( {ExtendNumLetEx}* {KatakanaEx} )* + | ( {HebrewLetterEx} ( {SingleQuoteEx} | {DoubleQuoteEx} {HebrewLetterEx} ) + | {NumericEx} ( ( {ExtendNumLetEx}* | {MidNumericEx} ) {NumericEx} )* + | {HebrewOrALetterEx} ( ( {ExtendNumLetEx}* | {MidLetterEx} ) {HebrewOrALetterEx} )* + )+ + ) +)* +{ExtendNumLetEx}* + { return WORD_TYPE; } + + +// From UAX #29: +// +// [C]haracters with the Line_Break property values of Contingent_Break (CB), +// Complex_Context (SA/South East Asian), and XX (Unknown) are assigned word +// boundary property values based on criteria outside of the scope of this +// annex. That means that satisfactory treatment of languages like Chinese +// or Thai requires special handling. +// +// In Unicode 6.3, only one character has the \p{Line_Break = Contingent_Break} +// property: U+FFFC (  ) OBJECT REPLACEMENT CHARACTER. +// +// In the ICU implementation of UAX#29, \p{Line_Break = Complex_Context} +// character sequences (from South East Asian scripts like Thai, Myanmar, Khmer, +// Lao, etc.) are kept together. This grammar does the same below. +// +// See also the Unicode Line Breaking Algorithm: +// +// http://www.unicode.org/reports/tr14/#SA +// +{ComplexContext}+ { return SOUTH_EAST_ASIAN_TYPE; } + +// UAX#29 WB14. Any ÷ Any +// +{HanEx} { return IDEOGRAPHIC_TYPE; } +{HiraganaEx} { return HIRAGANA_TYPE; } + + +// UAX#29 WB3. CR × LF +// WB3a. (Newline | CR | LF) ÷ +// WB3b. ÷ (Newline | CR | LF) +// WB13c. Regional_Indicator × Regional_Indicator +// WB14. Any ÷ Any +// +{RegionalIndicatorEx} {RegionalIndicatorEx}+ | [^] + { /* Break so we don't hit fall-through warning: */ break; /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */ } diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerInterface.java b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerInterface.java new file mode 100644 index 0000000000..57e35d7e29 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerInterface.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.io.IOException; +import java.io.Reader; + +/** + * Internal interface for supporting versioned grammars. + */ +public interface StandardTokenizerInterface +{ + + String getText(); + + char[] getArray(); + + byte[] getBytes(); + + /** + * Returns the current position. + */ + int yychar(); + + /** + * Returns the length of the matched text region. + */ + int yylength(); + + /** + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. + * + * @return the next token, {@link #YYEOF} on end of stream + * @exception java.io.IOException if any I/O-Error occurs + */ + int getNextToken() throws IOException; + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * @param reader the new input stream + */ + void yyreset(Reader reader); +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerOptions.java b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerOptions.java new file mode 100644 index 0000000000..2a5e4ef9f9 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerOptions.java @@ -0,0 +1,272 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.util.Locale; +import java.util.Map; + +/** + * Various options for controlling tokenization and enabling + * or disabling features + */ +public class StandardTokenizerOptions +{ + public static final String TOKENIZATION_ENABLE_STEMMING = "tokenization_enable_stemming"; + public static final String TOKENIZATION_SKIP_STOP_WORDS = "tokenization_skip_stop_words"; + public static final String TOKENIZATION_LOCALE = "tokenization_locale"; + public static final String TOKENIZATION_NORMALIZE_LOWERCASE = "tokenization_normalize_lowercase"; + public static final String TOKENIZATION_NORMALIZE_UPPERCASE = "tokenization_normalize_uppercase"; + + public static final int DEFAULT_MAX_TOKEN_LENGTH = 255; + public static final int DEFAULT_MIN_TOKEN_LENGTH = 0; + + private boolean stemTerms; + private boolean ignoreStopTerms; + private Locale locale; + private boolean caseSensitive; + private boolean allTermsToUpperCase; + private boolean allTermsToLowerCase; + private int minTokenLength; + private int maxTokenLength; + + public boolean shouldStemTerms() + { + return stemTerms; + } + + public void setStemTerms(boolean stemTerms) + { + this.stemTerms = stemTerms; + } + + public boolean shouldIgnoreStopTerms() + { + return ignoreStopTerms; + } + + public void setIgnoreStopTerms(boolean ignoreStopTerms) + { + this.ignoreStopTerms = ignoreStopTerms; + } + + public Locale getLocale() + { + return locale; + } + + public void setLocale(Locale locale) + { + this.locale = locale; + } + + public boolean isCaseSensitive() + { + return caseSensitive; + } + + public void setCaseSensitive(boolean caseSensitive) + { + this.caseSensitive = caseSensitive; + } + + public boolean shouldUpperCaseTerms() + { + return allTermsToUpperCase; + } + + public void setAllTermsToUpperCase(boolean allTermsToUpperCase) + { + this.allTermsToUpperCase = allTermsToUpperCase; + } + + public boolean shouldLowerCaseTerms() + { + return allTermsToLowerCase; + } + + public void setAllTermsToLowerCase(boolean allTermsToLowerCase) + { + this.allTermsToLowerCase = allTermsToLowerCase; + } + + public int getMinTokenLength() + { + return minTokenLength; + } + + public void setMinTokenLength(int minTokenLength) + { + this.minTokenLength = minTokenLength; + } + + public int getMaxTokenLength() + { + return maxTokenLength; + } + + public void setMaxTokenLength(int maxTokenLength) + { + this.maxTokenLength = maxTokenLength; + } + + public static class OptionsBuilder { + private boolean stemTerms; + private boolean ignoreStopTerms; + private Locale locale; + private boolean caseSensitive; + private boolean allTermsToUpperCase; + private boolean allTermsToLowerCase; + private int minTokenLength = DEFAULT_MIN_TOKEN_LENGTH; + private int maxTokenLength = DEFAULT_MAX_TOKEN_LENGTH; + + public OptionsBuilder() + { + } + + public OptionsBuilder stemTerms(boolean stemTerms) + { + this.stemTerms = stemTerms; + return this; + } + + public OptionsBuilder ignoreStopTerms(boolean ignoreStopTerms) + { + this.ignoreStopTerms = ignoreStopTerms; + return this; + } + + public OptionsBuilder useLocale(Locale locale) + { + this.locale = locale; + return this; + } + + public OptionsBuilder caseSensitive(boolean caseSensitive) + { + this.caseSensitive = caseSensitive; + return this; + } + + public OptionsBuilder alwaysUpperCaseTerms(boolean allTermsToUpperCase) + { + this.allTermsToUpperCase = allTermsToUpperCase; + return this; + } + + public OptionsBuilder alwaysLowerCaseTerms(boolean allTermsToLowerCase) + { + this.allTermsToLowerCase = allTermsToLowerCase; + return this; + } + + /** + * Set the min allowed token length. Any token shorter + * than this is skipped. + */ + public OptionsBuilder minTokenLength(int minTokenLength) + { + if (minTokenLength < 1) + throw new IllegalArgumentException("minTokenLength must be greater than zero"); + this.minTokenLength = minTokenLength; + return this; + } + + /** + * Set the max allowed token length. Any token longer + * than this is skipped. + */ + public OptionsBuilder maxTokenLength(int maxTokenLength) + { + if (maxTokenLength < 1) + throw new IllegalArgumentException("maxTokenLength must be greater than zero"); + this.maxTokenLength = maxTokenLength; + return this; + } + + public StandardTokenizerOptions build() + { + if(allTermsToLowerCase && allTermsToUpperCase) + throw new IllegalArgumentException("Options to normalize terms cannot be " + + "both uppercase and lowercase at the same time"); + + StandardTokenizerOptions options = new StandardTokenizerOptions(); + options.setIgnoreStopTerms(ignoreStopTerms); + options.setStemTerms(stemTerms); + options.setLocale(locale); + options.setCaseSensitive(caseSensitive); + options.setAllTermsToLowerCase(allTermsToLowerCase); + options.setAllTermsToUpperCase(allTermsToUpperCase); + options.setMinTokenLength(minTokenLength); + options.setMaxTokenLength(maxTokenLength); + return options; + } + } + + public static StandardTokenizerOptions buildFromMap(Map optionsMap) + { + OptionsBuilder optionsBuilder = new OptionsBuilder(); + + for (Map.Entry entry : optionsMap.entrySet()) + { + switch(entry.getKey()) + { + case TOKENIZATION_ENABLE_STEMMING: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.stemTerms(bool); + break; + } + case TOKENIZATION_SKIP_STOP_WORDS: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.ignoreStopTerms(bool); + break; + } + case TOKENIZATION_LOCALE: + { + Locale locale = new Locale(entry.getValue()); + optionsBuilder = optionsBuilder.useLocale(locale); + break; + } + case TOKENIZATION_NORMALIZE_UPPERCASE: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.alwaysUpperCaseTerms(bool); + break; + } + case TOKENIZATION_NORMALIZE_LOWERCASE: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.alwaysLowerCaseTerms(bool); + break; + } + default: + { + } + } + } + return optionsBuilder.build(); + } + + public static StandardTokenizerOptions getDefaultOptions() + { + return new OptionsBuilder() + .ignoreStopTerms(true).alwaysLowerCaseTerms(true) + .stemTerms(false).useLocale(Locale.ENGLISH).build(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/BasicResultFilters.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/BasicResultFilters.java new file mode 100644 index 0000000000..2b949b898b --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/BasicResultFilters.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import java.util.Locale; + +/** + * Basic/General Token Filters + */ +public class BasicResultFilters +{ + private static final Locale DEFAULT_LOCALE = Locale.getDefault(); + + public static class LowerCase extends FilterPipelineTask + { + private Locale locale; + + public LowerCase(Locale locale) + { + this.locale = locale; + } + + public LowerCase() + { + this.locale = DEFAULT_LOCALE; + } + + public String process(String input) throws Exception + { + return input.toLowerCase(locale); + } + } + + public static class UpperCase extends FilterPipelineTask + { + private Locale locale; + + public UpperCase(Locale locale) + { + this.locale = locale; + } + + public UpperCase() + { + this.locale = DEFAULT_LOCALE; + } + + public String process(String input) throws Exception + { + return input.toUpperCase(locale); + } + } + + public static class NoOperation extends FilterPipelineTask + { + public Object process(Object input) throws Exception + { + return input; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineBuilder.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineBuilder.java new file mode 100644 index 0000000000..e9d262d96d --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineBuilder.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +/** + * Creates a Pipeline object for applying n pieces of logic + * from the provided methods to the builder in a guaranteed order + */ +public class FilterPipelineBuilder +{ + private final FilterPipelineTask parent; + private FilterPipelineTask current; + + public FilterPipelineBuilder(FilterPipelineTask first) + { + this(first, first); + } + + private FilterPipelineBuilder(FilterPipelineTask first, FilterPipelineTask current) + { + this.parent = first; + this.current = current; + } + + public FilterPipelineBuilder add(String name, FilterPipelineTask nextTask) + { + this.current.setLast(name, nextTask); + this.current = nextTask; + return this; + } + + public FilterPipelineTask build() + { + return this.parent; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineExecutor.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineExecutor.java new file mode 100644 index 0000000000..68c055e6c0 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineExecutor.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Executes all linked Pipeline Tasks serially and returns + * output (if exists) from the executed logic + */ +public class FilterPipelineExecutor +{ + private static final Logger logger = LoggerFactory.getLogger(FilterPipelineExecutor.class); + + public static T execute(FilterPipelineTask task, T initialInput) + { + FilterPipelineTask taskPtr = task; + T result = initialInput; + try + { + while (true) + { + FilterPipelineTask taskGeneric = (FilterPipelineTask) taskPtr; + result = taskGeneric.process((F) result); + taskPtr = taskPtr.next; + if(taskPtr == null) + return result; + } + } + catch (Exception e) + { + logger.info("An unhandled exception to occurred while processing " + + "pipeline [{}]", task.getName(), e); + } + return null; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineTask.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineTask.java new file mode 100644 index 0000000000..13e2a174a4 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/FilterPipelineTask.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +/** + * A single task or set of work to process an input + * and return a single output. Maintains a link to the + * next task to be executed after itself + */ +public abstract class FilterPipelineTask +{ + private String name; + public FilterPipelineTask next; + + protected void setLast(String name, FilterPipelineTask last) + { + if (last == this) + throw new IllegalArgumentException("provided last task [" + last.name + "] cannot be set to itself"); + + if (this.next == null) + { + this.next = last; + this.name = name; + } + else + { + this.next.setLast(name, last); + } + } + + public abstract T process(F input) throws Exception; + + public String getName() + { + return name; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmerFactory.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmerFactory.java new file mode 100644 index 0000000000..04da55c368 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmerFactory.java @@ -0,0 +1,101 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import java.lang.reflect.Constructor; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import org.tartarus.snowball.SnowballStemmer; +import org.tartarus.snowball.ext.*; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Returns a SnowballStemmer instance appropriate for + * a given language + */ +public class StemmerFactory +{ + private static final Logger logger = LoggerFactory.getLogger(StemmerFactory.class); + private static final LoadingCache> STEMMER_CONSTRUCTOR_CACHE = CacheBuilder.newBuilder() + .build(new CacheLoader>() + { + public Constructor load(Class aClass) throws Exception + { + try + { + return aClass.getConstructor(); + } + catch (Exception e) { + logger.error("Failed to get stemmer constructor", e); + } + return null; + } + }); + + private static final Map SUPPORTED_LANGUAGES; + + static + { + SUPPORTED_LANGUAGES = new HashMap<>(); + SUPPORTED_LANGUAGES.put("de", germanStemmer.class); + SUPPORTED_LANGUAGES.put("da", danishStemmer.class); + SUPPORTED_LANGUAGES.put("es", spanishStemmer.class); + SUPPORTED_LANGUAGES.put("en", englishStemmer.class); + SUPPORTED_LANGUAGES.put("fl", finnishStemmer.class); + SUPPORTED_LANGUAGES.put("fr", frenchStemmer.class); + SUPPORTED_LANGUAGES.put("hu", hungarianStemmer.class); + SUPPORTED_LANGUAGES.put("it", italianStemmer.class); + SUPPORTED_LANGUAGES.put("nl", dutchStemmer.class); + SUPPORTED_LANGUAGES.put("no", norwegianStemmer.class); + SUPPORTED_LANGUAGES.put("pt", portugueseStemmer.class); + SUPPORTED_LANGUAGES.put("ro", romanianStemmer.class); + SUPPORTED_LANGUAGES.put("ru", russianStemmer.class); + SUPPORTED_LANGUAGES.put("sv", swedishStemmer.class); + SUPPORTED_LANGUAGES.put("tr", turkishStemmer.class); + } + + public static SnowballStemmer getStemmer(Locale locale) + { + if (locale == null) + return null; + + String rootLang = locale.getLanguage().substring(0, 2); + try + { + Class clazz = SUPPORTED_LANGUAGES.get(rootLang); + if(clazz == null) + return null; + Constructor ctor = STEMMER_CONSTRUCTOR_CACHE.get(clazz); + return (SnowballStemmer) ctor.newInstance(); + } + catch (Exception e) + { + logger.debug("Failed to create new SnowballStemmer instance " + + "for language [{}]", locale.getLanguage(), e); + } + return null; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmingFilters.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmingFilters.java new file mode 100644 index 0000000000..9e098d1464 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StemmingFilters.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import java.util.Locale; + +import org.tartarus.snowball.SnowballStemmer; + +/** + * Filters for performing Stemming on tokens + */ +public class StemmingFilters +{ + public static class DefaultStemmingFilter extends FilterPipelineTask + { + private SnowballStemmer stemmer; + + public DefaultStemmingFilter(Locale locale) + { + stemmer = StemmerFactory.getStemmer(locale); + } + + public String process(String input) throws Exception + { + if (stemmer == null) + return input; + stemmer.setCurrent(input); + return (stemmer.stem()) ? stemmer.getCurrent() : input; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFactory.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFactory.java new file mode 100644 index 0000000000..0492822824 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFactory.java @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import java.io.BufferedReader; +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.ExecutionException; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Provides a list of Stop Words for a given language + */ +public class StopWordFactory +{ + private static final Logger logger = LoggerFactory.getLogger(StopWordFactory.class); + + private static final String DEFAULT_RESOURCE_EXT = "_ST.txt"; + private static final String DEFAULT_RESOURCE_PREFIX = StopWordFactory.class.getPackage() + .getName().replace(".", File.separator); + private static final Set SUPPORTED_LANGUAGES = new HashSet<>( + Arrays.asList("ar","bg","cs","de","en","es","fi","fr","hi","hu","it", + "pl","pt","ro","ru","sv")); + + private static final LoadingCache> STOP_WORDS_CACHE = CacheBuilder.newBuilder() + .build(new CacheLoader>() + { + public Set load(String s) throws Exception + { + return getStopWordsFromResource(s); + } + }); + + public static Set getStopWordsForLanguage(Locale locale) + { + if (locale == null) + return null; + + String rootLang = locale.getLanguage().substring(0, 2); + try + { + return (!SUPPORTED_LANGUAGES.contains(rootLang)) ? null : STOP_WORDS_CACHE.get(rootLang); + } + catch (ExecutionException e) + { + logger.error("Failed to populate Stop Words Cache for language [{}]", locale.getLanguage(), e); + return null; + } + } + + private static Set getStopWordsFromResource(String language) + { + Set stopWords = new HashSet<>(); + String resourceName = DEFAULT_RESOURCE_PREFIX + File.separator + language + DEFAULT_RESOURCE_EXT; + try (InputStream is = StopWordFactory.class.getClassLoader().getResourceAsStream(resourceName); + BufferedReader r = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) + { + String line; + while ((line = r.readLine()) != null) + { + //skip comments (lines starting with # char) + if(line.charAt(0) == '#') + continue; + stopWords.add(line.trim()); + } + } + catch (Exception e) + { + logger.error("Failed to retrieve Stop Terms resource for language [{}]", language, e); + } + return stopWords; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFilters.java b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFilters.java new file mode 100644 index 0000000000..4ae849c1f4 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/filter/StopWordFilters.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer.filter; + +import java.util.Locale; +import java.util.Set; + +/** + * Filter implementations for input matching Stop Words + */ +public class StopWordFilters +{ + public static class DefaultStopWordFilter extends FilterPipelineTask + { + private Set stopWords = null; + + public DefaultStopWordFilter(Locale locale) + { + this.stopWords = StopWordFactory.getStopWordsForLanguage(locale); + } + + public String process(String input) throws Exception + { + return (stopWords != null && stopWords.contains(input)) ? null : input; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/ColumnIndex.java b/src/java/org/apache/cassandra/index/sasi/conf/ColumnIndex.java new file mode 100644 index 0000000000..0bc9a96bbb --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/ColumnIndex.java @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf; + +import java.nio.ByteBuffer; +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.AsciiType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.db.rows.Cell; +import org.apache.cassandra.db.rows.Row; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.conf.view.View; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.memory.IndexMemtable; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.io.sstable.Component; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.schema.IndexMetadata; +import org.apache.cassandra.utils.FBUtilities; + +public class ColumnIndex +{ + private static final String FILE_NAME_FORMAT = "SI_%s.db"; + + private final AbstractType keyValidator; + + private final ColumnDefinition column; + private final Optional config; + + private final AtomicReference memtable; + private final IndexMode mode; + + private final Component component; + private final DataTracker tracker; + + public ColumnIndex(AbstractType keyValidator, ColumnDefinition column, IndexMetadata metadata) + { + this.keyValidator = keyValidator; + this.column = column; + this.config = metadata == null ? Optional.empty() : Optional.of(metadata); + this.mode = IndexMode.getMode(column, config); + this.memtable = new AtomicReference<>(new IndexMemtable(this)); + this.tracker = new DataTracker(keyValidator, this); + this.component = new Component(Component.Type.SECONDARY_INDEX, String.format(FILE_NAME_FORMAT, getIndexName())); + } + + public void validate() throws ConfigurationException + { + mode.validate(config); + } + + /** + * Initialize this column index with specific set of SSTables. + * + * @param sstables The sstables to be used by index initially. + * + * @return A collection of sstables which don't have this specific index attached to them. + */ + public Iterable init(Set sstables) + { + return tracker.update(Collections.emptySet(), sstables); + } + + public AbstractType keyValidator() + { + return keyValidator; + } + + public long index(DecoratedKey key, Row row) + { + return memtable.get().index(key, getValueOf(column, row, FBUtilities.nowInSeconds())); + } + + public void switchMemtable() + { + memtable.set(new IndexMemtable(this)); + } + + public RangeIterator searchMemtable(Expression e) + { + return memtable.get().search(e); + } + + public void update(Collection oldSSTables, Collection newSSTables) + { + tracker.update(oldSSTables, newSSTables); + } + + public ColumnDefinition getDefinition() + { + return column; + } + + public AbstractType getValidator() + { + return column.cellValueType(); + } + + public Component getComponent() + { + return component; + } + + public IndexMode getMode() + { + return mode; + } + + public String getColumnName() + { + return column.name.toString(); + } + + public String getIndexName() + { + return config.isPresent() ? config.get().name : "undefined"; + } + + public AbstractAnalyzer getAnalyzer() + { + AbstractAnalyzer analyzer = mode.getAnalyzer(getValidator()); + analyzer.init(config.isPresent() ? config.get().options : Collections.emptyMap(), column.cellValueType()); + return analyzer; + } + + public View getView() + { + return tracker.getView(); + } + + public boolean hasSSTable(SSTableReader sstable) + { + return tracker.hasSSTable(sstable); + } + + public void dropData(long truncateUntil) + { + switchMemtable(); + tracker.dropData(truncateUntil); + } + + public boolean isIndexed() + { + return mode != IndexMode.NOT_INDEXED; + } + + public boolean isLiteral() + { + AbstractType validator = getValidator(); + return isIndexed() ? mode.isLiteral : (validator instanceof UTF8Type || validator instanceof AsciiType); + } + + public static ByteBuffer getValueOf(ColumnDefinition column, Row row, int nowInSecs) + { + switch (column.kind) + { + case CLUSTERING: + return row.clustering().get(column.position()); + + case REGULAR: + Cell cell = row.getCell(column); + return cell == null || !cell.isLive(nowInSecs) ? null : cell.value(); + + default: + return null; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/DataTracker.java b/src/java/org/apache/cassandra/index/sasi/conf/DataTracker.java new file mode 100644 index 0000000000..9475d12f86 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/DataTracker.java @@ -0,0 +1,162 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf; + +import java.io.File; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.conf.view.View; +import org.apache.cassandra.io.sstable.format.SSTableReader; + +import com.google.common.collect.Sets; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** a pared-down version of DataTracker and DT.View. need one for each index of each column family */ +public class DataTracker +{ + private static final Logger logger = LoggerFactory.getLogger(DataTracker.class); + + private final AbstractType keyValidator; + private final ColumnIndex columnIndex; + private final AtomicReference view = new AtomicReference<>(); + + public DataTracker(AbstractType keyValidator, ColumnIndex index) + { + this.keyValidator = keyValidator; + this.columnIndex = index; + this.view.set(new View(index, Collections.emptySet())); + } + + public View getView() + { + return view.get(); + } + + /** + * Replaces old SSTables with new by creating new immutable tracker. + * + * @param oldSSTables A set of SSTables to remove. + * @param newSSTables A set of SSTables to add to tracker. + * + * @return A collection of SSTables which don't have component attached for current index. + */ + public Iterable update(Collection oldSSTables, Collection newSSTables) + { + final Set newIndexes = getIndexes(newSSTables); + final Set indexedSSTables = getSSTables(newIndexes); + + View currentView, newView; + do + { + currentView = view.get(); + newView = new View(columnIndex, currentView.getIndexes(), oldSSTables, newIndexes); + } + while (!view.compareAndSet(currentView, newView)); + + return newSSTables.stream().filter(sstable -> !indexedSSTables.contains(sstable)).collect(Collectors.toList()); + } + + public boolean hasSSTable(SSTableReader sstable) + { + View currentView = view.get(); + for (SSTableIndex index : currentView) + { + if (index.getSSTable().equals(sstable)) + return true; + } + + return false; + } + + public void dropData(long truncateUntil) + { + View currentView = view.get(); + if (currentView == null) + return; + + Set toRemove = new HashSet<>(); + for (SSTableIndex index : currentView) + { + SSTableReader sstable = index.getSSTable(); + if (sstable.getMaxTimestamp() > truncateUntil) + continue; + + index.markObsolete(); + toRemove.add(sstable); + } + + update(toRemove, Collections.emptyList()); + } + + private Set getIndexes(Collection sstables) + { + Set indexes = new HashSet<>(sstables.size()); + for (SSTableReader sstable : sstables) + { + if (sstable.isMarkedCompacted()) + continue; + + File indexFile = new File(sstable.descriptor.filenameFor(columnIndex.getComponent())); + if (!indexFile.exists()) + continue; + + SSTableIndex index = null; + + try + { + index = new SSTableIndex(columnIndex, indexFile, sstable); + + logger.info("SSTableIndex.open(column: {}, minTerm: {}, maxTerm: {}, minKey: {}, maxKey: {}, sstable: {})", + columnIndex.getColumnName(), + columnIndex.getValidator().getString(index.minTerm()), + columnIndex.getValidator().getString(index.maxTerm()), + keyValidator.getString(index.minKey()), + keyValidator.getString(index.maxKey()), + index.getSSTable()); + + // Try to add new index to the set, if set already has such index, we'll simply release and move on. + // This covers situation when sstable collection has the same sstable multiple + // times because we don't know what kind of collection it actually is. + if (!indexes.add(index)) + index.release(); + } + catch (Throwable t) + { + logger.error("Can't open index file at " + indexFile.getAbsolutePath() + ", skipping.", t); + if (index != null) + index.release(); + } + } + + return indexes; + } + + private Set getSSTables(Set indexes) + { + return Sets.newHashSet(indexes.stream().map(SSTableIndex::getSSTable).collect(Collectors.toList())); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/IndexMode.java b/src/java/org/apache/cassandra/index/sasi/conf/IndexMode.java new file mode 100644 index 0000000000..628a6ce891 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/IndexMode.java @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf; + +import java.util.HashSet; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.analyzer.NoOpAnalyzer; +import org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer; +import org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.Mode; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.AsciiType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.schema.IndexMetadata; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class IndexMode +{ + private static final Logger logger = LoggerFactory.getLogger(IndexMode.class); + + public static final IndexMode NOT_INDEXED = new IndexMode(Mode.PREFIX, true, false, NonTokenizingAnalyzer.class, 0); + + private static final Set> TOKENIZABLE_TYPES = new HashSet>() + {{ + add(UTF8Type.instance); + add(AsciiType.instance); + }}; + + private static final String INDEX_MODE_OPTION = "mode"; + private static final String INDEX_ANALYZED_OPTION = "analyzed"; + private static final String INDEX_ANALYZER_CLASS_OPTION = "analyzer_class"; + private static final String INDEX_IS_LITERAL_OPTION = "is_literal"; + private static final String INDEX_MAX_FLUSH_MEMORY_OPTION = "max_compaction_flush_memory_in_mb"; + private static final double INDEX_MAX_FLUSH_DEFAULT_MULTIPLIER = 0.15; + + public final Mode mode; + public final boolean isAnalyzed, isLiteral; + public final Class analyzerClass; + public final long maxCompactionFlushMemoryInMb; + + private IndexMode(Mode mode, boolean isLiteral, boolean isAnalyzed, Class analyzerClass, long maxFlushMemMb) + { + this.mode = mode; + this.isLiteral = isLiteral; + this.isAnalyzed = isAnalyzed; + this.analyzerClass = analyzerClass; + this.maxCompactionFlushMemoryInMb = maxFlushMemMb; + } + + public void validate(Optional config) throws ConfigurationException + { + if (!config.isPresent()) + return; + + Map indexOptions = config.get().options; + // validate that a valid analyzer class was provided if specified + if (indexOptions.containsKey(INDEX_ANALYZER_CLASS_OPTION)) + { + try + { + Class.forName(indexOptions.get(INDEX_ANALYZER_CLASS_OPTION)); + } + catch (ClassNotFoundException e) + { + throw new ConfigurationException(String.format("Invalid analyzer class option specified [%s]", + indexOptions.get(INDEX_ANALYZER_CLASS_OPTION))); + } + } + } + + public AbstractAnalyzer getAnalyzer(AbstractType validator) + { + AbstractAnalyzer analyzer = new NoOpAnalyzer(); + + try + { + if (isAnalyzed) + { + if (analyzerClass != null) + analyzer = (AbstractAnalyzer) analyzerClass.newInstance(); + else if (TOKENIZABLE_TYPES.contains(validator)) + analyzer = new StandardAnalyzer(); + } + } + catch (InstantiationException | IllegalAccessException e) + { + logger.error("Failed to create new instance of analyzer with class [{}]", analyzerClass.getName(), e); + } + + return analyzer; + } + + public static IndexMode getMode(ColumnDefinition column, Optional config) + { + Map indexOptions = config.isPresent() ? config.get().options : null; + if (indexOptions == null || indexOptions.isEmpty()) + return IndexMode.NOT_INDEXED; + + Mode mode = indexOptions.get(INDEX_MODE_OPTION) == null + ? Mode.PREFIX + : Mode.mode(indexOptions.get(INDEX_MODE_OPTION)); + + boolean isAnalyzed = false; + Class analyzerClass = null; + try + { + if (indexOptions.get(INDEX_ANALYZER_CLASS_OPTION) != null) + { + analyzerClass = Class.forName(indexOptions.get(INDEX_ANALYZER_CLASS_OPTION)); + isAnalyzed = indexOptions.get(INDEX_ANALYZED_OPTION) == null + ? true : Boolean.valueOf(indexOptions.get(INDEX_ANALYZED_OPTION)); + } + else if (indexOptions.get(INDEX_ANALYZED_OPTION) != null) + { + isAnalyzed = Boolean.valueOf(indexOptions.get(INDEX_ANALYZED_OPTION)); + } + } + catch (ClassNotFoundException e) + { + // should not happen as we already validated we could instantiate an instance in validateOptions() + logger.error("Failed to find specified analyzer class [{}]. Falling back to default analyzer", + indexOptions.get(INDEX_ANALYZER_CLASS_OPTION)); + } + + boolean isLiteral = false; + try + { + String literalOption = indexOptions.get(INDEX_IS_LITERAL_OPTION); + AbstractType validator = column.cellValueType(); + + isLiteral = literalOption == null + ? (validator instanceof UTF8Type || validator instanceof AsciiType) + : Boolean.valueOf(literalOption); + } + catch (Exception e) + { + logger.error("failed to parse {} option, defaulting to 'false' for {} index.", INDEX_IS_LITERAL_OPTION, config.get().name); + } + + Long maxMemMb = indexOptions.get(INDEX_MAX_FLUSH_MEMORY_OPTION) == null + ? (long) (1073741824 * INDEX_MAX_FLUSH_DEFAULT_MULTIPLIER) // 1G default for memtable + : Long.parseLong(indexOptions.get(INDEX_MAX_FLUSH_MEMORY_OPTION)); + + return new IndexMode(mode, isLiteral, isAnalyzed, analyzerClass, maxMemMb); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/view/PrefixTermTree.java b/src/java/org/apache/cassandra/index/sasi/conf/view/PrefixTermTree.java new file mode 100644 index 0000000000..72b6daf943 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/view/PrefixTermTree.java @@ -0,0 +1,194 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf.view; + +import java.nio.ByteBuffer; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.trie.KeyAnalyzer; +import org.apache.cassandra.index.sasi.utils.trie.PatriciaTrie; +import org.apache.cassandra.index.sasi.utils.trie.Trie; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.utils.Interval; +import org.apache.cassandra.utils.IntervalTree; + +import com.google.common.collect.Sets; + +/** + * This class is an extension over RangeTermTree for string terms, + * it is required because interval tree can't handle matching if search is on the + * prefix of min/max of the range, so for ascii/utf8 fields we build an additional + * prefix trie (including both min/max terms of the index) and do union of the results + * of the prefix tree search and results from the interval tree lookup. + */ +public class PrefixTermTree extends RangeTermTree +{ + private final OnDiskIndexBuilder.Mode mode; + private final Trie> trie; + + public PrefixTermTree(ByteBuffer min, ByteBuffer max, + Trie> trie, + IntervalTree> ranges, + OnDiskIndexBuilder.Mode mode) + { + super(min, max, ranges); + + this.mode = mode; + this.trie = trie; + } + + public Set search(Expression e) + { + Map> indexes = (e == null || e.lower == null || mode == OnDiskIndexBuilder.Mode.CONTAINS) + ? trie : trie.prefixMap(e.lower.value); + + Set view = new HashSet<>(indexes.size()); + indexes.values().forEach(view::addAll); + + return Sets.union(view, super.search(e)); + } + + public static class Builder extends RangeTermTree.Builder + { + private final PatriciaTrie> trie; + + protected Builder(OnDiskIndexBuilder.Mode mode, final AbstractType comparator) + { + super(mode, comparator); + trie = new PatriciaTrie<>(new ByteBufferKeyAnalyzer(comparator)); + } + + public void addIndex(SSTableIndex index) + { + super.addIndex(index); + addTerm(index.minTerm(), index); + addTerm(index.maxTerm(), index); + } + + public TermTree build() + { + return new PrefixTermTree(min, max, trie, IntervalTree.build(intervals), mode); + } + + private void addTerm(ByteBuffer term, SSTableIndex index) + { + Set indexes = trie.get(term); + if (indexes == null) + trie.put(term, (indexes = new HashSet<>())); + + indexes.add(index); + } + } + + private static class ByteBufferKeyAnalyzer implements KeyAnalyzer + { + private final AbstractType comparator; + + public ByteBufferKeyAnalyzer(AbstractType comparator) + { + this.comparator = comparator; + } + + /** + * A bit mask where the first bit is 1 and the others are zero + */ + private static final int MSB = 1 << Byte.SIZE-1; + + public int compare(ByteBuffer a, ByteBuffer b) + { + return comparator.compare(a, b); + } + + public int lengthInBits(ByteBuffer o) + { + return o.remaining() * Byte.SIZE; + } + + public boolean isBitSet(ByteBuffer key, int bitIndex) + { + if (bitIndex >= lengthInBits(key)) + return false; + + int index = bitIndex / Byte.SIZE; + int bit = bitIndex % Byte.SIZE; + return (key.get(index) & mask(bit)) != 0; + } + + public int bitIndex(ByteBuffer key, ByteBuffer otherKey) + { + int length = Math.max(key.remaining(), otherKey.remaining()); + + boolean allNull = true; + for (int i = 0; i < length; i++) + { + byte b1 = valueAt(key, i); + byte b2 = valueAt(otherKey, i); + + if (b1 != b2) + { + int xor = b1 ^ b2; + for (int j = 0; j < Byte.SIZE; j++) + { + if ((xor & mask(j)) != 0) + return (i * Byte.SIZE) + j; + } + } + + if (b1 != 0) + allNull = false; + } + + return allNull ? KeyAnalyzer.NULL_BIT_KEY : KeyAnalyzer.EQUAL_BIT_KEY; + } + + public boolean isPrefix(ByteBuffer key, ByteBuffer prefix) + { + if (key.remaining() < prefix.remaining()) + return false; + + for (int i = 0; i < prefix.remaining(); i++) + { + if (key.get(i) != prefix.get(i)) + return false; + } + + return true; + } + + /** + * Returns the {@code byte} value at the given index. + */ + private byte valueAt(ByteBuffer value, int index) + { + return index >= 0 && index < value.remaining() ? value.get(index) : 0; + } + + /** + * Returns a bit mask where the given bit is set + */ + private int mask(int bit) + { + return MSB >>> bit; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/view/RangeTermTree.java b/src/java/org/apache/cassandra/index/sasi/conf/view/RangeTermTree.java new file mode 100644 index 0000000000..62e5636439 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/view/RangeTermTree.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf.view; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.utils.Interval; +import org.apache.cassandra.utils.IntervalTree; + +public class RangeTermTree implements TermTree +{ + protected final ByteBuffer min, max; + protected final IntervalTree> rangeTree; + + public RangeTermTree(ByteBuffer min, ByteBuffer max, IntervalTree> rangeTree) + { + this.min = min; + this.max = max; + this.rangeTree = rangeTree; + } + + public Set search(Expression e) + { + ByteBuffer minTerm = e.lower == null ? min : e.lower.value; + ByteBuffer maxTerm = e.upper == null ? max : e.upper.value; + + return new HashSet<>(rangeTree.search(Interval.create(minTerm, maxTerm, (SSTableIndex) null))); + } + + public int intervalCount() + { + return rangeTree.intervalCount(); + } + + static class Builder extends TermTree.Builder + { + protected final List> intervals = new ArrayList<>(); + + protected Builder(OnDiskIndexBuilder.Mode mode, AbstractType comparator) + { + super(mode, comparator); + } + + public void addIndex(SSTableIndex index) + { + intervals.add(Interval.create(index.minTerm(), index.maxTerm(), index)); + } + + public TermTree build() + { + return new RangeTermTree(min, max, IntervalTree.build(intervals)); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/view/TermTree.java b/src/java/org/apache/cassandra/index/sasi/conf/view/TermTree.java new file mode 100644 index 0000000000..a175e22568 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/view/TermTree.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf.view; + +import java.nio.ByteBuffer; +import java.util.Set; + +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.db.marshal.AbstractType; + +public interface TermTree +{ + Set search(Expression e); + + int intervalCount(); + + abstract class Builder + { + protected final OnDiskIndexBuilder.Mode mode; + protected final AbstractType comparator; + protected ByteBuffer min, max; + + protected Builder(OnDiskIndexBuilder.Mode mode, AbstractType comparator) + { + this.mode = mode; + this.comparator = comparator; + } + + public final void add(SSTableIndex index) + { + addIndex(index); + + min = min == null || comparator.compare(min, index.minTerm()) > 0 ? index.minTerm() : min; + max = max == null || comparator.compare(max, index.maxTerm()) < 0 ? index.maxTerm() : max; + } + + protected abstract void addIndex(SSTableIndex index); + + public abstract TermTree build(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/conf/view/View.java b/src/java/org/apache/cassandra/index/sasi/conf/view/View.java new file mode 100644 index 0000000000..378c3c6cd7 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/conf/view/View.java @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.conf.view; + +import java.nio.ByteBuffer; +import java.util.*; + +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.AsciiType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.utils.Interval; +import org.apache.cassandra.utils.IntervalTree; + +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; + +public class View implements Iterable +{ + private final Map view; + + private final TermTree termTree; + private final IntervalTree> keyIntervalTree; + + public View(ColumnIndex index, Set indexes) + { + this(index, Collections.emptyList(), Collections.emptyList(), indexes); + } + + public View(ColumnIndex index, + Collection currentView, + Collection oldSSTables, + Set newIndexes) + { + Map newView = new HashMap<>(); + + AbstractType validator = index.getValidator(); + TermTree.Builder termTreeBuilder = (validator instanceof AsciiType || validator instanceof UTF8Type) + ? new PrefixTermTree.Builder(index.getMode().mode, validator) + : new RangeTermTree.Builder(index.getMode().mode, validator); + + List> keyIntervals = new ArrayList<>(); + for (SSTableIndex sstableIndex : Iterables.concat(currentView, newIndexes)) + { + SSTableReader sstable = sstableIndex.getSSTable(); + if (oldSSTables.contains(sstable) || sstable.isMarkedCompacted() || newView.containsKey(sstable.descriptor)) + { + sstableIndex.release(); + continue; + } + + newView.put(sstable.descriptor, sstableIndex); + + termTreeBuilder.add(sstableIndex); + keyIntervals.add(Interval.create(sstableIndex.minKey(), sstableIndex.maxKey(), sstableIndex)); + } + + this.view = newView; + this.termTree = termTreeBuilder.build(); + this.keyIntervalTree = IntervalTree.build(keyIntervals); + + if (keyIntervalTree.intervalCount() != termTree.intervalCount()) + throw new IllegalStateException(String.format("mismatched sizes for intervals tree for keys vs terms: %d != %d", keyIntervalTree.intervalCount(), termTree.intervalCount())); + } + + public Set match(final Set scope, Expression expression) + { + return Sets.filter(termTree.search(expression), index -> scope.contains(index.getSSTable())); + } + + public List match(ByteBuffer minKey, ByteBuffer maxKey) + { + return keyIntervalTree.search(Interval.create(minKey, maxKey, (SSTableIndex) null)); + } + + public Iterator iterator() + { + return view.values().iterator(); + } + + public Collection getIndexes() + { + return view.values(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/Descriptor.java b/src/java/org/apache/cassandra/index/sasi/disk/Descriptor.java new file mode 100644 index 0000000000..a719f50ca1 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/Descriptor.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +/** + * Object descriptor for SSTableAttachedSecondaryIndex files. Similar to, and based upon, the sstable descriptor. + */ +public class Descriptor +{ + public static final String VERSION_AA = "aa"; + public static final String VERSION_AB = "ab"; + public static final String CURRENT_VERSION = VERSION_AB; + public static final Descriptor CURRENT = new Descriptor(CURRENT_VERSION); + + public static class Version + { + public final String version; + + public Version(String version) + { + this.version = version; + } + + public String toString() + { + return version; + } + } + + public final Version version; + + public Descriptor(String v) + { + this.version = new Version(v); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/OnDiskBlock.java b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskBlock.java new file mode 100644 index 0000000000..32cda53d7e --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskBlock.java @@ -0,0 +1,142 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.Term; +import org.apache.cassandra.index.sasi.utils.MappedBuffer; +import org.apache.cassandra.db.marshal.AbstractType; + +public abstract class OnDiskBlock +{ + public enum BlockType + { + POINTER, DATA + } + + // this contains offsets of the terms and term data + protected final MappedBuffer blockIndex; + protected final int blockIndexSize; + + protected final boolean hasCombinedIndex; + protected final TokenTree combinedIndex; + + public OnDiskBlock(Descriptor descriptor, MappedBuffer block, BlockType blockType) + { + blockIndex = block; + + if (blockType == BlockType.POINTER) + { + hasCombinedIndex = false; + combinedIndex = null; + blockIndexSize = block.getInt() << 1; // num terms * sizeof(short) + return; + } + + long blockOffset = block.position(); + int combinedIndexOffset = block.getInt(blockOffset + OnDiskIndexBuilder.BLOCK_SIZE); + + hasCombinedIndex = (combinedIndexOffset >= 0); + long blockIndexOffset = blockOffset + OnDiskIndexBuilder.BLOCK_SIZE + 4 + combinedIndexOffset; + + combinedIndex = hasCombinedIndex ? new TokenTree(descriptor, blockIndex.duplicate().position(blockIndexOffset)) : null; + blockIndexSize = block.getInt() * 2; + } + + public SearchResult search(AbstractType comparator, ByteBuffer query) + { + int cmp = -1, start = 0, end = termCount() - 1, middle = 0; + + T element = null; + while (start <= end) + { + middle = start + ((end - start) >> 1); + element = getTerm(middle); + + cmp = element.compareTo(comparator, query); + if (cmp == 0) + return new SearchResult<>(element, cmp, middle); + else if (cmp < 0) + start = middle + 1; + else + end = middle - 1; + } + + return new SearchResult<>(element, cmp, middle); + } + + protected T getTerm(int index) + { + MappedBuffer dup = blockIndex.duplicate(); + long startsAt = getTermPosition(index); + if (termCount() - 1 == index) // last element + dup.position(startsAt); + else + dup.position(startsAt).limit(getTermPosition(index + 1)); + + return cast(dup); + } + + protected long getTermPosition(int idx) + { + return getTermPosition(blockIndex, idx, blockIndexSize); + } + + protected int termCount() + { + return blockIndexSize >> 1; + } + + protected abstract T cast(MappedBuffer data); + + static long getTermPosition(MappedBuffer data, int idx, int indexSize) + { + idx <<= 1; + assert idx < indexSize; + return data.position() + indexSize + data.getShort(data.position() + idx); + } + + public TokenTree getBlockIndex() + { + return combinedIndex; + } + + public int minOffset(OnDiskIndex.IteratorOrder order) + { + return order == OnDiskIndex.IteratorOrder.DESC ? 0 : termCount() - 1; + } + + public int maxOffset(OnDiskIndex.IteratorOrder order) + { + return minOffset(order) == 0 ? termCount() - 1 : 0; + } + + public static class SearchResult + { + public final T result; + public final int index, cmp; + + public SearchResult(T result, int cmp, int index) + { + this.result = result; + this.index = index; + this.cmp = cmp; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java new file mode 100644 index 0000000000..0f9e389001 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndex.java @@ -0,0 +1,773 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.*; +import java.nio.ByteBuffer; +import java.util.*; +import java.util.stream.Collectors; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.Term; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.plan.Expression.Op; +import org.apache.cassandra.index.sasi.utils.MappedBuffer; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; +import org.apache.cassandra.index.sasi.utils.AbstractIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.io.FSReadError; +import org.apache.cassandra.io.util.ChannelProxy; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.ByteBufferUtil; +import org.apache.cassandra.utils.FBUtilities; + +import com.google.common.base.Function; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.PeekingIterator; + +import static org.apache.cassandra.index.sasi.disk.OnDiskBlock.SearchResult; + +public class OnDiskIndex implements Iterable, Closeable +{ + public enum IteratorOrder + { + DESC(1), ASC(-1); + + public final int step; + + IteratorOrder(int step) + { + this.step = step; + } + + public int startAt(OnDiskBlock block, Expression e) + { + switch (this) + { + case DESC: + return e.lower == null + ? 0 + : startAt(block.search(e.validator, e.lower.value), e.lower.inclusive); + + case ASC: + return e.upper == null + ? block.termCount() - 1 + : startAt(block.search(e.validator, e.upper.value), e.upper.inclusive); + + default: + throw new IllegalArgumentException("Unknown order: " + this); + } + } + + public int startAt(SearchResult found, boolean inclusive) + { + switch (this) + { + case DESC: + if (found.cmp < 0) + return found.index + 1; + + return inclusive || found.cmp != 0 ? found.index : found.index + 1; + + case ASC: + if (found.cmp < 0) // search term was bigger then whole data set + return found.index; + return inclusive && (found.cmp == 0 || found.cmp < 0) ? found.index : found.index - 1; + + default: + throw new IllegalArgumentException("Unknown order: " + this); + } + } + } + + public final Descriptor descriptor; + protected final OnDiskIndexBuilder.Mode mode; + protected final OnDiskIndexBuilder.TermSize termSize; + + protected final AbstractType comparator; + protected final MappedBuffer indexFile; + protected final long indexSize; + + protected final Function keyFetcher; + + protected final String indexPath; + + protected final PointerLevel[] levels; + protected final DataLevel dataLevel; + + protected final ByteBuffer minTerm, maxTerm, minKey, maxKey; + + public OnDiskIndex(File index, AbstractType cmp, Function keyReader) + { + keyFetcher = keyReader; + + comparator = cmp; + indexPath = index.getAbsolutePath(); + + RandomAccessFile backingFile = null; + try + { + backingFile = new RandomAccessFile(index, "r"); + + descriptor = new Descriptor(backingFile.readUTF()); + + termSize = OnDiskIndexBuilder.TermSize.of(backingFile.readShort()); + + minTerm = ByteBufferUtil.readWithShortLength(backingFile); + maxTerm = ByteBufferUtil.readWithShortLength(backingFile); + + minKey = ByteBufferUtil.readWithShortLength(backingFile); + maxKey = ByteBufferUtil.readWithShortLength(backingFile); + + mode = OnDiskIndexBuilder.Mode.mode(backingFile.readUTF()); + + indexSize = backingFile.length(); + indexFile = new MappedBuffer(new ChannelProxy(indexPath, backingFile.getChannel())); + + // start of the levels + indexFile.position(indexFile.getLong(indexSize - 8)); + + int numLevels = indexFile.getInt(); + levels = new PointerLevel[numLevels]; + for (int i = 0; i < levels.length; i++) + { + int blockCount = indexFile.getInt(); + levels[i] = new PointerLevel(indexFile.position(), blockCount); + indexFile.position(indexFile.position() + blockCount * 8); + } + + int blockCount = indexFile.getInt(); + dataLevel = new DataLevel(indexFile.position(), blockCount); + } + catch (IOException e) + { + throw new FSReadError(e, index); + } + finally + { + FileUtils.closeQuietly(backingFile); + } + } + + public ByteBuffer minTerm() + { + return minTerm; + } + + public ByteBuffer maxTerm() + { + return maxTerm; + } + + public ByteBuffer minKey() + { + return minKey; + } + + public ByteBuffer maxKey() + { + return maxKey; + } + + public DataTerm min() + { + return dataLevel.getBlock(0).getTerm(0); + } + + public DataTerm max() + { + DataBlock block = dataLevel.getBlock(dataLevel.blockCount - 1); + return block.getTerm(block.termCount() - 1); + } + + /** + * Search for rows which match all of the terms inside the given expression in the index file. + * + * @param exp The expression to use for the query. + * + * @return Iterator which contains rows for all of the terms from the given range. + */ + public RangeIterator search(Expression exp) + { + // convert single NOT_EQ to range with exclusion + final Expression expression = (exp.getOp() != Op.NOT_EQ) + ? exp + : new Expression(exp).setOp(Op.RANGE) + .setLower(new Expression.Bound(minTerm, true)) + .setUpper(new Expression.Bound(maxTerm, true)) + .addExclusion(exp.lower.value); + + List exclusions = new ArrayList<>(expression.exclusions.size()); + + Iterables.addAll(exclusions, expression.exclusions.stream().filter(exclusion -> { + // accept only exclusions which are in the bounds of lower/upper + return !(expression.lower != null && comparator.compare(exclusion, expression.lower.value) < 0) + && !(expression.upper != null && comparator.compare(exclusion, expression.upper.value) > 0); + }).collect(Collectors.toList())); + + Collections.sort(exclusions, comparator); + + if (exclusions.size() == 0) + return searchRange(expression); + + List ranges = new ArrayList<>(exclusions.size()); + + // calculate range splits based on the sorted exclusions + Iterator exclusionsIterator = exclusions.iterator(); + + Expression.Bound min = expression.lower, max = null; + while (exclusionsIterator.hasNext()) + { + max = new Expression.Bound(exclusionsIterator.next(), false); + ranges.add(new Expression(expression).setOp(Op.RANGE).setLower(min).setUpper(max)); + min = max; + } + + assert max != null; + ranges.add(new Expression(expression).setOp(Op.RANGE).setLower(max).setUpper(expression.upper)); + + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + for (Expression e : ranges) + { + RangeIterator range = searchRange(e); + if (range != null) + builder.add(range); + } + + return builder.build(); + } + + private RangeIterator searchRange(Expression range) + { + Expression.Bound lower = range.lower; + Expression.Bound upper = range.upper; + + int lowerBlock = lower == null ? 0 : getDataBlock(lower.value); + int upperBlock = upper == null + ? dataLevel.blockCount - 1 + // optimization so we don't have to fetch upperBlock when query has lower == upper + : (lower != null && comparator.compare(lower.value, upper.value) == 0) ? lowerBlock : getDataBlock(upper.value); + + return (mode != OnDiskIndexBuilder.Mode.SPARSE || lowerBlock == upperBlock || upperBlock - lowerBlock <= 1) + ? searchPoint(lowerBlock, range) + : searchRange(lowerBlock, lower, upperBlock, upper); + } + + private RangeIterator searchRange(int lowerBlock, Expression.Bound lower, int upperBlock, Expression.Bound upper) + { + // if lower is at the beginning of the block that means we can just do a single iterator per block + SearchResult lowerPosition = (lower == null) ? null : searchIndex(lower.value, lowerBlock); + SearchResult upperPosition = (upper == null) ? null : searchIndex(upper.value, upperBlock); + + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + // optimistically assume that first and last blocks are full block reads, saves at least 3 'else' conditions + int firstFullBlockIdx = lowerBlock, lastFullBlockIdx = upperBlock; + + // 'lower' doesn't cover the whole block so we need to do a partial iteration + // Two reasons why that can happen: + // - 'lower' is not the first element of the block + // - 'lower' is first element but it's not inclusive in the query + if (lowerPosition != null && (lowerPosition.index > 0 || !lower.inclusive)) + { + DataBlock block = dataLevel.getBlock(lowerBlock); + int start = (lower.inclusive || lowerPosition.cmp != 0) ? lowerPosition.index : lowerPosition.index + 1; + + builder.add(block.getRange(start, block.termCount())); + firstFullBlockIdx = lowerBlock + 1; + } + + if (upperPosition != null) + { + DataBlock block = dataLevel.getBlock(upperBlock); + int lastIndex = block.termCount() - 1; + + // The save as with 'lower' but here we need to check if the upper is the last element of the block, + // which means that we only have to get individual results if: + // - if it *is not* the last element, or + // - it *is* but shouldn't be included (dictated by upperInclusive) + if (upperPosition.index != lastIndex || !upper.inclusive) + { + int end = (upperPosition.cmp < 0 || (upperPosition.cmp == 0 && upper.inclusive)) + ? upperPosition.index + 1 : upperPosition.index; + + builder.add(block.getRange(0, end)); + lastFullBlockIdx = upperBlock - 1; + } + } + + int totalSuperBlocks = (lastFullBlockIdx - firstFullBlockIdx) / OnDiskIndexBuilder.SUPER_BLOCK_SIZE; + + // if there are no super-blocks, we can simply read all of the block iterators in sequence + if (totalSuperBlocks == 0) + { + for (int i = firstFullBlockIdx; i <= lastFullBlockIdx; i++) + builder.add(dataLevel.getBlock(i).getBlockIndex().iterator(keyFetcher)); + + return builder.build(); + } + + // first get all of the blocks which are aligned before the first super-block in the sequence, + // e.g. if the block range was (1, 9) and super-block-size = 4, we need to read 1, 2, 3, 4 - 7 is covered by + // super-block, 8, 9 is a remainder. + + int superBlockAlignedStart = firstFullBlockIdx == 0 ? 0 : (int) FBUtilities.align(firstFullBlockIdx, OnDiskIndexBuilder.SUPER_BLOCK_SIZE); + for (int blockIdx = firstFullBlockIdx; blockIdx < Math.min(superBlockAlignedStart, lastFullBlockIdx); blockIdx++) + builder.add(getBlockIterator(blockIdx)); + + // now read all of the super-blocks matched by the request, from the previous comment + // it's a block with index 1 (which covers everything from 4 to 7) + + int superBlockIdx = superBlockAlignedStart / OnDiskIndexBuilder.SUPER_BLOCK_SIZE; + for (int offset = 0; offset < totalSuperBlocks - 1; offset++) + builder.add(dataLevel.getSuperBlock(superBlockIdx++).iterator()); + + // now it's time for a remainder read, again from the previous example it's 8, 9 because + // we have over-shot previous block but didn't request enough to cover next super-block. + + int lastCoveredBlock = superBlockIdx * OnDiskIndexBuilder.SUPER_BLOCK_SIZE; + for (int offset = 0; offset <= (lastFullBlockIdx - lastCoveredBlock); offset++) + builder.add(getBlockIterator(lastCoveredBlock + offset)); + + return builder.build(); + } + + private RangeIterator searchPoint(int lowerBlock, Expression expression) + { + Iterator terms = new TermIterator(lowerBlock, expression, IteratorOrder.DESC); + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + while (terms.hasNext()) + { + try + { + builder.add(terms.next().getTokens()); + } + finally + { + expression.checkpoint(); + } + } + + return builder.build(); + } + + private RangeIterator getBlockIterator(int blockIdx) + { + DataBlock block = dataLevel.getBlock(blockIdx); + return (block.hasCombinedIndex) + ? block.getBlockIndex().iterator(keyFetcher) + : block.getRange(0, block.termCount()); + } + + public Iterator iteratorAt(ByteBuffer query, IteratorOrder order, boolean inclusive) + { + Expression e = new Expression("", comparator); + Expression.Bound bound = new Expression.Bound(query, inclusive); + + switch (order) + { + case DESC: + e.setLower(bound); + break; + + case ASC: + e.setUpper(bound); + break; + + default: + throw new IllegalArgumentException("Unknown order: " + order); + } + + return new TermIterator(levels.length == 0 ? 0 : getBlockIdx(findPointer(query), query), e, order); + } + + private int getDataBlock(ByteBuffer query) + { + return levels.length == 0 ? 0 : getBlockIdx(findPointer(query), query); + } + + public Iterator iterator() + { + return new TermIterator(0, new Expression("", comparator), IteratorOrder.DESC); + } + + public void close() throws IOException + { + FileUtils.closeQuietly(indexFile); + } + + private PointerTerm findPointer(ByteBuffer query) + { + PointerTerm ptr = null; + for (PointerLevel level : levels) + { + if ((ptr = level.getPointer(ptr, query)) == null) + return null; + } + + return ptr; + } + + private SearchResult searchIndex(ByteBuffer query, int blockIdx) + { + return dataLevel.getBlock(blockIdx).search(comparator, query); + } + + private int getBlockIdx(PointerTerm ptr, ByteBuffer query) + { + int blockIdx = 0; + if (ptr != null) + { + int cmp = ptr.compareTo(comparator, query); + blockIdx = (cmp == 0 || cmp > 0) ? ptr.getBlock() : ptr.getBlock() + 1; + } + + return blockIdx; + } + + protected class PointerLevel extends Level + { + public PointerLevel(long offset, int count) + { + super(offset, count); + } + + public PointerTerm getPointer(PointerTerm parent, ByteBuffer query) + { + return getBlock(getBlockIdx(parent, query)).search(comparator, query).result; + } + + protected PointerBlock cast(MappedBuffer block) + { + return new PointerBlock(block); + } + } + + protected class DataLevel extends Level + { + protected final int superBlockCnt; + protected final long superBlocksOffset; + + public DataLevel(long offset, int count) + { + super(offset, count); + long baseOffset = blockOffsets + blockCount * 8; + superBlockCnt = indexFile.getInt(baseOffset); + superBlocksOffset = baseOffset + 4; + } + + protected DataBlock cast(MappedBuffer block) + { + return new DataBlock(block); + } + + public OnDiskSuperBlock getSuperBlock(int idx) + { + assert idx < superBlockCnt : String.format("requested index %d is greater than super block count %d", idx, superBlockCnt); + long blockOffset = indexFile.getLong(superBlocksOffset + idx * 8); + return new OnDiskSuperBlock(indexFile.duplicate().position(blockOffset)); + } + } + + protected class OnDiskSuperBlock + { + private final TokenTree tokenTree; + + public OnDiskSuperBlock(MappedBuffer buffer) + { + tokenTree = new TokenTree(descriptor, buffer); + } + + public RangeIterator iterator() + { + return tokenTree.iterator(keyFetcher); + } + } + + protected abstract class Level + { + protected final long blockOffsets; + protected final int blockCount; + + public Level(long offsets, int count) + { + this.blockOffsets = offsets; + this.blockCount = count; + } + + public T getBlock(int idx) throws FSReadError + { + assert idx >= 0 && idx < blockCount; + + // calculate block offset and move there + // (long is intentional, we'll just need mmap implementation which supports long positions) + long blockOffset = indexFile.getLong(blockOffsets + idx * 8); + return cast(indexFile.duplicate().position(blockOffset)); + } + + protected abstract T cast(MappedBuffer block); + } + + protected class DataBlock extends OnDiskBlock + { + public DataBlock(MappedBuffer data) + { + super(descriptor, data, BlockType.DATA); + } + + protected DataTerm cast(MappedBuffer data) + { + return new DataTerm(data, termSize, getBlockIndex()); + } + + public RangeIterator getRange(int start, int end) + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + NavigableMap sparse = new TreeMap<>(); + + for (int i = start; i < end; i++) + { + DataTerm term = getTerm(i); + + if (term.isSparse()) + { + NavigableMap tokens = term.getSparseTokens(); + for (Map.Entry t : tokens.entrySet()) + { + Token token = sparse.get(t.getKey()); + if (token == null) + sparse.put(t.getKey(), t.getValue()); + else + token.merge(t.getValue()); + } + } + else + { + builder.add(term.getTokens()); + } + } + + PrefetchedTokensIterator prefetched = sparse.isEmpty() ? null : new PrefetchedTokensIterator(sparse); + + if (builder.rangeCount() == 0) + return prefetched; + + builder.add(prefetched); + return builder.build(); + } + } + + protected class PointerBlock extends OnDiskBlock + { + public PointerBlock(MappedBuffer block) + { + super(descriptor, block, BlockType.POINTER); + } + + protected PointerTerm cast(MappedBuffer data) + { + return new PointerTerm(data, termSize); + } + } + + public class DataTerm extends Term implements Comparable + { + private final TokenTree perBlockIndex; + + protected DataTerm(MappedBuffer content, OnDiskIndexBuilder.TermSize size, TokenTree perBlockIndex) + { + super(content, size); + this.perBlockIndex = perBlockIndex; + } + + public RangeIterator getTokens() + { + final long blockEnd = FBUtilities.align(content.position(), OnDiskIndexBuilder.BLOCK_SIZE); + + if (isSparse()) + return new PrefetchedTokensIterator(getSparseTokens()); + + long offset = blockEnd + 4 + content.getInt(getDataOffset() + 1); + return new TokenTree(descriptor, indexFile.duplicate().position(offset)).iterator(keyFetcher); + } + + public boolean isSparse() + { + return content.get(getDataOffset()) > 0; + } + + public NavigableMap getSparseTokens() + { + long ptrOffset = getDataOffset(); + + byte size = content.get(ptrOffset); + + assert size > 0; + + NavigableMap individualTokens = new TreeMap<>(); + for (int i = 0; i < size; i++) + { + Token token = perBlockIndex.get(content.getLong(ptrOffset + 1 + (8 * i)), keyFetcher); + + assert token != null; + individualTokens.put(token.get(), token); + } + + return individualTokens; + } + + public int compareTo(DataTerm other) + { + return other == null ? 1 : compareTo(comparator, other.getTerm()); + } + } + + protected static class PointerTerm extends Term + { + public PointerTerm(MappedBuffer content, OnDiskIndexBuilder.TermSize size) + { + super(content, size); + } + + public int getBlock() + { + return content.getInt(getDataOffset()); + } + } + + private static class PrefetchedTokensIterator extends RangeIterator + { + private final NavigableMap tokens; + private PeekingIterator currentIterator; + + public PrefetchedTokensIterator(NavigableMap tokens) + { + super(tokens.firstKey(), tokens.lastKey(), tokens.size()); + this.tokens = tokens; + this.currentIterator = Iterators.peekingIterator(tokens.values().iterator()); + } + + protected Token computeNext() + { + return currentIterator != null && currentIterator.hasNext() + ? currentIterator.next() + : endOfData(); + } + + protected void performSkipTo(Long nextToken) + { + currentIterator = Iterators.peekingIterator(tokens.tailMap(nextToken, true).values().iterator()); + } + + public void close() throws IOException + { + endOfData(); + } + } + + public AbstractType getComparator() + { + return comparator; + } + + public String getIndexPath() + { + return indexPath; + } + + private class TermIterator extends AbstractIterator + { + private final Expression e; + private final IteratorOrder order; + + protected OnDiskBlock currentBlock; + protected int blockIndex, offset; + + private boolean checkLower = true, checkUpper = true; + + public TermIterator(int startBlock, Expression expression, IteratorOrder order) + { + this.e = expression; + this.order = order; + this.blockIndex = startBlock; + + nextBlock(); + } + + protected DataTerm computeNext() + { + for (;;) + { + if (currentBlock == null) + return endOfData(); + + if (offset >= 0 && offset < currentBlock.termCount()) + { + DataTerm currentTerm = currentBlock.getTerm(nextOffset()); + + if (checkLower && !e.isLowerSatisfiedBy(currentTerm)) + continue; + + // flip the flag right on the first bounds match + // to avoid expensive comparisons + checkLower = false; + + if (checkUpper && !e.isUpperSatisfiedBy(currentTerm)) + return endOfData(); + + return currentTerm; + } + + nextBlock(); + } + } + + protected void nextBlock() + { + currentBlock = null; + + if (blockIndex < 0 || blockIndex >= dataLevel.blockCount) + return; + + currentBlock = dataLevel.getBlock(nextBlockIndex()); + offset = checkLower ? order.startAt(currentBlock, e) : currentBlock.minOffset(order); + + // let's check the last term of the new block right away + // if expression's upper bound is satisfied by it such means that we can avoid + // doing any expensive upper bound checks for that block. + checkUpper = e.hasUpper() && !e.isUpperSatisfiedBy(currentBlock.getTerm(currentBlock.maxOffset(order))); + } + + protected int nextBlockIndex() + { + int current = blockIndex; + blockIndex += order.step; + return current; + } + + protected int nextOffset() + { + int current = offset; + offset += order.step; + return current; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java new file mode 100644 index 0000000000..7b8f5c9e19 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/OnDiskIndexBuilder.java @@ -0,0 +1,627 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.File; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.*; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.sa.IntegralSA; +import org.apache.cassandra.index.sasi.sa.SA; +import org.apache.cassandra.index.sasi.sa.TermIterator; +import org.apache.cassandra.index.sasi.sa.SuffixSA; +import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.io.FSWriteError; +import org.apache.cassandra.io.compress.BufferType; +import org.apache.cassandra.io.util.*; +import org.apache.cassandra.utils.ByteBufferUtil; +import org.apache.cassandra.utils.FBUtilities; +import org.apache.cassandra.utils.Pair; + +import com.carrotsearch.hppc.LongArrayList; +import com.carrotsearch.hppc.LongSet; +import com.carrotsearch.hppc.ShortArrayList; +import com.google.common.annotations.VisibleForTesting; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OnDiskIndexBuilder +{ + private static final Logger logger = LoggerFactory.getLogger(OnDiskIndexBuilder.class); + + public enum Mode + { + PREFIX, CONTAINS, SPARSE; + + public static Mode mode(String mode) + { + return Mode.valueOf(mode.toUpperCase()); + } + } + + public enum TermSize + { + INT(4), LONG(8), UUID(16), VARIABLE(-1); + + public final int size; + + TermSize(int size) + { + this.size = size; + } + + public boolean isConstant() + { + return this != VARIABLE; + } + + public static TermSize of(int size) + { + switch (size) + { + case -1: + return VARIABLE; + + case 4: + return INT; + + case 8: + return LONG; + + case 16: + return UUID; + + default: + throw new IllegalStateException("unknown state: " + size); + } + } + + public static TermSize sizeOf(AbstractType comparator) + { + if (comparator instanceof Int32Type || comparator instanceof FloatType) + return INT; + + if (comparator instanceof LongType || comparator instanceof DoubleType + || comparator instanceof TimestampType || comparator instanceof DateType) + return LONG; + + if (comparator instanceof TimeUUIDType || comparator instanceof UUIDType) + return UUID; + + return VARIABLE; + } + } + + public static final int BLOCK_SIZE = 4096; + public static final int MAX_TERM_SIZE = 1024; + public static final int SUPER_BLOCK_SIZE = 64; + + private final List> levels = new ArrayList<>(); + private MutableLevel dataLevel; + + private final TermSize termSize; + + private final AbstractType keyComparator, termComparator; + + private final Map terms; + private final Mode mode; + + private ByteBuffer minKey, maxKey; + private long estimatedBytes; + + public OnDiskIndexBuilder(AbstractType keyComparator, AbstractType comparator, Mode mode) + { + this.keyComparator = keyComparator; + this.termComparator = comparator; + this.terms = new HashMap<>(); + this.termSize = TermSize.sizeOf(comparator); + this.mode = mode; + } + + public OnDiskIndexBuilder add(ByteBuffer term, DecoratedKey key, long keyPosition) + { + if (term.remaining() >= MAX_TERM_SIZE) + { + logger.error("Rejecting value (value size {}, maximum size {} bytes).", term.remaining(), Short.MAX_VALUE); + return this; + } + + TokenTreeBuilder tokens = terms.get(term); + if (tokens == null) + { + terms.put(term, (tokens = new TokenTreeBuilder())); + + // on-heap size estimates from jol + // 64 bytes for TTB + 48 bytes for TreeMap in TTB + size bytes for the term (map key) + estimatedBytes += 64 + 48 + term.remaining(); + } + + tokens.add((Long) key.getToken().getTokenValue(), keyPosition); + + // calculate key range (based on actual key values) for current index + minKey = (minKey == null || keyComparator.compare(minKey, key.getKey()) > 0) ? key.getKey() : minKey; + maxKey = (maxKey == null || keyComparator.compare(maxKey, key.getKey()) < 0) ? key.getKey() : maxKey; + + // 60 ((boolean(1)*4) + (long(8)*4) + 24) bytes for the LongOpenHashSet created when the keyPosition was added + // + 40 bytes for the TreeMap.Entry + 8 bytes for the token (key). + // in the case of hash collision for the token we may overestimate but this is extremely rare + estimatedBytes += 60 + 40 + 8; + + return this; + } + + public long estimatedMemoryUse() + { + return estimatedBytes; + } + + private void addTerm(InMemoryDataTerm term, SequentialWriter out) throws IOException + { + InMemoryPointerTerm ptr = dataLevel.add(term); + if (ptr == null) + return; + + int levelIdx = 0; + for (;;) + { + MutableLevel level = getIndexLevel(levelIdx++, out); + if ((ptr = level.add(ptr)) == null) + break; + } + } + + public boolean isEmpty() + { + return terms.isEmpty(); + } + + public void finish(Pair range, File file, TermIterator terms) + { + finish(Descriptor.CURRENT, range, file, terms); + } + + /** + * Finishes up index building process by creating/populating index file. + * + * @param indexFile The file to write index contents to. + * + * @return true if index was written successfully, false otherwise (e.g. if index was empty). + * + * @throws FSWriteError on I/O error. + */ + public boolean finish(File indexFile) throws FSWriteError + { + return finish(Descriptor.CURRENT, indexFile); + } + + @VisibleForTesting + protected boolean finish(Descriptor descriptor, File file) throws FSWriteError + { + // no terms means there is nothing to build + if (terms.isEmpty()) + return false; + + // split terms into suffixes only if it's text, otherwise (even if CONTAINS is set) use terms in original form + SA sa = ((termComparator instanceof UTF8Type || termComparator instanceof AsciiType) && mode == Mode.CONTAINS) + ? new SuffixSA(termComparator, mode) : new IntegralSA(termComparator, mode); + + for (Map.Entry term : terms.entrySet()) + sa.add(term.getKey(), term.getValue()); + + finish(descriptor, Pair.create(minKey, maxKey), file, sa.finish()); + return true; + } + + protected void finish(Descriptor descriptor, Pair range, File file, TermIterator terms) + { + SequentialWriter out = null; + + try + { + out = new SequentialWriter(file, BLOCK_SIZE, BufferType.ON_HEAP); + + out.writeUTF(descriptor.version.toString()); + + out.writeShort(termSize.size); + + // min, max term (useful to find initial scan range from search expressions) + ByteBufferUtil.writeWithShortLength(terms.minTerm(), out); + ByteBufferUtil.writeWithShortLength(terms.maxTerm(), out); + + // min, max keys covered by index (useful when searching across multiple indexes) + ByteBufferUtil.writeWithShortLength(range.left, out); + ByteBufferUtil.writeWithShortLength(range.right, out); + + out.writeUTF(mode.toString()); + + out.skipBytes((int) (BLOCK_SIZE - out.position())); + + dataLevel = mode == Mode.SPARSE ? new DataBuilderLevel(out, new MutableDataBlock(mode)) + : new MutableLevel<>(out, new MutableDataBlock(mode)); + while (terms.hasNext()) + { + Pair term = terms.next(); + addTerm(new InMemoryDataTerm(term.left, term.right), out); + } + + dataLevel.finalFlush(); + for (MutableLevel l : levels) + l.flush(); // flush all of the buffers + + // and finally write levels index + final long levelIndexPosition = out.position(); + + out.writeInt(levels.size()); + for (int i = levels.size() - 1; i >= 0; i--) + levels.get(i).flushMetadata(); + + dataLevel.flushMetadata(); + + out.writeLong(levelIndexPosition); + + // sync contents of the output and disk, + // since it's not done implicitly on close + out.sync(); + } + catch (IOException e) + { + throw new FSWriteError(e, file); + } + finally + { + FileUtils.closeQuietly(out); + } + } + + private MutableLevel getIndexLevel(int idx, SequentialWriter out) + { + if (levels.size() == 0) + levels.add(new MutableLevel<>(out, new MutableBlock<>())); + + if (levels.size() - 1 < idx) + { + int toAdd = idx - (levels.size() - 1); + for (int i = 0; i < toAdd; i++) + levels.add(new MutableLevel<>(out, new MutableBlock<>())); + } + + return levels.get(idx); + } + + protected static void alignToBlock(SequentialWriter out) throws IOException + { + long endOfBlock = out.position(); + if ((endOfBlock & (BLOCK_SIZE - 1)) != 0) // align on the block boundary if needed + out.skipBytes((int) (FBUtilities.align(endOfBlock, BLOCK_SIZE) - endOfBlock)); + } + + private class InMemoryTerm + { + protected final ByteBuffer term; + + public InMemoryTerm(ByteBuffer term) + { + this.term = term; + } + + public int serializedSize() + { + return (termSize.isConstant() ? 0 : 2) + term.remaining(); + } + + public void serialize(DataOutputPlus out) throws IOException + { + if (termSize.isConstant()) + out.write(term); + else + ByteBufferUtil.writeWithShortLength(term, out); + } + } + + private class InMemoryPointerTerm extends InMemoryTerm + { + protected final int blockCnt; + + public InMemoryPointerTerm(ByteBuffer term, int blockCnt) + { + super(term); + this.blockCnt = blockCnt; + } + + public int serializedSize() + { + return super.serializedSize() + 4; + } + + public void serialize(DataOutputPlus out) throws IOException + { + super.serialize(out); + out.writeInt(blockCnt); + } + } + + private class InMemoryDataTerm extends InMemoryTerm + { + private final TokenTreeBuilder keys; + + public InMemoryDataTerm(ByteBuffer term, TokenTreeBuilder keys) + { + super(term); + this.keys = keys; + } + } + + private class MutableLevel + { + private final LongArrayList blockOffsets = new LongArrayList(); + + protected final SequentialWriter out; + + private final MutableBlock inProcessBlock; + private InMemoryPointerTerm lastTerm; + + public MutableLevel(SequentialWriter out, MutableBlock block) + { + this.out = out; + this.inProcessBlock = block; + } + + /** + * @return If we flushed a block, return the last term of that block; else, null. + */ + public InMemoryPointerTerm add(T term) throws IOException + { + InMemoryPointerTerm toPromote = null; + + if (!inProcessBlock.hasSpaceFor(term)) + { + flush(); + toPromote = lastTerm; + } + + inProcessBlock.add(term); + + lastTerm = new InMemoryPointerTerm(term.term, blockOffsets.size()); + return toPromote; + } + + public void flush() throws IOException + { + blockOffsets.add(out.position()); + inProcessBlock.flushAndClear(out); + } + + public void finalFlush() throws IOException + { + flush(); + } + + public void flushMetadata() throws IOException + { + flushMetadata(blockOffsets); + } + + protected void flushMetadata(LongArrayList longArrayList) throws IOException + { + out.writeInt(longArrayList.size()); + for (int i = 0; i < longArrayList.size(); i++) + out.writeLong(longArrayList.get(i)); + } + } + + /** builds standard data blocks and super blocks, as well */ + private class DataBuilderLevel extends MutableLevel + { + private final LongArrayList superBlockOffsets = new LongArrayList(); + + /** count of regular data blocks written since current super block was init'd */ + private int dataBlocksCnt; + private TokenTreeBuilder superBlockTree; + + public DataBuilderLevel(SequentialWriter out, MutableBlock block) + { + super(out, block); + superBlockTree = new TokenTreeBuilder(); + } + + public InMemoryPointerTerm add(InMemoryDataTerm term) throws IOException + { + InMemoryPointerTerm ptr = super.add(term); + if (ptr != null) + { + dataBlocksCnt++; + flushSuperBlock(false); + } + superBlockTree.add(term.keys.getTokens()); + return ptr; + } + + public void flushSuperBlock(boolean force) throws IOException + { + if (dataBlocksCnt == SUPER_BLOCK_SIZE || (force && !superBlockTree.getTokens().isEmpty())) + { + superBlockOffsets.add(out.position()); + superBlockTree.finish().write(out); + alignToBlock(out); + + dataBlocksCnt = 0; + superBlockTree = new TokenTreeBuilder(); + } + } + + public void finalFlush() throws IOException + { + super.flush(); + flushSuperBlock(true); + } + + public void flushMetadata() throws IOException + { + super.flushMetadata(); + flushMetadata(superBlockOffsets); + } + } + + private static class MutableBlock + { + protected final DataOutputBufferFixed buffer; + protected final ShortArrayList offsets; + + public MutableBlock() + { + buffer = new DataOutputBufferFixed(BLOCK_SIZE); + offsets = new ShortArrayList(); + } + + public final void add(T term) throws IOException + { + offsets.add((short) buffer.position()); + addInternal(term); + } + + protected void addInternal(T term) throws IOException + { + term.serialize(buffer); + } + + public boolean hasSpaceFor(T element) + { + return sizeAfter(element) < BLOCK_SIZE; + } + + protected int sizeAfter(T element) + { + return getWatermark() + 4 + element.serializedSize(); + } + + protected int getWatermark() + { + return 4 + offsets.size() * 2 + (int) buffer.position(); + } + + public void flushAndClear(SequentialWriter out) throws IOException + { + out.writeInt(offsets.size()); + for (int i = 0; i < offsets.size(); i++) + out.writeShort(offsets.get(i)); + + out.write(buffer.buffer()); + + alignToBlock(out); + + offsets.clear(); + buffer.clear(); + } + } + + private static class MutableDataBlock extends MutableBlock + { + private final Mode mode; + + private int offset = 0; + private int sparseValueTerms = 0; + + private final List containers = new ArrayList<>(); + private TokenTreeBuilder combinedIndex; + + public MutableDataBlock(Mode mode) + { + this.mode = mode; + this.combinedIndex = new TokenTreeBuilder(); + } + + protected void addInternal(InMemoryDataTerm term) throws IOException + { + TokenTreeBuilder keys = term.keys; + + if (mode == Mode.SPARSE && keys.getTokenCount() <= 5) + { + writeTerm(term, keys); + sparseValueTerms++; + } + else + { + writeTerm(term, offset); + + offset += keys.serializedSize(); + containers.add(keys); + } + + if (mode == Mode.SPARSE) + combinedIndex.add(keys.getTokens()); + } + + protected int sizeAfter(InMemoryDataTerm element) + { + return super.sizeAfter(element) + ptrLength(element); + } + + public void flushAndClear(SequentialWriter out) throws IOException + { + super.flushAndClear(out); + + out.writeInt((sparseValueTerms == 0) ? -1 : offset); + + if (containers.size() > 0) + { + for (TokenTreeBuilder tokens : containers) + tokens.write(out); + } + + if (sparseValueTerms > 0) + { + combinedIndex.finish().write(out); + } + + alignToBlock(out); + + containers.clear(); + combinedIndex = new TokenTreeBuilder(); + + offset = 0; + sparseValueTerms = 0; + } + + private int ptrLength(InMemoryDataTerm term) + { + return (term.keys.getTokenCount() > 5) + ? 5 // 1 byte type + 4 byte offset to the tree + : 1 + (8 * (int) term.keys.getTokenCount()); // 1 byte size + n 8 byte tokens + } + + private void writeTerm(InMemoryTerm term, TokenTreeBuilder keys) throws IOException + { + term.serialize(buffer); + buffer.writeByte((byte) keys.getTokenCount()); + + Iterator> tokens = keys.iterator(); + while (tokens.hasNext()) + buffer.writeLong(tokens.next().left); + } + + private void writeTerm(InMemoryTerm term, int offset) throws IOException + { + term.serialize(buffer); + buffer.writeByte(0x0); + buffer.writeInt(offset); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java new file mode 100644 index 0000000000..6e63c71526 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java @@ -0,0 +1,361 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.File; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.*; + +import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutor; +import org.apache.cassandra.concurrent.NamedThreadFactory; +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.compaction.OperationType; +import org.apache.cassandra.db.rows.Row; +import org.apache.cassandra.db.rows.Unfiltered; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.utils.CombinedTermIterator; +import org.apache.cassandra.index.sasi.utils.TypeUtil; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.SSTableFlushObserver; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.FBUtilities; +import org.apache.cassandra.utils.Pair; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.Uninterruptibles; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PerSSTableIndexWriter implements SSTableFlushObserver +{ + private static final Logger logger = LoggerFactory.getLogger(PerSSTableIndexWriter.class); + + private static final ThreadPoolExecutor INDEX_FLUSHER_MEMTABLE; + private static final ThreadPoolExecutor INDEX_FLUSHER_GENERAL; + + static + { + INDEX_FLUSHER_GENERAL = new JMXEnabledThreadPoolExecutor(1, 8, 60, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(), + new NamedThreadFactory("SASI-General"), + "internal"); + INDEX_FLUSHER_GENERAL.allowCoreThreadTimeOut(true); + + INDEX_FLUSHER_MEMTABLE = new JMXEnabledThreadPoolExecutor(1, 8, 60, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(), + new NamedThreadFactory("SASI-Memtable"), + "internal"); + INDEX_FLUSHER_MEMTABLE.allowCoreThreadTimeOut(true); + } + + private final int nowInSec = FBUtilities.nowInSeconds(); + + private final Descriptor descriptor; + private final OperationType source; + + private final AbstractType keyValidator; + private final Map supportedIndexes; + + @VisibleForTesting + protected final Map indexes; + + private DecoratedKey currentKey; + private long currentKeyPosition; + private boolean isComplete; + + public PerSSTableIndexWriter(AbstractType keyValidator, + Descriptor descriptor, + OperationType source, + Map supportedIndexes) + { + this.keyValidator = keyValidator; + this.descriptor = descriptor; + this.source = source; + this.supportedIndexes = supportedIndexes; + this.indexes = new HashMap<>(); + } + + public void begin() + {} + + public void startPartition(DecoratedKey key, long curPosition) + { + currentKey = key; + currentKeyPosition = curPosition; + } + + public void nextUnfilteredCluster(Unfiltered unfiltered) + { + if (!unfiltered.isRow()) + return; + + Row row = (Row) unfiltered; + + supportedIndexes.keySet().forEach((column) -> { + ByteBuffer value = ColumnIndex.getValueOf(column, row, nowInSec); + if (value == null) + return; + + ColumnIndex columnIndex = supportedIndexes.get(column); + if (columnIndex == null) + return; + + Index index = indexes.get(column); + if (index == null) + indexes.put(column, (index = new Index(columnIndex))); + + index.add(value.duplicate(), currentKey, currentKeyPosition); + }); + } + + public void complete() + { + if (isComplete) + return; + + currentKey = null; + + try + { + CountDownLatch latch = new CountDownLatch(indexes.size()); + for (Index index : indexes.values()) + index.complete(latch); + + Uninterruptibles.awaitUninterruptibly(latch); + } + finally + { + indexes.clear(); + isComplete = true; + } + } + + public Index getIndex(ColumnDefinition columnDef) + { + return indexes.get(columnDef); + } + + public Descriptor getDescriptor() + { + return descriptor; + } + + @VisibleForTesting + protected class Index + { + private final ColumnIndex columnIndex; + private final String outputFile; + private final AbstractAnalyzer analyzer; + private final long maxMemorySize; + + @VisibleForTesting + protected final Set> segments; + private int segmentNumber = 0; + + private OnDiskIndexBuilder currentBuilder; + + public Index(ColumnIndex columnIndex) + { + this.columnIndex = columnIndex; + this.outputFile = descriptor.filenameFor(columnIndex.getComponent()); + this.analyzer = columnIndex.getAnalyzer(); + this.segments = new HashSet<>(); + this.maxMemorySize = maxMemorySize(columnIndex); + this.currentBuilder = newIndexBuilder(); + } + + public void add(ByteBuffer term, DecoratedKey key, long keyPosition) + { + if (term.remaining() == 0) + return; + + boolean isAdded = false; + + analyzer.reset(term); + while (analyzer.hasNext()) + { + ByteBuffer token = analyzer.next(); + int size = token.remaining(); + + if (token.remaining() >= OnDiskIndexBuilder.MAX_TERM_SIZE) + { + logger.info("Rejecting value (size {}, maximum {} bytes) for column {} (analyzed {}) at {} SSTable.", + term.remaining(), + OnDiskIndexBuilder.MAX_TERM_SIZE, + columnIndex.getColumnName(), + columnIndex.getMode().isAnalyzed, + descriptor); + continue; + } + + if (!TypeUtil.isValid(token, columnIndex.getValidator())) + { + if ((token = TypeUtil.tryUpcast(token, columnIndex.getValidator())) == null) + { + logger.info("({}) Failed to add {} to index for key: {}, value size was {} bytes, validator is {}.", + outputFile, + columnIndex.getColumnName(), + keyValidator.getString(key.getKey()), + size, + columnIndex.getValidator()); + continue; + } + } + + currentBuilder.add(token, key, keyPosition); + isAdded = true; + } + + if (!isAdded || currentBuilder.estimatedMemoryUse() < maxMemorySize) + return; // non of the generated tokens were added to the index or memory size wasn't reached + + segments.add(getExecutor().submit(scheduleSegmentFlush(false))); + } + + @VisibleForTesting + protected Callable scheduleSegmentFlush(final boolean isFinal) + { + final OnDiskIndexBuilder builder = currentBuilder; + currentBuilder = newIndexBuilder(); + + final String segmentFile = filename(isFinal); + + return () -> { + long start1 = System.nanoTime(); + + try + { + File index = new File(segmentFile); + return builder.finish(index) ? new OnDiskIndex(index, columnIndex.getValidator(), null) : null; + } + finally + { + if (!isFinal) + logger.info("Flushed index segment {}, took {} ms.", segmentFile, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start1)); + } + }; + } + + public void complete(final CountDownLatch latch) + { + logger.info("Scheduling index flush to {}", outputFile); + + getExecutor().submit((Runnable) () -> { + long start1 = System.nanoTime(); + + OnDiskIndex[] parts = new OnDiskIndex[segments.size() + 1]; + + try + { + // no parts present, build entire index from memory + if (segments.isEmpty()) + { + scheduleSegmentFlush(true).call(); + return; + } + + // parts are present but there is something still in memory, let's flush that inline + if (!currentBuilder.isEmpty()) + { + OnDiskIndex last = scheduleSegmentFlush(false).call(); + segments.add(Futures.immediateFuture(last)); + } + + int index = 0; + ByteBuffer combinedMin = null, combinedMax = null; + + for (Future f : segments) + { + OnDiskIndex part = Futures.getUnchecked(f); + if (part == null) + continue; + + parts[index++] = part; + combinedMin = (combinedMin == null || keyValidator.compare(combinedMin, part.minKey()) > 0) ? part.minKey() : combinedMin; + combinedMax = (combinedMax == null || keyValidator.compare(combinedMax, part.maxKey()) < 0) ? part.maxKey() : combinedMax; + } + + OnDiskIndexBuilder builder = newIndexBuilder(); + builder.finish(Pair.create(combinedMin, combinedMax), + new File(outputFile), + new CombinedTermIterator(parts)); + } + catch (Exception e) + { + logger.error("Failed to flush index {}.", outputFile, e); + FileUtils.delete(outputFile); + } + finally + { + logger.info("Index flush to {} took {} ms.", outputFile, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start1)); + + for (OnDiskIndex part : parts) + { + if (part == null) + continue; + + FileUtils.closeQuietly(part); + FileUtils.delete(part.getIndexPath()); + } + + latch.countDown(); + } + }); + } + + private ExecutorService getExecutor() + { + return source == OperationType.FLUSH ? INDEX_FLUSHER_MEMTABLE : INDEX_FLUSHER_GENERAL; + } + + private OnDiskIndexBuilder newIndexBuilder() + { + return new OnDiskIndexBuilder(keyValidator, columnIndex.getValidator(), columnIndex.getMode().mode); + } + + public String filename(boolean isFinal) + { + return outputFile + (isFinal ? "" : "_" + segmentNumber++); + } + } + + protected long maxMemorySize(ColumnIndex columnIndex) + { + // 1G for memtable and configuration for compaction + return source == OperationType.FLUSH ? 1073741824L : columnIndex.getMode().maxCompactionFlushMemoryInMb; + } + + public int hashCode() + { + return descriptor.hashCode(); + } + + public boolean equals(Object o) + { + return !(o == null || !(o instanceof PerSSTableIndexWriter)) && descriptor.equals(((PerSSTableIndexWriter) o).descriptor); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/Token.java b/src/java/org/apache/cassandra/index/sasi/disk/Token.java new file mode 100644 index 0000000000..02130a370b --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/Token.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import com.google.common.primitives.Longs; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.utils.CombinedValue; + +public abstract class Token implements CombinedValue, Iterable +{ + protected final long token; + + public Token(long token) + { + this.token = token; + } + + public Long get() + { + return token; + } + + public int compareTo(CombinedValue o) + { + return Longs.compare(token, ((Token) o).token); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java b/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java new file mode 100644 index 0000000000..5d85d00c6b --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/TokenTree.java @@ -0,0 +1,519 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.IOException; +import java.util.*; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.utils.AbstractIterator; +import org.apache.cassandra.index.sasi.utils.CombinedValue; +import org.apache.cassandra.index.sasi.utils.MappedBuffer; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.utils.MergeIterator; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.collect.Iterators; +import org.apache.commons.lang3.builder.HashCodeBuilder; + +import static org.apache.cassandra.index.sasi.disk.TokenTreeBuilder.EntryType; + +// Note: all of the seek-able offsets contained in TokenTree should be sizeof(long) +// even if currently only lower int portion of them if used, because that makes +// it possible to switch to mmap implementation which supports long positions +// without any on-disk format changes and/or re-indexing if one day we'll have a need to. +public class TokenTree +{ + private static final int LONG_BYTES = Long.SIZE / 8; + private static final int SHORT_BYTES = Short.SIZE / 8; + + private final Descriptor descriptor; + private final MappedBuffer file; + private final long startPos; + private final long treeMinToken; + private final long treeMaxToken; + private final long tokenCount; + + @VisibleForTesting + protected TokenTree(MappedBuffer tokenTree) + { + this(Descriptor.CURRENT, tokenTree); + } + + public TokenTree(Descriptor d, MappedBuffer tokenTree) + { + descriptor = d; + file = tokenTree; + startPos = file.position(); + + file.position(startPos + TokenTreeBuilder.SHARED_HEADER_BYTES); + + if (!validateMagic()) + throw new IllegalArgumentException("invalid token tree"); + + tokenCount = file.getLong(); + treeMinToken = file.getLong(); + treeMaxToken = file.getLong(); + } + + public long getCount() + { + return tokenCount; + } + + public RangeIterator iterator(Function keyFetcher) + { + return new TokenTreeIterator(file.duplicate(), keyFetcher); + } + + public OnDiskToken get(final long searchToken, Function keyFetcher) + { + seekToLeaf(searchToken, file); + long leafStart = file.position(); + short leafSize = file.getShort(leafStart + 1); // skip the info byte + + file.position(leafStart + TokenTreeBuilder.BLOCK_HEADER_BYTES); // skip to tokens + short tokenIndex = searchLeaf(searchToken, leafSize); + + file.position(leafStart + TokenTreeBuilder.BLOCK_HEADER_BYTES); + + OnDiskToken token = OnDiskToken.getTokenAt(file, tokenIndex, leafSize, keyFetcher); + return token.get().equals(searchToken) ? token : null; + } + + private boolean validateMagic() + { + switch (descriptor.version.toString()) + { + case Descriptor.VERSION_AA: + return true; + case Descriptor.VERSION_AB: + return TokenTreeBuilder.AB_MAGIC == file.getShort(); + default: + return false; + } + } + + // finds leaf that *could* contain token + private void seekToLeaf(long token, MappedBuffer file) + { + // this loop always seeks forward except for the first iteration + // where it may seek back to the root + long blockStart = startPos; + while (true) + { + file.position(blockStart); + + byte info = file.get(); + boolean isLeaf = (info & 1) == 1; + + if (isLeaf) + { + file.position(blockStart); + break; + } + + short tokenCount = file.getShort(); + + long minToken = file.getLong(); + long maxToken = file.getLong(); + + long seekBase = blockStart + TokenTreeBuilder.BLOCK_HEADER_BYTES; + if (minToken > token) + { + // seek to beginning of child offsets to locate first child + file.position(seekBase + tokenCount * LONG_BYTES); + blockStart = (startPos + (int) file.getLong()); + } + else if (maxToken < token) + { + // seek to end of child offsets to locate last child + file.position(seekBase + (2 * tokenCount) * LONG_BYTES); + blockStart = (startPos + (int) file.getLong()); + } + else + { + // skip to end of block header/start of interior block tokens + file.position(seekBase); + + short offsetIndex = searchBlock(token, tokenCount, file); + + // file pointer is now at beginning of offsets + if (offsetIndex == tokenCount) + file.position(file.position() + (offsetIndex * LONG_BYTES)); + else + file.position(file.position() + ((tokenCount - offsetIndex - 1) + offsetIndex) * LONG_BYTES); + + blockStart = (startPos + (int) file.getLong()); + } + } + } + + private short searchBlock(long searchToken, short tokenCount, MappedBuffer file) + { + short offsetIndex = 0; + for (int i = 0; i < tokenCount; i++) + { + long readToken = file.getLong(); + if (searchToken < readToken) + break; + + offsetIndex++; + } + + return offsetIndex; + } + + private short searchLeaf(long searchToken, short tokenCount) + { + long base = file.position(); + + int start = 0; + int end = tokenCount; + int middle = 0; + + while (start <= end) + { + middle = start + ((end - start) >> 1); + + // each entry is 16 bytes wide, token is in bytes 4-11 + long token = file.getLong(base + (middle * (2 * LONG_BYTES) + 4)); + + if (token == searchToken) + break; + + if (token < searchToken) + start = middle + 1; + else + end = middle - 1; + } + + return (short) middle; + } + + public class TokenTreeIterator extends RangeIterator + { + private final Function keyFetcher; + private final MappedBuffer file; + + private long currentLeafStart; + private int currentTokenIndex; + + private long leafMinToken; + private long leafMaxToken; + private short leafSize; + + protected boolean firstIteration = true; + private boolean lastLeaf; + + TokenTreeIterator(MappedBuffer file, Function keyFetcher) + { + super(treeMinToken, treeMaxToken, tokenCount); + + this.file = file; + this.keyFetcher = keyFetcher; + } + + protected Token computeNext() + { + maybeFirstIteration(); + + if (currentTokenIndex >= leafSize && lastLeaf) + return endOfData(); + + if (currentTokenIndex < leafSize) // tokens remaining in this leaf + { + return getTokenAt(currentTokenIndex++); + } + else // no more tokens remaining in this leaf + { + assert !lastLeaf; + + seekToNextLeaf(); + setupBlock(); + return computeNext(); + } + } + + protected void performSkipTo(Long nextToken) + { + maybeFirstIteration(); + + if (nextToken <= leafMaxToken) // next is in this leaf block + { + searchLeaf(nextToken); + } + else // next is in a leaf block that needs to be found + { + seekToLeaf(nextToken, file); + setupBlock(); + findNearest(nextToken); + } + } + + private void setupBlock() + { + currentLeafStart = file.position(); + currentTokenIndex = 0; + + lastLeaf = (file.get() & (1 << TokenTreeBuilder.LAST_LEAF_SHIFT)) > 0; + leafSize = file.getShort(); + + leafMinToken = file.getLong(); + leafMaxToken = file.getLong(); + + // seek to end of leaf header/start of data + file.position(currentLeafStart + TokenTreeBuilder.BLOCK_HEADER_BYTES); + } + + private void findNearest(Long next) + { + if (next > leafMaxToken && !lastLeaf) + { + seekToNextLeaf(); + setupBlock(); + findNearest(next); + } + else if (next > leafMinToken) + searchLeaf(next); + } + + private void searchLeaf(long next) + { + for (int i = currentTokenIndex; i < leafSize; i++) + { + if (compareTokenAt(currentTokenIndex, next) >= 0) + break; + + currentTokenIndex++; + } + } + + private int compareTokenAt(int idx, long toToken) + { + return Long.compare(file.getLong(getTokenPosition(idx)), toToken); + } + + private Token getTokenAt(int idx) + { + return OnDiskToken.getTokenAt(file, idx, leafSize, keyFetcher); + } + + private long getTokenPosition(int idx) + { + // skip 4 byte entry header to get position pointing directly at the entry's token + return OnDiskToken.getEntryPosition(idx, file) + (2 * SHORT_BYTES); + } + + private void seekToNextLeaf() + { + file.position(currentLeafStart + TokenTreeBuilder.BLOCK_BYTES); + } + + public void close() throws IOException + { + // nothing to do here + } + + private void maybeFirstIteration() + { + // seek to the first token only when requested for the first time, + // highly predictable branch and saves us a lot by not traversing the tree + // on creation time because it's not at all required. + if (!firstIteration) + return; + + seekToLeaf(treeMinToken, file); + setupBlock(); + firstIteration = false; + } + } + + public static class OnDiskToken extends Token + { + private final Set info = new HashSet<>(2); + private final Set loadedKeys = new TreeSet<>(DecoratedKey.comparator); + + public OnDiskToken(MappedBuffer buffer, long position, short leafSize, Function keyFetcher) + { + super(buffer.getLong(position + (2 * SHORT_BYTES))); + info.add(new TokenInfo(buffer, position, leafSize, keyFetcher)); + } + + public void merge(CombinedValue other) + { + if (!(other instanceof Token)) + return; + + Token o = (Token) other; + if (token != o.token) + throw new IllegalArgumentException(String.format("%s != %s", token, o.token)); + + if (o instanceof OnDiskToken) + { + info.addAll(((OnDiskToken) other).info); + } + else + { + Iterators.addAll(loadedKeys, o.iterator()); + } + } + + public Iterator iterator() + { + List> keys = new ArrayList<>(info.size()); + + for (TokenInfo i : info) + keys.add(i.iterator()); + + if (!loadedKeys.isEmpty()) + keys.add(loadedKeys.iterator()); + + return MergeIterator.get(keys, DecoratedKey.comparator, new MergeIterator.Reducer() + { + DecoratedKey reduced = null; + + public boolean trivialReduceIsTrivial() + { + return true; + } + + public void reduce(int idx, DecoratedKey current) + { + reduced = current; + } + + protected DecoratedKey getReduced() + { + return reduced; + } + }); + } + + public Set getOffsets() + { + Set offsets = new HashSet<>(); + for (TokenInfo i : info) + { + for (long offset : i.fetchOffsets()) + offsets.add(offset); + } + + return offsets; + } + + public static OnDiskToken getTokenAt(MappedBuffer buffer, int idx, short leafSize, Function keyFetcher) + { + return new OnDiskToken(buffer, getEntryPosition(idx, buffer), leafSize, keyFetcher); + } + + private static long getEntryPosition(int idx, MappedBuffer file) + { + // info (4 bytes) + token (8 bytes) + offset (4 bytes) = 16 bytes + return file.position() + (idx * (2 * LONG_BYTES)); + } + } + + private static class TokenInfo + { + private final MappedBuffer buffer; + private final Function keyFetcher; + + private final long position; + private final short leafSize; + + public TokenInfo(MappedBuffer buffer, long position, short leafSize, Function keyFetcher) + { + this.keyFetcher = keyFetcher; + this.buffer = buffer; + this.position = position; + this.leafSize = leafSize; + } + + public Iterator iterator() + { + return new KeyIterator(keyFetcher, fetchOffsets()); + } + + public int hashCode() + { + return new HashCodeBuilder().append(keyFetcher).append(position).append(leafSize).build(); + } + + public boolean equals(Object other) + { + if (!(other instanceof TokenInfo)) + return false; + + TokenInfo o = (TokenInfo) other; + return keyFetcher == o.keyFetcher && position == o.position; + } + + private long[] fetchOffsets() + { + short info = buffer.getShort(position); + short offsetShort = buffer.getShort(position + SHORT_BYTES); + int offsetInt = buffer.getInt(position + (2 * SHORT_BYTES) + LONG_BYTES); + + EntryType type = EntryType.of(info & TokenTreeBuilder.ENTRY_TYPE_MASK); + + switch (type) + { + case SIMPLE: + return new long[] { offsetInt }; + + case OVERFLOW: + long[] offsets = new long[offsetShort]; // offsetShort contains count of tokens + long offsetPos = (buffer.position() + (2 * (leafSize * LONG_BYTES)) + (offsetInt * LONG_BYTES)); + + for (int i = 0; i < offsetShort; i++) + offsets[i] = buffer.getLong(offsetPos + (i * LONG_BYTES)); + + return offsets; + + case FACTORED: + return new long[] { (((long) offsetInt) << Short.SIZE) + offsetShort }; + + case PACKED: + return new long[] { offsetShort, offsetInt }; + + default: + throw new IllegalStateException("Unknown entry type: " + type); + } + } + } + + private static class KeyIterator extends AbstractIterator + { + private final Function keyFetcher; + private final long[] offsets; + private int index = 0; + + public KeyIterator(Function keyFetcher, long[] offsets) + { + this.keyFetcher = keyFetcher; + this.offsets = offsets; + } + + public DecoratedKey computeNext() + { + return index < offsets.length ? keyFetcher.apply(offsets[index++]) : endOfData(); + } + } +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java b/src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java new file mode 100644 index 0000000000..e10b057e21 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/disk/TokenTreeBuilder.java @@ -0,0 +1,839 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.*; + +import org.apache.cassandra.io.util.DataOutputPlus; +import org.apache.cassandra.utils.FBUtilities; +import org.apache.cassandra.utils.Pair; + +import com.carrotsearch.hppc.LongArrayList; +import com.carrotsearch.hppc.LongSet; +import com.carrotsearch.hppc.cursors.LongCursor; +import com.carrotsearch.hppc.LongOpenHashSet; +import com.google.common.collect.AbstractIterator; + +public class TokenTreeBuilder +{ + // note: ordinal positions are used here, do not change order + enum EntryType + { + SIMPLE, FACTORED, PACKED, OVERFLOW; + + public static EntryType of(int ordinal) + { + if (ordinal == SIMPLE.ordinal()) + return SIMPLE; + + if (ordinal == FACTORED.ordinal()) + return FACTORED; + + if (ordinal == PACKED.ordinal()) + return PACKED; + + if (ordinal == OVERFLOW.ordinal()) + return OVERFLOW; + + throw new IllegalArgumentException("Unknown ordinal: " + ordinal); + } + } + + public static final int BLOCK_BYTES = 4096; + public static final int BLOCK_HEADER_BYTES = 64; + public static final int OVERFLOW_TRAILER_BYTES = 64; + public static final int OVERFLOW_TRAILER_CAPACITY = OVERFLOW_TRAILER_BYTES / 8; + public static final int TOKENS_PER_BLOCK = (BLOCK_BYTES - BLOCK_HEADER_BYTES - OVERFLOW_TRAILER_BYTES) / 16; + public static final long MAX_OFFSET = (1L << 47) - 1; // 48 bits for (signed) offset + public static final byte LAST_LEAF_SHIFT = 1; + public static final byte SHARED_HEADER_BYTES = 19; + public static final byte ENTRY_TYPE_MASK = 0x03; + public static final short AB_MAGIC = 0x5A51; + + private final SortedMap tokens = new TreeMap<>(); + private int numBlocks; + + private Node root; + private InteriorNode rightmostParent; + private Leaf leftmostLeaf; + private Leaf rightmostLeaf; + private long tokenCount = 0; + private long treeMinToken; + private long treeMaxToken; + + public TokenTreeBuilder() + {} + + public TokenTreeBuilder(SortedMap data) + { + add(data); + } + + public void add(Long token, long keyPosition) + { + LongSet found = tokens.get(token); + if (found == null) + tokens.put(token, (found = new LongOpenHashSet(2))); + + found.add(keyPosition); + } + + public void add(SortedMap data) + { + for (Map.Entry newEntry : data.entrySet()) + { + LongSet found = tokens.get(newEntry.getKey()); + if (found == null) + tokens.put(newEntry.getKey(), (found = new LongOpenHashSet(4))); + + for (LongCursor offset : newEntry.getValue()) + found.add(offset.value); + } + } + + public TokenTreeBuilder finish() + { + maybeBulkLoad(); + return this; + } + + public SortedMap getTokens() + { + return tokens; + } + + public long getTokenCount() + { + return tokenCount; + } + + public int serializedSize() + { + if (numBlocks == 1) + return (BLOCK_HEADER_BYTES + ((int) tokenCount * 16)); + else + return numBlocks * BLOCK_BYTES; + } + + public void write(DataOutputPlus out) throws IOException + { + ByteBuffer blockBuffer = ByteBuffer.allocate(BLOCK_BYTES); + Iterator levelIterator = root.levelIterator(); + long childBlockIndex = 1; + + while (levelIterator != null) + { + + Node firstChild = null; + while (levelIterator.hasNext()) + { + Node block = levelIterator.next(); + + if (firstChild == null && !block.isLeaf()) + firstChild = ((InteriorNode) block).children.get(0); + + block.serialize(childBlockIndex, blockBuffer); + flushBuffer(blockBuffer, out, numBlocks != 1); + + childBlockIndex += block.childCount(); + } + + levelIterator = (firstChild == null) ? null : firstChild.levelIterator(); + } + } + + public Iterator> iterator() + { + return new TokenIterator(leftmostLeaf.levelIterator()); + } + + private void maybeBulkLoad() + { + if (root == null) + bulkLoad(); + } + + private void flushBuffer(ByteBuffer buffer, DataOutputPlus o, boolean align) throws IOException + { + // seek to end of last block before flushing + if (align) + alignBuffer(buffer, BLOCK_BYTES); + + buffer.flip(); + o.write(buffer); + buffer.clear(); + } + + private static void alignBuffer(ByteBuffer buffer, int blockSize) + { + long curPos = buffer.position(); + if ((curPos & (blockSize - 1)) != 0) // align on the block boundary if needed + buffer.position((int) FBUtilities.align(curPos, blockSize)); + } + + private void bulkLoad() + { + tokenCount = tokens.size(); + treeMinToken = tokens.firstKey(); + treeMaxToken = tokens.lastKey(); + numBlocks = 1; + + // special case the tree that only has a single block in it (so we don't create a useless root) + if (tokenCount <= TOKENS_PER_BLOCK) + { + leftmostLeaf = new Leaf(tokens); + rightmostLeaf = leftmostLeaf; + root = leftmostLeaf; + } + else + { + root = new InteriorNode(); + rightmostParent = (InteriorNode) root; + + int i = 0; + Leaf lastLeaf = null; + Long firstToken = tokens.firstKey(); + Long finalToken = tokens.lastKey(); + Long lastToken; + for (Long token : tokens.keySet()) + { + if (i == 0 || (i % TOKENS_PER_BLOCK != 0 && i != (tokenCount - 1))) + { + i++; + continue; + } + + lastToken = token; + Leaf leaf = (i != (tokenCount - 1) || token.equals(finalToken)) ? + new Leaf(tokens.subMap(firstToken, lastToken)) : new Leaf(tokens.tailMap(firstToken)); + + if (i == TOKENS_PER_BLOCK) + leftmostLeaf = leaf; + else + lastLeaf.next = leaf; + + rightmostParent.add(leaf); + lastLeaf = leaf; + rightmostLeaf = leaf; + firstToken = lastToken; + i++; + numBlocks++; + + if (token.equals(finalToken)) + { + Leaf finalLeaf = new Leaf(tokens.tailMap(token)); + lastLeaf.next = finalLeaf; + rightmostParent.add(finalLeaf); + rightmostLeaf = finalLeaf; + numBlocks++; + } + } + + } + } + + private abstract class Node + { + protected InteriorNode parent; + protected Node next; + protected Long nodeMinToken, nodeMaxToken; + + public abstract void serialize(long childBlockIndex, ByteBuffer buf); + public abstract int childCount(); + public abstract int tokenCount(); + public abstract Long smallestToken(); + + public Iterator levelIterator() + { + return new LevelIterator(this); + } + + public boolean isLeaf() + { + return (this instanceof Leaf); + } + + protected boolean isLastLeaf() + { + return this == rightmostLeaf; + } + + protected boolean isRoot() + { + return this == root; + } + + protected void updateTokenRange(long token) + { + nodeMinToken = nodeMinToken == null ? token : Math.min(nodeMinToken, token); + nodeMaxToken = nodeMaxToken == null ? token : Math.max(nodeMaxToken, token); + } + + protected void serializeHeader(ByteBuffer buf) + { + Header header; + if (isRoot()) + header = new RootHeader(); + else if (!isLeaf()) + header = new InteriorNodeHeader(); + else + header = new LeafHeader(); + + header.serialize(buf); + alignBuffer(buf, BLOCK_HEADER_BYTES); + } + + private abstract class Header + { + public void serialize(ByteBuffer buf) + { + buf.put(infoByte()) + .putShort((short) (tokenCount())) + .putLong(nodeMinToken) + .putLong(nodeMaxToken); + } + + protected abstract byte infoByte(); + } + + private class RootHeader extends Header + { + public void serialize(ByteBuffer buf) + { + super.serialize(buf); + writeMagic(buf); + buf.putLong(tokenCount) + .putLong(treeMinToken) + .putLong(treeMaxToken); + } + + protected byte infoByte() + { + // if leaf, set leaf indicator and last leaf indicator (bits 0 & 1) + // if not leaf, clear both bits + return (byte) ((isLeaf()) ? 3 : 0); + } + + protected void writeMagic(ByteBuffer buf) + { + switch (Descriptor.CURRENT_VERSION) + { + case Descriptor.VERSION_AB: + buf.putShort(AB_MAGIC); + break; + default: + break; + } + + } + } + + private class InteriorNodeHeader extends Header + { + // bit 0 (leaf indicator) & bit 1 (last leaf indicator) cleared + protected byte infoByte() + { + return 0; + } + } + + private class LeafHeader extends Header + { + // bit 0 set as leaf indicator + // bit 1 set if this is last leaf of data + protected byte infoByte() + { + byte infoByte = 1; + infoByte |= (isLastLeaf()) ? (1 << LAST_LEAF_SHIFT) : 0; + + return infoByte; + } + } + + } + + private class Leaf extends Node + { + private final SortedMap tokens; + private LongArrayList overflowCollisions; + + Leaf(SortedMap data) + { + nodeMinToken = data.firstKey(); + nodeMaxToken = data.lastKey(); + tokens = data; + } + + public Long largestToken() + { + return nodeMaxToken; + } + + public void serialize(long childBlockIndex, ByteBuffer buf) + { + serializeHeader(buf); + serializeData(buf); + serializeOverflowCollisions(buf); + } + + public int childCount() + { + return 0; + } + + public int tokenCount() + { + return tokens.size(); + } + + public Long smallestToken() + { + return nodeMinToken; + } + + public Iterator> tokenIterator() + { + return tokens.entrySet().iterator(); + } + + private void serializeData(ByteBuffer buf) + { + for (Map.Entry entry : tokens.entrySet()) + createEntry(entry.getKey(), entry.getValue()).serialize(buf); + } + + private void serializeOverflowCollisions(ByteBuffer buf) + { + if (overflowCollisions != null) + for (LongCursor offset : overflowCollisions) + buf.putLong(offset.value); + } + + + private LeafEntry createEntry(final long tok, final LongSet offsets) + { + int offsetCount = offsets.size(); + switch (offsetCount) + { + case 0: + throw new AssertionError("no offsets for token " + tok); + case 1: + long offset = offsets.toArray()[0]; + if (offset > MAX_OFFSET) + throw new AssertionError("offset " + offset + " cannot be greater than " + MAX_OFFSET); + else if (offset <= Integer.MAX_VALUE) + return new SimpleLeafEntry(tok, offset); + else + return new FactoredOffsetLeafEntry(tok, offset); + case 2: + long[] rawOffsets = offsets.toArray(); + if (rawOffsets[0] <= Integer.MAX_VALUE && rawOffsets[1] <= Integer.MAX_VALUE && + (rawOffsets[0] <= Short.MAX_VALUE || rawOffsets[1] <= Short.MAX_VALUE)) + return new PackedCollisionLeafEntry(tok, rawOffsets); + else + return createOverflowEntry(tok, offsetCount, offsets); + default: + return createOverflowEntry(tok, offsetCount, offsets); + } + } + + private LeafEntry createOverflowEntry(final long tok, final int offsetCount, final LongSet offsets) + { + if (overflowCollisions == null) + overflowCollisions = new LongArrayList(); + + LeafEntry entry = new OverflowCollisionLeafEntry(tok, (short) overflowCollisions.size(), (short) offsetCount); + for (LongCursor o : offsets) { + if (overflowCollisions.size() == OVERFLOW_TRAILER_CAPACITY) + throw new AssertionError("cannot have more than " + OVERFLOW_TRAILER_CAPACITY + " overflow collisions per leaf"); + else + overflowCollisions.add(o.value); + } + return entry; + } + + private abstract class LeafEntry + { + protected final long token; + + abstract public EntryType type(); + abstract public int offsetData(); + abstract public short offsetExtra(); + + public LeafEntry(final long tok) + { + token = tok; + } + + public void serialize(ByteBuffer buf) + { + buf.putShort((short) type().ordinal()) + .putShort(offsetExtra()) + .putLong(token) + .putInt(offsetData()); + } + + } + + + // assumes there is a single offset and the offset is <= Integer.MAX_VALUE + private class SimpleLeafEntry extends LeafEntry + { + private final long offset; + + public SimpleLeafEntry(final long tok, final long off) + { + super(tok); + offset = off; + } + + public EntryType type() + { + return EntryType.SIMPLE; + } + + public int offsetData() + { + return (int) offset; + } + + public short offsetExtra() + { + return 0; + } + } + + // assumes there is a single offset and Integer.MAX_VALUE < offset <= MAX_OFFSET + // take the middle 32 bits of offset (or the top 32 when considering offset is max 48 bits) + // and store where offset is normally stored. take bottom 16 bits of offset and store in entry header + private class FactoredOffsetLeafEntry extends LeafEntry + { + private final long offset; + + public FactoredOffsetLeafEntry(final long tok, final long off) + { + super(tok); + offset = off; + } + + public EntryType type() + { + return EntryType.FACTORED; + } + + public int offsetData() + { + return (int) (offset >>> Short.SIZE); + } + + public short offsetExtra() + { + return (short) offset; + } + } + + // holds an entry with two offsets that can be packed in an int & a short + // the int offset is stored where offset is normally stored. short offset is + // stored in entry header + private class PackedCollisionLeafEntry extends LeafEntry + { + private short smallerOffset; + private int largerOffset; + + public PackedCollisionLeafEntry(final long tok, final long[] offs) + { + super(tok); + + smallerOffset = (short) Math.min(offs[0], offs[1]); + largerOffset = (int) Math.max(offs[0], offs[1]); + } + + public EntryType type() + { + return EntryType.PACKED; + } + + public int offsetData() + { + return largerOffset; + } + + public short offsetExtra() + { + return smallerOffset; + } + } + + // holds an entry with three or more offsets, or two offsets that cannot + // be packed into an int & a short. the index into the overflow list + // is stored where the offset is normally stored. the number of overflowed offsets + // for the entry is stored in the entry header + private class OverflowCollisionLeafEntry extends LeafEntry + { + private final short startIndex; + private final short count; + + public OverflowCollisionLeafEntry(final long tok, final short collisionStartIndex, final short collisionCount) + { + super(tok); + startIndex = collisionStartIndex; + count = collisionCount; + } + + public EntryType type() + { + return EntryType.OVERFLOW; + } + + public int offsetData() + { + return startIndex; + } + + public short offsetExtra() + { + return count; + } + + } + + } + + private class InteriorNode extends Node + { + private List tokens = new ArrayList<>(TOKENS_PER_BLOCK); + private List children = new ArrayList<>(TOKENS_PER_BLOCK + 1); + private int position = 0; // TODO (jwest): can get rid of this and use array size + + + public void serialize(long childBlockIndex, ByteBuffer buf) + { + serializeHeader(buf); + serializeTokens(buf); + serializeChildOffsets(childBlockIndex, buf); + } + + public int childCount() + { + return children.size(); + } + + public int tokenCount() + { + return tokens.size(); + } + + public Long smallestToken() + { + return tokens.get(0); + } + + protected void add(Long token, InteriorNode leftChild, InteriorNode rightChild) + { + int pos = tokens.size(); + if (pos == TOKENS_PER_BLOCK) + { + InteriorNode sibling = split(); + sibling.add(token, leftChild, rightChild); + + } + else { + if (leftChild != null) + children.add(pos, leftChild); + + if (rightChild != null) + { + children.add(pos + 1, rightChild); + rightChild.parent = this; + } + + updateTokenRange(token); + tokens.add(pos, token); + } + } + + protected void add(Leaf node) + { + + if (position == (TOKENS_PER_BLOCK + 1)) + { + rightmostParent = split(); + rightmostParent.add(node); + } + else + { + + node.parent = this; + children.add(position, node); + position++; + + // the first child is referenced only during bulk load. we don't take a value + // to store into the tree, one is subtracted since position has already been incremented + // for the next node to be added + if (position - 1 == 0) + return; + + + // tokens are inserted one behind the current position, but 2 is subtracted because + // position has already been incremented for the next add + Long smallestToken = node.smallestToken(); + updateTokenRange(smallestToken); + tokens.add(position - 2, smallestToken); + } + + } + + protected InteriorNode split() + { + Pair splitResult = splitBlock(); + Long middleValue = splitResult.left; + InteriorNode sibling = splitResult.right; + InteriorNode leftChild = null; + + // create a new root if necessary + if (parent == null) + { + parent = new InteriorNode(); + root = parent; + sibling.parent = parent; + leftChild = this; + numBlocks++; + } + + parent.add(middleValue, leftChild, sibling); + + return sibling; + } + + protected Pair splitBlock() + { + final int splitPosition = TOKENS_PER_BLOCK - 2; + InteriorNode sibling = new InteriorNode(); + sibling.parent = parent; + next = sibling; + + Long middleValue = tokens.get(splitPosition); + + for (int i = splitPosition; i < TOKENS_PER_BLOCK; i++) + { + if (i != TOKENS_PER_BLOCK && i != splitPosition) + { + long token = tokens.get(i); + sibling.updateTokenRange(token); + sibling.tokens.add(token); + } + + Node child = children.get(i + 1); + child.parent = sibling; + sibling.children.add(child); + sibling.position++; + } + + for (int i = TOKENS_PER_BLOCK; i >= splitPosition; i--) + { + if (i != TOKENS_PER_BLOCK) + tokens.remove(i); + + if (i != splitPosition) + children.remove(i); + } + + nodeMinToken = smallestToken(); + nodeMaxToken = tokens.get(tokens.size() - 1); + numBlocks++; + + return Pair.create(middleValue, sibling); + } + + protected boolean isFull() + { + return (position >= TOKENS_PER_BLOCK + 1); + } + + private void serializeTokens(ByteBuffer buf) + { + for (Long token : tokens) + buf.putLong(token); + } + + + private void serializeChildOffsets(long childBlockIndex, ByteBuffer buf) + { + for (int i = 0; i < children.size(); i++) + buf.putLong((childBlockIndex + i) * BLOCK_BYTES); + } + } + + public static class LevelIterator extends AbstractIterator + { + private Node currentNode; + + LevelIterator(Node first) + { + currentNode = first; + } + + public Node computeNext() + { + if (currentNode == null) + return endOfData(); + + Node returnNode = currentNode; + currentNode = returnNode.next; + + return returnNode; + } + + + } + + public static class TokenIterator extends AbstractIterator> + { + private Iterator levelIterator; + private Iterator> currentIterator; + + TokenIterator(Iterator level) + { + levelIterator = level; + if (levelIterator.hasNext()) + currentIterator = ((Leaf) levelIterator.next()).tokenIterator(); + } + + public Pair computeNext() + { + if (currentIterator != null && currentIterator.hasNext()) + { + Map.Entry next = currentIterator.next(); + return Pair.create(next.getKey(), next.getValue()); + } + else + { + if (!levelIterator.hasNext()) + return endOfData(); + else + { + currentIterator = ((Leaf) levelIterator.next()).tokenIterator(); + return computeNext(); + } + } + + } + } +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/exceptions/TimeQuotaExceededException.java b/src/java/org/apache/cassandra/index/sasi/exceptions/TimeQuotaExceededException.java new file mode 100644 index 0000000000..af577dc60d --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/exceptions/TimeQuotaExceededException.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.exceptions; + +public class TimeQuotaExceededException extends RuntimeException +{} diff --git a/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java b/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java new file mode 100644 index 0000000000..cf7f3a59d8 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/memory/IndexMemtable.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.memory; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.index.sasi.utils.TypeUtil; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class IndexMemtable +{ + private static final Logger logger = LoggerFactory.getLogger(IndexMemtable.class); + + private final MemIndex index; + + public IndexMemtable(ColumnIndex columnIndex) + { + this.index = MemIndex.forColumn(columnIndex.keyValidator(), columnIndex); + } + + public long index(DecoratedKey key, ByteBuffer value) + { + if (value == null || value.remaining() == 0) + return 0; + + AbstractType validator = index.columnIndex.getValidator(); + if (!TypeUtil.isValid(value, validator)) + { + int size = value.remaining(); + if ((value = TypeUtil.tryUpcast(value, validator)) == null) + { + logger.error("Can't add column {} to index for key: {}, value size {} bytes, validator: {}.", + index.columnIndex.getColumnName(), + index.columnIndex.keyValidator().getString(key.getKey()), + size, + validator); + return 0; + } + } + + return index.add(key, value); + } + + public RangeIterator search(Expression expression) + { + return index == null ? null : index.search(expression); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java b/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java new file mode 100644 index 0000000000..293e2eeb62 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/memory/KeyRangeIterator.java @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.memory; + +import java.io.IOException; +import java.util.Iterator; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentSkipListSet; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.utils.AbstractIterator; +import org.apache.cassandra.index.sasi.utils.CombinedValue; +import org.apache.cassandra.index.sasi.utils.RangeIterator; + +import com.google.common.collect.PeekingIterator; + +public class KeyRangeIterator extends RangeIterator +{ + private final DKIterator iterator; + + public KeyRangeIterator(ConcurrentSkipListSet keys) + { + super((Long) keys.first().getToken().getTokenValue(), (Long) keys.last().getToken().getTokenValue(), keys.size()); + this.iterator = new DKIterator(keys.iterator()); + } + + protected Token computeNext() + { + return iterator.hasNext() ? new DKToken(iterator.next()) : endOfData(); + } + + protected void performSkipTo(Long nextToken) + { + while (iterator.hasNext()) + { + DecoratedKey key = iterator.peek(); + if (Long.compare((long) key.getToken().getTokenValue(), nextToken) >= 0) + break; + + // consume smaller key + iterator.next(); + } + } + + public void close() throws IOException + {} + + private static class DKIterator extends AbstractIterator implements PeekingIterator + { + private final Iterator keys; + + public DKIterator(Iterator keys) + { + this.keys = keys; + } + + protected DecoratedKey computeNext() + { + return keys.hasNext() ? keys.next() : endOfData(); + } + } + + private static class DKToken extends Token + { + private final SortedSet keys; + + public DKToken(final DecoratedKey key) + { + super((long) key.getToken().getTokenValue()); + + keys = new TreeSet(DecoratedKey.comparator) + {{ + add(key); + }}; + } + + public void merge(CombinedValue other) + { + if (!(other instanceof Token)) + return; + + Token o = (Token) other; + assert o.get().equals(token); + + if (o instanceof DKToken) + { + keys.addAll(((DKToken) o).keys); + } + else + { + for (DecoratedKey key : o) + keys.add(key); + } + } + + public Iterator iterator() + { + return keys.iterator(); + } + } +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/memory/MemIndex.java b/src/java/org/apache/cassandra/index/sasi/memory/MemIndex.java new file mode 100644 index 0000000000..22d6c9e569 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/memory/MemIndex.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.memory; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.AbstractType; + +import org.github.jamm.MemoryMeter; + +public abstract class MemIndex +{ + protected final AbstractType keyValidator; + protected final ColumnIndex columnIndex; + + protected MemIndex(AbstractType keyValidator, ColumnIndex columnIndex) + { + this.keyValidator = keyValidator; + this.columnIndex = columnIndex; + } + + public abstract long add(DecoratedKey key, ByteBuffer value); + public abstract RangeIterator search(Expression expression); + + public static MemIndex forColumn(AbstractType keyValidator, ColumnIndex columnIndex) + { + return columnIndex.isLiteral() + ? new TrieMemIndex(keyValidator, columnIndex) + : new SkipListMemIndex(keyValidator, columnIndex); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java b/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java new file mode 100644 index 0000000000..69b57d01ac --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/memory/SkipListMemIndex.java @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.memory; + +import java.nio.ByteBuffer; +import java.util.*; +import java.util.concurrent.ConcurrentSkipListMap; +import java.util.concurrent.ConcurrentSkipListSet; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.AbstractType; + +public class SkipListMemIndex extends MemIndex +{ + public static final int CSLM_OVERHEAD = 128; // average overhead of CSLM + + private final ConcurrentSkipListMap> index; + + public SkipListMemIndex(AbstractType keyValidator, ColumnIndex columnIndex) + { + super(keyValidator, columnIndex); + index = new ConcurrentSkipListMap<>(columnIndex.getValidator()); + } + + public long add(DecoratedKey key, ByteBuffer value) + { + long overhead = CSLM_OVERHEAD; // DKs are shared + ConcurrentSkipListSet keys = index.get(value); + + if (keys == null) + { + ConcurrentSkipListSet newKeys = new ConcurrentSkipListSet<>(DecoratedKey.comparator); + keys = index.putIfAbsent(value, newKeys); + if (keys == null) + { + overhead += CSLM_OVERHEAD + value.remaining(); + keys = newKeys; + } + } + + keys.add(key); + + return overhead; + } + + public RangeIterator search(Expression expression) + { + ByteBuffer min = expression.lower == null ? null : expression.lower.value; + ByteBuffer max = expression.upper == null ? null : expression.upper.value; + + SortedMap> search; + + if (min == null && max == null) + { + throw new IllegalArgumentException(); + } + if (min != null && max != null) + { + search = index.subMap(min, expression.lower.inclusive, max, expression.upper.inclusive); + } + else if (min == null) + { + search = index.headMap(max, expression.upper.inclusive); + } + else + { + search = index.tailMap(min, expression.lower.inclusive); + } + + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + search.values().stream() + .filter(keys -> !keys.isEmpty()) + .forEach(keys -> builder.add(new KeyRangeIterator(keys))); + + return builder.build(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java b/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java new file mode 100644 index 0000000000..e4ee6eb336 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/memory/TrieMemIndex.java @@ -0,0 +1,254 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.memory; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.concurrent.ConcurrentSkipListSet; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.AbstractType; + +import com.googlecode.concurrenttrees.radix.ConcurrentRadixTree; +import com.googlecode.concurrenttrees.suffix.ConcurrentSuffixTree; +import com.googlecode.concurrenttrees.radix.node.concrete.SmartArrayBasedNodeFactory; +import com.googlecode.concurrenttrees.radix.node.Node; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.apache.cassandra.index.sasi.memory.SkipListMemIndex.CSLM_OVERHEAD; + +public class TrieMemIndex extends MemIndex +{ + private static final Logger logger = LoggerFactory.getLogger(TrieMemIndex.class); + + private final ConcurrentTrie index; + + public TrieMemIndex(AbstractType keyValidator, ColumnIndex columnIndex) + { + super(keyValidator, columnIndex); + + switch (columnIndex.getMode().mode) + { + case CONTAINS: + index = new ConcurrentSuffixTrie(columnIndex.getDefinition()); + break; + + case PREFIX: + index = new ConcurrentPrefixTrie(columnIndex.getDefinition()); + break; + + default: + throw new IllegalStateException("Unsupported mode: " + columnIndex.getMode().mode); + } + } + + public long add(DecoratedKey key, ByteBuffer value) + { + AbstractAnalyzer analyzer = columnIndex.getAnalyzer(); + analyzer.reset(value.duplicate()); + + long size = 0; + while (analyzer.hasNext()) + { + ByteBuffer term = analyzer.next(); + + if (term.remaining() >= OnDiskIndexBuilder.MAX_TERM_SIZE) + { + logger.info("Can't add term of column {} to index for key: {}, term size {} bytes, max allowed size {} bytes, use analyzed = true (if not yet set) for that column.", + columnIndex.getColumnName(), + keyValidator.getString(key.getKey()), + term.remaining(), + OnDiskIndexBuilder.MAX_TERM_SIZE); + continue; + } + + size += index.add(columnIndex.getValidator().getString(term), key); + } + + return size; + } + + public RangeIterator search(Expression expression) + { + return index.search(expression); + } + + private static abstract class ConcurrentTrie + { + public static final SizeEstimatingNodeFactory NODE_FACTORY = new SizeEstimatingNodeFactory(); + + protected final ColumnDefinition definition; + + public ConcurrentTrie(ColumnDefinition column) + { + definition = column; + } + + public long add(String value, DecoratedKey key) + { + long overhead = CSLM_OVERHEAD; + ConcurrentSkipListSet keys = get(value); + if (keys == null) + { + ConcurrentSkipListSet newKeys = new ConcurrentSkipListSet<>(DecoratedKey.comparator); + keys = putIfAbsent(value, newKeys); + if (keys == null) + { + overhead += CSLM_OVERHEAD + value.length(); + keys = newKeys; + } + } + + keys.add(key); + + // get and reset new memory size allocated by current thread + overhead += NODE_FACTORY.currentUpdateSize(); + NODE_FACTORY.reset(); + + return overhead; + } + + public RangeIterator search(Expression expression) + { + assert expression.getOp() == Expression.Op.EQ; // means that min == max + + ByteBuffer prefix = expression.lower == null ? null : expression.lower.value; + + Iterable> search = search(definition.cellValueType().getString(prefix)); + + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + for (ConcurrentSkipListSet keys : search) + { + if (!keys.isEmpty()) + builder.add(new KeyRangeIterator(keys)); + } + + return builder.build(); + } + + protected abstract ConcurrentSkipListSet get(String value); + protected abstract Iterable> search(String value); + protected abstract ConcurrentSkipListSet putIfAbsent(String value, ConcurrentSkipListSet key); + } + + protected static class ConcurrentPrefixTrie extends ConcurrentTrie + { + private final ConcurrentRadixTree> trie; + + private ConcurrentPrefixTrie(ColumnDefinition column) + { + super(column); + trie = new ConcurrentRadixTree<>(NODE_FACTORY); + } + + public ConcurrentSkipListSet get(String value) + { + return trie.getValueForExactKey(value); + } + + public ConcurrentSkipListSet putIfAbsent(String value, ConcurrentSkipListSet newKeys) + { + return trie.putIfAbsent(value, newKeys); + } + + public Iterable> search(String value) + { + return trie.getValuesForKeysStartingWith(value); + } + } + + protected static class ConcurrentSuffixTrie extends ConcurrentTrie + { + private final ConcurrentSuffixTree> trie; + + private ConcurrentSuffixTrie(ColumnDefinition column) + { + super(column); + trie = new ConcurrentSuffixTree<>(NODE_FACTORY); + } + + public ConcurrentSkipListSet get(String value) + { + return trie.getValueForExactKey(value); + } + + public ConcurrentSkipListSet putIfAbsent(String value, ConcurrentSkipListSet newKeys) + { + return trie.putIfAbsent(value, newKeys); + } + + public Iterable> search(String value) + { + return trie.getValuesForKeysContaining(value); + } + } + + // This relies on the fact that all of the tree updates are done under exclusive write lock, + // method would overestimate in certain circumstances e.g. when nodes are replaced in place, + // but it's still better comparing to underestimate since it gives more breathing room for other memory users. + private static class SizeEstimatingNodeFactory extends SmartArrayBasedNodeFactory + { + private final ThreadLocal updateSize = ThreadLocal.withInitial(() -> 0L); + + public Node createNode(CharSequence edgeCharacters, Object value, List childNodes, boolean isRoot) + { + Node node = super.createNode(edgeCharacters, value, childNodes, isRoot); + updateSize.set(updateSize.get() + measure(node)); + return node; + } + + public long currentUpdateSize() + { + return updateSize.get(); + } + + public void reset() + { + updateSize.set(0L); + } + + private long measure(Node node) + { + // node with max overhead is CharArrayNodeLeafWithValue = 24B + long overhead = 24; + + // array of chars (2 bytes) + CharSequence overhead + overhead += 24 + node.getIncomingEdge().length() * 2; + + if (node.getOutgoingEdges() != null) + { + // 16 bytes for AtomicReferenceArray + overhead += 16; + overhead += 24 * node.getOutgoingEdges().size(); + } + + return overhead; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/plan/Expression.java b/src/java/org/apache/cassandra/index/sasi/plan/Expression.java new file mode 100644 index 0000000000..e215ec746b --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/plan/Expression.java @@ -0,0 +1,340 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.plan; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.cql3.Operator; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndex; +import org.apache.cassandra.index.sasi.utils.TypeUtil; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.utils.ByteBufferUtil; + +import org.apache.commons.lang3.builder.HashCodeBuilder; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.Iterators; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Expression +{ + private static final Logger logger = LoggerFactory.getLogger(Expression.class); + + public enum Op + { + EQ, NOT_EQ, RANGE + } + + private final QueryController controller; + + public final AbstractAnalyzer analyzer; + + public final ColumnIndex index; + public final AbstractType validator; + public final boolean isLiteral; + + @VisibleForTesting + protected Op operation; + + public Bound lower, upper; + public List exclusions = new ArrayList<>(); + + public Expression(Expression other) + { + this(other.controller, other.index); + operation = other.operation; + } + + public Expression(QueryController controller, ColumnIndex columnIndex) + { + this.controller = controller; + this.index = columnIndex; + this.analyzer = columnIndex.getAnalyzer(); + this.validator = columnIndex.getValidator(); + this.isLiteral = columnIndex.isLiteral(); + } + + @VisibleForTesting + public Expression(String name, AbstractType validator) + { + this(null, new ColumnIndex(UTF8Type.instance, ColumnDefinition.regularDef("sasi", "internal", name, validator), null)); + } + + public Expression setLower(Bound newLower) + { + lower = newLower == null ? null : new Bound(newLower.value, newLower.inclusive); + return this; + } + + public Expression setUpper(Bound newUpper) + { + upper = newUpper == null ? null : new Bound(newUpper.value, newUpper.inclusive); + return this; + } + + public Expression setOp(Op op) + { + this.operation = op; + return this; + } + + public Expression add(Operator op, ByteBuffer value) + { + boolean lowerInclusive = false, upperInclusive = false; + switch (op) + { + case EQ: + lower = new Bound(value, true); + upper = lower; + operation = Op.EQ; + break; + + case NEQ: + // index expressions are priority sorted + // and NOT_EQ is the lowest priority, which means that operation type + // is always going to be set before reaching it in case of RANGE or EQ. + if (operation == null) + { + operation = Op.NOT_EQ; + lower = new Bound(value, true); + upper = lower; + } + else + exclusions.add(value); + break; + + case LTE: + upperInclusive = true; + case LT: + operation = Op.RANGE; + upper = new Bound(value, upperInclusive); + break; + + case GTE: + lowerInclusive = true; + case GT: + operation = Op.RANGE; + lower = new Bound(value, lowerInclusive); + break; + } + + return this; + } + + public Expression addExclusion(ByteBuffer value) + { + exclusions.add(value); + return this; + } + + public boolean contains(ByteBuffer value) + { + if (!TypeUtil.isValid(value, validator)) + { + int size = value.remaining(); + if ((value = TypeUtil.tryUpcast(value, validator)) == null) + { + logger.error("Can't cast value for {} to size accepted by {}, value size is {} bytes.", + index.getColumnName(), + validator, + size); + return false; + } + } + + if (lower != null) + { + // suffix check + if (isLiteral) + { + if (!validateStringValue(value, lower.value)) + return false; + } + else + { + // range or (not-)equals - (mainly) for numeric values + int cmp = validator.compare(lower.value, value); + + // in case of (NOT_)EQ lower == upper + if (operation == Op.EQ || operation == Op.NOT_EQ) + return cmp == 0; + + if (cmp > 0 || (cmp == 0 && !lower.inclusive)) + return false; + } + } + + if (upper != null && lower != upper) + { + // string (prefix or suffix) check + if (isLiteral) + { + if (!validateStringValue(value, upper.value)) + return false; + } + else + { + // range - mainly for numeric values + int cmp = validator.compare(upper.value, value); + if (cmp < 0 || (cmp == 0 && !upper.inclusive)) + return false; + } + } + + // as a last step let's check exclusions for the given field, + // this covers EQ/RANGE with exclusions. + for (ByteBuffer term : exclusions) + { + if (isLiteral && validateStringValue(value, term)) + return false; + else if (validator.compare(term, value) == 0) + return false; + } + + return true; + } + + private boolean validateStringValue(ByteBuffer columnValue, ByteBuffer requestedValue) + { + analyzer.reset(columnValue.duplicate()); + while (analyzer.hasNext()) + { + ByteBuffer term = analyzer.next(); + if (ByteBufferUtil.contains(term, requestedValue)) + return true; + } + + return false; + } + + public Op getOp() + { + return operation; + } + + public void checkpoint() + { + if (controller == null) + return; + + controller.checkpoint(); + } + + public boolean hasLower() + { + return lower != null; + } + + public boolean hasUpper() + { + return upper != null; + } + + public boolean isLowerSatisfiedBy(OnDiskIndex.DataTerm term) + { + if (!hasLower()) + return true; + + int cmp = term.compareTo(validator, lower.value, false); + return cmp > 0 || cmp == 0 && lower.inclusive; + } + + public boolean isUpperSatisfiedBy(OnDiskIndex.DataTerm term) + { + if (!hasUpper()) + return true; + + int cmp = term.compareTo(validator, upper.value, false); + return cmp < 0 || cmp == 0 && upper.inclusive; + } + + public boolean isIndexed() + { + return index.isIndexed(); + } + + public String toString() + { + return String.format("Expression{name: %s, op: %s, lower: (%s, %s), upper: (%s, %s), exclusions: %s}", + index.getColumnName(), + operation, + lower == null ? "null" : validator.getString(lower.value), + lower != null && lower.inclusive, + upper == null ? "null" : validator.getString(upper.value), + upper != null && upper.inclusive, + Iterators.toString(Iterators.transform(exclusions.iterator(), validator::getString))); + } + + public int hashCode() + { + return new HashCodeBuilder().append(index.getColumnName()) + .append(operation) + .append(validator) + .append(lower).append(upper) + .append(exclusions).build(); + } + + public boolean equals(Object other) + { + if (!(other instanceof Expression)) + return false; + + if (this == other) + return true; + + Expression o = (Expression) other; + + return Objects.equals(index.getColumnName(), o.index.getColumnName()) + && validator.equals(o.validator) + && operation == o.operation + && Objects.equals(lower, o.lower) + && Objects.equals(upper, o.upper) + && exclusions.equals(o.exclusions); + } + + + public static class Bound + { + public final ByteBuffer value; + public final boolean inclusive; + + public Bound(ByteBuffer value, boolean inclusive) + { + this.value = value; + this.inclusive = inclusive; + } + + public boolean equals(Object other) + { + if (!(other instanceof Bound)) + return false; + + Bound o = (Bound) other; + return value.equals(o.value) && inclusive == o.inclusive; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/plan/Operation.java b/src/java/org/apache/cassandra/index/sasi/plan/Operation.java new file mode 100644 index 0000000000..1857c56829 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/plan/Operation.java @@ -0,0 +1,477 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.plan; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.*; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.config.ColumnDefinition.Kind; +import org.apache.cassandra.cql3.Operator; +import org.apache.cassandra.db.filter.RowFilter; +import org.apache.cassandra.db.rows.Row; +import org.apache.cassandra.db.rows.Unfiltered; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.analyzer.AbstractAnalyzer; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression.Op; +import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.*; +import org.apache.cassandra.utils.FBUtilities; + +public class Operation extends RangeIterator +{ + public enum OperationType + { + AND, OR; + + public boolean apply(boolean a, boolean b) + { + switch (this) + { + case OR: + return a | b; + + case AND: + return a & b; + + default: + throw new AssertionError(); + } + } + } + + private final QueryController controller; + + protected final OperationType op; + protected final ListMultimap expressions; + protected final RangeIterator range; + + protected Operation left, right; + + private Operation(OperationType operation, + QueryController controller, + ListMultimap expressions, + RangeIterator range, + Operation left, Operation right) + { + super(range); + + this.op = operation; + this.controller = controller; + this.expressions = expressions; + this.range = range; + + this.left = left; + this.right = right; + } + + /** + * Recursive "satisfies" checks based on operation + * and data from the lower level members using depth-first search + * and bubbling the results back to the top level caller. + * + * Most of the work here is done by {@link #localSatisfiedBy(Unfiltered, boolean)} + * see it's comment for details, if there are no local expressions + * assigned to Operation it will call satisfiedBy(Row) on it's children. + * + * Query: first_name = X AND (last_name = Y OR address = XYZ AND street = IL AND city = C) OR (state = 'CA' AND country = 'US') + * Row: key1: (first_name: X, last_name: Z, address: XYZ, street: IL, city: C, state: NY, country:US) + * + * #1 OR + * / \ + * #2 (first_name) AND AND (state, country) + * \ + * #3 (last_name) OR + * \ + * #4 AND (address, street, city) + * + * + * Evaluation of the key1 is top-down depth-first search: + * + * --- going down --- + * Level #1 is evaluated, OR expression has to pull results from it's children which are at level #2 and OR them together, + * Level #2 AND (state, country) could be be evaluated right away, AND (first_name) refers to it's "right" child from level #3 + * Level #3 OR (last_name) requests results from level #4 + * Level #4 AND (address, street, city) does logical AND between it's 3 fields, returns result back to level #3. + * --- bubbling up --- + * Level #3 computes OR between AND (address, street, city) result and it's "last_name" expression + * Level #2 computes AND between "first_name" and result of level #3, AND (state, country) which is already computed + * Level #1 does OR between results of AND (first_name) and AND (state, country) and returns final result. + * + * @param row The row to check. + * @return true if give Row satisfied all of the expressions in the tree, + * false otherwise. + */ + public boolean satisfiedBy(Unfiltered row, boolean allowMissingColumns) + { + boolean sideL, sideR; + + if (expressions == null || expressions.isEmpty()) + { + sideL = left != null && left.satisfiedBy(row, allowMissingColumns); + sideR = right != null && right.satisfiedBy(row, allowMissingColumns); + + // one of the expressions was skipped + // because it had no indexes attached + if (left == null) + return sideR; + } + else + { + sideL = localSatisfiedBy(row, allowMissingColumns); + + // if there is no right it means that this expression + // is last in the sequence, we can just return result from local expressions + if (right == null) + return sideL; + + sideR = right.satisfiedBy(row, allowMissingColumns); + } + + + return op.apply(sideL, sideR); + } + + /** + * Check every expression in the analyzed list to figure out if the + * columns in the give row match all of the based on the operation + * set to the current operation node. + * + * The algorithm is as follows: for every given expression from analyzed + * list get corresponding column from the Row: + * - apply {@link Expression#contains(ByteBuffer)} + * method to figure out if it's satisfied; + * - apply logical operation between boolean accumulator and current boolean result; + * - if result == false and node's operation is AND return right away; + * + * After all of the expressions have been evaluated return resulting accumulator variable. + * + * Example: + * + * Operation = (op: AND, columns: [first_name = p, 5 < age < 7, last_name: y]) + * Row = (first_name: pavel, last_name: y, age: 6, timestamp: 15) + * + * #1 get "first_name" = p (expressions) + * - row-get "first_name" => "pavel" + * - compare "pavel" against "p" => true (current) + * - set accumulator current => true (because this is expression #1) + * + * #2 get "last_name" = y (expressions) + * - row-get "last_name" => "y" + * - compare "y" against "y" => true (current) + * - set accumulator to accumulator & current => true + * + * #3 get 5 < "age" < 7 (expressions) + * - row-get "age" => "6" + * - compare 5 < 6 < 7 => true (current) + * - set accumulator to accumulator & current => true + * + * #4 return accumulator => true (row satisfied all of the conditions) + * + * @param row The row to check. + * @return true if give Row satisfied all of the analyzed expressions, + * false otherwise. + */ + private boolean localSatisfiedBy(Unfiltered row, boolean allowMissingColumns) + { + if (row == null || !row.isRow()) + return false; + + final int now = FBUtilities.nowInSeconds(); + boolean result = false; + int idx = 0; + + for (ColumnDefinition column : expressions.keySet()) + { + if (column.kind == Kind.PARTITION_KEY) + continue; + + ByteBuffer value = ColumnIndex.getValueOf(column, (Row) row, now); + boolean isMissingColumn = value == null; + + if (!allowMissingColumns && isMissingColumn) + throw new IllegalStateException("All indexed columns should be included into the column slice, missing: " + column); + + boolean isMatch = false; + // If there is a column with multiple expressions that effectively means an OR + // e.g. comment = 'x y z' could be split into 'comment' EQ 'x', 'comment' EQ 'y', 'comment' EQ 'z' + // by analyzer, in situation like that we only need to check if at least one of expressions matches, + // and there is no hit on the NOT_EQ (if any) which are always at the end of the filter list. + // Loop always starts from the end of the list, which makes it possible to break after the last + // NOT_EQ condition on first EQ/RANGE condition satisfied, instead of checking every + // single expression in the column filter list. + List filters = expressions.get(column); + for (int i = filters.size() - 1; i >= 0; i--) + { + Expression expression = filters.get(i); + isMatch = !isMissingColumn && expression.contains(value); + if (expression.getOp() == Op.NOT_EQ) + { + // since this is NOT_EQ operation we have to + // inverse match flag (to check against other expressions), + // and break in case of negative inverse because that means + // that it's a positive hit on the not-eq clause. + isMatch = !isMatch; + if (!isMatch) + break; + } // if it was a match on EQ/RANGE or column is missing + else if (isMatch || isMissingColumn) + break; + } + + if (idx++ == 0) + { + result = isMatch; + continue; + } + + result = op.apply(result, isMatch); + + // exit early because we already got a single false + if (op == OperationType.AND && !result) + return false; + } + + return idx == 0 || result; + } + + @VisibleForTesting + protected static ListMultimap analyzeGroup(QueryController controller, + OperationType op, + List expressions) + { + ListMultimap analyzed = ArrayListMultimap.create(); + + // sort all of the expressions in the operation by name and priority of the logical operator + // this gives us an efficient way to handle inequality and combining into ranges without extra processing + // and converting expressions from one type to another. + Collections.sort(expressions, (a, b) -> { + int cmp = a.column().compareTo(b.column()); + return cmp == 0 ? -Integer.compare(getPriority(a.operator()), getPriority(b.operator())) : cmp; + }); + + for (final RowFilter.Expression e : expressions) + { + ColumnIndex columnIndex = controller.getIndex(e); + List perColumn = analyzed.get(e.column()); + + if (columnIndex == null) + columnIndex = new ColumnIndex(controller.getKeyValidator(), e.column(), null); + + AbstractAnalyzer analyzer = columnIndex.getAnalyzer(); + analyzer.reset(e.getIndexValue()); + + // EQ/NOT_EQ can have multiple expressions e.g. text = "Hello World", + // becomes text = "Hello" OR text = "World" because "space" is always interpreted as a split point (by analyzer), + // NOT_EQ is made an independent expression only in case of pre-existing multiple EQ expressions, or + // if there is no EQ operations and NOT_EQ is met or a single NOT_EQ expression present, + // in such case we know exactly that there would be no more EQ/RANGE expressions for given column + // since NOT_EQ has the lowest priority. + if (e.operator() == Operator.EQ + || (e.operator() == Operator.NEQ + && (perColumn.size() == 0 || perColumn.size() > 1 + || (perColumn.size() == 1 && perColumn.get(0).getOp() == Op.NOT_EQ)))) + { + while (analyzer.hasNext()) + { + final ByteBuffer token = analyzer.next(); + perColumn.add(new Expression(controller, columnIndex).add(e.operator(), token)); + } + } + else + // "range" or not-equals operator, combines both bounds together into the single expression, + // iff operation of the group is AND, otherwise we are forced to create separate expressions, + // not-equals is combined with the range iff operator is AND. + { + Expression range; + if (perColumn.size() == 0 || op != OperationType.AND) + perColumn.add((range = new Expression(controller, columnIndex))); + else + range = Iterables.getLast(perColumn); + + while (analyzer.hasNext()) + range.add(e.operator(), analyzer.next()); + } + } + + return analyzed; + } + + private static int getPriority(Operator op) + { + switch (op) + { + case EQ: + return 4; + + case GTE: + case GT: + return 3; + + case LTE: + case LT: + return 2; + + case NEQ: + return 1; + + default: + return 0; + } + } + + protected Token computeNext() + { + return range != null && range.hasNext() ? range.next() : endOfData(); + } + + protected void performSkipTo(Long nextToken) + { + if (range != null) + range.skipTo(nextToken); + } + + public void close() throws IOException + { + controller.releaseIndexes(this); + } + + public static class Builder + { + private final QueryController controller; + + protected final OperationType op; + protected final List expressions; + + protected Builder left, right; + + public Builder(OperationType operation, QueryController controller, RowFilter.Expression... columns) + { + this.op = operation; + this.controller = controller; + this.expressions = new ArrayList<>(); + Collections.addAll(expressions, columns); + } + + public Builder setRight(Builder operation) + { + this.right = operation; + return this; + } + + public Builder setLeft(Builder operation) + { + this.left = operation; + return this; + } + + public void add(RowFilter.Expression e) + { + expressions.add(e); + } + + public void add(Collection newExpressions) + { + if (expressions != null) + expressions.addAll(newExpressions); + } + + public Operation complete() + { + if (!expressions.isEmpty()) + { + ListMultimap analyzedExpressions = analyzeGroup(controller, op, expressions); + RangeIterator.Builder range = controller.getIndexes(op, analyzedExpressions.values()); + + Operation rightOp = null; + if (right != null) + { + rightOp = right.complete(); + range.add(rightOp); + } + + return new Operation(op, controller, analyzedExpressions, range.build(), null, rightOp); + } + else + { + Operation leftOp = null, rightOp = null; + boolean leftIndexes = false, rightIndexes = false; + + if (left != null) + { + leftOp = left.complete(); + leftIndexes = leftOp != null && leftOp.range != null; + } + + if (right != null) + { + rightOp = right.complete(); + rightIndexes = rightOp != null && rightOp.range != null; + } + + RangeIterator join; + /** + * Operation should allow one of it's sub-trees to wrap no indexes, that is related to the fact that we + * have to accept defined-but-not-indexed columns as well as key range as IndexExpressions. + * + * Two cases are possible: + * + * only left child produced indexed iterators, that could happen when there are two columns + * or key range on the right: + * + * AND + * / \ + * OR \ + * / \ AND + * a b / \ + * key key + * + * only right child produced indexed iterators: + * + * AND + * / \ + * AND a + * / \ + * key key + */ + if (leftIndexes && !rightIndexes) + join = leftOp; + else if (!leftIndexes && rightIndexes) + join = rightOp; + else if (leftIndexes) + { + RangeIterator.Builder builder = op == OperationType.OR + ? RangeUnionIterator.builder() + : RangeIntersectionIterator.builder(); + + join = builder.add(leftOp).add(rightOp).build(); + } + else + throw new AssertionError("both sub-trees have 0 indexes."); + + return new Operation(op, controller, null, join, leftOp, rightOp); + } + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java new file mode 100644 index 0000000000..8e10fd0519 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java @@ -0,0 +1,261 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.plan; + +import java.util.*; +import java.util.concurrent.TimeUnit; + +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.db.*; +import org.apache.cassandra.db.ColumnFamilyStore.RefViewFragment; +import org.apache.cassandra.db.filter.DataLimits; +import org.apache.cassandra.db.filter.RowFilter; +import org.apache.cassandra.db.lifecycle.SSTableSet; +import org.apache.cassandra.db.rows.UnfilteredRowIterator; +import org.apache.cassandra.index.Index; +import org.apache.cassandra.index.sasi.SASIIndex; +import org.apache.cassandra.index.sasi.SSTableIndex; +import org.apache.cassandra.index.sasi.TermIterator; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.conf.view.View; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.exceptions.TimeQuotaExceededException; +import org.apache.cassandra.index.sasi.plan.Operation.OperationType; +import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.Pair; + +public class QueryController +{ + private final long executionQuota; + private final long executionStart; + + private final ColumnFamilyStore cfs; + private final PartitionRangeReadCommand command; + private final Map, List>> resources = new HashMap<>(); + private final RefViewFragment scope; + private final Set sstables; + + public QueryController(ColumnFamilyStore cfs, PartitionRangeReadCommand command, long timeQuotaMs) + { + this.cfs = cfs; + this.command = command; + this.executionQuota = TimeUnit.MILLISECONDS.toNanos(timeQuotaMs); + this.executionStart = System.nanoTime(); + this.scope = getSSTableScope(cfs, command); + this.sstables = new HashSet<>(scope.sstables); + } + + public boolean isForThrift() + { + return command.isForThrift(); + } + + public CFMetaData metadata() + { + return command.metadata(); + } + + public Collection getExpressions() + { + return command.rowFilter().getExpressions(); + } + + public DataRange dataRange() + { + return command.dataRange(); + } + + public AbstractType getKeyValidator() + { + return cfs.metadata.getKeyValidator(); + } + + public ColumnIndex getIndex(RowFilter.Expression expression) + { + Optional index = cfs.indexManager.getBestIndexFor(expression); + return index.isPresent() ? ((SASIIndex) index.get()).getIndex() : null; + } + + + public UnfilteredRowIterator getPartition(DecoratedKey key, ReadExecutionController executionController) + { + if (key == null) + throw new NullPointerException(); + try + { + SinglePartitionReadCommand partition = SinglePartitionReadCommand.create(command.isForThrift(), + cfs.metadata, + command.nowInSec(), + command.columnFilter(), + command.rowFilter().withoutExpressions(), + DataLimits.NONE, + key, + command.clusteringIndexFilter(key)); + + return partition.queryMemtableAndDisk(cfs, executionController.baseReadOpOrderGroup()); + } + finally + { + checkpoint(); + } + } + + /** + * Build a range iterator from the given list of expressions by applying given operation (OR/AND). + * Building of such iterator involves index search, results of which are persisted in the internal resources list + * and can be released later via {@link QueryController#releaseIndexes(Operation)}. + * + * @param op The operation type to coalesce expressions with. + * @param expressions The expressions to build range iterator from (expressions with not results are ignored). + * + * @return The range builder based on given expressions and operation type. + */ + public RangeIterator.Builder getIndexes(OperationType op, Collection expressions) + { + if (resources.containsKey(expressions)) + throw new IllegalArgumentException("Can't process the same expressions multiple times."); + + RangeIterator.Builder builder = op == OperationType.OR + ? RangeUnionIterator.builder() + : RangeIntersectionIterator.builder(); + + List> perIndexUnions = new ArrayList<>(); + + for (Map.Entry> e : getView(op, expressions).entrySet()) + { + RangeIterator index = TermIterator.build(e.getKey(), e.getValue()); + + if (index == null) + continue; + + builder.add(index); + perIndexUnions.add(index); + } + + resources.put(expressions, perIndexUnions); + return builder; + } + + public void checkpoint() + { + if ((System.nanoTime() - executionStart) >= executionQuota) + throw new TimeQuotaExceededException(); + } + + public void releaseIndexes(Operation operation) + { + if (operation.expressions != null) + releaseIndexes(resources.remove(operation.expressions.values())); + } + + private void releaseIndexes(List> indexes) + { + if (indexes == null) + return; + + indexes.forEach(FileUtils::closeQuietly); + } + + public void finish() + { + try + { + resources.values().forEach(this::releaseIndexes); + } + finally + { + scope.release(); + } + } + + private Map> getView(OperationType op, Collection expressions) + { + // first let's determine the primary expression if op is AND + Pair> primary = (op == OperationType.AND) ? calculatePrimary(expressions) : null; + + Map> indexes = new HashMap<>(); + for (Expression e : expressions) + { + // NO_EQ and non-index column query should only act as FILTER BY for satisfiedBy(Row) method + // because otherwise it likely to go through the whole index. + if (!e.isIndexed() || e.getOp() == Expression.Op.NOT_EQ) + continue; + + // primary expression, we'll have to add as is + if (primary != null && e.equals(primary.left)) + { + indexes.put(primary.left, primary.right); + continue; + } + + View view = e.index.getView(); + if (view == null) + continue; + + Set readers = new HashSet<>(); + if (primary != null && primary.right.size() > 0) + { + for (SSTableIndex index : primary.right) + readers.addAll(view.match(index.minKey(), index.maxKey())); + } + else + { + readers.addAll(view.match(sstables, e)); + } + + indexes.put(e, readers); + } + + return indexes; + } + + private Pair> calculatePrimary(Collection expressions) + { + Expression expression = null; + Set primaryIndexes = Collections.emptySet(); + + for (Expression e : expressions) + { + if (!e.isIndexed()) + continue; + + View view = e.index.getView(); + if (view == null) + continue; + + Set indexes = view.match(sstables, e); + if (primaryIndexes.size() > indexes.size()) + { + primaryIndexes = indexes; + expression = e; + } + } + + return expression == null ? null : Pair.create(expression, primaryIndexes); + } + + private static RefViewFragment getSSTableScope(ColumnFamilyStore cfs, PartitionRangeReadCommand command) + { + return cfs.selectAndReference(org.apache.cassandra.db.lifecycle.View.select(SSTableSet.CANONICAL, command.dataRange().keyRange())); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java b/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java new file mode 100644 index 0000000000..d34b05a8a7 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/plan/QueryPlan.java @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.plan; + +import java.util.*; + +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.db.*; +import org.apache.cassandra.db.partitions.UnfilteredPartitionIterator; +import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.dht.AbstractBounds; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Operation.OperationType; +import org.apache.cassandra.exceptions.RequestTimeoutException; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.AbstractIterator; + +public class QueryPlan +{ + private final QueryController controller; + + public QueryPlan(ColumnFamilyStore cfs, ReadCommand command, long executionQuotaMs) + { + this.controller = new QueryController(cfs, (PartitionRangeReadCommand) command, executionQuotaMs); + } + + /** + * Converts expressions into operation tree (which is currently just a single AND). + * + * Operation tree allows us to do a couple of important optimizations + * namely, group flattening for AND operations (query rewrite), expression bounds checks, + * "satisfies by" checks for resulting rows with an early exit. + * + * @return root of the operations tree. + */ + private Operation analyze() + { + try + { + Operation.Builder and = new Operation.Builder(OperationType.AND, controller); + controller.getExpressions().forEach(and::add); + return and.complete(); + } + catch (Exception | Error e) + { + controller.finish(); + throw e; + } + } + + public UnfilteredPartitionIterator execute(ReadExecutionController executionController) throws RequestTimeoutException + { + return new ResultIterator(analyze(), controller, executionController); + } + + private static class ResultIterator extends AbstractIterator implements UnfilteredPartitionIterator + { + private final AbstractBounds keyRange; + private final Operation operationTree; + private final QueryController controller; + private final ReadExecutionController executionController; + + private Iterator currentKeys = null; + + public ResultIterator(Operation operationTree, QueryController controller, ReadExecutionController executionController) + { + this.keyRange = controller.dataRange().keyRange(); + this.operationTree = operationTree; + this.controller = controller; + this.executionController = executionController; + if (operationTree != null) + operationTree.skipTo((Long) keyRange.left.getToken().getTokenValue()); + } + + protected UnfilteredRowIterator computeNext() + { + if (operationTree == null) + return endOfData(); + + for (;;) + { + if (currentKeys == null || !currentKeys.hasNext()) + { + if (!operationTree.hasNext()) + return endOfData(); + + Token token = operationTree.next(); + currentKeys = token.iterator(); + } + + while (currentKeys.hasNext()) + { + DecoratedKey key = currentKeys.next(); + + if (!keyRange.right.isMinimum() && keyRange.right.compareTo(key) < 0) + return endOfData(); + + try (UnfilteredRowIterator partition = controller.getPartition(key, executionController)) + { + List clusters = new ArrayList<>(); + while (partition.hasNext()) + { + Unfiltered row = partition.next(); + if (operationTree.satisfiedBy(row, true)) + clusters.add(row); + } + + if (!clusters.isEmpty()) + return new PartitionIterator(partition, clusters); + } + } + } + } + + private static class PartitionIterator extends AbstractUnfilteredRowIterator + { + private final Iterator rows; + + public PartitionIterator(UnfilteredRowIterator partition, Collection content) + { + super(partition.metadata(), + partition.partitionKey(), + partition.partitionLevelDeletion(), + partition.columns(), + partition.staticRow(), + partition.isReverseOrder(), + partition.stats()); + + rows = content.iterator(); + } + + @Override + protected Unfiltered computeNext() + { + return rows.hasNext() ? rows.next() : endOfData(); + } + } + + public boolean isForThrift() + { + return controller.isForThrift(); + } + + public CFMetaData metadata() + { + return controller.metadata(); + } + + public void close() + { + FileUtils.closeQuietly(operationTree); + controller.finish(); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/ByteTerm.java b/src/java/org/apache/cassandra/index/sasi/sa/ByteTerm.java new file mode 100644 index 0000000000..c7bbab781c --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/ByteTerm.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; + +public class ByteTerm extends Term +{ + public ByteTerm(int position, ByteBuffer value, TokenTreeBuilder tokens) + { + super(position, value, tokens); + } + + public ByteBuffer getTerm() + { + return value.duplicate(); + } + + public ByteBuffer getSuffix(int start) + { + return (ByteBuffer) value.duplicate().position(value.position() + start); + } + + public int compareTo(AbstractType comparator, Term other) + { + return comparator.compare(value, (ByteBuffer) other.value); + } + + public int length() + { + return value.remaining(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/CharTerm.java b/src/java/org/apache/cassandra/index/sasi/sa/CharTerm.java new file mode 100644 index 0000000000..533b566441 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/CharTerm.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; + +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; + +import com.google.common.base.Charsets; + +public class CharTerm extends Term +{ + public CharTerm(int position, CharBuffer value, TokenTreeBuilder tokens) + { + super(position, value, tokens); + } + + public ByteBuffer getTerm() + { + return Charsets.UTF_8.encode(value.duplicate()); + } + + public ByteBuffer getSuffix(int start) + { + return Charsets.UTF_8.encode(value.subSequence(value.position() + start, value.remaining())); + } + + public int compareTo(AbstractType comparator, Term other) + { + return value.compareTo((CharBuffer) other.value); + } + + public int length() + { + return value.length(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/IntegralSA.java b/src/java/org/apache/cassandra/index/sasi/sa/IntegralSA.java new file mode 100644 index 0000000000..8356585886 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/IntegralSA.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.ByteBuffer; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.utils.Pair; + +public class IntegralSA extends SA +{ + public IntegralSA(AbstractType comparator, OnDiskIndexBuilder.Mode mode) + { + super(comparator, mode); + } + + public Term getTerm(ByteBuffer termValue, TokenTreeBuilder tokens) + { + return new ByteTerm(charCount, termValue, tokens); + } + + public TermIterator finish() + { + return new IntegralSuffixIterator(); + } + + + private class IntegralSuffixIterator extends TermIterator + { + private final Iterator> termIterator; + + public IntegralSuffixIterator() + { + Collections.sort(terms, new Comparator>() + { + public int compare(Term a, Term b) + { + return a.compareTo(comparator, b); + } + }); + + termIterator = terms.iterator(); + } + + public ByteBuffer minTerm() + { + return terms.get(0).getTerm(); + } + + public ByteBuffer maxTerm() + { + return terms.get(terms.size() - 1).getTerm(); + } + + protected Pair computeNext() + { + if (!termIterator.hasNext()) + return endOfData(); + + Term term = termIterator.next(); + return Pair.create(term.getTerm(), term.getTokens().finish()); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/SA.java b/src/java/org/apache/cassandra/index/sasi/sa/SA.java new file mode 100644 index 0000000000..75f9f92e8e --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/SA.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.Mode; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; + +public abstract class SA +{ + protected final AbstractType comparator; + protected final Mode mode; + + protected final List> terms = new ArrayList<>(); + protected int charCount = 0; + + public SA(AbstractType comparator, Mode mode) + { + this.comparator = comparator; + this.mode = mode; + } + + public Mode getMode() + { + return mode; + } + + public void add(ByteBuffer termValue, TokenTreeBuilder tokens) + { + Term term = getTerm(termValue, tokens); + terms.add(term); + charCount += term.length(); + } + + public abstract TermIterator finish(); + + protected abstract Term getTerm(ByteBuffer termValue, TokenTreeBuilder tokens); +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java b/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java new file mode 100644 index 0000000000..63f6c5bfdb --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/SuffixSA.java @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.ByteBuffer; +import java.nio.CharBuffer; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.utils.Pair; + +import com.google.common.base.Charsets; +import net.mintern.primitive.Primitive; + +public class SuffixSA extends SA +{ + public SuffixSA(AbstractType comparator, OnDiskIndexBuilder.Mode mode) + { + super(comparator, mode); + } + + protected Term getTerm(ByteBuffer termValue, TokenTreeBuilder tokens) + { + return new CharTerm(charCount, Charsets.UTF_8.decode(termValue.duplicate()), tokens); + } + + public TermIterator finish() + { + return new SASuffixIterator(); + } + + private class SASuffixIterator extends TermIterator + { + private final long[] suffixes; + + private int current = 0; + private ByteBuffer lastProcessedSuffix; + private TokenTreeBuilder container; + + public SASuffixIterator() + { + // each element has term index and char position encoded as two 32-bit integers + // to avoid binary search per suffix while sorting suffix array. + suffixes = new long[charCount]; + + long termIndex = -1, currentTermLength = -1; + for (int i = 0; i < charCount; i++) + { + if (i >= currentTermLength || currentTermLength == -1) + { + Term currentTerm = terms.get((int) ++termIndex); + currentTermLength = currentTerm.getPosition() + currentTerm.length(); + } + + suffixes[i] = (termIndex << 32) | i; + } + + Primitive.sort(suffixes, (a, b) -> { + Term aTerm = terms.get((int) (a >>> 32)); + Term bTerm = terms.get((int) (b >>> 32)); + return comparator.compare(aTerm.getSuffix(((int) a) - aTerm.getPosition()), + bTerm.getSuffix(((int) b) - bTerm.getPosition())); + }); + } + + private Pair suffixAt(int position) + { + long index = suffixes[position]; + Term term = terms.get((int) (index >>> 32)); + return Pair.create(term.getSuffix(((int) index) - term.getPosition()), term.getTokens()); + } + + public ByteBuffer minTerm() + { + return suffixAt(0).left; + } + + public ByteBuffer maxTerm() + { + return suffixAt(suffixes.length - 1).left; + } + + protected Pair computeNext() + { + while (true) + { + if (current >= suffixes.length) + { + if (lastProcessedSuffix == null) + return endOfData(); + + Pair result = finishSuffix(); + + lastProcessedSuffix = null; + return result; + } + + Pair suffix = suffixAt(current++); + + if (lastProcessedSuffix == null) + { + lastProcessedSuffix = suffix.left; + container = new TokenTreeBuilder(suffix.right.getTokens()); + } + else if (comparator.compare(lastProcessedSuffix, suffix.left) == 0) + { + lastProcessedSuffix = suffix.left; + container.add(suffix.right.getTokens()); + } + else + { + Pair result = finishSuffix(); + + lastProcessedSuffix = suffix.left; + container = new TokenTreeBuilder(suffix.right.getTokens()); + + return result; + } + } + } + + private Pair finishSuffix() + { + return Pair.create(lastProcessedSuffix, container.finish()); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/sa/Term.java b/src/java/org/apache/cassandra/index/sasi/sa/Term.java new file mode 100644 index 0000000000..fe6eca8c35 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/Term.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.Buffer; +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; + +public abstract class Term +{ + protected final int position; + protected final T value; + protected TokenTreeBuilder tokens; + + + public Term(int position, T value, TokenTreeBuilder tokens) + { + this.position = position; + this.value = value; + this.tokens = tokens; + } + + public int getPosition() + { + return position; + } + + public abstract ByteBuffer getTerm(); + public abstract ByteBuffer getSuffix(int start); + + public TokenTreeBuilder getTokens() + { + return tokens; + } + + public abstract int compareTo(AbstractType comparator, Term other); + + public abstract int length(); + +} + diff --git a/src/java/org/apache/cassandra/index/sasi/sa/TermIterator.java b/src/java/org/apache/cassandra/index/sasi/sa/TermIterator.java new file mode 100644 index 0000000000..916aa07913 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/sa/TermIterator.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.sa; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.utils.Pair; + +import com.google.common.collect.AbstractIterator; + +public abstract class TermIterator extends AbstractIterator> +{ + public abstract ByteBuffer minTerm(); + public abstract ByteBuffer maxTerm(); +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/AbstractIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/AbstractIterator.java new file mode 100644 index 0000000000..cf918c133b --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/AbstractIterator.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2007 The Guava Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils; + +import java.util.NoSuchElementException; + +import com.google.common.collect.PeekingIterator; + +import static com.google.common.base.Preconditions.checkState; + +// This is fork of the Guava AbstractIterator, the only difference +// is that state & next variables are now protected, this was required +// for SkippableIterator.skipTo(..) to void all previous state. +public abstract class AbstractIterator implements PeekingIterator +{ + protected State state = State.NOT_READY; + + /** Constructor for use by subclasses. */ + protected AbstractIterator() {} + + protected enum State + { + /** We have computed the next element and haven't returned it yet. */ + READY, + + /** We haven't yet computed or have already returned the element. */ + NOT_READY, + + /** We have reached the end of the data and are finished. */ + DONE, + + /** We've suffered an exception and are kaput. */ + FAILED, + } + + protected T next; + + /** + * Returns the next element. Note: the implementation must call {@link + * #endOfData()} when there are no elements left in the iteration. Failure to + * do so could result in an infinite loop. + * + *

    The initial invocation of {@link #hasNext()} or {@link #next()} calls + * this method, as does the first invocation of {@code hasNext} or {@code + * next} following each successful call to {@code next}. Once the + * implementation either invokes {@code endOfData} or throws an exception, + * {@code computeNext} is guaranteed to never be called again. + * + *

    If this method throws an exception, it will propagate outward to the + * {@code hasNext} or {@code next} invocation that invoked this method. Any + * further attempts to use the iterator will result in an {@link + * IllegalStateException}. + * + *

    The implementation of this method may not invoke the {@code hasNext}, + * {@code next}, or {@link #peek()} methods on this instance; if it does, an + * {@code IllegalStateException} will result. + * + * @return the next element if there was one. If {@code endOfData} was called + * during execution, the return value will be ignored. + * @throws RuntimeException if any unrecoverable error happens. This exception + * will propagate outward to the {@code hasNext()}, {@code next()}, or + * {@code peek()} invocation that invoked this method. Any further + * attempts to use the iterator will result in an + * {@link IllegalStateException}. + */ + protected abstract T computeNext(); + + /** + * Implementations of {@link #computeNext} must invoke this method when + * there are no elements left in the iteration. + * + * @return {@code null}; a convenience so your {@code computeNext} + * implementation can use the simple statement {@code return endOfData();} + */ + protected final T endOfData() + { + state = State.DONE; + return null; + } + + public final boolean hasNext() + { + checkState(state != State.FAILED); + + switch (state) + { + case DONE: + return false; + + case READY: + return true; + + default: + } + + return tryToComputeNext(); + } + + protected boolean tryToComputeNext() + { + state = State.FAILED; // temporary pessimism + next = computeNext(); + + if (state != State.DONE) + { + state = State.READY; + return true; + } + + return false; + } + + public final T next() + { + if (!hasNext()) + throw new NoSuchElementException(); + + state = State.NOT_READY; + return next; + } + + public void remove() + { + throw new UnsupportedOperationException(); + } + + /** + * Returns the next element in the iteration without advancing the iteration, + * according to the contract of {@link PeekingIterator#peek()}. + * + *

    Implementations of {@code AbstractIterator} that wish to expose this + * functionality should implement {@code PeekingIterator}. + */ + public final T peek() + { + if (!hasNext()) + throw new NoSuchElementException(); + + return next; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/CombinedTerm.java b/src/java/org/apache/cassandra/index/sasi/utils/CombinedTerm.java new file mode 100644 index 0000000000..2bf5a07fa3 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/CombinedTerm.java @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.nio.ByteBuffer; +import java.util.Map; +import java.util.TreeMap; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndex.DataTerm; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.disk.TokenTree; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.db.marshal.AbstractType; + +import com.carrotsearch.hppc.LongOpenHashSet; +import com.carrotsearch.hppc.LongSet; +import com.carrotsearch.hppc.cursors.LongCursor; + +public class CombinedTerm implements CombinedValue +{ + private final AbstractType comparator; + private final DataTerm term; + private final TreeMap tokens; + + public CombinedTerm(AbstractType comparator, DataTerm term) + { + this.comparator = comparator; + this.term = term; + this.tokens = new TreeMap<>(); + + RangeIterator tokens = term.getTokens(); + while (tokens.hasNext()) + { + Token current = tokens.next(); + LongSet offsets = this.tokens.get(current.get()); + if (offsets == null) + this.tokens.put(current.get(), (offsets = new LongOpenHashSet())); + + for (Long offset : ((TokenTree.OnDiskToken) current).getOffsets()) + offsets.add(offset); + } + } + + public ByteBuffer getTerm() + { + return term.getTerm(); + } + + public Map getTokens() + { + return tokens; + } + + public TokenTreeBuilder getTokenTreeBuilder() + { + return new TokenTreeBuilder(tokens).finish(); + } + + public void merge(CombinedValue other) + { + if (!(other instanceof CombinedTerm)) + return; + + CombinedTerm o = (CombinedTerm) other; + + assert comparator == o.comparator; + + for (Map.Entry token : o.tokens.entrySet()) + { + LongSet offsets = this.tokens.get(token.getKey()); + if (offsets == null) + this.tokens.put(token.getKey(), (offsets = new LongOpenHashSet())); + + for (LongCursor offset : token.getValue()) + offsets.add(offset.value); + } + } + + public DataTerm get() + { + return term; + } + + public int compareTo(CombinedValue o) + { + return term.compareTo(comparator, o.get().getTerm()); + } +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/utils/CombinedTermIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/CombinedTermIterator.java new file mode 100644 index 0000000000..06c27bf438 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/CombinedTermIterator.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.disk.Descriptor; +import org.apache.cassandra.index.sasi.disk.OnDiskIndex; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder; +import org.apache.cassandra.index.sasi.sa.TermIterator; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.utils.Pair; + +public class CombinedTermIterator extends TermIterator +{ + final Descriptor descriptor; + final RangeIterator union; + final ByteBuffer min; + final ByteBuffer max; + + public CombinedTermIterator(OnDiskIndex... sas) + { + this(Descriptor.CURRENT, sas); + } + + public CombinedTermIterator(Descriptor d, OnDiskIndex... parts) + { + descriptor = d; + union = OnDiskIndexIterator.union(parts); + + AbstractType comparator = parts[0].getComparator(); // assumes all SAs have same comparator + ByteBuffer minimum = parts[0].minTerm(); + ByteBuffer maximum = parts[0].maxTerm(); + + for (int i = 1; i < parts.length; i++) + { + OnDiskIndex part = parts[i]; + if (part == null) + continue; + + minimum = comparator.compare(minimum, part.minTerm()) > 0 ? part.minTerm() : minimum; + maximum = comparator.compare(maximum, part.maxTerm()) < 0 ? part.maxTerm() : maximum; + } + + min = minimum; + max = maximum; + } + + public ByteBuffer minTerm() + { + return min; + } + + public ByteBuffer maxTerm() + { + return max; + } + + protected Pair computeNext() + { + if (!union.hasNext()) + { + return endOfData(); + } + else + { + CombinedTerm term = union.next(); + return Pair.create(term.getTerm(), term.getTokenTreeBuilder()); + } + + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/CombinedValue.java b/src/java/org/apache/cassandra/index/sasi/utils/CombinedValue.java new file mode 100644 index 0000000000..ca5f9beb78 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/CombinedValue.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +public interface CombinedValue extends Comparable> +{ + void merge(CombinedValue other); + + V get(); +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/MappedBuffer.java b/src/java/org/apache/cassandra/index/sasi/utils/MappedBuffer.java new file mode 100644 index 0000000000..37ab1beff9 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/MappedBuffer.java @@ -0,0 +1,253 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.Closeable; +import java.nio.ByteBuffer; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel.MapMode; + +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.io.util.ChannelProxy; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.io.util.RandomAccessReader; + +import com.google.common.annotations.VisibleForTesting; + +public class MappedBuffer implements Closeable +{ + private final MappedByteBuffer[] pages; + + private long position, limit; + private final long capacity; + private final int pageSize, sizeBits; + + private MappedBuffer(MappedBuffer other) + { + this.sizeBits = other.sizeBits; + this.pageSize = other.pageSize; + this.position = other.position; + this.limit = other.limit; + this.capacity = other.capacity; + this.pages = other.pages; + } + + public MappedBuffer(RandomAccessReader file) + { + this(file.getChannel(), 30); + } + + public MappedBuffer(ChannelProxy file) + { + this(file, 30); + } + + @VisibleForTesting + protected MappedBuffer(ChannelProxy file, int numPageBits) + { + if (numPageBits > Integer.SIZE - 1) + throw new IllegalArgumentException("page size can't be bigger than 1G"); + + sizeBits = numPageBits; + pageSize = 1 << sizeBits; + position = 0; + limit = capacity = file.size(); + pages = new MappedByteBuffer[(int) (file.size() / pageSize) + 1]; + + try + { + long offset = 0; + for (int i = 0; i < pages.length; i++) + { + long pageSize = Math.min(this.pageSize, (capacity - offset)); + pages[i] = file.map(MapMode.READ_ONLY, offset, pageSize); + offset += pageSize; + } + } + finally + { + file.close(); + } + } + + public int comparePageTo(long offset, int length, AbstractType comparator, ByteBuffer other) + { + return comparator.compare(getPageRegion(offset, length), other); + } + + public long capacity() + { + return capacity; + } + + public long position() + { + return position; + } + + public MappedBuffer position(long newPosition) + { + if (newPosition < 0 || newPosition > limit) + throw new IllegalArgumentException("position: " + newPosition + ", limit: " + limit); + + position = newPosition; + return this; + } + + public long limit() + { + return limit; + } + + public MappedBuffer limit(long newLimit) + { + if (newLimit < position || newLimit > capacity) + throw new IllegalArgumentException(); + + limit = newLimit; + return this; + } + + public long remaining() + { + return limit - position; + } + + public boolean hasRemaining() + { + return remaining() > 0; + } + + public byte get() + { + return get(position++); + } + + public byte get(long pos) + { + return pages[getPage(pos)].get(getPageOffset(pos)); + } + + public short getShort() + { + short value = getShort(position); + position += 2; + return value; + } + + public short getShort(long pos) + { + if (isPageAligned(pos, 2)) + return pages[getPage(pos)].getShort(getPageOffset(pos)); + + int ch1 = get(pos) & 0xff; + int ch2 = get(pos + 1) & 0xff; + return (short) ((ch1 << 8) + ch2); + } + + public int getInt() + { + int value = getInt(position); + position += 4; + return value; + } + + public int getInt(long pos) + { + if (isPageAligned(pos, 4)) + return pages[getPage(pos)].getInt(getPageOffset(pos)); + + int ch1 = get(pos) & 0xff; + int ch2 = get(pos + 1) & 0xff; + int ch3 = get(pos + 2) & 0xff; + int ch4 = get(pos + 3) & 0xff; + + return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + ch4); + } + + public long getLong() + { + long value = getLong(position); + position += 8; + return value; + } + + + public long getLong(long pos) + { + // fast path if the long could be retrieved from a single page + // that would avoid multiple expensive look-ups into page array. + return (isPageAligned(pos, 8)) + ? pages[getPage(pos)].getLong(getPageOffset(pos)) + : ((long) (getInt(pos)) << 32) + (getInt(pos + 4) & 0xFFFFFFFFL); + } + + public ByteBuffer getPageRegion(long position, int length) + { + if (!isPageAligned(position, length)) + throw new IllegalArgumentException(String.format("range: %s-%s wraps more than one page", position, length)); + + ByteBuffer slice = pages[getPage(position)].duplicate(); + + int pageOffset = getPageOffset(position); + slice.position(pageOffset).limit(pageOffset + length); + + return slice; + } + + public MappedBuffer duplicate() + { + return new MappedBuffer(this); + } + + public void close() + { + if (!FileUtils.isCleanerAvailable()) + return; + + /* + * Try forcing the unmapping of pages using undocumented unsafe sun APIs. + * If this fails (non Sun JVM), we'll have to wait for the GC to finalize the mapping. + * If this works and a thread tries to access any page, hell will unleash on earth. + */ + try + { + for (MappedByteBuffer segment : pages) + FileUtils.clean(segment); + } + catch (Exception e) + { + // This is not supposed to happen + } + } + + private int getPage(long position) + { + return (int) (position >> sizeBits); + } + + private int getPageOffset(long position) + { + return (int) (position & pageSize - 1); + } + + private boolean isPageAligned(long position, int length) + { + return pageSize - (getPageOffset(position) + length) > 0; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/OnDiskIndexIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/OnDiskIndexIterator.java new file mode 100644 index 0000000000..ae97cabfc2 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/OnDiskIndexIterator.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.IOException; +import java.util.Iterator; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndex.DataTerm; +import org.apache.cassandra.db.marshal.AbstractType; + +public class OnDiskIndexIterator extends RangeIterator +{ + private final AbstractType comparator; + private final Iterator terms; + + public OnDiskIndexIterator(OnDiskIndex index) + { + super(index.min(), index.max(), Long.MAX_VALUE); + + this.comparator = index.getComparator(); + this.terms = index.iterator(); + } + + public static RangeIterator union(OnDiskIndex... union) + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + for (OnDiskIndex e : union) + { + if (e != null) + builder.add(new OnDiskIndexIterator(e)); + } + + return builder.build(); + } + + protected CombinedTerm computeNext() + { + return terms.hasNext() ? new CombinedTerm(comparator, terms.next()) : endOfData(); + } + + protected void performSkipTo(DataTerm nextToken) + { + throw new UnsupportedOperationException(); + } + + public void close() throws IOException + {} +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java new file mode 100644 index 0000000000..0d2214a139 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/RangeIntersectionIterator.java @@ -0,0 +1,281 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.PriorityQueue; + +import com.google.common.collect.Iterators; +import org.apache.cassandra.io.util.FileUtils; + +import com.google.common.annotations.VisibleForTesting; + +public class RangeIntersectionIterator +{ + protected enum Strategy + { + BOUNCE, LOOKUP, ADAPTIVE + } + + public static , D extends CombinedValue> Builder builder() + { + return builder(Strategy.ADAPTIVE); + } + + @VisibleForTesting + protected static , D extends CombinedValue> Builder builder(Strategy strategy) + { + return new Builder<>(strategy); + } + + public static class Builder, D extends CombinedValue> extends RangeIterator.Builder + { + private final Strategy strategy; + + public Builder(Strategy strategy) + { + super(IteratorType.INTERSECTION); + this.strategy = strategy; + } + + protected RangeIterator buildIterator() + { + // if the range is disjoint we can simply return empty + // iterator of any type, because it's not going to produce any results. + if (statistics.isDisjoint()) + return new BounceIntersectionIterator<>(statistics, new PriorityQueue>(1)); + + switch (strategy) + { + case LOOKUP: + return new LookupIntersectionIterator<>(statistics, ranges); + + case BOUNCE: + return new BounceIntersectionIterator<>(statistics, ranges); + + case ADAPTIVE: + return statistics.sizeRatio() <= 0.01d + ? new LookupIntersectionIterator<>(statistics, ranges) + : new BounceIntersectionIterator<>(statistics, ranges); + + default: + throw new IllegalStateException("Unknown strategy: " + strategy); + } + } + } + + private static abstract class AbstractIntersectionIterator, D extends CombinedValue> extends RangeIterator + { + protected final PriorityQueue> ranges; + + private AbstractIntersectionIterator(Builder.Statistics statistics, PriorityQueue> ranges) + { + super(statistics); + this.ranges = ranges; + } + + public void close() throws IOException + { + for (RangeIterator range : ranges) + FileUtils.closeQuietly(range); + } + } + + /** + * Iterator which performs intersection of multiple ranges by using bouncing (merge-join) technique to identify + * common elements in the given ranges. Aforementioned "bounce" works as follows: range queue is poll'ed for the + * range with the smallest current token (main loop), that token is used to {@link RangeIterator#skipTo(Comparable)} + * other ranges, if token produced by {@link RangeIterator#skipTo(Comparable)} is equal to current "candidate" token, + * both get merged together and the same operation is repeated for next range from the queue, if returned token + * is not equal than candidate, candidate's range gets put back into the queue and the main loop gets repeated until + * next intersection token is found or at least one iterator runs out of tokens. + * + * This technique is every efficient to jump over gaps in the ranges. + * + * @param The type used to sort ranges. + * @param The container type which is going to be returned by {@link Iterator#next()}. + */ + @VisibleForTesting + protected static class BounceIntersectionIterator, D extends CombinedValue> extends AbstractIntersectionIterator + { + private BounceIntersectionIterator(Builder.Statistics statistics, PriorityQueue> ranges) + { + super(statistics, ranges); + } + + protected D computeNext() + { + while (!ranges.isEmpty()) + { + RangeIterator head = ranges.poll(); + + // jump right to the beginning of the intersection or return next element + if (head.getCurrent().compareTo(getMinimum()) < 0) + head.skipTo(getMinimum()); + + D candidate = head.hasNext() ? head.next() : null; + if (candidate == null || candidate.get().compareTo(getMaximum()) > 0) + { + ranges.add(head); + return endOfData(); + } + + List> processed = new ArrayList<>(); + + boolean intersectsAll = true, exhausted = false; + while (!ranges.isEmpty()) + { + RangeIterator range = ranges.poll(); + + // found a range which doesn't overlap with one (or possibly more) other range(s) + if (!isOverlapping(head, range)) + { + exhausted = true; + intersectsAll = false; + break; + } + + D point = range.skipTo(candidate.get()); + + if (point == null) // other range is exhausted + { + exhausted = true; + intersectsAll = false; + break; + } + + processed.add(range); + + if (candidate.get().equals(point.get())) + { + candidate.merge(point); + // advance skipped range to the next element if any + Iterators.getNext(range, null); + } + else + { + intersectsAll = false; + break; + } + } + + ranges.add(head); + + for (RangeIterator range : processed) + ranges.add(range); + + if (exhausted) + return endOfData(); + + if (intersectsAll) + return candidate; + } + + return endOfData(); + } + + protected void performSkipTo(K nextToken) + { + List> skipped = new ArrayList<>(); + + while (!ranges.isEmpty()) + { + RangeIterator range = ranges.poll(); + range.skipTo(nextToken); + skipped.add(range); + } + + for (RangeIterator range : skipped) + ranges.add(range); + } + } + + /** + * Iterator which performs a linear scan over a primary range (the smallest of the ranges) + * and O(log(n)) lookup into secondary ranges using values from the primary iterator. + * This technique is efficient when one of the intersection ranges is smaller than others + * e.g. ratio 0.01d (default), in such situation scan + lookup is more efficient comparing + * to "bounce" merge because "bounce" distance is never going to be big. + * + * @param The type used to sort ranges. + * @param The container type which is going to be returned by {@link Iterator#next()}. + */ + @VisibleForTesting + protected static class LookupIntersectionIterator, D extends CombinedValue> extends AbstractIntersectionIterator + { + private final RangeIterator smallestIterator; + + private LookupIntersectionIterator(Builder.Statistics statistics, PriorityQueue> ranges) + { + super(statistics, ranges); + + smallestIterator = statistics.minRange; + + if (smallestIterator.getCurrent().compareTo(getMinimum()) < 0) + smallestIterator.skipTo(getMinimum()); + } + + protected D computeNext() + { + while (smallestIterator.hasNext()) + { + D candidate = smallestIterator.next(); + K token = candidate.get(); + + boolean intersectsAll = true; + for (RangeIterator range : ranges) + { + // avoid checking against self, much cheaper than changing queue comparator + // to compare based on the size and re-populating such queue. + if (range.equals(smallestIterator)) + continue; + + // found a range which doesn't overlap with one (or possibly more) other range(s) + if (!isOverlapping(smallestIterator, range)) + return endOfData(); + + D point = range.skipTo(token); + + if (point == null) // one of the iterators is exhausted + return endOfData(); + + if (!point.get().equals(token)) + { + intersectsAll = false; + break; + } + + candidate.merge(point); + } + + if (intersectsAll) + return candidate; + } + + return endOfData(); + } + + protected void performSkipTo(K nextToken) + { + smallestIterator.skipTo(nextToken); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/RangeIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/RangeIterator.java new file mode 100644 index 0000000000..1b5aee4bb8 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/RangeIterator.java @@ -0,0 +1,279 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.Closeable; +import java.util.Comparator; +import java.util.List; +import java.util.PriorityQueue; + +import com.google.common.annotations.VisibleForTesting; + +public abstract class RangeIterator, T extends CombinedValue> extends AbstractIterator implements Closeable +{ + private final K min, max; + private final long count; + private K current; + + protected RangeIterator(Builder.Statistics statistics) + { + this(statistics.min, statistics.max, statistics.tokenCount); + } + + public RangeIterator(RangeIterator range) + { + this(range == null ? null : range.min, range == null ? null : range.max, range == null ? -1 : range.count); + } + + public RangeIterator(K min, K max, long count) + { + this.min = min; + this.current = min; + this.max = max; + this.count = count; + } + + public final K getMinimum() + { + return min; + } + + public final K getCurrent() + { + return current; + } + + public final K getMaximum() + { + return max; + } + + public final long getCount() + { + return count; + } + + /** + * When called, this iterators current position should + * be skipped forwards until finding either: + * 1) an element equal to or bigger than next + * 2) the end of the iterator + * + * @param nextToken value to skip the iterator forward until matching + * + * @return The next current token after the skip was performed + */ + public final T skipTo(K nextToken) + { + if (min == null || max == null) + return endOfData(); + + if (current.compareTo(nextToken) >= 0) + return next == null ? recomputeNext() : next; + + if (max.compareTo(nextToken) < 0) + return endOfData(); + + performSkipTo(nextToken); + return recomputeNext(); + } + + protected abstract void performSkipTo(K nextToken); + + protected T recomputeNext() + { + return tryToComputeNext() ? peek() : endOfData(); + } + + protected boolean tryToComputeNext() + { + boolean hasNext = super.tryToComputeNext(); + current = hasNext ? next.get() : getMaximum(); + return hasNext; + } + + public static abstract class Builder, D extends CombinedValue> + { + public enum IteratorType + { + UNION, INTERSECTION + } + + @VisibleForTesting + protected final Statistics statistics; + + @VisibleForTesting + protected final PriorityQueue> ranges; + + public Builder(IteratorType type) + { + statistics = new Statistics<>(type); + ranges = new PriorityQueue<>(16, (Comparator>) (a, b) -> a.getCurrent().compareTo(b.getCurrent())); + } + + public K getMinimum() + { + return statistics.min; + } + + public K getMaximum() + { + return statistics.max; + } + + public long getTokenCount() + { + return statistics.tokenCount; + } + + public int rangeCount() + { + return ranges.size(); + } + + public Builder add(RangeIterator range) + { + if (range == null || range.getMinimum() == null || range.getMaximum() == null) + return this; + + ranges.add(range); + statistics.update(range); + + return this; + } + + public Builder add(List> ranges) + { + if (ranges == null || ranges.isEmpty()) + return this; + + ranges.forEach(this::add); + return this; + } + + public final RangeIterator build() + { + switch (rangeCount()) + { + case 0: + return null; + + case 1: + return ranges.poll(); + + default: + return buildIterator(); + } + } + + protected abstract RangeIterator buildIterator(); + + public static class Statistics, D extends CombinedValue> + { + protected final IteratorType iteratorType; + + protected K min, max; + protected long tokenCount; + + // iterator with the least number of items + protected RangeIterator minRange; + // iterator with the most number of items + protected RangeIterator maxRange; + + // tracks if all of the added ranges overlap, which is useful in case of intersection, + // as it gives direct answer as to such iterator is going to produce any results. + protected boolean isOverlapping = true; + + public Statistics(IteratorType iteratorType) + { + this.iteratorType = iteratorType; + } + + /** + * Update statistics information with the given range. + * + * Updates min/max of the combined range, token count and + * tracks range with the least/most number of tokens. + * + * @param range The range to update statistics with. + */ + public void update(RangeIterator range) + { + switch (iteratorType) + { + case UNION: + min = min == null || min.compareTo(range.getMinimum()) > 0 ? range.getMinimum() : min; + max = max == null || max.compareTo(range.getMaximum()) < 0 ? range.getMaximum() : max; + break; + + case INTERSECTION: + // minimum of the intersection is the biggest minimum of individual iterators + min = min == null || min.compareTo(range.getMinimum()) < 0 ? range.getMinimum() : min; + // maximum of the intersection is the smallest maximum of individual iterators + max = max == null || max.compareTo(range.getMaximum()) > 0 ? range.getMaximum() : max; + break; + + default: + throw new IllegalStateException("Unknown iterator type: " + iteratorType); + } + + // check if new range is disjoint with already added ranges, which means that this intersection + // is not going to produce any results, so we can cleanup range storage and never added anything to it. + isOverlapping &= isOverlapping(min, max, range); + + minRange = minRange == null ? range : min(minRange, range); + maxRange = maxRange == null ? range : max(maxRange, range); + + tokenCount += range.getCount(); + + } + + private RangeIterator min(RangeIterator a, RangeIterator b) + { + return a.getCount() > b.getCount() ? b : a; + } + + private RangeIterator max(RangeIterator a, RangeIterator b) + { + return a.getCount() > b.getCount() ? a : b; + } + + public boolean isDisjoint() + { + return !isOverlapping; + } + + public double sizeRatio() + { + return minRange.getCount() * 1d / maxRange.getCount(); + } + } + } + + @VisibleForTesting + protected static , D extends CombinedValue> boolean isOverlapping(RangeIterator a, RangeIterator b) + { + return isOverlapping(a.getCurrent(), a.getMaximum(), b); + } + + @VisibleForTesting + protected static , D extends CombinedValue> boolean isOverlapping(K min, K max, RangeIterator b) + { + return min.compareTo(b.getMaximum()) <= 0 && b.getCurrent().compareTo(max) <= 0; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java b/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java new file mode 100644 index 0000000000..310b6d0b0f --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/RangeUnionIterator.java @@ -0,0 +1,158 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; + +import org.apache.cassandra.io.util.FileUtils; + +/** + * Range Union Iterator is used to return sorted stream of elements from multiple RangeIterator instances. + * + * PriorityQueue is used as a sorting mechanism for the ranges, where each computeNext() operation would poll + * from the queue (and push when done), which returns range that contains the smallest element, because + * sorting is done on the moving window of range iteration {@link RangeIterator#getCurrent()}. Once retrieved + * the smallest element (return candidate) is attempted to be merged with other ranges, because there could + * be equal elements in adjacent ranges, such ranges are poll'ed only if their {@link RangeIterator#getCurrent()} + * equals to the return candidate. + * + * @param The type used to sort ranges. + * @param The container type which is going to be returned by {@link Iterator#next()}. + */ +public class RangeUnionIterator, D extends CombinedValue> extends RangeIterator +{ + private final PriorityQueue> ranges; + + private RangeUnionIterator(Builder.Statistics statistics, PriorityQueue> ranges) + { + super(statistics); + this.ranges = ranges; + } + + public D computeNext() + { + RangeIterator head = null; + + while (!ranges.isEmpty()) + { + head = ranges.poll(); + if (head.hasNext()) + break; + + FileUtils.closeQuietly(head); + } + + if (head == null || !head.hasNext()) + return endOfData(); + + D candidate = head.next(); + + List> processedRanges = new ArrayList<>(); + + if (head.hasNext()) + processedRanges.add(head); + else + FileUtils.closeQuietly(head); + + while (!ranges.isEmpty()) + { + // peek here instead of poll is an optimization + // so we can re-insert less ranges back if candidate + // is less than head of the current range. + RangeIterator range = ranges.peek(); + + int cmp = candidate.get().compareTo(range.getCurrent()); + + assert cmp <= 0; + + if (cmp < 0) + { + break; // candidate is smaller than next token, return immediately + } + else if (cmp == 0) + { + candidate.merge(range.next()); // consume and merge + + range = ranges.poll(); + // re-prioritize changed range + + if (range.hasNext()) + processedRanges.add(range); + else + FileUtils.closeQuietly(range); + } + } + + ranges.addAll(processedRanges); + return candidate; + } + + protected void performSkipTo(K nextToken) + { + List> changedRanges = new ArrayList<>(); + + while (!ranges.isEmpty()) + { + if (ranges.peek().getCurrent().compareTo(nextToken) >= 0) + break; + + RangeIterator head = ranges.poll(); + + if (head.getMaximum().compareTo(nextToken) >= 0) + { + head.skipTo(nextToken); + changedRanges.add(head); + continue; + } + + FileUtils.closeQuietly(head); + } + + ranges.addAll(changedRanges.stream().collect(Collectors.toList())); + } + + public void close() throws IOException + { + ranges.forEach(FileUtils::closeQuietly); + } + + public static , D extends CombinedValue> Builder builder() + { + return new Builder<>(); + } + + public static , D extends CombinedValue> RangeIterator build(List> tokens) + { + return new Builder().add(tokens).build(); + } + + public static class Builder, D extends CombinedValue> extends RangeIterator.Builder + { + public Builder() + { + super(IteratorType.UNION); + } + + protected RangeIterator buildIterator() + { + return new RangeUnionIterator<>(statistics, ranges); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/TypeUtil.java b/src/java/org/apache/cassandra/index/sasi/utils/TypeUtil.java new file mode 100644 index 0000000000..8b385306f1 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/TypeUtil.java @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.serializers.MarshalException; + +public class TypeUtil +{ + public static boolean isValid(ByteBuffer term, AbstractType validator) + { + try + { + validator.validate(term); + return true; + } + catch (MarshalException e) + { + return false; + } + } + + public static ByteBuffer tryUpcast(ByteBuffer term, AbstractType validator) + { + if (term.remaining() == 0) + return null; + + try + { + if (validator instanceof Int32Type && term.remaining() == 2) + { + return Int32Type.instance.decompose((int) term.getShort(term.position())); + } + else if (validator instanceof LongType) + { + long upcastToken; + + switch (term.remaining()) + { + case 2: + upcastToken = (long) term.getShort(term.position()); + break; + + case 4: + upcastToken = (long) Int32Type.instance.compose(term); + break; + + default: + upcastToken = Long.valueOf(UTF8Type.instance.getString(term)); + } + + return LongType.instance.decompose(upcastToken); + } + else if (validator instanceof DoubleType && term.remaining() == 4) + { + return DoubleType.instance.decompose((double) FloatType.instance.compose(term)); + } + + // maybe it was a string after all + return validator.fromString(UTF8Type.instance.getString(term)); + } + catch (Exception e) + { + return null; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractPatriciaTrie.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractPatriciaTrie.java new file mode 100644 index 0000000000..b359416712 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractPatriciaTrie.java @@ -0,0 +1,1151 @@ +/* + * Copyright 2005-2010 Roger Kapsi, Sam Berlin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.util.AbstractCollection; +import java.util.AbstractSet; +import java.util.Collection; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; + +import org.apache.cassandra.index.sasi.utils.trie.Cursor.Decision; + +/** + * This class implements the base PATRICIA algorithm and everything that + * is related to the {@link Map} interface. + */ +abstract class AbstractPatriciaTrie extends AbstractTrie +{ + private static final long serialVersionUID = -2303909182832019043L; + + /** + * The root node of the {@link Trie}. + */ + final TrieEntry root = new TrieEntry<>(null, null, -1); + + /** + * Each of these fields are initialized to contain an instance of the + * appropriate view the first time this view is requested. The views are + * stateless, so there's no reason to create more than one of each. + */ + private transient volatile Set keySet; + private transient volatile Collection values; + private transient volatile Set> entrySet; + + /** + * The current size of the {@link Trie} + */ + private int size = 0; + + /** + * The number of times this {@link Trie} has been modified. + * It's used to detect concurrent modifications and fail-fast + * the {@link Iterator}s. + */ + transient int modCount = 0; + + public AbstractPatriciaTrie(KeyAnalyzer keyAnalyzer) + { + super(keyAnalyzer); + } + + public AbstractPatriciaTrie(KeyAnalyzer keyAnalyzer, Map m) + { + super(keyAnalyzer); + putAll(m); + } + + @Override + public void clear() + { + root.key = null; + root.bitIndex = -1; + root.value = null; + + root.parent = null; + root.left = root; + root.right = null; + root.predecessor = root; + + size = 0; + incrementModCount(); + } + + @Override + public int size() + { + return size; + } + + /** + * A helper method to increment the {@link Trie} size + * and the modification counter. + */ + void incrementSize() + { + size++; + incrementModCount(); + } + + /** + * A helper method to decrement the {@link Trie} size + * and increment the modification counter. + */ + void decrementSize() + { + size--; + incrementModCount(); + } + + /** + * A helper method to increment the modification counter. + */ + private void incrementModCount() + { + ++modCount; + } + + @Override + public V put(K key, V value) + { + if (key == null) + throw new NullPointerException("Key cannot be null"); + + int lengthInBits = lengthInBits(key); + + // The only place to store a key with a length + // of zero bits is the root node + if (lengthInBits == 0) + { + if (root.isEmpty()) + incrementSize(); + else + incrementModCount(); + + return root.setKeyValue(key, value); + } + + TrieEntry found = getNearestEntryForKey(key); + if (compareKeys(key, found.key)) + { + if (found.isEmpty()) // <- must be the root + incrementSize(); + else + incrementModCount(); + + return found.setKeyValue(key, value); + } + + int bitIndex = bitIndex(key, found.key); + if (!Tries.isOutOfBoundsIndex(bitIndex)) + { + if (Tries.isValidBitIndex(bitIndex)) // in 99.999...9% the case + { + /* NEW KEY+VALUE TUPLE */ + TrieEntry t = new TrieEntry<>(key, value, bitIndex); + addEntry(t); + incrementSize(); + return null; + } + else if (Tries.isNullBitKey(bitIndex)) + { + // A bits of the Key are zero. The only place to + // store such a Key is the root Node! + + /* NULL BIT KEY */ + if (root.isEmpty()) + incrementSize(); + else + incrementModCount(); + + return root.setKeyValue(key, value); + + } + else if (Tries.isEqualBitKey(bitIndex)) + { + // This is a very special and rare case. + + /* REPLACE OLD KEY+VALUE */ + if (found != root) { + incrementModCount(); + return found.setKeyValue(key, value); + } + } + } + + throw new IndexOutOfBoundsException("Failed to put: " + + key + " -> " + value + ", " + bitIndex); + } + + /** + * Adds the given {@link TrieEntry} to the {@link Trie} + */ + TrieEntry addEntry(TrieEntry entry) + { + TrieEntry current = root.left; + TrieEntry path = root; + + while(true) + { + if (current.bitIndex >= entry.bitIndex || current.bitIndex <= path.bitIndex) + { + entry.predecessor = entry; + + if (!isBitSet(entry.key, entry.bitIndex)) + { + entry.left = entry; + entry.right = current; + } + else + { + entry.left = current; + entry.right = entry; + } + + entry.parent = path; + if (current.bitIndex >= entry.bitIndex) + current.parent = entry; + + // if we inserted an uplink, set the predecessor on it + if (current.bitIndex <= path.bitIndex) + current.predecessor = entry; + + if (path == root || !isBitSet(entry.key, path.bitIndex)) + path.left = entry; + else + path.right = entry; + + return entry; + } + + path = current; + + current = !isBitSet(entry.key, current.bitIndex) + ? current.left : current.right; + } + } + + @Override + public V get(Object k) + { + TrieEntry entry = getEntry(k); + return entry != null ? entry.getValue() : null; + } + + /** + * Returns the entry associated with the specified key in the + * AbstractPatriciaTrie. Returns null if the map contains no mapping + * for this key. + * + * This may throw ClassCastException if the object is not of type K. + */ + TrieEntry getEntry(Object k) + { + K key = Tries.cast(k); + if (key == null) + return null; + + TrieEntry entry = getNearestEntryForKey(key); + return !entry.isEmpty() && compareKeys(key, entry.key) ? entry : null; + } + + @Override + public Map.Entry select(K key) + { + Reference> reference = new Reference<>(); + return !selectR(root.left, -1, key, reference) ? reference.get() : null; + } + + @Override + public Map.Entry select(K key, Cursor cursor) + { + Reference> reference = new Reference<>(); + selectR(root.left, -1, key, cursor, reference); + return reference.get(); + } + + /** + * This is equivalent to the other {@link #selectR(TrieEntry, int, + * K, Cursor, Reference)} method but without its overhead + * because we're selecting only one best matching Entry from the + * {@link Trie}. + */ + private boolean selectR(TrieEntry h, int bitIndex, final K key, final Reference> reference) + { + if (h.bitIndex <= bitIndex) + { + // If we hit the root Node and it is empty + // we have to look for an alternative best + // matching node. + if (!h.isEmpty()) + { + reference.set(h); + return false; + } + return true; + } + + if (!isBitSet(key, h.bitIndex)) + { + if (selectR(h.left, h.bitIndex, key, reference)) + { + return selectR(h.right, h.bitIndex, key, reference); + } + } + else + { + if (selectR(h.right, h.bitIndex, key, reference)) + { + return selectR(h.left, h.bitIndex, key, reference); + } + } + + return false; + } + + /** + * + */ + private boolean selectR(TrieEntry h, int bitIndex, + final K key, final Cursor cursor, + final Reference> reference) + { + if (h.bitIndex <= bitIndex) + { + if (!h.isEmpty()) + { + Decision decision = cursor.select(h); + switch(decision) + { + case REMOVE: + throw new UnsupportedOperationException("Cannot remove during select"); + + case EXIT: + reference.set(h); + return false; // exit + + case REMOVE_AND_EXIT: + TrieEntry entry = new TrieEntry<>(h.getKey(), h.getValue(), -1); + reference.set(entry); + removeEntry(h); + return false; + + case CONTINUE: + // fall through. + } + } + + return true; // continue + } + + if (!isBitSet(key, h.bitIndex)) + { + if (selectR(h.left, h.bitIndex, key, cursor, reference)) + { + return selectR(h.right, h.bitIndex, key, cursor, reference); + } + } + else + { + if (selectR(h.right, h.bitIndex, key, cursor, reference)) + { + return selectR(h.left, h.bitIndex, key, cursor, reference); + } + } + + return false; + } + + @Override + public Map.Entry traverse(Cursor cursor) + { + TrieEntry entry = nextEntry(null); + while (entry != null) + { + TrieEntry current = entry; + + Decision decision = cursor.select(current); + entry = nextEntry(current); + + switch(decision) + { + case EXIT: + return current; + + case REMOVE: + removeEntry(current); + break; // out of switch, stay in while loop + + case REMOVE_AND_EXIT: + Map.Entry value = new TrieEntry<>(current.getKey(), current.getValue(), -1); + removeEntry(current); + return value; + + case CONTINUE: // do nothing. + } + } + + return null; + } + + @Override + public boolean containsKey(Object k) + { + if (k == null) + return false; + + K key = Tries.cast(k); + TrieEntry entry = getNearestEntryForKey(key); + return !entry.isEmpty() && compareKeys(key, entry.key); + } + + @Override + public Set> entrySet() + { + if (entrySet == null) + entrySet = new EntrySet(); + + return entrySet; + } + + @Override + public Set keySet() + { + if (keySet == null) + keySet = new KeySet(); + return keySet; + } + + @Override + public Collection values() + { + if (values == null) + values = new Values(); + return values; + } + + /** + * {@inheritDoc} + * + * @throws ClassCastException if provided key is of an incompatible type + */ + @Override + public V remove(Object k) + { + if (k == null) + return null; + + K key = Tries.cast(k); + TrieEntry current = root.left; + TrieEntry path = root; + while (true) + { + if (current.bitIndex <= path.bitIndex) + { + if (!current.isEmpty() && compareKeys(key, current.key)) + { + return removeEntry(current); + } + else + { + return null; + } + } + + path = current; + current = !isBitSet(key, current.bitIndex) ? current.left : current.right; + } + } + + /** + * Returns the nearest entry for a given key. This is useful + * for finding knowing if a given key exists (and finding the value + * for it), or for inserting the key. + * + * The actual get implementation. This is very similar to + * selectR but with the exception that it might return the + * root Entry even if it's empty. + */ + TrieEntry getNearestEntryForKey(K key) + { + TrieEntry current = root.left; + TrieEntry path = root; + + while(true) + { + if (current.bitIndex <= path.bitIndex) + return current; + + path = current; + current = !isBitSet(key, current.bitIndex) ? current.left : current.right; + } + } + + /** + * Removes a single entry from the {@link Trie}. + * + * If we found a Key (Entry h) then figure out if it's + * an internal (hard to remove) or external Entry (easy + * to remove) + */ + V removeEntry(TrieEntry h) + { + if (h != root) + { + if (h.isInternalNode()) + { + removeInternalEntry(h); + } + else + { + removeExternalEntry(h); + } + } + + decrementSize(); + return h.setKeyValue(null, null); + } + + /** + * Removes an external entry from the {@link Trie}. + * + * If it's an external Entry then just remove it. + * This is very easy and straight forward. + */ + private void removeExternalEntry(TrieEntry h) + { + if (h == root) + { + throw new IllegalArgumentException("Cannot delete root Entry!"); + } + else if (!h.isExternalNode()) + { + throw new IllegalArgumentException(h + " is not an external Entry!"); + } + + TrieEntry parent = h.parent; + TrieEntry child = (h.left == h) ? h.right : h.left; + + if (parent.left == h) + { + parent.left = child; + } + else + { + parent.right = child; + } + + // either the parent is changing, or the predecessor is changing. + if (child.bitIndex > parent.bitIndex) + { + child.parent = parent; + } + else + { + child.predecessor = parent; + } + + } + + /** + * Removes an internal entry from the {@link Trie}. + * + * If it's an internal Entry then "good luck" with understanding + * this code. The Idea is essentially that Entry p takes Entry h's + * place in the trie which requires some re-wiring. + */ + private void removeInternalEntry(TrieEntry h) + { + if (h == root) + { + throw new IllegalArgumentException("Cannot delete root Entry!"); + } + else if (!h.isInternalNode()) + { + throw new IllegalArgumentException(h + " is not an internal Entry!"); + } + + TrieEntry p = h.predecessor; + + // Set P's bitIndex + p.bitIndex = h.bitIndex; + + // Fix P's parent, predecessor and child Nodes + { + TrieEntry parent = p.parent; + TrieEntry child = (p.left == h) ? p.right : p.left; + + // if it was looping to itself previously, + // it will now be pointed from it's parent + // (if we aren't removing it's parent -- + // in that case, it remains looping to itself). + // otherwise, it will continue to have the same + // predecessor. + if (p.predecessor == p && p.parent != h) + p.predecessor = p.parent; + + if (parent.left == p) + { + parent.left = child; + } + else + { + parent.right = child; + } + + if (child.bitIndex > parent.bitIndex) + { + child.parent = parent; + } + } + + // Fix H's parent and child Nodes + { + // If H is a parent of its left and right child + // then change them to P + if (h.left.parent == h) + h.left.parent = p; + + if (h.right.parent == h) + h.right.parent = p; + + // Change H's parent + if (h.parent.left == h) + { + h.parent.left = p; + } + else + { + h.parent.right = p; + } + } + + // Copy the remaining fields from H to P + //p.bitIndex = h.bitIndex; + p.parent = h.parent; + p.left = h.left; + p.right = h.right; + + // Make sure that if h was pointing to any uplinks, + // p now points to them. + if (isValidUplink(p.left, p)) + p.left.predecessor = p; + + if (isValidUplink(p.right, p)) + p.right.predecessor = p; + } + + /** + * Returns the entry lexicographically after the given entry. + * If the given entry is null, returns the first node. + */ + TrieEntry nextEntry(TrieEntry node) + { + return (node == null) ? firstEntry() : nextEntryImpl(node.predecessor, node, null); + } + + /** + * Scans for the next node, starting at the specified point, and using 'previous' + * as a hint that the last node we returned was 'previous' (so we know not to return + * it again). If 'tree' is non-null, this will limit the search to the given tree. + * + * The basic premise is that each iteration can follow the following steps: + * + * 1) Scan all the way to the left. + * a) If we already started from this node last time, proceed to Step 2. + * b) If a valid uplink is found, use it. + * c) If the result is an empty node (root not set), break the scan. + * d) If we already returned the left node, break the scan. + * + * 2) Check the right. + * a) If we already returned the right node, proceed to Step 3. + * b) If it is a valid uplink, use it. + * c) Do Step 1 from the right node. + * + * 3) Back up through the parents until we encounter find a parent + * that we're not the right child of. + * + * 4) If there's no right child of that parent, the iteration is finished. + * Otherwise continue to Step 5. + * + * 5) Check to see if the right child is a valid uplink. + * a) If we already returned that child, proceed to Step 6. + * Otherwise, use it. + * + * 6) If the right child of the parent is the parent itself, we've + * already found & returned the end of the Trie, so exit. + * + * 7) Do Step 1 on the parent's right child. + */ + TrieEntry nextEntryImpl(TrieEntry start, TrieEntry previous, TrieEntry tree) + { + TrieEntry current = start; + + // Only look at the left if this was a recursive or + // the first check, otherwise we know we've already looked + // at the left. + if (previous == null || start != previous.predecessor) + { + while (!current.left.isEmpty()) + { + // stop traversing if we've already + // returned the left of this node. + if (previous == current.left) + break; + + if (isValidUplink(current.left, current)) + return current.left; + + current = current.left; + } + } + + // If there's no data at all, exit. + if (current.isEmpty()) + return null; + + // If we've already returned the left, + // and the immediate right is null, + // there's only one entry in the Trie + // which is stored at the root. + // + // / ("") <-- root + // \_/ \ + // null <-- 'current' + // + if (current.right == null) + return null; + + // If nothing valid on the left, try the right. + if (previous != current.right) + { + // See if it immediately is valid. + if (isValidUplink(current.right, current)) + return current.right; + + // Must search on the right's side if it wasn't initially valid. + return nextEntryImpl(current.right, previous, tree); + } + + // Neither left nor right are valid, find the first parent + // whose child did not come from the right & traverse it. + while (current == current.parent.right) + { + // If we're going to traverse to above the subtree, stop. + if (current == tree) + return null; + + current = current.parent; + } + + // If we're on the top of the subtree, we can't go any higher. + if (current == tree) + return null; + + // If there's no right, the parent must be root, so we're done. + if (current.parent.right == null) + return null; + + // If the parent's right points to itself, we've found one. + if (previous != current.parent.right && isValidUplink(current.parent.right, current.parent)) + return current.parent.right; + + // If the parent's right is itself, there can't be any more nodes. + if (current.parent.right == current.parent) + return null; + + // We need to traverse down the parent's right's path. + return nextEntryImpl(current.parent.right, previous, tree); + } + + /** + * Returns the first entry the {@link Trie} is storing. + * + * This is implemented by going always to the left until + * we encounter a valid uplink. That uplink is the first key. + */ + TrieEntry firstEntry() + { + // if Trie is empty, no first node. + return isEmpty() ? null : followLeft(root); + } + + /** + * Goes left through the tree until it finds a valid node. + */ + TrieEntry followLeft(TrieEntry node) + { + while(true) + { + TrieEntry child = node.left; + // if we hit root and it didn't have a node, go right instead. + if (child.isEmpty()) + child = node.right; + + if (child.bitIndex <= node.bitIndex) + return child; + + node = child; + } + } + + /** + * Returns true if 'next' is a valid uplink coming from 'from'. + */ + static boolean isValidUplink(TrieEntry next, TrieEntry from) + { + return next != null && next.bitIndex <= from.bitIndex && !next.isEmpty(); + } + + /** + * A {@link Reference} allows us to return something through a Method's + * argument list. An alternative would be to an Array with a length of + * one (1) but that leads to compiler warnings. Computationally and memory + * wise there's no difference (except for the need to load the + * {@link Reference} Class but that happens only once). + */ + private static class Reference + { + + private E item; + + public void set(E item) + { + this.item = item; + } + + public E get() + { + return item; + } + } + + /** + * A {@link Trie} is a set of {@link TrieEntry} nodes + */ + static class TrieEntry extends BasicEntry + { + + private static final long serialVersionUID = 4596023148184140013L; + + /** The index this entry is comparing. */ + protected int bitIndex; + + /** The parent of this entry. */ + protected TrieEntry parent; + + /** The left child of this entry. */ + protected TrieEntry left; + + /** The right child of this entry. */ + protected TrieEntry right; + + /** The entry who uplinks to this entry. */ + protected TrieEntry predecessor; + + public TrieEntry(K key, V value, int bitIndex) + { + super(key, value); + + this.bitIndex = bitIndex; + + this.parent = null; + this.left = this; + this.right = null; + this.predecessor = this; + } + + /** + * Whether or not the entry is storing a key. + * Only the root can potentially be empty, all other + * nodes must have a key. + */ + public boolean isEmpty() + { + return key == null; + } + + /** + * Neither the left nor right child is a loopback + */ + public boolean isInternalNode() + { + return left != this && right != this; + } + + /** + * Either the left or right child is a loopback + */ + public boolean isExternalNode() + { + return !isInternalNode(); + } + } + + + /** + * This is a entry set view of the {@link Trie} as returned + * by {@link Map#entrySet()} + */ + private class EntrySet extends AbstractSet> + { + @Override + public Iterator> iterator() + { + return new EntryIterator(); + } + + @Override + public boolean contains(Object o) + { + if (!(o instanceof Map.Entry)) + return false; + + TrieEntry candidate = getEntry(((Map.Entry)o).getKey()); + return candidate != null && candidate.equals(o); + } + + @Override + public boolean remove(Object o) + { + int size = size(); + AbstractPatriciaTrie.this.remove(o); + return size != size(); + } + + @Override + public int size() + { + return AbstractPatriciaTrie.this.size(); + } + + @Override + public void clear() + { + AbstractPatriciaTrie.this.clear(); + } + + /** + * An {@link Iterator} that returns {@link Entry} Objects + */ + private class EntryIterator extends TrieIterator> + { + @Override + public Map.Entry next() + { + return nextEntry(); + } + } + } + + /** + * This is a key set view of the {@link Trie} as returned + * by {@link Map#keySet()} + */ + private class KeySet extends AbstractSet + { + @Override + public Iterator iterator() + { + return new KeyIterator(); + } + + @Override + public int size() + { + return AbstractPatriciaTrie.this.size(); + } + + @Override + public boolean contains(Object o) + { + return containsKey(o); + } + + @Override + public boolean remove(Object o) + { + int size = size(); + AbstractPatriciaTrie.this.remove(o); + return size != size(); + } + + @Override + public void clear() + { + AbstractPatriciaTrie.this.clear(); + } + + /** + * An {@link Iterator} that returns Key Objects + */ + private class KeyIterator extends TrieIterator + { + @Override + public K next() + { + return nextEntry().getKey(); + } + } + } + + /** + * This is a value view of the {@link Trie} as returned + * by {@link Map#values()} + */ + private class Values extends AbstractCollection + { + @Override + public Iterator iterator() + { + return new ValueIterator(); + } + + @Override + public int size() + { + return AbstractPatriciaTrie.this.size(); + } + + @Override + public boolean contains(Object o) + { + return containsValue(o); + } + + @Override + public void clear() + { + AbstractPatriciaTrie.this.clear(); + } + + @Override + public boolean remove(Object o) + { + for (Iterator it = iterator(); it.hasNext(); ) + { + V value = it.next(); + if (Tries.areEqual(value, o)) + { + it.remove(); + return true; + } + } + return false; + } + + /** + * An {@link Iterator} that returns Value Objects + */ + private class ValueIterator extends TrieIterator + { + @Override + public V next() + { + return nextEntry().getValue(); + } + } + } + + /** + * An iterator for the entries. + */ + abstract class TrieIterator implements Iterator + { + /** + * For fast-fail + */ + protected int expectedModCount = AbstractPatriciaTrie.this.modCount; + + protected TrieEntry next; // the next node to return + protected TrieEntry current; // the current entry we're on + + /** + * Starts iteration from the root + */ + protected TrieIterator() + { + next = AbstractPatriciaTrie.this.nextEntry(null); + } + + /** + * Starts iteration at the given entry + */ + protected TrieIterator(TrieEntry firstEntry) + { + next = firstEntry; + } + + /** + * Returns the next {@link TrieEntry} + */ + protected TrieEntry nextEntry() + { + if (expectedModCount != AbstractPatriciaTrie.this.modCount) + throw new ConcurrentModificationException(); + + TrieEntry e = next; + if (e == null) + throw new NoSuchElementException(); + + next = findNext(e); + current = e; + return e; + } + + /** + * @see PatriciaTrie#nextEntry(TrieEntry) + */ + protected TrieEntry findNext(TrieEntry prior) + { + return AbstractPatriciaTrie.this.nextEntry(prior); + } + + @Override + public boolean hasNext() + { + return next != null; + } + + @Override + public void remove() + { + if (current == null) + throw new IllegalStateException(); + + if (expectedModCount != AbstractPatriciaTrie.this.modCount) + throw new ConcurrentModificationException(); + + TrieEntry node = current; + current = null; + AbstractPatriciaTrie.this.removeEntry(node); + + expectedModCount = AbstractPatriciaTrie.this.modCount; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractTrie.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractTrie.java new file mode 100644 index 0000000000..0bf9c205e6 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/AbstractTrie.java @@ -0,0 +1,230 @@ +/* + * Copyright 2005-2010 Roger Kapsi, Sam Berlin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.io.Serializable; +import java.util.AbstractMap; +import java.util.Map; + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +/** + * This class provides some basic {@link Trie} functionality and + * utility methods for actual {@link Trie} implementations. + */ +abstract class AbstractTrie extends AbstractMap implements Serializable, Trie +{ + private static final long serialVersionUID = -6358111100045408883L; + + /** + * The {@link KeyAnalyzer} that's being used to build the + * PATRICIA {@link Trie} + */ + protected final KeyAnalyzer keyAnalyzer; + + /** + * Constructs a new {@link Trie} using the given {@link KeyAnalyzer} + */ + public AbstractTrie(KeyAnalyzer keyAnalyzer) + { + this.keyAnalyzer = Tries.notNull(keyAnalyzer, "keyAnalyzer"); + } + + @Override + public K selectKey(K key) + { + Map.Entry entry = select(key); + return entry != null ? entry.getKey() : null; + } + + @Override + public V selectValue(K key) + { + Map.Entry entry = select(key); + return entry != null ? entry.getValue() : null; + } + + @Override + public String toString() + { + StringBuilder buffer = new StringBuilder(); + buffer.append("Trie[").append(size()).append("]={\n"); + for (Map.Entry entry : entrySet()) { + buffer.append(" ").append(entry).append("\n"); + } + buffer.append("}\n"); + return buffer.toString(); + } + + /** + * Returns the length of the given key in bits + * + * @see KeyAnalyzer#lengthInBits(Object) + */ + final int lengthInBits(K key) + { + return key == null ? 0 : keyAnalyzer.lengthInBits(key); + } + + /** + * Returns whether or not the given bit on the + * key is set or false if the key is null. + * + * @see KeyAnalyzer#isBitSet(Object, int) + */ + final boolean isBitSet(K key, int bitIndex) + { + return key != null && keyAnalyzer.isBitSet(key, bitIndex); + } + + /** + * Utility method for calling {@link KeyAnalyzer#bitIndex(Object, Object)} + */ + final int bitIndex(K key, K otherKey) + { + if (key != null && otherKey != null) + { + return keyAnalyzer.bitIndex(key, otherKey); + } + else if (key != null) + { + return bitIndex(key); + } + else if (otherKey != null) + { + return bitIndex(otherKey); + } + + return KeyAnalyzer.NULL_BIT_KEY; + } + + private int bitIndex(K key) + { + int lengthInBits = lengthInBits(key); + for (int i = 0; i < lengthInBits; i++) + { + if (isBitSet(key, i)) + return i; + } + + return KeyAnalyzer.NULL_BIT_KEY; + } + + /** + * An utility method for calling {@link KeyAnalyzer#compare(Object, Object)} + */ + final boolean compareKeys(K key, K other) + { + if (key == null) + { + return (other == null); + } + else if (other == null) + { + return false; + } + + return keyAnalyzer.compare(key, other) == 0; + } + + /** + * A basic implementation of {@link Entry} + */ + abstract static class BasicEntry implements Map.Entry, Serializable + { + private static final long serialVersionUID = -944364551314110330L; + + protected K key; + + protected V value; + + private transient int hashCode = 0; + + public BasicEntry(K key, V value) + { + this.key = key; + this.value = value; + } + + /** + * Replaces the current key and value with the provided + * key & value + */ + public V setKeyValue(K key, V value) + { + this.key = key; + this.hashCode = 0; + return setValue(value); + } + + @Override + public K getKey() + { + return key; + } + + @Override + public V getValue() + { + return value; + } + + @Override + public V setValue(V value) + { + V previous = this.value; + this.value = value; + return previous; + } + + @Override + public int hashCode() + { + if (hashCode == 0) + hashCode = (key != null ? key.hashCode() : 0); + return hashCode; + } + + @Override + public boolean equals(Object o) + { + if (o == this) + { + return true; + } + else if (!(o instanceof Map.Entry)) + { + return false; + } + + Map.Entry other = (Map.Entry)o; + return Tries.areEqual(key, other.getKey()) && Tries.areEqual(value, other.getValue()); + } + + @Override + public String toString() + { + return key + "=" + value; + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/Cursor.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/Cursor.java new file mode 100644 index 0000000000..513fae0033 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/Cursor.java @@ -0,0 +1,83 @@ +/* + * Copyright 2005-2010 Roger Kapsi, Sam Berlin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.util.Map; +import java.util.Map.Entry; + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +/** + * A {@link Cursor} can be used to traverse a {@link Trie}, visit each node + * step by step and make {@link Decision}s on each step how to continue with + * traversing the {@link Trie}. + */ +public interface Cursor +{ + + /** + * The {@link Decision} tells the {@link Cursor} what to do on each step + * while traversing the {@link Trie}. + * + * NOTE: Not all operations that work with a {@link Cursor} support all + * {@link Decision} types + */ + enum Decision + { + + /** + * Exit the traverse operation + */ + EXIT, + + /** + * Continue with the traverse operation + */ + CONTINUE, + + /** + * Remove the previously returned element + * from the {@link Trie} and continue + */ + REMOVE, + + /** + * Remove the previously returned element + * from the {@link Trie} and exit from the + * traverse operation + */ + REMOVE_AND_EXIT + } + + /** + * Called for each {@link Entry} in the {@link Trie}. Return + * {@link Decision#EXIT} to finish the {@link Trie} operation, + * {@link Decision#CONTINUE} to go to the next {@link Entry}, + * {@link Decision#REMOVE} to remove the {@link Entry} and + * continue iterating or {@link Decision#REMOVE_AND_EXIT} to + * remove the {@link Entry} and stop iterating. + * + * Note: Not all operations support {@link Decision#REMOVE}. + */ + Decision select(Map.Entry entry); +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/KeyAnalyzer.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/KeyAnalyzer.java new file mode 100644 index 0000000000..9cab4ae4f5 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/KeyAnalyzer.java @@ -0,0 +1,73 @@ +/* + * Copyright 2010 Roger Kapsi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.util.Comparator; + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +/** + * The {@link KeyAnalyzer} provides bit-level access to keys + * for the {@link PatriciaTrie}. + */ +public interface KeyAnalyzer extends Comparator +{ + /** + * Returned by {@link #bitIndex(Object, Object)} if a key's + * bits were all zero (0). + */ + int NULL_BIT_KEY = -1; + + /** + * Returned by {@link #bitIndex(Object, Object)} if a the + * bits of two keys were all equal. + */ + int EQUAL_BIT_KEY = -2; + + /** + * Returned by {@link #bitIndex(Object, Object)} if a keys + * indices are out of bounds. + */ + int OUT_OF_BOUNDS_BIT_KEY = -3; + + /** + * Returns the key's length in bits. + */ + int lengthInBits(K key); + + /** + * Returns {@code true} if a key's bit it set at the given index. + */ + boolean isBitSet(K key, int bitIndex); + + /** + * Returns the index of the first bit that is different in the two keys. + */ + int bitIndex(K key, K otherKey); + + /** + * Returns {@code true} if the second argument is a + * prefix of the first argument. + */ + boolean isPrefix(K key, K prefix); +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/PatriciaTrie.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/PatriciaTrie.java new file mode 100644 index 0000000000..3c672ecafe --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/PatriciaTrie.java @@ -0,0 +1,1261 @@ +/* + * Copyright 2005-2010 Roger Kapsi, Sam Berlin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.io.Serializable; +import java.util.*; + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +/** + *

    PATRICIA {@link Trie}

    + * + * Practical Algorithm to Retrieve Information Coded in Alphanumeric + * + *

    A PATRICIA {@link Trie} is a compressed {@link Trie}. Instead of storing + * all data at the edges of the {@link Trie} (and having empty internal nodes), + * PATRICIA stores data in every node. This allows for very efficient traversal, + * insert, delete, predecessor, successor, prefix, range, and {@link #select(Object)} + * operations. All operations are performed at worst in O(K) time, where K + * is the number of bits in the largest item in the tree. In practice, + * operations actually take O(A(K)) time, where A(K) is the average number of + * bits of all items in the tree. + * + *

    Most importantly, PATRICIA requires very few comparisons to keys while + * doing any operation. While performing a lookup, each comparison (at most + * K of them, described above) will perform a single bit comparison against + * the given key, instead of comparing the entire key to another key. + * + *

    The {@link Trie} can return operations in lexicographical order using the + * {@link #traverse(Cursor)}, 'prefix', 'submap', or 'iterator' methods. The + * {@link Trie} can also scan for items that are 'bitwise' (using an XOR + * metric) by the 'select' method. Bitwise closeness is determined by the + * {@link KeyAnalyzer} returning true or false for a bit being set or not in + * a given key. + * + *

    Any methods here that take an {@link Object} argument may throw a + * {@link ClassCastException} if the method is expecting an instance of K + * and it isn't K. + * + * @see Radix Tree + * @see PATRICIA + * @see Crit-Bit Tree + * + * @author Roger Kapsi + * @author Sam Berlin + */ +public class PatriciaTrie extends AbstractPatriciaTrie implements Serializable +{ + private static final long serialVersionUID = -2246014692353432660L; + + public PatriciaTrie(KeyAnalyzer keyAnalyzer) + { + super(keyAnalyzer); + } + + public PatriciaTrie(KeyAnalyzer keyAnalyzer, Map m) + { + super(keyAnalyzer, m); + } + + @Override + public Comparator comparator() + { + return keyAnalyzer; + } + + @Override + public SortedMap prefixMap(K prefix) + { + return lengthInBits(prefix) == 0 ? this : new PrefixRangeMap(prefix); + } + + @Override + public K firstKey() + { + return firstEntry().getKey(); + } + + @Override + public K lastKey() + { + TrieEntry entry = lastEntry(); + return entry != null ? entry.getKey() : null; + } + + @Override + public SortedMap headMap(K toKey) + { + return new RangeEntryMap(null, toKey); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) + { + return new RangeEntryMap(fromKey, toKey); + } + + @Override + public SortedMap tailMap(K fromKey) + { + return new RangeEntryMap(fromKey, null); + } + + /** + * Returns an entry strictly higher than the given key, + * or null if no such entry exists. + */ + private TrieEntry higherEntry(K key) + { + // TODO: Cleanup so that we don't actually have to add/remove from the + // tree. (We do it here because there are other well-defined + // functions to perform the search.) + int lengthInBits = lengthInBits(key); + + if (lengthInBits == 0) + { + if (!root.isEmpty()) + { + // If data in root, and more after -- return it. + return size() > 1 ? nextEntry(root) : null; + } + else + { + // Root is empty & we want something after empty, return first. + return firstEntry(); + } + } + + TrieEntry found = getNearestEntryForKey(key); + if (compareKeys(key, found.key)) + return nextEntry(found); + + int bitIndex = bitIndex(key, found.key); + if (Tries.isValidBitIndex(bitIndex)) + { + return replaceCeil(key, bitIndex); + } + else if (Tries.isNullBitKey(bitIndex)) + { + if (!root.isEmpty()) + { + return firstEntry(); + } + else if (size() > 1) + { + return nextEntry(firstEntry()); + } + else + { + return null; + } + } + else if (Tries.isEqualBitKey(bitIndex)) + { + return nextEntry(found); + } + + // we should have exited above. + throw new IllegalStateException("invalid lookup: " + key); + } + + /** + * Returns a key-value mapping associated with the least key greater + * than or equal to the given key, or null if there is no such key. + */ + TrieEntry ceilingEntry(K key) + { + // Basically: + // Follow the steps of adding an entry, but instead... + // + // - If we ever encounter a situation where we found an equal + // key, we return it immediately. + // + // - If we hit an empty root, return the first iterable item. + // + // - If we have to add a new item, we temporarily add it, + // find the successor to it, then remove the added item. + // + // These steps ensure that the returned value is either the + // entry for the key itself, or the first entry directly after + // the key. + + // TODO: Cleanup so that we don't actually have to add/remove from the + // tree. (We do it here because there are other well-defined + // functions to perform the search.) + int lengthInBits = lengthInBits(key); + + if (lengthInBits == 0) + { + if (!root.isEmpty()) + { + return root; + } + else + { + return firstEntry(); + } + } + + TrieEntry found = getNearestEntryForKey(key); + if (compareKeys(key, found.key)) + return found; + + int bitIndex = bitIndex(key, found.key); + if (Tries.isValidBitIndex(bitIndex)) + { + return replaceCeil(key, bitIndex); + } + else if (Tries.isNullBitKey(bitIndex)) + { + if (!root.isEmpty()) + { + return root; + } + else + { + return firstEntry(); + } + } + else if (Tries.isEqualBitKey(bitIndex)) + { + return found; + } + + // we should have exited above. + throw new IllegalStateException("invalid lookup: " + key); + } + + private TrieEntry replaceCeil(K key, int bitIndex) + { + TrieEntry added = new TrieEntry<>(key, null, bitIndex); + addEntry(added); + incrementSize(); // must increment because remove will decrement + TrieEntry ceil = nextEntry(added); + removeEntry(added); + modCount -= 2; // we didn't really modify it. + return ceil; + } + + private TrieEntry replaceLower(K key, int bitIndex) + { + TrieEntry added = new TrieEntry<>(key, null, bitIndex); + addEntry(added); + incrementSize(); // must increment because remove will decrement + TrieEntry prior = previousEntry(added); + removeEntry(added); + modCount -= 2; // we didn't really modify it. + return prior; + } + + /** + * Returns a key-value mapping associated with the greatest key + * strictly less than the given key, or null if there is no such key. + */ + TrieEntry lowerEntry(K key) + { + // Basically: + // Follow the steps of adding an entry, but instead... + // + // - If we ever encounter a situation where we found an equal + // key, we return it's previousEntry immediately. + // + // - If we hit root (empty or not), return null. + // + // - If we have to add a new item, we temporarily add it, + // find the previousEntry to it, then remove the added item. + // + // These steps ensure that the returned value is always just before + // the key or null (if there was nothing before it). + + // TODO: Cleanup so that we don't actually have to add/remove from the + // tree. (We do it here because there are other well-defined + // functions to perform the search.) + int lengthInBits = lengthInBits(key); + + if (lengthInBits == 0) + return null; // there can never be anything before root. + + TrieEntry found = getNearestEntryForKey(key); + if (compareKeys(key, found.key)) + return previousEntry(found); + + int bitIndex = bitIndex(key, found.key); + if (Tries.isValidBitIndex(bitIndex)) + { + return replaceLower(key, bitIndex); + } + else if (Tries.isNullBitKey(bitIndex)) + { + return null; + } + else if (Tries.isEqualBitKey(bitIndex)) + { + return previousEntry(found); + } + + // we should have exited above. + throw new IllegalStateException("invalid lookup: " + key); + } + + /** + * Returns a key-value mapping associated with the greatest key + * less than or equal to the given key, or null if there is no such key. + */ + TrieEntry floorEntry(K key) { + // TODO: Cleanup so that we don't actually have to add/remove from the + // tree. (We do it here because there are other well-defined + // functions to perform the search.) + int lengthInBits = lengthInBits(key); + + if (lengthInBits == 0) + { + return !root.isEmpty() ? root : null; + } + + TrieEntry found = getNearestEntryForKey(key); + if (compareKeys(key, found.key)) + return found; + + int bitIndex = bitIndex(key, found.key); + if (Tries.isValidBitIndex(bitIndex)) + { + return replaceLower(key, bitIndex); + } + else if (Tries.isNullBitKey(bitIndex)) + { + if (!root.isEmpty()) + { + return root; + } + else + { + return null; + } + } + else if (Tries.isEqualBitKey(bitIndex)) + { + return found; + } + + // we should have exited above. + throw new IllegalStateException("invalid lookup: " + key); + } + + /** + * Finds the subtree that contains the prefix. + * + * This is very similar to getR but with the difference that + * we stop the lookup if h.bitIndex > lengthInBits. + */ + private TrieEntry subtree(K prefix) + { + int lengthInBits = lengthInBits(prefix); + + TrieEntry current = root.left; + TrieEntry path = root; + while(true) + { + if (current.bitIndex <= path.bitIndex || lengthInBits < current.bitIndex) + break; + + path = current; + current = !isBitSet(prefix, current.bitIndex) + ? current.left : current.right; + } + + // Make sure the entry is valid for a subtree. + TrieEntry entry = current.isEmpty() ? path : current; + + // If entry is root, it can't be empty. + if (entry.isEmpty()) + return null; + + // if root && length of root is less than length of lookup, + // there's nothing. + // (this prevents returning the whole subtree if root has an empty + // string and we want to lookup things with "\0") + if (entry == root && lengthInBits(entry.getKey()) < lengthInBits) + return null; + + // Found key's length-th bit differs from our key + // which means it cannot be the prefix... + if (isBitSet(prefix, lengthInBits) != isBitSet(entry.key, lengthInBits)) + return null; + + // ... or there are less than 'length' equal bits + int bitIndex = bitIndex(prefix, entry.key); + return (bitIndex >= 0 && bitIndex < lengthInBits) ? null : entry; + } + + /** + * Returns the last entry the {@link Trie} is storing. + * + *

    This is implemented by going always to the right until + * we encounter a valid uplink. That uplink is the last key. + */ + private TrieEntry lastEntry() + { + return followRight(root.left); + } + + /** + * Traverses down the right path until it finds an uplink. + */ + private TrieEntry followRight(TrieEntry node) + { + // if Trie is empty, no last entry. + if (node.right == null) + return null; + + // Go as far right as possible, until we encounter an uplink. + while (node.right.bitIndex > node.bitIndex) + { + node = node.right; + } + + return node.right; + } + + /** + * Returns the node lexicographically before the given node (or null if none). + * + * This follows four simple branches: + * - If the uplink that returned us was a right uplink: + * - If predecessor's left is a valid uplink from predecessor, return it. + * - Else, follow the right path from the predecessor's left. + * - If the uplink that returned us was a left uplink: + * - Loop back through parents until we encounter a node where + * node != node.parent.left. + * - If node.parent.left is uplink from node.parent: + * - If node.parent.left is not root, return it. + * - If it is root & root isEmpty, return null. + * - If it is root & root !isEmpty, return root. + * - If node.parent.left is not uplink from node.parent: + * - Follow right path for first right child from node.parent.left + * + * @param start the start entry + */ + private TrieEntry previousEntry(TrieEntry start) + { + if (start.predecessor == null) + throw new IllegalArgumentException("must have come from somewhere!"); + + if (start.predecessor.right == start) + { + return isValidUplink(start.predecessor.left, start.predecessor) + ? start.predecessor.left + : followRight(start.predecessor.left); + } + + TrieEntry node = start.predecessor; + while (node.parent != null && node == node.parent.left) + { + node = node.parent; + } + + if (node.parent == null) // can be null if we're looking up root. + return null; + + if (isValidUplink(node.parent.left, node.parent)) + { + if (node.parent.left == root) + { + return root.isEmpty() ? null : root; + } + else + { + return node.parent.left; + } + } + else + { + return followRight(node.parent.left); + } + } + + /** + * Returns the entry lexicographically after the given entry. + * If the given entry is null, returns the first node. + * + * This will traverse only within the subtree. If the given node + * is not within the subtree, this will have undefined results. + */ + private TrieEntry nextEntryInSubtree(TrieEntry node, TrieEntry parentOfSubtree) + { + return (node == null) ? firstEntry() : nextEntryImpl(node.predecessor, node, parentOfSubtree); + } + + private boolean isPrefix(K key, K prefix) + { + return keyAnalyzer.isPrefix(key, prefix); + } + + /** + * A range view of the {@link Trie} + */ + private abstract class RangeMap extends AbstractMap implements SortedMap + { + /** + * The {@link #entrySet()} view + */ + private transient volatile Set> entrySet; + + /** + * Creates and returns an {@link #entrySet()} + * view of the {@link RangeMap} + */ + protected abstract Set> createEntrySet(); + + /** + * Returns the FROM Key + */ + protected abstract K getFromKey(); + + /** + * Whether or not the {@link #getFromKey()} is in the range + */ + protected abstract boolean isFromInclusive(); + + /** + * Returns the TO Key + */ + protected abstract K getToKey(); + + /** + * Whether or not the {@link #getToKey()} is in the range + */ + protected abstract boolean isToInclusive(); + + + @Override + public Comparator comparator() + { + return PatriciaTrie.this.comparator(); + } + + @Override + public boolean containsKey(Object key) + { + return inRange(Tries.cast(key)) && PatriciaTrie.this.containsKey(key); + } + + @Override + public V remove(Object key) + { + return (!inRange(Tries.cast(key))) ? null : PatriciaTrie.this.remove(key); + } + + @Override + public V get(Object key) + { + return (!inRange(Tries.cast(key))) ? null : PatriciaTrie.this.get(key); + } + + @Override + public V put(K key, V value) + { + if (!inRange(key)) + throw new IllegalArgumentException("Key is out of range: " + key); + + return PatriciaTrie.this.put(key, value); + } + + @Override + public Set> entrySet() + { + if (entrySet == null) + entrySet = createEntrySet(); + return entrySet; + } + + @Override + public SortedMap subMap(K fromKey, K toKey) + { + if (!inRange2(fromKey)) + throw new IllegalArgumentException("FromKey is out of range: " + fromKey); + + if (!inRange2(toKey)) + throw new IllegalArgumentException("ToKey is out of range: " + toKey); + + return createRangeMap(fromKey, isFromInclusive(), toKey, isToInclusive()); + } + + @Override + public SortedMap headMap(K toKey) + { + if (!inRange2(toKey)) + throw new IllegalArgumentException("ToKey is out of range: " + toKey); + + return createRangeMap(getFromKey(), isFromInclusive(), toKey, isToInclusive()); + } + + @Override + public SortedMap tailMap(K fromKey) + { + if (!inRange2(fromKey)) + throw new IllegalArgumentException("FromKey is out of range: " + fromKey); + + return createRangeMap(fromKey, isFromInclusive(), getToKey(), isToInclusive()); + } + + /** + * Returns true if the provided key is greater than TO and + * less than FROM + */ + protected boolean inRange(K key) + { + K fromKey = getFromKey(); + K toKey = getToKey(); + + return (fromKey == null || inFromRange(key, false)) + && (toKey == null || inToRange(key, false)); + } + + /** + * This form allows the high endpoint (as well as all legit keys) + */ + protected boolean inRange2(K key) + { + K fromKey = getFromKey(); + K toKey = getToKey(); + + return (fromKey == null || inFromRange(key, false)) + && (toKey == null || inToRange(key, true)); + } + + /** + * Returns true if the provided key is in the FROM range + * of the {@link RangeMap} + */ + protected boolean inFromRange(K key, boolean forceInclusive) + { + K fromKey = getFromKey(); + boolean fromInclusive = isFromInclusive(); + + int ret = keyAnalyzer.compare(key, fromKey); + return (fromInclusive || forceInclusive) ? ret >= 0 : ret > 0; + } + + /** + * Returns true if the provided key is in the TO range + * of the {@link RangeMap} + */ + protected boolean inToRange(K key, boolean forceInclusive) + { + K toKey = getToKey(); + boolean toInclusive = isToInclusive(); + + int ret = keyAnalyzer.compare(key, toKey); + return (toInclusive || forceInclusive) ? ret <= 0 : ret < 0; + } + + /** + * Creates and returns a sub-range view of the current {@link RangeMap} + */ + protected abstract SortedMap createRangeMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive); + } + + /** + * A {@link RangeMap} that deals with {@link Entry}s + */ + private class RangeEntryMap extends RangeMap + { + /** + * The key to start from, null if the beginning. + */ + protected final K fromKey; + + /** + * The key to end at, null if till the end. + */ + protected final K toKey; + + /** + * Whether or not the 'from' is inclusive. + */ + protected final boolean fromInclusive; + + /** + * Whether or not the 'to' is inclusive. + */ + protected final boolean toInclusive; + + /** + * Creates a {@link RangeEntryMap} with the fromKey included and + * the toKey excluded from the range + */ + protected RangeEntryMap(K fromKey, K toKey) + { + this(fromKey, true, toKey, false); + } + + /** + * Creates a {@link RangeEntryMap} + */ + protected RangeEntryMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) + { + if (fromKey == null && toKey == null) + throw new IllegalArgumentException("must have a from or to!"); + + if (fromKey != null && toKey != null && keyAnalyzer.compare(fromKey, toKey) > 0) + throw new IllegalArgumentException("fromKey > toKey"); + + this.fromKey = fromKey; + this.fromInclusive = fromInclusive; + this.toKey = toKey; + this.toInclusive = toInclusive; + } + + + @Override + public K firstKey() + { + Map.Entry e = fromKey == null + ? firstEntry() + : fromInclusive ? ceilingEntry(fromKey) : higherEntry(fromKey); + + K first = e != null ? e.getKey() : null; + if (e == null || toKey != null && !inToRange(first, false)) + throw new NoSuchElementException(); + + return first; + } + + + @Override + public K lastKey() + { + Map.Entry e = toKey == null + ? lastEntry() + : toInclusive ? floorEntry(toKey) : lowerEntry(toKey); + + K last = e != null ? e.getKey() : null; + if (e == null || fromKey != null && !inFromRange(last, false)) + throw new NoSuchElementException(); + + return last; + } + + @Override + protected Set> createEntrySet() + { + return new RangeEntrySet(this); + } + + @Override + public K getFromKey() + { + return fromKey; + } + + @Override + public K getToKey() + { + return toKey; + } + + @Override + public boolean isFromInclusive() + { + return fromInclusive; + } + + @Override + public boolean isToInclusive() + { + return toInclusive; + } + + @Override + protected SortedMap createRangeMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) + { + return new RangeEntryMap(fromKey, fromInclusive, toKey, toInclusive); + } + } + + /** + * A {@link Set} view of a {@link RangeMap} + */ + private class RangeEntrySet extends AbstractSet> + { + + private final RangeMap delegate; + + private int size = -1; + + private int expectedModCount = -1; + + /** + * Creates a {@link RangeEntrySet} + */ + public RangeEntrySet(RangeMap delegate) + { + if (delegate == null) + throw new NullPointerException("delegate"); + + this.delegate = delegate; + } + + @Override + public Iterator> iterator() + { + K fromKey = delegate.getFromKey(); + K toKey = delegate.getToKey(); + + TrieEntry first = fromKey == null ? firstEntry() : ceilingEntry(fromKey); + TrieEntry last = null; + if (toKey != null) + last = ceilingEntry(toKey); + + return new EntryIterator(first, last); + } + + @Override + public int size() + { + if (size == -1 || expectedModCount != PatriciaTrie.this.modCount) + { + size = 0; + + for (Iterator it = iterator(); it.hasNext(); it.next()) + { + ++size; + } + + expectedModCount = PatriciaTrie.this.modCount; + } + + return size; + } + + @Override + public boolean isEmpty() + { + return !iterator().hasNext(); + } + + @Override + public boolean contains(Object o) + { + if (!(o instanceof Map.Entry)) + return false; + + @SuppressWarnings("unchecked") + Map.Entry entry = (Map.Entry) o; + K key = entry.getKey(); + if (!delegate.inRange(key)) + return false; + + TrieEntry node = getEntry(key); + return node != null && Tries.areEqual(node.getValue(), entry.getValue()); + } + + @Override + public boolean remove(Object o) + { + if (!(o instanceof Map.Entry)) + return false; + + @SuppressWarnings("unchecked") + Map.Entry entry = (Map.Entry) o; + K key = entry.getKey(); + if (!delegate.inRange(key)) + return false; + + TrieEntry node = getEntry(key); + if (node != null && Tries.areEqual(node.getValue(), entry.getValue())) + { + removeEntry(node); + return true; + } + + return false; + } + + /** + * An {@link Iterator} for {@link RangeEntrySet}s. + */ + private final class EntryIterator extends TrieIterator> + { + private final K excludedKey; + + /** + * Creates a {@link EntryIterator} + */ + private EntryIterator(TrieEntry first, TrieEntry last) + { + super(first); + this.excludedKey = (last != null ? last.getKey() : null); + } + + @Override + public boolean hasNext() + { + return next != null && !Tries.areEqual(next.key, excludedKey); + } + + @Override + public Map.Entry next() + { + if (next == null || Tries.areEqual(next.key, excludedKey)) + throw new NoSuchElementException(); + + return nextEntry(); + } + } + } + + /** + * A submap used for prefix views over the {@link Trie}. + */ + private class PrefixRangeMap extends RangeMap + { + + private final K prefix; + + private K fromKey = null; + + private K toKey = null; + + private int expectedModCount = -1; + + private int size = -1; + + /** + * Creates a {@link PrefixRangeMap} + */ + private PrefixRangeMap(K prefix) + { + this.prefix = prefix; + } + + /** + * This method does two things. It determinates the FROM + * and TO range of the {@link PrefixRangeMap} and the number + * of elements in the range. This method must be called every + * time the {@link Trie} has changed. + */ + private int fixup() + { + // The trie has changed since we last + // found our toKey / fromKey + if (size == - 1 || PatriciaTrie.this.modCount != expectedModCount) + { + Iterator> it = entrySet().iterator(); + size = 0; + + Map.Entry entry = null; + if (it.hasNext()) + { + entry = it.next(); + size = 1; + } + + fromKey = entry == null ? null : entry.getKey(); + if (fromKey != null) + { + TrieEntry prior = previousEntry((TrieEntry)entry); + fromKey = prior == null ? null : prior.getKey(); + } + + toKey = fromKey; + + while (it.hasNext()) + { + ++size; + entry = it.next(); + } + + toKey = entry == null ? null : entry.getKey(); + + if (toKey != null) + { + entry = nextEntry((TrieEntry)entry); + toKey = entry == null ? null : entry.getKey(); + } + + expectedModCount = PatriciaTrie.this.modCount; + } + + return size; + } + + @Override + public K firstKey() + { + fixup(); + + Map.Entry e = fromKey == null ? firstEntry() : higherEntry(fromKey); + K first = e != null ? e.getKey() : null; + if (e == null || !isPrefix(first, prefix)) + throw new NoSuchElementException(); + + return first; + } + + @Override + public K lastKey() + { + fixup(); + + Map.Entry e = toKey == null ? lastEntry() : lowerEntry(toKey); + K last = e != null ? e.getKey() : null; + if (e == null || !isPrefix(last, prefix)) + throw new NoSuchElementException(); + + return last; + } + + /** + * Returns true if this {@link PrefixRangeMap}'s key is a prefix + * of the provided key. + */ + @Override + protected boolean inRange(K key) + { + return isPrefix(key, prefix); + } + + /** + * Same as {@link #inRange(Object)} + */ + @Override + protected boolean inRange2(K key) + { + return inRange(key); + } + + /** + * Returns true if the provided Key is in the FROM range + * of the {@link PrefixRangeMap} + */ + @Override + protected boolean inFromRange(K key, boolean forceInclusive) + { + return isPrefix(key, prefix); + } + + /** + * Returns true if the provided Key is in the TO range + * of the {@link PrefixRangeMap} + */ + @Override + protected boolean inToRange(K key, boolean forceInclusive) + { + return isPrefix(key, prefix); + } + + @Override + protected Set> createEntrySet() + { + return new PrefixRangeEntrySet(this); + } + + @Override + public K getFromKey() + { + return fromKey; + } + + @Override + public K getToKey() + { + return toKey; + } + + @Override + public boolean isFromInclusive() + { + return false; + } + + @Override + public boolean isToInclusive() + { + return false; + } + + @Override + protected SortedMap createRangeMap(K fromKey, boolean fromInclusive, + K toKey, boolean toInclusive) + { + return new RangeEntryMap(fromKey, fromInclusive, toKey, toInclusive); + } + } + + /** + * A prefix {@link RangeEntrySet} view of the {@link Trie} + */ + private final class PrefixRangeEntrySet extends RangeEntrySet + { + private final PrefixRangeMap delegate; + + private TrieEntry prefixStart; + + private int expectedModCount = -1; + + /** + * Creates a {@link PrefixRangeEntrySet} + */ + public PrefixRangeEntrySet(PrefixRangeMap delegate) + { + super(delegate); + this.delegate = delegate; + } + + @Override + public int size() + { + return delegate.fixup(); + } + + @Override + public Iterator> iterator() + { + if (PatriciaTrie.this.modCount != expectedModCount) + { + prefixStart = subtree(delegate.prefix); + expectedModCount = PatriciaTrie.this.modCount; + } + + if (prefixStart == null) + { + Set> empty = Collections.emptySet(); + return empty.iterator(); + } + else if (lengthInBits(delegate.prefix) >= prefixStart.bitIndex) + { + return new SingletonIterator(prefixStart); + } + else + { + return new EntryIterator(prefixStart, delegate.prefix); + } + } + + /** + * An {@link Iterator} that holds a single {@link TrieEntry}. + */ + private final class SingletonIterator implements Iterator> + { + private final TrieEntry entry; + + private int hit = 0; + + public SingletonIterator(TrieEntry entry) + { + this.entry = entry; + } + + @Override + public boolean hasNext() + { + return hit == 0; + } + + @Override + public Map.Entry next() + { + if (hit != 0) + throw new NoSuchElementException(); + + ++hit; + return entry; + } + + + @Override + public void remove() + { + if (hit != 1) + throw new IllegalStateException(); + + ++hit; + PatriciaTrie.this.removeEntry(entry); + } + } + + /** + * An {@link Iterator} for iterating over a prefix search. + */ + private final class EntryIterator extends TrieIterator> + { + // values to reset the subtree if we remove it. + protected final K prefix; + protected boolean lastOne; + + protected TrieEntry subtree; // the subtree to search within + + /** + * Starts iteration at the given entry & search only + * within the given subtree. + */ + EntryIterator(TrieEntry startScan, K prefix) + { + subtree = startScan; + next = PatriciaTrie.this.followLeft(startScan); + this.prefix = prefix; + } + + @Override + public Map.Entry next() + { + Map.Entry entry = nextEntry(); + if (lastOne) + next = null; + return entry; + } + + @Override + protected TrieEntry findNext(TrieEntry prior) + { + return PatriciaTrie.this.nextEntryInSubtree(prior, subtree); + } + + @Override + public void remove() + { + // If the current entry we're removing is the subtree + // then we need to find a new subtree parent. + boolean needsFixing = false; + int bitIdx = subtree.bitIndex; + if (current == subtree) + needsFixing = true; + + super.remove(); + + // If the subtree changed its bitIndex or we + // removed the old subtree, get a new one. + if (bitIdx != subtree.bitIndex || needsFixing) + subtree = subtree(prefix); + + // If the subtree's bitIndex is less than the + // length of our prefix, it's the last item + // in the prefix tree. + if (lengthInBits(prefix) >= subtree.bitIndex) + lastOne = true; + } + } + } +} \ No newline at end of file diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/Trie.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/Trie.java new file mode 100644 index 0000000000..44809f3f8c --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/Trie.java @@ -0,0 +1,152 @@ +/* + * Copyright 2005-2010 Roger Kapsi, Sam Berlin + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +import java.util.Map; +import java.util.SortedMap; + +import org.apache.cassandra.index.sasi.utils.trie.Cursor.Decision; + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +/** + * Defines the interface for a prefix tree, an ordered tree data structure. For + * more information, see Tries. + * + * @author Roger Kapsi + * @author Sam Berlin + */ +public interface Trie extends SortedMap +{ + /** + * Returns the {@link Map.Entry} whose key is closest in a bitwise XOR + * metric to the given key. This is NOT lexicographic closeness. + * For example, given the keys: + * + *

      + *
    1. D = 1000100 + *
    2. H = 1001000 + *
    3. L = 1001100 + *
    + * + * If the {@link Trie} contained 'H' and 'L', a lookup of 'D' would + * return 'L', because the XOR distance between D & L is smaller + * than the XOR distance between D & H. + * + * @return The {@link Map.Entry} whose key is closest in a bitwise XOR metric + * to the provided key. + */ + Map.Entry select(K key); + + /** + * Returns the key that is closest in a bitwise XOR metric to the + * provided key. This is NOT lexicographic closeness! + * + * For example, given the keys: + * + *
      + *
    1. D = 1000100 + *
    2. H = 1001000 + *
    3. L = 1001100 + *
    + * + * If the {@link Trie} contained 'H' and 'L', a lookup of 'D' would + * return 'L', because the XOR distance between D & L is smaller + * than the XOR distance between D & H. + * + * @return The key that is closest in a bitwise XOR metric to the provided key. + */ + @SuppressWarnings("unused") + K selectKey(K key); + + /** + * Returns the value whose key is closest in a bitwise XOR metric to + * the provided key. This is NOT lexicographic closeness! + * + * For example, given the keys: + * + *
      + *
    1. D = 1000100 + *
    2. H = 1001000 + *
    3. L = 1001100 + *
    + * + * If the {@link Trie} contained 'H' and 'L', a lookup of 'D' would + * return 'L', because the XOR distance between D & L is smaller + * than the XOR distance between D & H. + * + * @return The value whose key is closest in a bitwise XOR metric + * to the provided key. + */ + @SuppressWarnings("unused") + V selectValue(K key); + + /** + * Iterates through the {@link Trie}, starting with the entry whose bitwise + * value is closest in an XOR metric to the given key. After the closest + * entry is found, the {@link Trie} will call select on that entry and continue + * calling select for each entry (traversing in order of XOR closeness, + * NOT lexicographically) until the cursor returns {@link Decision#EXIT}. + * + *

    The cursor can return {@link Decision#CONTINUE} to continue traversing. + * + *

    {@link Decision#REMOVE_AND_EXIT} is used to remove the current element + * and stop traversing. + * + *

    Note: The {@link Decision#REMOVE} operation is not supported. + * + * @return The entry the cursor returned {@link Decision#EXIT} on, or null + * if it continued till the end. + */ + Map.Entry select(K key, Cursor cursor); + + /** + * Traverses the {@link Trie} in lexicographical order. + * {@link Cursor#select(java.util.Map.Entry)} will be called on each entry. + * + *

    The traversal will stop when the cursor returns {@link Decision#EXIT}, + * {@link Decision#CONTINUE} is used to continue traversing and + * {@link Decision#REMOVE} is used to remove the element that was selected + * and continue traversing. + * + *

    {@link Decision#REMOVE_AND_EXIT} is used to remove the current element + * and stop traversing. + * + * @return The entry the cursor returned {@link Decision#EXIT} on, or null + * if it continued till the end. + */ + Map.Entry traverse(Cursor cursor); + + /** + * Returns a view of this {@link Trie} of all elements that are prefixed + * by the given key. + * + *

    In a {@link Trie} with fixed size keys, this is essentially a + * {@link #get(Object)} operation. + * + *

    For example, if the {@link Trie} contains 'Anna', 'Anael', + * 'Analu', 'Andreas', 'Andrea', 'Andres', and 'Anatole', then + * a lookup of 'And' would return 'Andreas', 'Andrea', and 'Andres'. + */ + SortedMap prefixMap(K prefix); +} diff --git a/src/java/org/apache/cassandra/index/sasi/utils/trie/Tries.java b/src/java/org/apache/cassandra/index/sasi/utils/trie/Tries.java new file mode 100644 index 0000000000..c258dd2ea8 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/utils/trie/Tries.java @@ -0,0 +1,95 @@ +/* + * Copyright 2005-2010 Roger Kapsi + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This class is taken from https://github.com/rkapsi/patricia-trie (v0.6), and slightly modified + * to correspond to Cassandra code style, as the only Patricia Trie implementation, + * which supports pluggable key comparators (e.g. commons-collections PatriciaTrie (which is based + * on rkapsi/patricia-trie project) only supports String keys) + * but unfortunately is not deployed to the maven central as a downloadable artifact. + */ + +package org.apache.cassandra.index.sasi.utils.trie; + +/** + * A collection of {@link Trie} utilities + */ +public class Tries +{ + /** + * Returns true if bitIndex is a {@link KeyAnalyzer#OUT_OF_BOUNDS_BIT_KEY} + */ + static boolean isOutOfBoundsIndex(int bitIndex) + { + return bitIndex == KeyAnalyzer.OUT_OF_BOUNDS_BIT_KEY; + } + + /** + * Returns true if bitIndex is a {@link KeyAnalyzer#EQUAL_BIT_KEY} + */ + static boolean isEqualBitKey(int bitIndex) + { + return bitIndex == KeyAnalyzer.EQUAL_BIT_KEY; + } + + /** + * Returns true if bitIndex is a {@link KeyAnalyzer#NULL_BIT_KEY} + */ + static boolean isNullBitKey(int bitIndex) + { + return bitIndex == KeyAnalyzer.NULL_BIT_KEY; + } + + /** + * Returns true if the given bitIndex is valid. Indices + * are considered valid if they're between 0 and + * {@link Integer#MAX_VALUE} + */ + static boolean isValidBitIndex(int bitIndex) + { + return 0 <= bitIndex; + } + + /** + * Returns true if both values are either null or equal + */ + static boolean areEqual(Object a, Object b) + { + return (a == null ? b == null : a.equals(b)); + } + + /** + * Throws a {@link NullPointerException} with the given message if + * the argument is null. + */ + static T notNull(T o, String message) + { + if (o == null) + throw new NullPointerException(message); + + return o; + } + + /** + * A utility method to cast keys. It actually doesn't + * cast anything. It's just fooling the compiler! + */ + @SuppressWarnings("unchecked") + static K cast(Object key) + { + return (K)key; + } +} diff --git a/src/java/org/apache/cassandra/io/sstable/Component.java b/src/java/org/apache/cassandra/io/sstable/Component.java index 9454882aaf..38152af7e0 100644 --- a/src/java/org/apache/cassandra/io/sstable/Component.java +++ b/src/java/org/apache/cassandra/io/sstable/Component.java @@ -19,6 +19,7 @@ package org.apache.cassandra.io.sstable; import java.io.File; import java.util.EnumSet; +import java.util.regex.Pattern; import com.google.common.base.Objects; @@ -57,6 +58,8 @@ public class Component SUMMARY("Summary.db"), // table of contents, stores the list of all components for the sstable TOC("TOC.txt"), + // built-in secondary index (may be multiple per sstable) + SECONDARY_INDEX("SI_.*.db"), // custom component, used by e.g. custom compaction strategy CUSTOM(new String[] { null }); @@ -74,9 +77,12 @@ public class Component static Type fromRepresentation(String repr) { for (Type type : TYPES) - for (String representation : type.repr) - if (repr.equals(representation)) - return type; + { + if (type.repr == null || type.repr.length == 0 || type.repr[0] == null) + continue; + if (Pattern.matches(type.repr[0], repr)) + return type; + } return CUSTOM; } } @@ -169,6 +175,7 @@ public class Component case CRC: component = Component.CRC; break; case SUMMARY: component = Component.SUMMARY; break; case TOC: component = Component.TOC; break; + case SECONDARY_INDEX: component = new Component(Type.SECONDARY_INDEX, path.right); break; case CUSTOM: component = new Component(Type.CUSTOM, path.right); break; default: throw new IllegalStateException(); diff --git a/src/java/org/apache/cassandra/io/sstable/KeyIterator.java b/src/java/org/apache/cassandra/io/sstable/KeyIterator.java index f02b9d1214..d51e97b528 100644 --- a/src/java/org/apache/cassandra/io/sstable/KeyIterator.java +++ b/src/java/org/apache/cassandra/io/sstable/KeyIterator.java @@ -84,6 +84,7 @@ public class KeyIterator extends AbstractIterator implements Close private final In in; private final IPartitioner partitioner; + private long keyPosition; public KeyIterator(Descriptor desc, CFMetaData metadata) { @@ -99,6 +100,7 @@ public class KeyIterator extends AbstractIterator implements Close if (in.isEOF()) return endOfData(); + keyPosition = in.getFilePointer(); DecoratedKey key = partitioner.decorateKey(ByteBufferUtil.readWithShortLength(in.get())); RowIndexEntry.Serializer.skip(in.get(), desc.version); // skip remainder of the entry return key; @@ -123,4 +125,9 @@ public class KeyIterator extends AbstractIterator implements Close { return in.length(); } + + public long getKeyPosition() + { + return keyPosition; + } } diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableFlushObserver.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableFlushObserver.java index d6f54e235c..f0b6bac861 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/SSTableFlushObserver.java +++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableFlushObserver.java @@ -18,7 +18,7 @@ package org.apache.cassandra.io.sstable.format; import org.apache.cassandra.db.DecoratedKey; -import org.apache.cassandra.db.rows.ColumnData; +import org.apache.cassandra.db.rows.Unfiltered; /** * Observer for events in the lifecycle of writing out an sstable. @@ -32,7 +32,7 @@ public interface SSTableFlushObserver /** * Called when a new partition in being written to the sstable, - * but before any cells are processed (see {@link #nextCell(ColumnData)}). + * but before any cells are processed (see {@link #nextUnfilteredCluster(Unfiltered)}). * * @param key The key being appended to SSTable. * @param indexPosition The position of the key in the SSTable PRIMARY_INDEX file. @@ -40,13 +40,13 @@ public interface SSTableFlushObserver void startPartition(DecoratedKey key, long indexPosition); /** - * Called after the cell is written to the sstable. + * Called after the unfiltered cluster is written to the sstable. * Will be preceded by a call to {@code startPartition(DecoratedKey, long)}, - * and the cell should be assumed to belong to that row. + * and the cluster should be assumed to belong to that partition. * - * @param cell The cell being added to the row. + * @param unfilteredCluster The unfiltered cluster being added to SSTable. */ - void nextCell(ColumnData cell); + void nextUnfilteredCluster(Unfiltered unfilteredCluster); /** * Called when all data is written to the file and it's ready to be finished up. diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java index 8206092545..9e9b98a68a 100644 --- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java +++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java @@ -1795,6 +1795,26 @@ public abstract class SSTableReader extends SSTable implements SelfRefCounted DIRECT_BYTE_BUFFER_CLASS; + private static final Class DIRECT_BYTE_BUFFER_CLASS, RO_DIRECT_BYTE_BUFFER_CLASS; private static final long DIRECT_BYTE_BUFFER_ADDRESS_OFFSET; private static final long DIRECT_BYTE_BUFFER_CAPACITY_OFFSET; private static final long DIRECT_BYTE_BUFFER_LIMIT_OFFSET; @@ -65,6 +65,7 @@ public abstract class MemoryUtil DIRECT_BYTE_BUFFER_POSITION_OFFSET = unsafe.objectFieldOffset(Buffer.class.getDeclaredField("position")); DIRECT_BYTE_BUFFER_ATTACHMENT_OFFSET = unsafe.objectFieldOffset(clazz.getDeclaredField("att")); DIRECT_BYTE_BUFFER_CLASS = clazz; + RO_DIRECT_BYTE_BUFFER_CLASS = ByteBuffer.allocateDirect(0).asReadOnlyBuffer().getClass(); clazz = ByteBuffer.allocate(0).getClass(); BYTE_BUFFER_OFFSET_OFFSET = unsafe.objectFieldOffset(ByteBuffer.class.getDeclaredField("offset")); @@ -204,7 +205,7 @@ public abstract class MemoryUtil public static ByteBuffer duplicateDirectByteBuffer(ByteBuffer source, ByteBuffer hollowBuffer) { - assert source.getClass() == DIRECT_BYTE_BUFFER_CLASS; + assert source.getClass() == DIRECT_BYTE_BUFFER_CLASS || source.getClass() == RO_DIRECT_BYTE_BUFFER_CLASS; unsafe.putLong(hollowBuffer, DIRECT_BYTE_BUFFER_ADDRESS_OFFSET, unsafe.getLong(source, DIRECT_BYTE_BUFFER_ADDRESS_OFFSET)); unsafe.putInt(hollowBuffer, DIRECT_BYTE_BUFFER_POSITION_OFFSET, unsafe.getInt(source, DIRECT_BYTE_BUFFER_POSITION_OFFSET)); unsafe.putInt(hollowBuffer, DIRECT_BYTE_BUFFER_LIMIT_OFFSET, unsafe.getInt(source, DIRECT_BYTE_BUFFER_LIMIT_OFFSET)); diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ar_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ar_ST.txt new file mode 100644 index 0000000000..97bedb619f --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ar_ST.txt @@ -0,0 +1,163 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +ب +ا +أ +، +عشر +عدد +عدة +عشرة +عدم +عام +عاما +عن +عند +عندما +على +عليه +عليها +زيارة +سنة +سنوات +تم +ضد +بعد +بعض +اعادة +اعلنت +بسبب +حتى +اذا +احد +اثر +برس +باسم +غدا +شخصا +صباح +اطار +اربعة +اخرى +بان +اجل +غير +بشكل +حاليا +بن +به +ثم +اف +ان +او +اي +بها +صفر +حيث +اكد +الا +اما +امس +السابق +التى +التي +اكثر +ايار +ايضا +ثلاثة +الذاتي +الاخيرة +الثاني +الثانية +الذى +الذي +الان +امام +ايام +خلال +حوالى +الذين +الاول +الاولى +بين +ذلك +دون +حول +حين +الف +الى +انه +اول +ضمن +انها +جميع +الماضي +الوقت +المقبل +اليوم +ـ +ف +و +و6 +قد +لا +ما +مع +مساء +هذا +واحد +واضاف +واضافت +فان +قبل +قال +كان +لدى +نحو +هذه +وان +واكد +كانت +واوضح +مايو +فى +في +كل +لم +لن +له +من +هو +هي +قوة +كما +لها +منذ +وقد +ولا +نفسه +لقاء +مقابل +هناك +وقال +وكان +نهاية +وقالت +وكانت +للامم +فيه +كلم +لكن +وفي +وقف +ولم +ومن +وهو +وهي +يوم +فيها +منها +مليار +لوكالة +يكون +يمكن +مليون diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/bg_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/bg_ST.txt new file mode 100644 index 0000000000..ed6049d23e --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/bg_ST.txt @@ -0,0 +1,260 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +а +автентичен +аз +ако +ала +бе +без +беше +би +бивш +бивша +бившо +бил +била +били +било +благодаря +близо +бъдат +бъде +бяха +в +вас +ваш +ваша +вероятно +вече +взема +ви +вие +винаги +внимава +време +все +всеки +всички +всичко +всяка +във +въпреки +върху +г +ги +главен +главна +главно +глас +го +година +години +годишен +д +да +дали +два +двама +двамата +две +двете +ден +днес +дни +до +добра +добре +добро +добър +докато +докога +дори +досега +доста +друг +друга +други +е +евтин +едва +един +една +еднаква +еднакви +еднакъв +едно +екип +ето +живот +за +забавям +зад +заедно +заради +засега +заспал +затова +защо +защото +и +из +или +им +има +имат +иска +й +каза +как +каква +какво +както +какъв +като +кога +когато +което +които +кой +който +колко +която +къде +където +към +лесен +лесно +ли +лош +м +май +малко +ме +между +мек +мен +месец +ми +много +мнозина +мога +могат +може +мокър +моля +момента +му +н +на +над +назад +най +направи +напред +например +нас +не +него +нещо +нея +ни +ние +никой +нито +нищо +но +нов +нова +нови +новина +някои +някой +няколко +няма +обаче +около +освен +особено +от +отгоре +отново +още +пак +по +повече +повечето +под +поне +поради +после +почти +прави +пред +преди +през +при +пък +първата +първи +първо +пъти +равен +равна +с +са +сам +само +се +сега +си +син +скоро +след +следващ +сме +смях +според +сред +срещу +сте +съм +със +също +т +тази +така +такива +такъв +там +твой +те +тези +ти +т.н. +то +това +тогава +този +той +толкова +точно +три +трябва +тук +тъй +тя +тях +у +утре +харесва +хиляди +ч +часа +че +често +чрез +ще +щом +юмрук +я +як \ No newline at end of file diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/cs_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/cs_ST.txt new file mode 100644 index 0000000000..49b52e128e --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/cs_ST.txt @@ -0,0 +1,257 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +ačkoli +ahoj +ale +anebo +ano +asi +aspoň +během +bez +beze +blízko +bohužel +brzo +bude +budeme +budeš +budete +budou +budu +byl +byla +byli +bylo +byly +bys +čau +chce +chceme +chceš +chcete +chci +chtějí +chtít +chut' +chuti +co +čtrnáct +čtyři +dál +dále +daleko +děkovat +děkujeme +děkuji +den +deset +devatenáct +devět +do +dobrý +docela +dva +dvacet +dvanáct +dvě +hodně +já +jak +jde +je +jeden +jedenáct +jedna +jedno +jednou +jedou +jeho +její +jejich +jemu +jen +jenom +ještě +jestli +jestliže +jí +jich +jím +jimi +jinak +jsem +jsi +jsme +jsou +jste +kam +kde +kdo +kdy +když +ke +kolik +kromě +která +které +kteří +který +kvůli +má +mají +málo +mám +máme +máš +máte +mé +mě +mezi +mí +mít +mně +mnou +moc +mohl +mohou +moje +moji +možná +můj +musí +může +my +na +nad +nade +nám +námi +naproti +nás +náš +naše +naši +ne +ně +nebo +nebyl +nebyla +nebyli +nebyly +něco +nedělá +nedělají +nedělám +neděláme +neděláš +neděláte +nějak +nejsi +někde +někdo +nemají +nemáme +nemáte +neměl +němu +není +nestačí +nevadí +než +nic +nich +ním +nimi +nula +od +ode +on +ona +oni +ono +ony +osm +osmnáct +pak +patnáct +pět +po +pořád +potom +pozdě +před +přes +přese +pro +proč +prosím +prostě +proti +protože +rovně +se +sedm +sedmnáct +šest +šestnáct +skoro +smějí +smí +snad +spolu +sta +sté +sto +ta +tady +tak +takhle +taky +tam +tamhle +tamhleto +tamto +tě +tebe +tebou +ted' +tedy +ten +ti +tisíc +tisíce +to +tobě +tohle +toto +třeba +tři +třináct +trošku +tvá +tvé +tvoje +tvůj +ty +určitě +už +vám +vámi +vás +váš +vaše +vaši +ve +večer +vedle +vlastně +všechno +všichni +vůbec +vy +vždy +za +zač +zatímco +ze +že diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/de_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/de_ST.txt new file mode 100644 index 0000000000..747e682b42 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/de_ST.txt @@ -0,0 +1,604 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +ab +aber +aber +ach +acht +achte +achten +achter +achtes +ag +alle +allein +allem +allen +aller +allerdings +alles +allgemeinen +als +als +also +am +an +andere +anderen +andern +anders +au +auch +auch +auf +aus +ausser +au�er +ausserdem +au�erdem +b +bald +bei +beide +beiden +beim +beispiel +bekannt +bereits +besonders +besser +besten +bin +bis +bisher +bist +c +d +da +dabei +dadurch +daf�r +dagegen +daher +dahin +dahinter +damals +damit +danach +daneben +dank +dann +daran +darauf +daraus +darf +darfst +darin +dar�ber +darum +darunter +das +das +dasein +daselbst +dass +da� +dasselbe +davon +davor +dazu +dazwischen +dein +deine +deinem +deiner +dem +dementsprechend +demgegen�ber +demgem�ss +demgem�� +demselben +demzufolge +den +denen +denn +denn +denselben +der +deren +derjenige +derjenigen +dermassen +derma�en +derselbe +derselben +des +deshalb +desselben +dessen +deswegen +d.h +dich +die +diejenige +diejenigen +dies +diese +dieselbe +dieselben +diesem +diesen +dieser +dieses +dir +doch +dort +drei +drin +dritte +dritten +dritter +drittes +du +durch +durchaus +d�rfen +d�rft +durfte +durften +e +eben +ebenso +ehrlich +ei +ei, +ei, +eigen +eigene +eigenen +eigener +eigenes +ein +einander +eine +einem +einen +einer +eines +einige +einigen +einiger +einiges +einmal +einmal +eins +elf +en +ende +endlich +entweder +entweder +er +Ernst +erst +erste +ersten +erster +erstes +es +etwa +etwas +euch +f +fr�her +f�nf +f�nfte +f�nften +f�nfter +f�nftes +f�r +g +gab +ganz +ganze +ganzen +ganzer +ganzes +gar +gedurft +gegen +gegen�ber +gehabt +gehen +geht +gekannt +gekonnt +gemacht +gemocht +gemusst +genug +gerade +gern +gesagt +gesagt +geschweige +gewesen +gewollt +geworden +gibt +ging +gleich +gott +gross +gro� +grosse +gro�e +grossen +gro�en +grosser +gro�er +grosses +gro�es +gut +gute +guter +gutes +h +habe +haben +habt +hast +hat +hatte +h�tte +hatten +h�tten +heisst +her +heute +hier +hin +hinter +hoch +i +ich +ihm +ihn +ihnen +ihr +ihre +ihrem +ihren +ihrer +ihres +im +im +immer +in +in +indem +infolgedessen +ins +irgend +ist +j +ja +ja +jahr +jahre +jahren +je +jede +jedem +jeden +jeder +jedermann +jedermanns +jedoch +jemand +jemandem +jemanden +jene +jenem +jenen +jener +jenes +jetzt +k +kam +kann +kannst +kaum +kein +keine +keinem +keinen +keiner +kleine +kleinen +kleiner +kleines +kommen +kommt +k�nnen +k�nnt +konnte +k�nnte +konnten +kurz +l +lang +lange +lange +leicht +leide +lieber +los +m +machen +macht +machte +mag +magst +mahn +man +manche +manchem +manchen +mancher +manches +mann +mehr +mein +meine +meinem +meinen +meiner +meines +mensch +menschen +mich +mir +mit +mittel +mochte +m�chte +mochten +m�gen +m�glich +m�gt +morgen +muss +mu� +m�ssen +musst +m�sst +musste +mussten +n +na +nach +nachdem +nahm +nat�rlich +neben +nein +neue +neuen +neun +neunte +neunten +neunter +neuntes +nicht +nicht +nichts +nie +niemand +niemandem +niemanden +noch +nun +nun +nur +o +ob +ob +oben +oder +oder +offen +oft +oft +ohne +Ordnung +p +q +r +recht +rechte +rechten +rechter +rechtes +richtig +rund +s +sa +sache +sagt +sagte +sah +satt +schlecht +Schluss +schon +sechs +sechste +sechsten +sechster +sechstes +sehr +sei +sei +seid +seien +sein +seine +seinem +seinen +seiner +seines +seit +seitdem +selbst +selbst +sich +sie +sieben +siebente +siebenten +siebenter +siebentes +sind +so +solang +solche +solchem +solchen +solcher +solches +soll +sollen +sollte +sollten +sondern +sonst +sowie +sp�ter +statt +t +tag +tage +tagen +tat +teil +tel +tritt +trotzdem +tun +u +�ber +�berhaupt +�brigens +uhr +um +und +und? +uns +unser +unsere +unserer +unter +v +vergangenen +viel +viele +vielem +vielen +vielleicht +vier +vierte +vierten +vierter +viertes +vom +von +vor +w +wahr? +w�hrend +w�hrenddem +w�hrenddessen +wann +war +w�re +waren +wart +warum +was +wegen +weil +weit +weiter +weitere +weiteren +weiteres +welche +welchem +welchen +welcher +welches +wem +wen +wenig +wenig +wenige +weniger +weniges +wenigstens +wenn +wenn +wer +werde +werden +werdet +wessen +wie +wie +wieder +will +willst +wir +wird +wirklich +wirst +wo +wohl +wollen +wollt +wollte +wollten +worden +wurde +w�rde +wurden +w�rden +x +y +z +z.b +zehn +zehnte +zehnten +zehnter +zehntes +zeit +zu +zuerst +zugleich +zum +zum +zun�chst +zur +zur�ck +zusammen +zwanzig +zwar +zwar +zwei +zweite +zweiten +zweiter +zweites +zwischen +zw�lf diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/en_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/en_ST.txt new file mode 100644 index 0000000000..d30da3127c --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/en_ST.txt @@ -0,0 +1,572 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +a's +able +about +above +according +accordingly +across +actually +after +afterwards +again +against +ain't +all +allow +allows +almost +alone +along +already +also +although +always +am +among +amongst +an +and +another +any +anybody +anyhow +anyone +anything +anyway +anyways +anywhere +apart +appear +appreciate +appropriate +are +aren't +around +as +aside +ask +asking +associated +at +available +away +awfully +b +be +became +because +become +becomes +becoming +been +before +beforehand +behind +being +believe +below +beside +besides +best +better +between +beyond +both +brief +but +by +c +c'mon +c's +came +can +can't +cannot +cant +cause +causes +certain +certainly +changes +clearly +co +com +come +comes +concerning +consequently +consider +considering +contain +containing +contains +corresponding +could +couldn't +course +currently +d +definitely +described +despite +did +didn't +different +do +does +doesn't +doing +don't +done +down +downwards +during +e +each +edu +eg +eight +either +else +elsewhere +enough +entirely +especially +et +etc +even +ever +every +everybody +everyone +everything +everywhere +ex +exactly +example +except +f +far +few +fifth +first +five +followed +following +follows +for +former +formerly +forth +four +from +further +furthermore +g +get +gets +getting +given +gives +go +goes +going +gone +got +gotten +greetings +h +had +hadn't +happens +hardly +has +hasn't +have +haven't +having +he +he's +hello +help +hence +her +here +here's +hereafter +hereby +herein +hereupon +hers +herself +hi +him +himself +his +hither +hopefully +how +howbeit +however +i +i'd +i'll +i'm +i've +ie +if +ignored +immediate +in +inasmuch +inc +indeed +indicate +indicated +indicates +inner +insofar +instead +into +inward +is +isn't +it +it'd +it'll +it's +its +itself +j +just +k +keep +keeps +kept +know +knows +known +l +last +lately +later +latter +latterly +least +less +lest +let +let's +like +liked +likely +little +look +looking +looks +ltd +m +mainly +many +may +maybe +me +mean +meanwhile +merely +might +more +moreover +most +mostly +much +must +my +myself +n +name +namely +nd +near +nearly +necessary +need +needs +neither +never +nevertheless +new +next +nine +no +nobody +non +none +noone +nor +normally +not +nothing +novel +now +nowhere +o +obviously +of +off +often +oh +ok +okay +old +on +once +one +ones +only +onto +or +other +others +otherwise +ought +our +ours +ourselves +out +outside +over +overall +own +p +particular +particularly +per +perhaps +placed +please +plus +possible +presumably +probably +provides +q +que +quite +qv +r +rather +rd +re +really +reasonably +regarding +regardless +regards +relatively +respectively +right +s +said +same +saw +say +saying +says +second +secondly +see +seeing +seem +seemed +seeming +seems +seen +self +selves +sensible +sent +serious +seriously +seven +several +shall +she +should +shouldn't +since +six +so +some +somebody +somehow +someone +something +sometime +sometimes +somewhat +somewhere +soon +sorry +specified +specify +specifying +still +sub +such +sup +sure +t +t's +take +taken +tell +tends +th +than +thank +thanks +thanx +that +that's +thats +the +their +theirs +them +themselves +then +thence +there +there's +thereafter +thereby +therefore +therein +theres +thereupon +these +they +they'd +they'll +they're +they've +think +third +this +thorough +thoroughly +those +though +three +through +throughout +thru +thus +to +together +too +took +toward +towards +tried +tries +truly +try +trying +twice +two +u +un +under +unfortunately +unless +unlikely +until +unto +up +upon +us +use +used +useful +uses +using +usually +uucp +v +value +various +very +via +viz +vs +w +want +wants +was +wasn't +way +we +we'd +we'll +we're +we've +welcome +well +went +were +weren't +what +what's +whatever +when +whence +whenever +where +where's +whereafter +whereas +whereby +wherein +whereupon +wherever +whether +which +while +whither +who +who's +whoever +whole +whom +whose +why +will +willing +wish +with +within +without +won't +wonder +would +would +wouldn't +x +y +yes +yet +you +you'd +you'll +you're +you've +your +yours +yourself +yourselves +z +zero diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/es_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/es_ST.txt new file mode 100644 index 0000000000..75e2086e7a --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/es_ST.txt @@ -0,0 +1,308 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +acuerdo +adelante +ademas +adem�s +adrede +ahi +ah� +ahora +al +alli +all� +alrededor +antano +anta�o +ante +antes +apenas +aproximadamente +aquel +aqu�l +aquella +aqu�lla +aquellas +aqu�llas +aquello +aquellos +aqu�llos +aqui +aqu� +arribaabajo +asi +as� +aun +a�n +aunque +b +bajo +bastante +bien +breve +c +casi +cerca +claro +como +c�mo +con +conmigo +contigo +contra +cual +cu�l +cuales +cu�les +cuando +cu�ndo +cuanta +cu�nta +cuantas +cu�ntas +cuanto +cu�nto +cuantos +cu�ntos +d +de +debajo +del +delante +demasiado +dentro +deprisa +desde +despacio +despues +despu�s +detras +detr�s +dia +d�a +dias +d�as +donde +d�nde +dos +durante +e +el +�l +ella +ellas +ellos +en +encima +enfrente +enseguida +entre +es +esa +�sa +esas +�sas +ese +�se +eso +esos +�sos +esta +est� +�sta +estado +estados +estan +est�n +estar +estas +�stas +este +�ste +esto +estos +�stos +ex +excepto +f +final +fue +fuera +fueron +g +general +gran +h +ha +habia +hab�a +habla +hablan +hace +hacia +han +hasta +hay +horas +hoy +i +incluso +informo +inform� +j +junto +k +l +la +lado +las +le +lejos +lo +los +luego +m +mal +mas +m�s +mayor +me +medio +mejor +menos +menudo +mi +m� +mia +m�a +mias +m�as +mientras +mio +m�o +mios +m�os +mis +mismo +mucho +muy +n +nada +nadie +ninguna +no +nos +nosotras +nosotros +nuestra +nuestras +nuestro +nuestros +nueva +nuevo +nunca +o +os +otra +otros +p +pais +pa�s +para +parte +pasado +peor +pero +poco +por +porque +pronto +proximo +pr�ximo +puede +q +qeu +que +qu� +quien +qui�n +quienes +qui�nes +quiza +quiz� +quizas +quiz�s +r +raras +repente +s +salvo +se +s� +segun +seg�n +ser +sera +ser� +si +s� +sido +siempre +sin +sobre +solamente +solo +s�lo +son +soyos +su +supuesto +sus +suya +suyas +suyo +t +tal +tambien +tambi�n +tampoco +tarde +te +temprano +ti +tiene +todavia +todav�a +todo +todos +tras +tu +t� +tus +tuya +tuyas +tuyo +tuyos +u +un +una +unas +uno +unos +usted +ustedes +v +veces +vez +vosotras +vosotros +vuestra +vuestras +vuestro +vuestros +w +x +y +ya +yo +z diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fi_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fi_ST.txt new file mode 100644 index 0000000000..3c8bfd5d47 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fi_ST.txt @@ -0,0 +1,748 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +aiemmin +aika +aikaa +aikaan +aikaisemmin +aikaisin +aikajen +aikana +aikoina +aikoo +aikovat +aina +ainakaan +ainakin +ainoa +ainoat +aiomme +aion +aiotte +aist +aivan +ajan +�l� +alas +alemmas +�lk��n +alkuisin +alkuun +alla +alle +aloitamme +aloitan +aloitat +aloitatte +aloitattivat +aloitettava +aloitettevaksi +aloitettu +aloitimme +aloitin +aloitit +aloititte +aloittaa +aloittamatta +aloitti +aloittivat +alta +aluksi +alussa +alusta +annettavaksi +annetteva +annettu +antaa +antamatta +antoi +aoua +apu +asia +asiaa +asian +asiasta +asiat +asioiden +asioihin +asioita +asti +avuksi +avulla +avun +avutta +edell� +edelle +edelleen +edelt� +edemm�s +edes +edess� +edest� +ehk� +ei +eik� +eilen +eiv�t +eli +ellei +elleiv�t +ellemme +ellen +ellet +ellette +emme +en +en�� +enemm�n +eniten +ennen +ensi +ensimm�inen +ensimm�iseksi +ensimm�isen +ensimm�isen� +ensimm�iset +ensimm�isi� +ensimm�isiksi +ensimm�isin� +ensimm�ist� +ensin +entinen +entisen +entisi� +entist� +entisten +er��t +er�iden +er�s +eri +eritt�in +erityisesti +esi +esiin +esill� +esimerkiksi +et +eteen +etenkin +ett� +ette +ettei +halua +haluaa +haluamatta +haluamme +haluan +haluat +haluatte +haluavat +halunnut +halusi +halusimme +halusin +halusit +halusitte +halusivat +halutessa +haluton +h�n +h�neen +h�nell� +h�nelle +h�nelt� +h�nen +h�ness� +h�nest� +h�net +he +hei +heid�n +heihin +heille +heilt� +heiss� +heist� +heit� +helposti +heti +hetkell� +hieman +huolimatta +huomenna +hyv� +hyv�� +hyv�t +hyvi� +hyvien +hyviin +hyviksi +hyville +hyvilt� +hyvin +hyvin� +hyviss� +hyvist� +ihan +ilman +ilmeisesti +itse +itse��n +itsens� +ja +j�� +j�lkeen +j�lleen +jo +johon +joiden +joihin +joiksi +joilla +joille +joilta +joissa +joista +joita +joka +jokainen +jokin +joko +joku +jolla +jolle +jolloin +jolta +jompikumpi +jonka +jonkin +jonne +joo +jopa +jos +joskus +jossa +josta +jota +jotain +joten +jotenkin +jotenkuten +jotka +jotta +jouduimme +jouduin +jouduit +jouduitte +joudumme +joudun +joudutte +joukkoon +joukossa +joukosta +joutua +joutui +joutuivat +joutumaan +joutuu +joutuvat +juuri +kahdeksan +kahdeksannen +kahdella +kahdelle +kahdelta +kahden +kahdessa +kahdesta +kahta +kahteen +kai +kaiken +kaikille +kaikilta +kaikkea +kaikki +kaikkia +kaikkiaan +kaikkialla +kaikkialle +kaikkialta +kaikkien +kaikkin +kaksi +kannalta +kannattaa +kanssa +kanssaan +kanssamme +kanssani +kanssanne +kanssasi +kauan +kauemmas +kautta +kehen +keiden +keihin +keiksi +keill� +keille +keilt� +kein� +keiss� +keist� +keit� +keitt� +keitten +keneen +keneksi +kenell� +kenelle +kenelt� +kenen +kenen� +keness� +kenest� +kenet +kenett� +kenness�st� +kerran +kerta +kertaa +kesken +keskim��rin +ket� +ketk� +kiitos +kohti +koko +kokonaan +kolmas +kolme +kolmen +kolmesti +koska +koskaan +kovin +kuin +kuinka +kuitenkaan +kuitenkin +kuka +kukaan +kukin +kumpainen +kumpainenkaan +kumpi +kumpikaan +kumpikin +kun +kuten +kuuden +kuusi +kuutta +kyll� +kymmenen +kyse +l�hekk�in +l�hell� +l�helle +l�helt� +l�hemm�s +l�hes +l�hinn� +l�htien +l�pi +liian +liki +lis�� +lis�ksi +luo +mahdollisimman +mahdollista +me +meid�n +meill� +meille +melkein +melko +menee +meneet +menemme +menen +menet +menette +menev�t +meni +menimme +menin +menit +meniv�t +menness� +mennyt +menossa +mihin +mik� +mik��n +mik�li +mikin +miksi +milloin +min� +minne +minun +minut +miss� +mist� +mit� +mit��n +miten +moi +molemmat +mones +monesti +monet +moni +moniaalla +moniaalle +moniaalta +monta +muassa +muiden +muita +muka +mukaan +mukaansa +mukana +mutta +muu +muualla +muualle +muualta +muuanne +muulloin +muun +muut +muuta +muutama +muutaman +muuten +my�hemmin +my�s +my�sk��n +my�skin +my�t� +n�iden +n�in +n�iss� +n�iss�hin +n�iss�lle +n�iss�lt� +n�iss�st� +n�it� +n�m� +ne +nelj� +nelj�� +nelj�n +niiden +niin +niist� +niit� +noin +nopeammin +nopeasti +nopeiten +nro +nuo +nyt +ohi +oikein +ole +olemme +olen +olet +olette +oleva +olevan +olevat +oli +olimme +olin +olisi +olisimme +olisin +olisit +olisitte +olisivat +olit +olitte +olivat +olla +olleet +olli +ollut +oma +omaa +omaan +omaksi +omalle +omalta +oman +omassa +omat +omia +omien +omiin +omiksi +omille +omilta +omissa +omista +on +onkin +onko +ovat +p��lle +paikoittain +paitsi +pakosti +paljon +paremmin +parempi +parhaillaan +parhaiten +per�ti +perusteella +pian +pieneen +pieneksi +pienell� +pienelle +pienelt� +pienempi +pienest� +pieni +pienin +puolesta +puolestaan +runsaasti +saakka +sadam +sama +samaa +samaan +samalla +samallalta +samallassa +samallasta +saman +samat +samoin +sata +sataa +satojen +se +seitsem�n +sek� +sen +seuraavat +siell� +sielt� +siihen +siin� +siis +siit� +sijaan +siksi +sill� +silloin +silti +sin� +sinne +sinua +sinulle +sinulta +sinun +sinussa +sinusta +sinut +sis�kk�in +sis�ll� +sit� +siten +sitten +suoraan +suuntaan +suuren +suuret +suuri +suuria +suurin +suurten +taa +t��ll� +t��lt� +taas +taemmas +t�h�n +tahansa +tai +takaa +takaisin +takana +takia +t�ll� +t�ll�in +t�m� +t�m�n +t�n� +t�n��n +t�nne +tapauksessa +t�ss� +t�st� +t�t� +t�ten +tavalla +tavoitteena +t�ysin +t�ytyv�t +t�ytyy +te +tietysti +todella +toinen +toisaalla +toisaalle +toisaalta +toiseen +toiseksi +toisella +toiselle +toiselta +toisemme +toisen +toisensa +toisessa +toisesta +toista +toistaiseksi +toki +tosin +tuhannen +tuhat +tule +tulee +tulemme +tulen +tulet +tulette +tulevat +tulimme +tulin +tulisi +tulisimme +tulisin +tulisit +tulisitte +tulisivat +tulit +tulitte +tulivat +tulla +tulleet +tullut +tuntuu +tuo +tuolla +tuolloin +tuolta +tuonne +tuskin +tyk� +usea +useasti +useimmiten +usein +useita +uudeksi +uudelleen +uuden +uudet +uusi +uusia +uusien +uusinta +uuteen +uutta +vaan +v�h�n +v�hemm�n +v�hint��n +v�hiten +vai +vaiheessa +vaikea +vaikean +vaikeat +vaikeilla +vaikeille +vaikeilta +vaikeissa +vaikeista +vaikka +vain +v�lill� +varmasti +varsin +varsinkin +varten +vasta +vastaan +vastakkain +verran +viel� +vierekk�in +vieri +viiden +viime +viimeinen +viimeisen +viimeksi +viisi +voi +voidaan +voimme +voin +voisi +voit +voitte +voivat +vuoden +vuoksi +vuosi +vuosien +vuosina +vuotta +yh� +yhdeks�n +yhden +yhdess� +yht� +yht��ll� +yht��lle +yht��lt� +yht��n +yhteen +yhteens� +yhteydess� +yhteyteen +yksi +yksin +yksitt�in +yleens� +ylemm�s +yli +yl�s +ymp�ri diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fr_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fr_ST.txt new file mode 100644 index 0000000000..c84d8c11c4 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/fr_ST.txt @@ -0,0 +1,464 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +� +� +abord +afin +ah +ai +aie +ainsi +allaient +allo +all� +allons +apr�s +assez +attendu +au +aucun +aucune +aujourd +aujourd'hui +auquel +aura +auront +aussi +autre +autres +aux +auxquelles +auxquels +avaient +avais +avait +avant +avec +avoir +ayant +b +bah +beaucoup +bien +bigre +boum +bravo +brrr +c +�a +car +ce +ceci +cela +celle +celle-ci +celle-l� +celles +celles-ci +celles-l� +celui +celui-ci +celui-l� +cent +cependant +certain +certaine +certaines +certains +certes +ces +cet +cette +ceux +ceux-ci +ceux-l� +chacun +chaque +cher +ch�re +ch�res +chers +chez +chiche +chut +ci +cinq +cinquantaine +cinquante +cinquanti�me +cinqui�me +clac +clic +combien +comme +comment +compris +concernant +contre +couic +crac +d +da +dans +de +debout +dedans +dehors +del� +depuis +derri�re +des +d�s +d�sormais +desquelles +desquels +dessous +dessus +deux +deuxi�me +deuxi�mement +devant +devers +devra +diff�rent +diff�rente +diff�rentes +diff�rents +dire +divers +diverse +diverses +dix +dix-huit +dixi�me +dix-neuf +dix-sept +doit +doivent +donc +dont +douze +douzi�me +dring +du +duquel +durant +e +effet +eh +elle +elle-m�me +elles +elles-m�mes +en +encore +entre +envers +environ +es +�s +est +et +etant +�taient +�tais +�tait +�tant +etc +�t� +etre +�tre +eu +euh +eux +eux-m�mes +except� +f +fa�on +fais +faisaient +faisant +fait +feront +fi +flac +floc +font +g +gens +h +ha +h� +hein +h�las +hem +hep +hi +ho +hol� +hop +hormis +hors +hou +houp +hue +hui +huit +huiti�me +hum +hurrah +i +il +ils +importe +j +je +jusqu +jusque +k +l +la +l� +laquelle +las +le +lequel +les +l�s +lesquelles +lesquels +leur +leurs +longtemps +lorsque +lui +lui-m�me +m +ma +maint +mais +malgr� +me +m�me +m�mes +merci +mes +mien +mienne +miennes +miens +mille +mince +moi +moi-m�me +moins +mon +moyennant +n +na +ne +n�anmoins +neuf +neuvi�me +ni +nombreuses +nombreux +non +nos +notre +n�tre +n�tres +nous +nous-m�mes +nul +o +o| +� +oh +oh� +ol� +oll� +on +ont +onze +onzi�me +ore +ou +o� +ouf +ouias +oust +ouste +outre +p +paf +pan +par +parmi +partant +particulier +particuli�re +particuli�rement +pas +pass� +pendant +personne +peu +peut +peuvent +peux +pff +pfft +pfut +pif +plein +plouf +plus +plusieurs +plut�t +pouah +pour +pourquoi +premier +premi�re +premi�rement +pr�s +proche +psitt +puisque +q +qu +quand +quant +quanta +quant-�-soi +quarante +quatorze +quatre +quatre-vingt +quatri�me +quatri�mement +que +quel +quelconque +quelle +quelles +quelque +quelques +quelqu'un +quels +qui +quiconque +quinze +quoi +quoique +r +revoici +revoil� +rien +s +sa +sacrebleu +sans +sapristi +sauf +se +seize +selon +sept +septi�me +sera +seront +ses +si +sien +sienne +siennes +siens +sinon +six +sixi�me +soi +soi-m�me +soit +soixante +son +sont +sous +stop +suis +suivant +sur +surtout +t +ta +tac +tant +te +t� +tel +telle +tellement +telles +tels +tenant +tes +tic +tien +tienne +tiennes +tiens +toc +toi +toi-m�me +ton +touchant +toujours +tous +tout +toute +toutes +treize +trente +tr�s +trois +troisi�me +troisi�mement +trop +tsoin +tsouin +tu +u +un +une +unes +uns +v +va +vais +vas +v� +vers +via +vif +vifs +vingt +vivat +vive +vives +vlan +voici +voil� +vont +vos +votre +v�tre +v�tres +vous +vous-m�mes +vu +w +x +y +z +zut diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hi_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hi_ST.txt new file mode 100644 index 0000000000..426fc2d081 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hi_ST.txt @@ -0,0 +1,164 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +पर +इन +वह +यिह +वुह +जिन्हें +जिन्हों +तिन्हें +तिन्हों +किन्हों +किन्हें +इत्यादि +द्वारा +इन्हें +इन्हों +उन्हों +बिलकुल +निहायत +ऱ्वासा +इन्हीं +उन्हीं +उन्हें +इसमें +जितना +दुसरा +कितना +दबारा +साबुत +वग़ैरह +दूसरे +कौनसा +लेकिन +होता +करने +किया +लिये +अपने +नहीं +दिया +इसका +करना +वाले +सकते +इसके +सबसे +होने +करते +बहुत +वर्ग +करें +होती +अपनी +उनके +कहते +होते +करता +उनकी +इसकी +सकता +रखें +अपना +उसके +जिसे +तिसे +किसे +किसी +काफ़ी +पहले +नीचे +बाला +यहाँ +जैसा +जैसे +मानो +अंदर +भीतर +पूरा +सारा +होना +उनको +वहाँ +वहीं +जहाँ +जीधर +उनका +इनका +के +हैं +गया +बनी +एवं +हुआ +साथ +बाद +लिए +कुछ +कहा +यदि +हुई +इसे +हुए +अभी +सभी +कुल +रहा +रहे +इसी +उसे +जिस +जिन +तिस +तिन +कौन +किस +कोई +ऐसे +तरह +किर +साभ +संग +यही +बही +उसी +फिर +मगर +का +एक +यह +से +को +इस +कि +जो +कर +मे +ने +तो +ही +या +हो +था +तक +आप +ये +थे +दो +वे +थी +जा +ना +उस +एस +पे +उन +सो +भी +और +घर +तब +जब +अत +व +न diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hu_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hu_ST.txt new file mode 100644 index 0000000000..7cf3e1c0b8 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/hu_ST.txt @@ -0,0 +1,738 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +abba +abban +abból +addig +ahhoz +ahol +akár +aki +akik +akkor +alá +alád +alájuk +alám +alánk +alapján +alátok +alatt +alatta +alattad +alattam +alattatok +alattuk +alattunk +alól +alóla +alólad +alólam +alólatok +alóluk +alólunk +által +általában +ám +amely +amelybol +amelyek +amelyekben +amelyeket +amelyet +amelyik +amelynek +ami +amíg +amikor +amit +amott +annak +annál +arra +arról +át +attól +az +azért +aznap +azok +azokat +azokba +azokban +azokból +azokért +azokhoz +azokig +azokká +azokkal +azoknak +azoknál +azokon +azokra +azokról +azoktól +azon +azonban +azonnal +azt +aztán +azzá +azzal +bal +balra +ban +bár +bárcsak +bármilyen +be +belé +beléd +beléjük +belém +belénk +belétek +belőle +belőled +belőlem +belőletek +belőlük +belőlünk +belül +ben +benne +benned +bennem +bennetek +bennük +bennünk +búcsú +csak +csakhogy +csupán +de +dehogy +ebbe +ebben +ebből +eddig +egész +egészen +egy +egyéb +egyebek +egyebet +egyedül +egyelőre +egyet +egyik +egymás +egyre +egyszerre +együtt +ehhez +el +elé +eléd +elég +eleinte +eléjük +elém +elénk +elétek +éljen +ellen +ellenére +ellenes +elleni +elmondta +előbb +elől +előle +előled +előlem +előletek +előlük +előlünk +először +előtt +előtte +előtted +előttem +előttetek +előttük +előttünk +előző +első +elsők +elsősorban +elsőt +én +engem +ennek +ennél +ennyi +enyém +erre +erről +érte +érted +értem +értetek +értük +értünk +és +esetben +ettől +év +évben +éve +évek +éves +évi +évvel +ez +ezek +ezekbe +ezekben +ezekből +ezeken +ezekért +ezeket +ezekhez +ezekig +ezekké +ezekkel +ezeknek +ezeknél +ezekre +ezekről +ezektől +ezen +ezentúl +ezer +ezért +ezret +ezt +ezután +ezzé +ezzel +fel +fél +fele +felé +felek +felet +felett +fent +fenti +fölé +gyakran +ha +halló +hamar +hanem +hány +hányszor +harmadik +harmadikat +hármat +harminc +három +hat +hát +hátha +hatodik +hatodikat +hatot +hátulsó +hatvan +helyett +hét +hetedik +hetediket +hetet +hetven +hiába +hirtelen +hiszen +hogy +hol +holnap +holnapot +honnan +hova +hozzá +hozzád +hozzájuk +hozzám +hozzánk +hozzátok +hurrá +húsz +huszadik +idén +ide-оda +igazán +igen +így +illetve +ilyen +immár +inkább +is +ismét +itt +jelenleg +jó +jobban +jobbra +jól +jólesik +jóval +jövőre +kell +kellene +kellett +kelljen +képest +kérem +kérlek +késő +később +későn +kész +két +kétszer +ketten +kettő +kettőt +kevés +ki +kiben +kiből +kicsit +kicsoda +kié +kiért +kihez +kik +kikbe +kikben +kikből +kiken +kikért +kiket +kikhez +kikké +kikkel +kiknek +kiknél +kikre +kikről +kiktől +kilenc +kilencedik +kilencediket +kilencet +kilencven +kin +kinek +kinél +kire +kiről +kit +kitől +kivé +kivel +korábban +körül +köszönhetően +köszönöm +közben +közé +közel +közepén +közepesen +között +közül +külön +különben +különböző +különbözőbb +különbözőek +lassan +le +legalább +legyen +lehet +lehetetlen +lehetőleg +lehetőség +lenne +lennék +lennének +lesz +leszek +lesznek +leszünk +lett +lettek +lettem +lettünk +lévő +ma +maga +magad +magam +magát +magatokat +magukat +magunkat +mai +majd +majdnem +manapság +már +más +másik +másikat +másnap +második +másodszor +mások +másokat +mást +meg +még +megcsinál +megcsinálnak +megint +mégis +megvan +mellé +melléd +melléjük +mellém +mellénk +mellétek +mellett +mellette +melletted +mellettem +mellettetek +mellettük +mellettünk +mellől +mellőle +mellőled +mellőlem +mellőletek +mellőlük +mellőlünk +melyik +mennyi +mert +mi +miatt +miatta +miattad +miattam +miattatok +miattuk +miattunk +mibe +miben +miből +miért +míg +mihez +mik +mikbe +mikben +mikből +miken +mikért +miket +mikhez +mikké +mikkel +miknek +miknél +mikor +mikre +mikről +miktől +milyen +min +mind +mindegyik +mindegyiket +minden +mindenesetre +mindenki +mindent +mindenütt +mindig +mindketten +minek +minél +minket +mint +mire +miről +mit +mitől +mivé +mivel +mögé +mögéd +mögéjük +mögém +mögénk +mögétek +mögött +mögötte +mögötted +mögöttem +mögöttetek +mögöttük +mögöttünk +mögül +mögüle +mögüled +mögülem +mögületek +mögülük +mögülünk +mondta +most +mostanáig +múltkor +múlva +na +nagyon +nála +nálad +nálam +nálatok +náluk +nálunk +naponta +napot +ne +négy +negyedik +negyediket +négyet +negyven +néha +néhány +neked +nekem +neki +nekik +nektek +nekünk +nélkül +nem +nemcsak +nemrég +nincs +nyolc +nyolcadik +nyolcadikat +nyolcat +nyolcvan +ő +ők +őket +olyan +ön +önbe +önben +önből +önért +önhöz +onnan +önnek +önnel +önnél +önök +önökbe +önökben +önökből +önökért +önöket +önökhöz +önökkel +önöknek +önöknél +önökön +önökre +önökről +önöktől +önön +önre +önről +önt +öntől +öt +őt +óta +ötödik +ötödiket +ötöt +ott +ötven +pár +pedig +például +persze +rá +rád +rajta +rajtad +rajtam +rajtatok +rajtuk +rajtunk +rájuk +rám +ránk +rátok +régen +régóta +rendben +részére +rögtön +róla +rólad +rólam +rólatok +róluk +rólunk +rosszul +se +sem +semmi +semmilyen +semmiség +senki +soha +sok +sokáig +sokan +sokszor +során +sőt +stb. +számára +száz +századik +százat +szemben +szépen +szerbusz +szerint +szerinte +szerinted +szerintem +szerintetek +szerintük +szerintünk +szervusz +szinte +szíves +szívesen +szíveskedjék +talán +tavaly +távol +te +téged +tegnap +tegnapelőtt +tehát +tele +tényleg +tessék +ti +tied +titeket +tíz +tizedik +tizediket +tizenegy +tizenegyedik +tizenhárom +tizenhat +tizenhét +tizenkét +tizenkettedik +tizenkettő +tizenkilenc +tizennégy +tizennyolc +tizenöt +tizet +több +többi +többször +tőle +tőled +tőlem +tőletek +tőlük +tőlünk +tovább +további +túl +úgy +ugyanakkor +ugyanez +ugyanis +ugye +úgyis +úgynevezett +újra +úr +urak +uram +urat +után +utoljára +utolsó +vagy +vagyis +vagyok +vagytok +vagyunk +vajon +valahol +valaki +valakit +valamelyik +valami +valamint +van +vannak +végén +végre +végül +vele +veled +velem +veletek +velük +velünk +viszlát +viszont +viszontlátásra +volna +volnának +volnék +volt +voltak +voltam +voltunk diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/it_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/it_ST.txt new file mode 100644 index 0000000000..23c80a2511 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/it_ST.txt @@ -0,0 +1,400 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +abbastanza +accidenti +ad +adesso +affinche +agli +ahime +ahimè +ai +al +alcuna +alcuni +alcuno +all +alla +alle +allo +altri +altrimenti +altro +altrui +anche +ancora +anni +anno +ansa +assai +attesa +avanti +avendo +avente +aver +avere +avete +aveva +avuta +avute +avuti +avuto +basta +bene +benissimo +berlusconi +brava +bravo +c +casa +caso +cento +certa +certe +certi +certo +che +chi +chicchessia +chiunque +ci +ciascuna +ciascuno +cima +cio +ciò +cioe +cioè +circa +citta +città +codesta +codesti +codesto +cogli +coi +col +colei +coll +coloro +colui +come +con +concernente +consiglio +contro +cortesia +cos +cosa +cosi +così +cui +d +da +dagli +dai +dal +dall +dalla +dalle +dallo +davanti +degli +dei +del +dell +della +delle +dello +dentro +detto +deve +di +dice +dietro +dire +dirimpetto +dopo +dove +dovra +dovrà +due +dunque +durante +e +è +ecco +ed +egli +ella +eppure +era +erano +esse +essendo +esser +essere +essi +ex +fa +fare +fatto +favore +fin +finalmente +finche +fine +fino +forse +fra +fuori +gia +già +giacche +giorni +giorno +gli +gliela +gliele +glieli +glielo +gliene +governo +grande +grazie +gruppo +ha +hai +hanno +ho +i +ieri +il +improvviso +in +infatti +insieme +intanto +intorno +invece +io +l +la +là +lavoro +le +lei +li +lo +lontano +loro +lui +lungo +ma +macche +magari +mai +male +malgrado +malissimo +me +medesimo +mediante +meglio +meno +mentre +mesi +mezzo +mi +mia +mie +miei +mila +miliardi +milioni +ministro +mio +moltissimo +molto +mondo +nazionale +ne +negli +nei +nel +nell +nella +nelle +nello +nemmeno +neppure +nessuna +nessuno +niente +no +noi +non +nondimeno +nostra +nostre +nostri +nostro +nulla +nuovo +o +od +oggi +ogni +ognuna +ognuno +oltre +oppure +ora +ore +osi +ossia +paese +parecchi +parecchie +parecchio +parte +partendo +peccato +peggio +per +perche +perchè +percio +perciò +perfino +pero +però +persone +piedi +pieno +piglia +piu +più +po +pochissimo +poco +poi +poiche +press +prima +primo +proprio +puo +può +pure +purtroppo +qualche +qualcuna +qualcuno +quale +quali +qualunque +quando +quanta +quante +quanti +quanto +quantunque +quasi +quattro +quel +quella +quelli +quello +quest +questa +queste +questi +questo +qui +quindi +riecco +salvo +sara +sarà +sarebbe +scopo +scorso +se +secondo +seguente +sei +sempre +senza +si +sia +siamo +siete +solito +solo +sono +sopra +sotto +sta +staranno +stata +state +stati +stato +stesso +su +sua +successivo +sue +sugli +sui +sul +sull +sulla +sulle +sullo +suo +suoi +tale +talvolta +tanto +te +tempo +ti +torino +tra +tranne +tre +troppo +tu +tua +tue +tuo +tuoi +tutta +tuttavia +tutte +tutti +tutto +uguali +un +una +uno +uomo +va +vale +varia +varie +vario +verso +vi +via +vicino +visto +vita +voi +volta +vostra +vostre +vostri +vostro diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pl_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pl_ST.txt new file mode 100644 index 0000000000..e27c30eb4d --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pl_ST.txt @@ -0,0 +1,139 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +ach +aj +albo +bardzo +bez +bo +być +ci +cię +ciebie +co +czy +daleko +dla +dlaczego +dlatego +do +dobrze +dokąd +dość +dużo +dwa +dwaj +dwie +dwoje +dziś +dzisiaj +gdyby +gdzie +go +ich +ile +im +inny +ja +ją +jak +jakby +jaki +je +jeden +jedna +jedno +jego +jej +jemu +jeśli +jest +jestem +jeżeli +już +każdy +kiedy +kierunku +kto +ku +lub +ma +mają +mam +mi +mną +mnie +moi +mój +moja +moje +może +mu +my +na +nam +nami +nas +nasi +nasz +nasza +nasze +natychmiast +nią +nic +nich +nie +niego +niej +niemu +nigdy +nim +nimi +niż +obok +od +około +on +ona +one +oni +ono +owszem +po +pod +ponieważ +przed +przedtem +są +sam +sama +się +skąd +tak +taki +tam +ten +to +tobą +tobie +tu +tutaj +twoi +twój +twoja +twoje +ty +wam +wami +was +wasi +wasz +wasza +wasze +we +więc +wszystko +wtedy +wy +żaden +zawsze +że diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pt_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pt_ST.txt new file mode 100644 index 0000000000..da606445da --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/pt_ST.txt @@ -0,0 +1,357 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +a +� +adeus +agora +a� +ainda +al�m +algo +algumas +alguns +ali +ano +anos +antes +ao +aos +apenas +apoio +ap�s +aquela +aquelas +aquele +aqueles +aqui +aquilo +�rea +as +�s +assim +at� +atr�s +atrav�s +baixo +bastante +bem +bom +breve +c� +cada +catorze +cedo +cento +certamente +certeza +cima +cinco +coisa +com +como +conselho +contra +custa +da +d� +d�o +daquela +daquele +dar +das +de +debaixo +demais +dentro +depois +desde +dessa +desse +desta +deste +deve +dever� +dez +dezanove +dezasseis +dezassete +dezoito +dia +diante +diz +dizem +dizer +do +dois +dos +doze +duas +d�vida +e +� +ela +elas +ele +eles +em +embora +entre +era +�s +essa +essas +esse +esses +esta +est� +estar +estas +est�s +estava +este +estes +esteve +estive +estivemos +estiveram +estiveste +estivestes +estou +eu +exemplo +fa�o +falta +favor +faz +fazeis +fazem +fazemos +fazer +fazes +fez +fim +final +foi +fomos +for +foram +forma +foste +fostes +fui +geral +grande +grandes +grupo +h� +hoje +horas +isso +isto +j� +l� +lado +local +logo +longe +lugar +maior +maioria +mais +mal +mas +m�ximo +me +meio +menor +menos +m�s +meses +meu +meus +mil +minha +minhas +momento +muito +muitos +na +nada +n�o +naquela +naquele +nas +nem +nenhuma +nessa +nesse +nesta +neste +n�vel +no +noite +nome +nos +n�s +nossa +nossas +nosso +nossos +nova +nove +novo +novos +num +numa +n�mero +nunca +o +obra +obrigada +obrigado +oitava +oitavo +oito +onde +ontem +onze +os +ou +outra +outras +outro +outros +para +parece +parte +partir +pela +pelas +pelo +pelos +perto +pode +p�de +podem +poder +p�e +p�em +ponto +pontos +por +porque +porqu� +posi��o +poss�vel +possivelmente +posso +pouca +pouco +primeira +primeiro +pr�prio +pr�ximo +puderam +qual +quando +quanto +quarta +quarto +quatro +que +qu� +quem +quer +quero +quest�o +quinta +quinto +quinze +rela��o +sabe +s�o +se +segunda +segundo +sei +seis +sem +sempre +ser +seria +sete +s�tima +s�timo +seu +seus +sexta +sexto +sim +sistema +sob +sobre +sois +somos +sou +sua +suas +tal +talvez +tamb�m +tanto +t�o +tarde +te +tem +t�m +temos +tendes +tenho +tens +ter +terceira +terceiro +teu +teus +teve +tive +tivemos +tiveram +tiveste +tivestes +toda +todas +todo +todos +trabalho +tr�s +treze +tu +tua +tuas +tudo +um +uma +umas +uns +vai +vais +v�o +v�rios +vem +v�m +vens +ver +vez +vezes +viagem +vindo +vinte +voc� +voc�s +vos +v�s +vossa +vossas +vosso +vossos +zero diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ro_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ro_ST.txt new file mode 100644 index 0000000000..ec7c517eb2 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ro_ST.txt @@ -0,0 +1,283 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +acea +aceasta +această +aceea +acei +aceia +acel +acela +acele +acelea +acest +acesta +aceste +acestea +aceşti +aceştia +acolo +acord +acum +ai +aia +aibă +aici +al +ăla +ale +alea +ălea +altceva +altcineva +am +ar +are +aş +aşadar +asemenea +asta +ăsta +astăzi +astea +ăstea +ăştia +asupra +aţi +au +avea +avem +aveţi +azi +bine +bucur +bună +ca +că +căci +când +care +cărei +căror +cărui +cât +câte +câţi +către +câtva +caut +ce +cel +ceva +chiar +cinci +cînd +cine +cineva +cît +cîte +cîţi +cîtva +contra +cu +cum +cumva +curând +curînd +da +dă +dacă +dar +dată +datorită +dau +de +deci +deja +deoarece +departe +deşi +din +dinaintea +dintr- +dintre +doi +doilea +două +drept +după +ea +ei +el +ele +eram +este +eşti +eu +face +fără +fata +fi +fie +fiecare +fii +fim +fiţi +fiu +frumos +graţie +halbă +iar +ieri +îi +îl +îmi +împotriva +în +înainte +înaintea +încât +încît +încotro +între +întrucât +întrucît +îţi +la +lângă +le +li +lîngă +lor +lui +mă +mai +mâine +mea +mei +mele +mereu +meu +mi +mie +mîine +mine +mult +multă +mulţi +mulţumesc +ne +nevoie +nicăieri +nici +nimeni +nimeri +nimic +nişte +noastră +noastre +noi +noroc +noştri +nostru +nouă +nu +opt +ori +oricând +oricare +oricât +orice +oricînd +oricine +oricît +oricum +oriunde +până +patra +patru +patrulea +pe +pentru +peste +pic +pînă +poate +pot +prea +prima +primul +prin +printr- +puţin +puţina +puţină +rog +sa +să +săi +sale +şapte +şase +sau +său +se +şi +sînt +sîntem +sînteţi +spate +spre +ştiu +sub +sunt +suntem +sunteţi +sută +ta +tăi +tale +tău +te +ţi +ţie +timp +tine +toată +toate +tot +toţi +totuşi +trei +treia +treilea +tu +un +una +unde +undeva +unei +uneia +unele +uneori +unii +unor +unora +unu +unui +unuia +unul +vă +vi +voastră +voastre +voi +voştri +vostru +vouă +vreme +vreo +vreun +zece +zero +zi +zice diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ru_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ru_ST.txt new file mode 100644 index 0000000000..d7de4e57d7 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/ru_ST.txt @@ -0,0 +1,423 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +а +е +и +ж +м +о +на +не +ни +об +но +он +мне +мои +мож +она +они +оно +мной +много +многочисленное +многочисленная +многочисленные +многочисленный +мною +мой +мог +могут +можно +может +можхо +мор +моя +моё +мочь +над +нее +оба +нам +нем +нами +ними +мимо +немного +одной +одного +менее +однажды +однако +меня +нему +меньше +ней +наверху +него +ниже +мало +надо +один +одиннадцать +одиннадцатый +назад +наиболее +недавно +миллионов +недалеко +между +низко +меля +нельзя +нибудь +непрерывно +наконец +никогда +никуда +нас +наш +нет +нею +неё +них +мира +наша +наше +наши +ничего +начала +нередко +несколько +обычно +опять +около +мы +ну +нх +от +отовсюду +особенно +нужно +очень +отсюда +в +во +вон +вниз +внизу +вокруг +вот +восемнадцать +восемнадцатый +восемь +восьмой +вверх +вам +вами +важное +важная +важные +важный +вдали +везде +ведь +вас +ваш +ваша +ваше +ваши +впрочем +весь +вдруг +вы +все +второй +всем +всеми +времени +время +всему +всего +всегда +всех +всею +всю +вся +всё +всюду +г +год +говорил +говорит +года +году +где +да +ее +за +из +ли +же +им +до +по +ими +под +иногда +довольно +именно +долго +позже +более +должно +пожалуйста +значит +иметь +больше +пока +ему +имя +пор +пора +потом +потому +после +почему +почти +посреди +ей +два +две +двенадцать +двенадцатый +двадцать +двадцатый +двух +его +дел +или +без +день +занят +занята +занято +заняты +действительно +давно +девятнадцать +девятнадцатый +девять +девятый +даже +алло +жизнь +далеко +близко +здесь +дальше +для +лет +зато +даром +первый +перед +затем +зачем +лишь +десять +десятый +ею +её +их +бы +еще +при +был +про +процентов +против +просто +бывает +бывь +если +люди +была +были +было +будем +будет +будете +будешь +прекрасно +буду +будь +будто +будут +ещё +пятнадцать +пятнадцатый +друго +другое +другой +другие +другая +других +есть +пять +быть +лучше +пятый +к +ком +конечно +кому +кого +когда +которой +которого +которая +которые +который +которых +кем +каждое +каждая +каждые +каждый +кажется +как +какой +какая +кто +кроме +куда +кругом +с +т +у +я +та +те +уж +со +то +том +снова +тому +совсем +того +тогда +тоже +собой +тобой +собою +тобою +сначала +только +уметь +тот +тою +хорошо +хотеть +хочешь +хоть +хотя +свое +свои +твой +своей +своего +своих +свою +твоя +твоё +раз +уже +сам +там +тем +чем +сама +сами +теми +само +рано +самом +самому +самой +самого +семнадцать +семнадцатый +самим +самими +самих +саму +семь +чему +раньше +сейчас +чего +сегодня +себе +тебе +сеаой +человек +разве +теперь +себя +тебя +седьмой +спасибо +слишком +так +такое +такой +такие +также +такая +сих +тех +чаще +четвертый +через +часто +шестой +шестнадцать +шестнадцатый +шесть +четыре +четырнадцать +четырнадцатый +сколько +сказал +сказала +сказать +ту +ты +три +эта +эти +что +это +чтоб +этом +этому +этой +этого +чтобы +этот +стал +туда +этим +этими +рядом +тринадцать +тринадцатый +этих +третий +тут +эту +суть +чуть +тысяч + diff --git a/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/sv_ST.txt b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/sv_ST.txt new file mode 100644 index 0000000000..582ab5acc5 --- /dev/null +++ b/src/resources/org/apache/cassandra/index/sasi/analyzer/filter/sv_ST.txt @@ -0,0 +1,387 @@ +# Stop Words List from http://members.unine.ch/jacques.savoy/clef/index.html +aderton +adertonde +adj� +aldrig +alla +allas +allt +alltid +allts� +�n +andra +andras +annan +annat +�nnu +artonde +artonn +�tminstone +att +�tta +�ttio +�ttionde +�ttonde +av +�ven +b�da +b�das +bakom +bara +b�st +b�ttre +beh�va +beh�vas +beh�vde +beh�vt +beslut +beslutat +beslutit +bland +blev +bli +blir +blivit +bort +borta +bra +d� +dag +dagar +dagarna +dagen +d�r +d�rf�r +de +del +delen +dem +den +deras +dess +det +detta +dig +din +dina +dit +ditt +dock +du +efter +eftersom +elfte +eller +elva +en +enkel +enkelt +enkla +enligt +er +era +ert +ett +ettusen +f� +fanns +f�r +f�tt +fem +femte +femtio +femtionde +femton +femtonde +fick +fin +finnas +finns +fj�rde +fjorton +fjortonde +fler +flera +flesta +f�ljande +f�r +f�re +f�rl�t +f�rra +f�rsta +fram +framf�r +fr�n +fyra +fyrtio +fyrtionde +g� +g�lla +g�ller +g�llt +g�r +g�rna +g�tt +genast +genom +gick +gjorde +gjort +god +goda +godare +godast +g�r +g�ra +gott +ha +hade +haft +han +hans +har +h�r +heller +hellre +helst +helt +henne +hennes +hit +h�g +h�ger +h�gre +h�gst +hon +honom +hundra +hundraen +hundraett +hur +i +ibland +idag +ig�r +igen +imorgon +in +inf�r +inga +ingen +ingenting +inget +innan +inne +inom +inte +inuti +ja +jag +j�mf�rt +kan +kanske +knappast +kom +komma +kommer +kommit +kr +kunde +kunna +kunnat +kvar +l�nge +l�ngre +l�ngsam +l�ngsammare +l�ngsammast +l�ngsamt +l�ngst +l�ngt +l�tt +l�ttare +l�ttast +legat +ligga +ligger +lika +likst�lld +likst�llda +lilla +lite +liten +litet +man +m�nga +m�ste +med +mellan +men +mer +mera +mest +mig +min +mina +mindre +minst +mitt +mittemot +m�jlig +m�jligen +m�jligt +m�jligtvis +mot +mycket +n�gon +n�gonting +n�got +n�gra +n�r +n�sta +ned +nederst +nedersta +nedre +nej +ner +ni +nio +nionde +nittio +nittionde +nitton +nittonde +n�dv�ndig +n�dv�ndiga +n�dv�ndigt +n�dv�ndigtvis +nog +noll +nr +nu +nummer +och +ocks� +ofta +oftast +olika +olikt +om +oss +�ver +�vermorgon +�verst +�vre +p� +rakt +r�tt +redan +s� +sade +s�ga +s�ger +sagt +samma +s�mre +s�mst +sedan +senare +senast +sent +sex +sextio +sextionde +sexton +sextonde +sig +sin +sina +sist +sista +siste +sitt +sj�tte +sju +sjunde +sjuttio +sjuttionde +sjutton +sjuttonde +ska +skall +skulle +slutligen +sm� +sm�tt +snart +som +stor +stora +st�rre +st�rst +stort +tack +tidig +tidigare +tidigast +tidigt +till +tills +tillsammans +tio +tionde +tjugo +tjugoen +tjugoett +tjugonde +tjugotre +tjugotv� +tjungo +tolfte +tolv +tre +tredje +trettio +trettionde +tretton +trettonde +tv� +tv�hundra +under +upp +ur +urs�kt +ut +utan +utanf�r +ute +vad +v�nster +v�nstra +var +v�r +vara +v�ra +varf�r +varifr�n +varit +varken +v�rre +vars�god +vart +v�rt +vem +vems +verkligen +vi +vid +vidare +viktig +viktigare +viktigast +viktigt +vilka +vilken +vilket +vill diff --git a/test/conf/cassandra-murmur.yaml b/test/conf/cassandra-murmur.yaml new file mode 100644 index 0000000000..00f8b4c0fa --- /dev/null +++ b/test/conf/cassandra-murmur.yaml @@ -0,0 +1,43 @@ +# +# Warning! +# Consider the effects on 'o.a.c.i.s.LegacySSTableTest' before changing schemas in this file. +# +cluster_name: Test Cluster +memtable_allocation_type: heap_buffers +commitlog_sync: batch +commitlog_sync_batch_window_in_ms: 1.0 +commitlog_segment_size_in_mb: 5 +commitlog_directory: build/test/cassandra/commitlog +hints_directory: build/test/cassandra/hints +partitioner: org.apache.cassandra.dht.Murmur3Partitioner +listen_address: 127.0.0.1 +storage_port: 7010 +rpc_port: 9170 +start_native_transport: true +native_transport_port: 9042 +column_index_size_in_kb: 4 +saved_caches_directory: build/test/cassandra/saved_caches +data_file_directories: + - build/test/cassandra/data +disk_access_mode: mmap +seed_provider: + - class_name: org.apache.cassandra.locator.SimpleSeedProvider + parameters: + - seeds: "127.0.0.1" +endpoint_snitch: org.apache.cassandra.locator.SimpleSnitch +dynamic_snitch: true +request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler +request_scheduler_id: keyspace +server_encryption_options: + internode_encryption: none + keystore: conf/.keystore + keystore_password: cassandra + truststore: conf/.truststore + truststore_password: cassandra +incremental_backups: true +concurrent_compactors: 4 +compaction_throughput_mb_per_sec: 0 +row_cache_class_name: org.apache.cassandra.cache.OHCProvider +row_cache_size_in_mb: 16 +enable_user_defined_functions: true +enable_scripted_user_defined_functions: true diff --git a/test/resources/tokenization/adventures_of_huckleberry_finn_mark_twain.txt b/test/resources/tokenization/adventures_of_huckleberry_finn_mark_twain.txt new file mode 100644 index 0000000000..27cadc3bfa --- /dev/null +++ b/test/resources/tokenization/adventures_of_huckleberry_finn_mark_twain.txt @@ -0,0 +1,12361 @@ + + +The Project Gutenberg EBook of Adventures of Huckleberry Finn, Complete +by Mark Twain (Samuel Clemens) + +This eBook is for the use of anyone anywhere at no cost and with almost +no restrictions whatsoever. You may copy it, give it away or re-use +it under the terms of the Project Gutenberg License included with this +eBook or online at www.gutenberg.net + +Title: Adventures of Huckleberry Finn, Complete + +Author: Mark Twain (Samuel Clemens) + +Release Date: August 20, 2006 [EBook #76] + +Last Updated: October 20, 2012] + +Language: English + + +*** START OF THIS PROJECT GUTENBERG EBOOK HUCKLEBERRY FINN *** + +Produced by David Widger + + + + + +ADVENTURES + +OF + +HUCKLEBERRY FINN + +(Tom Sawyer's Comrade) + +By Mark Twain + +Complete + + + + +CONTENTS. + +CHAPTER I. Civilizing Huck.—Miss Watson.—Tom Sawyer Waits. + +CHAPTER II. The Boys Escape Jim.—Torn Sawyer's Gang.—Deep-laid Plans. + +CHAPTER III. A Good Going-over.—Grace Triumphant.—"One of Tom Sawyers's +Lies". + +CHAPTER IV. Huck and the Judge.—Superstition. + +CHAPTER V. Huck's Father.—The Fond Parent.—Reform. + +CHAPTER VI. He Went for Judge Thatcher.—Huck Decided to Leave.—Political +Economy.—Thrashing Around. + +CHAPTER VII. Laying for Him.—Locked in the Cabin.—Sinking the +Body.—Resting. + +CHAPTER VIII. Sleeping in the Woods.—Raising the Dead.—Exploring the +Island.—Finding Jim.—Jim's Escape.—Signs.—Balum. + +CHAPTER IX. The Cave.—The Floating House. + +CHAPTER X. The Find.—Old Hank Bunker.—In Disguise. + +CHAPTER XI. Huck and the Woman.—The Search.—Prevarication.—Going to +Goshen. + +CHAPTER XII. Slow Navigation.—Borrowing Things.—Boarding the Wreck.—The +Plotters.—Hunting for the Boat. + +CHAPTER XIII. Escaping from the Wreck.—The Watchman.—Sinking. + +CHAPTER XIV. A General Good Time.—The Harem.—French. + +CHAPTER XV. Huck Loses the Raft.—In the Fog.—Huck Finds the Raft.—Trash. + +CHAPTER XVI. Expectation.—A White Lie.—Floating Currency.—Running by +Cairo.—Swimming Ashore. + +CHAPTER XVII. An Evening Call.—The Farm in Arkansaw.—Interior +Decorations.—Stephen Dowling Bots.—Poetical Effusions. + +CHAPTER XVIII. Col. Grangerford.—Aristocracy.—Feuds.—The +Testament.—Recovering the Raft.—The Wood—pile.—Pork and Cabbage. + +CHAPTER XIX. Tying Up Day—times.—An Astronomical Theory.—Running a +Temperance Revival.—The Duke of Bridgewater.—The Troubles of Royalty. + +CHAPTER XX. Huck Explains.—Laying Out a Campaign.—Working the +Camp—meeting.—A Pirate at the Camp—meeting.—The Duke as a Printer. + +CHAPTER XXI. Sword Exercise.—Hamlet's Soliloquy.—They Loafed Around +Town.—A Lazy Town.—Old Boggs.—Dead. + +CHAPTER XXII. Sherburn.—Attending the Circus.—Intoxication in the +Ring.—The Thrilling Tragedy. + +CHAPTER XXIII. Sold.—Royal Comparisons.—Jim Gets Home-sick. + +CHAPTER XXIV. Jim in Royal Robes.—They Take a Passenger.—Getting +Information.—Family Grief. + +CHAPTER XXV. Is It Them?—Singing the "Doxologer."—Awful Square—Funeral +Orgies.—A Bad Investment . + +CHAPTER XXVI. A Pious King.—The King's Clergy.—She Asked His +Pardon.—Hiding in the Room.—Huck Takes the Money. + +CHAPTER XXVII. The Funeral.—Satisfying Curiosity.—Suspicious of +Huck,—Quick Sales and Small. + +CHAPTER XXVIII. The Trip to England.—"The Brute!"—Mary Jane Decides to +Leave.—Huck Parting with Mary Jane.—Mumps.—The Opposition Line. + +CHAPTER XXIX. Contested Relationship.—The King Explains the Loss.—A +Question of Handwriting.—Digging up the Corpse.—Huck Escapes. + +CHAPTER XXX. The King Went for Him.—A Royal Row.—Powerful Mellow. + +CHAPTER XXXI. Ominous Plans.—News from Jim.—Old Recollections.—A Sheep +Story.—Valuable Information. + +CHAPTER XXXII. Still and Sunday—like.—Mistaken Identity.—Up a Stump.—In +a Dilemma. + +CHAPTER XXXIII. A Nigger Stealer.—Southern Hospitality.—A Pretty Long +Blessing.—Tar and Feathers. + +CHAPTER XXXIV. The Hut by the Ash Hopper.—Outrageous.—Climbing the +Lightning Rod.—Troubled with Witches. + +CHAPTER XXXV. Escaping Properly.—Dark Schemes.—Discrimination in +Stealing.—A Deep Hole. + +CHAPTER XXXVI. The Lightning Rod.—His Level Best.—A Bequest to +Posterity.—A High Figure. + +CHAPTER XXXVII. The Last Shirt.—Mooning Around.—Sailing Orders.—The +Witch Pie. + +CHAPTER XXXVIII. The Coat of Arms.—A Skilled Superintendent.—Unpleasant +Glory.—A Tearful Subject. + +CHAPTER XXXIX. Rats.—Lively Bed—fellows.—The Straw Dummy. + +CHAPTER XL. Fishing.—The Vigilance Committee.—A Lively Run.—Jim Advises +a Doctor. + +CHAPTER XLI. The Doctor.—Uncle Silas.—Sister Hotchkiss.—Aunt Sally in +Trouble. + +CHAPTER XLII. Tom Sawyer Wounded.—The Doctor's Story.—Tom +Confesses.—Aunt Polly Arrives.—Hand Out Them Letters    . + +CHAPTER THE LAST. Out of Bondage.—Paying the Captive.—Yours Truly, Huck +Finn. + + + + +ILLUSTRATIONS. + +The Widows + +Moses and the "Bulrushers" + +Miss Watson + +Huck Stealing Away + +They Tip-toed Along + +Jim + +Tom Sawyer's Band of Robbers   + +Huck Creeps into his Window + +Miss Watson's Lecture + +The Robbers Dispersed + +Rubbing the Lamp + +! ! ! ! + +Judge Thatcher surprised + +Jim Listening + +"Pap" + +Huck and his Father + +Reforming the Drunkard + +Falling from Grace + +The Widows + +Moses and the "Bulrushers" + +Miss Watson + +Huck Stealing Away + +They Tip-toed Along + +Jim + +Tom Sawyer's Band of Robbers   + +Huck Creeps into his Window + +Miss Watson's Lecture + +The Robbers Dispersed + +Rubbing the Lamp + +! ! ! ! + +Judge Thatcher surprised + +Jim Listening + +"Pap" + +Huck and his Father + +Reforming the Drunkard + +Falling from Grace + +Getting out of the Way + +Solid Comfort + +Thinking it Over + +Raising a Howl + +"Git Up" + +The Shanty + +Shooting the Pig + +Taking a Rest + +In the Woods + +Watching the Boat + +Discovering the Camp Fire + +Jim and the Ghost + +Misto Bradish's Nigger + +Exploring the Cave + +In the Cave + +Jim sees a Dead Man + +They Found Eight Dollars + +Jim and the Snake + +Old Hank Bunker + +"A Fair Fit" + +"Come In" + +"Him and another Man" + +She puts up a Snack + +"Hump Yourself" + +On the Raft + +He sometimes Lifted a Chicken + +"Please don't, Bill" + +"It ain't Good Morals" + +"Oh! Lordy, Lordy!" + +In a Fix + +"Hello, What's Up?" + +The Wreck + +We turned in and Slept + +Turning over the Truck + +Solomon and his Million Wives + +The story of "Sollermun" + +"We Would Sell the Raft" + +Among the Snags + +Asleep on the Raft + +"Something being Raftsman" + +"Boy, that's a Lie" + +"Here I is, Huck" + +Climbing up the Bank + +"Who's There?" + +"Buck" + +"It made Her look Spidery" + +"They got him out and emptied Him"   + +The House + +Col. Grangerford + +Young Harney Shepherdson + +Miss Charlotte + +"And asked me if I Liked Her" + +"Behind the Wood-pile" + +Hiding Day-times + +"And Dogs a-Coming" + +"By rights I am a Duke!" + +"I am the Late Dauphin" + +Tail Piece + +On the Raft + +The King as Juliet + +"Courting on the Sly" + +"A Pirate for Thirty Years" + +Another little Job + +Practizing + +Hamlet's Soliloquy + +"Gimme a Chaw" + +A Little Monthly Drunk + +The Death of Boggs + +Sherburn steps out + +A Dead Head + +He shed Seventeen Suits + +Tragedy + +Their Pockets Bulged + +Henry the Eighth in Boston Harbor + +Harmless + +Adolphus + +He fairly emptied that Young Fellow + +"Alas, our Poor Brother" + +"You Bet it is" + +Leaking + +Making up the "Deffisit" + +Going for him + +The Doctor + +The Bag of Money + +The Cubby + +Supper with the Hare-Lip + +Honest Injun + +The Duke looks under the Bed + +Huck takes the Money + +A Crack in the Dining-room Door + +The Undertaker + +"He had a Rat!" + +"Was you in my Room?" + +Jawing + +In Trouble + +Indignation + +How to Find Them + +He Wrote + +Hannah with the Mumps + +The Auction + +The True Brothers + +The Doctor leads Huck + +The Duke Wrote + +"Gentlemen, Gentlemen!" + +"Jim Lit Out" + +The King shakes Huck + +The Duke went for Him + +Spanish Moss + +"Who Nailed Him?" + +Thinking + +He gave him Ten Cents + +Striking for the Back Country + +Still and Sunday-like + +She hugged him tight + +"Who do you reckon it is?" + +"It was Tom Sawyer" + +"Mr. Archibald Nichols, I presume?" + +A pretty long Blessing + +Traveling By Rail + +Vittles + +A Simple Job + +Witches + +Getting Wood + +One of the Best Authorities + +The Breakfast-Horn + +Smouching the Knives + +Going down the Lightning-Rod + +Stealing spoons + +Tom advises a Witch Pie + +The Rubbage-Pile + +"Missus, dey's a Sheet Gone" + +In a Tearing Way + +One of his Ancestors + +Jim's Coat of Arms + +A Tough Job + +Buttons on their Tails + +Irrigation + +Keeping off Dull Times + +Sawdust Diet + +Trouble is Brewing + +Fishing + +Every one had a Gun + +Tom caught on a Splinter + +Jim advises a Doctor + +The Doctor + +Uncle Silas in Danger + +Old Mrs. Hotchkiss + +Aunt Sally talks to Huck + +Tom Sawyer wounded + +The Doctor speaks for Jim + +Tom rose square up in Bed + +"Hand out them Letters" + +Out of Bondage + +Tom's Liberality + +Yours Truly + + + + +EXPLANATORY + +IN this book a number of dialects are used, to wit:  the Missouri negro +dialect; the extremest form of the backwoods Southwestern dialect; the +ordinary "Pike County" dialect; and four modified varieties of this +last. The shadings have not been done in a haphazard fashion, or by +guesswork; but painstakingly, and with the trustworthy guidance and +support of personal familiarity with these several forms of speech. + +I make this explanation for the reason that without it many readers +would suppose that all these characters were trying to talk alike and +not succeeding. + +THE AUTHOR. + + + + +HUCKLEBERRY FINN + +Scene:  The Mississippi Valley Time:  Forty to fifty years ago + + + + +CHAPTER I. + +YOU don't know about me without you have read a book by the name of The +Adventures of Tom Sawyer; but that ain't no matter.  That book was made +by Mr. Mark Twain, and he told the truth, mainly.  There was things +which he stretched, but mainly he told the truth.  That is nothing.  I +never seen anybody but lied one time or another, without it was Aunt +Polly, or the widow, or maybe Mary.  Aunt Polly—Tom's Aunt Polly, she +is—and Mary, and the Widow Douglas is all told about in that book, which +is mostly a true book, with some stretchers, as I said before. + +Now the way that the book winds up is this:  Tom and me found the money +that the robbers hid in the cave, and it made us rich.  We got six +thousand dollars apiece—all gold.  It was an awful sight of money when +it was piled up.  Well, Judge Thatcher he took it and put it out +at interest, and it fetched us a dollar a day apiece all the year +round—more than a body could tell what to do with.  The Widow Douglas +she took me for her son, and allowed she would sivilize me; but it was +rough living in the house all the time, considering how dismal regular +and decent the widow was in all her ways; and so when I couldn't stand +it no longer I lit out.  I got into my old rags and my sugar-hogshead +again, and was free and satisfied.  But Tom Sawyer he hunted me up and +said he was going to start a band of robbers, and I might join if I +would go back to the widow and be respectable.  So I went back. + +The widow she cried over me, and called me a poor lost lamb, and she +called me a lot of other names, too, but she never meant no harm by +it. She put me in them new clothes again, and I couldn't do nothing but +sweat and sweat, and feel all cramped up.  Well, then, the old thing +commenced again.  The widow rung a bell for supper, and you had to come +to time. When you got to the table you couldn't go right to eating, but +you had to wait for the widow to tuck down her head and grumble a little +over the victuals, though there warn't really anything the matter with +them,—that is, nothing only everything was cooked by itself.  In a +barrel of odds and ends it is different; things get mixed up, and the +juice kind of swaps around, and the things go better. + +After supper she got out her book and learned me about Moses and the +Bulrushers, and I was in a sweat to find out all about him; but by and +by she let it out that Moses had been dead a considerable long time; so +then I didn't care no more about him, because I don't take no stock in +dead people. + +Pretty soon I wanted to smoke, and asked the widow to let me.  But she +wouldn't.  She said it was a mean practice and wasn't clean, and I must +try to not do it any more.  That is just the way with some people.  They +get down on a thing when they don't know nothing about it.  Here she was +a-bothering about Moses, which was no kin to her, and no use to anybody, +being gone, you see, yet finding a power of fault with me for doing a +thing that had some good in it.  And she took snuff, too; of course that +was all right, because she done it herself. + +Her sister, Miss Watson, a tolerable slim old maid, with goggles on, +had just come to live with her, and took a set at me now with a +spelling-book. She worked me middling hard for about an hour, and then +the widow made her ease up.  I couldn't stood it much longer.  Then for +an hour it was deadly dull, and I was fidgety.  Miss Watson would say, +"Don't put your feet up there, Huckleberry;" and "Don't scrunch up +like that, Huckleberry—set up straight;" and pretty soon she would +say, "Don't gap and stretch like that, Huckleberry—why don't you try to +behave?"  Then she told me all about the bad place, and I said I wished +I was there. She got mad then, but I didn't mean no harm.  All I wanted +was to go somewheres; all I wanted was a change, I warn't particular. + She said it was wicked to say what I said; said she wouldn't say it for +the whole world; she was going to live so as to go to the good place. + Well, I couldn't see no advantage in going where she was going, so I +made up my mind I wouldn't try for it.  But I never said so, because it +would only make trouble, and wouldn't do no good. + +Now she had got a start, and she went on and told me all about the good +place.  She said all a body would have to do there was to go around all +day long with a harp and sing, forever and ever.  So I didn't think +much of it. But I never said so.  I asked her if she reckoned Tom Sawyer +would go there, and she said not by a considerable sight.  I was glad +about that, because I wanted him and me to be together. + +Miss Watson she kept pecking at me, and it got tiresome and lonesome. + By and by they fetched the niggers in and had prayers, and then +everybody was off to bed.  I went up to my room with a piece of candle, +and put it on the table.  Then I set down in a chair by the window and +tried to think of something cheerful, but it warn't no use.  I felt +so lonesome I most wished I was dead.  The stars were shining, and the +leaves rustled in the woods ever so mournful; and I heard an owl, away +off, who-whooing about somebody that was dead, and a whippowill and a +dog crying about somebody that was going to die; and the wind was trying +to whisper something to me, and I couldn't make out what it was, and so +it made the cold shivers run over me. Then away out in the woods I heard +that kind of a sound that a ghost makes when it wants to tell about +something that's on its mind and can't make itself understood, and so +can't rest easy in its grave, and has to go about that way every night +grieving.  I got so down-hearted and scared I did wish I had some +company.  Pretty soon a spider went crawling up my shoulder, and I +flipped it off and it lit in the candle; and before I could budge it +was all shriveled up.  I didn't need anybody to tell me that that was +an awful bad sign and would fetch me some bad luck, so I was scared +and most shook the clothes off of me. I got up and turned around in my +tracks three times and crossed my breast every time; and then I tied +up a little lock of my hair with a thread to keep witches away.  But +I hadn't no confidence.  You do that when you've lost a horseshoe that +you've found, instead of nailing it up over the door, but I hadn't ever +heard anybody say it was any way to keep off bad luck when you'd killed +a spider. + +I set down again, a-shaking all over, and got out my pipe for a smoke; +for the house was all as still as death now, and so the widow wouldn't +know. Well, after a long time I heard the clock away off in the town +go boom—boom—boom—twelve licks; and all still again—stiller than +ever. Pretty soon I heard a twig snap down in the dark amongst the +trees—something was a stirring.  I set still and listened.  Directly I +could just barely hear a "me-yow! me-yow!" down there.  That was good! + Says I, "me-yow! me-yow!" as soft as I could, and then I put out the +light and scrambled out of the window on to the shed.  Then I slipped +down to the ground and crawled in among the trees, and, sure enough, +there was Tom Sawyer waiting for me. + + + + +CHAPTER II. + +WE went tiptoeing along a path amongst the trees back towards the end of +the widow's garden, stooping down so as the branches wouldn't scrape our +heads. When we was passing by the kitchen I fell over a root and made +a noise.  We scrouched down and laid still.  Miss Watson's big nigger, +named Jim, was setting in the kitchen door; we could see him pretty +clear, because there was a light behind him.  He got up and stretched +his neck out about a minute, listening.  Then he says: + +"Who dah?" + +He listened some more; then he come tiptoeing down and stood right +between us; we could a touched him, nearly.  Well, likely it was +minutes and minutes that there warn't a sound, and we all there so close +together.  There was a place on my ankle that got to itching, but I +dasn't scratch it; and then my ear begun to itch; and next my back, +right between my shoulders.  Seemed like I'd die if I couldn't scratch. + Well, I've noticed that thing plenty times since.  If you are with +the quality, or at a funeral, or trying to go to sleep when you ain't +sleepy—if you are anywheres where it won't do for you to scratch, why +you will itch all over in upwards of a thousand places. Pretty soon Jim +says: + +"Say, who is you?  Whar is you?  Dog my cats ef I didn' hear sumf'n. +Well, I know what I's gwyne to do:  I's gwyne to set down here and +listen tell I hears it agin." + +So he set down on the ground betwixt me and Tom.  He leaned his back up +against a tree, and stretched his legs out till one of them most touched +one of mine.  My nose begun to itch.  It itched till the tears come into +my eyes.  But I dasn't scratch.  Then it begun to itch on the inside. +Next I got to itching underneath.  I didn't know how I was going to set +still. This miserableness went on as much as six or seven minutes; but +it seemed a sight longer than that.  I was itching in eleven different +places now.  I reckoned I couldn't stand it more'n a minute longer, +but I set my teeth hard and got ready to try.  Just then Jim begun +to breathe heavy; next he begun to snore—and then I was pretty soon +comfortable again. + +Tom he made a sign to me—kind of a little noise with his mouth—and we +went creeping away on our hands and knees.  When we was ten foot off Tom +whispered to me, and wanted to tie Jim to the tree for fun.  But I said +no; he might wake and make a disturbance, and then they'd find out I +warn't in. Then Tom said he hadn't got candles enough, and he would slip +in the kitchen and get some more.  I didn't want him to try.  I said Jim +might wake up and come.  But Tom wanted to resk it; so we slid in there +and got three candles, and Tom laid five cents on the table for pay. +Then we got out, and I was in a sweat to get away; but nothing would do +Tom but he must crawl to where Jim was, on his hands and knees, and play +something on him.  I waited, and it seemed a good while, everything was +so still and lonesome. + +As soon as Tom was back we cut along the path, around the garden fence, +and by and by fetched up on the steep top of the hill the other side of +the house.  Tom said he slipped Jim's hat off of his head and hung it +on a limb right over him, and Jim stirred a little, but he didn't wake. +Afterwards Jim said the witches be witched him and put him in a trance, +and rode him all over the State, and then set him under the trees again, +and hung his hat on a limb to show who done it.  And next time Jim told +it he said they rode him down to New Orleans; and, after that, every +time he told it he spread it more and more, till by and by he said they +rode him all over the world, and tired him most to death, and his back +was all over saddle-boils.  Jim was monstrous proud about it, and he +got so he wouldn't hardly notice the other niggers.  Niggers would come +miles to hear Jim tell about it, and he was more looked up to than any +nigger in that country.  Strange niggers would stand with their mouths +open and look him all over, same as if he was a wonder.  Niggers is +always talking about witches in the dark by the kitchen fire; but +whenever one was talking and letting on to know all about such things, +Jim would happen in and say, "Hm!  What you know 'bout witches?" and +that nigger was corked up and had to take a back seat.  Jim always kept +that five-center piece round his neck with a string, and said it was a +charm the devil give to him with his own hands, and told him he could +cure anybody with it and fetch witches whenever he wanted to just by +saying something to it; but he never told what it was he said to it. + Niggers would come from all around there and give Jim anything they +had, just for a sight of that five-center piece; but they wouldn't touch +it, because the devil had had his hands on it.  Jim was most ruined for +a servant, because he got stuck up on account of having seen the devil +and been rode by witches. + +Well, when Tom and me got to the edge of the hilltop we looked away down +into the village and could see three or four lights twinkling, where +there was sick folks, maybe; and the stars over us was sparkling ever +so fine; and down by the village was the river, a whole mile broad, and +awful still and grand.  We went down the hill and found Jo Harper and +Ben Rogers, and two or three more of the boys, hid in the old tanyard. + So we unhitched a skiff and pulled down the river two mile and a half, +to the big scar on the hillside, and went ashore. + +We went to a clump of bushes, and Tom made everybody swear to keep the +secret, and then showed them a hole in the hill, right in the thickest +part of the bushes.  Then we lit the candles, and crawled in on our +hands and knees.  We went about two hundred yards, and then the cave +opened up. Tom poked about amongst the passages, and pretty soon ducked +under a wall where you wouldn't a noticed that there was a hole.  We +went along a narrow place and got into a kind of room, all damp and +sweaty and cold, and there we stopped.  Tom says: + +"Now, we'll start this band of robbers and call it Tom Sawyer's Gang. +Everybody that wants to join has got to take an oath, and write his name +in blood." + +Everybody was willing.  So Tom got out a sheet of paper that he had +wrote the oath on, and read it.  It swore every boy to stick to the +band, and never tell any of the secrets; and if anybody done anything to +any boy in the band, whichever boy was ordered to kill that person and +his family must do it, and he mustn't eat and he mustn't sleep till he +had killed them and hacked a cross in their breasts, which was the sign +of the band. And nobody that didn't belong to the band could use that +mark, and if he did he must be sued; and if he done it again he must be +killed.  And if anybody that belonged to the band told the secrets, he +must have his throat cut, and then have his carcass burnt up and the +ashes scattered all around, and his name blotted off of the list with +blood and never mentioned again by the gang, but have a curse put on it +and be forgot forever. + +Everybody said it was a real beautiful oath, and asked Tom if he got +it out of his own head.  He said, some of it, but the rest was out of +pirate-books and robber-books, and every gang that was high-toned had +it. + +Some thought it would be good to kill the families of boys that told +the secrets.  Tom said it was a good idea, so he took a pencil and wrote +it in. Then Ben Rogers says: + +"Here's Huck Finn, he hain't got no family; what you going to do 'bout +him?" + +"Well, hain't he got a father?" says Tom Sawyer. + +"Yes, he's got a father, but you can't never find him these days.  He +used to lay drunk with the hogs in the tanyard, but he hain't been seen +in these parts for a year or more." + +They talked it over, and they was going to rule me out, because they +said every boy must have a family or somebody to kill, or else it +wouldn't be fair and square for the others.  Well, nobody could think of +anything to do—everybody was stumped, and set still.  I was most ready +to cry; but all at once I thought of a way, and so I offered them Miss +Watson—they could kill her.  Everybody said: + +"Oh, she'll do.  That's all right.  Huck can come in." + +Then they all stuck a pin in their fingers to get blood to sign with, +and I made my mark on the paper. + +"Now," says Ben Rogers, "what's the line of business of this Gang?" + +"Nothing only robbery and murder," Tom said. + +"But who are we going to rob?—houses, or cattle, or—" + +"Stuff! stealing cattle and such things ain't robbery; it's burglary," +says Tom Sawyer.  "We ain't burglars.  That ain't no sort of style.  We +are highwaymen.  We stop stages and carriages on the road, with masks +on, and kill the people and take their watches and money." + +"Must we always kill the people?" + +"Oh, certainly.  It's best.  Some authorities think different, but +mostly it's considered best to kill them—except some that you bring to +the cave here, and keep them till they're ransomed." + +"Ransomed?  What's that?" + +"I don't know.  But that's what they do.  I've seen it in books; and so +of course that's what we've got to do." + +"But how can we do it if we don't know what it is?" + +"Why, blame it all, we've got to do it.  Don't I tell you it's in the +books?  Do you want to go to doing different from what's in the books, +and get things all muddled up?" + +"Oh, that's all very fine to say, Tom Sawyer, but how in the nation +are these fellows going to be ransomed if we don't know how to do it +to them?—that's the thing I want to get at.  Now, what do you reckon it +is?" + +"Well, I don't know.  But per'aps if we keep them till they're ransomed, +it means that we keep them till they're dead." + +"Now, that's something like.  That'll answer.  Why couldn't you said +that before?  We'll keep them till they're ransomed to death; and a +bothersome lot they'll be, too—eating up everything, and always trying +to get loose." + +"How you talk, Ben Rogers.  How can they get loose when there's a guard +over them, ready to shoot them down if they move a peg?" + +"A guard!  Well, that is good.  So somebody's got to set up all night +and never get any sleep, just so as to watch them.  I think that's +foolishness. Why can't a body take a club and ransom them as soon as +they get here?" + +"Because it ain't in the books so—that's why.  Now, Ben Rogers, do you +want to do things regular, or don't you?—that's the idea.  Don't you +reckon that the people that made the books knows what's the correct +thing to do?  Do you reckon you can learn 'em anything?  Not by a good +deal. No, sir, we'll just go on and ransom them in the regular way." + +"All right.  I don't mind; but I say it's a fool way, anyhow.  Say, do +we kill the women, too?" + +"Well, Ben Rogers, if I was as ignorant as you I wouldn't let on.  Kill +the women?  No; nobody ever saw anything in the books like that.  You +fetch them to the cave, and you're always as polite as pie to them; +and by and by they fall in love with you, and never want to go home any +more." + +"Well, if that's the way I'm agreed, but I don't take no stock in it. +Mighty soon we'll have the cave so cluttered up with women, and fellows +waiting to be ransomed, that there won't be no place for the robbers. +But go ahead, I ain't got nothing to say." + +Little Tommy Barnes was asleep now, and when they waked him up he was +scared, and cried, and said he wanted to go home to his ma, and didn't +want to be a robber any more. + +So they all made fun of him, and called him cry-baby, and that made him +mad, and he said he would go straight and tell all the secrets.  But +Tom give him five cents to keep quiet, and said we would all go home and +meet next week, and rob somebody and kill some people. + +Ben Rogers said he couldn't get out much, only Sundays, and so he wanted +to begin next Sunday; but all the boys said it would be wicked to do it +on Sunday, and that settled the thing.  They agreed to get together and +fix a day as soon as they could, and then we elected Tom Sawyer first +captain and Jo Harper second captain of the Gang, and so started home. + +I clumb up the shed and crept into my window just before day was +breaking. My new clothes was all greased up and clayey, and I was +dog-tired. + + + + +CHAPTER III. + +WELL, I got a good going-over in the morning from old Miss Watson on +account of my clothes; but the widow she didn't scold, but only cleaned +off the grease and clay, and looked so sorry that I thought I would +behave awhile if I could.  Then Miss Watson she took me in the closet +and prayed, but nothing come of it.  She told me to pray every day, and +whatever I asked for I would get it.  But it warn't so.  I tried it. +Once I got a fish-line, but no hooks.  It warn't any good to me without +hooks.  I tried for the hooks three or four times, but somehow I +couldn't make it work.  By and by, one day, I asked Miss Watson to +try for me, but she said I was a fool.  She never told me why, and I +couldn't make it out no way. + +I set down one time back in the woods, and had a long think about it. + I says to myself, if a body can get anything they pray for, why don't +Deacon Winn get back the money he lost on pork?  Why can't the widow get +back her silver snuffbox that was stole?  Why can't Miss Watson fat up? +No, says I to my self, there ain't nothing in it.  I went and told the +widow about it, and she said the thing a body could get by praying for +it was "spiritual gifts."  This was too many for me, but she told me +what she meant—I must help other people, and do everything I could for +other people, and look out for them all the time, and never think about +myself. This was including Miss Watson, as I took it.  I went out in the +woods and turned it over in my mind a long time, but I couldn't see no +advantage about it—except for the other people; so at last I reckoned +I wouldn't worry about it any more, but just let it go.  Sometimes the +widow would take me one side and talk about Providence in a way to make +a body's mouth water; but maybe next day Miss Watson would take hold +and knock it all down again.  I judged I could see that there was two +Providences, and a poor chap would stand considerable show with the +widow's Providence, but if Miss Watson's got him there warn't no help +for him any more.  I thought it all out, and reckoned I would belong +to the widow's if he wanted me, though I couldn't make out how he was +a-going to be any better off then than what he was before, seeing I was +so ignorant, and so kind of low-down and ornery. + +Pap he hadn't been seen for more than a year, and that was comfortable +for me; I didn't want to see him no more.  He used to always whale me +when he was sober and could get his hands on me; though I used to take +to the woods most of the time when he was around.  Well, about this time +he was found in the river drownded, about twelve mile above town, so +people said.  They judged it was him, anyway; said this drownded man was +just his size, and was ragged, and had uncommon long hair, which was all +like pap; but they couldn't make nothing out of the face, because it had +been in the water so long it warn't much like a face at all.  They said +he was floating on his back in the water.  They took him and buried him +on the bank.  But I warn't comfortable long, because I happened to think +of something.  I knowed mighty well that a drownded man don't float on +his back, but on his face.  So I knowed, then, that this warn't pap, but +a woman dressed up in a man's clothes.  So I was uncomfortable again. + I judged the old man would turn up again by and by, though I wished he +wouldn't. + +We played robber now and then about a month, and then I resigned.  All +the boys did.  We hadn't robbed nobody, hadn't killed any people, but +only just pretended.  We used to hop out of the woods and go charging +down on hog-drivers and women in carts taking garden stuff to market, +but we never hived any of them.  Tom Sawyer called the hogs "ingots," +and he called the turnips and stuff "julery," and we would go to the +cave and powwow over what we had done, and how many people we had killed +and marked.  But I couldn't see no profit in it.  One time Tom sent a +boy to run about town with a blazing stick, which he called a slogan +(which was the sign for the Gang to get together), and then he said he +had got secret news by his spies that next day a whole parcel of Spanish +merchants and rich A-rabs was going to camp in Cave Hollow with two +hundred elephants, and six hundred camels, and over a thousand "sumter" +mules, all loaded down with di'monds, and they didn't have only a guard +of four hundred soldiers, and so we would lay in ambuscade, as he called +it, and kill the lot and scoop the things.  He said we must slick up +our swords and guns, and get ready.  He never could go after even a +turnip-cart but he must have the swords and guns all scoured up for it, +though they was only lath and broomsticks, and you might scour at them +till you rotted, and then they warn't worth a mouthful of ashes more +than what they was before.  I didn't believe we could lick such a crowd +of Spaniards and A-rabs, but I wanted to see the camels and elephants, +so I was on hand next day, Saturday, in the ambuscade; and when we got +the word we rushed out of the woods and down the hill.  But there warn't +no Spaniards and A-rabs, and there warn't no camels nor no elephants. + It warn't anything but a Sunday-school picnic, and only a primer-class +at that.  We busted it up, and chased the children up the hollow; but we +never got anything but some doughnuts and jam, though Ben Rogers got +a rag doll, and Jo Harper got a hymn-book and a tract; and then the +teacher charged in, and made us drop everything and cut. + + I didn't see no di'monds, and I told Tom Sawyer so.  He said there was +loads of them there, anyway; and he said there was A-rabs there, too, +and elephants and things.  I said, why couldn't we see them, then?  He +said if I warn't so ignorant, but had read a book called Don Quixote, I +would know without asking.  He said it was all done by enchantment.  He +said there was hundreds of soldiers there, and elephants and treasure, +and so on, but we had enemies which he called magicians; and they had +turned the whole thing into an infant Sunday-school, just out of spite. + I said, all right; then the thing for us to do was to go for the +magicians.  Tom Sawyer said I was a numskull. + +"Why," said he, "a magician could call up a lot of genies, and they +would hash you up like nothing before you could say Jack Robinson.  They +are as tall as a tree and as big around as a church." + +"Well," I says, "s'pose we got some genies to help us—can't we lick +the other crowd then?" + +"How you going to get them?" + +"I don't know.  How do they get them?" + +"Why, they rub an old tin lamp or an iron ring, and then the genies +come tearing in, with the thunder and lightning a-ripping around and the +smoke a-rolling, and everything they're told to do they up and do it. + They don't think nothing of pulling a shot-tower up by the roots, and +belting a Sunday-school superintendent over the head with it—or any +other man." + +"Who makes them tear around so?" + +"Why, whoever rubs the lamp or the ring.  They belong to whoever rubs +the lamp or the ring, and they've got to do whatever he says.  If he +tells them to build a palace forty miles long out of di'monds, and fill +it full of chewing-gum, or whatever you want, and fetch an emperor's +daughter from China for you to marry, they've got to do it—and they've +got to do it before sun-up next morning, too.  And more:  they've got +to waltz that palace around over the country wherever you want it, you +understand." + +"Well," says I, "I think they are a pack of flat-heads for not keeping +the palace themselves 'stead of fooling them away like that.  And what's +more—if I was one of them I would see a man in Jericho before I would +drop my business and come to him for the rubbing of an old tin lamp." + +"How you talk, Huck Finn.  Why, you'd have to come when he rubbed it, +whether you wanted to or not." + +"What! and I as high as a tree and as big as a church?  All right, then; +I would come; but I lay I'd make that man climb the highest tree there +was in the country." + +"Shucks, it ain't no use to talk to you, Huck Finn.  You don't seem to +know anything, somehow—perfect saphead." + +I thought all this over for two or three days, and then I reckoned I +would see if there was anything in it.  I got an old tin lamp and an +iron ring, and went out in the woods and rubbed and rubbed till I sweat +like an Injun, calculating to build a palace and sell it; but it warn't +no use, none of the genies come.  So then I judged that all that stuff +was only just one of Tom Sawyer's lies.  I reckoned he believed in the +A-rabs and the elephants, but as for me I think different.  It had all +the marks of a Sunday-school. + + + + +CHAPTER IV. + +WELL, three or four months run along, and it was well into the winter +now. I had been to school most all the time and could spell and read and +write just a little, and could say the multiplication table up to six +times seven is thirty-five, and I don't reckon I could ever get any +further than that if I was to live forever.  I don't take no stock in +mathematics, anyway. + +At first I hated the school, but by and by I got so I could stand it. +Whenever I got uncommon tired I played hookey, and the hiding I got next +day done me good and cheered me up.  So the longer I went to school the +easier it got to be.  I was getting sort of used to the widow's ways, +too, and they warn't so raspy on me.  Living in a house and sleeping in +a bed pulled on me pretty tight mostly, but before the cold weather I +used to slide out and sleep in the woods sometimes, and so that was a +rest to me.  I liked the old ways best, but I was getting so I liked the +new ones, too, a little bit. The widow said I was coming along slow but +sure, and doing very satisfactory.  She said she warn't ashamed of me. + +One morning I happened to turn over the salt-cellar at breakfast. + I reached for some of it as quick as I could to throw over my left +shoulder and keep off the bad luck, but Miss Watson was in ahead of me, +and crossed me off. She says, "Take your hands away, Huckleberry; what +a mess you are always making!"  The widow put in a good word for me, but +that warn't going to keep off the bad luck, I knowed that well enough. + I started out, after breakfast, feeling worried and shaky, and +wondering where it was going to fall on me, and what it was going to be. + There is ways to keep off some kinds of bad luck, but this wasn't one +of them kind; so I never tried to do anything, but just poked along +low-spirited and on the watch-out. + +I went down to the front garden and clumb over the stile where you go +through the high board fence.  There was an inch of new snow on the +ground, and I seen somebody's tracks.  They had come up from the quarry +and stood around the stile a while, and then went on around the garden +fence.  It was funny they hadn't come in, after standing around so.  I +couldn't make it out.  It was very curious, somehow.  I was going to +follow around, but I stooped down to look at the tracks first.  I didn't +notice anything at first, but next I did.  There was a cross in the left +boot-heel made with big nails, to keep off the devil. + +I was up in a second and shinning down the hill.  I looked over my +shoulder every now and then, but I didn't see nobody.  I was at Judge +Thatcher's as quick as I could get there.  He said: + +"Why, my boy, you are all out of breath.  Did you come for your +interest?" + +"No, sir," I says; "is there some for me?" + +"Oh, yes, a half-yearly is in last night—over a hundred and fifty +dollars.  Quite a fortune for you.  You had better let me invest it +along with your six thousand, because if you take it you'll spend it." + +"No, sir," I says, "I don't want to spend it.  I don't want it at +all—nor the six thousand, nuther.  I want you to take it; I want to give +it to you—the six thousand and all." + +He looked surprised.  He couldn't seem to make it out.  He says: + +"Why, what can you mean, my boy?" + +I says, "Don't you ask me no questions about it, please.  You'll take +it—won't you?" + +He says: + +"Well, I'm puzzled.  Is something the matter?" + +"Please take it," says I, "and don't ask me nothing—then I won't have to +tell no lies." + +He studied a while, and then he says: + +"Oho-o!  I think I see.  You want to sell all your property to me—not +give it.  That's the correct idea." + +Then he wrote something on a paper and read it over, and says: + +"There; you see it says 'for a consideration.'  That means I have bought +it of you and paid you for it.  Here's a dollar for you.  Now you sign +it." + +So I signed it, and left. + +Miss Watson's nigger, Jim, had a hair-ball as big as your fist, which +had been took out of the fourth stomach of an ox, and he used to do +magic with it.  He said there was a spirit inside of it, and it knowed +everything.  So I went to him that night and told him pap was here +again, for I found his tracks in the snow.  What I wanted to know was, +what he was going to do, and was he going to stay?  Jim got out his +hair-ball and said something over it, and then he held it up and dropped +it on the floor.  It fell pretty solid, and only rolled about an inch. + Jim tried it again, and then another time, and it acted just the same. + Jim got down on his knees, and put his ear against it and listened. + But it warn't no use; he said it wouldn't talk. He said sometimes it +wouldn't talk without money.  I told him I had an old slick counterfeit +quarter that warn't no good because the brass showed through the silver +a little, and it wouldn't pass nohow, even if the brass didn't show, +because it was so slick it felt greasy, and so that would tell on it +every time.  (I reckoned I wouldn't say nothing about the dollar I got +from the judge.) I said it was pretty bad money, but maybe the hair-ball +would take it, because maybe it wouldn't know the difference.  Jim smelt +it and bit it and rubbed it, and said he would manage so the hair-ball +would think it was good.  He said he would split open a raw Irish potato +and stick the quarter in between and keep it there all night, and next +morning you couldn't see no brass, and it wouldn't feel greasy no more, +and so anybody in town would take it in a minute, let alone a hair-ball. + Well, I knowed a potato would do that before, but I had forgot it. + +Jim put the quarter under the hair-ball, and got down and listened +again. This time he said the hair-ball was all right.  He said it +would tell my whole fortune if I wanted it to.  I says, go on.  So the +hair-ball talked to Jim, and Jim told it to me.  He says: + +"Yo' ole father doan' know yit what he's a-gwyne to do.  Sometimes he +spec he'll go 'way, en den agin he spec he'll stay.  De bes' way is to +res' easy en let de ole man take his own way.  Dey's two angels hoverin' +roun' 'bout him.  One uv 'em is white en shiny, en t'other one is black. +De white one gits him to go right a little while, den de black one sail +in en bust it all up.  A body can't tell yit which one gwyne to fetch +him at de las'.  But you is all right.  You gwyne to have considable +trouble in yo' life, en considable joy.  Sometimes you gwyne to git +hurt, en sometimes you gwyne to git sick; but every time you's gwyne +to git well agin.  Dey's two gals flyin' 'bout you in yo' life.  One +uv 'em's light en t'other one is dark. One is rich en t'other is po'. + You's gwyne to marry de po' one fust en de rich one by en by.  You +wants to keep 'way fum de water as much as you kin, en don't run no +resk, 'kase it's down in de bills dat you's gwyne to git hung." + +When I lit my candle and went up to my room that night there sat pap his +own self! + + + + +CHAPTER V. + +I had shut the door to.  Then I turned around and there he was.  I used +to be scared of him all the time, he tanned me so much.  I reckoned I +was scared now, too; but in a minute I see I was mistaken—that is, after +the first jolt, as you may say, when my breath sort of hitched, he being +so unexpected; but right away after I see I warn't scared of him worth +bothring about. + +He was most fifty, and he looked it.  His hair was long and tangled and +greasy, and hung down, and you could see his eyes shining through +like he was behind vines.  It was all black, no gray; so was his long, +mixed-up whiskers.  There warn't no color in his face, where his face +showed; it was white; not like another man's white, but a white to make +a body sick, a white to make a body's flesh crawl—a tree-toad white, a +fish-belly white.  As for his clothes—just rags, that was all.  He had +one ankle resting on t'other knee; the boot on that foot was busted, and +two of his toes stuck through, and he worked them now and then.  His hat +was laying on the floor—an old black slouch with the top caved in, like +a lid. + +I stood a-looking at him; he set there a-looking at me, with his chair +tilted back a little.  I set the candle down.  I noticed the window was +up; so he had clumb in by the shed.  He kept a-looking me all over.  By +and by he says: + +"Starchy clothes—very.  You think you're a good deal of a big-bug, +don't you?" + +"Maybe I am, maybe I ain't," I says. + +"Don't you give me none o' your lip," says he.  "You've put on +considerable many frills since I been away.  I'll take you down a peg +before I get done with you.  You're educated, too, they say—can read and +write.  You think you're better'n your father, now, don't you, because +he can't?  I'll take it out of you.  Who told you you might meddle +with such hifalut'n foolishness, hey?—who told you you could?" + +"The widow.  She told me." + +"The widow, hey?—and who told the widow she could put in her shovel +about a thing that ain't none of her business?" + +"Nobody never told her." + +"Well, I'll learn her how to meddle.  And looky here—you drop that +school, you hear?  I'll learn people to bring up a boy to put on airs +over his own father and let on to be better'n what he is.  You lemme +catch you fooling around that school again, you hear?  Your mother +couldn't read, and she couldn't write, nuther, before she died.  None +of the family couldn't before they died.  I can't; and here you're +a-swelling yourself up like this.  I ain't the man to stand it—you hear? +Say, lemme hear you read." + +I took up a book and begun something about General Washington and the +wars. When I'd read about a half a minute, he fetched the book a whack +with his hand and knocked it across the house.  He says: + +"It's so.  You can do it.  I had my doubts when you told me.  Now looky +here; you stop that putting on frills.  I won't have it.  I'll lay for +you, my smarty; and if I catch you about that school I'll tan you good. +First you know you'll get religion, too.  I never see such a son." + +He took up a little blue and yaller picture of some cows and a boy, and +says: + +"What's this?" + +"It's something they give me for learning my lessons good." + +He tore it up, and says: + +"I'll give you something better—I'll give you a cowhide." + +He set there a-mumbling and a-growling a minute, and then he says: + +"Ain't you a sweet-scented dandy, though?  A bed; and bedclothes; and +a look'n'-glass; and a piece of carpet on the floor—and your own father +got to sleep with the hogs in the tanyard.  I never see such a son.  I +bet I'll take some o' these frills out o' you before I'm done with you. +Why, there ain't no end to your airs—they say you're rich.  Hey?—how's +that?" + +"They lie—that's how." + +"Looky here—mind how you talk to me; I'm a-standing about all I can +stand now—so don't gimme no sass.  I've been in town two days, and I +hain't heard nothing but about you bein' rich.  I heard about it +away down the river, too.  That's why I come.  You git me that money +to-morrow—I want it." + +"I hain't got no money." + +"It's a lie.  Judge Thatcher's got it.  You git it.  I want it." + +"I hain't got no money, I tell you.  You ask Judge Thatcher; he'll tell +you the same." + +"All right.  I'll ask him; and I'll make him pungle, too, or I'll know +the reason why.  Say, how much you got in your pocket?  I want it." + +"I hain't got only a dollar, and I want that to—" + +"It don't make no difference what you want it for—you just shell it +out." + +He took it and bit it to see if it was good, and then he said he was +going down town to get some whisky; said he hadn't had a drink all day. +When he had got out on the shed he put his head in again, and cussed +me for putting on frills and trying to be better than him; and when I +reckoned he was gone he come back and put his head in again, and told me +to mind about that school, because he was going to lay for me and lick +me if I didn't drop that. + +Next day he was drunk, and he went to Judge Thatcher's and bullyragged +him, and tried to make him give up the money; but he couldn't, and then +he swore he'd make the law force him. + +The judge and the widow went to law to get the court to take me away +from him and let one of them be my guardian; but it was a new judge that +had just come, and he didn't know the old man; so he said courts mustn't +interfere and separate families if they could help it; said he'd druther +not take a child away from its father.  So Judge Thatcher and the widow +had to quit on the business. + +That pleased the old man till he couldn't rest.  He said he'd cowhide +me till I was black and blue if I didn't raise some money for him.  I +borrowed three dollars from Judge Thatcher, and pap took it and got +drunk, and went a-blowing around and cussing and whooping and carrying +on; and he kept it up all over town, with a tin pan, till most midnight; +then they jailed him, and next day they had him before court, and jailed +him again for a week.  But he said he was satisfied; said he was boss +of his son, and he'd make it warm for him. + +When he got out the new judge said he was a-going to make a man of him. +So he took him to his own house, and dressed him up clean and nice, and +had him to breakfast and dinner and supper with the family, and was just +old pie to him, so to speak.  And after supper he talked to him about +temperance and such things till the old man cried, and said he'd been +a fool, and fooled away his life; but now he was a-going to turn over +a new leaf and be a man nobody wouldn't be ashamed of, and he hoped the +judge would help him and not look down on him.  The judge said he could +hug him for them words; so he cried, and his wife she cried again; pap +said he'd been a man that had always been misunderstood before, and the +judge said he believed it.  The old man said that what a man wanted +that was down was sympathy, and the judge said it was so; so they cried +again.  And when it was bedtime the old man rose up and held out his +hand, and says: + +"Look at it, gentlemen and ladies all; take a-hold of it; shake it. +There's a hand that was the hand of a hog; but it ain't so no more; it's +the hand of a man that's started in on a new life, and'll die before +he'll go back.  You mark them words—don't forget I said them.  It's a +clean hand now; shake it—don't be afeard." + +So they shook it, one after the other, all around, and cried.  The +judge's wife she kissed it.  Then the old man he signed a pledge—made +his mark. The judge said it was the holiest time on record, or something +like that. Then they tucked the old man into a beautiful room, which was +the spare room, and in the night some time he got powerful thirsty and +clumb out on to the porch-roof and slid down a stanchion and traded his +new coat for a jug of forty-rod, and clumb back again and had a good old +time; and towards daylight he crawled out again, drunk as a fiddler, and +rolled off the porch and broke his left arm in two places, and was most +froze to death when somebody found him after sun-up.  And when they come +to look at that spare room they had to take soundings before they could +navigate it. + +The judge he felt kind of sore.  He said he reckoned a body could reform +the old man with a shotgun, maybe, but he didn't know no other way. + + + + +CHAPTER VI. + +WELL, pretty soon the old man was up and around again, and then he went +for Judge Thatcher in the courts to make him give up that money, and he +went for me, too, for not stopping school.  He catched me a couple of +times and thrashed me, but I went to school just the same, and dodged +him or outrun him most of the time.  I didn't want to go to school much +before, but I reckoned I'd go now to spite pap.  That law trial was a +slow business—appeared like they warn't ever going to get started on it; +so every now and then I'd borrow two or three dollars off of the judge +for him, to keep from getting a cowhiding.  Every time he got money he +got drunk; and every time he got drunk he raised Cain around town; and +every time he raised Cain he got jailed.  He was just suited—this kind +of thing was right in his line. + +He got to hanging around the widow's too much and so she told him at +last that if he didn't quit using around there she would make trouble +for him. Well, wasn't he mad?  He said he would show who was Huck +Finn's boss.  So he watched out for me one day in the spring, and +catched me, and took me up the river about three mile in a skiff, and +crossed over to the Illinois shore where it was woody and there warn't +no houses but an old log hut in a place where the timber was so thick +you couldn't find it if you didn't know where it was. + +He kept me with him all the time, and I never got a chance to run off. +We lived in that old cabin, and he always locked the door and put the +key under his head nights.  He had a gun which he had stole, I reckon, +and we fished and hunted, and that was what we lived on.  Every little +while he locked me in and went down to the store, three miles, to the +ferry, and traded fish and game for whisky, and fetched it home and got +drunk and had a good time, and licked me.  The widow she found out where +I was by and by, and she sent a man over to try to get hold of me; but +pap drove him off with the gun, and it warn't long after that till I was +used to being where I was, and liked it—all but the cowhide part. + +It was kind of lazy and jolly, laying off comfortable all day, smoking +and fishing, and no books nor study.  Two months or more run along, and +my clothes got to be all rags and dirt, and I didn't see how I'd ever +got to like it so well at the widow's, where you had to wash, and eat on +a plate, and comb up, and go to bed and get up regular, and be forever +bothering over a book, and have old Miss Watson pecking at you all the +time.  I didn't want to go back no more.  I had stopped cussing, because +the widow didn't like it; but now I took to it again because pap hadn't +no objections.  It was pretty good times up in the woods there, take it +all around. + +But by and by pap got too handy with his hick'ry, and I couldn't stand +it. I was all over welts.  He got to going away so much, too, and +locking me in.  Once he locked me in and was gone three days.  It was +dreadful lonesome.  I judged he had got drownded, and I wasn't ever +going to get out any more.  I was scared.  I made up my mind I would fix +up some way to leave there.  I had tried to get out of that cabin many +a time, but I couldn't find no way.  There warn't a window to it big +enough for a dog to get through.  I couldn't get up the chimbly; it +was too narrow.  The door was thick, solid oak slabs.  Pap was pretty +careful not to leave a knife or anything in the cabin when he was away; +I reckon I had hunted the place over as much as a hundred times; well, I +was most all the time at it, because it was about the only way to put in +the time.  But this time I found something at last; I found an old rusty +wood-saw without any handle; it was laid in between a rafter and the +clapboards of the roof. I greased it up and went to work.  There was an +old horse-blanket nailed against the logs at the far end of the cabin +behind the table, to keep the wind from blowing through the chinks and +putting the candle out.  I got under the table and raised the blanket, +and went to work to saw a section of the big bottom log out—big enough +to let me through.  Well, it was a good long job, but I was getting +towards the end of it when I heard pap's gun in the woods.  I got rid of +the signs of my work, and dropped the blanket and hid my saw, and pretty +soon pap come in. + +Pap warn't in a good humor—so he was his natural self.  He said he was +down town, and everything was going wrong.  His lawyer said he reckoned +he would win his lawsuit and get the money if they ever got started on +the trial; but then there was ways to put it off a long time, and Judge +Thatcher knowed how to do it. And he said people allowed there'd be +another trial to get me away from him and give me to the widow for my +guardian, and they guessed it would win this time.  This shook me up +considerable, because I didn't want to go back to the widow's any more +and be so cramped up and sivilized, as they called it.  Then the old man +got to cussing, and cussed everything and everybody he could think of, +and then cussed them all over again to make sure he hadn't skipped any, +and after that he polished off with a kind of a general cuss all round, +including a considerable parcel of people which he didn't know the names +of, and so called them what's-his-name when he got to them, and went +right along with his cussing. + +He said he would like to see the widow get me.  He said he would watch +out, and if they tried to come any such game on him he knowed of a place +six or seven mile off to stow me in, where they might hunt till they +dropped and they couldn't find me.  That made me pretty uneasy again, +but only for a minute; I reckoned I wouldn't stay on hand till he got +that chance. + +The old man made me go to the skiff and fetch the things he had +got. There was a fifty-pound sack of corn meal, and a side of bacon, +ammunition, and a four-gallon jug of whisky, and an old book and two +newspapers for wadding, besides some tow.  I toted up a load, and went +back and set down on the bow of the skiff to rest.  I thought it all +over, and I reckoned I would walk off with the gun and some lines, and +take to the woods when I run away.  I guessed I wouldn't stay in one +place, but just tramp right across the country, mostly night times, and +hunt and fish to keep alive, and so get so far away that the old man nor +the widow couldn't ever find me any more.  I judged I would saw out and +leave that night if pap got drunk enough, and I reckoned he would.  I +got so full of it I didn't notice how long I was staying till the old +man hollered and asked me whether I was asleep or drownded. + +I got the things all up to the cabin, and then it was about dark.  While +I was cooking supper the old man took a swig or two and got sort of +warmed up, and went to ripping again.  He had been drunk over in town, +and laid in the gutter all night, and he was a sight to look at.  A body +would a thought he was Adam—he was just all mud.  Whenever his liquor +begun to work he most always went for the govment, this time he says: + +"Call this a govment! why, just look at it and see what it's like. +Here's the law a-standing ready to take a man's son away from him—a +man's own son, which he has had all the trouble and all the anxiety +and all the expense of raising.  Yes, just as that man has got that +son raised at last, and ready to go to work and begin to do suthin' for +him and give him a rest, the law up and goes for him.  And they call +that govment!  That ain't all, nuther.  The law backs that old Judge +Thatcher up and helps him to keep me out o' my property.  Here's what +the law does:  The law takes a man worth six thousand dollars and +up'ards, and jams him into an old trap of a cabin like this, and lets +him go round in clothes that ain't fitten for a hog. They call that +govment!  A man can't get his rights in a govment like this. Sometimes +I've a mighty notion to just leave the country for good and all. Yes, +and I told 'em so; I told old Thatcher so to his face.  Lots of 'em +heard me, and can tell what I said.  Says I, for two cents I'd leave the +blamed country and never come a-near it agin.  Them's the very words.  I +says look at my hat—if you call it a hat—but the lid raises up and the +rest of it goes down till it's below my chin, and then it ain't rightly +a hat at all, but more like my head was shoved up through a jint o' +stove-pipe.  Look at it, says I—such a hat for me to wear—one of the +wealthiest men in this town if I could git my rights. + +"Oh, yes, this is a wonderful govment, wonderful.  Why, looky here. +There was a free nigger there from Ohio—a mulatter, most as white as +a white man.  He had the whitest shirt on you ever see, too, and the +shiniest hat; and there ain't a man in that town that's got as fine +clothes as what he had; and he had a gold watch and chain, and a +silver-headed cane—the awfulest old gray-headed nabob in the State.  And +what do you think?  They said he was a p'fessor in a college, and could +talk all kinds of languages, and knowed everything.  And that ain't the +wust. They said he could vote when he was at home.  Well, that let me +out. Thinks I, what is the country a-coming to?  It was 'lection day, +and I was just about to go and vote myself if I warn't too drunk to get +there; but when they told me there was a State in this country where +they'd let that nigger vote, I drawed out.  I says I'll never vote agin. + Them's the very words I said; they all heard me; and the country may +rot for all me—I'll never vote agin as long as I live.  And to see the +cool way of that nigger—why, he wouldn't a give me the road if I hadn't +shoved him out o' the way.  I says to the people, why ain't this nigger +put up at auction and sold?—that's what I want to know.  And what do you +reckon they said? Why, they said he couldn't be sold till he'd been in +the State six months, and he hadn't been there that long yet.  There, +now—that's a specimen.  They call that a govment that can't sell a free +nigger till he's been in the State six months.  Here's a govment that +calls itself a govment, and lets on to be a govment, and thinks it is a +govment, and yet's got to set stock-still for six whole months before +it can take a hold of a prowling, thieving, infernal, white-shirted free +nigger, and—" + +Pap was agoing on so he never noticed where his old limber legs was +taking him to, so he went head over heels over the tub of salt pork and +barked both shins, and the rest of his speech was all the hottest kind +of language—mostly hove at the nigger and the govment, though he give +the tub some, too, all along, here and there.  He hopped around the +cabin considerable, first on one leg and then on the other, holding +first one shin and then the other one, and at last he let out with his +left foot all of a sudden and fetched the tub a rattling kick.  But it +warn't good judgment, because that was the boot that had a couple of his +toes leaking out of the front end of it; so now he raised a howl that +fairly made a body's hair raise, and down he went in the dirt, and +rolled there, and held his toes; and the cussing he done then laid over +anything he had ever done previous.  He said so his own self afterwards. + He had heard old Sowberry Hagan in his best days, and he said it laid +over him, too; but I reckon that was sort of piling it on, maybe. + +After supper pap took the jug, and said he had enough whisky there +for two drunks and one delirium tremens.  That was always his word.  I +judged he would be blind drunk in about an hour, and then I would steal +the key, or saw myself out, one or t'other.  He drank and drank, and +tumbled down on his blankets by and by; but luck didn't run my way. + He didn't go sound asleep, but was uneasy.  He groaned and moaned and +thrashed around this way and that for a long time.  At last I got so +sleepy I couldn't keep my eyes open all I could do, and so before I +knowed what I was about I was sound asleep, and the candle burning. + +I don't know how long I was asleep, but all of a sudden there was an +awful scream and I was up.  There was pap looking wild, and skipping +around every which way and yelling about snakes.  He said they was +crawling up his legs; and then he would give a jump and scream, and say +one had bit him on the cheek—but I couldn't see no snakes.  He started +and run round and round the cabin, hollering "Take him off! take him +off! he's biting me on the neck!"  I never see a man look so wild in the +eyes. Pretty soon he was all fagged out, and fell down panting; then he +rolled over and over wonderful fast, kicking things every which way, +and striking and grabbing at the air with his hands, and screaming and +saying there was devils a-hold of him.  He wore out by and by, and laid +still a while, moaning.  Then he laid stiller, and didn't make a sound. + I could hear the owls and the wolves away off in the woods, and it +seemed terrible still.  He was laying over by the corner. By and by he +raised up part way and listened, with his head to one side.  He says, +very low: + +"Tramp—tramp—tramp; that's the dead; tramp—tramp—tramp; they're coming +after me; but I won't go.  Oh, they're here! don't touch me—don't! hands +off—they're cold; let go.  Oh, let a poor devil alone!" + +Then he went down on all fours and crawled off, begging them to let him +alone, and he rolled himself up in his blanket and wallowed in under the +old pine table, still a-begging; and then he went to crying.  I could +hear him through the blanket. + +By and by he rolled out and jumped up on his feet looking wild, and he +see me and went for me.  He chased me round and round the place with a +clasp-knife, calling me the Angel of Death, and saying he would kill me, +and then I couldn't come for him no more.  I begged, and told him I +was only Huck; but he laughed such a screechy laugh, and roared and +cussed, and kept on chasing me up.  Once when I turned short and +dodged under his arm he made a grab and got me by the jacket between my +shoulders, and I thought I was gone; but I slid out of the jacket quick +as lightning, and saved myself. Pretty soon he was all tired out, and +dropped down with his back against the door, and said he would rest a +minute and then kill me. He put his knife under him, and said he would +sleep and get strong, and then he would see who was who. + +So he dozed off pretty soon.  By and by I got the old split-bottom chair +and clumb up as easy as I could, not to make any noise, and got down the +gun.  I slipped the ramrod down it to make sure it was loaded, then I +laid it across the turnip barrel, pointing towards pap, and set down +behind it to wait for him to stir.  And how slow and still the time did +drag along. + + + + +CHAPTER VII. + +"GIT up!  What you 'bout?" + +I opened my eyes and looked around, trying to make out where I was.  It +was after sun-up, and I had been sound asleep.  Pap was standing over me +looking sour and sick, too.  He says: + +"What you doin' with this gun?" + +I judged he didn't know nothing about what he had been doing, so I says: + +"Somebody tried to get in, so I was laying for him." + +"Why didn't you roust me out?" + +"Well, I tried to, but I couldn't; I couldn't budge you." + +"Well, all right.  Don't stand there palavering all day, but out with +you and see if there's a fish on the lines for breakfast.  I'll be along +in a minute." + +He unlocked the door, and I cleared out up the river-bank.  I noticed +some pieces of limbs and such things floating down, and a sprinkling of +bark; so I knowed the river had begun to rise.  I reckoned I would have +great times now if I was over at the town.  The June rise used to be +always luck for me; because as soon as that rise begins here comes +cordwood floating down, and pieces of log rafts—sometimes a dozen logs +together; so all you have to do is to catch them and sell them to the +wood-yards and the sawmill. + +I went along up the bank with one eye out for pap and t'other one out +for what the rise might fetch along.  Well, all at once here comes a +canoe; just a beauty, too, about thirteen or fourteen foot long, riding +high like a duck.  I shot head-first off of the bank like a frog, +clothes and all on, and struck out for the canoe.  I just expected +there'd be somebody laying down in it, because people often done that +to fool folks, and when a chap had pulled a skiff out most to it they'd +raise up and laugh at him.  But it warn't so this time.  It was a +drift-canoe sure enough, and I clumb in and paddled her ashore.  Thinks +I, the old man will be glad when he sees this—she's worth ten dollars. + But when I got to shore pap wasn't in sight yet, and as I was running +her into a little creek like a gully, all hung over with vines and +willows, I struck another idea:  I judged I'd hide her good, and then, +'stead of taking to the woods when I run off, I'd go down the river +about fifty mile and camp in one place for good, and not have such a +rough time tramping on foot. + +It was pretty close to the shanty, and I thought I heard the old man +coming all the time; but I got her hid; and then I out and looked around +a bunch of willows, and there was the old man down the path a piece just +drawing a bead on a bird with his gun.  So he hadn't seen anything. + +When he got along I was hard at it taking up a "trot" line.  He abused +me a little for being so slow; but I told him I fell in the river, and +that was what made me so long.  I knowed he would see I was wet, and +then he would be asking questions.  We got five catfish off the lines +and went home. + +While we laid off after breakfast to sleep up, both of us being about +wore out, I got to thinking that if I could fix up some way to keep pap +and the widow from trying to follow me, it would be a certainer thing +than trusting to luck to get far enough off before they missed me; you +see, all kinds of things might happen.  Well, I didn't see no way for a +while, but by and by pap raised up a minute to drink another barrel of +water, and he says: + +"Another time a man comes a-prowling round here you roust me out, you +hear? That man warn't here for no good.  I'd a shot him.  Next time you +roust me out, you hear?" + +Then he dropped down and went to sleep again; but what he had been +saying give me the very idea I wanted.  I says to myself, I can fix it +now so nobody won't think of following me. + +About twelve o'clock we turned out and went along up the bank.  The +river was coming up pretty fast, and lots of driftwood going by on the +rise. By and by along comes part of a log raft—nine logs fast together. + We went out with the skiff and towed it ashore.  Then we had dinner. +Anybody but pap would a waited and seen the day through, so as to catch +more stuff; but that warn't pap's style.  Nine logs was enough for one +time; he must shove right over to town and sell.  So he locked me in and +took the skiff, and started off towing the raft about half-past three. + I judged he wouldn't come back that night.  I waited till I reckoned he +had got a good start; then I out with my saw, and went to work on that +log again.  Before he was t'other side of the river I was out of the +hole; him and his raft was just a speck on the water away off yonder. + +I took the sack of corn meal and took it to where the canoe was hid, and +shoved the vines and branches apart and put it in; then I done the same +with the side of bacon; then the whisky-jug.  I took all the coffee and +sugar there was, and all the ammunition; I took the wadding; I took the +bucket and gourd; I took a dipper and a tin cup, and my old saw and two +blankets, and the skillet and the coffee-pot.  I took fish-lines and +matches and other things—everything that was worth a cent.  I cleaned +out the place.  I wanted an axe, but there wasn't any, only the one out +at the woodpile, and I knowed why I was going to leave that.  I fetched +out the gun, and now I was done. + +I had wore the ground a good deal crawling out of the hole and dragging +out so many things.  So I fixed that as good as I could from the outside +by scattering dust on the place, which covered up the smoothness and the +sawdust.  Then I fixed the piece of log back into its place, and put two +rocks under it and one against it to hold it there, for it was bent up +at that place and didn't quite touch ground.  If you stood four or five +foot away and didn't know it was sawed, you wouldn't never notice +it; and besides, this was the back of the cabin, and it warn't likely +anybody would go fooling around there. + +It was all grass clear to the canoe, so I hadn't left a track.  I +followed around to see.  I stood on the bank and looked out over the +river.  All safe.  So I took the gun and went up a piece into the woods, +and was hunting around for some birds when I see a wild pig; hogs soon +went wild in them bottoms after they had got away from the prairie +farms. I shot this fellow and took him into camp. + +I took the axe and smashed in the door.  I beat it and hacked it +considerable a-doing it.  I fetched the pig in, and took him back nearly +to the table and hacked into his throat with the axe, and laid him down +on the ground to bleed; I say ground because it was ground—hard packed, +and no boards.  Well, next I took an old sack and put a lot of big rocks +in it—all I could drag—and I started it from the pig, and dragged it to +the door and through the woods down to the river and dumped it in, and +down it sunk, out of sight.  You could easy see that something had been +dragged over the ground.  I did wish Tom Sawyer was there; I knowed he +would take an interest in this kind of business, and throw in the fancy +touches.  Nobody could spread himself like Tom Sawyer in such a thing as +that. + +Well, last I pulled out some of my hair, and blooded the axe good, and +stuck it on the back side, and slung the axe in the corner.  Then I +took up the pig and held him to my breast with my jacket (so he couldn't +drip) till I got a good piece below the house and then dumped him into +the river.  Now I thought of something else.  So I went and got the bag +of meal and my old saw out of the canoe, and fetched them to the house. + I took the bag to where it used to stand, and ripped a hole in the +bottom of it with the saw, for there warn't no knives and forks on the +place—pap done everything with his clasp-knife about the cooking.  Then +I carried the sack about a hundred yards across the grass and through +the willows east of the house, to a shallow lake that was five mile wide +and full of rushes—and ducks too, you might say, in the season.  There +was a slough or a creek leading out of it on the other side that went +miles away, I don't know where, but it didn't go to the river.  The meal +sifted out and made a little track all the way to the lake.  I dropped +pap's whetstone there too, so as to look like it had been done by +accident. Then I tied up the rip in the meal sack with a string, so it +wouldn't leak no more, and took it and my saw to the canoe again. + +It was about dark now; so I dropped the canoe down the river under some +willows that hung over the bank, and waited for the moon to rise.  I +made fast to a willow; then I took a bite to eat, and by and by laid +down in the canoe to smoke a pipe and lay out a plan.  I says to myself, +they'll follow the track of that sackful of rocks to the shore and then +drag the river for me.  And they'll follow that meal track to the lake +and go browsing down the creek that leads out of it to find the robbers +that killed me and took the things.  They won't ever hunt the river for +anything but my dead carcass. They'll soon get tired of that, and won't +bother no more about me.  All right; I can stop anywhere I want to. +Jackson's Island is good enough for me; I know that island pretty well, +and nobody ever comes there.  And then I can paddle over to town nights, +and slink around and pick up things I want. Jackson's Island's the +place. + +I was pretty tired, and the first thing I knowed I was asleep.  When +I woke up I didn't know where I was for a minute.  I set up and looked +around, a little scared.  Then I remembered.  The river looked miles and +miles across.  The moon was so bright I could a counted the drift logs +that went a-slipping along, black and still, hundreds of yards out from +shore. Everything was dead quiet, and it looked late, and smelt late. +You know what I mean—I don't know the words to put it in. + +I took a good gap and a stretch, and was just going to unhitch and start +when I heard a sound away over the water.  I listened.  Pretty soon I +made it out.  It was that dull kind of a regular sound that comes from +oars working in rowlocks when it's a still night.  I peeped out through +the willow branches, and there it was—a skiff, away across the water. + I couldn't tell how many was in it.  It kept a-coming, and when it was +abreast of me I see there warn't but one man in it.  Think's I, maybe +it's pap, though I warn't expecting him.  He dropped below me with the +current, and by and by he came a-swinging up shore in the easy water, +and he went by so close I could a reached out the gun and touched him. + Well, it was pap, sure enough—and sober, too, by the way he laid his +oars. + +I didn't lose no time.  The next minute I was a-spinning down stream +soft but quick in the shade of the bank.  I made two mile and a half, +and then struck out a quarter of a mile or more towards the middle of +the river, because pretty soon I would be passing the ferry landing, and +people might see me and hail me.  I got out amongst the driftwood, and +then laid down in the bottom of the canoe and let her float. + + I laid there, and had a good rest and a smoke out of my pipe, looking +away into the sky; not a cloud in it.  The sky looks ever so deep when +you lay down on your back in the moonshine; I never knowed it before. + And how far a body can hear on the water such nights!  I heard people +talking at the ferry landing. I heard what they said, too—every word +of it.  One man said it was getting towards the long days and the short +nights now.  T'other one said this warn't one of the short ones, he +reckoned—and then they laughed, and he said it over again, and they +laughed again; then they waked up another fellow and told him, and +laughed, but he didn't laugh; he ripped out something brisk, and said +let him alone.  The first fellow said he 'lowed to tell it to his +old woman—she would think it was pretty good; but he said that warn't +nothing to some things he had said in his time. I heard one man say it +was nearly three o'clock, and he hoped daylight wouldn't wait more than +about a week longer.  After that the talk got further and further away, +and I couldn't make out the words any more; but I could hear the mumble, +and now and then a laugh, too, but it seemed a long ways off. + +I was away below the ferry now.  I rose up, and there was Jackson's +Island, about two mile and a half down stream, heavy timbered and +standing up out of the middle of the river, big and dark and solid, like +a steamboat without any lights.  There warn't any signs of the bar at +the head—it was all under water now. + +It didn't take me long to get there.  I shot past the head at a ripping +rate, the current was so swift, and then I got into the dead water and +landed on the side towards the Illinois shore.  I run the canoe into +a deep dent in the bank that I knowed about; I had to part the willow +branches to get in; and when I made fast nobody could a seen the canoe +from the outside. + +I went up and set down on a log at the head of the island, and looked +out on the big river and the black driftwood and away over to the town, +three mile away, where there was three or four lights twinkling.  A +monstrous big lumber-raft was about a mile up stream, coming along down, +with a lantern in the middle of it.  I watched it come creeping down, +and when it was most abreast of where I stood I heard a man say, "Stern +oars, there! heave her head to stabboard!"  I heard that just as plain +as if the man was by my side. + +There was a little gray in the sky now; so I stepped into the woods, and +laid down for a nap before breakfast. + + + + +CHAPTER VIII. + +THE sun was up so high when I waked that I judged it was after eight +o'clock.  I laid there in the grass and the cool shade thinking about +things, and feeling rested and ruther comfortable and satisfied.  I +could see the sun out at one or two holes, but mostly it was big trees +all about, and gloomy in there amongst them.  There was freckled places +on the ground where the light sifted down through the leaves, and the +freckled places swapped about a little, showing there was a little +breeze up there.  A couple of squirrels set on a limb and jabbered at me +very friendly. + +I was powerful lazy and comfortable—didn't want to get up and cook +breakfast.  Well, I was dozing off again when I thinks I hears a deep +sound of "boom!" away up the river.  I rouses up, and rests on my elbow +and listens; pretty soon I hears it again.  I hopped up, and went and +looked out at a hole in the leaves, and I see a bunch of smoke laying +on the water a long ways up—about abreast the ferry.  And there was the +ferryboat full of people floating along down.  I knowed what was the +matter now.  "Boom!" I see the white smoke squirt out of the ferryboat's +side.  You see, they was firing cannon over the water, trying to make my +carcass come to the top. + +I was pretty hungry, but it warn't going to do for me to start a fire, +because they might see the smoke.  So I set there and watched the +cannon-smoke and listened to the boom.  The river was a mile wide there, +and it always looks pretty on a summer morning—so I was having a good +enough time seeing them hunt for my remainders if I only had a bite to +eat. Well, then I happened to think how they always put quicksilver in +loaves of bread and float them off, because they always go right to the +drownded carcass and stop there.  So, says I, I'll keep a lookout, and +if any of them's floating around after me I'll give them a show.  I +changed to the Illinois edge of the island to see what luck I could +have, and I warn't disappointed.  A big double loaf come along, and I +most got it with a long stick, but my foot slipped and she floated out +further.  Of course I was where the current set in the closest to the +shore—I knowed enough for that.  But by and by along comes another one, +and this time I won.  I took out the plug and shook out the little dab +of quicksilver, and set my teeth in.  It was "baker's bread"—what the +quality eat; none of your low-down corn-pone. + +I got a good place amongst the leaves, and set there on a log, munching +the bread and watching the ferry-boat, and very well satisfied.  And +then something struck me.  I says, now I reckon the widow or the parson +or somebody prayed that this bread would find me, and here it has gone +and done it.  So there ain't no doubt but there is something in that +thing—that is, there's something in it when a body like the widow or the +parson prays, but it don't work for me, and I reckon it don't work for +only just the right kind. + +I lit a pipe and had a good long smoke, and went on watching.  The +ferryboat was floating with the current, and I allowed I'd have a chance +to see who was aboard when she come along, because she would come in +close, where the bread did.  When she'd got pretty well along down +towards me, I put out my pipe and went to where I fished out the bread, +and laid down behind a log on the bank in a little open place.  Where +the log forked I could peep through. + +By and by she come along, and she drifted in so close that they could +a run out a plank and walked ashore.  Most everybody was on the boat. + Pap, and Judge Thatcher, and Bessie Thatcher, and Jo Harper, and Tom +Sawyer, and his old Aunt Polly, and Sid and Mary, and plenty more. + Everybody was talking about the murder, but the captain broke in and +says: + +"Look sharp, now; the current sets in the closest here, and maybe he's +washed ashore and got tangled amongst the brush at the water's edge.  I +hope so, anyway." + +I didn't hope so.  They all crowded up and leaned over the rails, nearly +in my face, and kept still, watching with all their might.  I could see +them first-rate, but they couldn't see me.  Then the captain sung out: + +"Stand away!" and the cannon let off such a blast right before me that +it made me deef with the noise and pretty near blind with the smoke, and +I judged I was gone.  If they'd a had some bullets in, I reckon they'd +a got the corpse they was after.  Well, I see I warn't hurt, thanks to +goodness. The boat floated on and went out of sight around the shoulder +of the island.  I could hear the booming now and then, further and +further off, and by and by, after an hour, I didn't hear it no more. + The island was three mile long.  I judged they had got to the foot, and +was giving it up.  But they didn't yet a while.  They turned around +the foot of the island and started up the channel on the Missouri side, +under steam, and booming once in a while as they went.  I crossed over +to that side and watched them. When they got abreast the head of the +island they quit shooting and dropped over to the Missouri shore and +went home to the town. + +I knowed I was all right now.  Nobody else would come a-hunting after +me. I got my traps out of the canoe and made me a nice camp in the thick +woods.  I made a kind of a tent out of my blankets to put my things +under so the rain couldn't get at them.  I catched a catfish and haggled +him open with my saw, and towards sundown I started my camp fire and had +supper.  Then I set out a line to catch some fish for breakfast. + +When it was dark I set by my camp fire smoking, and feeling pretty well +satisfied; but by and by it got sort of lonesome, and so I went and set +on the bank and listened to the current swashing along, and counted the +stars and drift logs and rafts that come down, and then went to bed; +there ain't no better way to put in time when you are lonesome; you +can't stay so, you soon get over it. + +And so for three days and nights.  No difference—just the same thing. +But the next day I went exploring around down through the island.  I was +boss of it; it all belonged to me, so to say, and I wanted to know +all about it; but mainly I wanted to put in the time.  I found plenty +strawberries, ripe and prime; and green summer grapes, and green +razberries; and the green blackberries was just beginning to show.  They +would all come handy by and by, I judged. + +Well, I went fooling along in the deep woods till I judged I warn't +far from the foot of the island.  I had my gun along, but I hadn't shot +nothing; it was for protection; thought I would kill some game nigh +home. About this time I mighty near stepped on a good-sized snake, +and it went sliding off through the grass and flowers, and I after +it, trying to get a shot at it. I clipped along, and all of a sudden I +bounded right on to the ashes of a camp fire that was still smoking. + +My heart jumped up amongst my lungs.  I never waited for to look +further, but uncocked my gun and went sneaking back on my tiptoes as +fast as ever I could.  Every now and then I stopped a second amongst the +thick leaves and listened, but my breath come so hard I couldn't hear +nothing else.  I slunk along another piece further, then listened again; +and so on, and so on.  If I see a stump, I took it for a man; if I trod +on a stick and broke it, it made me feel like a person had cut one of my +breaths in two and I only got half, and the short half, too. + +When I got to camp I warn't feeling very brash, there warn't much sand +in my craw; but I says, this ain't no time to be fooling around.  So I +got all my traps into my canoe again so as to have them out of sight, +and I put out the fire and scattered the ashes around to look like an +old last year's camp, and then clumb a tree. + +I reckon I was up in the tree two hours; but I didn't see nothing, +I didn't hear nothing—I only thought I heard and seen as much as a +thousand things.  Well, I couldn't stay up there forever; so at last I +got down, but I kept in the thick woods and on the lookout all the +time. All I could get to eat was berries and what was left over from +breakfast. + +By the time it was night I was pretty hungry.  So when it was good +and dark I slid out from shore before moonrise and paddled over to the +Illinois bank—about a quarter of a mile.  I went out in the woods and +cooked a supper, and I had about made up my mind I would stay there +all night when I hear a plunkety-plunk, plunkety-plunk, and says +to myself, horses coming; and next I hear people's voices.  I got +everything into the canoe as quick as I could, and then went creeping +through the woods to see what I could find out.  I hadn't got far when I +hear a man say: + +"We better camp here if we can find a good place; the horses is about +beat out.  Let's look around." + +I didn't wait, but shoved out and paddled away easy.  I tied up in the +old place, and reckoned I would sleep in the canoe. + +I didn't sleep much.  I couldn't, somehow, for thinking.  And every time +I waked up I thought somebody had me by the neck.  So the sleep didn't +do me no good.  By and by I says to myself, I can't live this way; I'm +a-going to find out who it is that's here on the island with me; I'll +find it out or bust.  Well, I felt better right off. + +So I took my paddle and slid out from shore just a step or two, and +then let the canoe drop along down amongst the shadows.  The moon was +shining, and outside of the shadows it made it most as light as day. + I poked along well on to an hour, everything still as rocks and sound +asleep. Well, by this time I was most down to the foot of the island.  A +little ripply, cool breeze begun to blow, and that was as good as saying +the night was about done.  I give her a turn with the paddle and brung +her nose to shore; then I got my gun and slipped out and into the edge +of the woods.  I sat down there on a log, and looked out through the +leaves.  I see the moon go off watch, and the darkness begin to blanket +the river. But in a little while I see a pale streak over the treetops, +and knowed the day was coming.  So I took my gun and slipped off towards +where I had run across that camp fire, stopping every minute or two +to listen.  But I hadn't no luck somehow; I couldn't seem to find the +place.  But by and by, sure enough, I catched a glimpse of fire away +through the trees.  I went for it, cautious and slow.  By and by I was +close enough to have a look, and there laid a man on the ground.  It +most give me the fan-tods. He had a blanket around his head, and his +head was nearly in the fire.  I set there behind a clump of bushes, in +about six foot of him, and kept my eyes on him steady.  It was getting +gray daylight now.  Pretty soon he gapped and stretched himself and hove +off the blanket, and it was Miss Watson's Jim!  I bet I was glad to see +him.  I says: + +"Hello, Jim!" and skipped out. + +He bounced up and stared at me wild.  Then he drops down on his knees, +and puts his hands together and says: + +"Doan' hurt me—don't!  I hain't ever done no harm to a ghos'.  I alwuz +liked dead people, en done all I could for 'em.  You go en git in de +river agin, whah you b'longs, en doan' do nuffn to Ole Jim, 'at 'uz +awluz yo' fren'." + +Well, I warn't long making him understand I warn't dead.  I was ever so +glad to see Jim.  I warn't lonesome now.  I told him I warn't afraid of +him telling the people where I was.  I talked along, but he only set +there and looked at me; never said nothing.  Then I says: + +"It's good daylight.  Le's get breakfast.  Make up your camp fire good." + +"What's de use er makin' up de camp fire to cook strawbries en sich +truck? But you got a gun, hain't you?  Den we kin git sumfn better den +strawbries." + +"Strawberries and such truck," I says.  "Is that what you live on?" + +"I couldn' git nuffn else," he says. + +"Why, how long you been on the island, Jim?" + +"I come heah de night arter you's killed." + +"What, all that time?" + +"Yes—indeedy." + +"And ain't you had nothing but that kind of rubbage to eat?" + +"No, sah—nuffn else." + +"Well, you must be most starved, ain't you?" + +"I reck'n I could eat a hoss.  I think I could. How long you ben on de +islan'?" + +"Since the night I got killed." + +"No!  W'y, what has you lived on?  But you got a gun.  Oh, yes, you got +a gun.  Dat's good.  Now you kill sumfn en I'll make up de fire." + +So we went over to where the canoe was, and while he built a fire in +a grassy open place amongst the trees, I fetched meal and bacon and +coffee, and coffee-pot and frying-pan, and sugar and tin cups, and the +nigger was set back considerable, because he reckoned it was all done +with witchcraft. I catched a good big catfish, too, and Jim cleaned him +with his knife, and fried him. + +When breakfast was ready we lolled on the grass and eat it smoking hot. +Jim laid it in with all his might, for he was most about starved.  Then +when we had got pretty well stuffed, we laid off and lazied.  By and by +Jim says: + +"But looky here, Huck, who wuz it dat 'uz killed in dat shanty ef it +warn't you?" + +Then I told him the whole thing, and he said it was smart.  He said Tom +Sawyer couldn't get up no better plan than what I had.  Then I says: + +"How do you come to be here, Jim, and how'd you get here?" + +He looked pretty uneasy, and didn't say nothing for a minute.  Then he +says: + +"Maybe I better not tell." + +"Why, Jim?" + +"Well, dey's reasons.  But you wouldn' tell on me ef I uz to tell you, +would you, Huck?" + +"Blamed if I would, Jim." + +"Well, I b'lieve you, Huck.  I—I run off." + +"Jim!" + +"But mind, you said you wouldn' tell—you know you said you wouldn' tell, +Huck." + +"Well, I did.  I said I wouldn't, and I'll stick to it.  Honest injun, +I will.  People would call me a low-down Abolitionist and despise me for +keeping mum—but that don't make no difference.  I ain't a-going to tell, +and I ain't a-going back there, anyways.  So, now, le's know all about +it." + +"Well, you see, it 'uz dis way.  Ole missus—dat's Miss Watson—she pecks +on me all de time, en treats me pooty rough, but she awluz said she +wouldn' sell me down to Orleans.  But I noticed dey wuz a nigger trader +roun' de place considable lately, en I begin to git oneasy.  Well, one +night I creeps to de do' pooty late, en de do' warn't quite shet, en I +hear old missus tell de widder she gwyne to sell me down to Orleans, but +she didn' want to, but she could git eight hund'd dollars for me, en it +'uz sich a big stack o' money she couldn' resis'.  De widder she try to +git her to say she wouldn' do it, but I never waited to hear de res'.  I +lit out mighty quick, I tell you. + +"I tuck out en shin down de hill, en 'spec to steal a skift 'long de +sho' som'ers 'bove de town, but dey wuz people a-stirring yit, so I hid +in de ole tumble-down cooper-shop on de bank to wait for everybody to +go 'way. Well, I wuz dah all night.  Dey wuz somebody roun' all de time. + 'Long 'bout six in de mawnin' skifts begin to go by, en 'bout eight er +nine every skift dat went 'long wuz talkin' 'bout how yo' pap come over +to de town en say you's killed.  Dese las' skifts wuz full o' ladies en +genlmen a-goin' over for to see de place.  Sometimes dey'd pull up at +de sho' en take a res' b'fo' dey started acrost, so by de talk I got to +know all 'bout de killin'.  I 'uz powerful sorry you's killed, Huck, but +I ain't no mo' now. + +"I laid dah under de shavin's all day.  I 'uz hungry, but I warn't +afeard; bekase I knowed ole missus en de widder wuz goin' to start to +de camp-meet'n' right arter breakfas' en be gone all day, en dey knows +I goes off wid de cattle 'bout daylight, so dey wouldn' 'spec to see me +roun' de place, en so dey wouldn' miss me tell arter dark in de evenin'. +De yuther servants wouldn' miss me, kase dey'd shin out en take holiday +soon as de ole folks 'uz out'n de way. + +"Well, when it come dark I tuck out up de river road, en went 'bout two +mile er more to whah dey warn't no houses.  I'd made up my mine 'bout +what I's agwyne to do.  You see, ef I kep' on tryin' to git away afoot, +de dogs 'ud track me; ef I stole a skift to cross over, dey'd miss dat +skift, you see, en dey'd know 'bout whah I'd lan' on de yuther side, en +whah to pick up my track.  So I says, a raff is what I's arter; it doan' +make no track. + +"I see a light a-comin' roun' de p'int bymeby, so I wade' in en shove' +a log ahead o' me en swum more'n half way acrost de river, en got in +'mongst de drift-wood, en kep' my head down low, en kinder swum agin de +current tell de raff come along.  Den I swum to de stern uv it en tuck +a-holt.  It clouded up en 'uz pooty dark for a little while.  So I clumb +up en laid down on de planks.  De men 'uz all 'way yonder in de middle, +whah de lantern wuz.  De river wuz a-risin', en dey wuz a good current; +so I reck'n'd 'at by fo' in de mawnin' I'd be twenty-five mile down de +river, en den I'd slip in jis b'fo' daylight en swim asho', en take to +de woods on de Illinois side. + +"But I didn' have no luck.  When we 'uz mos' down to de head er de +islan' a man begin to come aft wid de lantern, I see it warn't no use +fer to wait, so I slid overboard en struck out fer de islan'.  Well, I +had a notion I could lan' mos' anywhers, but I couldn't—bank too bluff. + I 'uz mos' to de foot er de islan' b'fo' I found' a good place.  I went +into de woods en jedged I wouldn' fool wid raffs no mo', long as dey +move de lantern roun' so.  I had my pipe en a plug er dog-leg, en some +matches in my cap, en dey warn't wet, so I 'uz all right." + +"And so you ain't had no meat nor bread to eat all this time?  Why +didn't you get mud-turkles?" + +"How you gwyne to git 'm?  You can't slip up on um en grab um; en how's +a body gwyne to hit um wid a rock?  How could a body do it in de night? + En I warn't gwyne to show mysef on de bank in de daytime." + +"Well, that's so.  You've had to keep in the woods all the time, of +course. Did you hear 'em shooting the cannon?" + +"Oh, yes.  I knowed dey was arter you.  I see um go by heah—watched um +thoo de bushes." + +Some young birds come along, flying a yard or two at a time and +lighting. Jim said it was a sign it was going to rain.  He said it was +a sign when young chickens flew that way, and so he reckoned it was the +same way when young birds done it.  I was going to catch some of them, +but Jim wouldn't let me.  He said it was death.  He said his father laid +mighty sick once, and some of them catched a bird, and his old granny +said his father would die, and he did. + +And Jim said you mustn't count the things you are going to cook for +dinner, because that would bring bad luck.  The same if you shook the +table-cloth after sundown.  And he said if a man owned a beehive +and that man died, the bees must be told about it before sun-up next +morning, or else the bees would all weaken down and quit work and die. + Jim said bees wouldn't sting idiots; but I didn't believe that, because +I had tried them lots of times myself, and they wouldn't sting me. + +I had heard about some of these things before, but not all of them.  Jim +knowed all kinds of signs.  He said he knowed most everything.  I said +it looked to me like all the signs was about bad luck, and so I asked +him if there warn't any good-luck signs.  He says: + +"Mighty few—an' dey ain't no use to a body.  What you want to know +when good luck's a-comin' for?  Want to keep it off?"  And he said:  "Ef +you's got hairy arms en a hairy breas', it's a sign dat you's agwyne +to be rich. Well, dey's some use in a sign like dat, 'kase it's so fur +ahead. You see, maybe you's got to be po' a long time fust, en so you +might git discourage' en kill yo'sef 'f you didn' know by de sign dat +you gwyne to be rich bymeby." + +"Have you got hairy arms and a hairy breast, Jim?" + +"What's de use to ax dat question?  Don't you see I has?" + +"Well, are you rich?" + +"No, but I ben rich wunst, and gwyne to be rich agin.  Wunst I had +foteen dollars, but I tuck to specalat'n', en got busted out." + +"What did you speculate in, Jim?" + +"Well, fust I tackled stock." + +"What kind of stock?" + +"Why, live stock—cattle, you know.  I put ten dollars in a cow.  But +I ain' gwyne to resk no mo' money in stock.  De cow up 'n' died on my +han's." + +"So you lost the ten dollars." + +"No, I didn't lose it all.  I on'y los' 'bout nine of it.  I sole de +hide en taller for a dollar en ten cents." + +"You had five dollars and ten cents left.  Did you speculate any more?" + +"Yes.  You know that one-laigged nigger dat b'longs to old Misto +Bradish? Well, he sot up a bank, en say anybody dat put in a dollar +would git fo' dollars mo' at de en' er de year.  Well, all de niggers +went in, but dey didn't have much.  I wuz de on'y one dat had much.  So +I stuck out for mo' dan fo' dollars, en I said 'f I didn' git it I'd +start a bank mysef. Well, o' course dat nigger want' to keep me out er +de business, bekase he says dey warn't business 'nough for two banks, so +he say I could put in my five dollars en he pay me thirty-five at de en' +er de year. + +"So I done it.  Den I reck'n'd I'd inves' de thirty-five dollars right +off en keep things a-movin'.  Dey wuz a nigger name' Bob, dat had +ketched a wood-flat, en his marster didn' know it; en I bought it off'n +him en told him to take de thirty-five dollars when de en' er de +year come; but somebody stole de wood-flat dat night, en nex day de +one-laigged nigger say de bank's busted.  So dey didn' none uv us git no +money." + +"What did you do with the ten cents, Jim?" + +"Well, I 'uz gwyne to spen' it, but I had a dream, en de dream tole me +to give it to a nigger name' Balum—Balum's Ass dey call him for short; +he's one er dem chuckleheads, you know.  But he's lucky, dey say, en I +see I warn't lucky.  De dream say let Balum inves' de ten cents en he'd +make a raise for me.  Well, Balum he tuck de money, en when he wuz in +church he hear de preacher say dat whoever give to de po' len' to de +Lord, en boun' to git his money back a hund'd times.  So Balum he tuck +en give de ten cents to de po', en laid low to see what wuz gwyne to +come of it." + +"Well, what did come of it, Jim?" + +"Nuffn never come of it.  I couldn' manage to k'leck dat money no way; +en Balum he couldn'.  I ain' gwyne to len' no mo' money 'dout I see de +security.  Boun' to git yo' money back a hund'd times, de preacher says! +Ef I could git de ten cents back, I'd call it squah, en be glad er de +chanst." + +"Well, it's all right anyway, Jim, long as you're going to be rich again +some time or other." + +"Yes; en I's rich now, come to look at it.  I owns mysef, en I's wuth +eight hund'd dollars.  I wisht I had de money, I wouldn' want no mo'." + + + + +CHAPTER IX. + +I wanted to go and look at a place right about the middle of the island +that I'd found when I was exploring; so we started and soon got to it, +because the island was only three miles long and a quarter of a mile +wide. + +This place was a tolerable long, steep hill or ridge about forty foot +high. We had a rough time getting to the top, the sides was so steep and +the bushes so thick.  We tramped and clumb around all over it, and by +and by found a good big cavern in the rock, most up to the top on the +side towards Illinois.  The cavern was as big as two or three rooms +bunched together, and Jim could stand up straight in it.  It was cool in +there. Jim was for putting our traps in there right away, but I said we +didn't want to be climbing up and down there all the time. + +Jim said if we had the canoe hid in a good place, and had all the traps +in the cavern, we could rush there if anybody was to come to the island, +and they would never find us without dogs.  And, besides, he said them +little birds had said it was going to rain, and did I want the things to +get wet? + +So we went back and got the canoe, and paddled up abreast the cavern, +and lugged all the traps up there.  Then we hunted up a place close by +to hide the canoe in, amongst the thick willows.  We took some fish off +of the lines and set them again, and begun to get ready for dinner. + +The door of the cavern was big enough to roll a hogshead in, and on one +side of the door the floor stuck out a little bit, and was flat and a +good place to build a fire on.  So we built it there and cooked dinner. + +We spread the blankets inside for a carpet, and eat our dinner in there. +We put all the other things handy at the back of the cavern.  Pretty +soon it darkened up, and begun to thunder and lighten; so the birds was +right about it.  Directly it begun to rain, and it rained like all fury, +too, and I never see the wind blow so.  It was one of these regular +summer storms.  It would get so dark that it looked all blue-black +outside, and lovely; and the rain would thrash along by so thick that +the trees off a little ways looked dim and spider-webby; and here would +come a blast of wind that would bend the trees down and turn up the +pale underside of the leaves; and then a perfect ripper of a gust would +follow along and set the branches to tossing their arms as if they +was just wild; and next, when it was just about the bluest and +blackest—FST! it was as bright as glory, and you'd have a little +glimpse of tree-tops a-plunging about away off yonder in the storm, +hundreds of yards further than you could see before; dark as sin again +in a second, and now you'd hear the thunder let go with an awful crash, +and then go rumbling, grumbling, tumbling, down the sky towards the +under side of the world, like rolling empty barrels down stairs—where +it's long stairs and they bounce a good deal, you know. + +"Jim, this is nice," I says.  "I wouldn't want to be nowhere else but +here. Pass me along another hunk of fish and some hot corn-bread." + +"Well, you wouldn't a ben here 'f it hadn't a ben for Jim.  You'd a ben +down dah in de woods widout any dinner, en gittn' mos' drownded, too; +dat you would, honey.  Chickens knows when it's gwyne to rain, en so do +de birds, chile." + +The river went on raising and raising for ten or twelve days, till at +last it was over the banks.  The water was three or four foot deep on +the island in the low places and on the Illinois bottom.  On that side +it was a good many miles wide, but on the Missouri side it was the same +old distance across—a half a mile—because the Missouri shore was just a +wall of high bluffs. + +Daytimes we paddled all over the island in the canoe, It was mighty cool +and shady in the deep woods, even if the sun was blazing outside.  We +went winding in and out amongst the trees, and sometimes the vines hung +so thick we had to back away and go some other way.  Well, on every old +broken-down tree you could see rabbits and snakes and such things; and +when the island had been overflowed a day or two they got so tame, on +account of being hungry, that you could paddle right up and put your +hand on them if you wanted to; but not the snakes and turtles—they would +slide off in the water.  The ridge our cavern was in was full of them. +We could a had pets enough if we'd wanted them. + +One night we catched a little section of a lumber raft—nice pine planks. +It was twelve foot wide and about fifteen or sixteen foot long, and +the top stood above water six or seven inches—a solid, level floor.  We +could see saw-logs go by in the daylight sometimes, but we let them go; +we didn't show ourselves in daylight. + +Another night when we was up at the head of the island, just before +daylight, here comes a frame-house down, on the west side.  She was +a two-story, and tilted over considerable.  We paddled out and got +aboard—clumb in at an upstairs window.  But it was too dark to see yet, +so we made the canoe fast and set in her to wait for daylight. + +The light begun to come before we got to the foot of the island.  Then +we looked in at the window.  We could make out a bed, and a table, and +two old chairs, and lots of things around about on the floor, and there +was clothes hanging against the wall.  There was something laying on the +floor in the far corner that looked like a man.  So Jim says: + +"Hello, you!" + +But it didn't budge.  So I hollered again, and then Jim says: + +"De man ain't asleep—he's dead.  You hold still—I'll go en see." + +He went, and bent down and looked, and says: + +"It's a dead man.  Yes, indeedy; naked, too.  He's ben shot in de back. +I reck'n he's ben dead two er three days.  Come in, Huck, but doan' look +at his face—it's too gashly." + +I didn't look at him at all.  Jim throwed some old rags over him, but +he needn't done it; I didn't want to see him.  There was heaps of old +greasy cards scattered around over the floor, and old whisky bottles, +and a couple of masks made out of black cloth; and all over the walls +was the ignorantest kind of words and pictures made with charcoal. + There was two old dirty calico dresses, and a sun-bonnet, and some +women's underclothes hanging against the wall, and some men's clothing, +too.  We put the lot into the canoe—it might come good.  There was a +boy's old speckled straw hat on the floor; I took that, too.  And there +was a bottle that had had milk in it, and it had a rag stopper for a +baby to suck.  We would a took the bottle, but it was broke.  There was +a seedy old chest, and an old hair trunk with the hinges broke.  They +stood open, but there warn't nothing left in them that was any account. + The way things was scattered about we reckoned the people left in a +hurry, and warn't fixed so as to carry off most of their stuff. + +We got an old tin lantern, and a butcher-knife without any handle, and +a bran-new Barlow knife worth two bits in any store, and a lot of tallow +candles, and a tin candlestick, and a gourd, and a tin cup, and a ratty +old bedquilt off the bed, and a reticule with needles and pins and +beeswax and buttons and thread and all such truck in it, and a hatchet +and some nails, and a fishline as thick as my little finger with some +monstrous hooks on it, and a roll of buckskin, and a leather dog-collar, +and a horseshoe, and some vials of medicine that didn't have no label +on them; and just as we was leaving I found a tolerable good curry-comb, +and Jim he found a ratty old fiddle-bow, and a wooden leg.  The straps +was broke off of it, but, barring that, it was a good enough leg, though +it was too long for me and not long enough for Jim, and we couldn't find +the other one, though we hunted all around. + +And so, take it all around, we made a good haul.  When we was ready to +shove off we was a quarter of a mile below the island, and it was pretty +broad day; so I made Jim lay down in the canoe and cover up with the +quilt, because if he set up people could tell he was a nigger a good +ways off.  I paddled over to the Illinois shore, and drifted down most +a half a mile doing it.  I crept up the dead water under the bank, and +hadn't no accidents and didn't see nobody.  We got home all safe. + + + + +CHAPTER X. + +AFTER breakfast I wanted to talk about the dead man and guess out how he +come to be killed, but Jim didn't want to.  He said it would fetch bad +luck; and besides, he said, he might come and ha'nt us; he said a man +that warn't buried was more likely to go a-ha'nting around than one +that was planted and comfortable.  That sounded pretty reasonable, so +I didn't say no more; but I couldn't keep from studying over it and +wishing I knowed who shot the man, and what they done it for. + +We rummaged the clothes we'd got, and found eight dollars in silver +sewed up in the lining of an old blanket overcoat.  Jim said he reckoned +the people in that house stole the coat, because if they'd a knowed the +money was there they wouldn't a left it.  I said I reckoned they killed +him, too; but Jim didn't want to talk about that.  I says: + +"Now you think it's bad luck; but what did you say when I fetched in the +snake-skin that I found on the top of the ridge day before yesterday? +You said it was the worst bad luck in the world to touch a snake-skin +with my hands.  Well, here's your bad luck!  We've raked in all this +truck and eight dollars besides.  I wish we could have some bad luck +like this every day, Jim." + +"Never you mind, honey, never you mind.  Don't you git too peart.  It's +a-comin'.  Mind I tell you, it's a-comin'." + +It did come, too.  It was a Tuesday that we had that talk.  Well, after +dinner Friday we was laying around in the grass at the upper end of the +ridge, and got out of tobacco.  I went to the cavern to get some, and +found a rattlesnake in there.  I killed him, and curled him up on the +foot of Jim's blanket, ever so natural, thinking there'd be some fun +when Jim found him there.  Well, by night I forgot all about the snake, +and when Jim flung himself down on the blanket while I struck a light +the snake's mate was there, and bit him. + +He jumped up yelling, and the first thing the light showed was the +varmint curled up and ready for another spring.  I laid him out in a +second with a stick, and Jim grabbed pap's whisky-jug and begun to pour +it down. + +He was barefooted, and the snake bit him right on the heel.  That all +comes of my being such a fool as to not remember that wherever you leave +a dead snake its mate always comes there and curls around it.  Jim told +me to chop off the snake's head and throw it away, and then skin the +body and roast a piece of it.  I done it, and he eat it and said it +would help cure him. He made me take off the rattles and tie them around +his wrist, too.  He said that that would help.  Then I slid out quiet +and throwed the snakes clear away amongst the bushes; for I warn't going +to let Jim find out it was all my fault, not if I could help it. + +Jim sucked and sucked at the jug, and now and then he got out of his +head and pitched around and yelled; but every time he come to himself he +went to sucking at the jug again.  His foot swelled up pretty big, and +so did his leg; but by and by the drunk begun to come, and so I judged +he was all right; but I'd druther been bit with a snake than pap's +whisky. + +Jim was laid up for four days and nights.  Then the swelling was all +gone and he was around again.  I made up my mind I wouldn't ever take +a-holt of a snake-skin again with my hands, now that I see what had come +of it. Jim said he reckoned I would believe him next time.  And he said +that handling a snake-skin was such awful bad luck that maybe we hadn't +got to the end of it yet.  He said he druther see the new moon over his +left shoulder as much as a thousand times than take up a snake-skin +in his hand.  Well, I was getting to feel that way myself, though I've +always reckoned that looking at the new moon over your left shoulder is +one of the carelessest and foolishest things a body can do.  Old Hank +Bunker done it once, and bragged about it; and in less than two years he +got drunk and fell off of the shot-tower, and spread himself out so +that he was just a kind of a layer, as you may say; and they slid him +edgeways between two barn doors for a coffin, and buried him so, so +they say, but I didn't see it.  Pap told me.  But anyway it all come of +looking at the moon that way, like a fool. + +Well, the days went along, and the river went down between its banks +again; and about the first thing we done was to bait one of the big +hooks with a skinned rabbit and set it and catch a catfish that was +as big as a man, being six foot two inches long, and weighed over two +hundred pounds. We couldn't handle him, of course; he would a flung us +into Illinois.  We just set there and watched him rip and tear around +till he drownded.  We found a brass button in his stomach and a round +ball, and lots of rubbage.  We split the ball open with the hatchet, +and there was a spool in it.  Jim said he'd had it there a long time, to +coat it over so and make a ball of it.  It was as big a fish as was ever +catched in the Mississippi, I reckon.  Jim said he hadn't ever seen +a bigger one.  He would a been worth a good deal over at the village. + They peddle out such a fish as that by the pound in the market-house +there; everybody buys some of him; his meat's as white as snow and makes +a good fry. + +Next morning I said it was getting slow and dull, and I wanted to get a +stirring up some way.  I said I reckoned I would slip over the river and +find out what was going on.  Jim liked that notion; but he said I +must go in the dark and look sharp.  Then he studied it over and said, +couldn't I put on some of them old things and dress up like a girl? + That was a good notion, too.  So we shortened up one of the calico +gowns, and I turned up my trouser-legs to my knees and got into it.  Jim +hitched it behind with the hooks, and it was a fair fit.  I put on the +sun-bonnet and tied it under my chin, and then for a body to look in +and see my face was like looking down a joint of stove-pipe.  Jim said +nobody would know me, even in the daytime, hardly.  I practiced around +all day to get the hang of the things, and by and by I could do pretty +well in them, only Jim said I didn't walk like a girl; and he said +I must quit pulling up my gown to get at my britches-pocket.  I took +notice, and done better. + +I started up the Illinois shore in the canoe just after dark. + +I started across to the town from a little below the ferry-landing, and +the drift of the current fetched me in at the bottom of the town.  I +tied up and started along the bank.  There was a light burning in a +little shanty that hadn't been lived in for a long time, and I wondered +who had took up quarters there.  I slipped up and peeped in at the +window.  There was a woman about forty year old in there knitting by +a candle that was on a pine table.  I didn't know her face; she was a +stranger, for you couldn't start a face in that town that I didn't know. + Now this was lucky, because I was weakening; I was getting afraid I had +come; people might know my voice and find me out.  But if this woman had +been in such a little town two days she could tell me all I wanted to +know; so I knocked at the door, and made up my mind I wouldn't forget I +was a girl. + + + + +CHAPTER XI. + +"COME in," says the woman, and I did.  She says:  "Take a cheer." + +I done it.  She looked me all over with her little shiny eyes, and says: + +"What might your name be?" + +"Sarah Williams." + +"Where 'bouts do you live?  In this neighborhood?' + +"No'm.  In Hookerville, seven mile below.  I've walked all the way and +I'm all tired out." + +"Hungry, too, I reckon.  I'll find you something." + +"No'm, I ain't hungry.  I was so hungry I had to stop two miles below +here at a farm; so I ain't hungry no more.  It's what makes me so late. +My mother's down sick, and out of money and everything, and I come to +tell my uncle Abner Moore.  He lives at the upper end of the town, she +says.  I hain't ever been here before.  Do you know him?" + +"No; but I don't know everybody yet.  I haven't lived here quite two +weeks. It's a considerable ways to the upper end of the town.  You +better stay here all night.  Take off your bonnet." + +"No," I says; "I'll rest a while, I reckon, and go on.  I ain't afeared +of the dark." + +She said she wouldn't let me go by myself, but her husband would be in +by and by, maybe in a hour and a half, and she'd send him along with me. +Then she got to talking about her husband, and about her relations up +the river, and her relations down the river, and about how much better +off they used to was, and how they didn't know but they'd made a mistake +coming to our town, instead of letting well alone—and so on and so on, +till I was afeard I had made a mistake coming to her to find out what +was going on in the town; but by and by she dropped on to pap and the +murder, and then I was pretty willing to let her clatter right along. + She told about me and Tom Sawyer finding the six thousand dollars (only +she got it ten) and all about pap and what a hard lot he was, and what +a hard lot I was, and at last she got down to where I was murdered.  I +says: + +"Who done it?  We've heard considerable about these goings on down in +Hookerville, but we don't know who 'twas that killed Huck Finn." + +"Well, I reckon there's a right smart chance of people here that'd +like to know who killed him.  Some think old Finn done it himself." + +"No—is that so?" + +"Most everybody thought it at first.  He'll never know how nigh he come +to getting lynched.  But before night they changed around and judged it +was done by a runaway nigger named Jim." + +"Why he—" + +I stopped.  I reckoned I better keep still.  She run on, and never +noticed I had put in at all: + +"The nigger run off the very night Huck Finn was killed.  So there's a +reward out for him—three hundred dollars.  And there's a reward out for +old Finn, too—two hundred dollars.  You see, he come to town the +morning after the murder, and told about it, and was out with 'em on the +ferryboat hunt, and right away after he up and left.  Before night they +wanted to lynch him, but he was gone, you see.  Well, next day they +found out the nigger was gone; they found out he hadn't ben seen sence +ten o'clock the night the murder was done.  So then they put it on him, +you see; and while they was full of it, next day, back comes old Finn, +and went boo-hooing to Judge Thatcher to get money to hunt for the +nigger all over Illinois with. The judge gave him some, and that evening +he got drunk, and was around till after midnight with a couple of mighty +hard-looking strangers, and then went off with them.  Well, he hain't +come back sence, and they ain't looking for him back till this thing +blows over a little, for people thinks now that he killed his boy and +fixed things so folks would think robbers done it, and then he'd get +Huck's money without having to bother a long time with a lawsuit. + People do say he warn't any too good to do it.  Oh, he's sly, I reckon. + If he don't come back for a year he'll be all right.  You can't prove +anything on him, you know; everything will be quieted down then, and +he'll walk in Huck's money as easy as nothing." + +"Yes, I reckon so, 'm.  I don't see nothing in the way of it.  Has +everybody quit thinking the nigger done it?" + +"Oh, no, not everybody.  A good many thinks he done it.  But they'll get +the nigger pretty soon now, and maybe they can scare it out of him." + +"Why, are they after him yet?" + +"Well, you're innocent, ain't you!  Does three hundred dollars lay +around every day for people to pick up?  Some folks think the nigger +ain't far from here.  I'm one of them—but I hain't talked it around.  A +few days ago I was talking with an old couple that lives next door in +the log shanty, and they happened to say hardly anybody ever goes to +that island over yonder that they call Jackson's Island.  Don't anybody +live there? says I. No, nobody, says they.  I didn't say any more, but +I done some thinking.  I was pretty near certain I'd seen smoke over +there, about the head of the island, a day or two before that, so I says +to myself, like as not that nigger's hiding over there; anyway, says +I, it's worth the trouble to give the place a hunt.  I hain't seen any +smoke sence, so I reckon maybe he's gone, if it was him; but husband's +going over to see—him and another man.  He was gone up the river; but he +got back to-day, and I told him as soon as he got here two hours ago." + +I had got so uneasy I couldn't set still.  I had to do something with my +hands; so I took up a needle off of the table and went to threading +it. My hands shook, and I was making a bad job of it.  When the woman +stopped talking I looked up, and she was looking at me pretty curious +and smiling a little.  I put down the needle and thread, and let on to +be interested—and I was, too—and says: + +"Three hundred dollars is a power of money.  I wish my mother could get +it. Is your husband going over there to-night?" + +"Oh, yes.  He went up-town with the man I was telling you of, to get a +boat and see if they could borrow another gun.  They'll go over after +midnight." + +"Couldn't they see better if they was to wait till daytime?" + +"Yes.  And couldn't the nigger see better, too?  After midnight he'll +likely be asleep, and they can slip around through the woods and hunt up +his camp fire all the better for the dark, if he's got one." + +"I didn't think of that." + +The woman kept looking at me pretty curious, and I didn't feel a bit +comfortable.  Pretty soon she says, + +"What did you say your name was, honey?" + +"M—Mary Williams." + +Somehow it didn't seem to me that I said it was Mary before, so I didn't +look up—seemed to me I said it was Sarah; so I felt sort of cornered, +and was afeared maybe I was looking it, too.  I wished the woman would +say something more; the longer she set still the uneasier I was.  But +now she says: + +"Honey, I thought you said it was Sarah when you first come in?" + +"Oh, yes'm, I did.  Sarah Mary Williams.  Sarah's my first name.  Some +calls me Sarah, some calls me Mary." + +"Oh, that's the way of it?" + +"Yes'm." + +I was feeling better then, but I wished I was out of there, anyway.  I +couldn't look up yet. + +Well, the woman fell to talking about how hard times was, and how poor +they had to live, and how the rats was as free as if they owned the +place, and so forth and so on, and then I got easy again.  She was right +about the rats. You'd see one stick his nose out of a hole in the corner +every little while.  She said she had to have things handy to throw at +them when she was alone, or they wouldn't give her no peace.  She showed +me a bar of lead twisted up into a knot, and said she was a good shot +with it generly, but she'd wrenched her arm a day or two ago, and didn't +know whether she could throw true now.  But she watched for a chance, +and directly banged away at a rat; but she missed him wide, and said +"Ouch!" it hurt her arm so.  Then she told me to try for the next one. + I wanted to be getting away before the old man got back, but of course +I didn't let on.  I got the thing, and the first rat that showed his +nose I let drive, and if he'd a stayed where he was he'd a been a +tolerable sick rat.  She said that was first-rate, and she reckoned I +would hive the next one.  She went and got the lump of lead and fetched +it back, and brought along a hank of yarn which she wanted me to help +her with.  I held up my two hands and she put the hank over them, and +went on talking about her and her husband's matters.  But she broke off +to say: + +"Keep your eye on the rats.  You better have the lead in your lap, +handy." + +So she dropped the lump into my lap just at that moment, and I clapped +my legs together on it and she went on talking.  But only about a +minute. Then she took off the hank and looked me straight in the face, +and very pleasant, and says: + +"Come, now, what's your real name?" + +"Wh—what, mum?" + +"What's your real name?  Is it Bill, or Tom, or Bob?—or what is it?" + +I reckon I shook like a leaf, and I didn't know hardly what to do.  But +I says: + +"Please to don't poke fun at a poor girl like me, mum.  If I'm in the +way here, I'll—" + +"No, you won't.  Set down and stay where you are.  I ain't going to hurt +you, and I ain't going to tell on you, nuther.  You just tell me your +secret, and trust me.  I'll keep it; and, what's more, I'll help +you. So'll my old man if you want him to.  You see, you're a runaway +'prentice, that's all.  It ain't anything.  There ain't no harm in it. +You've been treated bad, and you made up your mind to cut.  Bless you, +child, I wouldn't tell on you.  Tell me all about it now, that's a good +boy." + +So I said it wouldn't be no use to try to play it any longer, and I +would just make a clean breast and tell her everything, but she musn't +go back on her promise.  Then I told her my father and mother was dead, +and the law had bound me out to a mean old farmer in the country thirty +mile back from the river, and he treated me so bad I couldn't stand it +no longer; he went away to be gone a couple of days, and so I took my +chance and stole some of his daughter's old clothes and cleared out, and +I had been three nights coming the thirty miles.  I traveled nights, +and hid daytimes and slept, and the bag of bread and meat I carried from +home lasted me all the way, and I had a-plenty.  I said I believed my +uncle Abner Moore would take care of me, and so that was why I struck +out for this town of Goshen. + +"Goshen, child?  This ain't Goshen.  This is St. Petersburg.  Goshen's +ten mile further up the river.  Who told you this was Goshen?" + +"Why, a man I met at daybreak this morning, just as I was going to turn +into the woods for my regular sleep.  He told me when the roads forked I +must take the right hand, and five mile would fetch me to Goshen." + +"He was drunk, I reckon.  He told you just exactly wrong." + +"Well, he did act like he was drunk, but it ain't no matter now.  I got +to be moving along.  I'll fetch Goshen before daylight." + +"Hold on a minute.  I'll put you up a snack to eat.  You might want it." + +So she put me up a snack, and says: + +"Say, when a cow's laying down, which end of her gets up first?  Answer +up prompt now—don't stop to study over it.  Which end gets up first?" + +"The hind end, mum." + +"Well, then, a horse?" + +"The for'rard end, mum." + +"Which side of a tree does the moss grow on?" + +"North side." + +"If fifteen cows is browsing on a hillside, how many of them eats with +their heads pointed the same direction?" + +"The whole fifteen, mum." + +"Well, I reckon you have lived in the country.  I thought maybe you +was trying to hocus me again.  What's your real name, now?" + +"George Peters, mum." + +"Well, try to remember it, George.  Don't forget and tell me it's +Elexander before you go, and then get out by saying it's George +Elexander when I catch you.  And don't go about women in that old +calico.  You do a girl tolerable poor, but you might fool men, maybe. + Bless you, child, when you set out to thread a needle don't hold the +thread still and fetch the needle up to it; hold the needle still and +poke the thread at it; that's the way a woman most always does, but a +man always does t'other way.  And when you throw at a rat or anything, +hitch yourself up a tiptoe and fetch your hand up over your head as +awkward as you can, and miss your rat about six or seven foot. Throw +stiff-armed from the shoulder, like there was a pivot there for it to +turn on, like a girl; not from the wrist and elbow, with your arm out +to one side, like a boy.  And, mind you, when a girl tries to catch +anything in her lap she throws her knees apart; she don't clap them +together, the way you did when you catched the lump of lead.  Why, I +spotted you for a boy when you was threading the needle; and I contrived +the other things just to make certain.  Now trot along to your uncle, +Sarah Mary Williams George Elexander Peters, and if you get into trouble +you send word to Mrs. Judith Loftus, which is me, and I'll do what I can +to get you out of it.  Keep the river road all the way, and next time +you tramp take shoes and socks with you. The river road's a rocky one, +and your feet'll be in a condition when you get to Goshen, I reckon." + +I went up the bank about fifty yards, and then I doubled on my tracks +and slipped back to where my canoe was, a good piece below the house.  I +jumped in, and was off in a hurry.  I went up-stream far enough to +make the head of the island, and then started across.  I took off the +sun-bonnet, for I didn't want no blinders on then.  When I was about the +middle I heard the clock begin to strike, so I stops and listens; the +sound come faint over the water but clear—eleven.  When I struck the +head of the island I never waited to blow, though I was most winded, but +I shoved right into the timber where my old camp used to be, and started +a good fire there on a high and dry spot. + +Then I jumped in the canoe and dug out for our place, a mile and a half +below, as hard as I could go.  I landed, and slopped through the timber +and up the ridge and into the cavern.  There Jim laid, sound asleep on +the ground.  I roused him out and says: + +"Git up and hump yourself, Jim!  There ain't a minute to lose.  They're +after us!" + +Jim never asked no questions, he never said a word; but the way he +worked for the next half an hour showed about how he was scared.  By +that time everything we had in the world was on our raft, and she was +ready to be shoved out from the willow cove where she was hid.  We +put out the camp fire at the cavern the first thing, and didn't show a +candle outside after that. + +I took the canoe out from the shore a little piece, and took a look; +but if there was a boat around I couldn't see it, for stars and shadows +ain't good to see by.  Then we got out the raft and slipped along down +in the shade, past the foot of the island dead still—never saying a +word. + + + + +CHAPTER XII. + +IT must a been close on to one o'clock when we got below the island at +last, and the raft did seem to go mighty slow.  If a boat was to come +along we was going to take to the canoe and break for the Illinois +shore; and it was well a boat didn't come, for we hadn't ever thought to +put the gun in the canoe, or a fishing-line, or anything to eat.  We +was in ruther too much of a sweat to think of so many things.  It warn't +good judgment to put everything on the raft. + +If the men went to the island I just expect they found the camp fire I +built, and watched it all night for Jim to come.  Anyways, they stayed +away from us, and if my building the fire never fooled them it warn't no +fault of mine.  I played it as low down on them as I could. + +When the first streak of day began to show we tied up to a towhead in a +big bend on the Illinois side, and hacked off cottonwood branches with +the hatchet, and covered up the raft with them so she looked like there +had been a cave-in in the bank there.  A tow-head is a sandbar that has +cottonwoods on it as thick as harrow-teeth. + +We had mountains on the Missouri shore and heavy timber on the Illinois +side, and the channel was down the Missouri shore at that place, so we +warn't afraid of anybody running across us.  We laid there all day, +and watched the rafts and steamboats spin down the Missouri shore, and +up-bound steamboats fight the big river in the middle.  I told Jim all +about the time I had jabbering with that woman; and Jim said she was +a smart one, and if she was to start after us herself she wouldn't set +down and watch a camp fire—no, sir, she'd fetch a dog.  Well, then, I +said, why couldn't she tell her husband to fetch a dog?  Jim said he +bet she did think of it by the time the men was ready to start, and he +believed they must a gone up-town to get a dog and so they lost all that +time, or else we wouldn't be here on a towhead sixteen or seventeen mile +below the village—no, indeedy, we would be in that same old town again. + So I said I didn't care what was the reason they didn't get us as long +as they didn't. + +When it was beginning to come on dark we poked our heads out of the +cottonwood thicket, and looked up and down and across; nothing in sight; +so Jim took up some of the top planks of the raft and built a snug +wigwam to get under in blazing weather and rainy, and to keep the things +dry. Jim made a floor for the wigwam, and raised it a foot or more above +the level of the raft, so now the blankets and all the traps was out of +reach of steamboat waves.  Right in the middle of the wigwam we made a +layer of dirt about five or six inches deep with a frame around it for +to hold it to its place; this was to build a fire on in sloppy weather +or chilly; the wigwam would keep it from being seen.  We made an extra +steering-oar, too, because one of the others might get broke on a snag +or something. We fixed up a short forked stick to hang the old lantern +on, because we must always light the lantern whenever we see a steamboat +coming down-stream, to keep from getting run over; but we wouldn't have +to light it for up-stream boats unless we see we was in what they call +a "crossing"; for the river was pretty high yet, very low banks being +still a little under water; so up-bound boats didn't always run the +channel, but hunted easy water. + +This second night we run between seven and eight hours, with a current +that was making over four mile an hour.  We catched fish and talked, +and we took a swim now and then to keep off sleepiness.  It was kind of +solemn, drifting down the big, still river, laying on our backs looking +up at the stars, and we didn't ever feel like talking loud, and it +warn't often that we laughed—only a little kind of a low chuckle.  We +had mighty good weather as a general thing, and nothing ever happened to +us at all—that night, nor the next, nor the next. + +Every night we passed towns, some of them away up on black hillsides, +nothing but just a shiny bed of lights; not a house could you see.  The +fifth night we passed St. Louis, and it was like the whole world lit up. +In St. Petersburg they used to say there was twenty or thirty thousand +people in St. Louis, but I never believed it till I see that wonderful +spread of lights at two o'clock that still night.  There warn't a sound +there; everybody was asleep. + +Every night now I used to slip ashore towards ten o'clock at some little +village, and buy ten or fifteen cents' worth of meal or bacon or other +stuff to eat; and sometimes I lifted a chicken that warn't roosting +comfortable, and took him along.  Pap always said, take a chicken when +you get a chance, because if you don't want him yourself you can easy +find somebody that does, and a good deed ain't ever forgot.  I never see +pap when he didn't want the chicken himself, but that is what he used to +say, anyway. + +Mornings before daylight I slipped into cornfields and borrowed a +watermelon, or a mushmelon, or a punkin, or some new corn, or things of +that kind.  Pap always said it warn't no harm to borrow things if you +was meaning to pay them back some time; but the widow said it warn't +anything but a soft name for stealing, and no decent body would do it. + Jim said he reckoned the widow was partly right and pap was partly +right; so the best way would be for us to pick out two or three things +from the list and say we wouldn't borrow them any more—then he reckoned +it wouldn't be no harm to borrow the others.  So we talked it over all +one night, drifting along down the river, trying to make up our minds +whether to drop the watermelons, or the cantelopes, or the mushmelons, +or what.  But towards daylight we got it all settled satisfactory, and +concluded to drop crabapples and p'simmons.  We warn't feeling just +right before that, but it was all comfortable now.  I was glad the way +it come out, too, because crabapples ain't ever good, and the p'simmons +wouldn't be ripe for two or three months yet. + +We shot a water-fowl now and then that got up too early in the morning +or didn't go to bed early enough in the evening.  Take it all round, we +lived pretty high. + +The fifth night below St. Louis we had a big storm after midnight, with +a power of thunder and lightning, and the rain poured down in a solid +sheet. We stayed in the wigwam and let the raft take care of itself. +When the lightning glared out we could see a big straight river ahead, +and high, rocky bluffs on both sides.  By and by says I, "Hel-lo, Jim, +looky yonder!" It was a steamboat that had killed herself on a rock. + We was drifting straight down for her.  The lightning showed her very +distinct.  She was leaning over, with part of her upper deck above +water, and you could see every little chimbly-guy clean and clear, and a +chair by the big bell, with an old slouch hat hanging on the back of it, +when the flashes come. + +Well, it being away in the night and stormy, and all so mysterious-like, +I felt just the way any other boy would a felt when I see that wreck +laying there so mournful and lonesome in the middle of the river.  I +wanted to get aboard of her and slink around a little, and see what +there was there.  So I says: + +"Le's land on her, Jim." + +But Jim was dead against it at first.  He says: + +"I doan' want to go fool'n 'long er no wrack.  We's doin' blame' well, +en we better let blame' well alone, as de good book says.  Like as not +dey's a watchman on dat wrack." + +"Watchman your grandmother," I says; "there ain't nothing to watch but +the texas and the pilot-house; and do you reckon anybody's going to resk +his life for a texas and a pilot-house such a night as this, when +it's likely to break up and wash off down the river any minute?"  Jim +couldn't say nothing to that, so he didn't try.  "And besides," I says, +"we might borrow something worth having out of the captain's stateroom. + Seegars, I bet you—and cost five cents apiece, solid cash.  Steamboat +captains is always rich, and get sixty dollars a month, and they don't +care a cent what a thing costs, you know, long as they want it.  Stick a +candle in your pocket; I can't rest, Jim, till we give her a rummaging. + Do you reckon Tom Sawyer would ever go by this thing?  Not for pie, he +wouldn't. He'd call it an adventure—that's what he'd call it; and he'd +land on that wreck if it was his last act.  And wouldn't he throw style +into it?—wouldn't he spread himself, nor nothing?  Why, you'd think it +was Christopher C'lumbus discovering Kingdom-Come.  I wish Tom Sawyer +was here." + +Jim he grumbled a little, but give in.  He said we mustn't talk any more +than we could help, and then talk mighty low.  The lightning showed us +the wreck again just in time, and we fetched the stabboard derrick, and +made fast there. + +The deck was high out here.  We went sneaking down the slope of it to +labboard, in the dark, towards the texas, feeling our way slow with our +feet, and spreading our hands out to fend off the guys, for it was so +dark we couldn't see no sign of them.  Pretty soon we struck the forward +end of the skylight, and clumb on to it; and the next step fetched us in +front of the captain's door, which was open, and by Jimminy, away down +through the texas-hall we see a light! and all in the same second we +seem to hear low voices in yonder! + +Jim whispered and said he was feeling powerful sick, and told me to come +along.  I says, all right, and was going to start for the raft; but just +then I heard a voice wail out and say: + +"Oh, please don't, boys; I swear I won't ever tell!" + +Another voice said, pretty loud: + +"It's a lie, Jim Turner.  You've acted this way before.  You always want +more'n your share of the truck, and you've always got it, too, because +you've swore 't if you didn't you'd tell.  But this time you've said +it jest one time too many.  You're the meanest, treacherousest hound in +this country." + +By this time Jim was gone for the raft.  I was just a-biling with +curiosity; and I says to myself, Tom Sawyer wouldn't back out now, +and so I won't either; I'm a-going to see what's going on here.  So I +dropped on my hands and knees in the little passage, and crept aft +in the dark till there warn't but one stateroom betwixt me and the +cross-hall of the texas.  Then in there I see a man stretched on the +floor and tied hand and foot, and two men standing over him, and one +of them had a dim lantern in his hand, and the other one had a pistol. + This one kept pointing the pistol at the man's head on the floor, and +saying: + +"I'd like to!  And I orter, too—a mean skunk!" + +The man on the floor would shrivel up and say, "Oh, please don't, Bill; +I hain't ever goin' to tell." + +And every time he said that the man with the lantern would laugh and +say: + +"'Deed you ain't!  You never said no truer thing 'n that, you bet +you." And once he said:  "Hear him beg! and yit if we hadn't got the +best of him and tied him he'd a killed us both.  And what for?  Jist +for noth'n. Jist because we stood on our rights—that's what for.  But +I lay you ain't a-goin' to threaten nobody any more, Jim Turner.  Put +up that pistol, Bill." + +Bill says: + +"I don't want to, Jake Packard.  I'm for killin' him—and didn't he kill +old Hatfield jist the same way—and don't he deserve it?" + +"But I don't want him killed, and I've got my reasons for it." + +"Bless yo' heart for them words, Jake Packard!  I'll never forgit you +long's I live!" says the man on the floor, sort of blubbering. + +Packard didn't take no notice of that, but hung up his lantern on a nail +and started towards where I was there in the dark, and motioned Bill +to come.  I crawfished as fast as I could about two yards, but the boat +slanted so that I couldn't make very good time; so to keep from getting +run over and catched I crawled into a stateroom on the upper side. + The man came a-pawing along in the dark, and when Packard got to my +stateroom, he says: + +"Here—come in here." + +And in he come, and Bill after him.  But before they got in I was up +in the upper berth, cornered, and sorry I come.  Then they stood there, +with their hands on the ledge of the berth, and talked.  I couldn't see +them, but I could tell where they was by the whisky they'd been having. + I was glad I didn't drink whisky; but it wouldn't made much difference +anyway, because most of the time they couldn't a treed me because I +didn't breathe.  I was too scared.  And, besides, a body couldn't +breathe and hear such talk.  They talked low and earnest.  Bill wanted +to kill Turner.  He says: + +"He's said he'll tell, and he will.  If we was to give both our shares +to him now it wouldn't make no difference after the row and the way +we've served him.  Shore's you're born, he'll turn State's evidence; now +you hear me.  I'm for putting him out of his troubles." + +"So'm I," says Packard, very quiet. + +"Blame it, I'd sorter begun to think you wasn't.  Well, then, that's all +right.  Le's go and do it." + +"Hold on a minute; I hain't had my say yit.  You listen to me. +Shooting's good, but there's quieter ways if the thing's got to be +done. But what I say is this:  it ain't good sense to go court'n around +after a halter if you can git at what you're up to in some way that's +jist as good and at the same time don't bring you into no resks.  Ain't +that so?" + +"You bet it is.  But how you goin' to manage it this time?" + +"Well, my idea is this:  we'll rustle around and gather up whatever +pickins we've overlooked in the staterooms, and shove for shore and hide +the truck. Then we'll wait.  Now I say it ain't a-goin' to be more'n two +hours befo' this wrack breaks up and washes off down the river.  See? +He'll be drownded, and won't have nobody to blame for it but his own +self.  I reckon that's a considerble sight better 'n killin' of him. + I'm unfavorable to killin' a man as long as you can git aroun' it; it +ain't good sense, it ain't good morals.  Ain't I right?" + +"Yes, I reck'n you are.  But s'pose she don't break up and wash off?" + +"Well, we can wait the two hours anyway and see, can't we?" + +"All right, then; come along." + +So they started, and I lit out, all in a cold sweat, and scrambled +forward. It was dark as pitch there; but I said, in a kind of a coarse +whisper, "Jim!" and he answered up, right at my elbow, with a sort of a +moan, and I says: + +"Quick, Jim, it ain't no time for fooling around and moaning; there's a +gang of murderers in yonder, and if we don't hunt up their boat and set +her drifting down the river so these fellows can't get away from the +wreck there's one of 'em going to be in a bad fix.  But if we find their +boat we can put all of 'em in a bad fix—for the sheriff 'll get 'em. +Quick—hurry!  I'll hunt the labboard side, you hunt the stabboard. You +start at the raft, and—" + +"Oh, my lordy, lordy!  raf'?  Dey ain' no raf' no mo'; she done broke +loose en gone I—en here we is!" + + + + +CHAPTER XIII. + +WELL, I catched my breath and most fainted.  Shut up on a wreck with +such a gang as that!  But it warn't no time to be sentimentering.  We'd +got to find that boat now—had to have it for ourselves.  So we went +a-quaking and shaking down the stabboard side, and slow work it was, +too—seemed a week before we got to the stern.  No sign of a boat.  Jim +said he didn't believe he could go any further—so scared he hadn't +hardly any strength left, he said.  But I said, come on, if we get left +on this wreck we are in a fix, sure.  So on we prowled again.  We struck +for the stern of the texas, and found it, and then scrabbled along +forwards on the skylight, hanging on from shutter to shutter, for the +edge of the skylight was in the water.  When we got pretty close to the +cross-hall door there was the skiff, sure enough!  I could just barely +see her.  I felt ever so thankful.  In another second I would a been +aboard of her, but just then the door opened.  One of the men stuck his +head out only about a couple of foot from me, and I thought I was gone; +but he jerked it in again, and says: + +"Heave that blame lantern out o' sight, Bill!" + +He flung a bag of something into the boat, and then got in himself and +set down.  It was Packard.  Then Bill he come out and got in.  Packard +says, in a low voice: + +"All ready—shove off!" + +I couldn't hardly hang on to the shutters, I was so weak.  But Bill +says: + +"Hold on—'d you go through him?" + +"No.  Didn't you?" + +"No.  So he's got his share o' the cash yet." + +"Well, then, come along; no use to take truck and leave money." + +"Say, won't he suspicion what we're up to?" + +"Maybe he won't.  But we got to have it anyway. Come along." + +So they got out and went in. + +The door slammed to because it was on the careened side; and in a half +second I was in the boat, and Jim come tumbling after me.  I out with my +knife and cut the rope, and away we went! + +We didn't touch an oar, and we didn't speak nor whisper, nor hardly even +breathe.  We went gliding swift along, dead silent, past the tip of the +paddle-box, and past the stern; then in a second or two more we was a +hundred yards below the wreck, and the darkness soaked her up, every +last sign of her, and we was safe, and knowed it. + +When we was three or four hundred yards down-stream we see the lantern +show like a little spark at the texas door for a second, and we knowed +by that that the rascals had missed their boat, and was beginning to +understand that they was in just as much trouble now as Jim Turner was. + +Then Jim manned the oars, and we took out after our raft.  Now was the +first time that I begun to worry about the men—I reckon I hadn't +had time to before.  I begun to think how dreadful it was, even for +murderers, to be in such a fix.  I says to myself, there ain't no +telling but I might come to be a murderer myself yet, and then how would +I like it?  So says I to Jim: + +"The first light we see we'll land a hundred yards below it or above +it, in a place where it's a good hiding-place for you and the skiff, and +then I'll go and fix up some kind of a yarn, and get somebody to go for +that gang and get them out of their scrape, so they can be hung when +their time comes." + +But that idea was a failure; for pretty soon it begun to storm again, +and this time worse than ever.  The rain poured down, and never a light +showed; everybody in bed, I reckon.  We boomed along down the river, +watching for lights and watching for our raft.  After a long time the +rain let up, but the clouds stayed, and the lightning kept whimpering, +and by and by a flash showed us a black thing ahead, floating, and we +made for it. + +It was the raft, and mighty glad was we to get aboard of it again.  We +seen a light now away down to the right, on shore.  So I said I would +go for it. The skiff was half full of plunder which that gang had stole +there on the wreck.  We hustled it on to the raft in a pile, and I told +Jim to float along down, and show a light when he judged he had gone +about two mile, and keep it burning till I come; then I manned my oars +and shoved for the light.  As I got down towards it three or four more +showed—up on a hillside.  It was a village.  I closed in above the shore +light, and laid on my oars and floated.  As I went by I see it was a +lantern hanging on the jackstaff of a double-hull ferryboat.  I skimmed +around for the watchman, a-wondering whereabouts he slept; and by and +by I found him roosting on the bitts forward, with his head down between +his knees.  I gave his shoulder two or three little shoves, and begun to +cry. + +He stirred up in a kind of a startlish way; but when he see it was only +me he took a good gap and stretch, and then he says: + +"Hello, what's up?  Don't cry, bub.  What's the trouble?" + +I says: + +"Pap, and mam, and sis, and—" + +Then I broke down.  He says: + +"Oh, dang it now, don't take on so; we all has to have our troubles, +and this 'n 'll come out all right.  What's the matter with 'em?" + +"They're—they're—are you the watchman of the boat?" + +"Yes," he says, kind of pretty-well-satisfied like.  "I'm the captain +and the owner and the mate and the pilot and watchman and head +deck-hand; and sometimes I'm the freight and passengers.  I ain't as +rich as old Jim Hornback, and I can't be so blame' generous and good +to Tom, Dick, and Harry as what he is, and slam around money the way he +does; but I've told him a many a time 't I wouldn't trade places with +him; for, says I, a sailor's life's the life for me, and I'm derned if +I'd live two mile out o' town, where there ain't nothing ever goin' +on, not for all his spondulicks and as much more on top of it.  Says I—" + +I broke in and says: + +"They're in an awful peck of trouble, and—" + +"Who is?" + +"Why, pap and mam and sis and Miss Hooker; and if you'd take your +ferryboat and go up there—" + +"Up where?  Where are they?" + +"On the wreck." + +"What wreck?" + +"Why, there ain't but one." + +"What, you don't mean the Walter Scott?" + +"Yes." + +"Good land! what are they doin' there, for gracious sakes?" + +"Well, they didn't go there a-purpose." + +"I bet they didn't!  Why, great goodness, there ain't no chance for 'em +if they don't git off mighty quick!  Why, how in the nation did they +ever git into such a scrape?" + +"Easy enough.  Miss Hooker was a-visiting up there to the town—" + +"Yes, Booth's Landing—go on." + +"She was a-visiting there at Booth's Landing, and just in the edge of +the evening she started over with her nigger woman in the horse-ferry +to stay all night at her friend's house, Miss What-you-may-call-her I +disremember her name—and they lost their steering-oar, and swung +around and went a-floating down, stern first, about two mile, and +saddle-baggsed on the wreck, and the ferryman and the nigger woman and +the horses was all lost, but Miss Hooker she made a grab and got aboard +the wreck.  Well, about an hour after dark we come along down in our +trading-scow, and it was so dark we didn't notice the wreck till we was +right on it; and so we saddle-baggsed; but all of us was saved but +Bill Whipple—and oh, he was the best cretur!—I most wish 't it had +been me, I do." + +"My George!  It's the beatenest thing I ever struck.  And then what +did you all do?" + +"Well, we hollered and took on, but it's so wide there we couldn't +make nobody hear.  So pap said somebody got to get ashore and get help +somehow. I was the only one that could swim, so I made a dash for it, +and Miss Hooker she said if I didn't strike help sooner, come here and +hunt up her uncle, and he'd fix the thing.  I made the land about a mile +below, and been fooling along ever since, trying to get people to do +something, but they said, 'What, in such a night and such a current? +There ain't no sense in it; go for the steam ferry.'  Now if you'll go +and—" + +"By Jackson, I'd like to, and, blame it, I don't know but I will; but +who in the dingnation's a-going' to pay for it?  Do you reckon your +pap—" + +"Why that's all right.  Miss Hooker she tole me, particular, that +her uncle Hornback—" + +"Great guns! is he her uncle?  Looky here, you break for that light +over yonder-way, and turn out west when you git there, and about a +quarter of a mile out you'll come to the tavern; tell 'em to dart you +out to Jim Hornback's, and he'll foot the bill.  And don't you fool +around any, because he'll want to know the news.  Tell him I'll have +his niece all safe before he can get to town.  Hump yourself, now; I'm +a-going up around the corner here to roust out my engineer." + +I struck for the light, but as soon as he turned the corner I went back +and got into my skiff and bailed her out, and then pulled up shore in +the easy water about six hundred yards, and tucked myself in among +some woodboats; for I couldn't rest easy till I could see the ferryboat +start. But take it all around, I was feeling ruther comfortable on +accounts of taking all this trouble for that gang, for not many would +a done it.  I wished the widow knowed about it.  I judged she would be +proud of me for helping these rapscallions, because rapscallions and +dead beats is the kind the widow and good people takes the most interest +in. + +Well, before long here comes the wreck, dim and dusky, sliding along +down! A kind of cold shiver went through me, and then I struck out for +her.  She was very deep, and I see in a minute there warn't much chance +for anybody being alive in her.  I pulled all around her and hollered +a little, but there wasn't any answer; all dead still.  I felt a little +bit heavy-hearted about the gang, but not much, for I reckoned if they +could stand it I could. + +Then here comes the ferryboat; so I shoved for the middle of the river +on a long down-stream slant; and when I judged I was out of eye-reach +I laid on my oars, and looked back and see her go and smell around the +wreck for Miss Hooker's remainders, because the captain would know her +uncle Hornback would want them; and then pretty soon the ferryboat give +it up and went for the shore, and I laid into my work and went a-booming +down the river. + +It did seem a powerful long time before Jim's light showed up; and when +it did show it looked like it was a thousand mile off.  By the time I +got there the sky was beginning to get a little gray in the east; so we +struck for an island, and hid the raft, and sunk the skiff, and turned +in and slept like dead people. + + + + +CHAPTER XIV. + +BY and by, when we got up, we turned over the truck the gang had stole +off of the wreck, and found boots, and blankets, and clothes, and all +sorts of other things, and a lot of books, and a spyglass, and three +boxes of seegars.  We hadn't ever been this rich before in neither of +our lives.  The seegars was prime.  We laid off all the afternoon in the +woods talking, and me reading the books, and having a general good +time. I told Jim all about what happened inside the wreck and at the +ferryboat, and I said these kinds of things was adventures; but he said +he didn't want no more adventures.  He said that when I went in the +texas and he crawled back to get on the raft and found her gone he +nearly died, because he judged it was all up with him anyway it could +be fixed; for if he didn't get saved he would get drownded; and if he +did get saved, whoever saved him would send him back home so as to get +the reward, and then Miss Watson would sell him South, sure.  Well, he +was right; he was most always right; he had an uncommon level head for a +nigger. + +I read considerable to Jim about kings and dukes and earls and such, and +how gaudy they dressed, and how much style they put on, and called each +other your majesty, and your grace, and your lordship, and so on, 'stead +of mister; and Jim's eyes bugged out, and he was interested.  He says: + +"I didn' know dey was so many un um.  I hain't hearn 'bout none un um, +skasely, but ole King Sollermun, onless you counts dem kings dat's in a +pack er k'yards.  How much do a king git?" + +"Get?"  I says; "why, they get a thousand dollars a month if they want +it; they can have just as much as they want; everything belongs to +them." + +"Ain' dat gay?  En what dey got to do, Huck?" + +"They don't do nothing!  Why, how you talk! They just set around." + +"No; is dat so?" + +"Of course it is.  They just set around—except, maybe, when there's a +war; then they go to the war.  But other times they just lazy around; or +go hawking—just hawking and sp—Sh!—d' you hear a noise?" + +We skipped out and looked; but it warn't nothing but the flutter of a +steamboat's wheel away down, coming around the point; so we come back. + +"Yes," says I, "and other times, when things is dull, they fuss with the +parlyment; and if everybody don't go just so he whacks their heads off. +But mostly they hang round the harem." + +"Roun' de which?" + +"Harem." + +"What's de harem?" + +"The place where he keeps his wives.  Don't you know about the harem? +Solomon had one; he had about a million wives." + +"Why, yes, dat's so; I—I'd done forgot it.  A harem's a bo'd'n-house, I +reck'n.  Mos' likely dey has rackety times in de nussery.  En I reck'n +de wives quarrels considable; en dat 'crease de racket.  Yit dey say +Sollermun de wises' man dat ever live'.  I doan' take no stock in +dat. Bekase why: would a wise man want to live in de mids' er sich a +blim-blammin' all de time?  No—'deed he wouldn't.  A wise man 'ud take +en buil' a biler-factry; en den he could shet down de biler-factry +when he want to res'." + +"Well, but he was the wisest man, anyway; because the widow she told +me so, her own self." + +"I doan k'yer what de widder say, he warn't no wise man nuther.  He +had some er de dad-fetchedes' ways I ever see.  Does you know 'bout dat +chile dat he 'uz gwyne to chop in two?" + +"Yes, the widow told me all about it." + +"Well, den!  Warn' dat de beatenes' notion in de worl'?  You jes' +take en look at it a minute.  Dah's de stump, dah—dat's one er de women; +heah's you—dat's de yuther one; I's Sollermun; en dish yer dollar bill's +de chile.  Bofe un you claims it.  What does I do?  Does I shin aroun' +mongs' de neighbors en fine out which un you de bill do b'long to, en +han' it over to de right one, all safe en soun', de way dat anybody dat +had any gumption would?  No; I take en whack de bill in two, en give +half un it to you, en de yuther half to de yuther woman.  Dat's de way +Sollermun was gwyne to do wid de chile.  Now I want to ast you:  what's +de use er dat half a bill?—can't buy noth'n wid it.  En what use is a +half a chile?  I wouldn' give a dern for a million un um." + +"But hang it, Jim, you've clean missed the point—blame it, you've missed +it a thousand mile." + +"Who?  Me?  Go 'long.  Doan' talk to me 'bout yo' pints.  I reck'n I +knows sense when I sees it; en dey ain' no sense in sich doin's as +dat. De 'spute warn't 'bout a half a chile, de 'spute was 'bout a whole +chile; en de man dat think he kin settle a 'spute 'bout a whole chile +wid a half a chile doan' know enough to come in out'n de rain.  Doan' +talk to me 'bout Sollermun, Huck, I knows him by de back." + +"But I tell you you don't get the point." + +"Blame de point!  I reck'n I knows what I knows.  En mine you, de real +pint is down furder—it's down deeper.  It lays in de way Sollermun was +raised.  You take a man dat's got on'y one or two chillen; is dat man +gwyne to be waseful o' chillen?  No, he ain't; he can't 'ford it.  He +know how to value 'em.  But you take a man dat's got 'bout five million +chillen runnin' roun' de house, en it's diffunt.  He as soon chop a +chile in two as a cat. Dey's plenty mo'.  A chile er two, mo' er less, +warn't no consekens to Sollermun, dad fatch him!" + +I never see such a nigger.  If he got a notion in his head once, there +warn't no getting it out again.  He was the most down on Solomon of +any nigger I ever see.  So I went to talking about other kings, and let +Solomon slide.  I told about Louis Sixteenth that got his head cut off +in France long time ago; and about his little boy the dolphin, that +would a been a king, but they took and shut him up in jail, and some say +he died there. + +"Po' little chap." + +"But some says he got out and got away, and come to America." + +"Dat's good!  But he'll be pooty lonesome—dey ain' no kings here, is +dey, Huck?" + +"No." + +"Den he cain't git no situation.  What he gwyne to do?" + +"Well, I don't know.  Some of them gets on the police, and some of them +learns people how to talk French." + +"Why, Huck, doan' de French people talk de same way we does?" + +"No, Jim; you couldn't understand a word they said—not a single word." + +"Well, now, I be ding-busted!  How do dat come?" + +"I don't know; but it's so.  I got some of their jabber out of a book. +S'pose a man was to come to you and say Polly-voo-franzy—what would you +think?" + +"I wouldn' think nuff'n; I'd take en bust him over de head—dat is, if he +warn't white.  I wouldn't 'low no nigger to call me dat." + +"Shucks, it ain't calling you anything.  It's only saying, do you know +how to talk French?" + +"Well, den, why couldn't he say it?" + +"Why, he is a-saying it.  That's a Frenchman's way of saying it." + +"Well, it's a blame ridicklous way, en I doan' want to hear no mo' 'bout +it.  Dey ain' no sense in it." + +"Looky here, Jim; does a cat talk like we do?" + +"No, a cat don't." + +"Well, does a cow?" + +"No, a cow don't, nuther." + +"Does a cat talk like a cow, or a cow talk like a cat?" + +"No, dey don't." + +"It's natural and right for 'em to talk different from each other, ain't +it?" + +"Course." + +"And ain't it natural and right for a cat and a cow to talk different +from us?" + +"Why, mos' sholy it is." + +"Well, then, why ain't it natural and right for a Frenchman to talk +different from us?  You answer me that." + +"Is a cat a man, Huck?" + +"No." + +"Well, den, dey ain't no sense in a cat talkin' like a man.  Is a cow a +man?—er is a cow a cat?" + +"No, she ain't either of them." + +"Well, den, she ain't got no business to talk like either one er the +yuther of 'em.  Is a Frenchman a man?" + +"Yes." + +"Well, den!  Dad blame it, why doan' he talk like a man?  You answer +me dat!" + +I see it warn't no use wasting words—you can't learn a nigger to argue. +So I quit. + + + + +CHAPTER XV. + +WE judged that three nights more would fetch us to Cairo, at the bottom +of Illinois, where the Ohio River comes in, and that was what we was +after.  We would sell the raft and get on a steamboat and go way up the +Ohio amongst the free States, and then be out of trouble. + +Well, the second night a fog begun to come on, and we made for a towhead +to tie to, for it wouldn't do to try to run in a fog; but when I paddled +ahead in the canoe, with the line to make fast, there warn't anything +but little saplings to tie to.  I passed the line around one of them +right on the edge of the cut bank, but there was a stiff current, and +the raft come booming down so lively she tore it out by the roots and +away she went.  I see the fog closing down, and it made me so sick and +scared I couldn't budge for most a half a minute it seemed to me—and +then there warn't no raft in sight; you couldn't see twenty yards.  I +jumped into the canoe and run back to the stern, and grabbed the paddle +and set her back a stroke.  But she didn't come.  I was in such a hurry +I hadn't untied her.  I got up and tried to untie her, but I was so +excited my hands shook so I couldn't hardly do anything with them. + +As soon as I got started I took out after the raft, hot and heavy, right +down the towhead.  That was all right as far as it went, but the towhead +warn't sixty yards long, and the minute I flew by the foot of it I shot +out into the solid white fog, and hadn't no more idea which way I was +going than a dead man. + +Thinks I, it won't do to paddle; first I know I'll run into the bank +or a towhead or something; I got to set still and float, and yet it's +mighty fidgety business to have to hold your hands still at such a time. + I whooped and listened.  Away down there somewheres I hears a small +whoop, and up comes my spirits.  I went tearing after it, listening +sharp to hear it again.  The next time it come I see I warn't heading +for it, but heading away to the right of it.  And the next time I was +heading away to the left of it—and not gaining on it much either, for +I was flying around, this way and that and t'other, but it was going +straight ahead all the time. + +I did wish the fool would think to beat a tin pan, and beat it all the +time, but he never did, and it was the still places between the whoops +that was making the trouble for me.  Well, I fought along, and directly +I hears the whoop behind me.  I was tangled good now.  That was +somebody else's whoop, or else I was turned around. + +I throwed the paddle down.  I heard the whoop again; it was behind me +yet, but in a different place; it kept coming, and kept changing its +place, and I kept answering, till by and by it was in front of me again, +and I knowed the current had swung the canoe's head down-stream, and I +was all right if that was Jim and not some other raftsman hollering. + I couldn't tell nothing about voices in a fog, for nothing don't look +natural nor sound natural in a fog. + +The whooping went on, and in about a minute I come a-booming down on a +cut bank with smoky ghosts of big trees on it, and the current throwed +me off to the left and shot by, amongst a lot of snags that fairly +roared, the currrent was tearing by them so swift. + +In another second or two it was solid white and still again.  I set +perfectly still then, listening to my heart thump, and I reckon I didn't +draw a breath while it thumped a hundred. + +I just give up then.  I knowed what the matter was.  That cut bank +was an island, and Jim had gone down t'other side of it.  It warn't no +towhead that you could float by in ten minutes.  It had the big timber +of a regular island; it might be five or six miles long and more than +half a mile wide. + +I kept quiet, with my ears cocked, about fifteen minutes, I reckon.  I +was floating along, of course, four or five miles an hour; but you don't +ever think of that.  No, you feel like you are laying dead still on +the water; and if a little glimpse of a snag slips by you don't think to +yourself how fast you're going, but you catch your breath and think, +my! how that snag's tearing along.  If you think it ain't dismal and +lonesome out in a fog that way by yourself in the night, you try it +once—you'll see. + +Next, for about a half an hour, I whoops now and then; at last I hears +the answer a long ways off, and tries to follow it, but I couldn't do +it, and directly I judged I'd got into a nest of towheads, for I had +little dim glimpses of them on both sides of me—sometimes just a narrow +channel between, and some that I couldn't see I knowed was there because +I'd hear the wash of the current against the old dead brush and trash +that hung over the banks.  Well, I warn't long loosing the whoops down +amongst the towheads; and I only tried to chase them a little while, +anyway, because it was worse than chasing a Jack-o'-lantern.  You never +knowed a sound dodge around so, and swap places so quick and so much. + +I had to claw away from the bank pretty lively four or five times, to +keep from knocking the islands out of the river; and so I judged the +raft must be butting into the bank every now and then, or else it would +get further ahead and clear out of hearing—it was floating a little +faster than what I was. + +Well, I seemed to be in the open river again by and by, but I couldn't +hear no sign of a whoop nowheres.  I reckoned Jim had fetched up on a +snag, maybe, and it was all up with him.  I was good and tired, so I +laid down in the canoe and said I wouldn't bother no more.  I didn't +want to go to sleep, of course; but I was so sleepy I couldn't help it; +so I thought I would take jest one little cat-nap. + +But I reckon it was more than a cat-nap, for when I waked up the stars +was shining bright, the fog was all gone, and I was spinning down a +big bend stern first.  First I didn't know where I was; I thought I was +dreaming; and when things began to come back to me they seemed to come +up dim out of last week. + +It was a monstrous big river here, with the tallest and the thickest +kind of timber on both banks; just a solid wall, as well as I could see +by the stars.  I looked away down-stream, and seen a black speck on the +water. I took after it; but when I got to it it warn't nothing but a +couple of sawlogs made fast together.  Then I see another speck, and +chased that; then another, and this time I was right.  It was the raft. + +When I got to it Jim was setting there with his head down between his +knees, asleep, with his right arm hanging over the steering-oar.  The +other oar was smashed off, and the raft was littered up with leaves and +branches and dirt.  So she'd had a rough time. + +I made fast and laid down under Jim's nose on the raft, and began to +gap, and stretch my fists out against Jim, and says: + +"Hello, Jim, have I been asleep?  Why didn't you stir me up?" + +"Goodness gracious, is dat you, Huck?  En you ain' dead—you ain' +drownded—you's back agin?  It's too good for true, honey, it's too good +for true. Lemme look at you chile, lemme feel o' you.  No, you ain' +dead! you's back agin, 'live en soun', jis de same ole Huck—de same ole +Huck, thanks to goodness!" + +"What's the matter with you, Jim?  You been a-drinking?" + +"Drinkin'?  Has I ben a-drinkin'?  Has I had a chance to be a-drinkin'?" + +"Well, then, what makes you talk so wild?" + +"How does I talk wild?" + +"How?  Why, hain't you been talking about my coming back, and all that +stuff, as if I'd been gone away?" + +"Huck—Huck Finn, you look me in de eye; look me in de eye.  Hain't you +ben gone away?" + +"Gone away?  Why, what in the nation do you mean?  I hain't been gone +anywheres.  Where would I go to?" + +"Well, looky here, boss, dey's sumf'n wrong, dey is.  Is I me, or who +is I? Is I heah, or whah is I?  Now dat's what I wants to know." + +"Well, I think you're here, plain enough, but I think you're a +tangle-headed old fool, Jim." + +"I is, is I?  Well, you answer me dis:  Didn't you tote out de line in +de canoe fer to make fas' to de tow-head?" + +"No, I didn't.  What tow-head?  I hain't see no tow-head." + +"You hain't seen no towhead?  Looky here, didn't de line pull loose en +de raf' go a-hummin' down de river, en leave you en de canoe behine in +de fog?" + +"What fog?" + +"Why, de fog!—de fog dat's been aroun' all night.  En didn't you whoop, +en didn't I whoop, tell we got mix' up in de islands en one un us got +los' en t'other one was jis' as good as los', 'kase he didn' know whah +he wuz? En didn't I bust up agin a lot er dem islands en have a turrible +time en mos' git drownded?  Now ain' dat so, boss—ain't it so?  You +answer me dat." + +"Well, this is too many for me, Jim.  I hain't seen no fog, nor no +islands, nor no troubles, nor nothing.  I been setting here talking with +you all night till you went to sleep about ten minutes ago, and I reckon +I done the same.  You couldn't a got drunk in that time, so of course +you've been dreaming." + +"Dad fetch it, how is I gwyne to dream all dat in ten minutes?" + +"Well, hang it all, you did dream it, because there didn't any of it +happen." + +"But, Huck, it's all jis' as plain to me as—" + +"It don't make no difference how plain it is; there ain't nothing in it. +I know, because I've been here all the time." + +Jim didn't say nothing for about five minutes, but set there studying +over it.  Then he says: + +"Well, den, I reck'n I did dream it, Huck; but dog my cats ef it ain't +de powerfullest dream I ever see.  En I hain't ever had no dream b'fo' +dat's tired me like dis one." + +"Oh, well, that's all right, because a dream does tire a body like +everything sometimes.  But this one was a staving dream; tell me all +about it, Jim." + +So Jim went to work and told me the whole thing right through, just as +it happened, only he painted it up considerable.  Then he said he must +start in and "'terpret" it, because it was sent for a warning.  He said +the first towhead stood for a man that would try to do us some good, but +the current was another man that would get us away from him.  The whoops +was warnings that would come to us every now and then, and if we didn't +try hard to make out to understand them they'd just take us into bad +luck, 'stead of keeping us out of it.  The lot of towheads was troubles +we was going to get into with quarrelsome people and all kinds of mean +folks, but if we minded our business and didn't talk back and aggravate +them, we would pull through and get out of the fog and into the big +clear river, which was the free States, and wouldn't have no more +trouble. + +It had clouded up pretty dark just after I got on to the raft, but it +was clearing up again now. + +"Oh, well, that's all interpreted well enough as far as it goes, Jim," I +says; "but what does these things stand for?" + +It was the leaves and rubbish on the raft and the smashed oar.  You +could see them first-rate now. + +Jim looked at the trash, and then looked at me, and back at the trash +again.  He had got the dream fixed so strong in his head that he +couldn't seem to shake it loose and get the facts back into its place +again right away.  But when he did get the thing straightened around he +looked at me steady without ever smiling, and says: + +"What do dey stan' for?  I'se gwyne to tell you.  When I got all wore +out wid work, en wid de callin' for you, en went to sleep, my heart wuz +mos' broke bekase you wuz los', en I didn' k'yer no' mo' what become +er me en de raf'.  En when I wake up en fine you back agin, all safe +en soun', de tears come, en I could a got down on my knees en kiss yo' +foot, I's so thankful. En all you wuz thinkin' 'bout wuz how you could +make a fool uv ole Jim wid a lie.  Dat truck dah is trash; en trash +is what people is dat puts dirt on de head er dey fren's en makes 'em +ashamed." + +Then he got up slow and walked to the wigwam, and went in there without +saying anything but that.  But that was enough.  It made me feel so mean +I could almost kissed his foot to get him to take it back. + +It was fifteen minutes before I could work myself up to go and humble +myself to a nigger; but I done it, and I warn't ever sorry for it +afterwards, neither.  I didn't do him no more mean tricks, and I +wouldn't done that one if I'd a knowed it would make him feel that way. + + + + +CHAPTER XVI. + +WE slept most all day, and started out at night, a little ways behind a +monstrous long raft that was as long going by as a procession.  She had +four long sweeps at each end, so we judged she carried as many as thirty +men, likely.  She had five big wigwams aboard, wide apart, and an open +camp fire in the middle, and a tall flag-pole at each end.  There was a +power of style about her.  It amounted to something being a raftsman +on such a craft as that. + +We went drifting down into a big bend, and the night clouded up and got +hot.  The river was very wide, and was walled with solid timber on +both sides; you couldn't see a break in it hardly ever, or a light.  We +talked about Cairo, and wondered whether we would know it when we got to +it.  I said likely we wouldn't, because I had heard say there warn't but +about a dozen houses there, and if they didn't happen to have them lit +up, how was we going to know we was passing a town?  Jim said if the two +big rivers joined together there, that would show.  But I said maybe +we might think we was passing the foot of an island and coming into the +same old river again. That disturbed Jim—and me too.  So the question +was, what to do?  I said, paddle ashore the first time a light showed, +and tell them pap was behind, coming along with a trading-scow, and +was a green hand at the business, and wanted to know how far it was to +Cairo.  Jim thought it was a good idea, so we took a smoke on it and +waited. + +There warn't nothing to do now but to look out sharp for the town, and +not pass it without seeing it.  He said he'd be mighty sure to see it, +because he'd be a free man the minute he seen it, but if he missed it +he'd be in a slave country again and no more show for freedom.  Every +little while he jumps up and says: + +"Dah she is?" + +But it warn't.  It was Jack-o'-lanterns, or lightning bugs; so he set +down again, and went to watching, same as before.  Jim said it made him +all over trembly and feverish to be so close to freedom.  Well, I can +tell you it made me all over trembly and feverish, too, to hear him, +because I begun to get it through my head that he was most free—and +who was to blame for it?  Why, me.  I couldn't get that out of my +conscience, no how nor no way. It got to troubling me so I couldn't +rest; I couldn't stay still in one place.  It hadn't ever come home to +me before, what this thing was that I was doing.  But now it did; and it +stayed with me, and scorched me more and more.  I tried to make out to +myself that I warn't to blame, because I didn't run Jim off from his +rightful owner; but it warn't no use, conscience up and says, every +time, "But you knowed he was running for his freedom, and you could a +paddled ashore and told somebody."  That was so—I couldn't get around +that noway.  That was where it pinched.  Conscience says to me, "What +had poor Miss Watson done to you that you could see her nigger go off +right under your eyes and never say one single word?  What did that poor +old woman do to you that you could treat her so mean?  Why, she tried to +learn you your book, she tried to learn you your manners, she tried to +be good to you every way she knowed how.  That's what she done." + +I got to feeling so mean and so miserable I most wished I was dead.  I +fidgeted up and down the raft, abusing myself to myself, and Jim was +fidgeting up and down past me.  We neither of us could keep still. + Every time he danced around and says, "Dah's Cairo!" it went through me +like a shot, and I thought if it was Cairo I reckoned I would die of +miserableness. + +Jim talked out loud all the time while I was talking to myself.  He was +saying how the first thing he would do when he got to a free State he +would go to saving up money and never spend a single cent, and when he +got enough he would buy his wife, which was owned on a farm close to +where Miss Watson lived; and then they would both work to buy the +two children, and if their master wouldn't sell them, they'd get an +Ab'litionist to go and steal them. + +It most froze me to hear such talk.  He wouldn't ever dared to talk such +talk in his life before.  Just see what a difference it made in him the +minute he judged he was about free.  It was according to the old saying, +"Give a nigger an inch and he'll take an ell."  Thinks I, this is what +comes of my not thinking.  Here was this nigger, which I had as good +as helped to run away, coming right out flat-footed and saying he would +steal his children—children that belonged to a man I didn't even know; a +man that hadn't ever done me no harm. + +I was sorry to hear Jim say that, it was such a lowering of him.  My +conscience got to stirring me up hotter than ever, until at last I says +to it, "Let up on me—it ain't too late yet—I'll paddle ashore at the +first light and tell."  I felt easy and happy and light as a feather +right off.  All my troubles was gone.  I went to looking out sharp for a +light, and sort of singing to myself.  By and by one showed.  Jim sings +out: + +"We's safe, Huck, we's safe!  Jump up and crack yo' heels!  Dat's de +good ole Cairo at las', I jis knows it!" + +I says: + +"I'll take the canoe and go and see, Jim.  It mightn't be, you know." + +He jumped and got the canoe ready, and put his old coat in the bottom +for me to set on, and give me the paddle; and as I shoved off, he says: + +"Pooty soon I'll be a-shout'n' for joy, en I'll say, it's all on +accounts o' Huck; I's a free man, en I couldn't ever ben free ef it +hadn' ben for Huck; Huck done it.  Jim won't ever forgit you, Huck; +you's de bes' fren' Jim's ever had; en you's de only fren' ole Jim's +got now." + +I was paddling off, all in a sweat to tell on him; but when he says +this, it seemed to kind of take the tuck all out of me.  I went along +slow then, and I warn't right down certain whether I was glad I started +or whether I warn't.  When I was fifty yards off, Jim says: + +"Dah you goes, de ole true Huck; de on'y white genlman dat ever kep' his +promise to ole Jim." + +Well, I just felt sick.  But I says, I got to do it—I can't get out +of it.  Right then along comes a skiff with two men in it with guns, and +they stopped and I stopped.  One of them says: + +"What's that yonder?" + +"A piece of a raft," I says. + +"Do you belong on it?" + +"Yes, sir." + +"Any men on it?" + +"Only one, sir." + +"Well, there's five niggers run off to-night up yonder, above the head +of the bend.  Is your man white or black?" + +I didn't answer up prompt.  I tried to, but the words wouldn't come. I +tried for a second or two to brace up and out with it, but I warn't man +enough—hadn't the spunk of a rabbit.  I see I was weakening; so I just +give up trying, and up and says: + +"He's white." + +"I reckon we'll go and see for ourselves." + +"I wish you would," says I, "because it's pap that's there, and maybe +you'd help me tow the raft ashore where the light is.  He's sick—and so +is mam and Mary Ann." + +"Oh, the devil! we're in a hurry, boy.  But I s'pose we've got to. + Come, buckle to your paddle, and let's get along." + +I buckled to my paddle and they laid to their oars.  When we had made a +stroke or two, I says: + +"Pap'll be mighty much obleeged to you, I can tell you.  Everybody goes +away when I want them to help me tow the raft ashore, and I can't do it +by myself." + +"Well, that's infernal mean.  Odd, too.  Say, boy, what's the matter +with your father?" + +"It's the—a—the—well, it ain't anything much." + +They stopped pulling.  It warn't but a mighty little ways to the raft +now. One says: + +"Boy, that's a lie.  What is the matter with your pap?  Answer up +square now, and it'll be the better for you." + +"I will, sir, I will, honest—but don't leave us, please.  It's +the—the—Gentlemen, if you'll only pull ahead, and let me heave you the +headline, you won't have to come a-near the raft—please do." + +"Set her back, John, set her back!" says one.  They backed water.  "Keep +away, boy—keep to looard.  Confound it, I just expect the wind has +blowed it to us.  Your pap's got the small-pox, and you know it precious +well.  Why didn't you come out and say so?  Do you want to spread it all +over?" + +"Well," says I, a-blubbering, "I've told everybody before, and they just +went away and left us." + +"Poor devil, there's something in that.  We are right down sorry for +you, but we—well, hang it, we don't want the small-pox, you see.  Look +here, I'll tell you what to do.  Don't you try to land by yourself, or +you'll smash everything to pieces.  You float along down about twenty +miles, and you'll come to a town on the left-hand side of the river.  It +will be long after sun-up then, and when you ask for help you tell them +your folks are all down with chills and fever.  Don't be a fool again, +and let people guess what is the matter.  Now we're trying to do you a +kindness; so you just put twenty miles between us, that's a good boy. + It wouldn't do any good to land yonder where the light is—it's only a +wood-yard. Say, I reckon your father's poor, and I'm bound to say he's +in pretty hard luck.  Here, I'll put a twenty-dollar gold piece on this +board, and you get it when it floats by.  I feel mighty mean to leave +you; but my kingdom! it won't do to fool with small-pox, don't you see?" + +"Hold on, Parker," says the other man, "here's a twenty to put on the +board for me.  Good-bye, boy; you do as Mr. Parker told you, and you'll +be all right." + +"That's so, my boy—good-bye, good-bye.  If you see any runaway niggers +you get help and nab them, and you can make some money by it." + +"Good-bye, sir," says I; "I won't let no runaway niggers get by me if I +can help it." + +They went off and I got aboard the raft, feeling bad and low, because I +knowed very well I had done wrong, and I see it warn't no use for me +to try to learn to do right; a body that don't get started right when +he's little ain't got no show—when the pinch comes there ain't nothing +to back him up and keep him to his work, and so he gets beat.  Then I +thought a minute, and says to myself, hold on; s'pose you'd a done right +and give Jim up, would you felt better than what you do now?  No, says +I, I'd feel bad—I'd feel just the same way I do now.  Well, then, says +I, what's the use you learning to do right when it's troublesome to do +right and ain't no trouble to do wrong, and the wages is just the same? + I was stuck.  I couldn't answer that.  So I reckoned I wouldn't bother +no more about it, but after this always do whichever come handiest at +the time. + +I went into the wigwam; Jim warn't there.  I looked all around; he +warn't anywhere.  I says: + +"Jim!" + +"Here I is, Huck.  Is dey out o' sight yit?  Don't talk loud." + +He was in the river under the stern oar, with just his nose out.  I told +him they were out of sight, so he come aboard.  He says: + +"I was a-listenin' to all de talk, en I slips into de river en was gwyne +to shove for sho' if dey come aboard.  Den I was gwyne to swim to de +raf' agin when dey was gone.  But lawsy, how you did fool 'em, Huck! + Dat wuz de smartes' dodge!  I tell you, chile, I'spec it save' ole +Jim—ole Jim ain't going to forgit you for dat, honey." + +Then we talked about the money.  It was a pretty good raise—twenty +dollars apiece.  Jim said we could take deck passage on a steamboat +now, and the money would last us as far as we wanted to go in the free +States. He said twenty mile more warn't far for the raft to go, but he +wished we was already there. + +Towards daybreak we tied up, and Jim was mighty particular about hiding +the raft good.  Then he worked all day fixing things in bundles, and +getting all ready to quit rafting. + +That night about ten we hove in sight of the lights of a town away down +in a left-hand bend. + +I went off in the canoe to ask about it.  Pretty soon I found a man out +in the river with a skiff, setting a trot-line.  I ranged up and says: + +"Mister, is that town Cairo?" + +"Cairo? no.  You must be a blame' fool." + +"What town is it, mister?" + +"If you want to know, go and find out.  If you stay here botherin' +around me for about a half a minute longer you'll get something you +won't want." + +I paddled to the raft.  Jim was awful disappointed, but I said never +mind, Cairo would be the next place, I reckoned. + +We passed another town before daylight, and I was going out again; but +it was high ground, so I didn't go.  No high ground about Cairo, Jim +said. I had forgot it.  We laid up for the day on a towhead tolerable +close to the left-hand bank.  I begun to suspicion something.  So did +Jim.  I says: + +"Maybe we went by Cairo in the fog that night." + +He says: + +"Doan' le's talk about it, Huck.  Po' niggers can't have no luck.  I +awluz 'spected dat rattlesnake-skin warn't done wid its work." + +"I wish I'd never seen that snake-skin, Jim—I do wish I'd never laid +eyes on it." + +"It ain't yo' fault, Huck; you didn' know.  Don't you blame yo'self +'bout it." + +When it was daylight, here was the clear Ohio water inshore, sure +enough, and outside was the old regular Muddy!  So it was all up with +Cairo. + +We talked it all over.  It wouldn't do to take to the shore; we couldn't +take the raft up the stream, of course.  There warn't no way but to wait +for dark, and start back in the canoe and take the chances.  So we slept +all day amongst the cottonwood thicket, so as to be fresh for the work, +and when we went back to the raft about dark the canoe was gone! + +We didn't say a word for a good while.  There warn't anything to +say.  We both knowed well enough it was some more work of the +rattlesnake-skin; so what was the use to talk about it?  It would only +look like we was finding fault, and that would be bound to fetch more +bad luck—and keep on fetching it, too, till we knowed enough to keep +still. + +By and by we talked about what we better do, and found there warn't no +way but just to go along down with the raft till we got a chance to buy +a canoe to go back in.  We warn't going to borrow it when there warn't +anybody around, the way pap would do, for that might set people after +us. + +So we shoved out after dark on the raft. + +Anybody that don't believe yet that it's foolishness to handle a +snake-skin, after all that that snake-skin done for us, will believe it +now if they read on and see what more it done for us. + +The place to buy canoes is off of rafts laying up at shore.  But we +didn't see no rafts laying up; so we went along during three hours and +more.  Well, the night got gray and ruther thick, which is the next +meanest thing to fog.  You can't tell the shape of the river, and you +can't see no distance. It got to be very late and still, and then along +comes a steamboat up the river.  We lit the lantern, and judged she +would see it.  Up-stream boats didn't generly come close to us; they +go out and follow the bars and hunt for easy water under the reefs; but +nights like this they bull right up the channel against the whole river. + +We could hear her pounding along, but we didn't see her good till she +was close.  She aimed right for us.  Often they do that and try to see +how close they can come without touching; sometimes the wheel bites off +a sweep, and then the pilot sticks his head out and laughs, and thinks +he's mighty smart.  Well, here she comes, and we said she was going to +try and shave us; but she didn't seem to be sheering off a bit.  She +was a big one, and she was coming in a hurry, too, looking like a black +cloud with rows of glow-worms around it; but all of a sudden she bulged +out, big and scary, with a long row of wide-open furnace doors shining +like red-hot teeth, and her monstrous bows and guards hanging right +over us.  There was a yell at us, and a jingling of bells to stop the +engines, a powwow of cussing, and whistling of steam—and as Jim went +overboard on one side and I on the other, she come smashing straight +through the raft. + +I dived—and I aimed to find the bottom, too, for a thirty-foot wheel +had got to go over me, and I wanted it to have plenty of room.  I could +always stay under water a minute; this time I reckon I stayed under a +minute and a half.  Then I bounced for the top in a hurry, for I was +nearly busting.  I popped out to my armpits and blowed the water out of +my nose, and puffed a bit.  Of course there was a booming current; and +of course that boat started her engines again ten seconds after she +stopped them, for they never cared much for raftsmen; so now she was +churning along up the river, out of sight in the thick weather, though I +could hear her. + +I sung out for Jim about a dozen times, but I didn't get any answer; +so I grabbed a plank that touched me while I was "treading water," and +struck out for shore, shoving it ahead of me.  But I made out to see +that the drift of the current was towards the left-hand shore, which +meant that I was in a crossing; so I changed off and went that way. + +It was one of these long, slanting, two-mile crossings; so I was a good +long time in getting over.  I made a safe landing, and clumb up the +bank. I couldn't see but a little ways, but I went poking along over +rough ground for a quarter of a mile or more, and then I run across a +big old-fashioned double log-house before I noticed it.  I was going to +rush by and get away, but a lot of dogs jumped out and went to howling +and barking at me, and I knowed better than to move another peg. + + + + +CHAPTER XVII. + +IN about a minute somebody spoke out of a window without putting his +head out, and says: + +"Be done, boys!  Who's there?" + +I says: + +"It's me." + +"Who's me?" + +"George Jackson, sir." + +"What do you want?" + +"I don't want nothing, sir.  I only want to go along by, but the dogs +won't let me." + +"What are you prowling around here this time of night for—hey?" + +"I warn't prowling around, sir, I fell overboard off of the steamboat." + +"Oh, you did, did you?  Strike a light there, somebody.  What did you +say your name was?" + +"George Jackson, sir.  I'm only a boy." + +"Look here, if you're telling the truth you needn't be afraid—nobody'll +hurt you.  But don't try to budge; stand right where you are.  Rouse out +Bob and Tom, some of you, and fetch the guns.  George Jackson, is there +anybody with you?" + +"No, sir, nobody." + +I heard the people stirring around in the house now, and see a light. +The man sung out: + +"Snatch that light away, Betsy, you old fool—ain't you got any sense? +Put it on the floor behind the front door.  Bob, if you and Tom are +ready, take your places." + +"All ready." + +"Now, George Jackson, do you know the Shepherdsons?" + +"No, sir; I never heard of them." + +"Well, that may be so, and it mayn't.  Now, all ready.  Step forward, +George Jackson.  And mind, don't you hurry—come mighty slow.  If there's +anybody with you, let him keep back—if he shows himself he'll be shot. +Come along now.  Come slow; push the door open yourself—just enough to +squeeze in, d' you hear?" + +I didn't hurry; I couldn't if I'd a wanted to.  I took one slow step at +a time and there warn't a sound, only I thought I could hear my heart. + The dogs were as still as the humans, but they followed a little behind +me. When I got to the three log doorsteps I heard them unlocking and +unbarring and unbolting.  I put my hand on the door and pushed it a +little and a little more till somebody said, "There, that's enough—put +your head in." I done it, but I judged they would take it off. + +The candle was on the floor, and there they all was, looking at me, and +me at them, for about a quarter of a minute:  Three big men with guns +pointed at me, which made me wince, I tell you; the oldest, gray +and about sixty, the other two thirty or more—all of them fine and +handsome—and the sweetest old gray-headed lady, and back of her two +young women which I couldn't see right well.  The old gentleman says: + +"There; I reckon it's all right.  Come in." + +As soon as I was in the old gentleman he locked the door and barred it +and bolted it, and told the young men to come in with their guns, and +they all went in a big parlor that had a new rag carpet on the floor, +and got together in a corner that was out of the range of the front +windows—there warn't none on the side.  They held the candle, and took a +good look at me, and all said, "Why, he ain't a Shepherdson—no, there +ain't any Shepherdson about him."  Then the old man said he hoped I +wouldn't mind being searched for arms, because he didn't mean no harm by +it—it was only to make sure.  So he didn't pry into my pockets, but only +felt outside with his hands, and said it was all right.  He told me to +make myself easy and at home, and tell all about myself; but the old +lady says: + +"Why, bless you, Saul, the poor thing's as wet as he can be; and don't +you reckon it may be he's hungry?" + +"True for you, Rachel—I forgot." + +So the old lady says: + +"Betsy" (this was a nigger woman), "you fly around and get him something +to eat as quick as you can, poor thing; and one of you girls go and wake +up Buck and tell him—oh, here he is himself.  Buck, take this little +stranger and get the wet clothes off from him and dress him up in some +of yours that's dry." + +Buck looked about as old as me—thirteen or fourteen or along there, +though he was a little bigger than me.  He hadn't on anything but a +shirt, and he was very frowzy-headed.  He came in gaping and digging one +fist into his eyes, and he was dragging a gun along with the other one. +He says: + +"Ain't they no Shepherdsons around?" + +They said, no, 'twas a false alarm. + +"Well," he says, "if they'd a ben some, I reckon I'd a got one." + +They all laughed, and Bob says: + +"Why, Buck, they might have scalped us all, you've been so slow in +coming." + +"Well, nobody come after me, and it ain't right I'm always kept down; I +don't get no show." + +"Never mind, Buck, my boy," says the old man, "you'll have show enough, +all in good time, don't you fret about that.  Go 'long with you now, and +do as your mother told you." + +When we got up-stairs to his room he got me a coarse shirt and a +roundabout and pants of his, and I put them on.  While I was at it he +asked me what my name was, but before I could tell him he started to +tell me about a bluejay and a young rabbit he had catched in the woods +day before yesterday, and he asked me where Moses was when the candle +went out.  I said I didn't know; I hadn't heard about it before, no way. + +"Well, guess," he says. + +"How'm I going to guess," says I, "when I never heard tell of it +before?" + +"But you can guess, can't you?  It's just as easy." + +"Which candle?"  I says. + +"Why, any candle," he says. + +"I don't know where he was," says I; "where was he?" + +"Why, he was in the dark!  That's where he was!" + +"Well, if you knowed where he was, what did you ask me for?" + +"Why, blame it, it's a riddle, don't you see?  Say, how long are you +going to stay here?  You got to stay always.  We can just have booming +times—they don't have no school now.  Do you own a dog?  I've got a +dog—and he'll go in the river and bring out chips that you throw in.  Do +you like to comb up Sundays, and all that kind of foolishness?  You bet +I don't, but ma she makes me.  Confound these ole britches!  I reckon +I'd better put 'em on, but I'd ruther not, it's so warm.  Are you all +ready? All right.  Come along, old hoss." + +Cold corn-pone, cold corn-beef, butter and buttermilk—that is what they +had for me down there, and there ain't nothing better that ever I've +come across yet.  Buck and his ma and all of them smoked cob pipes, +except the nigger woman, which was gone, and the two young women.  They +all smoked and talked, and I eat and talked.  The young women had +quilts around them, and their hair down their backs.  They all asked me +questions, and I told them how pap and me and all the family was living +on a little farm down at the bottom of Arkansaw, and my sister Mary Ann +run off and got married and never was heard of no more, and Bill went +to hunt them and he warn't heard of no more, and Tom and Mort died, +and then there warn't nobody but just me and pap left, and he was just +trimmed down to nothing, on account of his troubles; so when he died +I took what there was left, because the farm didn't belong to us, and +started up the river, deck passage, and fell overboard; and that was how +I come to be here.  So they said I could have a home there as long as I +wanted it.  Then it was most daylight and everybody went to bed, and I +went to bed with Buck, and when I waked up in the morning, drat it all, +I had forgot what my name was. So I laid there about an hour trying to +think, and when Buck waked up I says: + +"Can you spell, Buck?" + +"Yes," he says. + +"I bet you can't spell my name," says I. + +"I bet you what you dare I can," says he. + +"All right," says I, "go ahead." + +"G-e-o-r-g-e J-a-x-o-n—there now," he says. + +"Well," says I, "you done it, but I didn't think you could.  It ain't no +slouch of a name to spell—right off without studying." + +I set it down, private, because somebody might want me to spell it +next, and so I wanted to be handy with it and rattle it off like I was +used to it. + +It was a mighty nice family, and a mighty nice house, too.  I hadn't +seen no house out in the country before that was so nice and had so much +style.  It didn't have an iron latch on the front door, nor a wooden one +with a buckskin string, but a brass knob to turn, the same as houses in +town. There warn't no bed in the parlor, nor a sign of a bed; but heaps +of parlors in towns has beds in them.  There was a big fireplace that +was bricked on the bottom, and the bricks was kept clean and red by +pouring water on them and scrubbing them with another brick; sometimes +they wash them over with red water-paint that they call Spanish-brown, +same as they do in town.  They had big brass dog-irons that could hold +up a saw-log. There was a clock on the middle of the mantelpiece, with +a picture of a town painted on the bottom half of the glass front, and +a round place in the middle of it for the sun, and you could see the +pendulum swinging behind it.  It was beautiful to hear that clock tick; +and sometimes when one of these peddlers had been along and scoured her +up and got her in good shape, she would start in and strike a hundred +and fifty before she got tuckered out.  They wouldn't took any money for +her. + +Well, there was a big outlandish parrot on each side of the clock, +made out of something like chalk, and painted up gaudy.  By one of the +parrots was a cat made of crockery, and a crockery dog by the other; +and when you pressed down on them they squeaked, but didn't open +their mouths nor look different nor interested.  They squeaked through +underneath.  There was a couple of big wild-turkey-wing fans spread out +behind those things.  On the table in the middle of the room was a kind +of a lovely crockery basket that had apples and oranges and peaches and +grapes piled up in it, which was much redder and yellower and prettier +than real ones is, but they warn't real because you could see where +pieces had got chipped off and showed the white chalk, or whatever it +was, underneath. + +This table had a cover made out of beautiful oilcloth, with a red and +blue spread-eagle painted on it, and a painted border all around.  It +come all the way from Philadelphia, they said.  There was some books, +too, piled up perfectly exact, on each corner of the table.  One was a +big family Bible full of pictures.  One was Pilgrim's Progress, about a +man that left his family, it didn't say why.  I read considerable in it +now and then.  The statements was interesting, but tough.  Another was +Friendship's Offering, full of beautiful stuff and poetry; but I didn't +read the poetry.  Another was Henry Clay's Speeches, and another was Dr. +Gunn's Family Medicine, which told you all about what to do if a body +was sick or dead.  There was a hymn book, and a lot of other books.  And +there was nice split-bottom chairs, and perfectly sound, too—not bagged +down in the middle and busted, like an old basket. + +They had pictures hung on the walls—mainly Washingtons and Lafayettes, +and battles, and Highland Marys, and one called "Signing the +Declaration." There was some that they called crayons, which one of the +daughters which was dead made her own self when she was only +fifteen years old.  They was different from any pictures I ever see +before—blacker, mostly, than is common.  One was a woman in a slim black +dress, belted small under the armpits, with bulges like a cabbage in +the middle of the sleeves, and a large black scoop-shovel bonnet with +a black veil, and white slim ankles crossed about with black tape, and +very wee black slippers, like a chisel, and she was leaning pensive on a +tombstone on her right elbow, under a weeping willow, and her other hand +hanging down her side holding a white handkerchief and a reticule, +and underneath the picture it said "Shall I Never See Thee More Alas." + Another one was a young lady with her hair all combed up straight +to the top of her head, and knotted there in front of a comb like a +chair-back, and she was crying into a handkerchief and had a dead bird +laying on its back in her other hand with its heels up, and underneath +the picture it said "I Shall Never Hear Thy Sweet Chirrup More Alas." + There was one where a young lady was at a window looking up at the +moon, and tears running down her cheeks; and she had an open letter in +one hand with black sealing wax showing on one edge of it, and she was +mashing a locket with a chain to it against her mouth, and underneath +the picture it said "And Art Thou Gone Yes Thou Art Gone Alas."  These +was all nice pictures, I reckon, but I didn't somehow seem to take +to them, because if ever I was down a little they always give me the +fan-tods.  Everybody was sorry she died, because she had laid out a lot +more of these pictures to do, and a body could see by what she had done +what they had lost.  But I reckoned that with her disposition she was +having a better time in the graveyard.  She was at work on what they +said was her greatest picture when she took sick, and every day and +every night it was her prayer to be allowed to live till she got it +done, but she never got the chance.  It was a picture of a young woman +in a long white gown, standing on the rail of a bridge all ready to jump +off, with her hair all down her back, and looking up to the moon, with +the tears running down her face, and she had two arms folded across her +breast, and two arms stretched out in front, and two more reaching up +towards the moon—and the idea was to see which pair would look best, +and then scratch out all the other arms; but, as I was saying, she died +before she got her mind made up, and now they kept this picture over the +head of the bed in her room, and every time her birthday come they hung +flowers on it.  Other times it was hid with a little curtain.  The young +woman in the picture had a kind of a nice sweet face, but there was so +many arms it made her look too spidery, seemed to me. + +This young girl kept a scrap-book when she was alive, and used to paste +obituaries and accidents and cases of patient suffering in it out of the +Presbyterian Observer, and write poetry after them out of her own head. +It was very good poetry. This is what she wrote about a boy by the name +of Stephen Dowling Bots that fell down a well and was drownded: + +ODE TO STEPHEN DOWLING BOTS, DEC'D + +And did young Stephen sicken,    And did young Stephen die? And did the +sad hearts thicken,    And did the mourners cry? + +No; such was not the fate of    Young Stephen Dowling Bots; Though sad +hearts round him thickened,    'Twas not from sickness' shots. + +No whooping-cough did rack his frame,    Nor measles drear with spots; +Not these impaired the sacred name    Of Stephen Dowling Bots. + +Despised love struck not with woe    That head of curly knots, Nor +stomach troubles laid him low,    Young Stephen Dowling Bots. + +O no. Then list with tearful eye,    Whilst I his fate do tell. His soul +did from this cold world fly    By falling down a well. + +They got him out and emptied him;    Alas it was too late; His spirit +was gone for to sport aloft    In the realms of the good and great. + +If Emmeline Grangerford could make poetry like that before she was +fourteen, there ain't no telling what she could a done by and by.  Buck +said she could rattle off poetry like nothing.  She didn't ever have to +stop to think.  He said she would slap down a line, and if she couldn't +find anything to rhyme with it would just scratch it out and slap down +another one, and go ahead. She warn't particular; she could write about +anything you choose to give her to write about just so it was sadful. +Every time a man died, or a woman died, or a child died, she would be on +hand with her "tribute" before he was cold.  She called them tributes. +The neighbors said it was the doctor first, then Emmeline, then the +undertaker—the undertaker never got in ahead of Emmeline but once, and +then she hung fire on a rhyme for the dead person's name, which was +Whistler.  She warn't ever the same after that; she never complained, +but she kinder pined away and did not live long.  Poor thing, many's the +time I made myself go up to the little room that used to be hers and get +out her poor old scrap-book and read in it when her pictures had been +aggravating me and I had soured on her a little.  I liked all that +family, dead ones and all, and warn't going to let anything come between +us.  Poor Emmeline made poetry about all the dead people when she was +alive, and it didn't seem right that there warn't nobody to make some +about her now she was gone; so I tried to sweat out a verse or two +myself, but I couldn't seem to make it go somehow.  They kept Emmeline's +room trim and nice, and all the things fixed in it just the way she +liked to have them when she was alive, and nobody ever slept there. + The old lady took care of the room herself, though there was plenty +of niggers, and she sewed there a good deal and read her Bible there +mostly. + +Well, as I was saying about the parlor, there was beautiful curtains on +the windows:  white, with pictures painted on them of castles with vines +all down the walls, and cattle coming down to drink.  There was a little +old piano, too, that had tin pans in it, I reckon, and nothing was ever +so lovely as to hear the young ladies sing "The Last Link is Broken" +and play "The Battle of Prague" on it.  The walls of all the rooms was +plastered, and most had carpets on the floors, and the whole house was +whitewashed on the outside. + +It was a double house, and the big open place betwixt them was roofed +and floored, and sometimes the table was set there in the middle of the +day, and it was a cool, comfortable place.  Nothing couldn't be better. + And warn't the cooking good, and just bushels of it too! + + + + +CHAPTER XVIII. + +COL.  Grangerford was a gentleman, you see.  He was a gentleman all +over; and so was his family.  He was well born, as the saying is, and +that's worth as much in a man as it is in a horse, so the Widow Douglas +said, and nobody ever denied that she was of the first aristocracy +in our town; and pap he always said it, too, though he warn't no more +quality than a mudcat himself.  Col.  Grangerford was very tall and +very slim, and had a darkish-paly complexion, not a sign of red in it +anywheres; he was clean shaved every morning all over his thin face, and +he had the thinnest kind of lips, and the thinnest kind of nostrils, and +a high nose, and heavy eyebrows, and the blackest kind of eyes, sunk so +deep back that they seemed like they was looking out of caverns at +you, as you may say.  His forehead was high, and his hair was black and +straight and hung to his shoulders. His hands was long and thin, and +every day of his life he put on a clean shirt and a full suit from head +to foot made out of linen so white it hurt your eyes to look at it; +and on Sundays he wore a blue tail-coat with brass buttons on it.  He +carried a mahogany cane with a silver head to it.  There warn't no +frivolishness about him, not a bit, and he warn't ever loud.  He was +as kind as he could be—you could feel that, you know, and so you had +confidence.  Sometimes he smiled, and it was good to see; but when he +straightened himself up like a liberty-pole, and the lightning begun to +flicker out from under his eyebrows, you wanted to climb a tree first, +and find out what the matter was afterwards.  He didn't ever have to +tell anybody to mind their manners—everybody was always good-mannered +where he was.  Everybody loved to have him around, too; he was sunshine +most always—I mean he made it seem like good weather.  When he turned +into a cloudbank it was awful dark for half a minute, and that was +enough; there wouldn't nothing go wrong again for a week. + +When him and the old lady come down in the morning all the family got +up out of their chairs and give them good-day, and didn't set down again +till they had set down.  Then Tom and Bob went to the sideboard where +the decanter was, and mixed a glass of bitters and handed it to him, and +he held it in his hand and waited till Tom's and Bob's was mixed, and +then they bowed and said, "Our duty to you, sir, and madam;" and they +bowed the least bit in the world and said thank you, and so they drank, +all three, and Bob and Tom poured a spoonful of water on the sugar and +the mite of whisky or apple brandy in the bottom of their tumblers, and +give it to me and Buck, and we drank to the old people too. + +Bob was the oldest and Tom next—tall, beautiful men with very broad +shoulders and brown faces, and long black hair and black eyes.  They +dressed in white linen from head to foot, like the old gentleman, and +wore broad Panama hats. + +Then there was Miss Charlotte; she was twenty-five, and tall and proud +and grand, but as good as she could be when she warn't stirred up; but +when she was she had a look that would make you wilt in your tracks, +like her father.  She was beautiful. + +So was her sister, Miss Sophia, but it was a different kind.  She was +gentle and sweet like a dove, and she was only twenty. + +Each person had their own nigger to wait on them—Buck too.  My nigger +had a monstrous easy time, because I warn't used to having anybody do +anything for me, but Buck's was on the jump most of the time. + +This was all there was of the family now, but there used to be +more—three sons; they got killed; and Emmeline that died. + +The old gentleman owned a lot of farms and over a hundred niggers. +Sometimes a stack of people would come there, horseback, from ten or +fifteen mile around, and stay five or six days, and have such junketings +round about and on the river, and dances and picnics in the woods +daytimes, and balls at the house nights.  These people was mostly +kinfolks of the family.  The men brought their guns with them.  It was a +handsome lot of quality, I tell you. + +There was another clan of aristocracy around there—five or six +families—mostly of the name of Shepherdson.  They was as high-toned +and well born and rich and grand as the tribe of Grangerfords.  The +Shepherdsons and Grangerfords used the same steamboat landing, which was +about two mile above our house; so sometimes when I went up there with a +lot of our folks I used to see a lot of the Shepherdsons there on their +fine horses. + +One day Buck and me was away out in the woods hunting, and heard a horse +coming.  We was crossing the road.  Buck says: + +"Quick!  Jump for the woods!" + +We done it, and then peeped down the woods through the leaves.  Pretty +soon a splendid young man come galloping down the road, setting his +horse easy and looking like a soldier.  He had his gun across his +pommel.  I had seen him before.  It was young Harney Shepherdson.  I +heard Buck's gun go off at my ear, and Harney's hat tumbled off from his +head.  He grabbed his gun and rode straight to the place where we was +hid.  But we didn't wait.  We started through the woods on a run.  The +woods warn't thick, so I looked over my shoulder to dodge the bullet, +and twice I seen Harney cover Buck with his gun; and then he rode away +the way he come—to get his hat, I reckon, but I couldn't see.  We never +stopped running till we got home.  The old gentleman's eyes blazed a +minute—'twas pleasure, mainly, I judged—then his face sort of smoothed +down, and he says, kind of gentle: + +"I don't like that shooting from behind a bush.  Why didn't you step +into the road, my boy?" + +"The Shepherdsons don't, father.  They always take advantage." + +Miss Charlotte she held her head up like a queen while Buck was telling +his tale, and her nostrils spread and her eyes snapped.  The two young +men looked dark, but never said nothing.  Miss Sophia she turned pale, +but the color come back when she found the man warn't hurt. + +Soon as I could get Buck down by the corn-cribs under the trees by +ourselves, I says: + +"Did you want to kill him, Buck?" + +"Well, I bet I did." + +"What did he do to you?" + +"Him?  He never done nothing to me." + +"Well, then, what did you want to kill him for?" + +"Why, nothing—only it's on account of the feud." + +"What's a feud?" + +"Why, where was you raised?  Don't you know what a feud is?" + +"Never heard of it before—tell me about it." + +"Well," says Buck, "a feud is this way:  A man has a quarrel with +another man, and kills him; then that other man's brother kills him; +then the other brothers, on both sides, goes for one another; then the +cousins chip in—and by and by everybody's killed off, and there ain't +no more feud.  But it's kind of slow, and takes a long time." + +"Has this one been going on long, Buck?" + +"Well, I should reckon!  It started thirty year ago, or som'ers along +there.  There was trouble 'bout something, and then a lawsuit to settle +it; and the suit went agin one of the men, and so he up and shot the +man that won the suit—which he would naturally do, of course.  Anybody +would." + +"What was the trouble about, Buck?—land?" + +"I reckon maybe—I don't know." + +"Well, who done the shooting?  Was it a Grangerford or a Shepherdson?" + +"Laws, how do I know?  It was so long ago." + +"Don't anybody know?" + +"Oh, yes, pa knows, I reckon, and some of the other old people; but they +don't know now what the row was about in the first place." + +"Has there been many killed, Buck?" + +"Yes; right smart chance of funerals.  But they don't always kill.  Pa's +got a few buckshot in him; but he don't mind it 'cuz he don't weigh +much, anyway.  Bob's been carved up some with a bowie, and Tom's been +hurt once or twice." + +"Has anybody been killed this year, Buck?" + +"Yes; we got one and they got one.  'Bout three months ago my cousin +Bud, fourteen year old, was riding through the woods on t'other side +of the river, and didn't have no weapon with him, which was blame' +foolishness, and in a lonesome place he hears a horse a-coming behind +him, and sees old Baldy Shepherdson a-linkin' after him with his gun in +his hand and his white hair a-flying in the wind; and 'stead of jumping +off and taking to the brush, Bud 'lowed he could out-run him; so they +had it, nip and tuck, for five mile or more, the old man a-gaining all +the time; so at last Bud seen it warn't any use, so he stopped and faced +around so as to have the bullet holes in front, you know, and the old +man he rode up and shot him down.  But he didn't git much chance to +enjoy his luck, for inside of a week our folks laid him out." + +"I reckon that old man was a coward, Buck." + +"I reckon he warn't a coward.  Not by a blame' sight.  There ain't a +coward amongst them Shepherdsons—not a one.  And there ain't no cowards +amongst the Grangerfords either.  Why, that old man kep' up his end in a +fight one day for half an hour against three Grangerfords, and come +out winner.  They was all a-horseback; he lit off of his horse and got +behind a little woodpile, and kep' his horse before him to stop the +bullets; but the Grangerfords stayed on their horses and capered around +the old man, and peppered away at him, and he peppered away at them. + Him and his horse both went home pretty leaky and crippled, but the +Grangerfords had to be fetched home—and one of 'em was dead, and +another died the next day.  No, sir; if a body's out hunting for cowards +he don't want to fool away any time amongst them Shepherdsons, becuz +they don't breed any of that kind." + +Next Sunday we all went to church, about three mile, everybody +a-horseback. The men took their guns along, so did Buck, and kept +them between their knees or stood them handy against the wall.  The +Shepherdsons done the same.  It was pretty ornery preaching—all about +brotherly love, and such-like tiresomeness; but everybody said it was +a good sermon, and they all talked it over going home, and had such +a powerful lot to say about faith and good works and free grace and +preforeordestination, and I don't know what all, that it did seem to me +to be one of the roughest Sundays I had run across yet. + +About an hour after dinner everybody was dozing around, some in their +chairs and some in their rooms, and it got to be pretty dull.  Buck and +a dog was stretched out on the grass in the sun sound asleep.  I went up +to our room, and judged I would take a nap myself.  I found that sweet +Miss Sophia standing in her door, which was next to ours, and she took +me in her room and shut the door very soft, and asked me if I liked her, +and I said I did; and she asked me if I would do something for her and +not tell anybody, and I said I would.  Then she said she'd forgot her +Testament, and left it in the seat at church between two other books, +and would I slip out quiet and go there and fetch it to her, and not say +nothing to nobody.  I said I would. So I slid out and slipped off up the +road, and there warn't anybody at the church, except maybe a hog or two, +for there warn't any lock on the door, and hogs likes a puncheon floor +in summer-time because it's cool.  If you notice, most folks don't go to +church only when they've got to; but a hog is different. + +Says I to myself, something's up; it ain't natural for a girl to be in +such a sweat about a Testament.  So I give it a shake, and out drops a +little piece of paper with "HALF-PAST TWO" wrote on it with a pencil.  I +ransacked it, but couldn't find anything else.  I couldn't make anything +out of that, so I put the paper in the book again, and when I got home +and upstairs there was Miss Sophia in her door waiting for me.  She +pulled me in and shut the door; then she looked in the Testament till +she found the paper, and as soon as she read it she looked glad; and +before a body could think she grabbed me and give me a squeeze, and +said I was the best boy in the world, and not to tell anybody.  She was +mighty red in the face for a minute, and her eyes lighted up, and it +made her powerful pretty.  I was a good deal astonished, but when I got +my breath I asked her what the paper was about, and she asked me if I +had read it, and I said no, and she asked me if I could read writing, +and I told her "no, only coarse-hand," and then she said the paper +warn't anything but a book-mark to keep her place, and I might go and +play now. + +I went off down to the river, studying over this thing, and pretty soon +I noticed that my nigger was following along behind.  When we was out +of sight of the house he looked back and around a second, and then comes +a-running, and says: + +"Mars Jawge, if you'll come down into de swamp I'll show you a whole +stack o' water-moccasins." + +Thinks I, that's mighty curious; he said that yesterday.  He oughter +know a body don't love water-moccasins enough to go around hunting for +them. What is he up to, anyway?  So I says: + +"All right; trot ahead." + +I followed a half a mile; then he struck out over the swamp, and waded +ankle deep as much as another half-mile.  We come to a little flat piece +of land which was dry and very thick with trees and bushes and vines, +and he says: + +"You shove right in dah jist a few steps, Mars Jawge; dah's whah dey is. +I's seed 'm befo'; I don't k'yer to see 'em no mo'." + +Then he slopped right along and went away, and pretty soon the trees hid +him.  I poked into the place a-ways and come to a little open patch +as big as a bedroom all hung around with vines, and found a man laying +there asleep—and, by jings, it was my old Jim! + +I waked him up, and I reckoned it was going to be a grand surprise to +him to see me again, but it warn't.  He nearly cried he was so glad, but +he warn't surprised.  Said he swum along behind me that night, and heard +me yell every time, but dasn't answer, because he didn't want nobody to +pick him up and take him into slavery again.  Says he: + +"I got hurt a little, en couldn't swim fas', so I wuz a considable ways +behine you towards de las'; when you landed I reck'ned I could ketch +up wid you on de lan' 'dout havin' to shout at you, but when I see dat +house I begin to go slow.  I 'uz off too fur to hear what dey say to +you—I wuz 'fraid o' de dogs; but when it 'uz all quiet agin I knowed +you's in de house, so I struck out for de woods to wait for day.  Early +in de mawnin' some er de niggers come along, gwyne to de fields, en dey +tuk me en showed me dis place, whah de dogs can't track me on accounts +o' de water, en dey brings me truck to eat every night, en tells me how +you's a-gitt'n along." + +"Why didn't you tell my Jack to fetch me here sooner, Jim?" + +"Well, 'twarn't no use to 'sturb you, Huck, tell we could do sumfn—but +we's all right now.  I ben a-buyin' pots en pans en vittles, as I got a +chanst, en a-patchin' up de raf' nights when—" + +"What raft, Jim?" + +"Our ole raf'." + +"You mean to say our old raft warn't smashed all to flinders?" + +"No, she warn't.  She was tore up a good deal—one en' of her was; but +dey warn't no great harm done, on'y our traps was mos' all los'.  Ef we +hadn' dive' so deep en swum so fur under water, en de night hadn' ben +so dark, en we warn't so sk'yerd, en ben sich punkin-heads, as de sayin' +is, we'd a seed de raf'.  But it's jis' as well we didn't, 'kase now +she's all fixed up agin mos' as good as new, en we's got a new lot o' +stuff, in de place o' what 'uz los'." + +"Why, how did you get hold of the raft again, Jim—did you catch her?" + +"How I gwyne to ketch her en I out in de woods?  No; some er de niggers +foun' her ketched on a snag along heah in de ben', en dey hid her in a +crick 'mongst de willows, en dey wuz so much jawin' 'bout which un 'um +she b'long to de mos' dat I come to heah 'bout it pooty soon, so I ups +en settles de trouble by tellin' 'um she don't b'long to none uv um, but +to you en me; en I ast 'm if dey gwyne to grab a young white genlman's +propaty, en git a hid'n for it?  Den I gin 'm ten cents apiece, en dey +'uz mighty well satisfied, en wisht some mo' raf's 'ud come along en +make 'm rich agin. Dey's mighty good to me, dese niggers is, en whatever +I wants 'm to do fur me I doan' have to ast 'm twice, honey.  Dat Jack's +a good nigger, en pooty smart." + +"Yes, he is.  He ain't ever told me you was here; told me to come, and +he'd show me a lot of water-moccasins.  If anything happens he ain't +mixed up in it.  He can say he never seen us together, and it 'll be the +truth." + +I don't want to talk much about the next day.  I reckon I'll cut it +pretty short.  I waked up about dawn, and was a-going to turn over and +go to sleep again when I noticed how still it was—didn't seem to be +anybody stirring.  That warn't usual.  Next I noticed that Buck was +up and gone. Well, I gets up, a-wondering, and goes down stairs—nobody +around; everything as still as a mouse.  Just the same outside.  Thinks +I, what does it mean?  Down by the wood-pile I comes across my Jack, and +says: + +"What's it all about?" + +Says he: + +"Don't you know, Mars Jawge?" + +"No," says I, "I don't." + +"Well, den, Miss Sophia's run off! 'deed she has.  She run off in de +night some time—nobody don't know jis' when; run off to get married +to dat young Harney Shepherdson, you know—leastways, so dey 'spec.  De +fambly foun' it out 'bout half an hour ago—maybe a little mo'—en' I +tell you dey warn't no time los'.  Sich another hurryin' up guns +en hosses you never see!  De women folks has gone for to stir up de +relations, en ole Mars Saul en de boys tuck dey guns en rode up de +river road for to try to ketch dat young man en kill him 'fo' he kin +git acrost de river wid Miss Sophia.  I reck'n dey's gwyne to be mighty +rough times." + +"Buck went off 'thout waking me up." + +"Well, I reck'n he did!  Dey warn't gwyne to mix you up in it. + Mars Buck he loaded up his gun en 'lowed he's gwyne to fetch home a +Shepherdson or bust. Well, dey'll be plenty un 'm dah, I reck'n, en you +bet you he'll fetch one ef he gits a chanst." + +I took up the river road as hard as I could put.  By and by I begin to +hear guns a good ways off.  When I come in sight of the log store and +the woodpile where the steamboats lands I worked along under the trees +and brush till I got to a good place, and then I clumb up into the +forks of a cottonwood that was out of reach, and watched.  There was a +wood-rank four foot high a little ways in front of the tree, and first I +was going to hide behind that; but maybe it was luckier I didn't. + +There was four or five men cavorting around on their horses in the open +place before the log store, cussing and yelling, and trying to get at +a couple of young chaps that was behind the wood-rank alongside of the +steamboat landing; but they couldn't come it.  Every time one of them +showed himself on the river side of the woodpile he got shot at.  The +two boys was squatting back to back behind the pile, so they could watch +both ways. + +By and by the men stopped cavorting around and yelling.  They started +riding towards the store; then up gets one of the boys, draws a steady +bead over the wood-rank, and drops one of them out of his saddle.  All +the men jumped off of their horses and grabbed the hurt one and started +to carry him to the store; and that minute the two boys started on the +run.  They got half way to the tree I was in before the men noticed. +Then the men see them, and jumped on their horses and took out after +them.  They gained on the boys, but it didn't do no good, the boys had +too good a start; they got to the woodpile that was in front of my tree, +and slipped in behind it, and so they had the bulge on the men again. +One of the boys was Buck, and the other was a slim young chap about +nineteen years old. + +The men ripped around awhile, and then rode away.  As soon as they was +out of sight I sung out to Buck and told him.  He didn't know what +to make of my voice coming out of the tree at first.  He was awful +surprised.  He told me to watch out sharp and let him know when the +men come in sight again; said they was up to some devilment or +other—wouldn't be gone long.  I wished I was out of that tree, but I +dasn't come down.  Buck begun to cry and rip, and 'lowed that him and +his cousin Joe (that was the other young chap) would make up for this +day yet.  He said his father and his two brothers was killed, and two +or three of the enemy.  Said the Shepherdsons laid for them in +ambush.  Buck said his father and brothers ought to waited for their +relations—the Shepherdsons was too strong for them.  I asked him what +was become of young Harney and Miss Sophia.  He said they'd got across +the river and was safe.  I was glad of that; but the way Buck did take +on because he didn't manage to kill Harney that day he shot at him—I +hain't ever heard anything like it. + +All of a sudden, bang! bang! bang! goes three or four guns—the men had +slipped around through the woods and come in from behind without their +horses!  The boys jumped for the river—both of them hurt—and as they +swum down the current the men run along the bank shooting at them and +singing out, "Kill them, kill them!"  It made me so sick I most fell out +of the tree.  I ain't a-going to tell all that happened—it would make +me sick again if I was to do that.  I wished I hadn't ever come ashore +that night to see such things.  I ain't ever going to get shut of +them—lots of times I dream about them. + +I stayed in the tree till it begun to get dark, afraid to come down. +Sometimes I heard guns away off in the woods; and twice I seen little +gangs of men gallop past the log store with guns; so I reckoned the +trouble was still a-going on.  I was mighty downhearted; so I made up my +mind I wouldn't ever go anear that house again, because I reckoned I +was to blame, somehow. I judged that that piece of paper meant that Miss +Sophia was to meet Harney somewheres at half-past two and run off; and +I judged I ought to told her father about that paper and the curious way +she acted, and then maybe he would a locked her up, and this awful mess +wouldn't ever happened. + +When I got down out of the tree I crept along down the river bank a +piece, and found the two bodies laying in the edge of the water, and +tugged at them till I got them ashore; then I covered up their faces, +and got away as quick as I could.  I cried a little when I was covering +up Buck's face, for he was mighty good to me. + +It was just dark now.  I never went near the house, but struck through +the woods and made for the swamp.  Jim warn't on his island, so I +tramped off in a hurry for the crick, and crowded through the willows, +red-hot to jump aboard and get out of that awful country.  The raft was +gone!  My souls, but I was scared!  I couldn't get my breath for most +a minute. Then I raised a yell.  A voice not twenty-five foot from me +says: + +"Good lan'! is dat you, honey?  Doan' make no noise." + +It was Jim's voice—nothing ever sounded so good before.  I run along the +bank a piece and got aboard, and Jim he grabbed me and hugged me, he was +so glad to see me.  He says: + +"Laws bless you, chile, I 'uz right down sho' you's dead agin.  Jack's +been heah; he say he reck'n you's ben shot, kase you didn' come home no +mo'; so I's jes' dis minute a startin' de raf' down towards de mouf er +de crick, so's to be all ready for to shove out en leave soon as Jack +comes agin en tells me for certain you is dead.  Lawsy, I's mighty +glad to git you back again, honey." + +I says: + +"All right—that's mighty good; they won't find me, and they'll think +I've been killed, and floated down the river—there's something up there +that 'll help them think so—so don't you lose no time, Jim, but just +shove off for the big water as fast as ever you can." + +I never felt easy till the raft was two mile below there and out in +the middle of the Mississippi.  Then we hung up our signal lantern, and +judged that we was free and safe once more.  I hadn't had a bite to eat +since yesterday, so Jim he got out some corn-dodgers and buttermilk, +and pork and cabbage and greens—there ain't nothing in the world so good +when it's cooked right—and whilst I eat my supper we talked and had a +good time.  I was powerful glad to get away from the feuds, and so was +Jim to get away from the swamp.  We said there warn't no home like a +raft, after all.  Other places do seem so cramped up and smothery, but a +raft don't.  You feel mighty free and easy and comfortable on a raft. + + + + +CHAPTER XIX. + +TWO or three days and nights went by; I reckon I might say they swum by, +they slid along so quiet and smooth and lovely.  Here is the way we put +in the time.  It was a monstrous big river down there—sometimes a mile +and a half wide; we run nights, and laid up and hid daytimes; soon as +night was most gone we stopped navigating and tied up—nearly always +in the dead water under a towhead; and then cut young cottonwoods and +willows, and hid the raft with them.  Then we set out the lines.  Next +we slid into the river and had a swim, so as to freshen up and cool +off; then we set down on the sandy bottom where the water was about knee +deep, and watched the daylight come.  Not a sound anywheres—perfectly +still—just like the whole world was asleep, only sometimes the bullfrogs +a-cluttering, maybe.  The first thing to see, looking away over the +water, was a kind of dull line—that was the woods on t'other side; you +couldn't make nothing else out; then a pale place in the sky; then more +paleness spreading around; then the river softened up away off, and +warn't black any more, but gray; you could see little dark spots +drifting along ever so far away—trading scows, and such things; and +long black streaks—rafts; sometimes you could hear a sweep screaking; or +jumbled up voices, it was so still, and sounds come so far; and by and +by you could see a streak on the water which you know by the look of the +streak that there's a snag there in a swift current which breaks on it +and makes that streak look that way; and you see the mist curl up off +of the water, and the east reddens up, and the river, and you make out a +log-cabin in the edge of the woods, away on the bank on t'other side of +the river, being a woodyard, likely, and piled by them cheats so you can +throw a dog through it anywheres; then the nice breeze springs up, and +comes fanning you from over there, so cool and fresh and sweet to smell +on account of the woods and the flowers; but sometimes not that way, +because they've left dead fish laying around, gars and such, and they +do get pretty rank; and next you've got the full day, and everything +smiling in the sun, and the song-birds just going it! + +A little smoke couldn't be noticed now, so we would take some fish off +of the lines and cook up a hot breakfast.  And afterwards we would watch +the lonesomeness of the river, and kind of lazy along, and by and by +lazy off to sleep.  Wake up by and by, and look to see what done it, and +maybe see a steamboat coughing along up-stream, so far off towards the +other side you couldn't tell nothing about her only whether she was +a stern-wheel or side-wheel; then for about an hour there wouldn't be +nothing to hear nor nothing to see—just solid lonesomeness.  Next +you'd see a raft sliding by, away off yonder, and maybe a galoot on it +chopping, because they're most always doing it on a raft; you'd see the +axe flash and come down—you don't hear nothing; you see that axe go +up again, and by the time it's above the man's head then you hear the +k'chunk!—it had took all that time to come over the water.  So we +would put in the day, lazying around, listening to the stillness.  Once +there was a thick fog, and the rafts and things that went by was beating +tin pans so the steamboats wouldn't run over them.  A scow or a +raft went by so close we could hear them talking and cussing and +laughing—heard them plain; but we couldn't see no sign of them; it made +you feel crawly; it was like spirits carrying on that way in the air. + Jim said he believed it was spirits; but I says: + +"No; spirits wouldn't say, 'Dern the dern fog.'" + +Soon as it was night out we shoved; when we got her out to about the +middle we let her alone, and let her float wherever the current wanted +her to; then we lit the pipes, and dangled our legs in the water, and +talked about all kinds of things—we was always naked, day and night, +whenever the mosquitoes would let us—the new clothes Buck's folks made +for me was too good to be comfortable, and besides I didn't go much on +clothes, nohow. + +Sometimes we'd have that whole river all to ourselves for the longest +time. Yonder was the banks and the islands, across the water; and maybe +a spark—which was a candle in a cabin window; and sometimes on the water +you could see a spark or two—on a raft or a scow, you know; and maybe +you could hear a fiddle or a song coming over from one of them crafts. +It's lovely to live on a raft.  We had the sky up there, all speckled +with stars, and we used to lay on our backs and look up at them, and +discuss about whether they was made or only just happened.  Jim he +allowed they was made, but I allowed they happened; I judged it would +have took too long to make so many.  Jim said the moon could a laid +them; well, that looked kind of reasonable, so I didn't say nothing +against it, because I've seen a frog lay most as many, so of course it +could be done. We used to watch the stars that fell, too, and see them +streak down.  Jim allowed they'd got spoiled and was hove out of the +nest. + +Once or twice of a night we would see a steamboat slipping along in the +dark, and now and then she would belch a whole world of sparks up out +of her chimbleys, and they would rain down in the river and look awful +pretty; then she would turn a corner and her lights would wink out and +her powwow shut off and leave the river still again; and by and by her +waves would get to us, a long time after she was gone, and joggle the +raft a bit, and after that you wouldn't hear nothing for you couldn't +tell how long, except maybe frogs or something. + +After midnight the people on shore went to bed, and then for two or +three hours the shores was black—no more sparks in the cabin windows. + These sparks was our clock—the first one that showed again meant +morning was coming, so we hunted a place to hide and tie up right away. + +One morning about daybreak I found a canoe and crossed over a chute to +the main shore—it was only two hundred yards—and paddled about a mile +up a crick amongst the cypress woods, to see if I couldn't get some +berries. Just as I was passing a place where a kind of a cowpath crossed +the crick, here comes a couple of men tearing up the path as tight as +they could foot it.  I thought I was a goner, for whenever anybody was +after anybody I judged it was me—or maybe Jim.  I was about to dig out +from there in a hurry, but they was pretty close to me then, and sung +out and begged me to save their lives—said they hadn't been doing +nothing, and was being chased for it—said there was men and dogs +a-coming.  They wanted to jump right in, but I says: + +"Don't you do it.  I don't hear the dogs and horses yet; you've got time +to crowd through the brush and get up the crick a little ways; then you +take to the water and wade down to me and get in—that'll throw the dogs +off the scent." + +They done it, and soon as they was aboard I lit out for our towhead, +and in about five or ten minutes we heard the dogs and the men away off, +shouting. We heard them come along towards the crick, but couldn't +see them; they seemed to stop and fool around a while; then, as we got +further and further away all the time, we couldn't hardly hear them at +all; by the time we had left a mile of woods behind us and struck the +river, everything was quiet, and we paddled over to the towhead and hid +in the cottonwoods and was safe. + +One of these fellows was about seventy or upwards, and had a bald head +and very gray whiskers.  He had an old battered-up slouch hat on, and +a greasy blue woollen shirt, and ragged old blue jeans britches stuffed +into his boot-tops, and home-knit galluses—no, he only had one.  He had +an old long-tailed blue jeans coat with slick brass buttons flung over +his arm, and both of them had big, fat, ratty-looking carpet-bags. + +The other fellow was about thirty, and dressed about as ornery.  After +breakfast we all laid off and talked, and the first thing that come out +was that these chaps didn't know one another. + +"What got you into trouble?" says the baldhead to t'other chap. + +"Well, I'd been selling an article to take the tartar off the teeth—and +it does take it off, too, and generly the enamel along with it—but I +stayed about one night longer than I ought to, and was just in the act +of sliding out when I ran across you on the trail this side of town, and +you told me they were coming, and begged me to help you to get off.  So +I told you I was expecting trouble myself, and would scatter out with +you. That's the whole yarn—what's yourn? + +"Well, I'd ben a-running' a little temperance revival thar 'bout a week, +and was the pet of the women folks, big and little, for I was makin' it +mighty warm for the rummies, I tell you, and takin' as much as five +or six dollars a night—ten cents a head, children and niggers free—and +business a-growin' all the time, when somehow or another a little report +got around last night that I had a way of puttin' in my time with a +private jug on the sly.  A nigger rousted me out this mornin', and told +me the people was getherin' on the quiet with their dogs and horses, and +they'd be along pretty soon and give me 'bout half an hour's start, +and then run me down if they could; and if they got me they'd tar +and feather me and ride me on a rail, sure.  I didn't wait for no +breakfast—I warn't hungry." + +"Old man," said the young one, "I reckon we might double-team it +together; what do you think?" + +"I ain't undisposed.  What's your line—mainly?" + +"Jour printer by trade; do a little in patent medicines; +theater-actor—tragedy, you know; take a turn to mesmerism and phrenology +when there's a chance; teach singing-geography school for a change; +sling a lecture sometimes—oh, I do lots of things—most anything that +comes handy, so it ain't work.  What's your lay?" + +"I've done considerble in the doctoring way in my time.  Layin' on o' +hands is my best holt—for cancer and paralysis, and sich things; and I +k'n tell a fortune pretty good when I've got somebody along to find out +the facts for me.  Preachin's my line, too, and workin' camp-meetin's, +and missionaryin' around." + +Nobody never said anything for a while; then the young man hove a sigh +and says: + +"Alas!" + +"What 're you alassin' about?" says the bald-head. + +"To think I should have lived to be leading such a life, and be degraded +down into such company."  And he begun to wipe the corner of his eye +with a rag. + +"Dern your skin, ain't the company good enough for you?" says the +baldhead, pretty pert and uppish. + +"Yes, it is good enough for me; it's as good as I deserve; for who +fetched me so low when I was so high?  I did myself.  I don't blame +you, gentlemen—far from it; I don't blame anybody.  I deserve it +all.  Let the cold world do its worst; one thing I know—there's a grave +somewhere for me. The world may go on just as it's always done, and take +everything from me—loved ones, property, everything; but it can't take +that. Some day I'll lie down in it and forget it all, and my poor broken +heart will be at rest."  He went on a-wiping. + +"Drot your pore broken heart," says the baldhead; "what are you heaving +your pore broken heart at us f'r?  we hain't done nothing." + +"No, I know you haven't.  I ain't blaming you, gentlemen.  I brought +myself down—yes, I did it myself.  It's right I should suffer—perfectly +right—I don't make any moan." + +"Brought you down from whar?  Whar was you brought down from?" + +"Ah, you would not believe me; the world never believes—let it pass—'tis +no matter.  The secret of my birth—" + +"The secret of your birth!  Do you mean to say—" + +"Gentlemen," says the young man, very solemn, "I will reveal it to you, +for I feel I may have confidence in you.  By rights I am a duke!" + +Jim's eyes bugged out when he heard that; and I reckon mine did, too. +Then the baldhead says:  "No! you can't mean it?" + +"Yes.  My great-grandfather, eldest son of the Duke of Bridgewater, fled +to this country about the end of the last century, to breathe the pure +air of freedom; married here, and died, leaving a son, his own father +dying about the same time.  The second son of the late duke seized the +titles and estates—the infant real duke was ignored.  I am the lineal +descendant of that infant—I am the rightful Duke of Bridgewater; and +here am I, forlorn, torn from my high estate, hunted of men, despised +by the cold world, ragged, worn, heart-broken, and degraded to the +companionship of felons on a raft!" + +Jim pitied him ever so much, and so did I. We tried to comfort him, but +he said it warn't much use, he couldn't be much comforted; said if we +was a mind to acknowledge him, that would do him more good than most +anything else; so we said we would, if he would tell us how.  He said we +ought to bow when we spoke to him, and say "Your Grace," or "My Lord," +or "Your Lordship"—and he wouldn't mind it if we called him plain +"Bridgewater," which, he said, was a title anyway, and not a name; and +one of us ought to wait on him at dinner, and do any little thing for +him he wanted done. + +Well, that was all easy, so we done it.  All through dinner Jim stood +around and waited on him, and says, "Will yo' Grace have some o' dis or +some o' dat?" and so on, and a body could see it was mighty pleasing to +him. + +But the old man got pretty silent by and by—didn't have much to say, and +didn't look pretty comfortable over all that petting that was going on +around that duke.  He seemed to have something on his mind.  So, along +in the afternoon, he says: + +"Looky here, Bilgewater," he says, "I'm nation sorry for you, but you +ain't the only person that's had troubles like that." + +"No?" + +"No you ain't.  You ain't the only person that's ben snaked down +wrongfully out'n a high place." + +"Alas!" + +"No, you ain't the only person that's had a secret of his birth."  And, +by jings, he begins to cry. + +"Hold!  What do you mean?" + +"Bilgewater, kin I trust you?" says the old man, still sort of sobbing. + +"To the bitter death!"  He took the old man by the hand and squeezed it, +and says, "That secret of your being:  speak!" + +"Bilgewater, I am the late Dauphin!" + +You bet you, Jim and me stared this time.  Then the duke says: + +"You are what?" + +"Yes, my friend, it is too true—your eyes is lookin' at this very moment +on the pore disappeared Dauphin, Looy the Seventeen, son of Looy the +Sixteen and Marry Antonette." + +"You!  At your age!  No!  You mean you're the late Charlemagne; you must +be six or seven hundred years old, at the very least." + +"Trouble has done it, Bilgewater, trouble has done it; trouble has brung +these gray hairs and this premature balditude.  Yes, gentlemen, you +see before you, in blue jeans and misery, the wanderin', exiled, +trampled-on, and sufferin' rightful King of France." + +Well, he cried and took on so that me and Jim didn't know hardly what to +do, we was so sorry—and so glad and proud we'd got him with us, too. + So we set in, like we done before with the duke, and tried to comfort +him. But he said it warn't no use, nothing but to be dead and done +with it all could do him any good; though he said it often made him feel +easier and better for a while if people treated him according to his +rights, and got down on one knee to speak to him, and always called him +"Your Majesty," and waited on him first at meals, and didn't set down +in his presence till he asked them. So Jim and me set to majestying him, +and doing this and that and t'other for him, and standing up till he +told us we might set down.  This done him heaps of good, and so he +got cheerful and comfortable.  But the duke kind of soured on him, and +didn't look a bit satisfied with the way things was going; still, +the king acted real friendly towards him, and said the duke's +great-grandfather and all the other Dukes of Bilgewater was a good +deal thought of by his father, and was allowed to come to the palace +considerable; but the duke stayed huffy a good while, till by and by the +king says: + +"Like as not we got to be together a blamed long time on this h-yer +raft, Bilgewater, and so what's the use o' your bein' sour?  It 'll only +make things oncomfortable.  It ain't my fault I warn't born a duke, +it ain't your fault you warn't born a king—so what's the use to worry? + Make the best o' things the way you find 'em, says I—that's my motto. + This ain't no bad thing that we've struck here—plenty grub and an easy +life—come, give us your hand, duke, and le's all be friends." + +The duke done it, and Jim and me was pretty glad to see it.  It took +away all the uncomfortableness and we felt mighty good over it, because +it would a been a miserable business to have any unfriendliness on the +raft; for what you want, above all things, on a raft, is for everybody +to be satisfied, and feel right and kind towards the others. + +It didn't take me long to make up my mind that these liars warn't no +kings nor dukes at all, but just low-down humbugs and frauds.  But I +never said nothing, never let on; kept it to myself; it's the best way; +then you don't have no quarrels, and don't get into no trouble.  If they +wanted us to call them kings and dukes, I hadn't no objections, 'long as +it would keep peace in the family; and it warn't no use to tell Jim, so +I didn't tell him.  If I never learnt nothing else out of pap, I learnt +that the best way to get along with his kind of people is to let them +have their own way. + + + + +CHAPTER XX. + +THEY asked us considerable many questions; wanted to know what we +covered up the raft that way for, and laid by in the daytime instead of +running—was Jim a runaway nigger?  Says I: + +"Goodness sakes! would a runaway nigger run south?" + +No, they allowed he wouldn't.  I had to account for things some way, so +I says: + +"My folks was living in Pike County, in Missouri, where I was born, and +they all died off but me and pa and my brother Ike.  Pa, he 'lowed +he'd break up and go down and live with Uncle Ben, who's got a little +one-horse place on the river, forty-four mile below Orleans.  Pa was +pretty poor, and had some debts; so when he'd squared up there warn't +nothing left but sixteen dollars and our nigger, Jim.  That warn't +enough to take us fourteen hundred mile, deck passage nor no other way. + Well, when the river rose pa had a streak of luck one day; he ketched +this piece of a raft; so we reckoned we'd go down to Orleans on it. + Pa's luck didn't hold out; a steamboat run over the forrard corner of +the raft one night, and we all went overboard and dove under the wheel; +Jim and me come up all right, but pa was drunk, and Ike was only four +years old, so they never come up no more.  Well, for the next day or +two we had considerable trouble, because people was always coming out in +skiffs and trying to take Jim away from me, saying they believed he was +a runaway nigger.  We don't run daytimes no more now; nights they don't +bother us." + +The duke says: + +"Leave me alone to cipher out a way so we can run in the daytime if we +want to.  I'll think the thing over—I'll invent a plan that'll fix it. +We'll let it alone for to-day, because of course we don't want to go by +that town yonder in daylight—it mightn't be healthy." + +Towards night it begun to darken up and look like rain; the heat +lightning was squirting around low down in the sky, and the leaves was +beginning to shiver—it was going to be pretty ugly, it was easy to see +that.  So the duke and the king went to overhauling our wigwam, to see +what the beds was like.  My bed was a straw tick better than Jim's, +which was a corn-shuck tick; there's always cobs around about in a shuck +tick, and they poke into you and hurt; and when you roll over the dry +shucks sound like you was rolling over in a pile of dead leaves; it +makes such a rustling that you wake up.  Well, the duke allowed he would +take my bed; but the king allowed he wouldn't.  He says: + +"I should a reckoned the difference in rank would a sejested to you that +a corn-shuck bed warn't just fitten for me to sleep on.  Your Grace 'll +take the shuck bed yourself." + +Jim and me was in a sweat again for a minute, being afraid there was +going to be some more trouble amongst them; so we was pretty glad when +the duke says: + +"'Tis my fate to be always ground into the mire under the iron heel of +oppression.  Misfortune has broken my once haughty spirit; I yield, I +submit; 'tis my fate.  I am alone in the world—let me suffer; can bear +it." + +We got away as soon as it was good and dark.  The king told us to stand +well out towards the middle of the river, and not show a light till we +got a long ways below the town.  We come in sight of the little bunch of +lights by and by—that was the town, you know—and slid by, about a half +a mile out, all right.  When we was three-quarters of a mile below we +hoisted up our signal lantern; and about ten o'clock it come on to rain +and blow and thunder and lighten like everything; so the king told us +to both stay on watch till the weather got better; then him and the duke +crawled into the wigwam and turned in for the night.  It was my watch +below till twelve, but I wouldn't a turned in anyway if I'd had a bed, +because a body don't see such a storm as that every day in the week, not +by a long sight.  My souls, how the wind did scream along!  And every +second or two there'd come a glare that lit up the white-caps for a half +a mile around, and you'd see the islands looking dusty through the rain, +and the trees thrashing around in the wind; then comes a H-WHACK!—bum! +bum! bumble-umble-um-bum-bum-bum-bum—and the thunder would go rumbling +and grumbling away, and quit—and then RIP comes another flash and +another sockdolager.  The waves most washed me off the raft sometimes, +but I hadn't any clothes on, and didn't mind.  We didn't have no trouble +about snags; the lightning was glaring and flittering around so constant +that we could see them plenty soon enough to throw her head this way or +that and miss them. + +I had the middle watch, you know, but I was pretty sleepy by that time, +so Jim he said he would stand the first half of it for me; he was always +mighty good that way, Jim was.  I crawled into the wigwam, but the king +and the duke had their legs sprawled around so there warn't no show for +me; so I laid outside—I didn't mind the rain, because it was warm, and +the waves warn't running so high now.  About two they come up again, +though, and Jim was going to call me; but he changed his mind, because +he reckoned they warn't high enough yet to do any harm; but he was +mistaken about that, for pretty soon all of a sudden along comes a +regular ripper and washed me overboard.  It most killed Jim a-laughing. + He was the easiest nigger to laugh that ever was, anyway. + +I took the watch, and Jim he laid down and snored away; and by and by +the storm let up for good and all; and the first cabin-light that showed +I rousted him out, and we slid the raft into hiding quarters for the +day. + +The king got out an old ratty deck of cards after breakfast, and him +and the duke played seven-up a while, five cents a game.  Then they got +tired of it, and allowed they would "lay out a campaign," as they called +it. The duke went down into his carpet-bag, and fetched up a lot of +little printed bills and read them out loud.  One bill said, "The +celebrated Dr. Armand de Montalban, of Paris," would "lecture on the +Science of Phrenology" at such and such a place, on the blank day of +blank, at ten cents admission, and "furnish charts of character at +twenty-five cents apiece."  The duke said that was him.  In another +bill he was the "world-renowned Shakespearian tragedian, Garrick the +Younger, of Drury Lane, London."  In other bills he had a lot of other +names and done other wonderful things, like finding water and gold with +a "divining-rod," "dissipating witch spells," and so on.  By and by he +says: + +"But the histrionic muse is the darling.  Have you ever trod the boards, +Royalty?" + +"No," says the king. + +"You shall, then, before you're three days older, Fallen Grandeur," says +the duke.  "The first good town we come to we'll hire a hall and do the +sword fight in Richard III. and the balcony scene in Romeo and Juliet. +How does that strike you?" + +"I'm in, up to the hub, for anything that will pay, Bilgewater; but, you +see, I don't know nothing about play-actin', and hain't ever seen much +of it.  I was too small when pap used to have 'em at the palace.  Do you +reckon you can learn me?" + +"Easy!" + +"All right.  I'm jist a-freezn' for something fresh, anyway.  Le's +commence right away." + +So the duke he told him all about who Romeo was and who Juliet was, and +said he was used to being Romeo, so the king could be Juliet. + +"But if Juliet's such a young gal, duke, my peeled head and my white +whiskers is goin' to look oncommon odd on her, maybe." + +"No, don't you worry; these country jakes won't ever think of that. +Besides, you know, you'll be in costume, and that makes all the +difference in the world; Juliet's in a balcony, enjoying the moonlight +before she goes to bed, and she's got on her night-gown and her ruffled +nightcap.  Here are the costumes for the parts." + +He got out two or three curtain-calico suits, which he said was +meedyevil armor for Richard III. and t'other chap, and a long white +cotton nightshirt and a ruffled nightcap to match.  The king was +satisfied; so the duke got out his book and read the parts over in the +most splendid spread-eagle way, prancing around and acting at the same +time, to show how it had got to be done; then he give the book to the +king and told him to get his part by heart. + +There was a little one-horse town about three mile down the bend, and +after dinner the duke said he had ciphered out his idea about how to run +in daylight without it being dangersome for Jim; so he allowed he would +go down to the town and fix that thing.  The king allowed he would go, +too, and see if he couldn't strike something.  We was out of coffee, so +Jim said I better go along with them in the canoe and get some. + +When we got there there warn't nobody stirring; streets empty, and +perfectly dead and still, like Sunday.  We found a sick nigger sunning +himself in a back yard, and he said everybody that warn't too young or +too sick or too old was gone to camp-meeting, about two mile back in the +woods.  The king got the directions, and allowed he'd go and work that +camp-meeting for all it was worth, and I might go, too. + +The duke said what he was after was a printing-office.  We found it; +a little bit of a concern, up over a carpenter shop—carpenters and +printers all gone to the meeting, and no doors locked.  It was a dirty, +littered-up place, and had ink marks, and handbills with pictures of +horses and runaway niggers on them, all over the walls.  The duke shed +his coat and said he was all right now.  So me and the king lit out for +the camp-meeting. + +We got there in about a half an hour fairly dripping, for it was a most +awful hot day.  There was as much as a thousand people there from +twenty mile around.  The woods was full of teams and wagons, hitched +everywheres, feeding out of the wagon-troughs and stomping to keep +off the flies.  There was sheds made out of poles and roofed over with +branches, where they had lemonade and gingerbread to sell, and piles of +watermelons and green corn and such-like truck. + +The preaching was going on under the same kinds of sheds, only they was +bigger and held crowds of people.  The benches was made out of outside +slabs of logs, with holes bored in the round side to drive sticks into +for legs. They didn't have no backs.  The preachers had high platforms +to stand on at one end of the sheds.  The women had on sun-bonnets; +and some had linsey-woolsey frocks, some gingham ones, and a few of the +young ones had on calico.  Some of the young men was barefooted, and +some of the children didn't have on any clothes but just a tow-linen +shirt.  Some of the old women was knitting, and some of the young folks +was courting on the sly. + +The first shed we come to the preacher was lining out a hymn.  He lined +out two lines, everybody sung it, and it was kind of grand to hear it, +there was so many of them and they done it in such a rousing way; then +he lined out two more for them to sing—and so on.  The people woke up +more and more, and sung louder and louder; and towards the end some +begun to groan, and some begun to shout.  Then the preacher begun to +preach, and begun in earnest, too; and went weaving first to one side of +the platform and then the other, and then a-leaning down over the front +of it, with his arms and his body going all the time, and shouting his +words out with all his might; and every now and then he would hold up +his Bible and spread it open, and kind of pass it around this way and +that, shouting, "It's the brazen serpent in the wilderness!  Look upon +it and live!"  And people would shout out, "Glory!—A-a-men!"  And so +he went on, and the people groaning and crying and saying amen: + +"Oh, come to the mourners' bench! come, black with sin! (Amen!) come, +sick and sore! (Amen!) come, lame and halt and blind! (Amen!) come, +pore and needy, sunk in shame! (A-A-Men!) come, all that's worn and +soiled and suffering!—come with a broken spirit! come with a contrite +heart! come in your rags and sin and dirt! the waters that cleanse +is free, the door of heaven stands open—oh, enter in and be at rest!" +(A-A-Men!  Glory, Glory Hallelujah!) + +And so on.  You couldn't make out what the preacher said any more, on +account of the shouting and crying.  Folks got up everywheres in the +crowd, and worked their way just by main strength to the mourners' +bench, with the tears running down their faces; and when all the +mourners had got up there to the front benches in a crowd, they sung and +shouted and flung themselves down on the straw, just crazy and wild. + +Well, the first I knowed the king got a-going, and you could hear him +over everybody; and next he went a-charging up on to the platform, and +the preacher he begged him to speak to the people, and he done it.  He +told them he was a pirate—been a pirate for thirty years out in the +Indian Ocean—and his crew was thinned out considerable last spring in +a fight, and he was home now to take out some fresh men, and thanks to +goodness he'd been robbed last night and put ashore off of a steamboat +without a cent, and he was glad of it; it was the blessedest thing that +ever happened to him, because he was a changed man now, and happy for +the first time in his life; and, poor as he was, he was going to start +right off and work his way back to the Indian Ocean, and put in the rest +of his life trying to turn the pirates into the true path; for he could +do it better than anybody else, being acquainted with all pirate crews +in that ocean; and though it would take him a long time to get there +without money, he would get there anyway, and every time he convinced +a pirate he would say to him, "Don't you thank me, don't you give me no +credit; it all belongs to them dear people in Pokeville camp-meeting, +natural brothers and benefactors of the race, and that dear preacher +there, the truest friend a pirate ever had!" + +And then he busted into tears, and so did everybody.  Then somebody +sings out, "Take up a collection for him, take up a collection!"  Well, +a half a dozen made a jump to do it, but somebody sings out, "Let him +pass the hat around!"  Then everybody said it, the preacher too. + +So the king went all through the crowd with his hat swabbing his eyes, +and blessing the people and praising them and thanking them for being +so good to the poor pirates away off there; and every little while the +prettiest kind of girls, with the tears running down their cheeks, would +up and ask him would he let them kiss him for to remember him by; and he +always done it; and some of them he hugged and kissed as many as five or +six times—and he was invited to stay a week; and everybody wanted him to +live in their houses, and said they'd think it was an honor; but he said +as this was the last day of the camp-meeting he couldn't do no good, and +besides he was in a sweat to get to the Indian Ocean right off and go to +work on the pirates. + +When we got back to the raft and he come to count up he found he had +collected eighty-seven dollars and seventy-five cents.  And then he had +fetched away a three-gallon jug of whisky, too, that he found under a +wagon when he was starting home through the woods.  The king said, +take it all around, it laid over any day he'd ever put in in the +missionarying line.  He said it warn't no use talking, heathens don't +amount to shucks alongside of pirates to work a camp-meeting with. + +The duke was thinking he'd been doing pretty well till the king come +to show up, but after that he didn't think so so much.  He had set +up and printed off two little jobs for farmers in that +printing-office—horse bills—and took the money, four dollars.  And he +had got in ten dollars' worth of advertisements for the paper, which he +said he would put in for four dollars if they would pay in advance—so +they done it. The price of the paper was two dollars a year, but he took +in three subscriptions for half a dollar apiece on condition of them +paying him in advance; they were going to pay in cordwood and onions as +usual, but he said he had just bought the concern and knocked down the +price as low as he could afford it, and was going to run it for cash. + He set up a little piece of poetry, which he made, himself, out of +his own head—three verses—kind of sweet and saddish—the name of it was, +"Yes, crush, cold world, this breaking heart"—and he left that all set +up and ready to print in the paper, and didn't charge nothing for it. + Well, he took in nine dollars and a half, and said he'd done a pretty +square day's work for it. + +Then he showed us another little job he'd printed and hadn't charged +for, because it was for us.  It had a picture of a runaway nigger with +a bundle on a stick over his shoulder, and "$200 reward" under it.  The +reading was all about Jim, and just described him to a dot.  It said +he run away from St. Jacques' plantation, forty mile below New Orleans, +last winter, and likely went north, and whoever would catch him and send +him back he could have the reward and expenses. + +"Now," says the duke, "after to-night we can run in the daytime if we +want to.  Whenever we see anybody coming we can tie Jim hand and foot +with a rope, and lay him in the wigwam and show this handbill and say we +captured him up the river, and were too poor to travel on a steamboat, +so we got this little raft on credit from our friends and are going down +to get the reward.  Handcuffs and chains would look still better on Jim, +but it wouldn't go well with the story of us being so poor.  Too much +like jewelry.  Ropes are the correct thing—we must preserve the unities, +as we say on the boards." + +We all said the duke was pretty smart, and there couldn't be no trouble +about running daytimes.  We judged we could make miles enough that night +to get out of the reach of the powwow we reckoned the duke's work in +the printing office was going to make in that little town; then we could +boom right along if we wanted to. + +We laid low and kept still, and never shoved out till nearly ten +o'clock; then we slid by, pretty wide away from the town, and didn't +hoist our lantern till we was clear out of sight of it. + +When Jim called me to take the watch at four in the morning, he says: + +"Huck, does you reck'n we gwyne to run acrost any mo' kings on dis +trip?" + +"No," I says, "I reckon not." + +"Well," says he, "dat's all right, den.  I doan' mine one er two kings, +but dat's enough.  Dis one's powerful drunk, en de duke ain' much +better." + +I found Jim had been trying to get him to talk French, so he could hear +what it was like; but he said he had been in this country so long, and +had so much trouble, he'd forgot it. + + + + +CHAPTER XXI. + +IT was after sun-up now, but we went right on and didn't tie up.  The +king and the duke turned out by and by looking pretty rusty; but after +they'd jumped overboard and took a swim it chippered them up a good +deal. After breakfast the king he took a seat on the corner of the raft, +and pulled off his boots and rolled up his britches, and let his legs +dangle in the water, so as to be comfortable, and lit his pipe, and went +to getting his Romeo and Juliet by heart.  When he had got it pretty +good him and the duke begun to practice it together.  The duke had to +learn him over and over again how to say every speech; and he made him +sigh, and put his hand on his heart, and after a while he said he done +it pretty well; "only," he says, "you mustn't bellow out Romeo! +that way, like a bull—you must say it soft and sick and languishy, +so—R-o-o-meo! that is the idea; for Juliet's a dear sweet mere child of +a girl, you know, and she doesn't bray like a jackass." + +Well, next they got out a couple of long swords that the duke made out +of oak laths, and begun to practice the sword fight—the duke called +himself Richard III.; and the way they laid on and pranced around +the raft was grand to see.  But by and by the king tripped and fell +overboard, and after that they took a rest, and had a talk about all +kinds of adventures they'd had in other times along the river. + +After dinner the duke says: + +"Well, Capet, we'll want to make this a first-class show, you know, so +I guess we'll add a little more to it.  We want a little something to +answer encores with, anyway." + +"What's onkores, Bilgewater?" + +The duke told him, and then says: + +"I'll answer by doing the Highland fling or the sailor's hornpipe; and +you—well, let me see—oh, I've got it—you can do Hamlet's soliloquy." + +"Hamlet's which?" + +"Hamlet's soliloquy, you know; the most celebrated thing in Shakespeare. +Ah, it's sublime, sublime!  Always fetches the house.  I haven't got +it in the book—I've only got one volume—but I reckon I can piece it out +from memory.  I'll just walk up and down a minute, and see if I can call +it back from recollection's vaults." + +So he went to marching up and down, thinking, and frowning horrible +every now and then; then he would hoist up his eyebrows; next he would +squeeze his hand on his forehead and stagger back and kind of moan; next +he would sigh, and next he'd let on to drop a tear.  It was beautiful +to see him. By and by he got it.  He told us to give attention.  Then +he strikes a most noble attitude, with one leg shoved forwards, and his +arms stretched away up, and his head tilted back, looking up at the sky; +and then he begins to rip and rave and grit his teeth; and after that, +all through his speech, he howled, and spread around, and swelled up his +chest, and just knocked the spots out of any acting ever I see before. + This is the speech—I learned it, easy enough, while he was learning it +to the king: + +To be, or not to be; that is the bare bodkin That makes calamity of +so long life; For who would fardels bear, till Birnam Wood do come +to Dunsinane, But that the fear of something after death Murders the +innocent sleep, Great nature's second course, And makes us rather sling +the arrows of outrageous fortune Than fly to others that we know not of. +There's the respect must give us pause: Wake Duncan with thy knocking! I +would thou couldst; For who would bear the whips and scorns of time, The +oppressor's wrong, the proud man's contumely, The law's delay, and the +quietus which his pangs might take. In the dead waste and middle of the +night, when churchyards yawn In customary suits of solemn black, But +that the undiscovered country from whose bourne no traveler returns, +Breathes forth contagion on the world, And thus the native hue of +resolution, like the poor cat i' the adage, Is sicklied o'er with care. +And all the clouds that lowered o'er our housetops, With this +regard their currents turn awry, And lose the name of action. 'Tis a +consummation devoutly to be wished. But soft you, the fair Ophelia: Ope +not thy ponderous and marble jaws. But get thee to a nunnery—go! + +Well, the old man he liked that speech, and he mighty soon got it so he +could do it first rate. It seemed like he was just born for it; and when +he had his hand in and was excited, it was perfectly lovely the way he +would rip and tear and rair up behind when he was getting it off. + +The first chance we got, the duke he had some show bills printed; and +after that, for two or three days as we floated along, the raft was a +most uncommon lively place, for there warn't nothing but sword-fighting +and rehearsing—as the duke called it—going on all the time. One morning, +when we was pretty well down the State of Arkansaw, we come in sight +of a little one-horse town in a big bend; so we tied up about +three-quarters of a mile above it, in the mouth of a crick which was +shut in like a tunnel by the cypress trees, and all of us but Jim took +the canoe and went down there to see if there was any chance in that +place for our show. + +We struck it mighty lucky; there was going to be a circus there that +afternoon, and the country people was already beginning to come in, in +all kinds of old shackly wagons, and on horses. The circus would leave +before night, so our show would have a pretty good chance. The duke he +hired the court house, and we went around and stuck up our bills. They +read like this: + +Shaksperean Revival!!! + +Wonderful Attraction! + +For One Night Only! The world renowned tragedians, + +David Garrick the younger, of Drury Lane Theatre, London, + +and + +Edmund Kean the elder, of the Royal Haymarket Theatre, Whitechapel, +Pudding Lane, Piccadilly, London, and the Royal Continental Theatres, in +their sublime Shaksperean Spectacle entitled The Balcony Scene in + +Romeo and Juliet!!! + +Romeo...................................... Mr. Garrick. + +Juliet..................................... Mr. Kean. + +Assisted by the whole strength of the company! + +New costumes, new scenery, new appointments! + +Also: + +The thrilling, masterly, and blood-curdling Broad-sword conflict In +Richard III.!!! + +Richard III................................ Mr. Garrick. + +Richmond................................... Mr. Kean. + +also: + +(by special request,) + +Hamlet's Immortal Soliloquy!! + +By the Illustrious Kean! + +Done by him 300 consecutive nights in Paris! + +For One Night Only, + +On account of imperative European engagements! + +Admission 25 cents; children and servants, 10 cents. + +Then we went loafing around the town. The stores and houses was most all +old shackly dried-up frame concerns that hadn't ever been painted; they +was set up three or four foot above ground on stilts, so as to be out of +reach of the water when the river was overflowed. The houses had little +gardens around them, but they didn't seem to raise hardly anything in +them but jimpson weeds, and sunflowers, and ash-piles, and old curled-up +boots and shoes, and pieces of bottles, and rags, and played-out +tin-ware. The fences was made of different kinds of boards, nailed on +at different times; and they leaned every which-way, and had gates that +didn't generly have but one hinge—a leather one. Some of the fences +had been whitewashed, some time or another, but the duke said it was in +Clumbus's time, like enough. There was generly hogs in the garden, and +people driving them out. + +All the stores was along one street.  They had white domestic awnings in +front, and the country people hitched their horses to the awning-posts. +There was empty drygoods boxes under the awnings, and loafers roosting +on them all day long, whittling them with their Barlow knives; and +chawing tobacco, and gaping and yawning and stretching—a mighty ornery +lot. They generly had on yellow straw hats most as wide as an umbrella, +but didn't wear no coats nor waistcoats, they called one another Bill, +and Buck, and Hank, and Joe, and Andy, and talked lazy and drawly, and +used considerable many cuss words.  There was as many as one loafer +leaning up against every awning-post, and he most always had his hands +in his britches-pockets, except when he fetched them out to lend a chaw +of tobacco or scratch.  What a body was hearing amongst them all the +time was: + +"Gimme a chaw 'v tobacker, Hank." + +"Cain't; I hain't got but one chaw left.  Ask Bill." + +Maybe Bill he gives him a chaw; maybe he lies and says he ain't got +none. Some of them kinds of loafers never has a cent in the world, nor a +chaw of tobacco of their own.  They get all their chawing by borrowing; +they say to a fellow, "I wisht you'd len' me a chaw, Jack, I jist this +minute give Ben Thompson the last chaw I had"—which is a lie pretty +much everytime; it don't fool nobody but a stranger; but Jack ain't no +stranger, so he says: + +"You give him a chaw, did you?  So did your sister's cat's +grandmother. You pay me back the chaws you've awready borry'd off'n me, +Lafe Buckner, then I'll loan you one or two ton of it, and won't charge +you no back intrust, nuther." + +"Well, I did pay you back some of it wunst." + +"Yes, you did—'bout six chaws.  You borry'd store tobacker and paid back +nigger-head." + +Store tobacco is flat black plug, but these fellows mostly chaws the +natural leaf twisted.  When they borrow a chaw they don't generly cut it +off with a knife, but set the plug in between their teeth, and gnaw with +their teeth and tug at the plug with their hands till they get it in +two; then sometimes the one that owns the tobacco looks mournful at it +when it's handed back, and says, sarcastic: + +"Here, gimme the chaw, and you take the plug." + +All the streets and lanes was just mud; they warn't nothing else but +mud—mud as black as tar and nigh about a foot deep in some places, +and two or three inches deep in all the places.  The hogs loafed and +grunted around everywheres.  You'd see a muddy sow and a litter of pigs +come lazying along the street and whollop herself right down in the way, +where folks had to walk around her, and she'd stretch out and shut her +eyes and wave her ears whilst the pigs was milking her, and look as +happy as if she was on salary. And pretty soon you'd hear a loafer +sing out, "Hi!  so boy! sick him, Tige!" and away the sow would go, +squealing most horrible, with a dog or two swinging to each ear, and +three or four dozen more a-coming; and then you would see all the +loafers get up and watch the thing out of sight, and laugh at the fun +and look grateful for the noise.  Then they'd settle back again till +there was a dog fight.  There couldn't anything wake them up all over, +and make them happy all over, like a dog fight—unless it might be +putting turpentine on a stray dog and setting fire to him, or tying a +tin pan to his tail and see him run himself to death. + +On the river front some of the houses was sticking out over the bank, +and they was bowed and bent, and about ready to tumble in. The people +had moved out of them.  The bank was caved away under one corner of some +others, and that corner was hanging over.  People lived in them yet, but +it was dangersome, because sometimes a strip of land as wide as a house +caves in at a time.  Sometimes a belt of land a quarter of a mile deep +will start in and cave along and cave along till it all caves into the +river in one summer. Such a town as that has to be always moving back, +and back, and back, because the river's always gnawing at it. + +The nearer it got to noon that day the thicker and thicker was the +wagons and horses in the streets, and more coming all the time. + Families fetched their dinners with them from the country, and eat them +in the wagons.  There was considerable whisky drinking going on, and I +seen three fights.  By and by somebody sings out: + +"Here comes old Boggs!—in from the country for his little old monthly +drunk; here he comes, boys!" + +All the loafers looked glad; I reckoned they was used to having fun out +of Boggs.  One of them says: + +"Wonder who he's a-gwyne to chaw up this time.  If he'd a-chawed up all +the men he's ben a-gwyne to chaw up in the last twenty year he'd have +considerable ruputation now." + +Another one says, "I wisht old Boggs 'd threaten me, 'cuz then I'd know +I warn't gwyne to die for a thousan' year." + +Boggs comes a-tearing along on his horse, whooping and yelling like an +Injun, and singing out: + +"Cler the track, thar.  I'm on the waw-path, and the price uv coffins is +a-gwyne to raise." + +He was drunk, and weaving about in his saddle; he was over fifty year +old, and had a very red face.  Everybody yelled at him and laughed at +him and sassed him, and he sassed back, and said he'd attend to them and +lay them out in their regular turns, but he couldn't wait now because +he'd come to town to kill old Colonel Sherburn, and his motto was, "Meat +first, and spoon vittles to top off on." + +He see me, and rode up and says: + +"Whar'd you come f'm, boy?  You prepared to die?" + +Then he rode on.  I was scared, but a man says: + +"He don't mean nothing; he's always a-carryin' on like that when he's +drunk.  He's the best naturedest old fool in Arkansaw—never hurt nobody, +drunk nor sober." + +Boggs rode up before the biggest store in town, and bent his head down +so he could see under the curtain of the awning and yells: + +"Come out here, Sherburn! Come out and meet the man you've swindled. +You're the houn' I'm after, and I'm a-gwyne to have you, too!" + +And so he went on, calling Sherburn everything he could lay his tongue +to, and the whole street packed with people listening and laughing and +going on.  By and by a proud-looking man about fifty-five—and he was a +heap the best dressed man in that town, too—steps out of the store, and +the crowd drops back on each side to let him come.  He says to Boggs, +mighty ca'm and slow—he says: + +"I'm tired of this, but I'll endure it till one o'clock.  Till one +o'clock, mind—no longer.  If you open your mouth against me only once +after that time you can't travel so far but I will find you." + +Then he turns and goes in.  The crowd looked mighty sober; nobody +stirred, and there warn't no more laughing.  Boggs rode off +blackguarding Sherburn as loud as he could yell, all down the street; +and pretty soon back he comes and stops before the store, still keeping +it up.  Some men crowded around him and tried to get him to shut up, +but he wouldn't; they told him it would be one o'clock in about fifteen +minutes, and so he must go home—he must go right away.  But it didn't +do no good.  He cussed away with all his might, and throwed his hat down +in the mud and rode over it, and pretty soon away he went a-raging down +the street again, with his gray hair a-flying. Everybody that could get +a chance at him tried their best to coax him off of his horse so they +could lock him up and get him sober; but it warn't no use—up the street +he would tear again, and give Sherburn another cussing.  By and by +somebody says: + +"Go for his daughter!—quick, go for his daughter; sometimes he'll listen +to her.  If anybody can persuade him, she can." + +So somebody started on a run.  I walked down street a ways and stopped. +In about five or ten minutes here comes Boggs again, but not on his +horse.  He was a-reeling across the street towards me, bare-headed, with +a friend on both sides of him a-holt of his arms and hurrying him along. +He was quiet, and looked uneasy; and he warn't hanging back any, but was +doing some of the hurrying himself.  Somebody sings out: + +"Boggs!" + +I looked over there to see who said it, and it was that Colonel +Sherburn. He was standing perfectly still in the street, and had a +pistol raised in his right hand—not aiming it, but holding it out with +the barrel tilted up towards the sky.  The same second I see a young +girl coming on the run, and two men with her.  Boggs and the men turned +round to see who called him, and when they see the pistol the men +jumped to one side, and the pistol-barrel come down slow and steady to +a level—both barrels cocked. Boggs throws up both of his hands and says, +"O Lord, don't shoot!"  Bang! goes the first shot, and he staggers back, +clawing at the air—bang! goes the second one, and he tumbles backwards +on to the ground, heavy and solid, with his arms spread out.  That young +girl screamed out and comes rushing, and down she throws herself on her +father, crying, and saying, "Oh, he's killed him, he's killed him!"  The +crowd closed up around them, and shouldered and jammed one another, with +their necks stretched, trying to see, and people on the inside trying to +shove them back and shouting, "Back, back! give him air, give him air!" + +Colonel Sherburn he tossed his pistol on to the ground, and turned +around on his heels and walked off. + +They took Boggs to a little drug store, the crowd pressing around just +the same, and the whole town following, and I rushed and got a good +place at the window, where I was close to him and could see in.  They +laid him on the floor and put one large Bible under his head, and opened +another one and spread it on his breast; but they tore open his shirt +first, and I seen where one of the bullets went in.  He made about a +dozen long gasps, his breast lifting the Bible up when he drawed in his +breath, and letting it down again when he breathed it out—and after that +he laid still; he was dead.  Then they pulled his daughter away from +him, screaming and crying, and took her off.  She was about sixteen, and +very sweet and gentle looking, but awful pale and scared. + +Well, pretty soon the whole town was there, squirming and scrouging and +pushing and shoving to get at the window and have a look, but people +that had the places wouldn't give them up, and folks behind them was +saying all the time, "Say, now, you've looked enough, you fellows; +'tain't right and 'tain't fair for you to stay thar all the time, and +never give nobody a chance; other folks has their rights as well as +you." + +There was considerable jawing back, so I slid out, thinking maybe +there was going to be trouble.  The streets was full, and everybody was +excited. Everybody that seen the shooting was telling how it happened, +and there was a big crowd packed around each one of these fellows, +stretching their necks and listening.  One long, lanky man, with long +hair and a big white fur stovepipe hat on the back of his head, and a +crooked-handled cane, marked out the places on the ground where Boggs +stood and where Sherburn stood, and the people following him around from +one place to t'other and watching everything he done, and bobbing their +heads to show they understood, and stooping a little and resting their +hands on their thighs to watch him mark the places on the ground with +his cane; and then he stood up straight and stiff where Sherburn had +stood, frowning and having his hat-brim down over his eyes, and sung +out, "Boggs!" and then fetched his cane down slow to a level, and says +"Bang!" staggered backwards, says "Bang!" again, and fell down flat on +his back. The people that had seen the thing said he done it perfect; +said it was just exactly the way it all happened.  Then as much as a +dozen people got out their bottles and treated him. + +Well, by and by somebody said Sherburn ought to be lynched.  In about a +minute everybody was saying it; so away they went, mad and yelling, and +snatching down every clothes-line they come to to do the hanging with. + + + + +CHAPTER XXII. + +THEY swarmed up towards Sherburn's house, a-whooping and raging like +Injuns, and everything had to clear the way or get run over and tromped +to mush, and it was awful to see.  Children was heeling it ahead of the +mob, screaming and trying to get out of the way; and every window along +the road was full of women's heads, and there was nigger boys in every +tree, and bucks and wenches looking over every fence; and as soon as the +mob would get nearly to them they would break and skaddle back out of +reach.  Lots of the women and girls was crying and taking on, scared +most to death. + +They swarmed up in front of Sherburn's palings as thick as they could +jam together, and you couldn't hear yourself think for the noise.  It +was a little twenty-foot yard.  Some sung out "Tear down the fence! tear +down the fence!"  Then there was a racket of ripping and tearing and +smashing, and down she goes, and the front wall of the crowd begins to +roll in like a wave. + +Just then Sherburn steps out on to the roof of his little front porch, +with a double-barrel gun in his hand, and takes his stand, perfectly +ca'm and deliberate, not saying a word.  The racket stopped, and the +wave sucked back. + +Sherburn never said a word—just stood there, looking down.  The +stillness was awful creepy and uncomfortable.  Sherburn run his eye slow +along the crowd; and wherever it struck the people tried a little to +out-gaze him, but they couldn't; they dropped their eyes and looked +sneaky. Then pretty soon Sherburn sort of laughed; not the pleasant +kind, but the kind that makes you feel like when you are eating bread +that's got sand in it. + +Then he says, slow and scornful: + +"The idea of you lynching anybody!  It's amusing.  The idea of you +thinking you had pluck enough to lynch a man!  Because you're brave +enough to tar and feather poor friendless cast-out women that come along +here, did that make you think you had grit enough to lay your hands on a +man?  Why, a man's safe in the hands of ten thousand of your kind—as +long as it's daytime and you're not behind him. + +"Do I know you?  I know you clear through. I was born and raised in the +South, and I've lived in the North; so I know the average all around. +The average man's a coward.  In the North he lets anybody walk over him +that wants to, and goes home and prays for a humble spirit to bear it. +In the South one man all by himself, has stopped a stage full of men +in the daytime, and robbed the lot.  Your newspapers call you a +brave people so much that you think you are braver than any other +people—whereas you're just as brave, and no braver.  Why don't your +juries hang murderers?  Because they're afraid the man's friends will +shoot them in the back, in the dark—and it's just what they would do. + +"So they always acquit; and then a man goes in the night, with a +hundred masked cowards at his back and lynches the rascal.  Your mistake +is, that you didn't bring a man with you; that's one mistake, and the +other is that you didn't come in the dark and fetch your masks.  You +brought part of a man—Buck Harkness, there—and if you hadn't had him +to start you, you'd a taken it out in blowing. + +"You didn't want to come.  The average man don't like trouble and +danger. You don't like trouble and danger.  But if only half a +man—like Buck Harkness, there—shouts 'Lynch him! lynch him!' you're +afraid to back down—afraid you'll be found out to be what you +are—cowards—and so you raise a yell, and hang yourselves on to that +half-a-man's coat-tail, and come raging up here, swearing what big +things you're going to do. The pitifulest thing out is a mob; that's +what an army is—a mob; they don't fight with courage that's born in +them, but with courage that's borrowed from their mass, and from their +officers.  But a mob without any man at the head of it is beneath +pitifulness.  Now the thing for you to do is to droop your tails and +go home and crawl in a hole.  If any real lynching's going to be done it +will be done in the dark, Southern fashion; and when they come they'll +bring their masks, and fetch a man along.  Now leave—and take your +half-a-man with you"—tossing his gun up across his left arm and cocking +it when he says this. + +The crowd washed back sudden, and then broke all apart, and went tearing +off every which way, and Buck Harkness he heeled it after them, looking +tolerable cheap.  I could a stayed if I wanted to, but I didn't want to. + +I went to the circus and loafed around the back side till the watchman +went by, and then dived in under the tent.  I had my twenty-dollar gold +piece and some other money, but I reckoned I better save it, because +there ain't no telling how soon you are going to need it, away from +home and amongst strangers that way.  You can't be too careful.  I ain't +opposed to spending money on circuses when there ain't no other way, but +there ain't no use in wasting it on them. + +It was a real bully circus.  It was the splendidest sight that ever was +when they all come riding in, two and two, a gentleman and lady, side +by side, the men just in their drawers and undershirts, and no shoes +nor stirrups, and resting their hands on their thighs easy and +comfortable—there must a been twenty of them—and every lady with a +lovely complexion, and perfectly beautiful, and looking just like a gang +of real sure-enough queens, and dressed in clothes that cost millions of +dollars, and just littered with diamonds.  It was a powerful fine sight; +I never see anything so lovely.  And then one by one they got up +and stood, and went a-weaving around the ring so gentle and wavy and +graceful, the men looking ever so tall and airy and straight, with their +heads bobbing and skimming along, away up there under the tent-roof, and +every lady's rose-leafy dress flapping soft and silky around her hips, +and she looking like the most loveliest parasol. + +And then faster and faster they went, all of them dancing, first one +foot out in the air and then the other, the horses leaning more and +more, and the ringmaster going round and round the center-pole, cracking +his whip and shouting "Hi!—hi!" and the clown cracking jokes behind +him; and by and by all hands dropped the reins, and every lady put her +knuckles on her hips and every gentleman folded his arms, and then how +the horses did lean over and hump themselves!  And so one after the +other they all skipped off into the ring, and made the sweetest bow I +ever see, and then scampered out, and everybody clapped their hands and +went just about wild. + +Well, all through the circus they done the most astonishing things; and +all the time that clown carried on so it most killed the people.  The +ringmaster couldn't ever say a word to him but he was back at him quick +as a wink with the funniest things a body ever said; and how he ever +could think of so many of them, and so sudden and so pat, was what I +couldn't noway understand. Why, I couldn't a thought of them in a year. +And by and by a drunk man tried to get into the ring—said he wanted to +ride; said he could ride as well as anybody that ever was.  They argued +and tried to keep him out, but he wouldn't listen, and the whole show +come to a standstill.  Then the people begun to holler at him and make +fun of him, and that made him mad, and he begun to rip and tear; so that +stirred up the people, and a lot of men begun to pile down off of the +benches and swarm towards the ring, saying, "Knock him down! throw him +out!" and one or two women begun to scream.  So, then, the ringmaster +he made a little speech, and said he hoped there wouldn't be no +disturbance, and if the man would promise he wouldn't make no more +trouble he would let him ride if he thought he could stay on the horse. + So everybody laughed and said all right, and the man got on. The minute +he was on, the horse begun to rip and tear and jump and cavort around, +with two circus men hanging on to his bridle trying to hold him, and the +drunk man hanging on to his neck, and his heels flying in the air every +jump, and the whole crowd of people standing up shouting and laughing +till tears rolled down.  And at last, sure enough, all the circus men +could do, the horse broke loose, and away he went like the very nation, +round and round the ring, with that sot laying down on him and hanging +to his neck, with first one leg hanging most to the ground on one side, +and then t'other one on t'other side, and the people just crazy.  It +warn't funny to me, though; I was all of a tremble to see his danger. + But pretty soon he struggled up astraddle and grabbed the bridle, +a-reeling this way and that; and the next minute he sprung up and +dropped the bridle and stood! and the horse a-going like a house afire +too.  He just stood up there, a-sailing around as easy and comfortable +as if he warn't ever drunk in his life—and then he begun to pull off his +clothes and sling them.  He shed them so thick they kind of clogged up +the air, and altogether he shed seventeen suits. And, then, there he +was, slim and handsome, and dressed the gaudiest and prettiest you +ever saw, and he lit into that horse with his whip and made him fairly +hum—and finally skipped off, and made his bow and danced off to +the dressing-room, and everybody just a-howling with pleasure and +astonishment. + +Then the ringmaster he see how he had been fooled, and he was the +sickest ringmaster you ever see, I reckon.  Why, it was one of his own +men!  He had got up that joke all out of his own head, and never let on +to nobody. Well, I felt sheepish enough to be took in so, but I wouldn't +a been in that ringmaster's place, not for a thousand dollars.  I don't +know; there may be bullier circuses than what that one was, but I +never struck them yet. Anyways, it was plenty good enough for me; and +wherever I run across it, it can have all of my custom every time. + +Well, that night we had our show; but there warn't only about twelve +people there—just enough to pay expenses.  And they laughed all the +time, and that made the duke mad; and everybody left, anyway, before +the show was over, but one boy which was asleep.  So the duke said these +Arkansaw lunkheads couldn't come up to Shakespeare; what they wanted +was low comedy—and maybe something ruther worse than low comedy, he +reckoned.  He said he could size their style.  So next morning he got +some big sheets of wrapping paper and some black paint, and drawed off +some handbills, and stuck them up all over the village.  The bills said: + + + + +CHAPTER XXIII. + +WELL, all day him and the king was hard at it, rigging up a stage and +a curtain and a row of candles for footlights; and that night the house +was jam full of men in no time.  When the place couldn't hold no more, +the duke he quit tending door and went around the back way and come on +to the stage and stood up before the curtain and made a little speech, +and praised up this tragedy, and said it was the most thrillingest one +that ever was; and so he went on a-bragging about the tragedy, and about +Edmund Kean the Elder, which was to play the main principal part in it; +and at last when he'd got everybody's expectations up high enough, he +rolled up the curtain, and the next minute the king come a-prancing +out on all fours, naked; and he was painted all over, +ring-streaked-and-striped, all sorts of colors, as splendid as a +rainbow.  And—but never mind the rest of his outfit; it was just wild, +but it was awful funny. The people most killed themselves laughing; and +when the king got done capering and capered off behind the scenes, they +roared and clapped and stormed and haw-hawed till he come back and done +it over again, and after that they made him do it another time. Well, it +would make a cow laugh to see the shines that old idiot cut. + +Then the duke he lets the curtain down, and bows to the people, and says +the great tragedy will be performed only two nights more, on accounts of +pressing London engagements, where the seats is all sold already for it +in Drury Lane; and then he makes them another bow, and says if he has +succeeded in pleasing them and instructing them, he will be deeply +obleeged if they will mention it to their friends and get them to come +and see it. + +Twenty people sings out: + +"What, is it over?  Is that all?" + +The duke says yes.  Then there was a fine time.  Everybody sings +out, "Sold!" and rose up mad, and was a-going for that stage and them +tragedians.  But a big, fine looking man jumps up on a bench and shouts: + +"Hold on!  Just a word, gentlemen."  They stopped to listen.  "We are +sold—mighty badly sold.  But we don't want to be the laughing stock of +this whole town, I reckon, and never hear the last of this thing as long +as we live.  No.  What we want is to go out of here quiet, and talk +this show up, and sell the rest of the town!  Then we'll all be in the +same boat.  Ain't that sensible?" ("You bet it is!—the jedge is right!" +everybody sings out.) "All right, then—not a word about any sell.  Go +along home, and advise everybody to come and see the tragedy." + +Next day you couldn't hear nothing around that town but how splendid +that show was.  House was jammed again that night, and we sold this +crowd the same way.  When me and the king and the duke got home to the +raft we all had a supper; and by and by, about midnight, they made Jim +and me back her out and float her down the middle of the river, and +fetch her in and hide her about two mile below town. + +The third night the house was crammed again—and they warn't new-comers +this time, but people that was at the show the other two nights.  I +stood by the duke at the door, and I see that every man that went in had +his pockets bulging, or something muffled up under his coat—and I see it +warn't no perfumery, neither, not by a long sight.  I smelt sickly eggs +by the barrel, and rotten cabbages, and such things; and if I know the +signs of a dead cat being around, and I bet I do, there was sixty-four +of them went in.  I shoved in there for a minute, but it was too various +for me; I couldn't stand it.  Well, when the place couldn't hold no more +people the duke he give a fellow a quarter and told him to tend door +for him a minute, and then he started around for the stage door, I after +him; but the minute we turned the corner and was in the dark he says: + +"Walk fast now till you get away from the houses, and then shin for the +raft like the dickens was after you!" + +I done it, and he done the same.  We struck the raft at the same time, +and in less than two seconds we was gliding down stream, all dark and +still, and edging towards the middle of the river, nobody saying a +word. I reckoned the poor king was in for a gaudy time of it with the +audience, but nothing of the sort; pretty soon he crawls out from under +the wigwam, and says: + +"Well, how'd the old thing pan out this time, duke?"  He hadn't been +up-town at all. + +We never showed a light till we was about ten mile below the village. +Then we lit up and had a supper, and the king and the duke fairly +laughed their bones loose over the way they'd served them people.  The +duke says: + +"Greenhorns, flatheads!  I knew the first house would keep mum and let +the rest of the town get roped in; and I knew they'd lay for us the +third night, and consider it was their turn now.  Well, it is their +turn, and I'd give something to know how much they'd take for it.  I +would just like to know how they're putting in their opportunity. + They can turn it into a picnic if they want to—they brought plenty +provisions." + +Them rapscallions took in four hundred and sixty-five dollars in that +three nights.  I never see money hauled in by the wagon-load like that +before.  By and by, when they was asleep and snoring, Jim says: + +"Don't it s'prise you de way dem kings carries on, Huck?" + +"No," I says, "it don't." + +"Why don't it, Huck?" + +"Well, it don't, because it's in the breed.  I reckon they're all +alike." + +"But, Huck, dese kings o' ourn is reglar rapscallions; dat's jist what +dey is; dey's reglar rapscallions." + +"Well, that's what I'm a-saying; all kings is mostly rapscallions, as +fur as I can make out." + +"Is dat so?" + +"You read about them once—you'll see.  Look at Henry the Eight; this 'n +'s a Sunday-school Superintendent to him.  And look at Charles Second, +and Louis Fourteen, and Louis Fifteen, and James Second, and Edward +Second, and Richard Third, and forty more; besides all them Saxon +heptarchies that used to rip around so in old times and raise Cain.  My, +you ought to seen old Henry the Eight when he was in bloom.  He was a +blossom.  He used to marry a new wife every day, and chop off her head +next morning.  And he would do it just as indifferent as if he was +ordering up eggs.  'Fetch up Nell Gwynn,' he says.  They fetch her up. +Next morning, 'Chop off her head!'  And they chop it off.  'Fetch up +Jane Shore,' he says; and up she comes, Next morning, 'Chop off her +head'—and they chop it off.  'Ring up Fair Rosamun.'  Fair Rosamun +answers the bell.  Next morning, 'Chop off her head.'  And he made every +one of them tell him a tale every night; and he kept that up till he had +hogged a thousand and one tales that way, and then he put them all in a +book, and called it Domesday Book—which was a good name and stated the +case.  You don't know kings, Jim, but I know them; and this old rip +of ourn is one of the cleanest I've struck in history.  Well, Henry he +takes a notion he wants to get up some trouble with this country. How +does he go at it—give notice?—give the country a show?  No.  All of a +sudden he heaves all the tea in Boston Harbor overboard, and whacks +out a declaration of independence, and dares them to come on.  That was +his style—he never give anybody a chance.  He had suspicions of his +father, the Duke of Wellington.  Well, what did he do?  Ask him to show +up?  No—drownded him in a butt of mamsey, like a cat.  S'pose people +left money laying around where he was—what did he do?  He collared it. + S'pose he contracted to do a thing, and you paid him, and didn't set +down there and see that he done it—what did he do?  He always done the +other thing. S'pose he opened his mouth—what then?  If he didn't shut it +up powerful quick he'd lose a lie every time.  That's the kind of a bug +Henry was; and if we'd a had him along 'stead of our kings he'd a fooled +that town a heap worse than ourn done.  I don't say that ourn is lambs, +because they ain't, when you come right down to the cold facts; but they +ain't nothing to that old ram, anyway.  All I say is, kings is kings, +and you got to make allowances.  Take them all around, they're a mighty +ornery lot. It's the way they're raised." + +"But dis one do smell so like de nation, Huck." + +"Well, they all do, Jim.  We can't help the way a king smells; history +don't tell no way." + +"Now de duke, he's a tolerble likely man in some ways." + +"Yes, a duke's different.  But not very different.  This one's +a middling hard lot for a duke.  When he's drunk there ain't no +near-sighted man could tell him from a king." + +"Well, anyways, I doan' hanker for no mo' un um, Huck.  Dese is all I +kin stan'." + +"It's the way I feel, too, Jim.  But we've got them on our hands, and we +got to remember what they are, and make allowances.  Sometimes I wish we +could hear of a country that's out of kings." + +What was the use to tell Jim these warn't real kings and dukes?  It +wouldn't a done no good; and, besides, it was just as I said:  you +couldn't tell them from the real kind. + +I went to sleep, and Jim didn't call me when it was my turn.  He often +done that.  When I waked up just at daybreak he was sitting there with +his head down betwixt his knees, moaning and mourning to himself.  I +didn't take notice nor let on.  I knowed what it was about.  He was +thinking about his wife and his children, away up yonder, and he was low +and homesick; because he hadn't ever been away from home before in his +life; and I do believe he cared just as much for his people as white +folks does for their'n.  It don't seem natural, but I reckon it's so. + He was often moaning and mourning that way nights, when he judged I +was asleep, and saying, "Po' little 'Lizabeth! po' little Johnny! it's +mighty hard; I spec' I ain't ever gwyne to see you no mo', no mo'!"  He +was a mighty good nigger, Jim was. + +But this time I somehow got to talking to him about his wife and young +ones; and by and by he says: + +"What makes me feel so bad dis time 'uz bekase I hear sumpn over yonder +on de bank like a whack, er a slam, while ago, en it mine me er de time +I treat my little 'Lizabeth so ornery.  She warn't on'y 'bout fo' year +ole, en she tuck de sk'yarlet fever, en had a powful rough spell; but +she got well, en one day she was a-stannin' aroun', en I says to her, I +says: + +"'Shet de do'.' + +"She never done it; jis' stood dah, kiner smilin' up at me.  It make me +mad; en I says agin, mighty loud, I says: + +"'Doan' you hear me?  Shet de do'!' + +"She jis stood de same way, kiner smilin' up.  I was a-bilin'!  I says: + +"'I lay I make you mine!' + +"En wid dat I fetch' her a slap side de head dat sont her a-sprawlin'. +Den I went into de yuther room, en 'uz gone 'bout ten minutes; en when +I come back dah was dat do' a-stannin' open yit, en dat chile stannin' +mos' right in it, a-lookin' down and mournin', en de tears runnin' down. + My, but I wuz mad!  I was a-gwyne for de chile, but jis' den—it was a +do' dat open innerds—jis' den, 'long come de wind en slam it to, behine +de chile, ker-BLAM!—en my lan', de chile never move'!  My breff mos' +hop outer me; en I feel so—so—I doan' know HOW I feel.  I crope out, +all a-tremblin', en crope aroun' en open de do' easy en slow, en poke my +head in behine de chile, sof' en still, en all uv a sudden I says POW! +jis' as loud as I could yell.  She never budge!  Oh, Huck, I bust out +a-cryin' en grab her up in my arms, en say, 'Oh, de po' little thing! + De Lord God Amighty fogive po' ole Jim, kaze he never gwyne to fogive +hisself as long's he live!'  Oh, she was plumb deef en dumb, Huck, plumb +deef en dumb—en I'd ben a-treat'n her so!" + + + + +CHAPTER XXIV. + +NEXT day, towards night, we laid up under a little willow towhead out in +the middle, where there was a village on each side of the river, and the +duke and the king begun to lay out a plan for working them towns.  Jim +he spoke to the duke, and said he hoped it wouldn't take but a few +hours, because it got mighty heavy and tiresome to him when he had to +lay all day in the wigwam tied with the rope.  You see, when we left him +all alone we had to tie him, because if anybody happened on to him all +by himself and not tied it wouldn't look much like he was a runaway +nigger, you know. So the duke said it was kind of hard to have to lay +roped all day, and he'd cipher out some way to get around it. + +He was uncommon bright, the duke was, and he soon struck it.  He dressed +Jim up in King Lear's outfit—it was a long curtain-calico gown, and a +white horse-hair wig and whiskers; and then he took his theater paint +and painted Jim's face and hands and ears and neck all over a dead, +dull, solid blue, like a man that's been drownded nine days.  Blamed if +he warn't the horriblest looking outrage I ever see.  Then the duke took +and wrote out a sign on a shingle so: + +Sick Arab—but harmless when not out of his head. + +And he nailed that shingle to a lath, and stood the lath up four or five +foot in front of the wigwam.  Jim was satisfied.  He said it was a sight +better than lying tied a couple of years every day, and trembling all +over every time there was a sound.  The duke told him to make himself +free and easy, and if anybody ever come meddling around, he must hop +out of the wigwam, and carry on a little, and fetch a howl or two like +a wild beast, and he reckoned they would light out and leave him alone. + Which was sound enough judgment; but you take the average man, and he +wouldn't wait for him to howl.  Why, he didn't only look like he was +dead, he looked considerable more than that. + +These rapscallions wanted to try the Nonesuch again, because there was +so much money in it, but they judged it wouldn't be safe, because maybe +the news might a worked along down by this time.  They couldn't hit no +project that suited exactly; so at last the duke said he reckoned he'd +lay off and work his brains an hour or two and see if he couldn't put up +something on the Arkansaw village; and the king he allowed he would drop +over to t'other village without any plan, but just trust in Providence +to lead him the profitable way—meaning the devil, I reckon.  We had all +bought store clothes where we stopped last; and now the king put his'n +on, and he told me to put mine on.  I done it, of course.  The king's +duds was all black, and he did look real swell and starchy.  I never +knowed how clothes could change a body before.  Why, before, he looked +like the orneriest old rip that ever was; but now, when he'd take off +his new white beaver and make a bow and do a smile, he looked that grand +and good and pious that you'd say he had walked right out of the ark, +and maybe was old Leviticus himself.  Jim cleaned up the canoe, and I +got my paddle ready.  There was a big steamboat laying at the shore away +up under the point, about three mile above the town—been there a couple +of hours, taking on freight.  Says the king: + +"Seein' how I'm dressed, I reckon maybe I better arrive down from St. +Louis or Cincinnati, or some other big place.  Go for the steamboat, +Huckleberry; we'll come down to the village on her." + +I didn't have to be ordered twice to go and take a steamboat ride. + I fetched the shore a half a mile above the village, and then went +scooting along the bluff bank in the easy water.  Pretty soon we come to +a nice innocent-looking young country jake setting on a log swabbing the +sweat off of his face, for it was powerful warm weather; and he had a +couple of big carpet-bags by him. + +"Run her nose in shore," says the king.  I done it.  "Wher' you bound +for, young man?" + +"For the steamboat; going to Orleans." + +"Git aboard," says the king.  "Hold on a minute, my servant 'll he'p you +with them bags.  Jump out and he'p the gentleman, Adolphus"—meaning me, +I see. + +I done so, and then we all three started on again.  The young chap was +mighty thankful; said it was tough work toting his baggage such weather. +He asked the king where he was going, and the king told him he'd come +down the river and landed at the other village this morning, and now he +was going up a few mile to see an old friend on a farm up there.  The +young fellow says: + +"When I first see you I says to myself, 'It's Mr. Wilks, sure, and he +come mighty near getting here in time.'  But then I says again, 'No, I +reckon it ain't him, or else he wouldn't be paddling up the river.'  You +ain't him, are you?" + +"No, my name's Blodgett—Elexander Blodgett—Reverend Elexander +Blodgett, I s'pose I must say, as I'm one o' the Lord's poor servants. + But still I'm jist as able to be sorry for Mr. Wilks for not arriving +in time, all the same, if he's missed anything by it—which I hope he +hasn't." + +"Well, he don't miss any property by it, because he'll get that all +right; but he's missed seeing his brother Peter die—which he mayn't +mind, nobody can tell as to that—but his brother would a give anything +in this world to see him before he died; never talked about nothing +else all these three weeks; hadn't seen him since they was boys +together—and hadn't ever seen his brother William at all—that's the deef +and dumb one—William ain't more than thirty or thirty-five.  Peter and +George were the only ones that come out here; George was the married +brother; him and his wife both died last year.  Harvey and William's the +only ones that's left now; and, as I was saying, they haven't got here +in time." + +"Did anybody send 'em word?" + +"Oh, yes; a month or two ago, when Peter was first took; because Peter +said then that he sorter felt like he warn't going to get well this +time. You see, he was pretty old, and George's g'yirls was too young to +be much company for him, except Mary Jane, the red-headed one; and so he +was kinder lonesome after George and his wife died, and didn't seem +to care much to live.  He most desperately wanted to see Harvey—and +William, too, for that matter—because he was one of them kind that can't +bear to make a will.  He left a letter behind for Harvey, and said he'd +told in it where his money was hid, and how he wanted the rest of the +property divided up so George's g'yirls would be all right—for George +didn't leave nothing.  And that letter was all they could get him to put +a pen to." + +"Why do you reckon Harvey don't come?  Wher' does he live?" + +"Oh, he lives in England—Sheffield—preaches there—hasn't ever been in +this country.  He hasn't had any too much time—and besides he mightn't a +got the letter at all, you know." + +"Too bad, too bad he couldn't a lived to see his brothers, poor soul. +You going to Orleans, you say?" + +"Yes, but that ain't only a part of it.  I'm going in a ship, next +Wednesday, for Ryo Janeero, where my uncle lives." + +"It's a pretty long journey.  But it'll be lovely; wisht I was a-going. +Is Mary Jane the oldest?  How old is the others?" + +"Mary Jane's nineteen, Susan's fifteen, and Joanna's about +fourteen—that's the one that gives herself to good works and has a +hare-lip." + +"Poor things! to be left alone in the cold world so." + +"Well, they could be worse off.  Old Peter had friends, and they +ain't going to let them come to no harm.  There's Hobson, the Babtis' +preacher; and Deacon Lot Hovey, and Ben Rucker, and Abner Shackleford, +and Levi Bell, the lawyer; and Dr. Robinson, and their wives, and the +widow Bartley, and—well, there's a lot of them; but these are the ones +that Peter was thickest with, and used to write about sometimes, when +he wrote home; so Harvey 'll know where to look for friends when he gets +here." + +Well, the old man went on asking questions till he just fairly emptied +that young fellow.  Blamed if he didn't inquire about everybody and +everything in that blessed town, and all about the Wilkses; and about +Peter's business—which was a tanner; and about George's—which was a +carpenter; and about Harvey's—which was a dissentering minister; and so +on, and so on.  Then he says: + +"What did you want to walk all the way up to the steamboat for?" + +"Because she's a big Orleans boat, and I was afeard she mightn't stop +there.  When they're deep they won't stop for a hail.  A Cincinnati boat +will, but this is a St. Louis one." + +"Was Peter Wilks well off?" + +"Oh, yes, pretty well off.  He had houses and land, and it's reckoned he +left three or four thousand in cash hid up som'ers." + +"When did you say he died?" + +"I didn't say, but it was last night." + +"Funeral to-morrow, likely?" + +"Yes, 'bout the middle of the day." + +"Well, it's all terrible sad; but we've all got to go, one time or +another. So what we want to do is to be prepared; then we're all right." + +"Yes, sir, it's the best way.  Ma used to always say that." + +When we struck the boat she was about done loading, and pretty soon she +got off.  The king never said nothing about going aboard, so I lost +my ride, after all.  When the boat was gone the king made me paddle up +another mile to a lonesome place, and then he got ashore and says: + +"Now hustle back, right off, and fetch the duke up here, and the new +carpet-bags.  And if he's gone over to t'other side, go over there and +git him.  And tell him to git himself up regardless.  Shove along, now." + +I see what he was up to; but I never said nothing, of course.  When +I got back with the duke we hid the canoe, and then they set down on a +log, and the king told him everything, just like the young fellow had +said it—every last word of it.  And all the time he was a-doing it he +tried to talk like an Englishman; and he done it pretty well, too, for +a slouch. I can't imitate him, and so I ain't a-going to try to; but he +really done it pretty good.  Then he says: + +"How are you on the deef and dumb, Bilgewater?" + +The duke said, leave him alone for that; said he had played a deef +and dumb person on the histronic boards.  So then they waited for a +steamboat. + +About the middle of the afternoon a couple of little boats come along, +but they didn't come from high enough up the river; but at last there +was a big one, and they hailed her.  She sent out her yawl, and we went +aboard, and she was from Cincinnati; and when they found we only wanted +to go four or five mile they was booming mad, and gave us a cussing, and +said they wouldn't land us.  But the king was ca'm.  He says: + +"If gentlemen kin afford to pay a dollar a mile apiece to be took on and +put off in a yawl, a steamboat kin afford to carry 'em, can't it?" + +So they softened down and said it was all right; and when we got to the +village they yawled us ashore.  About two dozen men flocked down when +they see the yawl a-coming, and when the king says: + +"Kin any of you gentlemen tell me wher' Mr. Peter Wilks lives?" they +give a glance at one another, and nodded their heads, as much as to say, +"What d' I tell you?"  Then one of them says, kind of soft and gentle: + +"I'm sorry sir, but the best we can do is to tell you where he did +live yesterday evening." + +Sudden as winking the ornery old cretur went an to smash, and fell up +against the man, and put his chin on his shoulder, and cried down his +back, and says: + +"Alas, alas, our poor brother—gone, and we never got to see him; oh, +it's too, too hard!" + +Then he turns around, blubbering, and makes a lot of idiotic signs to +the duke on his hands, and blamed if he didn't drop a carpet-bag and +bust out a-crying.  If they warn't the beatenest lot, them two frauds, +that ever I struck. + +Well, the men gathered around and sympathized with them, and said all +sorts of kind things to them, and carried their carpet-bags up the hill +for them, and let them lean on them and cry, and told the king all about +his brother's last moments, and the king he told it all over again on +his hands to the duke, and both of them took on about that dead tanner +like they'd lost the twelve disciples.  Well, if ever I struck anything +like it, I'm a nigger. It was enough to make a body ashamed of the human +race. + + + + +CHAPTER XXV. + +THE news was all over town in two minutes, and you could see the people +tearing down on the run from every which way, some of them putting on +their coats as they come.  Pretty soon we was in the middle of a crowd, +and the noise of the tramping was like a soldier march.  The windows and +dooryards was full; and every minute somebody would say, over a fence: + +"Is it them?" + +And somebody trotting along with the gang would answer back and say: + +"You bet it is." + +When we got to the house the street in front of it was packed, and the +three girls was standing in the door.  Mary Jane was red-headed, but +that don't make no difference, she was most awful beautiful, and her +face and her eyes was all lit up like glory, she was so glad her uncles +was come. The king he spread his arms, and Mary Jane she jumped for +them, and the hare-lip jumped for the duke, and there they had it! + Everybody most, leastways women, cried for joy to see them meet again +at last and have such good times. + +Then the king he hunched the duke private—I see him do it—and then he +looked around and see the coffin, over in the corner on two chairs; so +then him and the duke, with a hand across each other's shoulder, and +t'other hand to their eyes, walked slow and solemn over there, everybody +dropping back to give them room, and all the talk and noise stopping, +people saying "Sh!" and all the men taking their hats off and drooping +their heads, so you could a heard a pin fall.  And when they got there +they bent over and looked in the coffin, and took one sight, and then +they bust out a-crying so you could a heard them to Orleans, most; and +then they put their arms around each other's necks, and hung their chins +over each other's shoulders; and then for three minutes, or maybe four, +I never see two men leak the way they done.  And, mind you, everybody +was doing the same; and the place was that damp I never see anything +like it. Then one of them got on one side of the coffin, and t'other on +t'other side, and they kneeled down and rested their foreheads on the +coffin, and let on to pray all to themselves.  Well, when it come +to that it worked the crowd like you never see anything like it, and +everybody broke down and went to sobbing right out loud—the poor girls, +too; and every woman, nearly, went up to the girls, without saying a +word, and kissed them, solemn, on the forehead, and then put their hand +on their head, and looked up towards the sky, with the tears running +down, and then busted out and went off sobbing and swabbing, and give +the next woman a show.  I never see anything so disgusting. + +Well, by and by the king he gets up and comes forward a little, and +works himself up and slobbers out a speech, all full of tears and +flapdoodle about its being a sore trial for him and his poor brother +to lose the diseased, and to miss seeing diseased alive after the long +journey of four thousand mile, but it's a trial that's sweetened and +sanctified to us by this dear sympathy and these holy tears, and so he +thanks them out of his heart and out of his brother's heart, because out +of their mouths they can't, words being too weak and cold, and all that +kind of rot and slush, till it was just sickening; and then he blubbers +out a pious goody-goody Amen, and turns himself loose and goes to crying +fit to bust. + +And the minute the words were out of his mouth somebody over in the +crowd struck up the doxolojer, and everybody joined in with all their +might, and it just warmed you up and made you feel as good as church +letting out. Music is a good thing; and after all that soul-butter and +hogwash I never see it freshen up things so, and sound so honest and +bully. + +Then the king begins to work his jaw again, and says how him and his +nieces would be glad if a few of the main principal friends of the +family would take supper here with them this evening, and help set up +with the ashes of the diseased; and says if his poor brother laying +yonder could speak he knows who he would name, for they was names that +was very dear to him, and mentioned often in his letters; and so he will +name the same, to wit, as follows, vizz.:—Rev. Mr. Hobson, and Deacon +Lot Hovey, and Mr. Ben Rucker, and Abner Shackleford, and Levi Bell, and +Dr. Robinson, and their wives, and the widow Bartley. + +Rev. Hobson and Dr. Robinson was down to the end of the town a-hunting +together—that is, I mean the doctor was shipping a sick man to t'other +world, and the preacher was pinting him right.  Lawyer Bell was away up +to Louisville on business.  But the rest was on hand, and so they all +come and shook hands with the king and thanked him and talked to him; +and then they shook hands with the duke and didn't say nothing, but just +kept a-smiling and bobbing their heads like a passel of sapheads whilst +he made all sorts of signs with his hands and said "Goo-goo—goo-goo-goo" +all the time, like a baby that can't talk. + +So the king he blattered along, and managed to inquire about pretty +much everybody and dog in town, by his name, and mentioned all sorts +of little things that happened one time or another in the town, or to +George's family, or to Peter.  And he always let on that Peter wrote him +the things; but that was a lie:  he got every blessed one of them out of +that young flathead that we canoed up to the steamboat. + +Then Mary Jane she fetched the letter her father left behind, and the +king he read it out loud and cried over it.  It give the dwelling-house +and three thousand dollars, gold, to the girls; and it give the tanyard +(which was doing a good business), along with some other houses and +land (worth about seven thousand), and three thousand dollars in gold +to Harvey and William, and told where the six thousand cash was hid down +cellar.  So these two frauds said they'd go and fetch it up, and have +everything square and above-board; and told me to come with a candle. + We shut the cellar door behind us, and when they found the bag +they spilt it out on the floor, and it was a lovely sight, all them +yaller-boys.  My, the way the king's eyes did shine!  He slaps the duke +on the shoulder and says: + +"Oh, this ain't bully nor noth'n!  Oh, no, I reckon not!  Why, +bully, it beats the Nonesuch, don't it?" + +The duke allowed it did.  They pawed the yaller-boys, and sifted them +through their fingers and let them jingle down on the floor; and the +king says: + +"It ain't no use talkin'; bein' brothers to a rich dead man and +representatives of furrin heirs that's got left is the line for you and +me, Bilge.  Thish yer comes of trust'n to Providence.  It's the best +way, in the long run.  I've tried 'em all, and ther' ain't no better +way." + +Most everybody would a been satisfied with the pile, and took it on +trust; but no, they must count it.  So they counts it, and it comes out +four hundred and fifteen dollars short.  Says the king: + +"Dern him, I wonder what he done with that four hundred and fifteen +dollars?" + +They worried over that awhile, and ransacked all around for it.  Then +the duke says: + +"Well, he was a pretty sick man, and likely he made a mistake—I reckon +that's the way of it.  The best way's to let it go, and keep still about +it.  We can spare it." + +"Oh, shucks, yes, we can spare it.  I don't k'yer noth'n 'bout +that—it's the count I'm thinkin' about.  We want to be awful square +and open and above-board here, you know.  We want to lug this h-yer +money up stairs and count it before everybody—then ther' ain't noth'n +suspicious.  But when the dead man says ther's six thous'n dollars, you +know, we don't want to—" + +"Hold on," says the duke.  "Le's make up the deffisit," and he begun to +haul out yaller-boys out of his pocket. + +"It's a most amaz'n' good idea, duke—you have got a rattlin' clever +head on you," says the king.  "Blest if the old Nonesuch ain't a heppin' +us out agin," and he begun to haul out yaller-jackets and stack them +up. + +It most busted them, but they made up the six thousand clean and clear. + +"Say," says the duke, "I got another idea.  Le's go up stairs and count +this money, and then take and give it to the girls." + +"Good land, duke, lemme hug you!  It's the most dazzling idea 'at ever a +man struck.  You have cert'nly got the most astonishin' head I ever see. +Oh, this is the boss dodge, ther' ain't no mistake 'bout it.  Let 'em +fetch along their suspicions now if they want to—this 'll lay 'em out." + +When we got up-stairs everybody gethered around the table, and the king +he counted it and stacked it up, three hundred dollars in a pile—twenty +elegant little piles.  Everybody looked hungry at it, and licked their +chops.  Then they raked it into the bag again, and I see the king begin +to swell himself up for another speech.  He says: + +"Friends all, my poor brother that lays yonder has done generous by +them that's left behind in the vale of sorrers.  He has done generous by +these yer poor little lambs that he loved and sheltered, and that's left +fatherless and motherless.  Yes, and we that knowed him knows that he +would a done more generous by 'em if he hadn't ben afeard o' woundin' +his dear William and me.  Now, wouldn't he?  Ther' ain't no question +'bout it in my mind.  Well, then, what kind o' brothers would it be +that 'd stand in his way at sech a time?  And what kind o' uncles would +it be that 'd rob—yes, rob—sech poor sweet lambs as these 'at he loved +so at sech a time?  If I know William—and I think I do—he—well, I'll +jest ask him." He turns around and begins to make a lot of signs to +the duke with his hands, and the duke he looks at him stupid and +leather-headed a while; then all of a sudden he seems to catch his +meaning, and jumps for the king, goo-gooing with all his might for joy, +and hugs him about fifteen times before he lets up.  Then the king says, +"I knowed it; I reckon that 'll convince anybody the way he feels +about it.  Here, Mary Jane, Susan, Joanner, take the money—take it +all.  It's the gift of him that lays yonder, cold but joyful." + +Mary Jane she went for him, Susan and the hare-lip went for the +duke, and then such another hugging and kissing I never see yet.  And +everybody crowded up with the tears in their eyes, and most shook the +hands off of them frauds, saying all the time: + +"You dear good souls!—how lovely!—how could you!" + +Well, then, pretty soon all hands got to talking about the diseased +again, and how good he was, and what a loss he was, and all that; and +before long a big iron-jawed man worked himself in there from outside, +and stood a-listening and looking, and not saying anything; and nobody +saying anything to him either, because the king was talking and they was +all busy listening.  The king was saying—in the middle of something he'd +started in on— + +"—they bein' partickler friends o' the diseased.  That's why they're +invited here this evenin'; but tomorrow we want all to come—everybody; +for he respected everybody, he liked everybody, and so it's fitten that +his funeral orgies sh'd be public." + +And so he went a-mooning on and on, liking to hear himself talk, and +every little while he fetched in his funeral orgies again, till the duke +he couldn't stand it no more; so he writes on a little scrap of paper, +"Obsequies, you old fool," and folds it up, and goes to goo-gooing and +reaching it over people's heads to him.  The king he reads it and puts +it in his pocket, and says: + +"Poor William, afflicted as he is, his heart's aluz right.  Asks me +to invite everybody to come to the funeral—wants me to make 'em all +welcome.  But he needn't a worried—it was jest what I was at." + +Then he weaves along again, perfectly ca'm, and goes to dropping in his +funeral orgies again every now and then, just like he done before.  And +when he done it the third time he says: + +"I say orgies, not because it's the common term, because it +ain't—obsequies bein' the common term—but because orgies is the right +term. Obsequies ain't used in England no more now—it's gone out.  We +say orgies now in England.  Orgies is better, because it means the thing +you're after more exact.  It's a word that's made up out'n the Greek +orgo, outside, open, abroad; and the Hebrew jeesum, to plant, cover +up; hence inter.  So, you see, funeral orgies is an open er public +funeral." + +He was the worst I ever struck.  Well, the iron-jawed man he laughed +right in his face.  Everybody was shocked.  Everybody says, "Why, +doctor!" and Abner Shackleford says: + +"Why, Robinson, hain't you heard the news?  This is Harvey Wilks." + +The king he smiled eager, and shoved out his flapper, and says: + +"Is it my poor brother's dear good friend and physician?  I—" + +"Keep your hands off of me!" says the doctor.  "You talk like an +Englishman, don't you?  It's the worst imitation I ever heard.  You +Peter Wilks's brother!  You're a fraud, that's what you are!" + +Well, how they all took on!  They crowded around the doctor and tried to +quiet him down, and tried to explain to him and tell him how Harvey 'd +showed in forty ways that he was Harvey, and knowed everybody by name, +and the names of the very dogs, and begged and begged him not to hurt +Harvey's feelings and the poor girl's feelings, and all that.  But it +warn't no use; he stormed right along, and said any man that pretended +to be an Englishman and couldn't imitate the lingo no better than what +he did was a fraud and a liar.  The poor girls was hanging to the king +and crying; and all of a sudden the doctor ups and turns on them.  He +says: + +"I was your father's friend, and I'm your friend; and I warn you as a +friend, and an honest one that wants to protect you and keep you out of +harm and trouble, to turn your backs on that scoundrel and have nothing +to do with him, the ignorant tramp, with his idiotic Greek and Hebrew, +as he calls it.  He is the thinnest kind of an impostor—has come here +with a lot of empty names and facts which he picked up somewheres, and +you take them for proofs, and are helped to fool yourselves by these +foolish friends here, who ought to know better.  Mary Jane Wilks, you +know me for your friend, and for your unselfish friend, too.  Now listen +to me; turn this pitiful rascal out—I beg you to do it.  Will you?" + +Mary Jane straightened herself up, and my, but she was handsome!  She +says: + +"Here is my answer."  She hove up the bag of money and put it in the +king's hands, and says, "Take this six thousand dollars, and invest for +me and my sisters any way you want to, and don't give us no receipt for +it." + +Then she put her arm around the king on one side, and Susan and the +hare-lip done the same on the other.  Everybody clapped their hands and +stomped on the floor like a perfect storm, whilst the king held up his +head and smiled proud.  The doctor says: + +"All right; I wash my hands of the matter.  But I warn you all that a +time 's coming when you're going to feel sick whenever you think of this +day." And away he went. + +"All right, doctor," says the king, kinder mocking him; "we'll try and +get 'em to send for you;" which made them all laugh, and they said it +was a prime good hit. + + + + +CHAPTER XXVI. + +WELL, when they was all gone the king he asks Mary Jane how they was off +for spare rooms, and she said she had one spare room, which would do for +Uncle William, and she'd give her own room to Uncle Harvey, which was +a little bigger, and she would turn into the room with her sisters and +sleep on a cot; and up garret was a little cubby, with a pallet in it. +The king said the cubby would do for his valley—meaning me. + +So Mary Jane took us up, and she showed them their rooms, which was +plain but nice.  She said she'd have her frocks and a lot of other traps +took out of her room if they was in Uncle Harvey's way, but he said +they warn't.  The frocks was hung along the wall, and before them was +a curtain made out of calico that hung down to the floor.  There was an +old hair trunk in one corner, and a guitar-box in another, and all sorts +of little knickknacks and jimcracks around, like girls brisken up a room +with.  The king said it was all the more homely and more pleasanter for +these fixings, and so don't disturb them.  The duke's room was pretty +small, but plenty good enough, and so was my cubby. + +That night they had a big supper, and all them men and women was there, +and I stood behind the king and the duke's chairs and waited on them, +and the niggers waited on the rest.  Mary Jane she set at the head of +the table, with Susan alongside of her, and said how bad the biscuits +was, and how mean the preserves was, and how ornery and tough the fried +chickens was—and all that kind of rot, the way women always do for to +force out compliments; and the people all knowed everything was tiptop, +and said so—said "How do you get biscuits to brown so nice?" and +"Where, for the land's sake, did you get these amaz'n pickles?" and +all that kind of humbug talky-talk, just the way people always does at a +supper, you know. + +And when it was all done me and the hare-lip had supper in the kitchen +off of the leavings, whilst the others was helping the niggers clean up +the things.  The hare-lip she got to pumping me about England, and blest +if I didn't think the ice was getting mighty thin sometimes.  She says: + +"Did you ever see the king?" + +"Who?  William Fourth?  Well, I bet I have—he goes to our church."  I +knowed he was dead years ago, but I never let on.  So when I says he +goes to our church, she says: + +"What—regular?" + +"Yes—regular.  His pew's right over opposite ourn—on t'other side the +pulpit." + +"I thought he lived in London?" + +"Well, he does.  Where would he live?" + +"But I thought you lived in Sheffield?" + +I see I was up a stump.  I had to let on to get choked with a chicken +bone, so as to get time to think how to get down again.  Then I says: + +"I mean he goes to our church regular when he's in Sheffield.  That's +only in the summer time, when he comes there to take the sea baths." + +"Why, how you talk—Sheffield ain't on the sea." + +"Well, who said it was?" + +"Why, you did." + +"I didn't nuther." + +"You did!" + +"I didn't." + +"You did." + +"I never said nothing of the kind." + +"Well, what did you say, then?" + +"Said he come to take the sea baths—that's what I said." + +"Well, then, how's he going to take the sea baths if it ain't on the +sea?" + +"Looky here," I says; "did you ever see any Congress-water?" + +"Yes." + +"Well, did you have to go to Congress to get it?" + +"Why, no." + +"Well, neither does William Fourth have to go to the sea to get a sea +bath." + +"How does he get it, then?" + +"Gets it the way people down here gets Congress-water—in barrels.  There +in the palace at Sheffield they've got furnaces, and he wants his water +hot.  They can't bile that amount of water away off there at the sea. +They haven't got no conveniences for it." + +"Oh, I see, now.  You might a said that in the first place and saved +time." + +When she said that I see I was out of the woods again, and so I was +comfortable and glad.  Next, she says: + +"Do you go to church, too?" + +"Yes—regular." + +"Where do you set?" + +"Why, in our pew." + +"Whose pew?" + +"Why, ourn—your Uncle Harvey's." + +"His'n?  What does he want with a pew?" + +"Wants it to set in.  What did you reckon he wanted with it?" + +"Why, I thought he'd be in the pulpit." + +Rot him, I forgot he was a preacher.  I see I was up a stump again, so I +played another chicken bone and got another think.  Then I says: + +"Blame it, do you suppose there ain't but one preacher to a church?" + +"Why, what do they want with more?" + +"What!—to preach before a king?  I never did see such a girl as you. +They don't have no less than seventeen." + +"Seventeen!  My land!  Why, I wouldn't set out such a string as that, +not if I never got to glory.  It must take 'em a week." + +"Shucks, they don't all of 'em preach the same day—only one of 'em." + +"Well, then, what does the rest of 'em do?" + +"Oh, nothing much.  Loll around, pass the plate—and one thing or +another.  But mainly they don't do nothing." + +"Well, then, what are they for?" + +"Why, they're for style.  Don't you know nothing?" + +"Well, I don't want to know no such foolishness as that.  How is +servants treated in England?  Do they treat 'em better 'n we treat our +niggers?" + +"No!  A servant ain't nobody there.  They treat them worse than dogs." + +"Don't they give 'em holidays, the way we do, Christmas and New Year's +week, and Fourth of July?" + +"Oh, just listen!  A body could tell you hain't ever been to England +by that.  Why, Hare-l—why, Joanna, they never see a holiday from year's +end to year's end; never go to the circus, nor theater, nor nigger +shows, nor nowheres." + +"Nor church?" + +"Nor church." + +"But you always went to church." + +Well, I was gone up again.  I forgot I was the old man's servant.  But +next minute I whirled in on a kind of an explanation how a valley was +different from a common servant and had to go to church whether he +wanted to or not, and set with the family, on account of its being the +law.  But I didn't do it pretty good, and when I got done I see she +warn't satisfied.  She says: + +"Honest injun, now, hain't you been telling me a lot of lies?" + +"Honest injun," says I. + +"None of it at all?" + +"None of it at all.  Not a lie in it," says I. + +"Lay your hand on this book and say it." + +I see it warn't nothing but a dictionary, so I laid my hand on it and +said it.  So then she looked a little better satisfied, and says: + +"Well, then, I'll believe some of it; but I hope to gracious if I'll +believe the rest." + +"What is it you won't believe, Joe?" says Mary Jane, stepping in with +Susan behind her.  "It ain't right nor kind for you to talk so to him, +and him a stranger and so far from his people.  How would you like to be +treated so?" + +"That's always your way, Maim—always sailing in to help somebody before +they're hurt.  I hain't done nothing to him.  He's told some stretchers, +I reckon, and I said I wouldn't swallow it all; and that's every bit +and grain I did say.  I reckon he can stand a little thing like that, +can't he?" + +"I don't care whether 'twas little or whether 'twas big; he's here in +our house and a stranger, and it wasn't good of you to say it.  If you +was in his place it would make you feel ashamed; and so you oughtn't to +say a thing to another person that will make them feel ashamed." + +"Why, Mam, he said—" + +"It don't make no difference what he said—that ain't the thing.  The +thing is for you to treat him kind, and not be saying things to make +him remember he ain't in his own country and amongst his own folks." + +I says to myself, this is a girl that I'm letting that old reptile rob +her of her money! + +Then Susan she waltzed in; and if you'll believe me, she did give +Hare-lip hark from the tomb! + +Says I to myself, and this is another one that I'm letting him rob her +of her money! + +Then Mary Jane she took another inning, and went in sweet and lovely +again—which was her way; but when she got done there warn't hardly +anything left o' poor Hare-lip.  So she hollered. + +"All right, then," says the other girls; "you just ask his pardon." + +She done it, too; and she done it beautiful.  She done it so beautiful +it was good to hear; and I wished I could tell her a thousand lies, so +she could do it again. + +I says to myself, this is another one that I'm letting him rob her of +her money.  And when she got through they all jest laid theirselves +out to make me feel at home and know I was amongst friends.  I felt so +ornery and low down and mean that I says to myself, my mind's made up; +I'll hive that money for them or bust. + +So then I lit out—for bed, I said, meaning some time or another.  When +I got by myself I went to thinking the thing over.  I says to myself, +shall I go to that doctor, private, and blow on these frauds?  No—that +won't do. He might tell who told him; then the king and the duke would +make it warm for me.  Shall I go, private, and tell Mary Jane?  No—I +dasn't do it. Her face would give them a hint, sure; they've got the +money, and they'd slide right out and get away with it.  If she was to +fetch in help I'd get mixed up in the business before it was done with, +I judge.  No; there ain't no good way but one.  I got to steal that +money, somehow; and I got to steal it some way that they won't suspicion +that I done it. They've got a good thing here, and they ain't a-going +to leave till they've played this family and this town for all they're +worth, so I'll find a chance time enough. I'll steal it and hide it; and +by and by, when I'm away down the river, I'll write a letter and tell +Mary Jane where it's hid.  But I better hive it tonight if I can, +because the doctor maybe hasn't let up as much as he lets on he has; he +might scare them out of here yet. + +So, thinks I, I'll go and search them rooms.  Upstairs the hall was +dark, but I found the duke's room, and started to paw around it with +my hands; but I recollected it wouldn't be much like the king to let +anybody else take care of that money but his own self; so then I went to +his room and begun to paw around there.  But I see I couldn't do nothing +without a candle, and I dasn't light one, of course.  So I judged I'd +got to do the other thing—lay for them and eavesdrop.  About that time +I hears their footsteps coming, and was going to skip under the bed; I +reached for it, but it wasn't where I thought it would be; but I touched +the curtain that hid Mary Jane's frocks, so I jumped in behind that and +snuggled in amongst the gowns, and stood there perfectly still. + +They come in and shut the door; and the first thing the duke done was to +get down and look under the bed.  Then I was glad I hadn't found the bed +when I wanted it.  And yet, you know, it's kind of natural to hide under +the bed when you are up to anything private.  They sets down then, and +the king says: + +"Well, what is it?  And cut it middlin' short, because it's better for +us to be down there a-whoopin' up the mournin' than up here givin' 'em a +chance to talk us over." + +"Well, this is it, Capet.  I ain't easy; I ain't comfortable.  That +doctor lays on my mind.  I wanted to know your plans.  I've got a +notion, and I think it's a sound one." + +"What is it, duke?" + +"That we better glide out of this before three in the morning, and clip +it down the river with what we've got.  Specially, seeing we got it so +easy—given back to us, flung at our heads, as you may say, when of +course we allowed to have to steal it back.  I'm for knocking off and +lighting out." + +That made me feel pretty bad.  About an hour or two ago it would a been +a little different, but now it made me feel bad and disappointed, The +king rips out and says: + +"What!  And not sell out the rest o' the property?  March off like +a passel of fools and leave eight or nine thous'n' dollars' worth o' +property layin' around jest sufferin' to be scooped in?—and all good, +salable stuff, too." + +The duke he grumbled; said the bag of gold was enough, and he didn't +want to go no deeper—didn't want to rob a lot of orphans of everything +they had. + +"Why, how you talk!" says the king.  "We sha'n't rob 'em of nothing at +all but jest this money.  The people that buys the property is the +suff'rers; because as soon 's it's found out 'at we didn't own it—which +won't be long after we've slid—the sale won't be valid, and it 'll all +go back to the estate.  These yer orphans 'll git their house back agin, +and that's enough for them; they're young and spry, and k'n easy +earn a livin'.  they ain't a-goin to suffer.  Why, jest think—there's +thous'n's and thous'n's that ain't nigh so well off.  Bless you, they +ain't got noth'n' to complain of." + +Well, the king he talked him blind; so at last he give in, and said all +right, but said he believed it was blamed foolishness to stay, and that +doctor hanging over them.  But the king says: + +"Cuss the doctor!  What do we k'yer for him?  Hain't we got all the +fools in town on our side?  And ain't that a big enough majority in any +town?" + +So they got ready to go down stairs again.  The duke says: + +"I don't think we put that money in a good place." + +That cheered me up.  I'd begun to think I warn't going to get a hint of +no kind to help me.  The king says: + +"Why?" + +"Because Mary Jane 'll be in mourning from this out; and first you know +the nigger that does up the rooms will get an order to box these duds +up and put 'em away; and do you reckon a nigger can run across money and +not borrow some of it?" + +"Your head's level agin, duke," says the king; and he comes a-fumbling +under the curtain two or three foot from where I was.  I stuck tight to +the wall and kept mighty still, though quivery; and I wondered what them +fellows would say to me if they catched me; and I tried to think what +I'd better do if they did catch me.  But the king he got the bag before +I could think more than about a half a thought, and he never suspicioned +I was around.  They took and shoved the bag through a rip in the straw +tick that was under the feather-bed, and crammed it in a foot or two +amongst the straw and said it was all right now, because a nigger only +makes up the feather-bed, and don't turn over the straw tick only about +twice a year, and so it warn't in no danger of getting stole now. + +But I knowed better.  I had it out of there before they was half-way +down stairs.  I groped along up to my cubby, and hid it there till I +could get a chance to do better.  I judged I better hide it outside +of the house somewheres, because if they missed it they would give the +house a good ransacking:  I knowed that very well.  Then I turned in, +with my clothes all on; but I couldn't a gone to sleep if I'd a wanted +to, I was in such a sweat to get through with the business.  By and by I +heard the king and the duke come up; so I rolled off my pallet and laid +with my chin at the top of my ladder, and waited to see if anything was +going to happen.  But nothing did. + +So I held on till all the late sounds had quit and the early ones hadn't +begun yet; and then I slipped down the ladder. + + + + +CHAPTER XXVII. + +I crept to their doors and listened; they was snoring.  So I tiptoed +along, and got down stairs all right.  There warn't a sound anywheres. + I peeped through a crack of the dining-room door, and see the men that +was watching the corpse all sound asleep on their chairs.  The door +was open into the parlor, where the corpse was laying, and there was a +candle in both rooms. I passed along, and the parlor door was open; but +I see there warn't nobody in there but the remainders of Peter; so I +shoved on by; but the front door was locked, and the key wasn't there. + Just then I heard somebody coming down the stairs, back behind me.  I +run in the parlor and took a swift look around, and the only place I +see to hide the bag was in the coffin.  The lid was shoved along about +a foot, showing the dead man's face down in there, with a wet cloth over +it, and his shroud on.  I tucked the money-bag in under the lid, just +down beyond where his hands was crossed, which made me creep, they was +so cold, and then I run back across the room and in behind the door. + +The person coming was Mary Jane.  She went to the coffin, very soft, and +kneeled down and looked in; then she put up her handkerchief, and I see +she begun to cry, though I couldn't hear her, and her back was to me.  I +slid out, and as I passed the dining-room I thought I'd make sure them +watchers hadn't seen me; so I looked through the crack, and everything +was all right.  They hadn't stirred. + +I slipped up to bed, feeling ruther blue, on accounts of the thing +playing out that way after I had took so much trouble and run so much +resk about it.  Says I, if it could stay where it is, all right; because +when we get down the river a hundred mile or two I could write back to +Mary Jane, and she could dig him up again and get it; but that ain't the +thing that's going to happen; the thing that's going to happen is, the +money 'll be found when they come to screw on the lid.  Then the king +'ll get it again, and it 'll be a long day before he gives anybody +another chance to smouch it from him. Of course I wanted to slide +down and get it out of there, but I dasn't try it.  Every minute it was +getting earlier now, and pretty soon some of them watchers would begin +to stir, and I might get catched—catched with six thousand dollars in my +hands that nobody hadn't hired me to take care of.  I don't wish to be +mixed up in no such business as that, I says to myself. + +When I got down stairs in the morning the parlor was shut up, and the +watchers was gone.  There warn't nobody around but the family and the +widow Bartley and our tribe.  I watched their faces to see if anything +had been happening, but I couldn't tell. + +Towards the middle of the day the undertaker come with his man, and they +set the coffin in the middle of the room on a couple of chairs, and then +set all our chairs in rows, and borrowed more from the neighbors till +the hall and the parlor and the dining-room was full.  I see the coffin +lid was the way it was before, but I dasn't go to look in under it, with +folks around. + +Then the people begun to flock in, and the beats and the girls took +seats in the front row at the head of the coffin, and for a half an hour +the people filed around slow, in single rank, and looked down at the +dead man's face a minute, and some dropped in a tear, and it was +all very still and solemn, only the girls and the beats holding +handkerchiefs to their eyes and keeping their heads bent, and sobbing a +little.  There warn't no other sound but the scraping of the feet on +the floor and blowing noses—because people always blows them more at a +funeral than they do at other places except church. + +When the place was packed full the undertaker he slid around in his +black gloves with his softy soothering ways, putting on the last +touches, and getting people and things all ship-shape and comfortable, +and making no more sound than a cat.  He never spoke; he moved people +around, he squeezed in late ones, he opened up passageways, and done +it with nods, and signs with his hands.  Then he took his place over +against the wall. He was the softest, glidingest, stealthiest man I ever +see; and there warn't no more smile to him than there is to a ham. + +They had borrowed a melodeum—a sick one; and when everything was ready +a young woman set down and worked it, and it was pretty skreeky and +colicky, and everybody joined in and sung, and Peter was the only one +that had a good thing, according to my notion.  Then the Reverend Hobson +opened up, slow and solemn, and begun to talk; and straight off the most +outrageous row busted out in the cellar a body ever heard; it was only +one dog, but he made a most powerful racket, and he kept it up right +along; the parson he had to stand there, over the coffin, and wait—you +couldn't hear yourself think.  It was right down awkward, and nobody +didn't seem to know what to do.  But pretty soon they see that +long-legged undertaker make a sign to the preacher as much as to say, +"Don't you worry—just depend on me."  Then he stooped down and begun +to glide along the wall, just his shoulders showing over the people's +heads.  So he glided along, and the powwow and racket getting more and +more outrageous all the time; and at last, when he had gone around two +sides of the room, he disappears down cellar.  Then in about two seconds +we heard a whack, and the dog he finished up with a most amazing howl or +two, and then everything was dead still, and the parson begun his solemn +talk where he left off.  In a minute or two here comes this undertaker's +back and shoulders gliding along the wall again; and so he glided and +glided around three sides of the room, and then rose up, and shaded his +mouth with his hands, and stretched his neck out towards the preacher, +over the people's heads, and says, in a kind of a coarse whisper, "He +had a rat!"  Then he drooped down and glided along the wall again to +his place.  You could see it was a great satisfaction to the people, +because naturally they wanted to know.  A little thing like that don't +cost nothing, and it's just the little things that makes a man to be +looked up to and liked.  There warn't no more popular man in town than +what that undertaker was. + +Well, the funeral sermon was very good, but pison long and tiresome; and +then the king he shoved in and got off some of his usual rubbage, and +at last the job was through, and the undertaker begun to sneak up on the +coffin with his screw-driver.  I was in a sweat then, and watched him +pretty keen. But he never meddled at all; just slid the lid along as +soft as mush, and screwed it down tight and fast.  So there I was!  I +didn't know whether the money was in there or not.  So, says I, s'pose +somebody has hogged that bag on the sly?—now how do I know whether +to write to Mary Jane or not? S'pose she dug him up and didn't find +nothing, what would she think of me? Blame it, I says, I might get +hunted up and jailed; I'd better lay low and keep dark, and not write at +all; the thing's awful mixed now; trying to better it, I've worsened it +a hundred times, and I wish to goodness I'd just let it alone, dad fetch +the whole business! + +They buried him, and we come back home, and I went to watching faces +again—I couldn't help it, and I couldn't rest easy.  But nothing come of +it; the faces didn't tell me nothing. + +The king he visited around in the evening, and sweetened everybody up, +and made himself ever so friendly; and he give out the idea that his +congregation over in England would be in a sweat about him, so he must +hurry and settle up the estate right away and leave for home.  He was +very sorry he was so pushed, and so was everybody; they wished he could +stay longer, but they said they could see it couldn't be done.  And he +said of course him and William would take the girls home with them; and +that pleased everybody too, because then the girls would be well fixed +and amongst their own relations; and it pleased the girls, too—tickled +them so they clean forgot they ever had a trouble in the world; and told +him to sell out as quick as he wanted to, they would be ready.  Them +poor things was that glad and happy it made my heart ache to see them +getting fooled and lied to so, but I didn't see no safe way for me to +chip in and change the general tune. + +Well, blamed if the king didn't bill the house and the niggers and all +the property for auction straight off—sale two days after the funeral; +but anybody could buy private beforehand if they wanted to. + +So the next day after the funeral, along about noon-time, the girls' joy +got the first jolt.  A couple of nigger traders come along, and the king +sold them the niggers reasonable, for three-day drafts as they called +it, and away they went, the two sons up the river to Memphis, and their +mother down the river to Orleans.  I thought them poor girls and them +niggers would break their hearts for grief; they cried around each +other, and took on so it most made me down sick to see it.  The girls +said they hadn't ever dreamed of seeing the family separated or sold +away from the town.  I can't ever get it out of my memory, the sight of +them poor miserable girls and niggers hanging around each other's necks +and crying; and I reckon I couldn't a stood it all, but would a had +to bust out and tell on our gang if I hadn't knowed the sale warn't no +account and the niggers would be back home in a week or two. + +The thing made a big stir in the town, too, and a good many come out +flatfooted and said it was scandalous to separate the mother and the +children that way.  It injured the frauds some; but the old fool he +bulled right along, spite of all the duke could say or do, and I tell +you the duke was powerful uneasy. + +Next day was auction day.  About broad day in the morning the king and +the duke come up in the garret and woke me up, and I see by their look +that there was trouble.  The king says: + +"Was you in my room night before last?" + +"No, your majesty"—which was the way I always called him when nobody but +our gang warn't around. + +"Was you in there yisterday er last night?" + +"No, your majesty." + +"Honor bright, now—no lies." + +"Honor bright, your majesty, I'm telling you the truth.  I hain't been +a-near your room since Miss Mary Jane took you and the duke and showed +it to you." + +The duke says: + +"Have you seen anybody else go in there?" + +"No, your grace, not as I remember, I believe." + +"Stop and think." + +I studied awhile and see my chance; then I says: + +"Well, I see the niggers go in there several times." + +Both of them gave a little jump, and looked like they hadn't ever +expected it, and then like they had.  Then the duke says: + +"What, all of them?" + +"No—leastways, not all at once—that is, I don't think I ever see them +all come out at once but just one time." + +"Hello!  When was that?" + +"It was the day we had the funeral.  In the morning.  It warn't early, +because I overslept.  I was just starting down the ladder, and I see +them." + +"Well, go on, go on!  What did they do?  How'd they act?" + +"They didn't do nothing.  And they didn't act anyway much, as fur as I +see. They tiptoed away; so I seen, easy enough, that they'd shoved in +there to do up your majesty's room, or something, s'posing you was up; +and found you warn't up, and so they was hoping to slide out of the +way of trouble without waking you up, if they hadn't already waked you +up." + +"Great guns, this is a go!" says the king; and both of them looked +pretty sick and tolerable silly.  They stood there a-thinking and +scratching their heads a minute, and the duke he bust into a kind of a +little raspy chuckle, and says: + +"It does beat all how neat the niggers played their hand.  They let on +to be sorry they was going out of this region!  And I believed they +was sorry, and so did you, and so did everybody.  Don't ever tell me +any more that a nigger ain't got any histrionic talent.  Why, the way +they played that thing it would fool anybody.  In my opinion, there's +a fortune in 'em.  If I had capital and a theater, I wouldn't want a +better lay-out than that—and here we've gone and sold 'em for a song. + Yes, and ain't privileged to sing the song yet.  Say, where is that +song—that draft?" + +"In the bank for to be collected.  Where would it be?" + +"Well, that's all right then, thank goodness." + +Says I, kind of timid-like: + +"Is something gone wrong?" + +The king whirls on me and rips out: + +"None o' your business!  You keep your head shet, and mind y'r own +affairs—if you got any.  Long as you're in this town don't you forgit +that—you hear?"  Then he says to the duke, "We got to jest swaller it +and say noth'n':  mum's the word for us." + +As they was starting down the ladder the duke he chuckles again, and +says: + +"Quick sales and small profits!  It's a good business—yes." + +The king snarls around on him and says: + +"I was trying to do for the best in sellin' 'em out so quick.  If the +profits has turned out to be none, lackin' considable, and none to +carry, is it my fault any more'n it's yourn?" + +"Well, they'd be in this house yet and we wouldn't if I could a got +my advice listened to." + +The king sassed back as much as was safe for him, and then swapped +around and lit into me again.  He give me down the banks for not +coming and telling him I see the niggers come out of his room acting +that way—said any fool would a knowed something was up.  And then +waltzed in and cussed himself awhile, and said it all come of him not +laying late and taking his natural rest that morning, and he'd be +blamed if he'd ever do it again.  So they went off a-jawing; and I felt +dreadful glad I'd worked it all off on to the niggers, and yet hadn't +done the niggers no harm by it. + + + + +CHAPTER XXVIII. + +BY and by it was getting-up time.  So I come down the ladder and started +for down-stairs; but as I come to the girls' room the door was open, and +I see Mary Jane setting by her old hair trunk, which was open and she'd +been packing things in it—getting ready to go to England.  But she +had stopped now with a folded gown in her lap, and had her face in her +hands, crying.  I felt awful bad to see it; of course anybody would.  I +went in there and says: + +"Miss Mary Jane, you can't a-bear to see people in trouble, and I +can't—most always.  Tell me about it." + +So she done it.  And it was the niggers—I just expected it.  She said +the beautiful trip to England was most about spoiled for her; she didn't +know how she was ever going to be happy there, knowing the mother and +the children warn't ever going to see each other no more—and then busted +out bitterer than ever, and flung up her hands, and says: + +"Oh, dear, dear, to think they ain't ever going to see each other any +more!" + +"But they will—and inside of two weeks—and I know it!" says I. + +Laws, it was out before I could think!  And before I could budge she +throws her arms around my neck and told me to say it again, say it +again, say it again! + +I see I had spoke too sudden and said too much, and was in a close +place. I asked her to let me think a minute; and she set there, very +impatient and excited and handsome, but looking kind of happy and +eased-up, like a person that's had a tooth pulled out.  So I went to +studying it out.  I says to myself, I reckon a body that ups and tells +the truth when he is in a tight place is taking considerable many resks, +though I ain't had no experience, and can't say for certain; but it +looks so to me, anyway; and yet here's a case where I'm blest if it +don't look to me like the truth is better and actuly safer than a lie. + I must lay it by in my mind, and think it over some time or other, it's +so kind of strange and unregular. I never see nothing like it.  Well, I +says to myself at last, I'm a-going to chance it; I'll up and tell the +truth this time, though it does seem most like setting down on a kag of +powder and touching it off just to see where you'll go to. Then I says: + +"Miss Mary Jane, is there any place out of town a little ways where you +could go and stay three or four days?" + +"Yes; Mr. Lothrop's.  Why?" + +"Never mind why yet.  If I'll tell you how I know the niggers will see +each other again inside of two weeks—here in this house—and prove how +I know it—will you go to Mr. Lothrop's and stay four days?" + +"Four days!" she says; "I'll stay a year!" + +"All right," I says, "I don't want nothing more out of you than just +your word—I druther have it than another man's kiss-the-Bible."  She +smiled and reddened up very sweet, and I says, "If you don't mind it, +I'll shut the door—and bolt it." + +Then I come back and set down again, and says: + +"Don't you holler.  Just set still and take it like a man.  I got to +tell the truth, and you want to brace up, Miss Mary, because it's a +bad kind, and going to be hard to take, but there ain't no help for +it.  These uncles of yourn ain't no uncles at all; they're a couple of +frauds—regular dead-beats.  There, now we're over the worst of it, you +can stand the rest middling easy." + +It jolted her up like everything, of course; but I was over the shoal +water now, so I went right along, her eyes a-blazing higher and higher +all the time, and told her every blame thing, from where we first struck +that young fool going up to the steamboat, clear through to where she +flung herself on to the king's breast at the front door and he kissed +her sixteen or seventeen times—and then up she jumps, with her face +afire like sunset, and says: + +"The brute!  Come, don't waste a minute—not a second—we'll have them +tarred and feathered, and flung in the river!" + +Says I: + +"Cert'nly.  But do you mean before you go to Mr. Lothrop's, or—" + +"Oh," she says, "what am I thinking about!" she says, and set right +down again.  "Don't mind what I said—please don't—you won't, now, +will you?" Laying her silky hand on mine in that kind of a way that +I said I would die first.  "I never thought, I was so stirred up," she +says; "now go on, and I won't do so any more.  You tell me what to do, +and whatever you say I'll do it." + +"Well," I says, "it's a rough gang, them two frauds, and I'm fixed so +I got to travel with them a while longer, whether I want to or not—I +druther not tell you why; and if you was to blow on them this town would +get me out of their claws, and I'd be all right; but there'd be another +person that you don't know about who'd be in big trouble.  Well, we +got to save him, hain't we?  Of course.  Well, then, we won't blow on +them." + +Saying them words put a good idea in my head.  I see how maybe I could +get me and Jim rid of the frauds; get them jailed here, and then leave. +But I didn't want to run the raft in the daytime without anybody aboard +to answer questions but me; so I didn't want the plan to begin working +till pretty late to-night.  I says: + +"Miss Mary Jane, I'll tell you what we'll do, and you won't have to stay +at Mr. Lothrop's so long, nuther.  How fur is it?" + +"A little short of four miles—right out in the country, back here." + +"Well, that 'll answer.  Now you go along out there, and lay low +till nine or half-past to-night, and then get them to fetch you home +again—tell them you've thought of something.  If you get here before +eleven put a candle in this window, and if I don't turn up wait till +eleven, and then if I don't turn up it means I'm gone, and out of the +way, and safe. Then you come out and spread the news around, and get +these beats jailed." + +"Good," she says, "I'll do it." + +"And if it just happens so that I don't get away, but get took up along +with them, you must up and say I told you the whole thing beforehand, +and you must stand by me all you can." + +"Stand by you! indeed I will.  They sha'n't touch a hair of your head!" +she says, and I see her nostrils spread and her eyes snap when she said +it, too. + +"If I get away I sha'n't be here," I says, "to prove these rapscallions +ain't your uncles, and I couldn't do it if I was here.  I could swear +they was beats and bummers, that's all, though that's worth something. +Well, there's others can do that better than what I can, and they're +people that ain't going to be doubted as quick as I'd be.  I'll tell you +how to find them.  Gimme a pencil and a piece of paper.  There—'Royal +Nonesuch, Bricksville.'  Put it away, and don't lose it.  When the +court wants to find out something about these two, let them send up to +Bricksville and say they've got the men that played the Royal Nonesuch, +and ask for some witnesses—why, you'll have that entire town down here +before you can hardly wink, Miss Mary.  And they'll come a-biling, too." + +I judged we had got everything fixed about right now.  So I says: + +"Just let the auction go right along, and don't worry.  Nobody don't +have to pay for the things they buy till a whole day after the auction +on accounts of the short notice, and they ain't going out of this till +they get that money; and the way we've fixed it the sale ain't going to +count, and they ain't going to get no money.  It's just like the way +it was with the niggers—it warn't no sale, and the niggers will be +back before long.  Why, they can't collect the money for the niggers +yet—they're in the worst kind of a fix, Miss Mary." + +"Well," she says, "I'll run down to breakfast now, and then I'll start +straight for Mr. Lothrop's." + +"'Deed, that ain't the ticket, Miss Mary Jane," I says, "by no manner +of means; go before breakfast." + +"Why?" + +"What did you reckon I wanted you to go at all for, Miss Mary?" + +"Well, I never thought—and come to think, I don't know.  What was it?" + +"Why, it's because you ain't one of these leather-face people.  I don't +want no better book than what your face is.  A body can set down and +read it off like coarse print.  Do you reckon you can go and face your +uncles when they come to kiss you good-morning, and never—" + +"There, there, don't!  Yes, I'll go before breakfast—I'll be glad to. +And leave my sisters with them?" + +"Yes; never mind about them.  They've got to stand it yet a while.  They +might suspicion something if all of you was to go.  I don't want you to +see them, nor your sisters, nor nobody in this town; if a neighbor was +to ask how is your uncles this morning your face would tell something. + No, you go right along, Miss Mary Jane, and I'll fix it with all of +them. I'll tell Miss Susan to give your love to your uncles and say +you've went away for a few hours for to get a little rest and change, or +to see a friend, and you'll be back to-night or early in the morning." + +"Gone to see a friend is all right, but I won't have my love given to +them." + +"Well, then, it sha'n't be."  It was well enough to tell her so—no +harm in it.  It was only a little thing to do, and no trouble; and it's +the little things that smooths people's roads the most, down here below; +it would make Mary Jane comfortable, and it wouldn't cost nothing.  Then +I says:  "There's one more thing—that bag of money." + +"Well, they've got that; and it makes me feel pretty silly to think +how they got it." + +"No, you're out, there.  They hain't got it." + +"Why, who's got it?" + +"I wish I knowed, but I don't.  I had it, because I stole it from +them; and I stole it to give to you; and I know where I hid it, but I'm +afraid it ain't there no more.  I'm awful sorry, Miss Mary Jane, I'm +just as sorry as I can be; but I done the best I could; I did honest.  I +come nigh getting caught, and I had to shove it into the first place I +come to, and run—and it warn't a good place." + +"Oh, stop blaming yourself—it's too bad to do it, and I won't allow +it—you couldn't help it; it wasn't your fault.  Where did you hide it?" + +I didn't want to set her to thinking about her troubles again; and I +couldn't seem to get my mouth to tell her what would make her see that +corpse laying in the coffin with that bag of money on his stomach.  So +for a minute I didn't say nothing; then I says: + +"I'd ruther not tell you where I put it, Miss Mary Jane, if you don't +mind letting me off; but I'll write it for you on a piece of paper, and +you can read it along the road to Mr. Lothrop's, if you want to.  Do you +reckon that 'll do?" + +"Oh, yes." + +So I wrote:  "I put it in the coffin.  It was in there when you was +crying there, away in the night.  I was behind the door, and I was +mighty sorry for you, Miss Mary Jane." + +It made my eyes water a little to remember her crying there all by +herself in the night, and them devils laying there right under her own +roof, shaming her and robbing her; and when I folded it up and give it +to her I see the water come into her eyes, too; and she shook me by the +hand, hard, and says: + +"Good-bye.  I'm going to do everything just as you've told me; and if +I don't ever see you again, I sha'n't ever forget you and I'll think of +you a many and a many a time, and I'll pray for you, too!"—and she was +gone. + +Pray for me!  I reckoned if she knowed me she'd take a job that was more +nearer her size.  But I bet she done it, just the same—she was just that +kind.  She had the grit to pray for Judus if she took the notion—there +warn't no back-down to her, I judge.  You may say what you want to, but +in my opinion she had more sand in her than any girl I ever see; in +my opinion she was just full of sand.  It sounds like flattery, but it +ain't no flattery.  And when it comes to beauty—and goodness, too—she +lays over them all.  I hain't ever seen her since that time that I see +her go out of that door; no, I hain't ever seen her since, but I reckon +I've thought of her a many and a many a million times, and of her saying +she would pray for me; and if ever I'd a thought it would do any good +for me to pray for her, blamed if I wouldn't a done it or bust. + +Well, Mary Jane she lit out the back way, I reckon; because nobody see +her go.  When I struck Susan and the hare-lip, I says: + +"What's the name of them people over on t'other side of the river that +you all goes to see sometimes?" + +They says: + +"There's several; but it's the Proctors, mainly." + +"That's the name," I says; "I most forgot it.  Well, Miss Mary Jane she +told me to tell you she's gone over there in a dreadful hurry—one of +them's sick." + +"Which one?" + +"I don't know; leastways, I kinder forget; but I thinks it's—" + +"Sakes alive, I hope it ain't Hanner?" + +"I'm sorry to say it," I says, "but Hanner's the very one." + +"My goodness, and she so well only last week!  Is she took bad?" + +"It ain't no name for it.  They set up with her all night, Miss Mary +Jane said, and they don't think she'll last many hours." + +"Only think of that, now!  What's the matter with her?" + +I couldn't think of anything reasonable, right off that way, so I says: + +"Mumps." + +"Mumps your granny!  They don't set up with people that's got the +mumps." + +"They don't, don't they?  You better bet they do with these mumps. + These mumps is different.  It's a new kind, Miss Mary Jane said." + +"How's it a new kind?" + +"Because it's mixed up with other things." + +"What other things?" + +"Well, measles, and whooping-cough, and erysiplas, and consumption, and +yaller janders, and brain-fever, and I don't know what all." + +"My land!  And they call it the mumps?" + +"That's what Miss Mary Jane said." + +"Well, what in the nation do they call it the mumps for?" + +"Why, because it is the mumps.  That's what it starts with." + +"Well, ther' ain't no sense in it.  A body might stump his toe, and take +pison, and fall down the well, and break his neck, and bust his brains +out, and somebody come along and ask what killed him, and some numskull +up and say, 'Why, he stumped his toe.'  Would ther' be any sense +in that? No.  And ther' ain't no sense in this, nuther.  Is it +ketching?" + +"Is it ketching?  Why, how you talk.  Is a harrow catching—in the +dark? If you don't hitch on to one tooth, you're bound to on another, +ain't you? And you can't get away with that tooth without fetching the +whole harrow along, can you?  Well, these kind of mumps is a kind of a +harrow, as you may say—and it ain't no slouch of a harrow, nuther, you +come to get it hitched on good." + +"Well, it's awful, I think," says the hare-lip.  "I'll go to Uncle +Harvey and—" + +"Oh, yes," I says, "I would.  Of course I would.  I wouldn't lose no +time." + +"Well, why wouldn't you?" + +"Just look at it a minute, and maybe you can see.  Hain't your uncles +obleegd to get along home to England as fast as they can?  And do you +reckon they'd be mean enough to go off and leave you to go all that +journey by yourselves?  you know they'll wait for you.  So fur, so +good. Your uncle Harvey's a preacher, ain't he?  Very well, then; is a +preacher going to deceive a steamboat clerk? is he going to deceive +a ship clerk?—so as to get them to let Miss Mary Jane go aboard?  Now +you know he ain't.  What will he do, then?  Why, he'll say, 'It's a +great pity, but my church matters has got to get along the best way they +can; for my niece has been exposed to the dreadful pluribus-unum mumps, +and so it's my bounden duty to set down here and wait the three months +it takes to show on her if she's got it.'  But never mind, if you think +it's best to tell your uncle Harvey—" + +"Shucks, and stay fooling around here when we could all be having good +times in England whilst we was waiting to find out whether Mary Jane's +got it or not?  Why, you talk like a muggins." + +"Well, anyway, maybe you'd better tell some of the neighbors." + +"Listen at that, now.  You do beat all for natural stupidness.  Can't +you see that they'd go and tell?  Ther' ain't no way but just to not +tell anybody at all." + +"Well, maybe you're right—yes, I judge you are right." + +"But I reckon we ought to tell Uncle Harvey she's gone out a while, +anyway, so he won't be uneasy about her?" + +"Yes, Miss Mary Jane she wanted you to do that.  She says, 'Tell them to +give Uncle Harvey and William my love and a kiss, and say I've run over +the river to see Mr.'—Mr.—what is the name of that rich family your +uncle Peter used to think so much of?—I mean the one that—" + +"Why, you must mean the Apthorps, ain't it?" + +"Of course; bother them kind of names, a body can't ever seem to +remember them, half the time, somehow.  Yes, she said, say she has run +over for to ask the Apthorps to be sure and come to the auction and buy +this house, because she allowed her uncle Peter would ruther they had +it than anybody else; and she's going to stick to them till they say +they'll come, and then, if she ain't too tired, she's coming home; and +if she is, she'll be home in the morning anyway.  She said, don't say +nothing about the Proctors, but only about the Apthorps—which 'll be +perfectly true, because she is going there to speak about their buying +the house; I know it, because she told me so herself." + +"All right," they said, and cleared out to lay for their uncles, and +give them the love and the kisses, and tell them the message. + +Everything was all right now.  The girls wouldn't say nothing because +they wanted to go to England; and the king and the duke would ruther +Mary Jane was off working for the auction than around in reach of +Doctor Robinson.  I felt very good; I judged I had done it pretty neat—I +reckoned Tom Sawyer couldn't a done it no neater himself.  Of course he +would a throwed more style into it, but I can't do that very handy, not +being brung up to it. + +Well, they held the auction in the public square, along towards the end +of the afternoon, and it strung along, and strung along, and the old man +he was on hand and looking his level pisonest, up there longside of the +auctioneer, and chipping in a little Scripture now and then, or a little +goody-goody saying of some kind, and the duke he was around goo-gooing +for sympathy all he knowed how, and just spreading himself generly. + +But by and by the thing dragged through, and everything was +sold—everything but a little old trifling lot in the graveyard.  So +they'd got to work that off—I never see such a girafft as the king was +for wanting to swallow everything.  Well, whilst they was at it a +steamboat landed, and in about two minutes up comes a crowd a-whooping +and yelling and laughing and carrying on, and singing out: + +"Here's your opposition line! here's your two sets o' heirs to old +Peter Wilks—and you pays your money and you takes your choice!" + + + + +CHAPTER XXIX. + +THEY was fetching a very nice-looking old gentleman along, and a +nice-looking younger one, with his right arm in a sling.  And, my souls, +how the people yelled and laughed, and kept it up.  But I didn't see no +joke about it, and I judged it would strain the duke and the king some +to see any.  I reckoned they'd turn pale.  But no, nary a pale did +they turn. The duke he never let on he suspicioned what was up, but +just went a goo-gooing around, happy and satisfied, like a jug that's +googling out buttermilk; and as for the king, he just gazed and gazed +down sorrowful on them new-comers like it give him the stomach-ache in +his very heart to think there could be such frauds and rascals in the +world.  Oh, he done it admirable.  Lots of the principal people +gethered around the king, to let him see they was on his side.  That old +gentleman that had just come looked all puzzled to death.  Pretty +soon he begun to speak, and I see straight off he pronounced like an +Englishman—not the king's way, though the king's was pretty good for +an imitation.  I can't give the old gent's words, nor I can't imitate +him; but he turned around to the crowd, and says, about like this: + +"This is a surprise to me which I wasn't looking for; and I'll +acknowledge, candid and frank, I ain't very well fixed to meet it and +answer it; for my brother and me has had misfortunes; he's broke his +arm, and our baggage got put off at a town above here last night in the +night by a mistake.  I am Peter Wilks' brother Harvey, and this is his +brother William, which can't hear nor speak—and can't even make signs to +amount to much, now't he's only got one hand to work them with.  We are +who we say we are; and in a day or two, when I get the baggage, I can +prove it. But up till then I won't say nothing more, but go to the hotel +and wait." + +So him and the new dummy started off; and the king he laughs, and +blethers out: + +"Broke his arm—very likely, ain't it?—and very convenient, too, +for a fraud that's got to make signs, and ain't learnt how.  Lost +their baggage! That's mighty good!—and mighty ingenious—under the +circumstances!" + +So he laughed again; and so did everybody else, except three or four, +or maybe half a dozen.  One of these was that doctor; another one was +a sharp-looking gentleman, with a carpet-bag of the old-fashioned kind +made out of carpet-stuff, that had just come off of the steamboat and +was talking to him in a low voice, and glancing towards the king now and +then and nodding their heads—it was Levi Bell, the lawyer that was gone +up to Louisville; and another one was a big rough husky that come along +and listened to all the old gentleman said, and was listening to the +king now. And when the king got done this husky up and says: + +"Say, looky here; if you are Harvey Wilks, when'd you come to this +town?" + +"The day before the funeral, friend," says the king. + +"But what time o' day?" + +"In the evenin'—'bout an hour er two before sundown." + +"How'd you come?" + +"I come down on the Susan Powell from Cincinnati." + +"Well, then, how'd you come to be up at the Pint in the mornin'—in a +canoe?" + +"I warn't up at the Pint in the mornin'." + +"It's a lie." + +Several of them jumped for him and begged him not to talk that way to an +old man and a preacher. + +"Preacher be hanged, he's a fraud and a liar.  He was up at the Pint +that mornin'.  I live up there, don't I?  Well, I was up there, and +he was up there.  I see him there.  He come in a canoe, along with Tim +Collins and a boy." + +The doctor he up and says: + +"Would you know the boy again if you was to see him, Hines?" + +"I reckon I would, but I don't know.  Why, yonder he is, now.  I know +him perfectly easy." + +It was me he pointed at.  The doctor says: + +"Neighbors, I don't know whether the new couple is frauds or not; but if +these two ain't frauds, I am an idiot, that's all.  I think it's our +duty to see that they don't get away from here till we've looked into +this thing. Come along, Hines; come along, the rest of you.  We'll take +these fellows to the tavern and affront them with t'other couple, and I +reckon we'll find out something before we get through." + +It was nuts for the crowd, though maybe not for the king's friends; so +we all started.  It was about sundown.  The doctor he led me along by +the hand, and was plenty kind enough, but he never let go my hand. + +We all got in a big room in the hotel, and lit up some candles, and +fetched in the new couple.  First, the doctor says: + +"I don't wish to be too hard on these two men, but I think they're +frauds, and they may have complices that we don't know nothing about. + If they have, won't the complices get away with that bag of gold Peter +Wilks left?  It ain't unlikely.  If these men ain't frauds, they won't +object to sending for that money and letting us keep it till they prove +they're all right—ain't that so?" + +Everybody agreed to that.  So I judged they had our gang in a pretty +tight place right at the outstart.  But the king he only looked +sorrowful, and says: + +"Gentlemen, I wish the money was there, for I ain't got no disposition +to throw anything in the way of a fair, open, out-and-out investigation +o' this misable business; but, alas, the money ain't there; you k'n send +and see, if you want to." + +"Where is it, then?" + +"Well, when my niece give it to me to keep for her I took and hid it +inside o' the straw tick o' my bed, not wishin' to bank it for the few +days we'd be here, and considerin' the bed a safe place, we not bein' +used to niggers, and suppos'n' 'em honest, like servants in England. + The niggers stole it the very next mornin' after I had went down +stairs; and when I sold 'em I hadn't missed the money yit, so they got +clean away with it.  My servant here k'n tell you 'bout it, gentlemen." + +The doctor and several said "Shucks!" and I see nobody didn't altogether +believe him.  One man asked me if I see the niggers steal it.  I said +no, but I see them sneaking out of the room and hustling away, and I +never thought nothing, only I reckoned they was afraid they had waked up +my master and was trying to get away before he made trouble with them. + That was all they asked me.  Then the doctor whirls on me and says: + +"Are you English, too?" + +I says yes; and him and some others laughed, and said, "Stuff!" + +Well, then they sailed in on the general investigation, and there we had +it, up and down, hour in, hour out, and nobody never said a word about +supper, nor ever seemed to think about it—and so they kept it up, and +kept it up; and it was the worst mixed-up thing you ever see.  They +made the king tell his yarn, and they made the old gentleman tell his'n; +and anybody but a lot of prejudiced chuckleheads would a seen that the +old gentleman was spinning truth and t'other one lies.  And by and by +they had me up to tell what I knowed.  The king he give me a left-handed +look out of the corner of his eye, and so I knowed enough to talk on the +right side.  I begun to tell about Sheffield, and how we lived there, +and all about the English Wilkses, and so on; but I didn't get pretty +fur till the doctor begun to laugh; and Levi Bell, the lawyer, says: + +"Set down, my boy; I wouldn't strain myself if I was you.  I reckon +you ain't used to lying, it don't seem to come handy; what you want is +practice.  You do it pretty awkward." + +I didn't care nothing for the compliment, but I was glad to be let off, +anyway. + +The doctor he started to say something, and turns and says: + +"If you'd been in town at first, Levi Bell—" The king broke in and +reached out his hand, and says: + +"Why, is this my poor dead brother's old friend that he's wrote so often +about?" + +The lawyer and him shook hands, and the lawyer smiled and looked +pleased, and they talked right along awhile, and then got to one side +and talked low; and at last the lawyer speaks up and says: + +"That 'll fix it.  I'll take the order and send it, along with your +brother's, and then they'll know it's all right." + +So they got some paper and a pen, and the king he set down and twisted +his head to one side, and chawed his tongue, and scrawled off something; +and then they give the pen to the duke—and then for the first time the +duke looked sick.  But he took the pen and wrote.  So then the lawyer +turns to the new old gentleman and says: + +"You and your brother please write a line or two and sign your names." + +The old gentleman wrote, but nobody couldn't read it.  The lawyer looked +powerful astonished, and says: + +"Well, it beats me"—and snaked a lot of old letters out of his pocket, +and examined them, and then examined the old man's writing, and then +them again; and then says:  "These old letters is from Harvey Wilks; +and here's these two handwritings, and anybody can see they didn't +write them" (the king and the duke looked sold and foolish, I tell +you, to see how the lawyer had took them in), "and here's this old +gentleman's hand writing, and anybody can tell, easy enough, he didn't +write them—fact is, the scratches he makes ain't properly writing at +all.  Now, here's some letters from—" + +The new old gentleman says: + +"If you please, let me explain.  Nobody can read my hand but my brother +there—so he copies for me.  It's his hand you've got there, not mine." + +"Well!" says the lawyer, "this is a state of things.  I've got some +of William's letters, too; so if you'll get him to write a line or so we +can com—" + +"He can't write with his left hand," says the old gentleman.  "If he +could use his right hand, you would see that he wrote his own letters +and mine too.  Look at both, please—they're by the same hand." + +The lawyer done it, and says: + +"I believe it's so—and if it ain't so, there's a heap stronger +resemblance than I'd noticed before, anyway.  Well, well, well!  I +thought we was right on the track of a solution, but it's gone to grass, +partly.  But anyway, one thing is proved—these two ain't either of 'em +Wilkses"—and he wagged his head towards the king and the duke. + +Well, what do you think?  That muleheaded old fool wouldn't give in +then! Indeed he wouldn't.  Said it warn't no fair test.  Said his +brother William was the cussedest joker in the world, and hadn't tried +to write—he see William was going to play one of his jokes the minute +he put the pen to paper.  And so he warmed up and went warbling and +warbling right along till he was actuly beginning to believe what he was +saying himself; but pretty soon the new gentleman broke in, and says: + +"I've thought of something.  Is there anybody here that helped to lay +out my br—helped to lay out the late Peter Wilks for burying?" + +"Yes," says somebody, "me and Ab Turner done it.  We're both here." + +Then the old man turns towards the king, and says: + +"Perhaps this gentleman can tell me what was tattooed on his breast?" + +Blamed if the king didn't have to brace up mighty quick, or he'd a +squshed down like a bluff bank that the river has cut under, it took +him so sudden; and, mind you, it was a thing that was calculated to make +most anybody sqush to get fetched such a solid one as that without any +notice, because how was he going to know what was tattooed on the man? + He whitened a little; he couldn't help it; and it was mighty still in +there, and everybody bending a little forwards and gazing at him.  Says +I to myself, now he'll throw up the sponge—there ain't no more use. + Well, did he?  A body can't hardly believe it, but he didn't.  I reckon +he thought he'd keep the thing up till he tired them people out, so +they'd thin out, and him and the duke could break loose and get away. + Anyway, he set there, and pretty soon he begun to smile, and says: + +"Mf!  It's a very tough question, ain't it!  yes, sir, I k'n +tell you what's tattooed on his breast.  It's jest a small, thin, blue +arrow—that's what it is; and if you don't look clost, you can't see it. + now what do you say—hey?" + +Well, I never see anything like that old blister for clean out-and-out +cheek. + +The new old gentleman turns brisk towards Ab Turner and his pard, and +his eye lights up like he judged he'd got the king this time, and +says: + +"There—you've heard what he said!  Was there any such mark on Peter +Wilks' breast?" + +Both of them spoke up and says: + +"We didn't see no such mark." + +"Good!" says the old gentleman.  "Now, what you did see on his breast +was a small dim P, and a B (which is an initial he dropped when he was +young), and a W, with dashes between them, so:  P—B—W"—and he marked +them that way on a piece of paper.  "Come, ain't that what you saw?" + +Both of them spoke up again, and says: + +"No, we didn't.  We never seen any marks at all." + +Well, everybody was in a state of mind now, and they sings out: + +"The whole bilin' of 'm 's frauds!  Le's duck 'em! le's drown 'em! +le's ride 'em on a rail!" and everybody was whooping at once, and there +was a rattling powwow.  But the lawyer he jumps on the table and yells, +and says: + +"Gentlemen—gentlemen!  Hear me just a word—just a single word—if you +please!  There's one way yet—let's go and dig up the corpse and look." + +That took them. + +"Hooray!" they all shouted, and was starting right off; but the lawyer +and the doctor sung out: + +"Hold on, hold on!  Collar all these four men and the boy, and fetch +them along, too!" + +"We'll do it!" they all shouted; "and if we don't find them marks we'll +lynch the whole gang!" + +I was scared, now, I tell you.  But there warn't no getting away, you +know. They gripped us all, and marched us right along, straight for the +graveyard, which was a mile and a half down the river, and the whole +town at our heels, for we made noise enough, and it was only nine in the +evening. + +As we went by our house I wished I hadn't sent Mary Jane out of town; +because now if I could tip her the wink she'd light out and save me, and +blow on our dead-beats. + +Well, we swarmed along down the river road, just carrying on like +wildcats; and to make it more scary the sky was darking up, and the +lightning beginning to wink and flitter, and the wind to shiver amongst +the leaves. This was the most awful trouble and most dangersome I ever +was in; and I was kinder stunned; everything was going so different from +what I had allowed for; stead of being fixed so I could take my own time +if I wanted to, and see all the fun, and have Mary Jane at my back to +save me and set me free when the close-fit come, here was nothing in the +world betwixt me and sudden death but just them tattoo-marks.  If they +didn't find them— + +I couldn't bear to think about it; and yet, somehow, I couldn't think +about nothing else.  It got darker and darker, and it was a beautiful +time to give the crowd the slip; but that big husky had me by the +wrist—Hines—and a body might as well try to give Goliar the slip.  He +dragged me right along, he was so excited, and I had to run to keep up. + +When they got there they swarmed into the graveyard and washed over it +like an overflow.  And when they got to the grave they found they had +about a hundred times as many shovels as they wanted, but nobody hadn't +thought to fetch a lantern.  But they sailed into digging anyway by the +flicker of the lightning, and sent a man to the nearest house, a half a +mile off, to borrow one. + +So they dug and dug like everything; and it got awful dark, and the rain +started, and the wind swished and swushed along, and the lightning come +brisker and brisker, and the thunder boomed; but them people never took +no notice of it, they was so full of this business; and one minute +you could see everything and every face in that big crowd, and the +shovelfuls of dirt sailing up out of the grave, and the next second the +dark wiped it all out, and you couldn't see nothing at all. + +At last they got out the coffin and begun to unscrew the lid, and then +such another crowding and shouldering and shoving as there was, to +scrouge in and get a sight, you never see; and in the dark, that way, it +was awful.  Hines he hurt my wrist dreadful pulling and tugging so, +and I reckon he clean forgot I was in the world, he was so excited and +panting. + +All of a sudden the lightning let go a perfect sluice of white glare, +and somebody sings out: + +"By the living jingo, here's the bag of gold on his breast!" + +Hines let out a whoop, like everybody else, and dropped my wrist and +give a big surge to bust his way in and get a look, and the way I lit +out and shinned for the road in the dark there ain't nobody can tell. + +I had the road all to myself, and I fairly flew—leastways, I had it all +to myself except the solid dark, and the now-and-then glares, and the +buzzing of the rain, and the thrashing of the wind, and the splitting of +the thunder; and sure as you are born I did clip it along! + +When I struck the town I see there warn't nobody out in the storm, so +I never hunted for no back streets, but humped it straight through the +main one; and when I begun to get towards our house I aimed my eye and +set it. No light there; the house all dark—which made me feel sorry and +disappointed, I didn't know why.  But at last, just as I was sailing by, +flash comes the light in Mary Jane's window! and my heart swelled up +sudden, like to bust; and the same second the house and all was behind +me in the dark, and wasn't ever going to be before me no more in this +world. She was the best girl I ever see, and had the most sand. + +The minute I was far enough above the town to see I could make the +towhead, I begun to look sharp for a boat to borrow, and the first +time the lightning showed me one that wasn't chained I snatched it and +shoved. It was a canoe, and warn't fastened with nothing but a rope. + The towhead was a rattling big distance off, away out there in the +middle of the river, but I didn't lose no time; and when I struck the +raft at last I was so fagged I would a just laid down to blow and gasp +if I could afforded it.  But I didn't.  As I sprung aboard I sung out: + +"Out with you, Jim, and set her loose!  Glory be to goodness, we're shut +of them!" + +Jim lit out, and was a-coming for me with both arms spread, he was so +full of joy; but when I glimpsed him in the lightning my heart shot up +in my mouth and I went overboard backwards; for I forgot he was old King +Lear and a drownded A-rab all in one, and it most scared the livers and +lights out of me.  But Jim fished me out, and was going to hug me and +bless me, and so on, he was so glad I was back and we was shut of the +king and the duke, but I says: + +"Not now; have it for breakfast, have it for breakfast!  Cut loose and +let her slide!" + +So in two seconds away we went a-sliding down the river, and it did +seem so good to be free again and all by ourselves on the big river, and +nobody to bother us.  I had to skip around a bit, and jump up and crack +my heels a few times—I couldn't help it; but about the third crack +I noticed a sound that I knowed mighty well, and held my breath and +listened and waited; and sure enough, when the next flash busted out +over the water, here they come!—and just a-laying to their oars and +making their skiff hum!  It was the king and the duke. + +So I wilted right down on to the planks then, and give up; and it was +all I could do to keep from crying. + + + + +CHAPTER XXX. + +WHEN they got aboard the king went for me, and shook me by the collar, +and says: + +"Tryin' to give us the slip, was ye, you pup!  Tired of our company, +hey?" + +I says: + +"No, your majesty, we warn't—please don't, your majesty!" + +"Quick, then, and tell us what was your idea, or I'll shake the +insides out o' you!" + +"Honest, I'll tell you everything just as it happened, your majesty. + The man that had a-holt of me was very good to me, and kept saying he +had a boy about as big as me that died last year, and he was sorry +to see a boy in such a dangerous fix; and when they was all took by +surprise by finding the gold, and made a rush for the coffin, he lets go +of me and whispers, 'Heel it now, or they'll hang ye, sure!' and I lit +out.  It didn't seem no good for me to stay—I couldn't do nothing, +and I didn't want to be hung if I could get away.  So I never stopped +running till I found the canoe; and when I got here I told Jim to hurry, +or they'd catch me and hang me yet, and said I was afeard you and the +duke wasn't alive now, and I was awful sorry, and so was Jim, and was +awful glad when we see you coming; you may ask Jim if I didn't." + +Jim said it was so; and the king told him to shut up, and said, "Oh, +yes, it's mighty likely!" and shook me up again, and said he reckoned +he'd drownd me.  But the duke says: + +"Leggo the boy, you old idiot!  Would you a done any different?  Did +you inquire around for him when you got loose?  I don't remember it." + +So the king let go of me, and begun to cuss that town and everybody in +it. But the duke says: + +"You better a blame' sight give yourself a good cussing, for you're +the one that's entitled to it most.  You hain't done a thing from the +start that had any sense in it, except coming out so cool and cheeky +with that imaginary blue-arrow mark.  That was bright—it was right +down bully; and it was the thing that saved us.  For if it hadn't been +for that they'd a jailed us till them Englishmen's baggage come—and +then—the penitentiary, you bet! But that trick took 'em to the +graveyard, and the gold done us a still bigger kindness; for if the +excited fools hadn't let go all holts and made that rush to get a +look we'd a slept in our cravats to-night—cravats warranted to wear, +too—longer than we'd need 'em." + +They was still a minute—thinking; then the king says, kind of +absent-minded like: + +"Mf!  And we reckoned the niggers stole it!" + +That made me squirm! + +"Yes," says the duke, kinder slow and deliberate and sarcastic, "we +did." + +After about a half a minute the king drawls out: + +"Leastways, I did." + +The duke says, the same way: + +"On the contrary, I did." + +The king kind of ruffles up, and says: + +"Looky here, Bilgewater, what'r you referrin' to?" + +The duke says, pretty brisk: + +"When it comes to that, maybe you'll let me ask, what was you +referring to?" + +"Shucks!" says the king, very sarcastic; "but I don't know—maybe you was +asleep, and didn't know what you was about." + +The duke bristles up now, and says: + +"Oh, let up on this cussed nonsense; do you take me for a blame' fool? +Don't you reckon I know who hid that money in that coffin?" + +"Yes, sir!  I know you do know, because you done it yourself!" + +"It's a lie!"—and the duke went for him.  The king sings out: + +"Take y'r hands off!—leggo my throat!—I take it all back!" + +The duke says: + +"Well, you just own up, first, that you did hide that money there, +intending to give me the slip one of these days, and come back and dig +it up, and have it all to yourself." + +"Wait jest a minute, duke—answer me this one question, honest and fair; +if you didn't put the money there, say it, and I'll b'lieve you, and +take back everything I said." + +"You old scoundrel, I didn't, and you know I didn't.  There, now!" + +"Well, then, I b'lieve you.  But answer me only jest this one more—now +don't git mad; didn't you have it in your mind to hook the money and +hide it?" + +The duke never said nothing for a little bit; then he says: + +"Well, I don't care if I did, I didn't do it, anyway.  But you not +only had it in mind to do it, but you done it." + +"I wisht I never die if I done it, duke, and that's honest.  I won't say +I warn't goin' to do it, because I was; but you—I mean somebody—got in +ahead o' me." + +"It's a lie!  You done it, and you got to say you done it, or—" + +The king began to gurgle, and then he gasps out: + +"'Nough!—I own up!" + +I was very glad to hear him say that; it made me feel much more easier +than what I was feeling before.  So the duke took his hands off and +says: + +"If you ever deny it again I'll drown you.  It's well for you to set +there and blubber like a baby—it's fitten for you, after the way +you've acted. I never see such an old ostrich for wanting to gobble +everything—and I a-trusting you all the time, like you was my own +father.  You ought to been ashamed of yourself to stand by and hear it +saddled on to a lot of poor niggers, and you never say a word for 'em. + It makes me feel ridiculous to think I was soft enough to believe +that rubbage.  Cuss you, I can see now why you was so anxious to make +up the deffisit—you wanted to get what money I'd got out of the Nonesuch +and one thing or another, and scoop it all!" + +The king says, timid, and still a-snuffling: + +"Why, duke, it was you that said make up the deffisit; it warn't me." + +"Dry up!  I don't want to hear no more out of you!" says the duke.  "And +now you see what you GOT by it.  They've got all their own money back, +and all of ourn but a shekel or two besides.  G'long to bed, and +don't you deffersit me no more deffersits, long 's you live!" + +So the king sneaked into the wigwam and took to his bottle for comfort, +and before long the duke tackled HIS bottle; and so in about a half an +hour they was as thick as thieves again, and the tighter they got the +lovinger they got, and went off a-snoring in each other's arms.  They +both got powerful mellow, but I noticed the king didn't get mellow +enough to forget to remember to not deny about hiding the money-bag +again.  That made me feel easy and satisfied.  Of course when they got +to snoring we had a long gabble, and I told Jim everything. + + + + +CHAPTER XXXI. + +WE dasn't stop again at any town for days and days; kept right along +down the river.  We was down south in the warm weather now, and a mighty +long ways from home.  We begun to come to trees with Spanish moss on +them, hanging down from the limbs like long, gray beards.  It was the +first I ever see it growing, and it made the woods look solemn and +dismal.  So now the frauds reckoned they was out of danger, and they +begun to work the villages again. + +First they done a lecture on temperance; but they didn't make enough +for them both to get drunk on.  Then in another village they started +a dancing-school; but they didn't know no more how to dance than a +kangaroo does; so the first prance they made the general public jumped +in and pranced them out of town.  Another time they tried to go at +yellocution; but they didn't yellocute long till the audience got up and +give them a solid good cussing, and made them skip out.  They tackled +missionarying, and mesmerizing, and doctoring, and telling fortunes, and +a little of everything; but they couldn't seem to have no luck.  So at +last they got just about dead broke, and laid around the raft as she +floated along, thinking and thinking, and never saying nothing, by the +half a day at a time, and dreadful blue and desperate. + +And at last they took a change and begun to lay their heads together in +the wigwam and talk low and confidential two or three hours at a time. +Jim and me got uneasy.  We didn't like the look of it.  We judged they +was studying up some kind of worse deviltry than ever.  We turned it +over and over, and at last we made up our minds they was going to break +into somebody's house or store, or was going into the counterfeit-money +business, or something. So then we was pretty scared, and made up an +agreement that we wouldn't have nothing in the world to do with such +actions, and if we ever got the least show we would give them the cold +shake and clear out and leave them behind. Well, early one morning we +hid the raft in a good, safe place about two mile below a little bit of +a shabby village named Pikesville, and the king he went ashore and told +us all to stay hid whilst he went up to town and smelt around to see +if anybody had got any wind of the Royal Nonesuch there yet. ("House to +rob, you mean," says I to myself; "and when you get through robbing it +you'll come back here and wonder what has become of me and Jim and the +raft—and you'll have to take it out in wondering.") And he said if he +warn't back by midday the duke and me would know it was all right, and +we was to come along. + +So we stayed where we was.  The duke he fretted and sweated around, and +was in a mighty sour way.  He scolded us for everything, and we couldn't +seem to do nothing right; he found fault with every little thing. +Something was a-brewing, sure.  I was good and glad when midday come +and no king; we could have a change, anyway—and maybe a chance for the +change on top of it.  So me and the duke went up to the village, and +hunted around there for the king, and by and by we found him in the +back room of a little low doggery, very tight, and a lot of loafers +bullyragging him for sport, and he a-cussing and a-threatening with all +his might, and so tight he couldn't walk, and couldn't do nothing to +them.  The duke he begun to abuse him for an old fool, and the king +begun to sass back, and the minute they was fairly at it I lit out and +shook the reefs out of my hind legs, and spun down the river road like +a deer, for I see our chance; and I made up my mind that it would be a +long day before they ever see me and Jim again.  I got down there all +out of breath but loaded up with joy, and sung out: + +"Set her loose, Jim! we're all right now!" + +But there warn't no answer, and nobody come out of the wigwam.  Jim was +gone!  I set up a shout—and then another—and then another one; and run +this way and that in the woods, whooping and screeching; but it warn't +no use—old Jim was gone.  Then I set down and cried; I couldn't help +it. But I couldn't set still long.  Pretty soon I went out on the road, +trying to think what I better do, and I run across a boy walking, and +asked him if he'd seen a strange nigger dressed so and so, and he says: + +"Yes." + +"Whereabouts?" says I. + +"Down to Silas Phelps' place, two mile below here.  He's a runaway +nigger, and they've got him.  Was you looking for him?" + +"You bet I ain't!  I run across him in the woods about an hour or two +ago, and he said if I hollered he'd cut my livers out—and told me to lay +down and stay where I was; and I done it.  Been there ever since; afeard +to come out." + +"Well," he says, "you needn't be afeard no more, becuz they've got him. +He run off f'm down South, som'ers." + +"It's a good job they got him." + +"Well, I reckon!  There's two hunderd dollars reward on him.  It's +like picking up money out'n the road." + +"Yes, it is—and I could a had it if I'd been big enough; I see him +first. Who nailed him?" + +"It was an old fellow—a stranger—and he sold out his chance in him for +forty dollars, becuz he's got to go up the river and can't wait.  Think +o' that, now!  You bet I'd wait, if it was seven year." + +"That's me, every time," says I.  "But maybe his chance ain't worth +no more than that, if he'll sell it so cheap.  Maybe there's something +ain't straight about it." + +"But it is, though—straight as a string.  I see the handbill myself. + It tells all about him, to a dot—paints him like a picture, and tells +the plantation he's frum, below Newrleans.  No-sirree-bob, they +ain't no trouble 'bout that speculation, you bet you.  Say, gimme a +chaw tobacker, won't ye?" + +I didn't have none, so he left.  I went to the raft, and set down in the +wigwam to think.  But I couldn't come to nothing.  I thought till I wore +my head sore, but I couldn't see no way out of the trouble.  After all +this long journey, and after all we'd done for them scoundrels, here it +was all come to nothing, everything all busted up and ruined, because +they could have the heart to serve Jim such a trick as that, and make +him a slave again all his life, and amongst strangers, too, for forty +dirty dollars. + +Once I said to myself it would be a thousand times better for Jim to +be a slave at home where his family was, as long as he'd got to be a +slave, and so I'd better write a letter to Tom Sawyer and tell him to +tell Miss Watson where he was.  But I soon give up that notion for two +things: she'd be mad and disgusted at his rascality and ungratefulness +for leaving her, and so she'd sell him straight down the river again; +and if she didn't, everybody naturally despises an ungrateful nigger, +and they'd make Jim feel it all the time, and so he'd feel ornery and +disgraced. And then think of me!  It would get all around that Huck +Finn helped a nigger to get his freedom; and if I was ever to see +anybody from that town again I'd be ready to get down and lick his boots +for shame.  That's just the way:  a person does a low-down thing, and +then he don't want to take no consequences of it. Thinks as long as he +can hide it, it ain't no disgrace.  That was my fix exactly. The more I +studied about this the more my conscience went to grinding me, and the +more wicked and low-down and ornery I got to feeling. And at last, when +it hit me all of a sudden that here was the plain hand of Providence +slapping me in the face and letting me know my wickedness was being +watched all the time from up there in heaven, whilst I was stealing a +poor old woman's nigger that hadn't ever done me no harm, and now was +showing me there's One that's always on the lookout, and ain't a-going +to allow no such miserable doings to go only just so fur and no further, +I most dropped in my tracks I was so scared.  Well, I tried the best I +could to kinder soften it up somehow for myself by saying I was brung +up wicked, and so I warn't so much to blame; but something inside of me +kept saying, "There was the Sunday-school, you could a gone to it; and +if you'd a done it they'd a learnt you there that people that acts as +I'd been acting about that nigger goes to everlasting fire." + +It made me shiver.  And I about made up my mind to pray, and see if I +couldn't try to quit being the kind of a boy I was and be better.  So +I kneeled down.  But the words wouldn't come.  Why wouldn't they?  It +warn't no use to try and hide it from Him.  Nor from me, neither.  I +knowed very well why they wouldn't come.  It was because my heart warn't +right; it was because I warn't square; it was because I was playing +double.  I was letting on to give up sin, but away inside of me I was +holding on to the biggest one of all.  I was trying to make my mouth +say I would do the right thing and the clean thing, and go and write +to that nigger's owner and tell where he was; but deep down in me I +knowed it was a lie, and He knowed it.  You can't pray a lie—I found +that out. + +So I was full of trouble, full as I could be; and didn't know what to +do. At last I had an idea; and I says, I'll go and write the letter—and +then see if I can pray.  Why, it was astonishing, the way I felt as +light as a feather right straight off, and my troubles all gone.  So I +got a piece of paper and a pencil, all glad and excited, and set down +and wrote: + +Miss Watson, your runaway nigger Jim is down here two mile below +Pikesville, and Mr. Phelps has got him and he will give him up for the +reward if you send. + +Huck Finn. + +I felt good and all washed clean of sin for the first time I had ever +felt so in my life, and I knowed I could pray now.  But I didn't do it +straight off, but laid the paper down and set there thinking—thinking +how good it was all this happened so, and how near I come to being lost +and going to hell.  And went on thinking.  And got to thinking over our +trip down the river; and I see Jim before me all the time:  in the day +and in the night-time, sometimes moonlight, sometimes storms, and we +a-floating along, talking and singing and laughing.  But somehow I +couldn't seem to strike no places to harden me against him, but only the +other kind.  I'd see him standing my watch on top of his'n, 'stead of +calling me, so I could go on sleeping; and see him how glad he was when +I come back out of the fog; and when I come to him again in the swamp, +up there where the feud was; and such-like times; and would always call +me honey, and pet me and do everything he could think of for me, and how +good he always was; and at last I struck the time I saved him by telling +the men we had small-pox aboard, and he was so grateful, and said I was +the best friend old Jim ever had in the world, and the only one he's +got now; and then I happened to look around and see that paper. + +It was a close place.  I took it up, and held it in my hand.  I was +a-trembling, because I'd got to decide, forever, betwixt two things, and +I knowed it.  I studied a minute, sort of holding my breath, and then +says to myself: + +"All right, then, I'll go to hell"—and tore it up. + +It was awful thoughts and awful words, but they was said.  And I let +them stay said; and never thought no more about reforming.  I shoved the +whole thing out of my head, and said I would take up wickedness again, +which was in my line, being brung up to it, and the other warn't.  And +for a starter I would go to work and steal Jim out of slavery again; +and if I could think up anything worse, I would do that, too; because as +long as I was in, and in for good, I might as well go the whole hog. + +Then I set to thinking over how to get at it, and turned over some +considerable many ways in my mind; and at last fixed up a plan that +suited me.  So then I took the bearings of a woody island that was down +the river a piece, and as soon as it was fairly dark I crept out with my +raft and went for it, and hid it there, and then turned in.  I slept the +night through, and got up before it was light, and had my breakfast, +and put on my store clothes, and tied up some others and one thing or +another in a bundle, and took the canoe and cleared for shore.  I landed +below where I judged was Phelps's place, and hid my bundle in the woods, +and then filled up the canoe with water, and loaded rocks into her and +sunk her where I could find her again when I wanted her, about a quarter +of a mile below a little steam sawmill that was on the bank. + +Then I struck up the road, and when I passed the mill I see a sign on +it, "Phelps's Sawmill," and when I come to the farm-houses, two or +three hundred yards further along, I kept my eyes peeled, but didn't +see nobody around, though it was good daylight now.  But I didn't mind, +because I didn't want to see nobody just yet—I only wanted to get the +lay of the land. According to my plan, I was going to turn up there from +the village, not from below.  So I just took a look, and shoved along, +straight for town. Well, the very first man I see when I got there was +the duke.  He was sticking up a bill for the Royal Nonesuch—three-night +performance—like that other time.  They had the cheek, them frauds!  I +was right on him before I could shirk.  He looked astonished, and says: + +"Hel-lo!  Where'd you come from?"  Then he says, kind of glad and +eager, "Where's the raft?—got her in a good place?" + +I says: + +"Why, that's just what I was going to ask your grace." + +Then he didn't look so joyful, and says: + +"What was your idea for asking me?" he says. + +"Well," I says, "when I see the king in that doggery yesterday I says +to myself, we can't get him home for hours, till he's soberer; so I went +a-loafing around town to put in the time and wait.  A man up and offered +me ten cents to help him pull a skiff over the river and back to fetch +a sheep, and so I went along; but when we was dragging him to the boat, +and the man left me a-holt of the rope and went behind him to shove him +along, he was too strong for me and jerked loose and run, and we after +him.  We didn't have no dog, and so we had to chase him all over the +country till we tired him out.  We never got him till dark; then we +fetched him over, and I started down for the raft.  When I got there and +see it was gone, I says to myself, 'They've got into trouble and had to +leave; and they've took my nigger, which is the only nigger I've got in +the world, and now I'm in a strange country, and ain't got no property +no more, nor nothing, and no way to make my living;' so I set down and +cried.  I slept in the woods all night.  But what did become of the +raft, then?—and Jim—poor Jim!" + +"Blamed if I know—that is, what's become of the raft.  That old fool had +made a trade and got forty dollars, and when we found him in the doggery +the loafers had matched half-dollars with him and got every cent but +what he'd spent for whisky; and when I got him home late last night and +found the raft gone, we said, 'That little rascal has stole our raft and +shook us, and run off down the river.'" + +"I wouldn't shake my nigger, would I?—the only nigger I had in the +world, and the only property." + +"We never thought of that.  Fact is, I reckon we'd come to consider him +our nigger; yes, we did consider him so—goodness knows we had trouble +enough for him.  So when we see the raft was gone and we flat broke, +there warn't anything for it but to try the Royal Nonesuch another +shake. And I've pegged along ever since, dry as a powder-horn.  Where's +that ten cents? Give it here." + +I had considerable money, so I give him ten cents, but begged him to +spend it for something to eat, and give me some, because it was all the +money I had, and I hadn't had nothing to eat since yesterday.  He never +said nothing.  The next minute he whirls on me and says: + +"Do you reckon that nigger would blow on us?  We'd skin him if he done +that!" + +"How can he blow?  Hain't he run off?" + +"No!  That old fool sold him, and never divided with me, and the money's +gone." + +"Sold him?"  I says, and begun to cry; "why, he was my nigger, and +that was my money.  Where is he?—I want my nigger." + +"Well, you can't get your nigger, that's all—so dry up your +blubbering. Looky here—do you think you'd venture to blow on us? + Blamed if I think I'd trust you.  Why, if you was to blow on us—" + +He stopped, but I never see the duke look so ugly out of his eyes +before. I went on a-whimpering, and says: + +"I don't want to blow on nobody; and I ain't got no time to blow, nohow. +I got to turn out and find my nigger." + +He looked kinder bothered, and stood there with his bills fluttering on +his arm, thinking, and wrinkling up his forehead.  At last he says: + +"I'll tell you something.  We got to be here three days.  If you'll +promise you won't blow, and won't let the nigger blow, I'll tell you +where to find him." + +So I promised, and he says: + +"A farmer by the name of Silas Ph—" and then he stopped.  You see, he +started to tell me the truth; but when he stopped that way, and begun to +study and think again, I reckoned he was changing his mind.  And so he +was. He wouldn't trust me; he wanted to make sure of having me out of +the way the whole three days.  So pretty soon he says: + +"The man that bought him is named Abram Foster—Abram G. Foster—and he +lives forty mile back here in the country, on the road to Lafayette." + +"All right," I says, "I can walk it in three days.  And I'll start this +very afternoon." + +"No you wont, you'll start now; and don't you lose any time about it, +neither, nor do any gabbling by the way.  Just keep a tight tongue in +your head and move right along, and then you won't get into trouble with +us, d'ye hear?" + +That was the order I wanted, and that was the one I played for.  I +wanted to be left free to work my plans. + +"So clear out," he says; "and you can tell Mr. Foster whatever you want +to. Maybe you can get him to believe that Jim is your nigger—some +idiots don't require documents—leastways I've heard there's such down +South here.  And when you tell him the handbill and the reward's bogus, +maybe he'll believe you when you explain to him what the idea was for +getting 'em out.  Go 'long now, and tell him anything you want to; but +mind you don't work your jaw any between here and there." + +So I left, and struck for the back country.  I didn't look around, but I +kinder felt like he was watching me.  But I knowed I could tire him out +at that.  I went straight out in the country as much as a mile before +I stopped; then I doubled back through the woods towards Phelps'.  I +reckoned I better start in on my plan straight off without fooling +around, because I wanted to stop Jim's mouth till these fellows could +get away.  I didn't want no trouble with their kind.  I'd seen all I +wanted to of them, and wanted to get entirely shut of them. + + + + +CHAPTER XXXII. + +WHEN I got there it was all still and Sunday-like, and hot and sunshiny; +the hands was gone to the fields; and there was them kind of faint +dronings of bugs and flies in the air that makes it seem so lonesome and +like everybody's dead and gone; and if a breeze fans along and quivers +the leaves it makes you feel mournful, because you feel like it's +spirits whispering—spirits that's been dead ever so many years—and you +always think they're talking about you.  As a general thing it makes a +body wish he was dead, too, and done with it all. + +Phelps' was one of these little one-horse cotton plantations, and they +all look alike.  A rail fence round a two-acre yard; a stile made out +of logs sawed off and up-ended in steps, like barrels of a different +length, to climb over the fence with, and for the women to stand on when +they are going to jump on to a horse; some sickly grass-patches in the +big yard, but mostly it was bare and smooth, like an old hat with the +nap rubbed off; big double log-house for the white folks—hewed logs, +with the chinks stopped up with mud or mortar, and these mud-stripes +been whitewashed some time or another; round-log kitchen, with a big +broad, open but roofed passage joining it to the house; log smoke-house +back of the kitchen; three little log nigger-cabins in a row t'other +side the smoke-house; one little hut all by itself away down against +the back fence, and some outbuildings down a piece the other side; +ash-hopper and big kettle to bile soap in by the little hut; bench by +the kitchen door, with bucket of water and a gourd; hound asleep there +in the sun; more hounds asleep round about; about three shade trees away +off in a corner; some currant bushes and gooseberry bushes in one place +by the fence; outside of the fence a garden and a watermelon patch; then +the cotton fields begins, and after the fields the woods. + +I went around and clumb over the back stile by the ash-hopper, and +started for the kitchen.  When I got a little ways I heard the dim hum +of a spinning-wheel wailing along up and sinking along down again; +and then I knowed for certain I wished I was dead—for that is the +lonesomest sound in the whole world. + +I went right along, not fixing up any particular plan, but just trusting +to Providence to put the right words in my mouth when the time come; for +I'd noticed that Providence always did put the right words in my mouth +if I left it alone. + +When I got half-way, first one hound and then another got up and went +for me, and of course I stopped and faced them, and kept still.  And +such another powwow as they made!  In a quarter of a minute I was a kind +of a hub of a wheel, as you may say—spokes made out of dogs—circle of +fifteen of them packed together around me, with their necks and noses +stretched up towards me, a-barking and howling; and more a-coming; you +could see them sailing over fences and around corners from everywheres. + +A nigger woman come tearing out of the kitchen with a rolling-pin in her +hand, singing out, "Begone you Tige! you Spot! begone sah!" and she +fetched first one and then another of them a clip and sent them howling, +and then the rest followed; and the next second half of them come back, +wagging their tails around me, and making friends with me.  There ain't +no harm in a hound, nohow. + +And behind the woman comes a little nigger girl and two little nigger +boys without anything on but tow-linen shirts, and they hung on to their +mother's gown, and peeped out from behind her at me, bashful, the way +they always do.  And here comes the white woman running from the house, +about forty-five or fifty year old, bareheaded, and her spinning-stick +in her hand; and behind her comes her little white children, acting the +same way the little niggers was doing.  She was smiling all over so she +could hardly stand—and says: + +"It's you, at last!—ain't it?" + +I out with a "Yes'm" before I thought. + +She grabbed me and hugged me tight; and then gripped me by both hands +and shook and shook; and the tears come in her eyes, and run down over; +and she couldn't seem to hug and shake enough, and kept saying, "You +don't look as much like your mother as I reckoned you would; but law +sakes, I don't care for that, I'm so glad to see you!  Dear, dear, it +does seem like I could eat you up!  Children, it's your cousin Tom!—tell +him howdy." + +But they ducked their heads, and put their fingers in their mouths, and +hid behind her.  So she run on: + +"Lize, hurry up and get him a hot breakfast right away—or did you get +your breakfast on the boat?" + +I said I had got it on the boat.  So then she started for the house, +leading me by the hand, and the children tagging after.  When we got +there she set me down in a split-bottomed chair, and set herself down on +a little low stool in front of me, holding both of my hands, and says: + +"Now I can have a good look at you; and, laws-a-me, I've been hungry +for it a many and a many a time, all these long years, and it's come +at last! We been expecting you a couple of days and more.  What kep' +you?—boat get aground?" + +"Yes'm—she—" + +"Don't say yes'm—say Aunt Sally.  Where'd she get aground?" + +I didn't rightly know what to say, because I didn't know whether the +boat would be coming up the river or down.  But I go a good deal on +instinct; and my instinct said she would be coming up—from down towards +Orleans. That didn't help me much, though; for I didn't know the names +of bars down that way.  I see I'd got to invent a bar, or forget the +name of the one we got aground on—or—Now I struck an idea, and fetched +it out: + +"It warn't the grounding—that didn't keep us back but a little.  We +blowed out a cylinder-head." + +"Good gracious! anybody hurt?" + +"No'm.  Killed a nigger." + +"Well, it's lucky; because sometimes people do get hurt.  Two years ago +last Christmas your uncle Silas was coming up from Newrleans on the old +Lally Rook, and she blowed out a cylinder-head and crippled a man.  And +I think he died afterwards.  He was a Baptist.  Your uncle Silas knowed +a family in Baton Rouge that knowed his people very well.  Yes, I +remember now, he did die.  Mortification set in, and they had to +amputate him. But it didn't save him.  Yes, it was mortification—that +was it.  He turned blue all over, and died in the hope of a glorious +resurrection. They say he was a sight to look at.  Your uncle's been up +to the town every day to fetch you. And he's gone again, not more'n an +hour ago; he'll be back any minute now. You must a met him on the road, +didn't you?—oldish man, with a—" + +"No, I didn't see nobody, Aunt Sally.  The boat landed just at daylight, +and I left my baggage on the wharf-boat and went looking around the town +and out a piece in the country, to put in the time and not get here too +soon; and so I come down the back way." + +"Who'd you give the baggage to?" + +"Nobody." + +"Why, child, it 'll be stole!" + +"Not where I hid it I reckon it won't," I says. + +"How'd you get your breakfast so early on the boat?" + +It was kinder thin ice, but I says: + +"The captain see me standing around, and told me I better have something +to eat before I went ashore; so he took me in the texas to the officers' +lunch, and give me all I wanted." + +I was getting so uneasy I couldn't listen good.  I had my mind on the +children all the time; I wanted to get them out to one side and pump +them a little, and find out who I was.  But I couldn't get no show, Mrs. +Phelps kept it up and run on so.  Pretty soon she made the cold chills +streak all down my back, because she says: + +"But here we're a-running on this way, and you hain't told me a word +about Sis, nor any of them.  Now I'll rest my works a little, and you +start up yourn; just tell me everything—tell me all about 'm all every +one of 'm; and how they are, and what they're doing, and what they told +you to tell me; and every last thing you can think of." + +Well, I see I was up a stump—and up it good.  Providence had stood by +me this fur all right, but I was hard and tight aground now.  I see it +warn't a bit of use to try to go ahead—I'd got to throw up my hand.  So +I says to myself, here's another place where I got to resk the truth. + I opened my mouth to begin; but she grabbed me and hustled me in behind +the bed, and says: + +"Here he comes!  Stick your head down lower—there, that'll do; you can't +be seen now.  Don't you let on you're here.  I'll play a joke on him. +Children, don't you say a word." + +I see I was in a fix now.  But it warn't no use to worry; there warn't +nothing to do but just hold still, and try and be ready to stand from +under when the lightning struck. + +I had just one little glimpse of the old gentleman when he come in; then +the bed hid him.  Mrs. Phelps she jumps for him, and says: + +"Has he come?" + +"No," says her husband. + +"Good-ness gracious!" she says, "what in the warld can have become of +him?" + +"I can't imagine," says the old gentleman; "and I must say it makes me +dreadful uneasy." + +"Uneasy!" she says; "I'm ready to go distracted!  He must a come; and +you've missed him along the road.  I know it's so—something tells me +so." + +"Why, Sally, I couldn't miss him along the road—you know that." + +"But oh, dear, dear, what will Sis say!  He must a come!  You must a +missed him.  He—" + +"Oh, don't distress me any more'n I'm already distressed.  I don't know +what in the world to make of it.  I'm at my wit's end, and I don't mind +acknowledging 't I'm right down scared.  But there's no hope that he's +come; for he couldn't come and me miss him.  Sally, it's terrible—just +terrible—something's happened to the boat, sure!" + +"Why, Silas!  Look yonder!—up the road!—ain't that somebody coming?" + +He sprung to the window at the head of the bed, and that give Mrs. +Phelps the chance she wanted.  She stooped down quick at the foot of the +bed and give me a pull, and out I come; and when he turned back from the +window there she stood, a-beaming and a-smiling like a house afire, and +I standing pretty meek and sweaty alongside.  The old gentleman stared, +and says: + +"Why, who's that?" + +"Who do you reckon 't is?" + +"I hain't no idea.  Who is it?" + +"It's Tom Sawyer!" + +By jings, I most slumped through the floor!  But there warn't no time to +swap knives; the old man grabbed me by the hand and shook, and kept on +shaking; and all the time how the woman did dance around and laugh and +cry; and then how they both did fire off questions about Sid, and Mary, +and the rest of the tribe. + +But if they was joyful, it warn't nothing to what I was; for it was like +being born again, I was so glad to find out who I was.  Well, they froze +to me for two hours; and at last, when my chin was so tired it couldn't +hardly go any more, I had told them more about my family—I mean the +Sawyer family—than ever happened to any six Sawyer families.  And I +explained all about how we blowed out a cylinder-head at the mouth of +White River, and it took us three days to fix it.  Which was all right, +and worked first-rate; because they didn't know but what it would take +three days to fix it.  If I'd a called it a bolthead it would a done +just as well. + +Now I was feeling pretty comfortable all down one side, and pretty +uncomfortable all up the other.  Being Tom Sawyer was easy and +comfortable, and it stayed easy and comfortable till by and by I hear a +steamboat coughing along down the river.  Then I says to myself, s'pose +Tom Sawyer comes down on that boat?  And s'pose he steps in here any +minute, and sings out my name before I can throw him a wink to keep +quiet? + +Well, I couldn't have it that way; it wouldn't do at all.  I must go +up the road and waylay him.  So I told the folks I reckoned I would go +up to the town and fetch down my baggage.  The old gentleman was for +going along with me, but I said no, I could drive the horse myself, and +I druther he wouldn't take no trouble about me. + + + + +CHAPTER XXXIII. + +SO I started for town in the wagon, and when I was half-way I see a +wagon coming, and sure enough it was Tom Sawyer, and I stopped and +waited till he come along.  I says "Hold on!" and it stopped alongside, +and his mouth opened up like a trunk, and stayed so; and he swallowed +two or three times like a person that's got a dry throat, and then says: + +"I hain't ever done you no harm.  You know that.  So, then, what you +want to come back and ha'nt me for?" + +I says: + +"I hain't come back—I hain't been gone." + +When he heard my voice it righted him up some, but he warn't quite +satisfied yet.  He says: + +"Don't you play nothing on me, because I wouldn't on you.  Honest injun +now, you ain't a ghost?" + +"Honest injun, I ain't," I says. + +"Well—I—I—well, that ought to settle it, of course; but I can't somehow +seem to understand it no way.  Looky here, warn't you ever murdered at +all?" + +"No.  I warn't ever murdered at all—I played it on them.  You come in +here and feel of me if you don't believe me." + +So he done it; and it satisfied him; and he was that glad to see me +again he didn't know what to do.  And he wanted to know all about it +right off, because it was a grand adventure, and mysterious, and so it +hit him where he lived.  But I said, leave it alone till by and by; and +told his driver to wait, and we drove off a little piece, and I told +him the kind of a fix I was in, and what did he reckon we better do?  He +said, let him alone a minute, and don't disturb him.  So he thought and +thought, and pretty soon he says: + +"It's all right; I've got it.  Take my trunk in your wagon, and let on +it's your'n; and you turn back and fool along slow, so as to get to the +house about the time you ought to; and I'll go towards town a piece, and +take a fresh start, and get there a quarter or a half an hour after you; +and you needn't let on to know me at first." + +I says: + +"All right; but wait a minute.  There's one more thing—a thing that +nobody don't know but me.  And that is, there's a nigger here that +I'm a-trying to steal out of slavery, and his name is Jim—old Miss +Watson's Jim." + +He says: + +"What!  Why, Jim is—" + +He stopped and went to studying.  I says: + +"I know what you'll say.  You'll say it's dirty, low-down business; but +what if it is?  I'm low down; and I'm a-going to steal him, and I want +you keep mum and not let on.  Will you?" + +His eye lit up, and he says: + +"I'll help you steal him!" + +Well, I let go all holts then, like I was shot.  It was the most +astonishing speech I ever heard—and I'm bound to say Tom Sawyer fell +considerable in my estimation.  Only I couldn't believe it.  Tom Sawyer +a nigger-stealer! + +"Oh, shucks!"  I says; "you're joking." + +"I ain't joking, either." + +"Well, then," I says, "joking or no joking, if you hear anything said +about a runaway nigger, don't forget to remember that you don't know +nothing about him, and I don't know nothing about him." + +Then we took the trunk and put it in my wagon, and he drove off his +way and I drove mine.  But of course I forgot all about driving slow on +accounts of being glad and full of thinking; so I got home a heap too +quick for that length of a trip.  The old gentleman was at the door, and +he says: + +"Why, this is wonderful!  Whoever would a thought it was in that mare +to do it?  I wish we'd a timed her.  And she hain't sweated a hair—not +a hair. It's wonderful.  Why, I wouldn't take a hundred dollars for that +horse now—I wouldn't, honest; and yet I'd a sold her for fifteen before, +and thought 'twas all she was worth." + +That's all he said.  He was the innocentest, best old soul I ever see. +But it warn't surprising; because he warn't only just a farmer, he was +a preacher, too, and had a little one-horse log church down back of the +plantation, which he built it himself at his own expense, for a church +and schoolhouse, and never charged nothing for his preaching, and it was +worth it, too.  There was plenty other farmer-preachers like that, and +done the same way, down South. + +In about half an hour Tom's wagon drove up to the front stile, and Aunt +Sally she see it through the window, because it was only about fifty +yards, and says: + +"Why, there's somebody come!  I wonder who 'tis?  Why, I do believe it's +a stranger.  Jimmy" (that's one of the children) "run and tell Lize to +put on another plate for dinner." + +Everybody made a rush for the front door, because, of course, a stranger +don't come every year, and so he lays over the yaller-fever, for +interest, when he does come.  Tom was over the stile and starting for +the house; the wagon was spinning up the road for the village, and we +was all bunched in the front door.  Tom had his store clothes on, and an +audience—and that was always nuts for Tom Sawyer.  In them circumstances +it warn't no trouble to him to throw in an amount of style that was +suitable.  He warn't a boy to meeky along up that yard like a sheep; no, +he come ca'm and important, like the ram.  When he got a-front of us he +lifts his hat ever so gracious and dainty, like it was the lid of a box +that had butterflies asleep in it and he didn't want to disturb them, +and says: + +"Mr. Archibald Nichols, I presume?" + +"No, my boy," says the old gentleman, "I'm sorry to say 't your driver +has deceived you; Nichols's place is down a matter of three mile more. +Come in, come in." + +Tom he took a look back over his shoulder, and says, "Too late—he's out +of sight." + +"Yes, he's gone, my son, and you must come in and eat your dinner with +us; and then we'll hitch up and take you down to Nichols's." + +"Oh, I can't make you so much trouble; I couldn't think of it.  I'll +walk—I don't mind the distance." + +"But we won't let you walk—it wouldn't be Southern hospitality to do +it. Come right in." + +"Oh, do," says Aunt Sally; "it ain't a bit of trouble to us, not a +bit in the world.  You must stay.  It's a long, dusty three mile, and +we can't let you walk.  And, besides, I've already told 'em to put on +another plate when I see you coming; so you mustn't disappoint us.  Come +right in and make yourself at home." + +So Tom he thanked them very hearty and handsome, and let himself be +persuaded, and come in; and when he was in he said he was a stranger +from Hicksville, Ohio, and his name was William Thompson—and he made +another bow. + +Well, he run on, and on, and on, making up stuff about Hicksville and +everybody in it he could invent, and I getting a little nervious, and +wondering how this was going to help me out of my scrape; and at last, +still talking along, he reached over and kissed Aunt Sally right on the +mouth, and then settled back again in his chair comfortable, and was +going on talking; but she jumped up and wiped it off with the back of +her hand, and says: + +"You owdacious puppy!" + +He looked kind of hurt, and says: + +"I'm surprised at you, m'am." + +"You're s'rp—Why, what do you reckon I am?  I've a good notion to take +and—Say, what do you mean by kissing me?" + +He looked kind of humble, and says: + +"I didn't mean nothing, m'am.  I didn't mean no harm.  I—I—thought you'd +like it." + +"Why, you born fool!"  She took up the spinning stick, and it looked +like it was all she could do to keep from giving him a crack with it. + "What made you think I'd like it?" + +"Well, I don't know.  Only, they—they—told me you would." + +"They told you I would.  Whoever told you's another lunatic.  I +never heard the beat of it.  Who's they?" + +"Why, everybody.  They all said so, m'am." + +It was all she could do to hold in; and her eyes snapped, and her +fingers worked like she wanted to scratch him; and she says: + +"Who's 'everybody'?  Out with their names, or ther'll be an idiot +short." + +He got up and looked distressed, and fumbled his hat, and says: + +"I'm sorry, and I warn't expecting it.  They told me to.  They all told +me to.  They all said, kiss her; and said she'd like it.  They all said +it—every one of them.  But I'm sorry, m'am, and I won't do it no more—I +won't, honest." + +"You won't, won't you?  Well, I sh'd reckon you won't!" + +"No'm, I'm honest about it; I won't ever do it again—till you ask me." + +"Till I ask you!  Well, I never see the beat of it in my born days! + I lay you'll be the Methusalem-numskull of creation before ever I ask +you—or the likes of you." + +"Well," he says, "it does surprise me so.  I can't make it out, somehow. +They said you would, and I thought you would.  But—" He stopped and +looked around slow, like he wished he could run across a friendly eye +somewheres, and fetched up on the old gentleman's, and says, "Didn't +you think she'd like me to kiss her, sir?" + +"Why, no; I—I—well, no, I b'lieve I didn't." + +Then he looks on around the same way to me, and says: + +"Tom, didn't you think Aunt Sally 'd open out her arms and say, 'Sid +Sawyer—'" + +"My land!" she says, breaking in and jumping for him, "you impudent +young rascal, to fool a body so—" and was going to hug him, but he +fended her off, and says: + +"No, not till you've asked me first." + +So she didn't lose no time, but asked him; and hugged him and kissed +him over and over again, and then turned him over to the old man, and he +took what was left.  And after they got a little quiet again she says: + +"Why, dear me, I never see such a surprise.  We warn't looking for you +at all, but only Tom.  Sis never wrote to me about anybody coming but +him." + +"It's because it warn't intended for any of us to come but Tom," he +says; "but I begged and begged, and at the last minute she let me +come, too; so, coming down the river, me and Tom thought it would be a +first-rate surprise for him to come here to the house first, and for me +to by and by tag along and drop in, and let on to be a stranger.  But it +was a mistake, Aunt Sally.  This ain't no healthy place for a stranger +to come." + +"No—not impudent whelps, Sid.  You ought to had your jaws boxed; I +hain't been so put out since I don't know when.  But I don't care, I +don't mind the terms—I'd be willing to stand a thousand such jokes to +have you here. Well, to think of that performance!  I don't deny it, I +was most putrified with astonishment when you give me that smack." + +We had dinner out in that broad open passage betwixt the house and +the kitchen; and there was things enough on that table for seven +families—and all hot, too; none of your flabby, tough meat that's laid +in a cupboard in a damp cellar all night and tastes like a hunk of +old cold cannibal in the morning.  Uncle Silas he asked a pretty long +blessing over it, but it was worth it; and it didn't cool it a bit, +neither, the way I've seen them kind of interruptions do lots of times. + There was a considerable good deal of talk all the afternoon, and me +and Tom was on the lookout all the time; but it warn't no use, they +didn't happen to say nothing about any runaway nigger, and we was afraid +to try to work up to it.  But at supper, at night, one of the little +boys says: + +"Pa, mayn't Tom and Sid and me go to the show?" + +"No," says the old man, "I reckon there ain't going to be any; and you +couldn't go if there was; because the runaway nigger told Burton and +me all about that scandalous show, and Burton said he would tell the +people; so I reckon they've drove the owdacious loafers out of town +before this time." + +So there it was!—but I couldn't help it.  Tom and me was to sleep in the +same room and bed; so, being tired, we bid good-night and went up to +bed right after supper, and clumb out of the window and down the +lightning-rod, and shoved for the town; for I didn't believe anybody was +going to give the king and the duke a hint, and so if I didn't hurry up +and give them one they'd get into trouble sure. + +On the road Tom he told me all about how it was reckoned I was murdered, +and how pap disappeared pretty soon, and didn't come back no more, and +what a stir there was when Jim run away; and I told Tom all about our +Royal Nonesuch rapscallions, and as much of the raft voyage as I had +time to; and as we struck into the town and up through the the middle of +it--it was as much as half-after eight, then—here comes a raging rush of +people with torches, and an awful whooping and yelling, and banging tin +pans and blowing horns; and we jumped to one side to let them go by; +and as they went by I see they had the king and the duke astraddle of a +rail—that is, I knowed it was the king and the duke, though they was +all over tar and feathers, and didn't look like nothing in the +world that was human—just looked like a couple of monstrous big +soldier-plumes.  Well, it made me sick to see it; and I was sorry for +them poor pitiful rascals, it seemed like I couldn't ever feel any +hardness against them any more in the world.  It was a dreadful thing to +see.  Human beings can be awful cruel to one another. + +We see we was too late—couldn't do no good.  We asked some stragglers +about it, and they said everybody went to the show looking very +innocent; and laid low and kept dark till the poor old king was in the +middle of his cavortings on the stage; then somebody give a signal, and +the house rose up and went for them. + +So we poked along back home, and I warn't feeling so brash as I was +before, but kind of ornery, and humble, and to blame, somehow—though +I hadn't done nothing.  But that's always the way; it don't make no +difference whether you do right or wrong, a person's conscience ain't +got no sense, and just goes for him anyway.  If I had a yaller dog that +didn't know no more than a person's conscience does I would pison him. +It takes up more room than all the rest of a person's insides, and yet +ain't no good, nohow.  Tom Sawyer he says the same. + + + + +CHAPTER XXXIV. + +WE stopped talking, and got to thinking.  By and by Tom says: + +"Looky here, Huck, what fools we are to not think of it before!  I bet I +know where Jim is." + +"No!  Where?" + +"In that hut down by the ash-hopper.  Why, looky here.  When we was at +dinner, didn't you see a nigger man go in there with some vittles?" + +"Yes." + +"What did you think the vittles was for?" + +"For a dog." + +"So 'd I. Well, it wasn't for a dog." + +"Why?" + +"Because part of it was watermelon." + +"So it was—I noticed it.  Well, it does beat all that I never thought +about a dog not eating watermelon.  It shows how a body can see and +don't see at the same time." + +"Well, the nigger unlocked the padlock when he went in, and he locked it +again when he came out.  He fetched uncle a key about the time we got up +from table—same key, I bet.  Watermelon shows man, lock shows prisoner; +and it ain't likely there's two prisoners on such a little plantation, +and where the people's all so kind and good.  Jim's the prisoner.  All +right—I'm glad we found it out detective fashion; I wouldn't give shucks +for any other way.  Now you work your mind, and study out a plan to +steal Jim, and I will study out one, too; and we'll take the one we like +the best." + +What a head for just a boy to have!  If I had Tom Sawyer's head I +wouldn't trade it off to be a duke, nor mate of a steamboat, nor clown +in a circus, nor nothing I can think of.  I went to thinking out a plan, +but only just to be doing something; I knowed very well where the right +plan was going to come from.  Pretty soon Tom says: + +"Ready?" + +"Yes," I says. + +"All right—bring it out." + +"My plan is this," I says.  "We can easy find out if it's Jim in there. +Then get up my canoe to-morrow night, and fetch my raft over from the +island.  Then the first dark night that comes steal the key out of the +old man's britches after he goes to bed, and shove off down the river +on the raft with Jim, hiding daytimes and running nights, the way me and +Jim used to do before.  Wouldn't that plan work?" + +"Work?  Why, cert'nly it would work, like rats a-fighting.  But it's +too blame' simple; there ain't nothing to it.  What's the good of a +plan that ain't no more trouble than that?  It's as mild as goose-milk. + Why, Huck, it wouldn't make no more talk than breaking into a soap +factory." + +I never said nothing, because I warn't expecting nothing different; but +I knowed mighty well that whenever he got his plan ready it wouldn't +have none of them objections to it. + +And it didn't.  He told me what it was, and I see in a minute it was +worth fifteen of mine for style, and would make Jim just as free a man +as mine would, and maybe get us all killed besides.  So I was satisfied, +and said we would waltz in on it.  I needn't tell what it was here, +because I knowed it wouldn't stay the way, it was.  I knowed he would be +changing it around every which way as we went along, and heaving in new +bullinesses wherever he got a chance.  And that is what he done. + +Well, one thing was dead sure, and that was that Tom Sawyer was in +earnest, and was actuly going to help steal that nigger out of slavery. +That was the thing that was too many for me.  Here was a boy that was +respectable and well brung up; and had a character to lose; and folks at +home that had characters; and he was bright and not leather-headed; and +knowing and not ignorant; and not mean, but kind; and yet here he was, +without any more pride, or rightness, or feeling, than to stoop to +this business, and make himself a shame, and his family a shame, +before everybody.  I couldn't understand it no way at all.  It was +outrageous, and I knowed I ought to just up and tell him so; and so be +his true friend, and let him quit the thing right where he was and save +himself. And I did start to tell him; but he shut me up, and says: + +"Don't you reckon I know what I'm about?  Don't I generly know what I'm +about?" + +"Yes." + +"Didn't I say I was going to help steal the nigger?" + +"Yes." + +"Well, then." + +That's all he said, and that's all I said.  It warn't no use to say any +more; because when he said he'd do a thing, he always done it.  But I +couldn't make out how he was willing to go into this thing; so I just +let it go, and never bothered no more about it.  If he was bound to have +it so, I couldn't help it. + +When we got home the house was all dark and still; so we went on down to +the hut by the ash-hopper for to examine it.  We went through the yard +so as to see what the hounds would do.  They knowed us, and didn't make +no more noise than country dogs is always doing when anything comes by +in the night.  When we got to the cabin we took a look at the front and +the two sides; and on the side I warn't acquainted with—which was the +north side—we found a square window-hole, up tolerable high, with just +one stout board nailed across it.  I says: + +"Here's the ticket.  This hole's big enough for Jim to get through if we +wrench off the board." + +Tom says: + +"It's as simple as tit-tat-toe, three-in-a-row, and as easy as +playing hooky.  I should hope we can find a way that's a little more +complicated than that, Huck Finn." + +"Well, then," I says, "how 'll it do to saw him out, the way I done +before I was murdered that time?" + +"That's more like," he says.  "It's real mysterious, and troublesome, +and good," he says; "but I bet we can find a way that's twice as long. + There ain't no hurry; le's keep on looking around." + +Betwixt the hut and the fence, on the back side, was a lean-to that +joined the hut at the eaves, and was made out of plank.  It was as long +as the hut, but narrow—only about six foot wide.  The door to it was at +the south end, and was padlocked.  Tom he went to the soap-kettle and +searched around, and fetched back the iron thing they lift the lid with; +so he took it and prized out one of the staples.  The chain fell down, +and we opened the door and went in, and shut it, and struck a match, +and see the shed was only built against a cabin and hadn't no connection +with it; and there warn't no floor to the shed, nor nothing in it but +some old rusty played-out hoes and spades and picks and a crippled plow. + The match went out, and so did we, and shoved in the staple again, and +the door was locked as good as ever. Tom was joyful.  He says; + +"Now we're all right.  We'll dig him out.  It 'll take about a week!" + +Then we started for the house, and I went in the back door—you only have +to pull a buckskin latch-string, they don't fasten the doors—but that +warn't romantical enough for Tom Sawyer; no way would do him but he must +climb up the lightning-rod.  But after he got up half way about three +times, and missed fire and fell every time, and the last time most +busted his brains out, he thought he'd got to give it up; but after he +was rested he allowed he would give her one more turn for luck, and this +time he made the trip. + +In the morning we was up at break of day, and down to the nigger cabins +to pet the dogs and make friends with the nigger that fed Jim—if it +was Jim that was being fed.  The niggers was just getting through +breakfast and starting for the fields; and Jim's nigger was piling up +a tin pan with bread and meat and things; and whilst the others was +leaving, the key come from the house. + +This nigger had a good-natured, chuckle-headed face, and his wool was +all tied up in little bunches with thread.  That was to keep witches +off.  He said the witches was pestering him awful these nights, and +making him see all kinds of strange things, and hear all kinds of +strange words and noises, and he didn't believe he was ever witched so +long before in his life.  He got so worked up, and got to running on so +about his troubles, he forgot all about what he'd been a-going to do. + So Tom says: + +"What's the vittles for?  Going to feed the dogs?" + +The nigger kind of smiled around gradually over his face, like when you +heave a brickbat in a mud-puddle, and he says: + +"Yes, Mars Sid, A dog.  Cur'us dog, too.  Does you want to go en look at +'im?" + +"Yes." + +I hunched Tom, and whispers: + +"You going, right here in the daybreak?  that warn't the plan." + +"No, it warn't; but it's the plan now." + +So, drat him, we went along, but I didn't like it much.  When we got in +we couldn't hardly see anything, it was so dark; but Jim was there, sure +enough, and could see us; and he sings out: + +"Why, Huck!  En good lan'! ain' dat Misto Tom?" + +I just knowed how it would be; I just expected it.  I didn't know +nothing to do; and if I had I couldn't a done it, because that nigger +busted in and says: + +"Why, de gracious sakes! do he know you genlmen?" + +We could see pretty well now.  Tom he looked at the nigger, steady and +kind of wondering, and says: + +"Does who know us?" + +"Why, dis-yer runaway nigger." + +"I don't reckon he does; but what put that into your head?" + +"What put it dar?  Didn' he jis' dis minute sing out like he knowed +you?" + +Tom says, in a puzzled-up kind of way: + +"Well, that's mighty curious.  Who sung out? when did he sing out? + what did he sing out?" And turns to me, perfectly ca'm, and says, +"Did you hear anybody sing out?" + +Of course there warn't nothing to be said but the one thing; so I says: + +"No; I ain't heard nobody say nothing." + +Then he turns to Jim, and looks him over like he never see him before, +and says: + +"Did you sing out?" + +"No, sah," says Jim; "I hain't said nothing, sah." + +"Not a word?" + +"No, sah, I hain't said a word." + +"Did you ever see us before?" + +"No, sah; not as I knows on." + +So Tom turns to the nigger, which was looking wild and distressed, and +says, kind of severe: + +"What do you reckon's the matter with you, anyway?  What made you think +somebody sung out?" + +"Oh, it's de dad-blame' witches, sah, en I wisht I was dead, I do. + Dey's awluz at it, sah, en dey do mos' kill me, dey sk'yers me so. + Please to don't tell nobody 'bout it sah, er ole Mars Silas he'll scole +me; 'kase he say dey ain't no witches.  I jis' wish to goodness he was +heah now—den what would he say!  I jis' bet he couldn' fine no way to +git aroun' it dis time.  But it's awluz jis' so; people dat's sot, +stays sot; dey won't look into noth'n'en fine it out f'r deyselves, en +when you fine it out en tell um 'bout it, dey doan' b'lieve you." + +Tom give him a dime, and said we wouldn't tell nobody; and told him to +buy some more thread to tie up his wool with; and then looks at Jim, and +says: + +"I wonder if Uncle Silas is going to hang this nigger.  If I was to +catch a nigger that was ungrateful enough to run away, I wouldn't give +him up, I'd hang him."  And whilst the nigger stepped to the door to +look at the dime and bite it to see if it was good, he whispers to Jim +and says: + +"Don't ever let on to know us.  And if you hear any digging going on +nights, it's us; we're going to set you free." + +Jim only had time to grab us by the hand and squeeze it; then the nigger +come back, and we said we'd come again some time if the nigger wanted +us to; and he said he would, more particular if it was dark, because the +witches went for him mostly in the dark, and it was good to have folks +around then. + + + + +CHAPTER XXXV. + +IT would be most an hour yet till breakfast, so we left and struck down +into the woods; because Tom said we got to have some light to see how +to dig by, and a lantern makes too much, and might get us into trouble; +what we must have was a lot of them rotten chunks that's called +fox-fire, and just makes a soft kind of a glow when you lay them in a +dark place.  We fetched an armful and hid it in the weeds, and set down +to rest, and Tom says, kind of dissatisfied: + +"Blame it, this whole thing is just as easy and awkward as it can be. +And so it makes it so rotten difficult to get up a difficult plan. + There ain't no watchman to be drugged—now there ought to be a +watchman.  There ain't even a dog to give a sleeping-mixture to.  And +there's Jim chained by one leg, with a ten-foot chain, to the leg of his +bed:  why, all you got to do is to lift up the bedstead and slip off +the chain.  And Uncle Silas he trusts everybody; sends the key to the +punkin-headed nigger, and don't send nobody to watch the nigger.  Jim +could a got out of that window-hole before this, only there wouldn't be +no use trying to travel with a ten-foot chain on his leg.  Why, drat it, +Huck, it's the stupidest arrangement I ever see. You got to invent all +the difficulties.  Well, we can't help it; we got to do the best we can +with the materials we've got. Anyhow, there's one thing—there's more +honor in getting him out through a lot of difficulties and dangers, +where there warn't one of them furnished to you by the people who it was +their duty to furnish them, and you had to contrive them all out of your +own head.  Now look at just that one thing of the lantern.  When you +come down to the cold facts, we simply got to let on that a lantern's +resky.  Why, we could work with a torchlight procession if we wanted to, +I believe.  Now, whilst I think of it, we got to hunt up something to +make a saw out of the first chance we get." + +"What do we want of a saw?" + +"What do we want of it?  Hain't we got to saw the leg of Jim's bed +off, so as to get the chain loose?" + +"Why, you just said a body could lift up the bedstead and slip the chain +off." + +"Well, if that ain't just like you, Huck Finn.  You can get up the +infant-schooliest ways of going at a thing.  Why, hain't you ever read +any books at all?—Baron Trenck, nor Casanova, nor Benvenuto Chelleeny, +nor Henri IV., nor none of them heroes?  Who ever heard of getting a +prisoner loose in such an old-maidy way as that?  No; the way all the +best authorities does is to saw the bed-leg in two, and leave it just +so, and swallow the sawdust, so it can't be found, and put some dirt and +grease around the sawed place so the very keenest seneskal can't see +no sign of it's being sawed, and thinks the bed-leg is perfectly sound. +Then, the night you're ready, fetch the leg a kick, down she goes; slip +off your chain, and there you are.  Nothing to do but hitch your +rope ladder to the battlements, shin down it, break your leg in the +moat—because a rope ladder is nineteen foot too short, you know—and +there's your horses and your trusty vassles, and they scoop you up and +fling you across a saddle, and away you go to your native Langudoc, or +Navarre, or wherever it is. It's gaudy, Huck.  I wish there was a moat +to this cabin. If we get time, the night of the escape, we'll dig one." + +I says: + +"What do we want of a moat when we're going to snake him out from under +the cabin?" + +But he never heard me.  He had forgot me and everything else.  He had +his chin in his hand, thinking.  Pretty soon he sighs and shakes his +head; then sighs again, and says: + +"No, it wouldn't do—there ain't necessity enough for it." + +"For what?"  I says. + +"Why, to saw Jim's leg off," he says. + +"Good land!"  I says; "why, there ain't no necessity for it.  And what +would you want to saw his leg off for, anyway?" + +"Well, some of the best authorities has done it.  They couldn't get the +chain off, so they just cut their hand off and shoved.  And a leg would +be better still.  But we got to let that go.  There ain't necessity +enough in this case; and, besides, Jim's a nigger, and wouldn't +understand the reasons for it, and how it's the custom in Europe; so +we'll let it go.  But there's one thing—he can have a rope ladder; we +can tear up our sheets and make him a rope ladder easy enough.  And we +can send it to him in a pie; it's mostly done that way.  And I've et +worse pies." + +"Why, Tom Sawyer, how you talk," I says; "Jim ain't got no use for a +rope ladder." + +"He has got use for it.  How you talk, you better say; you don't +know nothing about it.  He's got to have a rope ladder; they all do." + +"What in the nation can he do with it?" + +"Do with it?  He can hide it in his bed, can't he?"  That's what they +all do; and he's got to, too.  Huck, you don't ever seem to want to do +anything that's regular; you want to be starting something fresh all the +time. S'pose he don't do nothing with it? ain't it there in his bed, +for a clew, after he's gone? and don't you reckon they'll want clews? + Of course they will.  And you wouldn't leave them any?  That would be a +pretty howdy-do, wouldn't it!  I never heard of such a thing." + +"Well," I says, "if it's in the regulations, and he's got to have +it, all right, let him have it; because I don't wish to go back on no +regulations; but there's one thing, Tom Sawyer—if we go to tearing up +our sheets to make Jim a rope ladder, we're going to get into trouble +with Aunt Sally, just as sure as you're born.  Now, the way I look at +it, a hickry-bark ladder don't cost nothing, and don't waste nothing, +and is just as good to load up a pie with, and hide in a straw tick, +as any rag ladder you can start; and as for Jim, he ain't had no +experience, and so he don't care what kind of a—" + +"Oh, shucks, Huck Finn, if I was as ignorant as you I'd keep +still—that's what I'D do.  Who ever heard of a state prisoner escaping +by a hickry-bark ladder?  Why, it's perfectly ridiculous." + +"Well, all right, Tom, fix it your own way; but if you'll take my +advice, you'll let me borrow a sheet off of the clothesline." + +He said that would do.  And that gave him another idea, and he says: + +"Borrow a shirt, too." + +"What do we want of a shirt, Tom?" + +"Want it for Jim to keep a journal on." + +"Journal your granny—Jim can't write." + +"S'pose he can't write—he can make marks on the shirt, can't he, if +we make him a pen out of an old pewter spoon or a piece of an old iron +barrel-hoop?" + +"Why, Tom, we can pull a feather out of a goose and make him a better +one; and quicker, too." + +"Prisoners don't have geese running around the donjon-keep to pull +pens out of, you muggins.  They always make their pens out of the +hardest, toughest, troublesomest piece of old brass candlestick or +something like that they can get their hands on; and it takes them weeks +and weeks and months and months to file it out, too, because they've got +to do it by rubbing it on the wall.  They wouldn't use a goose-quill +if they had it. It ain't regular." + +"Well, then, what'll we make him the ink out of?" + +"Many makes it out of iron-rust and tears; but that's the common sort +and women; the best authorities uses their own blood.  Jim can do that; +and when he wants to send any little common ordinary mysterious message +to let the world know where he's captivated, he can write it on the +bottom of a tin plate with a fork and throw it out of the window.  The +Iron Mask always done that, and it's a blame' good way, too." + +"Jim ain't got no tin plates.  They feed him in a pan." + +"That ain't nothing; we can get him some." + +"Can't nobody read his plates." + +"That ain't got anything to do with it, Huck Finn.  All he's got to +do is to write on the plate and throw it out.  You don't have to be +able to read it. Why, half the time you can't read anything a prisoner +writes on a tin plate, or anywhere else." + +"Well, then, what's the sense in wasting the plates?" + +"Why, blame it all, it ain't the prisoner's plates." + +"But it's somebody's plates, ain't it?" + +"Well, spos'n it is?  What does the prisoner care whose—" + +He broke off there, because we heard the breakfast-horn blowing.  So we +cleared out for the house. + +Along during the morning I borrowed a sheet and a white shirt off of the +clothes-line; and I found an old sack and put them in it, and we went +down and got the fox-fire, and put that in too.  I called it borrowing, +because that was what pap always called it; but Tom said it warn't +borrowing, it was stealing.  He said we was representing prisoners; and +prisoners don't care how they get a thing so they get it, and nobody +don't blame them for it, either.  It ain't no crime in a prisoner to +steal the thing he needs to get away with, Tom said; it's his right; and +so, as long as we was representing a prisoner, we had a perfect right to +steal anything on this place we had the least use for to get ourselves +out of prison with.  He said if we warn't prisoners it would be a very +different thing, and nobody but a mean, ornery person would steal when +he warn't a prisoner.  So we allowed we would steal everything there was +that come handy.  And yet he made a mighty fuss, one day, after that, +when I stole a watermelon out of the nigger-patch and eat it; and he +made me go and give the niggers a dime without telling them what it +was for. Tom said that what he meant was, we could steal anything we +needed. Well, I says, I needed the watermelon.  But he said I didn't +need it to get out of prison with; there's where the difference was. + He said if I'd a wanted it to hide a knife in, and smuggle it to Jim +to kill the seneskal with, it would a been all right.  So I let it go at +that, though I couldn't see no advantage in my representing a prisoner +if I got to set down and chaw over a lot of gold-leaf distinctions like +that every time I see a chance to hog a watermelon. + +Well, as I was saying, we waited that morning till everybody was settled +down to business, and nobody in sight around the yard; then Tom he +carried the sack into the lean-to whilst I stood off a piece to keep +watch.  By and by he come out, and we went and set down on the woodpile +to talk.  He says: + +"Everything's all right now except tools; and that's easy fixed." + +"Tools?"  I says. + +"Yes." + +"Tools for what?" + +"Why, to dig with.  We ain't a-going to gnaw him out, are we?" + +"Ain't them old crippled picks and things in there good enough to dig a +nigger out with?"  I says. + +He turns on me, looking pitying enough to make a body cry, and says: + +"Huck Finn, did you ever hear of a prisoner having picks and shovels, +and all the modern conveniences in his wardrobe to dig himself out with? + Now I want to ask you—if you got any reasonableness in you at all—what +kind of a show would that give him to be a hero?  Why, they might as +well lend him the key and done with it.  Picks and shovels—why, they +wouldn't furnish 'em to a king." + +"Well, then," I says, "if we don't want the picks and shovels, what do +we want?" + +"A couple of case-knives." + +"To dig the foundations out from under that cabin with?" + +"Yes." + +"Confound it, it's foolish, Tom." + +"It don't make no difference how foolish it is, it's the right way—and +it's the regular way.  And there ain't no other way, that ever I heard +of, and I've read all the books that gives any information about these +things. They always dig out with a case-knife—and not through dirt, mind +you; generly it's through solid rock.  And it takes them weeks and weeks +and weeks, and for ever and ever.  Why, look at one of them prisoners in +the bottom dungeon of the Castle Deef, in the harbor of Marseilles, that +dug himself out that way; how long was he at it, you reckon?" + +"I don't know." + +"Well, guess." + +"I don't know.  A month and a half." + +"Thirty-seven year—and he come out in China.  That's the kind.  I +wish the bottom of this fortress was solid rock." + +"Jim don't know nobody in China." + +"What's that got to do with it?  Neither did that other fellow.  But +you're always a-wandering off on a side issue.  Why can't you stick to +the main point?" + +"All right—I don't care where he comes out, so he comes out; and Jim +don't, either, I reckon.  But there's one thing, anyway—Jim's too old to +be dug out with a case-knife.  He won't last." + +"Yes he will last, too.  You don't reckon it's going to take +thirty-seven years to dig out through a dirt foundation, do you?" + +"How long will it take, Tom?" + +"Well, we can't resk being as long as we ought to, because it mayn't +take very long for Uncle Silas to hear from down there by New Orleans. + He'll hear Jim ain't from there.  Then his next move will be to +advertise Jim, or something like that.  So we can't resk being as long +digging him out as we ought to.  By rights I reckon we ought to be +a couple of years; but we can't.  Things being so uncertain, what I +recommend is this:  that we really dig right in, as quick as we can; +and after that, we can let on, to ourselves, that we was at it +thirty-seven years.  Then we can snatch him out and rush him away the +first time there's an alarm.  Yes, I reckon that 'll be the best way." + +"Now, there's sense in that," I says.  "Letting on don't cost nothing; +letting on ain't no trouble; and if it's any object, I don't mind +letting on we was at it a hundred and fifty year.  It wouldn't strain +me none, after I got my hand in.  So I'll mosey along now, and smouch a +couple of case-knives." + +"Smouch three," he says; "we want one to make a saw out of." + +"Tom, if it ain't unregular and irreligious to sejest it," I says, +"there's an old rusty saw-blade around yonder sticking under the +weather-boarding behind the smoke-house." + +He looked kind of weary and discouraged-like, and says: + +"It ain't no use to try to learn you nothing, Huck.  Run along and +smouch the knives—three of them."  So I done it. + + + + +CHAPTER XXXVI. + +AS soon as we reckoned everybody was asleep that night we went down the +lightning-rod, and shut ourselves up in the lean-to, and got out our +pile of fox-fire, and went to work.  We cleared everything out of the +way, about four or five foot along the middle of the bottom log.  Tom +said he was right behind Jim's bed now, and we'd dig in under it, and +when we got through there couldn't nobody in the cabin ever know there +was any hole there, because Jim's counter-pin hung down most to the +ground, and you'd have to raise it up and look under to see the hole. + So we dug and dug with the case-knives till most midnight; and then +we was dog-tired, and our hands was blistered, and yet you couldn't see +we'd done anything hardly.  At last I says: + +"This ain't no thirty-seven year job; this is a thirty-eight year job, +Tom Sawyer." + +He never said nothing.  But he sighed, and pretty soon he stopped +digging, and then for a good little while I knowed that he was thinking. +Then he says: + +"It ain't no use, Huck, it ain't a-going to work.  If we was prisoners +it would, because then we'd have as many years as we wanted, and no +hurry; and we wouldn't get but a few minutes to dig, every day, while +they was changing watches, and so our hands wouldn't get blistered, and +we could keep it up right along, year in and year out, and do it right, +and the way it ought to be done.  But we can't fool along; we got to +rush; we ain't got no time to spare.  If we was to put in another +night this way we'd have to knock off for a week to let our hands get +well—couldn't touch a case-knife with them sooner." + +"Well, then, what we going to do, Tom?" + +"I'll tell you.  It ain't right, and it ain't moral, and I wouldn't like +it to get out; but there ain't only just the one way:  we got to dig him +out with the picks, and let on it's case-knives." + +"Now you're talking!"  I says; "your head gets leveler and leveler +all the time, Tom Sawyer," I says.  "Picks is the thing, moral or no +moral; and as for me, I don't care shucks for the morality of it, nohow. + When I start in to steal a nigger, or a watermelon, or a Sunday-school +book, I ain't no ways particular how it's done so it's done.  What I +want is my nigger; or what I want is my watermelon; or what I want is my +Sunday-school book; and if a pick's the handiest thing, that's the thing +I'm a-going to dig that nigger or that watermelon or that Sunday-school +book out with; and I don't give a dead rat what the authorities thinks +about it nuther." + +"Well," he says, "there's excuse for picks and letting-on in a case like +this; if it warn't so, I wouldn't approve of it, nor I wouldn't stand by +and see the rules broke—because right is right, and wrong is wrong, +and a body ain't got no business doing wrong when he ain't ignorant and +knows better.  It might answer for you to dig Jim out with a pick, +without any letting on, because you don't know no better; but it +wouldn't for me, because I do know better.  Gimme a case-knife." + +He had his own by him, but I handed him mine.  He flung it down, and +says: + +"Gimme a case-knife." + +I didn't know just what to do—but then I thought.  I scratched around +amongst the old tools, and got a pickaxe and give it to him, and he took +it and went to work, and never said a word. + +He was always just that particular.  Full of principle. + +So then I got a shovel, and then we picked and shoveled, turn about, +and made the fur fly.  We stuck to it about a half an hour, which was as +long as we could stand up; but we had a good deal of a hole to show for +it. When I got up stairs I looked out at the window and see Tom doing +his level best with the lightning-rod, but he couldn't come it, his +hands was so sore.  At last he says: + +"It ain't no use, it can't be done.  What you reckon I better do?  Can't +you think of no way?" + +"Yes," I says, "but I reckon it ain't regular.  Come up the stairs, and +let on it's a lightning-rod." + +So he done it. + +Next day Tom stole a pewter spoon and a brass candlestick in the house, +for to make some pens for Jim out of, and six tallow candles; and I +hung around the nigger cabins and laid for a chance, and stole three tin +plates.  Tom says it wasn't enough; but I said nobody wouldn't ever see +the plates that Jim throwed out, because they'd fall in the dog-fennel +and jimpson weeds under the window-hole—then we could tote them back and +he could use them over again.  So Tom was satisfied.  Then he says: + +"Now, the thing to study out is, how to get the things to Jim." + +"Take them in through the hole," I says, "when we get it done." + +He only just looked scornful, and said something about nobody ever heard +of such an idiotic idea, and then he went to studying.  By and by he +said he had ciphered out two or three ways, but there warn't no need to +decide on any of them yet.  Said we'd got to post Jim first. + +That night we went down the lightning-rod a little after ten, and took +one of the candles along, and listened under the window-hole, and heard +Jim snoring; so we pitched it in, and it didn't wake him.  Then we +whirled in with the pick and shovel, and in about two hours and a half +the job was done.  We crept in under Jim's bed and into the cabin, and +pawed around and found the candle and lit it, and stood over Jim awhile, +and found him looking hearty and healthy, and then we woke him up gentle +and gradual.  He was so glad to see us he most cried; and called us +honey, and all the pet names he could think of; and was for having us +hunt up a cold-chisel to cut the chain off of his leg with right away, +and clearing out without losing any time.  But Tom he showed him how +unregular it would be, and set down and told him all about our plans, +and how we could alter them in a minute any time there was an alarm; and +not to be the least afraid, because we would see he got away, sure. + So Jim he said it was all right, and we set there and talked over old +times awhile, and then Tom asked a lot of questions, and when Jim told +him Uncle Silas come in every day or two to pray with him, and Aunt +Sally come in to see if he was comfortable and had plenty to eat, and +both of them was kind as they could be, Tom says: + +"Now I know how to fix it.  We'll send you some things by them." + +I said, "Don't do nothing of the kind; it's one of the most jackass +ideas I ever struck;" but he never paid no attention to me; went right +on.  It was his way when he'd got his plans set. + +So he told Jim how we'd have to smuggle in the rope-ladder pie and other +large things by Nat, the nigger that fed him, and he must be on the +lookout, and not be surprised, and not let Nat see him open them; and +we would put small things in uncle's coat-pockets and he must steal them +out; and we would tie things to aunt's apron-strings or put them in her +apron-pocket, if we got a chance; and told him what they would be and +what they was for.  And told him how to keep a journal on the shirt with +his blood, and all that. He told him everything.  Jim he couldn't see +no sense in the most of it, but he allowed we was white folks and knowed +better than him; so he was satisfied, and said he would do it all just +as Tom said. + +Jim had plenty corn-cob pipes and tobacco; so we had a right down good +sociable time; then we crawled out through the hole, and so home to +bed, with hands that looked like they'd been chawed.  Tom was in high +spirits. He said it was the best fun he ever had in his life, and the +most intellectural; and said if he only could see his way to it we would +keep it up all the rest of our lives and leave Jim to our children to +get out; for he believed Jim would come to like it better and better the +more he got used to it.  He said that in that way it could be strung out +to as much as eighty year, and would be the best time on record.  And he +said it would make us all celebrated that had a hand in it. + +In the morning we went out to the woodpile and chopped up the brass +candlestick into handy sizes, and Tom put them and the pewter spoon in +his pocket.  Then we went to the nigger cabins, and while I got Nat's +notice off, Tom shoved a piece of candlestick into the middle of a +corn-pone that was in Jim's pan, and we went along with Nat to see how +it would work, and it just worked noble; when Jim bit into it it most +mashed all his teeth out; and there warn't ever anything could a worked +better. Tom said so himself. Jim he never let on but what it was only +just a piece of rock or something like that that's always getting into +bread, you know; but after that he never bit into nothing but what he +jabbed his fork into it in three or four places first. + +And whilst we was a-standing there in the dimmish light, here comes a +couple of the hounds bulging in from under Jim's bed; and they kept on +piling in till there was eleven of them, and there warn't hardly room +in there to get your breath.  By jings, we forgot to fasten that lean-to +door!  The nigger Nat he only just hollered "Witches" once, and keeled +over on to the floor amongst the dogs, and begun to groan like he was +dying.  Tom jerked the door open and flung out a slab of Jim's meat, +and the dogs went for it, and in two seconds he was out himself and back +again and shut the door, and I knowed he'd fixed the other door too. +Then he went to work on the nigger, coaxing him and petting him, and +asking him if he'd been imagining he saw something again.  He raised up, +and blinked his eyes around, and says: + +"Mars Sid, you'll say I's a fool, but if I didn't b'lieve I see most a +million dogs, er devils, er some'n, I wisht I may die right heah in dese +tracks.  I did, mos' sholy.  Mars Sid, I felt um—I felt um, sah; dey +was all over me.  Dad fetch it, I jis' wisht I could git my han's on one +er dem witches jis' wunst—on'y jis' wunst—it's all I'd ast.  But mos'ly +I wisht dey'd lemme 'lone, I does." + +Tom says: + +"Well, I tell you what I think.  What makes them come here just at this +runaway nigger's breakfast-time?  It's because they're hungry; that's +the reason.  You make them a witch pie; that's the thing for you to +do." + +"But my lan', Mars Sid, how's I gwyne to make 'm a witch pie?  I doan' +know how to make it.  I hain't ever hearn er sich a thing b'fo'." + +"Well, then, I'll have to make it myself." + +"Will you do it, honey?—will you?  I'll wusshup de groun' und' yo' foot, +I will!" + +"All right, I'll do it, seeing it's you, and you've been good to us and +showed us the runaway nigger.  But you got to be mighty careful.  When +we come around, you turn your back; and then whatever we've put in the +pan, don't you let on you see it at all.  And don't you look when Jim +unloads the pan—something might happen, I don't know what.  And above +all, don't you handle the witch-things." + +"Hannel 'M, Mars Sid?  What is you a-talkin' 'bout?  I wouldn' +lay de weight er my finger on um, not f'r ten hund'd thous'n billion +dollars, I wouldn't." + + + + +CHAPTER XXXVII. + +THAT was all fixed.  So then we went away and went to the rubbage-pile +in the back yard, where they keep the old boots, and rags, and pieces +of bottles, and wore-out tin things, and all such truck, and scratched +around and found an old tin washpan, and stopped up the holes as well as +we could, to bake the pie in, and took it down cellar and stole it full +of flour and started for breakfast, and found a couple of shingle-nails +that Tom said would be handy for a prisoner to scrabble his name and +sorrows on the dungeon walls with, and dropped one of them in Aunt +Sally's apron-pocket which was hanging on a chair, and t'other we stuck +in the band of Uncle Silas's hat, which was on the bureau, because we +heard the children say their pa and ma was going to the runaway nigger's +house this morning, and then went to breakfast, and Tom dropped the +pewter spoon in Uncle Silas's coat-pocket, and Aunt Sally wasn't come +yet, so we had to wait a little while. + +And when she come she was hot and red and cross, and couldn't hardly +wait for the blessing; and then she went to sluicing out coffee with one +hand and cracking the handiest child's head with her thimble with the +other, and says: + +"I've hunted high and I've hunted low, and it does beat all what has +become of your other shirt." + +My heart fell down amongst my lungs and livers and things, and a hard +piece of corn-crust started down my throat after it and got met on the +road with a cough, and was shot across the table, and took one of the +children in the eye and curled him up like a fishing-worm, and let a cry +out of him the size of a warwhoop, and Tom he turned kinder blue around +the gills, and it all amounted to a considerable state of things for +about a quarter of a minute or as much as that, and I would a sold out +for half price if there was a bidder.  But after that we was all right +again—it was the sudden surprise of it that knocked us so kind of cold. +Uncle Silas he says: + +"It's most uncommon curious, I can't understand it.  I know perfectly +well I took it off, because—" + +"Because you hain't got but one on.  Just listen at the man!  I know +you took it off, and know it by a better way than your wool-gethering +memory, too, because it was on the clo's-line yesterday—I see it there +myself. But it's gone, that's the long and the short of it, and you'll +just have to change to a red flann'l one till I can get time to make a +new one. And it 'll be the third I've made in two years.  It just keeps +a body on the jump to keep you in shirts; and whatever you do manage to +do with 'm all is more'n I can make out.  A body 'd think you would +learn to take some sort of care of 'em at your time of life." + +"I know it, Sally, and I do try all I can.  But it oughtn't to be +altogether my fault, because, you know, I don't see them nor have +nothing to do with them except when they're on me; and I don't believe +I've ever lost one of them off of me." + +"Well, it ain't your fault if you haven't, Silas; you'd a done it +if you could, I reckon.  And the shirt ain't all that's gone, nuther. + Ther's a spoon gone; and that ain't all.  There was ten, and now +ther's only nine. The calf got the shirt, I reckon, but the calf never +took the spoon, that's certain." + +"Why, what else is gone, Sally?" + +"Ther's six candles gone—that's what.  The rats could a got the +candles, and I reckon they did; I wonder they don't walk off with the +whole place, the way you're always going to stop their holes and don't +do it; and if they warn't fools they'd sleep in your hair, Silas—you'd +never find it out; but you can't lay the spoon on the rats, and that I +know." + +"Well, Sally, I'm in fault, and I acknowledge it; I've been remiss; but +I won't let to-morrow go by without stopping up them holes." + +"Oh, I wouldn't hurry; next year 'll do.  Matilda Angelina Araminta +Phelps!" + +Whack comes the thimble, and the child snatches her claws out of the +sugar-bowl without fooling around any.  Just then the nigger woman steps +on to the passage, and says: + +"Missus, dey's a sheet gone." + +"A sheet gone!  Well, for the land's sake!" + +"I'll stop up them holes to-day," says Uncle Silas, looking sorrowful. + +"Oh, do shet up!—s'pose the rats took the sheet?  where's it gone, +Lize?" + +"Clah to goodness I hain't no notion, Miss' Sally.  She wuz on de +clo'sline yistiddy, but she done gone:  she ain' dah no mo' now." + +"I reckon the world is coming to an end.  I never see the beat of it +in all my born days.  A shirt, and a sheet, and a spoon, and six can—" + +"Missus," comes a young yaller wench, "dey's a brass cannelstick +miss'n." + +"Cler out from here, you hussy, er I'll take a skillet to ye!" + +Well, she was just a-biling.  I begun to lay for a chance; I reckoned +I would sneak out and go for the woods till the weather moderated.  She +kept a-raging right along, running her insurrection all by herself, and +everybody else mighty meek and quiet; and at last Uncle Silas, looking +kind of foolish, fishes up that spoon out of his pocket.  She stopped, +with her mouth open and her hands up; and as for me, I wished I was in +Jeruslem or somewheres. But not long, because she says: + +"It's just as I expected.  So you had it in your pocket all the time; +and like as not you've got the other things there, too.  How'd it get +there?" + +"I reely don't know, Sally," he says, kind of apologizing, "or you know +I would tell.  I was a-studying over my text in Acts Seventeen before +breakfast, and I reckon I put it in there, not noticing, meaning to put +my Testament in, and it must be so, because my Testament ain't in; but +I'll go and see; and if the Testament is where I had it, I'll know I +didn't put it in, and that will show that I laid the Testament down and +took up the spoon, and—" + +"Oh, for the land's sake!  Give a body a rest!  Go 'long now, the whole +kit and biling of ye; and don't come nigh me again till I've got back my +peace of mind." + +I'D a heard her if she'd a said it to herself, let alone speaking it +out; and I'd a got up and obeyed her if I'd a been dead.  As we was +passing through the setting-room the old man he took up his hat, and the +shingle-nail fell out on the floor, and he just merely picked it up and +laid it on the mantel-shelf, and never said nothing, and went out.  Tom +see him do it, and remembered about the spoon, and says: + +"Well, it ain't no use to send things by him no more, he ain't +reliable." Then he says:  "But he done us a good turn with the spoon, +anyway, without knowing it, and so we'll go and do him one without him +knowing it—stop up his rat-holes." + +There was a noble good lot of them down cellar, and it took us a whole +hour, but we done the job tight and good and shipshape.  Then we heard +steps on the stairs, and blowed out our light and hid; and here comes +the old man, with a candle in one hand and a bundle of stuff in t'other, +looking as absent-minded as year before last.  He went a mooning around, +first to one rat-hole and then another, till he'd been to them all. + Then he stood about five minutes, picking tallow-drip off of his candle +and thinking.  Then he turns off slow and dreamy towards the stairs, +saying: + +"Well, for the life of me I can't remember when I done it.  I could +show her now that I warn't to blame on account of the rats.  But never +mind—let it go.  I reckon it wouldn't do no good." + +And so he went on a-mumbling up stairs, and then we left.  He was a +mighty nice old man.  And always is. + +Tom was a good deal bothered about what to do for a spoon, but he said +we'd got to have it; so he took a think.  When he had ciphered it out +he told me how we was to do; then we went and waited around the +spoon-basket till we see Aunt Sally coming, and then Tom went to +counting the spoons and laying them out to one side, and I slid one of +them up my sleeve, and Tom says: + +"Why, Aunt Sally, there ain't but nine spoons yet." + +She says: + +"Go 'long to your play, and don't bother me.  I know better, I counted +'m myself." + +"Well, I've counted them twice, Aunty, and I can't make but nine." + +She looked out of all patience, but of course she come to count—anybody +would. + +"I declare to gracious ther' ain't but nine!" she says.  "Why, what in +the world—plague take the things, I'll count 'm again." + +So I slipped back the one I had, and when she got done counting, she +says: + +"Hang the troublesome rubbage, ther's ten now!" and she looked huffy +and bothered both.  But Tom says: + +"Why, Aunty, I don't think there's ten." + +"You numskull, didn't you see me count 'm?" + +"I know, but—" + +"Well, I'll count 'm again." + +So I smouched one, and they come out nine, same as the other time. + Well, she was in a tearing way—just a-trembling all over, she was so +mad.  But she counted and counted till she got that addled she'd start +to count in the basket for a spoon sometimes; and so, three times they +come out right, and three times they come out wrong.  Then she grabbed +up the basket and slammed it across the house and knocked the cat +galley-west; and she said cle'r out and let her have some peace, and if +we come bothering around her again betwixt that and dinner she'd skin +us.  So we had the odd spoon, and dropped it in her apron-pocket whilst +she was a-giving us our sailing orders, and Jim got it all right, along +with her shingle nail, before noon.  We was very well satisfied with +this business, and Tom allowed it was worth twice the trouble it took, +because he said now she couldn't ever count them spoons twice alike +again to save her life; and wouldn't believe she'd counted them right if +she did; and said that after she'd about counted her head off for the +next three days he judged she'd give it up and offer to kill anybody +that wanted her to ever count them any more. + +So we put the sheet back on the line that night, and stole one out of +her closet; and kept on putting it back and stealing it again for a +couple of days till she didn't know how many sheets she had any more, +and she didn't care, and warn't a-going to bullyrag the rest of her +soul out about it, and wouldn't count them again not to save her life; +she druther die first. + +So we was all right now, as to the shirt and the sheet and the spoon +and the candles, by the help of the calf and the rats and the mixed-up +counting; and as to the candlestick, it warn't no consequence, it would +blow over by and by. + +But that pie was a job; we had no end of trouble with that pie.  We +fixed it up away down in the woods, and cooked it there; and we got it +done at last, and very satisfactory, too; but not all in one day; and we +had to use up three wash-pans full of flour before we got through, and +we got burnt pretty much all over, in places, and eyes put out with +the smoke; because, you see, we didn't want nothing but a crust, and we +couldn't prop it up right, and she would always cave in.  But of course +we thought of the right way at last—which was to cook the ladder, too, +in the pie.  So then we laid in with Jim the second night, and tore +up the sheet all in little strings and twisted them together, and long +before daylight we had a lovely rope that you could a hung a person +with.  We let on it took nine months to make it. + +And in the forenoon we took it down to the woods, but it wouldn't go +into the pie.  Being made of a whole sheet, that way, there was rope +enough for forty pies if we'd a wanted them, and plenty left over +for soup, or sausage, or anything you choose.  We could a had a whole +dinner. + +But we didn't need it.  All we needed was just enough for the pie, and +so we throwed the rest away.  We didn't cook none of the pies in the +wash-pan—afraid the solder would melt; but Uncle Silas he had a noble +brass warming-pan which he thought considerable of, because it belonged +to one of his ancesters with a long wooden handle that come over from +England with William the Conqueror in the Mayflower or one of them early +ships and was hid away up garret with a lot of other old pots and things +that was valuable, not on account of being any account, because they +warn't, but on account of them being relicts, you know, and we snaked +her out, private, and took her down there, but she failed on the first +pies, because we didn't know how, but she come up smiling on the last +one.  We took and lined her with dough, and set her in the coals, and +loaded her up with rag rope, and put on a dough roof, and shut down the +lid, and put hot embers on top, and stood off five foot, with the long +handle, cool and comfortable, and in fifteen minutes she turned out a +pie that was a satisfaction to look at. But the person that et it would +want to fetch a couple of kags of toothpicks along, for if that rope +ladder wouldn't cramp him down to business I don't know nothing what I'm +talking about, and lay him in enough stomach-ache to last him till next +time, too. + +Nat didn't look when we put the witch pie in Jim's pan; and we put the +three tin plates in the bottom of the pan under the vittles; and so Jim +got everything all right, and as soon as he was by himself he busted +into the pie and hid the rope ladder inside of his straw tick, +and scratched some marks on a tin plate and throwed it out of the +window-hole. + + + + +CHAPTER XXXVIII. + +MAKING them pens was a distressid tough job, and so was the saw; and Jim +allowed the inscription was going to be the toughest of all.  That's the +one which the prisoner has to scrabble on the wall.  But he had to have +it; Tom said he'd got to; there warn't no case of a state prisoner not +scrabbling his inscription to leave behind, and his coat of arms. + +"Look at Lady Jane Grey," he says; "look at Gilford Dudley; look at old +Northumberland!  Why, Huck, s'pose it is considerble trouble?—what +you going to do?—how you going to get around it?  Jim's got to do his +inscription and coat of arms.  They all do." + +Jim says: + +"Why, Mars Tom, I hain't got no coat o' arm; I hain't got nuffn but dish +yer ole shirt, en you knows I got to keep de journal on dat." + +"Oh, you don't understand, Jim; a coat of arms is very different." + +"Well," I says, "Jim's right, anyway, when he says he ain't got no coat +of arms, because he hain't." + +"I reckon I knowed that," Tom says, "but you bet he'll have one before +he goes out of this—because he's going out right, and there ain't +going to be no flaws in his record." + +So whilst me and Jim filed away at the pens on a brickbat apiece, Jim +a-making his'n out of the brass and I making mine out of the spoon, +Tom set to work to think out the coat of arms.  By and by he said he'd +struck so many good ones he didn't hardly know which to take, but there +was one which he reckoned he'd decide on.  He says: + +"On the scutcheon we'll have a bend or in the dexter base, a saltire +murrey in the fess, with a dog, couchant, for common charge, and under +his foot a chain embattled, for slavery, with a chevron vert in a +chief engrailed, and three invected lines on a field azure, with the +nombril points rampant on a dancette indented; crest, a runaway nigger, +sable, with his bundle over his shoulder on a bar sinister; and a +couple of gules for supporters, which is you and me; motto, Maggiore +Fretta, Minore Otto.  Got it out of a book—means the more haste the +less speed." + +"Geewhillikins," I says, "but what does the rest of it mean?" + +"We ain't got no time to bother over that," he says; "we got to dig in +like all git-out." + +"Well, anyway," I says, "what's some of it?  What's a fess?" + +"A fess—a fess is—you don't need to know what a fess is.  I'll show +him how to make it when he gets to it." + +"Shucks, Tom," I says, "I think you might tell a person.  What's a bar +sinister?" + +"Oh, I don't know.  But he's got to have it.  All the nobility does." + +That was just his way.  If it didn't suit him to explain a thing to you, +he wouldn't do it.  You might pump at him a week, it wouldn't make no +difference. + +He'd got all that coat of arms business fixed, so now he started in to +finish up the rest of that part of the work, which was to plan out a +mournful inscription—said Jim got to have one, like they all done.  He +made up a lot, and wrote them out on a paper, and read them off, so: + +1.  Here a captive heart busted. 2.  Here a poor prisoner, forsook by +the world and friends, fretted his sorrowful life. 3.  Here a lonely +heart broke, and a worn spirit went to its rest, after thirty-seven +years of solitary captivity. 4.  Here, homeless and friendless, after +thirty-seven years of bitter captivity, perished a noble stranger, +natural son of Louis XIV. + +Tom's voice trembled whilst he was reading them, and he most broke down. +When he got done he couldn't no way make up his mind which one for Jim +to scrabble on to the wall, they was all so good; but at last he allowed +he would let him scrabble them all on.  Jim said it would take him a +year to scrabble such a lot of truck on to the logs with a nail, and he +didn't know how to make letters, besides; but Tom said he would block +them out for him, and then he wouldn't have nothing to do but just +follow the lines.  Then pretty soon he says: + +"Come to think, the logs ain't a-going to do; they don't have log walls +in a dungeon:  we got to dig the inscriptions into a rock.  We'll fetch +a rock." + +Jim said the rock was worse than the logs; he said it would take him +such a pison long time to dig them into a rock he wouldn't ever get out. + But Tom said he would let me help him do it.  Then he took a look to +see how me and Jim was getting along with the pens.  It was most pesky +tedious hard work and slow, and didn't give my hands no show to get +well of the sores, and we didn't seem to make no headway, hardly; so Tom +says: + +"I know how to fix it.  We got to have a rock for the coat of arms and +mournful inscriptions, and we can kill two birds with that same rock. +There's a gaudy big grindstone down at the mill, and we'll smouch it, +and carve the things on it, and file out the pens and the saw on it, +too." + +It warn't no slouch of an idea; and it warn't no slouch of a grindstone +nuther; but we allowed we'd tackle it.  It warn't quite midnight yet, +so we cleared out for the mill, leaving Jim at work.  We smouched the +grindstone, and set out to roll her home, but it was a most nation tough +job. Sometimes, do what we could, we couldn't keep her from falling +over, and she come mighty near mashing us every time.  Tom said she was +going to get one of us, sure, before we got through.  We got her half +way; and then we was plumb played out, and most drownded with sweat.  We +see it warn't no use; we got to go and fetch Jim. So he raised up his +bed and slid the chain off of the bed-leg, and wrapt it round and round +his neck, and we crawled out through our hole and down there, and Jim +and me laid into that grindstone and walked her along like nothing; and +Tom superintended.  He could out-superintend any boy I ever see.  He +knowed how to do everything. + +Our hole was pretty big, but it warn't big enough to get the grindstone +through; but Jim he took the pick and soon made it big enough.  Then Tom +marked out them things on it with the nail, and set Jim to work on them, +with the nail for a chisel and an iron bolt from the rubbage in the +lean-to for a hammer, and told him to work till the rest of his candle +quit on him, and then he could go to bed, and hide the grindstone under +his straw tick and sleep on it.  Then we helped him fix his chain back +on the bed-leg, and was ready for bed ourselves.  But Tom thought of +something, and says: + +"You got any spiders in here, Jim?" + +"No, sah, thanks to goodness I hain't, Mars Tom." + +"All right, we'll get you some." + +"But bless you, honey, I doan' want none.  I's afeard un um.  I jis' +'s soon have rattlesnakes aroun'." + +Tom thought a minute or two, and says: + +"It's a good idea.  And I reckon it's been done.  It must a been done; +it stands to reason.  Yes, it's a prime good idea.  Where could you keep +it?" + +"Keep what, Mars Tom?" + +"Why, a rattlesnake." + +"De goodness gracious alive, Mars Tom!  Why, if dey was a rattlesnake to +come in heah I'd take en bust right out thoo dat log wall, I would, wid +my head." + +"Why, Jim, you wouldn't be afraid of it after a little.  You could tame +it." + +"Tame it!" + +"Yes—easy enough.  Every animal is grateful for kindness and petting, +and they wouldn't think of hurting a person that pets them.  Any book +will tell you that.  You try—that's all I ask; just try for two or three +days. Why, you can get him so, in a little while, that he'll love you; +and sleep with you; and won't stay away from you a minute; and will let +you wrap him round your neck and put his head in your mouth." + +"Please, Mars Tom—doan' talk so!  I can't stan' it!  He'd let +me shove his head in my mouf—fer a favor, hain't it?  I lay he'd wait a +pow'ful long time 'fo' I ast him.  En mo' en dat, I doan' want him +to sleep wid me." + +"Jim, don't act so foolish.  A prisoner's got to have some kind of a +dumb pet, and if a rattlesnake hain't ever been tried, why, there's more +glory to be gained in your being the first to ever try it than any other +way you could ever think of to save your life." + +"Why, Mars Tom, I doan' want no sich glory.  Snake take 'n bite +Jim's chin off, den whah is de glory?  No, sah, I doan' want no sich +doin's." + +"Blame it, can't you try?  I only want you to try—you needn't keep +it up if it don't work." + +"But de trouble all done ef de snake bite me while I's a tryin' him. +Mars Tom, I's willin' to tackle mos' anything 'at ain't onreasonable, +but ef you en Huck fetches a rattlesnake in heah for me to tame, I's +gwyne to leave, dat's shore." + +"Well, then, let it go, let it go, if you're so bull-headed about it. + We can get you some garter-snakes, and you can tie some buttons on +their tails, and let on they're rattlesnakes, and I reckon that 'll have +to do." + +"I k'n stan' dem, Mars Tom, but blame' 'f I couldn' get along widout +um, I tell you dat.  I never knowed b'fo' 't was so much bother and +trouble to be a prisoner." + +"Well, it always is when it's done right.  You got any rats around +here?" + +"No, sah, I hain't seed none." + +"Well, we'll get you some rats." + +"Why, Mars Tom, I doan' want no rats.  Dey's de dadblamedest creturs +to 'sturb a body, en rustle roun' over 'im, en bite his feet, when he's +tryin' to sleep, I ever see.  No, sah, gimme g'yarter-snakes, 'f I's +got to have 'm, but doan' gimme no rats; I hain' got no use f'r um, +skasely." + +"But, Jim, you got to have 'em—they all do.  So don't make no more +fuss about it.  Prisoners ain't ever without rats.  There ain't no +instance of it.  And they train them, and pet them, and learn them +tricks, and they get to be as sociable as flies.  But you got to play +music to them.  You got anything to play music on?" + +"I ain' got nuffn but a coase comb en a piece o' paper, en a juice-harp; +but I reck'n dey wouldn' take no stock in a juice-harp." + +"Yes they would they don't care what kind of music 'tis.  A +jews-harp's plenty good enough for a rat.  All animals like music—in a +prison they dote on it.  Specially, painful music; and you can't get no +other kind out of a jews-harp.  It always interests them; they come out +to see what's the matter with you.  Yes, you're all right; you're fixed +very well.  You want to set on your bed nights before you go to sleep, +and early in the mornings, and play your jews-harp; play 'The Last Link +is Broken'—that's the thing that 'll scoop a rat quicker 'n anything +else; and when you've played about two minutes you'll see all the rats, +and the snakes, and spiders, and things begin to feel worried about you, +and come.  And they'll just fairly swarm over you, and have a noble good +time." + +"Yes, dey will, I reck'n, Mars Tom, but what kine er time is Jim +havin'? Blest if I kin see de pint.  But I'll do it ef I got to.  I +reck'n I better keep de animals satisfied, en not have no trouble in de +house." + +Tom waited to think it over, and see if there wasn't nothing else; and +pretty soon he says: + +"Oh, there's one thing I forgot.  Could you raise a flower here, do you +reckon?" + +"I doan know but maybe I could, Mars Tom; but it's tolable dark in heah, +en I ain' got no use f'r no flower, nohow, en she'd be a pow'ful sight +o' trouble." + +"Well, you try it, anyway.  Some other prisoners has done it." + +"One er dem big cat-tail-lookin' mullen-stalks would grow in heah, Mars +Tom, I reck'n, but she wouldn't be wuth half de trouble she'd coss." + +"Don't you believe it.  We'll fetch you a little one and you plant it in +the corner over there, and raise it.  And don't call it mullen, call it +Pitchiola—that's its right name when it's in a prison.  And you want to +water it with your tears." + +"Why, I got plenty spring water, Mars Tom." + +"You don't want spring water; you want to water it with your tears. + It's the way they always do." + +"Why, Mars Tom, I lay I kin raise one er dem mullen-stalks twyste wid +spring water whiles another man's a start'n one wid tears." + +"That ain't the idea.  You got to do it with tears." + +"She'll die on my han's, Mars Tom, she sholy will; kase I doan' skasely +ever cry." + +So Tom was stumped.  But he studied it over, and then said Jim would +have to worry along the best he could with an onion.  He promised +he would go to the nigger cabins and drop one, private, in Jim's +coffee-pot, in the morning. Jim said he would "jis' 's soon have +tobacker in his coffee;" and found so much fault with it, and with the +work and bother of raising the mullen, and jews-harping the rats, and +petting and flattering up the snakes and spiders and things, on top of +all the other work he had to do on pens, and inscriptions, and journals, +and things, which made it more trouble and worry and responsibility to +be a prisoner than anything he ever undertook, that Tom most lost all +patience with him; and said he was just loadened down with more gaudier +chances than a prisoner ever had in the world to make a name for +himself, and yet he didn't know enough to appreciate them, and they was +just about wasted on him.  So Jim he was sorry, and said he wouldn't +behave so no more, and then me and Tom shoved for bed. + + + + +CHAPTER XXXIX. + +IN the morning we went up to the village and bought a wire rat-trap and +fetched it down, and unstopped the best rat-hole, and in about an hour +we had fifteen of the bulliest kind of ones; and then we took it and put +it in a safe place under Aunt Sally's bed.  But while we was gone for +spiders little Thomas Franklin Benjamin Jefferson Elexander Phelps found +it there, and opened the door of it to see if the rats would come out, +and they did; and Aunt Sally she come in, and when we got back she was +a-standing on top of the bed raising Cain, and the rats was doing what +they could to keep off the dull times for her.  So she took and dusted +us both with the hickry, and we was as much as two hours catching +another fifteen or sixteen, drat that meddlesome cub, and they warn't +the likeliest, nuther, because the first haul was the pick of the flock. + I never see a likelier lot of rats than what that first haul was. + +We got a splendid stock of sorted spiders, and bugs, and frogs, and +caterpillars, and one thing or another; and we like to got a hornet's +nest, but we didn't.  The family was at home.  We didn't give it right +up, but stayed with them as long as we could; because we allowed we'd +tire them out or they'd got to tire us out, and they done it.  Then we +got allycumpain and rubbed on the places, and was pretty near all right +again, but couldn't set down convenient.  And so we went for the snakes, +and grabbed a couple of dozen garters and house-snakes, and put them in +a bag, and put it in our room, and by that time it was supper-time, and +a rattling good honest day's work:  and hungry?—oh, no, I reckon not! + And there warn't a blessed snake up there when we went back—we didn't +half tie the sack, and they worked out somehow, and left.  But it didn't +matter much, because they was still on the premises somewheres.  So +we judged we could get some of them again.  No, there warn't no real +scarcity of snakes about the house for a considerable spell.  You'd see +them dripping from the rafters and places every now and then; and they +generly landed in your plate, or down the back of your neck, and most +of the time where you didn't want them.  Well, they was handsome and +striped, and there warn't no harm in a million of them; but that never +made no difference to Aunt Sally; she despised snakes, be the breed what +they might, and she couldn't stand them no way you could fix it; and +every time one of them flopped down on her, it didn't make no difference +what she was doing, she would just lay that work down and light out.  I +never see such a woman.  And you could hear her whoop to Jericho.  You +couldn't get her to take a-holt of one of them with the tongs.  And if +she turned over and found one in bed she would scramble out and lift a +howl that you would think the house was afire.  She disturbed the old +man so that he said he could most wish there hadn't ever been no snakes +created.  Why, after every last snake had been gone clear out of the +house for as much as a week Aunt Sally warn't over it yet; she warn't +near over it; when she was setting thinking about something you could +touch her on the back of her neck with a feather and she would jump +right out of her stockings.  It was very curious.  But Tom said all +women was just so.  He said they was made that way for some reason or +other. + +We got a licking every time one of our snakes come in her way, and she +allowed these lickings warn't nothing to what she would do if we ever +loaded up the place again with them.  I didn't mind the lickings, +because they didn't amount to nothing; but I minded the trouble we +had to lay in another lot.  But we got them laid in, and all the other +things; and you never see a cabin as blithesome as Jim's was when they'd +all swarm out for music and go for him.  Jim didn't like the spiders, +and the spiders didn't like Jim; and so they'd lay for him, and make it +mighty warm for him.  And he said that between the rats and the snakes +and the grindstone there warn't no room in bed for him, skasely; and +when there was, a body couldn't sleep, it was so lively, and it was +always lively, he said, because they never all slept at one time, but +took turn about, so when the snakes was asleep the rats was on deck, and +when the rats turned in the snakes come on watch, so he always had one +gang under him, in his way, and t'other gang having a circus over him, +and if he got up to hunt a new place the spiders would take a chance at +him as he crossed over. He said if he ever got out this time he wouldn't +ever be a prisoner again, not for a salary. + +Well, by the end of three weeks everything was in pretty good shape. + The shirt was sent in early, in a pie, and every time a rat bit Jim he +would get up and write a little in his journal whilst the ink was fresh; +the pens was made, the inscriptions and so on was all carved on the +grindstone; the bed-leg was sawed in two, and we had et up the sawdust, +and it give us a most amazing stomach-ache.  We reckoned we was all +going to die, but didn't.  It was the most undigestible sawdust I ever +see; and Tom said the same. + +But as I was saying, we'd got all the work done now, at last; and we was +all pretty much fagged out, too, but mainly Jim.  The old man had wrote +a couple of times to the plantation below Orleans to come and get their +runaway nigger, but hadn't got no answer, because there warn't no such +plantation; so he allowed he would advertise Jim in the St. Louis and +New Orleans papers; and when he mentioned the St. Louis ones it give me +the cold shivers, and I see we hadn't no time to lose. So Tom said, now +for the nonnamous letters. + +"What's them?"  I says. + +"Warnings to the people that something is up.  Sometimes it's done one +way, sometimes another.  But there's always somebody spying around that +gives notice to the governor of the castle.  When Louis XVI. was going +to light out of the Tooleries, a servant-girl done it.  It's a very good +way, and so is the nonnamous letters.  We'll use them both.  And it's +usual for the prisoner's mother to change clothes with him, and she +stays in, and he slides out in her clothes.  We'll do that, too." + +"But looky here, Tom, what do we want to warn anybody for that +something's up?  Let them find it out for themselves—it's their +lookout." + +"Yes, I know; but you can't depend on them.  It's the way they've acted +from the very start—left us to do everything.  They're so confiding +and mullet-headed they don't take notice of nothing at all.  So if we +don't give them notice there won't be nobody nor nothing to interfere +with us, and so after all our hard work and trouble this escape 'll go +off perfectly flat; won't amount to nothing—won't be nothing to it." + +"Well, as for me, Tom, that's the way I'd like." + +"Shucks!" he says, and looked disgusted.  So I says: + +"But I ain't going to make no complaint.  Any way that suits you suits +me. What you going to do about the servant-girl?" + +"You'll be her.  You slide in, in the middle of the night, and hook that +yaller girl's frock." + +"Why, Tom, that 'll make trouble next morning; because, of course, she +prob'bly hain't got any but that one." + +"I know; but you don't want it but fifteen minutes, to carry the +nonnamous letter and shove it under the front door." + +"All right, then, I'll do it; but I could carry it just as handy in my +own togs." + +"You wouldn't look like a servant-girl then, would you?" + +"No, but there won't be nobody to see what I look like, anyway." + +"That ain't got nothing to do with it.  The thing for us to do is just +to do our duty, and not worry about whether anybody sees us do it or +not. Hain't you got no principle at all?" + +"All right, I ain't saying nothing; I'm the servant-girl.  Who's Jim's +mother?" + +"I'm his mother.  I'll hook a gown from Aunt Sally." + +"Well, then, you'll have to stay in the cabin when me and Jim leaves." + +"Not much.  I'll stuff Jim's clothes full of straw and lay it on his bed +to represent his mother in disguise, and Jim 'll take the nigger woman's +gown off of me and wear it, and we'll all evade together.  When a +prisoner of style escapes it's called an evasion.  It's always called +so when a king escapes, f'rinstance.  And the same with a king's son; +it don't make no difference whether he's a natural one or an unnatural +one." + +So Tom he wrote the nonnamous letter, and I smouched the yaller wench's +frock that night, and put it on, and shoved it under the front door, the +way Tom told me to.  It said: + +Beware.  Trouble is brewing.  Keep a sharp lookout. Unknown Friend. + +Next night we stuck a picture, which Tom drawed in blood, of a skull and +crossbones on the front door; and next night another one of a coffin on +the back door.  I never see a family in such a sweat.  They couldn't a +been worse scared if the place had a been full of ghosts laying for them +behind everything and under the beds and shivering through the air.  If +a door banged, Aunt Sally she jumped and said "ouch!" if anything fell, +she jumped and said "ouch!" if you happened to touch her, when she +warn't noticing, she done the same; she couldn't face noway and be +satisfied, because she allowed there was something behind her every +time—so she was always a-whirling around sudden, and saying "ouch," and +before she'd got two-thirds around she'd whirl back again, and say it +again; and she was afraid to go to bed, but she dasn't set up.  So the +thing was working very well, Tom said; he said he never see a thing work +more satisfactory. He said it showed it was done right. + +So he said, now for the grand bulge!  So the very next morning at the +streak of dawn we got another letter ready, and was wondering what we +better do with it, because we heard them say at supper they was going +to have a nigger on watch at both doors all night.  Tom he went down the +lightning-rod to spy around; and the nigger at the back door was asleep, +and he stuck it in the back of his neck and come back.  This letter +said: + +Don't betray me, I wish to be your friend.  There is a desprate gang of +cutthroats from over in the Indian Territory going to steal your runaway +nigger to-night, and they have been trying to scare you so as you will +stay in the house and not bother them.  I am one of the gang, but have +got religgion and wish to quit it and lead an honest life again, and +will betray the helish design. They will sneak down from northards, +along the fence, at midnight exact, with a false key, and go in the +nigger's cabin to get him. I am to be off a piece and blow a tin horn +if I see any danger; but stead of that I will baa like a sheep soon as +they get in and not blow at all; then whilst they are getting his +chains loose, you slip there and lock them in, and can kill them at your +leasure.  Don't do anything but just the way I am telling you, if you do +they will suspicion something and raise whoop-jamboreehoo. I do not wish +any reward but to know I have done the right thing. Unknown Friend. + + + + +CHAPTER XL. + +WE was feeling pretty good after breakfast, and took my canoe and went +over the river a-fishing, with a lunch, and had a good time, and took a +look at the raft and found her all right, and got home late to supper, +and found them in such a sweat and worry they didn't know which end they +was standing on, and made us go right off to bed the minute we was done +supper, and wouldn't tell us what the trouble was, and never let on a +word about the new letter, but didn't need to, because we knowed as much +about it as anybody did, and as soon as we was half up stairs and her +back was turned we slid for the cellar cupboard and loaded up a good +lunch and took it up to our room and went to bed, and got up about +half-past eleven, and Tom put on Aunt Sally's dress that he stole and +was going to start with the lunch, but says: + +"Where's the butter?" + +"I laid out a hunk of it," I says, "on a piece of a corn-pone." + +"Well, you left it laid out, then—it ain't here." + +"We can get along without it," I says. + +"We can get along with it, too," he says; "just you slide down cellar +and fetch it.  And then mosey right down the lightning-rod and come +along. I'll go and stuff the straw into Jim's clothes to represent his +mother in disguise, and be ready to baa like a sheep and shove soon as +you get there." + +So out he went, and down cellar went I. The hunk of butter, big as +a person's fist, was where I had left it, so I took up the slab of +corn-pone with it on, and blowed out my light, and started up stairs +very stealthy, and got up to the main floor all right, but here comes +Aunt Sally with a candle, and I clapped the truck in my hat, and clapped +my hat on my head, and the next second she see me; and she says: + +"You been down cellar?" + +"Yes'm." + +"What you been doing down there?" + +"Noth'n." + +"Noth'n!" + +"No'm." + +"Well, then, what possessed you to go down there this time of night?" + +"I don't know 'm." + +"You don't know?  Don't answer me that way. Tom, I want to know what +you been doing down there." + +"I hain't been doing a single thing, Aunt Sally, I hope to gracious if I +have." + +I reckoned she'd let me go now, and as a generl thing she would; but I +s'pose there was so many strange things going on she was just in a sweat +about every little thing that warn't yard-stick straight; so she says, +very decided: + +"You just march into that setting-room and stay there till I come.  You +been up to something you no business to, and I lay I'll find out what it +is before I'M done with you." + +So she went away as I opened the door and walked into the setting-room. +My, but there was a crowd there!  Fifteen farmers, and every one of them +had a gun.  I was most powerful sick, and slunk to a chair and set down. +They was setting around, some of them talking a little, in a low voice, +and all of them fidgety and uneasy, but trying to look like they warn't; +but I knowed they was, because they was always taking off their hats, +and putting them on, and scratching their heads, and changing their +seats, and fumbling with their buttons.  I warn't easy myself, but I +didn't take my hat off, all the same. + +I did wish Aunt Sally would come, and get done with me, and lick me, if +she wanted to, and let me get away and tell Tom how we'd overdone this +thing, and what a thundering hornet's-nest we'd got ourselves into, so +we could stop fooling around straight off, and clear out with Jim before +these rips got out of patience and come for us. + +At last she come and begun to ask me questions, but I couldn't answer +them straight, I didn't know which end of me was up; because these men +was in such a fidget now that some was wanting to start right NOW and +lay for them desperadoes, and saying it warn't but a few minutes to +midnight; and others was trying to get them to hold on and wait for the +sheep-signal; and here was Aunty pegging away at the questions, and +me a-shaking all over and ready to sink down in my tracks I was +that scared; and the place getting hotter and hotter, and the butter +beginning to melt and run down my neck and behind my ears; and pretty +soon, when one of them says, "I'M for going and getting in the cabin +first and right now, and catching them when they come," I most +dropped; and a streak of butter come a-trickling down my forehead, and +Aunt Sally she see it, and turns white as a sheet, and says: + +"For the land's sake, what is the matter with the child?  He's got the +brain-fever as shore as you're born, and they're oozing out!" + +And everybody runs to see, and she snatches off my hat, and out comes +the bread and what was left of the butter, and she grabbed me, and +hugged me, and says: + +"Oh, what a turn you did give me! and how glad and grateful I am it +ain't no worse; for luck's against us, and it never rains but it pours, +and when I see that truck I thought we'd lost you, for I knowed by +the color and all it was just like your brains would be if—Dear, +dear, whyd'nt you tell me that was what you'd been down there for, I +wouldn't a cared.  Now cler out to bed, and don't lemme see no more of +you till morning!" + +I was up stairs in a second, and down the lightning-rod in another one, +and shinning through the dark for the lean-to.  I couldn't hardly get my +words out, I was so anxious; but I told Tom as quick as I could we must +jump for it now, and not a minute to lose—the house full of men, yonder, +with guns! + +His eyes just blazed; and he says: + +"No!—is that so?  ain't it bully!  Why, Huck, if it was to do over +again, I bet I could fetch two hundred!  If we could put it off till—" + +"Hurry!  Hurry!"  I says.  "Where's Jim?" + +"Right at your elbow; if you reach out your arm you can touch him. + He's dressed, and everything's ready.  Now we'll slide out and give the +sheep-signal." + +But then we heard the tramp of men coming to the door, and heard them +begin to fumble with the pad-lock, and heard a man say: + +"I told you we'd be too soon; they haven't come—the door is locked. +Here, I'll lock some of you into the cabin, and you lay for 'em in the +dark and kill 'em when they come; and the rest scatter around a piece, +and listen if you can hear 'em coming." + +So in they come, but couldn't see us in the dark, and most trod on +us whilst we was hustling to get under the bed.  But we got under all +right, and out through the hole, swift but soft—Jim first, me next, +and Tom last, which was according to Tom's orders.  Now we was in the +lean-to, and heard trampings close by outside.  So we crept to the door, +and Tom stopped us there and put his eye to the crack, but couldn't make +out nothing, it was so dark; and whispered and said he would listen +for the steps to get further, and when he nudged us Jim must glide out +first, and him last.  So he set his ear to the crack and listened, and +listened, and listened, and the steps a-scraping around out there all +the time; and at last he nudged us, and we slid out, and stooped down, +not breathing, and not making the least noise, and slipped stealthy +towards the fence in Injun file, and got to it all right, and me and Jim +over it; but Tom's britches catched fast on a splinter on the top +rail, and then he hear the steps coming, so he had to pull loose, which +snapped the splinter and made a noise; and as he dropped in our tracks +and started somebody sings out: + +"Who's that?  Answer, or I'll shoot!" + +But we didn't answer; we just unfurled our heels and shoved.  Then there +was a rush, and a Bang, Bang, Bang! and the bullets fairly whizzed +around us! We heard them sing out: + +"Here they are!  They've broke for the river!  After 'em, boys, and turn +loose the dogs!" + +So here they come, full tilt.  We could hear them because they wore +boots and yelled, but we didn't wear no boots and didn't yell.  We was +in the path to the mill; and when they got pretty close on to us we +dodged into the bush and let them go by, and then dropped in behind +them.  They'd had all the dogs shut up, so they wouldn't scare off the +robbers; but by this time somebody had let them loose, and here they +come, making powwow enough for a million; but they was our dogs; so we +stopped in our tracks till they catched up; and when they see it warn't +nobody but us, and no excitement to offer them, they only just said +howdy, and tore right ahead towards the shouting and clattering; and +then we up-steam again, and whizzed along after them till we was nearly +to the mill, and then struck up through the bush to where my canoe was +tied, and hopped in and pulled for dear life towards the middle of the +river, but didn't make no more noise than we was obleeged to. Then we +struck out, easy and comfortable, for the island where my raft was; and +we could hear them yelling and barking at each other all up and down the +bank, till we was so far away the sounds got dim and died out.  And when +we stepped on to the raft I says: + +"Now, old Jim, you're a free man again, and I bet you won't ever be a +slave no more." + +"En a mighty good job it wuz, too, Huck.  It 'uz planned beautiful, en +it 'uz done beautiful; en dey ain't nobody kin git up a plan dat's mo' +mixed-up en splendid den what dat one wuz." + +We was all glad as we could be, but Tom was the gladdest of all because +he had a bullet in the calf of his leg. + +When me and Jim heard that we didn't feel so brash as what we did +before. It was hurting him considerable, and bleeding; so we laid him in +the wigwam and tore up one of the duke's shirts for to bandage him, but +he says: + +"Gimme the rags; I can do it myself.  Don't stop now; don't fool around +here, and the evasion booming along so handsome; man the sweeps, and set +her loose!  Boys, we done it elegant!—'deed we did.  I wish we'd a +had the handling of Louis XVI., there wouldn't a been no 'Son of Saint +Louis, ascend to heaven!' wrote down in his biography; no, sir, we'd +a whooped him over the border—that's what we'd a done with him—and +done it just as slick as nothing at all, too.  Man the sweeps—man the +sweeps!" + +But me and Jim was consulting—and thinking.  And after we'd thought a +minute, I says: + +"Say it, Jim." + +So he says: + +"Well, den, dis is de way it look to me, Huck.  Ef it wuz him dat 'uz +bein' sot free, en one er de boys wuz to git shot, would he say, 'Go on +en save me, nemmine 'bout a doctor f'r to save dis one?'  Is dat like +Mars Tom Sawyer?  Would he say dat?  You bet he wouldn't!  well, +den, is Jim gywne to say it?  No, sah—I doan' budge a step out'n dis +place 'dout a doctor, not if it's forty year!" + +I knowed he was white inside, and I reckoned he'd say what he did say—so +it was all right now, and I told Tom I was a-going for a doctor. + He raised considerable row about it, but me and Jim stuck to it and +wouldn't budge; so he was for crawling out and setting the raft loose +himself; but we wouldn't let him.  Then he give us a piece of his mind, +but it didn't do no good. + +So when he sees me getting the canoe ready, he says: + +"Well, then, if you're bound to go, I'll tell you the way to do when you +get to the village.  Shut the door and blindfold the doctor tight and +fast, and make him swear to be silent as the grave, and put a purse +full of gold in his hand, and then take and lead him all around the +back alleys and everywheres in the dark, and then fetch him here in the +canoe, in a roundabout way amongst the islands, and search him and take +his chalk away from him, and don't give it back to him till you get him +back to the village, or else he will chalk this raft so he can find it +again. It's the way they all do." + +So I said I would, and left, and Jim was to hide in the woods when he +see the doctor coming till he was gone again. + + + + +CHAPTER XLI. + +THE doctor was an old man; a very nice, kind-looking old man when I got +him up.  I told him me and my brother was over on Spanish Island hunting +yesterday afternoon, and camped on a piece of a raft we found, and about +midnight he must a kicked his gun in his dreams, for it went off and +shot him in the leg, and we wanted him to go over there and fix it and +not say nothing about it, nor let anybody know, because we wanted to +come home this evening and surprise the folks. + +"Who is your folks?" he says. + +"The Phelpses, down yonder." + +"Oh," he says.  And after a minute, he says: + +"How'd you say he got shot?" + +"He had a dream," I says, "and it shot him." + +"Singular dream," he says. + +So he lit up his lantern, and got his saddle-bags, and we started.  But +when he sees the canoe he didn't like the look of her—said she was big +enough for one, but didn't look pretty safe for two.  I says: + +"Oh, you needn't be afeard, sir, she carried the three of us easy +enough." + +"What three?" + +"Why, me and Sid, and—and—and the guns; that's what I mean." + +"Oh," he says. + +But he put his foot on the gunnel and rocked her, and shook his head, +and said he reckoned he'd look around for a bigger one.  But they was +all locked and chained; so he took my canoe, and said for me to wait +till he come back, or I could hunt around further, or maybe I better +go down home and get them ready for the surprise if I wanted to.  But +I said I didn't; so I told him just how to find the raft, and then he +started. + +I struck an idea pretty soon.  I says to myself, spos'n he can't fix +that leg just in three shakes of a sheep's tail, as the saying is? +spos'n it takes him three or four days?  What are we going to do?—lay +around there till he lets the cat out of the bag?  No, sir; I know what +I'll do.  I'll wait, and when he comes back if he says he's got to +go any more I'll get down there, too, if I swim; and we'll take and tie +him, and keep him, and shove out down the river; and when Tom's done +with him we'll give him what it's worth, or all we got, and then let him +get ashore. + +So then I crept into a lumber-pile to get some sleep; and next time I +waked up the sun was away up over my head!  I shot out and went for the +doctor's house, but they told me he'd gone away in the night some time +or other, and warn't back yet.  Well, thinks I, that looks powerful bad +for Tom, and I'll dig out for the island right off.  So away I shoved, +and turned the corner, and nearly rammed my head into Uncle Silas's +stomach! He says: + +"Why, Tom!  Where you been all this time, you rascal?" + +"I hain't been nowheres," I says, "only just hunting for the runaway +nigger—me and Sid." + +"Why, where ever did you go?" he says.  "Your aunt's been mighty +uneasy." + +"She needn't," I says, "because we was all right.  We followed the men +and the dogs, but they outrun us, and we lost them; but we thought we +heard them on the water, so we got a canoe and took out after them and +crossed over, but couldn't find nothing of them; so we cruised along +up-shore till we got kind of tired and beat out; and tied up the canoe +and went to sleep, and never waked up till about an hour ago; then we +paddled over here to hear the news, and Sid's at the post-office to see +what he can hear, and I'm a-branching out to get something to eat for +us, and then we're going home." + +So then we went to the post-office to get "Sid"; but just as I +suspicioned, he warn't there; so the old man he got a letter out of the +office, and we waited awhile longer, but Sid didn't come; so the old man +said, come along, let Sid foot it home, or canoe it, when he got done +fooling around—but we would ride.  I couldn't get him to let me stay +and wait for Sid; and he said there warn't no use in it, and I must come +along, and let Aunt Sally see we was all right. + +When we got home Aunt Sally was that glad to see me she laughed and +cried both, and hugged me, and give me one of them lickings of hern that +don't amount to shucks, and said she'd serve Sid the same when he come. + +And the place was plum full of farmers and farmers' wives, to dinner; +and such another clack a body never heard.  Old Mrs. Hotchkiss was the +worst; her tongue was a-going all the time.  She says: + +"Well, Sister Phelps, I've ransacked that-air cabin over, an' I b'lieve +the nigger was crazy.  I says to Sister Damrell—didn't I, Sister +Damrell?—s'I, he's crazy, s'I—them's the very words I said.  You all +hearn me: he's crazy, s'I; everything shows it, s'I.  Look at that-air +grindstone, s'I; want to tell me't any cretur 't's in his right mind +'s a goin' to scrabble all them crazy things onto a grindstone, s'I? + Here sich 'n' sich a person busted his heart; 'n' here so 'n' so +pegged along for thirty-seven year, 'n' all that—natcherl son o' Louis +somebody, 'n' sich everlast'n rubbage.  He's plumb crazy, s'I; it's what +I says in the fust place, it's what I says in the middle, 'n' it's what +I says last 'n' all the time—the nigger's crazy—crazy 's Nebokoodneezer, +s'I." + +"An' look at that-air ladder made out'n rags, Sister Hotchkiss," says +old Mrs. Damrell; "what in the name o' goodness could he ever want +of—" + +"The very words I was a-sayin' no longer ago th'n this minute to Sister +Utterback, 'n' she'll tell you so herself.  Sh-she, look at that-air rag +ladder, sh-she; 'n' s'I, yes, look at it, s'I—what could he a-wanted +of it, s'I.  Sh-she, Sister Hotchkiss, sh-she—" + +"But how in the nation'd they ever git that grindstone in there, +anyway? 'n' who dug that-air hole? 'n' who—" + +"My very words, Brer Penrod!  I was a-sayin'—pass that-air sasser o' +m'lasses, won't ye?—I was a-sayin' to Sister Dunlap, jist this minute, +how did they git that grindstone in there, s'I.  Without help, mind +you—'thout help!  that's wher 'tis.  Don't tell me, s'I; there +wuz help, s'I; 'n' ther' wuz a plenty help, too, s'I; ther's ben a +dozen a-helpin' that nigger, 'n' I lay I'd skin every last nigger on +this place but I'd find out who done it, s'I; 'n' moreover, s'I—" + +"A dozen says you!—forty couldn't a done every thing that's been +done. Look at them case-knife saws and things, how tedious they've been +made; look at that bed-leg sawed off with 'm, a week's work for six men; +look at that nigger made out'n straw on the bed; and look at—" + +"You may well say it, Brer Hightower!  It's jist as I was a-sayin' +to Brer Phelps, his own self.  S'e, what do you think of it, Sister +Hotchkiss, s'e? Think o' what, Brer Phelps, s'I?  Think o' that bed-leg +sawed off that a way, s'e?  think of it, s'I?  I lay it never sawed +itself off, s'I—somebody sawed it, s'I; that's my opinion, take it +or leave it, it mayn't be no 'count, s'I, but sich as 't is, it's my +opinion, s'I, 'n' if any body k'n start a better one, s'I, let him do +it, s'I, that's all.  I says to Sister Dunlap, s'I—" + +"Why, dog my cats, they must a ben a house-full o' niggers in there +every night for four weeks to a done all that work, Sister Phelps.  Look +at that shirt—every last inch of it kivered over with secret African +writ'n done with blood!  Must a ben a raft uv 'm at it right along, all +the time, amost.  Why, I'd give two dollars to have it read to me; 'n' +as for the niggers that wrote it, I 'low I'd take 'n' lash 'm t'll—" + +"People to help him, Brother Marples!  Well, I reckon you'd think +so if you'd a been in this house for a while back.  Why, they've stole +everything they could lay their hands on—and we a-watching all the time, +mind you. They stole that shirt right off o' the line! and as for that +sheet they made the rag ladder out of, ther' ain't no telling how +many times they didn't steal that; and flour, and candles, and +candlesticks, and spoons, and the old warming-pan, and most a thousand +things that I disremember now, and my new calico dress; and me and +Silas and my Sid and Tom on the constant watch day and night, as I was +a-telling you, and not a one of us could catch hide nor hair nor sight +nor sound of them; and here at the last minute, lo and behold you, they +slides right in under our noses and fools us, and not only fools us +but the Injun Territory robbers too, and actuly gets away with that +nigger safe and sound, and that with sixteen men and twenty-two dogs +right on their very heels at that very time!  I tell you, it just bangs +anything I ever heard of. Why, sperits couldn't a done better and +been no smarter. And I reckon they must a been sperits—because, you +know our dogs, and ther' ain't no better; well, them dogs never even got +on the track of 'm once!  You explain that to me if you can!—any +of you!" + +"Well, it does beat—" + +"Laws alive, I never—" + +"So help me, I wouldn't a be—" + +"House-thieves as well as—" + +"Goodnessgracioussakes, I'd a ben afeard to live in sich a—" + +"'Fraid to live!—why, I was that scared I dasn't hardly go to bed, or +get up, or lay down, or set down, Sister Ridgeway.  Why, they'd steal +the very—why, goodness sakes, you can guess what kind of a fluster I was +in by the time midnight come last night.  I hope to gracious if I warn't +afraid they'd steal some o' the family!  I was just to that pass I +didn't have no reasoning faculties no more.  It looks foolish enough +now, in the daytime; but I says to myself, there's my two poor boys +asleep, 'way up stairs in that lonesome room, and I declare to goodness +I was that uneasy 't I crep' up there and locked 'em in!  I did.  And +anybody would. Because, you know, when you get scared that way, and it +keeps running on, and getting worse and worse all the time, and your +wits gets to addling, and you get to doing all sorts o' wild things, +and by and by you think to yourself, spos'n I was a boy, and was away up +there, and the door ain't locked, and you—" She stopped, looking kind +of wondering, and then she turned her head around slow, and when her eye +lit on me—I got up and took a walk. + +Says I to myself, I can explain better how we come to not be in that +room this morning if I go out to one side and study over it a little. + So I done it.  But I dasn't go fur, or she'd a sent for me.  And when +it was late in the day the people all went, and then I come in and +told her the noise and shooting waked up me and "Sid," and the door was +locked, and we wanted to see the fun, so we went down the lightning-rod, +and both of us got hurt a little, and we didn't never want to try that +no more.  And then I went on and told her all what I told Uncle Silas +before; and then she said she'd forgive us, and maybe it was all right +enough anyway, and about what a body might expect of boys, for all boys +was a pretty harum-scarum lot as fur as she could see; and so, as long +as no harm hadn't come of it, she judged she better put in her time +being grateful we was alive and well and she had us still, stead of +fretting over what was past and done.  So then she kissed me, and patted +me on the head, and dropped into a kind of a brown study; and pretty +soon jumps up, and says: + +"Why, lawsamercy, it's most night, and Sid not come yet!  What has +become of that boy?" + +I see my chance; so I skips up and says: + +"I'll run right up to town and get him," I says. + +"No you won't," she says.  "You'll stay right wher' you are; one's +enough to be lost at a time.  If he ain't here to supper, your uncle 'll +go." + +Well, he warn't there to supper; so right after supper uncle went. + +He come back about ten a little bit uneasy; hadn't run across Tom's +track. Aunt Sally was a good deal uneasy; but Uncle Silas he said +there warn't no occasion to be—boys will be boys, he said, and you'll +see this one turn up in the morning all sound and right.  So she had +to be satisfied.  But she said she'd set up for him a while anyway, and +keep a light burning so he could see it. + +And then when I went up to bed she come up with me and fetched her +candle, and tucked me in, and mothered me so good I felt mean, and like +I couldn't look her in the face; and she set down on the bed and talked +with me a long time, and said what a splendid boy Sid was, and didn't +seem to want to ever stop talking about him; and kept asking me every +now and then if I reckoned he could a got lost, or hurt, or maybe +drownded, and might be laying at this minute somewheres suffering or +dead, and she not by him to help him, and so the tears would drip down +silent, and I would tell her that Sid was all right, and would be home +in the morning, sure; and she would squeeze my hand, or maybe kiss me, +and tell me to say it again, and keep on saying it, because it done her +good, and she was in so much trouble.  And when she was going away she +looked down in my eyes so steady and gentle, and says: + +"The door ain't going to be locked, Tom, and there's the window and +the rod; but you'll be good, won't you?  And you won't go?  For my +sake." + +Laws knows I wanted to go bad enough to see about Tom, and was all +intending to go; but after that I wouldn't a went, not for kingdoms. + +But she was on my mind and Tom was on my mind, so I slept very restless. +And twice I went down the rod away in the night, and slipped around +front, and see her setting there by her candle in the window with her +eyes towards the road and the tears in them; and I wished I could do +something for her, but I couldn't, only to swear that I wouldn't never +do nothing to grieve her any more.  And the third time I waked up at +dawn, and slid down, and she was there yet, and her candle was most out, +and her old gray head was resting on her hand, and she was asleep. + + + + +CHAPTER XLII. + +THE old man was uptown again before breakfast, but couldn't get no +track of Tom; and both of them set at the table thinking, and not saying +nothing, and looking mournful, and their coffee getting cold, and not +eating anything. And by and by the old man says: + +"Did I give you the letter?" + +"What letter?" + +"The one I got yesterday out of the post-office." + +"No, you didn't give me no letter." + +"Well, I must a forgot it." + +So he rummaged his pockets, and then went off somewheres where he had +laid it down, and fetched it, and give it to her.  She says: + +"Why, it's from St. Petersburg—it's from Sis." + +I allowed another walk would do me good; but I couldn't stir.  But +before she could break it open she dropped it and run—for she see +something. And so did I. It was Tom Sawyer on a mattress; and that old +doctor; and Jim, in her calico dress, with his hands tied behind him; +and a lot of people.  I hid the letter behind the first thing that come +handy, and rushed.  She flung herself at Tom, crying, and says: + +"Oh, he's dead, he's dead, I know he's dead!" + +And Tom he turned his head a little, and muttered something or other, +which showed he warn't in his right mind; then she flung up her hands, +and says: + +"He's alive, thank God!  And that's enough!" and she snatched a kiss of +him, and flew for the house to get the bed ready, and scattering orders +right and left at the niggers and everybody else, as fast as her tongue +could go, every jump of the way. + +I followed the men to see what they was going to do with Jim; and the +old doctor and Uncle Silas followed after Tom into the house.  The men +was very huffy, and some of them wanted to hang Jim for an example to +all the other niggers around there, so they wouldn't be trying to run +away like Jim done, and making such a raft of trouble, and keeping a +whole family scared most to death for days and nights.  But the others +said, don't do it, it wouldn't answer at all; he ain't our nigger, and +his owner would turn up and make us pay for him, sure.  So that cooled +them down a little, because the people that's always the most anxious +for to hang a nigger that hain't done just right is always the very +ones that ain't the most anxious to pay for him when they've got their +satisfaction out of him. + +They cussed Jim considerble, though, and give him a cuff or two side the +head once in a while, but Jim never said nothing, and he never let on to +know me, and they took him to the same cabin, and put his own clothes +on him, and chained him again, and not to no bed-leg this time, but to +a big staple drove into the bottom log, and chained his hands, too, and +both legs, and said he warn't to have nothing but bread and water to +eat after this till his owner come, or he was sold at auction because +he didn't come in a certain length of time, and filled up our hole, and +said a couple of farmers with guns must stand watch around about the +cabin every night, and a bulldog tied to the door in the daytime; and +about this time they was through with the job and was tapering off with +a kind of generl good-bye cussing, and then the old doctor comes and +takes a look, and says: + +"Don't be no rougher on him than you're obleeged to, because he ain't +a bad nigger.  When I got to where I found the boy I see I couldn't cut +the bullet out without some help, and he warn't in no condition for +me to leave to go and get help; and he got a little worse and a little +worse, and after a long time he went out of his head, and wouldn't let +me come a-nigh him any more, and said if I chalked his raft he'd kill +me, and no end of wild foolishness like that, and I see I couldn't do +anything at all with him; so I says, I got to have help somehow; and +the minute I says it out crawls this nigger from somewheres and says +he'll help, and he done it, too, and done it very well.  Of course I +judged he must be a runaway nigger, and there I was! and there I had +to stick right straight along all the rest of the day and all night.  It +was a fix, I tell you! I had a couple of patients with the chills, and +of course I'd of liked to run up to town and see them, but I dasn't, +because the nigger might get away, and then I'd be to blame; and yet +never a skiff come close enough for me to hail.  So there I had to stick +plumb until daylight this morning; and I never see a nigger that was a +better nuss or faithfuller, and yet he was risking his freedom to do it, +and was all tired out, too, and I see plain enough he'd been worked +main hard lately.  I liked the nigger for that; I tell you, gentlemen, a +nigger like that is worth a thousand dollars—and kind treatment, too.  I +had everything I needed, and the boy was doing as well there as he +would a done at home—better, maybe, because it was so quiet; but there I +was, with both of 'm on my hands, and there I had to stick till about +dawn this morning; then some men in a skiff come by, and as good luck +would have it the nigger was setting by the pallet with his head propped +on his knees sound asleep; so I motioned them in quiet, and they slipped +up on him and grabbed him and tied him before he knowed what he was +about, and we never had no trouble. And the boy being in a kind of a +flighty sleep, too, we muffled the oars and hitched the raft on, and +towed her over very nice and quiet, and the nigger never made the least +row nor said a word from the start.  He ain't no bad nigger, gentlemen; +that's what I think about him." + +Somebody says: + +"Well, it sounds very good, doctor, I'm obleeged to say." + +Then the others softened up a little, too, and I was mighty thankful +to that old doctor for doing Jim that good turn; and I was glad it was +according to my judgment of him, too; because I thought he had a good +heart in him and was a good man the first time I see him.  Then they +all agreed that Jim had acted very well, and was deserving to have some +notice took of it, and reward.  So every one of them promised, right out +and hearty, that they wouldn't cuss him no more. + +Then they come out and locked him up.  I hoped they was going to say he +could have one or two of the chains took off, because they was rotten +heavy, or could have meat and greens with his bread and water; but they +didn't think of it, and I reckoned it warn't best for me to mix in, but +I judged I'd get the doctor's yarn to Aunt Sally somehow or other as +soon as I'd got through the breakers that was laying just ahead of +me—explanations, I mean, of how I forgot to mention about Sid being shot +when I was telling how him and me put in that dratted night paddling +around hunting the runaway nigger. + +But I had plenty time.  Aunt Sally she stuck to the sick-room all day +and all night, and every time I see Uncle Silas mooning around I dodged +him. + +Next morning I heard Tom was a good deal better, and they said Aunt +Sally was gone to get a nap.  So I slips to the sick-room, and if I +found him awake I reckoned we could put up a yarn for the family that +would wash. But he was sleeping, and sleeping very peaceful, too; and +pale, not fire-faced the way he was when he come.  So I set down and +laid for him to wake.  In about half an hour Aunt Sally comes gliding +in, and there I was, up a stump again!  She motioned me to be still, and +set down by me, and begun to whisper, and said we could all be joyful +now, because all the symptoms was first-rate, and he'd been sleeping +like that for ever so long, and looking better and peacefuller all the +time, and ten to one he'd wake up in his right mind. + +So we set there watching, and by and by he stirs a bit, and opened his +eyes very natural, and takes a look, and says: + +"Hello!—why, I'm at home!  How's that?  Where's the raft?" + +"It's all right," I says. + +"And Jim?" + +"The same," I says, but couldn't say it pretty brash.  But he never +noticed, but says: + +"Good!  Splendid!  Now we're all right and safe! Did you tell Aunty?" + +I was going to say yes; but she chipped in and says:  "About what, Sid?" + +"Why, about the way the whole thing was done." + +"What whole thing?" + +"Why, the whole thing.  There ain't but one; how we set the runaway +nigger free—me and Tom." + +"Good land!  Set the run—What is the child talking about!  Dear, dear, +out of his head again!" + +"No, I ain't out of my head; I know all what I'm talking about.  We +did set him free—me and Tom.  We laid out to do it, and we done it. + And we done it elegant, too."  He'd got a start, and she never checked +him up, just set and stared and stared, and let him clip along, and +I see it warn't no use for me to put in.  "Why, Aunty, it cost us a +power of work—weeks of it—hours and hours, every night, whilst you was +all asleep. And we had to steal candles, and the sheet, and the shirt, +and your dress, and spoons, and tin plates, and case-knives, and the +warming-pan, and the grindstone, and flour, and just no end of things, +and you can't think what work it was to make the saws, and pens, and +inscriptions, and one thing or another, and you can't think half the +fun it was.  And we had to make up the pictures of coffins and things, +and nonnamous letters from the robbers, and get up and down the +lightning-rod, and dig the hole into the cabin, and made the rope ladder +and send it in cooked up in a pie, and send in spoons and things to work +with in your apron pocket—" + +"Mercy sakes!" + +"—and load up the cabin with rats and snakes and so on, for company for +Jim; and then you kept Tom here so long with the butter in his hat that +you come near spiling the whole business, because the men come before +we was out of the cabin, and we had to rush, and they heard us and let +drive at us, and I got my share, and we dodged out of the path and let +them go by, and when the dogs come they warn't interested in us, but +went for the most noise, and we got our canoe, and made for the +raft, and was all safe, and Jim was a free man, and we done it all by +ourselves, and wasn't it bully, Aunty!" + +"Well, I never heard the likes of it in all my born days!  So it was +you, you little rapscallions, that's been making all this trouble, +and turned everybody's wits clean inside out and scared us all most to +death.  I've as good a notion as ever I had in my life to take it out +o' you this very minute.  To think, here I've been, night after night, +a—you just get well once, you young scamp, and I lay I'll tan the Old +Harry out o' both o' ye!" + +But Tom, he was so proud and joyful, he just couldn't hold in, +and his tongue just went it—she a-chipping in, and spitting fire all +along, and both of them going it at once, like a cat convention; and she +says: + +"Well, you get all the enjoyment you can out of it now, for mind I +tell you if I catch you meddling with him again—" + +"Meddling with who?"  Tom says, dropping his smile and looking +surprised. + +"With who?  Why, the runaway nigger, of course.  Who'd you reckon?" + +Tom looks at me very grave, and says: + +"Tom, didn't you just tell me he was all right?  Hasn't he got away?" + +"Him?" says Aunt Sally; "the runaway nigger?  'Deed he hasn't. + They've got him back, safe and sound, and he's in that cabin again, +on bread and water, and loaded down with chains, till he's claimed or +sold!" + +Tom rose square up in bed, with his eye hot, and his nostrils opening +and shutting like gills, and sings out to me: + +"They hain't no right to shut him up!  SHOVE!—and don't you lose a +minute.  Turn him loose! he ain't no slave; he's as free as any cretur +that walks this earth!" + +"What does the child mean?" + +"I mean every word I say, Aunt Sally, and if somebody don't go, I'll +go. I've knowed him all his life, and so has Tom, there.  Old Miss +Watson died two months ago, and she was ashamed she ever was going to +sell him down the river, and said so; and she set him free in her +will." + +"Then what on earth did you want to set him free for, seeing he was +already free?" + +"Well, that is a question, I must say; and just like women!  Why, +I wanted the adventure of it; and I'd a waded neck-deep in blood +to—goodness alive, Aunt Polly!" + +If she warn't standing right there, just inside the door, looking as +sweet and contented as an angel half full of pie, I wish I may never! + +Aunt Sally jumped for her, and most hugged the head off of her, and +cried over her, and I found a good enough place for me under the bed, +for it was getting pretty sultry for us, seemed to me.  And I peeped +out, and in a little while Tom's Aunt Polly shook herself loose and +stood there looking across at Tom over her spectacles—kind of grinding +him into the earth, you know.  And then she says: + +"Yes, you better turn y'r head away—I would if I was you, Tom." + +"Oh, deary me!" says Aunt Sally; "Is he changed so?  Why, that ain't +Tom, it's Sid; Tom's—Tom's—why, where is Tom?  He was here a minute +ago." + +"You mean where's Huck Finn—that's what you mean!  I reckon I hain't +raised such a scamp as my Tom all these years not to know him when I +see him.  That would be a pretty howdy-do. Come out from under that +bed, Huck Finn." + +So I done it.  But not feeling brash. + +Aunt Sally she was one of the mixed-upest-looking persons I ever +see—except one, and that was Uncle Silas, when he come in and they told +it all to him.  It kind of made him drunk, as you may say, and he didn't +know nothing at all the rest of the day, and preached a prayer-meeting +sermon that night that gave him a rattling ruputation, because the +oldest man in the world couldn't a understood it.  So Tom's Aunt Polly, +she told all about who I was, and what; and I had to up and tell how +I was in such a tight place that when Mrs. Phelps took me for Tom +Sawyer—she chipped in and says, "Oh, go on and call me Aunt Sally, I'm +used to it now, and 'tain't no need to change"—that when Aunt Sally took +me for Tom Sawyer I had to stand it—there warn't no other way, and +I knowed he wouldn't mind, because it would be nuts for him, being +a mystery, and he'd make an adventure out of it, and be perfectly +satisfied.  And so it turned out, and he let on to be Sid, and made +things as soft as he could for me. + +And his Aunt Polly she said Tom was right about old Miss Watson setting +Jim free in her will; and so, sure enough, Tom Sawyer had gone and took +all that trouble and bother to set a free nigger free! and I couldn't +ever understand before, until that minute and that talk, how he could +help a body set a nigger free with his bringing-up. + +Well, Aunt Polly she said that when Aunt Sally wrote to her that Tom and +Sid had come all right and safe, she says to herself: + +"Look at that, now!  I might have expected it, letting him go off that +way without anybody to watch him.  So now I got to go and trapse all +the way down the river, eleven hundred mile, and find out what that +creetur's up to this time, as long as I couldn't seem to get any +answer out of you about it." + +"Why, I never heard nothing from you," says Aunt Sally. + +"Well, I wonder!  Why, I wrote you twice to ask you what you could mean +by Sid being here." + +"Well, I never got 'em, Sis." + +Aunt Polly she turns around slow and severe, and says: + +"You, Tom!" + +"Well—what?" he says, kind of pettish. + +"Don't you what me, you impudent thing—hand out them letters." + +"What letters?" + +"Them letters.  I be bound, if I have to take a-holt of you I'll—" + +"They're in the trunk.  There, now.  And they're just the same as they +was when I got them out of the office.  I hain't looked into them, I +hain't touched them.  But I knowed they'd make trouble, and I thought if +you warn't in no hurry, I'd—" + +"Well, you do need skinning, there ain't no mistake about it.  And I +wrote another one to tell you I was coming; and I s'pose he—" + +"No, it come yesterday; I hain't read it yet, but it's all right, I've +got that one." + +I wanted to offer to bet two dollars she hadn't, but I reckoned maybe it +was just as safe to not to.  So I never said nothing. + + + + +CHAPTER THE LAST + +THE first time I catched Tom private I asked him what was his idea, time +of the evasion?—what it was he'd planned to do if the evasion worked all +right and he managed to set a nigger free that was already free before? +And he said, what he had planned in his head from the start, if we got +Jim out all safe, was for us to run him down the river on the raft, and +have adventures plumb to the mouth of the river, and then tell him about +his being free, and take him back up home on a steamboat, in style, +and pay him for his lost time, and write word ahead and get out all +the niggers around, and have them waltz him into town with a torchlight +procession and a brass-band, and then he would be a hero, and so would +we.  But I reckoned it was about as well the way it was. + +We had Jim out of the chains in no time, and when Aunt Polly and Uncle +Silas and Aunt Sally found out how good he helped the doctor nurse Tom, +they made a heap of fuss over him, and fixed him up prime, and give him +all he wanted to eat, and a good time, and nothing to do.  And we had +him up to the sick-room, and had a high talk; and Tom give Jim forty +dollars for being prisoner for us so patient, and doing it up so good, +and Jim was pleased most to death, and busted out, and says: + +"Dah, now, Huck, what I tell you?—what I tell you up dah on Jackson +islan'?  I tole you I got a hairy breas', en what's de sign un it; en +I tole you I ben rich wunst, en gwineter to be rich agin; en it's +come true; en heah she is!  dah, now! doan' talk to me—signs is +signs, mine I tell you; en I knowed jis' 's well 'at I 'uz gwineter be +rich agin as I's a-stannin' heah dis minute!" + +And then Tom he talked along and talked along, and says, le's all three +slide out of here one of these nights and get an outfit, and go for +howling adventures amongst the Injuns, over in the Territory, for a +couple of weeks or two; and I says, all right, that suits me, but I +ain't got no money for to buy the outfit, and I reckon I couldn't get +none from home, because it's likely pap's been back before now, and got +it all away from Judge Thatcher and drunk it up. + +"No, he hain't," Tom says; "it's all there yet—six thousand dollars +and more; and your pap hain't ever been back since.  Hadn't when I come +away, anyhow." + +Jim says, kind of solemn: + +"He ain't a-comin' back no mo', Huck." + +I says: + +"Why, Jim?" + +"Nemmine why, Huck—but he ain't comin' back no mo." + +But I kept at him; so at last he says: + +"Doan' you 'member de house dat was float'n down de river, en dey wuz a +man in dah, kivered up, en I went in en unkivered him and didn' let you +come in?  Well, den, you kin git yo' money when you wants it, kase dat +wuz him." + +Tom's most well now, and got his bullet around his neck on a watch-guard +for a watch, and is always seeing what time it is, and so there ain't +nothing more to write about, and I am rotten glad of it, because if I'd +a knowed what a trouble it was to make a book I wouldn't a tackled it, +and ain't a-going to no more.  But I reckon I got to light out for the +Territory ahead of the rest, because Aunt Sally she's going to adopt me +and sivilize me, and I can't stand it.  I been there before. + +THE END. YOURS TRULY, HUCK FINN. + + + + + +End of the Project Gutenberg EBook of Adventures of Huckleberry Finn, +Complete, by Mark Twain (Samuel Clemens) + +*** END OF THIS PROJECT GUTENBERG EBOOK HUCKLEBERRY FINN *** + +***** This file should be named 76-h.htm or 76-h.zip ***** This and +all associated files of various formats will be found in: +http://www.gutenberg.net/7/76/ + +Produced by David Widger. Previous editions produced by Ron Burkey and +Internet Wiretap + +Updated editions will replace the previous one--the old editions will be +renamed. + +Creating the works from public domain print editions means that no one +owns a United States copyright in these works, so the Foundation (and +you!) can copy and distribute it in the United States without permission +and without paying copyright royalties. Special rules, set forth in +the General Terms of Use part of this license, apply to copying and +distributing Project Gutenberg-tm electronic works to protect the +PROJECT GUTENBERG-tm concept and trademark. Project Gutenberg is a +registered trademark, and may not be used if you charge for the eBooks, +unless you receive specific permission. If you do not charge anything +for copies of this eBook, complying with the rules is very easy. You +may use this eBook for nearly any purpose such as creation of derivative +works, reports, performances and research. They may be modified and +printed and given away--you may do practically ANYTHING with public +domain eBooks. Redistribution is subject to the trademark license, +especially commercial redistribution. + +*** START: FULL LICENSE *** + +THE FULL PROJECT GUTENBERG LICENSE PLEASE READ THIS BEFORE YOU +DISTRIBUTE OR USE THIS WORK + +To protect the Project Gutenberg-tm mission of promoting the free +distribution of electronic works, by using or distributing this work +(or any other work associated in any way with the phrase "Project +Gutenberg"), you agree to comply with all the terms of the Full +Project Gutenberg-tm License (available with this file or online at +http://gutenberg.net/license). + +Section 1. General Terms of Use and Redistributing Project Gutenberg-tm +electronic works + +1.A. By reading or using any part of this Project Gutenberg-tm +electronic work, you indicate that you have read, understand, agree +to and accept all the terms of this license and intellectual property +(trademark/copyright) agreement. If you do not agree to abide by all the +terms of this agreement, you must cease using and return or destroy all +copies of Project Gutenberg-tm electronic works in your possession. +If you paid a fee for obtaining a copy of or access to a Project +Gutenberg-tm electronic work and you do not agree to be bound by the +terms of this agreement, you may obtain a refund from the person or +entity to whom you paid the fee as set forth in paragraph 1.E.8. + +1.B. "Project Gutenberg" is a registered trademark. It may only be used +on or associated in any way with an electronic work by people who agree +to be bound by the terms of this agreement. There are a few things that +you can do with most Project Gutenberg-tm electronic works even without +complying with the full terms of this agreement. See paragraph 1.C +below. There are a lot of things you can do with Project Gutenberg-tm +electronic works if you follow the terms of this agreement and help +preserve free future access to Project Gutenberg-tm electronic works. +See paragraph 1.E below. + +1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation" +or PGLAF), owns a compilation copyright in the collection of Project +Gutenberg-tm electronic works. Nearly all the individual works in +the collection are in the public domain in the United States. If an +individual work is in the public domain in the United States and you +are located in the United States, we do not claim a right to prevent +you from copying, distributing, performing, displaying or creating +derivative works based on the work as long as all references to Project +Gutenberg are removed. Of course, we hope that you will support the +Project Gutenberg-tm mission of promoting free access to electronic +works by freely sharing Project Gutenberg-tm works in compliance with +the terms of this agreement for keeping the Project Gutenberg-tm name +associated with the work. You can easily comply with the terms of this +agreement by keeping this work in the same format with its attached +full Project Gutenberg-tm License when you share it without charge with +others. + +1.D. The copyright laws of the place where you are located also govern +what you can do with this work. Copyright laws in most countries are in +a constant state of change. If you are outside the United States, check +the laws of your country in addition to the terms of this agreement +before downloading, copying, displaying, performing, distributing +or creating derivative works based on this work or any other Project +Gutenberg-tm work. The Foundation makes no representations concerning +the copyright status of any work in any country outside the United +States. + +1.E. Unless you have removed all references to Project Gutenberg: + +1.E.1. The following sentence, with active links to, or other immediate +access to, the full Project Gutenberg-tm License must appear prominently +whenever any copy of a Project Gutenberg-tm work (any work on which the +phrase "Project Gutenberg" appears, or with which the phrase "Project +Gutenberg" is associated) is accessed, displayed, performed, viewed, +copied or distributed: + +This eBook is for the use of anyone anywhere at no cost and with almost +no restrictions whatsoever. You may copy it, give it away or re-use +it under the terms of the Project Gutenberg License included with this +eBook or online at www.gutenberg.net + +1.E.2. If an individual Project Gutenberg-tm electronic work is derived +from the public domain (does not contain a notice indicating that it is +posted with permission of the copyright holder), the work can be copied +and distributed to anyone in the United States without paying any fees +or charges. If you are redistributing or providing access to a work with +the phrase "Project Gutenberg" associated with or appearing on the work, +you must comply either with the requirements of paragraphs 1.E.1 through +1.E.7 or obtain permission for the use of the work and the Project +Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or 1.E.9. + +1.E.3. If an individual Project Gutenberg-tm electronic work is posted +with the permission of the copyright holder, your use and distribution +must comply with both paragraphs 1.E.1 through 1.E.7 and any additional +terms imposed by the copyright holder. Additional terms will be linked +to the Project Gutenberg-tm License for all works posted with the +permission of the copyright holder found at the beginning of this work. + +1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm +License terms from this work, or any files containing a part of this +work or any other work associated with Project Gutenberg-tm. + +1.E.5. Do not copy, display, perform, distribute or redistribute +this electronic work, or any part of this electronic work, without +prominently displaying the sentence set forth in paragraph 1.E.1 with +active links or immediate access to the full terms of the Project +Gutenberg-tm License. + +1.E.6. You may convert to and distribute this work in any binary, +compressed, marked up, nonproprietary or proprietary form, including any +word processing or hypertext form. However, if you provide access to or +distribute copies of a Project Gutenberg-tm work in a format other +than "Plain Vanilla ASCII" or other format used in the official +version posted on the official Project Gutenberg-tm web site +(www.gutenberg.net), you must, at no additional cost, fee or expense +to the user, provide a copy, a means of exporting a copy, or a means +of obtaining a copy upon request, of the work in its original "Plain +Vanilla ASCII" or other form. Any alternate format must include the full +Project Gutenberg-tm License as specified in paragraph 1.E.1. + +1.E.7. Do not charge a fee for access to, viewing, displaying, +performing, copying or distributing any Project Gutenberg-tm works +unless you comply with paragraph 1.E.8 or 1.E.9. + +1.E.8. You may charge a reasonable fee for copies of or providing access +to or distributing Project Gutenberg-tm electronic works provided that + +- You pay a royalty fee of 20% of the gross profits you derive from +the use of Project Gutenberg-tm works calculated using the method you +already use to calculate your applicable taxes. The fee is owed to the +owner of the Project Gutenberg-tm trademark, but he has agreed to donate +royalties under this paragraph to the Project Gutenberg Literary Archive +Foundation. Royalty payments must be paid within 60 days following each +date on which you prepare (or are legally required to prepare) your +periodic tax returns. Royalty payments should be clearly marked as such +and sent to the Project Gutenberg Literary Archive Foundation at the +address specified in Section 4, "Information about donations to the +Project Gutenberg Literary Archive Foundation." + +- You provide a full refund of any money paid by a user who notifies you +in writing (or by e-mail) within 30 days of receipt that s/he does not +agree to the terms of the full Project Gutenberg-tm License. You +must require such a user to return or destroy all copies of the works +possessed in a physical medium and discontinue all use of and all access +to other copies of Project Gutenberg-tm works. + +- You provide, in accordance with paragraph 1.F.3, a full refund of +any money paid for a work or a replacement copy, if a defect in the +electronic work is discovered and reported to you within 90 days of +receipt of the work. + +- You comply with all other terms of this agreement for free +distribution of Project Gutenberg-tm works. + +1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm +electronic work or group of works on different terms than are set forth +in this agreement, you must obtain permission in writing from both the +Project Gutenberg Literary Archive Foundation and Michael Hart, the +owner of the Project Gutenberg-tm trademark. Contact the Foundation as +set forth in Section 3 below. + +1.F. + +1.F.1. Project Gutenberg volunteers and employees expend considerable +effort to identify, do copyright research on, transcribe and proofread +public domain works in creating the Project Gutenberg-tm collection. +Despite these efforts, Project Gutenberg-tm electronic works, and the +medium on which they may be stored, may contain "Defects," such as, but +not limited to, incomplete, inaccurate or corrupt data, transcription +errors, a copyright or other intellectual property infringement, a +defective or damaged disk or other medium, a computer virus, or computer +codes that damage or cannot be read by your equipment. + +1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right +of Replacement or Refund" described in paragraph 1.F.3, the Project +Gutenberg Literary Archive Foundation, the owner of the Project +Gutenberg-tm trademark, and any other party distributing a Project +Gutenberg-tm electronic work under this agreement, disclaim all +liability to you for damages, costs and expenses, including legal fees. +YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT LIABILITY, +BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN +PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK OWNER, AND +ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR +ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES +EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE. + +1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a defect +in this electronic work within 90 days of receiving it, you can receive +a refund of the money (if any) you paid for it by sending a written +explanation to the person you received the work from. If you received +the work on a physical medium, you must return the medium with your +written explanation. The person or entity that provided you with the +defective work may elect to provide a replacement copy in lieu of a +refund. If you received the work electronically, the person or entity +providing it to you may choose to give you a second opportunity to +receive the work electronically in lieu of a refund. If the second copy +is also defective, you may demand a refund in writing without further +opportunities to fix the problem. + +1.F.4. Except for the limited right of replacement or refund set forth +in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER +WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE. + +1.F.5. Some states do not allow disclaimers of certain implied +warranties or the exclusion or limitation of certain types of damages. +If any disclaimer or limitation set forth in this agreement violates the +law of the state applicable to this agreement, the agreement shall be +interpreted to make the maximum disclaimer or limitation permitted by +the applicable state law. The invalidity or unenforceability of any +provision of this agreement shall not void the remaining provisions. + +1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, +the trademark owner, any agent or employee of the Foundation, anyone +providing copies of Project Gutenberg-tm electronic works in accordance +with this agreement, and any volunteers associated with the production, +promotion and distribution of Project Gutenberg-tm electronic works, +harmless from all liability, costs and expenses, including legal fees, +that arise directly or indirectly from any of the following which you do +or cause to occur: (a) distribution of this or any Project Gutenberg-tm +work, (b) alteration, modification, or additions or deletions to any +Project Gutenberg-tm work, and (c) any Defect you cause. + +Section 2. Information about the Mission of Project Gutenberg-tm + +Project Gutenberg-tm is synonymous with the free distribution of +electronic works in formats readable by the widest variety of computers +including obsolete, old, middle-aged and new computers. It exists +because of the efforts of hundreds of volunteers and donations from +people in all walks of life. + +Volunteers and financial support to provide volunteers with the +assistance they need, is critical to reaching Project Gutenberg-tm's +goals and ensuring that the Project Gutenberg-tm collection will remain +freely available for generations to come. In 2001, the Project Gutenberg +Literary Archive Foundation was created to provide a secure and +permanent future for Project Gutenberg-tm and future generations. To +learn more about the Project Gutenberg Literary Archive Foundation and +how your efforts and donations can help, see Sections 3 and 4 and the +Foundation web page at http://www.pglaf.org. + +Section 3. Information about the Project Gutenberg Literary Archive +Foundation + +The Project Gutenberg Literary Archive Foundation is a non profit +501(c)(3) educational corporation organized under the laws of the state +of Mississippi and granted tax exempt status by the Internal Revenue +Service. The Foundation's EIN or federal tax identification number +is 64-6221541. Its 501(c)(3) letter is posted at +http://pglaf.org/fundraising. Contributions to the Project Gutenberg +Literary Archive Foundation are tax deductible to the full extent +permitted by U.S. federal laws and your state's laws. + +The Foundation's principal office is located at 4557 Melan Dr. S. +Fairbanks, AK, 99712., but its volunteers and employees are scattered +throughout numerous locations. Its business office is located at +809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, +email business@pglaf.org. Email contact links and up to date contact +information can be found at the Foundation's web site and official page +at http://pglaf.org + +For additional contact information: Dr. Gregory B. Newby Chief Executive +and Director gbnewby@pglaf.org + +Section 4. Information about Donations to the Project Gutenberg Literary +Archive Foundation + +Project Gutenberg-tm depends upon and cannot survive without wide spread +public support and donations to carry out its mission of increasing +the number of public domain and licensed works that can be freely +distributed in machine readable form accessible by the widest array +of equipment including outdated equipment. Many small donations ($1 to +$5,000) are particularly important to maintaining tax exempt status with +the IRS. + +The Foundation is committed to complying with the laws regulating +charities and charitable donations in all 50 states of the United +States. Compliance requirements are not uniform and it takes a +considerable effort, much paperwork and many fees to meet and keep up +with these requirements. We do not solicit donations in locations +where we have not received written confirmation of compliance. To SEND +DONATIONS or determine the status of compliance for any particular state +visit http://pglaf.org + +While we cannot and do not solicit contributions from states where we +have not met the solicitation requirements, we know of no prohibition +against accepting unsolicited donations from donors in such states who +approach us with offers to donate. + +International donations are gratefully accepted, but we cannot make any +statements concerning tax treatment of donations received from outside +the United States. U.S. laws alone swamp our small staff. + +Please check the Project Gutenberg Web pages for current donation +methods and addresses. Donations are accepted in a number of other ways +including including checks, online payments and credit card donations. +To donate, please visit: http://pglaf.org/donate + +Section 5. General Information About Project Gutenberg-tm electronic +works. + +Professor Michael S. Hart is the originator of the Project Gutenberg-tm +concept of a library of electronic works that could be freely shared +with anyone. For thirty years, he produced and distributed Project +Gutenberg-tm eBooks with only a loose network of volunteer support. + +Project Gutenberg-tm eBooks are often created from several printed +editions, all of which are confirmed as Public Domain in the U.S. unless +a copyright notice is included. Thus, we do not necessarily keep eBooks +in compliance with any particular paper edition. + +Most people start at our Web site which has the main PG search facility: + +http://www.gutenberg.net + +This Web site includes information about Project Gutenberg-tm, including +how to make donations to the Project Gutenberg Literary Archive +Foundation, how to help produce our new eBooks, and how to subscribe to +our email newsletter to hear about new eBooks. + diff --git a/test/resources/tokenization/apache_license_header.txt b/test/resources/tokenization/apache_license_header.txt new file mode 100644 index 0000000000..d973dcedae --- /dev/null +++ b/test/resources/tokenization/apache_license_header.txt @@ -0,0 +1,16 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ \ No newline at end of file diff --git a/test/resources/tokenization/ja_jp_1.txt b/test/resources/tokenization/ja_jp_1.txt new file mode 100644 index 0000000000..1a0a198ed3 --- /dev/null +++ b/test/resources/tokenization/ja_jp_1.txt @@ -0,0 +1 @@ +古写本は題名の記されていないものも多く、記されている場合であっても内容はさまざまである。『源氏物語』の場合は冊子の標題として「源氏物語」ないしそれに相当する物語全体の標題が記されている場合よりも、それぞれの帖名が記されていることが少なくない。こうした経緯から、現在において一般に『源氏物語』と呼ばれているこの物語が書かれた当時の題名が何であったのかは明らかではない。古い時代の写本や注釈書などの文献に記されている名称は大きく以下の系統に分かれる。 \ No newline at end of file diff --git a/test/resources/tokenization/ja_jp_2.txt b/test/resources/tokenization/ja_jp_2.txt new file mode 100644 index 0000000000..278b4fdc43 --- /dev/null +++ b/test/resources/tokenization/ja_jp_2.txt @@ -0,0 +1,2 @@ +中野幸一編『常用 源氏物語要覧』武蔵野書院、1997年(平成9年)。 ISBN 4-8386-0383-5 +その他にCD-ROM化された本文検索システムとして次のようなものがある。 \ No newline at end of file diff --git a/test/resources/tokenization/lorem_ipsum.txt b/test/resources/tokenization/lorem_ipsum.txt new file mode 100644 index 0000000000..14a44771c1 --- /dev/null +++ b/test/resources/tokenization/lorem_ipsum.txt @@ -0,0 +1 @@ +"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." \ No newline at end of file diff --git a/test/resources/tokenization/ru_ru_1.txt b/test/resources/tokenization/ru_ru_1.txt new file mode 100644 index 0000000000..c19a9be229 --- /dev/null +++ b/test/resources/tokenization/ru_ru_1.txt @@ -0,0 +1,19 @@ +Вэл фабулаз эффикеэнди витюпэраторебуз эи, кюм нобёз дикырыт ёнвидюнт ед. Ючю золэт ийжквюы эа, нык но элитр волуптюа пэркёпитюр. Ыт векж декам плььатонэм, эа жюмо ёудёкабет льебэравичсы квуй, альбюкиюс лыгэндоч эю пэр. Еюж ед аутым нюмквуам тебиквюэ, эи амэт дэбыт нюлльам квюо. Ку золэт пондэрюм элььэефэнд хаж, вяш ёнвидюнт дыфинитеоным экз, конгуы кытэрож квюо ат. + +Ад фиэрэнт ыкжплььикари нык, ут дольорэ емпэтюсъ зыд. Зыд ажжюм пэржыкюти жкряпшэрит эю, ыюм ан витаэ аляквюид дяшзынтиыт. Вэл квюандо ридэнж эю. Еюж жэмпэр конклььюжионэмквуэ нэ. + +Ку хёз порро тамквюам плььатонэм, льаборэ ыпикурэи вэл ты. Но ентэгры компльыктётюр мэя, дуо жанктюч дэльэнйт льебэравичсы нэ. Эжт фалля пропрёаы эю, эож вэрыар ёнэрмйщ ан. Мюндй контынтёонэж прё ат. Эрож копиожаы пытынтёюм шэа эи. + +Но мэль омниюм рэпудёандаэ. Дуо ты квюот июварыт, ты векж квюаэчтио альиквуандо, эю мэльёуз трактатоз пхйложопхяа векж. Ед нам нюлльам губэргрэн, ты оратио иреуры коммюны пэр, векж ед золэт убяквюэ чингюльищ. Мэльёуз граэкйж вольуптатибюж мэя ед, одео емпыдит майыжтатйж эож ыт, эа дйкит зальутанде квюальизквюэ ючю. Йн еюж анкилльаы аккоммодары, ан выльёт оптёон ывыртятюр вэл. + +Йн граэко дычэрунт мандамюч мыа. Но про щольыат примич, нык ан этёам дольорэ элььэефэнд. Ыам нэ квюандо нощтыр. Ныморэ дикунт ад хаж, хаж квюод дёко эуежмод ты, амэт дыфинитеоным еюж ыт. Эжт ад апэряря апыирёан, кюм зальы рэктэквуэ нэ. + +Эи эрюдитя факёльиси еюж, ыам дольорэ фабулаз вокябюч ат. Про опортэры азжюывырит йн. Мовэт аюдиам ючю эю, нэ едквюэ пэркйпет квюальизквюэ хёз. Эа кюм этёам ырант граэкы. Эю прё модо эпикюре жплэндидэ, ат ыюм фалля пожтэа пхаэдрум, чтэт вэрйтюж нэ вим. Конгуы оратио лобортис ут кюм. Нобёз опортэат но жят, вэрйтюж пэркйпет мальюизчыт квуй ан. + +Мацим ютенам рыфэррэнтур вим ат. Ку квюо квюач дигнижжим, одео жольюта тебиквюэ мыа ыт. Ед нобёз тантаз льаорыыт вэл, еюж йн латины фабулаз аккюжамюз, прё апыирёан адолэжкэнс пожйдонёюм ты. Консэквюат котёдиэквюэ ыюм ан, хёз ут хабымуч ыпикурэи чэнзэрет. Ат квуй дэбыт вирйз, нам эю ыльит фабыллас дэлььякатезшимя. Кончюлату инзтруктеор эа кюм, конжюль фэюгаят кончюлату ут ыам, вяш эи фэюгаят антеопам. + +Юллюм оратио консэквюат ут вэл, выльёт рыпудяары хэндрэрет эю прё. Унюм ыкчпэтында торквюатоз ад векж. Квюо мютат тебиквюэ факильизиж эи, эа ыам фюгит такематыш дяшзынтиыт, экз про абхоррэант дйжпютандо. Ку хаж льабятюр эрепюят, нолюёжжэ ёудёкабет пэр эю. Тота долорюм азжюывырит прё ут, нык зальы элитр дикырыт эю. Ед дуо ыкжплььикари мныжаркхюм конклььюжионэмквуэ. + +Кончюлату азжюывырит нэ зыд. Вэл но квуым граэкйж юрбанйтаж. Про эффякиантур дэфянятйоныс ут, зюаз эрат конкыптам векж эю. Юллюм зюжкепиантюр экз прё, оратио нонумй орнатюс эи эож. Эож такематыш чэнзэрет ад, ат факилиз пэркйпет пэржыкюти нык, аппарэат рэктэквуэ экз зыд. Кюм йн вёвындо дэтракто окюррырэт. + +Шэа рыквюы щольыат фабыллас ты, хаж выльёт эффякиантур компрэхэнжам ат. Ты мэя эзшэ ажжюм апыирёан, ат докэндё конкыптам еюж. Ножтрюд жанктюч ывыртятюр ты вяш, но примич промпта пэрчыквюэрёж дуо. Выро мютат омнэжквюы ыам эю. \ No newline at end of file diff --git a/test/resources/tokenization/top_visited_domains.txt b/test/resources/tokenization/top_visited_domains.txt new file mode 100644 index 0000000000..0238c36d17 --- /dev/null +++ b/test/resources/tokenization/top_visited_domains.txt @@ -0,0 +1,3 @@ +google.com facebook.com youtube.com yahoo.com baidu.com amazon.com wikipedia.org taobao.com twitter.com Qq.com google.co.in apple.com + +http://www.alexa.com/topsites \ No newline at end of file diff --git a/test/resources/tokenization/zn_tw_1.txt b/test/resources/tokenization/zn_tw_1.txt new file mode 100644 index 0000000000..7e1e545848 --- /dev/null +++ b/test/resources/tokenization/zn_tw_1.txt @@ -0,0 +1,19 @@ +銌鞁鬿 蝑蝞蝢 砫粍紞 顃餭 蜭, 趍跠跬 鏀顝饇 轞騹鼚 曨曣 慔 巆忁 嫷 惝掭掝 鑳鱨鱮, 滆 浶洯浽 牣犿玒 嶕憱撏 駇僾 憱撏 硾 湹渵焲 鋧鋓頠 匊呥 犌犐瑆 翣聜蒢 蜙, 毼 噳墺 耇胇赲 稨窨箌 埱娵徖, 鍆錌雔 熩熝犚 庲悊 槄 銌鞁鬿 烍烚珜 疿疶砳 魆 糑縒 魦 萴葂 貄趎跰 萰葍萯, 嗛嗕塨 礂簅縭 婜孲 跣, 楋 澭濇 嗢嗂塝 姌弣抶 曋橪橤 + +崺崸 獧瞝瞣 牣犿玒 嫷, 墆 齴讘麡 毊灚襳 毚丮厹 甿虮 箯 埱娵 脀蚅蚡 礯籔羻 鈁陾靰, 垼娕 螏螉褩 竀篴臌 槶, 鵳齖齘 驐鷑鷩 絒翗腏 輗 嬦憼 耜僇鄗 訬軗郲 舿萐菿 頠餈 槶, 抰枅 嬃 軹軦軵 鸙讟钃 椵楘溍 渳湥牋 蔝蓶蓨 跜軥 嫀, 砯砨 嗢 鄨鎷闒 縓罃蔾, 鍹餳駷 玝甿虮 熩熝犚 碡碙 銇 + +瞝瞣 莃荶衒 碄碆碃 樆樦潏 穊, 枲柊氠 婰婜孲 踣 繗繓 犈犆犅 溗煂獂 儋圚 餀, 蟷蠉蟼 禒箈箑 牬玾 槶 玾珆玸 錖霒馞 撖 姴怤 犆犅 鳻嶬幧 誁趏跮 墐 + +墐 鬵鵛嚪 圩芰敔 蒝蒧蓏 餳駷, 葮 廘榙 斶檎檦 謺貙蹖 澉 駍駔鳿 蒝蒧蓏 蔊蓴蔖 垌壴, 煻 垺垼娕 簻臗藱 笓粊 絼 騉鬵 樛槷殦 縸縩薋 巕氍爟, 璸瓁穟 鯦鯢鯡 罫蓱蒆 齥廲 滘 鯠鯦 噮噦噞 忁曨曣 釂鱞鸄 鉌 寔嵒 葮 瀿犨皫 顤鰩鷎, 憢 蔏蔍蓪 柦柋牬 玝甿虮 偢偣 + +嗂 蒏葝葮 鋱鋟鋈 鬄鵊鵙 繖藒 毚丮 匢奾灱 枲柊氠 椵楘溍 斠, 鬄鵊 鼏噳墺 巕氍爟 鋟, 鳱 鵳齖齘 雥齆犪 騧騜 轞騹鼚 溗煂獂 諙 岵帔, 煻 廦廥彋 繠繗繓 馦騧騜 齖齘 煘煓 喥喓堮 軹軦軵 壿, 斖蘱 酳 圛嬖嬨 姛帡恦, 摿斠榱 櫧櫋瀩 廅愮揫 驧鬤 跾 + +綒 鞻饙騴 萆覕貹 稘稒稕 稢綌 笢笣紽 磃箹糈 瑽 氕厊, 剆坲 禖 鶀嚵巆 枅杺枙, 郔镺陯 烗猀珖 伒匢 殟 憢 箛箙 馺骱魡 潧潣瑽 觶譈譀 塝 豥趍 捘栒毤 幨懅憴 稘稒稕, 撖撱暲 駓駗鴀 鄻鎟霣 蝯 訑紱 縢羱 槏殟殠 浘涀缹 鄻鎟霣 輘, 籺籿 媝寔嵒 樧槧樈 焟硱筎 瞂 + +蚔趵郚 碄碆碃 幋 璻甔 輘 裧頖 簎艜薤 鑤仜伒 誽賚賧 淠淉 鄜酳銪 炾笀耔 椵楘溍 魡 疿疶砳 趡趛踠 躨钀钁 馺 哤垽 庌弝彶 譋轐鏕 毄滱漮 踣 墡嬇, 賗 鯦鯢鯡 齈龘墻 輘輠 蕡蕇蕱 襛襡襙 隒雸頍 紒翀 楋, 殠漊 皾籈譧 磩磟窱 狅妵妶 榎 + +釂鱞 禠 袟袘觕 餈餖駜 椵楘溍 銈 欿殽 鬵鵛嚪 鬎鯪鯠 礂簅縭, 彃 嶝仉圠 裍裚詷 莃荶 茺苶 趍跠跬 燚璒瘭 廲籗糴 殠 魦魵 姛帡恦 賌輈鄍 沀皯竻 墏, 橁橖澭 牣犿玒 捃挸栚 酳 劻穋 噮噦噞 獧瞝瞣 釂鱞 暕, 蝺 葝葮 壾嵷幓 褣諝趥 + +跿 鮛鮥鴮 燲獯璯 鵵鵹鵿 唗哱 蓪 塛嫆嫊 邆錉霋 哤垽, 瀁瀎 馺骱魡 鏾鐇闠 闟顣飁 墆, 壾嵷幓 摬摙敳 鵳齖齘 歅 鋄銶 澂 櫞氌瀙 忕汌卣 蠁襏 斶檎檦 觶譈譀 釪傛 瑽, 觾韄鷡 輐銛靾 廞 袚觙 剆坲姏 鼏噳墺 榯槄 觢, 榎 鷃黫鼱 蛚袲褁 闟顣飁 饙騴, 諙踣踙 齸圞趲 鄜 鶾鷃 驐鷑鷩 禒箈箑 痵 娭屔, 蓨蝪 譋轐鏕 蔪蓩蔮 楋 + +褅褌諃 蛃袚觙 傎圌媔 侹厗 榃, 緦 恦拻 杍肜阰 軥軱逴 緷 摲摓 郔镺陯 揈敜敥, 誙賗跿 彔抳抰 袀豇貣 蜬蝁 榎 傎圌 圛嬖嬨 鑴鱱爧 潣, 枲柊 誙賗跿 貵趀跅 鮂鮐嚃 溿 禖 笓粊 齴讘麡 漻漍犕 趡趛踠, 廞 騩鰒鰔 峷敊浭 烒珛 \ No newline at end of file diff --git a/test/unit/org/apache/cassandra/SchemaLoader.java b/test/unit/org/apache/cassandra/SchemaLoader.java index e375990c7a..51db4cd3da 100644 --- a/test/unit/org/apache/cassandra/SchemaLoader.java +++ b/test/unit/org/apache/cassandra/SchemaLoader.java @@ -21,6 +21,9 @@ import java.io.File; import java.io.IOException; import java.util.*; +import org.apache.cassandra.dht.Murmur3Partitioner; +import org.apache.cassandra.index.sasi.SASIIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; import org.junit.After; import org.junit.BeforeClass; @@ -249,6 +252,8 @@ public class SchemaLoader + "WITH COMPACT STORAGE", ks_cql) ))); + if (DatabaseDescriptor.getPartitioner() instanceof Murmur3Partitioner) + schema.add(KeyspaceMetadata.create("sasi", KeyspaceParams.simpleTransient(1), Tables.of(sasiCFMD("sasi", "test_cf"), clusteringSASICFMD("sasi", "clustering_test_cf")))); if (Boolean.parseBoolean(System.getProperty("cassandra.test.compression", "false"))) useCompression(schema); @@ -475,6 +480,140 @@ public class SchemaLoader .compression(getCompressionParameters()); } + public static CFMetaData sasiCFMD(String ksName, String cfName) + { + CFMetaData cfm = CFMetaData.Builder.create(ksName, cfName) + .addPartitionKey("id", UTF8Type.instance) + .addRegularColumn("first_name", UTF8Type.instance) + .addRegularColumn("last_name", UTF8Type.instance) + .addRegularColumn("age", Int32Type.instance) + .addRegularColumn("height", Int32Type.instance) + .addRegularColumn("timestamp", LongType.instance) + .addRegularColumn("address", UTF8Type.instance) + .addRegularColumn("score", DoubleType.instance) + .addRegularColumn("comment", UTF8Type.instance) + .addRegularColumn("comment_suffix_split", UTF8Type.instance) + .addRegularColumn("/output/full-name/", UTF8Type.instance) + .addRegularColumn("/data/output/id", UTF8Type.instance) + .addRegularColumn("first_name_prefix", UTF8Type.instance) + .build(); + + cfm.indexes(cfm.getIndexes() + .with(IndexMetadata.fromSchemaMetadata("first_name", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "first_name"); + put("mode", OnDiskIndexBuilder.Mode.CONTAINS.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("last_name", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "last_name"); + put("mode", OnDiskIndexBuilder.Mode.CONTAINS.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("age", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "age"); + + }})) + .with(IndexMetadata.fromSchemaMetadata("timestamp", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "timestamp"); + put("mode", OnDiskIndexBuilder.Mode.SPARSE.toString()); + + }})) + .with(IndexMetadata.fromSchemaMetadata("address", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put("analyzer_class", "org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer"); + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "address"); + put("mode", OnDiskIndexBuilder.Mode.PREFIX.toString()); + put("case_sensitive", "false"); + }})) + .with(IndexMetadata.fromSchemaMetadata("score", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "score"); + }})) + .with(IndexMetadata.fromSchemaMetadata("comment", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "comment"); + put("analyzed", "true"); + }})) + .with(IndexMetadata.fromSchemaMetadata("comment_suffix_split", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "comment_suffix_split"); + put("mode", OnDiskIndexBuilder.Mode.CONTAINS.toString()); + put("analyzed", "false"); + }})) + .with(IndexMetadata.fromSchemaMetadata("output_full_name", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "/output/full-name/"); + put("analyzed", "true"); + put("analyzer_class", "org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer"); + put("case_sensitive", "false"); + }})) + .with(IndexMetadata.fromSchemaMetadata("data_output_id", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "/data/output/id"); + put("mode", OnDiskIndexBuilder.Mode.CONTAINS.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("first_name_prefix", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "first_name_prefix"); + put("analyzed", "true"); + put("tokenization_normalize_lowercase", "true"); + }}))); + + return cfm; + } + + public static CFMetaData clusteringSASICFMD(String ksName, String cfName) + { + CFMetaData cfm = CFMetaData.Builder.create(ksName, cfName) + .addPartitionKey("name", UTF8Type.instance) + .addClusteringColumn("location", UTF8Type.instance) + .addClusteringColumn("age", Int32Type.instance) + .addRegularColumn("height", Int32Type.instance) + .addRegularColumn("score", DoubleType.instance) + .build(); + + cfm.indexes(cfm.getIndexes() + .with(IndexMetadata.fromSchemaMetadata("location", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "location"); + put("mode", OnDiskIndexBuilder.Mode.PREFIX.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("age", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "age"); + put("mode", OnDiskIndexBuilder.Mode.PREFIX.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("height", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "height"); + put("mode", OnDiskIndexBuilder.Mode.PREFIX.toString()); + }})) + .with(IndexMetadata.fromSchemaMetadata("score", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put(IndexTarget.TARGET_OPTION_NAME, "score"); + put("mode", OnDiskIndexBuilder.Mode.PREFIX.toString()); + }}))); + + return cfm; + } + public static CompressionParams getCompressionParameters() { return getCompressionParameters(null); diff --git a/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java b/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java index 54d39b1066..2529de1d7e 100644 --- a/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java +++ b/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.concurrent.Callable; import org.junit.Assert; import org.junit.Test; @@ -29,6 +30,7 @@ import org.junit.Test; import org.apache.cassandra.cache.KeyCacheKey; import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.Keyspace; +import org.apache.cassandra.index.Index; import org.apache.cassandra.metrics.CacheMetrics; import org.apache.cassandra.metrics.CassandraMetricsRegistry; import org.apache.cassandra.service.CacheService; @@ -407,7 +409,7 @@ public class KeyCacheCqlTest extends CQLTester if (index != null) { StorageService.instance.disableAutoCompaction(KEYSPACE, table + '.' + index); - Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index).getBlockingFlushTask().call(); + triggerBlockingFlush(Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index)); } for (int i = 0; i < 100; i++) @@ -432,7 +434,7 @@ public class KeyCacheCqlTest extends CQLTester { Keyspace.open(KEYSPACE).getColumnFamilyStore(table).forceFlush().get(); if (index != null) - Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index).getBlockingFlushTask().call(); + triggerBlockingFlush(Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index)); } } } @@ -464,4 +466,12 @@ public class KeyCacheCqlTest extends CQLTester Assert.assertEquals(0L, metrics.requests.getCount()); Assert.assertEquals(0L, metrics.size.getValue().longValue()); } + + private static void triggerBlockingFlush(Index index) throws Exception + { + assert index != null; + Callable flushTask = index.getBlockingFlushTask(); + if (flushTask != null) + flushTask.call(); + } } diff --git a/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java b/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java new file mode 100644 index 0000000000..cb5ec73780 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java @@ -0,0 +1,1852 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi; + +import java.nio.ByteBuffer; +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.cql3.*; +import org.apache.cassandra.cql3.Term; +import org.apache.cassandra.cql3.statements.IndexTarget; +import org.apache.cassandra.cql3.statements.SelectStatement; +import org.apache.cassandra.db.*; +import org.apache.cassandra.db.filter.ColumnFilter; +import org.apache.cassandra.db.filter.DataLimits; +import org.apache.cassandra.db.filter.RowFilter; +import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.db.partitions.PartitionUpdate; +import org.apache.cassandra.db.partitions.UnfilteredPartitionIterator; +import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.dht.IPartitioner; +import org.apache.cassandra.dht.Murmur3Partitioner; +import org.apache.cassandra.dht.Range; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder; +import org.apache.cassandra.index.sasi.exceptions.TimeQuotaExceededException; +import org.apache.cassandra.index.sasi.plan.QueryPlan; +import org.apache.cassandra.schema.IndexMetadata; +import org.apache.cassandra.schema.KeyspaceMetadata; +import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.schema.Tables; +import org.apache.cassandra.serializers.MarshalException; +import org.apache.cassandra.serializers.TypeSerializer; +import org.apache.cassandra.service.MigrationManager; +import org.apache.cassandra.service.QueryState; +import org.apache.cassandra.thrift.CqlRow; +import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.utils.ByteBufferUtil; +import org.apache.cassandra.utils.FBUtilities; +import org.apache.cassandra.utils.Pair; + +import com.google.common.collect.Lists; +import com.google.common.util.concurrent.Uninterruptibles; + +import junit.framework.Assert; + +import org.junit.*; + +public class SASIIndexTest +{ + private static final IPartitioner PARTITIONER = new Murmur3Partitioner(); + + private static final String KS_NAME = "sasi"; + private static final String CF_NAME = "test_cf"; + private static final String CLUSTRING_CF_NAME = "clustering_test_cf"; + + @BeforeClass + public static void loadSchema() throws ConfigurationException + { + System.setProperty("cassandra.config", "cassandra-murmur.yaml"); + SchemaLoader.loadSchema(); + MigrationManager.announceNewKeyspace(KeyspaceMetadata.create(KS_NAME, + KeyspaceParams.simpleTransient(1), + Tables.of(SchemaLoader.sasiCFMD(KS_NAME, CF_NAME), + SchemaLoader.clusteringSASICFMD(KS_NAME, CLUSTRING_CF_NAME)))); + } + + @After + public void cleanUp() + { + Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME).truncateBlocking(); + } + + @Test + public void testSingleExpressionQueries() throws Exception + { + testSingleExpressionQueries(false); + cleanupData(); + testSingleExpressionQueries(true); + } + + private void testSingleExpressionQueries(boolean forceFlush) throws Exception + { + Map> data = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 14)); + put("key2", Pair.create("Pavel", 26)); + put("key3", Pair.create("Pavel", 27)); + put("key4", Pair.create("Jason", 27)); + }}; + + ColumnFamilyStore store = loadData(data, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows; + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("av"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("as"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("aw"))); + Assert.assertEquals(rows.toString(), 0, rows.size()); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(27))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{"key3", "key4"}, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(26))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(13))); + Assert.assertEquals(rows.toString(), 0, rows.size()); + } + + @Test + public void testEmptyTokenizedResults() throws Exception + { + testEmptyTokenizedResults(false); + cleanupData(); + testEmptyTokenizedResults(true); + } + + private void testEmptyTokenizedResults(boolean forceFlush) throws Exception + { + Map> data = new HashMap>() + {{ + put("key1", Pair.create(" ", 14)); + }}; + + ColumnFamilyStore store = loadData(data, forceFlush); + + Set rows= getIndexed(store, 10, buildExpression(UTF8Type.instance.decompose("first_name"), Operator.EQ, UTF8Type.instance.decompose("doesntmatter"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{}, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testMultiExpressionQueries() throws Exception + { + testMultiExpressionQueries(false); + cleanupData(); + testMultiExpressionQueries(true); + } + + public void testMultiExpressionQueries(boolean forceFlush) throws Exception + { + Map> data = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 14)); + put("key2", Pair.create("Pavel", 26)); + put("key3", Pair.create("Pavel", 27)); + put("key4", Pair.create("Jason", 27)); + }}; + + ColumnFamilyStore store = loadData(data, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows; + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(14))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(27))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{"key1", "key2"}, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(14)), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(27))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(12))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(13))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(16))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(30))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(29))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(25))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key1" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testCrossSSTableQueries() throws Exception + { + testCrossSSTableQueries(false); + cleanupData(); + testCrossSSTableQueries(true); + + } + + private void testCrossSSTableQueries(boolean forceFlush) throws Exception + { + Map> part1 = new HashMap>() + {{ + put("key0", Pair.create("Maxie", 43)); + put("key1", Pair.create("Chelsie", 33)); + put("key2", Pair.create("Josephine", 43)); + put("key3", Pair.create("Shanna", 27)); + put("key4", Pair.create("Amiya", 36)); + }}; + + loadData(part1, forceFlush); // first sstable + + Map> part2 = new HashMap>() + {{ + put("key5", Pair.create("Americo", 20)); + put("key6", Pair.create("Fiona", 39)); + put("key7", Pair.create("Francis", 41)); + put("key8", Pair.create("Charley", 21)); + put("key9", Pair.create("Amely", 40)); + }}; + + loadData(part2, forceFlush); + + Map> part3 = new HashMap>() + {{ + put("key10", Pair.create("Eddie", 42)); + put("key11", Pair.create("Oswaldo", 35)); + put("key12", Pair.create("Susana", 35)); + put("key13", Pair.create("Alivia", 42)); + put("key14", Pair.create("Demario", 28)); + }}; + + ColumnFamilyStore store = loadData(part3, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows; + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("Fiona")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(40))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key6" }, rows.toArray(new String[rows.size()]))); + + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key0", "key11", "key12", "key13", "key14", + "key3", "key4", "key6", "key7", "key8" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 5, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + + Assert.assertEquals(rows.toString(), 5, rows.size()); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(35))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key0", "key11", "key12", "key13", "key4", "key6", "key7" }, + rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(32))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14", "key3", "key8" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(27)), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(32))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(10))); + + Assert.assertEquals(rows.toString(), 10, rows.size()); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(50))); + + Assert.assertEquals(rows.toString(), 10, rows.size()); + } + + @Test + public void testQueriesThatShouldBeTokenized() throws Exception + { + testQueriesThatShouldBeTokenized(false); + cleanupData(); + testQueriesThatShouldBeTokenized(true); + } + + private void testQueriesThatShouldBeTokenized(boolean forceFlush) throws Exception + { + Map> part1 = new HashMap>() + {{ + put("key0", Pair.create("If you can dream it, you can do it.", 43)); + put("key1", Pair.create("What you get by achieving your goals is not " + + "as important as what you become by achieving your goals, do it.", 33)); + put("key2", Pair.create("Keep your face always toward the sunshine " + + "- and shadows will fall behind you.", 43)); + put("key3", Pair.create("We can't help everyone, but everyone can " + + "help someone.", 27)); + }}; + + ColumnFamilyStore store = loadData(part1, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, + UTF8Type.instance.decompose("What you get by achieving your goals")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(32))); + + Assert.assertEquals(rows.toString(), Collections.singleton("key1"), rows); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("do it."))); + + Assert.assertEquals(rows.toString(), Arrays.asList("key0", "key1"), Lists.newArrayList(rows)); + } + + @Test + public void testMultiExpressionQueriesWhereRowSplitBetweenSSTables() throws Exception + { + testMultiExpressionQueriesWhereRowSplitBetweenSSTables(false); + cleanupData(); + testMultiExpressionQueriesWhereRowSplitBetweenSSTables(true); + } + + private void testMultiExpressionQueriesWhereRowSplitBetweenSSTables(boolean forceFlush) throws Exception + { + Map> part1 = new HashMap>() + {{ + put("key0", Pair.create("Maxie", -1)); + put("key1", Pair.create("Chelsie", 33)); + put("key2", Pair.create((String)null, 43)); + put("key3", Pair.create("Shanna", 27)); + put("key4", Pair.create("Amiya", 36)); + }}; + + loadData(part1, forceFlush); // first sstable + + Map> part2 = new HashMap>() + {{ + put("key5", Pair.create("Americo", 20)); + put("key6", Pair.create("Fiona", 39)); + put("key7", Pair.create("Francis", 41)); + put("key8", Pair.create("Charley", 21)); + put("key9", Pair.create("Amely", 40)); + put("key14", Pair.create((String)null, 28)); + }}; + + loadData(part2, forceFlush); + + Map> part3 = new HashMap>() + {{ + put("key0", Pair.create((String)null, 43)); + put("key10", Pair.create("Eddie", 42)); + put("key11", Pair.create("Oswaldo", 35)); + put("key12", Pair.create("Susana", 35)); + put("key13", Pair.create("Alivia", 42)); + put("key14", Pair.create("Demario", -1)); + put("key2", Pair.create("Josephine", -1)); + }}; + + ColumnFamilyStore store = loadData(part3, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("Fiona")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(40))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key6" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key0", "key11", "key12", "key13", "key14", + "key3", "key4", "key6", "key7", "key8" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 5, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + + Assert.assertEquals(rows.toString(), 5, rows.size()); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(35))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key0", "key11", "key12", "key13", "key4", "key6", "key7" }, + rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(32))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14", "key3", "key8" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(27)), + buildExpression(age, Operator.LT, Int32Type.instance.decompose(32))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14" }, rows.toArray(new String[rows.size()]))); + + Map> part4 = new HashMap>() + {{ + put("key12", Pair.create((String)null, 12)); + put("key14", Pair.create("Demario", 42)); + put("key2", Pair.create("Frank", -1)); + }}; + + store = loadData(part4, forceFlush); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("Susana")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(13)), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(10))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key12" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("Demario")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(30))); + Assert.assertTrue(rows.toString(), rows.size() == 0); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("Josephine"))); + Assert.assertTrue(rows.toString(), rows.size() == 0); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(10))); + + Assert.assertEquals(rows.toString(), 10, rows.size()); + + rows = getIndexed(store, 10, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(50))); + + Assert.assertEquals(rows.toString(), 10, rows.size()); + } + + @Test + public void testPagination() throws Exception + { + testPagination(false); + cleanupData(); + testPagination(true); + } + + private void testPagination(boolean forceFlush) throws Exception + { + // split data into 3 distinct SSTables to test paging with overlapping token intervals. + + Map> part1 = new HashMap>() + {{ + put("key01", Pair.create("Ali", 33)); + put("key02", Pair.create("Jeremy", 41)); + put("key03", Pair.create("Elvera", 22)); + put("key04", Pair.create("Bailey", 45)); + put("key05", Pair.create("Emerson", 32)); + put("key06", Pair.create("Kadin", 38)); + put("key07", Pair.create("Maggie", 36)); + put("key08", Pair.create("Kailey", 36)); + put("key09", Pair.create("Armand", 21)); + put("key10", Pair.create("Arnold", 35)); + }}; + + Map> part2 = new HashMap>() + {{ + put("key11", Pair.create("Ken", 38)); + put("key12", Pair.create("Penelope", 43)); + put("key13", Pair.create("Wyatt", 34)); + put("key14", Pair.create("Johnpaul", 34)); + put("key15", Pair.create("Trycia", 43)); + put("key16", Pair.create("Aida", 21)); + put("key17", Pair.create("Devon", 42)); + }}; + + Map> part3 = new HashMap>() + {{ + put("key18", Pair.create("Christina", 20)); + put("key19", Pair.create("Rick", 19)); + put("key20", Pair.create("Fannie", 22)); + put("key21", Pair.create("Keegan", 29)); + put("key22", Pair.create("Ignatius", 36)); + put("key23", Pair.create("Ellis", 26)); + put("key24", Pair.create("Annamarie", 29)); + put("key25", Pair.create("Tianna", 31)); + put("key26", Pair.create("Dennis", 32)); + }}; + + ColumnFamilyStore store = loadData(part1, forceFlush); + + loadData(part2, forceFlush); + loadData(part3, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set uniqueKeys = getPaged(store, 4, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(21))); + + + List expected = new ArrayList() + {{ + add("key25"); + add("key20"); + add("key13"); + add("key22"); + add("key09"); + add("key14"); + add("key16"); + add("key24"); + add("key03"); + add("key04"); + add("key08"); + add("key07"); + add("key15"); + add("key06"); + add("key21"); + }}; + + Assert.assertEquals(expected, convert(uniqueKeys)); + + // now let's test a single equals condition + + uniqueKeys = getPaged(store, 4, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + + expected = new ArrayList() + {{ + add("key25"); + add("key20"); + add("key13"); + add("key22"); + add("key09"); + add("key14"); + add("key16"); + add("key24"); + add("key03"); + add("key04"); + add("key18"); + add("key08"); + add("key07"); + add("key15"); + add("key06"); + add("key21"); + }}; + + Assert.assertEquals(expected, convert(uniqueKeys)); + + // now let's test something which is smaller than a single page + uniqueKeys = getPaged(store, 4, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(36))); + + expected = new ArrayList() + {{ + add("key22"); + add("key08"); + add("key07"); + }}; + + Assert.assertEquals(expected, convert(uniqueKeys)); + + // the same but with the page size of 2 to test minimal pagination windows + + uniqueKeys = getPaged(store, 2, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(36))); + + Assert.assertEquals(expected, convert(uniqueKeys)); + + // and last but not least, test age range query with pagination + uniqueKeys = getPaged(store, 4, + buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GT, Int32Type.instance.decompose(20)), + buildExpression(age, Operator.LTE, Int32Type.instance.decompose(36))); + + expected = new ArrayList() + {{ + add("key25"); + add("key20"); + add("key13"); + add("key22"); + add("key09"); + add("key14"); + add("key16"); + add("key24"); + add("key03"); + add("key08"); + add("key07"); + add("key21"); + }}; + + Assert.assertEquals(expected, convert(uniqueKeys)); + + Set rows; + + rows = executeCQL(String.format("SELECT * FROM %s.%s WHERE first_name = 'a' limit 10 ALLOW FILTERING;", KS_NAME, CF_NAME)); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key03", "key04", "key09", "key13", "key14", "key16", "key20", "key22", "key24", "key25" }, rows.toArray(new String[rows.size()]))); + + rows = executeCQL(String.format("SELECT * FROM %s.%s WHERE first_name = 'a' and token(id) >= token('key14') limit 5 ALLOW FILTERING;", KS_NAME, CF_NAME)); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key03", "key04", "key14", "key16", "key24" }, rows.toArray(new String[rows.size()]))); + + rows = executeCQL(String.format("SELECT * FROM %s.%s WHERE first_name = 'a' and token(id) >= token('key14') and token(id) <= token('key24') limit 5 ALLOW FILTERING;", KS_NAME, CF_NAME)); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14", "key16", "key24" }, rows.toArray(new String[rows.size()]))); + + rows = executeCQL(String.format("SELECT * FROM %s.%s WHERE first_name = 'a' and age > 30 and token(id) >= token('key14') and token(id) <= token('key24') limit 5 ALLOW FILTERING;", KS_NAME, CF_NAME)); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key14" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testColumnNamesWithSlashes() throws Exception + { + testColumnNamesWithSlashes(false); + cleanupData(); + testColumnNamesWithSlashes(true); + } + + private void testColumnNamesWithSlashes(boolean forceFlush) throws Exception + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + Mutation rm1 = new Mutation(KS_NAME, decoratedKey(AsciiType.instance.decompose("key1"))); + rm1.add(PartitionUpdate.singleRowUpdate(store.metadata, + rm1.key(), + buildRow(buildCell(store.metadata, + UTF8Type.instance.decompose("/data/output/id"), + AsciiType.instance.decompose("jason"), + System.currentTimeMillis())))); + + Mutation rm2 = new Mutation(KS_NAME, decoratedKey(AsciiType.instance.decompose("key2"))); + rm2.add(PartitionUpdate.singleRowUpdate(store.metadata, + rm2.key(), + buildRow(buildCell(store.metadata, + UTF8Type.instance.decompose("/data/output/id"), + AsciiType.instance.decompose("pavel"), + System.currentTimeMillis())))); + + Mutation rm3 = new Mutation(KS_NAME, decoratedKey(AsciiType.instance.decompose("key3"))); + rm3.add(PartitionUpdate.singleRowUpdate(store.metadata, + rm3.key(), + buildRow(buildCell(store.metadata, + UTF8Type.instance.decompose("/data/output/id"), + AsciiType.instance.decompose("Aleksey"), + System.currentTimeMillis())))); + + rm1.apply(); + rm2.apply(); + rm3.apply(); + + if (forceFlush) + store.forceBlockingFlush(); + + final ByteBuffer dataOutputId = UTF8Type.instance.decompose("/data/output/id"); + + Set rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("A"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key3" }, rows.toArray(new String[rows.size()]))); + + // doesn't really make sense to rebuild index for in-memory data + if (!forceFlush) + return; + + store.indexManager.invalidateAllIndexesBlocking(); + + rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), rows.isEmpty()); + + rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("A"))); + Assert.assertTrue(rows.toString(), rows.isEmpty()); + + // now let's trigger index rebuild and check if we got the data back + store.indexManager.buildIndexBlocking(store.indexManager.getIndexByName("data_output_id")); + + rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2" }, rows.toArray(new String[rows.size()]))); + + // also let's try to build an index for column which has no data to make sure that doesn't fail + store.indexManager.buildIndexBlocking(store.indexManager.getIndexByName("first_name")); + store.indexManager.buildIndexBlocking(store.indexManager.getIndexByName("data_output_id")); + + rows = getIndexed(store, 10, buildExpression(dataOutputId, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testInvalidate() throws Exception + { + testInvalidate(false); + cleanupData(); + testInvalidate(true); + } + + private void testInvalidate(boolean forceFlush) throws Exception + { + Map> part1 = new HashMap>() + {{ + put("key0", Pair.create("Maxie", -1)); + put("key1", Pair.create("Chelsie", 33)); + put("key2", Pair.create((String) null, 43)); + put("key3", Pair.create("Shanna", 27)); + put("key4", Pair.create("Amiya", 36)); + }}; + + ColumnFamilyStore store = loadData(part1, forceFlush); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Set rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key0", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(33))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key1" }, rows.toArray(new String[rows.size()]))); + + store.indexManager.invalidateAllIndexesBlocking(); + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), rows.isEmpty()); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(33))); + Assert.assertTrue(rows.toString(), rows.isEmpty()); + + + Map> part2 = new HashMap>() + {{ + put("key5", Pair.create("Americo", 20)); + put("key6", Pair.create("Fiona", 39)); + put("key7", Pair.create("Francis", 41)); + put("key8", Pair.create("Fred", 21)); + put("key9", Pair.create("Amely", 40)); + put("key14", Pair.create("Dino", 28)); + }}; + + loadData(part2, forceFlush); + + rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key6", "key7" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(age, Operator.EQ, Int32Type.instance.decompose(40))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{ "key9" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testTruncate() + { + Map> part1 = new HashMap>() + {{ + put("key01", Pair.create("Ali", 33)); + put("key02", Pair.create("Jeremy", 41)); + put("key03", Pair.create("Elvera", 22)); + put("key04", Pair.create("Bailey", 45)); + put("key05", Pair.create("Emerson", 32)); + put("key06", Pair.create("Kadin", 38)); + put("key07", Pair.create("Maggie", 36)); + put("key08", Pair.create("Kailey", 36)); + put("key09", Pair.create("Armand", 21)); + put("key10", Pair.create("Arnold", 35)); + }}; + + Map> part2 = new HashMap>() + {{ + put("key11", Pair.create("Ken", 38)); + put("key12", Pair.create("Penelope", 43)); + put("key13", Pair.create("Wyatt", 34)); + put("key14", Pair.create("Johnpaul", 34)); + put("key15", Pair.create("Trycia", 43)); + put("key16", Pair.create("Aida", 21)); + put("key17", Pair.create("Devon", 42)); + }}; + + Map> part3 = new HashMap>() + {{ + put("key18", Pair.create("Christina", 20)); + put("key19", Pair.create("Rick", 19)); + put("key20", Pair.create("Fannie", 22)); + put("key21", Pair.create("Keegan", 29)); + put("key22", Pair.create("Ignatius", 36)); + put("key23", Pair.create("Ellis", 26)); + put("key24", Pair.create("Annamarie", 29)); + put("key25", Pair.create("Tianna", 31)); + put("key26", Pair.create("Dennis", 32)); + }}; + + ColumnFamilyStore store = loadData(part1, 1000, true); + + loadData(part2, 2000, true); + loadData(part3, 3000, true); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + + Set rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 16, rows.size()); + + // make sure we don't prematurely delete anything + store.indexManager.truncateAllIndexesBlocking(500); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 16, rows.size()); + + store.indexManager.truncateAllIndexesBlocking(1500); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 10, rows.size()); + + store.indexManager.truncateAllIndexesBlocking(2500); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 6, rows.size()); + + store.indexManager.truncateAllIndexesBlocking(3500); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 0, rows.size()); + + // add back in some data just to make sure it all still works + Map> part4 = new HashMap>() + {{ + put("key40", Pair.create("Tianna", 31)); + put("key41", Pair.create("Dennis", 32)); + }}; + + loadData(part4, 4000, true); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertEquals(rows.toString(), 1, rows.size()); + } + + + @Test + public void testConcurrentMemtableReadsAndWrites() throws Exception + { + final ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + ExecutorService scheduler = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + + final int writeCount = 10000; + final AtomicInteger updates = new AtomicInteger(0); + + for (int i = 0; i < writeCount; i++) + { + final String key = "key" + i; + final String firstName = "first_name#" + i; + final String lastName = "last_name#" + i; + + scheduler.submit((Runnable) () -> { + try + { + newMutation(key, firstName, lastName, 26, System.currentTimeMillis()).apply(); + Uninterruptibles.sleepUninterruptibly(5, TimeUnit.MILLISECONDS); // back up a bit to do more reads + } + finally + { + updates.incrementAndGet(); + } + }); + } + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + int previousCount = 0; + + do + { + // this loop figures out if number of search results monotonically increasing + // to make sure that concurrent updates don't interfere with reads, uses first_name and age + // indexes to test correctness of both Trie and SkipList ColumnIndex implementations. + + Set rows = getPaged(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(26))); + + Assert.assertTrue(previousCount <= rows.size()); + previousCount = rows.size(); + } + while (updates.get() < writeCount); + + // to make sure that after all of the right are done we can read all "count" worth of rows + Set rows = getPaged(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(26))); + + Assert.assertEquals(writeCount, rows.size()); + } + + @Test + public void testSameKeyInMemtableAndSSTables() + { + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Map> data1 = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 14)); + put("key2", Pair.create("Pavel", 26)); + put("key3", Pair.create("Pavel", 27)); + put("key4", Pair.create("Jason", 27)); + }}; + + ColumnFamilyStore store = loadData(data1, true); + + Map> data2 = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 14)); + put("key2", Pair.create("Pavel", 27)); + put("key4", Pair.create("Jason", 28)); + }}; + + loadData(data2, true); + + Map> data3 = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 15)); + put("key4", Pair.create("Jason", 29)); + }}; + + loadData(data3, false); + + Set rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(15))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(29))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 100, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.EQ, Int32Type.instance.decompose(27))); + + Assert.assertTrue(rows.toString(), Arrays.equals(new String[]{"key2", "key3"}, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testInsertingIncorrectValuesIntoAgeIndex() + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + final ByteBuffer age = UTF8Type.instance.decompose("age"); + + Mutation rm = new Mutation(KS_NAME, decoratedKey(AsciiType.instance.decompose("key1"))); + update(rm, new ArrayList() + {{ + add(buildCell(firstName, AsciiType.instance.decompose("pavel"), System.currentTimeMillis())); + add(buildCell(age, LongType.instance.decompose(26L), System.currentTimeMillis())); + }}); + rm.apply(); + + store.forceBlockingFlush(); + + Set rows = getIndexed(store, 10, buildExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + buildExpression(age, Operator.GTE, Int32Type.instance.decompose(26))); + + // index is expected to have 0 results because age value was of wrong type + Assert.assertEquals(0, rows.size()); + } + + + @Test + public void testUnicodeSupport() + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer comment = UTF8Type.instance.decompose("comment"); + + Mutation rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, comment, UTF8Type.instance.decompose("ⓈⓅⒺⒸⒾⒶⓁ ⒞⒣⒜⒭⒮ and normal ones"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key2")); + update(rm, comment, UTF8Type.instance.decompose("龍馭鬱"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key3")); + update(rm, comment, UTF8Type.instance.decompose("インディアナ"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key4")); + update(rm, comment, UTF8Type.instance.decompose("レストラン"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key5")); + update(rm, comment, UTF8Type.instance.decompose("ベンジャミン ウエスト"), System.currentTimeMillis()); + rm.apply(); + + + Set rows; + + /* Memtable */ + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ⓈⓅⒺⒸⒾ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("normal"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key5" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("レストラ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("インディ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key5" }, rows.toArray(new String[rows.size()]))); + + store.forceBlockingFlush(); + + /* OnDiskSA */ + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ⓈⓅⒺⒸⒾ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("normal"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key5" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("レストラ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("インディ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミ"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key5" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testUnicodeSuffixMode() + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer comment = UTF8Type.instance.decompose("comment_suffix_split"); + + Mutation rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, comment, UTF8Type.instance.decompose("龍馭鬱"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key2")); + update(rm, comment, UTF8Type.instance.decompose("インディアナ"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key3")); + update(rm, comment, UTF8Type.instance.decompose("レストラン"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key4")); + update(rm, comment, UTF8Type.instance.decompose("ベンジャミン ウエスト"), System.currentTimeMillis()); + rm.apply(); + + + Set rows; + + /* Memtable */ + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("トラン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ディア"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + store.forceBlockingFlush(); + + /* OnDiskSA */ + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("龍馭鬱"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ベンジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("トラン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ディア"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ジャミン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("ン"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testThatTooBigValueIsRejected() + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer comment = UTF8Type.instance.decompose("comment_suffix_split"); + + for (int i = 0; i < 10; i++) + { + byte[] randomBytes = new byte[ThreadLocalRandom.current().nextInt(OnDiskIndexBuilder.MAX_TERM_SIZE, 5 * OnDiskIndexBuilder.MAX_TERM_SIZE)]; + ThreadLocalRandom.current().nextBytes(randomBytes); + + final ByteBuffer bigValue = UTF8Type.instance.decompose(new String(randomBytes)); + + Mutation rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, comment, bigValue, System.currentTimeMillis()); + rm.apply(); + + Set rows; + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, bigValue.duplicate())); + Assert.assertEquals(0, rows.size()); + + store.forceBlockingFlush(); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, bigValue.duplicate())); + Assert.assertEquals(0, rows.size()); + } + } + + @Test + public void testSearchTimeouts() throws Exception + { + final ByteBuffer firstName = UTF8Type.instance.decompose("first_name"); + + Map> data1 = new HashMap>() + {{ + put("key1", Pair.create("Pavel", 14)); + put("key2", Pair.create("Pavel", 26)); + put("key3", Pair.create("Pavel", 27)); + put("key4", Pair.create("Jason", 27)); + }}; + + ColumnFamilyStore store = loadData(data1, true); + + RowFilter filter = RowFilter.create(); + filter.add(store.metadata.getColumnDefinition(firstName), Operator.EQ, AsciiType.instance.fromString("a")); + + ReadCommand command = new PartitionRangeReadCommand(store.metadata, + FBUtilities.nowInSeconds(), + ColumnFilter.all(store.metadata), + filter, + DataLimits.NONE, + DataRange.allData(store.metadata.partitioner), + Optional.empty()); + + try + { + new QueryPlan(store, command, 0).execute(ReadExecutionController.empty()); + Assert.fail(); + } + catch (TimeQuotaExceededException e) + { + // correct behavior + } + catch (Exception e) + { + Assert.fail(); + e.printStackTrace(); + } + + // to make sure that query doesn't fail in normal conditions + + Set rows = getKeys(new QueryPlan(store, command, DatabaseDescriptor.getRangeRpcTimeout()).execute(ReadExecutionController.empty())); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1", "key2", "key3", "key4" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testLowerCaseAnalyzer() + { + testLowerCaseAnalyzer(false); + cleanupData(); + testLowerCaseAnalyzer(true); + } + + @Test + public void testChinesePrefixSearch() + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer fullName = UTF8Type.instance.decompose("/output/full-name/"); + + Mutation rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, fullName, UTF8Type.instance.decompose("美加 八田"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key2")); + update(rm, fullName, UTF8Type.instance.decompose("仁美 瀧澤"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key3")); + update(rm, fullName, UTF8Type.instance.decompose("晃宏 高須"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key4")); + update(rm, fullName, UTF8Type.instance.decompose("弘孝 大竹"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key5")); + update(rm, fullName, UTF8Type.instance.decompose("満枝 榎本"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key6")); + update(rm, fullName, UTF8Type.instance.decompose("飛鳥 上原"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key7")); + update(rm, fullName, UTF8Type.instance.decompose("大輝 鎌田"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key8")); + update(rm, fullName, UTF8Type.instance.decompose("利久 寺地"), System.currentTimeMillis()); + rm.apply(); + + store.forceBlockingFlush(); + + + Set rows; + + rows = getIndexed(store, 10, buildExpression(fullName, Operator.EQ, UTF8Type.instance.decompose("美加 八田"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(fullName, Operator.EQ, UTF8Type.instance.decompose("美加"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(fullName, Operator.EQ, UTF8Type.instance.decompose("晃宏 高須"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(fullName, Operator.EQ, UTF8Type.instance.decompose("大輝"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key7" }, rows.toArray(new String[rows.size()]))); + } + + public void testLowerCaseAnalyzer(boolean forceFlush) + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer comment = UTF8Type.instance.decompose("address"); + + Mutation rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, comment, UTF8Type.instance.decompose("577 Rogahn Valleys Apt. 178"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key2")); + update(rm, comment, UTF8Type.instance.decompose("89809 Beverly Course Suite 089"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key3")); + update(rm, comment, UTF8Type.instance.decompose("165 clydie oval apt. 399"), System.currentTimeMillis()); + rm.apply(); + + if (forceFlush) + store.forceBlockingFlush(); + + Set rows; + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("577 Rogahn Valleys"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("577 ROgAhn VallEYs"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("577 rogahn valleys"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("577 rogahn"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("57"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("89809 Beverly Course"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("89809 BEVERly COURSE"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("89809 beverly course"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("89809 Beverly"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("8980"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165 ClYdie OvAl APT. 399"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165 Clydie Oval Apt. 399"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165 clydie oval apt. 399"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165 ClYdie OvA"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165 ClYdi"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(comment, Operator.EQ, UTF8Type.instance.decompose("165"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testPrefixSSTableLookup() + { + // This test coverts particular case which interval lookup can return invalid results + // when queried on the prefix e.g. "j". + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + final ByteBuffer name = UTF8Type.instance.decompose("first_name_prefix"); + + Mutation rm; + + rm = new Mutation(KS_NAME, decoratedKey("key1")); + update(rm, name, UTF8Type.instance.decompose("Pavel"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key2")); + update(rm, name, UTF8Type.instance.decompose("Jordan"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key3")); + update(rm, name, UTF8Type.instance.decompose("Mikhail"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key4")); + update(rm, name, UTF8Type.instance.decompose("Michael"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key5")); + update(rm, name, UTF8Type.instance.decompose("Johnny"), System.currentTimeMillis()); + rm.apply(); + + // first flush would make interval for name - 'johnny' -> 'pavel' + store.forceBlockingFlush(); + + rm = new Mutation(KS_NAME, decoratedKey("key6")); + update(rm, name, UTF8Type.instance.decompose("Jason"), System.currentTimeMillis()); + rm.apply(); + + rm = new Mutation(KS_NAME, decoratedKey("key7")); + update(rm, name, UTF8Type.instance.decompose("Vijay"), System.currentTimeMillis()); + rm.apply(); + + // this flush is going to produce range - 'jason' -> 'vijay' + store.forceBlockingFlush(); + + // make sure that overlap of the prefixes is properly handled across sstables + // since simple interval tree lookup is not going to cover it, prefix lookup actually required. + + Set rows; + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("J"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key5", "key6" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("j"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key5", "key6" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("m"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key3", "key4" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("v"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key7" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("p"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key1" }, rows.toArray(new String[rows.size()]))); + + rows = getIndexed(store, 10, buildExpression(name, Operator.EQ, UTF8Type.instance.decompose("j")), + buildExpression(name, Operator.NEQ, UTF8Type.instance.decompose("joh"))); + Assert.assertTrue(rows.toString(), Arrays.equals(new String[] { "key2", "key6" }, rows.toArray(new String[rows.size()]))); + } + + @Test + public void testSettingIsLiteralOption() + { + + // special type which is UTF-8 but is only on the inside + AbstractType stringType = new AbstractType(AbstractType.ComparisonType.CUSTOM) + { + public ByteBuffer fromString(String source) throws MarshalException + { + return UTF8Type.instance.fromString(source); + } + + public Term fromJSONObject(Object parsed) throws MarshalException + { + throw new UnsupportedOperationException(); + } + + public TypeSerializer getSerializer() + { + return UTF8Type.instance.getSerializer(); + } + + public int compareCustom(ByteBuffer a, ByteBuffer b) + { + return UTF8Type.instance.compare(a, b); + } + }; + + // first let's check that we get 'false' for 'isLiteral' if we don't set the option with special comparator + ColumnDefinition columnA = ColumnDefinition.regularDef(KS_NAME, CF_NAME, "special-A", stringType); + + ColumnIndex indexA = new ColumnIndex(UTF8Type.instance, columnA, IndexMetadata.fromSchemaMetadata("special-index-A", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + }})); + + Assert.assertEquals(true, indexA.isIndexed()); + Assert.assertEquals(false, indexA.isLiteral()); + + // now let's double-check that we do get 'true' when we set it + ColumnDefinition columnB = ColumnDefinition.regularDef(KS_NAME, CF_NAME, "special-B", stringType); + + ColumnIndex indexB = new ColumnIndex(UTF8Type.instance, columnB, IndexMetadata.fromSchemaMetadata("special-index-B", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put("is_literal", "true"); + }})); + + Assert.assertEquals(true, indexB.isIndexed()); + Assert.assertEquals(true, indexB.isLiteral()); + + // and finally we should also get a 'true' if it's built-in UTF-8/ASCII comparator + ColumnDefinition columnC = ColumnDefinition.regularDef(KS_NAME, CF_NAME, "special-C", UTF8Type.instance); + + ColumnIndex indexC = new ColumnIndex(UTF8Type.instance, columnC, IndexMetadata.fromSchemaMetadata("special-index-C", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + }})); + + Assert.assertEquals(true, indexC.isIndexed()); + Assert.assertEquals(true, indexC.isLiteral()); + + ColumnDefinition columnD = ColumnDefinition.regularDef(KS_NAME, CF_NAME, "special-D", AsciiType.instance); + + ColumnIndex indexD = new ColumnIndex(UTF8Type.instance, columnD, IndexMetadata.fromSchemaMetadata("special-index-D", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + }})); + + Assert.assertEquals(true, indexD.isIndexed()); + Assert.assertEquals(true, indexD.isLiteral()); + + // and option should supersedes the comparator type + ColumnDefinition columnE = ColumnDefinition.regularDef(KS_NAME, CF_NAME, "special-E", UTF8Type.instance); + + ColumnIndex indexE = new ColumnIndex(UTF8Type.instance, columnE, IndexMetadata.fromSchemaMetadata("special-index-E", IndexMetadata.Kind.CUSTOM, new HashMap() + {{ + put(IndexTarget.CUSTOM_INDEX_OPTION_NAME, SASIIndex.class.getName()); + put("is_literal", "false"); + }})); + + Assert.assertEquals(true, indexE.isIndexed()); + Assert.assertEquals(false, indexE.isLiteral()); + } + + @Test + public void testClusteringIndexes() throws Exception + { + testClusteringIndexes(false); + cleanupData(); + testClusteringIndexes(true); + } + + public void testClusteringIndexes(boolean forceFlush) throws Exception + { + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CLUSTRING_CF_NAME); + + executeCQL("INSERT INTO %s.%s (name, location, age, height, score) VALUES (?, ?, ?, ?, ?)", "Pavel", "US", 27, 183, 1.0); + executeCQL("INSERT INTO %s.%s (name, location, age, height, score) VALUES (?, ?, ?, ?, ?)", "Pavel", "BY", 28, 182, 2.0); + executeCQL("INSERT INTO %s.%s (name, location, age, height, score) VALUES (?, ?, ?, ?, ?)", "Jordan", "US", 27, 182, 1.0); + + if (forceFlush) + store.forceBlockingFlush(); + + UntypedResultSet results; + + results = executeCQL("SELECT * FROM %s.%s WHERE location = ? ALLOW FILTERING", "US"); + Assert.assertNotNull(results); + Assert.assertEquals(2, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE age >= ? AND height = ? ALLOW FILTERING", 27, 182); + Assert.assertNotNull(results); + Assert.assertEquals(2, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE age = ? AND height = ? ALLOW FILTERING", 28, 182); + Assert.assertNotNull(results); + Assert.assertEquals(1, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE age >= ? AND height = ? AND score >= ? ALLOW FILTERING", 27, 182, 1.0); + Assert.assertNotNull(results); + Assert.assertEquals(2, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE age >= ? AND height = ? AND score = ? ALLOW FILTERING", 27, 182, 1.0); + Assert.assertNotNull(results); + Assert.assertEquals(1, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE location = ? AND age >= ? ALLOW FILTERING", "US", 27); + Assert.assertNotNull(results); + Assert.assertEquals(2, results.size()); + + results = executeCQL("SELECT * FROM %s.%s WHERE location = ? ALLOW FILTERING", "BY"); + Assert.assertNotNull(results); + Assert.assertEquals(1, results.size()); + } + + private static ColumnFamilyStore loadData(Map> data, boolean forceFlush) + { + return loadData(data, System.currentTimeMillis(), forceFlush); + } + + private static ColumnFamilyStore loadData(Map> data, long timestamp, boolean forceFlush) + { + for (Map.Entry> e : data.entrySet()) + newMutation(e.getKey(), e.getValue().left, null, e.getValue().right, timestamp).apply(); + + ColumnFamilyStore store = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + + if (forceFlush) + store.forceBlockingFlush(); + + return store; + } + + private void cleanupData() + { + Keyspace ks = Keyspace.open(KS_NAME); + ks.getColumnFamilyStore(CF_NAME).truncateBlocking(); + ks.getColumnFamilyStore(CLUSTRING_CF_NAME).truncateBlocking(); + } + + private static Set getIndexed(ColumnFamilyStore store, int maxResults, Expression... expressions) + { + return getIndexed(store, ColumnFilter.all(store.metadata), maxResults, expressions); + } + + private static Set getIndexed(ColumnFamilyStore store, ColumnFilter columnFilter, int maxResults, Expression... expressions) + { + return getKeys(getIndexed(store, columnFilter, null, maxResults, expressions)); + } + + private static Set getPaged(ColumnFamilyStore store, int pageSize, Expression... expressions) + { + UnfilteredPartitionIterator currentPage; + Set uniqueKeys = new TreeSet<>(); + + DecoratedKey lastKey = null; + + int count; + do + { + count = 0; + currentPage = getIndexed(store, ColumnFilter.all(store.metadata), lastKey, pageSize, expressions); + if (currentPage == null) + break; + + while (currentPage.hasNext()) + { + try (UnfilteredRowIterator row = currentPage.next()) + { + uniqueKeys.add(row.partitionKey()); + lastKey = row.partitionKey(); + count++; + } + } + + currentPage.close(); + } + while (count == pageSize); + + return uniqueKeys; + } + + private static UnfilteredPartitionIterator getIndexed(ColumnFamilyStore store, ColumnFilter columnFilter, DecoratedKey startKey, int maxResults, Expression... expressions) + { + DataRange range = (startKey == null) + ? DataRange.allData(PARTITIONER) + : DataRange.forKeyRange(new Range<>(startKey, PARTITIONER.getMinimumToken().maxKeyBound())); + + RowFilter filter = RowFilter.create(); + for (Expression e : expressions) + filter.add(store.metadata.getColumnDefinition(e.name), e.op, e.value); + + ReadCommand command = new PartitionRangeReadCommand(store.metadata, + FBUtilities.nowInSeconds(), + columnFilter, + filter, + DataLimits.thriftLimits(maxResults, DataLimits.NO_LIMIT), + range, + Optional.empty()); + + return command.executeLocally(command.executionController()); + } + + private static Mutation newMutation(String key, String firstName, String lastName, int age, long timestamp) + { + Mutation rm = new Mutation(KS_NAME, decoratedKey(AsciiType.instance.decompose(key))); + List cells = new ArrayList<>(3); + + if (age >= 0) + cells.add(buildCell(ByteBufferUtil.bytes("age"), Int32Type.instance.decompose(age), timestamp)); + if (firstName != null) + cells.add(buildCell(ByteBufferUtil.bytes("first_name"), UTF8Type.instance.decompose(firstName), timestamp)); + if (lastName != null) + cells.add(buildCell(ByteBufferUtil.bytes("last_name"), UTF8Type.instance.decompose(lastName), timestamp)); + + update(rm, cells); + return rm; + } + + private static Set getKeys(final UnfilteredPartitionIterator rows) + { + try + { + return new TreeSet() + {{ + while (rows.hasNext()) + { + try (UnfilteredRowIterator row = rows.next()) + { + add(AsciiType.instance.compose(row.partitionKey().getKey())); + } + } + }}; + } + finally + { + rows.close(); + } + } + + private static List convert(final Set keys) + { + return new ArrayList() + {{ + for (DecoratedKey key : keys) + add(AsciiType.instance.getString(key.getKey())); + }}; + } + + private UntypedResultSet executeCQL(String query, Object... values) + { + return QueryProcessor.executeOnceInternal(String.format(query, KS_NAME, CLUSTRING_CF_NAME), values); + } + + private Set executeCQL(String rawStatement) throws Exception + { + SelectStatement statement = (SelectStatement) QueryProcessor.parseStatement(rawStatement).prepare().statement; + ResultMessage.Rows cqlRows = statement.executeInternal(QueryState.forInternalCalls(), QueryOptions.DEFAULT); + + Set results = new TreeSet<>(); + for (CqlRow row : cqlRows.toThriftResult().getRows()) + { + for (org.apache.cassandra.thrift.Column col : row.columns) + { + String columnName = UTF8Type.instance.getString(col.bufferForName()); + if (columnName.equals("id")) + results.add(AsciiType.instance.getString(col.bufferForValue())); + } + } + + return results; + } + + private static DecoratedKey decoratedKey(ByteBuffer key) + { + return PARTITIONER.decorateKey(key); + } + + private static DecoratedKey decoratedKey(String key) + { + return decoratedKey(AsciiType.instance.fromString(key)); + } + + private static Row buildRow(Collection cells) + { + return buildRow(cells.toArray(new Cell[cells.size()])); + } + + private static Row buildRow(Cell... cells) + { + Row.Builder rowBuilder = BTreeRow.sortedBuilder(); + rowBuilder.newRow(Clustering.EMPTY); + for (Cell c : cells) + rowBuilder.addCell(c); + return rowBuilder.build(); + } + + private static Cell buildCell(ByteBuffer name, ByteBuffer value, long timestamp) + { + CFMetaData cfm = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME).metadata; + return BufferCell.live(cfm, cfm.getColumnDefinition(name), timestamp, value); + } + + private static Cell buildCell(CFMetaData cfm, ByteBuffer name, ByteBuffer value, long timestamp) + { + ColumnDefinition column = cfm.getColumnDefinition(name); + assert column != null; + return BufferCell.live(cfm, column, timestamp, value); + } + + private static Expression buildExpression(ByteBuffer name, Operator op, ByteBuffer value) + { + return new Expression(name, op, value); + } + + private static void update(Mutation rm, ByteBuffer name, ByteBuffer value, long timestamp) + { + CFMetaData metadata = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME).metadata; + rm.add(PartitionUpdate.singleRowUpdate(metadata, rm.key(), buildRow(buildCell(metadata, name, value, timestamp)))); + } + + + private static void update(Mutation rm, List cells) + { + CFMetaData metadata = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME).metadata; + rm.add(PartitionUpdate.singleRowUpdate(metadata, rm.key(), buildRow(cells))); + } + + private static class Expression + { + public final ByteBuffer name; + public final Operator op; + public final ByteBuffer value; + + public Expression(ByteBuffer name, Operator op, ByteBuffer value) + { + this.name = name; + this.op = op; + this.value = value; + } + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzerTest.java b/test/unit/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzerTest.java new file mode 100644 index 0000000000..ba67853c43 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzerTest.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.db.marshal.Int32Type; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.utils.ByteBufferUtil; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests for the non-tokenizing analyzer + */ +public class NonTokenizingAnalyzerTest +{ + @Test + public void caseInsensitiveAnalizer() throws Exception + { + NonTokenizingAnalyzer analyzer = new NonTokenizingAnalyzer(); + NonTokenizingOptions options = NonTokenizingOptions.getDefaultOptions(); + options.setCaseSensitive(false); + analyzer.init(options, UTF8Type.instance); + + String testString = "Nip it in the bud"; + ByteBuffer toAnalyze = ByteBuffer.wrap(testString.getBytes()); + analyzer.reset(toAnalyze); + ByteBuffer analyzed = null; + while (analyzer.hasNext()) + analyzed = analyzer.next(); + Assert.assertTrue(testString.toLowerCase().equals(ByteBufferUtil.string(analyzed))); + } + + @Test + public void caseSensitiveAnalizer() throws Exception + { + NonTokenizingAnalyzer analyzer = new NonTokenizingAnalyzer(); + NonTokenizingOptions options = NonTokenizingOptions.getDefaultOptions(); + analyzer.init(options, UTF8Type.instance); + + String testString = "Nip it in the bud"; + ByteBuffer toAnalyze = ByteBuffer.wrap(testString.getBytes()); + analyzer.reset(toAnalyze); + ByteBuffer analyzed = null; + while (analyzer.hasNext()) + analyzed = analyzer.next(); + Assert.assertFalse(testString.toLowerCase().equals(ByteBufferUtil.string(analyzed))); + } + + @Test + public void ensureIncompatibleInputSkipped() throws Exception + { + NonTokenizingAnalyzer analyzer = new NonTokenizingAnalyzer(); + NonTokenizingOptions options = NonTokenizingOptions.getDefaultOptions(); + analyzer.init(options, Int32Type.instance); + + ByteBuffer toAnalyze = ByteBufferUtil.bytes(1); + analyzer.reset(toAnalyze); + Assert.assertTrue(!analyzer.hasNext()); + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzerTest.java b/test/unit/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzerTest.java new file mode 100644 index 0000000000..e3075128f0 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzerTest.java @@ -0,0 +1,196 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class StandardAnalyzerTest +{ + @Test + public void testTokenizationAscii() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/apache_license_header.txt"); + + StandardTokenizerOptions options = new StandardTokenizerOptions.OptionsBuilder() + .maxTokenLength(5).build(); + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(options); + + List tokens = new ArrayList<>(); + tokenizer.reset(is); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(67, tokens.size()); + } + + @Test + public void testTokenizationLoremIpsum() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/lorem_ipsum.txt"); + + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + + List tokens = new ArrayList<>(); + tokenizer.reset(is); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(62, tokens.size()); + + } + + @Test + public void testTokenizationJaJp1() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/ja_jp_1.txt"); + + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + + tokenizer.reset(is); + List tokens = new ArrayList<>(); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(210, tokens.size()); + } + + @Test + public void testTokenizationJaJp2() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/ja_jp_2.txt"); + + StandardTokenizerOptions options = new StandardTokenizerOptions.OptionsBuilder().stemTerms(true) + .ignoreStopTerms(true).alwaysLowerCaseTerms(true).build(); + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(options); + + tokenizer.reset(is); + List tokens = new ArrayList<>(); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(57, tokens.size()); + } + + @Test + public void testTokenizationRuRu1() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/ru_ru_1.txt"); + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + + List tokens = new ArrayList<>(); + tokenizer.reset(is); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(456, tokens.size()); + } + + @Test + public void testTokenizationZnTw1() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/zn_tw_1.txt"); + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + + List tokens = new ArrayList<>(); + tokenizer.reset(is); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(963, tokens.size()); + } + + @Test + public void testTokenizationAdventuresOfHuckFinn() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/adventures_of_huckleberry_finn_mark_twain.txt"); + + StandardTokenizerOptions options = new StandardTokenizerOptions.OptionsBuilder().stemTerms(true) + .ignoreStopTerms(true).useLocale(Locale.ENGLISH) + .alwaysLowerCaseTerms(true).build(); + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(options); + + List tokens = new ArrayList<>(); + tokenizer.reset(is); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(40249, tokens.size()); + } + + @Test + public void tokenizeDomainNamesAndUrls() throws Exception + { + InputStream is = StandardAnalyzerTest.class.getClassLoader() + .getResourceAsStream("tokenization/top_visited_domains.txt"); + + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + tokenizer.reset(is); + + List tokens = new ArrayList<>(); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + + assertEquals(15, tokens.size()); + } + + @Test + public void testReuseAndResetTokenizerInstance() throws Exception + { + List bbToTokenize = new ArrayList<>(); + bbToTokenize.add(ByteBuffer.wrap("Nip it in the bud".getBytes())); + bbToTokenize.add(ByteBuffer.wrap("I couldn’t care less".getBytes())); + bbToTokenize.add(ByteBuffer.wrap("One and the same".getBytes())); + bbToTokenize.add(ByteBuffer.wrap("The squeaky wheel gets the grease.".getBytes())); + bbToTokenize.add(ByteBuffer.wrap("The pen is mightier than the sword.".getBytes())); + + StandardAnalyzer tokenizer = new StandardAnalyzer(); + tokenizer.init(StandardTokenizerOptions.getDefaultOptions()); + + List tokens = new ArrayList<>(); + for (ByteBuffer bb : bbToTokenize) + { + tokenizer.reset(bb); + while (tokenizer.hasNext()) + tokens.add(tokenizer.next()); + } + assertEquals(10, tokens.size()); + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/disk/OnDiskIndexTest.java b/test/unit/org/apache/cassandra/index/sasi/disk/OnDiskIndexTest.java new file mode 100644 index 0000000000..57629b6751 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/disk/OnDiskIndexTest.java @@ -0,0 +1,856 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.File; +import java.nio.ByteBuffer; +import java.util.*; +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; + +import org.apache.cassandra.cql3.Operator; +import org.apache.cassandra.db.BufferDecoratedKey; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.dht.Murmur3Partitioner; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.CombinedTerm; +import org.apache.cassandra.index.sasi.utils.CombinedTermIterator; +import org.apache.cassandra.index.sasi.utils.OnDiskIndexIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.Int32Type; +import org.apache.cassandra.db.marshal.LongType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.utils.MurmurHash; +import org.apache.cassandra.utils.Pair; + +import com.carrotsearch.hppc.LongSet; +import com.carrotsearch.hppc.cursors.LongCursor; + +import com.google.common.base.Function; +import com.google.common.collect.Iterators; +import com.google.common.collect.Sets; + +import junit.framework.Assert; +import org.junit.Test; + +public class OnDiskIndexTest +{ + @Test + public void testStringSAConstruction() throws Exception + { + Map data = new HashMap() + {{ + put(UTF8Type.instance.decompose("scat"), keyBuilder(1L)); + put(UTF8Type.instance.decompose("mat"), keyBuilder(2L)); + put(UTF8Type.instance.decompose("fat"), keyBuilder(3L)); + put(UTF8Type.instance.decompose("cat"), keyBuilder(1L, 4L)); + put(UTF8Type.instance.decompose("till"), keyBuilder(2L, 6L)); + put(UTF8Type.instance.decompose("bill"), keyBuilder(5L)); + put(UTF8Type.instance.decompose("foo"), keyBuilder(7L)); + put(UTF8Type.instance.decompose("bar"), keyBuilder(9L, 10L)); + put(UTF8Type.instance.decompose("michael"), keyBuilder(11L, 12L, 1L)); + }}; + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, UTF8Type.instance, OnDiskIndexBuilder.Mode.CONTAINS); + for (Map.Entry e : data.entrySet()) + addAll(builder, e.getKey(), e.getValue()); + + File index = File.createTempFile("on-disk-sa-string", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, UTF8Type.instance, new KeyConverter()); + + // first check if we can find exact matches + for (Map.Entry e : data.entrySet()) + { + if (UTF8Type.instance.getString(e.getKey()).equals("cat")) + continue; // cat is embedded into scat, we'll test it in next section + + Assert.assertEquals("Key was: " + UTF8Type.instance.compose(e.getKey()), convert(e.getValue()), convert(onDisk.search(expressionFor(UTF8Type.instance, e.getKey())))); + } + + // check that cat returns positions for scat & cat + Assert.assertEquals(convert(1, 4), convert(onDisk.search(expressionFor("cat")))); + + // random suffix queries + Assert.assertEquals(convert(9, 10), convert(onDisk.search(expressionFor("ar")))); + Assert.assertEquals(convert(1, 2, 3, 4), convert(onDisk.search(expressionFor("at")))); + Assert.assertEquals(convert(1, 11, 12), convert(onDisk.search(expressionFor("mic")))); + Assert.assertEquals(convert(1, 11, 12), convert(onDisk.search(expressionFor("ae")))); + Assert.assertEquals(convert(2, 5, 6), convert(onDisk.search(expressionFor("ll")))); + Assert.assertEquals(convert(1, 2, 5, 6, 11, 12), convert(onDisk.search(expressionFor("l")))); + Assert.assertEquals(convert(7), convert(onDisk.search(expressionFor("oo")))); + Assert.assertEquals(convert(7), convert(onDisk.search(expressionFor("o")))); + Assert.assertEquals(convert(1, 2, 3, 4, 6), convert(onDisk.search(expressionFor("t")))); + + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("hello")))); + + onDisk.close(); + } + + @Test + public void testIntegerSAConstruction() throws Exception + { + final Map data = new HashMap() + {{ + put(Int32Type.instance.decompose(5), keyBuilder(1L)); + put(Int32Type.instance.decompose(7), keyBuilder(2L)); + put(Int32Type.instance.decompose(1), keyBuilder(3L)); + put(Int32Type.instance.decompose(3), keyBuilder(1L, 4L)); + put(Int32Type.instance.decompose(8), keyBuilder(2L, 6L)); + put(Int32Type.instance.decompose(10), keyBuilder(5L)); + put(Int32Type.instance.decompose(6), keyBuilder(7L)); + put(Int32Type.instance.decompose(4), keyBuilder(9L, 10L)); + put(Int32Type.instance.decompose(0), keyBuilder(11L, 12L, 1L)); + }}; + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + for (Map.Entry e : data.entrySet()) + addAll(builder, e.getKey(), e.getValue()); + + File index = File.createTempFile("on-disk-sa-int", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, Int32Type.instance, new KeyConverter()); + + for (Map.Entry e : data.entrySet()) + { + Assert.assertEquals(convert(e.getValue()), convert(onDisk.search(expressionFor(Int32Type.instance, e.getKey())))); + } + + List sortedNumbers = new ArrayList() + {{ + addAll(data.keySet().stream().collect(Collectors.toList())); + }}; + + Collections.sort(sortedNumbers, Int32Type.instance::compare); + + // test full iteration + int idx = 0; + for (OnDiskIndex.DataTerm term : onDisk) + { + ByteBuffer number = sortedNumbers.get(idx++); + Assert.assertEquals(number, term.getTerm()); + Assert.assertEquals(convert(data.get(number)), convert(term.getTokens())); + } + + // test partial iteration (descending) + idx = 3; // start from the 3rd element + Iterator partialIter = onDisk.iteratorAt(sortedNumbers.get(idx), OnDiskIndex.IteratorOrder.DESC, true); + while (partialIter.hasNext()) + { + OnDiskIndex.DataTerm term = partialIter.next(); + ByteBuffer number = sortedNumbers.get(idx++); + + Assert.assertEquals(number, term.getTerm()); + Assert.assertEquals(convert(data.get(number)), convert(term.getTokens())); + } + + idx = 3; // start from the 3rd element exclusive + partialIter = onDisk.iteratorAt(sortedNumbers.get(idx++), OnDiskIndex.IteratorOrder.DESC, false); + while (partialIter.hasNext()) + { + OnDiskIndex.DataTerm term = partialIter.next(); + ByteBuffer number = sortedNumbers.get(idx++); + + Assert.assertEquals(number, term.getTerm()); + Assert.assertEquals(convert(data.get(number)), convert(term.getTokens())); + } + + // test partial iteration (ascending) + idx = 6; // start from the 6rd element + partialIter = onDisk.iteratorAt(sortedNumbers.get(idx), OnDiskIndex.IteratorOrder.ASC, true); + while (partialIter.hasNext()) + { + OnDiskIndex.DataTerm term = partialIter.next(); + ByteBuffer number = sortedNumbers.get(idx--); + + Assert.assertEquals(number, term.getTerm()); + Assert.assertEquals(convert(data.get(number)), convert(term.getTokens())); + } + + idx = 6; // start from the 6rd element exclusive + partialIter = onDisk.iteratorAt(sortedNumbers.get(idx--), OnDiskIndex.IteratorOrder.ASC, false); + while (partialIter.hasNext()) + { + OnDiskIndex.DataTerm term = partialIter.next(); + ByteBuffer number = sortedNumbers.get(idx--); + + Assert.assertEquals(number, term.getTerm()); + Assert.assertEquals(convert(data.get(number)), convert(term.getTokens())); + } + + onDisk.close(); + + List iterCheckNums = new ArrayList() + {{ + add(Int32Type.instance.decompose(3)); + add(Int32Type.instance.decompose(9)); + add(Int32Type.instance.decompose(14)); + add(Int32Type.instance.decompose(42)); + }}; + + OnDiskIndexBuilder iterTest = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + for (int i = 0; i < iterCheckNums.size(); i++) + iterTest.add(iterCheckNums.get(i), keyAt((long) i), i); + + File iterIndex = File.createTempFile("sa-iter", ".db"); + iterIndex.deleteOnExit(); + + iterTest.finish(iterIndex); + + onDisk = new OnDiskIndex(iterIndex, Int32Type.instance, new KeyConverter()); + + ByteBuffer number = Int32Type.instance.decompose(1); + Assert.assertEquals(0, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, false))); + Assert.assertEquals(0, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, true))); + Assert.assertEquals(4, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, false))); + Assert.assertEquals(4, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, true))); + + number = Int32Type.instance.decompose(44); + Assert.assertEquals(4, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, false))); + Assert.assertEquals(4, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, true))); + Assert.assertEquals(0, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, false))); + Assert.assertEquals(0, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, true))); + + number = Int32Type.instance.decompose(20); + Assert.assertEquals(3, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, false))); + Assert.assertEquals(3, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, true))); + Assert.assertEquals(1, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, false))); + Assert.assertEquals(1, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, true))); + + number = Int32Type.instance.decompose(5); + Assert.assertEquals(1, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, false))); + Assert.assertEquals(1, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, true))); + Assert.assertEquals(3, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, false))); + Assert.assertEquals(3, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, true))); + + number = Int32Type.instance.decompose(10); + Assert.assertEquals(2, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, false))); + Assert.assertEquals(2, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.ASC, true))); + Assert.assertEquals(2, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, false))); + Assert.assertEquals(2, Iterators.size(onDisk.iteratorAt(number, OnDiskIndex.IteratorOrder.DESC, true))); + + onDisk.close(); + } + + @Test + public void testMultiSuffixMatches() throws Exception + { + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, UTF8Type.instance, OnDiskIndexBuilder.Mode.CONTAINS) + {{ + addAll(this, UTF8Type.instance.decompose("Eliza"), keyBuilder(1L, 2L)); + addAll(this, UTF8Type.instance.decompose("Elizabeth"), keyBuilder(3L, 4L)); + addAll(this, UTF8Type.instance.decompose("Aliza"), keyBuilder(5L, 6L)); + addAll(this, UTF8Type.instance.decompose("Taylor"), keyBuilder(7L, 8L)); + addAll(this, UTF8Type.instance.decompose("Pavel"), keyBuilder(9L, 10L)); + }}; + + File index = File.createTempFile("on-disk-sa-multi-suffix-match", ".db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, UTF8Type.instance, new KeyConverter()); + + Assert.assertEquals(convert(1, 2, 3, 4, 5, 6), convert(onDisk.search(expressionFor("liz")))); + Assert.assertEquals(convert(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), convert(onDisk.search(expressionFor("a")))); + Assert.assertEquals(convert(5, 6), convert(onDisk.search(expressionFor("A")))); + Assert.assertEquals(convert(1, 2, 3, 4), convert(onDisk.search(expressionFor("E")))); + Assert.assertEquals(convert(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), convert(onDisk.search(expressionFor("l")))); + Assert.assertEquals(convert(3, 4), convert(onDisk.search(expressionFor("bet")))); + Assert.assertEquals(convert(3, 4, 9, 10), convert(onDisk.search(expressionFor("e")))); + Assert.assertEquals(convert(7, 8), convert(onDisk.search(expressionFor("yl")))); + Assert.assertEquals(convert(7, 8), convert(onDisk.search(expressionFor("T")))); + Assert.assertEquals(convert(1, 2, 3, 4, 5, 6), convert(onDisk.search(expressionFor("za")))); + Assert.assertEquals(convert(3, 4), convert(onDisk.search(expressionFor("ab")))); + + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("Pi")))); + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("ethz")))); + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("liw")))); + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("Taw")))); + Assert.assertEquals(Collections.emptySet(), convert(onDisk.search(expressionFor("Av")))); + + onDisk.close(); + } + + @Test + public void testSparseMode() throws Exception + { + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.SPARSE); + + final long start = System.currentTimeMillis(); + final int numIterations = 100000; + + for (long i = 0; i < numIterations; i++) + builder.add(LongType.instance.decompose(start + i), keyAt(i), i); + + File index = File.createTempFile("on-disk-sa-sparse", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, LongType.instance, new KeyConverter()); + + ThreadLocalRandom random = ThreadLocalRandom.current(); + + for (long step = start; step < (start + numIterations); step += 1000) + { + boolean lowerInclusive = random.nextBoolean(); + boolean upperInclusive = random.nextBoolean(); + + long limit = random.nextLong(step, start + numIterations); + RangeIterator rows = onDisk.search(expressionFor(step, lowerInclusive, limit, upperInclusive)); + + long lowerKey = step - start; + long upperKey = lowerKey + (limit - step); + + if (!lowerInclusive) + lowerKey += 1; + + if (upperInclusive) + upperKey += 1; + + Set actual = convert(rows); + for (long key = lowerKey; key < upperKey; key++) + Assert.assertTrue("key" + key + " wasn't found", actual.contains(keyAt(key))); + + Assert.assertEquals((upperKey - lowerKey), actual.size()); + } + + // let's also explicitly test whole range search + RangeIterator rows = onDisk.search(expressionFor(start, true, start + numIterations, true)); + + Set actual = convert(rows); + Assert.assertEquals(numIterations, actual.size()); + } + + @Test + public void testNotEqualsQueryForStrings() throws Exception + { + Map data = new HashMap() + {{ + put(UTF8Type.instance.decompose("Pavel"), keyBuilder(1L, 2L)); + put(UTF8Type.instance.decompose("Jason"), keyBuilder(3L)); + put(UTF8Type.instance.decompose("Jordan"), keyBuilder(4L)); + put(UTF8Type.instance.decompose("Michael"), keyBuilder(5L, 6L)); + put(UTF8Type.instance.decompose("Vijay"), keyBuilder(7L)); + put(UTF8Type.instance.decompose("Travis"), keyBuilder(8L)); + put(UTF8Type.instance.decompose("Aleksey"), keyBuilder(9L, 10L)); + }}; + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, UTF8Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + for (Map.Entry e : data.entrySet()) + addAll(builder, e.getKey(), e.getValue()); + + File index = File.createTempFile("on-disk-sa-except-test", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, UTF8Type.instance, new KeyConverter()); + + // test whole words first + Assert.assertEquals(convert(3, 4, 5, 6, 7, 8, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pavel")))); + + Assert.assertEquals(convert(3, 4, 7, 8, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pavel", "Michael")))); + + Assert.assertEquals(convert(3, 4, 7, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pavel", "Michael", "Travis")))); + + // now test prefixes + Assert.assertEquals(convert(3, 4, 5, 6, 7, 8, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pav")))); + + Assert.assertEquals(convert(3, 4, 7, 8, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pavel", "Mic")))); + + Assert.assertEquals(convert(3, 4, 7, 9, 10), convert(onDisk.search(expressionForNot("Aleksey", "Vijay", "Pavel", "Micha", "Tr")))); + + onDisk.close(); + } + + @Test + public void testNotEqualsQueryForNumbers() throws Exception + { + final Map data = new HashMap() + {{ + put(Int32Type.instance.decompose(5), keyBuilder(1L)); + put(Int32Type.instance.decompose(7), keyBuilder(2L)); + put(Int32Type.instance.decompose(1), keyBuilder(3L)); + put(Int32Type.instance.decompose(3), keyBuilder(1L, 4L)); + put(Int32Type.instance.decompose(8), keyBuilder(8L, 6L)); + put(Int32Type.instance.decompose(10), keyBuilder(5L)); + put(Int32Type.instance.decompose(6), keyBuilder(7L)); + put(Int32Type.instance.decompose(4), keyBuilder(9L, 10L)); + put(Int32Type.instance.decompose(0), keyBuilder(11L, 12L, 1L)); + }}; + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + for (Map.Entry e : data.entrySet()) + addAll(builder, e.getKey(), e.getValue()); + + File index = File.createTempFile("on-disk-sa-except-int-test", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, Int32Type.instance, new KeyConverter()); + + Assert.assertEquals(convert(1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12), convert(onDisk.search(expressionForNot(0, 10, 1)))); + Assert.assertEquals(convert(1, 2, 4, 5, 7, 9, 10, 11, 12), convert(onDisk.search(expressionForNot(0, 10, 1, 8)))); + Assert.assertEquals(convert(1, 2, 4, 5, 7, 11, 12), convert(onDisk.search(expressionForNot(0, 10, 1, 8, 4)))); + + onDisk.close(); + } + + @Test + public void testRangeQueryWithExclusions() throws Exception + { + final long lower = 0; + final long upper = 100000; + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.SPARSE); + for (long i = lower; i <= upper; i++) + builder.add(LongType.instance.decompose(i), keyAt(i), i); + + File index = File.createTempFile("on-disk-sa-except-long-ranges", "db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, LongType.instance, new KeyConverter()); + + ThreadLocalRandom random = ThreadLocalRandom.current(); + + // single exclusion + + // let's do small range first to figure out if searchPoint works properly + validateExclusions(onDisk, lower, 50, Sets.newHashSet(42L)); + // now let's do whole data set to test SPARSE searching + validateExclusions(onDisk, lower, upper, Sets.newHashSet(31337L)); + + // pair of exclusions which would generate a split + + validateExclusions(onDisk, lower, random.nextInt(400, 800), Sets.newHashSet(42L, 154L)); + validateExclusions(onDisk, lower, upper, Sets.newHashSet(31337L, 54631L)); + + // 3 exclusions which would generate a split and change bounds + + validateExclusions(onDisk, lower, random.nextInt(400, 800), Sets.newHashSet(42L, 154L)); + validateExclusions(onDisk, lower, upper, Sets.newHashSet(31337L, 54631L)); + + validateExclusions(onDisk, lower, random.nextLong(400, upper), Sets.newHashSet(42L, 55L)); + validateExclusions(onDisk, lower, random.nextLong(400, upper), Sets.newHashSet(42L, 55L, 93L)); + validateExclusions(onDisk, lower, random.nextLong(400, upper), Sets.newHashSet(42L, 55L, 93L, 205L)); + + Set exclusions = Sets.newHashSet(3L, 12L, 13L, 14L, 27L, 54L, 81L, 125L, 384L, 771L, 1054L, 2048L, 78834L); + + // test that exclusions are properly bound by lower/upper of the expression + Assert.assertEquals(392, validateExclusions(onDisk, lower, 400, exclusions, false)); + Assert.assertEquals(101, validateExclusions(onDisk, lower, 100, Sets.newHashSet(-10L, -5L, -1L), false)); + + validateExclusions(onDisk, lower, upper, exclusions); + + Assert.assertEquals(100000, convert(onDisk.search(new Expression("", LongType.instance) + .add(Operator.NEQ, LongType.instance.decompose(100L)))).size()); + + Assert.assertEquals(49, convert(onDisk.search(new Expression("", LongType.instance) + .add(Operator.LT, LongType.instance.decompose(50L)) + .add(Operator.NEQ, LongType.instance.decompose(10L)))).size()); + + Assert.assertEquals(99998, convert(onDisk.search(new Expression("", LongType.instance) + .add(Operator.GT, LongType.instance.decompose(1L)) + .add(Operator.NEQ, LongType.instance.decompose(20L)))).size()); + + onDisk.close(); + } + + private void validateExclusions(OnDiskIndex sa, long lower, long upper, Set exclusions) + { + validateExclusions(sa, lower, upper, exclusions, true); + } + + private int validateExclusions(OnDiskIndex sa, long lower, long upper, Set exclusions, boolean checkCount) + { + int count = 0; + for (DecoratedKey key : convert(sa.search(rangeWithExclusions(lower, true, upper, true, exclusions)))) + { + String keyId = UTF8Type.instance.getString(key.getKey()).split("key")[1]; + Assert.assertFalse("key" + keyId + " is present.", exclusions.contains(Long.valueOf(keyId))); + count++; + } + + if (checkCount) + Assert.assertEquals(upper - (lower == 0 ? -1 : lower) - exclusions.size(), count); + + return count; + } + + @Test + public void testDescriptor() throws Exception + { + final Map> data = new HashMap>() + {{ + put(Int32Type.instance.decompose(5), Pair.create(keyAt(1L), 1L)); + }}; + + OnDiskIndexBuilder builder1 = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + OnDiskIndexBuilder builder2 = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.PREFIX); + for (Map.Entry> e : data.entrySet()) + { + DecoratedKey key = e.getValue().left; + Long position = e.getValue().right; + + builder1.add(e.getKey(), key, position); + builder2.add(e.getKey(), key, position); + } + + File index1 = File.createTempFile("on-disk-sa-int", "db"); + File index2 = File.createTempFile("on-disk-sa-int2", "db"); + index1.deleteOnExit(); + index2.deleteOnExit(); + + builder1.finish(index1); + builder2.finish(new Descriptor(Descriptor.VERSION_AA), index2); + + OnDiskIndex onDisk1 = new OnDiskIndex(index1, Int32Type.instance, new KeyConverter()); + OnDiskIndex onDisk2 = new OnDiskIndex(index2, Int32Type.instance, new KeyConverter()); + + ByteBuffer number = Int32Type.instance.decompose(5); + + Assert.assertEquals(Collections.singleton(data.get(number).left), convert(onDisk1.search(expressionFor(Int32Type.instance, number)))); + Assert.assertEquals(Collections.singleton(data.get(number).left), convert(onDisk2.search(expressionFor(Int32Type.instance, number)))); + + Assert.assertEquals(onDisk1.descriptor.version.version, Descriptor.CURRENT_VERSION); + Assert.assertEquals(onDisk2.descriptor.version.version, Descriptor.VERSION_AA); + } + + @Test + public void testSuperBlocks() throws Exception + { + Map terms = new HashMap<>(); + terms.put(UTF8Type.instance.decompose("1234"), keyBuilder(1L, 2L)); + terms.put(UTF8Type.instance.decompose("2345"), keyBuilder(3L, 4L)); + terms.put(UTF8Type.instance.decompose("3456"), keyBuilder(5L, 6L)); + terms.put(UTF8Type.instance.decompose("4567"), keyBuilder(7L, 8L)); + terms.put(UTF8Type.instance.decompose("5678"), keyBuilder(9L, 10L)); + + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, Int32Type.instance, OnDiskIndexBuilder.Mode.SPARSE); + for (Map.Entry entry : terms.entrySet()) + addAll(builder, entry.getKey(), entry.getValue()); + + File index = File.createTempFile("on-disk-sa-try-superblocks", ".db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDisk = new OnDiskIndex(index, Int32Type.instance, new KeyConverter()); + OnDiskIndex.OnDiskSuperBlock superBlock = onDisk.dataLevel.getSuperBlock(0); + Iterator iter = superBlock.iterator(); + + Long lastToken = null; + while (iter.hasNext()) + { + Token token = iter.next(); + + if (lastToken != null) + Assert.assertTrue(lastToken.compareTo(token.get()) < 0); + + lastToken = token.get(); + } + } + + @Test + public void testSuperBlockRetrieval() throws Exception + { + OnDiskIndexBuilder builder = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.SPARSE); + for (long i = 0; i < 100000; i++) + builder.add(LongType.instance.decompose(i), keyAt(i), i); + + File index = File.createTempFile("on-disk-sa-multi-superblock-match", ".db"); + index.deleteOnExit(); + + builder.finish(index); + + OnDiskIndex onDiskIndex = new OnDiskIndex(index, LongType.instance, new KeyConverter()); + + testSearchRangeWithSuperBlocks(onDiskIndex, 0, 500); + testSearchRangeWithSuperBlocks(onDiskIndex, 300, 93456); + testSearchRangeWithSuperBlocks(onDiskIndex, 210, 1700); + testSearchRangeWithSuperBlocks(onDiskIndex, 530, 3200); + + Random random = new Random(0xdeadbeef); + for (int i = 0; i < 100000; i += random.nextInt(1500)) // random steps with max of 1500 elements + { + for (int j = 0; j < 3; j++) + testSearchRangeWithSuperBlocks(onDiskIndex, i, ThreadLocalRandom.current().nextInt(i, 100000)); + } + } + + @Test + public void testCombiningOfThePartitionedSA() throws Exception + { + OnDiskIndexBuilder builderA = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.PREFIX); + OnDiskIndexBuilder builderB = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.PREFIX); + + TreeMap> expected = new TreeMap<>(); + + for (long i = 0; i <= 100; i++) + { + TreeMap offsets = expected.get(i); + if (offsets == null) + expected.put(i, (offsets = new TreeMap<>())); + + builderA.add(LongType.instance.decompose(i), keyAt(i), i); + offsets.putAll(keyBuilder(i).getTokens()); + } + + for (long i = 50; i < 100; i++) + { + TreeMap offsets = expected.get(i); + if (offsets == null) + expected.put(i, (offsets = new TreeMap<>())); + + long position = 100L + i; + builderB.add(LongType.instance.decompose(i), keyAt(position), position); + offsets.putAll(keyBuilder(100L + i).getTokens()); + } + + File indexA = File.createTempFile("on-disk-sa-partition-a", ".db"); + indexA.deleteOnExit(); + + File indexB = File.createTempFile("on-disk-sa-partition-b", ".db"); + indexB.deleteOnExit(); + + builderA.finish(indexA); + builderB.finish(indexB); + + OnDiskIndex a = new OnDiskIndex(indexA, LongType.instance, new KeyConverter()); + OnDiskIndex b = new OnDiskIndex(indexB, LongType.instance, new KeyConverter()); + + RangeIterator union = OnDiskIndexIterator.union(a, b); + + TreeMap> actual = new TreeMap<>(); + while (union.hasNext()) + { + CombinedTerm term = union.next(); + + Long composedTerm = LongType.instance.compose(term.getTerm()); + + TreeMap offsets = actual.get(composedTerm); + if (offsets == null) + actual.put(composedTerm, (offsets = new TreeMap<>())); + + offsets.putAll(term.getTokens()); + } + + Assert.assertEquals(actual, expected); + + File indexC = File.createTempFile("on-disk-sa-partition-final", ".db"); + indexC.deleteOnExit(); + + OnDiskIndexBuilder combined = new OnDiskIndexBuilder(UTF8Type.instance, LongType.instance, OnDiskIndexBuilder.Mode.PREFIX); + combined.finish(Pair.create(keyAt(0).getKey(), keyAt(100).getKey()), indexC, new CombinedTermIterator(a, b)); + + OnDiskIndex c = new OnDiskIndex(indexC, LongType.instance, new KeyConverter()); + union = OnDiskIndexIterator.union(c); + actual.clear(); + + while (union.hasNext()) + { + CombinedTerm term = union.next(); + + Long composedTerm = LongType.instance.compose(term.getTerm()); + + TreeMap offsets = actual.get(composedTerm); + if (offsets == null) + actual.put(composedTerm, (offsets = new TreeMap<>())); + + offsets.putAll(term.getTokens()); + } + + Assert.assertEquals(actual, expected); + + a.close(); + b.close(); + } + + private void testSearchRangeWithSuperBlocks(OnDiskIndex onDiskIndex, long start, long end) + { + RangeIterator tokens = onDiskIndex.search(expressionFor(start, true, end, false)); + + int keyCount = 0; + Long lastToken = null; + while (tokens.hasNext()) + { + Token token = tokens.next(); + Iterator keys = token.iterator(); + + // each of the values should have exactly a single key + Assert.assertTrue(keys.hasNext()); + keys.next(); + Assert.assertFalse(keys.hasNext()); + + // and it's last should always smaller than current + if (lastToken != null) + Assert.assertTrue("last should be less than current", lastToken.compareTo(token.get()) < 0); + + lastToken = token.get(); + keyCount++; + } + + Assert.assertEquals(end - start, keyCount); + } + + private static DecoratedKey keyAt(long rawKey) + { + ByteBuffer key = ByteBuffer.wrap(("key" + rawKey).getBytes()); + return new BufferDecoratedKey(new Murmur3Partitioner.LongToken(MurmurHash.hash2_64(key, key.position(), key.remaining(), 0)), key); + } + + private static TokenTreeBuilder keyBuilder(Long... keys) + { + TokenTreeBuilder builder = new TokenTreeBuilder(); + + for (final Long key : keys) + { + DecoratedKey dk = keyAt(key); + builder.add((Long) dk.getToken().getTokenValue(), key); + } + + return builder.finish(); + } + + private static Set convert(TokenTreeBuilder offsets) + { + Set result = new HashSet<>(); + + Iterator> offsetIter = offsets.iterator(); + while (offsetIter.hasNext()) + { + LongSet v = offsetIter.next().right; + + for (LongCursor offset : v) + result.add(keyAt(offset.value)); + } + return result; + } + + private static Set convert(long... keyOffsets) + { + Set result = new HashSet<>(); + for (long offset : keyOffsets) + result.add(keyAt(offset)); + + return result; + } + + private static Set convert(RangeIterator results) + { + if (results == null) + return Collections.emptySet(); + + Set keys = new TreeSet<>(DecoratedKey.comparator); + + while (results.hasNext()) + { + for (DecoratedKey key : results.next()) + keys.add(key); + } + + return keys; + } + + private static Expression expressionFor(long lower, boolean lowerInclusive, long upper, boolean upperInclusive) + { + Expression expression = new Expression("", LongType.instance); + expression.add(lowerInclusive ? Operator.GTE : Operator.GT, LongType.instance.decompose(lower)); + expression.add(upperInclusive ? Operator.LTE : Operator.LT, LongType.instance.decompose(upper)); + return expression; + } + + private static Expression expressionFor(AbstractType validator, ByteBuffer term) + { + Expression expression = new Expression("", validator); + expression.add(Operator.EQ, term); + return expression; + } + + private static Expression expressionForNot(AbstractType validator, ByteBuffer lower, ByteBuffer upper, Iterable terms) + { + Expression expression = new Expression("", validator); + expression.setOp(Expression.Op.RANGE); + expression.setLower(new Expression.Bound(lower, true)); + expression.setUpper(new Expression.Bound(upper, true)); + for (ByteBuffer term : terms) + expression.add(Operator.NEQ, term); + return expression; + + } + + private static Expression expressionForNot(Integer lower, Integer upper, Integer... terms) + { + return expressionForNot(Int32Type.instance, + Int32Type.instance.decompose(lower), + Int32Type.instance.decompose(upper), + Arrays.asList(terms).stream().map(Int32Type.instance::decompose).collect(Collectors.toList())); + } + + private static Expression rangeWithExclusions(long lower, boolean lowerInclusive, long upper, boolean upperInclusive, Set exclusions) + { + Expression expression = expressionFor(lower, lowerInclusive, upper, upperInclusive); + for (long e : exclusions) + expression.add(Operator.NEQ, LongType.instance.decompose(e)); + + return expression; + } + + private static Expression expressionForNot(String lower, String upper, String... terms) + { + return expressionForNot(UTF8Type.instance, + UTF8Type.instance.decompose(lower), + UTF8Type.instance.decompose(upper), + Arrays.asList(terms).stream().map(UTF8Type.instance::decompose).collect(Collectors.toList())); + } + + private static Expression expressionFor(String term) + { + return expressionFor(UTF8Type.instance, UTF8Type.instance.decompose(term)); + } + + private static void addAll(OnDiskIndexBuilder builder, ByteBuffer term, TokenTreeBuilder tokens) + { + for (Map.Entry token : tokens.getTokens().entrySet()) + { + for (long position : token.getValue().toArray()) + builder.add(term, keyAt(position), position); + } + } + + private static class KeyConverter implements Function + { + @Override + public DecoratedKey apply(Long offset) + { + return keyAt(offset); + } + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java b/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java new file mode 100644 index 0000000000..4663692b2d --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java @@ -0,0 +1,161 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.File; +import java.nio.ByteBuffer; +import java.util.*; + +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.Clustering; +import org.apache.cassandra.db.ColumnFamilyStore; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.Keyspace; +import org.apache.cassandra.db.compaction.OperationType; +import org.apache.cassandra.db.rows.BTreeRow; +import org.apache.cassandra.db.rows.BufferCell; +import org.apache.cassandra.db.rows.Row; +import org.apache.cassandra.index.sasi.SASIIndex; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.Int32Type; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.schema.KeyspaceMetadata; +import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.schema.Tables; +import org.apache.cassandra.service.MigrationManager; +import org.apache.cassandra.utils.ByteBufferUtil; + +import com.google.common.util.concurrent.Futures; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class PerSSTableIndexWriterTest extends SchemaLoader +{ + private static final String KS_NAME = "sasi"; + private static final String CF_NAME = "test_cf"; + + @BeforeClass + public static void loadSchema() throws ConfigurationException + { + System.setProperty("cassandra.config", "cassandra-murmur.yaml"); + SchemaLoader.loadSchema(); + MigrationManager.announceNewKeyspace(KeyspaceMetadata.create(KS_NAME, + KeyspaceParams.simpleTransient(1), + Tables.of(SchemaLoader.sasiCFMD(KS_NAME, CF_NAME)))); + } + + @Test + public void testPartialIndexWrites() throws Exception + { + final int maxKeys = 100000, numParts = 4, partSize = maxKeys / numParts; + final String keyFormat = "key%06d"; + final long timestamp = System.currentTimeMillis(); + + ColumnFamilyStore cfs = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + ColumnDefinition column = cfs.metadata.getColumnDefinition(UTF8Type.instance.decompose("age")); + + SASIIndex sasi = (SASIIndex) cfs.indexManager.getIndexByName("age"); + + File directory = cfs.getDirectories().getDirectoryForNewSSTables(); + Descriptor descriptor = Descriptor.fromFilename(cfs.getSSTablePath(directory)); + PerSSTableIndexWriter indexWriter = (PerSSTableIndexWriter) sasi.getFlushObserver(descriptor, OperationType.FLUSH); + + SortedMap expectedKeys = new TreeMap<>(DecoratedKey.comparator); + + for (int i = 0; i < maxKeys; i++) + { + ByteBuffer key = ByteBufferUtil.bytes(String.format(keyFormat, i)); + expectedKeys.put(cfs.metadata.partitioner.decorateKey(key), + BTreeRow.singleCellRow(Clustering.EMPTY, + BufferCell.live(cfs.metadata, column, timestamp, Int32Type.instance.decompose(i)))); + } + + indexWriter.begin(); + + Iterator> keyIterator = expectedKeys.entrySet().iterator(); + long position = 0; + + Set segments = new HashSet<>(); + outer: + for (;;) + { + for (int i = 0; i < partSize; i++) + { + if (!keyIterator.hasNext()) + break outer; + + Map.Entry key = keyIterator.next(); + + indexWriter.startPartition(key.getKey(), position++); + indexWriter.nextUnfilteredCluster(key.getValue()); + } + + PerSSTableIndexWriter.Index index = indexWriter.getIndex(column); + + OnDiskIndex segment = index.scheduleSegmentFlush(false).call(); + index.segments.add(Futures.immediateFuture(segment)); + segments.add(segment.getIndexPath()); + } + + for (String segment : segments) + Assert.assertTrue(new File(segment).exists()); + + String indexFile = indexWriter.indexes.get(column).filename(true); + + // final flush + indexWriter.complete(); + + for (String segment : segments) + Assert.assertFalse(new File(segment).exists()); + + OnDiskIndex index = new OnDiskIndex(new File(indexFile), Int32Type.instance, keyPosition -> { + ByteBuffer key = ByteBufferUtil.bytes(String.format(keyFormat, keyPosition)); + return cfs.metadata.partitioner.decorateKey(key); + }); + + Assert.assertEquals(0, UTF8Type.instance.compare(index.minKey(), ByteBufferUtil.bytes(String.format(keyFormat, 0)))); + Assert.assertEquals(0, UTF8Type.instance.compare(index.maxKey(), ByteBufferUtil.bytes(String.format(keyFormat, maxKeys - 1)))); + + Set actualKeys = new HashSet<>(); + int count = 0; + for (OnDiskIndex.DataTerm term : index) + { + RangeIterator tokens = term.getTokens(); + + while (tokens.hasNext()) + { + for (DecoratedKey key : tokens.next()) + actualKeys.add(key); + } + + Assert.assertEquals(count++, (int) Int32Type.instance.compose(term.getTerm())); + } + + Assert.assertEquals(expectedKeys.size(), actualKeys.size()); + for (DecoratedKey key : expectedKeys.keySet()) + Assert.assertTrue(actualKeys.contains(key)); + + FileUtils.closeQuietly(index); + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java b/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java new file mode 100644 index 0000000000..d09b8d43ed --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/disk/TokenTreeTest.java @@ -0,0 +1,535 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.disk; + +import java.io.File; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.*; + +import com.google.common.collect.Iterators; +import com.google.common.collect.PeekingIterator; +import org.apache.cassandra.db.BufferDecoratedKey; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.dht.Murmur3Partitioner; +import org.apache.cassandra.index.sasi.disk.TokenTreeBuilder.EntryType; +import org.apache.cassandra.index.sasi.utils.CombinedValue; +import org.apache.cassandra.index.sasi.utils.MappedBuffer; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.db.marshal.LongType; +import org.apache.cassandra.io.compress.BufferType; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.MurmurHash; +import org.apache.cassandra.utils.Pair; +import org.apache.cassandra.io.util.RandomAccessReader; +import org.apache.cassandra.io.util.SequentialWriter; + +import junit.framework.Assert; +import org.junit.Test; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import com.carrotsearch.hppc.LongOpenHashSet; +import com.carrotsearch.hppc.LongSet; +import com.carrotsearch.hppc.cursors.LongCursor; +import com.google.common.base.Function; + +public class TokenTreeTest +{ + private static final Function KEY_CONVERTER = new KeyConverter(); + + static LongSet singleOffset = new LongOpenHashSet() {{ add(1); }}; + static LongSet bigSingleOffset = new LongOpenHashSet() {{ add(((long) Integer.MAX_VALUE) + 10); }}; + static LongSet shortPackableCollision = new LongOpenHashSet() {{ add(2L); add(3L); }}; // can pack two shorts + static LongSet intPackableCollision = new LongOpenHashSet() {{ add(6L); add(((long) Short.MAX_VALUE) + 1); }}; // can pack int & short + static LongSet multiCollision = new LongOpenHashSet() {{ add(3L); add(4L); add(5L); }}; // can't pack + static LongSet unpackableCollision = new LongOpenHashSet() {{ add(((long) Short.MAX_VALUE) + 1); add(((long) Short.MAX_VALUE) + 2); }}; // can't pack + + final static SortedMap simpleTokenMap = new TreeMap() + {{ + put(1L, bigSingleOffset); put(3L, shortPackableCollision); put(4L, intPackableCollision); put(6L, singleOffset); + put(9L, multiCollision); put(10L, unpackableCollision); put(12L, singleOffset); put(13L, singleOffset); + put(15L, singleOffset); put(16L, singleOffset); put(20L, singleOffset); put(22L, singleOffset); + put(25L, singleOffset); put(26L, singleOffset); put(27L, singleOffset); put(28L, singleOffset); + put(40L, singleOffset); put(50L, singleOffset); put(100L, singleOffset); put(101L, singleOffset); + put(102L, singleOffset); put(103L, singleOffset); put(108L, singleOffset); put(110L, singleOffset); + put(112L, singleOffset); put(115L, singleOffset); put(116L, singleOffset); put(120L, singleOffset); + put(121L, singleOffset); put(122L, singleOffset); put(123L, singleOffset); put(125L, singleOffset); + }}; + + final static SortedMap bigTokensMap = new TreeMap() + {{ + for (long i = 0; i < 1000000; i++) + put(i, singleOffset); + }}; + + final static SortedMap collidingTokensMap = new TreeMap() + {{ + put(1L, singleOffset); put(7L, singleOffset); put(8L, singleOffset); + }}; + + final static SortedMap tokens = bigTokensMap; + + @Test + public void buildAndIterate() throws Exception + { + final TokenTreeBuilder builder = new TokenTreeBuilder(tokens).finish(); + final Iterator> tokenIterator = builder.iterator(); + final Iterator> listIterator = tokens.entrySet().iterator(); + while (tokenIterator.hasNext() && listIterator.hasNext()) + { + Pair tokenNext = tokenIterator.next(); + Map.Entry listNext = listIterator.next(); + + Assert.assertEquals(listNext.getKey(), tokenNext.left); + Assert.assertEquals(listNext.getValue(), tokenNext.right); + } + + Assert.assertFalse("token iterator not finished", tokenIterator.hasNext()); + Assert.assertFalse("list iterator not finished", listIterator.hasNext()); + } + + @Test + public void buildWithMultipleMapsAndIterate() throws Exception + { + final SortedMap merged = new TreeMap<>(); + final TokenTreeBuilder builder = new TokenTreeBuilder(simpleTokenMap).finish(); + builder.add(collidingTokensMap); + + merged.putAll(collidingTokensMap); + for (Map.Entry entry : simpleTokenMap.entrySet()) + { + if (merged.containsKey(entry.getKey())) + { + LongSet mergingOffsets = entry.getValue(); + LongSet existingOffsets = merged.get(entry.getKey()); + + if (mergingOffsets.equals(existingOffsets)) + continue; + + Set mergeSet = new HashSet<>(); + for (LongCursor merging : mergingOffsets) + mergeSet.add(merging.value); + + for (LongCursor existing : existingOffsets) + mergeSet.add(existing.value); + + LongSet mergedResults = new LongOpenHashSet(); + for (Long result : mergeSet) + mergedResults.add(result); + + merged.put(entry.getKey(), mergedResults); + } + else + { + merged.put(entry.getKey(), entry.getValue()); + } + } + + final Iterator> tokenIterator = builder.iterator(); + final Iterator> listIterator = merged.entrySet().iterator(); + while (tokenIterator.hasNext() && listIterator.hasNext()) + { + Pair tokenNext = tokenIterator.next(); + Map.Entry listNext = listIterator.next(); + + Assert.assertEquals(listNext.getKey(), tokenNext.left); + Assert.assertEquals(listNext.getValue(), tokenNext.right); + } + + Assert.assertFalse("token iterator not finished", tokenIterator.hasNext()); + Assert.assertFalse("list iterator not finished", listIterator.hasNext()); + + } + + @Test + public void testSerializedSize() throws Exception + { + final TokenTreeBuilder builder = new TokenTreeBuilder(tokens).finish(); + + final File treeFile = File.createTempFile("token-tree-size-test", "tt"); + treeFile.deleteOnExit(); + + try (SequentialWriter writer = new SequentialWriter(treeFile, 4096, BufferType.ON_HEAP)) + { + builder.write(writer); + writer.sync(); + } + + final RandomAccessReader reader = RandomAccessReader.open(treeFile); + Assert.assertEquals((int) reader.bytesRemaining(), builder.serializedSize()); + } + + @Test + public void buildSerializeAndIterate() throws Exception + { + final TokenTreeBuilder builder = new TokenTreeBuilder(simpleTokenMap).finish(); + + final File treeFile = File.createTempFile("token-tree-iterate-test1", "tt"); + treeFile.deleteOnExit(); + + try (SequentialWriter writer = new SequentialWriter(treeFile, 4096, BufferType.ON_HEAP)) + { + builder.write(writer); + writer.sync(); + } + + final RandomAccessReader reader = RandomAccessReader.open(treeFile); + final TokenTree tokenTree = new TokenTree(new MappedBuffer(reader)); + + final Iterator tokenIterator = tokenTree.iterator(KEY_CONVERTER); + final Iterator> listIterator = simpleTokenMap.entrySet().iterator(); + while (tokenIterator.hasNext() && listIterator.hasNext()) + { + Token treeNext = tokenIterator.next(); + Map.Entry listNext = listIterator.next(); + + Assert.assertEquals(listNext.getKey(), treeNext.get()); + Assert.assertEquals(convert(listNext.getValue()), convert(treeNext)); + } + + Assert.assertFalse("token iterator not finished", tokenIterator.hasNext()); + Assert.assertFalse("list iterator not finished", listIterator.hasNext()); + + reader.close(); + } + + @Test + public void buildSerializeAndGet() throws Exception + { + final long tokMin = 0; + final long tokMax = 1000; + + final TokenTree tokenTree = generateTree(tokMin, tokMax); + + for (long i = 0; i <= tokMax; i++) + { + TokenTree.OnDiskToken result = tokenTree.get(i, KEY_CONVERTER); + Assert.assertNotNull("failed to find object for token " + i, result); + + Set found = result.getOffsets(); + Assert.assertEquals(1, found.size()); + Assert.assertEquals(i, found.toArray()[0]); + } + + Assert.assertNull("found missing object", tokenTree.get(tokMax + 10, KEY_CONVERTER)); + } + + @Test + public void buildSerializeIterateAndSkip() throws Exception + { + final TokenTreeBuilder builder = new TokenTreeBuilder(tokens).finish(); + + final File treeFile = File.createTempFile("token-tree-iterate-test2", "tt"); + treeFile.deleteOnExit(); + + try (SequentialWriter writer = new SequentialWriter(treeFile, 4096, BufferType.ON_HEAP)) + { + builder.write(writer); + writer.sync(); + } + + final RandomAccessReader reader = RandomAccessReader.open(treeFile); + final TokenTree tokenTree = new TokenTree(new MappedBuffer(reader)); + + final RangeIterator treeIterator = tokenTree.iterator(KEY_CONVERTER); + final RangeIterator listIterator = new EntrySetSkippableIterator(tokens); + + long lastToken = 0L; + while (treeIterator.hasNext() && lastToken < 12) + { + Token treeNext = treeIterator.next(); + TokenWithOffsets listNext = listIterator.next(); + + Assert.assertEquals(listNext.token, (lastToken = treeNext.get())); + Assert.assertEquals(convert(listNext.offsets), convert(treeNext)); + } + + treeIterator.skipTo(100548L); + listIterator.skipTo(100548L); + + while (treeIterator.hasNext() && listIterator.hasNext()) + { + Token treeNext = treeIterator.next(); + TokenWithOffsets listNext = listIterator.next(); + + Assert.assertEquals(listNext.token, (long) treeNext.get()); + Assert.assertEquals(convert(listNext.offsets), convert(treeNext)); + + } + + Assert.assertFalse("Tree iterator not completed", treeIterator.hasNext()); + Assert.assertFalse("List iterator not completed", listIterator.hasNext()); + + reader.close(); + } + + @Test + public void skipPastEnd() throws Exception + { + final TokenTreeBuilder builder = new TokenTreeBuilder(simpleTokenMap).finish(); + + final File treeFile = File.createTempFile("token-tree-skip-past-test", "tt"); + treeFile.deleteOnExit(); + + try (SequentialWriter writer = new SequentialWriter(treeFile, 4096, BufferType.ON_HEAP)) + { + builder.write(writer); + writer.sync(); + } + + final RandomAccessReader reader = RandomAccessReader.open(treeFile); + final RangeIterator tokenTree = new TokenTree(new MappedBuffer(reader)).iterator(KEY_CONVERTER); + + tokenTree.skipTo(simpleTokenMap.lastKey() + 10); + } + + @Test + public void testTokenMerge() throws Exception + { + final long min = 0, max = 1000; + + // two different trees with the same offsets + TokenTree treeA = generateTree(min, max); + TokenTree treeB = generateTree(min, max); + + RangeIterator a = treeA.iterator(new KeyConverter()); + RangeIterator b = treeB.iterator(new KeyConverter()); + + long count = min; + while (a.hasNext() && b.hasNext()) + { + final Token tokenA = a.next(); + final Token tokenB = b.next(); + + // merging of two OnDiskToken + tokenA.merge(tokenB); + // merging with RAM Token with different offset + tokenA.merge(new TokenWithOffsets(tokenA.get(), convert(count + 1))); + // and RAM token with the same offset + tokenA.merge(new TokenWithOffsets(tokenA.get(), convert(count))); + + // should fail when trying to merge different tokens + try + { + tokenA.merge(new TokenWithOffsets(tokenA.get() + 1, convert(count))); + Assert.fail(); + } + catch (IllegalArgumentException e) + { + // expected + } + + final Set offsets = new TreeSet<>(); + for (DecoratedKey key : tokenA) + offsets.add(LongType.instance.compose(key.getKey())); + + Set expected = new TreeSet<>(); + { + expected.add(count); + expected.add(count + 1); + } + + Assert.assertEquals(expected, offsets); + count++; + } + + Assert.assertEquals(max, count - 1); + } + + @Test + public void testEntryTypeOrdinalLookup() + { + Assert.assertEquals(EntryType.SIMPLE, EntryType.of(EntryType.SIMPLE.ordinal())); + Assert.assertEquals(EntryType.PACKED, EntryType.of(EntryType.PACKED.ordinal())); + Assert.assertEquals(EntryType.FACTORED, EntryType.of(EntryType.FACTORED.ordinal())); + Assert.assertEquals(EntryType.OVERFLOW, EntryType.of(EntryType.OVERFLOW.ordinal())); + } + + private static class EntrySetSkippableIterator extends RangeIterator + { + private final PeekingIterator> elements; + + EntrySetSkippableIterator(SortedMap elms) + { + super(elms.firstKey(), elms.lastKey(), elms.size()); + elements = Iterators.peekingIterator(elms.entrySet().iterator()); + } + + @Override + public TokenWithOffsets computeNext() + { + if (!elements.hasNext()) + return endOfData(); + + Map.Entry next = elements.next(); + return new TokenWithOffsets(next.getKey(), next.getValue()); + } + + @Override + protected void performSkipTo(Long nextToken) + { + while (elements.hasNext()) + { + if (Long.compare(elements.peek().getKey(), nextToken) >= 0) + { + break; + } + + elements.next(); + } + } + + @Override + public void close() throws IOException + { + // nothing to do here + } + } + + public static class TokenWithOffsets extends Token + { + private final LongSet offsets; + + public TokenWithOffsets(long token, final LongSet offsets) + { + super(token); + this.offsets = offsets; + } + + @Override + public void merge(CombinedValue other) + {} + + @Override + public int compareTo(CombinedValue o) + { + return Long.compare(token, o.get()); + } + + @Override + public boolean equals(Object other) + { + if (!(other instanceof TokenWithOffsets)) + return false; + + TokenWithOffsets o = (TokenWithOffsets) other; + return token == o.token && offsets.equals(o.offsets); + } + + @Override + public int hashCode() + { + return new HashCodeBuilder().append(token).build(); + } + + @Override + public String toString() + { + return String.format("TokenValue(token: %d, offsets: %s)", token, offsets); + } + + @Override + public Iterator iterator() + { + List keys = new ArrayList<>(offsets.size()); + for (LongCursor offset : offsets) + keys.add(dk(offset.value)); + + return keys.iterator(); + } + } + + private static Set convert(LongSet offsets) + { + Set keys = new HashSet<>(); + for (LongCursor offset : offsets) + keys.add(KEY_CONVERTER.apply(offset.value)); + + return keys; + } + + private static Set convert(Token results) + { + Set keys = new HashSet<>(); + for (DecoratedKey key : results) + keys.add(key); + + return keys; + } + + private static LongSet convert(long... values) + { + LongSet result = new LongOpenHashSet(values.length); + for (long v : values) + result.add(v); + + return result; + } + + private static class KeyConverter implements Function + { + @Override + public DecoratedKey apply(Long offset) + { + return dk(offset); + } + } + + private static DecoratedKey dk(Long token) + { + ByteBuffer buf = ByteBuffer.allocate(8); + buf.putLong(token); + buf.flip(); + Long hashed = MurmurHash.hash2_64(buf, buf.position(), buf.remaining(), 0); + return new BufferDecoratedKey(new Murmur3Partitioner.LongToken(hashed), buf); + } + + private static TokenTree generateTree(final long minToken, final long maxToken) throws IOException + { + final SortedMap toks = new TreeMap() + {{ + for (long i = minToken; i <= maxToken; i++) + { + LongSet offsetSet = new LongOpenHashSet(); + offsetSet.add(i); + put(i, offsetSet); + } + }}; + + final TokenTreeBuilder builder = new TokenTreeBuilder(toks).finish(); + final File treeFile = File.createTempFile("token-tree-get-test", "tt"); + treeFile.deleteOnExit(); + + try (SequentialWriter writer = new SequentialWriter(treeFile, 4096, BufferType.ON_HEAP)) + { + builder.write(writer); + writer.sync(); + } + + RandomAccessReader reader = null; + + try + { + reader = RandomAccessReader.open(treeFile); + return new TokenTree(new MappedBuffer(reader)); + } + finally + { + FileUtils.closeQuietly(reader); + } + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java new file mode 100644 index 0000000000..92fbf69cfe --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java @@ -0,0 +1,645 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.plan; + +import java.nio.ByteBuffer; +import java.util.*; +import java.util.concurrent.TimeUnit; + +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; +import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.cql3.Operator; +import org.apache.cassandra.db.*; +import org.apache.cassandra.db.filter.RowFilter; +import org.apache.cassandra.db.marshal.DoubleType; +import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.index.sasi.plan.Operation.OperationType; +import org.apache.cassandra.db.marshal.Int32Type; +import org.apache.cassandra.db.marshal.LongType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.cassandra.schema.KeyspaceMetadata; +import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.schema.Tables; +import org.apache.cassandra.service.MigrationManager; +import org.apache.cassandra.utils.FBUtilities; + +import org.junit.*; + +public class OperationTest extends SchemaLoader +{ + private static final String KS_NAME = "sasi"; + private static final String CF_NAME = "test_cf"; + private static final String CLUSTERING_CF_NAME = "clustering_test_cf"; + + private static ColumnFamilyStore BACKEND; + private static ColumnFamilyStore CLUSTERING_BACKEND; + + @BeforeClass + public static void loadSchema() throws ConfigurationException + { + System.setProperty("cassandra.config", "cassandra-murmur.yaml"); + SchemaLoader.loadSchema(); + MigrationManager.announceNewKeyspace(KeyspaceMetadata.create(KS_NAME, + KeyspaceParams.simpleTransient(1), + Tables.of(SchemaLoader.sasiCFMD(KS_NAME, CF_NAME), + SchemaLoader.clusteringSASICFMD(KS_NAME, CLUSTERING_CF_NAME)))); + + BACKEND = Keyspace.open(KS_NAME).getColumnFamilyStore(CF_NAME); + CLUSTERING_BACKEND = Keyspace.open(KS_NAME).getColumnFamilyStore(CLUSTERING_CF_NAME); + } + + private QueryController controller; + + @Before + public void beforeTest() + { + controller = new QueryController(BACKEND, + PartitionRangeReadCommand.allDataRead(BACKEND.metadata, FBUtilities.nowInSeconds()), + TimeUnit.SECONDS.toMillis(10)); + } + + @After + public void afterTest() + { + controller.finish(); + } + + @Test + public void testAnalyze() throws Exception + { + final ColumnDefinition firstName = getColumn(UTF8Type.instance.decompose("first_name")); + final ColumnDefinition age = getColumn(UTF8Type.instance.decompose("age")); + final ColumnDefinition comment = getColumn(UTF8Type.instance.decompose("comment")); + + // age != 5 AND age > 1 AND age != 6 AND age <= 10 + Map expressions = convert(Operation.analyzeGroup(controller, OperationType.AND, + Arrays.asList(new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(5)), + new SimpleExpression(age, Operator.GT, Int32Type.instance.decompose(1)), + new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(6)), + new SimpleExpression(age, Operator.LTE, Int32Type.instance.decompose(10))))); + + Expression expected = new Expression("age", Int32Type.instance) + {{ + operation = Op.RANGE; + lower = new Bound(Int32Type.instance.decompose(1), false); + upper = new Bound(Int32Type.instance.decompose(10), true); + + exclusions.add(Int32Type.instance.decompose(5)); + exclusions.add(Int32Type.instance.decompose(6)); + }}; + + Assert.assertEquals(1, expressions.size()); + Assert.assertEquals(expected, expressions.get(Expression.Op.RANGE)); + + // age != 5 OR age >= 7 + expressions = convert(Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(5)), + new SimpleExpression(age, Operator.GTE, Int32Type.instance.decompose(7))))); + Assert.assertEquals(2, expressions.size()); + + Assert.assertEquals(new Expression("age", Int32Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(Int32Type.instance.decompose(5), true); + upper = lower; + }}, expressions.get(Expression.Op.NOT_EQ)); + + Assert.assertEquals(new Expression("age", Int32Type.instance) + {{ + operation = Op.RANGE; + lower = new Bound(Int32Type.instance.decompose(7), true); + }}, expressions.get(Expression.Op.RANGE)); + + // age != 5 OR age < 7 + expressions = convert(Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(5)), + new SimpleExpression(age, Operator.LT, Int32Type.instance.decompose(7))))); + + Assert.assertEquals(2, expressions.size()); + Assert.assertEquals(new Expression("age", Int32Type.instance) + {{ + operation = Op.RANGE; + upper = new Bound(Int32Type.instance.decompose(7), false); + }}, expressions.get(Expression.Op.RANGE)); + Assert.assertEquals(new Expression("age", Int32Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(Int32Type.instance.decompose(5), true); + upper = lower; + }}, expressions.get(Expression.Op.NOT_EQ)); + + // age > 1 AND age < 7 + expressions = convert(Operation.analyzeGroup(controller, OperationType.AND, + Arrays.asList(new SimpleExpression(age, Operator.GT, Int32Type.instance.decompose(1)), + new SimpleExpression(age, Operator.LT, Int32Type.instance.decompose(7))))); + + Assert.assertEquals(1, expressions.size()); + Assert.assertEquals(new Expression("age", Int32Type.instance) + {{ + operation = Op.RANGE; + lower = new Bound(Int32Type.instance.decompose(1), false); + upper = new Bound(Int32Type.instance.decompose(7), false); + }}, expressions.get(Expression.Op.RANGE)); + + // first_name = 'a' OR first_name != 'b' + expressions = convert(Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + new SimpleExpression(firstName, Operator.NEQ, UTF8Type.instance.decompose("b"))))); + + Assert.assertEquals(2, expressions.size()); + Assert.assertEquals(new Expression("first_name", UTF8Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(UTF8Type.instance.decompose("b"), true); + upper = lower; + }}, expressions.get(Expression.Op.NOT_EQ)); + Assert.assertEquals(new Expression("first_name", UTF8Type.instance) + {{ + operation = Op.EQ; + lower = upper = new Bound(UTF8Type.instance.decompose("a"), true); + }}, expressions.get(Expression.Op.EQ)); + + // comment = 'soft eng' and comment != 'likes do' + ListMultimap e = Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(comment, Operator.EQ, UTF8Type.instance.decompose("soft eng")), + new SimpleExpression(comment, Operator.NEQ, UTF8Type.instance.decompose("likes do")))); + + List expectedExpressions = new ArrayList(2) + {{ + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.EQ; + lower = new Bound(UTF8Type.instance.decompose("soft"), true); + upper = lower; + }}); + + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.EQ; + lower = new Bound(UTF8Type.instance.decompose("eng"), true); + upper = lower; + }}); + + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(UTF8Type.instance.decompose("likes"), true); + upper = lower; + }}); + + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(UTF8Type.instance.decompose("do"), true); + upper = lower; + }}); + }}; + + Assert.assertEquals(expectedExpressions, e.get(comment)); + + // first_name = 'j' and comment != 'likes do' + e = Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(comment, Operator.NEQ, UTF8Type.instance.decompose("likes do")), + new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("j")))); + + expectedExpressions = new ArrayList(2) + {{ + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(UTF8Type.instance.decompose("likes"), true); + upper = lower; + }}); + + add(new Expression("comment", UTF8Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(UTF8Type.instance.decompose("do"), true); + upper = lower; + }}); + }}; + + Assert.assertEquals(expectedExpressions, e.get(comment)); + + // age != 27 first_name = 'j' and age != 25 + e = Operation.analyzeGroup(controller, OperationType.OR, + Arrays.asList(new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(27)), + new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("j")), + new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(25)))); + + expectedExpressions = new ArrayList(2) + {{ + add(new Expression("age", Int32Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(Int32Type.instance.decompose(27), true); + upper = lower; + }}); + + add(new Expression("age", Int32Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(Int32Type.instance.decompose(25), true); + upper = lower; + }}); + }}; + + Assert.assertEquals(expectedExpressions, e.get(age)); + } + + @Test + public void testSatisfiedBy() throws Exception + { + final ColumnDefinition timestamp = getColumn(UTF8Type.instance.decompose("timestamp")); + final ColumnDefinition age = getColumn(UTF8Type.instance.decompose("age")); + + Operation.Builder builder = new Operation.Builder(OperationType.AND, controller, new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(5))); + Operation op = builder.complete(); + + Unfiltered row = buildRow(buildCell(age, Int32Type.instance.decompose(6), System.currentTimeMillis())); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(5), System.currentTimeMillis())); + + // and reject incorrect value + Assert.assertFalse(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(6), System.currentTimeMillis())); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + // range with exclusions - age != 5 AND age > 1 AND age != 6 AND age <= 10 + builder = new Operation.Builder(OperationType.AND, controller, + new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(5)), + new SimpleExpression(age, Operator.GT, Int32Type.instance.decompose(1)), + new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(6)), + new SimpleExpression(age, Operator.LTE, Int32Type.instance.decompose(10))); + op = builder.complete(); + + Set exclusions = Sets.newHashSet(0, 1, 5, 6, 11); + for (int i = 0; i <= 11; i++) + { + row = buildRow(buildCell(age, Int32Type.instance.decompose(i), System.currentTimeMillis())); + + boolean result = op.satisfiedBy(row, false); + Assert.assertTrue(exclusions.contains(i) != result); + } + + // now let's do something more complex - age = 5 OR age = 6 + builder = new Operation.Builder(OperationType.OR, controller, + new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(5)), + new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(6))); + + op = builder.complete(); + + exclusions = Sets.newHashSet(0, 1, 2, 3, 4, 7, 8, 9, 10); + for (int i = 0; i <= 10; i++) + { + row = buildRow(buildCell(age, Int32Type.instance.decompose(i), System.currentTimeMillis())); + + boolean result = op.satisfiedBy(row, false); + Assert.assertTrue(exclusions.contains(i) != result); + } + + // now let's test aggregated AND commands + builder = new Operation.Builder(OperationType.AND, controller); + + // logical should be ignored by analyzer, but we still what to make sure that it is + //IndexExpression logical = new IndexExpression(ByteBufferUtil.EMPTY_BYTE_BUFFER, IndexOperator.EQ, ByteBufferUtil.EMPTY_BYTE_BUFFER); + //logical.setLogicalOp(LogicalIndexOperator.AND); + + //builder.add(logical); + builder.add(new SimpleExpression(age, Operator.GTE, Int32Type.instance.decompose(0))); + builder.add(new SimpleExpression(age, Operator.LT, Int32Type.instance.decompose(10))); + builder.add(new SimpleExpression(age, Operator.NEQ, Int32Type.instance.decompose(7))); + + op = builder.complete(); + + exclusions = Sets.newHashSet(7); + for (int i = 0; i < 10; i++) + { + row = buildRow(buildCell(age, Int32Type.instance.decompose(i), System.currentTimeMillis())); + + boolean result = op.satisfiedBy(row, false); + Assert.assertTrue(exclusions.contains(i) != result); + } + + // multiple analyzed expressions in the Operation timestamp >= 10 AND age = 5 + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(timestamp, Operator.GTE, LongType.instance.decompose(10L))); + builder.add(new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(5))); + + op = builder.complete(); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(6), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(11L), System.currentTimeMillis())); + + Assert.assertFalse(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(5), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(22L), System.currentTimeMillis())); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(5), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(9L), System.currentTimeMillis())); + + Assert.assertFalse(op.satisfiedBy(row, false)); + + // operation with internal expressions and right child + builder = new Operation.Builder(OperationType.OR, controller, + new SimpleExpression(timestamp, Operator.GT, LongType.instance.decompose(10L))); + builder.setRight(new Operation.Builder(OperationType.AND, controller, + new SimpleExpression(age, Operator.GT, Int32Type.instance.decompose(0)), + new SimpleExpression(age, Operator.LT, Int32Type.instance.decompose(10)))); + op = builder.complete(); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(5), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(9L), System.currentTimeMillis())); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(20), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(11L), System.currentTimeMillis())); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + row = buildRow(buildCell(age, Int32Type.instance.decompose(0), System.currentTimeMillis()), + buildCell(timestamp, LongType.instance.decompose(9L), System.currentTimeMillis())); + + Assert.assertFalse(op.satisfiedBy(row, false)); + + // and for desert let's try out null and deleted rows etc. + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(30))); + op = builder.complete(); + + Assert.assertFalse(op.satisfiedBy(null, false)); + Assert.assertFalse(op.satisfiedBy(row, false)); + + long now = System.currentTimeMillis(); + + row = OperationTest.buildRow( + Row.Deletion.regular(new DeletionTime(now - 10, (int) (now / 1000))), + buildCell(age, Int32Type.instance.decompose(6), System.currentTimeMillis())); + + Assert.assertFalse(op.satisfiedBy(row, false)); + + row = buildRow(deletedCell(age, System.currentTimeMillis(), FBUtilities.nowInSeconds())); + + Assert.assertFalse(op.satisfiedBy(row, true)); + + try + { + Assert.assertFalse(op.satisfiedBy(buildRow(), false)); + } + catch (IllegalStateException e) + { + // expected + } + + try + { + Assert.assertFalse(op.satisfiedBy(buildRow(), true)); + } + catch (IllegalStateException e) + { + Assert.fail("IllegalStateException should not be thrown when missing column and allowMissingColumns=true"); + } + } + + @Test + public void testAnalyzeNotIndexedButDefinedColumn() throws Exception + { + final ColumnDefinition firstName = getColumn(UTF8Type.instance.decompose("first_name")); + final ColumnDefinition height = getColumn(UTF8Type.instance.decompose("height")); + + // first_name = 'a' AND height != 10 + Map expressions; + expressions = convert(Operation.analyzeGroup(controller, OperationType.AND, + Arrays.asList(new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + new SimpleExpression(height, Operator.NEQ, Int32Type.instance.decompose(5))))); + + Assert.assertEquals(2, expressions.size()); + + Assert.assertEquals(new Expression("height", Int32Type.instance) + {{ + operation = Op.NOT_EQ; + lower = new Bound(Int32Type.instance.decompose(5), true); + upper = lower; + }}, expressions.get(Expression.Op.NOT_EQ)); + + expressions = convert(Operation.analyzeGroup(controller, OperationType.AND, + Arrays.asList(new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + new SimpleExpression(height, Operator.GT, Int32Type.instance.decompose(0)), + new SimpleExpression(height, Operator.NEQ, Int32Type.instance.decompose(5))))); + + Assert.assertEquals(2, expressions.size()); + + Assert.assertEquals(new Expression("height", Int32Type.instance) + {{ + operation = Op.RANGE; + lower = new Bound(Int32Type.instance.decompose(0), false); + exclusions.add(Int32Type.instance.decompose(5)); + }}, expressions.get(Expression.Op.RANGE)); + + expressions = convert(Operation.analyzeGroup(controller, OperationType.AND, + Arrays.asList(new SimpleExpression(firstName, Operator.EQ, UTF8Type.instance.decompose("a")), + new SimpleExpression(height, Operator.NEQ, Int32Type.instance.decompose(5)), + new SimpleExpression(height, Operator.GTE, Int32Type.instance.decompose(0)), + new SimpleExpression(height, Operator.LT, Int32Type.instance.decompose(10))))); + + Assert.assertEquals(2, expressions.size()); + + Assert.assertEquals(new Expression("height", Int32Type.instance) + {{ + operation = Op.RANGE; + lower = new Bound(Int32Type.instance.decompose(0), true); + upper = new Bound(Int32Type.instance.decompose(10), false); + exclusions.add(Int32Type.instance.decompose(5)); + }}, expressions.get(Expression.Op.RANGE)); + } + + @Test + public void testSatisfiedByWithMultipleTerms() + { + final ColumnDefinition comment = getColumn(UTF8Type.instance.decompose("comment")); + + Unfiltered row = buildRow( + buildCell(comment, + UTF8Type.instance.decompose("software engineer is working on a project"), + System.currentTimeMillis())); + + Operation.Builder builder = new Operation.Builder(OperationType.AND, controller, + new SimpleExpression(comment, Operator.EQ, UTF8Type.instance.decompose("eng is a work"))); + Operation op = builder.complete(); + + Assert.assertTrue(op.satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller, + new SimpleExpression(comment, Operator.EQ, UTF8Type.instance.decompose("soft works fine"))); + op = builder.complete(); + + Assert.assertTrue(op.satisfiedBy(row, false)); + } + + @Test + public void testSatisfiedByWithClustering() + { + ColumnDefinition location = getColumn(CLUSTERING_BACKEND, UTF8Type.instance.decompose("location")); + ColumnDefinition age = getColumn(CLUSTERING_BACKEND, UTF8Type.instance.decompose("age")); + ColumnDefinition height = getColumn(CLUSTERING_BACKEND, UTF8Type.instance.decompose("height")); + ColumnDefinition score = getColumn(CLUSTERING_BACKEND, UTF8Type.instance.decompose("score")); + + Unfiltered row = buildRow(new Clustering(UTF8Type.instance.fromString("US"), Int32Type.instance.decompose(27)), + buildCell(height, Int32Type.instance.decompose(182), System.currentTimeMillis()), + buildCell(score, DoubleType.instance.decompose(1.0d), System.currentTimeMillis())); + + Operation.Builder builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(27))); + builder.add(new SimpleExpression(height, Operator.EQ, Int32Type.instance.decompose(182))); + + Assert.assertTrue(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + + builder.add(new SimpleExpression(age, Operator.EQ, Int32Type.instance.decompose(28))); + builder.add(new SimpleExpression(height, Operator.EQ, Int32Type.instance.decompose(182))); + + Assert.assertFalse(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(location, Operator.EQ, UTF8Type.instance.decompose("US"))); + builder.add(new SimpleExpression(age, Operator.GTE, Int32Type.instance.decompose(27))); + + Assert.assertTrue(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(location, Operator.EQ, UTF8Type.instance.decompose("BY"))); + builder.add(new SimpleExpression(age, Operator.GTE, Int32Type.instance.decompose(28))); + + Assert.assertFalse(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(location, Operator.EQ, UTF8Type.instance.decompose("US"))); + builder.add(new SimpleExpression(age, Operator.LTE, Int32Type.instance.decompose(27))); + builder.add(new SimpleExpression(height, Operator.GTE, Int32Type.instance.decompose(182))); + + Assert.assertTrue(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(location, Operator.EQ, UTF8Type.instance.decompose("US"))); + builder.add(new SimpleExpression(height, Operator.GTE, Int32Type.instance.decompose(182))); + builder.add(new SimpleExpression(score, Operator.EQ, DoubleType.instance.decompose(1.0d))); + + Assert.assertTrue(builder.complete().satisfiedBy(row, false)); + + builder = new Operation.Builder(OperationType.AND, controller); + builder.add(new SimpleExpression(height, Operator.GTE, Int32Type.instance.decompose(182))); + builder.add(new SimpleExpression(score, Operator.EQ, DoubleType.instance.decompose(1.0d))); + + Assert.assertTrue(builder.complete().satisfiedBy(row, false)); + } + + private Map convert(Multimap expressions) + { + Map converted = new HashMap<>(); + for (Expression expression : expressions.values()) + { + Expression column = converted.get(expression.getOp()); + assert column == null; // sanity check + converted.put(expression.getOp(), expression); + } + + return converted; + } + + private static class SimpleExpression extends RowFilter.Expression + { + protected SimpleExpression(ColumnDefinition column, Operator operator, ByteBuffer value) + { + super(column, operator, value); + } + + @Override + protected Kind kind() + { + return Kind.SIMPLE; + } + + @Override + public boolean isSatisfiedBy(CFMetaData metadata, DecoratedKey partitionKey, Row row) + { + throw new UnsupportedOperationException(); + } + } + + private static Unfiltered buildRow(Cell... cells) + { + return buildRow(Clustering.EMPTY, null, cells); + } + + private static Row buildRow(Row.Deletion deletion, Cell... cells) + { + return buildRow(Clustering.EMPTY, deletion, cells); + } + + private static Row buildRow(Clustering clustering, Cell... cells) + { + return buildRow(clustering, null, cells); + } + + private static Row buildRow(Clustering clustering, Row.Deletion deletion, Cell... cells) + { + Row.Builder rowBuilder = BTreeRow.sortedBuilder(); + rowBuilder.newRow(clustering); + for (Cell c : cells) + rowBuilder.addCell(c); + + if (deletion != null) + rowBuilder.addRowDeletion(deletion); + + return rowBuilder.build(); + } + + private static Cell buildCell(ColumnDefinition column, ByteBuffer value, long timestamp) + { + return BufferCell.live(BACKEND.metadata, column, timestamp, value); + } + + private static Cell deletedCell(ColumnDefinition column, long timestamp, int nowInSeconds) + { + return BufferCell.tombstone(column, timestamp, nowInSeconds); + } + + private static ColumnDefinition getColumn(ByteBuffer name) + { + return getColumn(BACKEND, name); + } + + private static ColumnDefinition getColumn(ColumnFamilyStore cfs, ByteBuffer name) + { + return cfs.metadata.getColumnDefinition(name); + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java b/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java new file mode 100644 index 0000000000..96e7610ab3 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/utils/LongIterator.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.index.sasi.disk.Token; + +public class LongIterator extends RangeIterator +{ + private final List tokens; + private int currentIdx = 0; + + public LongIterator(long[] tokens) + { + super(tokens.length == 0 ? null : tokens[0], tokens.length == 0 ? null : tokens[tokens.length - 1], tokens.length); + this.tokens = new ArrayList<>(tokens.length); + for (long token : tokens) + this.tokens.add(new LongToken(token)); + } + + @Override + protected Token computeNext() + { + if (currentIdx >= tokens.size()) + return endOfData(); + + return tokens.get(currentIdx++); + } + + @Override + protected void performSkipTo(Long nextToken) + { + for (int i = currentIdx == 0 ? 0 : currentIdx - 1; i < tokens.size(); i++) + { + LongToken token = tokens.get(i); + if (token.get().compareTo(nextToken) >= 0) + { + currentIdx = i; + break; + } + } + } + + @Override + public void close() throws IOException + {} + + public static class LongToken extends Token + { + public LongToken(long token) + { + super(token); + } + + @Override + public void merge(CombinedValue other) + { + // no-op + } + + @Override + public Iterator iterator() + { + return Collections.emptyIterator(); + } + } + + public static List convert(RangeIterator tokens) + { + List results = new ArrayList<>(); + while (tokens.hasNext()) + results.add(tokens.next().get()); + + return results; + } + + public static List convert(final long... nums) + { + return new ArrayList(nums.length) + {{ + for (long n : nums) + add(n); + }}; + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/MappedBufferTest.java b/test/unit/org/apache/cassandra/index/sasi/utils/MappedBufferTest.java new file mode 100644 index 0000000000..7ffebf166b --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/utils/MappedBufferTest.java @@ -0,0 +1,540 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.*; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; + +import org.apache.cassandra.db.marshal.LongType; +import org.apache.cassandra.io.util.ChannelProxy; +import org.apache.cassandra.io.util.FileUtils; + +import org.junit.Assert; +import org.junit.Test; + +public class MappedBufferTest +{ + @Test + public void testBasicWriteThenRead() throws Exception + { + long numLongs = 10000; + final MappedBuffer buffer = createTestFile(numLongs); + + Assert.assertEquals(0, buffer.position()); + for (long i = 0; i < numLongs; i++) + { + Assert.assertEquals(i * 8, buffer.position()); + Assert.assertEquals(i, buffer.getLong()); + } + + buffer.position(0); + for (long i = 0; i < numLongs; i++) + { + Assert.assertEquals(i, buffer.getLong(i * 8)); + Assert.assertEquals(0, buffer.position()); + } + + // read all the numbers as shorts (all numbers fit into four bytes) + for (long i = 0; i < Math.min(Integer.MAX_VALUE, numLongs); i++) + Assert.assertEquals(i, buffer.getInt((i * 8) + 4)); + + // read all the numbers as shorts (all numbers fit into two bytes) + for (long i = 0; i < Math.min(Short.MAX_VALUE, numLongs); i++) { + Assert.assertEquals(i, buffer.getShort((i * 8) + 6)); + } + + // read all the numbers that can be represented as a single byte + for (long i = 0; i < 128; i++) + Assert.assertEquals(i, buffer.get((i * 8) + 7)); + + buffer.close(); + } + + @Test + public void testDuplicate() throws Exception + { + long numLongs = 10; + final MappedBuffer buffer1 = createTestFile(numLongs); + + Assert.assertEquals(0, buffer1.getLong()); + Assert.assertEquals(1, buffer1.getLong()); + + final MappedBuffer buffer2 = buffer1.duplicate(); + + Assert.assertEquals(2, buffer1.getLong()); + Assert.assertEquals(2, buffer2.getLong()); + + buffer2.position(0); + Assert.assertEquals(3, buffer1.getLong()); + Assert.assertEquals(0, buffer2.getLong()); + } + + @Test + public void testLimit() throws Exception + { + long numLongs = 10; + final MappedBuffer buffer1 = createTestFile(numLongs); + + MappedBuffer buffer2 = buffer1.duplicate().position(16).limit(32); + buffer1.position(0).limit(16); + List longs = new ArrayList<>(4); + + while (buffer1.hasRemaining()) + longs.add(buffer1.getLong()); + + while (buffer2.hasRemaining()) + longs.add(buffer2.getLong()); + + Assert.assertArrayEquals(new Long[]{0L, 1L, 2L, 3L}, longs.toArray()); + } + + @Test(expected = IllegalArgumentException.class) + public void testPositionGreaterThanLimit() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.limit(4); + + try + { + buffer.position(buffer.limit() + 1); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testNegativePosition() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.position(-1); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testLimitGreaterThanCapacity() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.limit(buffer.capacity() + 1); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testLimitLessThanPosition() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.position(1); + + try + { + buffer.limit(0); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetRelativeUnderflow() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.position(buffer.limit()); + try + { + buffer.get(); + } + finally + { + buffer.close(); + } + + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetAbsoluteGreaterThanCapacity() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.get(buffer.limit()); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetAbsoluteNegativePosition() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.get(-1); + } + } + + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetShortRelativeUnderflow() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.position(buffer.capacity() - 1); + try + { + buffer.getShort(); + } + finally + { + buffer.close(); + } + + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetShortAbsoluteGreaterThanCapacity() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + Assert.assertEquals(8, buffer.capacity()); + try + { + buffer.getShort(buffer.capacity() - 1); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetShortAbsoluteNegativePosition() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.getShort(-1); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetIntRelativeUnderflow() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.position(buffer.capacity() - 3); + try + { + buffer.getInt(); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetIntAbsoluteGreaterThanCapacity() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + Assert.assertEquals(8, buffer.capacity()); + try + { + buffer.getInt(buffer.capacity() - 3); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetIntAbsoluteNegativePosition() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.getInt(-1); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetLongRelativeUnderflow() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + buffer.position(buffer.capacity() - 7); + try + { + buffer.getLong(); + } + finally + { + buffer.close(); + } + + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetLongAbsoluteGreaterThanCapacity() throws Exception + { + final MappedBuffer buffer = createTestFile(1); + + Assert.assertEquals(8, buffer.capacity()); + try + { + buffer.getLong(buffer.capacity() - 7); + } + finally + { + buffer.close(); + } + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetLongAbsoluteNegativePosition() throws Exception + { + try (MappedBuffer buffer = createTestFile(1)) + { + buffer.getLong(-1); + } + } + + @Test + public void testGetPageRegion() throws Exception + { + ThreadLocalRandom random = ThreadLocalRandom.current(); + + int numLongs = 1000; + int byteSize = 8; + int capacity = numLongs * byteSize; + try (MappedBuffer buffer = createTestFile(numLongs)) + { + for (int i = 0; i < 1000; i++) + { + // offset, length are always aligned on sizeof(long) + int offset = random.nextInt(0, 1000 * byteSize - byteSize) & ~(byteSize - 1); + int length = Math.min(capacity, random.nextInt(byteSize, capacity - offset) & ~(byteSize - 1)); + + ByteBuffer region = buffer.getPageRegion(offset, length); + for (int j = offset; j < (offset + length); j += 8) + Assert.assertEquals(j / 8, region.getLong(j)); + } + } + } + + @Test (expected = IllegalArgumentException.class) + public void testMisalignedRegionAccess() throws Exception + { + try (MappedBuffer buffer = createTestFile(100, 8, 4, 0)) + { + buffer.getPageRegion(13, 27); + } + } + + @Test + public void testSequentialIterationWithPadding() throws Exception + { + long numValues = 1000; + int maxPageBits = 6; // 64 bytes page + int[] paddings = new int[] { 0, 3, 5, 7, 9, 11, 13 }; + + // test different page sizes, with different padding and types + for (int numPageBits = 3; numPageBits <= maxPageBits; numPageBits++) + { + for (int typeSize = 2; typeSize <= 8; typeSize *= 2) + { + for (int padding : paddings) + { + try (MappedBuffer buffer = createTestFile(numValues, typeSize, numPageBits, padding)) + { + long offset = 0; + for (long j = 0; j < numValues; j++) + { + switch (typeSize) + { + case 2: + Assert.assertEquals(j, buffer.getShort(offset)); + break; + + case 4: + Assert.assertEquals(j, buffer.getInt(offset)); + break; + + case 8: + Assert.assertEquals(j, buffer.getLong(offset)); + break; + + default: + throw new AssertionError(); + } + + offset += typeSize + padding; + } + } + } + } + } + } + + @Test + public void testSequentialIteration() throws IOException + { + long numValues = 1000; + for (int typeSize = 2; typeSize <= 8; typeSize *= 2) + { + try (MappedBuffer buffer = createTestFile(numValues, typeSize, 16, 0)) + { + for (int j = 0; j < numValues; j++) + { + Assert.assertEquals(j * typeSize, buffer.position()); + + switch (typeSize) + { + case 2: + Assert.assertEquals(j, buffer.getShort()); + break; + + case 4: + Assert.assertEquals(j, buffer.getInt()); + break; + + case 8: + Assert.assertEquals(j, buffer.getLong()); + break; + + default: + throw new AssertionError(); + } + } + } + } + } + + @Test + public void testCompareToPage() throws IOException + { + long numValues = 100; + int typeSize = 8; + + try (MappedBuffer buffer = createTestFile(numValues)) + { + for (long i = 0; i < numValues * typeSize; i += typeSize) + { + long value = i / typeSize; + Assert.assertEquals(0, buffer.comparePageTo(i, typeSize, LongType.instance, LongType.instance.decompose(value))); + } + } + } + + @Test + public void testOpenWithoutPageBits() throws IOException + { + File tmp = File.createTempFile("mapped-buffer", "tmp"); + tmp.deleteOnExit(); + + RandomAccessFile file = new RandomAccessFile(tmp, "rw"); + + long numValues = 1000; + for (long i = 0; i < numValues; i++) + file.writeLong(i); + + file.getFD().sync(); + + try (MappedBuffer buffer = new MappedBuffer(new ChannelProxy(tmp.getAbsolutePath(), file.getChannel()))) + { + Assert.assertEquals(numValues * 8, buffer.limit()); + Assert.assertEquals(numValues * 8, buffer.capacity()); + + for (long i = 0; i < numValues; i++) + { + Assert.assertEquals(i * 8, buffer.position()); + Assert.assertEquals(i, buffer.getLong()); + } + } + finally + { + FileUtils.closeQuietly(file); + } + } + + @Test(expected = IllegalArgumentException.class) + public void testIncorrectPageSize() throws Exception + { + new MappedBuffer(null, 33); + } + + private MappedBuffer createTestFile(long numCount) throws IOException + { + return createTestFile(numCount, 8, 16, 0); + } + + private MappedBuffer createTestFile(long numCount, int typeSize, int numPageBits, int padding) throws IOException + { + final File testFile = File.createTempFile("mapped-buffer-test", "db"); + testFile.deleteOnExit(); + + RandomAccessFile file = new RandomAccessFile(testFile, "rw"); + + for (long i = 0; i < numCount; i++) + { + + switch (typeSize) + { + case 1: + file.write((byte) i); + break; + + case 2: + file.writeShort((short) i); + break; + + case 4: + file.writeInt((int) i); + break; + + case 8: + // bunch of longs + file.writeLong(i); + break; + + default: + throw new IllegalArgumentException("unknown byte size: " + typeSize); + } + + for (int j = 0; j < padding; j++) + file.write(0); + } + + file.getFD().sync(); + + try + { + return new MappedBuffer(new ChannelProxy(testFile.getAbsolutePath(), file.getChannel()), numPageBits); + } + finally + { + FileUtils.closeQuietly(file); + } + } + +} diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java b/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java new file mode 100644 index 0000000000..18b9dd797b --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/utils/RangeIntersectionIteratorTest.java @@ -0,0 +1,387 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.io.IOException; +import java.util.*; +import java.util.concurrent.ThreadLocalRandom; + +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator.Strategy; +import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator.LookupIntersectionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIntersectionIterator.BounceIntersectionIterator; +import org.apache.cassandra.io.util.FileUtils; + +import com.carrotsearch.hppc.LongOpenHashSet; +import com.carrotsearch.hppc.LongSet; + +import org.junit.Assert; +import org.junit.Test; + +import static org.apache.cassandra.index.sasi.utils.LongIterator.convert; + +public class RangeIntersectionIteratorTest +{ + @Test + public void testNoOverlappingValues() + { + for (Strategy strategy : Strategy.values()) + testNoOverlappingValues(strategy); + } + + private void testNoOverlappingValues(Strategy strategy) + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + builder.add(new LongIterator(new long[] { 2L, 3L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 1L, 7L })); + builder.add(new LongIterator(new long[] { 4L, 8L, 9L, 10L })); + + Assert.assertEquals(convert(), convert(builder.build())); + + builder = RangeIntersectionIterator.builder(strategy); + // both ranges overlap by min/max but not by value + builder.add(new LongIterator(new long[] { 1L, 5L, 7L, 9L })); + builder.add(new LongIterator(new long[] { 6L })); + + RangeIterator range = builder.build(); + + Assert.assertNotNull(range); + Assert.assertFalse(range.hasNext()); + + builder = RangeIntersectionIterator.builder(strategy); + // both ranges overlap by min/max but not by value + builder.add(new LongIterator(new long[] { 1L, 5L, 7L, 9L })); + builder.add(new LongIterator(new long[] { 0L, 10L, 12L })); + + range = builder.build(); + + Assert.assertNotNull(range); + Assert.assertFalse(range.hasNext()); + } + + @Test + public void testOverlappingValues() + { + for (Strategy strategy : Strategy.values()) + testOverlappingValues(strategy); + } + + private void testOverlappingValues(Strategy strategy) + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + builder.add(new LongIterator(new long[] { 1L, 4L, 6L, 7L })); + builder.add(new LongIterator(new long[] { 2L, 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 4L, 6L, 8L, 9L, 10L })); + + Assert.assertEquals(convert(4L, 6L), convert(builder.build())); + } + + @Test + public void testSingleIterator() + { + for (Strategy strategy : Strategy.values()) + testSingleIterator(strategy); + } + + private void testSingleIterator(Strategy strategy) + { + RangeIntersectionIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + builder.add(new LongIterator(new long[] { 1L, 2L, 4L, 9L })); + + Assert.assertEquals(convert(1L, 2L, 4L, 9L), convert(builder.build())); + } + + @Test + public void testSkipTo() + { + for (Strategy strategy : Strategy.values()) + testSkipTo(strategy); + } + + private void testSkipTo(Strategy strategy) + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + builder.add(new LongIterator(new long[] { 1L, 4L, 6L, 7L, 9L, 10L })); + builder.add(new LongIterator(new long[] { 2L, 4L, 5L, 6L, 7L, 10L, 12L })); + builder.add(new LongIterator(new long[] { 4L, 6L, 7L, 9L, 10L })); + + RangeIterator range = builder.build(); + Assert.assertNotNull(range); + + // first let's skipTo something before range + Assert.assertEquals(4L, (long) range.skipTo(3L).get()); + Assert.assertEquals(4L, (long) range.getCurrent()); + + // now let's skip right to the send value + Assert.assertEquals(6L, (long) range.skipTo(5L).get()); + Assert.assertEquals(6L, (long) range.getCurrent()); + + // now right to the element + Assert.assertEquals(7L, (long) range.skipTo(7L).get()); + Assert.assertEquals(7L, (long) range.getCurrent()); + Assert.assertEquals(7L, (long) range.next().get()); + + Assert.assertTrue(range.hasNext()); + Assert.assertEquals(10L, (long) range.getCurrent()); + + // now right after the last element + Assert.assertNull(range.skipTo(11L)); + Assert.assertFalse(range.hasNext()); + } + + @Test + public void testMinMaxAndCount() + { + for (Strategy strategy : Strategy.values()) + testMinMaxAndCount(strategy); + } + + private void testMinMaxAndCount(Strategy strategy) + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + builder.add(new LongIterator(new long[]{1L, 2L, 9L})); + builder.add(new LongIterator(new long[]{4L, 5L, 9L})); + builder.add(new LongIterator(new long[]{7L, 8L, 9L})); + + Assert.assertEquals(9L, (long) builder.getMaximum()); + Assert.assertEquals(9L, builder.getTokenCount()); + + RangeIterator tokens = builder.build(); + + Assert.assertNotNull(tokens); + Assert.assertEquals(7L, (long) tokens.getMinimum()); + Assert.assertEquals(9L, (long) tokens.getMaximum()); + Assert.assertEquals(9L, tokens.getCount()); + + Assert.assertEquals(convert(9L), convert(builder.build())); + } + + @Test + public void testBuilder() + { + for (Strategy strategy : Strategy.values()) + testBuilder(strategy); + } + + private void testBuilder(Strategy strategy) + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + + Assert.assertNull(builder.getMinimum()); + Assert.assertNull(builder.getMaximum()); + Assert.assertEquals(0L, builder.getTokenCount()); + Assert.assertEquals(0L, builder.rangeCount()); + + builder.add(new LongIterator(new long[] { 1L, 2L, 6L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 6L, 8L, 9L })); + + Assert.assertEquals(6L, (long) builder.getMinimum()); + Assert.assertEquals(6L, (long) builder.getMaximum()); + Assert.assertEquals(9L, builder.getTokenCount()); + Assert.assertEquals(3L, builder.rangeCount()); + Assert.assertFalse(builder.statistics.isDisjoint()); + + Assert.assertEquals(1L, (long) builder.ranges.poll().getMinimum()); + Assert.assertEquals(4L, (long) builder.ranges.poll().getMinimum()); + Assert.assertEquals(6L, (long) builder.ranges.poll().getMinimum()); + + builder.add(new LongIterator(new long[] { 1L, 2L, 6L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 6L, 8L, 9L })); + + Assert.assertEquals(convert(6L), convert(builder.build())); + + builder = RangeIntersectionIterator.builder(strategy); + builder.add(new LongIterator(new long[]{ 1L, 5L, 6L })); + builder.add(new LongIterator(new long[]{ 3L, 5L, 6L })); + + RangeIterator tokens = builder.build(); + + Assert.assertEquals(convert(5L, 6L), convert(tokens)); + + FileUtils.closeQuietly(tokens); + + RangeIterator emptyTokens = RangeIntersectionIterator.builder(strategy).build(); + Assert.assertNull(emptyTokens); + + builder = RangeIntersectionIterator.builder(strategy); + Assert.assertEquals(0L, builder.add((RangeIterator) null).rangeCount()); + Assert.assertEquals(0L, builder.add((List>) null).getTokenCount()); + Assert.assertEquals(0L, builder.add(new LongIterator(new long[] {})).rangeCount()); + + RangeIterator single = new LongIterator(new long[] { 1L, 2L, 3L }); + RangeIterator range = RangeIntersectionIterator.builder().add(single).build(); + + // because build should return first element if it's only one instead of building yet another iterator + Assert.assertEquals(range, single); + + // disjoint case + builder = RangeIntersectionIterator.builder(); + builder.add(new LongIterator(new long[] { 1L, 2L, 3L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + + Assert.assertTrue(builder.statistics.isDisjoint()); + + RangeIterator disjointIntersection = builder.build(); + Assert.assertNotNull(disjointIntersection); + Assert.assertFalse(disjointIntersection.hasNext()); + + } + + @Test + public void testClose() throws IOException + { + for (Strategy strategy : Strategy.values()) + testClose(strategy); + } + + private void testClose(Strategy strategy) throws IOException + { + RangeIterator tokens = RangeIntersectionIterator.builder(strategy) + .add(new LongIterator(new long[] { 1L, 2L, 3L })) + .build(); + + Assert.assertNotNull(tokens); + tokens.close(); + } + + @Test + public void testIsOverlapping() + { + RangeIterator rangeA, rangeB; + + rangeA = new LongIterator(new long[] { 1L, 5L }); + rangeB = new LongIterator(new long[] { 5L, 9L }); + Assert.assertTrue(RangeIterator.isOverlapping(rangeA, rangeB)); + + rangeA = new LongIterator(new long[] { 5L, 9L }); + rangeB = new LongIterator(new long[] { 1L, 6L }); + Assert.assertTrue(RangeIterator.isOverlapping(rangeA, rangeB)); + + rangeA = new LongIterator(new long[] { 5L, 9L }); + rangeB = new LongIterator(new long[] { 5L, 9L }); + Assert.assertTrue(RangeIterator.isOverlapping(rangeA, rangeB)); + + rangeA = new LongIterator(new long[] { 1L, 4L }); + rangeB = new LongIterator(new long[] { 5L, 9L }); + Assert.assertFalse(RangeIterator.isOverlapping(rangeA, rangeB)); + + rangeA = new LongIterator(new long[] { 6L, 9L }); + rangeB = new LongIterator(new long[] { 1L, 4L }); + Assert.assertFalse(RangeIterator.isOverlapping(rangeA, rangeB)); + } + + @Test + public void testIntersectionOfRandomRanges() + { + for (Strategy strategy : Strategy.values()) + testIntersectionOfRandomRanges(strategy); + } + + private void testIntersectionOfRandomRanges(Strategy strategy) + { + for (int attempt = 0; attempt < 16; attempt++) + { + final ThreadLocalRandom random = ThreadLocalRandom.current(); + final int maxRanges = random.nextInt(2, 16); + + // generate randomize ranges + long[][] ranges = new long[maxRanges][]; + for (int i = 0; i < ranges.length; i++) + { + int rangeSize = random.nextInt(16, 512); + LongSet range = new LongOpenHashSet(rangeSize); + + for (int j = 0; j < rangeSize; j++) + range.add(random.nextLong(0, 100)); + + ranges[i] = range.toArray(); + Arrays.sort(ranges[i]); + } + + List expected = new ArrayList<>(); + // determine unique tokens which intersect every range + for (long token : ranges[0]) + { + boolean intersectsAll = true; + for (int i = 1; i < ranges.length; i++) + { + if (Arrays.binarySearch(ranges[i], token) < 0) + { + intersectsAll = false; + break; + } + } + + if (intersectsAll) + expected.add(token); + } + + RangeIterator.Builder builder = RangeIntersectionIterator.builder(strategy); + for (long[] range : ranges) + builder.add(new LongIterator(range)); + + Assert.assertEquals(expected, convert(builder.build())); + } + } + + @Test + public void testIteratorPeeking() + { + RangeIterator.Builder builder = RangeIntersectionIterator.builder(); + + // iterator with only one element + builder.add(new LongIterator(new long[] { 10L })); + + // iterator with 150 elements (lookup is going to be advantageous over bound in this case) + long[] tokens = new long[150]; + for (int i = 0; i < tokens.length; i++) + tokens[i] = i; + + builder.add(new LongIterator(tokens)); + + RangeIterator intersection = builder.build(); + + Assert.assertNotNull(intersection); + Assert.assertEquals(LookupIntersectionIterator.class, intersection.getClass()); + + Assert.assertTrue(intersection.hasNext()); + Assert.assertEquals(convert(10L), convert(intersection)); + + builder = RangeIntersectionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L, 3L, 5L, 7L, 9L })); + builder.add(new LongIterator(new long[] { 1L, 2L, 5L, 6L })); + + intersection = builder.build(); + + // in the situation when there is a similar number of elements inside ranges + // ping-pong (bounce) intersection is preferred as it covers gaps quicker then linear scan + lookup. + Assert.assertNotNull(intersection); + Assert.assertEquals(BounceIntersectionIterator.class, intersection.getClass()); + + Assert.assertTrue(intersection.hasNext()); + Assert.assertEquals(convert(1L, 5L), convert(intersection)); + } +} diff --git a/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java b/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java new file mode 100644 index 0000000000..f69086bc64 --- /dev/null +++ b/test/unit/org/apache/cassandra/index/sasi/utils/RangeUnionIteratorTest.java @@ -0,0 +1,306 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.utils; + +import java.util.*; +import java.util.concurrent.ThreadLocalRandom; + +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.io.util.FileUtils; + +import org.junit.Assert; +import org.junit.Test; + +import static org.apache.cassandra.index.sasi.utils.LongIterator.convert; + +public class RangeUnionIteratorTest +{ + @Test + public void testNoOverlappingValues() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 2L, 3L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 1L, 7L })); + builder.add(new LongIterator(new long[] { 4L, 8L, 9L, 10L })); + + Assert.assertEquals(convert(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), convert(builder.build())); + } + + @Test + public void testSingleIterator() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L, 2L, 4L, 9L })); + + Assert.assertEquals(convert(1L, 2L, 4L, 9L), convert(builder.build())); + } + + @Test + public void testOverlappingValues() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L, 4L, 6L, 7L })); + builder.add(new LongIterator(new long[] { 2L, 3L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 4L, 6L, 8L, 9L, 10L })); + + List values = convert(builder.build()); + + Assert.assertEquals(values.toString(), convert(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), values); + } + + @Test + public void testNoOverlappingRanges() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L, 2L, 3L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 7L, 8L, 9L })); + + Assert.assertEquals(convert(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L), convert(builder.build())); + } + + @Test + public void testTwoIteratorsWithSingleValues() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L })); + builder.add(new LongIterator(new long[] { 1L })); + + Assert.assertEquals(convert(1L), convert(builder.build())); + } + + @Test + public void testDifferentSizeIterators() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 2L, 3L, 5L, 6L, 12L, 13L })); + builder.add(new LongIterator(new long[] { 1L, 7L, 14L, 15 })); + builder.add(new LongIterator(new long[] { 4L, 5L, 8L, 9L, 10L })); + + Assert.assertEquals(convert(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 12L, 13L, 14L, 15L), convert(builder.build())); + } + + @Test + public void testRandomSequences() + { + ThreadLocalRandom random = ThreadLocalRandom.current(); + + long[][] values = new long[random.nextInt(1, 20)][]; + int numTests = random.nextInt(10, 20); + + for (int tests = 0; tests < numTests; tests++) + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + int totalCount = 0; + + for (int i = 0; i < values.length; i++) + { + long[] part = new long[random.nextInt(1, 500)]; + for (int j = 0; j < part.length; j++) + part[j] = random.nextLong(); + + // all of the parts have to be sorted to mimic SSTable + Arrays.sort(part); + + values[i] = part; + builder.add(new LongIterator(part)); + totalCount += part.length; + } + + long[] totalOrdering = new long[totalCount]; + int index = 0; + + for (long[] part : values) + { + for (long value : part) + totalOrdering[index++] = value; + } + + Arrays.sort(totalOrdering); + + int count = 0; + RangeIterator tokens = builder.build(); + + Assert.assertNotNull(tokens); + while (tokens.hasNext()) + Assert.assertEquals(totalOrdering[count++], (long) tokens.next().get()); + + Assert.assertEquals(totalCount, count); + } + } + + @Test + public void testMinMaxAndCount() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[] { 1L, 2L, 3L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 7L, 8L, 9L })); + + Assert.assertEquals(9L, (long) builder.getMaximum()); + Assert.assertEquals(9L, builder.getTokenCount()); + + RangeIterator tokens = builder.build(); + + Assert.assertNotNull(tokens); + Assert.assertEquals(1L, (long) tokens.getMinimum()); + Assert.assertEquals(9L, (long) tokens.getMaximum()); + Assert.assertEquals(9L, tokens.getCount()); + + for (long i = 1; i < 10; i++) + { + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(i, (long) tokens.next().get()); + } + + Assert.assertFalse(tokens.hasNext()); + Assert.assertEquals(1L, (long) tokens.getMinimum()); + } + + @Test + public void testBuilder() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + Assert.assertNull(builder.getMinimum()); + Assert.assertNull(builder.getMaximum()); + Assert.assertEquals(0L, builder.getTokenCount()); + Assert.assertEquals(0L, builder.rangeCount()); + + builder.add(new LongIterator(new long[] { 1L, 2L, 3L })); + builder.add(new LongIterator(new long[] { 4L, 5L, 6L })); + builder.add(new LongIterator(new long[] { 7L, 8L, 9L })); + + Assert.assertEquals(1L, (long) builder.getMinimum()); + Assert.assertEquals(9L, (long) builder.getMaximum()); + Assert.assertEquals(9L, builder.getTokenCount()); + Assert.assertEquals(3L, builder.rangeCount()); + Assert.assertFalse(builder.statistics.isDisjoint()); + + Assert.assertEquals(1L, (long) builder.ranges.poll().getMinimum()); + Assert.assertEquals(4L, (long) builder.ranges.poll().getMinimum()); + Assert.assertEquals(7L, (long) builder.ranges.poll().getMinimum()); + + RangeIterator tokens = RangeUnionIterator.build(new ArrayList>() + {{ + add(new LongIterator(new long[]{1L, 2L, 4L})); + add(new LongIterator(new long[]{3L, 5L, 6L})); + }}); + + Assert.assertEquals(convert(1L, 2L, 3L, 4L, 5L, 6L), convert(tokens)); + + FileUtils.closeQuietly(tokens); + + RangeIterator emptyTokens = RangeUnionIterator.builder().build(); + Assert.assertNull(emptyTokens); + + builder = RangeUnionIterator.builder(); + Assert.assertEquals(0L, builder.add((RangeIterator) null).rangeCount()); + Assert.assertEquals(0L, builder.add((List>) null).getTokenCount()); + Assert.assertEquals(0L, builder.add(new LongIterator(new long[] {})).rangeCount()); + + RangeIterator single = new LongIterator(new long[] { 1L, 2L, 3L }); + RangeIterator range = RangeIntersectionIterator.builder().add(single).build(); + + // because build should return first element if it's only one instead of building yet another iterator + Assert.assertEquals(range, single); + } + + @Test + public void testSkipTo() + { + RangeUnionIterator.Builder builder = RangeUnionIterator.builder(); + + builder.add(new LongIterator(new long[]{1L, 2L, 3L})); + builder.add(new LongIterator(new long[]{4L, 5L, 6L})); + builder.add(new LongIterator(new long[]{7L, 8L, 9L})); + + RangeIterator tokens = builder.build(); + Assert.assertNotNull(tokens); + + tokens.skipTo(5L); + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(5L, (long) tokens.next().get()); + + tokens.skipTo(7L); + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(7L, (long) tokens.next().get()); + + tokens.skipTo(10L); + Assert.assertFalse(tokens.hasNext()); + Assert.assertEquals(1L, (long) tokens.getMinimum()); + Assert.assertEquals(9L, (long) tokens.getMaximum()); + } + + @Test + public void testMergingMultipleIterators() + { + RangeUnionIterator.Builder builderA = RangeUnionIterator.builder(); + + builderA.add(new LongIterator(new long[] { 1L, 3L, 5L })); + builderA.add(new LongIterator(new long[] { 8L, 10L, 12L })); + + RangeUnionIterator.Builder builderB = RangeUnionIterator.builder(); + + builderB.add(new LongIterator(new long[] { 7L, 9L, 11L })); + builderB.add(new LongIterator(new long[] { 2L, 4L, 6L })); + + RangeIterator union = RangeUnionIterator.build(Arrays.asList(builderA.build(), builderB.build())); + Assert.assertEquals(convert(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), convert(union)); + } + + @Test + public void testRangeIterator() + { + LongIterator tokens = new LongIterator(new long[] { 0L, 1L, 2L, 3L }); + + Assert.assertEquals(0L, (long) tokens.getMinimum()); + Assert.assertEquals(3L, (long) tokens.getMaximum()); + + for (int i = 0; i <= 3; i++) + { + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(i, (long) tokens.getCurrent()); + Assert.assertEquals(i, (long) tokens.next().get()); + } + + tokens = new LongIterator(new long[] { 0L, 1L, 3L, 5L }); + + Assert.assertEquals(3L, (long) tokens.skipTo(2L).get()); + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(3L, (long) tokens.getCurrent()); + Assert.assertEquals(3L, (long) tokens.next().get()); + + Assert.assertEquals(5L, (long) tokens.skipTo(5L).get()); + Assert.assertTrue(tokens.hasNext()); + Assert.assertEquals(5L, (long) tokens.getCurrent()); + Assert.assertEquals(5L, (long) tokens.next().get()); + + LongIterator empty = new LongIterator(new long[0]); + + Assert.assertNull(empty.skipTo(3L)); + Assert.assertFalse(empty.hasNext()); + } +} \ No newline at end of file diff --git a/test/unit/org/apache/cassandra/io/sstable/format/SSTableFlushObserverTest.java b/test/unit/org/apache/cassandra/io/sstable/format/SSTableFlushObserverTest.java index 29ad387aeb..9cac0072cf 100644 --- a/test/unit/org/apache/cassandra/io/sstable/format/SSTableFlushObserverTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/format/SSTableFlushObserverTest.java @@ -190,9 +190,10 @@ public class SSTableFlushObserverTest } @Override - public void nextCell(ColumnData cell) + public void nextUnfilteredCluster(Unfiltered row) { - rows.put(currentKey, (Cell) cell); + if (row.isRow()) + ((Row) row).forEach((c) -> rows.put(currentKey, (Cell) c)); } @Override

    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 D#M7V@ literal 0 HcmV?d00001 diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 116d92e399..2a2719ab63 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -1964,5 +1964,10 @@ public class DatabaseDescriptor public static void setEncryptionContext(EncryptionContext ec) { encryptionContext = ec; - } + } + + public static int searchConcurrencyFactor() + { + return Integer.valueOf(System.getProperty("cassandra.search_concurrency_factor", "1")); + } } diff --git a/src/java/org/apache/cassandra/db/ColumnIndex.java b/src/java/org/apache/cassandra/db/ColumnIndex.java index 749c155e8b..930fc052a4 100644 --- a/src/java/org/apache/cassandra/db/ColumnIndex.java +++ b/src/java/org/apache/cassandra/db/ColumnIndex.java @@ -152,9 +152,9 @@ public class ColumnIndex UnfilteredSerializer.serializer.serialize(unfiltered, header, writer, pos - previousRowStart, version); - // notify observers about each new cell added to the row - if (!observers.isEmpty() && unfiltered.isRow()) - ((Row) unfiltered).stream().forEach(cell -> observers.forEach((o) -> o.nextCell(cell))); + // notify observers about each new row + if (!observers.isEmpty()) + observers.forEach((o) -> o.nextUnfilteredCluster(unfiltered)); lastClustering = unfiltered.clustering(); previousRowStart = pos; diff --git a/src/java/org/apache/cassandra/db/filter/RowFilter.java b/src/java/org/apache/cassandra/db/filter/RowFilter.java index 4cd2f6468f..c234fc9f2d 100644 --- a/src/java/org/apache/cassandra/db/filter/RowFilter.java +++ b/src/java/org/apache/cassandra/db/filter/RowFilter.java @@ -171,6 +171,11 @@ public abstract class RowFilter implements Iterable return withNewExpressions(newExpressions); } + public RowFilter withoutExpressions() + { + return withNewExpressions(Collections.emptyList()); + } + protected abstract RowFilter withNewExpressions(List expressions); public boolean isEmpty() @@ -312,7 +317,7 @@ public abstract class RowFilter implements Iterable // Note: the order of this enum matter, it's used for serialization protected enum Kind { SIMPLE, MAP_EQUALITY, THRIFT_DYN_EXPR, CUSTOM } - abstract Kind kind(); + protected abstract Kind kind(); protected final ColumnDefinition column; protected final Operator operator; protected final ByteBuffer value; @@ -689,7 +694,7 @@ public abstract class RowFilter implements Iterable } @Override - Kind kind() + protected Kind kind() { return Kind.SIMPLE; } @@ -782,7 +787,7 @@ public abstract class RowFilter implements Iterable } @Override - Kind kind() + protected Kind kind() { return Kind.MAP_EQUALITY; } @@ -833,7 +838,7 @@ public abstract class RowFilter implements Iterable } @Override - Kind kind() + protected Kind kind() { return Kind.THRIFT_DYN_EXPR; } @@ -883,7 +888,7 @@ public abstract class RowFilter implements Iterable .customExpressionValueType()); } - Kind kind() + protected Kind kind() { return Kind.CUSTOM; } diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java index 7349167a42..e4a03deca0 100644 --- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java +++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java @@ -665,6 +665,11 @@ public class SecondaryIndexManager implements IndexRegistry return selected; } + public Optional getBestIndexFor(RowFilter.Expression expression) + { + return indexes.values().stream().filter((i) -> i.supportsExpression(expression.column(), expression.operator())).findFirst(); + } + /** * Called at write time to ensure that values present in the update * are valid according to the rules of all registered indexes which @@ -1040,6 +1045,12 @@ public class SecondaryIndexManager implements IndexRegistry private static void executeAllBlocking(Stream indexers, Function> function) { + if (function == null) + { + logger.error("failed to flush indexes: {} because flush task is missing.", indexers); + return; + } + List> waitFor = new ArrayList<>(); indexers.forEach(indexer -> { Callable task = function.apply(indexer); diff --git a/src/java/org/apache/cassandra/index/sasi/SASIIndex.java b/src/java/org/apache/cassandra/index/sasi/SASIIndex.java new file mode 100644 index 0000000000..d69b4403ba --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/SASIIndex.java @@ -0,0 +1,288 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi; + +import java.util.*; +import java.util.concurrent.Callable; +import java.util.function.BiFunction; + +import com.googlecode.concurrenttrees.common.Iterables; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.config.Schema; +import org.apache.cassandra.cql3.Operator; +import org.apache.cassandra.db.*; +import org.apache.cassandra.db.compaction.OperationType; +import org.apache.cassandra.db.filter.RowFilter; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.partitions.PartitionIterator; +import org.apache.cassandra.db.partitions.PartitionUpdate; +import org.apache.cassandra.db.rows.Row; +import org.apache.cassandra.exceptions.InvalidRequestException; +import org.apache.cassandra.index.Index; +import org.apache.cassandra.index.IndexRegistry; +import org.apache.cassandra.index.SecondaryIndexBuilder; +import org.apache.cassandra.index.internal.CassandraIndex; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter; +import org.apache.cassandra.index.sasi.plan.QueryPlan; +import org.apache.cassandra.index.transactions.IndexTransaction; +import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.format.SSTableFlushObserver; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.notifications.*; +import org.apache.cassandra.schema.IndexMetadata; +import org.apache.cassandra.utils.FBUtilities; +import org.apache.cassandra.utils.concurrent.OpOrder; + +public class SASIIndex implements Index, INotificationConsumer +{ + private static class SASIIndexBuildingSupport implements IndexBuildingSupport + { + public SecondaryIndexBuilder getIndexBuildTask(ColumnFamilyStore cfs, + Set indexes, + Collection sstablesToRebuild) + { + NavigableMap> sstables = new TreeMap<>((a, b) -> { + return Integer.compare(a.descriptor.generation, b.descriptor.generation); + }); + + indexes.stream() + .filter((i) -> i instanceof SASIIndex) + .forEach((i) -> { + SASIIndex sasi = (SASIIndex) i; + sstablesToRebuild.stream() + .filter((sstable) -> !sasi.index.hasSSTable(sstable)) + .forEach((sstable) -> { + Map toBuild = sstables.get(sstable); + if (toBuild == null) + sstables.put(sstable, (toBuild = new HashMap<>())); + + toBuild.put(sasi.index.getDefinition(), sasi.index); + }); + }); + + return new SASIIndexBuilder(cfs, sstables); + } + } + + private static final SASIIndexBuildingSupport INDEX_BUILDER_SUPPORT = new SASIIndexBuildingSupport(); + + private final ColumnFamilyStore baseCfs; + private final IndexMetadata config; + private final ColumnIndex index; + + public SASIIndex(ColumnFamilyStore baseCfs, IndexMetadata config) + { + this.baseCfs = baseCfs; + this.config = config; + + ColumnDefinition column = CassandraIndex.parseTarget(baseCfs.metadata, config).left; + this.index = new ColumnIndex(baseCfs.metadata.getKeyValidator(), column, config); + + baseCfs.getTracker().subscribe(this); + } + + public static Map validateOptions(Map options) + { + return Collections.emptyMap(); + } + + public void register(IndexRegistry registry) + { + registry.registerIndex(this); + } + + public IndexMetadata getIndexMetadata() + { + return config; + } + + public Callable getInitializationTask() + { + return null; + } + + public Callable getMetadataReloadTask(IndexMetadata indexMetadata) + { + return null; + } + + public Callable getBlockingFlushTask() + { + return null; // SASI indexes are flushed along side memtable + } + + public Callable getInvalidateTask() + { + return getTruncateTask(FBUtilities.timestampMicros()); + } + + public Callable getTruncateTask(long truncatedAt) + { + return () -> { + index.dropData(truncatedAt); + return null; + }; + } + + public boolean shouldBuildBlocking() + { + return true; + } + + public Optional getBackingTable() + { + return Optional.empty(); + } + + public boolean indexes(PartitionColumns columns) + { + return columns.contains(index.getDefinition()); + } + + public boolean dependsOn(ColumnDefinition column) + { + return index.getDefinition().compareTo(column) == 0; + } + + public boolean supportsExpression(ColumnDefinition column, Operator operator) + { + return dependsOn(column); + } + + public AbstractType customExpressionValueType() + { + return null; + } + + public RowFilter getPostIndexQueryFilter(RowFilter filter) + { + return filter.withoutExpressions(); + } + + public long getEstimatedResultRows() + { + // this is temporary (until proper QueryPlan is integrated into Cassandra) + // and allows us to priority SASI indexes if any in the query since they + // are going to be more efficient, to query and intersect, than built-in indexes. + return Long.MIN_VALUE; + } + + public void validate(PartitionUpdate update) throws InvalidRequestException + {} + + public Indexer indexerFor(DecoratedKey key, PartitionColumns columns, int nowInSec, OpOrder.Group opGroup, IndexTransaction.Type transactionType) + { + return new Indexer() + { + public void begin() + {} + + public void partitionDelete(DeletionTime deletionTime) + {} + + public void rangeTombstone(RangeTombstone tombstone) + {} + + public void insertRow(Row row) + { + if (isNewData()) + adjustMemtableSize(index.index(key, row), opGroup); + } + + public void updateRow(Row oldRow, Row newRow) + { + insertRow(newRow); + } + + public void removeRow(Row row) + {} + + public void finish() + {} + + // we are only interested in the data from Memtable + // everything else is going to be handled by SSTableWriter observers + private boolean isNewData() + { + return transactionType == IndexTransaction.Type.UPDATE; + } + + public void adjustMemtableSize(long additionalSpace, OpOrder.Group opGroup) + { + baseCfs.getTracker().getView().getCurrentMemtable().getAllocator().onHeap().allocate(additionalSpace, opGroup); + } + }; + } + + public Searcher searcherFor(ReadCommand command) throws InvalidRequestException + { + CFMetaData config = command.metadata(); + ColumnFamilyStore cfs = Schema.instance.getColumnFamilyStoreInstance(config.cfId); + return controller -> new QueryPlan(cfs, command, DatabaseDescriptor.getRangeRpcTimeout()).execute(controller); + } + + public SSTableFlushObserver getFlushObserver(Descriptor descriptor, OperationType opType) + { + return newWriter(baseCfs.metadata.getKeyValidator(), descriptor, Collections.singletonMap(index.getDefinition(), index), opType); + } + + public BiFunction postProcessorFor(ReadCommand command) + { + return (partitionIterator, readCommand) -> partitionIterator; + } + + public IndexBuildingSupport getBuildTaskSupport() + { + return INDEX_BUILDER_SUPPORT; + } + + public void handleNotification(INotification notification, Object sender) + { + // unfortunately, we can only check the type of notification via instanceof :( + if (notification instanceof SSTableAddedNotification) + { + SSTableAddedNotification notice = (SSTableAddedNotification) notification; + index.update(Collections.emptyList(), Iterables.toList(notice.added)); + } + else if (notification instanceof SSTableListChangedNotification) + { + SSTableListChangedNotification notice = (SSTableListChangedNotification) notification; + index.update(notice.removed, notice.added); + } + else if (notification instanceof MemtableRenewedNotification) + { + index.switchMemtable(); + } + } + + public ColumnIndex getIndex() + { + return index; + } + + protected static PerSSTableIndexWriter newWriter(AbstractType keyValidator, + Descriptor descriptor, + Map indexes, + OperationType opType) + { + return new PerSSTableIndexWriter(keyValidator, descriptor, opType, indexes); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/SASIIndexBuilder.java b/src/java/org/apache/cassandra/index/sasi/SASIIndexBuilder.java new file mode 100644 index 0000000000..fc5b675ab8 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/SASIIndexBuilder.java @@ -0,0 +1,128 @@ +package org.apache.cassandra.index.sasi; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.ColumnFamilyStore; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.RowIndexEntry; +import org.apache.cassandra.db.compaction.CompactionInfo; +import org.apache.cassandra.db.compaction.CompactionInterruptedException; +import org.apache.cassandra.db.compaction.OperationType; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.index.SecondaryIndexBuilder; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.PerSSTableIndexWriter; +import org.apache.cassandra.io.FSReadError; +import org.apache.cassandra.io.sstable.KeyIterator; +import org.apache.cassandra.io.sstable.SSTable; +import org.apache.cassandra.io.sstable.SSTableIdentityIterator; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.io.util.RandomAccessReader; +import org.apache.cassandra.utils.ByteBufferUtil; +import org.apache.cassandra.utils.UUIDGen; + +class SASIIndexBuilder extends SecondaryIndexBuilder +{ + private final ColumnFamilyStore cfs; + private final UUID compactionId = UUIDGen.getTimeUUID(); + + private final SortedMap> sstables; + + private long bytesProcessed = 0; + private final long totalSizeInBytes; + + public SASIIndexBuilder(ColumnFamilyStore cfs, SortedMap> sstables) + { + long totalIndexBytes = 0; + for (SSTableReader sstable : sstables.keySet()) + totalIndexBytes += getPrimaryIndexLength(sstable); + + this.cfs = cfs; + this.sstables = sstables; + this.totalSizeInBytes = totalIndexBytes; + } + + public void build() + { + AbstractType keyValidator = cfs.metadata.getKeyValidator(); + for (Map.Entry> e : sstables.entrySet()) + { + SSTableReader sstable = e.getKey(); + Map indexes = e.getValue(); + + try (RandomAccessReader dataFile = sstable.openDataReader()) + { + PerSSTableIndexWriter indexWriter = SASIIndex.newWriter(keyValidator, sstable.descriptor, indexes, OperationType.COMPACTION); + + long previousKeyPosition = 0; + try (KeyIterator keys = new KeyIterator(sstable.descriptor, cfs.metadata)) + { + while (keys.hasNext()) + { + if (isStopRequested()) + throw new CompactionInterruptedException(getCompactionInfo()); + + final DecoratedKey key = keys.next(); + final long keyPosition = keys.getKeyPosition(); + + indexWriter.startPartition(key, keyPosition); + + try + { + RowIndexEntry indexEntry = sstable.getPosition(key, SSTableReader.Operator.EQ); + dataFile.seek(indexEntry.position + indexEntry.headerOffset()); + ByteBufferUtil.readWithShortLength(dataFile); // key + + try (SSTableIdentityIterator partition = new SSTableIdentityIterator(sstable, dataFile, key)) + { + while (partition.hasNext()) + indexWriter.nextUnfilteredCluster(partition.next()); + } + } + catch (IOException ex) + { + throw new FSReadError(ex, sstable.getFilename()); + } + + bytesProcessed += keyPosition - previousKeyPosition; + previousKeyPosition = keyPosition; + } + + completeSSTable(indexWriter, sstable, indexes.values()); + } + } + } + } + + public CompactionInfo getCompactionInfo() + { + return new CompactionInfo(cfs.metadata, + OperationType.INDEX_BUILD, + bytesProcessed, + totalSizeInBytes, + compactionId); + } + + private long getPrimaryIndexLength(SSTable sstable) + { + File primaryIndex = new File(sstable.getIndexFilename()); + return primaryIndex.exists() ? primaryIndex.length() : 0; + } + + private void completeSSTable(PerSSTableIndexWriter indexWriter, SSTableReader sstable, Collection indexes) + { + indexWriter.complete(); + + for (ColumnIndex index : indexes) + { + File tmpIndex = new File(sstable.descriptor.filenameFor(index.getComponent())); + if (!tmpIndex.exists()) // no data was inserted into the index for given sstable + continue; + + index.update(Collections.emptyList(), Collections.singletonList(sstable)); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/SSTableIndex.java b/src/java/org/apache/cassandra/index/sasi/SSTableIndex.java new file mode 100644 index 0000000000..7b6523247e --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/SSTableIndex.java @@ -0,0 +1,187 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi; + +import java.io.File; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.index.sasi.conf.ColumnIndex; +import org.apache.cassandra.index.sasi.disk.OnDiskIndex; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.io.FSReadError; +import org.apache.cassandra.io.sstable.format.SSTableReader; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.utils.concurrent.Ref; + +import org.apache.commons.lang3.builder.HashCodeBuilder; + +import com.google.common.base.Function; + +public class SSTableIndex +{ + private final ColumnIndex columnIndex; + private final Ref sstableRef; + private final SSTableReader sstable; + private final OnDiskIndex index; + private final AtomicInteger references = new AtomicInteger(1); + private final AtomicBoolean obsolete = new AtomicBoolean(false); + + public SSTableIndex(ColumnIndex index, File indexFile, SSTableReader referent) + { + this.columnIndex = index; + this.sstableRef = referent.tryRef(); + this.sstable = sstableRef.get(); + + if (sstable == null) + throw new IllegalStateException("Couldn't acquire reference to the sstable: " + referent); + + AbstractType validator = columnIndex.getValidator(); + + assert validator != null; + assert indexFile.exists() : String.format("SSTable %s should have index %s.", + sstable.getFilename(), + columnIndex.getIndexName()); + + this.index = new OnDiskIndex(indexFile, validator, new DecoratedKeyFetcher(sstable)); + } + + public ByteBuffer minTerm() + { + return index.minTerm(); + } + + public ByteBuffer maxTerm() + { + return index.maxTerm(); + } + + public ByteBuffer minKey() + { + return index.minKey(); + } + + public ByteBuffer maxKey() + { + return index.maxKey(); + } + + public RangeIterator search(Expression expression) + { + return index.search(expression); + } + + public SSTableReader getSSTable() + { + return sstable; + } + + public String getPath() + { + return index.getIndexPath(); + } + + public boolean reference() + { + while (true) + { + int n = references.get(); + if (n <= 0) + return false; + if (references.compareAndSet(n, n + 1)) + return true; + } + } + + public void release() + { + int n = references.decrementAndGet(); + if (n == 0) + { + FileUtils.closeQuietly(index); + sstableRef.release(); + if (obsolete.get() || sstableRef.globalCount() == 0) + FileUtils.delete(index.getIndexPath()); + } + } + + public void markObsolete() + { + obsolete.getAndSet(true); + release(); + } + + public boolean isObsolete() + { + return obsolete.get(); + } + + public boolean equals(Object o) + { + return o instanceof SSTableIndex && index.getIndexPath().equals(((SSTableIndex) o).index.getIndexPath()); + } + + public int hashCode() + { + return new HashCodeBuilder().append(index.getIndexPath()).build(); + } + + public String toString() + { + return String.format("SSTableIndex(column: %s, SSTable: %s)", columnIndex.getColumnName(), sstable.descriptor); + } + + private static class DecoratedKeyFetcher implements Function + { + private final SSTableReader sstable; + + DecoratedKeyFetcher(SSTableReader reader) + { + sstable = reader; + } + + public DecoratedKey apply(Long offset) + { + try + { + return sstable.keyAt(offset); + } + catch (IOException e) + { + throw new FSReadError(new IOException("Failed to read key from " + sstable.descriptor, e), sstable.getFilename()); + } + } + + public int hashCode() + { + return sstable.descriptor.hashCode(); + } + + public boolean equals(Object other) + { + return other instanceof DecoratedKeyFetcher + && sstable.descriptor.equals(((DecoratedKeyFetcher) other).sstable.descriptor); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/Term.java b/src/java/org/apache/cassandra/index/sasi/Term.java new file mode 100644 index 0000000000..8e8ceb22fa --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/Term.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi; + +import java.nio.ByteBuffer; + +import org.apache.cassandra.index.sasi.disk.OnDiskIndexBuilder.TermSize; +import org.apache.cassandra.index.sasi.utils.MappedBuffer; +import org.apache.cassandra.db.marshal.AbstractType; + +public class Term +{ + protected final MappedBuffer content; + protected final TermSize termSize; + + + public Term(MappedBuffer content, TermSize size) + { + this.content = content; + this.termSize = size; + } + + public ByteBuffer getTerm() + { + long offset = termSize.isConstant() ? content.position() : content.position() + 2; + int length = termSize.isConstant() ? termSize.size : content.getShort(content.position()); + + return content.getPageRegion(offset, length); + } + + public long getDataOffset() + { + long position = content.position(); + return position + (termSize.isConstant() ? termSize.size : 2 + content.getShort(position)); + } + + public int compareTo(AbstractType comparator, ByteBuffer query) + { + return compareTo(comparator, query, true); + } + + public int compareTo(AbstractType comparator, ByteBuffer query, boolean checkFully) + { + long position = content.position(); + int padding = termSize.isConstant() ? 0 : 2; + int len = termSize.isConstant() ? termSize.size : content.getShort(position); + + return content.comparePageTo(position + padding, checkFully ? len : Math.min(len, query.remaining()), comparator, query); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/TermIterator.java b/src/java/org/apache/cassandra/index/sasi/TermIterator.java new file mode 100644 index 0000000000..cfa87c092a --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/TermIterator.java @@ -0,0 +1,208 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; + +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.index.sasi.disk.Token; +import org.apache.cassandra.index.sasi.plan.Expression; +import org.apache.cassandra.index.sasi.utils.RangeUnionIterator; +import org.apache.cassandra.index.sasi.utils.RangeIterator; +import org.apache.cassandra.io.util.FileUtils; + +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.Uninterruptibles; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TermIterator extends RangeIterator +{ + private static final Logger logger = LoggerFactory.getLogger(TermIterator.class); + + private static final ThreadLocal SEARCH_EXECUTOR = new ThreadLocal() + { + public ExecutorService initialValue() + { + final String currentThread = Thread.currentThread().getName(); + final int concurrencyFactor = DatabaseDescriptor.searchConcurrencyFactor(); + + logger.info("Search Concurrency Factor is set to {} for {}", concurrencyFactor, currentThread); + + return (concurrencyFactor <= 1) + ? MoreExecutors.newDirectExecutorService() + : Executors.newFixedThreadPool(concurrencyFactor, new ThreadFactory() + { + public final AtomicInteger count = new AtomicInteger(); + + public Thread newThread(Runnable task) + { + return new Thread(task, currentThread + "-SEARCH-" + count.incrementAndGet()) {{ setDaemon(true); }}; + } + }); + } + }; + + private final Expression expression; + + private final RangeIterator union; + private final Set referencedIndexes; + + private TermIterator(Expression e, + RangeIterator union, + Set referencedIndexes) + { + super(union.getMinimum(), union.getMaximum(), union.getCount()); + + this.expression = e; + this.union = union; + this.referencedIndexes = referencedIndexes; + } + + public static TermIterator build(final Expression e, Set perSSTableIndexes) + { + final List> tokens = new CopyOnWriteArrayList<>(); + final AtomicLong tokenCount = new AtomicLong(0); + + RangeIterator memtableIterator = e.index.searchMemtable(e); + if (memtableIterator != null) + { + tokens.add(memtableIterator); + tokenCount.addAndGet(memtableIterator.getCount()); + } + + final Set referencedIndexes = new CopyOnWriteArraySet<>(); + + try + { + final CountDownLatch latch = new CountDownLatch(perSSTableIndexes.size()); + final ExecutorService searchExecutor = SEARCH_EXECUTOR.get(); + + for (final SSTableIndex index : perSSTableIndexes) + { + if (!index.reference()) + { + latch.countDown(); + continue; + } + + // add to referenced right after the reference was acquired, + // that helps to release index if something goes bad inside of the search + referencedIndexes.add(index); + + searchExecutor.submit((Runnable) () -> { + try + { + e.checkpoint(); + + RangeIterator keyIterator = index.search(e); + if (keyIterator == null) + { + releaseIndex(referencedIndexes, index); + return; + } + + tokens.add(keyIterator); + tokenCount.getAndAdd(keyIterator.getCount()); + } + catch (Throwable e1) + { + releaseIndex(referencedIndexes, index); + + if (logger.isDebugEnabled()) + logger.debug(String.format("Failed search an index %s, skipping.", index.getPath()), e1); + } + finally + { + latch.countDown(); + } + }); + } + + Uninterruptibles.awaitUninterruptibly(latch); + + // checkpoint right away after all indexes complete search because we might have crossed the quota + e.checkpoint(); + + RangeIterator ranges = RangeUnionIterator.build(tokens); + return ranges == null ? null : new TermIterator(e, ranges, referencedIndexes); + } + catch (Throwable ex) + { + // if execution quota was exceeded while opening indexes or something else happened + // local (yet to be tracked) indexes should be released first before re-throwing exception + referencedIndexes.forEach(TermIterator::releaseQuietly); + + throw ex; + } + } + + protected Token computeNext() + { + try + { + return union.hasNext() ? union.next() : endOfData(); + } + finally + { + expression.checkpoint(); + } + } + + protected void performSkipTo(Long nextToken) + { + try + { + union.skipTo(nextToken); + } + finally + { + expression.checkpoint(); + } + } + + public void close() + { + FileUtils.closeQuietly(union); + referencedIndexes.forEach(TermIterator::releaseQuietly); + referencedIndexes.clear(); + } + + private static void releaseIndex(Set indexes, SSTableIndex index) + { + indexes.remove(index); + releaseQuietly(index); + } + + private static void releaseQuietly(SSTableIndex index) + { + try + { + index.release(); + } + catch (Throwable e) + { + logger.error(String.format("Failed to release index %s", index.getPath()), e); + } + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/AbstractAnalyzer.java b/src/java/org/apache/cassandra/index/sasi/analyzer/AbstractAnalyzer.java new file mode 100644 index 0000000000..b3fdd8cd0a --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/AbstractAnalyzer.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.nio.ByteBuffer; +import java.text.Normalizer; +import java.util.Iterator; +import java.util.Map; + +import org.apache.cassandra.db.marshal.AbstractType; + +public abstract class AbstractAnalyzer implements Iterator +{ + protected ByteBuffer next = null; + + public ByteBuffer next() + { + return next; + } + + public void remove() + { + throw new UnsupportedOperationException(); + } + + public abstract void init(Map options, AbstractType validator); + + public abstract void reset(ByteBuffer input); + + public static String normalize(String original) + { + return Normalizer.isNormalized(original, Normalizer.Form.NFC) + ? original + : Normalizer.normalize(original, Normalizer.Form.NFC); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/NoOpAnalyzer.java b/src/java/org/apache/cassandra/index/sasi/analyzer/NoOpAnalyzer.java new file mode 100644 index 0000000000..9939a135c0 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/NoOpAnalyzer.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.nio.ByteBuffer; +import java.util.Map; + +import org.apache.cassandra.db.marshal.AbstractType; + +/** + * Default noOp tokenizer. The iterator will iterate only once + * returning the unmodified input + */ +public class NoOpAnalyzer extends AbstractAnalyzer +{ + private ByteBuffer input; + private boolean hasNext = false; + + public void init(Map options, AbstractType validator) + {} + + public boolean hasNext() + { + if (hasNext) + { + this.next = input; + this.hasNext = false; + return true; + } + return false; + } + + public void reset(ByteBuffer input) + { + this.next = null; + this.input = input; + this.hasNext = true; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzer.java b/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzer.java new file mode 100644 index 0000000000..676b304311 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingAnalyzer.java @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.nio.ByteBuffer; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.apache.cassandra.index.sasi.analyzer.filter.BasicResultFilters; +import org.apache.cassandra.index.sasi.analyzer.filter.FilterPipelineBuilder; +import org.apache.cassandra.index.sasi.analyzer.filter.FilterPipelineExecutor; +import org.apache.cassandra.index.sasi.analyzer.filter.FilterPipelineTask; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.AsciiType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.serializers.MarshalException; +import org.apache.cassandra.utils.ByteBufferUtil; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Analyzer that does *not* tokenize the input. Optionally will + * apply filters for the input output as defined in analyzers options + */ +public class NonTokenizingAnalyzer extends AbstractAnalyzer +{ + private static final Logger logger = LoggerFactory.getLogger(NonTokenizingAnalyzer.class); + + private static final Set> VALID_ANALYZABLE_TYPES = new HashSet>() + {{ + add(UTF8Type.instance); + add(AsciiType.instance); + }}; + + private AbstractType validator; + private NonTokenizingOptions options; + private FilterPipelineTask filterPipeline; + + private ByteBuffer input; + private boolean hasNext = false; + + public void init(Map options, AbstractType validator) + { + init(NonTokenizingOptions.buildFromMap(options), validator); + } + + public void init(NonTokenizingOptions tokenizerOptions, AbstractType validator) + { + this.validator = validator; + this.options = tokenizerOptions; + this.filterPipeline = getFilterPipeline(); + } + + public boolean hasNext() + { + // check that we know how to handle the input, otherwise bail + if (!VALID_ANALYZABLE_TYPES.contains(validator)) + return false; + + if (hasNext) + { + String inputStr; + + try + { + inputStr = validator.getString(input); + if (inputStr == null) + throw new MarshalException(String.format("'null' deserialized value for %s with %s", ByteBufferUtil.bytesToHex(input), validator)); + + Object pipelineRes = FilterPipelineExecutor.execute(filterPipeline, inputStr); + if (pipelineRes == null) + return false; + + next = validator.fromString(normalize((String) pipelineRes)); + return true; + } + catch (MarshalException e) + { + logger.error("Failed to deserialize value with " + validator, e); + return false; + } + finally + { + hasNext = false; + } + } + + return false; + } + + public void reset(ByteBuffer input) + { + this.next = null; + this.input = input; + this.hasNext = true; + } + + private FilterPipelineTask getFilterPipeline() + { + FilterPipelineBuilder builder = new FilterPipelineBuilder(new BasicResultFilters.NoOperation()); + if (options.isCaseSensitive() && options.shouldLowerCaseOutput()) + builder = builder.add("to_lower", new BasicResultFilters.LowerCase()); + if (options.isCaseSensitive() && options.shouldUpperCaseOutput()) + builder = builder.add("to_upper", new BasicResultFilters.UpperCase()); + if (!options.isCaseSensitive()) + builder = builder.add("to_lower", new BasicResultFilters.LowerCase()); + return builder.build(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingOptions.java b/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingOptions.java new file mode 100644 index 0000000000..303087bf0c --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/NonTokenizingOptions.java @@ -0,0 +1,147 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.util.Map; + +public class NonTokenizingOptions +{ + public static final String NORMALIZE_LOWERCASE = "normalize_lowercase"; + public static final String NORMALIZE_UPPERCASE = "normalize_uppercase"; + public static final String CASE_SENSITIVE = "case_sensitive"; + + private boolean caseSensitive; + private boolean upperCaseOutput; + private boolean lowerCaseOutput; + + public boolean isCaseSensitive() + { + return caseSensitive; + } + + public void setCaseSensitive(boolean caseSensitive) + { + this.caseSensitive = caseSensitive; + } + + public boolean shouldUpperCaseOutput() + { + return upperCaseOutput; + } + + public void setUpperCaseOutput(boolean upperCaseOutput) + { + this.upperCaseOutput = upperCaseOutput; + } + + public boolean shouldLowerCaseOutput() + { + return lowerCaseOutput; + } + + public void setLowerCaseOutput(boolean lowerCaseOutput) + { + this.lowerCaseOutput = lowerCaseOutput; + } + + public static class OptionsBuilder + { + private boolean caseSensitive = true; + private boolean upperCaseOutput = false; + private boolean lowerCaseOutput = false; + + public OptionsBuilder() + { + } + + public OptionsBuilder caseSensitive(boolean caseSensitive) + { + this.caseSensitive = caseSensitive; + return this; + } + + public OptionsBuilder upperCaseOutput(boolean upperCaseOutput) + { + this.upperCaseOutput = upperCaseOutput; + return this; + } + + public OptionsBuilder lowerCaseOutput(boolean lowerCaseOutput) + { + this.lowerCaseOutput = lowerCaseOutput; + return this; + } + + public NonTokenizingOptions build() + { + if (lowerCaseOutput && upperCaseOutput) + throw new IllegalArgumentException("Options to normalize terms cannot be " + + "both uppercase and lowercase at the same time"); + + NonTokenizingOptions options = new NonTokenizingOptions(); + options.setCaseSensitive(caseSensitive); + options.setUpperCaseOutput(upperCaseOutput); + options.setLowerCaseOutput(lowerCaseOutput); + return options; + } + } + + public static NonTokenizingOptions buildFromMap(Map optionsMap) + { + OptionsBuilder optionsBuilder = new OptionsBuilder(); + + if (optionsMap.containsKey(CASE_SENSITIVE) && (optionsMap.containsKey(NORMALIZE_LOWERCASE) + || optionsMap.containsKey(NORMALIZE_UPPERCASE))) + throw new IllegalArgumentException("case_sensitive option cannot be specified together " + + "with either normalize_lowercase or normalize_uppercase"); + + for (Map.Entry entry : optionsMap.entrySet()) + { + switch (entry.getKey()) + { + case NORMALIZE_LOWERCASE: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.lowerCaseOutput(bool); + break; + } + case NORMALIZE_UPPERCASE: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.upperCaseOutput(bool); + break; + } + case CASE_SENSITIVE: + { + boolean bool = Boolean.parseBoolean(entry.getValue()); + optionsBuilder = optionsBuilder.caseSensitive(bool); + break; + } + } + } + return optionsBuilder.build(); + } + + public static NonTokenizingOptions getDefaultOptions() + { + return new OptionsBuilder() + .caseSensitive(true).lowerCaseOutput(false) + .upperCaseOutput(false) + .build(); + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/SUPPLEMENTARY.jflex-macro b/src/java/org/apache/cassandra/index/sasi/analyzer/SUPPLEMENTARY.jflex-macro new file mode 100644 index 0000000000..f5bf68e254 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/SUPPLEMENTARY.jflex-macro @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated using ICU4J 52.1.0.0 +// by org.apache.lucene.analysis.icu.GenerateJFlexSupplementaryMacros + + +ALetterSupp = ( + ([\ud83b][\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]) + | ([\ud81a][\uDC00-\uDE38]) + | ([\ud81b][\uDF00-\uDF44\uDF50\uDF93-\uDF9F]) + | ([\ud835][\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]) + | ([\ud80d][\uDC00-\uDC2E]) + | ([\ud80c][\uDC00-\uDFFF]) + | ([\ud809][\uDC00-\uDC62]) + | ([\ud808][\uDC00-\uDF6E]) + | ([\ud805][\uDE80-\uDEAA]) + | ([\ud804][\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD83-\uDDB2\uDDC1-\uDDC4]) + | ([\ud801][\uDC00-\uDC9D]) + | ([\ud800][\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1E\uDF30-\uDF4A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]) + | ([\ud803][\uDC00-\uDC48]) + | ([\ud802][\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72]) +) +FormatSupp = ( + ([\ud804][\uDCBD]) + | ([\ud834][\uDD73-\uDD7A]) + | ([\udb40][\uDC01\uDC20-\uDC7F]) +) +NumericSupp = ( + ([\ud805][\uDEC0-\uDEC9]) + | ([\ud804][\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9]) + | ([\ud835][\uDFCE-\uDFFF]) + | ([\ud801][\uDCA0-\uDCA9]) +) +ExtendSupp = ( + ([\ud81b][\uDF51-\uDF7E\uDF8F-\uDF92]) + | ([\ud805][\uDEAB-\uDEB7]) + | ([\ud804][\uDC00-\uDC02\uDC38-\uDC46\uDC80-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD80-\uDD82\uDDB3-\uDDC0]) + | ([\ud834][\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]) + | ([\ud800][\uDDFD]) + | ([\udb40][\uDD00-\uDDEF]) + | ([\ud802][\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F]) +) +KatakanaSupp = ( + ([\ud82c][\uDC00]) +) +MidLetterSupp = ( + [] +) +MidNumSupp = ( + [] +) +MidNumLetSupp = ( + [] +) +ExtendNumLetSupp = ( + [] +) +ExtendNumLetSupp = ( + [] +) +ComplexContextSupp = ( + [] +) +HanSupp = ( + ([\ud87e][\uDC00-\uDE1D]) + | ([\ud86b][\uDC00-\uDFFF]) + | ([\ud86a][\uDC00-\uDFFF]) + | ([\ud869][\uDC00-\uDED6\uDF00-\uDFFF]) + | ([\ud868][\uDC00-\uDFFF]) + | ([\ud86e][\uDC00-\uDC1D]) + | ([\ud86d][\uDC00-\uDF34\uDF40-\uDFFF]) + | ([\ud86c][\uDC00-\uDFFF]) + | ([\ud863][\uDC00-\uDFFF]) + | ([\ud862][\uDC00-\uDFFF]) + | ([\ud861][\uDC00-\uDFFF]) + | ([\ud860][\uDC00-\uDFFF]) + | ([\ud867][\uDC00-\uDFFF]) + | ([\ud866][\uDC00-\uDFFF]) + | ([\ud865][\uDC00-\uDFFF]) + | ([\ud864][\uDC00-\uDFFF]) + | ([\ud858][\uDC00-\uDFFF]) + | ([\ud859][\uDC00-\uDFFF]) + | ([\ud85a][\uDC00-\uDFFF]) + | ([\ud85b][\uDC00-\uDFFF]) + | ([\ud85c][\uDC00-\uDFFF]) + | ([\ud85d][\uDC00-\uDFFF]) + | ([\ud85e][\uDC00-\uDFFF]) + | ([\ud85f][\uDC00-\uDFFF]) + | ([\ud850][\uDC00-\uDFFF]) + | ([\ud851][\uDC00-\uDFFF]) + | ([\ud852][\uDC00-\uDFFF]) + | ([\ud853][\uDC00-\uDFFF]) + | ([\ud854][\uDC00-\uDFFF]) + | ([\ud855][\uDC00-\uDFFF]) + | ([\ud856][\uDC00-\uDFFF]) + | ([\ud857][\uDC00-\uDFFF]) + | ([\ud849][\uDC00-\uDFFF]) + | ([\ud848][\uDC00-\uDFFF]) + | ([\ud84b][\uDC00-\uDFFF]) + | ([\ud84a][\uDC00-\uDFFF]) + | ([\ud84d][\uDC00-\uDFFF]) + | ([\ud84c][\uDC00-\uDFFF]) + | ([\ud84f][\uDC00-\uDFFF]) + | ([\ud84e][\uDC00-\uDFFF]) + | ([\ud841][\uDC00-\uDFFF]) + | ([\ud840][\uDC00-\uDFFF]) + | ([\ud843][\uDC00-\uDFFF]) + | ([\ud842][\uDC00-\uDFFF]) + | ([\ud845][\uDC00-\uDFFF]) + | ([\ud844][\uDC00-\uDFFF]) + | ([\ud847][\uDC00-\uDFFF]) + | ([\ud846][\uDC00-\uDFFF]) +) +HiraganaSupp = ( + ([\ud83c][\uDE00]) + | ([\ud82c][\uDC01]) +) +SingleQuoteSupp = ( + [] +) +DoubleQuoteSupp = ( + [] +) +HebrewLetterSupp = ( + [] +) +RegionalIndicatorSupp = ( + ([\ud83c][\uDDE6-\uDDFF]) +) diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java new file mode 100644 index 0000000000..bcc63dfeac --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardAnalyzer.java @@ -0,0 +1,194 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.cassandra.index.sasi.analyzer; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.ByteBuffer; +import java.util.Map; + +import org.apache.cassandra.index.sasi.analyzer.filter.*; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.UTF8Type; +import org.apache.cassandra.io.util.DataInputBuffer; +import org.apache.cassandra.utils.ByteBufferUtil; + +import com.google.common.annotations.VisibleForTesting; + +import com.carrotsearch.hppc.IntObjectMap; +import com.carrotsearch.hppc.IntObjectOpenHashMap; + +public class StandardAnalyzer extends AbstractAnalyzer +{ + public enum TokenType + { + EOF(-1), + ALPHANUM(0), + NUM(6), + SOUTHEAST_ASIAN(9), + IDEOGRAPHIC(10), + HIRAGANA(11), + KATAKANA(12), + HANGUL(13); + + private static final IntObjectMap TOKENS = new IntObjectOpenHashMap<>(); + + static + { + for (TokenType type : TokenType.values()) + TOKENS.put(type.value, type); + } + + public final int value; + + TokenType(int value) + { + this.value = value; + } + + public int getValue() + { + return value; + } + + public static TokenType fromValue(int val) + { + return TOKENS.get(val); + } + } + + private AbstractType validator; + + private StandardTokenizerInterface scanner; + private StandardTokenizerOptions options; + private FilterPipelineTask filterPipeline; + + protected Reader inputReader = null; + + public String getToken() + { + return scanner.getText(); + } + + public final boolean incrementToken() throws IOException + { + while(true) + { + TokenType currentTokenType = TokenType.fromValue(scanner.getNextToken()); + if (currentTokenType == TokenType.EOF) + return false; + if (scanner.yylength() <= options.getMaxTokenLength() + && scanner.yylength() >= options.getMinTokenLength()) + return true; + } + } + + protected String getFilteredCurrentToken() throws IOException + { + String token = getToken(); + Object pipelineRes; + + while (true) + { + pipelineRes = FilterPipelineExecutor.execute(filterPipeline, token); + if (pipelineRes != null) + break; + + boolean reachedEOF = incrementToken(); + if (!reachedEOF) + break; + + token = getToken(); + } + + return (String) pipelineRes; + } + + private FilterPipelineTask getFilterPipeline() + { + FilterPipelineBuilder builder = new FilterPipelineBuilder(new BasicResultFilters.NoOperation()); + if (!options.isCaseSensitive() && options.shouldLowerCaseTerms()) + builder = builder.add("to_lower", new BasicResultFilters.LowerCase()); + if (!options.isCaseSensitive() && options.shouldUpperCaseTerms()) + builder = builder.add("to_upper", new BasicResultFilters.UpperCase()); + if (options.shouldStemTerms()) + builder = builder.add("term_stemming", new StemmingFilters.DefaultStemmingFilter(options.getLocale())); + if (options.shouldIgnoreStopTerms()) + builder = builder.add("skip_stop_words", new StopWordFilters.DefaultStopWordFilter(options.getLocale())); + return builder.build(); + } + + public void init(Map options, AbstractType validator) + { + init(StandardTokenizerOptions.buildFromMap(options), validator); + } + + @VisibleForTesting + protected void init(StandardTokenizerOptions options) + { + init(options, UTF8Type.instance); + } + + public void init(StandardTokenizerOptions tokenizerOptions, AbstractType validator) + { + this.validator = validator; + this.options = tokenizerOptions; + this.filterPipeline = getFilterPipeline(); + + Reader reader = new InputStreamReader(new DataInputBuffer(ByteBufferUtil.EMPTY_BYTE_BUFFER, false)); + this.scanner = new StandardTokenizerImpl(reader); + this.inputReader = reader; + } + + public boolean hasNext() + { + try + { + if (incrementToken()) + { + if (getFilteredCurrentToken() != null) + { + this.next = validator.fromString(normalize(getFilteredCurrentToken())); + return true; + } + } + } + catch (IOException e) + {} + + return false; + } + + public void reset(ByteBuffer input) + { + this.next = null; + Reader reader = new InputStreamReader(new DataInputBuffer(input, false)); + scanner.yyreset(reader); + this.inputReader = reader; + } + + public void reset(InputStream input) + { + this.next = null; + Reader reader = new InputStreamReader(input); + scanner.yyreset(reader); + this.inputReader = reader; + } +} diff --git a/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerImpl.jflex b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerImpl.jflex new file mode 100644 index 0000000000..d0270ff01c --- /dev/null +++ b/src/java/org/apache/cassandra/index/sasi/analyzer/StandardTokenizerImpl.jflex @@ -0,0 +1,220 @@ +package org.apache.cassandra.index.sasi.analyzer; + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.Arrays; + +/** + * This class implements Word Break rules from the Unicode Text Segmentation + * algorithm, as specified in + * Unicode Standard Annex #29. ∂ + *

    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