From 8948d714f6afcdc80862243618ae9e646de5df34 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:15:15 +0200 Subject: [PATCH] [docx] split commit for file 4200 Signed-off-by: Ari Archer --- .../archive/ArchiveSegmentUpdater.docx | Bin 0 -> 39504 bytes .../archive/ArchiveSegmentUpdater.java | 279 --- .../archive/ArchiveSegmentVerifier.docx | Bin 0 -> 37468 bytes .../archive/ArchiveSegmentVerifier.java | 75 - .../earlybird/archive/ArchiveTimeSlicer.docx | Bin 0 -> 40365 bytes .../earlybird/archive/ArchiveTimeSlicer.java | 322 --- .../earlybird/archive/DailyStatusBatch.docx | Bin 0 -> 38735 bytes .../earlybird/archive/DailyStatusBatch.java | 166 -- .../earlybird/archive/DailyStatusBatches.docx | Bin 0 -> 43937 bytes .../earlybird/archive/DailyStatusBatches.java | 702 ------- .../earlybird/archive/PartitionedBatch.docx | Bin 0 -> 41083 bytes .../earlybird/archive/PartitionedBatch.java | 333 --- .../archive/segmentbuilder/BUILD.bazel | 64 - .../archive/segmentbuilder/BUILD.docx | Bin 0 -> 37358 bytes .../BuiltAndFinalizedSegment.docx | Bin 0 -> 37009 bytes .../BuiltAndFinalizedSegment.java | 29 - .../segmentbuilder/NotYetBuiltSegment.docx | Bin 0 -> 38332 bytes .../segmentbuilder/NotYetBuiltSegment.java | 101 - .../RateLimitingSegmentHandler.docx | Bin 0 -> 37159 bytes .../RateLimitingSegmentHandler.java | 39 - .../segmentbuilder/SegmentBuilder.docx | Bin 0 -> 43314 bytes .../segmentbuilder/SegmentBuilder.java | 540 ----- .../segmentbuilder/SegmentBuilderApp.docx | Bin 0 -> 37884 bytes .../segmentbuilder/SegmentBuilderApp.java | 109 - .../SegmentBuilderCoordinator.docx | Bin 0 -> 39506 bytes .../SegmentBuilderCoordinator.java | 200 -- .../segmentbuilder/SegmentBuilderMain.docx | Bin 0 -> 36790 bytes .../segmentbuilder/SegmentBuilderMain.java | 10 - .../segmentbuilder/SegmentBuilderModule.docx | Bin 0 -> 37546 bytes .../segmentbuilder/SegmentBuilderModule.java | 58 - .../segmentbuilder/SegmentBuilderSegment.docx | Bin 0 -> 37815 bytes .../segmentbuilder/SegmentBuilderSegment.java | 100 - .../archive/segmentbuilder/SegmentConfig.docx | Bin 0 -> 37055 bytes .../archive/segmentbuilder/SegmentConfig.java | 41 - .../SegmentInfoConstructionException.docx | Bin 0 -> 36843 bytes .../SegmentInfoConstructionException.java | 12 - .../SegmentUpdaterException.docx | Bin 0 -> 36832 bytes .../SegmentUpdaterException.java | 13 - .../SomeoneElseIsBuildingSegment.docx | Bin 0 -> 37628 bytes .../SomeoneElseIsBuildingSegment.java | 69 - .../com/twitter/search/earlybird/common/BUILD | 37 - .../search/earlybird/common/BUILD.docx | Bin 0 -> 37094 bytes .../Base64RequestResponseForLogging.docx | Bin 0 -> 38021 bytes .../Base64RequestResponseForLogging.java | 120 -- .../earlybird/common/CaughtUpMonitor.docx | Bin 0 -> 37426 bytes .../earlybird/common/CaughtUpMonitor.java | 55 - .../search/earlybird/common/ClientIdUtil.docx | Bin 0 -> 37778 bytes .../search/earlybird/common/ClientIdUtil.java | 85 - .../common/EarlybirdRequestLogger.docx | Bin 0 -> 40778 bytes .../common/EarlybirdRequestLogger.java | 365 ---- .../common/EarlybirdRequestPostLogger.docx | Bin 0 -> 37031 bytes .../common/EarlybirdRequestPostLogger.java | 37 - .../common/EarlybirdRequestPreLogger.docx | Bin 0 -> 36986 bytes .../common/EarlybirdRequestPreLogger.java | 32 - .../common/EarlybirdRequestUtil.docx | Bin 0 -> 39292 bytes .../common/EarlybirdRequestUtil.java | 244 --- .../common/EarlybirdThriftBackend.docx | Bin 0 -> 36999 bytes .../common/EarlybirdThriftBackend.java | 28 - .../earlybird/common/NonPagingAssert.docx | Bin 0 -> 37101 bytes .../earlybird/common/NonPagingAssert.java | 34 - .../common/RequestResponseForLogging.docx | Bin 0 -> 37392 bytes .../common/RequestResponseForLogging.java | 55 - .../earlybird/common/RequestResponsePair.docx | Bin 0 -> 37144 bytes .../earlybird/common/RequestResponsePair.java | 44 - .../UnknownClientRequestForLogging.docx | Bin 0 -> 37732 bytes .../UnknownClientRequestForLogging.java | 77 - .../search/earlybird/common/config/BUILD | 21 - .../search/earlybird/common/config/BUILD.docx | Bin 0 -> 36948 bytes .../common/config/EarlybirdConfig.docx | Bin 0 -> 39329 bytes .../common/config/EarlybirdConfig.java | 363 ---- .../common/config/EarlybirdProperty.docx | Bin 0 -> 40065 bytes .../common/config/EarlybirdProperty.java | 390 ---- .../search/earlybird/common/userupdates/BUILD | 45 - .../earlybird/common/userupdates/BUILD.docx | Bin 0 -> 37213 bytes .../common/userupdates/UserScrubGeoMap.docx | Bin 0 -> 38334 bytes .../common/userupdates/UserScrubGeoMap.java | 100 - .../common/userupdates/UserTable.docx | Bin 0 -> 42106 bytes .../common/userupdates/UserTable.java | 572 ------ .../UserTableBuilderFromSnapshot.docx | Bin 0 -> 39405 bytes .../UserTableBuilderFromSnapshot.java | 263 --- .../common/userupdates/UserUpdate.docx | Bin 0 -> 37077 bytes .../common/userupdates/UserUpdate.java | 38 - .../userupdates/UserUpdatesChecker.docx | Bin 0 -> 37860 bytes .../userupdates/UserUpdatesChecker.java | 70 - .../com/twitter/search/earlybird/config/BUILD | 21 - .../search/earlybird/config/BUILD.docx | Bin 0 -> 36933 bytes .../search/earlybird/config/ServingRange.docx | Bin 0 -> 36886 bytes .../search/earlybird/config/ServingRange.java | 26 - .../search/earlybird/config/TierConfig.docx | Bin 0 -> 38801 bytes .../search/earlybird/config/TierConfig.java | 175 -- .../search/earlybird/config/TierInfo.docx | Bin 0 -> 38117 bytes .../search/earlybird/config/TierInfo.java | 180 -- .../earlybird/config/TierInfoSource.docx | Bin 0 -> 37070 bytes .../earlybird/config/TierInfoSource.java | 39 - .../search/earlybird/config/TierInfoUtil.docx | Bin 0 -> 37527 bytes .../search/earlybird/config/TierInfoUtil.java | 78 - .../earlybird/config/TierInfoWrapper.docx | Bin 0 -> 37373 bytes .../earlybird/config/TierInfoWrapper.java | 89 - .../config/TierServingBoundaryEndPoint.docx | Bin 0 -> 38746 bytes .../config/TierServingBoundaryEndPoint.java | 146 -- .../earlybird/document/DeletedStatus.docx | Bin 0 -> 36847 bytes .../earlybird/document/DeletedStatus.java | 15 - .../earlybird/document/DocumentFactory.docx | Bin 0 -> 38075 bytes .../earlybird/document/DocumentFactory.java | 110 - .../document/ThriftDocumentPreprocessor.docx | Bin 0 -> 38706 bytes .../document/ThriftDocumentPreprocessor.java | 170 -- .../ThriftIndexingEventDocumentFactory.docx | Bin 0 -> 39546 bytes .../ThriftIndexingEventDocumentFactory.java | 246 --- .../ThriftIndexingEventUpdateFactory.docx | Bin 0 -> 37787 bytes .../ThriftIndexingEventUpdateFactory.java | 91 - .../TimeSlicedThriftIndexingEvent.docx | Bin 0 -> 37044 bytes .../TimeSlicedThriftIndexingEvent.java | 40 - .../document/TruncationTokenStreamWriter.docx | Bin 0 -> 37706 bytes .../document/TruncationTokenStreamWriter.java | 86 - .../earlybird/document/TweetDocument.docx | Bin 0 -> 37077 bytes .../earlybird/document/TweetDocument.java | 52 - .../AlreadyInServerSetUpdateException.docx | Bin 0 -> 36841 bytes .../AlreadyInServerSetUpdateException.java | 12 - .../exception/BadRequestException.docx | Bin 0 -> 36777 bytes .../exception/BadRequestException.java | 11 - .../earlybird/exception/ClientException.docx | Bin 0 -> 36768 bytes .../earlybird/exception/ClientException.java | 11 - .../exception/CriticalExceptionHandler.docx | Bin 0 -> 38268 bytes .../exception/CriticalExceptionHandler.java | 114 -- .../exception/EarlybirdException.docx | Bin 0 -> 36834 bytes .../exception/EarlybirdException.java | 18 - .../EarlybirdFinagleServerMonitor.docx | Bin 0 -> 36956 bytes .../EarlybirdFinagleServerMonitor.java | 25 - .../exception/EarlybirdRuntimeException.docx | Bin 0 -> 36752 bytes .../exception/EarlybirdRuntimeException.java | 7 - .../exception/EarlybirdStartupException.docx | Bin 0 -> 36922 bytes .../exception/EarlybirdStartupException.java | 20 - .../FlushVersionMismatchException.docx | Bin 0 -> 36812 bytes .../FlushVersionMismatchException.java | 17 - .../exception/MissingKafkaTopicException.docx | Bin 0 -> 36781 bytes .../exception/MissingKafkaTopicException.java | 11 - .../exception/MissingUserException.docx | Bin 0 -> 36697 bytes .../exception/MissingUserException.java | 4 - .../NotInServerSetUpdateException.docx | Bin 0 -> 36846 bytes .../NotInServerSetUpdateException.java | 12 - .../exception/TransientException.docx | Bin 0 -> 36789 bytes .../exception/TransientException.java | 15 - .../exception/UncaughtExceptionHandler.docx | Bin 0 -> 36934 bytes .../exception/UncaughtExceptionHandler.java | 23 - .../exception/WrappedKafkaApiException.docx | Bin 0 -> 36977 bytes .../exception/WrappedKafkaApiException.java | 19 - .../factory/EarlybirdIndexConfigUtil.docx | Bin 0 -> 37255 bytes .../factory/EarlybirdIndexConfigUtil.java | 53 - .../EarlybirdKafkaConsumersFactory.docx | Bin 0 -> 36913 bytes .../EarlybirdKafkaConsumersFactory.java | 19 - .../factory/EarlybirdServerFactory.docx | Bin 0 -> 39533 bytes .../factory/EarlybirdServerFactory.java | 353 ---- .../factory/EarlybirdWireModule.docx | Bin 0 -> 44612 bytes .../factory/EarlybirdWireModule.java | 901 --------- .../factory/PartitionConfigUtil.docx | Bin 0 -> 37281 bytes .../factory/PartitionConfigUtil.java | 47 - ...ductionEarlybirdKafkaConsumersFactory.docx | Bin 0 -> 37166 bytes ...ductionEarlybirdKafkaConsumersFactory.java | 41 - ...yCacheUpdaterScheduledExecutorService.docx | Bin 0 -> 37439 bytes ...yCacheUpdaterScheduledExecutorService.java | 57 - .../index/AbstractInMemoryTimeMapper.docx | Bin 0 -> 37844 bytes .../index/AbstractInMemoryTimeMapper.java | 83 - .../index/DocValuesBasedTimeMapper.docx | Bin 0 -> 38624 bytes .../index/DocValuesBasedTimeMapper.java | 146 -- .../index/DocValuesBasedTweetIDMapper.docx | Bin 0 -> 38712 bytes .../index/DocValuesBasedTweetIDMapper.java | 149 -- .../earlybird/index/DocValuesHelper.docx | Bin 0 -> 37464 bytes .../earlybird/index/DocValuesHelper.java | 70 - .../earlybird/index/EarlybirdSegment.docx | Bin 0 -> 48396 bytes .../earlybird/index/EarlybirdSegment.java | 1070 ---------- .../index/EarlybirdSegmentFactory.docx | Bin 0 -> 37256 bytes .../index/EarlybirdSegmentFactory.java | 58 - .../index/EarlybirdSingleSegmentSearcher.docx | Bin 0 -> 41614 bytes .../index/EarlybirdSingleSegmentSearcher.java | 423 ---- .../earlybird/index/OptimizedTimeMapper.docx | Bin 0 -> 37976 bytes .../earlybird/index/OptimizedTimeMapper.java | 109 - .../index/OptimizedTweetIDMapper.docx | Bin 0 -> 38459 bytes .../index/OptimizedTweetIDMapper.java | 145 -- .../OutOfOrderRealtimeTweetIDMapper.docx | Bin 0 -> 43720 bytes .../OutOfOrderRealtimeTweetIDMapper.java | 531 ----- .../earlybird/index/RealtimeTimeMapper.docx | Bin 0 -> 38246 bytes .../earlybird/index/RealtimeTimeMapper.java | 149 -- .../earlybird/index/TimeMappingWriter.docx | Bin 0 -> 37066 bytes .../earlybird/index/TimeMappingWriter.java | 32 - .../search/earlybird/index/TweetIDMapper.docx | Bin 0 -> 38207 bytes .../search/earlybird/index/TweetIDMapper.java | 183 -- .../search/earlybird/index/TweetIDQuery.docx | Bin 0 -> 37552 bytes .../search/earlybird/index/TweetIDQuery.java | 81 - .../index/TweetIDToInternalIDMap.docx | Bin 0 -> 38207 bytes .../index/TweetIDToInternalIDMap.java | 154 -- .../TweetSearchIndexExtensionsFactory.docx | Bin 0 -> 36838 bytes .../TweetSearchIndexExtensionsFactory.java | 17 - .../TweetSearchLuceneIndexExtensionsData.docx | Bin 0 -> 37303 bytes .../TweetSearchLuceneIndexExtensionsData.java | 41 - ...weetSearchRealtimeIndexExtensionsData.docx | Bin 0 -> 37136 bytes ...weetSearchRealtimeIndexExtensionsData.java | 33 - .../search/earlybird/index/facets/BUILD | 16 - .../search/earlybird/index/facets/BUILD.docx | Bin 0 -> 36853 bytes .../earlybird/index/facets/FacetSkipList.docx | Bin 0 -> 38057 bytes .../earlybird/index/facets/FacetSkipList.java | 126 -- .../earlybird/ml/ScoringModelsManager.docx | Bin 0 -> 38579 bytes .../earlybird/ml/ScoringModelsManager.java | 155 -- .../AudioSpaceEventsStreamIndexer.docx | Bin 0 -> 37802 bytes .../AudioSpaceEventsStreamIndexer.java | 75 - .../earlybird/partition/AudioSpaceTable.docx | Bin 0 -> 38443 bytes .../earlybird/partition/AudioSpaceTable.java | 150 -- .../partition/BalancingKafkaConsumer.docx | Bin 0 -> 38397 bytes .../partition/BalancingKafkaConsumer.java | 117 -- .../partition/CompleteSegmentManager.docx | Bin 0 -> 40488 bytes .../partition/CompleteSegmentManager.java | 349 ---- .../partition/DynamicPartitionConfig.docx | Bin 0 -> 37801 bytes .../partition/DynamicPartitionConfig.java | 69 - .../earlybird/partition/EarlybirdIndex.docx | Bin 0 -> 37308 bytes .../earlybird/partition/EarlybirdIndex.java | 65 - .../partition/EarlybirdIndexFlusher.docx | Bin 0 -> 41680 bytes .../partition/EarlybirdIndexFlusher.java | 371 ---- .../partition/EarlybirdIndexLoader.docx | Bin 0 -> 39813 bytes .../partition/EarlybirdIndexLoader.java | 224 --- .../partition/EarlybirdKafkaConsumer.docx | Bin 0 -> 39805 bytes .../partition/EarlybirdKafkaConsumer.java | 281 --- .../earlybird/partition/EarlybirdStartup.docx | Bin 0 -> 36902 bytes .../earlybird/partition/EarlybirdStartup.java | 17 - .../partition/FlowControlException.docx | Bin 0 -> 36868 bytes .../partition/FlowControlException.java | 16 - .../search/earlybird/partition/HdfsUtil.docx | Bin 0 -> 37153 bytes .../search/earlybird/partition/HdfsUtil.java | 30 - .../earlybird/partition/ISegmentWriter.docx | Bin 0 -> 36962 bytes .../earlybird/partition/ISegmentWriter.java | 24 - .../partition/IndexingResultCounts.docx | Bin 0 -> 37132 bytes .../partition/IndexingResultCounts.java | 51 - .../partition/InstrumentedQueue.docx | Bin 0 -> 37218 bytes .../partition/InstrumentedQueue.java | 51 - .../earlybird/partition/KafkaStartup.docx | Bin 0 -> 40433 bytes .../earlybird/partition/KafkaStartup.java | 328 --- .../MultiSegmentTermDictionaryManager.docx | Bin 0 -> 40516 bytes .../MultiSegmentTermDictionaryManager.java | 314 --- ...timizationAndFlushingCoordinationLock.docx | Bin 0 -> 37423 bytes ...timizationAndFlushingCoordinationLock.java | 46 - .../partition/OptimizingSegmentWriter.docx | Bin 0 -> 39563 bytes .../partition/OptimizingSegmentWriter.java | 210 -- .../earlybird/partition/PartitionConfig.docx | Bin 0 -> 38163 bytes .../earlybird/partition/PartitionConfig.java | 171 -- .../partition/PartitionConfigLoader.docx | Bin 0 -> 37326 bytes .../partition/PartitionConfigLoader.java | 45 - .../PartitionConfigLoadingException.docx | Bin 0 -> 36884 bytes .../PartitionConfigLoadingException.java | 12 - .../earlybird/partition/PartitionManager.docx | Bin 0 -> 39379 bytes .../earlybird/partition/PartitionManager.java | 254 --- .../partition/PartitionManagerStartup.docx | Bin 0 -> 37308 bytes .../partition/PartitionManagerStartup.java | 57 - .../earlybird/partition/PartitionWriter.docx | Bin 0 -> 38164 bytes .../earlybird/partition/PartitionWriter.java | 109 - .../partition/SearchIndexingMetricSet.docx | Bin 0 -> 39182 bytes .../partition/SearchIndexingMetricSet.java | 208 -- .../partition/SegmentHdfsFlusher.docx | Bin 0 -> 40069 bytes .../partition/SegmentHdfsFlusher.java | 247 --- .../partition/SegmentIndexStats.docx | Bin 0 -> 37496 bytes .../partition/SegmentIndexStats.java | 96 - .../partition/SegmentIndexStatsExporter.docx | Bin 0 -> 37889 bytes .../partition/SegmentIndexStatsExporter.java | 85 - .../earlybird/partition/SegmentInfo.docx | Bin 0 -> 40865 bytes .../earlybird/partition/SegmentInfo.java | 428 ---- .../earlybird/partition/SegmentLoader.docx | Bin 0 -> 40157 bytes .../earlybird/partition/SegmentLoader.java | 300 --- .../earlybird/partition/SegmentManager.docx | Bin 0 -> 44751 bytes .../earlybird/partition/SegmentManager.java | 822 -------- .../earlybird/partition/SegmentOptimizer.docx | Bin 0 -> 37397 bytes .../earlybird/partition/SegmentOptimizer.java | 60 - .../partition/SegmentSyncConfig.docx | Bin 0 -> 38896 bytes .../partition/SegmentSyncConfig.java | 218 -- .../earlybird/partition/SegmentSyncInfo.docx | Bin 0 -> 37744 bytes .../earlybird/partition/SegmentSyncInfo.java | 113 -- .../earlybird/partition/SegmentVulture.docx | Bin 0 -> 40760 bytes .../earlybird/partition/SegmentVulture.java | 380 ---- .../earlybird/partition/SegmentWarmer.docx | Bin 0 -> 37342 bytes .../earlybird/partition/SegmentWarmer.java | 49 - .../earlybird/partition/SegmentWriter.docx | Bin 0 -> 39525 bytes .../earlybird/partition/SegmentWriter.java | 239 --- .../partition/SimpleSegmentIndexer.docx | Bin 0 -> 38916 bytes .../partition/SimpleSegmentIndexer.java | 191 -- .../partition/SimpleStreamIndexer.docx | Bin 0 -> 39146 bytes .../partition/SimpleStreamIndexer.java | 187 -- .../partition/SimpleUpdateIndexer.docx | Bin 0 -> 38496 bytes .../partition/SimpleUpdateIndexer.java | 140 -- .../partition/StartupUserEventIndexer.docx | Bin 0 -> 39354 bytes .../partition/StartupUserEventIndexer.java | 236 --- .../partition/StatusBatchFlushVersion.docx | Bin 0 -> 37200 bytes .../partition/StatusBatchFlushVersion.java | 41 - .../TimeLimitedHadoopExistsCall.docx | Bin 0 -> 38106 bytes .../TimeLimitedHadoopExistsCall.java | 90 - .../partition/TweetCreateHandler.docx | Bin 0 -> 43913 bytes .../partition/TweetCreateHandler.java | 526 ----- .../partition/TweetUpdateHandler.docx | Bin 0 -> 39074 bytes .../partition/TweetUpdateHandler.java | 175 -- .../partition/UserPartitionUtil.docx | Bin 0 -> 37134 bytes .../partition/UserPartitionUtil.java | 32 - .../UserScrubGeoEventStreamIndexer.docx | Bin 0 -> 38016 bytes .../UserScrubGeoEventStreamIndexer.java | 88 - .../partition/UserUpdatesStreamIndexer.docx | Bin 0 -> 37836 bytes .../partition/UserUpdatesStreamIndexer.java | 89 - .../freshstartup/FreshStartupHandler.docx | Bin 0 -> 41921 bytes .../freshstartup/FreshStartupHandler.java | 439 ---- .../freshstartup/KafkaOffsetPair.docx | Bin 0 -> 36865 bytes .../freshstartup/KafkaOffsetPair.java | 23 - .../PostOptimizationUpdatesIndexer.docx | Bin 0 -> 38809 bytes .../PostOptimizationUpdatesIndexer.java | 169 -- .../PreOptimizationSegmentIndexer.docx | Bin 0 -> 41990 bytes .../PreOptimizationSegmentIndexer.java | 459 ----- .../freshstartup/SegmentBuildInfo.docx | Bin 0 -> 37399 bytes .../freshstartup/SegmentBuildInfo.java | 92 - .../SegmentTweetsIndexingResult.docx | Bin 0 -> 37100 bytes .../SegmentTweetsIndexingResult.java | 46 - .../freshstartup/SkippedPickedCounter.docx | Bin 0 -> 36909 bytes .../freshstartup/SkippedPickedCounter.java | 26 - .../querycache/CachedFilterQuery.docx | Bin 0 -> 39442 bytes .../querycache/CachedFilterQuery.java | 310 --- .../CachedResultDocIdSetIterator.docx | Bin 0 -> 37377 bytes .../CachedResultDocIdSetIterator.java | 72 - .../querycache/QueryCacheConfig.docx | Bin 0 -> 37909 bytes .../querycache/QueryCacheConfig.java | 101 - .../querycache/QueryCacheConversionRules.docx | Bin 0 -> 37698 bytes .../querycache/QueryCacheConversionRules.java | 100 - .../querycache/QueryCacheFilter.docx | Bin 0 -> 39966 bytes .../querycache/QueryCacheFilter.java | 302 --- .../querycache/QueryCacheManager.docx | Bin 0 -> 41089 bytes .../querycache/QueryCacheManager.java | 365 ---- .../querycache/QueryCacheResultCollector.docx | Bin 0 -> 38280 bytes .../querycache/QueryCacheResultCollector.java | 124 -- .../querycache/QueryCacheUpdateTask.docx | Bin 0 -> 40127 bytes .../querycache/QueryCacheUpdateTask.java | 283 --- .../querycache/QueryCacheUpdater.docx | Bin 0 -> 39239 bytes .../querycache/QueryCacheUpdater.java | 242 --- .../queryparser/DetectAntisocialVisitor.docx | Bin 0 -> 37615 bytes .../queryparser/DetectAntisocialVisitor.java | 131 -- .../DetectFieldAnnotationVisitor.docx | Bin 0 -> 37493 bytes .../DetectFieldAnnotationVisitor.java | 99 - .../EarlybirdLuceneQueryVisitor.docx | Bin 0 -> 54932 bytes .../EarlybirdLuceneQueryVisitor.java | 1781 ----------------- .../queryparser/EarlybirdQueryHelper.docx | Bin 0 -> 38441 bytes .../queryparser/EarlybirdQueryHelper.java | 154 -- .../HighFrequencyTermPairExtractor.docx | Bin 0 -> 39518 bytes .../HighFrequencyTermPairExtractor.java | 211 -- .../HighFrequencyTermPairRewriteVisitor.docx | Bin 0 -> 42217 bytes .../HighFrequencyTermPairRewriteVisitor.java | 477 ----- .../HighFrequencyTermQueryGroup.docx | Bin 0 -> 37718 bytes .../HighFrequencyTermQueryGroup.java | 94 - .../LuceneRelevanceQueryVisitor.docx | Bin 0 -> 37356 bytes .../LuceneRelevanceQueryVisitor.java | 69 - .../ProtectedOperatorQueryRewriter.docx | Bin 0 -> 38590 bytes .../ProtectedOperatorQueryRewriter.java | 153 -- .../search/AbstractResultsCollector.docx | Bin 0 -> 44626 bytes .../search/AbstractResultsCollector.java | 630 ------ .../earlybird/search/AntiGamingFilter.docx | Bin 0 -> 39466 bytes .../earlybird/search/AntiGamingFilter.java | 228 --- .../search/EarlybirdLuceneSearcher.docx | Bin 0 -> 37688 bytes .../search/EarlybirdLuceneSearcher.java | 98 - .../search/EarlybirdMultiSegmentSearcher.docx | Bin 0 -> 39765 bytes .../search/EarlybirdMultiSegmentSearcher.java | 254 --- .../search/GeoQuadTreeQueryBuilder.docx | Bin 0 -> 39196 bytes .../search/GeoQuadTreeQueryBuilder.java | 199 -- .../twitter/search/earlybird/search/Hit.docx | Bin 0 -> 37196 bytes .../twitter/search/earlybird/search/Hit.java | 59 - .../earlybird/search/SearchRequestInfo.docx | Bin 0 -> 38225 bytes .../earlybird/search/SearchRequestInfo.java | 180 -- .../search/SearchResultsCollector.docx | Bin 0 -> 39141 bytes .../search/SearchResultsCollector.java | 188 -- .../earlybird/search/SearchResultsInfo.docx | Bin 0 -> 37396 bytes .../earlybird/search/SearchResultsInfo.java | 99 - .../earlybird/search/SimpleSearchResults.docx | Bin 0 -> 36950 bytes .../earlybird/search/SimpleSearchResults.java | 35 - .../search/earlybird/search/SocialFilter.docx | Bin 0 -> 37686 bytes .../search/earlybird/search/SocialFilter.java | 98 - .../search/SocialSearchResultsCollector.docx | Bin 0 -> 37268 bytes .../search/SocialSearchResultsCollector.java | 47 - .../facets/AbstractFacetTermCollector.docx | Bin 0 -> 37457 bytes .../facets/AbstractFacetTermCollector.java | 67 - .../search/facets/DefaultFacetScorer.docx | Bin 0 -> 39128 bytes .../search/facets/DefaultFacetScorer.java | 236 --- .../facets/EntityAnnotationCollector.docx | Bin 0 -> 37363 bytes .../facets/EntityAnnotationCollector.java | 48 - .../search/facets/ExpandedUrlCollector.docx | Bin 0 -> 38164 bytes .../search/facets/ExpandedUrlCollector.java | 118 -- .../facets/ExplainFacetResultsCollector.docx | Bin 0 -> 38628 bytes .../facets/ExplainFacetResultsCollector.java | 159 -- .../search/facets/FacetLabelCollector.docx | Bin 0 -> 37436 bytes .../search/facets/FacetLabelCollector.java | 62 - .../search/facets/FacetRankingModule.docx | Bin 0 -> 37088 bytes .../search/facets/FacetRankingModule.java | 26 - .../search/facets/FacetResultsCollector.docx | Bin 0 -> 39246 bytes .../search/facets/FacetResultsCollector.java | 229 --- .../earlybird/search/facets/FacetScorer.docx | Bin 0 -> 37019 bytes .../earlybird/search/facets/FacetScorer.java | 24 - .../search/facets/FacetSearchRequestInfo.docx | Bin 0 -> 36983 bytes .../search/facets/FacetSearchRequestInfo.java | 28 - .../HashingAndPruningFacetAccumulator.docx | Bin 0 -> 40925 bytes .../HashingAndPruningFacetAccumulator.java | 492 ----- .../search/facets/NamedEntityCollector.docx | Bin 0 -> 37351 bytes .../search/facets/NamedEntityCollector.java | 49 - .../facets/RetweetFacetCountIterator.docx | Bin 0 -> 37283 bytes .../facets/RetweetFacetCountIterator.java | 36 - 400 files changed, 31949 deletions(-) create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveTimeSlicer.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveTimeSlicer.java create mode 100644 src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.java create mode 100644 src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.java create mode 100644 src/java/com/twitter/search/earlybird/archive/PartitionedBatch.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/PartitionedBatch.java delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.bazel create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/BuiltAndFinalizedSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/BuiltAndFinalizedSegment.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/NotYetBuiltSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/NotYetBuiltSegment.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/RateLimitingSegmentHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/RateLimitingSegmentHandler.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderSegment.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.java create mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.java delete mode 100644 src/java/com/twitter/search/earlybird/common/BUILD create mode 100644 src/java/com/twitter/search/earlybird/common/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/common/Base64RequestResponseForLogging.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/Base64RequestResponseForLogging.java create mode 100644 src/java/com/twitter/search/earlybird/common/CaughtUpMonitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/CaughtUpMonitor.java create mode 100644 src/java/com/twitter/search/earlybird/common/ClientIdUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/ClientIdUtil.java create mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.java create mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.java create mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestPreLogger.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestPreLogger.java create mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdRequestUtil.java create mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.java create mode 100644 src/java/com/twitter/search/earlybird/common/NonPagingAssert.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/NonPagingAssert.java create mode 100644 src/java/com/twitter/search/earlybird/common/RequestResponseForLogging.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/RequestResponseForLogging.java create mode 100644 src/java/com/twitter/search/earlybird/common/RequestResponsePair.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/RequestResponsePair.java create mode 100644 src/java/com/twitter/search/earlybird/common/UnknownClientRequestForLogging.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/UnknownClientRequestForLogging.java delete mode 100644 src/java/com/twitter/search/earlybird/common/config/BUILD create mode 100644 src/java/com/twitter/search/earlybird/common/config/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/common/config/EarlybirdConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/config/EarlybirdConfig.java create mode 100644 src/java/com/twitter/search/earlybird/common/config/EarlybirdProperty.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/config/EarlybirdProperty.java delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/BUILD create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.java create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserTable.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserTable.java create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.java create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.java create mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserUpdatesChecker.docx delete mode 100644 src/java/com/twitter/search/earlybird/common/userupdates/UserUpdatesChecker.java delete mode 100644 src/java/com/twitter/search/earlybird/config/BUILD create mode 100644 src/java/com/twitter/search/earlybird/config/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/config/ServingRange.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/ServingRange.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierConfig.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierInfo.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoSource.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoSource.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoUtil.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoWrapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierInfoWrapper.java create mode 100644 src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.docx delete mode 100644 src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.java create mode 100644 src/java/com/twitter/search/earlybird/document/DeletedStatus.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/DeletedStatus.java create mode 100644 src/java/com/twitter/search/earlybird/document/DocumentFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/DocumentFactory.java create mode 100644 src/java/com/twitter/search/earlybird/document/ThriftDocumentPreprocessor.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/ThriftDocumentPreprocessor.java create mode 100644 src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.java create mode 100644 src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.java create mode 100644 src/java/com/twitter/search/earlybird/document/TimeSlicedThriftIndexingEvent.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/TimeSlicedThriftIndexingEvent.java create mode 100644 src/java/com/twitter/search/earlybird/document/TruncationTokenStreamWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/TruncationTokenStreamWriter.java create mode 100644 src/java/com/twitter/search/earlybird/document/TweetDocument.docx delete mode 100644 src/java/com/twitter/search/earlybird/document/TweetDocument.java create mode 100644 src/java/com/twitter/search/earlybird/exception/AlreadyInServerSetUpdateException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/AlreadyInServerSetUpdateException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/BadRequestException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/BadRequestException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/ClientException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/ClientException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/CriticalExceptionHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/CriticalExceptionHandler.java create mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdFinagleServerMonitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdFinagleServerMonitor.java create mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdRuntimeException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdRuntimeException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdStartupException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/EarlybirdStartupException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/FlushVersionMismatchException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/FlushVersionMismatchException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/MissingKafkaTopicException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/MissingKafkaTopicException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/MissingUserException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/MissingUserException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/NotInServerSetUpdateException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/NotInServerSetUpdateException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/TransientException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/TransientException.java create mode 100644 src/java/com/twitter/search/earlybird/exception/UncaughtExceptionHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/UncaughtExceptionHandler.java create mode 100644 src/java/com/twitter/search/earlybird/exception/WrappedKafkaApiException.docx delete mode 100644 src/java/com/twitter/search/earlybird/exception/WrappedKafkaApiException.java create mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdIndexConfigUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdIndexConfigUtil.java create mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdKafkaConsumersFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdKafkaConsumersFactory.java create mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdServerFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdServerFactory.java create mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdWireModule.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/EarlybirdWireModule.java create mode 100644 src/java/com/twitter/search/earlybird/factory/PartitionConfigUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/PartitionConfigUtil.java create mode 100644 src/java/com/twitter/search/earlybird/factory/ProductionEarlybirdKafkaConsumersFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/ProductionEarlybirdKafkaConsumersFactory.java create mode 100644 src/java/com/twitter/search/earlybird/factory/QueryCacheUpdaterScheduledExecutorService.docx delete mode 100644 src/java/com/twitter/search/earlybird/factory/QueryCacheUpdaterScheduledExecutorService.java create mode 100644 src/java/com/twitter/search/earlybird/index/AbstractInMemoryTimeMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/AbstractInMemoryTimeMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesBasedTimeMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesBasedTimeMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesBasedTweetIDMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesBasedTweetIDMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesHelper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/DocValuesHelper.java create mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSegment.java create mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSegmentFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSegmentFactory.java create mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSingleSegmentSearcher.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/EarlybirdSingleSegmentSearcher.java create mode 100644 src/java/com/twitter/search/earlybird/index/OptimizedTimeMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/OptimizedTimeMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/OptimizedTweetIDMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/OptimizedTweetIDMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/OutOfOrderRealtimeTweetIDMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/OutOfOrderRealtimeTweetIDMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/RealtimeTimeMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/RealtimeTimeMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/TimeMappingWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TimeMappingWriter.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDMapper.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDMapper.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDQuery.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDToInternalIDMap.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetIDToInternalIDMap.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchIndexExtensionsFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchIndexExtensionsFactory.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchLuceneIndexExtensionsData.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchLuceneIndexExtensionsData.java create mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchRealtimeIndexExtensionsData.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/TweetSearchRealtimeIndexExtensionsData.java delete mode 100644 src/java/com/twitter/search/earlybird/index/facets/BUILD create mode 100644 src/java/com/twitter/search/earlybird/index/facets/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/index/facets/FacetSkipList.docx delete mode 100644 src/java/com/twitter/search/earlybird/index/facets/FacetSkipList.java create mode 100644 src/java/com/twitter/search/earlybird/ml/ScoringModelsManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/ml/ScoringModelsManager.java create mode 100644 src/java/com/twitter/search/earlybird/partition/AudioSpaceEventsStreamIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/AudioSpaceEventsStreamIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/AudioSpaceTable.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/AudioSpaceTable.java create mode 100644 src/java/com/twitter/search/earlybird/partition/BalancingKafkaConsumer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/BalancingKafkaConsumer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/CompleteSegmentManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/CompleteSegmentManager.java create mode 100644 src/java/com/twitter/search/earlybird/partition/DynamicPartitionConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/DynamicPartitionConfig.java create mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndex.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndex.java create mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndexFlusher.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndexFlusher.java create mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndexLoader.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdIndexLoader.java create mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdKafkaConsumer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdKafkaConsumer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdStartup.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/EarlybirdStartup.java create mode 100644 src/java/com/twitter/search/earlybird/partition/FlowControlException.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/FlowControlException.java create mode 100644 src/java/com/twitter/search/earlybird/partition/HdfsUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/HdfsUtil.java create mode 100644 src/java/com/twitter/search/earlybird/partition/ISegmentWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/ISegmentWriter.java create mode 100644 src/java/com/twitter/search/earlybird/partition/IndexingResultCounts.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/IndexingResultCounts.java create mode 100644 src/java/com/twitter/search/earlybird/partition/InstrumentedQueue.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/InstrumentedQueue.java create mode 100644 src/java/com/twitter/search/earlybird/partition/KafkaStartup.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/KafkaStartup.java create mode 100644 src/java/com/twitter/search/earlybird/partition/MultiSegmentTermDictionaryManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/MultiSegmentTermDictionaryManager.java create mode 100644 src/java/com/twitter/search/earlybird/partition/OptimizationAndFlushingCoordinationLock.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/OptimizationAndFlushingCoordinationLock.java create mode 100644 src/java/com/twitter/search/earlybird/partition/OptimizingSegmentWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/OptimizingSegmentWriter.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfig.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfigLoader.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfigLoader.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfigLoadingException.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionConfigLoadingException.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionManager.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionManagerStartup.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionManagerStartup.java create mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/PartitionWriter.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SearchIndexingMetricSet.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SearchIndexingMetricSet.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentHdfsFlusher.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentHdfsFlusher.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentIndexStats.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentIndexStats.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentIndexStatsExporter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentIndexStatsExporter.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentInfo.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentLoader.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentLoader.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentManager.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentOptimizer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentOptimizer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentSyncConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentSyncConfig.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentSyncInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentSyncInfo.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentVulture.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentVulture.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentWarmer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentWarmer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SegmentWriter.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleSegmentIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleSegmentIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleStreamIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleStreamIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleUpdateIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/SimpleUpdateIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/StartupUserEventIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/StartupUserEventIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/StatusBatchFlushVersion.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/StatusBatchFlushVersion.java create mode 100644 src/java/com/twitter/search/earlybird/partition/TimeLimitedHadoopExistsCall.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/TimeLimitedHadoopExistsCall.java create mode 100644 src/java/com/twitter/search/earlybird/partition/TweetCreateHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/TweetCreateHandler.java create mode 100644 src/java/com/twitter/search/earlybird/partition/TweetUpdateHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/TweetUpdateHandler.java create mode 100644 src/java/com/twitter/search/earlybird/partition/UserPartitionUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/UserPartitionUtil.java create mode 100644 src/java/com/twitter/search/earlybird/partition/UserScrubGeoEventStreamIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/UserScrubGeoEventStreamIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/UserUpdatesStreamIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/UserUpdatesStreamIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/FreshStartupHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/FreshStartupHandler.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/KafkaOffsetPair.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/KafkaOffsetPair.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/PostOptimizationUpdatesIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/PostOptimizationUpdatesIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/PreOptimizationSegmentIndexer.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/PreOptimizationSegmentIndexer.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SegmentBuildInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SegmentBuildInfo.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SegmentTweetsIndexingResult.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SegmentTweetsIndexingResult.java create mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SkippedPickedCounter.docx delete mode 100644 src/java/com/twitter/search/earlybird/partition/freshstartup/SkippedPickedCounter.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/CachedFilterQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/CachedFilterQuery.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/CachedResultDocIdSetIterator.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/CachedResultDocIdSetIterator.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheConfig.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheConversionRules.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheConversionRules.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheManager.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheResultCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheResultCollector.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheUpdateTask.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheUpdateTask.java create mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheUpdater.docx delete mode 100644 src/java/com/twitter/search/earlybird/querycache/QueryCacheUpdater.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/DetectAntisocialVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/DetectAntisocialVisitor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/DetectFieldAnnotationVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/DetectFieldAnnotationVisitor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/EarlybirdLuceneQueryVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/EarlybirdLuceneQueryVisitor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/EarlybirdQueryHelper.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/EarlybirdQueryHelper.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermPairExtractor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermPairExtractor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermPairRewriteVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermPairRewriteVisitor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermQueryGroup.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/HighFrequencyTermQueryGroup.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/LuceneRelevanceQueryVisitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/LuceneRelevanceQueryVisitor.java create mode 100644 src/java/com/twitter/search/earlybird/queryparser/ProtectedOperatorQueryRewriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/queryparser/ProtectedOperatorQueryRewriter.java create mode 100644 src/java/com/twitter/search/earlybird/search/AbstractResultsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/AbstractResultsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/AntiGamingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/AntiGamingFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/EarlybirdLuceneSearcher.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/EarlybirdLuceneSearcher.java create mode 100644 src/java/com/twitter/search/earlybird/search/EarlybirdMultiSegmentSearcher.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/EarlybirdMultiSegmentSearcher.java create mode 100644 src/java/com/twitter/search/earlybird/search/GeoQuadTreeQueryBuilder.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/GeoQuadTreeQueryBuilder.java create mode 100644 src/java/com/twitter/search/earlybird/search/Hit.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/Hit.java create mode 100644 src/java/com/twitter/search/earlybird/search/SearchRequestInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SearchRequestInfo.java create mode 100644 src/java/com/twitter/search/earlybird/search/SearchResultsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SearchResultsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/SearchResultsInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SearchResultsInfo.java create mode 100644 src/java/com/twitter/search/earlybird/search/SimpleSearchResults.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SimpleSearchResults.java create mode 100644 src/java/com/twitter/search/earlybird/search/SocialFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SocialFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/SocialSearchResultsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/SocialSearchResultsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/AbstractFacetTermCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/AbstractFacetTermCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/DefaultFacetScorer.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/DefaultFacetScorer.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/EntityAnnotationCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/EntityAnnotationCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/ExpandedUrlCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/ExpandedUrlCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/ExplainFacetResultsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/ExplainFacetResultsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetLabelCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetLabelCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetRankingModule.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetRankingModule.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetResultsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetResultsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetScorer.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetScorer.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetSearchRequestInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/FacetSearchRequestInfo.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/HashingAndPruningFacetAccumulator.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/HashingAndPruningFacetAccumulator.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/NamedEntityCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/NamedEntityCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/RetweetFacetCountIterator.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/RetweetFacetCountIterator.java diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.docx new file mode 100644 index 0000000000000000000000000000000000000000..c193edb41a579deeb327e71d3225ffec313ca639 GIT binary patch literal 39504 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 B3e^Ar literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.java b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.java deleted file mode 100644 index 7620ace9b..000000000 --- a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentUpdater.java +++ /dev/null @@ -1,279 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.IOException; -import java.util.Date; - -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; - -import org.apache.commons.lang.time.FastDateFormat; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.metrics.SearchStatsReceiverImpl; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.common.util.zktrylock.ZooKeeperTryLockFactory; -import com.twitter.search.earlybird.EarlybirdIndexConfig; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.document.DocumentFactory; -import com.twitter.search.earlybird.document.TweetDocument; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.index.EarlybirdSegmentFactory; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.partition.SegmentHdfsFlusher; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentLoader; -import com.twitter.search.earlybird.partition.SegmentOptimizer; -import com.twitter.search.earlybird.partition.SegmentSyncConfig; -import com.twitter.search.earlybird.partition.SimpleSegmentIndexer; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; - -/** - * Given a segment, this class checks if the segment has an index built on HDFS: - * if not, use SimpleSegmentIndexer to build an index - * if yes, load the HDFS index, build a new index for the new status data which has dates newer - * than the HDFS index, then append the loaded HDFS index. - */ -public class ArchiveSegmentUpdater { - private static final Logger LOG = LoggerFactory.getLogger(ArchiveSegmentUpdater.class); - - private final SegmentSyncConfig sync; - private final EarlybirdIndexConfig earlybirdIndexConfig; - private final ZooKeeperTryLockFactory zkTryLockFactory; - private final SearchStatsReceiver statsReceiver = new SearchStatsReceiverImpl(); - private final SearchIndexingMetricSet searchIndexingMetricSet = - new SearchIndexingMetricSet(statsReceiver); - private final EarlybirdSearcherStats searcherStats = - new EarlybirdSearcherStats(statsReceiver); - private final SearchRateCounter indexNewSegment = - new SearchRateCounter("index_new_segment"); - private final SearchRateCounter updateExistingSegment = - new SearchRateCounter("update_existing_segment"); - private final SearchRateCounter skipExistingSegment = - new SearchRateCounter("skip_existing_segment"); - private Clock clock; - - public ArchiveSegmentUpdater(ZooKeeperTryLockFactory zooKeeperTryLockFactory, - SegmentSyncConfig sync, - EarlybirdIndexConfig earlybirdIndexConfig, - Clock clock) { - this.sync = sync; - this.earlybirdIndexConfig = earlybirdIndexConfig; - this.zkTryLockFactory = zooKeeperTryLockFactory; - this.clock = clock; - } - - private boolean canUpdateSegment(SegmentInfo segmentInfo) { - if (!(segmentInfo.getSegment() instanceof ArchiveSegment)) { - LOG.info("only ArchiveSegment is available for updating now: " - + segmentInfo); - return false; - } - - if (!segmentInfo.isEnabled()) { - LOG.debug("Segment is disabled: " + segmentInfo); - return false; - } - - if (segmentInfo.isComplete() || segmentInfo.isIndexing() - || segmentInfo.getSyncInfo().isLoaded()) { - LOG.debug("Cannot update already indexed segment: " + segmentInfo); - return false; - } - - return true; - } - - /** - * Given a segment, checks if the segment has an index built on HDFS: - * if not, use SimpleSegmentIndexer to build an index - * if yes, load the HDFS index, build a new index for the new status data which has dates newer - * than the HDFS index, then append the loaded HDFS index. - * - * Returns whether the segment was successfully updated. - */ - public boolean updateSegment(SegmentInfo segmentInfo) { - Preconditions.checkArgument(segmentInfo.getSegment() instanceof ArchiveSegment); - if (!canUpdateSegment(segmentInfo)) { - return false; - } - - if (segmentInfo.isIndexing()) { - LOG.error("Segment is already being indexed: " + segmentInfo); - return false; - } - - final Date hdfsEndDate = ArchiveHDFSUtils.getSegmentEndDateOnHdfs(sync, segmentInfo); - if (hdfsEndDate == null) { - indexNewSegment.increment(); - if (!indexSegment(segmentInfo, ArchiveSegment.MATCH_ALL_DATE_PREDICATE)) { - return false; - } - } else { - final Date curEndDate = ((ArchiveSegment) segmentInfo.getSegment()).getDataEndDate(); - if (!hdfsEndDate.before(curEndDate)) { - skipExistingSegment.increment(); - LOG.info("Segment is up-to-date: " + segmentInfo.getSegment().getTimeSliceID() - + " Found flushed segment on HDFS with end date: " - + FastDateFormat.getInstance("yyyyMMdd").format(hdfsEndDate)); - segmentInfo.setComplete(true); - segmentInfo.getSyncInfo().setFlushed(true); - return true; - } - - updateExistingSegment.increment(); - LOG.info("Updating segment: " + segmentInfo.getSegment().getTimeSliceID() - + "; new endDate will be " + FastDateFormat.getInstance("yyyyMMdd").format(curEndDate)); - - if (!updateSegment(segmentInfo, hdfsEndDate)) { - return false; - } - } - - boolean success = SegmentOptimizer.optimize(segmentInfo); - if (!success) { - // Clean up the segment dir on local disk - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - LOG.info("Error optimizing segment: " + segmentInfo); - return false; - } - - // Verify segment before uploading. - success = ArchiveSegmentVerifier.verifySegment(segmentInfo); - if (!success) { - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - LOG.info("Segment not uploaded to HDFS because it did not pass verification: " + segmentInfo); - return false; - } - - // upload the index to HDFS - success = new SegmentHdfsFlusher(zkTryLockFactory, sync, false) - .flushSegmentToDiskAndHDFS(segmentInfo); - if (success) { - ArchiveHDFSUtils.deleteHdfsSegmentDir(sync, segmentInfo, false, true); - } else { - // Clean up the segment dir on hdfs - ArchiveHDFSUtils.deleteHdfsSegmentDir(sync, segmentInfo, true, false); - LOG.info("Error uploading segment to HDFS: " + segmentInfo); - } - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - - return success; - } - - /** - * Build index for the given segmentInfo. Only those statuses passing the dateFilter are indexed. - */ - private boolean indexSegment(final SegmentInfo segmentInfo, Predicate dateFilter) { - Preconditions.checkArgument(segmentInfo.getSegment() instanceof ArchiveSegment); - - RecordReader documentReader = null; - try { - ArchiveSegment archiveSegment = (ArchiveSegment) segmentInfo.getSegment(); - DocumentFactory documentFactory = - earlybirdIndexConfig.createDocumentFactory(); - documentReader = archiveSegment.getStatusRecordReader(documentFactory, dateFilter); - - // Read and index the statuses - boolean success = new SimpleSegmentIndexer(documentReader, searchIndexingMetricSet) - .indexSegment(segmentInfo); - if (!success) { - // Clean up segment dir on local disk - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - LOG.info("Error indexing segment: " + segmentInfo); - } - - return success; - } catch (IOException e) { - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - LOG.info("Exception while indexing segment: " + segmentInfo, e); - return false; - } finally { - if (documentReader != null) { - documentReader.stop(); - } - } - } - - /** - * Load the index built on HDFS for the given segmentInfo, index the new data and append the - * HDFS index to the new indexed segment - */ - private boolean updateSegment(final SegmentInfo segmentInfo, final Date hdfsEndDate) { - SegmentInfo hdfsSegmentInfo = loadSegmentFromHdfs(segmentInfo, hdfsEndDate); - if (hdfsSegmentInfo == null) { - return indexSegment(segmentInfo, ArchiveSegment.MATCH_ALL_DATE_PREDICATE); - } - - boolean success = indexSegment(segmentInfo, input -> { - // we're updating the segment - only index days after the old end date, - // and we're sure that the previous days have already been indexed. - return input.after(hdfsEndDate); - }); - if (!success) { - LOG.error("Error indexing new data: " + segmentInfo); - return indexSegment(segmentInfo, ArchiveSegment.MATCH_ALL_DATE_PREDICATE); - } - - // Now, append the index loaded from hdfs - try { - segmentInfo.getIndexSegment().append(hdfsSegmentInfo.getIndexSegment()); - hdfsSegmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - LOG.info("Deleted local segment directories with end date " + hdfsEndDate + " : " - + segmentInfo); - } catch (IOException e) { - LOG.warn("Caught IOException while appending segment " + hdfsSegmentInfo.getSegmentName(), e); - hdfsSegmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - return false; - } - - segmentInfo.setComplete(true); - return true; - } - - /** - * Load the index built on HDFS for the given segmentInfo and end date - */ - private SegmentInfo loadSegmentFromHdfs(final SegmentInfo segmentInfo, final Date hdfsEndDate) { - Preconditions.checkArgument(segmentInfo.getSegment() instanceof ArchiveSegment); - - ArchiveSegment segment = new ArchiveSegment( - segmentInfo.getTimeSliceID(), - EarlybirdConfig.getMaxSegmentSize(), - segmentInfo.getNumPartitions(), - segmentInfo.getSegment().getHashPartitionID(), - hdfsEndDate); - EarlybirdSegmentFactory factory = new EarlybirdSegmentFactory( - earlybirdIndexConfig, - searchIndexingMetricSet, - searcherStats, - clock); - - SegmentInfo hdfsSegmentInfo; - - try { - hdfsSegmentInfo = new SegmentInfo(segment, factory, sync); - CriticalExceptionHandler criticalExceptionHandler = - new CriticalExceptionHandler(); - - boolean success = new SegmentLoader(sync, criticalExceptionHandler) - .load(hdfsSegmentInfo); - if (!success) { - // If not successful, segmentLoader has already cleaned up the local dir. - LOG.info("Error loading hdfs segment " + hdfsSegmentInfo - + ", building segment from scratch."); - hdfsSegmentInfo = null; - } - } catch (IOException e) { - LOG.error("Exception while loading segment from hdfs: " + segmentInfo, e); - hdfsSegmentInfo = null; - } - - return hdfsSegmentInfo; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.docx new file mode 100644 index 0000000000000000000000000000000000000000..9ba90dfa85210c5b130ad37de854bb1d929bfcbd GIT binary patch literal 37468 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.java b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.java deleted file mode 100644 index 2eb23265e..000000000 --- a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentVerifier.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.IOException; -import java.util.List; - -import com.google.common.annotations.VisibleForTesting; - -import org.apache.lucene.index.DirectoryReader; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.store.Directory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.earlybird.partition.SegmentInfo; - -public final class ArchiveSegmentVerifier { - private static final Logger LOG = LoggerFactory.getLogger(ArchiveSegmentVerifier.class); - - private ArchiveSegmentVerifier() { - } - - @VisibleForTesting - static boolean shouldVerifySegment(SegmentInfo segmentInfo) { - if (segmentInfo.isIndexing()) { - LOG.warn("ArchiveSegmentVerifier got segment still indexing."); - return false; - } - - if (!segmentInfo.isComplete()) { - LOG.warn("ArchiveSegmentVerifyer got incomplete segment."); - return false; - } - - if (!segmentInfo.isOptimized()) { - LOG.warn("ArchiveSegmentVerifyer got unoptimized segment."); - return false; - } - - return true; - } - - /** - * Verifies an archive segment has a sane number of leaves. - */ - public static boolean verifySegment(SegmentInfo segmentInfo) { - if (!shouldVerifySegment(segmentInfo)) { - return false; - } - Directory directory = segmentInfo.getIndexSegment().getLuceneDirectory(); - return verifyLuceneIndex(directory); - } - - private static boolean verifyLuceneIndex(Directory directory) { - try { - DirectoryReader indexerReader = DirectoryReader.open(directory); - List leaves = indexerReader.getContext().leaves(); - if (leaves.size() != 1) { - LOG.warn("Lucene index does not have exactly one segment: " + leaves.size() + " != 1. " - + "Lucene segments should have been merged during optimization."); - return false; - } - - LeafReader reader = leaves.get(0).reader(); - if (reader.numDocs() <= 0) { - LOG.warn("Lucene index has no document: " + reader); - return false; - } - return true; - } catch (IOException e) { - LOG.warn("Found bad lucene index at: " + directory); - return false; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveTimeSlicer.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveTimeSlicer.docx new file mode 100644 index 0000000000000000000000000000000000000000..94814314c5a7dbe610e7d22e1282a5c307cc798d GIT binary patch literal 40365 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 ASCENDING = - (o1, o2) -> Long.compare(o1.getTweetID(), o2.getTweetID()); - - private static final Comparator DESCENDING = - (o1, o2) -> Long.compare(o2.getTweetID(), o1.getTweetID()); - - // Represents a number of daily batches which will go into a segment. - public static final class ArchiveTimeSlice { - private Date startDate; - private Date endDate; - private int statusCount; - private final DailyStatusBatches directory; - private final ArchiveEarlybirdIndexConfig earlybirdIndexConfig; - - // This list is always ordered from oldest day, to the newest day. - // For the on-disk archive, we reverse the days in getTweetReaders(). - private final List batches = Lists.newArrayList(); - - private ArchiveTimeSlice(DailyStatusBatches directory, - ArchiveEarlybirdIndexConfig earlybirdIndexConfig) { - this.directory = directory; - this.earlybirdIndexConfig = earlybirdIndexConfig; - } - - public Date getEndDate() { - return endDate; - } - - public int getStatusCount() { - return statusCount; - } - - public int getNumHashPartitions() { - return batches.isEmpty() ? 0 : batches.get(0).getNumHashPartitions(); - } - - /** - * Returns a reader for reading tweets from this timeslice. - * - * @param archiveSegment The segment to which the timeslice belongs. - * @param documentFactory The ThriftIndexingEvent to TweetDocument converter. - * @param filter A filter that determines what dates should be read. - */ - public RecordReader getStatusReader( - ArchiveSegment archiveSegment, - DocumentFactory documentFactory, - Predicate filter) throws IOException { - // We no longer support ThriftStatus based document factories. - Preconditions.checkState(documentFactory instanceof ThriftIndexingEventDocumentFactory); - - final int hashPartitionID = archiveSegment.getHashPartitionID(); - List> readers = new ArrayList<>(batches.size()); - List orderedForReading = orderBatchesForReading(batches); - LOG.info("Creating new status reader for hashPartition: " - + hashPartitionID + " timeslice: " + getDescription()); - - for (DailyStatusBatch batch : orderedForReading) { - if (filter.apply(batch.getDate())) { - LOG.info("Adding reader for " + batch.getDate() + " " + getDescription()); - PartitionedBatch partitionedBatch = batch.getPartition(hashPartitionID); - // Don't even try to create a reader if the partition is empty. - // There does not seem to be any problem in production now, but HDFS FileSystem's javadoc - // does indicate that listStatus() is allowed to throw a FileNotFoundException if the - // partition does not exist. This check makes the code more robust against future - // HDFS FileSystem implementation changes. - if (partitionedBatch.getStatusCount() > 0) { - RecordReader tweetReaders = partitionedBatch.getTweetReaders( - archiveSegment, - directory.getStatusPathToUseForDay(batch.getDate()), - documentFactory); - readers.add(tweetReaders); - } - } else { - LOG.info("Filtered reader for " + batch.getDate() + " " + getDescription()); - } - } - - LOG.info("Creating reader for timeslice: " + getDescription() - + " with " + readers.size() + " readers"); - - return new MergingSortedRecordReader(getMergingComparator(), readers); - } - - private List orderBatchesForReading(List orderedBatches) { - // For the index formats using stock lucene, we want the most recent days to be indexed first. - // In the twitter in-memory optimized indexes, older tweets will be added first, and - // optimization will reverse the documents to make most recent tweets be first. - return this.earlybirdIndexConfig.isUsingLIFODocumentOrdering() - ? orderedBatches : Lists.reverse(orderedBatches); - } - - private Comparator getMergingComparator() { - // We always want to retrieve larger tweet ids first. - // LIFO means that the smaller ids get inserted first --> ASCENDING order. - // FIFO would mean that we want to first insert the larger ids --> DESCENDING order. - return this.earlybirdIndexConfig.isUsingLIFODocumentOrdering() - ? ASCENDING : DESCENDING; - } - - /** - * Returns the smallest indexed tweet ID in this timeslice for the given partition. - * - * @param hashPartitionID The partition. - */ - public long getMinStatusID(int hashPartitionID) { - if (batches.isEmpty()) { - return 0; - } - - for (int i = 0; i < batches.size(); i++) { - long minStatusID = batches.get(i).getPartition(hashPartitionID).getMinStatusID(); - if (minStatusID != DailyStatusBatch.EMPTY_BATCH_STATUS_ID) { - return minStatusID; - } - } - - return 0; - } - - /** - * Returns the highest indexed tweet ID in this timeslice for the given partition. - * - * @param hashPartitionID The partition. - */ - public long getMaxStatusID(int hashPartitionID) { - if (batches.isEmpty()) { - return Long.MAX_VALUE; - } - - for (int i = batches.size() - 1; i >= 0; i--) { - long maxStatusID = batches.get(i).getPartition(hashPartitionID).getMaxStatusID(); - if (maxStatusID != DailyStatusBatch.EMPTY_BATCH_STATUS_ID) { - return maxStatusID; - } - } - - return Long.MAX_VALUE; - } - - /** - * Returns a string with some information for this timeslice. - */ - public String getDescription() { - StringBuilder builder = new StringBuilder(); - builder.append("TimeSlice[start date="); - builder.append(DailyStatusBatches.DATE_FORMAT.format(startDate)); - builder.append(", end date="); - builder.append(DailyStatusBatches.DATE_FORMAT.format(endDate)); - builder.append(", status count="); - builder.append(statusCount); - builder.append(", days count="); - builder.append(batches.size()); - builder.append("]"); - return builder.toString(); - } - } - - private final int maxSegmentSize; - private final DailyStatusBatches dailyStatusBatches; - private final Date tierStartDate; - private final Date tierEndDate; - private final ArchiveEarlybirdIndexConfig earlybirdIndexConfig; - - private List lastCachedTimeslices = null; - - public ArchiveTimeSlicer(int maxSegmentSize, - DailyStatusBatches dailyStatusBatches, - ArchiveEarlybirdIndexConfig earlybirdIndexConfig) { - this(maxSegmentSize, dailyStatusBatches, TierConfig.DEFAULT_TIER_START_DATE, - TierConfig.DEFAULT_TIER_END_DATE, earlybirdIndexConfig); - } - - public ArchiveTimeSlicer(int maxSegmentSize, - DailyStatusBatches dailyStatusBatches, - Date tierStartDate, - Date tierEndDate, - ArchiveEarlybirdIndexConfig earlybirdIndexConfig) { - this.maxSegmentSize = maxSegmentSize; - this.dailyStatusBatches = dailyStatusBatches; - this.tierStartDate = tierStartDate; - this.tierEndDate = tierEndDate; - this.earlybirdIndexConfig = earlybirdIndexConfig; - } - - private boolean cacheIsValid() throws IOException { - return lastCachedTimeslices != null - && !lastCachedTimeslices.isEmpty() - && cacheIsValid(lastCachedTimeslices.get(lastCachedTimeslices.size() - 1).endDate); - } - - private boolean cacheIsValid(Date lastDate) throws IOException { - if (lastCachedTimeslices == null || lastCachedTimeslices.isEmpty()) { - return false; - } - - // Check if we have a daily batch newer than the last batch used for the newest timeslice. - Calendar cal = Calendar.getInstance(); - cal.setTime(lastDate); - cal.add(Calendar.DATE, 1); - Date nextDate = cal.getTime(); - - boolean foundBatch = dailyStatusBatches.hasValidBatchForDay(nextDate); - - LOG.info("Checking cache: Looked for valid batch for day {}. Found: {}", - DailyStatusBatches.DATE_FORMAT.format(nextDate), foundBatch); - - return !foundBatch; - } - - private boolean timesliceIsFull(ArchiveTimeSlice timeSlice, DailyStatusBatch batch) { - return timeSlice.statusCount + batch.getMaxPerPartitionStatusCount() > maxSegmentSize; - } - - private void doTimeSlicing() throws IOException { - dailyStatusBatches.refresh(); - - lastCachedTimeslices = Lists.newArrayList(); - ArchiveTimeSlice currentTimeSlice = null; - - // Iterate over each day and add it to the current timeslice, until it gets full. - for (DailyStatusBatch batch : dailyStatusBatches.getStatusBatches()) { - if (!batch.isValid()) { - LOG.warn("Skipping hole: " + batch.getDate()); - continue; - } - - if (currentTimeSlice == null || timesliceIsFull(currentTimeSlice, batch)) { - if (currentTimeSlice != null) { - LOG.info("Filled timeslice: " + currentTimeSlice.getDescription()); - } - currentTimeSlice = new ArchiveTimeSlice(dailyStatusBatches, earlybirdIndexConfig); - currentTimeSlice.startDate = batch.getDate(); - lastCachedTimeslices.add(currentTimeSlice); - } - - currentTimeSlice.endDate = batch.getDate(); - currentTimeSlice.statusCount += batch.getMaxPerPartitionStatusCount(); - currentTimeSlice.batches.add(batch); - } - LOG.info("Last timeslice: {}", currentTimeSlice.getDescription()); - - LOG.info("Done with time slicing. Number of timeslices: {}", - lastCachedTimeslices.size()); - } - - /** - * Returns all timeslices for this earlybird. - */ - public List getTimeSlices() throws IOException { - if (cacheIsValid()) { - return lastCachedTimeslices; - } - - LOG.info("Cache is outdated. Loading new daily batches now..."); - - doTimeSlicing(); - - return lastCachedTimeslices != null ? Collections.unmodifiableList(lastCachedTimeslices) : null; - } - - /** - * Return the timeslices that overlap the tier start/end date ranges if they are specified - */ - public List getTimeSlicesInTierRange() throws IOException { - List timeSlices = getTimeSlices(); - if (tierStartDate == TierConfig.DEFAULT_TIER_START_DATE - && tierEndDate == TierConfig.DEFAULT_TIER_END_DATE) { - return timeSlices; - } - - List filteredTimeSlice = Lists.newArrayList(); - for (ArchiveTimeSlice timeSlice : timeSlices) { - if (timeSlice.startDate.before(tierEndDate) && !timeSlice.endDate.before(tierStartDate)) { - filteredTimeSlice.add(timeSlice); - } - } - - return filteredTimeSlice; - } - - @VisibleForTesting - protected DailyStatusBatches getDailyStatusBatches() { - return dailyStatusBatches; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.docx b/src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.docx new file mode 100644 index 0000000000000000000000000000000000000000..c8b820d8771ed329e6298ee3aaf3869f17814f63 GIT binary patch literal 38735 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 I6Tf}?7p54Wo&W#< literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.java b/src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.java deleted file mode 100644 index 6dcc852ec..000000000 --- a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatch.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.IOException; -import java.util.Date; -import java.util.Map; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.JsonParseException; - -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents a day's worth of statuses (tweets) for multiple hash partitions. - * - * Note that what this class contains is not the data, but metadata. - * - * A day of tweets will come from: - * - A scrubgen, if it has happened before the scrubgen date. - * - Our daily jobs pipeline, if it has happened after that. - * - * This class checks the _SUCCESS file exists in the "statuses" subdirectory and extracts the status - * count, min status id and max status id. - */ -public class DailyStatusBatch implements Comparable { - private static final Logger LOG = LoggerFactory.getLogger(DailyStatusBatch.class); - - public static final long EMPTY_BATCH_STATUS_ID = -1; - private static final String PARTITION_FORMAT = "p_%d_of_%d"; - private static final String SUCCESS_FILE_NAME = "_SUCCESS"; - - private final Map hashPartitionToStatuses = Maps.newHashMap(); - - private final Date date; - private final int numHashPartitions; - private final boolean hasSuccessFiles; - - public DailyStatusBatch(Date date, int numHashPartitions, Path statusPath, FileSystem hdfs) { - this.date = date; - this.numHashPartitions = numHashPartitions; - this.hasSuccessFiles = checkForSuccessFile(hdfs, date, statusPath); - } - - public Date getDate() { - return date; - } - - /** - * Check for the presence of the _SUCCESS file for the given day's path on HDFS for the statuses - * field group. - */ - private boolean checkForSuccessFile(FileSystem hdfs, Date inputDate, Path statusPath) { - Path dayPath = new Path(statusPath, ArchiveHDFSUtils.dateToPath(inputDate, "/")); - Path successFilePath = new Path(dayPath, SUCCESS_FILE_NAME); - try { - return hdfs.getFileStatus(successFilePath).isFile(); - } catch (IOException e) { - LOG.error("Could not verify existence of the _SUCCESS file. Assuming it doesn't exist.", e); - } - return false; - } - - /** - * Loads the data for this day for the given partition. - */ - public PartitionedBatch addPartition(FileSystem hdfs, Path dayPath, int hashPartitionID) - throws IOException { - String partitionDir = String.format(PARTITION_FORMAT, hashPartitionID, numHashPartitions); - Path path = new Path(dayPath, partitionDir); - PartitionedBatch batch = - new PartitionedBatch(path, hashPartitionID, numHashPartitions, date); - batch.load(hdfs); - hashPartitionToStatuses.put(hashPartitionID, batch); - return batch; - } - - public PartitionedBatch getPartition(int hashPartitionID) { - return hashPartitionToStatuses.get(hashPartitionID); - } - - /** - * Returns the greatest status count in all partitions belonging to this batch. - */ - public int getMaxPerPartitionStatusCount() { - int maxPerPartitionStatusCount = 0; - for (PartitionedBatch batch : hashPartitionToStatuses.values()) { - maxPerPartitionStatusCount = Math.max(batch.getStatusCount(), maxPerPartitionStatusCount); - } - return maxPerPartitionStatusCount; - } - - public int getNumHashPartitions() { - return numHashPartitions; - } - - @VisibleForTesting - boolean hasSuccessFiles() { - return hasSuccessFiles; - } - - /** - * Returns true if the _status_counts files could be found in each - * hash partition subfolder that belongs to this timeslice - * AND the _SUCCESS file can be found at the root folder for day - */ - public boolean isValid() { - // make sure we have data for all hash partitions - for (int i = 0; i < numHashPartitions; i++) { - PartitionedBatch day = hashPartitionToStatuses.get(i); - if (day == null || !day.hasStatusCount() || day.isDisallowedEmptyPartition()) { - return false; - } - } - return hasSuccessFiles; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("DailyStatusBatch[date=").append(date) - .append(",valid=").append(isValid()) - .append(",hasSuccessFiles=").append(hasSuccessFiles) - .append(",numHashPartitions=").append(numHashPartitions) - .append("]:\n"); - for (int i = 0; i < numHashPartitions; i++) { - builder.append('\t').append(hashPartitionToStatuses.get(i).toString()).append('\n'); - } - return builder.toString(); - } - - @Override - public int compareTo(DailyStatusBatch o) { - return date.compareTo(o.date); - } - - /** - * Serialize DailyStatusBatch to a json string. - */ - public String serializeToJson() { - return serializeToJson(new Gson()); - } - - @VisibleForTesting - String serializeToJson(Gson gson) { - return gson.toJson(this); - } - - /** - * Given a json string, parse its fields and construct a daily status batch. - * @param batchStr the json string representation of a daily status batch. - * @return the daily status batch constructed; if the string is of invalid format, null will be - * returned. - */ - static DailyStatusBatch deserializeFromJson(String batchStr) { - try { - return new Gson().fromJson(batchStr, DailyStatusBatch.class); - } catch (JsonParseException e) { - LOG.error("Error parsing json string: " + batchStr, e); - return null; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.docx b/src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.docx new file mode 100644 index 0000000000000000000000000000000000000000..ef745e791cc986401f47f7ef7c552cba460aa485 GIT binary patch literal 43937 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 MX!BtH8Pov$506B@wg3PC literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.java b/src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.java deleted file mode 100644 index fa45a6ca3..000000000 --- a/src/java/com/twitter/search/earlybird/archive/DailyStatusBatches.java +++ /dev/null @@ -1,702 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.NavigableMap; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.base.Stopwatch; -import com.google.common.collect.Maps; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.time.FastDateFormat; -import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.quantity.Amount; -import com.twitter.common.quantity.Time; -import com.twitter.search.common.database.DatabaseConfig; -import com.twitter.search.common.util.date.DateUtil; -import com.twitter.search.common.util.io.LineRecordFileReader; -import com.twitter.search.common.util.zktrylock.TryLock; -import com.twitter.search.common.util.zktrylock.ZooKeeperTryLockFactory; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.search.earlybird.partition.HdfsUtil; -import com.twitter.search.earlybird.partition.StatusBatchFlushVersion; - -/** - * Provides access to preprocessed statuses (tweets) to be indexed by archive search earlybirds. - * - * These tweets can be coming from a scrub gen or from the output of the daily jobs. - */ -public class DailyStatusBatches { - private static final Logger LOG = LoggerFactory.getLogger(DailyStatusBatches.class); - - // Maximum time to spend on obtaining daily status batches by computing or loading from HDFS - private static final Amount MAX_TIME_ALLOWED_DAILY_STATUS_BATCHES_MINUTES = - Amount.of(EarlybirdConfig.getLong("daily_status_batches_max_initial_load_time_minutes"), - Time.MINUTES); - // Time to wait before trying again when obtaining daily status batches fails - private static final Amount DAILY_STATUS_BATCHES_WAITING_TIME_MINUTES = - Amount.of(EarlybirdConfig.getLong("daily_status_batches_waiting_time_minutes"), - Time.MINUTES); - private static final String DAILY_STATUS_BATCHES_SYNC_PATH = - EarlybirdProperty.ZK_APP_ROOT.get() + "/daily_batches_sync"; - private static final String DAILY_BATCHES_ZK_LOCK = "daily_batches_zk_lock"; - private static final Amount DAILY_STATUS_BATCHES_ZK_LOCK_EXPIRATION_MINUTES = - Amount.of(EarlybirdConfig.getLong("daily_status_batches_zk_lock_expiration_minutes"), - Time.MINUTES); - - static final FastDateFormat DATE_FORMAT = FastDateFormat.getInstance("yyyyMMdd"); - - // before this date, there was no twitter - private static final Date FIRST_TWITTER_DAY = DateUtil.toDate(2006, 2, 1); - - private static final String STATUS_BATCHES_PREFIX = "status_batches"; - - private final String rootDir = - EarlybirdConfig.getString("hdfs_offline_segment_sync_dir", "top_archive_statuses"); - - private final String buildGen = - EarlybirdConfig.getString("offline_segment_build_gen", "bg_1"); - - public static final String STATUS_SUBDIR_NAME = "statuses"; - public static final String LAYOUT_SUBDIR_NAME = "layouts"; - public static final String SCRUB_GEN_SUFFIX_PATTERN = "scrubbed/%s"; - - private static final String INTERMEDIATE_COUNTS_SUBDIR_NAME = "counts"; - private static final String SUCCESS_FILE_NAME = "_SUCCESS"; - private static final Pattern HASH_PARTITION_PATTERN = Pattern.compile("p_(\\d+)_of_(\\d+)"); - private static final Date FIRST_TWEET_DAY = DateUtil.toDate(2006, 3, 21); - - private final Path rootPath = new Path(rootDir); - private final Path buildGenPath = new Path(rootPath, buildGen); - private final Path statusPath = new Path(buildGenPath, STATUS_SUBDIR_NAME); - - private final NavigableMap statusBatches = Maps.newTreeMap(); - - private Date firstValidDay = null; - private Date lastValidDay = null; - - private final ZooKeeperTryLockFactory zkTryLockFactory; - private final Date scrubGenDay; - private long numberOfDaysWithValidScrubGenData; - - public DailyStatusBatches( - ZooKeeperTryLockFactory zooKeeperTryLockFactory, Date scrubGenDay) throws IOException { - this.zkTryLockFactory = zooKeeperTryLockFactory; - this.scrubGenDay = scrubGenDay; - - FileSystem hdfs = null; - try { - hdfs = HdfsUtil.getHdfsFileSystem(); - verifyDirectory(hdfs); - } finally { - IOUtils.closeQuietly(hdfs); - } - } - - @VisibleForTesting - public Date getScrubGenDay() { - return scrubGenDay; - } - - public Collection getStatusBatches() { - return statusBatches.values(); - } - - /** - * Reset the states of the directory - */ - private void resetDirectory() { - statusBatches.clear(); - firstValidDay = null; - lastValidDay = null; - } - - /** - * Indicate whether the directory has been initialized - */ - private boolean isInitialized() { - return lastValidDay != null; - } - - /** - * Load the daily status batches from HDFS; return true if one or more batches could be loaded. - **/ - private boolean refreshByLoadingHDFSStatusBatches(final FileSystem fs) throws IOException { - // first find the latest valid end date of statuses - final Date lastValidStatusDay = getLastValidInputDateFromNow(fs); - if (lastValidStatusDay != null) { - if (hasStatusBatchesOnHdfs(fs, lastValidStatusDay)) { - if (loadStatusBatchesFromHdfs(fs, lastValidStatusDay)) { - return true; - } - } - } - - resetDirectory(); - return false; - } - - /** - * Checks the directory for new data and returns true, if one or more new batches could be loaded. - */ - public void refresh() throws IOException { - final FileSystem hdfs = HdfsUtil.getHdfsFileSystem(); - - final Stopwatch stopwatch = Stopwatch.createStarted(); - try { - if (!isInitialized()) { - if (initializeDailyStatusBatches(hdfs, stopwatch)) { - LOG.info("Successfully obtained daily status batches after {}", stopwatch); - } else { - String errMsg = "Failed to load or compute daily status batches after " - + stopwatch.toString(); - LOG.error(errMsg); - throw new IOException(errMsg); - } - } else { - loadNewDailyBatches(hdfs); - } - } finally { - IOUtils.closeQuietly(hdfs); - } - } - - private boolean initializeDailyStatusBatches(final FileSystem hdfs, - final Stopwatch stopwatch) throws IOException { - long timeSpentOnDailyBatches = 0L; - long maxAllowedTimeMs = MAX_TIME_ALLOWED_DAILY_STATUS_BATCHES_MINUTES.as(Time.MILLISECONDS); - long waitingTimeMs = DAILY_STATUS_BATCHES_WAITING_TIME_MINUTES.as(Time.MILLISECONDS); - boolean firstLoop = true; - LOG.info("Starting to load or compute daily status batches for the first time."); - while (timeSpentOnDailyBatches <= maxAllowedTimeMs && !Thread.currentThread().isInterrupted()) { - if (!firstLoop) { - try { - LOG.info("Sleeping " + waitingTimeMs - + " millis before trying to obtain daily batches again"); - Thread.sleep(waitingTimeMs); - } catch (InterruptedException e) { - LOG.warn("Interrupted while waiting to load daily batches", e); - Thread.currentThread().interrupt(); - break; - } - } - - if (isStatusBatchLoadingEnabled() && refreshByLoadingHDFSStatusBatches(hdfs)) { - LOG.info("Successfully loaded daily status batches after {}", stopwatch); - return true; - } - - final AtomicBoolean successRef = new AtomicBoolean(false); - if (computeDailyBatchesWithZKLock(hdfs, successRef, stopwatch)) { - return successRef.get(); - } - - timeSpentOnDailyBatches = stopwatch.elapsed(TimeUnit.MILLISECONDS); - firstLoop = false; - } - - return false; - } - - private boolean computeDailyBatchesWithZKLock(final FileSystem hdfs, - final AtomicBoolean successRef, - final Stopwatch stopwatch) throws IOException { - // Using a global lock to coordinate among earlybirds and segment builders so that only - // one instance would hit the HDFS name node to query the daily status directories - TryLock lock = zkTryLockFactory.createTryLock( - DatabaseConfig.getLocalHostname(), - DAILY_STATUS_BATCHES_SYNC_PATH, - DAILY_BATCHES_ZK_LOCK, - DAILY_STATUS_BATCHES_ZK_LOCK_EXPIRATION_MINUTES); - - return lock.tryWithLock(() -> { - LOG.info("Obtained ZK lock to compute daily status batches after {}", stopwatch); - successRef.set(initialLoadDailyBatchInfos(hdfs)); - if (successRef.get()) { - LOG.info("Successfully computed daily status batches after {}", stopwatch); - if (isStatusBatchFlushingEnabled()) { - LOG.info("Starting to store daily status batches to HDFS"); - if (storeStatusBatchesToHdfs(hdfs, lastValidDay)) { - LOG.info("Successfully stored daily status batches to HDFS"); - } else { - LOG.warn("Failed storing daily status batches to HDFS"); - } - } - } else { - LOG.info("Failed loading daily status info"); - } - }); - } - - private void verifyDirectory(FileSystem hdfs) throws IOException { - if (!hdfs.exists(rootPath)) { - throw new IOException("Root dir '" + rootPath + "' does not exist."); - } - - if (!hdfs.exists(buildGenPath)) { - throw new IOException("Build gen dir '" + buildGenPath + "' does not exist."); - } - - if (!hdfs.exists(statusPath)) { - throw new IOException("Status dir '" + statusPath + "' does not exist."); - } - } - - private void loadNewDailyBatches(FileSystem hdfs) throws IOException { - Preconditions.checkNotNull(lastValidDay); - - Calendar day = Calendar.getInstance(); - day.setTime(lastValidDay); - day.add(Calendar.DATE, 1); - - while (loadDay(hdfs, day.getTime()) != null) { - lastValidDay = day.getTime(); - day.add(Calendar.DATE, 1); - } - } - - private boolean initialLoadDailyBatchInfos(FileSystem hdfs) throws IOException { - LOG.info("Starting to build timeslice map from scratch."); - - final Date lastValidStatusDay = getLastValidInputDateFromNow(hdfs); - - if (lastValidStatusDay == null) { - LOG.warn("No data found in " + statusPath + " and scrubbed path"); - return false; - } - int mostRecentYear = DateUtil.getCalendar(lastValidStatusDay).get(Calendar.YEAR); - for (int year = 2006; year <= mostRecentYear; ++year) { - // construct path to avoid hdfs.listStatus() calls - Calendar day = Calendar.getInstance(); - day.set(year, Calendar.JANUARY, 1, 0, 0, 0); - day.set(Calendar.MILLISECOND, 0); - - Calendar yearEnd = Calendar.getInstance(); - yearEnd.set(year, Calendar.DECEMBER, 31, 0, 0, 0); - yearEnd.set(Calendar.MILLISECOND, 0); - - if (lastValidDay != null) { - // We're updating. - if (lastValidDay.after(yearEnd.getTime())) { - // This year was already loaded. - continue; - } - if (lastValidDay.after(day.getTime())) { - // Start one day after last valid date. - day.setTime(lastValidDay); - day.add(Calendar.DATE, 1); - } - } - - for (; !day.after(yearEnd); day.add(Calendar.DATE, 1)) { - loadDay(hdfs, day.getTime()); - } - } - - boolean updated = false; - numberOfDaysWithValidScrubGenData = 0; - - // Iterate batches in sorted order. - for (DailyStatusBatch batch : statusBatches.values()) { - if (!batch.isValid()) { - break; - } - if (batch.getDate().before(scrubGenDay)) { - numberOfDaysWithValidScrubGenData++; - } - if (firstValidDay == null) { - firstValidDay = batch.getDate(); - } - if (lastValidDay == null || lastValidDay.before(batch.getDate())) { - lastValidDay = batch.getDate(); - updated = true; - } - } - - LOG.info("Number of statusBatches: {}", statusBatches.size()); - return updated; - } - - private static String filesToString(FileStatus[] files) { - if (files == null) { - return "null"; - } - StringBuilder b = new StringBuilder(); - for (FileStatus s : files) { - b.append(s.getPath().toString()).append(", "); - } - return b.toString(); - } - - @VisibleForTesting - protected DailyStatusBatch loadDay(FileSystem hdfs, Date day) throws IOException { - Path dayPath = new Path(getStatusPathToUseForDay(day), ArchiveHDFSUtils.dateToPath(day, "/")); - LOG.debug("Looking for batch in " + dayPath.toString()); - DailyStatusBatch result = this.statusBatches.get(day); - if (result != null) { - return result; - } - - final FileStatus[] files; - try { - files = hdfs.listStatus(dayPath); - LOG.debug("Files found: " + filesToString(files)); - } catch (FileNotFoundException e) { - LOG.debug("loadDay() called, but directory does not exist for day: " + day - + " in: " + dayPath); - return null; - } - - if (files != null && files.length > 0) { - for (FileStatus file : files) { - Matcher matcher = HASH_PARTITION_PATTERN.matcher(file.getPath().getName()); - if (matcher.matches()) { - int numHashPartitions = Integer.parseInt(matcher.group(2)); - result = new DailyStatusBatch( - day, numHashPartitions, getStatusPathToUseForDay(day), hdfs); - - for (int partitionID = 0; partitionID < numHashPartitions; partitionID++) { - result.addPartition(hdfs, dayPath, partitionID); - } - - if (result.isValid()) { - statusBatches.put(day, result); - return result; - } else { - LOG.info("Invalid batch found for day: " + day + ", batch: " + result); - } - } else { - // skip logging the intermediate count subdirectories or _SUCCESS files. - if (!INTERMEDIATE_COUNTS_SUBDIR_NAME.equals(file.getPath().getName()) - && !SUCCESS_FILE_NAME.equals(file.getPath().getName())) { - LOG.warn("Path does not match hash partition pattern: " + file.getPath()); - } - } - } - } else { - LOG.warn("No data found for day: " + day + " in: " + dayPath - + " files null: " + (files == null)); - } - - return null; - } - - /** - * Determines if this directory has a valid batch for the given day. - */ - public boolean hasValidBatchForDay(Date day) throws IOException { - FileSystem hdfs = null; - try { - hdfs = HdfsUtil.getHdfsFileSystem(); - return hasValidBatchForDay(hdfs, day); - } finally { - IOUtils.closeQuietly(hdfs); - } - } - - private boolean hasValidBatchForDay(FileSystem fs, Date day) throws IOException { - DailyStatusBatch batch = loadDay(fs, day); - - return batch != null && batch.isValid(); - } - - @VisibleForTesting - Date getFirstValidDay() { - return firstValidDay; - } - - @VisibleForTesting - Date getLastValidDay() { - return lastValidDay; - } - - private Date getLastValidInputDateFromNow(FileSystem hdfs) throws IOException { - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); // current date - return getLastValidInputDate(hdfs, cal); - } - - /** - * Starting from current date, probe backward till we find a valid input Date - */ - @VisibleForTesting - Date getLastValidInputDate(FileSystem hdfs, Calendar cal) throws IOException { - cal.set(Calendar.MILLISECOND, 0); - cal.set(Calendar.HOUR_OF_DAY, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - Date lastValidInputDate = cal.getTime(); - LOG.info("Probing backwards for last valid data date from " + lastValidInputDate); - while (lastValidInputDate.after(FIRST_TWITTER_DAY)) { - if (hasValidBatchForDay(hdfs, lastValidInputDate)) { - LOG.info("Found latest valid data on date " + lastValidInputDate); - LOG.info(" Used path: {}", getStatusPathToUseForDay(lastValidInputDate)); - return lastValidInputDate; - } - cal.add(Calendar.DATE, -1); - lastValidInputDate = cal.getTime(); - } - - return null; - } - - /** - * Check if the daily status batches are already on HDFS - */ - @VisibleForTesting - boolean hasStatusBatchesOnHdfs(FileSystem fs, Date lastDataDay) { - String hdfsFileName = getHdfsStatusBatchSyncFileName(lastDataDay); - try { - return fs.exists(new Path(hdfsFileName)); - } catch (IOException ex) { - LOG.error("Failed checking status batch file on HDFS: " + hdfsFileName, ex); - return false; - } - } - - /** - * Load the daily status batches from HDFS by first copying the file from HDFS to local disk - * and then reading from the local disk. - * - * @param day the latest day of valid statuses. - * @return true if the loading is successful. - */ - @VisibleForTesting - boolean loadStatusBatchesFromHdfs(FileSystem fs, Date day) { - // set the directory state to initial state - resetDirectory(); - - String fileHdfsPath = getHdfsStatusBatchSyncFileName(day); - String fileLocalPath = getLocalStatusBatchSyncFileName(day); - - LOG.info("Using " + fileHdfsPath + " as the HDFS batch summary load path."); - LOG.info("Using " + fileLocalPath + " as the local batch summary sync path."); - - LineRecordFileReader lineReader = null; - try { - fs.copyToLocalFile(new Path(fileHdfsPath), new Path(fileLocalPath)); - - lineReader = new LineRecordFileReader(fileLocalPath); - String batchLine; - while ((batchLine = lineReader.readNext()) != null) { - DailyStatusBatch batch = DailyStatusBatch.deserializeFromJson(batchLine); - if (batch == null) { - LOG.error("Invalid daily status batch constructed from line: " + batchLine); - resetDirectory(); - return false; - } - Date date = batch.getDate(); - if (firstValidDay == null || firstValidDay.after(date)) { - firstValidDay = date; - } - if (lastValidDay == null || lastValidDay.before(date)) { - lastValidDay = date; - } - statusBatches.put(date, batch); - } - LOG.info("Loaded {} status batches from HDFS: {}", - statusBatches.size(), fileHdfsPath); - LOG.info("First entry: {}", statusBatches.firstEntry().getValue().toString()); - LOG.info("Last entry: {}", statusBatches.lastEntry().getValue().toString()); - - return true; - } catch (IOException ex) { - LOG.error("Failed loading time slices from HDFS: " + fileHdfsPath, ex); - resetDirectory(); - return false; - } finally { - if (lineReader != null) { - lineReader.stop(); - } - } - } - - /** - * Flush the daily status batches to local disk and then upload to HDFS. - */ - private boolean storeStatusBatchesToHdfs(FileSystem fs, Date day) { - Preconditions.checkNotNull(lastValidDay); - - if (!StatusBatchFlushVersion.CURRENT_FLUSH_VERSION.isOfficial()) { - LOG.info("Status batch flush version is not official, no batches will be flushed to HDFS"); - return true; - } - - String fileLocalPath = getLocalStatusBatchSyncFileName(day); - - // Flush to local disk - File outputFile = null; - FileWriter fileWriter = null; - try { - LOG.info("Flushing daily status batches into: " + fileLocalPath); - outputFile = new File(fileLocalPath); - outputFile.getParentFile().mkdirs(); - if (!outputFile.getParentFile().exists()) { - LOG.error("Cannot create directory: " + outputFile.getParentFile().toString()); - return false; - } - fileWriter = new FileWriter(outputFile, false); - for (Date date : statusBatches.keySet()) { - fileWriter.write(statusBatches.get(date).serializeToJson()); - fileWriter.write("\n"); - } - fileWriter.flush(); - - // Upload the file to HDFS - return uploadStatusBatchesToHdfs(fs, day); - } catch (IOException e) { - String fileHdfsPath = getHdfsStatusBatchSyncFileName(day); - LOG.error("Failed storing status batches to HDFS: " + fileHdfsPath, e); - return false; - } finally { - try { - if (fileWriter != null) { - fileWriter.close(); - } - } catch (IOException e) { - LOG.error("Error to close fileWrite.", e); - } - if (outputFile != null) { - // Delete the local file - outputFile.delete(); - } - } - } - - /** - * Upload the status batches to HDFS. - */ - @VisibleForTesting - boolean uploadStatusBatchesToHdfs(FileSystem fs, Date day) { - String localFileName = getLocalStatusBatchSyncFileName(day); - String hdfsFileName = getHdfsStatusBatchSyncFileName(day); - - LOG.info("Using " + hdfsFileName + " as the HDFS batch summary upload path."); - LOG.info("Using " + localFileName + " as the local batch summary sync path."); - - try { - Path hdfsFilePath = new Path(hdfsFileName); - if (fs.exists(hdfsFilePath)) { - LOG.warn("Found status batch file on HDFS: " + hdfsFileName); - return true; - } - - String hdfsTempName = getHdfsStatusBatchTempSyncFileName(day); - Path hdfsTempPath = new Path(hdfsTempName); - if (fs.exists(hdfsTempPath)) { - LOG.info("Found existing temporary status batch file on HDFS, removing: " + hdfsTempName); - if (!fs.delete(hdfsTempPath, false)) { - LOG.error("Failed to delete temporary file: " + hdfsTempName); - return false; - } - } - fs.copyFromLocalFile(new Path(localFileName), hdfsTempPath); - - if (fs.rename(hdfsTempPath, hdfsFilePath)) { - LOG.debug("Renamed " + hdfsTempName + " on HDFS to: " + hdfsFileName); - return true; - } else { - LOG.error("Failed to rename " + hdfsTempName + " on HDFS to: " + hdfsFileName); - return false; - } - } catch (IOException ex) { - LOG.error("Failed uploading status batch file to HDFS: " + hdfsFileName, ex); - return false; - } - } - - private static boolean isStatusBatchFlushingEnabled() { - return EarlybirdProperty.ARCHIVE_DAILY_STATUS_BATCH_FLUSHING_ENABLED.get(false); - } - - private static boolean isStatusBatchLoadingEnabled() { - return EarlybirdConfig.getBool("archive_daily_status_batch_loading_enabled", false); - } - - private static String getVersionFileExtension() { - return StatusBatchFlushVersion.CURRENT_FLUSH_VERSION.getVersionFileExtension(); - } - - String getStatusBatchSyncRootDir() { - return EarlybirdConfig.getString("archive_daily_status_batch_sync_dir", - "daily_status_batches") + "/" + scrubGenSuffix(); - } - - @VisibleForTesting - String getLocalStatusBatchSyncFileName(Date day) { - return getStatusBatchSyncRootDir() + "/" + STATUS_BATCHES_PREFIX + "_" - + DATE_FORMAT.format(day) + getVersionFileExtension(); - } - - String getHdfsStatusBatchSyncRootDir() { - return EarlybirdConfig.getString("hdfs_archive_daily_status_batch_sync_dir", - "daily_status_batches") + "/" + scrubGenSuffix(); - } - - @VisibleForTesting - String getHdfsStatusBatchSyncFileName(Date day) { - return getHdfsStatusBatchSyncRootDir() + "/" + STATUS_BATCHES_PREFIX + "_" - + DATE_FORMAT.format(day) + getVersionFileExtension(); - } - - private String getHdfsStatusBatchTempSyncFileName(Date day) { - return getHdfsStatusBatchSyncRootDir() + "/" + DatabaseConfig.getLocalHostname() + "_" - + STATUS_BATCHES_PREFIX + "_" + DATE_FORMAT.format(day) + getVersionFileExtension(); - } - - private String scrubGenSuffix() { - return String.format(SCRUB_GEN_SUFFIX_PATTERN, DATE_FORMAT.format(scrubGenDay)); - } - - /** - * Returns the path to the directory that stores the statuses for the given day. - */ - public Path getStatusPathToUseForDay(Date day) { - if (!day.before(scrubGenDay)) { - return statusPath; - } - - String suffix = scrubGenSuffix(); - Preconditions.checkArgument(!suffix.isEmpty()); - Path scrubPath = new Path(buildGenPath, suffix); - return new Path(scrubPath, STATUS_SUBDIR_NAME); - } - - /** - * Determines if the data for the specified scrub gen was fully built, by checking the number of - * days for which data was built against the expected number of days extracted from the specified - * scrub gen date. - */ - public boolean isScrubGenDataFullyBuilt(FileSystem hdfs) throws IOException { - initialLoadDailyBatchInfos(hdfs); - if (numberOfDaysWithValidScrubGenData == 0) { - LOG.warn("numberOfDaysWithValidScrubGenData is 0"); - } - long expectedDays = getDiffBetweenDays(scrubGenDay); - return expectedDays == numberOfDaysWithValidScrubGenData; - } - - @VisibleForTesting - long getDiffBetweenDays(Date day) { - long diff = day.getTime() - FIRST_TWEET_DAY.getTime(); - return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/PartitionedBatch.docx b/src/java/com/twitter/search/earlybird/archive/PartitionedBatch.docx new file mode 100644 index 0000000000000000000000000000000000000000..526914c6d54db24a8db051e25cade81a0055ff31 GIT binary patch literal 41083 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/PartitionedBatch.java b/src/java/com/twitter/search/earlybird/archive/PartitionedBatch.java deleted file mode 100644 index b72e8c7f2..000000000 --- a/src/java/com/twitter/search/earlybird/archive/PartitionedBatch.java +++ /dev/null @@ -1,333 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.ComparisonChain; -import com.google.common.collect.Lists; - -import org.apache.commons.io.IOUtils; -import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.fs.PathFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.config.Config; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.search.common.schema.earlybird.EarlybirdThriftDocumentUtil; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.date.DateUtil; -import com.twitter.search.common.util.io.EmptyRecordReader; -import com.twitter.search.common.util.io.LzoThriftBlockFileReader; -import com.twitter.search.common.util.io.MergingSortedRecordReader; -import com.twitter.search.common.util.io.TransformingRecordReader; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.document.DocumentFactory; -import com.twitter.search.earlybird.document.TweetDocument; -import com.twitter.search.earlybird.partition.HdfsUtil; - -/** - * A batch of pre-processed tweets for a single hash partition from a particular day. - */ -public class PartitionedBatch { - private static final Logger LOG = LoggerFactory.getLogger(PartitionedBatch.class); - private static final Date START_DATE_INCLUSIVE = DateUtil.toDate(2006, 03, 21); - private static final String STATUS_COUNT_FILE_PREFIX = "_status_count_"; - private static final Pattern STATUS_COUNT_FILE_PATTERN = - Pattern.compile(STATUS_COUNT_FILE_PREFIX + "(\\d+)_minid_(\\d+)_maxid_(\\d+)"); - private static final int MAXIMUM_OUT_OF_ORDER_TOLERANCE_HOURS = - EarlybirdConfig.getInt("archive_max_out_of_order_tolerance_hours", 12); - private static final int READER_INIT_IOEXCEPTION_RETRIES = 20; - private static final PathFilter LZO_DATA_FILES_FILTER = file -> file.getName().endsWith(".lzo"); - private static final PathFilter TXT_DATA_FILES_FILTER = file -> file.getName().endsWith(".txt"); - - private static final Comparator DESC_THRIFT_INDEXING_EVENT_COMPARATOR = - (o1, o2) -> ComparisonChain.start() - .compare(o2.getSortId(), o1.getSortId()) - .compare(o2.getUid(), o1.getUid()) - .result(); - - // Number archive tweets skipped because they are too out-of-order. - private static final SearchCounter OUT_OF_ORDER_STATUSES_SKIPPED = - SearchCounter.export("out_of_order_archive_statuses_skipped"); - - @VisibleForTesting - protected static final long MAXIMUM_OUT_OF_ORDER_TOLERANCE_MILLIS = - TimeUnit.HOURS.toMillis(MAXIMUM_OUT_OF_ORDER_TOLERANCE_HOURS); - - private final Date date; - private final Path path; - private int statusCount; - private long minStatusID; - private long maxStatusID; - private final int hashPartitionID; - private boolean hasStatusCountFile; - private final int numHashPartitions; - - @VisibleForTesting - public PartitionedBatch( - Path path, - int hashPartitionID, - int numHashPartitions, - Date date) { - this.path = path; - this.hashPartitionID = hashPartitionID; - this.numHashPartitions = numHashPartitions; - this.date = date; - } - - /** - * Loads all the information (tweet count, etc.) for this partition and day from HDFS. - */ - public void load(FileSystem hdfs) throws IOException { - FileStatus[] dailyBatchFiles = null; - try { - // listStatus() javadoc says it throws FileNotFoundException when path does not exist. - // However, the actual implementations return null or an empty array instead. - // We handle all 3 cases: null, empty array, or FileNotFoundException. - dailyBatchFiles = hdfs.listStatus(path); - } catch (FileNotFoundException e) { - // don't do anything here and the day will be handled as empty. - } - - if (dailyBatchFiles != null && dailyBatchFiles.length > 0) { - for (FileStatus file : dailyBatchFiles) { - String fileName = file.getPath().getName(); - if (fileName.equals(STATUS_COUNT_FILE_PREFIX)) { - // zero tweets in this partition - this can happen for early days in 2006 - handleEmptyPartition(); - } else { - Matcher matcher = STATUS_COUNT_FILE_PATTERN.matcher(fileName); - if (matcher.matches()) { - try { - statusCount = Integer.parseInt(matcher.group(1)); - // Only adjustMinStatusId in production. For tests, this makes the tests harder to - // understand. - minStatusID = Config.environmentIsTest() ? Long.parseLong(matcher.group(2)) - : adjustMinStatusId(Long.parseLong(matcher.group(2)), date); - maxStatusID = Long.parseLong(matcher.group(3)); - hasStatusCountFile = true; - } catch (NumberFormatException e) { - // invalid file - ignore - LOG.warn("Could not parse status count file name.", e); - } - } - } - } - } else { - // Partition folder does not exist. This case can happen for early days of twitter - // where some partitions are empty. Set us to having a status count file, the validity of - // the parent DailyStatusBatch will still be determined by whether there was a _SUCCESS file - // in the day root. - handleEmptyPartition(); - - if (date.after(getEarliestDenseDay())) { - LOG.error("Unexpected empty directory {} for {}", path, date); - } - } - } - - private void handleEmptyPartition() { - statusCount = 0; - minStatusID = DailyStatusBatch.EMPTY_BATCH_STATUS_ID; - maxStatusID = DailyStatusBatch.EMPTY_BATCH_STATUS_ID; - hasStatusCountFile = true; - } - - /** - * Sometimes tweets are out-of-order (E.g. a tweet from Sep 2012 got into a - * batch in July 2013). See SEARCH-1750 for more details. - * This adjust the minStatusID if it is badly out-of-order. - */ - @VisibleForTesting - protected static long adjustMinStatusId(long minStatusID, Date date) { - long dateTime = date.getTime(); - // If the daily batch is for a day before we started using snow flake IDs. Never adjust. - if (!SnowflakeIdParser.isUsableSnowflakeTimestamp(dateTime)) { - return minStatusID; - } - - long earliestStartTime = dateTime - MAXIMUM_OUT_OF_ORDER_TOLERANCE_MILLIS; - long minStatusTime = SnowflakeIdParser.getTimestampFromTweetId(minStatusID); - if (minStatusTime < earliestStartTime) { - long newMinId = SnowflakeIdParser.generateValidStatusId(earliestStartTime, 0); - LOG.info("Daily batch for " + date + " has badly out of order tweet: " + minStatusID - + ". The minStatusID for the day this batch is adjusted to " + newMinId); - return newMinId; - } else { - return minStatusID; - } - } - - /** - * Returns a reader that reads tweets from the given directory. - * - * @param archiveSegment Determines the timeslice ID of all read tweets. - * @param tweetsPath The path to the directory where the tweets for this day are stored. - * @param documentFactory The ThriftIndexingEvent to TweetDocument converter. - */ - public RecordReader getTweetReaders( - ArchiveSegment archiveSegment, - Path tweetsPath, - DocumentFactory documentFactory) throws IOException { - RecordReader tweetDocumentReader = - new TransformingRecordReader<>( - createTweetReader(tweetsPath), new Function() { - @Override - public TweetDocument apply(ThriftIndexingEvent event) { - return new TweetDocument( - event.getSortId(), - archiveSegment.getTimeSliceID(), - EarlybirdThriftDocumentUtil.getCreatedAtMs(event.getDocument()), - documentFactory.newDocument(event) - ); - } - }); - - tweetDocumentReader.setExhaustStream(true); - return tweetDocumentReader; - } - - private RecordReader createTweetReader(Path tweetsPath) throws IOException { - if (date.before(START_DATE_INCLUSIVE)) { - return new EmptyRecordReader<>(); - } - - List> readers = Lists.newArrayList(); - FileSystem hdfs = HdfsUtil.getHdfsFileSystem(); - try { - Path dayPath = new Path(tweetsPath, ArchiveHDFSUtils.dateToPath(date, "/")); - Path partitionPath = - new Path(dayPath, String.format("p_%d_of_%d", hashPartitionID, numHashPartitions)); - PathFilter pathFilter = - Config.environmentIsTest() ? TXT_DATA_FILES_FILTER : LZO_DATA_FILES_FILTER; - FileStatus[] files = hdfs.listStatus(partitionPath, pathFilter); - for (FileStatus fileStatus : files) { - String fileStatusPath = fileStatus.getPath().toString().replaceAll("file:/", "/"); - RecordReader reader = createRecordReaderWithRetries(fileStatusPath); - readers.add(reader); - } - } finally { - IOUtils.closeQuietly(hdfs); - } - - if (readers.isEmpty()) { - return new EmptyRecordReader<>(); - } - - return new MergingSortedRecordReader<>(DESC_THRIFT_INDEXING_EVENT_COMPARATOR, readers); - } - - private RecordReader createRecordReaderWithRetries(String filePath) - throws IOException { - Predicate recordFilter = getRecordFilter(); - int numTries = 0; - while (true) { - try { - ++numTries; - return new LzoThriftBlockFileReader<>(filePath, ThriftIndexingEvent.class, recordFilter); - } catch (IOException e) { - if (numTries < READER_INIT_IOEXCEPTION_RETRIES) { - LOG.warn("Failed to open LzoThriftBlockFileReader for " + filePath + ". Will retry.", e); - } else { - LOG.error("Failed to open LzoThriftBlockFileReader for " + filePath - + " after too many retries.", e); - throw e; - } - } - } - } - - private Predicate getRecordFilter() { - return Config.environmentIsTest() ? null : input -> { - if (input == null) { - return false; - } - // We only guard against status IDs that are too small, because it is possible - // for a very old tweet to get into today's batch, but not possible for a very - // large ID (a future tweet ID that is not yet published) to get in today's - // batch, unless tweet ID generation messed up. - long statusId = input.getSortId(); - boolean keep = statusId >= minStatusID; - if (!keep) { - LOG.debug("Out of order documentId: {} minStatusID: {} Date: {} Path: {}", - statusId, minStatusID, date, path); - OUT_OF_ORDER_STATUSES_SKIPPED.increment(); - } - return keep; - }; - } - - /** - * Returns the number of statuses in this batch - */ - public int getStatusCount() { - return statusCount; - } - - /** - * Was the _status_count file was found in this folder. - */ - public boolean hasStatusCount() { - return hasStatusCountFile; - } - - public long getMinStatusID() { - return minStatusID; - } - - public long getMaxStatusID() { - return maxStatusID; - } - - public Date getDate() { - return date; - } - - public Path getPath() { - return path; - } - - /** - * Check whether the partition is - * . empty and - * . it is disallowed (empty partition can only happen before 2010) - * (Empty partition means that the directory is missing when scan happens.) - * - * @return true if the partition has no documents and it is not allowed. - */ - public boolean isDisallowedEmptyPartition() { - return hasStatusCountFile - && statusCount == 0 - && minStatusID == DailyStatusBatch.EMPTY_BATCH_STATUS_ID - && maxStatusID == DailyStatusBatch.EMPTY_BATCH_STATUS_ID - && date.after(getEarliestDenseDay()); - } - - @Override - public String toString() { - return "PartitionedBatch[hashPartitionId=" + hashPartitionID - + ",numHashPartitions=" + numHashPartitions - + ",date=" + date - + ",path=" + path - + ",hasStatusCountFile=" + hasStatusCountFile - + ",statusCount=" + statusCount + "]"; - } - - private Date getEarliestDenseDay() { - return EarlybirdConfig.getDate("archive_search_earliest_dense_day"); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.bazel b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.bazel deleted file mode 100644 index f630ffd06..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.bazel +++ /dev/null @@ -1,64 +0,0 @@ -java_library( - name = "segment_builder_lib", - sources = ["**/*.java"], - platform = "java8", - tags = [ - "bazel-compatible", - "bazel-only", - ], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-server", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-twitter-science-provider", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/slf4j:slf4j-api", - "decider/src/main/scala", - "finatra/inject/inject-core/src/main/scala", - "finatra/inject/inject-server/src/main/scala/com/twitter/inject/server", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/quantity", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/common_internal/text/version", - "src/java/com/twitter/search/common/config", - "src/java/com/twitter/search/common/database", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/base", - "src/java/com/twitter/search/common/partitioning/zookeeper", - "src/java/com/twitter/search/common/schema", - "src/java/com/twitter/search/common/schema/base", - "src/java/com/twitter/search/common/util:closeresourceutil", - "src/java/com/twitter/search/common/util:gcutil", - "src/java/com/twitter/search/common/util:kerberos", - "src/java/com/twitter/search/common/util/date", - "src/java/com/twitter/search/common/util/io:flushable", - "src/java/com/twitter/search/common/util/zktrylock", - "src/java/com/twitter/search/common/util/zookeeper", - "src/java/com/twitter/search/earlybird:earlybird-lib", - "src/java/com/twitter/search/earlybird/common", - "src/java/com/twitter/search/earlybird/common/config", - "src/java/com/twitter/search/earlybird/common/userupdates", - "util/util-core:scala", - ], -) - -# Using hadoop_binary target can automatically exclude hadoop related jars in the built jar -# and load in the right jars based on hadoop config. -hadoop_binary( - name = "segment_builder_binary", - basename = "segment_builder", - main = "com.twitter.search.earlybird.archive.segmentbuilder.SegmentBuilderMain", - platform = "java8", - runtime_platform = "java8", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - "bazel-only", - ], - dependencies = [ - ":segment_builder_lib", - "src/java/com/twitter/search/common/logging:search-log4j", - ], -) diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f7a60c30bc773a4e308753f4df95000950af46a0 GIT binary patch literal 37358 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 E0Jq`kIsgCw literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BuiltAndFinalizedSegment.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/BuiltAndFinalizedSegment.docx new file mode 100644 index 0000000000000000000000000000000000000000..d64072414d79e2913241cc363cfe85c498a840a5 GIT binary patch literal 37009 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[JZ&3au1Ll=R;spBzOA=E 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%0A#P90Plv* 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 T4X~hZRwV#&0L { - ArchiveSegmentUpdater updater = new ArchiveSegmentUpdater( - segmentConfig.getTryLockFactory(), - sync, - segmentConfig.getEarlybirdIndexConfig(), - Clock.SYSTEM_CLOCK); - - boolean success = updater.updateSegment(segmentInfo); - successRef.set(success); - }); - - if (!gotLock) { - LOG.info("cannot acquire zookeeper lock for: " + segmentInfo); - return new SomeoneElseIsBuildingSegment( - segmentInfo, - segmentConfig, - earlybirdSegmentFactory, - alreadyRetriedCount, - sync); - } - - // 1. we want to make sure the heap is clean right after building a segment so that it's ready - // for us to start allocations for a new segment - // — I think we've had cases where we were seeing OOM's while building - // 2. the thing that I think it helps with is compaction (vs just organically running CMS) - // — which would clean up the heap, but may leave it in a fragmented state - // — and running a Full GC is supposed to compact the remaining tenured space. - GCUtil.runGC(); - - if (successRef.get()) { - LOG.info("Indexing segment {} took {}", segmentInfo, stopwatch); - LOG.info("Finished building {}", segmentInfo.getSegment().getSegmentName()); - return new BuiltAndFinalizedSegment( - segmentInfo, segmentConfig, earlybirdSegmentFactory, 0, sync); - } else { - int alreadyTried = alreadyRetriedCount + 1; - String errMsg = "failed updating segment for: " + segmentInfo - + " for " + alreadyTried + " times"; - LOG.error(errMsg); - if (alreadyTried < segmentConfig.getMaxRetriesOnFailure()) { - return new NotYetBuiltSegment( - createNewSegmentInfo(segmentInfo), - segmentConfig, - earlybirdSegmentFactory, - alreadyTried, - sync); - } else { - throw new SegmentUpdaterException(errMsg); - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/RateLimitingSegmentHandler.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/RateLimitingSegmentHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..071d348816f6cb3a3c5b1f1888c3993236bb3c6c GIT binary patch literal 37159 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 segmentNameToLastUpdatedTimeMillis = new HashMap<>(); - - RateLimitingSegmentHandler(long hdfsCheckIntervalMillis, Clock clock) { - this.hdfsCheckIntervalMillis = hdfsCheckIntervalMillis; - this.clock = clock; - } - - SegmentBuilderSegment processSegment(SegmentBuilderSegment segment) - throws SegmentUpdaterException, SegmentInfoConstructionException { - - String segmentName = segment.getSegmentName(); - - Long lastUpdatedMillis = segmentNameToLastUpdatedTimeMillis.get(segmentName); - if (lastUpdatedMillis == null) { - lastUpdatedMillis = 0L; - } - - long nowMillis = clock.nowMillis(); - if (nowMillis - lastUpdatedMillis < hdfsCheckIntervalMillis) { - return segment; - } - segmentNameToLastUpdatedTimeMillis.put(segmentName, nowMillis); - - return segment.handle(); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..1bbca6b3f688b2fff083605853944a2f66e27d4c GIT binary patch literal 43314 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.java deleted file mode 100644 index 1f3f47cf9..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilder.java +++ /dev/null @@ -1,540 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Random; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.base.Stopwatch; -import com.google.common.collect.ComparisonChain; -import com.google.common.collect.ImmutableList; -import com.google.common.util.concurrent.Uninterruptibles; -import com.google.inject.Inject; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.quantity.Amount; -import com.twitter.common.quantity.Time; -import com.twitter.common.util.Clock; -import com.twitter.decider.Decider; -import com.twitter.inject.annotations.Flag; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.metrics.SearchStatsReceiverImpl; -import com.twitter.search.common.partitioning.zookeeper.SearchZkClient; -import com.twitter.search.common.util.Kerberos; -import com.twitter.search.common.util.zktrylock.ZooKeeperTryLockFactory; -import com.twitter.search.earlybird.archive.ArchiveOnDiskEarlybirdIndexConfig; -import com.twitter.search.earlybird.archive.ArchiveSegment; -import com.twitter.search.earlybird.archive.DailyStatusBatches; -import com.twitter.search.earlybird.archive.ArchiveTimeSlicer; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.util.ScrubGenUtil; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.index.EarlybirdSegmentFactory; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentSyncConfig; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; - -/** - * This class provides the core logic to build segment indices offline. - * For each server, it coordinate via zookeeper to pick the next segment, build the indices for it - * and upload them to HDFS. A state machine is used to handle the build state transitions. There - * are three states: - * NOT_BUILD_YET: a segment that needs to be built - * SOMEONE_ELSE_IS_BUILDING: another server is building the segment. - * BUILT_AND_FINALIZED: the indices of this segment have already been built. - */ -public class SegmentBuilder { - private static final Logger LOG = LoggerFactory.getLogger(SegmentBuilder.class); - - private final boolean onlyRunOnce; - private final int waitBetweenLoopsMins; - private final int startUpBatchSize; - private final int instance; - private final int waitBetweenSegmentsSecs; - private final int waitBeforeQuitMins; - - // When multiple segment builders start simultaneously, they might make the HDFS name node and - // zookeeper overwhelmed. So, we let some instances sleep sometimes before they start to avoid - // the issues. - private final long startUpSleepMins; - - // If no more segments to built, wait this interval before checking again. - private final long processWaitingInterval = TimeUnit.MINUTES.toMillis(10); - - // The hash partitions that segments will be built. - private final ImmutableList hashPartitions; - - private final SearchStatsReceiver statsReceiver = new SearchStatsReceiverImpl(); - private final SearchIndexingMetricSet searchIndexingMetricSet = - new SearchIndexingMetricSet(statsReceiver); - private final EarlybirdSearcherStats searcherStats = - new EarlybirdSearcherStats(statsReceiver); - - private final ArchiveOnDiskEarlybirdIndexConfig earlybirdIndexConfig; - - private final ZooKeeperTryLockFactory zkTryLockFactory; - private final RateLimitingSegmentHandler segmentHandler; - private final Clock clock; - private final int numSegmentBuilderPartitions; - private final int myPartitionId; - private final SegmentConfig segmentConfig; - private final EarlybirdSegmentFactory segmentFactory; - private final SegmentBuilderCoordinator segmentBuilderCoordinator; - private final SegmentSyncConfig segmentSyncConfig; - private final Random random = new Random(); - - private static final double SLEEP_RANDOMIZATION_RATIO = .2; - - // Stats - // The flush version used to build segments - private static final SearchLongGauge CURRENT_FLUSH_VERSION = - SearchLongGauge.export("current_flush_version"); - - // Accumulated number and time in seconds spent on building segments locally - private static SearchCounter segmentsBuiltLocally = - SearchCounter.export("segments_built_locally"); - private static SearchCounter timeSpentOnSuccessfulBuildSecs = - SearchCounter.export("time_spent_on_successful_build_secs"); - - // The total number of segments to be built - private static final SearchLongGauge SEGMENTS_TO_BUILD = - SearchLongGauge.export("segments_to_build"); - - // How many segments failed locally - private static final SearchCounter FAILED_SEGMENTS = - SearchCounter.export("failed_segments"); - - @Inject - protected SegmentBuilder(@Flag("onlyRunOnce") boolean onlyRunOnceFlag, - @Flag("waitBetweenLoopsMins") int waitBetweenLoopsMinsFlag, - @Flag("startup_batch_size") int startUpBatchSizeFlag, - @Flag("instance") int instanceFlag, - @Flag("segmentZkLockExpirationHours") - int segmentZkLockExpirationHoursFlag, - @Flag("startupSleepMins") long startupSleepMinsFlag, - @Flag("maxRetriesOnFailure") int maxRetriesOnFailureFlag, - @Flag("hash_partitions") List hashPartitionsFlag, - @Flag("numSegmentBuilderPartitions") int numSegmentBuilderPartitionsFlag, - @Flag("waitBetweenSegmentsSecs") int waitBetweenSegmentsSecsFlag, - @Flag("waitBeforeQuitMins") int waitBeforeQuitMinsFlag, - @Flag("scrubGen") String scrubGen, - Decider decider) { - this(onlyRunOnceFlag, - waitBetweenLoopsMinsFlag, - startUpBatchSizeFlag, - instanceFlag, - segmentZkLockExpirationHoursFlag, - startupSleepMinsFlag, - hashPartitionsFlag, - maxRetriesOnFailureFlag, - waitBetweenSegmentsSecsFlag, - waitBeforeQuitMinsFlag, - SearchZkClient.getSZooKeeperClient().createZooKeeperTryLockFactory(), - new RateLimitingSegmentHandler(TimeUnit.MINUTES.toMillis(10), Clock.SYSTEM_CLOCK), - Clock.SYSTEM_CLOCK, - numSegmentBuilderPartitionsFlag, - decider, - getSyncConfig(scrubGen)); - } - - @VisibleForTesting - protected SegmentBuilder(boolean onlyRunOnceFlag, - int waitBetweenLoopsMinsFlag, - int startUpBatchSizeFlag, - int instanceFlag, - int segmentZkLockExpirationHoursFlag, - long startupSleepMinsFlag, - List hashPartitions, - int maxRetriesOnFailure, - int waitBetweenSegmentsSecsFlag, - int waitBeforeQuitMinsFlag, - ZooKeeperTryLockFactory zooKeeperTryLockFactory, - RateLimitingSegmentHandler segmentHandler, - Clock clock, - int numSegmentBuilderPartitions, - Decider decider, - SegmentSyncConfig syncConfig) { - LOG.info("Creating SegmentBuilder"); - LOG.info("Penguin version in use: " + EarlybirdConfig.getPenguinVersion()); - - // Set command line flag values - this.onlyRunOnce = onlyRunOnceFlag; - this.waitBetweenLoopsMins = waitBetweenLoopsMinsFlag; - this.startUpBatchSize = startUpBatchSizeFlag; - this.instance = instanceFlag; - this.waitBetweenSegmentsSecs = waitBetweenSegmentsSecsFlag; - this.waitBeforeQuitMins = waitBeforeQuitMinsFlag; - - this.segmentHandler = segmentHandler; - this.zkTryLockFactory = zooKeeperTryLockFactory; - this.segmentSyncConfig = syncConfig; - this.startUpSleepMins = startupSleepMinsFlag; - - if (!hashPartitions.isEmpty()) { - this.hashPartitions = ImmutableList.copyOf(hashPartitions); - } else { - this.hashPartitions = null; - } - - Amount segmentZKLockExpirationTime = Amount.of((long) - segmentZkLockExpirationHoursFlag, Time.HOURS); - - this.earlybirdIndexConfig = - new ArchiveOnDiskEarlybirdIndexConfig(decider, searchIndexingMetricSet, - new CriticalExceptionHandler()); - - this.segmentConfig = new SegmentConfig( - earlybirdIndexConfig, - segmentZKLockExpirationTime, - maxRetriesOnFailure, - zkTryLockFactory); - this.segmentFactory = new EarlybirdSegmentFactory( - earlybirdIndexConfig, - searchIndexingMetricSet, - searcherStats, - clock); - this.segmentBuilderCoordinator = new SegmentBuilderCoordinator( - zkTryLockFactory, syncConfig, clock); - - this.clock = clock; - - this.numSegmentBuilderPartitions = numSegmentBuilderPartitions; - this.myPartitionId = instance % numSegmentBuilderPartitions; - SearchLongGauge.export("segment_builder_partition_id_" + myPartitionId).set(1); - - CURRENT_FLUSH_VERSION.set(earlybirdIndexConfig.getSchema().getMajorVersionNumber()); - } - - void run() { - LOG.info("Config values: {}", EarlybirdConfig.allValuesAsString()); - - // Sleep some time uninterruptibly before get started so that if multiple instances are running, - // the HDFS name node and zookeeper wont be overwhelmed - // Say, we have 100 instances (instance_arg will have value from 0 - 99, our - // STARTUP_BATCH_SIZE_ARG is 20 and startUpSleepMins is 3 mins. Then the first 20 instances - // will not sleep, but start immediately. then instance 20 - 39 will sleep 3 mins and then - // start to run. instance 40 - 59 will sleep 6 mins then start to run. instances 60 - 79 will - // sleep 9 mins and then start to run and so forth. - long sleepTime = instance / startUpBatchSize * startUpSleepMins; - LOG.info("Instance={}, Start up batch size={}", instance, startUpBatchSize); - LOG.info("Sleep {} minutes to void HDFS name node and ZooKeeper overwhelmed.", sleepTime); - Uninterruptibles.sleepUninterruptibly(sleepTime, TimeUnit.MINUTES); - - // Kinit here. - Kerberos.kinit( - EarlybirdConfig.getString("kerberos_user", ""), - EarlybirdConfig.getString("kerberos_keytab_path", "") - ); - - long waitBetweenLoopsMs = TimeUnit.MINUTES.toMillis(waitBetweenLoopsMins); - if (onlyRunOnce) { - LOG.info("This segment builder will run the full rebuild of all the segments"); - } else { - LOG.info("This segment builder will incrementally check for new data and rebuilt " - + "current segments as needed."); - LOG.info("The waiting interval between two new data checking is: " - + waitBetweenLoopsMs + " ms."); - } - - boolean scrubGenPresent = segmentSyncConfig.getScrubGen().isPresent(); - LOG.info("Scrub gen present: {}", scrubGenPresent); - boolean scrubGenDataFullyBuilt = segmentBuilderCoordinator.isScrubGenDataFullyBuilt(instance); - LOG.info("Scrub gen data fully built: {}", scrubGenDataFullyBuilt); - - if (!scrubGenPresent || scrubGenDataFullyBuilt) { - LOG.info("Starting segment building loop..."); - while (!Thread.currentThread().isInterrupted()) { - try { - indexingLoop(); - if (onlyRunOnce) { - LOG.info("only run once is true, breaking"); - break; - } - clock.waitFor(waitBetweenLoopsMs); - } catch (InterruptedException e) { - LOG.info("Interrupted, quitting segment builder"); - Thread.currentThread().interrupt(); - } catch (SegmentInfoConstructionException e) { - LOG.error("Error creating new segmentInfo, quitting segment builder: ", e); - break; - } catch (SegmentUpdaterException e) { - FAILED_SEGMENTS.increment(); - // Before the segment builder quits, sleep for WAIT_BEFORE_QUIT_MINS minutes so that the - // FAILED_SEGMENTS stat can be exported. - try { - clock.waitFor(TimeUnit.MINUTES.toMillis(waitBeforeQuitMins)); - } catch (InterruptedException ex) { - LOG.info("Interrupted, quitting segment builder"); - Thread.currentThread().interrupt(); - } - LOG.error("SegmentUpdater processing segment error, quitting segment builder: ", e); - break; - } - } - } else { - LOG.info("Cannot build the segments for scrub gen yet."); - } - } - - // Refactoring the run loop to here for unittest - @VisibleForTesting - void indexingLoop() - throws SegmentInfoConstructionException, InterruptedException, SegmentUpdaterException { - // This map contains all the segments to be processed; if a segment is built, it will be removed - // from the map. - Map buildableSegmentInfoMap; - try { - buildableSegmentInfoMap = createSegmentInfoMap(); - printSegmentInfoMap(buildableSegmentInfoMap); - } catch (IOException e) { - LOG.error("Error creating segmentInfoMap: ", e); - return; - } - - while (!buildableSegmentInfoMap.isEmpty()) { - boolean hasBuiltSegment = processSegments(buildableSegmentInfoMap); - - if (!hasBuiltSegment) { - // If we successfully built a segment, no need to sleep since building a segment takes a - // long time - clock.waitFor(processWaitingInterval); - } - } - } - - // Actual shutdown. - protected void doShutdown() { - LOG.info("doShutdown()..."); - try { - earlybirdIndexConfig.getResourceCloser().shutdownExecutor(); - } catch (InterruptedException e) { - LOG.error("Interrupted during shutdown. ", e); - } - - LOG.info("Segment builder stopped!"); - } - - private List createTimeSlices() throws IOException { - Preconditions.checkState(segmentSyncConfig.getScrubGen().isPresent()); - Date scrubGen = ScrubGenUtil.parseScrubGenToDate(segmentSyncConfig.getScrubGen().get()); - - final DailyStatusBatches dailyStatusBatches = - new DailyStatusBatches(zkTryLockFactory, scrubGen); - final ArchiveTimeSlicer archiveTimeSlicer = new ArchiveTimeSlicer( - EarlybirdConfig.getMaxSegmentSize(), dailyStatusBatches, earlybirdIndexConfig); - - Stopwatch stopwatch = Stopwatch.createStarted(); - List timeSlices = archiveTimeSlicer.getTimeSlices(); - - if (timeSlices == null) { - LOG.error("Failed to load timeslice map after {}", stopwatch); - return Collections.emptyList(); - } - - LOG.info("Took {} to get timeslices", stopwatch); - return timeSlices; - } - - private static class TimeSliceAndHashPartition implements Comparable { - public final ArchiveTimeSlicer.ArchiveTimeSlice timeSlice; - public final Integer hashPartition; - - public TimeSliceAndHashPartition( - ArchiveTimeSlicer.ArchiveTimeSlice timeSlice, - Integer hashPartition) { - this.timeSlice = timeSlice; - this.hashPartition = hashPartition; - } - - @Override - public int compareTo(TimeSliceAndHashPartition o) { - Integer myHashPartition = this.hashPartition; - Integer otherHashPartition = o.hashPartition; - - long myTimeSliceId = this.timeSlice.getMinStatusID(myHashPartition); - long otherTimeSliceId = o.timeSlice.getMinStatusID(otherHashPartition); - - return ComparisonChain.start() - .compare(myHashPartition, otherHashPartition) - .compare(myTimeSliceId, otherTimeSliceId) - .result(); - } - } - - /** - * For all the timeslices, create the corresponding SegmentInfo and store in a map - */ - @VisibleForTesting - Map createSegmentInfoMap() throws IOException { - final List timeSlices = createTimeSlices(); - - List timeSlicePairs = createPairs(timeSlices); - // Export how many segments should be built - SEGMENTS_TO_BUILD.set(timeSlicePairs.size()); - LOG.info("Total number of segments to be built across all segment builders: {}", - timeSlicePairs.size()); - - List mySegments = getSegmentsForMyPartition(timeSlicePairs); - - Map segmentInfoMap = new HashMap<>(); - for (TimeSliceAndHashPartition mySegment : mySegments) { - ArchiveSegment segment = new ArchiveSegment(mySegment.timeSlice, mySegment.hashPartition, - EarlybirdConfig.getMaxSegmentSize()); - SegmentInfo segmentInfo = new SegmentInfo(segment, segmentFactory, segmentSyncConfig); - - segmentInfoMap.put(segmentInfo.getSegment().getSegmentName(), new NotYetBuiltSegment( - segmentInfo, segmentConfig, segmentFactory, 0, segmentSyncConfig)); - } - - return segmentInfoMap; - } - - private List createPairs( - List timeSlices) { - - List timeSlicePairs = new ArrayList<>(); - - for (ArchiveTimeSlicer.ArchiveTimeSlice slice : timeSlices) { - List localPartitions = hashPartitions; - if (localPartitions == null) { - localPartitions = range(slice.getNumHashPartitions()); - } - - for (Integer partition : localPartitions) { - timeSlicePairs.add(new TimeSliceAndHashPartition(slice, partition)); - } - } - return timeSlicePairs; - } - - private List getSegmentsForMyPartition( - List timeSlicePairs) { - - Collections.sort(timeSlicePairs); - - List myTimeSlices = new ArrayList<>(); - for (int i = myPartitionId; i < timeSlicePairs.size(); i += numSegmentBuilderPartitions) { - myTimeSlices.add(timeSlicePairs.get(i)); - } - - LOG.info("Getting segments to be built for partition: {}", myPartitionId); - LOG.info("Total number of partitions: {}", numSegmentBuilderPartitions); - LOG.info("Number of segments picked: {}", myTimeSlices.size()); - return myTimeSlices; - } - - /** - * Print out the segmentInfo Map for debugging - */ - private void printSegmentInfoMap(Map segmentInfoMap) { - LOG.info("SegmentInfoMap: "); - for (Map.Entry entry : segmentInfoMap.entrySet()) { - LOG.info(entry.getValue().toString()); - } - LOG.info("Total SegmentInfoMap size: " + segmentInfoMap.size() + ". done."); - } - - /** - * Build indices or refresh state for the segments in the specified segmentInfoMap, which only - * contains the segments that need to build or are building. When a segment has not been built, - * it is built here. If built successfully, it will be removed from the map; otherwise, its - * state will be updated in the map. - * - * Returns true iff this process has built a segment. - */ - @VisibleForTesting - boolean processSegments(Map segmentInfoMap) - throws SegmentInfoConstructionException, SegmentUpdaterException, InterruptedException { - - boolean hasBuiltSegment = false; - - Iterator> iter = - segmentInfoMap.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry entry = iter.next(); - SegmentBuilderSegment originalSegment = entry.getValue(); - - LOG.info("About to process segment: {}", originalSegment.getSegmentName()); - long startMillis = System.currentTimeMillis(); - SegmentBuilderSegment updatedSegment = segmentHandler.processSegment(originalSegment); - - if (updatedSegment.isBuilt()) { - iter.remove(); - hasBuiltSegment = true; - - if (originalSegment instanceof NotYetBuiltSegment) { - // Record the total time spent on successfully building a semgent, used to compute the - // average segment building time. - long timeSpent = System.currentTimeMillis() - startMillis; - segmentsBuiltLocally.increment(); - timeSpentOnSuccessfulBuildSecs.add(timeSpent / 1000); - } - } else { - entry.setValue(updatedSegment); - } - - clock.waitFor(getSegmentSleepTime()); - } - - return hasBuiltSegment; - } - - private long getSegmentSleepTime() { - // The Hadoop name node can handle only about 200 requests/sec before it gets overloaded. - // Updating the state of a node that has been built takes about 1 second. In the worst case - // scenario with 800 segment builders, we end up with about 800 requests/sec. Adding a 10 - // second sleep lowers the worst case to about 80 requests/sec. - - long sleepMillis = TimeUnit.SECONDS.toMillis(waitBetweenSegmentsSecs); - - // Use randomization so that we can't get all segment builders hitting it at the exact same time - - int lowerSleepBoundMillis = (int) (sleepMillis * (1.0 - SLEEP_RANDOMIZATION_RATIO)); - int upperSleepBoundMillis = (int) (sleepMillis * (1.0 + SLEEP_RANDOMIZATION_RATIO)); - return randRange(lowerSleepBoundMillis, upperSleepBoundMillis); - } - - /** - * Returns a pseudo-random number between min and max, inclusive. - */ - private int randRange(int min, int max) { - return random.nextInt((max - min) + 1) + min; - } - - /** - * Returns list of integers 0, 1, 2, ..., count-1. - */ - private static List range(int count) { - List nums = new ArrayList<>(count); - - for (int i = 0; i < count; i++) { - nums.add(i); - } - - return nums; - } - - private static SegmentSyncConfig getSyncConfig(String scrubGen) { - if (scrubGen == null || scrubGen.isEmpty()) { - throw new RuntimeException( - "Scrub gen expected, but could not get it from the arguments."); - } - - LOG.info("Scrub gen: " + scrubGen); - return new SegmentSyncConfig(Optional.of(scrubGen)); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.docx new file mode 100644 index 0000000000000000000000000000000000000000..b800cbed85c8b118d8441511d9bdce61b5238fb5 GIT binary patch literal 37884 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

L9DeD|MCTN?zzSQ?*GJ`_;d86nArdm7lCX zGNGX#mciH%W^F0BWJ}X(iJ4=F|MlrR$(@s=LV6(mG~^ilpI#J)1^hRx-fMw7a4jhA&ki%k;FNyTkFZKq z8HE&%!!I=Y}pcPU%cCU2&d=VZmi#}yBC}=4MS1Zn@11l{04Bl z=zNGoUj1%1x^Vbu)Ja)?51HIC@|7tCAlyiWkuQ&GzoGcdOD+VFHVIryg%>Yblx_rn!m!-Aj;N+ zMC)erB=&uq`n`ss@2>8>L-39Fq$0-cqvw;HI6NNS9wIcTf}YM#cimf;=DR&XUR`>& z#O!xF&jXwG+PXYrbAuWj%%whlw#yo*r|Z!tl;hRD>!~_n1bXJdF5I;~cxP*ad>kk% z0}-|i`|7h$8t6_xO(NBqV58@yKR$a>oBvdv;ol}0VFVL$V zTldWiHS-LzZF`b!p|`4@y`e5C0W(tn{e-fm4$O7u^HnDNG4K?Gm?+@e;dKU77Gy@| zs%M@I4&CkBZJtaOP9LZ33M98b&KsaN6wNv0TX@(W_;znZaeDJqBtDz9tMosG!A#dt z43yLUxh|P3xOyYR!Z5I12vh!Mg4Y(C{)?4nD)W%yG_JCYAQK3!=I$x54{B(g`rQLw zni3Q5S?eYa<~x419h08zs^FiDXXki%bn%8K=@-afXxII1F&rAW(C_bq%6BN7!Yc0z z|I1d)&Cw+)zM_`SsVt}-*a`jO=x><|YD?SvD$KW*?ky~?x;$%FjSRiHJz4vFJ!ePz zJt|ZCSf|+mG{apv&*ACfbKYH1%2?AoCAoZE%;`YQ-8WCL_lq%{zPjLo42v^AITsL@ z5er3)`wZO{K6`zlHcbnC`E+DAV(8RUJ3d+SP9~fGHQ_tIdUavlRbxRo?0a?*^$QZG@>& z)j!2ex#NuD9rgRsyJ)TvN=_}%w)`i#!WRPzEA7WKjC!M1N8ZL>c8j{VGKXG_Yg8(I z@c)MtvSV{;8(lBWl10in1LwsdV5X)C{O$F#1n*2hu zvRJPc3=*?4_&kV*8xv4 znSBP#0)nEj1|pNdwj8o-cEfH9EeihiWSdQ}euM@p$yA_!WQLbB;LKpdI%f2zCtrqE z)&m<~m0hTGI_qFac{(6keTKD8;%^ZjxL-?pGxp!3=qI|uw5Ez1ReSr!COM{Anh$*S}NREUQj&tV~WdfHl+cLknDyf{3H{nMsvAc-jg2fJ8?+%JDz6d3RgeVmq(s; zl@&pci=Ap~79T*=^m^TQo+VihHa!`P?g}~qo7rNb1PkX}Al1YfTM<#%so$Sn(H(>y zWcbqrFGou}Dtfg2Z>}1Jg?1aW3=&e`C8LtGOJb#>V zh~;GW+3JY4shYQbZ$1)D^S|^+PM{RXPtNSv*Q?>j@6Gbdr?M`#zRpuAnBu}qk~>`< zF|~)2D=uElG|WG8X)dqi{;kdiV!w#oLcGJS&FQr!;-g%qMiGkyu2Hl1^gJ_MEF^FKAum?! zxGd^u^?PS%Pq_0w`o+YR&KNQG{W3bqI zL#ys6xkSXI19ZYL%npvGEQODqg5vJNZjlwYhx~kP)5EGw%0i2yo3o6pj@(*$Tp7Z> ze#o=>>`iJu5TSB_oZFi1`1m6MZ4ij}F(4U?3d8xG!-u0Heb%BgumIk~*=Z5Dln3OI z)jra|KS|~<&WnJFSg#xa5>c0dd*2KXBN=S520HHmx-yjN zyh~#P|8VD@iflRyne?rP(=8wnUk?QcOiJl6aJoK_NE{xES}#|E=K%ac$&WlqW*#X8 zgFY__)&bW^B|5>lk2;?eQNTF3@FKy_MsMJtG7MM&T!@e;Q1BZHQe_D+56&7(c)gen z9-Ko4OMv~iL_#xRQ#TG402^J2fIv!MGusQ+0((b^)(8bW7>SbvtAMSRL}f8?V^*Y$ k7nldfgAzVB^^+wg9UZzkD*!8KZB=PO0)XX_n6-BH4>z&(IsgCw literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.java deleted file mode 100644 index dc4565ede..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderApp.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.util.Collection; - -import com.google.common.collect.ImmutableList; -import com.google.inject.Module; - - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.app.Flaggable; -import com.twitter.inject.server.AbstractTwitterServer; -import com.twitter.util.Future; -import com.twitter.util.Time; - -public class SegmentBuilderApp extends AbstractTwitterServer { - private static final Logger LOG = LoggerFactory.getLogger(SegmentBuilderApp.class); - - public SegmentBuilderApp() { - createFlag("onlyRunOnce", - true, - "whether to stop segment builder after one loop", - Flaggable.ofBoolean()); - - createFlag("waitBetweenLoopsMins", - 60, - "how many minutes to wait between building loops", - Flaggable.ofInt()); - - createFlag("startup_batch_size", - 30, - "How many instances can start and read timeslice info from HDFS at the same time. " - + "If you don't know what this parameter is, please do not change this parameter.", - Flaggable.ofInt()); - - createFlag("instance", - 20, - "the job instance number", - Flaggable.ofInt()); - - createFlag("segmentZkLockExpirationHours", - 0, - "max hours to hold the zookeeper lock while building segment", - Flaggable.ofInt()); - - createFlag("startupSleepMins", - 2L, - "sleep multiplier of startupSleepMins before job runs", - Flaggable.ofLong()); - - createFlag("maxRetriesOnFailure", - 3, - "how many times we should try to rebuild a segment when failure happens", - Flaggable.ofInt()); - - createFlag("hash_partitions", - ImmutableList.of(), - "comma separated hash partition ids, e.g., 0,1,3,4. " - + "If not specified, all the partitions will be built.", - Flaggable.ofJavaList(Flaggable.ofInt())); - - createFlag("numSegmentBuilderPartitions", - 100, - "Number of partitions for dividing up all segment builder work", - Flaggable.ofInt()); - - createFlag("waitBetweenSegmentsSecs", - 10, - "Time to sleep between processing segments.", - Flaggable.ofInt()); - - createFlag("waitBeforeQuitMins", - 2, - "How many minutes to sleep before quitting.", - Flaggable.ofInt()); - - createFlag("scrubGen", - "", - "Scrub gen for which segment builders should be run.", - Flaggable.ofString()); - } - - @Override - public void start() { - SegmentBuilder segmentBuilder = injector().instance(SegmentBuilder.class); - closeOnExit((Time time) -> { - segmentBuilder.doShutdown(); - return Future.Unit(); - }); - - LOG.info("Starting run()"); - segmentBuilder.run(); - LOG.info("run() complete"); - - // Now shutdown - shutdown(); - } - - protected void shutdown() { - LOG.info("Calling close() to initiate shutdown"); - close(); - } - - @Override - public Collection javaModules() { - return ImmutableList.of(new SegmentBuilderModule()); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.docx new file mode 100644 index 0000000000000000000000000000000000000000..0b6e1add4b07c2b511efe544b224a00b1cf0f747 GIT binary patch literal 39506 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.java deleted file mode 100644 index 79925ab5a..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderCoordinator.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.io.IOException; -import java.util.Date; -import java.util.Optional; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.quantity.Amount; -import com.twitter.common.quantity.Time; -import com.twitter.common.util.Clock; -import com.twitter.search.common.database.DatabaseConfig; -import com.twitter.search.common.util.zktrylock.TryLock; -import com.twitter.search.common.util.zktrylock.ZooKeeperTryLockFactory; -import com.twitter.search.earlybird.archive.DailyStatusBatches; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.search.earlybird.util.ScrubGenUtil; -import com.twitter.search.earlybird.partition.HdfsUtil; -import com.twitter.search.earlybird.partition.SegmentSyncConfig; -import com.twitter.util.Duration; - -/** - * Coordinate between segment builders for scrubbing pipeline. - * When segment builder is running, all of them will try to find a HDFS file indicating if data is - * ready. If the file does not exist, only one of them will go through the files and see if - * scrubbing pipeline has generated all data for this scrub gen. - * - * If the instance that got the lock found all data, it still exists, because otherwise we will - * have one single segmentbuilder instance trying to build all segments, which is not what we want. - * But if it exists, then the next time all segmentbuilder instances are scheduled, they will all - * find the file, and will start building segments. - */ -class SegmentBuilderCoordinator { - private static final Logger LOG = LoggerFactory.getLogger(SegmentBuilderCoordinator.class); - - private static final Amount ZK_LOCK_EXPIRATION_MIN = Amount.of(5L, Time.MINUTES); - private static final String SEGMENT_BUILDER_SYNC_NODE = "scrub_gen_data_sync"; - private static final String SEGMENT_BUILDER_SYNC_ZK_PATH = - EarlybirdProperty.ZK_APP_ROOT.get() + "/segment_builder_sync"; - private static final String DATA_FULLY_BUILT_FILE = "_data_fully_built"; - static final int FIRST_INSTANCE = 0; - - private static final long NON_FIRST_INSTANCE_SLEEP_BEFORE_RETRY_DURATION_MS = - Duration.fromHours(1).inMillis(); - - private final ZooKeeperTryLockFactory zkTryLockFactory; - private final SegmentSyncConfig syncConfig; - private final Optional scrubGenDayOpt; - private final Optional scrubGenOpt; - private final Clock clock; - - SegmentBuilderCoordinator( - ZooKeeperTryLockFactory zkTryLockFactory, SegmentSyncConfig syncConfig, Clock clock) { - this.zkTryLockFactory = zkTryLockFactory; - this.syncConfig = syncConfig; - this.scrubGenOpt = syncConfig.getScrubGen(); - this.scrubGenDayOpt = scrubGenOpt.map(ScrubGenUtil::parseScrubGenToDate); - this.clock = clock; - } - - - public boolean isScrubGenDataFullyBuilt(int instanceNumber) { - // Only segment builder that takes scrub gen should use isPartitioningOutputReady to coordinate - Preconditions.checkArgument(scrubGenDayOpt.isPresent()); - - final FileSystem hdfs; - try { - hdfs = HdfsUtil.getHdfsFileSystem(); - } catch (IOException e) { - LOG.error("Could not create HDFS file system.", e); - return false; - } - - return isScrubGenDataFullyBuilt( - instanceNumber, - scrubGenDayOpt.get(), - NON_FIRST_INSTANCE_SLEEP_BEFORE_RETRY_DURATION_MS, - hdfs - ); - } - - @VisibleForTesting - boolean isScrubGenDataFullyBuilt( - int instanceNumber, - Date scrubGenDay, - long nonFirstInstanceSleepBeforeRetryDuration, - FileSystem hdfs) { - // Check if the scrub gen has been fully built file exists. - if (checkHaveScrubGenDataFullyBuiltFileOnHdfs(hdfs)) { - return true; - } - - // If it doesn't exist, let first instance see if scrub gen has been fully built and create the - // file. - if (instanceNumber == FIRST_INSTANCE) { - // We were missing some data on HDFS for this scrub gen in previous run, - // but we might've gotten more data in the meantime, check again. - // Only allow instance 0 to do this mainly for 2 reasons: - // 1) Since instances are scheduled in batches, it's possible that a instance from latter - // batch find the fully built file in hdfs and start processing. We end up doing work with - // only partial instances. - // 2) If we sleep before we release lock, it's hard to estimate how long a instance will - // be scheduled. - // For deterministic reason, we simplify a bit and only allow instance 0 to check and write - // data is fully build file to hdfs. - try { - checkIfScrubGenDataIsFullyBuilt(hdfs, scrubGenDay); - } catch (IOException e) { - LOG.error("Failed to grab lock and check scrub gen data.", e); - } - } else { - // for all other instances, sleep for a bit to give time for first instance to check if scrub - // gen has been fully built and create the file, then check again. - try { - LOG.info( - "Sleeping for {} ms before re-checking if scrub gen has been fully built file exists", - nonFirstInstanceSleepBeforeRetryDuration); - clock.waitFor(nonFirstInstanceSleepBeforeRetryDuration); - return checkHaveScrubGenDataFullyBuiltFileOnHdfs(hdfs); - } catch (InterruptedException e) { - LOG.warn("Interrupted when sleeping before re-checking if scrub gen has been fully built " - + "file exists", e); - } - } - - // if hasSuccessFileToHdfs returns false, then should always return false in the end. - // next run will find success file for this scrub gen and move forward. - return false; - } - - private void checkIfScrubGenDataIsFullyBuilt( - FileSystem hdfs, Date scrubGenDay) throws IOException { - // Build the lock, try to acquire it, and check the data on HDFS - TryLock lock = zkTryLockFactory.createTryLock( - DatabaseConfig.getLocalHostname(), - SEGMENT_BUILDER_SYNC_ZK_PATH, - SEGMENT_BUILDER_SYNC_NODE, - ZK_LOCK_EXPIRATION_MIN); - Preconditions.checkState(scrubGenOpt.isPresent()); - String scrubGen = scrubGenOpt.get(); - - lock.tryWithLock(() -> { - LOG.info(String.format( - "Obtained ZK lock to check if data for scrub gen %s is ready.", scrubGen)); - final DailyStatusBatches directory = - new DailyStatusBatches(zkTryLockFactory, scrubGenDay); - if (directory.isScrubGenDataFullyBuilt(hdfs) - && createScrubGenDataFullyBuiltFileOnHdfs(hdfs)) { - LOG.info(String.format("All data for scrub gen %s is ready.", scrubGen)); - } else { - LOG.info(String.format("Data for scrub gen %s is not ready yet.", scrubGen)); - } - }); - } - - private boolean createScrubGenDataFullyBuiltFileOnHdfs(FileSystem fs) { - Path path = getScrubGenDataFullyBuiltFilePath(); - try { - fs.mkdirs(new Path(statusReadyHDFSPath())); - if (fs.createNewFile(path)) { - LOG.info("Successfully created file " + path + " on HDFS."); - return true; - } else { - LOG.warn("Failed to create file " + path + " on HDFS."); - } - } catch (IOException e) { - LOG.error("Failed to create file on HDFS " + path.toString(), e); - } - return false; - } - - private boolean checkHaveScrubGenDataFullyBuiltFileOnHdfs(FileSystem fs) { - Path path = getScrubGenDataFullyBuiltFilePath(); - try { - boolean ret = fs.exists(path); - LOG.info("Checking if file exists showing scrubgen is fully built."); - LOG.info("Path checked: {}, Exist check: {}", path, ret); - return ret; - } catch (IOException e) { - LOG.error("Failed to check file on HDFS " + path.toString(), e); - return false; - } - } - - @VisibleForTesting - Path getScrubGenDataFullyBuiltFilePath() { - return new Path(statusReadyHDFSPath(), DATA_FULLY_BUILT_FILE); - } - - @VisibleForTesting - String statusReadyHDFSPath() { - return syncConfig.getHdfsSegmentSyncRootDir() + "/segment_builder_sync"; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.docx new file mode 100644 index 0000000000000000000000000000000000000000..561e499f7dc7c07ed8fb0a756b97f6ea5801620e GIT binary patch literal 36790 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.java deleted file mode 100644 index 85db7e855..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderMain.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -public final class SegmentBuilderMain { - - private SegmentBuilderMain() { } - - public static void main(String[] args) { - new SegmentBuilderApp().main(args); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..4dade1dd5a01716524c967c6506f51cc6290fc4e GIT binary patch literal 37546 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.java deleted file mode 100644 index ea0520a0b..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderModule.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.io.File; - -import com.google.inject.Provides; -import com.google.inject.Singleton; - -import com.twitter.app.Flaggable; -import com.twitter.decider.Decider; -import com.twitter.inject.TwitterModule; -import com.twitter.inject.annotations.Flag; -import com.twitter.search.common.config.LoggerConfiguration; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.util.EarlybirdDecider; - -public class SegmentBuilderModule extends TwitterModule { - - private static final String CONFIG_FILE_FLAG_NAME = "config_file"; - private static final String SEGMENT_LOG_DIR_FLAG_NAME = "segment_log_dir"; - - public SegmentBuilderModule() { - createFlag(CONFIG_FILE_FLAG_NAME, - new File("earlybird-search.yml"), - "specify config file", - Flaggable.ofFile()); - - createFlag(SEGMENT_LOG_DIR_FLAG_NAME, - "", - "override log dir from config file", - Flaggable.ofString()); - } - - /** - * Initializes the Earlybird config and the log configuration, and returns an EarlybirdDecider - * object, which will be injected into the SegmentBuilder instance. - * - * @param configFile The config file to use to initialize EarlybirdConfig - * @param segmentLogDir If not empty, used to override the log directory from the config file - * @return An initialized EarlybirdDecider - */ - @Provides - @Singleton - public Decider provideDecider(@Flag(CONFIG_FILE_FLAG_NAME) File configFile, - @Flag(SEGMENT_LOG_DIR_FLAG_NAME) String segmentLogDir) { - // By default Guice will build singletons eagerly: - // https://github.com/google/guice/wiki/Scopes#eager-singletons - // So in order to ensure that the EarlybirdConfig and LoggerConfiguration initializations occur - // before the EarlybirdDecider initialization, we place them here. - EarlybirdConfig.init(configFile.getName()); - if (!segmentLogDir.isEmpty()) { - EarlybirdConfig.overrideLogDir(segmentLogDir); - } - new LoggerConfiguration(EarlybirdConfig.getLogPropertiesFile(), EarlybirdConfig.getLogDir()) - .configure(); - - return EarlybirdDecider.initialize(); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderSegment.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentBuilderSegment.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ebf91ed7256380f4021952c8c21864c11260b01 GIT binary patch literal 37815 zcmagEb9`Of);}EEZfx6j(%5#xhC8;=*lKLsNn=}$tp-gR+rQm&&b{}X`#jJ4{F07hO5si zg+ejLXQtiz5U$k=ba^*Z>WYb<>g#7}7LbCMco%HsGoG1q?MuXyNH0n45zG%l)wX7O zf0*V3W!|gp=QTtNITy{<2~5^{1c{-liq$|P8VZ3?5g3CEt0|b}%IhGrS5rA2q1vPS zyg#Po`a0p~M*1k`FOmJa%t)z`Wt{={Er9!LxY32Wx_DXjUOVP65`zl(ln5;Mtn*c6_-fYZ`Q)J9M;T z)O;+DgQRdh@5PWZPkI7rs2WK0lc3UBJ7TN6gYWzA?`eu+$ps&m!wl}{=j3fC)cr@0 zzi_Av)v2_L#HNh0@o>F69E*|q+~x-BuJDK}_;iRH3Qz|K4|qLXB0V2`f?UOUKnSS5 zmwM?e-gj9G%r}vvPodF$O(rNr?T-KS?DYg+Qt?4tu=i!DWMf}w?4C6L8AILxMCl)0 z^q`a#egJlF6AT0d9{AVL(agq)iShSmRl=kUI17sZxuC=dMTuRrx_IG=f%uVpp5cEfd;6xfac z5_h%TU~QZ9$XhZbVKd5mPIC=nLAp)!L0y`Lvssa9QE@|BTPdW{;Ic&28+d1GO&1@A zIRF$uQm&aJqNJ+rhmBjrgHW@xl###iahyG>YMO#63pRHllC%T*jhOV|bWC|%TPD`G zr*@^!x)qmLO(N# z#J#t~yu3#EH42P`G%e_Hgp3qMz;fFiJBPf@csA$c)?T5lPA;7*;TGTUwY}g5S5phP zNk~EnQE2>mfN2E0Hs;%!G1mHXwgfFtRdR6OdC$|_6{Q8Q$yiUMGA;sKZ8o@c28+Jj zVi+&kKs^Wh{Ff<`tX7rcydzOnRQZ)J8o~+G-^dV&_c3UG1_Tg>Cz2&Jpq8~16M|%- zmga$mrwn|On=*iyTdsf&a@?_jaK)|GQQSS+)Mde4YermiuKo68a>e53OQ3@o{OjYO zk;*})8FeibEB>kLBP0ScD4Vcynu=Si2J3djsgt9_*0d|Qeg#5HC<0Q-hrHR-(n{gL zJeYM|*G<4cQQh$T{O&q~6NSH!vuP_^E&6NoI5$=5C*RDCJfvYa0gF)Btfc#!OG}oF zBx#HikxU5bZ&KgsyC(CG8vNcrzI|B6r+eVKgupqrKr*12a}#@e>AS-FXJ2mC*04{2 zeX)T60YUkDUq0E}|Irq;al18Ul#XXQ2z}=WOK1^goP@wdky)_~+}ec9miaMKnRtjc zmR(<;$1qHuFHE=Ld<}fhjbqPCBIeMI3ZK<6#~<@YlpHqTnrb4357s6RNu40dAi%Y8;mC|38C$s6zQg&SCND_8@-C#73{rdUd)6ge!12? z3|u5DH7##`Rc2OqIxWEQaqsq6J0%$rNfPYSD;vbPM};NzN|+?JJTV@N zQRl_PX9z2JFX!8O)1Roh7Ph+B{BvZ&CxrC&S91st18_gEO$xV#eP?bZ?JKg*sMkQS zBN|T{h*j&$G{dfkz~xHm9Nc)r|qJe{pdmBvxI4Yk@{w{dhjeszpx{w!~lghDz=; zH7h7lH(pyIv&&dXB2Yasne^%U0Tbu?<6Frd|DD>Yeg zQge%(FEkTd-OENXK6PMCTBu0zV`oPO(+d;f1#HISHQxKe?JuH#UKmUb1J3=xH7S+t z&o8VSz|oWm_^oxZ1ujm%uZ(?NU8gy24BsuoyisuJJno-n@OV;rH(&(0&YwMYJp17Y)z>6Zb+Ig{%%2f zG~cbC&F`oEan)$Ygc0&|epqd3>(~3O=lmVT2XQqV2#jF6SmWd znz>DS@oK6vfd0cxb=`^~7gg4n)dUr0j-QQOVh>M1j$L90DmL-divrp~AzC12wd_do zvj}l3a+TW0LCv{Xa3|DV9DHih(>Yt~!g2u}f_%O>CXULCz9KHHG>my>AIK&e1w>J&+;xa(Jz zxm8og_gOHySAh@7&C!hbL2KcRfNhG9L-+Bc?ewiPYKxEWCa>C$eIJJ6lgBUO3RSt$ zQbN2A__W@BhR1P`aMLNv@dmM!eDTJ(|53)ITm^;dD^A%Eg-P27DWrrG2{c7olN`7Z z?tQOeZ9j^kxB{cT5>1|aH5l~@(xI_d{~tvl3KELdG0%fqaYaWvJC`hk&OBr=ZcWO$ z2;$s}xJ3_}6g*6}c{#EuNmYoexM<9US6a&Q3vr8gsDYILYL@wr0+h@jAzz6*_4GH; zMe}nJ2Cml4m2p}g5c2mQzvs{3;6NTk82h~>;|@}bCsP!C_oAh_CokM_RX=m4J02K6 z_@=&xrMgA09O3r1@#&tf-&v7L>%){TzwyF1`ftNF(~@Nl1SIIJr}EmU$7JHGm<0-o}e7sh3g>i^=nDN zV}$99C0ykwDkMs72LVEf2R1z(sJ>;bzEv*iPL5+u78%j?LDBiipN*JIH`I{2mR?mC1eY=Wd1f=n5L{q){ zLcbo9S?J3Jk74H{47469vkkMCBC;9U51hV_gjc9Pp)nTXDJBVN;StKSQG}FLic`z<>Sx0*_aYi>Lm}V{70N^yGp+HVy=Q z()+5pKya_Z#v)T6e33)#vCzGKmr1gCl=Qk8Ky(JLHF|ajk7^?oh8yA}6_%o}P~7XF zLGH9?Qs7#dq$cg$B2lC3OqIw!FVbiO`zm6lnyooU#_2k4eYY(CGcsCt>T!8n+h)q! zyMD*WQ?%_liCQ;U|Grzsa*8F%li;x4K>70>`oyTe({l%@u;`N=MS?8#c+}Rj#m|QN zJaUW6Z2RluM2ud_`o|yAMg}CFm~8tavDEJY==KC9fFg;(3U4g()ssbZaZC)~BcV=2_Uxqqk?j&TLQH3N{?<9S{{iX00yX-Pw)DAnd%I zr`m7HL3t0Q#KyDSoZEHU4``vJcfcw|M_qB2boR}~8RvkdW3R<{Bmb(ML4X?KP<0h| zMC>dB`-QV~Dtl$Xvi03OFq@4!g10HFQ-d~F9QTZqr($#By~zAs=$|W|oj)ELD{w0` z4%`ai1GhqdtayKJX6d#`$vo2Gr%w)*?cC&@>f$CJ4qc;6Aa@iPGR9npk{KGm1#;?1PlJ@Yh;4s_uYam9RyMa8uN$ zs|H(#e3-Q6wz`>38t_zrb@qY=6WSAuD#737A<(i`9@qSMBG7m76)k|6$`;FMwN&H4 zXkC_j^=7sPg6A>lJJUaF9bJLN7s&(yVxSHQg8Z*qJ2`vUm^uC4TL2$e6L%%+eY(5z z3k+X=*v18e3{TmCB)H;#^6Jd4J7<$;oBK60gZ(-7)XHc-**bPhDt#KAih`+a4OackJ<6&;Mro{%tda z$#<2=Af@DDy8kdVb$@4k?WCpRb^PS2(PQ0)t3-&XvbU#G@e5B_RQ>ynWrL2_^TOJ= zr(1;3yS)~mAN9U{@A}}@{ljU+$Y;a*(2}Ko-zGuAehc4~>|rl$JJ+R8Ulcy&rcNH$ z3Y`gMyKdj^Vf+w$8yMIIkMecJHho_Q4#ofJ6L+yp-F*n06w z`VsmHlKWBm4Zg$Qwa;Ciow$wfSv5T3$RI+yuLPTP=A6c4JYOW=Ub&|eaE;$Y`Z_Xr zzVdjIT_;xT(YSbYd91DriHpYig)qH!t#`GzRE{SPviRAyulscA>7IAJ-ike$tE3Y4 zJ8W$*A#eG9l_2t#%04A|AEDb~IsB$|$3r*!Z%jQx%dG|3m_Z6tlv0HjaALvSnYF+Ib~*Uo9)?eOXDsbuz*K6`X))fgt)R>m)>ONaXoPL)`NrBAV_7j4f= zpRUzttOn979)jLG^s5)ApHJtW?C%|3ho$eXg-*`}GnFNq^cUtY`VX$Jf1dR_WwO(S zwBZ+NM!)wTxR(=VUQ??F!LQ8hKT!Bx5G^TYw4_E_LCl0%(?!&lOK=OL#)FCzekx?` z>UnMNxg^7jTz}Ux^A32SZ?@Z7vYePmtyMU5m@MoL+#6ip?GtslWoe283=MBqFzUuRV!j*_x7Pc+vWi8v?M3h2K za2Xht3^)pi-a~N*lH;iVe6jH;h1neyA=?xHP;Kr}U11c3D=d`Y#16<22GJ|5xWKp$ z$im#;lb?Z;SpS-Y*dYgiiu@H{-GocQ2*Kn5Khh_?3HC4SQ}zU4DlssQ=8sezAX*3z z_aCW$QbCkaom-K({};izG8u3L?hh3y9gwDZ|3l(`pyE8Qs<8r7fl+@K=86Z@qk;nT ziqZIkff%0Qza%mc!%%s^!~CIoKGCfSrQ>(hzlRE)#2Tku+q=*WvU$aI7KpnDHC%ko zA3^=J{d9;H+mm}_;3NW4sgmMKTbtdxw*1=Ab(d|O@Wr*}4; z2REK?UE1{R2E9aH`j;kL^FA-TU+X>$&E?eWxYzt#5L7(eKN!v5d5GQ;(r>vHCyKG# zWn2+X){8mkh{t_@wnq?S@R&A2p^ zC=YjwK;alJN&)e<1HIW>-XwxaIcJY=$b&Y_0>|2!P zaw1l{RXy2c+gtBO{E+e;ty;fh^7`iSsrzd8KupSgZqoNFO73oFH`UKmNTXO`C*_Uq z;1I*K>R3BvhKm`2uWthv#fpdHteeh+;T_Ur87ea48QU)j~9-(s_vj`L(p_Y)f+wdmJt0@ra7QE9 zpvlQGTgJ8D+C?tvQjp|VLiXb?&^%A>N<*^r!$?zGk}%tO4*uI*j7tDLxo(H{9WFAT zmtyiI_Hzl7YV2s1&d=+JOpehPq!uWz2c1V4$GZn&L|n=r3wXZ3%eOMJ_d4fEbLoAq zjD@GMuLccrLPYVl9J?)|DQ1#y-;qW4@rGp~_{5`ATsZdV8LEvw*-l)7jymk~#rUkh z`&@P2r{qWW-Wh+HAyyeEYQ9)6MYJ+ttvZXZx#z zhwuGc^84cH)7;OOV|(UL9dE5dS$9k?)5DOSZy?Ak86K^I5QbarEvdt|B#$cb&m2bU z!3CvfPEJS?^5c}_Id`c@Qc-x{I@HdxRoY~O05jDK&oAiR-QLRnmmE4T>f(=$#E*!8 zXUtkGy4wV(W*I~qk`K$r=>d2ZDYEHvj2tD=rV8zD2f?Dhu8*@j1g11uYF+qMKGYH- zfjCW{y!?#og}l@)D4rfwDe5N0_jb!J%m-+jH02~y=8ug(gz!uehD|ueSLz3wZKbT4 z9xOm5TC7`fBT)qgGUoHOv?lhbQ?#Jz4Co_iVz;BkH)vuarm1?KL@DQ3RctzdP#D;ms`iIjSusN1LPl=^ev zLoK4{jZvq=vugZ!jI@#*c_P@7zmbE()lDOKM=k1d*&WB@SSqcd#l)yGj%^@L*$Ibq3BP_?KVP1nXlIFl)*C`wmeWrhUt9gxM?fg7pDP6rk8Scyb!`ss$K6a%nawao(_p&>Ct@KcJh#P%9|t`P`qRJN&7&)YtVPjs&&HSLFCL+247S>- z)AwC+wznA1vMdhXE||OYg0D#!sgHYmdRQq`>KWMa>kQ1R$fi+NVJWQZEqr(W5mrX= z#pKBI(V>m^SK4hw>QORj>^EPKkW$vh-enMc8scv!?tt^pnYE0YcwhR*HSyNnqL>Ur zFE&4|fS2qNpbs(rnBcRqP;)3z;BKdUynLC*G-ML*6xl?|U@KF=Mb@h(7r%j|9Xho3rim-KG8APSwh3gvuZp1FJjj|+A3=_1Fze#dQvnj|- za*MF;6~dd_STv*+3X~MxWs`d!)IaC^+p^&G8f6`itDSU)(@5+7o ztYUrifgBB2Qd(BUwT;AUie7SsgrU0f$!Mvmq(@{!wP$nLS{~zlZigaJ+? zXhzLb7hH!y;gXNWp1Cgb5{0f1I-bthTf@bK&9y6qr3X) zgTWq~??-O_cLE$#!5wbv!Isutye$eS4i;v+;-^RZ*O`*Z9e22BuW9E&_@7gE-@zUz zD%g|OmscP)Mw8X6vg5MBTr+HK&*EhtHI>`+vfJNu&z{62iIA}w1PT#HSx#J~HBPhD z_lywFkGuMy@(Bak=S{xeg?3jVA0|g)9$4VQ8`k9cA!pBWOo5O=DCI$|-W)Ion( zMM(H2G3Fn<+?cTj*#T6oh7x9B*rt~5HqKFW zC%S^u4X2CElB@d`rVC6btTzpm^mcMTn&+HD4E6<7BaeYFRvuS9eIA!dPdHKV#Sc!t z;$G=HE5lj5@<5DPJnIrc@Xk7}U)C|3Lud2#*uNl5-C#TA53e6Tk9jHCgVo@t%w)tk zb@+4TPF{l5!*s@*!FHyBE9hSF8@Z0AqzVR(1&ReUDm$Qe9sAU4bP0DMQd(5FCjDyOEJ zBSdwPh$CC_FPoB-`CMMy4#iGDoPa~5TrLYiU3$IEpg?r@{o3G7=gd7|jQ}ocP4uDw zQ*BYefj|0q4&(}?-XKrI(h;I65M~ln3{V|@G}*E-=&$P4zF<+hWA;LZDFWvIE=U zs3i*Eow@|u^yeIgA0fSwOrf|jN8pC#-@3fQqrG-A&-q=V!dbk-?O`dR^*tg9Bb|NN zr3W7u=a1?te9yPGP%5k2p}0}(NH31$6k&c>>Arf^UEYGfw)*5ob1BlCX);?KIpqP# zsq#DK{^cdFYkQLm`fyHCU+-};XQT2$=%jZf>b2)M!9|uMvS}`PBF7L_Vdl#31ZLVT z;YJS2FlDjpY^TasG{Af$TQDv}K^3V}4^Ra3$_*N2o5kw0;Ewli)1?ax+zUQX9_vp) zSD)Nq-pbrX&a|%}jGUB($YU!5fazEWK9Ze(q?i7cKL79Zqu=R4grc40KAbmp-@&gu ztzPFO<}(_snq4Gvl$jtqlzPyQi+IG5Q_Hb$6Heo7N&-DSI-|drVs9>oDb-l{p><~9 z1$1QVP`aSr9#p2=KF(Uq%YrgtTm*YsBF**}9ZPhY@{zBVGCx|&!Q(~$~)xf>&!?Q#^ zRzD3baARYLTT+dzX3XErRBvD~e~R*?*$x5AR$`hY@oZJ=EKRiuHRZFMf3E322oG}I zOU)&|ukT9}X5^qo{lK<#jqEbNrSy@4m=T&9x!2c?S274+Gh=dCs_6X8Fy(!NXmeWh zTD+iAEQ*ECF6Afo>kplqC#M_911im7)#EGg>qcpevM}SxsH40ol1b~m6<5u2^Uulg z%ECVPPiPSIL#5Huocn=QXi|j_!HwzM97$@jgrab z+O0mNN%$_x3yD=NsNd*DZ{}|Tk|W&a0f?-$rD0V3)uvG@epV|SP%kg3 zn_kd-BFmW@I6S5XyIP$tiS)m?yHYTUnhAjtp4 zqp&B94Z2fusf1c<Al3{XX5QW97qMdNl|&daz?0 zWDF!Vi1~}RXO<6^Sl+8xprft{&51N4tzGBQ)npdPF>;0rjWAMOv$P9y%ZJBwUwLAn01YC1aeS8 z#umC#;)RAypvGQZCy?+Iw)7Lf61NhnQvdV$uxX+8g{3Y8`I_{qLNT$)V*~M8_$jCT zQ+ct3@Kv-%S@w{irir5P6_0>-bqr}Pof1R`zOS5wa4;z`fj+~(&A|~g$xHOaU<*t{ z+u5NirCw-Mc*2BGVS=vF{GZjN9)ZX{cMm!l`573M(e}SIk2%6$s5*xez(kats<=ad z6$>TU?VZ|DZO?dNcFvLfZbz{ta+A^GdiVLl3GOTO_UgAr1f?>49k{|PMh1vxUnLa; z^_L&C_?BIX)UU?5#BZY&Zw_rwSC6%R@So;=I^ij(3Gt#o8aR-(Aq{B;Jy3<#Ox;t! z7pBuZaWuljuIn1!YgBiVr1a*BsjG_wgS)eY`KEzpb}b@M0H`fFE+_huYLOJbBqo@8 zh;s0>(W?-r1dgZ-U9TAR3RI$5@A^vx$Pu9M_>Y2&)+4$ooEEm@%;e#0UJL?AYl$iySaXSlB1t}S^~{D39(nDWsM1T;ut7JOvJ4iSyVFDYf)Lhy73Iu? zN?gfQopYEeMhU~12}lIti9@FbH5R6qG(f5QT3w41G2u$uz=#sZr%md0AoVwmWEJT; z%Ee20(!YJL2>kZl8>%Je;B#uqa)Iy4iT|f>iBTXV@Pnn+hvj=<*r0RBppt1bdRo(I ztBFD9qL=8KenB}4kk*juMgyI3x%uFXl)v_Rwuq{y!h2cF zb|I?ZU|17jGPwuLu-ht%QACxW-l4X zf}xyZN;u<-+hR#2VZhYZX#DeTCNOF0&m`{unUp-a z&v1KiHNX?@gm(Cw>T4yU&4qj>`uM{DPc+*H&knT1N{Oc5^R9TND2MZk_hXq2SJWV~ zuhbyBnSYEkP)N%yLN%LEO@*6z?`96AAqW_RJ1yqx{GM+|WDRpVF7Yy(()O?qD)O}l zcTo6aJSD-DlO=75KZlzthtD zM{q#kBAkgn`KLnH|EcgQ^Ez}geyftxQ#nuMwDg1HsAH)f^wmJ#cZQL<>cS6f`yOh8 zV!cSc<%??2+BU{7VzpaYG4WdjzgOs^$E}TS`uBFBj+_u>9BI8!6ie52`Z=bj(Wax@ z!=va4;K6~C`TfTO%YrC#>v|^Ul9Ckz4o`fjDd%5xXZ?NBXWt~Ed7$fW4S+ZHNd~A{ z0MeK2b7r5a=7xjSR%POYQmZ7tA;M$*E7;)ez&O2%c5tDK^%W>&$)0x4Q+$(N#7&?B+<2k1g6 zw2ZmwQS0qnK1pZP%~@y}=Wfm#0k`4}0$!??cUI4}5Vsl&MzAd#=2$5`UbblTy&)8B zzWQlejXNX;JoLS2{hz{rQ_KEAjRvHKmi@i^o@m=#L`*UIgWA<}97xT_`6u;v3iL>% z|AYFnYXG(*JjZa;yX|AA5$thQc`usXTsA#@fZHz;t-y|E^7a!U^hh%IFij-c+5vkl zQqvu~{sc~wlIhw3;m*BYwBNhzq7N-z^9X;D-?@wc$yK5MAa7w|M~`IuKgef|q_-bq zQn%I}|03@*l73Xte1OwzQO5Y*=lmV|NVP4VsngJ4t23ZY;GvQ28(bE_`?sSpnf%*_ zrQNTc#SkTh&-7YI5kI2=bxA`$%ef-7t2`QW1%C3KSyjiEZp{aA^cLltb09j(r%iH- z1TJpt-vr9+$!tmlQ#Le0MhDy(;sRiAMQi81NKhzFKq%0cC+LMv znwrFLAzYs}==zAQD6M_>KB;E?kYhay&$bkwhOn_HKft5<{9RT3qyDCS#Gmt5q))giYFgG{tZZRV4@{2D+VkNwm>89)G@^fLu zu**|wlUxdOg(c-N-#T{Kt6l}=)8`tWFvZys#plMn%(Ra?>%)p&{EK1P+v9VdSC4bS z!318qc&#~uQf;F?LUq{ce|12vnU5axK9oyMG*ZHS{Yj2L*M2aSN~;FR`8p~=5Za>M^N*=hU# zXOdgqx_i3)fW68WXcE2H@}1WvyOn^j02>pRFDB!Y8Knb0@QreP_}c#N%IP6!>pB$! z_>DwzBZd^FmW~u-=mOnAi{~KD*q!NhrOcM$C&x#3U#l5q9x$<9?OBvL-3cCD7;qRk zuVqt|S2)k**1;e*6aWScWO=$^4oQILoJAj0h(FP^MG$052ssunaM!U79)=Gh>K_LB z38Ix)I*FL6l!{xV>ee(g9&Ew{hK{+@hBF&FyEU~b97_qHj>u%+9&3IH*6~ce6JpHN zV8l=4#5t-vQ48%N2mX7Rgcu26p92pA-GKz6b^Jzi7pa2Q3BCM{#$LEK(W>cdB!A^qdYS4Z>ge$^~Ob$Ug**+Dzra zBC-7vsd@uZ5w^7gbtKj&25vLlK^djcm`31_VGWc{;ATH{fL!DB!OJmaKwpzsG?9=0 zM_jbXZ*e%m7owNeBcsOKJils*So#SYeL;yKe}6#N13#deeL?A^TwenlbGx=7i%v%g zhTxfFNjiEAFqp3-1)p`9Qc|0~`GQ_+EL?!Og?eH!^|+Oy8&IFQWlTYvC@i-Fi+5TM zEZ!*$^hkhBE5tvGXPcw}evIpGCNR=wL%$*v> zvkV^%Oq~`Qaywy+MTA(~UQK#H`PAFTA3GY*t|kLo`=Q^hz_8Z>U!ka^84e-%ejqSx zv~NUCz^-;K0&&6X76$-<#oT4}@@5>pj#)2DQZy`-PqUH2scOM#YB8@HAqV_%7}j2` z)?~iw{0{F7|VKH=T z4kcFW+4h}S%~LJCcO5-&%kWoW=crp`T_w?|Vdr_vgBj0cQxT*aIEK%*9P>Omv@)Qv z@UC%BO?JH36%V3{oer=p-AK&cgGTK3+^AL}X*oT)xstRC{i09BYO!$EiKM*MHkwK0 z4qkmPI-di-gI&W@b{%^4DN0XFgV@VX)I>@WAB37=Xs8{^p?rh?teN@_f*pYho5yYdsbJA zUc)|E^5(1H{JKT`!}k{))d@}bV;YEE_@m1V%)pD%FSJ{fi{&Cla~(kZW7F2LLe^th zKE_4sg+x!2^@j6-=BC_?3V>2-q6T~dz-pg0Z#O3w%&T+&EMD*yv!cu*V(d?s)768>4Bt69(4qyNr}_ zHX-#SFhcBK#J7J^VJ)fv;DJQ|pO{XY#)3~J$Rne^M#sTuoUZZI8WHS1R{r$-B0ikF zaj3~*XZY3dn!$W+(F*foThiwb(qdMjr; z>U(#=k4-c59nt46FFiX+J=*`>s_7ihUn-r)#t+2 zXU;q5?p%i%)Qj_~&g(iFMK1%2>ockA2 z^Ewd_0|Rj__+rM{p}44KfdLXoz9nQJS*j;LpUUmT=Lp(-T^RD!w`wLOWM8B>DshcB zM;;XoiGXjRw{;YUN#XO$D#~d#AoYtC`O6gw7ved8XjiehC)G6tN`w(2RUW}+Et*v1 zEQ(PG%Alz2p16nCB(pg+Y-@D58vbIL*lZ}3ZN zu$9V?7naq2vAH}cyO2#Pu#s(9Wlg%(tcM=&SwVJRiLKh)imjGzf20Y7^Ce(MP9Vv!})bSG$;7dX`VS^4xn-yI^bD4$TI?y#=Fv$ivNm^DR~o8YB36 z!#j}RUE#vH)fq@s9$SI=LVI^so--*8DI|lcc5&j_TN91W?9%)ETks1CmULp<*D>Tx>a>rK_pHKY*hL z;CxdPXUn!fLJA?OLSVk&)VRHNcR%`W67X=alrO5+J zV$!i`)XQ|?9eRxjb<*lY`|uOwM7Vyvy>-a8Y2+(7&4bzt+aJ;L&(Un|f>) z30U7;fJ^5#u%oPyLI974E8tNWTD8Y~?6X}>|B%kh+_XLeRy?}tABc-kd|KNd284K^ z1&LUz^hQO3^p+ycXdJ@Q&@;a11)9fIF$NCi!`wh>uus&9*2*Ct7F>u+JjVr?teL+ot0MyD^==NhZR{Ly+08Xyz269@rAVw z+=l37nHr%$Q6TP!Bwly?)nmrQN{q7!h0wC0%xng@CMDh!^=CJVeG|ScPFjIyj;WA? z-^r zUB5((0}1yg=6?e?DEn-oxt+7BW7iKNxOzhp(FlI7XyloHV=^KeSXrQnDmDL!N!n*?C)M z!l-Hyr))}*+h#6iIqk=)Z4udG&x@}`lS<0CeopCmw9&6h7m*5%99z-8X&59vr|YdQ z+#JzeWdk6H)vHd8<}fnaHR06;kB*XNk&7AJJ3`6{ zblH0}Vf1?!&{Xy-A#{obM_W=6p_mV0NPF2Sb%}!jTIDvi_s74en1NI{QNO8}BL|JQ z>!!I(fHqmbdN31t+8B>~Q-3m$&Q8YU6T8;>&>_NJ$7-sPa`Kdt=C4OhH}2v(g}`fE zWYGAD#H+UaBZWpW3*B{R58`s7QZuH-p;nskFEqLnYPyD@GnZCsESNAMnP>c_vS8=GBKRxT4~4v%g7^o1vr zG_ZmykWP<5Y?J=IqhLbz-gm)iuTWLM$~Mc0R95m;+MLC#gW`FzJfoohjnPwE8yt#K zqd1XcMoXLdK9i@N4GPGZm<)M680DnEd!iAZ99~<0Bu*)a8EF{uy=HvMF5fUqFt_Zo zc&kZ)zi60CyDGP(3@~kT=iImcyJyr95nf zV!s}1lt9QkO|(kA1xhs-dcfJ_AfQR1RO$OM10v?O&n67*4LB|PR(l0Ni6jcgkF@T* z!L>B5Jr6;R+D4wTR9Hy_yL9`hiwkW^-BuLR4+}wn6WnCeDoZJ^utWuywg-SG8|3AZBxcQ#B_vEoF14=kpj5tY-9kMB3%4fsDG7;t4FOf2)8;{!>Lr z&ozNUg|bGql}lCNp&}2WURp~866TxBGXEus=nE~zhvi^|vGnirO9J~OOywDI;%4V4 zFmXxpcDr4uO>tGZc zHw-xm{04ZOyns*%G1!Jne)7FOgJntu;4`X3p;A3IYc$5T7YQs4ib^RuP3b9?6*A33 z!K0}lR@b=#amZ7SHd!Gv@V9aEe$s1FszZ6J`!UqG0@fpq^3 zWcwRv-fyDQS1Rw#ViATWYNO07lHUe9?hge13gErPfyoA)2Ke5ORE2s4Hcb-lA}cN! z1BPZk0wd`Tt|=7bSV%!fsPGRT7?J^O1PyKl%wBpp(HOYyS{-EI)(f0i&eH#2em^9a9>erkba z{ps@~X4CPYVs;7$$>_Mx6dKr&!T8=~+TDX-Ma8^+dUe9F3~dYW6u)qeKiWvF)JX8D z?^hb(4{>d5PQyrH4{v^N?jBvwK5ZLSoG15N2=AN^2X<|~%ly@gIa_|$=Z1R#s;%|Y zyU5$UU5^HXuJ?oK{j-es$Mg56w-dMa*PQ9`4gIU<+q3qX8sziyoIBvr{>{!c0e%KU ztoH8CO2X!hjf1&20CGmETZUqe2J*O@A=lcl+msPE_e=NE>A|PAHHx8w$lLSCjn}fa zR768-rpVCicNeH2>8pDyAIrVF7|xn;7ssnP^XK|yDnC0Rs_tc953g5F%WIc9LmxeX znmfN@+s9OMUq8S1W_>?5tG%^xpTh1(#z6u<4%dgIl&pB zEvfsSeyyEuYx_=){Ta7smbad#Tq}zSiHe7kv_#z3wT6bF*{ivsYlBNa{HhVJ*5CFn zKQc`Z^VQfnaBt(pH-?Whx!aKduDz+WFMN_u(rpfXHBQ#L0bGEZr9};^s@K*xM@u?w zDDhR^XyvL=e4CZ`?d>&N46eu(3pJy!6jj}oXktPWi|q?Oj^=I4 zrxxuCq+YDN1hUgYMcAxfKD)TU&fnlVy+9H$Se8Umv|4 z+urWBi0bdtcy3r&9^ZWHUhn#Ut@hoYvu@Zwku52Q2WV<+bz(i)-G6h}BCs>PwCt8! zY&LyRt(dOBV4qqRdcUk`ah|{eJj=f^8Z@}YbEOf|ARO9lVzfhEA?|`g!NdLJOP|76=ih)cnlP)T=ir?0<23syMu%YLBWD!vj>D zFc2VP$PppEy*F&^v=xlW2{2&)toGrmY~rM7JYdGd1`JbJ4U<_}h|k9;&QE5U@HeXy9N8kFF1$hGPqD@PeN-gVx(R?J6i6rHWH9fjalEHn^%?+ zO+!V$Jvek4R=bV!2_`Z^dQF}df(0qo7QtzeE$c#7qT1AhEn>Lo`pSy0Rr`wszH0X1 z_Da$lMcaQo*!EH5V-2M#CrInZIE|V36zBTUZYUJ3R&rYoR*P&MjJp!m4s`NC8*DMG z+22!kKo=xbq>sVBA9n|<=To#j{Px9ISu+Tdsv2;DW)(O=dI9@Y~E1O}}wAz_<~<|Hk=yz~4OA zN;X2y>ymB)!_a_XzpWuzJ61?PA>CbH#XN`XlkDqKzSKx3c7XVL&-*b5F|>@|f)AfC zU}#KF)BZog-T}I@ZR-|}Rk3Z`uApM=*tU&|Dz?1rFG(J0x{*?054!~#es*IhjoZc%g6SRkqvfeTH zIC;GeJvz#s82E`6g(oHGKIyaV#_jfU&D-w%abmr2ZvDhjJ$k_Psr2h464v`K_h*qmNk&&(z}(~o#9m2a_; zCROk4jNN;Wcd_5j#!r@CCZ7-2A6_l%r*)hN!tR5W+poE^X1r0-Ums1|z2A7+d%p%7 z3s$d8>OSp04vxo8%4gaxeA_m&NS_+vJeuYL2&HQB`GYV}U) zw~dZp^24pwXX6X@+RniB>qZ9QjPFK9jPZ4>$Mr4I!rSgEeT`s5DKrGpcfL!EA3v}{ z<@PGR82;(XG3Aq`PoeP2Q_l(s(G_rA zB91p|g7X4${VKQYq3Cjt^(CEyuFLlTxBV+Yfs?$<*S7=SY!7|;{+@$G{`dMZ1XrhZ z@8{RoSTTXjBcFS%x5a~rhSw%RJx+Yt3dYyA^&ebJ_zZSP_D@Uf=`pIeJ@TXOyX`(+ z&uyDIM)AdtgCce*3HAJxcKL+j>D7lP(>y0?>(x24_cK_{kgt@V&JCO7c@(-QiCTFS z*e>e&_U~?5WE@<>P_QJJvF=RVW{^(8E_4mK=r3EQiYuJF2%PMzIkK&1>`Yu?l#$s0 zpUv={rno&P9Nct`!rPhCIu;@$0_$87i-Dsk<+@j7W!-k zpkKLZ{Ywv$2NrLesvUXOR02}$ij8Fhf&0K3*Ic0lFOL|OV`^~3(;a9`NRIT+>_~P! zP3V@-iK$95^j~f#^Xi0`?^x4&;5cJ_2~ii=I%z(8O{vfBh^+It*mVnF58Qt@?O`%+ zG~|YTc5TQX^o-3m`!?~}+*N*oK_NB&;Ck&2QNd>8`s~R#wn4qTftWKu@?>zDJu3L?Z z{lUE|{_NMynn7<$W0I3ofvD7Je}*aL_3cqd>F|rQ*4X3CS8!R1tK@|0V-?Y&Jw|5& z!5qZ44x7uS6;lf9ll)21lltpM*PJPq9uZb&d@m*Bunk##DBIAAefM@ZEiMp|$I@8NE==icw3;BQweXqX zQ{Kr=LCek{eAK?4ub}ZgpC2jh(u$4IzL@t|c(8g?LxtpVIXgma>}Z;BHCcEJabIlj ztT=vq#yv3WQ7Gjsnla;RwmR46U2Ym@S}KR0*b%CIH@>agN{ZZOIy*y!-M>>N2vC&M zzs4f^+V0BE?Rt-3i9C}p$U_;ctOCdH%%qKB#Ju8=_3_4x4W;jz7mow|0l_P0O0S0a8L!S(Zg+;c{BO6Z~#X=&zd!;dm3EYAiv9aEKhq;4FIDks(? z^?1W)iD8l9*ofL4u*=rWhT2>C6BBjV5VqWCrLu5p3WC}-yi_=lsrR-lic6GaCW`h4 z#9_#N6<{48jZYnYj&jb_K3}cWS^MQ-Y4O(?4WDTo8%^w+?3PGyjEGypf&N5g`d-2~ zg5-I<^r*j6Vh~<7`b9R2NaF9dOApQNILykfx$4qEOp}*!11HbUhM4p62?((!^`Ccg zns@`YGDluYmHywVGnIocFH~K=T`xR7Gp^g@qMhq+=im2R>?XTdyeFQw4){pI-DGU{ zFqnz1ZGCU2eO6HMVXQUJTIc{^cu2CE=E6vf*xH*+bZBrSPYRx#cq&i%Okoz$UP+3x zGAa6YWz%Q0o-vlL`y6?4oh97fd@ntVZ?e#pN-Zfx61$r4V$Y6SjJJbq)`@ygG2wcE>u81JsX9cCol8jd_O`Gy?QNK zn4$S*VtCo}!_;SLqujTw)r)pi^C`!?WU1~2Z1>YI*9=U**O8I8fXU}wIk23m7`2u@ zeEeHq+a4(3N;7m>KXrxxGc|26IDGy4Cs%sS#01#k+wVxDq(w`fy=IPx2)#B;)!tgR zUw=aYzf6cYCYvz8&J$_)e7WxJT*7P}abF??YcI9exzEnWuZ@_66ny-I#AUDyx0+e~ zwcE3YrxsxjvMXs@$dHPm_pmiV2CTD6P7Si}1o8&@wK=qR5G;*mOf}9 zUdr*uMR?cKOU~a`>AW@yd#@2rw3!z=nSW?=I@s@SD~PD!HKTWePnJ<^;u+N0!Vh$x zan!~DpK+$IshOgF5-K$bkBfmGqYaMb(6=7%fah%TQ-mwTW<12 zY^!_EhUgk$6VGYPsxZaqs{u}PkQX?7OSEts*W2;34|*^eWv!dD#NM_BFOXX_)$XFd-SEze=_~qmbn&3j?sgQ!W~L42BA|oo+F@S~{K?M2RpIx^wtK&gz|a4Gb^!Ls z``oXaP8@Aqm`LFMUI(ArxYpqmvt8^-S96i13%FM03Vg5S_;X(L#u+u~N$DCtIkzDF zgt|uHF=s!OY@1dhZua3qwjr{ycRdL~MFvebVX zH(0JjN&T{GP3_N(ZRc<7>Tl1n2R{2n>gO^?M>665pzpBadz<^OJC9BenU-uX&d}Y> zfVR|ouSG1ng`=W!&EsWgsg^xRMrbrbh`|>-DrB6XnN`1DHa4g zd3ZCda^0r`e2oiygZRuYh)q|;px6xHBFoy9vVGZ)E7T44sb1Fi2Eg?$I?Bz;sk3pU zyr2lH{UqQs`BO;iN>Qs?pSA!FO;)+iCIr;^!E9^YEvd_e&_aI4{YR2 z9hXZY-(B6U+w3QY~l zJgt-0w;Q){#VWqKTdz;z$`3K#k~ZL2Zkv`8HjE8wTR(I*^Kaj!+XE@?Rgar%ti}s= z@4;U!MKX4A&~~NK5E)WlRAIyYQ8j$K1s&P^$9VlPR;g| zj6kxlma?z*YxO482U2vmzJon*Eef>f-s68P_+&pVZI9sGH^(#A(h6nJ1P@PRfAwQy z**H1Xjl1?b%M>lKk4J>}J!SEh2$xCaWNz`*9ycRY#xh5yJ(}y{jnUTYXPwqt2IBVb z->JjCoEt=Du*eG|sj#|PS89=$m^VeYu zG$S!2X!4&DRkZUt9&GmuCLoWi#gm6)&O|G2*KWtwUaqu-PajFpW6ubQuY(38?}cA} z7}018(R)p;6=e14cB+&J=NN(35rE+JQSJ;BCwu3d1I}ENma~bk%$Y=7sYELH>bvZ9 zp&(Kbmr5rXyyKp2e?DH(Fe}kMW-1$sR@$rqK=EPT832ap3WM+=4@hT3E`1}-Mam=~ zAR=tcL+Fch2nW<1YZI&0(}Y(5W)PUAFV46}%xZpJ(|sU9c7kKBp)j;E5oRI~=oDfo zq+@y^2?ZfZ=%&wS9q=%Wgwzok+P{!V>vYlTN-K0N!}_us+_WG^+$tDJMd$X>#h3M_ z41!>gNkIte92w43!a(}w;Ne*w*&{@_Ot4(WiLL-){~Zz;^xq*b*35w+T`&I%$@>(t zRB!&TkXca3q(WhRh;n^7N)yE-V9r)F))?3uG>_59!jZ~pOri#}=p*oUhEQap2DfB^ zh-;lGF0`T`1{P2ud7kGIirhf86{U997GJ+W2<2gBEK-NogB{w2z<@aY7OvqF-MtNg zX?Xek1!5!!=2v9*bZS=_ zs<@=cZ28XX3$)C4wYD%QE+%mI!7!KU18MyXe>|Y~F_{DPT1@~1!+^j~_aQ6G4{~RT zCPr3Qd7dA|xKW9MKv?DTL_1;A32mE&fe^P69d?L7kZmLP!;pZXi9qNvXU@u4sl~$i z1c=hI_^%YBhQl^7C5p@Dd9-Um3_yuCCf(u)g@KTO@v(zm;}m)gSLilQSfjwC&$ZiF zVqib7at6WhvIg^5qiC=Nvjl3V^~0cOypH98Kh;oV!=Zp+XZVwp`?pI!rRR>YULkIA7#BLGUNJ58joc#HnJ`F^ zxrp1`9dQ3AA88Q?BT5%WZ7oRg_htl=fEZcB9%TQ|%Ghje!8lRK{=>2GyaqqC7Rr%9 z{qk|Jjm|Cc#r3$`{tTGU|9QXw1f;)4?;IbW?tpdQw9QvwR=}<2{I%osn$({T0=gj? z9vMIH*~cL6oo?T%_mxc9=dCRT(y`w#E(~e{FA)x5A~P`@Z9+To_mj{B;Q+{SFeokm zk3s)IzubNlqIWvP-=o8Wsk0l?+5@5YDH~pm@=m<$T}|vgZS37$k`tl9GB9QLyEpp& zyhK0r)5-8KP?=SeMx!oYqn2pKT1mqf@sd>-+Ed$~iQh(bjvGd!F#2WJXtmBnzC;&i zk5?ZLWybjsnwb&7*(n_P#tYeY6bZsee|Gw z==n&q_lz~wO|kdRVT){cxwFF8#Ks}S_b=LyERJqoPHzT{?sSY2br|A{QGC*SqW1Q= z_e9b2{XQ6zwwn7UiKN%dqW8g12z`)XqyjjCqG&#&OHW+CONN)W`6c~S)a9cYdGoUO z$hH4CDIY$9m5!N`evE}{e7fPyjO%VwyQ64sb@Rg0GkDZ@)+kBd&fzEwiKJS^`y@J9zQ8u+^QO)gQnsm{#+q zL1OPQa}~&Rk??7#>%B?_v33W$))!aaOgNnWO4Uw5DYGYmC!IlmJZ~tZ)9->A6ULIA`?+FXt zrh0;6p!)7_>ys96zW{;#Z6<+tbX?Tsa{A+0D&G(>0$GoERW8RdKvSCjFM7@qk3Q-3 z|5J~>FOCdZ3&O<(xz_39z3FYCf~rR|`VfGq z5Eyw1&LnL6mj33;D*B*ZxwuSU`lM6RYbn>l{NBDYxzwKrifz%Px99xU%&nFz+w?65 z1f4ohNR9xl!r@Fotu06=r5oM}=a6;G^i5}P7~3FL8uklwBUTCW6mi;m`>QL6Qg)of zLkznpoAVGwnAsx;czTEh6goCVhGUPGxF#`Xf#wrym>KdkamJ%_FqX03=ZYcN`6<1$ zFYJL9W+!*6ppvd%2Ilz|kf*0mQi(H`!QoAC3vd(+k}O8l_1E*OYT@VUy>LX?{$RYc z4@9!`5n?n1TbMD)l4J<8H#$FGfE4kP?41%=hM66Q$skXkgF>+)%)?VNOS2!)$zLm^ zP=#6mMHKvn@h=hQLL%&cL;zX+zePk3i8jh~>-{Z&B@cEUp010~Y@?9%9C`XOnC1^H zH%4CqKNTu+{BAOY`6+xyV2<&*PpE_>0~As`+^i?f!j0xDkk6m^Q0ycbhQX^v;!&kN zqfZpCU{fR+;rr+XI5>Zcar(cCu~29KZP{E&lb)_8tVGH7TT6@YT!XNI=LV}nE4MF~ z&N>^sds<5y=R41fpD`;KJ=Ff3pxkt2+ zzK6|8uDikxpRh8-9X`2o%YSoF4pa8*-?t$m$0Bb<$@4#^WyQbtX|W*}b_ER*Keamz zaYSbU*K0x5i;gVrbt}aqQFsI3)t*iisZyviiHPV4LiY9$S$i}v~XKqR#c&xM5648We zZ`jTu66<4e7l0q3mU_I0WAnZn7cGaPNS_;)IL*B?}=n-mqO8 zO>vW#n$pgT0}=B>Zabe?F z6RgQ6Lp1)N){E0K)M7L>Tp0a9t@79S7wRx>a?$x;sP!T7{Rel!s1w@4be)VVVF)-wxM3Vx ze#^0nT-sHNG|&O%dc3E|*4VWE92hDc3@hw{|KX}=KAKq z6b&W@6oaBgyAqcCr9ME-O}7dKkM)nDCXh;^Lc11?LZvY{4$IuK`9X&Mn_cDdC9t1)y7haH?q@Z1f9YCcns;_P-ORJBf<1%vXV)nv; zWx)TF>@}&N^RTF}Qi&h{Gq5-j3NNLHxV{2n;iP7mh_c=sG)W^UK@)OC!x(=`Tq!j3 z17gHysx$;q#RIZ(<>B)P6ORf>#dvrX7B3t*f?9X{C>bXr-sQ+V6?YDo-Jh5*|0SyP0H zw0jv0%D0BJr8{ zVJ&jE%o8QaQ(bX5YpFAW7Rq#6Ri&QlXH7we*!))viof_CK>k7A>WsK^hF6)Ftl-8A zE)07Mfwm4<7sB8WNZ?hinh{McjX+O76~bstojo3wQm}tg=1!Y6v(X#QFyK@Wi;g9i$KVk#&;J!+y1>gO8e?S4!ze+Nm4Qjs^lCd< zr~bY|QAX=~pwy+(;HnYb|)cXhTt3 z$PUwvTv4qry&%#Ma}HN>b5pudTM{=}3EvK8@C64g>P)nFdGS5k!v*+Pekld1oc zX#>qCcBWJT%{4!Z9uom@WLw_&w;9QG%BbwLw|b}`JQ%JQep(o=FG3gfKM?kycH?W& z2}BDMxTb8A?Jma!rD?Yv5*$UPcEE-bWyqj%Y}7$2m;gry+`i*P19g z!bJ&_E>{a(D5cv%eovJ$p_}W{+14@yFR-+Fh8G$*6IIhfqsVec4OSf6(vNc>-qQ)$ zb{NG+MT`T3E&Z|UI6w^l>)8(yHRiKNzZ3<&9V;W#-p&0tFx&d)zhcIZZ{<%NBEmwW z0z4MRfC~)@nukp=;~GyQRjQN+H@7)W2zKWNeUMzoMQW-W&`5lMr1Z%tVuQe|L| z^56~?QE*2c+U!%|8XjzD;a$3j<}*AhB6-%G3C*8E?t0`zSsymJ(;iF{WAZ17yl?3` z++fp_M*}FF#2KGLXF}{ zKMPGC=WtnWFO~TzG&O2chWph!mlz9h|94o@auLmV^uNOLrXQ65NT#Rt@n?}tQo^v% zt#GOk`pp`w1euXq8A)p+)C5nP3o6N-UFK<35QHXCuZ~)5^8fXj&waoGw?PD5R=~hN z$XI^MQVBLR^Ivg6(xzjLPAKqW@VU{;?Mu=Zuc$e<7J2SYd8YX(y-k`Cg+D2IhUOvQ zOpD9~Z7R{3in`Pvae=)R(s8t@o9cKBOBF&Y7H%C;rI*UlTQ)~#9K@&3ch^XHV)3eJ zxRPo(z&En3K$KTIv!x)P*vf12(xughOliQ)FRajP47pT*@a_#51l$#S>7UU^LYk=B z-kgVVR-)x6klMsP`<{$LeD|@qw9P|AQo)O{>NbNfUH@*D`o(YWA?7rWY|g<) z;^C!%loTpu-5G&X7|l@b4NFUuI*U@=+pw|6d}U+>oL|(0C5O(bz{SF$T&}fO|tm zJZ?;och|7v+DGc+*hey(VgdrTt@%7#Hg7ZrBA%^x4q6^@54y+kYyq-J zwwBJh&pEcFn; zM&NH*yfg_#1F&V8aZi6+3;#BHi{EM@=C`=XRO)fw-g9vq2nulintcp}Dg6Ue`ZtU& zp!8X3lHkw(X=fc$=kCjn_;GTYS%GlZ) z%7l6~0E*NtZAYL7qAdswShkoGV`LvEoM&+X*n~|1+|v#jnXVZg(y4twV(_KyOnkR4 zm(kFsbYNM>K0MR$7qifp8c=BP4jG*n?5+Ng+|#0%S)Q8hXvYX!brq#|aEY1tc zt$O{i%Xqa_MG{Iek8bUxTuxfXaCrf=gIa5E4@8SUW(fIK;P3$?OLI)(Pj!9+===f2 z-cSpY90jTkM?ogG?vsVXRGPxg6SnZ2T-g<|^fK-=h}DK7=1@E8JA1RxIECqKma(Zd;EEMLDr?Fj<(j(&?Gku!S1cvEM*A9xeP75j9{(lGseJ#uoqV`ToQ z_O^XhLl=ubpD+@03~K1ZR!JBL{;Vto_t@i9t$a#OdL=_mK{_o$cb2Y(Is%viP(d{Z z*{g{#_-h&EYVA*TKc{8SV|j*KBGT_5YGN-82>1$Y78or+9p|Nw3D;!H&uD>!*)5Z& zO`V|3vaJ_pP5~!r@y%F>qapaCqM|OHbf+(hric?#djmN%RHW6D)Kq^$QUOEqoTWOU z$`>%xR+_ta!hYfLcLF;Sg||1Or8=l*`?~f6fz6skn5R99QgM9mgQhM;HXk*WxQOa5@G?hIZrO+t%*q5vL_^Rpggd2ogk!w3Y%R)_taNUO3O zn53T+w5h3d6#?S&?uVE=tu@qPkVl73-&Kx^n2UnHy?eKb9Tg!=3G>7U>hM8A|FPnT z{DF*Xx18T1)`=AfILCiTl1{)ziz_H8)ytCQl~ut+=Q-p%;`)c-(bu4aQ6sbB`U7vm z01x+bFrFnS+=}>(!FR8nNpmnk9AMXClT0lxm8o_^45*5Wq zRtJc>;NTpI7JY*S9z3Y2-jo3Q)K8?G>f^oPz_UbyXHPHbGQULu&{2>D@jgaW2m84Z zmH3}5Fq0F3&K!yU#~CM7=zOd?=lllj6od&W{3&y`7N-GEa%w7D8Y;nRx8Jz!hYsN# zq6uX9l?_XfG@ zF*{SZUx{xKX5MwA^$?>}Y7N*fBUcTcReT2g0^TBN&u&wppmX)%@c9+{(_iNuTFEd! zD;R!JhNcobAO({Vg5k@mI zNd*e%W0reg;uZxkuR(br|9UN(q93Y&^F;3lhi?U z^Awj2gF0!oAs;ryHlqju#Kc)Ou?oV4W~kA|E%$Jo4j(9;@y2Mz$`cghlnD-(VhbFG zy7SkB0EL?T@atfR_kR)a*lj#aB8BDu7Xiv6C>{))aYy!SFEBBAS@P0g^Rf8F%moqR zQsPo+abbXK(BpxFQi4=ybH0W!K*CTbLDcVAayntLL#0#GNjlyf>#)gzWXzK2J|`e6 zq8-QhE3w1DHp(=A1Z=mh6fVFGkX;%=PzPFgy-}4&XBA0tsLWD(*(b(~-nh8P2Fi@<%^50q(krL8uGFddc@Vage7;vA zCIaAGYZDn$_u+lQ3gCJQ=8~qGtIOtrN_^%wGM|U~%HD=nZ5sRMo5K8T z2(R_YJqy#se^p2tnb!MAI0R5ZBdaERl1$^#*HimQff!;>!D7(Lfy1L3hra`d&iQX$(A#q7eyFgLqfVga-NqQaMx& zlf5r>V?A|}XG!QSjbn4Mn|^ObbQk^oqzGrC)|!WFxx9?>`u<`q3+f%3hy3t^I3GIo z{$ju~2pFbj>MZpnDa{>@zZmdrj=V&OOqwPzunr+DR4NUY(yyJma z^sG07b>x}&{~=Vwm*uYf)JZm_1M+cSf0ag;rvIU}#zmZP)*J|qC7;TwqU z16KlkzWff^M#OlES=!Yl#@+KwZ;$iPs60~^f?FO!vXKBBQ@}ikC=DGg=l%R@sm-e) zJ9A1{1T&3+0Iwg;w~qI#0|5>L2CH;XPh`rYBk#6mwc^BZn%2JX_Bc3*0PAv|`d{T- zXn+Uj>XG8Z2n{U-@hd}ANMY8?&9UdY71Ar6C?1Apb|>3xDcV(QtuH?h7#?^WwG)f! ztq}(}QK)dSkBNiVl}x+1-u1gl+8zOJKQQVKrY^1qccYwsDyi3Eo)n$HC#6te2VxDS z%g03sIJ^cHuC8HWchc261|J*FWxY%x@KMEMdgcXFzBpt-GA(vS$7P_yAB#+xxkpF6 zP*MM_qKKA*v{qvKEgG>Y zeY7=GkQY43FkjS^=PV}u&=NObHQuF1@sZ-@Prtl2v@#G!z;CstxF)!;u!5^4fsnja z&KdW1D}>n4A|bgQ1IvpUWL$4w)|-IQ24*EU+Z&rNkGk;$AP!fqwuF?g8E^m0JXSZ7 z^sols$7FJ&2S%)OI4c=h8W;c{c9H&^8^D2;!cw88VqN}2G&u3OvY&Ev zHIlA@_5DUn`a(5umosO&grFY(J6S(FVBnBE0b<<65e}9qP}AEBF1#k;Z21nIH9Fz) z+ysh?YwvDQDl^x-yA2_MTp-va^3W>7wfl^BK)LldVY47l27S{`QI%9) z=%d`UTFa$2-0JK=b%6VtzPt`8$*a9Qa#I_2(?LRkp<jAjySD;z4*9@LWa&Su= zYv`Btbr|%}8lK3w_b()z9YHr2bKb92!5E4arr!0iCnDlp+IYNdk@^@tmD3XS;k@)# zb!EdDNJik*B94P%or4<&k>SElu;!`+t)lZ;-P`=;TEwvMkHHJ9dDBEBwn%_g$f z`7f2DzR0eVn{q$pY>V~Bx1cz$%(hV>C*5|)h)n5D2|?J_if@eSr!fSmzzZ#g$3N*= zAx~%B12Q?hen-~~W;J+Tm zfT<f<1_8F9 zY61TIX%YNa3#zZCM#}$n!AH;aTMaV9gUosL3>+pXADBe3d`V!%Cg@BOZb5Rur(kIY zZibqE`N^iqiQV}?NpeO~zU_-U&A2O-|7X8FE0o%P-sO@B(T~tA;}L2YKA33Cj7zwr ztBoSP3dk44FJaL`q(I767bn=eQ2(Z z2nf){B$(FkCmXhRkpFb-H&33kF|eoXZ#WPT)PFl>25h0MVrXRZS7X_&lzzMK%=jZe zzC}={W=Y#5Hlw4^j)XK#BI0?0pyAhHZp2>+wJ-dh;j@WlzN(Yze6Wr4yrP>T2MvJ1 zaS@ROC*k>+eKz`dcq7ni{Yu|JDN0M*_M;Eifqnp-rO5k`kLaa)GQ^lB`Waaw0Bt87 z!yn?MilH|1*OqIG&bCL9cQZ3AuGKg<*g~PMid9Z zT-bSfBuHC>GoD9SB#a1doI0r__8xEdPBJ-bOh6?|^zwwQXV`|ym?6EGP!g-Qnd0#% z^N}^)=@m8$u4KMwnY9_)bA%F|GatlRm{`kjz;PxD7Ag|y{>I3doxXHs;H`9~fmCWG z{b@u@R7M%-T2=oH?Of}g8|2kgxxIS8Qfa-ee=yHkptjve3A}PHYe7}3iB&fm{QX;3 z+_RoPuRAFJy@=VN>J3=w?&J4M7+243gxZ>N9WMU1!Hbdzbx&BfTw@Pc7Q8euHAk(x zac%~W{CfwmvaxY(wJz7AJ{{96yPV;(v%QVQL8Ob@`_fS+{SQSf&Zor$OLs0>tPUo$ zh1_8iq`|oDctcm?0R*8rkX6%Y*bfNg&#f$-+y#`Ds=^n=(P0Z?*;E#F^cLB6QgetF zW4&*&oQ|<*) zlt-)T_U$3Tn5OH09DNI)aeYngp}Z*dl&cZ1_;&k0TIwbVleUcjJEwNif`DNB`;>IC zFts&h`s>K@SBEn#Ir|Mx?4Fx7v3`L2wD(N^|5KzBd8Ufj)&#GQ$UZBKJ$C`>MPwWUxX5Z z{tk1LeS6Y6Qu06`-YG$R8og@v3Va`4!QBOWK_p+2xN4@^w_dH)ZG)?Y!SaBSY@4m^ zYdL~L(VY)3IAM8AuVmO%`JPFNu;wrby`_dx!Qd6OUdePwGNW&;Ku zz1Z~%48-}JFrKJq*NPs$8Fr(2FgsC_E(1xO+bj85`PWowmkjn=Xp!ys8-XXYQ0M>{ zgcAwXcQu~ZMrjraDYAHUQThVexyM1lY(`;ZX^rKxHFxZL)tAS|$xKVjiVSwh8@<}q zE7gTgs=c|EVlldB^hck{1u3aGuwiz{1eeKZr!C3EX3HJ@M!S-r`H+u-_#5|*;2 z?@y96{5IgB3v9pP3uzj~tn_?)KG;Z|?XQ$z();{!w0tmHOZcV((F^ zh341A^H=*E?`Dv(#J(Nhm&;cDUL8MVsiBM7+_&5P^$UA}kNZ$6u{H##P^nE2udqPA zQ;A5%KmFv5`Qs2#03I}+;JoAur?NtGMeU# zhH%Nzl#sR~Ph6u&rG@;eHIUXMY^e>o*ITgmHFDTBe}`U$Dm&UB&qSePT*l3!3sSjc zThcr`9=KyY3A8)))M@5gVoVO^1fz&_r&jPsgW*e9NYNkghdfAr zF=krPZY4B33Y*x*mzRp9^?3!yZNx2*nYhRldm8S@1qkeWu__a6aR>1^jRe52Jbd+0cQLr+OT#Nv4PDZxvGuDuk# zvOIAdoL_MNO?f{hsjHoKX=#P3Sp4eFvRpA7TV66&`XJ5o@Yj|88A^1~fNb{5VY+;Z zB#m4nt|e6?D(YbwvmE3zf7Yy1l)6(EAxg)b@Tg{Lolmh_OJNyvdFtHHrh@7&>hA*q z_GMcUD_oc^`+m;`@-XfG#aGp<4R5q(xE^94mCI3{7JRL{gvta+y z!YuA#MBD7jZcN+hLW;cMnhnlOj@ANR?0T-q%bPX{uIc*TXX0Nz%c{zBa}1W^^TWQ( zdGCuP7}g9NfUb92)MY&?>`30LKkshdVM4sJLHCN_J7Z}>*2eXNEmtMMm;?uvF^skz z02`u$yNO{UNXE4Dla9^L^sdD;l_WKghBO**kS}jHf+D}mM|e`H_GfKm4pn6@cUcTH zI1Tq$gIb2Cwm2{PVXiNoC^_9~3=6_t2yyN8Gb%8ZRgUku)sVJPbf`|HOzt zP9!{MD9~0-njfj0ZCL^))>G3d${f*hXh)dLFIz-}w5Y)FX|eqB$mB$_VQr4Z+LmVp zCv;B;hfO`zI7ZVY{ivMQ3~`5?$$$zfoh-(LnjD@mTg-?lq(#47KDB8cEH_2{c#*>R zCdiu>G4;msa`@&ocU-UdAm5;l?_)2W9@Z(A`>j^@7xX`Ku^d0%)l%RG9uzQpMFaje zc6D~Kx7DzbuPbo?(a-y1p?l=ui(p~stQuqsWpfEl*EV-Z z5_xbe+VOGp105F3B?z@3Fms1;gwyIU*tanU?4|&;is67r8}$?~%4T+438rI9ir#f! zH3Dn}lo!StC~m{6YKELGis0HdxJ(nLpyl=dp-W)mXt^7xhYF~R@E^MV?hgAOb$_*n zjh?Ls=I6*zyWR36O%@fV=G6HbPpDw)UmQp(<7QjJiqSe`B)5ACl)-UWw+TLeI@|gp zRkjIJ#?F_OR3!VIIy^XXo|~`v+9eaWI5yFVGoOPNy<8W5?zd_;vA7Kv6(+@LXD+p` z9%n$NS4|^MnGE95U^LEgZMZfvpUdocUwG~%>7-J|7bm+nv?;p+%9fAj-%C! zP>hJ=cZ5gj)3>LaUFK6QWRiAVo=``FdU)g6g42C2JCT^QTa2hl#*WyORk~d=K4Y+C zKQMv2N}XO+xg0Z06~A0KFU+y7U!TgPsj=Jc>uTo8D>gIqI-(Fa0bZ`WgSTrA!>hN4 z!#)tZA}+`u41V!%vv{#LlukhZx=$hf^*>f=adV;J*1(!fI54~W&zi%|)z-+=30Rf+ zlif{gY}xH|V|VYA3dM`-G>0d$L$Eg$2&w5ti<33qgHU4Eo#&3RFmGPVTp3T(Rb>m7 zMX<@Dx=lu-`R?$%djnn}f4$xWCTt^yqdRk62Wpq@h|nL)OsyQe|4coly!@#IyN-%F zGuP%TWcji89y|LRWn%#nmA1B&T7&mH)$Q7M$@C~2zG$wnfrpfRjhm#}L))qHX>~e$ zGOyX;1vi3S6ZP<27HQ>SwqP4*<;uLmS5{8AgS!RSEQKv&HOH>nFsiWf-H11Hv*$^v*~xVU-FSCZr)xhSNrLgYC+<^6VM9@721IPhVaXnfNHsmJMR%^_wW zV=N-z9Hn6GSLx|^zWsWdF5F{^-%U{T} zuWHFf%Hl zm=hJ#*s>+ozIeCy5Khmz-B`a{cP}_$8it~*H;*39`3>N9(fJUGy!zd2bm8#RsFSk( zBzic8&>s)JTS~%+YW7a3BDr^0CAFqU%6;`=0M@#DZtuGLMpjQWy8GtK4s^e+y6(tf zu$LGUlwCFk@Aq!Bp8jxTb~iBiK9h4ft){%;6lC&Q+PC{3zV9E1O+?{FVcd!3Y8=t^ zFPOL9d7l8Rr=pfGW?*dPx%C(-5x{IW*zqgn!RGPRRHl5vy7%{J#~<=@#+aXXrg`t0 zb-8}S^gvPScOO?fLLDozUz`eMcz@o(>AY=LHGhSvL6oftiPp{LN$mSJ^?MCN-(B5% zhu|CUNkxp?N6#lYad9Y?n1qPuHVQD95XP*Hd-E2=vT@UASv~@Xpo-`8ZHk1|n=zJi+T!ANkuKpZ+;x z6^yNzcSC}J1QCOPU;$?=VB_w;rYYdc3wV9n8Cu#fS~-}SU#VF;psAt@bb4{o*iIu; zGoV8cbh7ppF?^u|Pamh%l!=_zo=M(+^YU|9S zlFGsWj=81@8ZNn{7Ga|;?rAomQ%%!kre%&>?h=MerdR?lh~{pBduEue;|7(ZOs3^V zV_I&RrY4nPE@&jeTsIMdr!Y4a{E_3suo=Wco11=8B$G$ZU-s2g_iEz8q<$Y| zH%261H;_wYm`Y6IiV6uLUeL0Et=YT1s~aZn*&_-P!lN83ZTUVNi(gf-$rKxLk9a&Q z-Pyj4-9J|1ME)6m{~x`6KQCUlhbubEJZHjRYDdsxWBx$8B2nTUwP0o~PufHi`t!cK zsXUpv4emF#D-~?Z$tw<+HY-E<-BgW-J5)7qY$~TR;QL#3O)zvjsZ8@1v#;29#uJ8W zKTC>cDPoU!$!)oLkhPPKZSK17lbxb>?21)3@hg&-`*4T4EpPMtgOy40n1CZ8?a02v zFU&Y(xzbb?=QqMh)?Z8`N?QyoMMg~OmyM_ax!4wuHCr>u;s)zB6RO|DL!8AvN&8M4 zowpS2ljzy4033yyL_nXjxRP43j(*I+OznB>Ati&1@akcTv|)|{WuHEEj)O8xQ@CD1 zd8(4jJ>*=`5DY?Aan=K4c)A z8N(;_KbaUrNy3?zx$jXN9&q=bMAnq3O{PVkXLPACvI!F03W!JyOTSOQ&enf}U#`!e zhZ>E1RDxyEaXKR^d#BjxJyvuUtYu1Na_o&?Q5A6TRiRUn<#BWM*cUzH3orc*<2dX2 zCJ!n}ABO(khk35ZO{%?dxp-UG&{(rh+VJhmc%Ed+pHOf9^hM6R?OBwWRyGYG>?&1p2jWG1X!c zKS+2>C+h^K$U7n$R4$EZY)HO8Q>-=biFUj=WggK?=`vOr-yprc;q3OeVKk4^Pen&0 zy*TlyEjv18-8r3U?pajksfPENYqKW?5c%<~)=wGm{`ecGPNk}6?L9q{ng8HcYc;WZ zoLo;VWmTqk8WQoL))RxsS;Bxuoy+7$MkeQwT}aDVcf3XozU&eeWe66p$4_GnJ8b^mtt|qSOmdYxnY-GGpf6*m4hG%VVV`ZoNprXES!455Y0Xb$49aRrBLttX(f`$%5 zad%+1$P%i)SEE;bTQExC)mzwFiL6l&T}+QlK?W|FI+h*3NzDRwsLepmZ87XvevyDS z2*hPSkPJo#;@nT*gU}(ai@P(h0IzLjISX9M2J*-<%QWyw5_t?LzVGqBZSBEeLY$1< zY2cC$0F)O3hk=$K_a5&v!QV2`VEj{mzcLrV{ly>X!(JA1_iD5tM$qoaSgzb zbBw^9=K`(YDhGffGyoX;YIq expirationTime = segmentConfig.getSegmentZKLockExpirationTime(); - - return tryLockFactory.createTryLock( - DatabaseConfig.getLocalHostname(), - zkRootPath, - nodeName, - expirationTime); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..782c407ec705fc80e9a5112c59f02eeac06d1c79 GIT binary patch literal 37055 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 Ghz9^g7fcxd literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.java deleted file mode 100644 index e53f060c4..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import com.twitter.common.quantity.Amount; -import com.twitter.common.quantity.Time; -import com.twitter.search.common.util.zktrylock.ZooKeeperTryLockFactory; -import com.twitter.search.earlybird.archive.ArchiveOnDiskEarlybirdIndexConfig; - -public class SegmentConfig { - private final ArchiveOnDiskEarlybirdIndexConfig earlybirdIndexConfig; - private final Amount segmentZKLockExpirationTime; - private final int maxRetriesOnFailure; - private final ZooKeeperTryLockFactory tryLockFactory; - - public SegmentConfig( - ArchiveOnDiskEarlybirdIndexConfig earlybirdIndexConfig, - Amount segmentZKLockExpirationTime, - int maxRetriesOnFailure, - ZooKeeperTryLockFactory tryLockFactory) { - - this.earlybirdIndexConfig = earlybirdIndexConfig; - this.segmentZKLockExpirationTime = segmentZKLockExpirationTime; - this.maxRetriesOnFailure = maxRetriesOnFailure; - this.tryLockFactory = tryLockFactory; - } - - public ArchiveOnDiskEarlybirdIndexConfig getEarlybirdIndexConfig() { - return earlybirdIndexConfig; - } - - public Amount getSegmentZKLockExpirationTime() { - return segmentZKLockExpirationTime; - } - - public int getMaxRetriesOnFailure() { - return maxRetriesOnFailure; - } - - public ZooKeeperTryLockFactory getTryLockFactory() { - return tryLockFactory; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.docx new file mode 100644 index 0000000000000000000000000000000000000000..f223cd6690b7a7bdb36bc1f334c09d72924359aa GIT binary patch literal 36843 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

=T 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.java deleted file mode 100644 index d7b69b96c..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentInfoConstructionException.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.io.IOException; - -/** - * Used if exceptions are thrown during creating new SegmentInfo during the indexing loop - */ -class SegmentInfoConstructionException extends Exception { - SegmentInfoConstructionException(String msg, IOException e) { - super(msg, e); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.docx new file mode 100644 index 0000000000000000000000000000000000000000..c31a995fa8036739e6d9b734e97805a191f8bef8 GIT binary patch literal 36832 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 W26(dqa}X$32{I%Cvqxq(hz9^u^5P8u literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.java deleted file mode 100644 index 5ccbbdc25..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SegmentUpdaterException.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import com.google.common.annotations.VisibleForTesting; - -/** - * Used when when SegmentUpdater fails processing segments. - */ -@VisibleForTesting -class SegmentUpdaterException extends Exception { - SegmentUpdaterException(String msg) { - super(msg); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.docx b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.docx new file mode 100644 index 0000000000000000000000000000000000000000..81cb0fd1d218052a9dcb791ab8bb53fb6d072621 GIT binary patch literal 37628 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 a#ZX&^0p6^@90bZ$f((hk?9ti>;sF3FO=vs- literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.java b/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.java deleted file mode 100644 index c4f30c70d..000000000 --- a/src/java/com/twitter/search/earlybird/archive/segmentbuilder/SomeoneElseIsBuildingSegment.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.twitter.search.earlybird.archive.segmentbuilder; - -import java.util.concurrent.atomic.AtomicBoolean; - -import com.google.common.annotations.VisibleForTesting; - -import com.twitter.common.base.Command; -import com.twitter.search.common.util.zktrylock.TryLock; -import com.twitter.search.earlybird.archive.ArchiveHDFSUtils; -import com.twitter.search.earlybird.index.EarlybirdSegmentFactory; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentSyncConfig; - -public class SomeoneElseIsBuildingSegment extends SegmentBuilderSegment { - public SomeoneElseIsBuildingSegment( - SegmentInfo segmentInfo, - SegmentConfig segmentConfig, - EarlybirdSegmentFactory earlybirdSegmentFactory, - int alreadyRetriedCount, - SegmentSyncConfig sync) { - - super(segmentInfo, segmentConfig, earlybirdSegmentFactory, alreadyRetriedCount, sync); - } - - /** - * This method refreshes local state of a segment. - * 1. Try to grab the ZK lock - * 2a. if got the lock, the segment is not being built; mark segment as NOT_BUILT_YET. - * 2b. otherwise, the segment is being built; keep the SOMEONE_ELSE_IS_BUILDING state - */ - @Override - public SegmentBuilderSegment handle() - throws SegmentInfoConstructionException, SegmentUpdaterException { - - TryLock lock = getZooKeeperTryLock(); - - final AtomicBoolean alreadyBuilt = new AtomicBoolean(false); - boolean gotLock = lock.tryWithLock((Command) () -> { - // The segment might have already finished built by others - if (segmentExistsOnHdfs()) { - alreadyBuilt.set(true); - } - }); - - if (!gotLock) { - return this; - } - - if (alreadyBuilt.get()) { - return new BuiltAndFinalizedSegment( - segmentInfo, segmentConfig, earlybirdSegmentFactory, 0, sync); - } else { - // When a segment failed building, its state might not be clean. So, it is necessary to - // create a new SegmentInfo with a clean state - SegmentInfo newSegmentInfo = createNewSegmentInfo(segmentInfo); - return new NotYetBuiltSegment( - newSegmentInfo, - segmentConfig, - earlybirdSegmentFactory, - alreadyRetriedCount + 1, - sync); - } - } - - @VisibleForTesting - boolean segmentExistsOnHdfs() { - return ArchiveHDFSUtils.hasSegmentIndicesOnHDFS(sync, segmentInfo); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/BUILD b/src/java/com/twitter/search/earlybird/common/BUILD deleted file mode 100644 index 797ad1f25..000000000 --- a/src/java/com/twitter/search/earlybird/common/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/twitter/elephantbird:core", - "3rdparty/jvm/commons-codec", - "3rdparty/jvm/commons-httpclient", - "3rdparty/jvm/geo/google:geoGoogle", - "3rdparty/jvm/org/apache/lucene:lucene-core", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "decider/src/main/scala", - "finagle/finagle-core/src/main", - "finagle/finagle-thrift/src/main/java", - "finagle/finagle-thrift/src/main/scala", - "scrooge/scrooge-core/src/main/scala", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/optional", - "src/java/com/twitter/search/common/decider", - "src/java/com/twitter/search/common/logging", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/util:finagleutil", - "src/java/com/twitter/search/common/util/earlybird", - "src/java/com/twitter/search/common/util/thrift:thrift-utils", - "src/java/com/twitter/search/queryparser/query:core-query-nodes", - "src/thrift/com/twitter/context:twitter-context-scala", - "src/thrift/com/twitter/search:earlybird-java", - "src/thrift/com/twitter/search/common:caching-java", - "src/thrift/com/twitter/search/common:constants-java", - "src/thrift/com/twitter/search/common:query-java", - "strato/src/main/scala/com/twitter/strato/opcontext", - "twitter-context/src/main/scala", - "util/util-core:scala", - ], -) diff --git a/src/java/com/twitter/search/earlybird/common/BUILD.docx b/src/java/com/twitter/search/earlybird/common/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..ac1131d90bddd11a506237b6dc9935271aad4e6d GIT binary patch literal 37094 zcmagEWmsIvwm*z(a1HM6?hb+A?h-U;Bf+8Z;BLX)-QC?oaJS&W-T$4LIp@rrd++;x z**sLO^^>)BS5@!cO0tkpm|$RFaA0dG+*%bX1+j_XU|^##U|<-aQC)F>-4`>vFNSLF z_GV7{Om4O|4T3$RAd9^6)^eFn&AE3aV@YKeq<08s2Vkn3 z)4kqLae=e!RQK^2q6eLcW$XASYCV8OQCCE3pc4-U!Knz2LWfl4O>^h8liRDQ91TiSNyN3P&N{kP(9aWqbs$ys%mHMk=9?XV_VJ1a{pWTa z?I<;G%cB5kJdZnZcTZDZKBahBka7~Zw^P|WZpN~fx1h)5(?h!5{7~_ej@#z_ZP@dd!L|}aqr*x zRo+QIcNFeAulVPh$T1|*>b@ir=A(7RetPnJL@X+MFCoAy0;Di28IawYv^cZ=6)p+B z-H+5wZ97ogCN=zq99hJS>W<4?gG7ja9b-V3w(fLVv{FpMkj_>bxj3*S9_7Y1ID$u%>GnVX-rEx zcI#uC(r4YW3#NkraYa=FH;QYRiFWjU9*cT`qUq+H4||LhT|BG*E#|0VYb00DC896M&=H@0&a$ZcL$% z1y%CSOLA6TBlHRtPEv*r{3z_BG^XET%Pj||yv|In4a&>D9` z6QoH{To7?^?3tfw7@{`T>xwb<>Qkm99dAWqVDDM??NSQQN zeYyD%KJxxrPLA2HlcX8VDup=*VybBJOJ6la;%HjQkw|tiX%GGUh(hDZ1#R2L#~1r!SERgch?t| ztZ4}{m_?%LP%^F3KNvbEau4c!-afp(UnHQv=e~f#J+eSHpq+6Qe|_$~#Q$esu2)uY zjzN8~fdT_V{d-?N+1vlo7PT?E6&BR?CweITFJYFjqRO~&{_~>K;%j)-ap_I7qhudr zp;}nCf!+@xSiE1EZ$kO&_@C-WpB6;TVe1t>t7DBl#K;fwM5|ALo@=x$Ex%QVnC9EM68;!u z*;{0&M}D!zXKV?&WpP*?!kGBR6bzr5QNYzNZk~7X6_=1&;9-|PpY}4UF%m>936@&X zD7+`9g(Pdns>?oZGnJDHRt{2ABoRIt6XVmH(4K1U?~52Z4_gZ`&VRy3lu+ew5KsYGZUS|r#)QZzs=qJBL3%%K@`pxehCQ% z26+GH2i6tfXvz%w)H>UOHmBcr#)S3;V1)}6xM4_oFtEZRS)0-F9<2q17X3O$q`F?Q zkL5ciBWsRyRQ@kMpO>h7h86v-mK%l@l)tigqxuHCmY8WJRxf!cu!y4pEw9)ueySsx88y28zl`UN+Zil>H-C@U5T?(C|?P#vn8bL-ewjik}&wzp#6&$DqJUY z*;?L7LCVgsfVx%>cqzPxAwtPT1SEO2+fM!e< z9bR*tJU;g+WL-eK4J^r-bUaQw>k3N;=WHM!U`IssLfzBKBh4Y=DU#p6U;3;ipYXw_ zU)Yeh<07joT`kYwe#;A2ZBSuD-b=?DJNc74`}0S493x)A8!((#vV zRvzm48176Q=cDJQgxa4RjQCAeMfxWT@QajnNk<8erF0CxA`T(YN)CA!XJhh>-Vi@d z7OqL+_rA|>Tc=G>Ykc(;@j6#IqtN@&%Tk|93xLDI3?kzVSG1|ANi=r~C)tBJOxH6g z@XA3I;5f?97cTPK=|SMBmBR3e_ni%KXP!2hgmT#`W$aM=!Z9gI(%d_UJ|!45{kA>5 z5{29RZUmi+G@*_E2RYLB1DmdR6)|afi^Xeno?C~Q(GIXrKrW)M#`2|{8Mjb|aQIAP zKRV#`VbW4{CPG?JxgyO78j4m&a3tu1usa>^8f3}l3J;YiDi43@KDdhCAYAf{!`F6g zP#MTUt#WyqEEa~Yfl)HNyn{i!$*-X9_Qk^&l?q;<8Mk`2m03rL6W_*B1mxMeBM$v5OL?PT^``TH{Q=NTwLR55@B_v_g!LT^w!W}#j9`(L?KZFEvq z1ztf?%W=2jyBoS|rVQfSemi$u-dWVPGZVL}^XvS$^z|S8c_JWCFlU04%+LiaP?C?k z>!j61tt&|2`Ko)kIu-@QX~C+D%s-G)jr&^5 ztplMgF&+2qQ*c)17mqfwi;2qS%Z_sEP2sgvr=CrPIt~9`G^m=zIU{{?PD-Qgv;FTk z_of6sFR%s(=Jj&~;)T0@&+>Ya=!Q@lcj=IQ?Ds~NqdVsFCSVe-UE;~&Yz5Wns#}nk zMeO0CJe0Mms)5!)?;I4bSsbd9^O3#qe3_e|rdXyWv$4FG(>_2Pfn zJ9X1J%}iQ(v3og96J8hsygo#~Jv=R(MHLA*9q;JhKdfD}CC{}z?av(Ev;_z69J#;L z3cT9BwXO#-1DA;nl8Vl!`u2m9celn?j+@F}#*Q!R-B)e6i-d{Gd%8Omzw(Ae)V^I? z*6DaY&8>`ixP}S8*=qs%(C*rHuJ&%+-k+2We>S`eE?VdVHV6^*Spb(Zhdj0IToyik zRrr*hJaJSld@7vriY+AP_~AlnYbZG2-jI3a2_(vO!)N^jWo+o=am}0O`-`yHgy4zh zI_P+4>&YkOLj)9}@S*Y6S{! zJ$4-qbY%2+;q@TDiZ9!tb$0J`UtSfK5R3K+Vt(yh?QCl*A4?oy^|5VR_3qTuJ?nhA z5q~sSNha!Z*jQsm*#Lf%B=(ZdJRyDSuX^Y*?x`A^qe`lK{-P5ML`$W_`_cyAalVe% zmMjc(4_9mR;y=M4tqP5~u10|_2tGyUn+mQ&39hOXeyKL}))w~W31V(PUb$%^ENmG3RY&>Excj$cP2$NFL#|N z?5{)vw(ozw)#!9dW#V_X>Pm4v&^~r^dEBv5Qor7>?7497Bl4D947|045K!G3%eWgb z=izqYYapaOZ3f%-tkU%%W+Q*ri4wQUVS2&@nF}(C!y?@icAD3Q)6|z%UaW;d%qbqEs zIN5k<7hn)3PO6%6onF<6QDN&1ZW@YTtU#W#yXiZu-tex(G|{#)eokK4-*s>*$IdT) zj7B?ed0O~%rABMjpJH(z@Yb$hIY0GuGV^GE=kPKlb9*Ixawe3nEY+YtH+$Z<{ zG%qaDTeu&hUWA4;G7$yjJn=$j=4I-`s}j#@q|qOxm8FZ(RT9|C0vUEO=}Bc77e2zp zDYSN#`)m*}-)oGv4`I%ix3i|@fh*fwWHr5%;C<5xV|aa9v+UrnJnPS23ae&i-;i0< zvfYkH&F6yr2&a;UKnc~eFX2FX6rUH!(4eg%7PI_?mK4rn9kbgI?yAriGtgaC1Yx=HZ1Kc*czKl}IOXV4_}zb2u!C;;H1f5lfe;88L`F}ouU_sXn8{0sYpBMy{G0*a&k zBUJ~476iimN9vzcP$kr7R-|tKMR2A}4jMuDLq$?Mv}w-&koX^{7>~l77k52{FaZjc%PAJ}nr!i?&V#5?Zr+4sAYi0 z5rRy*NzZ2kYfm@ME&6r?o}$lv3*#<1pBLS(bngdevZ}V+st)Ib6!&-cMsm0ABR7Qg zn{FhCqwKbsmP8WuqRu#D@!p>7--$E2PZ^;ytdo6(W-C=!r+x1o+ML1)9zH;{Qay@H~r$8xKcM7SVzhP8e zA*2{>jnG_-$8NK#C7)<{?OBT*RKBHC>vK$8T|YW;Tkh(QO1jHV_;E?a)Ahww_46e1 z2zJPEX}udH)DWFI_Ew4Ee478uYyWwn;{F)h`WK?mcA3#Mm5*a-o6m8j+|ab*^Jnrh ze8g;ZGw#-+iLxj2KIszZniPezOQyB%+op!|#|v3v4=AAZ6Hea8Yxr?w=W*s0)v7zC zf8D`3?cVmON%bd_@N;Je!bg6&fx+!vA6YK!56q6-*cL+WD_R8lowf`>fj3tNV6J)~ zHM6T_Tb>bKoB8uJuJzYfqJZ(0T{wjg>_DY&(^SdyC6S{TbJ|R^O#?R+h%@mF;EKkk z6_4rkOBVXOdgA2iWAIdcEkjO~?es10G#%0OM)q3cA`d?{=2V(G_a$Ox^l$Nn1{_jE z`NpqGr!@+h93Qc#UHPn>XQM3yNPQ#XIQk09`{<@LD9bQ}Jh>qSx0&PMyUES80ML`` za%kJ)Cii|Wq*&lMlQgNsiDd2gyo$u^7x7ae#TWy(do0t^6U6_bZ}&GZRP8 zmmC>xz0c**h_v>V-~moZs9u(%HwCnX%<^qpvKZc8@T`QNcy$W%M;|T8m$KA6`wjeAxp}SQH^EYCL>En;J3D`oo1@E$OZtuSI#{>V{~O8AU zJk*msAOW7RsUpz|n!!JvcO`T!lEQ&N$Xmi~Q6#I2`l-VvgsmWUH zETHnfng|)pY3lg-Fs29kLN~8)YDA@=i;Td_H8VdKpl#BSl}MF4I(8q#J4qBW?igFH zA859bv|_q92NQ3xYQ=+0?eEW&%iq)-->pvBgs#)CkF1H)B9FYl&B~_~&9M6H=)_UT zUPhIqCUNeqHC1n%ILimPO(CNHAhR?ZBTt$b4Sz*TS zo4ww@8(r*%#yCK%rub5eBDf*^^1exYQW$XE+oJ3^mshBN%SJGIIl5$XAm4r&*ZqBz zK~FXM*EoiKVlLjYW`pKIND*prO8D`tU9?(>fQ(|=t-D#@mE#>RU*VCEwr(_kq|}twc!dn&Ene1I&M^0leQNTmdtE7;) zM)+Qhy_sl#S5E))g&K%eFzz zX1=Wq?}^FKM}4f|5v$!UM${q`nURD`*tQ6O;rNv>q ztmwSISy4{jyt8+NtBs2g-A!tOGK^Xa`?JyJ?8_p1BQs_4E?GoRB?B0xJU!y0)x1_c=y*~xvMMeuq@I%uQcI+amF15{3k^lxqHC(%>xRj9bLn)1{SUx(G(MvUSZu8LEy zL?h_VO!Ne?JjCg#^-37QQd?#!d^m=(>;Ou0@krA%tm7{$sM)L>b+{2Q$RF5~Z&F&u zD^4}Mys`Kl>FMRL@{3EOJCQDPgBXIpH6|2%#f(+AHrf$kF)dYaeq|ay`#frMEc2R zG7kEtbF=lV|7G=k9)vBj%IB-b368@w@W*nRNi(0v9}bY$TN6z6{f`~XLp}lC&pFw^ z_>}}qNLnE?8s3_~8ca&(Ty&1~)sN2+7z)8-sZ2dp+{`%aE1JZWJNbF+=5$@Zx+as` zicr$JDj(k)?63nr@CdvS;-U#{@mLQuHE-i@P{MGsve*?qKG?r}FPhkLLx}X8`Z9oc zIC=X6;-0dMBVl!M30h+$QN1EFCKJLX&DQobR`x+txkWFt?N#^mQCx}`1&2{EA8Ca3 z*hNO;BvXCI249Yy~{pD~%Ju{h-{g>Bs&9gbkAoGpMI7bCqi8g}ogF@#LPUSEM ztmafY828KX;#ws~eFGQk(^jC{!EIe|VkC z*V5g@J&5eUP;k2Da<*A;aofOhhU-* znv^%?hS*&oS`&Zr`L0tzE~IF;!$MP^kA8yhIOG{Zbc0+bU?vIwj;{^EX5H*ZY!4Ow z&My4Iy|?q159%uXPdBzOD$AR}co7`P&yEz7AwHL>K)uRNFQH!>y>cVjlqp|m z)0-W+}MyI2u{-9?r_tmBXWZ1Wws=1wP&~>MHj;|X)k!gN0C(F zW=d}bzqeT;4DXj<$>P-5PL?idKzK_vVV;YDE7BzIp$h7i8q~`+iq~c!9PQqu%H$ci z<-Mmm(jSMdJif-d`FI=ty>02;@Nr3yJdQE|l#cz*TdL!a^y0tLXaAjk@H;(#NUWpO zo9o){2jr!P)ys_JY+9XFqqAg|GBb3$Qa8p?0j~r~aw*PD+)0d0k-vv~N92!Uob|;J zr79~Q^o}%qzxGTWDrdBtz4BDshiQvhS#V~|^FR+vRDN*5F#e^t5$efa&;Xa6r-M^5_#p~5v=@nNryNuKXtAjovx+!s5OUFk1oBg>SZuXLX0OO4ss?*C#-jt zTr^9~KPSd2i+JBXqC+tZ7DtXjSeA0#ZM=kj$cs_kZJt%FwM~n$vtF&zkAqKca!ST%IZl_dUP8QiEbxOkbWth(Mr&K!~P)Uogv*6-Gq$ zfx8K=Sk|pfUGV6ago309pQm3hDZlW6jzk_A3AAB+j|g?dXAqTt1hHG=&}n8$N2w)R z%)fb{DE`Hxup@&5zEyOggjQ|jbTr7!LRSn&1G1Fx<4{!XnuWKuMN&k+SGVFwdB2B2 z4N8px;s_T76Il&v_WbpU^}Qvw*D^Nvh)Y~!Jne9E=UHSWxdlp;oZ(zOoOI_j-Q3LL z{t-Py+?3_ElQSl`doV^J$WdoNlndNA@``TKK|z+v`$iBt`DECqPBC123w>EBg?11BFSb=`tgf z!6+|@5|Ed+fuR(Cu3_V^u~X9lB0PaF{v@EpqlBi^_jER7ny-CssS8E1BD1VeNMiC( zN3s%n!e#$hS|}-U8L3f{IVhxQq9}67E9g}jMV3vk1l3Lel#>(*BqJfzXZ*K01i}V+ z$?hl|!SP5tJ2a)_bB!_&xFBjQ@D~k&=c8Kk|ct19=Pbpk}~5 zb#T?>9VKFZD(xd@JzVsvuHl_VWd~_ePqw(ax@aJz8*2zK1w6fT{v9QN#**`5yf>j5 zS@COpoTue6^WAu6x$2qYOyzs65!G{Zv#!<=Co zYPMs4uoe@)I#{W@l$Mx0{LO=YBRt_JeQxBurO-Q_+Hc!E#{$@p!oUnIIZ}Kk{|m2i z%X;e^c~Vr`?D$DAN0JX&;QifE_Q}{142ARzU&-n+hRdsBQg|0wJh#oVwBPZzf=4MZ zNNqsI<9{?tC0r__45!T`7&Bo#zcL9Oz^vU`HDI7hSMcLn#)OE4ND(7(1XG2Rco#A- zj7Ww(gM}>~yQE+`4-Mf6%Wf9^>xey^^aFSIbm+i==eCI|gH#neY=bH5K;D@f0}K$1 zsOFm(S2|4mQo8Dl!}mhe5X|p>@nF0$7&PFvS%ueV~gM?4etB| zIqX;e1{vZa|3odSwlOonFy2nn8l>*D zOdt8alZb1Y2Pe^&8s zG`;SU22A#a25dY1k8wsy8M%3wMic7EP&2RX^ud&Of(D^Z^SL^|=i89jLY$6@Jk2Jx z-R%PkfcB6M3V)0z#hG%krYs0#@lYpSggW6_uwA=RPHKl+{h@?wm}Igf>ok$qVwV*^ z>5&!xKMHdQ_XwRu(lI9fROs?Q6<(%a1y96olyi9~=ZKyZzjqvQEY^d)?9chZI6PCC z|DJu7>9Wc& z!~8hXaB#DK5IL?`8C5j9`>#!P^lhU;D}A3BWSk19%g(Cub285sOrf01hWw>MI>9SdWGle>jz zBFk3y+iQ`TZrSz4ahViNRriZ@?DU}jK4llYZ}Oad_ZRuC^Du~974{GECRPrNaHju* zeA-B6^C2pEW7Y95@?ImE2NlhG1kEO8%pbj9e!w26w!|`b7#eJJ__YY$*R!`GWDvf! z9*lm>y}4i5{?<_lRh0k4poJWE7zwCJ81!Du7NuL})tJfik?+W;IJ$6c+>2qbC|#cc z(@{QYkW(adcI{iyZ0JBStWEvSd6VBNSYl6ZQzVqMrV%vK@5UJ82Y(}0J?lw|N_h-M ziLp4&Abi}=AdUy+^0-FdOJYT34cz&pn(-J&u zKtuEi8J!mdvQ(H{ODw~0C3jy*Q|G}`slKm@0#B{WOrYSduiIRsL^TL0NrIFKY}Mm^26k2-2Y3Y~om;W^r3 zv!0fZvLPV^Urs5_QRU+~yDq+$D5O%ozmu5Z$hCxMWLLk6oZ&buDa~U7@X1?u05VQF zDqNt^L>{P(`0bsZ<9QT zzfE@7{{NZek+<%eYTM(e0D??n6k5LV*<>~o66N7w;qgbMeKMnRAOJm4t_@w;-CjD` z2X9`bW`w+!OsvP0#?sP}W(uC8-)r(1z#Y9cy(<5>Vfe}M!3}8jU6~g`yhnQ)bw+ob zR~HTv4#9KL6!itcW3hQ4z!epM2?t%8DwIX)=P_f^3lro^JY^98-4sND%?CPlY(j<* zfQk8rfPaE&CXq=XVJ@cT5v{l}4UUBvH-V#P>9FC-gw1SDZV1Iz0;nS~+qXrVUqG}! z(QE}7GuIgj5Ib>==#E#zI?F-+-X@`j{WxYIL%_G7L1^v2(cDBUV0D5oexotl-@;4` zvTH7mE%zf9HN)I9`EowVhEMzw#Dl17l z7!E}!&QItYXl5GDokJD_U-x%g(6>$cnfnviy$17C1|l8mobBBwLkR6H8E=+Q9Tfx1p4;{wia}OX#|2ZNV~lF*JpQb zLKmEj5Dp@;M3c668(^|rN(nvbGAAWBv;x7eH0I7BT!THZnY&$!F$`!S}>9X6fcCKlsa{!)n0hq!x8ur-EHJ<$zmWu!`- zUE)Rq=TSm{4xvs53%waP$|_1CVXr3BuYBU=?TZr$XjA(LUj4q$HP5iefIf=M63Z3Y(?V>iN|;auusqmb737F6Hso`D>TmD%SG^lWzEZQ$6bmZeRL1}X=JI;+ z&O@T;R~(A0Rx|B8up1|vdT!gh5f%|IL(b4P$UBQ7(L&C076;Ov$S1?d)^H7%&Gm^r7OF)fSjUs` zRoZAKlsb6!KI?q;{{eA@NY%OT*{disJ_TkkJ6;toMY0!cf-{!p>2y)QPIhJ8B^t+f zr7B6g>9AGcxBQ!j9w2H~(v(fMw*bD!oiVjfK55{BKl%&>1KrSEOoaVoI@d!@3leeK z!R$$0Epi2CZ^4VdjO*J5%}?Mj1nOhj(1#Q-yU+*c?{NLkO25!=P|p_&n9Owmu@4O! zM+zAaCApaA&F7Nc4c2R4_B7Y!zN-MJq{piu#{q2i8MAgXa)EqGd!XV4KES_2Gy+28 z`G3ngZ;l(Ua$L=1>B7dtXzY1r5QbaCQkYjozhVblMZY@EMGJY@V(E&-xwkQzk~?N( z>$*)#DrFZ|Pk zIC_PIC4UojPF1;7q)k4L;(O^HA$5Xk;QIi*Q*vxiHXFny>?bOUG*lKGbd6I*gf*|A z_eF2%bW45bHt?b0J41Wq+4FPvRzkP-f46EX%j1^{4tqt@@bj{;w8&revxhCwKQ3hJ zx_t3IxAmSe56M)nr?p<~?{J!jR;I4;6TOzP`3x6?j{iO>+jKBVUWLr$E>NMto~M@z z_AA%!x%8|~7*v0MOcQ~)ab_?cnwh_!Br>pw94tfi`0%mRPGW|z1?bF}tG-b+Au0PT z%~_6TygvM(Xh;lt3cabLI7Eh+TT)g^y9TXas3=gXkUtm8^;5fo-7TS}!Cx|j2)Xgu1oP{n;Y@v;>{1V{s=%q z=KBUm%v2_~jpytlf8yT!On!SBd`PwPnT03$luM7DXSH+ohRxti$eSAoy89fwGz4Iw zg77Hew`;!sIIl8iu8j_V;?n3ctY^C0)6%R78ED~;Xlm!j9z9i&7%a{`Prn5}qf*_h z@;ZS8`~OF!@SlQvehWVTEw~c@*x7~kLF3q_(-T@)jaZZZK9P9Dri^$*?k`}s zo~p!v=zjq#wSF;;!kHKZ!+O5H0jd_Zuk#3FJ_-45$4{4Ret;H6QiZ~L#;tOFY4_AW?|cwdgcgqAGG9_HsACm@7WVGgNT99a zo&=4mA_5P1l?<7)L9S~`HZ6{>^H%!+KO?qPsuDx>h?E|27+NG3&heJXGMHHTbV){;#!h$$Ky! z)TSBTMh4Y48{pir3F;^tv@pQ^{u1;m44v9TF3#z;rf*QkMRrQB0UJL3)K8>&7=EqI z_x-}WutLOa6?!A00eTDJX0#3=DHv&A_596aDp*8{B-Hg0a1~LCb#w2o8&Iakia6nN zO=$pvpStHMDn%POhV<46ERRA*A=R;Lfc9YJ;JaUsrl;lAA&Ql{)Zs-}NA8Zrg)Te2 znt<@O{+m!etdql(s0t+Q;Uue$zq-ws*+_8LVcs>ZDYKXXuEhqqqyk4Z0ol%;>r=w*BIud60$V;x^r~Hk;2M*r0~sqg>IV_&fRQ7v*nlH590M z4C+LGKkJu_av5=^x-1d6L_IQ_FM?{IBcz#|D`}TV7i~s3Bq^N z4bgfi7{h`Oha0ZPVdrF;m}fnK%@cgcA+ZE(D7+#L(Vk$HD&E zI6Z6Wh#OHY;F3)$a9z*FDy92Su_-EB=yCq7U_wb5&&Me>hc5C(={#J)k#i#wn1V^_ zeX`o@%)=SkS<-LQwl-8J6r?d)*-fC2m`*y+lVjS)__;(Bov25(c5U?1y*xkKQQj|o6>?l_d z^hRd@N-8P2@;te59iDL3HdR;$R&}N%RXe+n&3cu|k(@?G+a`S4kdd(y)ZszQj#Vd4 zwM%Y9Zk^{9==AXxW&?wT0va%9fRE+lP#RRA{W5VRSE*h(G|_T=)Iap>p`EFDU|gX* zLQ5M~Yst-qk>M5(*ZfVw*bM!UvuIV%NS|q8Y!r`$rG_n|+;4F7dD@H30>EJ^A7Wd} z#{4bP;+N!Nxh|y!)zoO%i>-V4yY;;!t@mv7V>gwfaw5nHiMx+8<}eM~B{;TPVDuQc ziCQU>ldkJZ2=uFASW@bpZ z-?UN`=0!}*GLKiBVv*ZU>S}}b-Ptd687<6?-W4vQe;YE|%=`EG0=eut7&rQT3TP<#6&F0oimNT9_^y!u-JtfOQ}O~QA*{+xa?j6yQL%uia3g+G zv4js8Z`Mq4n}BSxeRF3a_OLM?ZdHFYkjYHM;upWtdfzU}QNw1ck#zi+l;W#LLqF#1 zGWm|rxWJ(P6RBr)=?6-ULRR{#j&7vIc%?=xi+!yWkzeTa$29bHgQqs*mBVcK-$Ct> zuHxO@D-0alO}#Uk0~i^bff@-wNji2H@>FHB7PE0inIFb~u&EtuRW~-fEH7UqNgo>B z^zIE!B&}luS0I}jh1w+hdq*LJ?Y(XTQ(j;yK$UI$C|X|5Uv6_6wF-{!!TN-X@i#^f zZEZ*xDviQ;&hJ{#IfTB!m9 zp<}fr&_V{Y#c%d)(gsK#vBuT7UVFIM5Wn>jPvbX?*ETM~V6F z^+CrU9ts1F3RNzqvDm^ByolV_PNXO8DbI)oSmrDi6jzyQSqug!kx|OQQOXJ83WdUg zqeE3ADJJphwnp`bzSTr8*PEkKgJS@kP7DAV6pEF895EtcZF;Z6(OpB*acs1e0hCB1 zaDB*X&gxu>W7=}wsnOWTQx%ISiQ*J*K6Y}WPpaFBLHl686Xb$4S+~ki%E>QM!K3TO zr$bXafK~h4DWkBF-Mg5@L=Z~l+8`dZie#28mV-hr3hj@ODgw=XPL-bF2ogc3hU*S) zAq;(`aU6(187cHb34DDwAX|(%TMRJ+{}BcY!rBI9u_%E>b9ez6%aL2HGc+I@LKIp* z+aD{|c}s8ZNGB-e47TyUVjdprqf1s%4usb+uV|2gNDy`-#vKyf;$(kX&2iy4Hub+% zAfo)KBB=X{P@zm&qteQ`!hc_p7fCOrDGV9w)p=3if>i984)gtD;JeY(AF~UByQIve zX)zLJXQ*&73G#N^^yoXpJ#8>HV##USyAYC7)RkSN!RL86fP;3*s)S1hkss~ra zpCgH>0uD64zkzjNe(wg`jugugxiKF;&_7Beg~vzbD#pMsw#BhRAsh!SPg8a(GumEC zZ|v5As5Y*ca*_mfh`2d^!II+ebr%8@JG};rR0^Q)sFL|gwK!~%n46xY@U*BZ#Tc~3 zC)idfwD)-rrb5`AX9^@ik6GH}`7EH{#?AZ4_U6^|V#Od)!d-2?u;5QEB9?1|fK>hh z!uk!Q`)?rI-$1iI;~hZhoL7r^INFG{60>jt8=ROw5CqCVYl{Q34F)afxgVJd%@TZy z6vBB%Oduv4?Q9rk!Yx8WFy@i4f{t+hA3iXp{MZTWT=Q5w^>8CG@!Yi9$sw(U3H7G} zRGIl;i3s$jtI{`ua%rsbE{@_}0+sVw8$MTO zhC2Z2jn$Le@SB}&_d0{lx4o&|)3mpTv$x0BW7oEqtf{dz{mZAD)3&NAl(Vy}ThOch z>m4hC0*r>(ZCxGZM2%@{do!;9l(b~mG{r0plrdLB?v)|eNh2Pf=dOj5y-zJGl!JTW zH)r8%FC{I>NQTzT;lWpL&M*Nomv>g)mOHmmTvcPvj+Zm$PqmBGK6b*?U5h|>&lfJs zE9V+RZ#}`PTc1MPhh%f0kI!49zK^Tb&dQi~e%Aw2i{Ba0$6d&(0do=BXk6Dmw?BP2AY}&@pB=J5s=v7q#}ecj9rX%|1}$c%=)#4X9d}*RZO1 zX?}IIq}PU#SmujVzMXcl;=bClyhxSHP7Xc;KDV#i;1FlU^MCYsW|I8*;`6q!re7-{ zXh+n$TQsn81xzO5C0Kc_6(r;*;v*J#bAIMuFTZPRtJ+|6K`EQ78hN3t=qg7S7apH) zoAY)wZ&^ICXqzMRWaA^0of0m%iEgPD9X-mIZGaOOxV$R&y;Gdi*d8oYp zd1d_a;N{rzdb>efdzZp{&C2@l3aoj#?fbRddw0gRX8%aOpd9L_sj<<4{b+aB>ZV0# zXL@1TB{$z_daqhGRffqixhVX0QPuQi92@W?|H@=g=NikMLPY!SXshLJgzR>!8HW;w zLHMQK{l3=gxmr=7y-Qe25&89L$gr_&f=hdKV?(j1D1bPLxr|sNI(qEp>1pes_h#nE z;o&Va>DcEiDSBb&4WD@Ltz;m0V#UM9D_a&;@Qf%=m?)|0FgIPV)*!#{+3B%t|C+ij zqDCAaPka}99c+Sza6v=t zw>QF`S_H414_ngjIJ+uur^c3VY^7_`GjCJc46#=R_D{BN4w-hLxeJd{AI@(brd(&l z{nK8nH|$hybxp<`;A|wBs}#f6tTX|U#ymiI?e(>drm`U&&%C&oiossysqo<4nLW^} zf*nuJ4?_l}v02=%#8Cvrz;1Yt-J-euq8I(%U}ATMM@q;Zv!6wCc7}kQpE=D8_DGe6 z5NmjdZ(2f?>jsm813j@`$-PmkfFaeIcw~gBzKDcKdx6j@V+umAOzQXa_*-sqp|xmD z>mjRjSWJzE_j}t~c8ycqQ)wqfO%|u>W(?f>%r5stQg+LR5%v{~CM~>Kx`AirC@7)g zqmX8Eb6VXAN3{$_Vdmc0EYfvKh`1D5HPGcFjB9T?ubs;o@J;v4XKd|Fx7cfO$Y{oF zZ%>U&3-PAGVy*WM9fp;zWBfw#OwgVaC;1Qoiq!=OTI7qm(B)`0wGi`|uDU>3iIqxU zQU4dsZoD2T2BS#(4||*5YW!@$w55b8eV8Xv%VRwIuv`5@LA1!GFLsnG-P0%ibCP+>|6EUEPYN=*u z`+q|a%)>Q-y`H&Kd;IyC1)C z{vPl*&(%`((6hQ^>!2`nP}py4$kvW!GLOi&SC>&wLA#{8x>V0qGV$$TK(ARJMq$RL zu^Y&tV@6DksVO?6q-~^Yqq+yjp*tC0U4H^r&$8&LvWcyNVqw6$2C%w>8o^Q-ryk2-)x?F=yge&I9^lvwB z`bMJ16w_>fc(4ETot$w^Naj4XzuB|R0!lp0oJ}S3x2%etl8>$~RBR-Bue9DP4m4F9 zj{E@VI)T2wuA~x8`mCfznVd$upI#9Ec-eers1yz>f`uYp=KqCtc7_uyzwN=ZhC9Ri zem}xgC@TX~!Bi+S!_@P5Rvf{|rL^bQXQ(=IsJ-V$3$S6uELbOhuSL=r&kIxBKr<3% zzj{Mt%Pj04cAWY8kufe$P?kl2m_olIO(aD{asfe7Hv<_<3zFkyq$TxJ6!uMl(yv$2 z2>ND+UI&<11>^fMLW(WiPvUZsvP;wD}t_T%dA?aT8< zS$pS@|3}zc0LRg6OTuDiW@cu#m|?`s%nTM;%*-r{nVFf%VzQW77Tb~qJN9?q-FM%= zyMIim6^a<;$;|4mIdyuf4=T143-+Cv$2a7YhzosVZidU&>5@tpA3_($8qQqXZw_Ye zFsdl*fKL_#F4H`pM&*B_iim`?Kf*Xqpzec_F2g9hO~uuzvO+(4$_5L0ShcU<;#=(8 zt8U~Q29F6Wb}2Ot{a7TpFZ(?CF56Swb&&S8H^mj_n`z(ux7E*HJ`8@lNS?TZuoxFh z4PLqed7iPi4thwVL(Yw#w%znz!~t6?o@eddWPUD*ZP*OkmpSQqJSFhQob#v$u#2LK* zZr;mm*<{QE`|RFWFytMdYw>0Blcl@j0;5uT!NK*~9g0OToH^+l#b>i8tn>C}pw5AjnmqKxw(}65=s_WaM&a#mgSDo?4o6q3#lvk-qHOFe= z#d}PyghF4D+B@won^(*!ZBGiO#M5Ro6( zq{9==xLGc5eljrL#Hc+}E;}Ns$@*SK#AzS4`cS^16aVh(Xvnd8*3{WN>29|0 z80NXy(N%f;_KbI6(W_L(Rs79@zs2UFu8$=LcH^CQDr1D6-RXcv zF$1rPi&#(MDLGG7Ki!U}Txm7#8Oo zK%8@>lDsz&cNK^bo^)KQ@5e6h4rt#WGk#M>i4C>DCln=F(+Qz$-tG_V2|b0gb@uyT z#oj6B5BWMP*}nAfZ{@Qy*U4z7~A?W){dY2QxpaLz*|0Mf|V7DDoc)>6edFE6A9H}K*j?& zN|?Dhiuhnf&iS1fOJrdcy1H{e*^PC#iYI28uwm?Zu`1<}G?avOYxwDKAk**dIh2>E zsmzoe4@e`B`)a^CKnA}i#vIk0xnqGwnXB&0!_wlfGg^N01a{i^H~B5G&^R%Vqyxjr zs?5El2}J4h2HCMdm*f!qT#SocR&6twXN?d6VqRH_2M)MTrMUS6oXeYswEd}dm=%R@gm+%C8uu-Z*^vwBZHZyWTJ zhP%ny?q#$PU)%cLLHDer=EqcLnX}Ld!1R)4GtYyO8nt&co9xu$Oq~)sIq_DV_M65k zrn{1sWMfwL@6Kh&YCB^pTlYKi<~~chz4=~tme_2iFOyzchAeS4>BEst)lj)32_|Cm z^6DBMcDP6jm3?*KqU(u$o&abVoxwHR%<KF%psu1Q_y!~K4Q zEPnM`y6}zmi<$9d?+5U5i@-`p3G3}?XmZeMeFJQayzudF10$xW)--4!|cNM_C zPRD7q_7f1?`rG$H0au#g%ZBOS2(i*LhC(CPzr(vTXeTGZj@*7n9wRGW^6s;6Mndef zW3KVlvH$!V0{CS@q;dJAK@Q$%%@egR#i9OTgBCuDA; zWw_Psn$JDny}WgZbCBIB+rq}wjD3e~NpeX2bRJi?yUbpfxpNwj{U?w&(624weM4Xw z0&|~08HSa1+UMh8!ExSOH?M!lDCt2rrv*6av3+G?xY_gSSi|b@y*nvez8Be*`Or@w zBt|-3*Y>`oA?%2X?z`*u913h9mYVP0C?^J|ZC|W%iNsKp>SP-*(8>z4TDn@z=QhL>1y|iUzP!7sC4c~N ztzhkk9_FK(cwCHsJ+tKcWtHA%qp0s1@kEzpp^N2*E|-(z?zWPc27U`h7x+{;O+Fq_#6^1%o{OUd?(xHq#KgxoiIeYl-`F1O`_ zNpKXVUL>}9_UwqS5jXK&#%+qyOgcX8)j4fO>2h#_g)Fa4F8=H&QS z>d(^EZoZfy84lw+8|Kd#*Rdr-!n@ls5S!U{T#JBC?rW!g1@I>aCwHaaC)=I_c7i|u z|JeaJqVMxQZ@O@{b7LWc2l^bqw{x$V|W+0<) zf_H62{t0!B$ZOW3EZ4waAEPta0}8bm!YbP|G8F|bYLqF^!`sq&s&CbH_7`Up#P=Ijk-aAOYBy|%!`tEzwh&K1$_(80YP8R4jFE8opuaz@fW)K)7M$0pmrBig+hTOg@70(y+X}dL z{CZ%gVD7wJ68rA%X{+FE3*0-UIx?thJE)tiC{s(m=Q%_>Q-Q7TX{+IFn*kp7EwHtR z6Qs!8sNCB&b$z>O8&9J0v#0I)6rSQR(=AyeuJyKg8Byc-kgn}RSBt>*U8W! zrPgYqP|qI1)lxK5Hz$1$=QOC;iSWiYUcfvXi&{_1XV=S5Lr|y^#3P zvzqi=Z|Nvx#~K;Ont(Q6GD9FmPun}#1NY)!N1i=_$3l3=8Cgd}*Zw))xz;u)qh_mt&ak}FGQF?VXQ zO8$m!M|~)Wbfl%SNk-pmx^$7`GX=+XV3yAmYD=L;?M;kQZx~z>w~j ze?#&;g)KE${wrh-6bhMeL_d;3|5ugC5>hZ%8(LdToDJH?SQL?H)eL5Fqgjkm1P5a% za&e$gX(4mcOMFKnK_s-!1%`l20yboP@mN#Kqw3d!c0Gk zs^Sn&j(Bo(O||#=QJe?0I0%GI0dK4e4!!WUMFa>*8}VVM7zFt?$^Z;07`hmQ0ZaC* zoQ+02oL`VQ9c$o930fpr)u^7w&`87J7 zGcnQFlH7@!u|)DHtcS&rWE=K5)lzBwGR?QTytgxdH7#KeI`$I->H&C8k1kg=W4G2%{R0trfZ zgC`nazk6>~1OM+saT%+5Z_>yHeXIr_0z}XUNhWH5BPhz2Gy2Tr^}AFAS-W4dPsQDS z+R-;Jdym}vk5h_~qu7~PX_?2^c&4WtzASj2c6B?-mNqvpyxo4&GuzV&o^LfiZ^}8I z)qshh^iObgJKY8$t9eiL^v92upFBL@Mm^sG`STQI&*j=v@l%#c>&yTaQ<`iv4SV$K z$#*a2jDr{9t2+^^%tDlShGsfi7FmW?F$Io`BruYiCp2<9dhVrAb$LS<{|H;%>0SK+ zyn^YpZyKfc934JY!4!|Kcw zCoj@lVCsks{K*aaUQ?`m6RnLit^EpE!+J64@J{5chb|lk{~e`sm3VZIA}fW#bG_*1 zW#&S{^KFbxRMg<3TzV7m#Z$Q^FvU@VKZ(cTjzSPut*$=iF`zxDA z_q-=9^q3n6Nq`!9zO7GL!TkaR544*F-_di^R45ou>Kx82C>;j{dlE(dIGS9aFF=aV9ke}N1*Q}ve+nMJ4czh z45j@;%Y(_EFhGr(f}n>SaekV>8JJ^y>K860%>sp#jI`*@u=1e&4CM1CJ`@LOmT~B6 zv1CkH@7NRNE7&w?R^&cLAujGeVqE^OVyrYdep|Ox(Pm~Eh^SDp|JKprKi48^cwEbg&x4}oN#!sQ^;q7f|Unu(u zxyj5~#?d;HbCwS~ENhf%B9>p(Csu8N*1N(Nw6xbAPsQH1%bZi9Ieyw&CBJQ9e zlBW)*Va^z=;0CQ|2C?zQ0Iw?ej$>M82~16;?ZMDeSn$5<26eWXiPa<9-UihGR zG<9T)d)Jmzl4vQ|!d4-7lFoxD>+8dJQdb4tc*HWfcN*!&Q>q40cy{^Sq3{Yt-Jy6m z9p)pH`Q15J!FNG-TwokZ1`?%1TeE4g6g12Ma|lO|MKlDg&jq&hN6SB@&r{kuBV@nc zsi-M|9x>`!;TvLjBxPWhwaj*gA+9~EApAr=O95koR+ukUxSN**fz z(xIAv0@U&D`d>QUCpH_|$o?NB+zYjH{6`*Nl+siTzWlWUJ>!oRPb&Wf@l+190{#DC z#i;RN=*S_|NqA%OosBPr*W}dgI^M{tO|LOR+b2H|kD7!xhHRU;tZ5rw*_dW~`wob% zzHeJUFbt>H-#B*~09?|?>Pc37U-1MSL2YaR#&2G`xV5sucFJb`!ziZqcxN6eANXvu zwoEj&g@+>NR01U#ItnmT8ZXdd*AhgE1Eq@~ zwcc>to6PZ2mzp!qOM;OK!frdOIoEyp8JC+`5KwG+NS2bchVJhW%)ePiaH7~s-zh}9 z5{flyPbJw>OoeIvL2Zy^V64MzZoDx0gIXP^^)J*Bywu|Jzo-pii31B+0uQ-ZwmLXa z5u5}lHZs+F}i0&=H(DFpQYC!)TMbBJ^EMD-npe z!*~&#Iswb^%G|ou%Cyiy6$X5#D7H9sft;9Xos26SLjUHfY&lj?-2~nMWr8RZOYB^0 zDh)}h?Gg(n0ThF(L$?x{ zlV;gS7FHOj2_kfe4w@|w-7s$o=03@aa5ZTKfckc#4Y%co*#xKTg-G?DxRuv8yaF-< zjk(F%XigI`C}8kdETc!$r5P++HCYyu%5)^YVZ1O|BZcKjhiJ|jWbk1;B$yV86{jUG zcN*JlQJ`sJDw^s!7dR>{>S=mKGz`OdfRMB(PLm_*n*3CKY}?^51QWzzJjVX>vGQ!j zm2wQ^Q8i{lw+PM{gSOIbm;X%`55xAoSO1fSW}s{x3GF+FgMRi|PT?Nng1?>miSG^1 z=U^UamI|Y|Zq|x))x(*IVXUJXOpUv+%eR$~9>K~_$j>cOuKFW`l}t5UUl<-XeaAFX zQ`}&+i#o+)NuMv1);%SBUoFCFoQskKk$xU#AuRakB-?I&ZJT=sr>z&R&B~YJlGaAY zXlC)jg=Hl8lk7FCVeqo5u~Ca50yD4#F-jkmhlKt@5|NY^n5go;ujtYyP(o%D%Eobl zRCqGzmIowA&(s-+;>ri)6{;iWQD$D1(#nYlYOFrE3WRl@1Tk_h#C*%q`D*$In64_R zy=n-PDK^Rt)DoDm3~(wE+R^z@FI6%DbQU*al9-ssIOT)!= z8mnRxsuEG&H2G2MQ_|%oyWdWdlcwby9?59LFjJ=|lq4vF(bSYDzGA3T)YC{~nllE` zozI#hR%Q$!W;WohyRc zymTcGerQp|TNt!$(7G@tr(hDFdi6K)^s*?7%u`{^ru6wk$84xz=Lxb?O(11pEqGeS z+!IJSxlrnVP$mQWPs%(Qvley+BUwgVN)oa06pEOaOnI54h;y>A zsGDEyr|LD|S18Nr{0~&R)tbFT&?c7!a4ex+uA~`lTw;_DA?FW?Egccd&JRUmKXI>x z?iX(;>k2zyIZ!BT^k)`E8)MDkNpEf%7T>goVxwSikJ{G0@6!g9eYu%N{p3j%M-_NesPbiO$k2ThqWP$nG*5!lfvNK$a2-$Lt@P$gIJ>>Uv88iC1ZoO?CWAH+2n`Z>!!836U9dybZPqa|w@h!sy zCz3tAux+O?0yLxqFxavmyUv3o2)~{KAkpGJc@4-=5;(9iG4I{ne*v>^c>WtRabl}r z`Va{g8V%sJFb-U3P|`kZf|(|a)6>m$s^KaBQ5psZR7#-+R0>cM1W$0{OJv-ZhPA{{ zl-<@bdBmn5kmgA*;ND~n4*@R*QsVVoV2CH>7auqT$CBoGTDl-fb!wkz?+zK7{R!K9 zVe5zCL%!#vrsYgSUoAWs7@~T9pa|8QE(4jWtJV!>ijwXmu9KeVB>p`;!AU$TJ;`Yp z5k{6L2a06RtuQJ&5iJgVgq0s>_?-EVQ%qux?WREb(t#n1t~cUEEOBdJ*^-g9NcPrL zrJ~ga_oxo;(2#_7G@&ivi`MXA!;9`R#k8Lh(2yu{?#yWa6mr+2C(HYBC|vennwe7J zrSiXI>hXZhOdSoPa*<@ghtGmge1Mf^NXx(7m=;N*?; z)d>sui1b-#h6Ja}3P+i2`0(_YDLI~3-#ij*!2LgA$tuLO6EXgV<;y&%_>sy$=NHH- zouYzirC;e%Dg2u)R0T3Cy(*f{PPiF?E)P_iC%4?&rZ5CuszDR2#O(j;Gr#Ac6<(tl zhP0(On~S?O9C3ra7149HYntnMjmQ*1Di>`XQD>GZFj%)lXB{MF&iB;H zcw_TvXt|SVIUzK$uRv7PxU#3AoY*UB^U-HCgiUL~%`dFbZVbCsg7EDP8U@{z_!yqi zN<*5d+uxi=a8;ofB$3(0Kl`6dKzs_I4t^jmYqHNrLRQ0%v+1!wC|mz-kuDmr_YilQ zKtAW>C-v~sNJfSf!9%hi5Fyq^hE#w*N?Ean>I%XyHa#G0qh7v|o7WVmWuVv>Z#+8aPd;2h8lK2*F*~R)iqPYJ^}0Yv0lVa-8t%p2{%p zE%Y!kihn*w(63<7+i)7Bt%NsH!m4tCedJxs2%%>A+T-B)e$(GONJ8{yR{QAP5)umu@xZ%3?%eVAc4rVZ@189dZNJh zhVu^-cjEcq6wyp;>hmx!Jui?(2nFPkz8gVwWI>6rm{^8VN`plI0^di@X!4lR{==;v zv@Al1kO%%6g89cW;n#wyTWIR6k>?c8lTf}7b%=i)!x5?NHsZ=_ z5@I5}y)UPWg>l8Yg`U>-IcE4nY%M_bk0chtBA{%Q)4C59I4M;AkkS9t;v4uYIR4*C z=6{I+i(WGMJhL}I!9rrM128U_@qd=iEoOm}Uk7wy*g;Teoa91tXoUcMVw|@eFw;@NNNeNEOo# ztu*7@aIv}qJae+mgNOV>wOb9}8)gwpEmGSllfLm8wqzo3UQv}MJ$T!dcO*jgTamDZ zkW)bs*b+8HvCb0xzG?Q#*|E{sfDWW_4Hbf+}jgEec*^+&1Olw1giYnR#0Bd&Uo@D4d}*!1$`s+B|I^Jmwnl*{qIKQwSl;wbTeJ&ZoK{uB{uiC~$gMTPxV0a?Ue&oc0N3!`W93VQF?K(e ze(USn#Z4%zU5?MzBzqhi>@uYcXo)C)57k#y$g?b3( zDdA~1ECmhSKKIIQnSLwX;reFEbaS$3;H;W3u4b4C3AjyK3T@Ud1JE4Kn8S~;Ns4$jAxMZq(!PR7PExf(cIaag~lz) zWVe>TB82N^Z6@rWS&ALW619H){0$1YKBTvix^YzHZ z`HqR@qsG_%RRcpJ@qE%m!a1a|A4e@|F!YnE4BTU{OO5I&1=*Dx4JFx(82wqM2HGfK z8bA%z65^;K#u%t$lBcsj-SeE0JCE%hX^q6NgQShKFevCRxLIhj0Ck+7IWAJ0tN2X^ zB*I~tB4hdlb(Vd-D0><>NlR|VLmUkw92FOL>t(u#Dw`us%Ipn(rKKjTnWCZo6OtMj zlJ_j#1x>M#g|5odvkO*~H_!#_NF2e@f{yy2f&KH^4@7obQW4&c94>WUS_Et39$sPx zWnOD=S0%t9$?D|O0+g^DJ@q_I2E-+VI766uunXE~({0R~7tKXteojU~PRbGvgDQYV z7EzR!R?jNOMTLevfgI7m!7E)E0GImVQqvW>VxEGY_(Taj92ev~$n)ZkBu5Ymj<1dc zx{y`pI5EpUDe2Ns>nj5!=RFUxcG_xbA|Q_rUB0Uw6|)qFetGw8mpCd$oEG6t4A$d^ zg#Kg25yb;J_ilxNRlExuGH{OnkS3dijg?eVQE8AT&o8friOqK^aK;Oaz-OpMji5nc z!wUr7gaIDz=U}``QF)XJnnLehyHe(0LO8*$B_@c_pkwpt@dCL&gZEW?)=}{x#qPe& z>2L%MCSW~1-|t~@263@K#|k64)YviGgNV0DvgFM|8?$Ch@eVbLki+a7;WU;ItdQ?r z!Le`G(o|Gwm*yy?tcJL#w9oMz6)WkGOX0n4-Z7=llN(;Kt-h24(?v;SV7kcW4a0$a zRBSjYgE8tiy}f$hlAoUgLr=XKo%Cr5Yf?rt1>N#;cJvYkw+V(IC3(tPH8uHPoVeJ% zn*(@hs9h3lsf(oGLFT{C4mb60u zp(HL&fT9Tycf-X!5-T5}>m%2jYF4 zxE}UX6B@~XvcO7B20C*j{%>bo(4Y&j>s<>PancYcWeBD%*;`!(y(ws@?P;lnYCL}9 zbsRcHc8Vt{g(|Jv$kg#!BMYF zp{6g$RjpQU2V*OiD>?Ras<-ki1R!NX()v zb8jhZJWMH6!Wg&S6HQnY#JUFMh5Y+kHpe(r1Luw15Bb_?2x??c!>tAd! zVXe;_$G}@sJ_72Z(~ff39N&T}43Lmy)5b206#hnoK4HCw>vH%&<%&N}J6@5boS;g0 zxD;RLG~83LCJZRj7C=}BL%RP^kPzw+q9HTK+gM@F7Im6l5n}Dj&gXWtiFVV=tion>&}y+PW)Rj;H)G?Cbu6S9y^HpDU@55dagc~7b^K#z{GMM>N7_>dX0Jf zpKl5aup_=Ur1mb%ko>KXG%>IDlX428fkszP^`@97Vyvh4lL0X#o2^ba<0L^I&JWRrO#3@TARk_;x_}{Oz1BL2FMW4#BH??*Yfz76b%Co19BsV=}O0>=ck<3t_hmvM3wOmJ_uqtj7VYJNj_X`-Ji=_o1u(aDz7#f)w zRQM)>uNc^FhUzJ@3I0u}m_Nr;^{I<|S`XxlMWX#f>eEj$sXZE#bWfxIrVcmgk2*1w z|E_?JOAX|*N^|vhp$LT z(y$NMwdw@+zjdv0HFtBfcCh@r&#FaZ%jG){M(<9UQTv_+Y^$^U0qq$@{k8&?9q=Im zAdO!@>>s$35DFA`$Ty-U(kwErE-~+(zxDOH4v#4^=OB9IBc_@N!Z8QUgNW18({bI; zua?=p8gsCuMMSaC8VT|R;C|_Rzd8`)G-9;L1ocLtIy&-gZ_y}8j-+ktkL*Z*g9x&% z;BEL-!Ho`haIG0FIgHZMQIfneMuQY#yWAXqu3sU$(u?6`Y~gUR&y}HDwbc>*dBFI< z>#Unx!eEOu$c0LchjUC4x~^j0&HZlJL)!ib@c4n*a4>ywHMAS!@>4~#4(p`&1R*7j z5+@jYI8!kpO3>*wxM+0^8>frD!8!EUcrNE<8j+tm5z9M2lfku1L0U~ z+QKt7=7oxq_;Qg@1|Kqp*BeO=3L^JvF_wxT^N2E50n%25 z{kM43rtHzyx5E6;DaQHY=6qKP*@xDIL7Rzg1Imvyk3fdywc(Y)1VRCuHRUy-g@qM7 z9Vx`rtqQJ$w_9PP##Slm?KoIItPs-%$MU`;%yuvvh1tIN0!6fqCjd#LYK=9dV(mo7 zCzkR0(Hy^EeC4gxQI&@^gnnkT8v`&By~A1Q=(6A-goumG=e!_J>@?O&4K>?}AL60O z&s76dW2@2hjco5X60#TS!Mj{vXG#eh2)>gKZ~z7mDUu*2+??THnS-@`ec&Q%lg^g! zFxX;~F3-)NxViW4hGeqyEPL7!lPCm3&7u!&vfO*l_y$$meiO9_@n#`<+BT4M&!r$} zIPe23< z{*UTpiozci<~2HQb&)n_2kL`7*9;Z)$SFP@715izu$xX&N{p4W{96yeUB7}Y(tQ>P z#L`1slGww)Y_B7rhu84MCVYP(;fIShD<=ESfg5QUg1UIWs*cAB505@zu?+Lu6fq`Rpt$x@gTMWUiz$7cm78Us#BdK zRS;kcs#f67pN^`3TTp#AH&Oj>7kup8fXxsK0?3?C@8DsQ>Va7dt7sA%4q;b{NGq}v z0VQh-a5L1*%TIP~E}X6hD$+C3ifwxkPx)zZ_Wt^Fuk8j;9WITmFQ3g})9y@iMg)#Tf zyn81$OL>sy2@@b{vTs&#?q*mSKTW~a?g3!+oN{tlhb(XzGx#Z4#ZGP9hB`h6NFn65 z_oKTzBO*eVkYd@spKRFQLH_54)Ze`MuBN~ioWJ2fK+yinF$-YFSv6x5yT5%nx6%e2 zzOxXF{`e9_lb$1Mm)wGZN;ewTJcWes1A?BWYtjQSSh2JRtDe7 zW*f<*S23JM#l>WmgRWH%e50Fd+w*|Dnyzrv3|cB{&<_mdJqy-#7%fFm&0{O9ZZos# zK}WcM>rQw!2;}nw6}T6(I8?s@E8BhiehK65-Gf+HTcO7-&^~lg8l~wC%bsWI<<5$q zA)(={b2q`m=v8p<1Xeyip{vpDe$=mLp5yR!--EiT_0NHFG^h95^?BEPx6ruR}^lzA)EN>+Zk{U04jQ$)zxM}f_cyXZhb zF#qe6bh9$IH)sBPWc}OWOh*COY!avUrzT40;nK^7dsL^y<=WLsDI!{%SbVd%t{sgs z$r(j2;+1oMfbmxS5Zq=0q5GiLr7>!O%%7lrr5N7=7x7cm8BC_ z`c-j}j{5>%9bMs**dk56f@RT$eU=p-ZkC0h!pEI=lS8pJm6cx5TaPaqX3LrIA_*Ex z;h_bqoLpnG%6whXl5~!TGg(|YGnQE)G_lG``bF~=EXEqN30^*GGi5D2ED@V8g-AQx zz;M!1&dmKuidMh|0(7DM7Xo2zlem@MFV6=X>9Ye>Qp^UQUXGRz#_EXP^dS0R-<;9j zkAE}2`@PWqx_JKV_|>-sWIVZl$N%NB&9F}|07Yi_qAu_4c7OfCQSjqFoLZtC5h`3} z6T~MXnEw>yQc01{u$dCCk+J|Bd!NE>h}iX143a76F{EnXTAnmeA^>TD&?#@iL^qE}7 zOt$HC<;z?_vD1)3bDfx3r>IIhELj$|Lw{s|L4(E|xy-md&8Db?N7?iW!B{9lDJvPq z1HrHt=`W^i8@jEe7H1JN`^1Vev5bD7(1eYI1q!p|Yj^!q$PsVj9fcsleIGVelC{!8 zEy2o@dhfKj(D(g_&iF*FM$xSy(^Y~P8;e0WS4`!eF!>3X!eNg}QVZ|w^UrHS8h!U> zU2+?Csc(SR#MK?aw|>5@ux4Z9#b3iCOJZ_)!xN~P%Mv0-!hb8+c;cAlCQU&$M}WLu>7I(^bI2|4GEj`;inWI zF^29^JrJTJL?MNNE}7!c-eyt@55hLhG(d;#e?#> zFNc|mY0|U`O?cMSO=xI`Gggk9<4>?EEVZytuVe7!K0Vj%5;lZTFG@jNmrT%6UbD|_u9eLZL^J4Y2tss(;Y;k(}R>U7R1xH*bM*t$&%M94@bu{zo{OWQWlKYx(fD2<*L zHa(}2q1y8P+_9_94I!hCXbB@-LU{htEv;%=>W69o=oy}p=1h1t&)@?^B$kEco`(TQ z@1K|mB#1?R9S*kFkQG3#U|*JkiTBoaiLpeo9^Mfl56Bf0BP%X6ep;-!JTg0xZd{vV zwYBG6!42ON#%0$`H;vPF%RH)}vq0LRU^b$L$|R37qoF_`%9Su-4r?{+P)u*02g^&- zJYJ+Uy$SK9LrTA~z8txE&6_YNIVdoy=l|HtWPo*v=XtBs{{{V@x!BhLzST0|2ObnK zdqoHSHg$J(bF|m8w_~<;Gq?Zyu~!q*05`~j0rJyNVj^jxlrI8fQ3Zt>wE(VG=H)w7 zQg>3Z$;Wm?->&Cpr?F#ug?BJw4n9Degp8{boX?dcfcWSAvG6@g=tZaqbWSabm8zwb zwtKrLB&i}eHr>Po#(^Fy))It92$-c)1>$K<1nk?m6HapwdgVw^w4G*}4^;~Xo)q)3 zHD%wrzXlfq|H{9=9V-CT2E+T>!MDiRSC1L5hduIa?;zqg{t7VY}FsNscq)mnJYB8C9b#J^jv7F29d|!C(BkiJAC6FY)H?}LrA%fj*aL(!u zChW8g7-yzy?m{!=34hFJ;D{PH#$A)1MS0gyP?xXh(hz!EeFOW?0d47$SJ(pzHUSF9 z`48cLB>!!9|94b#6B-PaVnRzXb;hBp*6)_{ z8;2$Tfd$-E>hh}2?VM$ci1kHVOUfK8@_x|5&9Z%!NnV0&6mn!0hhdYYqo@dlPdP zU{&UCD{-wYhkYKLo}Dt`L`l7t$Yc%(j^;vP4gFY2@|JrLDxCWBym3~R&1<8DheKUHAY z(a^rlwfhTOf9$=-&;CZ;Sb#*Mt1F|?;`>g0yY^i=GsccTmOEnbA#GplCZ+Dse!5~t zlb(RwXLe-4gK*bOGjf+zR&|6u)DBv;D!=HJjSKGJZoxfAY0Ff@xw|fcI-+7X3LdVc z6Vo;nrEcR;(wRzWACgLoh(l9p{&I9hqh5KyS#`O9m0Z2wN=hbk`oiU2G`c`MLN02W zl%2?t)`X3I7AvAWh*yrAhxdFXMFEnVQsyd5k*iBFVCUOIW`GYT0W34Ee`YYv1bv+) z#5c$|t0*{U8Cb_v272Bvzn*4_c`-k40XBpncc`SeHsh`$do=Va(O;1?_vX)57Cc4- z9E}Q*P-3MNZAT&XP}CDuy36vUFAQ3!+oeka8eTg~dbmF;PBk2v(K3w4VQz@9wH98o zXXv!X%`qnag8xo>=OV3?S%ghRll^UxLO~ig$GbmM@e6l+LN1aKXG(Mh6`ffo!X3l1 zD7lUTlX46#1?B+!i}HwI;D*h69dHM(73KZeVfHwj%5R2IHmMrpii;5X5s_0Kz8yge zlTyk#aS5$0dlKD?cSkRg%&)f_>v!v(g(u7-P*e?;u_Ir919;r@KE$H0ez%xhIQ=x~ zqG~va9f>0f#7F3nkuss4y%VlX?b}sLukDrbTzwdXwe6YPyY9J>HxQ5Qxe?ug9?;j+ zA3Y59kzj^$$i?LQ-h()0P9>8`gZvA2b#$J)vfTrybm`+ZJ`pSD0EP`P#5p{aoJU{x8$N*Dwt| zHGOvozwn(@#(8}7!YfE3;N$NhL4zt8=>7E6zjbT5+Y{o`XJAjxeRuFauQ`x>K9WMhTkA(~wKXchg|aacW1r>?U8nvi*#3b3 z&l#(5e8sW{5(FfK1Ox;dIAZ}DcmJKHfGaQH_32=2ZO3HeWNvw-Ve5phjv?6P!%b^H zgF?fI0X^8o)?dshN)N_m{k=4WtC+FQIZP&50X>V#`14{KAUE*^BO<<|OJZ_fRe>nyL&i9_L7q2bWn z9hwg;3j(;gr^rKd@03GJtrJg`>?J0b8^~!}$KW1_EtnO;WMR{iiB6|ohs+KsvLf;3M;-YLa25oig7g|E@4!!N1GxeHtd#=lW;tgt z#}J-)@k9J8sY%fIOv-9icg7uGDziEVCxG51D|+C{)hnTmG*2VltWI&?25EAf1~Vw= z^mDcqGl9wY1u~4x+4k_4=pt5>$U1JQA8r)|-k>H(HCxnayr$hlSB>iAc@e(;TCGaI z%?^bm@NA+J6d{emy+)FB)MvLh&a1S81kgLim^W-qo>q+X%~Sc(uk2tLoklr+ZzW;+ zKpiCJ-N8P=aS|g5h&IGN!9U{|7BgVw(Whrs+TZfj2-=q5g`;bBP7;ncCDx&feWT;F ztW||c;amQ-xm|x5an%0^4W5c=BX5F2Q6f3Q^xI}~slzNShFLjRF3snS@+qU2kwEE* z>{zlj3f0nH-gS=hyX-R0VGv4n?8u>%x86u|8+*cR@JI|i1dIrw;1){Alo1$pN)RL~ z0-1OBZa9bz!~>kwE&FF-@b6Hoycob%s8QbL9zwaXRS31pnmqW6A<|f^$-dnu32NF`OB{tIr1m06@WSg;e;fJh?@$V=5R;GQ<2^Oqd#WLCU z#XQ5aPqaV#%pJ?-o8-Do^NaUa8kJwGd7tuNu8=evB-#qNr@m*z|{_XK+X-IeT( zyVvy5pXm*s%WsEmTYv0j;1<6WEFaWhaPz?Bn-%Ai-S|HUsj>4HoQiDNTBl%GotpD@ z(~W%5n|x;L66U>l@Muoxl8eF#OaIH|WnWO(F5TSujxCw1TeGM~FhcpTSXd!K(JugexW@ZzQ;M4j1Y?teBUOd4~A~d(xBk-qX65c;la3>W`l~aeLa~ zXHz(*y}heEr~RDonf1cA+n1!J^~y}O&HOZF&hBOB_EcYc({!kM&CzX>E*Vuzet29|dbmsMW$fy<{`1k3Cnet8 zP+9$b0_V?j#mcXaIIo;3oc_(%%HKO!YxmYexBdsGGPkO}vf_IwlV_ov-tx2HsTW_# z2L5GDY*HBu8nF`pjXS;_vJdcPWD;Qp4Ucm$+?{D2u{LPw#Hqj*>M7uu8>rg>0}Vhi z28L*7;9ziSUP*jNWkG6jEU0ycZa}4)x5E#h(tE&hWNw&lAl<-t3}^(TjSp_xqigJF z;||UQD!B;MD2Sr*IZy;%_ax^Rfk&dzwST#NTl_UpdkzZ&g8+*5dY}kgdtyNWHdo7a zTXlZ|wnFnI(Jh|=3<&Vd0nmujT%g~vY0qnr7BT`_ei~?%42tDDfkWwF?GT?M8-g_y zdRL2Cck44S#D%gl@S~Wd$^$j2xTG>C6+B&u9tP+KO2YIvFy6IB(TsMyB)U21^P~uK z{0d>_AWfp6Ye%1WL1?!rg=$BehCw$0eIf#3LS7lv1e9qBbp7a~#t8k4l~DcYW60=6 zp!dHKM*OPB+8akV0KKD&FyK-HvH{q-z3674_Z<;too+-n3$-VSZVGx=3t`HmCTOUj mbiB~@qqheU`fJ;evKVUXFuqoiu4<+h{nkGjU_vwr$%@W2-@v#`ZJ4t{?CFdEWP*GoM-K ztS{C&bN1e6w&E8^C`>RgFgUP{G;Yl*<)XMGa4@iO7%(slP*g`8VCQUR=WL+rVQ=Q7 z$K-Bn)08BquqJ}~?fexhnOTU$OB@BOeAk}Fo*@oTq9)^(M{Ak+R2Jg#ev&UtZB{V^ zhAA#H?cRrItzNL(yO~NyT;fzuFH@s{46?+#U?ZRD%$$2)GLBScNqUcPeh8+vHPid! z3>P@dUhM#%0ebMcSgv+JlI9~=G<8*sIy&)iFr2dBICN-D!7O)PC%L_<^6@D39{tz- zaYfhHNnbazM{z&N?AK)`D)lVu41{)np42eI3pJ^4hK=!qPIazR^bL*{Y7X^leMQLb z!-xRXA3tq-ncOBc*pFfA%OY=7v^UYMf`6U@tb?d(=Z+w=HQw#`b5GXP>A!YrYelR2 zSRMyT<9XhTBWIrU2GCMBkm@DEq_cI#RCx#858U6=7R68qJuZjp-_Os<*-onYjiP+x zR1>aK?huVh9%JX_es?$)C-b?@4boZRm5}%8lrRva@fR8NdbmV>J}`n_#eMkTUwtqA z(p9|gvKEkUBFm6WtMi&fScujWXY}m#gjiDXQ9`KiWvOIiUwHhUEdLo(P9IG1zq;r_ z^+n_X)V)mzFfc^Wr-7rHjT1A|pJP@0)MrRmRKIf}$x+G@yJj_s!WDgqBe_DM-qgvn zVmqL8@oIOMl7yZnb|2B<`JRdSVnzY}GJUa4poX#5LO|Y9pXL_rWn+iII$Sb*r$4E? z>TZyhO?t#FIkJcu)jgNFI*AbdCdQBsZNu5DXtkJx0iCTha%oUm0@@9tGmVCe591sF z1|TKd%o$!%)%MfIE&M^a*;(4qPvkh(9!(`p-jo%Grx01j0pmto=5QvuJhm+pyZxy{ z@vBb7CDT!$xPpqlJH-vmR44i%k42+E$!zQ1rvpX`@+l3^X>*s&KqX)M8KU1Tbt&iC zO)<+paAUJNT<8B?pwMrKDwd$zd=^w7G*E#|0Vax$0DC896M&=HpPM`@enNhL1y%Ci zTXJ4bJ?t74PEv*r{5brxG^YP@+Z_j|oXtcw*VNWtp{;f)J=w)j zKJvkOPLBC+)1+Cg%Efs{Vk&5IE8o;b;%VB+kx2G2X@B|q6NM#^$2XvrwGH6u|5 zvqUr#N~T@<2SfK%{!xSP`=_^$%LMcf+?P%?v~zCaZ!i5<`2XFPo3%BZ6Hs4l zpuoUT|FbVf_V$0ZMRme%jRm#ynI1~dIouLfR0%geU{Q2dd;_mGKC@+hoa}QPR2%Cq z(C0A}i}xGzZ5V$8|8wK`^OC4JY@_^FHLQup{82@R4TPqe@R5VHsY5a+sB-8sEcGEY zJqLrC@u~$FMtJ8m4aMqlFR}*X$x9+wdnX0@8Ru1GkmCL# zk`$YkH&c~Z6v8VYUu(Wrc$Cfva(>#oJ=RK2LPC~;FnVQ&n((Nwq*)1-!jU7vXEp4) znEVQ5h3MscTW|UcE!V{#fKMcgRpr z{9?;5*b;QB;;`C;u?fv-7`}Dmfa~AfJRcIOt{^qR!>@imA7s^HB#KxPthA$1_)O0V zN!Cr&R(#%Nsw5Sx9;T*9CVVy~#-}%-J<~Wm6kpQTlh=vD%HhOAbEVt~2DX9k1E`@B ztp#xvKe=k}65oHtdqrisv}HZqesmE;Ja&WO0k$^46Q!KO+q{lNP7wLG+H9pH2~BBi zQSgUk;;4DqD8!`tYKUoc`Pyr#d8uw{*zjU8Cs>N& zw&U+raW5OEy#(>%o!oHiVF#j{*p75YPcj`>5Xd1*3deTfG63-3GSJkdfLXZ!mAm65MZ*MJ_z# zQEo;%_e`;q^bF!hcl{0x_r-Al1z0LOZ|+J^OUUQIj6ku`D8g!I*F?r@f$1ZBh?s2_ zGG{$`IJtkD9V}@AOEWizmRr$|5;*rzjZ4a(EDPn5djI5-3 z64doi$qhjUO(J(xL;E7UIr$T!WZWtm^k>saweRL8fOfe%*scAWoc_;>C99BpU zKakrAGP}B;>hw3+g{?RTW72hOjp_gV*=oCJckBR*cD%t6$wr1vHP{P1RG(H zzzHu|z-|zbyuXIbo^^;kJ7^>aDFU|obza--ht4DV*#+=@R?xGNeB{c3z5}KJ&^(HBfZcY(Eef_0tI{i&5j{x`otR%zN=NO6>mnG2lgBn+HoGAoI-~ zD(M$5(pP% zqb-Yq=5RH6dB%~X49>Z3&4yq*rpl>q9(v5IPP3~UK{t)vB%x`8aPsS==<`SX;f>0} zHf5yJ4|+k+pX`@?qVK}wr@|M0@lW$*MFYM+eu!(D|HZHhOxE;#`!QV1c%k>^qhrfl zUgUp%`NaM~K~$AV(+s&&sJ-n1qkYo(M@>CGK9L^-VmPL zOw4P***(cUyV`ZewVrHLR#lyI(tKi7L6D)6l+d|W39i?op>+ee{|+@9GSP$=74ckj z-U-K$Quqv9KEh{K-bGtc?9xPDT3so!ap$UJV1pZb-<|;3n-M-Ho5Y$Rln4|hy1(sb zZ`RaVXCsl}uM!DRF7Pbn5wcG7{t3_wy;rM0i=eQdKM^5joB5H!VEeO+z(q^Kt4!BK zTYh$>+~&-SF5M+%`nsiBipPixNrb30k~lW({1$gu?~D~DH5eU2-v=4D7>2pq7NBpc z3AQ)3Jb&BHEv7^NW3+5$wfhDeE{1~2;Ye#~2o>!B^~=H&hiHs`Q5#lh2Ig-BrLRJ@ zWFza}T31c=$Qcx@Q}Qz`f({M6v5*vP>+@ndXA(=>ML(jGww6M>UVo0MkB=a0{|Jy< zZx&;Td6|yDYJlb%5mI|;gu-&?8eNMt$e7+4-KVcHTI}()NiE*NK|z@o+}s_gK_z~Y zaG6X=jTJaUr*$v@&_CZwmbB|I9w~aEmkT_9OfPp3|4rKjTm!tk}xNeq*NvsX*R# zq^pwR+ZFuqw4SMOcX)G`QYNz@HWiTNwa2zK@1nxn*4nOc5JzOL_@0)uq?@|IUK2d2 zyHViWvdH~&em-=QoHo%HKU#)cO>DCCQ>N&*Jm&|NFGS=5i_hN`Ymr$J4?jGZ9~3b~ zPd^158h-4ssG|1S@~b0gC>>?!q+2@&lE(cgUr*aOYDPM57CowYC8f~jxa%_g**QIh zTR!Ug>Q4--FJU& z2xJTG>cA4ygA2CkUcj|G)vxlkD-k9FzOEnpki1XozlA=iUE?JXO=Ilms7YhowbI2y zNfVC5jvk$QNMnkUu+n2l!;1d$T6oqf_31-ImAX5gQ)5RT9`N_G2rj%d;{VFQcQPfM z%rENjOXMgb%DkYhQ(spgAZ2o4Kk2}D?&XW|qVN-p+ow}Q2TRMMyc~kw$8+NCPCMe| zA?=vmkGck0-hiOlHxapXFttnPAM(;Qj&5KdS;0BZQz9RT4$FW1J{;%BY7eE3wZwt> zK9f4Z8q-VyJzt;aE%Y73onO`V z8>S56yZ(FkTs}F}wsTW=DvO)^xb%&m19&1KP%!6$70u8EEKpKTdK;wGM6Ihx;Q4C% zxVn}F#N=jA>yo}!9)3=gdqJpcqa3V9plHgo6KTV$jw(EoQi=ao&#euiB{3VHY7~-_ z?d;h>b~#nudev2Fy)C?v?$oy}-=H4Qj|Nq@ykMwD&Pi#wdw%%+_Q90E_Z3zj!Mt&S zK)iV0|3ywW3f%xo{XP?Nfc?SHa(vHx(F9Dwtw%gXoUN!fQ)LJ8s)Rj4l!vlDT_wmm z_~Vo{kJZg=;-IHIyt5Z9gz%nFWC_78FQKNj(uBsR6T$wARCIq5YFlil)l&5X!}Tvb zt2eVXP`r?x`hkB z+iL;_(C$0-t`BbAKb}^Mel@rcDOnl-HVF|8SO8bDN4&J`T$hZ#$s6USOdZz>p9yEZ zVGGGRe!5iL83_q|FkoJL28nXp^4&Z|nHV{J+VJ7|{wgdsC3vc_30l3`dhtp55&?xM ze5rhg-VyIQ<}S}p+$Q#{8Xj>!Bf+|_1etW@oJMCnUnJdLxu+9yPuxTR9T`1ec|FOm z6Dsy-T|BxyR@a3k#A1AdncuqCyE|GcCz6I(eQi6|eY$mZ&bwc4#h=WTQ-}r}wl`Fmq=|j9D;_@9W#)fVnT+>&?cibGq(J zEpVlCOF*#7?ffhxh5Ia)mmeEN3r%a%TqX!r-3Hx}s~+z(N2LIWC^ z$Rcu{1fg^D3boO7i5FGUn9tHm(xvFiiR=|Y4Evb$q+b}9KEuV!xA#=~ZV@m)sE>D! zU@lg6vSt*3E7@G;w7iz#rD}&WyghGNcJWuA4;HS3*Rry2$t-Ky?k1oXazTEEQ_eu3 zgz7t#a3DQSC@|S9F80F=@=y^$SnZ@GLA2eh%qozEQzoZJ z53rAK@gvFnsmC7^hgz83SrNQV2>{pP8PgF#mA}G94NB;Q9%U4}!j27y?SwAO{d4jw z=p^<(PeScb0Ki56aeZ|Y9wieLvj^g6zsx4YKe10a;z6k-pzCP=O4SCT1%q(^EA?+G zs50tvD^mCWL2#}_4vHZBr6Rc#+BENfN&GidtmjoVc0dZ~s{a(`iVxDGj0*CK+4z%@ z1d;K7NMs~|qxL|A`%CqFf?E@6=bx+o6)JQRZ=81R=*G~`=9AD~An7JjckwxY1ozeQ z)h1r-Nb3EJAnBh%ofuo%+U(xF<=cj#vux``AfY*b;Lx!$GGX(^5Glx{ll*c%wDElF z(xzuOvEjX?kPqa(wy!^hQ&E&jzhTka0#l#|0a?3sz5Cfta+o2+uKM5bMVd3ald z@&{p7@m(e*`+Ka9@B2PV;|S-hFV`-<-friu2^1(rn@*v%i?@s_YlIZz?U5SG3D_N0 z_2g4+Z+#na!%BB_ssoNm>zl`??yEh6(aHC@i9fEWczT@ORK89lk70+NlsCFVLXFU= zVega~EM^3}z71X!D;!R+Z8{T$b;^uqD1V;F*nWvG=Z2;gUp$wS;Ui{inDej}P5N@W z=$k2lu0c^ezhYYNv1@9uc(Rlu_J{&{e!|K5dXGMh?LE!Cp<4B(4Q@KPWIWhDx2XJN z5`O9KLio%tJ2bqz@B4)d`xCPxH@1b4$C@UAUbig+P~hFo0hq5AM9u7G*->DK*J1uL zi);PujVN$(Z68kl6FX2bb(SiHzAS1SV?m2)zGdi^0&y;Z0bIe@wCX97e#Js>Uss$w za{``fpl!sdx|6=`gN7rT?$|+leAKVc&3VEtE^^V90;N)kIF7%;@;@Z08QS_0_G_BeFxaFhGI6jLm5 zoJ*Qi<3zD`eO*Ulc8t0pvp{`4=sLnY-aQZ}=2rSt!21nRu9bS8>J}SpOa~iG(6_lPi zIU!5RO;Anb+@&B(N8-14s-9&lw|xl&e6L=3e!=MJ@mBJ?KEm;Isy7t&4#2$66v}FsGT5 zmtV1c(3d&|#WQ2dMLlE$-fr22`2a1Grko_I{PBs0VBTq>&`HO*O1&Vnt>iV+g9Vrb zi*+j=Wa@wbrhNXE)`VU)$`*9(K|N#*oHjY+C2m$e#TbV57e^~&1^sz)(NgadHT&e9Qa?@tm_=0G zahh~QHuay65mr*8PlQ`?H?jzLI%$OOXhq#FyA$}FOQkh*SeR92{C>HcgZnY1?r4ld z#HtFf^(cZ{!ml4&#HWP;H~no&jtd3FdUtFD<5%M=Hb-)uSMj~y#~E~0Vt!9z*eB)V zt!gxB9EFykmZn9V%-hANb}2{QLhXO~Q7h*oIXqTA%y%NZLd`IXpUi&o1&Y%{+@Wmc zw5%K_qmC%gTTLs<-#6>Tj(spz$qAQiiJ*Q)FJF#+=&Y~b4Qo|muqSV&7JhCfPbMsu=C2JsFrXQO%DkdG$#LzI9QYr^1+ewM_s*WHfc zkM9FBTg_{nYvjl^deO?zt^7@;KyKFp%DUH;0u>bsjF`%pglOR{3VU53R`|%cj1Tg&(Jc;Zze~c zj}C2ozte6jQjU_yV%mXV!KG}Ceam13v?T2(?tt^JnYB!t_}>O5H1OBmBAE?BE;fx; zAWL=$F@~9bPV(DWs5+F$^K?)>UcSs@88Az9iEbiiu$Rf>q3BjqNZcTNuf^U@vcIpS z|M^M{#41{JyH=t-&c3VSS{Os_yq;z9D9Wl)FCvbs8QYB;H=d7Q<;kL{{mCB&8awov z!jD~Bs7DY;*3s%-+mQnX*q7*;mZ~Mkz;+_@ucMUHAyw(VhG9RoVLJ zBLzC1l*|`p*EUkGX$GkkQpW1aC&Q(tl3vjbmEO%|YdPH8l`_Knqo{k{?DukHTR~j& zKJy~Ge7-bug8F{`!hjwn7jtYjz|uNY{CQnv`loNBY8_*S@eJ3c>DQu>bmu0zf>@s7 z^whd#j9}?)b5*_^BRO^e#f1c<**Vt9*EQ5!R*nYTNEqZ#>?yZtZIe}J>fSzB{EqbW zvRH+sf?5nl$bIuU+MO=|It+I>nPA-!#6 zrsX0|D|QGI;f}~q&ZnPEgObdWs2Lo=Vo{5?^X~I_Qrf?#!(~MJ$!9VNTIt;Gyy!Wv ze=LBoMOOZL-8{wdD+Bzgl4jb>_vwcNjK37t&LOa+nl>bzp&qXi$^qlT(9nX4Rojbag@Xay@5`kI{8>Z*@!3 zoti~iV12k6L8xmcQ+D|JcA;^;02yq)H68CLPb<+u@O@b5Lc*yM=7`mtN*m*0^+SBS zbwsDW5x-jIO zZn#`*mR#Mpuw3A};Js;KWVVwA&^_lIqH!)@8hQ0au=BX<8S=PIdc%l=E`DIUB>cX<8yb=*tQ9-@XI`FlpRQ>Pzy z?$jkjJzQ6u8GKh7q`dCdy_BrIu|@SAc9#*IG+Gzd%(8ht_nrS*dO?fQw(JPID@1$J zPd>j*D#)cYtxi~I>WgtB_^w|(BZ%&hs|3s>5#RB(K-jF?gNU7B!bSlY)J{z`M@VX- z;YYR<-!`SF^0~cu9EzPlIR1yox!e{)It;p-fdLrq`?W!v&Y63l8Ub8Xn;66Zrdncv z13!$39OxBj-67tFr6VL25X=;oIG{T0XsTsn$WO(qW4{PFx5ZGvg;2iOWe2{~QBw@S zH+>1Q>BlvKI7)USl}veK{(%QxVC(VTw@0Lj*Y}7e4Yl{-mmYjv zoIj~4^FQC(!YHq9hu}qWAip?LP=@+mr2}=VyS;^eZ}rQL)UbQsj2b z{mM&T*Y>6s^bnk+Q}1yzXCw21>1B2#>$T>%AVrtMvuQ7RBgTbxon=VtJ?_Thc>R4|Qw)*4- z>-O_q#P^Ps52Gh#!E!iC08l#i2Op`fztT(pkv{*g^rJuNfka|mJ-VWPl;UhIhbq=s`J#7a;QM!G zYg4(P-5yk?+dj@(%zpuA#=Hpfv_zgAC_0wxGUcaOE6df_S19E;4(1Lbo3B`1k~}X~ ztaTBbw<-@T<+fO`sYnzm&_{63^P`^s;uK26q;}n|Ur!i)s;bCblcJ7y+mCOFcC2<9 zQsBnU7`vnrQO%UUnW@&mX#N!GNxK~kk*&x)Me5nA+Etoj6JpA5IsaTUa1a*gx|fnm za$nz{Cc?x?gZ7bq=^DjleoOHaB?%KO4N4!-jZZ3&KqF&nM7rqw%pm!FgLrdB>{_Cr zQaqBC-!AzV&g)O@nC+O3u-qyQJeXjfTVD@c>od{U1=z_K(%S4vacqcQ7Xa4x^XtsPL=vZX~Qj5 z(oN|KOR%^r@Ou-F)Q})TH&vj&ww1LRe;8S$g_r-i!KY~=q}c9q%eENr0=4pzx|s!y zC-R)R!NX%3h^y6^k_f+xyK7Y_hULuF8H7j#ItYXq`j18POgZ61RG+w8;7Y%^SEvad z|CW%K6yfvo?RlQ;1ZEuql(d*Z#I#xRDV^D=sWq>%wMZrW? zg_^&3duIJ;iS50L4L;@?-<&`@+S+{{RZVVz5-n@6&ub`n z|T_aKFxm^f^h92dybk5$(WB8t^JU1>Ztp5^A{431uy79vev3!cMvDpUR6R zMXsXM%d&@sG)xpku6PB#tE0(s=@p?m34pSaB0*#%gnEqsGKWCeBq!M$jUzZ2WoL(` zm~x?B;RzQ^jRn3&`~R#a%_vm%xqINr=&yjtjJE$v^H{?DgsXG70L;YMDGED;*fB6d zJ>Dsu)%HvmX6Kwq?{<`1qBj{Wu6JKAoDfoBw^!R6KPZ;zX(JR~F)>0l0~M7&sJ;B8 zBe3jFpm{aUC3zdGcynlbx_YejMKqfC=|ZHWA;ORPr0+o9hCHkh_&^;}Gks5qSeQ=x z#MuZJv#w)suU_3nn%tKwuBIj$1nJHi3QPmf>|Xpp381m$yqxS$tVLG%mJo01A;!tu z#-L1+95AXpe7$1WCs>JYz3V6KFH4BZ>o*2T1~aJs6B^Cn7lJ|Fs0}sSNdQ=ziGKsE z)O}i8YytlE(V!uo@UtE_a=}X2y>@--Zr_OjHl#2xOH-Bb8s50gKxmGbD;vmw*NF2db;3PhT4viv`Vb5V9y4l2@c_D-|#0 z$^7xXBKXI5Ux=oxgU_ic>ji-;7s21YCC5OJpaW~I59^PB&>`pGAw|<>jI^fHh_UA3 zX)d|*|4?}#^+%-&aU)3O0PG)?P~df`#v^UNyjc!R#c^yA{H4KNo*_s58{Z*A{RvG- z7(+E>H8ej+n)AnL;lPdF-c7ptocp4lL;@4EEBV-M{k> zAuP(y?yXlc)aoVw@qIfTGjW}QTlA0(si|SALuQy&`Mexn*me1)t&}gL8&}nRw6d(U zo37G{N<4b8*=DHmiv}jWi*5oi{eo&1AfqnbgAV@P<>sR^a{k)u*&>>*GT&t}`-Pai zgF#KW$<#K~=_*x9K2j~?EzI&DSC}pO+HdX8@me-!`WVK$8Jfe?-IkeS-}jPmEf~uw zr)4r5)<^<*N`UPe2bl{7Hsvk!)SzGjkHwO5{Gh3=;l$V7OiupYitK zYLGX~3H|U7Rca-Y&4pYh#>B%QZxs7S&rbBiO39`_=UwqlQ4i-8?#DA5u4ur%ywZT} zX8sjtq?D0eglRURo(?nf-pw3N`yi+v=Cqiv{pWlK5?iR#afz4Nw3df`U=h$B(n0>O zcyhcc7i-#*Kn@Re@@1G4o(0>DJLR-igw@spoe@&BzbkMMxd zMI;kr>TiXv|6Acz=5@$a+*T!*r&6BiY3WDDF~?F}*sH<3AB>}O)rB9~_dQgH#QTu@ z$`@5(wQP)E#A~;*qT{v*|BTQ_k6Rl(4DTJnojJiuxH7sSsFtql40Fs+V@*f5heuJ9 z3f0ji^ZSnnmIaaK*7eLRB_%8RoSp%0&9rgIa&+zNQt?d<#-G`cgoZK=(LvO(U;fO#C)+j`k&+GnqINZ%08#UE{Z0LY5+efn|3Q7( zJqX_!mSeE#-S(-=5dOHTybs-OE}MbD-|aW4WWy^gpxgqK_?J^B?{}e&;d@B3FU^i@b%E10#az|3N-$D6{<-owBv= z_z&`aLzzcqjRypc7A4Fd{mwsNk5t;?n7a)0x4Qh>1RomN+Yzz|-`kJIKj+^*EbXRt z6+@L2J~L<{hyRKK)Flr4Ea!^St@5hR75K_^WmO$tx-}ofGFX&v&Vgwwoi@oT5W2Vx ztZ6iLp%~Psf9Jd{Y!@uEC$}jPO5RWp9vgILjP-}V6|0^1B1NS<0i(oNo@5X{X=)P3 zgK~Y^pzkNKqOu0=8L4Fblw~^$%eIu5fwHkEKftH{`a?zSlisF%_#)5%eM(0A6@e@r zCf^dvAhqoN8)^C?cskYhby47%b%hBO+|5mgTeK*L+~UiycnP0ny6HNG++1ie{PMKw z6u10bVM%#(d*=>E)vJ(P`ds4^mIMcq#N4=-nbvVveQ2?ZUokvKM_kVH>Txb4gy8EL zr8%lx0%y)a~%1W5Y3>CCsA`8zskxBm;iio)?I+CGma`(Xf!#<*~Y6) z|76c|k$g+STuX?lo}Y)^&3xhhA__fT^mr0;rc(d`=kkPNnPI_Mj;OEcey6ev-g_K! zp5@1-6ZrCTtLJ-VymA!=q7ri=995ku9QAA@%p1v*?Ej_9LFL2!w74roiR{%{sOrLkYmd{6fKvpjt^} z5=od#sd+@JZcRhtASO-V=vlgKxUylhTT`0CuoVGnNX+&fG3J*LozFBo!N$xDh62P+ zTw^+uwXiO-kbj0rs8N58Iml4(9cU0*=N~k8(JEN&kjp=4%=ULMQ^V{U%M+`Eh@~y% z-*8%OFY4XFH(_Ef#7KW1-Wjv*{9bHKGeQAv)u2V~1dD_0MMPyK=>)@}2*ddaeGAP@ z!@2j1Mc>ck!w&Rai(dBO6n4MKml|hh@99Y55aI<;HV7wN?jc~zW;zcZnf;&LoY_Jc@V>udjH5Fl*Eac8%MQD9fAydrfN5L^1JiaZ#dw z#Nh^Ah+SHbju~(B{;nlv9Uy81f|Ef1Il$I~4lvC?a0Y4D*MP>{?rrFz(=ozfM3xxR z&R%^?mMbZtXC3C`l%{qd__g}N1%z9OCpL4hTPcP<&6!)qG^~mIatEk*r{$pHox;J6 z`rEWZ{de(fb9DbvyxK0C?$oK}1eSj&L>NHaKOxwez^9(-g|sqMq0TLHr-Abd$rW}zt+RJg5;1qv(_^y6KGM$@l3lvu52 z+jn6%Pq*~lb@n1GBVL7`qivCQmqek3p64wOWjvElhm&pK8a&%_&hzHbeFl#~bd7y# zvg5n1co0+Qa)4*;L1yV0GUTx5L9-G~%jwO{m7-f15PK?CjX|(ZAmgjH(MT+J@alij z{u=ND;u?{v`_QXjL1uCW%>K({O@tK5L5K;?M245sW#cBv#7NS{p$4a& zL8`$uqxss(;USF5P6@?<1z0QP!IC67>a}=X1o!o8FSf#o?b)?;*DFWAkg((*qVAa* z*Q$)^mvMY=onxeKP!0SZq4&y8?8)YX*@XQ?MUh4-LV|B_YKX8F<#nBPSI&0S_U?in zo4zx2MxDRB^zJ0~YW>ev&E$CgR>onkY8ic56_ytHNB!(!%k)l)*?O*CeJ*T$=FCI0 zl^SWS*9W_t7NM1>>-)wSOT!uN@9G zI2hYPAa0x;f`?`n;4g^`EFlNWQaSncRBk6RN7x2*Va!+Cs+p4f@*>SyiD$ey`lw() z40;Q_t*tOZhL~SgQBJ!7tyiodP%dA%5XbdXtBTz{v92jVGL#6p@(4a_(WD}0QJhlf zGpg$DiF;U061#)5=+gnLAl4&l@y+@e#tLpOTTb^TU_5aN|FA?Xrz}|LhM=?tN3jfL zVOjMzyUUZ33;C2hJNcGX)|6Y#ddTsf6?D&)_^QpV_-g6)C)xl6AR+TZlOtw2ll#_7 zZb<-fe_=MiJqc!mBvs~Jh=iZCz1$)zWNH*l{Ed<>|9$p3luvlJroG|rrUL7Q?(VESXG#WI_%oX7#ffKMO%w);OW*S!!7r#(x9hx4Ai)9u795aM z1}*%z;J!bCFa8Lw#y@d!WqnjXvFY}L7FH$Jpnpgr9OgX-#tEu3B0Y?oY080NX`iYh=0M{=33s1!A@ia-ndbZsTl)^JaQqAG~MBVI)V z=3J2Ly0UGH+tu(3?z+rP>(^()r=R(Wv{w}3sUkq)?#(_W(JM>2n)XKF#MqH*2}vi z6av8Kv@XBB)^Sz8y`ceI1bYH+RLH(dp+1M5&B}i$&vPyUoh9bkOl0!{A8|-30~?8`ibu33Sf@(+oBojFAM_aQ@Q#Ba zj{liX3puj)@Op!dLO|sQf!EUsbn}43j4+6mLDUq0m5xtLlA>VDvoAV3Z|jO5Qz_#5 zl3e7rnTu6U_o-@I^h>elMQYKMq7t63Q+gg<)T`n}guEl?RunJ|lho&Qz14+>Gpf66 z(57Q!q(R8D8L`5EIjEO)ZHgX84lGjf@gfh#vqY}sN4t5}#rH_h6G+|TguZ=asTxM^ zVMyE*2fM&u&9-@O6i7v)6bhZj81HcMflL=KA?Og4byqx3Se;5DdX_EG_Rvdh(BPf1 zg*BYg$|Sn$(a9dWMVrgtYa`=O*LiHg}#t|90R&jFNFQnHl= zvXk085v(05unw$hOvx&CcAr~yt5c#l4Gniq__QFS;-;u0f|(s_PMzvk+=<+~FRIY# z6D-VzhKmK%Va@@cD<`4UsX*gp(pbJ?qf%Is<>Yuk*!g28Q|r*Ad}XAj7OduqyA315 z9UiXvyM(bB`Y+CsbzMU}rlpB-JQkKZwyaA3;qjMQZ#D}6hpAksZ9N-vYLvxq$>mBN zN_DE4@$gq$kIE052g#Zr+2|*3tH)(UkQ0;kpXSVAnzYJrY&F5?F>sSK)21tJFt6BL zyBOCLYn>`(NnFE{ToRL_UM@$?b5KTY3S=r}$+`{_GcwSbQcldwkZ@Bq)8rRLOw6)R z)|}#yJ5C$wgAYB}FLf9#%#J@4FQcc97;b0zhxL)Lb$l5v4t_8mQ9nYuPDfiIWgk`8K8R=Rc`fKvcMqf2dd@hK#rCX1Gm2 zHrY}=ScpAsj7Qtmp7dq1ld$;3uQfk*igMJknW`tBJSC_3>C(_oxVTP#;4?1LZ!{wH zsxALSsb0)Vf8EuKw49*WjAe1CnI`fZo&JP|zG3*xX0m#e4gWi+J<>J2`v=8A6Z`4+ zh6?~gV>3`A0Vv5Q9ztF!Y}R5nE+~tm_>VUA6YXloW>=M!%Osg2LkEbN~8}4$b+#l`AU9^J*zYK@-@QL+2f#yNz)_*f z#x|E)c!8IY``L-~Wjq%c(f})5#De3i(=AKE0A(_Yc{qxB!CYZbSa5WxswAZ(zP;9{ z0nm3E=#{z)RH|?cfU~I~K$Co_;*VoSB&=1VqYiVpp z-Un408#$^{5k*m)((R{iZuDt2TQO)~><@xmkS3c}S&DguCCYeoz4&x!szepc$VH(85Yk1UnJ=g^vm8Mp=u~k%z%7KKuhmb25GbRB zekg)(?g!?IG3SaQX5l}*WSu#kuV0E*xtI zr=7z#KU6KkV|{kbDanKIKH(J&))xuJZpOGrqFbIG%&0plp2Vj9mkLCbzf}bHUK7e! zD5+Olxl{!lD)1udrnQ74W4*a73tWXxz zK?5Rgo_~m>IDEsU0L5Ov{xX$3XpJgas92A~7KOR(MG8-gs$7aeTY8FZg+lvK@MtQ8 z-F+@k68w~-MPA4P`fuEPfb3vVtsqVe5+%aT#+e0wW*MpHAl+JszScIdE+$b}P5U|0C{R=^$0`zQgV79@a1-IygPm@Bp$chcZgrl7g z$4tCKXbQnR7M9l*F8s>}rj$QBVS`%%igmMSCR``>@L6e4C5CiL6raPoJc*bpLoq+! zi5AB}coS2QLW?1|kU=+PiJgM-Vm9VL4&Ep6NTIh}ao7l%BBcSxQ(SV$$`1Wg zxC`wcmoAClQT}`1zM)6J94{vrm{Sc57~X&H+t;vk{wis1Zf4^A_ZEI1y_5o}`qSq} ztfu23h3sT7(y^ET{fWKHw7UnPii&x?^y>KI&vY%IUHl?Be(0ky(xXAAz*Jh1 zkFjm+P9w;n4{yG2?jGIGK5ZLSTqpNiAKtkh4(!^1%L3JlIa|Kh=LUNK>aF$DyNKJp zU5^I+?)QV4{j-es$Mg56w-dLH*PNM&4ZW-9+p~_E8kF<%oIB9g{>`p6K>48z(8s+do#O-;+#%ozy3X*{} zb41AXy9-R9%+kLBK7G*``pi{sUt`E&g;wXdBpbHd_-HsG+?MIDh;iTH>G-d$e!H!JTuI%>8UT~R6)YQ|nEt9mNY#f2vqI~IH#&D)kwEjkv+ zyx8~%zsv|1;jsBW)~;C~!&Zzeymn;XZWxTI^)P2|ZShY}l|5G9{Jb`Pee`y0d%N2r zuD?&?ymlraxbPHS^xtEFN@+p8e{wQ9JZc_t!cf9?RZRj}*X<#9y6JT8aZ zjX0X16xa*zxnHtySn{gZA42TG@I(pOXZEvX!Oj4X_cO1R!5*pF0Ad3V@m*7>dQ*Q| zaHucNJEcEb1u&vgmw=2gGZ2{=WiJp`V@yHlolX6b9)HI@KCB+CWixc04vVST;Nf6b z)2?}jdnV(wq{ZS)&5VKjklFQtNXl;2Akw~y(WH$xMqnjVL`Ju@wlGB zFx=b+n?<@o5fPU{vktm)jB(>#`>lI53%=!{^_;D<a-9dP@%R6L6dx02f7l?rXFGu(@h8XMPjYmPc-0FqZhAFior0- z{?oy>k19V~2yHoG+5qNh^rTU&>;EC_EuiAqwr*kEf(LhZcMB5S8h3Yh2^QSl-QC^Y z-JRg>1WzD9UXyd~efQk|d*45LP(2v6YpyxxuBu*pSMOfpw!EjG|2G8QGE57|YdUTZ`QCe@e;xha$Zg676tB4S9i{Od{twE3Huz7J|Ct3Adkds} zYW_DcE}1!7P&_D$77)aMKp+_VKe+x)=^NM?J&GN$87#1w)!)r}?QB2nFo`z3<7|R) z!Oy?r{AYvz&|E9l2)U?5vIT603T*Z+4bjT6Lh>2$@$NSISI{Bxp%%qUjbuV6h_~0G z54`|=%ftit$T>Zl>dXv{e)1l|y?(=!ydbK1Sk73b;*pZ@F^0K40;)dHp`Nnm@C8WUm_8=loFeWdaHF?Wfxl%%!8} z>FY*TH#%Qd$JVb?hHB{M4&(6bY6AGZHUXFYa|D9O#qG62UBD+ME~Z-G|$lucu?jOV1Ne2W$5)7IjnFj`*Q>K}u~`T$$5eC}}SbCT(7?+-*Hyf{X;J zmM3%`cOC}DVkYD=Z05gi9r#W!d`V1Uzp{TgvdQrld0O~Blfv7!@%f5$d}F0*JLT(o z`%k%{ma5aSc{?p9;P`btonYE$Jw4j!D#rclhH(CM=Y_6XAiM+`g76#f1^V~zm?5%z z9$cGP3*6Ypk;eQvS!e)b{_HGc&+|oLIDOahz6*1R22zNlmuEAOQMnvwCx5S1;#kic zW2`_EB1XSPJw%HfjCou3LY=5s*Iy78C3dmJekE!Ma&n}6pNQRbB`wT|&c7k7sazqk z?(mfd-${^Wihm7hFyqg3s&(e$09&eoDz8B)_1^a5VIeHtu(GNkB2Wu( zt3(;x?+#e~jvU%0^jrh8_jNu>4d!>d)SU?AAWXJ0sarluUqUyjn>D}xQc$qau85d9 z*6e3@O@zZTF)F!Vh=*ZM^2_a5R-&)MVAVsyEQsiSX-d&$6D5x!@Jf?U^6^pSaGk;q z*Qx?@{IY$@H*6tjvJZ8|9Rn^)cL3MDO9B4l+>DpkeV#0LJ-NQ_{RFT zYkT)@ubZXqT|!YX#hEZ~ja{dajziCN3^?g7nkS3O9X;_K?W)+btfp;^U0{@uSplC+ z@f;_)J`KzKLJ<-QY<+-n7(>|uBVK}0aGr>+QDTOEaFYrUa5ZmT#>O?>zEfJy)e9Km zTj-E)82G+`cUSUd{7tH>uwy?tyF1YdYuc#iZhGa5yC6fCbvBlEtsf~#b^-gVxcRY+~ zm(GYNi_`UjWmZk}E~C2#*~^%hat4={#%wnB;FE}r$^i}yW`6FesZ*X7we zpE!?w8_6Y07O56zS4N;;N*Ak#zj2gyzmoF6jlQ!AGF%A1y5qD~J0JHf;pDbUm6Pq> ztupTP=k=<7PjW+|qhr2^sYhEw6#)_8e+(rz0*U{zV&GPt>Os2TW1QOURc+?>^#bi za6;Nm$y=-KF-t<3bBg@2SqC4oPPp;XgRBNgM;q*G&6668qq{PT(AU;LE)a(-@pz97 zgdJG|_(x60%Da(^+kNV{htyx>;lcw=A7TsQEocOgH*WU&b_E_oSlWAiE~9Q0atFK| zyTGo;=%hAHWj0C!Uc9(^pvdkKUL_8bXP9#2!wt;tGrwk(}Am z_XX`YUY{L)jE!u5A8Ex+`0*L}DE1K-qpaO7YU6J(L$ zMgnXlM`M{^e(;_Nc(wRfPkXUX=~2lc3z8%y88`LcOQA45>Rq)>lGvdYgTbn;6NtdS~JNnP?8wQ+wKvE zAorAk^8l&5YG|_*vnFYjnk8RCLZ(l?-4QKac4Fw5d1Y^g8nev#b^yA&1dB-yjQFsPo$+|PI(yQD!11w%(xmq!Mj_3mgcu8> zf=_1_U3$wYL&=)=p$F$_{LS^ZlGC_Ga~;W);u0j$%W+S(42rt)Z80z*%jXxTkl=#_ zYN(9MeMc=f%(GZP-S8B)@kXZCUIwWUKZTaERp82Dxy4atu|ieS5)bybLnM*Qm*V+p z>aWHI7v0}YyeHSod`eq9X+|_2v(1VZYoEb(KKyh^$MAg_9)9(oc-oN#%btu@ZSKXx zyYaELzeVXrtvXSQU`*<*1mmkq0>l+haI~4hBQJ_xaiSi>VSyQW6fCQrD^l! z7XVLV5=>yl#*}Y>et%9_jjGL z*F*zL9*c&ee9+{PjL9=D4|x)*P|tGv>;N78doRr-7R$o0C1^}<7?>bYsh|;2y~AC)Im?qHWM{*_ zHRTTMTfGHSQp-#>FG5U4OU%mYRYeuK$BNJ-RP}Z#o>q7I!0|2`%JuSzlTn16 zfG~^Q1mF|dV{prIVT)?77C$z1XA?yy`%~cxkD?}LCR>KbTu_T?QA;ql{t2G>x)wN- zCRA{Fi)xx2-+7e+*~gHUbO~{dRV1`2T%Jocd>&MnCO>! zSS77(HEiLCmVa@xTARR;8)Ud4smHe1GASXbA05!Ly6+qzA&15(_r8Z%R0i4*AB zg}+>kVCZD0?P8w<6+RYR-@@^oV_{P6Y8pRy(6Ealar)HRbYT*8oP?R<9c)~clI0;0 zj$~IQX;%lDA~!EQ>*4#BB+mV36j1xmjW9-i9n^85Od zQBsO4SIt$X$;X6VZegCcGwVJQ#h+DsY zr40FStP`5TBF_(}!0KdPszzLlojB8d`kkmd`f@m6o5PJ)NuV}FY_VZ*rs#c=w+5T9 z5rHmFo%fiatd+-pZ?l&_4tZ21mNXQ7DpG#4dNaEEe5oaL@<5Chb4oyT71%FvC-nT? zkXlQS&U11#KeJb-L%CQe+Yq!C9|X6TV!OX6$t(K|aO#q{ltpxD#whGUDO}E5*J-B% z1(AZdSTauU75ilK_|iU;#X4=_NJAAk?OM>-{R?j3F_R3Zie z5oTo?L|d3e*r#e=9bc)MBDe%Ffxs+&cEUMiQuXbe>ID(B6&Q61fuWHOHx-6JBNs&> z8PyGr&ks&SGkH2~hlgPxpbAgd`iV?ZtMjq8q+G`$v^TTfRTFa9wVZ)OWOfftY)N-g zKM)3)1O&g7}I%-@DdREpCOS!{}u9l)eIQY<>F6Bp2y(D zI1LF8gsG3(~=O!4Y z{`u2qh~Yq(pAlUXllF1TCPyt2zfc>r3f;?){aQi$h5{BqK10ButmeVm&tPrRs$Qn6 z;E*7*<~gm+(=grE*ubDT8^hfN!Ca*Er}ojmdqC%HJPYc%5)TN10fC?DMOKm<;K~$9 zh^VUcI6I7Xr4#{yu*~C*a>Sw)+%gRXA!;E!XcvYc-9qkzAqM*>457=EF(YlM8UyF; zFG9oYw_Jo82HVJ(ASRRR-lhrB4<*u&c!Mn%3PKFV%LaOdUEn!XuG27Xg#wc{+h%Qn zj`g&{5eUP>62xtVqRtw`9H5oj2ZN&iGMWqiSWTV}0D>2kHccbND8++hHGlAj~D4iAsFz)`a|xL*F78L9C_F}8`-*B*}6I<#zTUnVM_0IuJ!zQ z2*2y4k>aAGGN~kvL|(i^E>e%Skc2JZCMnamrL;W}y^d%f)sIA?_sOi%Xr2mxjw;F; zt2!FY(S6)^KANd{>8s$JuONhO=<6(WEQ0FM9m||ltudB2tWc|`Jlven4D>N9C+l8JIBwQ8+X`lu*U#LY-jh>Xld^8FRi3X3nQoPUG5?fL za5dYVx`8V>kF~T%4`!cS-Cl>?Uj2A;Vrs`!(%afD#ZWal1LuDUTiNbj`3}5-X*90u z#djYvR)9a=>zuCY?!6c&VEq=bs zL{~r*RL|{oZNePxCm^7&)i~gmmXoSXR&Oj*`70uN0Lvkd^2HcBXmaEKL(duF;RoHm zf9kRG!Ima%MmRqw(>!^&Gr1{{*h+cW+dcTe{WMUIKrN?c`9*Qsbw{W_fb4;&?Z#7> zUqhM-wEqK0xki-&cojzQ!Xh`{#J)k*6k6Qi#%*z~PN?^0DRh6U~R!^w#n!YvAYTJh4Ss-!Y!s z`XiWo3DE0<%uN|(h|`7G8l0ZaK?-?@cTeywLQRiCrIDx3K%rO==HRKAq}cXp<*wwD zDMQSGBJ%%W{4L^4P?+sq1d!GLE+T4Bq(Qn%_b&m=xv+Eaw4DT|>jf-l$Ws?V)bF%h z8GP`4l_|;ax=0b`Ch;7AImV}6!D8ZcP)M;b)9zGrSL!c7KJW3N*oe~&f>sK}B1^hQ z9?4(8CW+I-_R#XNvHud|`2Q4RuEzGuqN##9ElpQQk%IM?rY7&1Izc`6HDL$8J9>6#txEp z7HLes*KC_cvm*f`^LKKmL6ds?7msNJeP<3!;W?!Urh~Zj!Ul?tb-{I<_#u^M_BdMs z=$>ok3d(4Dx9h^fSKNYv@L-aJnnV@u&ow(O_=MD+7b{C1zu&f^roMaU8j^+G zE3*kP)I>}{^T1m%hkoR>wZU8Q%e+n;LdmRK)f9sXCEaiw>)g(u53&WFK{!}#CPU=8 zotc*bxBj;rU~KZbqQwK7Gs#h8RE)l}@P`itRCvr!c~-QCOFtye5?k6srLu1omE}PX z>9x&q4(W|+r|D@4Ko1YC2@^3B-&Newu;Blt!W}fwRM$FmKvMbT?e<09Rq<~fO1Z~C z9dAzm((yL7QO`p1zmRar*U0o4dU%#kR@D9a$BK`s?^Zl2{tM!<6llfA|HX=7gM*-< z1E}MW`h;6cFEaP>iJLW?p%u$+1NfFt-XN}3v9EL)mb2-TmfTX2jW#xI5FI_!o8Qs& zCf8osx9b2L5=ScW<~-Rre0HFgmH>lS_Z{qNsQ_yQYooE}fbSs|x;zJ?b3W_m%?Bc63KGmPMQf+jDu|aK-6!1t~B%=r&s*NNdi8UOf zz(j#!P&8?lLz6z&`K!9>RHERryen!1sUR${ZB{Q(9EDTra-Jn#X6o*#D}Gcf8A`_p z1~o*04%9@o;-VSkPDI}$S{AG%E(1{BjJ04leK#IsmpT`!+!Zl*pT@}}(N&!tua00h z6ovu@kHXM@Fj}0#uu_&{GAvI)XmeQA98n=yLpF#p3#6g5X4 zO;}M)CG#9hu}LLayMT&r5C;&L9L{cdNLiJeq=RWS7z}TSFo;9ndp1&TA9;w?>yyf_R$>N|{y>;t+QdRSlsv)9&W3$!CIL*x8MVR-oRyp>%=K2!A1e4qlnr6I&L)#tko0+L4fFDI!-{2Oix?F{xV_emv1q zp^j1%9hMGGQB)%$H~hIm(wD~cT38Gn{RpcxKTerB(riC%=2M?_ZutBCi$--tcuYw& z+=D7Nd~HIa)Np6|I3a#g+V+8jN*Fz9a!g*7JOEW$VJsU>g{+oJ0^Nk(pXO}F1fe{& z4+&dEIn^jPTugDu9V@tj`v*jW9}VzM;8L!h74=CDow~j*fX0-ufSL>QJyYwsP+{~} zgw$4^luRmAVy043k{J3YY9Z`DQHcnMLz=eLW_eL*Mx!*?I@9eJ}O{MHFxc}}973pc1B z^fegT%70A|ot;0PN2PLFB&8%AE$u`Qy&+}pz%BzSz+sH!L=8w8I2SxAY2pT?oRBa6 zUzAC}{z;iDb;i_McPL$-LtZp0hD;8fo8K(&XSm5c535MDp%FKOIALZw24&-m%|xx* z+cJ46jnBSfr*fma5bF36AC?)krDLSR0p#2Pp_v^*$=QKW)F;l>puNI%1ua2a z3|le<)!wxH2m_2+9Ept$y~69(AWUR5&S9(Sw>@g#lCRg3NWX6!LDlf3M_p7ACZxcw zK3?P`p=r;7fD+*n3P>x`(4Mfoq@Ci8PdX!85-lcDE=ExfG{<_AZ%;fZ^lmRO^R%u0Q&g9^lj;e6(!f#LitcwYA%VHavAt_BTX zq#&Mi(k99FVoX4aX3IXo!Tl*X=X(WsLy*EnRN%l}ID*Nrx&&9O{rFufq8NCMv4R6! zq!7tcmEgHznhoT)6iH*+*-q^(O#|?J3(F^X!TwVbRn3p&nQo{-3Zt8PvGzo}+QD1) zBY3EYv0$(z-*+7PiQs=e`9h*be{%1WB*(L5VPM?7zWWMhQ}^^IX583j-sAxyEHo;> zeSQ=;&>*M2-vBd;9i^q2ZCA!ocvl(>2UJR?3{(n`=Le6q=ZT}=l7KZslat!gGZE$4haM=1XAL5o2QE*<`wBX0LPHvdR#mwO0sVqYwZjinE3(QeQxEA=1ID1 zudMDsMO!J@?-!_awl4?OogxXDq@~;mW`vw#FQSO{M%O5zd9{ks(V zx2T8$+iK9J9|~4+VM7XT(}Xpi;879DGH;Ek-zRd{BF0O5vB(^EVHz2dK8WXjP1EKA zo0>T6N8un!{}3_*LY4_oR%2D@59?ozDcN|11e!H%a)R(>l6V({I@aC;G20#kSixWh znl9GCD(V=dSSPm=>G!If3&VVNKJQM^tKwaEDY>oc!gzd265Fq#a%zF(k` z+@^&hY)Ho6aY0h2VhoST@uKm#(8}zJ(-tnNI5ro!Z%??V_$a)Ln-GOQD0+nCB4AGm z&jxNN(wc}k*Bx?#y%x~2x2l2$kJIfMWpY?rOkC!OL}1PsH(e= zsN2Igur5QCRXMRHBOlwyY4Fgd)&)qDU%!?bukd7_pruObdR9(DC=b!utWFA?6NW>KDoLS&y@ zHvgXipf@2@h?}vm#P}7Ze0xYcW}yO&GSx=`bG=5twh;wl%I8Cw%usxKGn>q&N#1;a z1|V>WzJT69FEEGy1V(w=SiQ04GfMex+_o7i01PDXS0KKySG~T(@f|i5|5WVU1 zh@tp^6wMNT{xD!a%%DB!*a7^%8pVgn$h&NWkk9X@Fb9|K`;qUhXN!IcV}&G`_iLAa z8vY#h6Z|Lk9uj>*1@JM5RJf1(3tzbuX@4e=zSD9x_n&wiJ817-$c#|!A?2cdBgPx- zW5TlsdiEbuNd0~e!2IQy;7eY`4K!u?&{Lw@aS+dM6^Oqa!xF0Q)aS@)5MaQ+xhtiK zf^ovQfu7XxJfeFiw(6_&E{O@h04Q7Wq~#FyYMbmmi0OILd$AHBl*MM6r_a-2dST6a%TrJue8>7S5 zEi=O;V8ACxqgn5*ZU&*)G^v$5ews(GDGi?elA<{N-ov`IEe^8RoQNfmlmZIR3cn$o zd4}NEb)%d1e5_{jwaMsx4Zf(2c>@w0C@31%H^mQ@2)j&=jtaSg{``<7ekz~?rFyl! zOqN(;8a+Sn6}M`K1^9bnzqruvPz@+F4=OzFjWOw~RR&kUt6^8y)7e*UhTzXceSP#y zu}{X{U$rn>dl0`#%z}Wpa-7*Xn6U1?XrDYwIKMVG?I1qKZAV& zlyINV^;-llSO+akD#>I1O=m4^a}_^&^}CmQWfm5|DJ1Ji;X-zV)tjl;;;MRK0}5k@ z?TZD`F55b5Y&gJ4GVczzBrSK8`&|lx&%&evB;vn;vii*TVx(0exTanm(>HeqGoW7d zfg*KE+7Re~X!C;o7R_cv=vhbcXPKM;Rv{Ar*OYyFhD*A;R7x+97<@?^Bkzs#MHI9N zEm-D}H}_QB`3&@hI@Cva`}B@;wiZ7~t|=WH39hL}_`=c!FLh{vE_@mC57g^s{Cdt` zx}`Rari-^Zri~b`j~8?ulwwDf_0k{#H}Q)>jT$8Ys)H#*nGLTylPV`?W~X_j7TrGB zCES|ILUG0D2iGsG;=F7BAl(cLe~thrdLS$QV3fyr|OO_PvPUioCmIs2P8}96CDOGBEwF^0IkR zMH7uX8#fen2(0hLQjYHr`lKWY_t5QFrF23@aw$zkPBJA-dzz+-It-WuP(n2Y+NlcD z`)L~HXzopRJ*8&NVS0pFAku9kYGBRx^ZW2`2UL+Afi$P9CGo zu&xzkOagDxVjD3KhlB8kg@v8kX^x*2Oc2K-y{j&NUfz^swh`TM5Lxr0f-ol`Zo6uH)+XCE49&kXk zGX6LZCFo2`IY*TWaRDJh7i<#Xh&tSG6Zz^+bsm?SnVOfGxQIok1fY^a_zWz}VV>!z zNW~gUilA%jo}vJNOZx3t)e*F8lK3(1ksP==%FDc$;l>_H2*u|gT^aIoB&p1_XOw!B z*P^1-Q2>a|xgB6^w^UPwLLMGCep5ayWGW2$`sURtdRT}sDa0KYpv?;j{cgn}**z)e zP8pwhj3WyY@E-qLf@B;vN=#l+u}+3Gx3m%_D%U>G0mm;Cm#!KmlnR*z#}D`r2DrJK zh4Cmx;ZneB2)cdgNSuWUWCyzv9V0-6j>@IQ@#Fjg-c#vTL&1X>wevEo$>!f5i}Cn$ zw~N8<&%p#8C5Y%)WzA>n@Jy0)13bUt=RbPa+OuBms$GTNbRaT)< zoGG8U66mPdI?HufD6dH>j`Ol{%aAljs&~n<@>~i`7sZf(=^~2<3>(s6q29P8+OYTJ z*2-N|Zf+(FE#*c;{HH~XaY?nrk7gG$!xu2v4KR3#2@@7dNeO>*;$Zb?^yQ|abd0s4 zED-+yGM7C!fHV-A#TqqKYb_5jEwD$cgJf7H72;+V=BB2u)&x>oR1f-#l86W%vKm0d z85{dhr0^>&aN|xz`Kk!mqk1IaP#fzB1D+-7+`GDo7kSO{fcE@Mh__L~TG&qws6_u{ zfsvE|bmmax-_AIqLg!)DI_1@4B_oVW;!T>dHaqrvkWo?EP*Vz2x&FdwJFpLH7m1h6 zgbNE)CGnfElq^#+S`|s^;Bkh(5iE}5by~~##QJr`%QpLqhFdV+VYg(ynit4rx9O?; z-Ev&B5YvtWjk_p?VvGM)DVa*pjKUM(C-4zTTUM(wIjxH~yZ6tSAAZ_z(253mnL+Ri z($p1L{>c~&5cHQuD%{9Qf4y|Xgk;!}-ydPdC&o1^E-;0P-NgQmOD8XJY09rZNX(Z< z8@1T|9J|1eaRtf^`RBD{f_9(`&K5*p;^` z2q@6tgI@zfy!%7IeW&3dkp!0SZvqsDP~7O)V-9Rto?xPKGGrw|W}|Tn8S}zKB}64s zVnP6yz=wT%#dyh(raW~afVhEnyom3U#8mu3yK;wyqg0$3=0T%9@u&siUABK_cpJ9S z7bc@I@Y8v|Vuza3+`m6FP;<3Ph5wYZg7i1&A% z6u0!veEZtrQAu1BBE8sF`hg+6CpI>so+ABfW1144E7yjllgBA5w+!Rq* z2QQlynJxsJ79~n%_2PcO^yhpG;*_GCt z-SbmKe`ZJ;7}t7<+4)gHBPu7l6HVgK)>3*&fEc2WL84M-?X_8=Vg>rBk!^%{bn~%* z#$-{zrRvHJZIXnz8#}3j-ZIG{~aW?l!k3UGncc~0h-1PrL9k&0wI$`AhtIir8sE!M! z%lGvR{oi252hUD%&Lw{V*pT;w*89~3*GIlPeRtq@Bb>3Ss);$*8>g$at!+) zMdh4KoSiLf&Hk*jYEs>F{KkdWy>#sGeM(llB}-uq{E+~V`mZ21_nh(Y zd2-vN>)~U`rm2?~=(kVPJ>5=&BXW$H2(GyZNrwDzjQ(>VBGj}r9CvdoCDtznY)r|a z;Y`%}{5-zcU)$d<_xaiN=`GVhJ&-9554~EORErYAs9So&+G61#{H@Bk>wcDTegxb* zRSg#%gsW@Hi(ML^LJF~5Y>YnDE|XkpM{?6Qu{qjgNz$xXX@35(Pk+ztpp{TWXNB0$ zfkKIcbwm`jrfAa1`KH%J-1-1;{f=I@KY4yRuoLO{Ls6{;esoK#gUkJ~_an&@Ory2Knce}o z3Y#m#iubGVy^O}!x?n`w2Qv~8B?12Mq33B&IsWXJ$;{=d%2s9HMS>EZD*7l!Rw8KY zS>CQirOs6Xb~v)9it+34zLEB^0s0Tf;vvSI9pGRY12num;lirpPnT}dSfb)D&Wxcr zId^XdBr|f%x>^z9$@qheBMvOnUAj(r`juLK5i|*Krz5yo)e&{hCc>-Q@&Yo&@^b9T zuH8Ue8F#S8&ie!Q9X?&A zRB1Zbgjt^MtMqeS(UsLAC3?1%MQmunZrF><)0fZiZr%e|{qi?S^q9gEN(^j@VGjPZ zx(bCJT*Vb0^ZJQ|y)EGCY{v7YG6-Fv+{CL6_E=bqQwx`eH9`-)yJAYbE{uoHvbJ<6 z9Z9j>P@#kOzJ7Ef`o36~-sDWM7N2>}S}YSFb}-4r@MC3u1P(AWoEOXR7{ zJ3t1z=dY;hfy{c3^E{H|pRd=$t!ZIChkIMVc?zF9aK`83!+iP(g@6c|U1{T@M__7+ zF|6+F9#RleB1SMIgbFG76Rt(*ifgS`aZc9(2V&FrxyO8E`@c$1ooF5^fdETTH3R?N z3m*R|LG{JNQ0YG|_^8=F%K;{MkXg^}{)2d>ed9>x&+#l+_#KHt%}DlmjwtR4=7SQ$cfzyjEPU$?Hi$S;=Ke{ zFdspKO{1biC*AVsNg}pJ7XYK{gq_VIaGt|}&RgC*YGVB+$nMEk96qbH_oIsg0s?dq zF^1LK@w&||r=QQtrIWAX{c!PkpEEz3MMKN$=>?#sI8v5>hyFv2e)bQoA)pj ziByqtBr|5XV1bH$_ zbYyxd=xSx(G|gX@HjPa52164oiMzi?Lw_{xN z?s<3iV5OsDTB@BchrQY+nYP(Or>DE?3j;{!H+Ll?jC#KnFgYF<;w{`bX)xOvKhEb2 z86yqEZp9h681*9v&VsC%M8W=sK>pOi+`*MkVWA>)UKABNKbl2pUQ1`5Wh*(0Xg=Bl z_s#IliTQU^YmeS!PY%DW41Czj%q<0~WLV`mE|WWN?54$SvOu%$jEIzNhgtv=ctX?h`BcQej$25v)SyL$xosxAUTsrjn z8f?}Mz+E&C)K&?8xR`%Ux5aNpJki6VUJIvEa6B54{YDNwLh{7t)uX3)y>uQz0QxJ` zLFV;Q^H9+pfoQuJ@p0s`$ur<>Xc=b*>=}`4QT(!rde3U5MyD071_sj|Mxu45rnmVJ z4n>E9NC7W5I^lAmg1Uq8v9R5|WCOa^AQJi?#}Fh?9%bNM8K`mVm{JOsEyEZ!mr_bL#Fm zQQdbP9y;IVE1sZ+Vf1qM*QfpUl$pK?aYo%w&xcFWes!Z=W+}s1@4E>|RRUbY34O zF_IkIdgy^;7@;_ySGfw(l87a_F8gu=*0xFpyXt4(BVTDt6X=m3c!a~SQFu-wn`A>$ z02dt>10nC^jFd<60v^f!+u9&Q0U!>>*P9FOP)7{yMm2eov6>K_jWNz3EY)zb{B<_3 z(0)L+u}0Xq{j*{#EJ-@1ZEu*bZk_5ZspO~))y8L0*OJL)ypbUIVrCMwd%Qt+;-3r| zmNc93O%6iFHgRPo!l}KUL9y$x^JK;eS1vjykV75@+p_-rd!8&xM61R5>ip%$wI0dQ zL2rAZ?J;rc^`AEfj8^a>ElvC3oX{1zf@Q{F@&{eZiA_B+&c3V)sP^0$cSx^WC%poi z<5sr$Uwe5rgBuMD>PvpDe->=7aG`d(4w+lz*d5#!WAU5u{N^sl``yB&t1pnoXd=s^E$4a86N@P#tyv`qu4R`r7gM7i2qIrLv?^h)pBPhQcIlMyl5?|+E%5Ta=ytOD(2*Z+-h>_Y)^*H!>sdtJJRoE|+^?Z;fmn=ao z+kj(1*?@|AP|73=`NWqw;~1&tm`Q-rJ}We$ky7hjbYK(0;H0lv8R16UiOS`|us-FCBe-~62A1?0$&INM(?PWdI^ zRo0rxR*#w0ALpSWBVp$1R4kS>7d4Z9s6?EMA@7>AeQstF zb2p@Ea$z%~>2M}NUU$g?XCnL93|{1Nroh9KIsvZX^44qYS2n|5H zc3A?OhbFgv+pb70x#hxqShY@&37Y)&S%Zox)hzT81-sO6OWC&Gm)8!k)?Tse1jfN$ zxw5?5`n#tKb$R=+OkOF^J3eH`V@`#}0a;6c-bQY3GDp79L#9Oq7gF@9hu{dDN;{YT zz#Wb?gNU}Eo2LfpBzlq;Sx?2ck^)n!VV(d9u_#JYqiS)>GUCT~5=;5vll+FKWD*oB z?jPIMm05u#w4qJG#EbAxUppm~jEcQcbOBw16B6vPPbR56pa_Igu$*%+0ExY0L%vwy zu~AyVHgVPTTOe1pe@vWr9GV~P6JS!OF6?q%$d zT|sPCwG^Xh4d=AOG8$9FZ8AoEN~ko_Xk#iec!DfZL&o4{y*9a&#yPN@WVNFOa--`& zFB-&@Ym1Aa>zAA{-J<W=jxk)XH99|`|Cx(r`|_-m06*}cfZ6Lu;JcBF zle3+Tx{WoXg|msxpO3w&$U3-wCNz*A-lAjiW5qn7XbXzSlqh*{)soNOpyE5@3k`p7 zh4$>YeX$=ovXOlQBV^+Nw1`SN*~58WiUA0J+#LztAqSlY2|;I8BbzIkiEFsDxdj?J=#|NDoNjSo^q zs}M!ZTxoH6lJANAy#vRY*{Y9i5>c~5Bdr+I8EE12Rl%n|%Qj>4n=la}66`jn61%D~ zdSp74RHEdGKyGygqimP@D?_u{jP|$rryk-CN+moo(mMm|LM#H&*OgbWe|Bh7hm7nlP_Q9TIMzReze|>P zw6k~m)2msrb+!RaXrf=b`)~Kgm~$b_(LyCasI8WybnxAL$*oD(MWV{zJY{*JLkC1RVyKXy-R4qU; zAd=k@9Hvd(oNRQOO*WHC*m8P69S-Q?j%5i<^*V1yV9;zbpe7nQU{O@+bV_@V!jgW+ z0In)^d{NX8l}a~hJ;xG=VZcw+1`(7-I4U<^8VY8loN`JABwPRsHoGk ztv-SlzjxnaW`3cp&qJcp)Ra)E^L(ScS^XxF7HQ2J#TnXvpS-7jomg{VGg&sJMvF)4 zIWsixioav57PiAIr8LAEWDTuUkz4S>!U4B`JMWSyziFiE&{-2o8Ctdz{sFG29o;Gj zxn})9%z;9F50XNifK5$)?qYaZwN|0eL1`(EnN+3MTwF43^4#(6b3~psUA72pFcIQr)=Us>R?DX>y zk)y=rtcD@AkyYXpJ4t5Q6x;VecP1GG4Q_~Geqpu6GH0NKirfN1v z&(g>J{P2zV)=@$}tpJmPDr0(qOjZIr)1x;{?ki_ZY!;$EdtyWx1&whU{4L$mXHrdB z28Bp!GW5O=&k95Qe(RQRHNX|P=Hz#$2N|PqiofWFS;VUh%FY96hlEbJc((aX4U5TV zMMTv%ZHTna-|XCl(z0*X*KXI`@{bvZpeX9hqK2}60l1vCe+x%k{%SHjxBp?-K~Z-c zH55(YhYQ~&DQ-wPb1PV$)U%_UQr#`-wsPMOYt=Qod)0L63BwFSxf04$*`w;7 zF>btaKLA)xL@b_7!C1?3>d=+Lf!S`5!xxJEjibxS47vO@uWwNf-{oeFFg|Th@!U4) zaQ=enhN95xI;wJjI#OUeKM_p#`m~MRanqz?_5xFlC{rCArIW>-(ED}r*DAW6o0``) z{#Tyk@@UuJ-5+Gd;Bj$x5urilb+v!E>D)Ls-R=tT=+LnyWWCvX>|3|h)aDwQ=~rW8 zEcWuTUQ|OpUX47W9If7Gqo*#uIt*0a*xnV(a1fw66=TG zVYN7q`QyxUzR!8TzUO?O=leaM_viCG=ZkSXqxI4tYCv%#kGUbRcg4zY=|k6W0YIcI z0EmMt7PxWu)-nY;FK~W(JGpzF#Q31lGe3Lyz^xF-DuSMp*DI0lR1rK4Rho4LswOAc zb=?Oars@``(tV>Zq?p086`TTl(l6ho{0)4GITgI|6mbok<7?4HGQ9eu@lQM=0tkuc z$1w9crw|St^KTgid=`-uhxTd4z*=q2BE!GKfH3Br|5v_4W9PyF0-w4d2P)`?&wtdm zd6&|B^ouV}i|Jy4@$!m>VZejkO|UipS+BEArDw&3cLFL2B<+@H?F?IfaRX^FVgzQm z(szPa9U*Lfs&tJmmOa}@dxLcPp)EGdn;Vi6V$HUHBBe1$uDKrs!Cfd9s78$EKU^db;-X|e(>UJ zeHKaNabh#;C;TtXf0S#HJ0hAB1UPwrIE-Y7M7BAyE2fgTGz5>~tKY`}Hk_aN-R89d zjX4In`wbA_R;Y1!)UQT&6N?3DSFYT!{v6_E5%6q%0lger%adF4zZa1tqx#&YV(~cja$@ooIcBK5u#!>) z>rmxm9Ht5noSB1r1whE)A8I>r2tz*v-+TVy@jWQN2cq4 z&NpefO8N<*qLs!aPtP%v`%P)h!fkVsvy<;V3M;{lukvmb8ecV(j(puez469VGn#c^ zRi~iqskpj=J4GjYM<-jAlExn0A=R1$57Gt$K1p4ZJzkhRl|!30th_!k ztkAySeCTDH>YDnR0rZs_}}&&v_}%RP#3Jc&r%-&D}YB z4}aDHtNcz+VbQojL5(wWRe*Yf2VOQRO6->>KF;E^g;8(I*>jF(kNy^G_Eam^sTLqt zuiz%>SOKcpqx`P;Ao~eD_FtGHiR%o>M0+M_-kg0Jc6QactaP~s5D@RSJaUz&K2X;) z5Y*vvPI&Hs0*|my>kVRQsH_G7b^QHEj#WVy-0{JNjJHRpY`Ij# z?N8h;{P9YD38L0=jgnd8G7|9>3q`W)PAKc&<_tqx$-UZ$X$gLnMqicTAgZJLOOA0K zXI4yNn`*a^1FJj9A&pXgv+-jpU-}F~E+?kl>?IvO6jN~XW}}b6Ik?CIJ^jAzKy+s-c1Q(5ON{o5w{Vq`*DU8Pepgy0VkA5lX;4vbO5 z^8DNSGVDW9L&fx(mA;|xnYeO~F1`G@nG^#5Bu>Wjs|JhK@ z!@=BHpV{5cwkb(oaa9!U%h?NdGK(;&mjo(y`Hlmv17jS%WKG5mul5qli5$ek-2{J_ z`ixQt40Bv&+MN&aYQ0dGcQduFgyf07ex_ytIb?}M@V-P(SBLyX`v@m!sNB&`RqXqu`R4GfZ@U^o?_G3d~mf*GE?4hjb~m7@`w zU4~D4V@j?s6TWWb4-$S-*)L1X)EZef83ia5pzAZ#SXt zH-h?wOI@T+rCls0d6a{X=gsj*g52jOH%NDxPg23BL())))?akM>;3}eY2O%n1@9io zzxqz*xwClBWi=q*RE{y3PWL5=s1Ut7&iKje5wWD=ouqK@^J2;Rp2*l8dHxfYyaAZf zKf35a{ZaHD)V&P|Ffc^WUqdHzTW1#L-`A@6$q$fhXntqHQX^C)_RZ>&h06w#hw_EO zJ*g9?#r8m%;+3vWWl4Q4oL=ICvt3h*g^U7%C5B?#Kur_v`GCB|Uad{Ki^g`tHMnH> z4u3LtwVfbs+w_PV3KUUu>N{==4N_r-4a`AZx`xvkv1)NiLwY+Il+vKG1oUgf&$OB@ zK1{O!7=W}~Ggo*?Rof3+xA1$B=Fc)lexgUQ4(O_B3TAA$yoD&Tj+oaHvIo=A<*{v< zIA0&zl|JcKTreL7N+_xtxKm!kOm<)l@LDzsmdv#7zTan}q?pw7oU(A)2vqiUm?r+k zT97-RJ8)#<};uIp@Rx!1~64}0ysFcm;#*4f8XR;@#6~p ztY}hq-cob&8evyxa8k1L;78#fWU%~~+HN_y!eflRuGMfcO+pExXmBEA8=tfiP3 zEEByn4?HY+z*ug|0BUxr0zS}b+ZM_dzgkCe=Ws)p4S%&6dG&Mc*GJP!HeVo-4sy`1 z_k%_%`xYfR2mej=aES~+SlUz*2xX;O@Vnd^Bd!)`*BA@Es=ch?tI zY#E8NSS4baP_kcTzB6`B<{virzP*2aw?xQr&vOBVcVvlTKsW0q@%r3%N$}6UT(7R; z9)tQ~3k3#-_V>ORJ2?E&7PWEvRaUf)Ck80}&*4_EV#;{&0SjU?66^T2@tG}iW8@#= zpxW4WfIbhQ*nD4DZo&i_1fCklo)*O{U>g-asbh~npL1wk5$dXFu{LL(^RS+^CE9BnYbW^b#PW>nEt$iBD&G&Rot%N;Qj5{TvY0p zYu)|8d6H7o(nhK>t73Qsr4T(PW^}lmMY<-g__+j`qjCJ>AA z@fHQ@Q9yj@8Ap}hZiZK>Jm~5JpA&<(|%ShW}>JS;qq5> zN}s72VX3# zB;iTTO-g}~Ok8y@TgAAPfmKT9Np#oG^KobKPr{o8$dT%l#294j1!Ey zG_p;GI&hXJWEB-Q7a5&xw9qJ_H~wdD!cWDR3P(n(G!A1hDmbBP1pW&Z({M*T>-74} zL(&5^S*8Q(Tz1qw?*$MZ_LQtHt8q8(gv9q(?R^u8Ot6KBd*g?(dw;d{v7> zAhGf1@h4f#xU7^0b`BVShK$iduOQ;_cX*h$BB2XM$QwvJjf3#rsIE_}bY_?{hc zmBdIHP!l(QUs{pAfixle0YNS|GdhPxoSuCg4PA%OR?<_|tRyWmW&9>D4bJyW!$|u!I?2u0ukMv8A+8SOl#AIl`m0!-X(~!C?_`Zr@eS1_wp0%u@ zi@`mzmvy8dOCh_1G!7*#@-$jZZjnmr7&sdS^1EN{!z3yek!yTP6DgvWSDg)8!EzYI z+yl;4za+$?)W+L29yqpDVdY~v3V7#x!!m?uxjc_T6XDxAMz$9gn0N;)ZnaDwjmUAr zt%`9bGWu|SL6%R>&?yyV7BA_O#+cv-%G#xerLN+Cp)m3DlRu5zmSMv{sgFX7^*HV)mk_G4w4Kx#~G(UT8>vpgS9SfB-I%F7h-E- zP-zRZdX;NVD*<_}PzGJoVB=Q$bftU|mu`j1H;T}6Zj26E%XcNB9Qj;?ymvV`EE!6V z-$*=Zu?*4rGojIYG7;m&CYjH7=F#Q0Fy^7)Ic|d9;KzE5yWKRyUhW=c`%8PztJK>G zi}hM`a`OY!Qw*P+>F zan$tN#IJ~Z#gg{TFM@V`HD~T;Q2aaRn!~s6&W(hQd|8m$awXiO{09OSv_GsIjnI;)Uk6t|d-_INKl+?r(0)E-x5u-q72E zR!V~A)_oIyt+!ze)JDwGne5iB8{!t+a*w(0Y_Ws+cpcPxOr?QPb8s!LNE?lubp&XhcgMPqc90en_NeQ1shD z@&vOXQRU+@Q2U7cI&H(CYEg?P2D@54eYl3k0E>t?61XXJy;5dsPE(-Fxgzw5M$sW5 zV||?f`TeQp3pt-h44@*6XKi^o;@22f_uDO6cgRgZ%0RZMng5knKdb`Y`;3|pIP9~7 zW5=QWtd_E4JerL_A{rob(NCm=@2$qpgh^>b%R}I?ZV@rU6>HG3;(g${&|M{`;z*1hJd{?A|5DGR1EDQB6Q61vl9T<}vz`26vby!Mv(jcuWIf%vcT1r` zBcKl*s%~lCNS}g>%4p~8;M>i;8KLhBtO0^W<2<26@t*&)yj~QBA(X~lCS*Uyy^+<} zuEl~Wn50{`M2ZA^QEjH`HsoaqM}!zJReic@kWKKrNgH14>zTv>PX+kTUa$}%yTXwr zggbmhS~kk#n(vQ=`p#1^{7Gr-aGY04HTI3xKJu$il`O8a=Z-?y}(2yiLfb-C zU$m#pw?7@s{=8`q3E4gJc&QhBwR`)z5zGQyAu&iUIiK!72ua!79$!6fsdyPbzHIbZ zv*jrfA*t-`=~Vo}7aCdrc5T(5%JUh+L?0_o$+*@baUyRPQ){Q9RYM=@_ga*q_|3`*rjvv=<--u6Oj~;@eO8q?ON+< zZ>bzl8f5deYhUx}($hWbdbyE!v`|SQ?swc=XF=Trrb>}`%VeLBy$#enber_njL%ai zH#~pV2?3&~Q{jJZhwnV!z;90x0eVEJwR;PkV3O5@#a`E4h* zoB@TZbLAhr|y10Hm*S3E=6TiA?Z^mF{u`} z^zSERmSBbL6;@r$A@J#ozfzuTzH|sOijXANOuNmj>BOqA_l2|!CoEN=%-i4e|E%5g zsm3zZwl;ZASv=TtbgslHEPaeYKW}?lG`>=!vmQvZybpZq(63&Yema?bbhvYT8J4}h z5;-{&&Qz9e(x0C@@87?=`gz*#oXN=$+(uZW8THn`?_N%vc}1%ph`9W1@1Dx{oMcfk zqa`K68tPl94MTWsxfHJ`dK|bUv2h`LSILY8C&uU~bA7qqe zN-fb|!&JvANuI*iz2HE_QI`gDm#2PL>XAj`M+P*p@3++ig9}uMcQ)m)nOIw@WyEc8> zFm;#goCzhh=Jp-imxsq~Ul}8Xn01q%&j#0@Zd}^*?FYTYp8FRkT=PCHxnJqt56$M( zY`fR|oEKI+*xMh?-@cF96wz-(g-BP11`#|I$Dozj`p^pYT|GE49yz{SIo}jm zn6=|+XGu9eh{Ks4|6$65sJFo;?@Dae8JLH^Nu;nJW*y&YTC%sx_VBjnqdbOi#`b*W z;_K~p)|xf=;>3ev zDeSSTMX29p#|RXBb8`gds|V4rxLLIq7~!{DJkQ|Se0e1foLJq1Q+Uq-R7#zpPGKmE z8pE8|W}a&qyrD##O<)99G%>4s%w$-$)Zf#SpvWADr|xeXcCPMVXhYI;Lf0GJ{~90l z^Fwo9wV6wQ5?0p0Hh);)Ps(V&gf*FrW?|FgBaVzK-_`S6^u<8wRASDfFR*-%?n*-+ z8HZ7(Hl^XV@*MrPc$gOfdUD;4?b|#QKF`IJi=1atrq#GnY@MIhkXf9f&dDv&UiLc= zv5t23B}jOb-xu(GL6mQ0=Is5PC(EPvsWJwU&Y>DS&>0!c+iL8lh_0ALzJ2>6rjIu~ z8<8=ePI2MbgJ*~~=43l*2`2im&li)^{_Zo?IiHdr*}JELMVlYj2LWZ}+ZqD*KOHl$ zW=UE$&&c0i)92c!-5#%pFJCW*20hzf96f+{uSstUCy%o~pN||^jXPdjMY3*Lo~MVQ zJzv34moq$Cg`o^L+gnnGZ^#~0;-0vS)`AL3Po14nq~yn`$8&B|P-G$rzILdcW~;P) z3H-P?7vGeU_Q4 zB+5*o-EBWe{MXe{c8AcECR?qGpvt>iViYjv>Eq|0vAxh2x&_74qbfz+XC*@gK4 zZPTWlBU9(Ae~44nae z6iwVVd6Y#SHh!fT#0*#xWw^&m(p%tD%70 zy;#M}x4LDVZg)k4ISR2-?_+g`7~b zL~rOtT`oK01YC=yHT2k6RptVIxf=s}F{SS4OoJq9iZAu3LYpEl?^-0LL;%-)ZOTsb z1;zTe?1W>NW6QRO@*S7)J>SL{^;BbiO<+1C<>RktHfbJ)mY|iUMI6uB$EbCxMBPB` zef(Z4?;|xdT0X>oEV4|)I75)kasCmC%R|DkZ26?D95)4)SAXeEK zk9?7^ep)|Yo{?mGk%-N(2Ff$VA>!{^2qCU+vxkZ{^`x;Rj$>uv-rhy_5LJ;FK_p+ zj|+sjl^;Vlu;nEAaDrKZT?(OMe ztx&0FU@xdMFsJe{jk*d)VNGxT`{y5_WmI2G4?Q0o+xUN_-BhF;CXvT{1%d^avN!fF zff3S?em!;voPElyW!@n8(m$?Au;v!YViJ`e7H#bhfiTeCVZa=IN3kvM(;n5dEQwSG<0w6j7tn*Cx5}WKCtYO{Uqo z-Kf2oXIWOqNzZzeEuLzasD<)Xnn#vH;lm`a82fG^qJ^zxLt3FwNzrX4`Lgp0w3l`3 zc7%K^&Zx(oM@4n~u~PhimKLYUilWQGR#hcM>+b#$o;DsrOb?kU>Ihmr?2l&Kv(HN$ z%`8+Yd*qS5)r??N@(hTNT8q(z53ucBxzC?eY!2U1V&F^5epGR7BlDVKlwKxds;+!A zT5Kxm5nEU7*;ulX$GcfBBf2|`y5q}!D@U;t!n5eLD6-GzPqQGb?-M8t=vH>Iz+ne0 zu0h40)m5gy|1zT9K57)tcvYHyB^F74W~wKI?J2=PqgTcRmfkj7<;yvoV-HZ8Pe7iT zWt(_eMayO5Y`}|zL3z)Sa+B6JQFW@}?Sn1g#K0hjU07Nk)42?*T&Aq(cw5}B*5YW+ zwK8IDRtDX%cexqyvH!9I;rrx-HvfqI`xH{Ln?@EoZj!WO$1qWzhzyl{hM6=dsVvEw zfnjV`^>};lUXMrRy*qk5CgdOdrW2rVIyc+T`k&X{6+qabsC>F=p5*+Q0sdG?J7wp{$Je|3> zhKB{0V^x!+dbhBE!-Bs1SNBv(dkJbrclF~tgIx~bdtSjeB0O~AZC;zfmew7DO)3~J zHdg!M#|MX(ZzYr4?g&v{)1L{RL&_2Hz=vaP{zM%uC4uqJ}W}TSl~VhaXSw8TB>-12En9YJ)aDXYPV(1aMJnViX6MX^R8){V>OKpqHWb2KgEm50OG>iGS#&O5-+^q z=EWre{gtyt&hHWx&JY}I4a<FmKT-ut+Gey^?~@N{Dbqq4FUf*;9=^6W%O z73zDL4%Dme@)rKJ*(W!eOO^JSF0<8%TON>^zzO^qSjU1N+%i}5oK{q7SJR|`c2PB=nmKb zZYvlfTZv_o%(GRkvoysv#7w|y?y07KKP=F7Hzk+!uD&l#l$nbb{T;{R6{^eJrqX*V zQf63M)Lx()zjPp>X2#^OOwrk?Ve;EL$;Pz!m1IGsL?oMleezG-mmfOUkIvW9`!t%v zsz;aJSB1k;-WSBG z?zPUT*4t&s&S~NX9^UcWf5o(a)ZrkS8l{lSwO@HmlL9Wti%3+>t6%FzZRBqNlEU5Q z0Lbk0rJ*!})n<_@zFPFgsf6omCfUr}RT|@^4L8(D*QLv>!4j^(Z%w??gF*;h)Pepw z);8t>VdRmPUjAo>@27~7W4p?&+G4y5)XPiirsp*uDRO294vuIcE?1^YBK*#8uhgIz zmoitT5h4-jArN91-WAO;=Y$hezvpRzEB)wRp)PdvOHx5fl;6w0k4!-1P)D+WoD|wH zp;we9@)L+EAdY{YP(rUYay}YjVWlsHqXk(? z{Qgr+?V6SEYnzm)exGjDk@7(=qZ*VNBg7FNDi(?w)ZF>&6Wcp09Pbqz@KM+J<^;Nt z)~>UtY6?r#XgS0AMmU+S8T$FzrGp~|i1=x%9cLFTaE}noVvwtT_%b-HT0SBL%Kxw# zhyNEFpUeLz8|{d@KhFitVqC+)r;-|L9Vp7pPf15sznpKd!AB1`FWUIS{W==bXQf2% zwI@MEvVG;LHY?OVx6*~8T$No>C?++1Xdqn;JK=VCEH9Q4y^PW*%N`QeG*uM6ZU0O2Si}89s&lvjEF{?}irYjuF)+g2-YFf`4$SA~XIx2d_Eei<*BLFY zx1Y|P5mI5dR=zeODV6E#AQWCQGeI>2l~j<_pMTI3T6HDRzL?~azK&MBI<`GtKGgam z8qfK3B2v*36GXi?aHMEM8PW{ArwOT1))sO}_7?#-1@R~HL{ zbY}|%rh#X6Eg(?=Xsx&|Ci)UzOT&H~0M=&e-vBFpm(~_rK(KWKBPbfV=7stCGl!f{i!^DEP^L9F`iH3LTK zOa*`L6)cE2h%|9hCookwNu7fWbb);X2J#! zy>?7h8KrADV4KX?1`E#I8DW56#C56S+?g;5%bBXPj^B#WLb1O2CxG$AV$y<}h%!nW zpw*>T*W!gwxRN(8qs0nnlY8yU{7oZ8MY@i1@nW9rZ{N#8zkTidy{#FSE zUYBYz-1gI(b>B<^*ABs72HfQda>T#!4Kmc9$dr^RR7*}%3rWgCAWj<>Zsg{6!qw;G zKZvWG9c56(nyc1TT5@~Uz(F@JCgN+|Gu^3$R5`gLF z)H48C4Vi8X@NX{H?>?jCufCivpzEpdUlenkiz_%9)`Xi*Zb6-_P^aW0*D~F}EDdmn z*6^xu_C9U}k4D{%I!@lr;5c67T;^N}Akby4k-R;0trcIQUJKT8V6XE}w}xem}q$ z#qrLw1LL4ls_FN!JOjVSZ2c|E!f8wTCknWKgOA;WaSoMnoVh@!pyyQGKbQT zgbc!*7xHy}&$lD9hdLjXc$rUWdpHCZ0UaP675*4cjyL0GOIsAo;iXBw2y@1_WWRQ& zn$nK2{zD1(2G0;@Fls`vI=W@+JF>)u*btVSlAnnRLI@I?;EC_(=Z} zK4>c-Roj^Dx!Ce_WT@jV(vyc zKI8VS%2XeQJB4`wRckHfVk8@81diYULkN|Y2`?jhy+ez!Y)0LzrItzV#*7i@DBd9C zrD}C+{ZtEeqcLv;-?DCjlicHFhr!qzOw|U|Pt$7LCNtn;?8WFe4*O00@egVY5H;+_ z->2`1wv7ekWTQW*UCqWp)B@apQh%qyj6nH6s4uz(;5)){3^%;n-gg?oA61q2V%X1S zGcx+S{UXx}=xC;FKNi7^pl}b>MEO`d;Gjirwr$@Z&uv;VT{|G!x!a5J`;=YuuElE( z=`ZqImk|)TD(oNREo_{a5zPMw`HYe5)FM%{>}a3PHJZ{R7v3zqZUf|&nQ4$;*if$t{D9a zpT=x~uY6}#)zO7p^L{L&W%Y7sVSV~HuA9QILS+sVwk5*J z>l(qM1MW<*{_r>AwR2u%XjI2wRG3Q>j3UQPO%nJ}u8->seWcdZHo#qD)vO$%tE#`(-*5x}4K0RWno^tOQJ5_(DUbfzvCUcaA}pUi+xUnr z$%!mEJLYAsebiYWTI}Li4A0pfm-Do8lnV(V^m0mNfhM28)qU};Od*~6-JRqtXTB9g zGl%+B)GX)Evho6E0KdFVCm`#Tv&t13T^@3#@p8jI+4D>^--;;L3SzSR$3a&!f4IM> zVz(CqzT~XgBtYGJ_NU2^q~9ia5r3QPwEO=v$t!QuJ>9;~Sp@`{#4NUY6{IRI~6qhW%)mP%^GlEK!}kzo#*XV`D?9K;*DHM^?( zuxV)Q^xzJ({-(?aA!KVuc35VddWQO*F;JMT~80dxuz=DG=PZ!Q1^Y@&! z?1KsRBbl}ggl-9@#Nh{>I<_D~3BknuLcxupT1jOSNm)v1c*Ux2%tGQICQRWNSUYXG zvthGaQ<}nXlmP0;EDr5478ej5Pqf>?CM*p`f+Wt|qq-Bdur6|tzqd)K5r58E$WZWY zXb@V*Z!~wYDp;M6i{EH04!1CqLmZk*<0}J*r7h)Oa9i!p>)pXOU}Db2$$lN&ny_vE zT4+o&M(ssJqeJTei-YVzL}MfE0K=sW!~Fq$1I6A+qOdevv_tndVdwKw$rvNb#f_z z^)H18{fK+Vgxli;G?P7$)<&u{xn=IOaGqs^7!d08u+UraV{Brik`8LJ1Ij1fK7P1S zfOfSH;I;4i-3knQEeREhN}3Ung6;+aLPz^X>NXTy=_y>9RTP&lkz*3YjdQES-s zAIXY_Me^y^letwbxy>x+bi?I9KMun?sMVUzRh``uoPzz#{O0QR(WhPDq8;U2fF>2` zV9lpl^a~9uZK;srO>HbtaK4}q|2#CBVb!t3dM(?b6Q_BqrT4a@2Vn{EGV~06lcK96 z3O)2JZ)q^&iDD|8d>zm5$&PD|FNgjEcnqRz>|>KX|5e4kxMHUxJX<#kYxkfLrvop# zwOCqCPj0R>{d~XpW3gHcf=vQBf3>Y@x2JL*Qh}l915cklud8Cl_P?nE%-g++8(`2*$d0%rw?wbmLT4tgKast5a zkTqvND;LDCv=1s?&;vXYq7e|HARsm8yfuEJ#%V2^wHpT?v$^+~Q3P%YTVX*JCiR+kSBU{tqDDEBSFTB-II zr6|y@Bv7%tP zLg9QI_YdtV4)?^mrU0o>VwB25_^bufikt-rD&Y@kYCFg7VKqq{j-SOI_hE&wAJB@g z*G4gy@p9R7x;6k~iHigWCE__{!NS*sr8T%pWvKH@YQH#K9+h1vCKWg+Hm$QJ-D=iC zj&`k~yDueHY;Po1O1IwA1t0*4Snivgu+o{`H=lD$0!aD_vjrSz2_V(ZXBVI3(=I)C zpViJenzll+A#ZLV=U9Q!-@91-Y&(+p;{mE?Daa{D|^)T~8e( zD&1NX+dT3F`5B%^09I@DP8S7`fTYQTN@CivVbsfV?j3T440GJ-On?6q`&#W>B6TkC zV$NmhdAKMbXXsze{9kM1TJT^pq)j`vg955=F2JR83)E3|Xc2(N{UzvC7<#pbeB9F= zO~2sIi`=w619k$2=^w}oFalaz?*>HpV1-H8tMo?20`(Rn%;_9M(=ao>=ml8BRgL~FH=$0CmvF)5o6!PU#gfF|iTY&I(0b5YLY*QmtXbPkq5u|HQzk1AB*h%p=V31nY zm08UJSLCD{;(nY)F|VQ*#fi&^tkD&6(7XnM^j}sAp}=}CaHdopKu`P!ki{L=+`X=0qj`!Z40;^(%;|eBcKqX^c~OMr;1-b+pm*j8lG!$rf4I0FLKkJu@b|mB7!2WLlN5$U&M`3>eINZ4f>_QE< z!wsMG5JxXZ z(SdM{I_*#T1J1wbOH3^Vx1d4h_qSUC?GfPZ`-7bSolXZiynFw0je|-^?FWJ1-2rs- zfW(S0jFm;y5`>kBPfU`gWXf|WIz4Oaj2~4k;{KRi&i+k)FqpdPfPpdnVE~Ogux7cqxwdfj^t=@?I&Ci^M1uJ4`U& z;1mLx&!0muAgJmtc^|PmltuNeTB04G7u%r0J7NoKxMWmF_12=3J$8yVmg4bJ;gJ{@ zv#URMgUPl?8GWI=m5V?W(YjZ0gL(s`mCDTJ@?^ zqPUEVc1-!TA*13ZX(EDIoN7*->zCb$-Mh}KFc=an%?F2y1vOyK03RwRpfspK`(@H- zzEY!dSd!JmSU}j>LkDx~;DkbDq?R_U*0Q@T6XPvDp2eG_i8;nku97u9BYoz@@iBZ> z);jjAO8=p;=NWHyO8}>te5hSLJ4gloY7dwwiq>cS#t#|AU<2Th~ za-t}SNqdj87BEfPWw>@)U<{aeNm^-Bm9|)y?5>?mt4g)bm2#x6VM#8DNm0)iBNjQR zBen&ym2%{r`-vGD7|bch=H|$Fsak0Y3!_1U{!8XdVl1|yvn_>VQh zlEP~14<)IEu_FwFzt@aU+2u2o??VXjkR7lmVt~Z$I~~eQ(#Ai%fFn zNfZ+d)<0NmSC*X8+tVEWN*xpg9j7gc9y*jOadTjsF-ZD|J)y?^+RM$3nA%4&L(nvC zj};DIPJmZ3?G)t3LLK`JHTIkLdz}DyC`>qNG`ZO3QcExJ5(+rg^PG_ ze0922DHxzkRw)lxDKD5i3tFW2dx0J(77)I^ZBoVxZY@REghe{y^ z9e|K73e9p(otfnX5<#zq=K*dh0)3@%9E3m>CH!3pd}A*#SDYnR95IXF5e6H=#ujy{ zB#~8fWDy11iASv~EHD>B3|c=o06WfQTW|hICphg4w)wtl0UrB)lci(pdWUxkaHpGM4g;SV{9UG`QGAdHWp(j9rr6b{Jdnl#HD{2&rkB>Ta@- z^Md`kQLi~D_Q^e(>=iH7!>iIyQ6$uXhnnBsz&f$M^?>a}iRX#lSd1L%A7zli6QFUI zViJ_v;aZ~-O@NlCX?vAfZEvMF4x1n}TQ@8@DZ&OsygdI9DGB(73qi`=K7%D{1<-d? zsY0cCT=poeEiW>7Iy9A1OuEt&9BWj%`+^5EVVtfr1=8Th9Bqn1R?u(b7X9S=3+e@N z;*h8jZnmFU38t42E44vDDt`fC{|3_iH;~qtaFN2Kr%A6U}<97GLn z1*~3rcu`pR?phrbkTxPj`qP1H*m2^c(j%NIet;m#LQ$DKg~Hrs^->{F9(u_m*`E%K zP-&(TUz+foIl^aTK$RHOEm3+3>+~dMt_;Qca4S|E2jNXZNd_&B;6e`FlqG%w%8OZ_ z1vz+|z$b&=bj4*SVvdwXKo(@&@lSEdAul`dPvI$acv!q3c|-l@d;3Nn0keEuU|`NQ zFktxqd~aXV>hmWl3k!48&wswc@1vhmAYFg*^nl%TG^m)J3`RCO?lXk}F=Q~ldy#f~ zFI-VEr=MOOfAoRA1@sobXpSGoNQ}%#&g5c9wGsdbNL}b5%%?$q=W#yR(wGIb(f)_7#Adk>Zx2n4^I@?q$PE7P0kt|zBTLnx>@h8j{6jLKQOoX zp8Uey{JhGehghO7=Q{_w3vzFd3Vy?DSX9uTEAB+AxwU{87rcGp^P=SKC$>>2kR#A!oqnjtyH} zlAHvA51!A=Qa@gN-xk;P>jj1EiTn0S23N0uDa3q)tFQG!L;}S8B!X`)&jK5jckS&p zn@p~#74tQtFH}|Cl^7Bt6ASJ0K28>GODC4?^Wt1gAf35W0ow2Vw zJW?zwhxu!2YX19*~uWj1JV zi{nWnrb9Z~Zo3;Lzuj)drNU(td1>^xulIhgRaEHc7SU2fd3_o-Y_6E()?VA(R4ge8 zBuQqeAkm148NYdY+J5M}nLToRc*{;c_B~6ES=@aiAlZK_8w{CT_4M`5{Rk^`MqD65 zoLuuWKU1&Xps@eh`LW{Qnx;LnPJ#eXam+-7iX}&a^7_`WzTH+ZCMU#%`?K1Ir?QEg zs&Su{02eS!Wj#z`Z7DeytvEN8TABr~ETB5*dYchKq0(U2s+yg%E*gDi$pg3hw2Yj4 z4|EMA>B?E}2?h-vZh?mIKtmk2HzHnIgs)u>+cHR8-PO0#<106IGIg2Rw`uK$IIDvP zCp$MknfIW1ijUGC&Tk#3-DV{MGG1#p?Nx4dO~)PKY^7Lg6eHHHH33m3yg+&FjrGlz zieVkEg7}xJp+1)Bh>*S6ebB3dolh-dOoTEf*E22(Z?tebK6bVb!_>6ol#i$iyfI z!LS+=N+R!Uns*EY+wSpU_2?}dp=! z_A7>w4pmI1ZG1VpL1z}Is9_RgkmmFAT0MzJ^^8X07CtzvG7Uu)-* zT`O7eE%&Ww>>Vw)IP38!=qBuMPtD7V31%VUU+*0|4XfS81%wlrp}i(g3Lyd&Yl{%H zD3)}gE75K1Ar`RQbb%iwSF8QR0$wzG@Oz~hjiMah?{E3239yIIl@q1)W1U1#7{|K4 zw;u|@sFmK5gV&;1gW#=1w+ElR*M?XKZT9p0IG_s_BG$*`*N?xA(_s?<(-PTA&?L^H(5vb4{N0i&E%jl=z zJ+eJr>gO8SgbpyE_na@22vf`W4dn1K6PCvGG`&&s4)V28!-LcCovfd303n-KMa*=? z-u=g-{$>xVDtUR=9a5!c$WvU z#BCfE_x0ZW0q(@f>*vc_Ru{HlR{O@&Pv&aa=6192>}q19oi-7d-D70p$hpnsJp%nsrM|;W~A=*|*C9NL_4Ep}Mnod0ByP6(tdK%+#dO`C2W$T%-S|q## z7K&s=;1~AU8E%ODjwkOr-Ynm{gGe*soGdH_GvVwkGq2-02?Qh8^4?#cpc*Kk_Maau z!A2BwV4VZJm&jthF3j+P%t=}N8x2vca&W%ea~0}G#kxL0S(N}{i~UP9krfpw1ck`l z4gMctZvhn7wsi~R?(XjH9wfLm?(Xi8V8Pwp-QC^Y-3jha@C1Uq&N=tq_nrH{_x|c) zQ&cr$jxpBWtLK`#*PhZ=79>lS&bh1vhM5Um08(IIm$ z1~~+iqe|{xfZCtfL+)-X7_b~1BC;nYVTm*M*+U!gs9b_Z;WyGz__N|l2ab*Sn)Qcewuga2f6qapzcu^cc0<9)(f&-F6?Z=eErp^svhGsq`l7kWnA z43{la#TCw8gw77toY^)r_NHzyDk$uLPv!*9Q#_wWFKJMI81#>G;-hmJt5d-ScnF4D-LQ^TiiSKSvez}AZUSz8yGk8^x0 zHpBL1R%$L!G5qn^e2bwzsJ>wRsrtmeKy|vzN>w5uB&ru-&tbGV*|D?wptZMsr;kX< zeHxlWlcKcoO9OU8(62mn{-p=W1B|Nmq(1tF*Udn>5jCfq(=s4_N2R>ru56_B-AAt1~0dhd37SocWmiBa9pvzL}&}_ zowT34rZi@EMAvy;?YjkW2JXL`^)OpB8u7qByEWtwdd6m(f1CJZ;ij;_sF<36aJ_bi zr0NeC$3I`C#`2KNe)J>wkb-%E)&?Lt-`$~LrP z-@V<XP9k|MX6&(6?b_wQ5)1C-cbyxAxX@AO=Qsthed}`4ngsc~By7Hu` zMb^^=`&Rp`0pskU$|mxyEr>k)}-RV<=MSgJJGXOyZ$3sBJbo2 z%238Co8a*~3t3|r37^E{DNcN$$r7?FN5+A$TN|_nZ-(61pf& zR+@R+@S_Y0+q2<|u9<2*ayPDKl`~tCM!eCpS{Wkgs0qqVw{wwD{|c zmftLnoi_GOZc8*cM)XUF)R6YWiw>7o-viK`y6?4pC#Phd@ntVZ?e>r zPAw@#7QdSC;>e_`uh@|Q6S01IbqNhQT%?7{ygG2!amPN71JsX9bCol8iem_DMyLv5In4$enX>gWU1~2 zY#08QTLzZj>&VDkz~u9;JXp?DjCxBS0l}@WT@Ms+r5U`K}eHlk+iJ#0;oMe3vba&^1Q z>~Wbrrw-Y70(k@d+8o+D2$m)=_X(6?NO7laJ{A@n=e=d~`iHclE_73hpQA2Y4im%8 zo=5u{R=fAzN$K*v$gcEzGvas*bVc-Azpa1c+;SDIBR2okJmEL(n`@di5=*!cg2C(%v_KQMEF@k zwr9w_nOQI7w#nACOx#_3pMQd+e8mZrtH*R{@hBP^)=>kIl^SzMtj*t=_Uu z?yRf9ZhtRPBrUt8zoe!(I{YQ|XUS?8U(}#9htZui^H+@P=;A@)-R&rd%}iUaML-Al zwd1}#_>;Y(o8s@2ZTEg#!Jq&C>;N2*_qks;ojKdMv5>+2y$;~pxYyy7vRxg>R&$YM z3bxR*7MgzX%BRRLT!wYY-Z};pYud@ z)uq){0!LySI1quFm(=Td4(A@ z5u4ES7Y9ASBA>FbViX@f6a!Qq-#6rz40<+tp0f#ra&c z%BQT&oyC#qIUn3=UfdeOYj{dvxuFBjq74;N(W;)VAaGHwM1daKn$lf$tGctlI2$Ln z-=Ko*F|k+8c~*^ilQLTk=THsnATJo&8iTNfcmh(Y@48p5byjVJgu@5@{b>axD#btl zyjrb9a@NxZqkVp_+Kkyoz@`1y13LwC$K{gfcQW60^4`#4nT@~)#DbLtMNkJdk9xckxX5j^xd3OprR+j8{2q(^K2}t-OUq+ zk6I4VWGaa z;2oxA91val=6L5?TA>V^5D;h`u6}GRnBs+We zwcD|^mn$8S(??Q_*fS!M>!1Otdy$tP#=f1zCN1ovI}wImV!Mgdq5RR67I3 z$=*5VfHSwG4O|f0a ziLU@*|1%^C=)Xf=tXTjT3@xET@;uKam3V+^D@yIJEx&$- z5YEHOSfmN92RpP2fdO&;EmFfTwtE`_)9~`?GsH*`%&*Aq$tlP96|>`3so!XgIz=Ak zDE@7r{lkHaAfF*%P}lNd9cOX2=+&<>)bPkq*z;Z17wA~-YVBZ9T}|QcgJCYy2h#c( z|9HUQV>$=wwVD73h5K6Cg&%>c3Kq77p9QoG2le=h3bWF#sjjm~@LP z90o!P#?JwIja%q7T%p%EVS@^jKG$w*g^BaL$`u5|#}>?MgR03M%o?bZ)(?ZK`8t*d z{!~Mm4TlPXli^QVmcuvCFhgzHn=t`A8~*3eENer6v_F!p5|Z6`h(ZW{hM)?8*}q-- zDKmG3{R(l5%e2rj^@?R>VEiSLgBg1abryf-6~2E@o2 z^`Q8FQo&(w3&xE?@gI&w;4}Q8y-X(m;V|;E!AfeCG_GiF+{?7vjASC-Wdgt`` zbO)^arft3gvjQG{m#-bC*JS?m5YP?D2q*-3&pw86@AUiDy|3gdK5uO)kWT$ZabZvs z_=#|c6PbzO=o31Lzn_FBhz3B8gF)#8ehm5#`sMbc62H?U{T>}2Or71B))@%BPucKl zRB-0w=xXBVY2)bbl9~t&mW3(1-@P&L=Og}MkWP+|iN>OqG#YjJ8nr|_)=Cz>h@Y&= z*q++{O!79Wd)zP@h1oB+MyGuSeDqmy_IUO2P_F*df$Q;X?Q4G}_d+ExbYp*4k#jLr zul{(}lzOeHqH(201NG6?q;`-m@<$KqhrW*tN6%PO-4sXf9FFLAmpdCmO>7)ueE*`u z$l~bc<@9FI=uXEdafcCsI3>LP6OFgey(g-^@Atu&wAI`~yS@^kZy1lhX}v7Cd*`+8ree z>zfzeE}yCC?J0Tpw`#99r7ZUz0rrMh383vY7`3{RDFcKOk zG_pIoZY5B)xq}yf3tQdkS^WXLg6Xtw8YK4~GgpC37m1#Ry56f~k!p8vYJKq(%tgW( zuGH)ml{0%1c+(jT#`A_kYE2a;E>fFeYKirI$@P0*lPtaCt&GyGeDYaCdNAqmPGqeH zFB}H`6QyI7cw~d&RqM6wk8Q7`u?TdD-~+QeEp|H_&3_t7I10{hqMUZKf|I4r<{3wmxYI_X`l%-)0(kN6$@DE^jcN zrTPsCGm!0wPxW#f6Evmi|Dxv{=?GrG|DSpsd~s#TTM#cUD6~%>@6B!trM6Qa_xBFr zd7lRx5NQ=OtiLMHeAyKl2&8xz5SR zd8Cm=E+vbdg|&%^jxD_+1*#FvE4Z30}9P*Gj&H z<-L7na;ZNL6vwhjf6wKunMXZYuIXD22nJ1_usk7ph2xo`dRvfgN;iTt?jhTl*_-a( zFpgoY4D4r?M(h%lDU!7H_E$F$NO?SGZP8p$@eKiYWLC<6k1qg+)33hyb$se~XA75^I$0 z*8f`oYaZ-80(}>e`9>kzIm+~9Fzp{&UzmIe{Zy$b2)fA;=cfpqfH}seKH(D53{Xgk zaPyut%P+KFfqeeNhvFd3FbZBRl87qp8GWLB1)Czx2;avjz{UMrjPw6hjHL$0Z>#1? z+VpgN5oId&-`d*z=bA(fyf@et+PQtX^fuYx-P77SxZinS{7l$ro00Tt@w zw|^|~)_ZAI`^a}byuD5C3uRs*H<~(0J6NT&e5~6ykL5%GMi=fC&Vr{51TUY`2m8;R zmLqb@5Y3118AXkho$EvDxd}t7EFAH+12MhUE0k0*4DL2WMXz~e zTM3D2y)IXmJwM*Jqo==$HGhf&%RQol^gV1&a@!SggvZX1aD;c`QTXPl5~kwWzi&%S zflbkhn&*E^$3}4N(_%{@;szQdacX}W;)KBpuHS;DA01l+@Ti1uKc;0C$J9{V9tbW` z+Ww4Lz1gsjqNqRfB;q0Bfe(sDQ%knEcWp5#ftG|VY#DSX;WU7* zNJGH-oNq&awER=*JgK!KOeW_}Syd7Ah*8%P?}*W~ZibPb2=wU4mN*GJ>5qy#IyS<; zRd|2~nd{qz4N9xNzTdqneo_9H4wbwUppJK!f9rT3-)vwb`+tydE6~dF9e#XKOi|YV z_LmjtX@9JEQvNr@QyI_-^#6wyBSwe8!-r5Op$&<5*4`8z6O*^=c*CpKJw^zvpL{^R zRL8wBWLnQzu~xqNUo2?T>yTBTIus0j?MdST(lgDQ7B2V z!W6Hc(W)U`p?gp}{oV&jP@cqa#d)7fM>0E>gJDN8mumPD(MTZb959h!T|^KpJQzNw z>@UI4o{yQ-aDf)R7AI2VFI5Ps`G(`xXoi=()RcB!9Eg-3a@$eGx$e!+xZK2ofMUZ# zvXr1Xcz=grHe(USiDDylCm-oTDB7SknP5XP8KU_IwO)dOu@Q{Poor}xtYuMa6w4&Yg3EkX)pXqQNb z4&%&%VZ^ii`2}8sk!VBZn_FIls;?}8BqJ<79*XKJ$vB9D9=fqU)U|iu4 z`VUtni_!e5M(}zlV?^m_Vy7AtDM(T+=V&l-pcqtbx|Oix&-DT7U-YU_@!9?;Y67Vw zF0^maEL0wYQ|We{BVA$X>8&q$(kLCyzzP91MuZO1Mzi6e8{$pE+$UKPt|Bc5P~VQX z;x_*<9p{v}5UJV|v-Ft3%O}%UpPQ(OZiNJZis!V8fx zlwY2(kK~+21|Pyhf@!8$aa`hZqp`{S3^YwtSwk)B0!O)7Ek(DGhG7T~5R?+ZX?#Ro zotLbKZ8H>tV2n6~$Jlp1T9(PUQig#%qRLF@8pau=-&(Tm{J+WKVc5L)=zUVx@RzA2 zp?&AD*ULQ1D%e9@@U>Mt@xI~t8ps39Qf?U2#af=KayUIcgmqMnseTu7`L+_&Em-jh z`MFurMQ?bZf~lJ88^gn<_o#Yuk}IrMVTV{W>GNg6y1Tgdt9eMZQ(=N2($B*TgazNM zM4Qc=*130Z+B)Hyj66v$DJ^u2CKfMTSVn?B$zGEx1~02B8?`7RFawJdrSwvMi0dmL z5lL!>i74yML6~?C=39=;Q`JMjbWu+3QALpEX0QNb5(&RZ~qf$%~Ls9`?WqY2^J0(dbVHoC(}2 zG_#{WDPYnz)Cba;GZ)hGVE@U~dN0+O1C$|kRi~tri&R)?R8*vf|A|@z`%hF7q!3Et zr8=rKMAd&;pj!vDARZp;j|J165sA+v4{MRTWuB->o*GKSSxcP}bWmp7YO3|rKWhp) z#OJ?aQvSvF0P+v=R%gVW3xevrR0R)yaADY62((SWx-cfEU;>|7)r?qbX#__4sW4_^ z>inTYCRCu)IN7NNkTS3qJSA=B4y2q|Ao*XE$-w?enI~=5+*W@$!;ni+JUW&_0h3qI zBL7!}*#aNCSd6g=FOwv3Rt6Sz)2rQNoyPkLWf`6CfpV8>lZOb}#IgX61+?>(6r;6s zl+q#O{2{T017hjzV6b$YW zo0|81TEEh7H&e(Tx6Ys%gtB99>WGsvVAtrExycy1^B|xk_{2i8%5?OnY_I8O1QS!P zDApuPNz_Zx)Ps2(UP%?I(COUaMhvfdK1aAyh zx{MAQypKRM8_|^FiF2H|PeYObuQgS2f{PL%Tdo$qP)@gl{GKXpNhwzZ8Pu_*|ocvADZH(5i2z>9#Cc-VY!I?>Qq2@m)Oshl4uK=q_bLniB}c7d6o zq&kXer^Y*qeNT;Z6w63Wa2!H}k>SaLBH42-h=`0wi$Nb|<;NL1Xa3_9lc+& zf6$`KjaVT|%vugxBC;mQ-kOSJr0T#P)xjMalF*I@v^jj?8a`}j;a$3@)-wVc5=GXX zDea#^?t0`zSsxCC^BznSQ!>0{-nVpJ94Sir~4&q6cAIbN1KNN2)_rbbQ5^1OQIl3)Yw{|-x5 zE~*ue@mE;B^n>yr$qaNp{;X0-%9xgV70wmHzuAJ7Av01dBk62~n-J)7L8W-I%RH?M zg3u-FHPDJp|Gz%-yAN36HHc!!2^#tbnJ8>oDZ_?l{wpp>+H|b(2_-=c0S`vGLrMDL z6%E(cBJbTP@3a7ww`nty2)wdqXdWW&wCG&WrZT;mm}~tJH`rStJ!hMSnXbpMbRnct z;nop#dZ|2vRdZyVMM0vFfdkV^loq`r0eOi6UlqTH# z!V2xikZT19-`;>>z+JJI!5OU-q^X+S&3PDCC3=1WnQiQ|@5wmCCqL@I2jbF3yF4Uh zRs0z1ZgYgv_3!4XpZ)e8Vou}8=Nx?`A6^>B$dJN#NcR20L|e&_^6^I~%hym{K=?(c z`h~64$~Lld8^icW&gb+};asqsLb0e+efN=Gex~FMV8lbqvP7(b(*%EknH>=!xa-^s z69ice6HH_6T{=LH5q{lM9>Tqa9wJ8Z&Ep986$pA8N`tf&_eM%sSthWLylW9A)FfAP z95~-+@_PqKD7IoDjKu=gw=b*NVutM9?^hrqkN7L-E%YL5#4li!_sz9iTLF{QAExbF zVM4$_LVpJm2v3>0g*Mgw418}W{}6Epp6^W|&6I{75A)LV0%@3#UoPppAw+uyln9Hl zMKGllNaQc@edM&pFVk9oxYdD{h6$0p8}dn@`hpbC5r2jsbR1#Q9dhmj{#}FW%VOeF zK1wX$|4WpM$M4U7{(1LY@h?%F&_v4t-Lg+3pQC?)|H9ozW=yOE-UgA0@b!2VsE{Ea z$O6)LS;^u3D<0P_#vd=_Mrrnu^Dw@X5)AdT5I6!o`yW!s{eKO@{Oy?VYkuV|GFyDt7#NUqLh}3i$a^*G(F%jP0m(fMTxM1BvPic7_GyEa8=BM&U5({A=P`2`E z?FS2-Br1Q<$Un7s`~M1z{g0CQU!uUGmvkP_>TYxN5g_J`}jTl#4tWH1otW2}OLEm7l7K8WtS;P|aTs*;2UPusHgc*s6W61E_6DkuUQ!o~>JS)$)JP42o2aoQ<2W@8VvgyMFVjmU7I zpcpvcmEo-s_gJ2smGXoG1R+cP)j$W!4C?w=tZ^i?dVf7AZ`X|o3HHW)bz|J68B}T+ zQhM4SXED^M3aLcUz^!RuaID%2C7g}^_T-i7n1Xw-W@WMdD0!Qd4FPfOJiB?sRRY70aC|&no1YS~Hr5=JfhypE(m!_fU0QM|%p6PFE;onAY30h6X{T4Tw zOFhopdoFGRK>;pbvyXu=rGH>b|Ax^6ls+p@68`x=ovdRk6o^7vm+kiTy&xboF2IHO zi!t+EC{pJ@{p9!XJ&vzyRz$y5Mzin#&tRVbrMwsO16Co6w!w>2DvH?uqO%^pwMH1T z_QTtwDjNsj5}JLibSXc|?!(e&bzQT#35B)G@zsiCk7I*9E&|{poqvyCnw~et`$r0* z@8XmaB+`F?vimLfV`bGLc&6W+Gq(1IGNE1#fg<%v+YuRnXbZvvRxK7JnAyh(=ULnU zb`diG&$MGkrdx)GOllvH7(!_~GykpYWi+%IJy_PU5ASsR#VqutCKNh?V@Br%N2@<1 z&$J$%6wmY%LQ&bGwspn>bx9+@qZnUWo@855?PlSO?emAElggLFv1 zZNgG;lU6B!=5X3rZqxhTtlGtu)n!4YRlgs08NarwNK!fG@k=`yx3jhhTwVa(p!V9^ z1M%XI86y4_I069a(j2qIQ=Q)chCo2EH`Ia@XMtM7QIM&f`()uTwU$WpgdGAGcXmZA zgRDC(Qnit&1=Nnl&fY9EZecpRmE08}To-E-Vc+yp^l-*!tJm*OdqM#Hqu*l46ii+) z-ZUBS2i_!b#Xj9~w9G$WkDQ(Em{>llz3pDrF~sA~Cyd3Nf*Sg8R1*e*KdDH=J@z

> zg1&;A1;z_d$9d^vA~o3xGuj|w_RAD$Qzxji?CXV@Q@}}DVlx)vXb9n`sHjUf-TAYU z8PbIG-arm5HCgo}4fUUp)WDFuXQ|F;3I!~5l@{)uu%CJToxzU85FE_us1NGdzpnj2 zWVay|;cd_2QsbpXurliACAL@MwE}lh1RRpAPCP9@3A@r$&(owqTtbL3gqQ_7qm4A) zM!k8^T*T*PrR8TOE#WYz0BB?oKl9S+T4p&b)3C>pBkJ3Gq$&a6l0TfQJA+rulF;Ly zD1nFL{HzB#UfkitFhaqx)nR{UvZ^dcW|=2N9U5vqC4j`d`ytj&YYj~pXBS zWmPcId5-x`c>ZDd3^k}>G$?F%{=l0sz{C9C)l<4I1w6j zbRIpPKlfMg-YWN6Dn6v>-Pbv7j(~wUtf%MuJuJ=uE*9u$VI=2jTV^{Du~rF|+*xQN z)=Wv>!3Gg>n0-T>hGK#h^1UlK_U#&)@=C3eEXAbNAZO*aIi8~;MQw6Pyw}Y;rsR2Y zgDbYxmoi|wD1i)27uh^vIFOHu3?`&8Mtr8WSMQti^0Hv)sW&4NJ}qHQNNXgaTU^eL zT*BZs!Vn}SPFkrXC;p2Q7rSSZA1@8HbDRxzp(H%We9rtJ@?cmtd-QOfts=m@&=I2^ zl4*rpgqKy6mzK6h8%SwMGx%>xVqyd+8UQg@T-+nEqHnOkg9i=un=)XZ=823;W4t#U zc$R4L?&&98=C>#UItsEN-p7dRU_UjYk^GYdR&pZHnIp0PIOB{4osV7TlHY)nf;b^f zFlE8s;ymCSK?blSazN0JjAJ#TLZSsDAa;ym7W2= zfVW86v)fcD>D_!deSXFM^w)idRyNAd3PxCzrLDvXNWo%)V7xL><3&;V`=uu#BFBmH z=N4u{QhbZ@B1@RWZQMtE24$&Rb3wylQh_4InAP6rxJ5y%YfxUuzh28`7>BChywUqX zISmG&hITYuaf@rPfh@beMdssHdb}|Vyv1e1pw8NDD2Gk4&8WfvaS1jp?1FIN85;C) zt36!j!v`uC{4v_G@&u(g6~e=%*aF9)?))`jK%tfZ!a5kz{a*w;b{h|q$Y2HjMS$uE ziWd`i+=(OG3rt)=j-oW!Vk~|!b3v4(l%!NfLImIz^myQ?oFE%mmWj8(K5TL%9kU|7&k4wiXva1A%3=~jaX)GC7paPSWWTI{EIM3B-enO$ zwyNdfwxTUb=^jIbaq8cOtRwv4lMF=o%aD>3a3CM))yyFFF9Ol&b8BMG+Q4z*?UtrT za)xuRFa^3Kc{k2-CnJ+x&xL_MW_2gEm=NGPC28%K_5Q8Xvx>AhRCcMo44x^YH!d!+ zfhyyAbA}p$?8^DAD|Kpq9)vw5pZ}GZnGiVF+D6EQEiotyq~|{BS!yrnU+2(8sc9)> z)A$PaVIfR%+Bhnl0Xq0_i#~WPV8wlux5Sh-z{}^vW{Lo3#YxiHefaR$0o+f)+%nX2 zb=ka7iO&MY7V}VFIoi;x&0_z2Q&@l<@wGm=XJMM;uL?;c^LigCryv?=WYuI(l36^) zdTJjT5JUVaSX{=Uqb^%qqR z-%DgRjft;WG$Ki681H74(7=#DCXc3Ry7#$mtfx-uED58facnMj)9=lg{-VF14Dn3N zM(c1bmyb!oz+b#&L8C+KPyk^N_d~bdUmREl0mITtou!#1qrJoR7YClrk(Y>(Nz;Tz z{E=C+CxHnXy;{gfSXNTh+LL6Gz%qEF3Ia=F<5RkL%RCUt6a{)PVb(&^Wf%&p{5Bp& z(^PLipCPhHN&o^&s||&rftf*>Z#?jdf$e6njv|xbKZJ_-v)omlI?1PWLB5&C+dU*d z{UnpzqcKi(H~b&!a0C9R6Gi#o>TD5!>Udzf{oc+o{{v=v_~H`pTKYGTJr*wX{d$yq z`@c!CG2GqxCT72W{8vxILLmu*UT_eQ6WIUJ0nEkB)z!-0;;(&H&FWju-+3^4c1jJ~ z_RL{hoa7E@&nW7)<*96e4+#Ki_y%J4z@31QudqYD5iy=(o_2MKdG|ci+v74cs=%Cu z_$3c9*;o*cIba?{jFz5`>wbQ<)b`bggC!*_f`!&lkk1eITgUs=fgqHl#FY^mqzK#P=Gb%H3fYxz z6fa{lhqGO_G~KF=_UE4mj1Rm{I*G*$Hb?_psML5k$0Wh)%4S{M?*`qZZI6I2KQQYL zrY^1qccYwtDr?kYofMrQB&AT|1Y!@RE5t9oS zdFBOEy*Oq;GB0*U$7Nt39E(nwyGKX8P*D zBFREQWM3^tQxT*eQAW!{+9nHIlx8?fphv=0YuSmn&zwgs`6AJ9$3`VBnA< z0b<S z0!oAN*9?TQV?x1hML%(u}XC%^2F z6PwYW5`nO<72g=wPh$#FgBMy3kHhO*qfBSr12Q?ien-~~W;J+Tr@0Rgt4Y61TI=}!As3#zYX#w!2gf{&i-w;p6c0GadZ z88}Q(IWUc4{hYvtL)e)l(t_+rK*`z++zd7S@{?VQ3#apeiu8=MeA^dqnrT-$|IdDV zHYoM|yvrq1;vb<~CL=U3{4mj28JBQLR~tq86_77TpTnYu$c)R`8l+E9fR9QZ$BoJ( zAY9WVn8!yoKBu-163X5J6gZKU>04peyw=bVEkxh8((uH{46si$g5s}uT#HDeGEPs- z$F^)1FrGr6D1j+;jh;Hp!kGD{-@Ox?COt^;ga{Bd+BGRVbup}rohIRGbpx=vPdPcP zf)==p7nbV*PRjc+`)vI2@J6WJ`jw%9N{o)K?MEM; zBf|hVYmxUMKk-ZVWQYlE^fQWN0Qyck>d|Hkv-YAnO`Cd3dv+xiyth}C+or1?W)$pT z1(oqYG!EQ&9apOJAsd4b)vXzcW)vskT-bSfBuHC>3%*BKB#bCtoCcW`&K_U)PBH~s zOh6@T^zwwAXV`}7m=S}xa1xu2xzh0{%aINK=@kwuo>abAnTI3dy@96s%uEIsuX)M4&j=KmOtESdD|Uo%p@QS#M&6-G=f!$Ij;#2D zCl{S1sX0eRHAR-C5{gMh;H^xip>%2`!)ZiJR7M%-T2=oH-CXP57s#uratDoorP6vm z|6ty;Kpp#$5(Jf8wt}iwQ|oSYg!{LyxMzKTK6g-odr|X4wHvU~-N)~jFm9gRh_yB4 zy4(V7gBK+c8lJH1xh5WNtoUi->Q35s<2;NW`S*@sWn<$y>RoO}eY$2@_Bq36XL}oq zgUA=R_obuE1|Le;Tu+M$R_@$%*d5I13%SFl$b)g)@kVYY1Bk+NAggB4upba8pITWv zc?zhk)I=_dqr(=)vZ*cW7%a2xrRR_=$9mzu8^61-el)lB8cg-(3fjvdgul+-QK3nP zS54rvc<{$2@wwdn7v8af{Kr`!vssEk(C?K?n%F;Cb3IQkYoN=DPJQ| z@$L4%y16EakhP5f8%cN4fq-EC`;>IGG_x~f{_Dv4SBEogd4~-yoSvT=C>@7OFTk#Y z9paa3S1TomXsx2LO=3E>G)g3A6g`MnPJMnxTXlnQmo0;J)xz+X3vU_rge^#?1~|0q z5j0B9$HVg9DWONno&~&n4U}(|FG7hxe}_5Ay*+6kDSIH2?35rqjb1f-1-=ij;O&CF zAWe42+F@}=%ih&%OV9r zC#;YcTeojAc%b~oy2%gyzOpqBvjKyEQS5dF2IBHg6i?ie1En4Ks^pMk8w zw8(D!jnI=tICKCE!kLu%yE^Y{qYSI0GF+~c57Hj@a7 zjOOy$nmf+D+RNkPWTur>MFt1tjehOwmD)ll_1;`du{ixR#-mT=g0yrT*f0lVg6m|o z^OjU%a!HCp=-UU^Lc1TH%!Xh2_1-=@({3p>xnmT!l!VS9&OFY~Rb3yr!JI_Y@ zA}cCO-GH}lZ#2y2GvP%NG?s!xb5>c|h9>3t+QKENtS?SvF=fnHrUlT%$}6cCOwkJVT0R)9C3@3^=!JcALVG{{&HV23Li_9D`Kv>YcQeRXV&9JM%Vn!UudW}8^w33Z z?%VDD`h|nw$9*WZcpD;AsPra?S6CqbDafUw0-Zqn&LO z8U^f{zhkdrl|5aMXQJ>i9@A#g1(|%Z9a$kNImLF(wCVf=N`S@pR?eTz-+`pnOxUsA77Cjdm8P?2MF$av8j-(l@w?SR-Dv%ro;rl?}v57#%nfw-WoJnC5W;%AAobgRO$|q z8;2$Ir5R4Zj)MdyF-)!5*2#oWB!@}gJeX$FFjPpAr@NiY z_>In>?4jfI4I?E537hlbrz9UShR#y>%JRfVu`Cet8%4q z90jRZnS(UX!(UehXQn~J=@zl1 zg6n*Ova(stYFT?pJNc(t*0kGatx#t4L#aXqwve)*}+l{ueb5yRVlJAocy6ZWwM(2d0 zBgAN@us@ZnSmY_!s)i3Ke%(uS3{In)CwS-q$DT<-U)aM}i+mb0#gAg3=2u09t<$(b zgp5=it*uqPv~3;v^9Px=;>c-1<8ulbstxbY9owqxATs)}<`B{)gy(NvQYt1TKB)SD z?x9I3&bVi@G(J#7Vi{QOc^H7y{)w?boM?E?P@tWu`?4fVtf!W9lm(L2(2fYX zU$&?ySy6$}(_;DMk?Dz4!`d9HjUDd_Zs?vcF1tpmNsN|j`cXNZInoXVvmrH9I(dvK z4Fv*Gwzx5KNQ*(cLTb}ISZ<2O@gk+kO^`PoQtFM>1($h^N(Iuy13I zI86cQ6~h6Mwi+p3RLvZClFY|el)dY|>V!Cos4q-4P&`Ig)r>h?l)<%aaG9pgLCfp^ zrAu()Xt^7xhZ?Ah=pVZN?hgAOb$_*njh?Ls=I1C-yWI+;O_mjA7Bu;qPiSE4pB+gn z<7QjJiqSh{rM7ztRKRiBwh2Fey4d+5SGI{z#m<+NR3!VIIzBjYom;H=+9#8=I5p8r zu$+Syy<8W5>bGt;wY&`%6CuNGXDM~49%n>hP)j38nGE99WHQNdYq&PHn9J;VUwG~% z?W9&AkRZP|vMs_Pg59on%IFFt?6C10W2S5BL^I(DeN3z8i0D7YU6Yzcc~_TLlPm93 z7kXQL1N-NIHh0R&?*RoH1BK)KL--%bip~y>E`N<`c3i!EAPa{0*Pem9{c+Yj2uqAG zDG*wlWf?s}cRxy7@(r=*igz!0K2DR-uQjgM%lrgFM?v<6RdaOI^HdZts+IitAz59$ zoE+q1d^LQ6R*<~yfs~_UJg#4MoJOk`p_q^;?ud@kr*BU;yDX+!$ffMLJ)w>U_3_8E zg{J#lcOtRqwwTb8Oq_72s`R>Kea2wPe_#Q3l{&wwaXV$0DSf_hS(sy6zdn^sQ|GYT z*VD>XP-%UfM zadV;JHo%%pI54~W&zi&D&Cb}&8CaG1lif{gZrShi;B@bl3dc+6Hisv2KyWk_2&?Nw zOOQ9;gHYkro#&3RvTR<~NJ$Cjt>c#>j8eMHEjV9lB>f5#N zQt45){L$QD0}mGf`cO&58iaRiEf>CNW4ketZ6!#&iG>JGg6z4BTR@Cd1`khpk z^I6H&`Ya`-)2A++?>|T8i-pNXOp&q^InWxj(a&Oql?Cw1a`W(>uO!Jsa#KoQg(z@! zD){ZpJf!=1aT35X)B2_d(u~vBT0qP|##lzcIZ4AhtTNE^e*5(_UBrv|bqlZ|1i3>c z$+a1C72d6`TY>(Hq_H=DwzBYLSir%s00|{pQo&{fQWr%nUb(9@SL#B)nYvA?*suPz zqqv*A{AG&e4xoD&n*+_EFlxp;T*5J}Iu-B`a{cP}_$9)_Z- zw}>9j`3>N4)%_5Sy!zd2eBt=hxRa{>Bzic8$R8h}TUyeXdiGAZBDr^0HMOQk+I{t5 z0M@2^ZtuGLMowQWy8Gty4s^eshTh0wu$MS9lzlcP-}i3xp8jwYjxS&ceWvH~+D&=G zDJT@PbZ_@ReBVEinux=V!*~+Q)j6ZJP3-$N^?MD|z+J<8hwvNUNkz<;j~;k=2?TunJtSyQMSb0$?s~Vb z&3Ai3e0mJ*iP`V=o(Hz=wRL$W7KSyrSWA5Z?3XoAPuHVQsK={)*Hd*Ohzu-)U3hDK z2rf2;`M6NlhNA3Kyus_#ANkuK@c*2#3dU9}x*uz@ocuyOZa(-d&!1-w4( zjjU{$tR2lPuGDQD(bX^nJH5DR?WR#^7%`v+I@$V)7(dg4aanyYN#ZJEtaS>JPLxN_ zpfdWpm;%U-e*t+674ZJ3$53_6a#EZR;8PYCmV`!u$G{mOv%cjNz%T&6-P|gIRSb$Z zn7Q0qf9uJ*-*TDd^*XUH7%eauoV!Ewf@MJfH**(xXzH1?Z?19Vsg$|Iac~0Yoiif) zuUtIhT1j)&Q%!3X_N|d7#%M4D0#3hXS~3$Dk6j?cNS|#FeTyt)MG3FvhWg=Jp6>~2 zj8wfvox*FL0fHhd*i%PD?k9feUy2_ z#`tN)P|qxxFZIe6hS70^-BnAUQ}C=|sK!%V-e zCzjexQ=*uavSm}e-YB2adKd{5pU93SS|U&_?BrbLD8I`r^Be}CR7DRTN_y%JH?^|I z%?1uf!9&1^5DIRg1Wg)(Q6~jJvLcXqcI}3OXhS@}S>CdL6$bwfwaWXyCIY+)wW}(% z%zkd~YMyn0;TF=DTRg-JC)ezGK7q?;Sk@Esh20ezJLAOzY{J! za+gZ~Km1ag8&JCW->38+b^F-o@BMSKrOE!_{3ENyy9~BBObS%KSEtIasoDHQYS+hU z2V2kEU1^t}XPz5#3R_o{nWOTX`LEMI>`di}I2w%1!37@Ln8+%h;AkRy>j zBV~oh5#toeBHq+C%@>lkAMQ=M?!E3P|LG5s?_WL0Ubzc+@zuh}l@38xGA&oHzxjV7 z$EfXz&~MY-+Zx_I-QkpeS@d<+fhDt7XXc^x^X0Rf_BqwuT6e4TopgwT%F0Qv z=d62UwJZGP8?~eAjlg?~jcha4F8q*nG5-Bz-^#SlIl+Q;t5_!6zL;lt_6Zk@PnWk* zXOl{YZ&Nzkh4%}pT;fZ#?whN9b~vP_&objT_q<4U;cZU^8?LK1teMFf%{Q-8IgaJU ztfze)z8j6_C+=gIu;*vxtMw(^^L&>ty4YP2_tKmx=AJV(VTk8}It5b8{Zn}{#dXvv=UBbK< z4<5}4U2;)4Vd;OlyzC1K+ohX3-?1fgb!!&&2u3I$mYn%QPNI9~r&S975>q4kK3LVB znsCKL#6w6}Ma=d_>m zJ+of;cKedFv|gF1wwa%%%-Ox{+@9)dZ<-EOuQ|GH(j}wn%2MCAk5qqD-IY5S{r>a% zDNj6ti%-A0)-G4~U(uidu3SGhg= z`MQ3)d!J9%w0?i=ufP5F{}+`S z9^jo~ml1n|rA@U(xhhKhuvu{9#1D^)N)LC5y^LMm)_*>F@}$I@8!D^6PvHD{u2}ii z5$BaNh10+JTKRhiYwg~8=+^(>ROVLIS5|y4W%4YP(_4NPJoVx$*}%W7iA^eFK_gb; zzj4R6L-qmQj7%cTpy6>2hPyM(Bi05joj4WPLOlf>a|3ldV4wjg#=sEm3>*wj%`1ry zsVqn>js>;O&<&_m^LF?FRC*6Mj?4|y4Wt_wj{%Kz?HNBJfBwy7n)(Z;QVMYR_R|U=TpjUJn$3YfmgFz~<`DA=$Qez^ZPNEV|`0 zfB^xXIRF|_nhW$hHtl&0(n3Z+%TEKXl0mVYl?SRF;&Ws}u!chKYBB3>eFlcOP*w(h z6q5>hp(YiVROY0Drz_FJ0R2EonEnPvO isCaughtUp() ? 1 : 0); - } - - public boolean isCaughtUp() { - return isCaughtUp.get(); - } - - /** - * Set caught up state, and notify waiting threads if caught up. - */ - public synchronized void setAndNotify(boolean caughtUp) { - isCaughtUp.set(caughtUp); - if (caughtUp) { - // Readers are caught up, notify waiting threads - notifyAll(); - } - } - - /** - * Wait using Object.wait() until caught up or until thread is interrupted. - */ - public synchronized void resetAndWaitUntilCaughtUp() { - LOG.info("Waiting to catch up."); - // Explicitly set isCaughtUp to false before waiting - isCaughtUp.set(false); - try { - while (!isCaughtUp()) { - wait(); - } - } catch (InterruptedException e) { - LOG.error("{} was interrupted while waiting to catch up", Thread.currentThread()); - } - LOG.info("Caught up."); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/ClientIdUtil.docx b/src/java/com/twitter/search/earlybird/common/ClientIdUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..d76924cd711d96cd9d1bccb8d9feb49802054e4e GIT binary patch literal 37778 zcmagEWmsIvwm*!!dvJGm2`+))?ruRFcbDKEAh^4`yE_DTmq2j$e`jXSIWyZr@;W@FuuC@a4zg!1+L6*GxRfY?(M8MAc9j@phs4p*!y?Uq|}iRn}Z?D2k_H%xU# zAq0vsEm+{PuYhOH$L~2oTmtbxHs=7Jd z>%$Z$DD!T0AFn=I@VQ8~RzRZ0BS}hB}PiM468J_R)6mAVFnkf5?>AK##+O;&J zRlF^Z10``i?nRN(Pr3tWsOm^`zd@z4w#QU>1>N`E-_sPtkPAF6h3ehU&C1%0tNINi zf8|gWtWjzcj!7C}i2xOM0!3jgj~USK=7}; zmwf3c+;?6L$TgOsPomL&O(e)i?TRye_I!dbD*GTN(DSlbw7xGmdQY1Bj3KKBqVSI{ zx>HIEJpjA60R{pB5B#g|U~28i#Q6JK5kK)6oCU@2TtIx7qR6&URV;s5PwYrGU!eQ@ z_*tQ?k7VIWXNRJgt_D^Q;o?3Tk>-3r&SHhSkf2rk;okP}oER%C$b2r~cE1S-RaFcK7+D>4dtDy

gdpjt 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 aCC0xyv@#P0R?yO_l7+Ye%R?n~>D&KHU$jyH literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/ClientIdUtil.java b/src/java/com/twitter/search/earlybird/common/ClientIdUtil.java deleted file mode 100644 index 46b916adf..000000000 --- a/src/java/com/twitter/search/earlybird/common/ClientIdUtil.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.twitter.search.earlybird.common; - -import java.util.Optional; - -import com.twitter.common.optional.Optionals; -import com.twitter.search.common.util.FinagleUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.strato.opcontext.Attribution; -import com.twitter.strato.opcontext.HttpEndpoint; - -public final class ClientIdUtil { - // Blenders should always set the EarlybirdRequest.clientId field. It should be set to the Finagle - // client ID of the client that caused the blender to send this request to the roots. If the - // Finagle ID of the blender's client cannot be determined, it will be set to "unknown" (see - // com.twitter.search.common.util.FinagleUtil.UNKNOWN_CLIENT_NAME). However, other services that - // send requests to roots might not set EarlybirdRequest.clientId. - // - // So an "unset" clientId means: EarlybirdRequest.clientId was null. - // An "unknown" clientId means: the client that sent us the request - // tried setting EarlybirdRequest.clientId, but couldn't figure out a good value for it. - public static final String UNSET_CLIENT_ID = "unset"; - - private static final String CLIENT_ID_FOR_UNKNOWN_CLIENTS = "unknown_client_id"; - - private static final String CLIENT_ID_PREFIX = "client_id_"; - - private static final String FINAGLE_CLIENT_ID_AND_CLIENT_ID_PATTERN = - "finagle_id_%s_and_client_id_%s"; - - private static final String CLIENT_ID_AND_REQUEST_TYPE = "client_id_%s_and_type_%s"; - - private ClientIdUtil() { - } - - /** Returns the ID of the client that initiated this request or UNSET_CLIENT_ID if not set. */ - public static String getClientIdFromRequest(EarlybirdRequest request) { - return Optional - .ofNullable(request.getClientId()) - .map(String::toLowerCase) - .orElse(UNSET_CLIENT_ID); - } - - /** - * Returns the Strato http endpoint attribution as an Optional. - */ - public static Optional getClientIdFromHttpEndpointAttribution() { - return Optionals - .optional(Attribution.httpEndpoint()) - .map(HttpEndpoint::name) - .map(String::toLowerCase); - } - - /** Formats the given clientId into a string that can be used for stats. */ - public static String formatClientId(String clientId) { - return CLIENT_ID_PREFIX + clientId; - } - - /** - * Formats the given Finagle clientId and the given clientId into a single string that can be used - * for stats, or other purposes where the two IDs need to be combined. - */ - public static String formatFinagleClientIdAndClientId(String finagleClientId, String clientId) { - return String.format(FINAGLE_CLIENT_ID_AND_CLIENT_ID_PATTERN, finagleClientId, clientId); - } - - /** - * Formats the given clientId and requestType into a single string that can be used - * for stats or other purposes. - */ - public static String formatClientIdAndRequestType( - String clientId, String requestType) { - return String.format(CLIENT_ID_AND_REQUEST_TYPE, clientId, requestType); - } - - /** - * Format the quota client id - */ - public static String getQuotaClientId(String clientId) { - if (FinagleUtil.UNKNOWN_CLIENT_NAME.equals(clientId) || UNSET_CLIENT_ID.equals(clientId)) { - return CLIENT_ID_FOR_UNKNOWN_CLIENTS; - } - - return clientId; - } -} diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.docx b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.docx new file mode 100644 index 0000000000000000000000000000000000000000..c25241a6b6ad5d3e8ca02898723a1fb64bfde0c1 GIT binary patch literal 40778 zcmagEV|XUr)-4>fV|HwGY}*~%wr$(CZQHhOCmnQb%A!&!R~VZJ2mmk!1^|HcHL5OPZRKES<)E$LYGY`xN$p~3 z(U>SHz0M0Cboq{wM8l2eE&zv8wr4|TLm7)9Se<^)s=7jRE&=rXIKdvOI4ctjMje}x z`sj(XUdPqt(L|yyAb75+nW3Cd09@>mznMpUVZ?GE6pJsmEV_@qFbG!DlHu`vni-IG zzowsE8!_;bKS#|kQRNvRinKCX2@!WF5JHY?3^b%Vf0iY;gV07n?qq~?pTgu|OvdSb z!rPhPS-?jq>wSfqL@Coe9jeWjH6>K%N>MmSry*{@zSe1yqTbF}(Y9{Aw-DB42-+Hc z?w4f`wez?#!wFbjX~dnp+7_Z&;IDIQ^8k{X`D5TLMl1!e}Dy=amqx$Ax)G%LzrF5x5{GMV?x@ zcE0GOQ3f`aPumj#0?+%L0QFTiK`GA;L2WKFU)}-tr)${PLtW4{^rvsWRga=?oka(Z z>wbCq5|l~g>hFoz1qj`-y07jp(8cB71-X0QmWwwJc*Y(H@?Mc8wE$%Pql&I1;=E5^ z)!PCB0D%7bt8Hg!VNXN-=U5px`4gB9-sh5AXoR@fs!36>U{y=-Sh9e-CuQQI$jVE! zXsxSLR!~y~wHN2;a$nzQDLo%^g`&v9Us+Fe(JyzoS7n?0x}jZr10o5s!x!I0VJ|?{ zA}#!$5SG`F=%e_3yvX`D0K+T=^M#^@DK zh|yVf=F9&yC?p74-t_A-pZzij;maTcYke6zYa4qSeQP_zKNops+_+RfExgd9htPtg zQs^x_gpk+|z>~0_qR750tq+V$k{07x%#+*u1(s?#6iztX9K*LZ+?yK!&q;ES$C*ud(pq4^Y+44g9$hj8Pt(G%rGRY z0i(w{cX|f>1_#K%E1N3k+@eIk6LxNIXS+S^1gu&9tvUD`Y|{7K+4GVLUcX$34Rxn2 z>w&`B;f0004JvzLA07vT7KR$6_oi`H(qvt)jLlrwVP`JmV93mb$GdA&y7UAw9BI(_iB@J*OF;2CXxO76V;?d7+7H--FF6%ao2KFvegh_G)X*6I-Sm|2@?=A zXm^MEI)mQ`ImVXiXq@weyr(#nHaGL%o(7>00;RA!MugZrH}OJk*zR#K4L_z=FJR@UOg~ z3jSCV09V6~iEm0p@~$1TzCB}M{T5$&1FQlVcJu4?FtY|Jf!7pkwGDyDb841bsCK-j z{O2BZ1wL2R5Ghd-_NyK)CWSuvh4Rsnz_OaAlzJpeHWLPd6Y*}KS1aIwH7RICcsMu6gRb&g%5J)eTf$pGhVkXqU0TaUVfXA?{F7g`>q~l=g6U+(SfU z%a4fV*Rc0{^|KQVKui{qm?H^r_Vn0)lJu(Ib9XBo-23G@{3uTykv{k(QrS8(UOD6m zwGrEU%Z2H?cGvSRiXOs)<(XVIqt+(E!^sic=gs`hMv>AP0uR58-}F?n?_vpM9vN%( za%v+Uj#1E&3cjHO>UY%p69;B{N;&PhnX2rp4lV={K2fSZbcN-<4=SU?0@i5m3Pw2f z-@Cs@N8xNPo>afDhnVnsw6Nvp1{1Qv99;=NvB7TfrUFJ~U=BOxacC{6Dot4CBL;uC z$_=G|1NT0{0?62QvwET3e5?RTdlTP=zy*@)nv)Wx-dPmb1JXIE4@9aseps2?IV7Mm zu=cl))C9BM#vQtI3Q4}QR@@QTS-&BkP8@kmetP%?h_x$ZV9g2A=axwx*KtLKE0V@( zdlWqTpf9?wqnKu|Vv7A~uY`*3S4~c_E8AsyMoXIy3d`%udD_A7Xc}Uz!3%;cqCr4` z+rz#o^BVODH;{cA^Z7c-KYpuz#{7c?IiT}nx7f`|`Yn_jWaTB|2m}y}P>o$ykl!Bx zOAQ+Mqs^H`%EaCW=id95wMbrsOwyg={UYvl)WER|APnIhX4jxF7F(6>OYL%hudk02 zvX@IQcyog4%HR;*&d|k*N{h|}d1gBi0x<9^cVq!RvzKiOaGi@-KbYnQ*#F6wK%PO?R1@ zQB*WrvtfTk(kZX?W-XKQqp{*Wv6G{wXqDJ8+n6A6DZM;yc6-xI;W!C&J_~BFceI!b zOP;L>0+$N2pczn+vh*Nz=5(*j_x@8QG}uM4Ten7>Q2t@PA!4TuRw4l_UUf#W?=#|F*?J%a!9T^i7>KHz31j3`lu1`arfQ+bZR;O%M62*X z_fVH8y;1?h!6dH`%oYl4=+E-?wE(3S+`_vPBHFSX%3SWn(iX@-se51noc?%Wq-5K` zKJ=*wrg%y+v48ghvb)i_$lx0Qsa1wY6z)@(d-mBe4iJ-^DP`EoL`YwEwJSNjL7(Hw z+Tiopw_|Tlp=&VBHqZ|3(Z}zalv#4m`;-?|h43M~dJK((2=EwrLkv_whc0SR3;5us z3(hX;JoJ{VX5XK6;7rki1E;cQEF-UMVmfx3Tymk!&|(Rm+!E#S%UxyiHhoY(bg<#N z`1T^=Gn0L15GZD8q;BaMw_Mq4QjyZSjFhw6vbs2%F{?vwks5}%aGvsh-H@Nclbq>w ztG}FKv`AiYjw^Cyxlo(4B5&YHE~$uXxOy7qYvkjvjPyI=C51)Y0G|b zH(}bniW{LtJsg}M?Dl=jtf`9iK7I3IM|rWS*-}e_Tgu(P$xI$JlHRpCuPJSG1WPI% zmrrP6NxnKC0sokXqo2e~OFMdEDSh6V^l~O5sKh?9#?G(;YUIMJ`9C40th#GZqTHc`%JnPY&z8ic2a;A{)6R-q%nTe zQ_aBjC^OK!s@xh~GPSsP4^x|Cx_rvN62M4&wA%eO zP%_o~Mki1jAKw>$rkVM^BJyRsY|8K%MG94Z+mkQ}<-(vJ-S&Vf^!R{p8^yB;u_bn7 zeAyaFNPCwfdz%oWIr!1kWnsV5Q=G*5xgU7#v3U4H+1^otKUf<}8YRQ;UuIN}Mt_IN zh~}~01+E~=H>X*f=`x_mV-@}?&n1fh6iljMG5|5c8G7#!q^Tq%kOG5JfbV-3FFmfBeMnrMey?|Ja^~@{s1u9gT zdOZ-MvDv)Lb3T}gM%%Zf%=mq3yB|ooX2|R8efkq42yho>1c1k|j45KUSGYK_T-|bI zG?62-7QD7F$b(<*$cq~Qx$t|?D>{Fkl`p4qc)**`YS7E$b~(}8BgE4rFE2zIM>9wR zQzIXl*b@HPtv(y+uuPbcrNAe~4!pZ+{m{&>%AqpLZ79EjLsT$qK`A~#kBc(ip6D2) z+>p8HD{x|Q!+^yZft0qsx%gC-=7m~Uw6v7^6C>?(=7ylAq7K7|Qhd5yj=;4m+}11#GNSeI}hPpX5Qy$_CFJmNfvfR22uKn4ND z(tdBCuEDBuHN0nO#yOo)#(lFbdu_>4pxT=wVZp-fAAA`0h^f@D=(Xy6oJ9yuy`#!f z1$Fm_uH7!7siPuAeCKtr_`1X|u~s`hS=HdkZ4&nkdWfvc_^k)+ptKN+^x&|1fL$t>gMeX4Q9?75*m+&< z$$frE1qdX~!>@N=ckZ~2$}MUF`Z(5#%mg}m-@6aEMp^v4`RLs6gp_M#esOD0L`J9d z%gX{hKyBM-Ts_`(A0TvB5`;Gh_Rt3jv?w|r(|kWbqVo=>}k z+s7}-wjyc&wvG5$vSScgf$VB|5Hn&QGU}Gh2&PgTBX0=qe2DF&EV5E@w6A9>a%*{FOBg7 z;s||Lu_ll6I4oTnm79!SjL0$7;?a}f;f@XPJH*m{L$jW z&MST^i#%M4H>X~y!UKU-lAiUrjIS>#0c4qWpTMfDb*Lp~UbP`B888UE8kr%|!13qQ-b@EY75kSVHMm`VczqeMi=oBuXf?b5#VHhnnYdsan-O z!mQ1G><%>#5vs_dy^+JmwRB4N=S|Ui#K~4naUu1gtloaFP3%No`VAocY#*nGRU1v{ zDk$z3Ch9JhQS^syZHz_GYuy*lS~ee1a3&p$K;_b*f|CV;#y(^BhUXwwe}1B5%LJ!x z+3eS@$_R=4-IxKN?|Fc3GHC#G@>Ye(ebn2oErh! zB%dW?TW1j!12XPX>+ng>d@Zgo1I>@J^aRJ7rA)-+TEMgl^Kt1ieYAD>*SAn{t6FP> zR)mMzL|05HvBf43^%gFEYv_?zPLy9+H{-=#gIRRjj}(yp5)iXZD@Vh>1yS{^g@uS6 zlAHVT?iq{iB0HA_q?peH+UaY9qPgxNS8v3QQ1|C7*Pd_6Vo7iB zVP`?n*ywC#>2IZXcRA=p?Ez|>G}Ha9wE4plmJRMhh-!18ZL;@g{lSrWfYz;zXC`zR z6WJ=cL8lV1diSuDXqiy9d92#)+Rl6o%2Cxg310fXp8LJAXNUw7F7)7UB`l*%L0^Z` zORO98Z`m(JXo6~B`b5}>7`&&;J`mrjwVks`QxWj&~)gY6pV#WXr7S#I{)G)#l zk;Ms=#RG_JcFAk?vb^bm35U^0JIJkTOmN5sf!d&Cn#~+f`+2O--qsx&|Ivg@FkJ?NcrE_EvcJzXY7!~xZK7gmZ*8afKI}QCoj$}u z?MmAz7}iZpx^Jqs+yWPy;1O$m z0O4@d1qkeb?7?{%BIqq@Vk%1+7N4jjyA@h<0EzZmZZDLJz#cBdDdVDch8t_wToLZ% zM|kMNMBzR$n969-rU%Wu-*@<7HK3RtJ{X5Q?(|k>44SU(bgB|9ZPIiY+A5v|cUiMa z*xTMmfU=9HUo{&dD4CbOoXfE2kU<~n0)FBaqK5{Y_Wk(FEtZh-yUW3j@aiX0QSTfv z1N!cNxCd5uD;`% z6YNd|ntIWI4te8yj52T{(Ea_|E;r>($t{5{+3l8cYHlyGVJq%p`a@%n{z*S6n*+es zwqoFCzfT+6V@rd#|I(UGRgPk3uw@$;^KXvY7*a*%xEEkWV9hG8_xFCoytR-QMv-RVbNe0V^c*itG(byoAFK>y~wqLqYjVH>QVNQ#gG99ZNN^A@_t-^yb_qizzgDDWnTP^~w zO1E(hJL{=~0viC0tnHZ%EEct52A}xJm3*h#DvjA%Y+y9^Pz5qP#x2IXXP!S3d1x~_ z`Mi9oJiTR}V%tnAQrI70fV{&X7;3Fdkvy5ihJ(#1aJxF0aO3k!&yt zmD$zPq$QF=cueKTQ%s*fWOm$)?m!emcmd*Onh;~ff@OPwf1M^G5XU*$ysp|BQTB+r zMUXP?jLEskfc5%~p{PCKvg3xGYpSjkNLicGotA*zw_O*S0s9&HUKK2|s!uBJkz~{M zXfo_771POj^u`$c(ipbtmHmUT&T3y{!>P7w+`BI z9UY&6CYm6TVZ5k?1V8mJ_tPiGJ3&Y*+9?2Els&Efgov!G;KsXzKuvM)x%T5bk<(0Z zzt8&_YfS@%^07bZyA z{AXRiTm8HfEW>j7G_?Yc^TdXlfq;8 zTb12Q=+VOOAY8*algQVdb!Qdtcm5GGR2hmTFU=h=6cYK0->bwk;%jxV`RIOl`^G#5 z^W@R9*@w_Q2yL+3CcmW$wGlWeJu--8Yldc)#q3g|eZwZ%?v?rI0*WVL@6YaVJQbNM z!NxdGN4Jx(OYLjJ=I&cCiBuClp<%&GDz(G2SUYj80%T!$kwq$n#=BL!=zj7U--2NP zP@|xISK9&QD$*aCR0KMy?Fh0D!Nr91gh~$Bef9YEXS(@zc6O`muhGuQiFb33BQ#kV znHintg=ivIaV;+w@2l(eVI@x7FTfYnn2F8B#h21g@zAUvkGMN6)VRmGTGE2REgv7} z+Jd@M9tf3EfM$Z7i>=~Dt?kf$mOv&Sc0a3w(zsn-`? z(D@5M4LP`5od}?1x;Qw*Ac#uwVXaF%Nnv*qQ>v$*u0H>>31#JjiAev|ogDw_PGWs^ zC;w_f{oPyt_g2*3ef9)CX@6Supvw=azQB0oBCGK4XL%&;KZL6bJpzT-;vNJJw$(Qc zC_aB)(vq>%ICm-aOwm8r!8h-k*MgYMf&j-pFB61qTC7<@xiz@P&SK>jk*Yq-X zu5j{8&YssMnp7P9Opttos%<46sDmPE%(dceMX8D`I2M+V3#wyL15y>7jZ4uD&dzdh zYbUs#tZKRGtT5l<*-W$V-I1zS^6NtYsa;vr(IjLd*4eu}nz?^6!18_v*Mc%?Si}-2 zI`Dmy)QCjX22py<0Pbga(lH&|H(JsM5OnSqNEVa}24i3b#&mB>Wwa137VlF$bEON@#ca?(Zi$`jSYQI*Zbf~i-&boFt zTMfeY>_12IpI%3PJyOGI006WUK>^_Y>9xIstA(Nc-|arl_&wn|&+hKLeC@YimN5YU z!&6oOaZXse?wwh+mkg2&^Jgt-apSJvg2ZFI?0vvXa){t==!vd6tK* zKc1sMpI?_Rql$T&Pxm#So;R=ClNZ}xkLG{hw+9FBpSZr)aei2SwrvH{c&*`TB^6&y z_a6l(AMB2=pEj4jkDuN&xNcam6!YL#^!9X02eE}j)P3HW)~mU{F0PNeIfwCl+NfCf zBRsb6-yYt(d_ONAG0}buE?(~UYUIZ0H}+c18g^H;a$436lG4pdo;<1Hx!}qCK;@RO z6S^UlLR$#t&0_4NtD(w$w{8^?>A$eYA_ z@Duu>eg695)Omd0to|AOCk(jDYJh%c_IXtL>s8|YjY}Ff%lKWmmmQVcJDVHfZG8DY zxua{B>)Hm7Ab+%XAk9bDMpt`t#dzW%owsHChG&EAX7gtrb)$%9OKvz;k%Ubuj)X{ph_1@F3&sw!^;VjIq zHg#d%q_V5G;}hJuz1;ntb$bOeLtaJ&3xL{hu(p z<#4+taCCCGeTukx72E@Yo+0EOA@g32PF;7y=ca?CP+AJlp?>oUUU@r&iP>Z=f(N8f zI5J;Dy%apMHP&DM9a6pzn0^1$e3}ql0q3@oT6Z)A!uV0tMs&XY-oZ)9gPT-6?L51o z79&UB7u-A?zfuXiXm#KJyJp+73Rz#(Oz$mu`RKsbz5=zNG)<;yM@(~A;Iaz46WZ(f$JK93iVU2gIRpt4 zLe_ZhOQUkdkqyB&1^norqOzhTh;j)GNxO7`DY$R4n)6;R~37e?rKmLlJ}Y z9tqmwpTy?}P&TT{@yDz=kmExbZz1<+L);emAP2b0^Fpn4kmEsHZdGLFi$cf|QXu-- z#5MciW&G0Qh>nFX$m%E$+#$9GRAn7i=Y^NLL4^;9?*JX4;=e(S@r&sIEy(#ZY4SCR z`p-#_T_S5hzJHuw)rdh%4MO7zJ<=z(1@uqsbH=!@P`t16$o~pe`$7x+!u^lXzo|e< zNiWUtUH*&UQkL**1nMspNgbdDx&KSzzo25=ZmLlIlE2RScVSMLUwY)=zj8%x_(g>W zP4!%viT^t^lq^j7s& z!(D1m?D+{LhsIqWq+rBzHZt+1G!9}f}^maM8`Fiiz zs%bUo&iB^8JmHjUvf^^9{xme7UA^m4{dXIoIG5CsEYKQTbdpXu2A%%77~9xV zhoNS1o%+QG`*hEr2cEKHP?vOXw~pQ(&X+CmL~w;$_8~P(_f+!h*hFJ(5y~s^sO@HT zgp;iwy_>N^vJXEL`t1@owocAn*189xk{)vs=59z>yB(b6O{QQ+QA1A48eD)uhJPrc z?v`pVrTe{q3|tjSAC1#*IpBnLh>fMo{Txrkyix9@b8D6$H*sphXS}PvLg9xLC}&d)Qr6jxne9DCKb`p$blAFVYDEQO&u+o0NR#b&#YhOlohAWC^|@wJds7sAZoqqnv3^CVL8Z8l z18e#TV}bvD-T5$p|LpeU>to}TGF^=$r`-1%99RJR>C?C0 zF}iI>}qjH7a1Xv!jsC5VDZKq zW~{KJety(>9L+89J&MH5h-w3xu*ztylCaAxbnG(GlpAk$_KZag)j@(+zrQ zgR7w@Yt2m7Tc^;5Ej` z(xB;;em#eq36H#BZ%f`uKw+q-Vt*nOb~)~iV=^t5RR2Iht~BKE$=Mn>h%RwKpc=$g zkbbX&~%Mun^g*aRWEo=9R3uBFk{~lmbzi2|MdbS$7%SKoOR=_-JYT;pplH(wcJgh(rZbdEVZdor5eeQw&D5aoB-%VyQ2cr) z^+G9Ja=w)%KgoKiWL_MF?YNz#b}h`TRw~4etsdQr9n)KgTVu^6tNFzd`n7gwQHPy4 zHIwR_NiVL;k?c@RLI@c?;2ke)cYQF~RZq~9JE*XP5>iXzfUKMvL6E~ou!l<_0BH3_V;|t&GCv~Pe2AH=Qbo`s|~0{ zCU(q2WX#z3`4)jB6+E6s-CNB;^ z=O;Eg0{1Sf`CxO)9_BVN7!w_>Rng0{&HGI8jg?hU zrO`yi%B+|yAg6Ro%Zpg?XJy$|jjZ+$^@|q)VO%&gDy{;UQMywnF{Se?#eE%^%ag7? zusj?;#s&S9hv4o?xTC~yltW_-Xzl7;&+KZX3$u1DoSQ3>x7&FmOr*}^N3(mpu9QsT zeDkBVaBK}jvC^aWk1OTNMc_cA?Ws6BDRRMfteGM1D?$4TuwyzS5;df!wQq54LSsGw zD-G%EpdEmgPG~VgC6SckBa`SRd#hSIuWTl9*$l4{n=&W`AzLcyJLt!eok&vlcg&6! z%T6xaD2@=FkRIehAtNB(9S>%oFO|Uk8Yn$#@uCWfU2>QX40eVJA7DjCa;0& zAUb0WAv;rnr8Kr5g(YnCjH@0{J9U4EB6OlmuNdXAJov7swc5F!$ zv?WZE$KuXvTV(%*<9h^~!(z;>PN}iw?}y}aP!q7_kg@;ek+q{jBPGAJfhxcCp%2n{ zHs~s-#voh$@-dA37tADzfOS>q@nrMnppU$J`#~XWPO}cDBeqnL<1S=}oeIA-`_whi zmJjnV^a#P7a1!yI(Kl8|&h6_P%pbS*M%jNXDwxGQ+8Gwb-Pp$!(os8rTz>L&bP!RL z<9NNd1e06a3C4(EgnhFkA`bDsN%PXE>hj<|+wPMX%^^;8AkS#AW0tf|OqSd=@+m8R zU*Dfx)P%AZO?gDmn2pE{q!8N`s#Be32IgA{%ObyK3m=1#hnO#W;F@VSg&H|3MG;4< zwVWzjRRZ!9ZbrW12b3mDK7{AeDAQ^XZxX1>ggQC6PZP`6a>@Tra-ul_UUhnha{u!o ze5QT%+sJ8Ypd^~C^;bCRH&5ZtzrsuY5x($0;m3c%{c-p^%RHIytmc4k+|1tRg%;B5 z&6*sAvSn#NJ7jv0P72us;gZYH?&Hp5EQrae5E6=Z0tla(;;`!G!rP883B^PL%} zVwUB@tEls~G8F5nj9wz#$aeyPvSer`@!eV!I!lr*f(aY*Gwa;@E{jd7m2^GnwhyFM<_vrvAgf3w#XC?OiWjqX=}7czG7K%?ewDZ3t{&B zz|jdA(9PO(ak$Ub!>s}cV|148sq9;tmXG{D{B zYZ-(Z9s83Z8rmNv5M*B|CCvTiQ@EpLYikwa)$CKRJdr)>rBnb>paeQWheL){09m;D zc%}Ppit4e33OMQ%*A!1a($aMqSw(0J7bT&+*Z?8gHTz?6e&y(d0w`|UbkE)q8PGKt zspu=Ke#lY?l^Ql|DWZR|>4yCm8=K?*CmY#_i!aMH>2hrSkx6m2nHmVuwn^fN>6!gK z3gGAw<8>>0m`_K2+Po0&lj`J`iB^Ec^%&(Mf%hQD*vd}x+?iC8LU8{1>Dx#$@mER~ zeoFhbonM6KkR`gDGORKPGX1ZY!v+PaSElM9MC)Q}Qblv6fz(kSY8rBya5Dw*qT)TlN=Owqohzz6dKn=q?HwdO!Add zxf?_vDGJ~^`Tx^RvJsH1OBessk>7q1>8<~l;?air@Kj|pThriXB}?yOqeg>qcY7pv zRM}8p8D26aep(T4^WCL4J3W|O*+Zp(@2s^oe3L2FRD&wGp{4?9@{*DJrug>j2bO79 zJlVTm4&KLT`G;-m%gu9*H?;18XD2i<84hNoh?Xs3E9{W6{}X9&_0%IVbU_;V3sVC` z^oF|jqf%8Teo}9afTAK_0I&;Ph*v6LM%U6eVrw!}rt68mgc?}sp!hfgSAHh8R!TX% zB)<{4q1#oRUaks6^F1F?UkPk@HlI;o0N7_ws$){wmTBGh46{|gv9$q4Nl^-K1IJ_j)Jel$Ehi2q z&%zqlr@Ok<4;@6V+uhKjB*~ESWnM!DiUmsL$Fl>FhYdqLKsT6w=|TzS1%OkV!q1!m7QdPyKW{rz z1RsJt;~Nja7K20vsK-kwtOZ}2QdNTDEe<23Cq*eWQ&$_#s1{I z%JnDj-e468ThDU?x+^RvW~{&S78?D6{5sIpc+$=Jg$z0b4$2rbA*D8+hmST5O)*Pe z{+r4};Xf+naT~r=_JjXX2?AJ~qBq?7+k^JdKmg4W%2yQ7@fCQ)x8V~w#1~s1k19k( zLRsaTkP%0$DjLMd{lkQl=lQ=7*BLuXL5h^u%_>zS4ywGKjJ%4w3j*EMW)B{GgRu*< zvU=)dbyRx@=Vo@&kP|kDSon_UVH)cv+r@_H+~K{|-u=JfONiycu8% zwMRVqLzPkiV{s*!fi(U!z!u5y-K_)hs6wdm&%6_+0sPT|^y64Y{S6s__&XWEUdCVJ zRK#KuOJGgso%J?LhYCG)c(x3!_bG=pA@?rPN}-u_!oNF0NYCaHJ%h_ zz)Y9A%$dzfnsgm%k6}!I=R!QC8gBNN66O)SsnYC=L^k6CI?SXOI?R75%*8&$cI3@K zn*3X#)Bjd@lW`k78M|G<>?WJbcV6<{Zq%+s1N>$ncaCagzN+9m!-1>9pg=EdZ`qOp zxT=NTn?TKWW>oAp_Ma8{_<4J?oAR@rrz1O17F|pu7~a%rgL0ncWwi15{^&SzLb@ud zc;Vpr&@?~7$h?k*wzzmzi^&ZOY|7!R_M*Q}?4nI5k`27>UhC_@K1l^OYYiKebxG@4 z*;IeH)*_2{SYnpoJ%n?jc>@`+;}@e*y!k6vuF^@jSCfqr5TV~UBqp#OMrbV}le-@Q z_&y3ujB_2@BU^QG0VW}5s|ZO^g(y)uK z#YWkS*smMOh`Umh~c9&1X?k`Z}NCtN3*^5w)N4AcYgUgeb#`*9_RG5E$%Q^~W*m z7f;s=@OJL^BL3NB7k+PcU-vNa`KbCKerRmhx+V1pi<$7vhXoJec{%kuQ`WWx;A0Rb0vrG#~Pc`e7?72XJ+NewR6*945e||);xfk?0KVvG`6F2|GIKx zC!BU&+6>cuK^s@84WUIbchaU(;OKx0Rg5p>J%7!DJ3c(|DF89j$^<3PX=9@R28h$k zCPg2f8Hu^qzOH=cFA4gK&@5BIX%GwJvO`Q#lR0@s5zQ@|uq7{T#7Qx=cPN51usl-~ z?Ud5TApEo?z%-JX4L+|6^KyLKurvaw~_OVze~&Vsjb;1%{#3#FBmJGKoKN?XB%#|e3RTR zdGk!Mb4-CIyMG;ZHL-{J@=ABRQ(y?r8%$brI+Vp1i4AehGDe!D`J78Edh9bwx|N-j zjAKg8uU+n!vPqU}^9j!LGFEmZmlbY_Cz_~%o22nF2=@4WCb3iYIl0}nEm!Yf8F!b*vgA@NG$qM}^$xh4vza&{D&AX@D z4;d@HzLG>LGW}$?$ZEmH$wx!M;D}1sH6*dc`sygxg{~j$t)3qNwrr460pAHFHXw_l zsHllj2QN|_HoFa?k3AUNR{Y%7*0p0hX96va$hlke}{5g zX&Ll)hPOtB04+=7&c^q3n>X$Q3-rOAHueW?4kSWl|Jrrz0Eb`!@cV=S>VmZ3i6!9C zl#sIWRo)u}#{y00Lr~CmS}^CP7Ag8RvmR0Cz#Z&^rF0x$sqjs|8>GL8GyG0Gk|QP+l2d8-OlpE(=0y zvAn8t0o($MzT(F}J9^Ng+dW%qNY#bwg@z}G?*NDe?tzAJ(tN6-0i!XWgOmqY+snBz+2I=%Zf&%kEnWdR2fLxt^f;FwX^~wxr%!?FORcnjnRj0HW!^ai_=vAX z3&?+(XPK?>5A$j|ExJ-BSK?{^p%AJc`rs66cN~*+vIp2qN1imN)P)SftrQCpNbv_a z=uX@i9Uq>cje^*K?74@h4_c&kyTVVvn(zJ2`P#k4SW<<>O;Fzg9tZqFM*Bu2xU6dC z!(bNO@6oM6P-(l&-ahmqH&E)t@e7A}^2j%nnB|R`4U8Am!z8{w4nx`~)aWl%UOr%6 z0Q}CFadH;-Z0ERchrQw;P5E}T;n~C+L`q9m!X$+WLZ2OHAO_xK&Jge6uT~1Fjnu4TpBuMNq%xmN^N_Dvu7r9T z%{LtmmA52j#n@7q_R@y1r zw^T;!t4Bv*^1H=EhsFRc#D~j5gz&clwc#wc?>(r}rP}HE)Nd8L#xI?S(4Il&{)0LRos6Fcy64b z?1;R4d+XUv=u!ReQcY*OoynmwR5p*it?`KR{=+{T@KVjwBKq!|ch4(J&v~PeEZGKf z^NoQ{`z26W(pq1>J249rh(JWl?@2iZLrIcy1p1EwQjIpOeI(#P%m-JZ3u<8?0|PP5 zSOR)k!59dJe!fDmUd4m}newN zF*v@+IucGwF%WK>WllO*Zv>z0n}K%U2&`G$3#^swh>-h1d12E$HQFJkQM+uvlDu*0J~XkKi|WlKTxd`!B(M{}Sw%T?)$c zx8UACg0KDvuEIQZbfSA!I<@F>2jx+~Ri=1K#2vLL#~qdU2e3L>zPj)lqZ7OXjQ(jo{krk$Fp-gfxMb!>T6UU+UuB2Mw=$* zE9=_Q9pjU`{EdF=Uy&Y8n<<0XB|FP}+b3>c`3x^Yc~zRgAlsknhfs_UR>jlS^x8Xv+?4f@a^Z)9NQ~tBwkSf{O9_*LDIo6Jy zJ6{#02j#JLeY*MjDa;Rr=RCBFJ!PN3&g-1iJ}r7ois@f4OJE!-JKqO**uc4Q=_@rx z`TRAO!wt!8LsF5_gEah%Vk&8Qiv<-mq0pt_O4Rcn?;7Ez$BUUD@(jqVxpaG$h^qJ+ z8HY8tuuM-v$AA@4EWB(0DgY0HPG)B%6@f}*x)mY$Hbx&$1-NgzJes{AE&X;tdg-P{ zh~cI1I>PZb?9O@&Y3T9Lx4^zNZ_3gdTHg}jZSngs>O_C=UKb^-LeoZ-OMtR!an`i~ z4EGKzB4J%3VWDyNM(wcnUQ_qkF4tj=AA$h%UZYOQ+kAEW2VnSZHeB5Az@u0SC$xHO zH4K0BT<`hDfwIDKOT_KCWbd?GJ=22>Lq<6xL~(R+G^|KISSm@8vTD`y{ps}!McLxB zZlU})fUWc&fRoU_0Bjze{q{kI+aZR}dvKywwq4jOGNf!ejQk^jjM=k7F#~p5t{;x! zu&jTkcKYnMj4Al+5B8%&*UpfA=p=G+1OO8#)S#kxHlu>Ek5 z@xQ~#frs~>-tSQ1utFuFUuoLzyD!?k0?pj9}*MdK0@g^8$gZ3-_gTRY=M*2HuBKuc z0!B}^wetVnWSRRx1XIXIB;BEh^a&y5Pkr?kj0i+rd&ByI(jm*MY1$lR1G?M_3fK`- zP|YMNho`X-mE^itxU~|8o&x!eaygcsp#%sV2_3bk4@8(4r-%XW7KlRU(wdk=SfV0d zVnU5IoUUCS+?Gy}I!WHj>gWF<>@A?;SoUvW+&#FvySoG@FlcahcXxN!;2PZBHMlzj z_uv)?&Ku4-_r81o-+S*{v*@*$uHL`BcXiiPRhP7CSEt2r=)QG{jLYL=xXjFTtl5CJSq`34^!1~Sn0;^s>fu7k&;smp5{%Vnl#F=Y}7&M zK4GV*r%zQ{qu;Q)b}_6e)H+ql61zsExFn~{lTuD-B#xOflPZvHzqdTRhYZ$t)o~RyS#hU?U zk5moM!C`Um_(8@W{Y5){Lla;|+99W&dI)+cvs!(&c0pbm!F#l>A8-F^XmV3oxk8*Z zJhtuAACW@RzzPZ=ogRbOCjHMG1rxIOz7I}+g{lHN+bkneS;<#veG$73is#AljPmI} zB6@0QfJ0HL7AJAcsB19)$>Ql?g91iON`br`jCKO>o~lNqMAX**5~CEvh|&w0s~MlN zEzrvr%qzPt-f9Bye;?-3sLE?8vzxZQckW-G>rh{aPI2N&7U2)kIa=;e6r0jMP#bQi z3=W1&&=5lnAIcNGJF?CkB!0q}P~m**<79>Z)=xBx*EDX69tm5Hhg~x580^MG89##@ zKjST_83+sU35F6yHom#k%nP)H%->eHFY~!jpW3&=<#R}4b%sSLh+UbqLOzy4eh6m- z1O^N(iVATlv0twhN+9ID8d|0HBBcrpz1_v+pj{K7RAKIf0TE-{XA_3@H#jZ(R!4=M z0!cKsA8FlXgKKGgM?QiIwY3~&sjz|wR_XRrHy7H}SDVj}ewYXXoZv>Ame~sVMI}nO zw7qz=s4BmpRm{7k0b6PKeXY4HRm z)xTN5Bmd1Jr1zEpP@$+=ZRt`KcqGq*sGZ&tiG=ayvci8&^7(}p9cLvNVJu^AVOijS zgsD6;Ud-eY1tvaO&UTj$ZI7t01IqeyTITKnnD{hRbq`6{RpH^nsMi7n>*N7d&QCAp zU$>>^F+`L>ztm>lLAuaqdO>z$KIaSHnU4I@Imsk}#Y5pN{e)L)gJp?KFaa!{rfrqx zHM|wx*{p(5tliLM#qk^9vGW7M#6@8nuKCIL`gK<*0l+q@c#%Rq7HbUpwigL34T@6f zCz{f8OiN^%hr&l=LCo$;0CC7ut_E2VGw|KG=>X~B($~U-&)~>WZr0Asc+)HJl^Q@G zrGJ1hK7h3T4P^5HwBR?<bG+)9W* zXF6ydBjNL?#0a~Rzg;kSk+4)gpeV2TYpDS6I@FRUlD`$`BU4Q!zcyhzu|>{G0i77s zDp7cj=<+0FtPDq&xfdx;0P`jyCxQG7=RykEl>PY}cwOAaJW#>=1TG2WmMa!30b{fT z93nscZa|t#E@|0OKpIz({p0dA(L3^gkK5Px2%P8P00D8Tfdaw(?{WKT7S874rluxF z&VLW#_t8l!l&C*{e#B@x8I;dS1tA$7_nATi8`2%$yH3A<5Ui+J(8;JyJdvSo0gmDq z&hrdMS6y z@Agt}&yH$q{ro=aZg1D4LAU$;aQfgP^ZoJi{ps!0t>ZO!dVE9Y=K1cTqoxM=@-p`x zIJAGWYfXTkK@YQ|r>l~%IdkK1{>=_KGtDhiK35fa+)a;bZP;x}pPT!oXZiflplyv} z=rHQ;GHTu&x$E3?DpLSDoFa~kEM^r-hC`*&A5x>&AjPz{R)+ztq@huim!*) zE2qV+OP!vNwm{9jU$M<&nyIg!-+Qx;pPS|0+PF_q&m&`7z@@LBhoD|(S^K?vVaYqs zyWzM~(r|8YW>`zwfu~<0!PaTL(G*BP>TX@&>Q{Q!<4hN#Wyus z_E`OU|JLyJ(c7`@?S6}>{!cp3Zx)uvH{ZI~`+>8c{eLc5H|(FtmK7rc)Ks^+FrRGy zw7aVl*cxA3^vEtX8$T#lOjn?@Ppt^OU)QuaPhi?T%e^t`Hn=5lr4!O1ob0sy86~~n zX~m+zq8EB?^mwTEeyNoQboL0T%Okx#59>8oOmb?hZ*9q!lmro_GF1?%#>I`_JwNX} z_TSB)I6S`Rq@Ma+rp7Jrz2gxbzLyP#O|E(RdFOqB7PurV6e3KmIWEZ3uGcLZcyW5F zIQmW15nU&WXIF8`K!A)cON8|H-mtOLRyZarz<_mJ?ZZ{s#7WV3$c%?&H%wtUOlD~& zwh$}7F!il88&;7|dC>JfGmK2B!KPI?CwD_Q_R@?CX770wG4H|GHHfG?ccV81_|>m% z;8)nduh{PIguK-8-+)WmNFi|aRNqgJ|Gcx2s>{l`Pw&vfTpK((-@Q9#Jb>gXKFN5z zx_6j%n->kte5>8ERl3(Q8h3!P7H6uFkJ_*VE{ z6?QOx2plTd_3ZLEtXrOt%jHHCi(l&73+s7MvUpVTs?#4vszD|q5*sS+(xT|j4Jk2$od0x_DcJbAOp6iIo^?^{r_NQL7eHDXI8&9rQ z@TDm-a)js@xXI$8dT;VcJ-vRUsShTzRD%LMHo1BoWaTKs#=GWQ_s?wDmWS3$*3OoD z%#B1OR72MH=jPSrB;&Bp?GFxJdev^@e1b`gkY1DLMPNblwcp{?$yT%=D^acM!Ise7 zw0ysatyTMr1iq^E;`T|<>&Mtj9&Y=n@Ue!`loO;6pr6N17{t3u+75-G)kAW(16K4q#;>3R!Bb~-QV8CK8GBT9B5I#)JP|F zg7|tb_%R4Ew2a?@51%rit4>eT>Zk4^{?>1JbR7O8?XMMx&*D`PH(fEg^SxBa4k6lV zOaJ}oCU4Q_y@z&%WUUS83 zT$FL;TN`87&fQI%&++Kd;?wx!{_5`+i@Hf|M}qL%5aqTD?kwQ^#q^gulQ!>Hp0*yh z5F??grE#76?Yn`|xN-SRn>nA&egCO>x8yXA3;Vl6n_OS9$N9_YG`_a=&lhB4>&sPJ zX+CT15AuU8RmY=qc3Mur_Ul>(;gsK6My%0AoX5pA(cJ6y3w^avWC=6`(NDfJjLS=` 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.java b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.java deleted file mode 100644 index 303507b2b..000000000 --- a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestLogger.java +++ /dev/null @@ -1,365 +0,0 @@ -package com.twitter.search.earlybird.common; - -import java.util.EnumMap; -import java.util.Map; - -import scala.Option; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Maps; - -import com.twitter.context.TwitterContext; -import com.twitter.context.thriftscala.Viewer; -import com.twitter.decider.Decider; -import com.twitter.finagle.thrift.ClientId; -import com.twitter.finagle.thrift.ClientId$; -import com.twitter.search.TwitterContextPermit; -import com.twitter.search.common.constants.thriftjava.ThriftQuerySource; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.common.logging.RPCLogger; -import com.twitter.search.common.metrics.FailureRatioCounter; -import com.twitter.search.common.metrics.Timer; -import com.twitter.search.common.util.earlybird.TermStatisticsUtil; -import com.twitter.search.common.util.earlybird.ThriftSearchResultUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldRequest; -import com.twitter.search.earlybird.thrift.ThriftHistogramSettings; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftTermStatisticsRequest; - -import static com.twitter.search.common.util.earlybird.EarlybirdResponseUtil - .responseConsideredFailed; - - -public class EarlybirdRequestLogger extends RPCLogger { - protected enum ExtraFields { - QUERY_MAX_HITS_TO_PROCESS, - COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS, - RELEVANCE_OPTIONS_MAX_HITS_TO_PROCESS, - NUM_HITS_PROCESSED, - QUERY_COST, - CPU_TOTAL, - QUERY_SOURCE, - CLIENT_ID, - FINAGLE_CLIENT_ID - } - - protected enum ShardOnlyExtraFields { - NUM_SEARCHED_SEGMENTS, - SCORING_TIME_NANOS - } - - protected enum RootOnlyExtraFields { - CACHING_ALLOWED, - DEBUG_MODE, - CACHE_HIT, - USER_AGENT, - // See JIRA APPSEC-2303 for IP addresses logging - } - - private static final String LOG_FULL_REQUEST_DETAILS_ON_ERROR_DECIDER_KEY = - "log_full_request_details_on_error"; - private static final String LOG_FULL_REQUEST_DETAILS_RANDOM_FRACTION_DECIDER_KEY = - "log_full_request_details_random_fraction"; - private static final String LOG_FULL_SLOW_REQUEST_DETAILS_RANDOM_FRACTION_DECIDER_KEY = - "log_full_slow_request_details_random_fraction"; - private static final String SLOW_REQUEST_LATENCY_THRESHOLD_MS_DECIDER_KEY = - "slow_request_latency_threshold_ms"; - - private final Decider decider; - private final boolean enableLogUnknownClientRequests; - - private static final Map - FAILURE_RATIO_COUNTER_BY_QUERY_SOURCE = preBuildFailureRatioCounters(); - private static final FailureRatioCounter NO_QUERY_SOURCE_FAILURE_RATIO_COUNTER = - new FailureRatioCounter("earlybird_logger", "query_source", "not_set"); - - static EarlybirdRequestLogger buildForRoot( - String loggerName, int latencyWarnThreshold, Decider decider) { - - return new EarlybirdRequestLogger(loggerName, latencyWarnThreshold, - decider, true, RPCLogger.Fields.values(), ExtraFields.values(), - RootOnlyExtraFields.values()); - } - - static EarlybirdRequestLogger buildForShard( - String loggerName, int latencyWarnThreshold, Decider decider) { - - return new EarlybirdRequestLogger(loggerName, latencyWarnThreshold, - decider, false, RPCLogger.Fields.values(), ExtraFields.values(), - ShardOnlyExtraFields.values()); - } - - @VisibleForTesting - EarlybirdRequestLogger(String loggerName, int latencyWarnThreshold, Decider decider) { - this(loggerName, latencyWarnThreshold, decider, false, RPCLogger.Fields.values(), - ExtraFields.values(), RootOnlyExtraFields.values(), ShardOnlyExtraFields.values()); - } - - private EarlybirdRequestLogger(String loggerName, int latencyWarnThreshold, Decider decider, - boolean enableLogUnknownClientRequests, Enum[]... fieldEnums) { - super(loggerName, fieldEnums); - this.decider = decider; - this.enableLogUnknownClientRequests = enableLogUnknownClientRequests; - setLatencyWarnThreshold(latencyWarnThreshold); - } - - /** - * Logs the given earlybird request and response. - * - * @param request The earlybird request. - * @param response The earlybird response. - * @param timer The time it took to process this request. - */ - public void logRequest(EarlybirdRequest request, EarlybirdResponse response, Timer timer) { - try { - LogEntry entry = newLogEntry(); - - setRequestLogEntries(entry, request); - setResponseLogEntries(entry, response); - if (timer != null) { - entry.setField(ExtraFields.CPU_TOTAL, Long.toString(timer.getElapsedCpuTotal())); - } - - boolean wasError = response != null && responseConsideredFailed(response.getResponseCode()); - - long responseTime = response != null ? response.getResponseTime() : 0L; - - String logLine = writeLogLine(entry, responseTime, wasError); - - // This code path is called for pre/post logging - // Prevent same request showing up twice by only logging on post logging - if (response != null && DeciderUtil.isAvailableForRandomRecipient( - decider, LOG_FULL_REQUEST_DETAILS_RANDOM_FRACTION_DECIDER_KEY)) { - Base64RequestResponseForLogging.randomRequest(logLine, request, response).log(); - } - - // Unknown client request logging only applies to pre-logging. - if (enableLogUnknownClientRequests && response == null) { - UnknownClientRequestForLogging unknownClientRequestLogger = - UnknownClientRequestForLogging.unknownClientRequest(logLine, request); - if (unknownClientRequestLogger != null) { - unknownClientRequestLogger.log(); - } - } - - if (wasError - && DeciderUtil.isAvailableForRandomRecipient( - decider, LOG_FULL_REQUEST_DETAILS_ON_ERROR_DECIDER_KEY)) { - new RequestResponseForLogging(request, response).logFailedRequest(); - Base64RequestResponseForLogging.failedRequest(logLine, request, response).log(); - } - - boolean wasSlow = response != null - && responseTime >= DeciderUtil.getAvailability( - decider, SLOW_REQUEST_LATENCY_THRESHOLD_MS_DECIDER_KEY); - if (wasSlow - && DeciderUtil.isAvailableForRandomRecipient( - decider, LOG_FULL_SLOW_REQUEST_DETAILS_RANDOM_FRACTION_DECIDER_KEY)) { - Base64RequestResponseForLogging.slowRequest(logLine, request, response).log(); - } - - FailureRatioCounter failureRatioCounter = - FAILURE_RATIO_COUNTER_BY_QUERY_SOURCE.get(request.getQuerySource()); - if (failureRatioCounter != null) { - failureRatioCounter.requestFinished(!wasError); - } else { - NO_QUERY_SOURCE_FAILURE_RATIO_COUNTER.requestFinished(!wasError); - } - - } catch (Exception e) { - LOG.error("Exception building log entry ", e); - } - } - - private void setRequestLogEntries(LogEntry entry, EarlybirdRequest request) { - entry.setField(Fields.CLIENT_HOST, request.getClientHost()); - entry.setField(Fields.CLIENT_REQUEST_ID, request.getClientRequestID()); - entry.setField(Fields.REQUEST_TYPE, requestTypeForLog(request)); - - if (request.isSetSearchQuery()) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - entry.setField(Fields.QUERY, searchQuery.getSerializedQuery()); - - if (searchQuery.isSetMaxHitsToProcess()) { - entry.setField(ExtraFields.QUERY_MAX_HITS_TO_PROCESS, - Integer.toString(searchQuery.getMaxHitsToProcess())); - } - - if (searchQuery.isSetCollectorParams() - && searchQuery.getCollectorParams().isSetTerminationParams() - && searchQuery.getCollectorParams().getTerminationParams().isSetMaxHitsToProcess()) { - entry.setField(ExtraFields.COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS, - Integer.toString(searchQuery.getCollectorParams().getTerminationParams() - .getMaxHitsToProcess())); - } - - if (searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isSetMaxHitsToProcess()) { - entry.setField(ExtraFields.RELEVANCE_OPTIONS_MAX_HITS_TO_PROCESS, - Integer.toString(searchQuery.getRelevanceOptions().getMaxHitsToProcess())); - } - } - - entry.setField(Fields.NUM_REQUESTED, Integer.toString(numRequestedForLog(request))); - - if (request.isSetQuerySource()) { - entry.setField(ExtraFields.QUERY_SOURCE, request.getQuerySource().name()); - } - - if (request.isSetClientId()) { - entry.setField(ExtraFields.CLIENT_ID, request.getClientId()); - } - - entry.setField(RootOnlyExtraFields.CACHING_ALLOWED, - Boolean.toString(EarlybirdRequestUtil.isCachingAllowed(request))); - - entry.setField(RootOnlyExtraFields.DEBUG_MODE, Byte.toString(request.getDebugMode())); - - Option clientIdOption = ClientId$.MODULE$.current(); - if (clientIdOption.isDefined()) { - entry.setField(ExtraFields.FINAGLE_CLIENT_ID, clientIdOption.get().name()); - } - - setLogEntriesFromTwitterContext(entry); - } - - @VisibleForTesting - Option getTwitterContext() { - return TwitterContext.acquire(TwitterContextPermit.get()).apply(); - } - - private void setLogEntriesFromTwitterContext(LogEntry entry) { - Option viewerOption = getTwitterContext(); - if (viewerOption.nonEmpty()) { - Viewer viewer = viewerOption.get(); - - if (viewer.userAgent().nonEmpty()) { - String userAgent = viewer.userAgent().get(); - - // we only replace the comma in the user-agent with %2C to make it easily parseable, - // specially with command line tools like cut/sed/awk - userAgent = userAgent.replace(",", "%2C"); - - entry.setField(RootOnlyExtraFields.USER_AGENT, userAgent); - } - } - } - - private void setResponseLogEntries(LogEntry entry, EarlybirdResponse response) { - if (response != null) { - entry.setField(Fields.NUM_RETURNED, Integer.toString(numResultsForLog(response))); - entry.setField(Fields.RESPONSE_CODE, String.valueOf(response.getResponseCode())); - entry.setField(Fields.RESPONSE_TIME_MICROS, Long.toString(response.getResponseTimeMicros())); - if (response.isSetSearchResults()) { - entry.setField(ExtraFields.NUM_HITS_PROCESSED, - Integer.toString(response.getSearchResults().getNumHitsProcessed())); - entry.setField(ExtraFields.QUERY_COST, - Double.toString(response.getSearchResults().getQueryCost())); - if (response.getSearchResults().isSetScoringTimeNanos()) { - entry.setField(ShardOnlyExtraFields.SCORING_TIME_NANOS, - Long.toString(response.getSearchResults().getScoringTimeNanos())); - } - } - if (response.isSetCacheHit()) { - entry.setField(RootOnlyExtraFields.CACHE_HIT, String.valueOf(response.isCacheHit())); - } - if (response.isSetNumSearchedSegments()) { - entry.setField(ShardOnlyExtraFields.NUM_SEARCHED_SEGMENTS, - Integer.toString(response.getNumSearchedSegments())); - } - } - } - - private static int numRequestedForLog(EarlybirdRequest request) { - int num = 0; - if (request.isSetFacetRequest() && request.getFacetRequest().isSetFacetFields()) { - for (ThriftFacetFieldRequest field : request.getFacetRequest().getFacetFields()) { - num += field.getNumResults(); - } - } else if (request.isSetTermStatisticsRequest()) { - num = request.getTermStatisticsRequest().getTermRequestsSize(); - } else if (request.isSetSearchQuery()) { - num = request.getSearchQuery().isSetCollectorParams() - ? request.getSearchQuery().getCollectorParams().getNumResultsToReturn() : 0; - if (request.getSearchQuery().getSearchStatusIdsSize() > 0) { - num = Math.max(num, request.getSearchQuery().getSearchStatusIdsSize()); - } - } - return num; - } - - /** - * Returns the number of results in the given response. If the response is a term stats response, - * then the returned value will be the number of term results. If the response is a facet - * response, then the returned value will be the number of facet results. Otherwise, the returned - * value will be the number of search results. - */ - public static int numResultsForLog(EarlybirdResponse response) { - if (response == null) { - return 0; - } else if (response.isSetFacetResults()) { - return ThriftSearchResultUtil.numFacetResults(response.getFacetResults()); - } else if (response.isSetTermStatisticsResults()) { - return response.getTermStatisticsResults().getTermResultsSize(); - } else { - return ThriftSearchResultUtil.numResults(response.getSearchResults()); - } - } - - private static String requestTypeForLog(EarlybirdRequest request) { - StringBuilder requestType = new StringBuilder(64); - if (request.isSetFacetRequest()) { - requestType.append("FACETS"); - int numFields = request.getFacetRequest().getFacetFieldsSize(); - if (numFields > 0) { - // For 1 or 2 fields, just put them in the request type. For more, just log the number. - if (numFields <= 2) { - for (ThriftFacetFieldRequest field : request.getFacetRequest().getFacetFields()) { - requestType.append(":").append(field.getFieldName().toUpperCase()); - } - } else { - requestType.append(":MULTI-").append(numFields); - } - } - } else if (request.isSetTermStatisticsRequest()) { - ThriftTermStatisticsRequest termStatsRequest = request.getTermStatisticsRequest(); - requestType.append("TERMSTATS-") - .append(termStatsRequest.getTermRequestsSize()); - - ThriftHistogramSettings histoSettings = termStatsRequest.getHistogramSettings(); - if (histoSettings != null) { - String binSizeVal = String.valueOf(TermStatisticsUtil.determineBinSize(histoSettings)); - String numBinsVal = String.valueOf(histoSettings.getNumBins()); - requestType.append(":NUMBINS-").append(numBinsVal).append(":BINSIZE-").append(binSizeVal); - } - } else if (request.isSetSearchQuery()) { - requestType.append("SEARCH:"); - requestType.append(request.getSearchQuery().getRankingMode().name()); - // Denote when a from user id is present. - if (request.getSearchQuery().isSetFromUserIDFilter64()) { - requestType.append(":NETWORK-") - .append(request.getSearchQuery().getFromUserIDFilter64Size()); - } - // Denote when required status ids are present. - if (request.getSearchQuery().getSearchStatusIdsSize() > 0) { - requestType.append(":IDS-").append(request.getSearchQuery().getSearchStatusIdsSize()); - } - } - return requestType.toString(); - } - - private static Map preBuildFailureRatioCounters() { - Map counterByQuerySource = - new EnumMap<>(ThriftQuerySource.class); - - for (ThriftQuerySource thriftQuerySource : ThriftQuerySource.values()) { - FailureRatioCounter counter = new FailureRatioCounter("earlybird_logger", "query_source", - thriftQuerySource.toString()); - counterByQuerySource.put(thriftQuerySource, counter); - } - - return Maps.immutableEnumMap(counterByQuerySource); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.docx b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.docx new file mode 100644 index 0000000000000000000000000000000000000000..48e235c7707787aa3f6cdac0d22eb6b78fe83540 GIT binary patch literal 37031 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 ZhT1v|@MZ<(AW*InWJm;N4}%^M4*+(_L%aY0 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.java b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.java deleted file mode 100644 index ab0d709f4..000000000 --- a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPostLogger.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.twitter.search.earlybird.common; - -import com.twitter.decider.Decider; -import com.twitter.search.common.metrics.Timer; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; - -public final class EarlybirdRequestPostLogger { - private final EarlybirdRequestLogger logger; - - public static EarlybirdRequestPostLogger buildForRoot( - int latencyWarnThreshold, Decider decider) { - - EarlybirdRequestLogger requestLogger = EarlybirdRequestLogger.buildForRoot( - EarlybirdRequestPostLogger.class.getName(), latencyWarnThreshold, decider); - - return new EarlybirdRequestPostLogger(requestLogger); - } - - public static EarlybirdRequestPostLogger buildForShard( - int latencyWarnThreshold, Decider decider) { - - EarlybirdRequestLogger requestLogger = EarlybirdRequestLogger.buildForShard( - EarlybirdRequestPostLogger.class.getName(), latencyWarnThreshold, decider); - - return new EarlybirdRequestPostLogger(requestLogger); - } - - private EarlybirdRequestPostLogger(EarlybirdRequestLogger logger) { - this.logger = logger; - } - - public void logRequest(EarlybirdRequest request, EarlybirdResponse response, Timer timer) { - EarlybirdRequestUtil.updateHitsCounters(request); - logger.logRequest(request, response, timer); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPreLogger.docx b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestPreLogger.docx new file mode 100644 index 0000000000000000000000000000000000000000..1a19197ac8843a154a9c4bddddeb8d79cd38f50a GIT binary patch literal 36986 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

NB(+Jf3bmiu!Yxo{NHQN?L$FQ#KUEIH&QBYp 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestUtil.java b/src/java/com/twitter/search/earlybird/common/EarlybirdRequestUtil.java deleted file mode 100644 index 6cdd322c5..000000000 --- a/src/java/com/twitter/search/earlybird/common/EarlybirdRequestUtil.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.twitter.search.earlybird.common; - -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchMovingAverage; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.query.thriftjava.CollectorParams; -import com.twitter.search.common.query.thriftjava.CollectorTerminationParams; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; - -public final class EarlybirdRequestUtil { - // This logger is setup to log to a separate set of log files (request_info) and use an - // async logger so as to not block the searcher thread. See search/earlybird/config/log4j.xml - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdRequestUtil.class); - - @VisibleForTesting - static final SearchMovingAverage REQUESTED_NUM_RESULTS_STAT = - SearchMovingAverage.export("requested_num_results"); - - @VisibleForTesting - static final SearchMovingAverage REQUESTED_MAX_HITS_TO_PROCESS_STAT = - SearchMovingAverage.export("requested_max_hits_to_process"); - - @VisibleForTesting - static final SearchMovingAverage REQUESTED_COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS_STAT = - SearchMovingAverage.export("requested_collector_params_max_hits_to_process"); - - @VisibleForTesting - static final SearchMovingAverage REQUESTED_RELEVANCE_OPTIONS_MAX_HITS_TO_PROCESS_STAT = - SearchMovingAverage.export("requested_relevance_options_max_hits_to_process"); - - @VisibleForTesting - static final SearchCounter REQUESTED_MAX_HITS_TO_PROCESS_ARE_DIFFERENT_STAT = - SearchCounter.export("requested_max_hits_to_process_are_different"); - - private static final SearchRateCounter REQUEST_WITH_MORE_THAN_2K_NUM_RESULTS_STAT = - SearchRateCounter.export("request_with_more_than_2k_num_result"); - private static final SearchRateCounter REQUEST_WITH_MORE_THAN_4K_NUM_RESULTS_STAT = - SearchRateCounter.export("request_with_more_than_4k_num_result"); - - // Stats for tracking clock skew between earlybird and the client-specified request timestamp. - @VisibleForTesting - public static final SearchTimerStats CLIENT_CLOCK_DIFF_ABS = - SearchTimerStats.export("client_clock_diff_abs", TimeUnit.MILLISECONDS, false, true); - @VisibleForTesting - public static final SearchTimerStats CLIENT_CLOCK_DIFF_POS = - SearchTimerStats.export("client_clock_diff_pos", TimeUnit.MILLISECONDS, false, true); - @VisibleForTesting - public static final SearchTimerStats CLIENT_CLOCK_DIFF_NEG = - SearchTimerStats.export("client_clock_diff_neg", TimeUnit.MILLISECONDS, false, true); - @VisibleForTesting - public static final SearchRateCounter CLIENT_CLOCK_DIFF_MISSING = - SearchRateCounter.export("client_clock_diff_missing"); - - private static final int MAX_NUM_RESULTS = 4000; - private static final int OLD_MAX_NUM_RESULTS = 2000; - - private EarlybirdRequestUtil() { - } - - /** - * Logs and fixes some potentially excessive values in the given request. - */ - public static void logAndFixExcessiveValues(EarlybirdRequest request) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - if (searchQuery != null) { - int maxHitsToProcess = 0; - int numResultsToReturn = 0; - - if (searchQuery.isSetCollectorParams()) { - numResultsToReturn = searchQuery.getCollectorParams().getNumResultsToReturn(); - - if (searchQuery.getCollectorParams().isSetTerminationParams()) { - maxHitsToProcess = - searchQuery.getCollectorParams().getTerminationParams().getMaxHitsToProcess(); - } - } - - if (maxHitsToProcess > 50000) { - LOG.warn("Excessive max hits in " + request.toString()); - } - - // We used to limit number of results to 2000. These two counters help us track if we receive - // too many requests with large number of results set. - String warningMessageTemplate = "Exceed %d num result in %s"; - if (numResultsToReturn > MAX_NUM_RESULTS) { - LOG.warn(String.format(warningMessageTemplate, MAX_NUM_RESULTS, request.toString())); - REQUEST_WITH_MORE_THAN_4K_NUM_RESULTS_STAT.increment(); - searchQuery.getCollectorParams().setNumResultsToReturn(MAX_NUM_RESULTS); - } else if (numResultsToReturn > OLD_MAX_NUM_RESULTS) { - LOG.warn(String.format(warningMessageTemplate, OLD_MAX_NUM_RESULTS, request.toString())); - REQUEST_WITH_MORE_THAN_2K_NUM_RESULTS_STAT.increment(); - } - - ThriftSearchRelevanceOptions options = searchQuery.getRelevanceOptions(); - if (options != null) { - if (options.getMaxHitsToProcess() > 50000) { - LOG.warn("Excessive max hits in " + request.toString()); - } - } - } - } - - /** - * Sets {@code request.searchQuery.collectorParams} if they are not already set. - */ - public static void checkAndSetCollectorParams(EarlybirdRequest request) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - if (searchQuery == null) { - return; - } - - if (!searchQuery.isSetCollectorParams()) { - searchQuery.setCollectorParams(new CollectorParams()); - } - if (!searchQuery.getCollectorParams().isSetNumResultsToReturn()) { - searchQuery.getCollectorParams().setNumResultsToReturn(searchQuery.getNumResults()); - } - if (!searchQuery.getCollectorParams().isSetTerminationParams()) { - CollectorTerminationParams terminationParams = new CollectorTerminationParams(); - if (request.isSetTimeoutMs()) { - terminationParams.setTimeoutMs(request.getTimeoutMs()); - } - if (request.isSetMaxQueryCost()) { - terminationParams.setMaxQueryCost(request.getMaxQueryCost()); - } - searchQuery.getCollectorParams().setTerminationParams(terminationParams); - } - setMaxHitsToProcess(searchQuery); - } - - // Early birds will only look for maxHitsToProcess in CollectorParameters.TerminationParameters. - // Priority to set CollectorParameters.TerminationParameters.maxHitsToProcess is - // 1 Collector parameters - // 2 RelevanceParameters - // 3 ThrfitQuery.maxHitsToProcess - private static void setMaxHitsToProcess(ThriftSearchQuery thriftSearchQuery) { - CollectorTerminationParams terminationParams = thriftSearchQuery - .getCollectorParams().getTerminationParams(); - if (!terminationParams.isSetMaxHitsToProcess()) { - if (thriftSearchQuery.isSetRelevanceOptions() - && thriftSearchQuery.getRelevanceOptions().isSetMaxHitsToProcess()) { - terminationParams.setMaxHitsToProcess( - thriftSearchQuery.getRelevanceOptions().getMaxHitsToProcess()); - } else { - terminationParams.setMaxHitsToProcess(thriftSearchQuery.getMaxHitsToProcess()); - } - } - } - - /** - * Creates a copy of the given request and unsets the binary fields to make the logged line for - * this request look nicer. - */ - public static EarlybirdRequest copyAndClearUnnecessaryValuesForLogging(EarlybirdRequest request) { - EarlybirdRequest copiedRequest = request.deepCopy(); - - if (copiedRequest.isSetSearchQuery()) { - // These fields are very large and the binary data doesn't play well with formz - copiedRequest.getSearchQuery().unsetTrustedFilter(); - copiedRequest.getSearchQuery().unsetDirectFollowFilter(); - } - - return copiedRequest; - } - - /** - * Updates some hit-related stats based on the parameters in the given request. - */ - public static void updateHitsCounters(EarlybirdRequest request) { - if ((request == null) || !request.isSetSearchQuery()) { - return; - } - - ThriftSearchQuery searchQuery = request.getSearchQuery(); - - if (searchQuery.isSetNumResults()) { - REQUESTED_NUM_RESULTS_STAT.addSample(searchQuery.getNumResults()); - } - - if (searchQuery.isSetMaxHitsToProcess()) { - REQUESTED_MAX_HITS_TO_PROCESS_STAT.addSample(searchQuery.getMaxHitsToProcess()); - } - - Integer collectorParamsMaxHitsToProcess = null; - if (searchQuery.isSetCollectorParams() - && searchQuery.getCollectorParams().isSetTerminationParams() - && searchQuery.getCollectorParams().getTerminationParams().isSetMaxHitsToProcess()) { - collectorParamsMaxHitsToProcess = - searchQuery.getCollectorParams().getTerminationParams().getMaxHitsToProcess(); - REQUESTED_COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS_STAT - .addSample(collectorParamsMaxHitsToProcess); - } - - Integer relevanceOptionsMaxHitsToProcess = null; - if (searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isSetMaxHitsToProcess()) { - relevanceOptionsMaxHitsToProcess = searchQuery.getRelevanceOptions().getMaxHitsToProcess(); - REQUESTED_RELEVANCE_OPTIONS_MAX_HITS_TO_PROCESS_STAT - .addSample(relevanceOptionsMaxHitsToProcess); - } - - if ((collectorParamsMaxHitsToProcess != null) - && (relevanceOptionsMaxHitsToProcess != null) - && (collectorParamsMaxHitsToProcess != relevanceOptionsMaxHitsToProcess)) { - REQUESTED_MAX_HITS_TO_PROCESS_ARE_DIFFERENT_STAT.increment(); - } - } - - public static boolean isCachingAllowed(EarlybirdRequest request) { - return !request.isSetCachingParams() || request.getCachingParams().isCache(); - } - - /** - * Track the clock difference between this server and its client's specified request time. - * When there is no clock drift between machines, this will record the inflight time between this - * server and the client. - * - * @param request the incoming earlybird request. - */ - public static void recordClientClockDiff(EarlybirdRequest request) { - if (request.isSetClientRequestTimeMs()) { - final long timeDiff = System.currentTimeMillis() - request.getClientRequestTimeMs(); - final long timeDiffAbs = Math.abs(timeDiff); - if (timeDiff >= 0) { - CLIENT_CLOCK_DIFF_POS.timerIncrement(timeDiffAbs); - } else { - CLIENT_CLOCK_DIFF_NEG.timerIncrement(timeDiffAbs); - } - CLIENT_CLOCK_DIFF_ABS.timerIncrement(timeDiffAbs); - } else { - CLIENT_CLOCK_DIFF_MISSING.increment(); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.docx b/src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.docx new file mode 100644 index 0000000000000000000000000000000000000000..b32783db3d50847dbc48c9b4a8a8a610bf6a2f1b GIT binary patch literal 36999 zcmagFWmsIvwm*z(a1AcO-Q6V++}$l`Bf+8Z0Kq-DySuwP1b3G}aQA;_X3jY?=id9i zUp5a_wSKbJuG-bRs}*G+p)kR~z~I2vlDRa?mGff~z`?*qV8FmIK&?7r0J|?{c3%us z-R;es^cdZ2ZR!)`6jp>$zn;BdB{B(;c#5H5m2BHn+tbJ3iC3oHaBD3xoybBw+>P;u zs!b~f!!X9ACEs}yt<(r~cr{S!h>4%*>7{Apl0g=F<*wy0o|<#*NyLy!FG%eW&i2Dp zHKlpIpX3B*-l^*4H9!wK6V1~0Ptbe-i=--#Qb#8q2!c}<7=aF{%$?@SZX>r>RX!S` z+M)ZrH=^kBGUnq-_8{gfk@2#~NU5G~or=)n$NfFj@LWyut6^PipHsEVI9;uyg_=Xn zN_Rf8+W;Z}^~bJl7o+Q_2HO!#O>y|OiuO9XRnYDUz&en!YUU6!L*vbkFY9<%iNkC>TyG9XVr1SoS%ErBJmT`+ZQ=$3)PBN!p7$5XPy0sD%eeRN z{3`CGp4$udoLBsFOl0X3X>?u^2=mZ7V~n0W9}x>n--`=&KQ9!n?Fo(Ck>xyL%ISkC z{-cWSlrqBipz5tdfPo=`{u(%%**GyV{=SySj(>t=LG?Wolo+BYv};fk&s)+LKa|T8 z?D{@-T3`p1Dp>AlR}$CL#O@|KINLEXpHI!jU!*Ir3D7Xsn)ABWdhdU2h+5zKQO!{ClvLw1W z4ZG#BRq?Y<=>_9qfS7`czT1aunDI9BK5mOT{=(^|osatrAIQfwJSNPY*8`M%>?etS zF;^#@Y1cu{d^GeIF=5mhWfxA`@^nF34{9Rc=EOeO$Fv)?y)dhDot zFEgsdotMO{oOuO9vCl|$LLX{ou@pYQamxnE1+PL|Vf%1hhXrq?0cqt+Rm-EvC5sP`P#Y=m z*T;TC<^41>>M9skf)keq=yxdKY{E*(%C1f7tef9XoE#lCCS4%)O5ZgGze7%ZpFMq2 zR3_}74Y#V}vJU9WuO6J8-CkvIqVN^^V%o%3h4Iob%1xDI1Wa4YMjmt(un2}vkH5RV zuw+S%m&Pm+|;U_5C6N-96U@6z-7)vOdj>tJv#v&n5mp>vFxa zf^!V2iwzVQ80z2aVq|asM_E)y?N*pk+n(s4^uBzvgcVW3jrE@wnHF2atBOr)oE;(i z6a&@FvJLcp2*Kj{%5)RTSIhTQH}bR~Vh&p;|5*)d^dVu0PnG;kA zbTO8CKboF{!Q@E!91H{emt+maiV;t;TH~<`B3OGT1-i*E%gDm(b)E&S^7dX+&t}3B zzg(*C`_2;->lfF*D={m4D}{Wi{9Ni@G%3LGap&epD=`5HSrWqNg$-)dz0{I=DMS)S zjs%~@u>E}OGn5sg=a-ur)1PQr7PdM#{4?aj$3*n@mox9~`w(_-5sz(4O&&olQA(qoe9mU#=(Kug0`N#P6Spa2OgRW#a0lo z8GH{w1s!iKfUEe?MSGk0?layCD&vJM%faS@vjF0eD-1WVsTQ6n=>*>9WjK74$gjy} zBPl^}Tw~({UvL_Znx~CIOj6&9v{1gn$M&{Vre`LibNJMUEBv>)n_tBLyfH{ba4+H@ z!N52`v-S6cbp<$@GJ$5Tvn}Z1^!v^j*VF+lGh+fbDy!UZ_2wx3T*_n+%a**QT&TAQWs4(12QrM14v&iE<}J?JJr-MtTi!X#<=ZLEn= zOW5M0IhRwV(e%2EGQ&0r3Ho|Wun>GEv{;I%3~u=?kG2PnEuWM|i?wsAZ>B2x#vu@q{R<5f zSW1}2%RZWaH-yHgrr1)W&l@m74i|RVWv!VGn6aeKZKhLu#r>?IixD5hHr5(Z9cX&z zN%d+>@3WZEvkNnb2@X4HKBiqFAXZHo3acPU%tpxLUyM08v9gcbBJAy^z5A(CEA zS?5cH#r?d=b_)8j-d=x7JkeKT|NXS(Bm?$e0w`k9=toQ9Y(v;m2y~&l>z@_pAHQoB zA27+)XNY1@GQ%Ar6=#U(16bwnOs!%v*JoMvi`hrQV)!$4tRBMyZW5*G8)c-o#OA8s zqh%0h)=F>!M8P=-og`7W7IEt|O|tKJ(kNBML)Nvat$OpJ)C9wKp)F3;jt&qlw~J|$<>3oM>Zz0vf69XZ@1PWm0}i{u=~R0Z21RC+*Ii4&Z>`&qY9;oPu6 zn;QQ!cAebhb@k@__3pK4$gEw$fcNYcajqX@y=Lhh7iFiwYoRoWzW6I=iAJ<(dr9Aq z3h{e%g8y>{+xg<7vx1iPQP9#(@UI#C=f>pk^Z3tAO1y|d05k5_vsZ+kpg7C|yRi4a zawuDAB`fp2f+Uw?Z^iaDbk=Uv(jx^&zsiZ z;GHA)mm2<8+qahWASU24v3_FV`DE`waMIq^=*n?p>C5QxWu5z~4OgKMaang)yTVtV zknozfYs*?~&!@SSQ4iN|LT~n(fL^q_)}5>U8@Kl-r9+<$?t%*!dV%$VM795#=vW_1w6t@P01MUr&R-QnjTsM5yPf$h&PafC2xu;%) zM8^eAG}b};H(O6$NgpDh;0GT{pZ+(*+t!(j(_`1s9jn?0+)qfbZcBkC?U^T$sZZw# zHZEg zU7fRzmm9H1bLAwWUWbh}CX@}}cL`!Isf-iSx4z1UPUG&%(K*V*+UGCY!9cVW3cN3^ z@a^a8c&$l7K=&}!RxiF24ARQb=<6yJ==|VQbl%C}T9n|*3Za)O18*%MZ|)$bw$>=K zARM2U*MnYjAGnw6wU;j`y3bX>rM3-zfpXWg)8Hho(+nj06b_@e)ztIpD7o&6JH%6WgD*M`_3mMqf(TuA`}*7;vO|(<1)cMaqkcsuaFs_vrEVI;E82F z6@tF%L#Y3ZDlli0JRy_1NqmnAfk+Y5)J-R(R0RP2w@?4lXZ8L~?|w{b5mwMne#O}g z0*|(!<-^IwOB+AE5OHGVr0evmcC<2UPjKU4++sQMoZU_D&#DdY3QQ9%E92*+g@Zi@ zr!wrkqQ@w-^X8`oqbpS!tG;B5`+&DLy^8tCr<0jS`#Xo1LFwBop_4PgG$qM;y}8-* z-u?-x5pTWwZY4x%SJY|&h)Yv@_Y^+o#0v_kjY(lvP*Wk+bl<8< zB)EmqV!*|TjPh7Jx?WnlF39o2R^K$uy!@Uri^2gKQB3KUZPAV2f)+G+U2vXGUeABp z(xnj%{6O=u`7KrJ1fPtF}DcxGOzHnb}KtV$a7NlHno2wgdztu&B+50j2m zhGF3oT&#RcXPM6i0n@$uNZTOhd|4YyYA(2v%|&M8OEKPe?Qit2PivO#d=+PXc}w4_ zSlBkC7d36S<52TBAwR(>ry@{5bsva3kRHY52GZASDT_ugf1x3TvslOMGJv}(@Wl*t zR}n^7ZlfVVv|TSt&y|8xCZ|L9w~uY~B}v=WjTWgtOh_%DeJByd#jh;VfcRyPGWTvF0CCH z`Wd|9+H)iwMC#7oXAj^$T0Yvu^Q{S8pAaPclBnXNi<%nTIyQWoF?1Gfoe0D=XZIai zmj*{|Ug^UH70tC3%#^Y{c8on}{?+#lP`T|_5rtZ8<4w)qbM@dzf8_9f`Fw+Ke#Vxol_}}?AO?GK zbk~FnQFon1&V|UdJs=xzgHV1y)GD^!q;PMC<>775TWJL0jOF>t*~iQEtSRmTO8&Z2 zNY(regUSlwhmn?Wjm0?ZR;wEF@#fd=wU_~=TUym#$As1OqZ7B~&c4XRyR7&hmz3O{ zUtCo_PaqFtha8vGxj{k=(yC!^6&uW_`oFyPofjw^jIyqOAqs7i9!XXHG@82k99zN# zO(QmcCMV5H%vw9+ZY`1^b29IfCXTN0ppbtU($J2@o^HceEpX;*;$k*xvJz;l%#PA?UuMNubwZOAq9K zb9Dgbs0C6nxmvd78sfE@KTqRYe|;qi7+cwclmEyDRQx_onM79{F@iCt#W>s8fAaxx zCXOCl!PvC?F^z7?LT^u3j67`=p0c-j(5a%0uKAsYBbx5;eoJh`&rc266{gO;37F}9 zTfCtGKR-nJ#;r=FHVB#=AF-ug`K+90p)CYRekWo-`U=bQ=%zRzLqCW-u^|b!neE`a z$;G$;(3S0UXx-u>_kJ$;u)uyMVN!t;!P5SD6^Y3);+)I^^<}^P5c6nzUyPVb>0>U> zS46ocM)vM6+0tCPpUa{UY3wV&1Dudhy(~v=@@Wc~$XM&JZ_loRPh~rp&fZ zx;|bHUcO!q^n0|vIJg7vUK8HtPabD}J|EdL8@0VQ38mjMJx>lod%S|7ETy_P2|^ic zv^FLU-jF^h$2@Tut_J27ojN%oOUR8PQ}t08dy|*mO6sFb$uOY)IcP9;Nu9P7*nPfXtt5KV!A&E6KAn%#f?nm@6VXS*Vq)-rAE<+uHC1Htbx-khrGbW!mAiX zzxwRx#9qKwN|~rCe(tR~S!bNmzZ813+{gh~KSsp;dBmz|IpCkQ7p;)?R=tGX>87AR zOD#z4syjlRg2<}A`w(U&IrK=lA$Ki{fTxp8_=c9>;k-SH&#_Qc zNsEP9ZpP=EwcfWERpf@o&`+$Y@KS>!up#vFzENyK2yorgtmHVCTcCH#N-%OcvSf28 z*LE4(H8n!7s}l8V48uMl2X9%UUgI#N5Va^d?0D8LO0``%;s$C@=0}yBx5U73$pG)M z&=M8>G=3u6xeOGCyO=}q(n)a%PHHt#wwIb#gr86Pu^n4qw2~7p*#be$q+X63J@M88 zA*~mbmdG~A};g6}_$&H2;j+L{s*o73e-UNiNZ}+c{^8`3$GAL=x+?|VV z>{V(;9JvVcsvk-|^KvhiR2{4LD_q>A*~opU{FxQ3#OARnKKRh@k=vWnayyHm7_<^j z%RL=alrw*bs@~sZr$*m%!P(kqJk2uSe=}$9+zq)RVW>9h<>786U#6>X$FJQtt1OdD zS&l8gsyp}N%Wg<9#aELiIr=d>!u zb^NcrqZ;_DuHj4u!RPBnOOS=zgct*iyJLJd7OD<~^4zVI4;Rm~SO!eu?IP>Qscgma zcqqCRAH=T_rmCiNVmmBZUH zBgV6_%iQVIRl9tlpl63Z^`l6_}qt;rpd@&kva?qqR! z7l!-{gJyw@x0RuNQE9r!PvzXAHQPmq>SaFGiFqfh$}7!M4Nk3wtp!|5(%O!?R>Lf@ z6oZ6~A6_N7q}k*@jdP2z?&Kkw+gQ{l=Lr<%-=>i*IW0qbS~YEj$wgxiyWhE&R>U4F z#`bAyvKuceI3H}5mytK^>>uH3;UYwJk(!_kq1M3eHrSkfS!8QqqDa~!3-7L=2cwXq zLwwX+h|GI{ZSBZ<{;X_$`2GVro}{#lvP(0m=LEgv5-CGP*`wh?ePNf#no8IDqO~0E z%~CPp-C@KXPsUpbvaJBFdAE7KT@G)uIYCViU!H%blCwEBD_~(2D)y|pEal_ZA+^?F z!&v&OqLeF&f)F*+*UVg|63=9zLI_Q6a$fZ|*n()0|=*vkrP77KeVZa56` zN4BJ!E(lc6Ni#Vh*;v6$6j?Yz3(AC>m* zXmJ^kc6m+4K%aDOwx0FAtiI2Mutiq>eAO_{{xcQ)v5b1c%;)ik1LXDAIAdMkWBc-; zPk{Gxb`~&hB_0!!M$n9!r#i42lfpR%ojq;!({nh6eDG)rV|OJN6As&o264qsUM`zC zZRfAfiKNy-l+@0O$M^a>Y`~A){BMM~Xo6eZ*8Po5+xQz4FdQt*b_I_Q_AgU~<6CYB z5uTG@`VoIl-2Q;LrzmBQUtL^+Rv%7KE6<3|fN)8*wLOiIdC*X5*3D>r)j53>lO#sL zVGzhe8fH0mkyby+P}?y?Iy>sw0IgC)(OuG2s<@H?SYz{KWd}AWkQJzM;m0)T> z@Lb%f4Cau2yHVZCp8(7Y8?eJbSFw&a|z33h@4v{$LFm*io!r0kd zHT2nBCS9S#f#-*sw1=o9NSsQIbZYbE${N3bsDW#bF@tYUhLqRcxRaE%H@2v_#cnsEl|pOBnp`x` z;kxx(Ny%+g+LRq+bAf0{*yZ(Ir-WQc)@p-=raB)nf^YxHJ&5QAxlF)B5;lde1;S?8 z>_cn|6*BV2pmM6OJVa6x`F3dg;p@62We%4ow?lyw2*>XLIg86eP={W3J-{EsZLcbD z{Y%;oC`SNi)p~kSfT@-!VBZ&GG!uFWTDPC4cHt071q3sWB?hPnJsfXb>-SahY~9O8 z&T2H|cP5lCaNdG%bJP?C@J?Jntow2fA`X#VOD0lWo4@0R=ij)v#HYP-GSB>-qP%JR zgUvxH;?*5u2}A8Y_=S6K=Pw`Cl=+@+Y+;m_H-quQ*^!?eKTw4DT&4hZD>}Rce{J;0 z4rfs$f1ycha^#c)BqYggnfsO$zO3ww&*>pJNqxV=O`8tS4x*FZlBm&|;e-@f{FXs; z!4o!uqyjfnaw{;^YKbs(P>dymQ*Ap@vZM~-E!l{9E()$dowScCpj)C}C(|HSla6q- zcatKWtM8Wkp7Ka<47TF<8tdlMZP--n(z~JK;vhL3B>*TK`<=IB`yb&&e}&KfJN)o> zcmR=Tdx8Y7}c&?^lJzs zPgE6|DwEXlZhG)7(T>zkf^%Kj7@`+c!YUYZ*3;B#8O$HUJ!m$AATku0#z{SzRNIS^ zY=TYsEN7o8d-p>FTy~PONbYKSl7$&LsL|fDEnJ~E&u%Dwq#$90rAFxny7Ec}5NM>1 z4@%{qof;&*tr4$Jie8E5mWhS4@YyB)#Ch4(zJ7GNmfWY(7*sjB^t!5(#w-po9uGgv zo**5!-dS?dC^7$>5ThjQefNkCML$p!F$!T>!g;sx68bSWT4k?kR;9)^ReDwfC*bgo z*RBP_?opeKaAKHTHp_1LFj&Mz|sww^B8MqhI3k62iQmem$goLWkPoxnv~J265fORNmT1xc=7IX~FCO_FX&msa!V5*TDnqBE0VZbJA~ca`WT5 zpjwEjJ@{N$X{8PIVdHbck>xL^8!YhQ1NMt%-fzBbwJ9?a!uML^pd{LX7uMpHehj*S z!X(sinGsB9kdr_O$W7hAP>efQxA9lsscr`mp1>Cw@hfsGqAB)1oei4iX`Nf@Kz&$| zUY0K)F?pyZSqVMiw0|rqkPyC%P%q9H5Y#YH5WeIQ@T!O;%c4_+Y9j#3N(cv%kr3)J z{M#G?VZEG0S0s+WScIJ&nqtzqdZ`Co5ET~q3eEqSP3j@2j5D`@9$J{CN3L<%4K6>)nn>K~01o@loG_ zycu~wBjBDYxN_o-0x>Uz=8>ZgE^1ZB;7+}woiwpKOH55oBoNY#B?OoZp4Kt{jsie! z$#F5(6JLd_@HH;h)LoQ=r#;vrvx#3VtmIvCb965L=3$>9p3svX7jo`W=$&@W_wDXuer!k~V7jI( zDL$kBh1Zy6oprVxDJo4?+ys~-$;V9azOG37By4f|0y_GyWVPu-WtGv%JPXX8+h&m`g=tc?zb@)vRX#e zXg)16&wZ)CX(TUA(N-#0$d>-?dr9E8@9tntSqJYEQp7Ui=N zcp;a?>*gZf)DB!#x1qA)q7K?JCrYu%`39T*IvEX2I%nNDV9Gh=G(cKisuLZ2%K7^J z7v!9km(zJPU1i>j0=9Eec?W~aZzkiLP$$cjNjXSW3^y=~eVn1T=qtapKgDXMSwP<2?Q4NvVP;94-0P)tat)vk~Pa2EnwH1^Zx3~Wjo>8L=BaoiRQ%CUW>wuYmh zx6?pD6MqJA|IeU=@jZr{{mVX{P$%?*-&EhrkZjK7(lAEv`*|Rk#~TtG%QKlX;;A+fMtVoq!g2c6>7^2Qo@zi z4Mw$eS*4$0dK|7lyg4|G7*nW-ES%kY*tg6LH@B`~VlFIP(&z9XfSLI6tNOIJNBXoy zB7z6D=0+d1u#YpqOaqX=W}Gp5mp9bzFE=TX>=#+Z`wS2r>0QDHZu&>-7Ow4PE0?<% zb?foagQNBOg+vFnB1tTVrwjI?LEc2dNb|2CdSzZ#0rlt)8*aG|pO|HUw?OYXv-2EN`uzs-SMv=M3Q+ z*UYgKyF6{t>AQm{nt^)Bnsr;G`aJaA=)Fdvzo}*ZphgE#!^-^LeUCM-&m$!o{z2_x zItrrZJAZuH-~?ELqQp0n@%BENMW0+Fl0{z2Zz z!j2Kf__7SW#L7cZ^ihcV$^mLo+PJC!uUCO7`)oKL1cr z`>3~W|7{*z~Vyaj^h4THK_zZiFB}4<8+Ev61`_JN%Tt)z| zoOL@O{gl1j1sY8ba=Pwv-7nGOOgP7qFv}8RymR-Uqk;FEpRhuwCmo*njOjRl|4T_+ zf%JgDG<(G76yFosIj}t~nS{^Uu%AY)}52B`|RaFkV%XJ%Qs$|j3z>&TpTPszQ|M~GfD>n&>Q8N z(3QRIrIQ2jrd28i$ZLs&I!q}nO>HU0;5oYeMvs2nkz3QNvQHZZMvf0|K&vSw9tg2+ zt!dO5oiQFAI7m1I&qY(z7X**Rrv3m|Q~)L%bV-U}CaIstj71MjkT3D1MF4bT&GK2t3)Hej&2&#!hI-Z27h>BaJ{Khmm24c(vj*hwAhBE^;qbaFA6k8FXhQwsw z8fAU~(e^~W6=cj*YsgRR#5t@pRt4)U3;Fvo2{q)$J_8v7z6A|JYx|AnCQ=To9enW{ zjmiENW_*B6V{vr353#7RLp>s5y3iGVA-gzuSVoZPd#+7{~6>pQqFpZdc=I>pB^X??*fb z$_CGYugg!Rsp?BTO5$fnDMD zAj&eO!d{VD)PETLkGKet-{Nos&qXh+hlY(ed45$9v-A?x0l`V2e_vp0Ko^(>AUM60 z%ZqvlE{>d=m03ve~X5!g$TWfd&dM@qxe+g zU659WDpXm;Zq#rd#RTXOYP7J>o3SG-A|&GWs?vQ*CtlvZI1zwW)lcA6?|WTy4Z1A| z4EuKMhKa`R+qN!*Ma0XHGqerzj=~7EkhAQ?{?sS(iEm_U zxCT$Q9J4%`w4cDE5M81l>+N{2O7BG#+8y9oI+2+>`wiLcxzVgdk~6!qvLtEedPN@# zRHG2A^Si3QIH;+1hbbJs|=GQ*$+0s8BO(cx~N+x zyRz;SiRHagk)YXh*vj`?{>?)N5HTxm%p%)g0N>|IpFAL+(09Qfd4__4u5T(L!u~Ox zX;_k! zxi%o?p?>2?KK-FM2lKq?T%xPqdhN@;#=7j3GJsNQtP*kzz-pg9Yd0es$g8*yN?zat z{5wQLAVjYJ_ssLA*s)5-)ePoNY&?vH?q_--xJ4}ac@^|4Hn3IntK%HBkcTbi&KR6~ z8^cN2V+PjF+tkDoHX*fm2qK(cBsYIjVb3cA5J5?R9Ggs@#70aa%qFM4!obC>o2>NE z91`q2QZjma79UJlJJ8^;Gx%wi}$&$_l$W+hEg4k^=e$~iRkfeUwY1G=xFB@=_la4i1Br6VWF~ik z^7Z!IJ(RFtIrq+`X0^XT_4P$J5{MaR1mmHZ`TI#A0}IK)(p8RsK9<;t&k!~Pof&e} zHY&#@WS*rs%J7WWhaMCRh(T|mH?_XCvRRN*{NvTn#?jv4ZZr6kE2r5nC?W z{7B=E03>9(uXn^uVRYMg&MNdL?#avGv!}*~R6UBi7Lf7t=_b@c}Tb=j$7wN^Ffv|VGF9NV=pa4WP z6IFt5>0&DI58#MC1YlC!bn)g#XdxsOD6D7PO4pY*PrdVw2N4Bmp>R&~C6)YI7GY>1 z@Ai#&no6z-P^$_e@Q_E*fGG>)y1IDN;^;bewHL4(;pMXSy`QjXb3tU|$OGhOa1H@j zq1io|?@tVpCI?E1N!z+%H`BRS@D&owag!76{ZFiG)pN1$vjG>g&Wq23`Tm&$|0?GH znj4qg2jc-P>XB_^P=2!j&h49^in2lr0o?B|K}TU|RUdM2PPa9DgW4~$l6&-7@#!Xa zk>+9eG&kS(3Gu)R60?@;4vPfnE`*uUID{l)q<+=)H;*o77A_Q5(?h^jKq=D6xx21M znH(+TfXgwZ1_&5+&3~v6sb?S5T_>z?!I8`aagD!7~O{g>%PFAP_YNS z@$W+twO@7fyoQbB${*A3a?mxS?Yh|Zi-qP!7L<+Mbj#dqI)7k=8ibE@MT_L?;Hz7d zyR}u9r{dPH75V+HUn0_hlzScPzX2Q+eghnZ{sCZr=jy)$HP{L_c+y1_xwzrRTb3qo z-)0^V4q?HY5sDwU*>rJxh(ZAPl-%yS(=?*$yVKu`i(pUSg$mhyA=vG(wO;m@0-b>A zK0+r5-%U3}>%m|Q3tk*9xNe7?lWAh^^>|iK@Ii-!Vz9xm@>oQBf>p}oKj{zH|DrE6 zvEbi?2ASXAY67%|fw%7Wv;TKE4dmd?{mV5r3IU}r1YTzw(A6ChGt3}b8c~xURw_0= zLGlAbwtfETS#x{ruu49sOk%$4dKOj*?Z@&>5t#yy^Y8iNib{AsPAS>65ig48Ve*a~ z8xg={Oj7TY)h1_dj);!pKAYCH!CFC&2E5aou~yl9dcx1CY2$4t4=Q8*H;*KOp6cd{AgJ#(0C14`4ih4n~KdsJ`TW z#A;I#*0XGkw1-}3h6Zno&a32*QYO(|jZAdk&R<`Q#r+Qdj(#DAm8}Q@76TW%s|QMw zf~bHE5ltWye2upArl4?TNm zV{GallP?R`)PmJqac*kp;uU}_G>RDCtkwU$Ih3=}o3u!Ss5CKr>nR7dqWBHC^q%sm)l$ z5G(!^s60}YJbU{EfunmVcZPESLt`^gApt0f$L@ljDy-I`HqI#XL--FiHKQ$R#%7mg zWs4+fgCm>XJ)sGtwXERsWRoLMn`D2lD1?x`*KJ_(3rsmEvkjj_%F6i4Y)&Ir!SOv< zo=`FV#^|A?1qnl`UJ%DIrK!bym&Vh|1_NS@OMt%W4|kI1Jys7*2(79)6sHu#3Nr}$ zQ8_wcmt&AFm{ojHuu(71pFhZ@Ri4#Y44AaJ{nE4gqg8V@Ji&=8UW7kL?_i--NqjYb_A5bq}r1;~A0SRlrxcmn*C0d+D4ADNLWz>r)cxBgA08^%~llJ2m74>C#1=`Rk~t! zUZFA`Z5KW*n(85}>gNt=`Hife#Y{$mP)gT&v7l8Xvn{i!5@m?>w5uNqD)z$i0Sx`Fjx@QHYkgQ@yr@S3&>cGT&f+R z0a*|t(0W<^STW99x^qX`LCI&Z4fo~q@K~Q*G7GaIypDN9g7k%hup2P$kZ2bt`ckWp z3&yai{;dKL^Td?I=)Ah zvFxdGcvbW{f|xSkP-E&1tQ~Wz3v4?=G+X$_eCSZ`D3uf*ACQ2wtEmUmW5z`x)mvif$$>!Kng92;7kTxpDua=ii=vC0XcXZ!y|>>aKT|E zWDJ)?K;oz0_DgckBr87fOXAA2e^|I6ena`^xqU--{}~<*FfgY|7%;qlp4->3{PJ1C z+}zCM%b!R1z4elEC2LNe9o&dko2)~bRW^)=u4!M8zd3AH|c=B#uE9X4E+j#fJdB1Ph3|!=| zn9tnsxjHl00Z?tMp4^7r>}UX^DPwt(jzCE11J-!~hw!UOej;`rlKHZ$QR#u{% zon_vFj`pv&uL$rn7+|+{wwDn#q^|AHyaG^ClU!33GSyK=T@AQa23;o%xw)S^7f$w# znpY?W_QP(@!q#4jo0E_XteL`suil(t0;DhRth_CEZX-D>N1YunXUv~!7O8yfgs3_f zf$p9!oR(M4)dt?W0+qKu1-1`K=0G2xw+1~QSF4?sQSZFY2gYW&l*!V{husspXBw3D?qmY@EV@BrP%bRh5B3aK>_0 z@Jj!}u1^Khe(yoU%3J%5%CbLyw(U1@)7Y8^S?Pi^R1WNwYFAnFu0(U&Q%V-P?UF; zp^FKP&9}~ZJDN8yo>;Wbk$JN663R>p<>RpWJXEb%Aj6gp&b_pz-K-f5t93GEY;5pN zj2AytT<=~PzdU$3Hox9(5ZBx#^IWsAJiG#{Uv7JUE%)4=v98%ak}oKQ`e~?dv|~To z-L<%B655$wSa!>esr)a3vGbygS-zz8faH z-D<+2z@Zm`h2THV-CC@c&hPGl-2R*#Ary?J`t zdg!^CIdXV-%Sb%-IZKRM*m=Vz-hV6Z4<29f@bSu$ffYC-$`v9?to)girdy+**Zb`B zSbA_x)f!$ch7Tw`W*|htlqE)feXCvDYR(;z6=1;mS>er9R?kUMx6h1^0~n;R8YH)} z5TA`yn4S1uln$@Nr_%3on;J~6Tx;8;l99P49C>EJ1-J9Ggp_p;bO|8t$Xx3R0yQ0O zf|_taO>DO}LY|rguN@CtQtvoAD{d!8mv3yPs?#!VlUoh2SNac5wr_qi?m=@E9Hl&* z-#SdX&WQP^zE*A6Dc|atj5@&CNHA3@gsoX=03wXJfpS{wYa5NFgW8_Cu`lHVJxr5f z!Fx0NpreBAPtFg6`Xw=$T&~2C1Vz9uc#plpxr4$Ny`ErVclt*P$ZoUU!Z|wwK=y8S z6TLlBg#pAG9^#v(V8y!rgg}3Hj8{@mqzYhAr8*87VX`+oKEj?qw9@zkp;rdgdpi6r zx7g4cw8r(2Raz{@27~+kZB4s|Nv_G%lfp*O&)>}Gxel0I?ujJrmJPz~%Nb0Xc`|hZ z&&*L!Ld8ZP&F1DbyW)>(=ncP_dt)<8)hZ(5e$cFjE*oZ8d((dHSWbs;yl*;VZEL*6 zUW-LWGiH5zYFJu`GYuAPxp!zcsBj(S6O3bo_8dRSg9uQl%16*7U(|svL$j%Yn8$S0 z0m_K4RQQVczi4#fbxYD4M%aJc-}F}HV-2P$Ax!SYJc%4Ligx*EHxP_oCAldJuSvcN z!Ci)C2R?qU1u-Ae;OimNrvnx&(!=1}i?@Z{WfWnLxOqNO+yI8Gq6+GuSq62GoPau_ zK^;|+P0;rLh9H=SYXo~q!SAHl{ypel(Z2_|joX3~6cqhNsrwE82g=_E{2k?gSAomX z2yOp8XBmQ9cG?b{0LHQr3^^bW1jg|Xt$#^chB#tC1AvCXgN9lEHLMF@hq%csQU4of z4TAgKkKZ_dAMiKNRg!hkvpQt!pke5sVZW^*TRWCYKO)~=T}D0y?UC;3P(D{m$F+e0 zy=HwFgcuq}Zy*Pc88Fo+Cut26w~?+5Yabj3@1%Wo{0Ue*OQR-B$G7r}gaGfttv3wc z4xUeg_x939dhRg7@uh{_MuF=t+%Au&yv<&32i8B1tZzBW2Y0v-3tdN1a9;1-9^g(K zJ%7HergvcRr?;*@{ba0wZD=+9mQg|UZo65?dFL33D13HfX-{8XfZ23o{06_F^d&0H zwCuH+v3=|2GRphs@WI^U=)>;P^|NL5xUM5%$W@R^^C@@Qgcn-!^Nm@v*9%W`r)!Xj zQ2G3*-tFd1?{L(pLaOZ#@AX~Zi5b`UB#u-2n|<3%p!mbg*<=!5^Q!16`N--*`9_lW zO3S@Me`ER2;U54UC(!5Dl@y{0pOutIlhY{o(+lDsFPqQw6++(%VWEhZ`F>%Yo#6z_ zZF_L9;m+{9KL|G!%uL6WHxyCM6}Bjlw~0xy1=hc14%)FoL_*{O<&s5g5-D^X-VxA zg>93+p)>5PksfWZz0a68MM9I1BEp)lyS*$ni2 zXj;uMj>&iE6|+l>t>&k+%O;XcF5f*E=Q&VcD$kg_n!u@tex^h`GOAPHQEVS2Zsbv9 zJFe>5zC3S`v3CwZ!}-XJb7|@_fpQRXtY^eU|Epmvzr@j#&=FA1k#0RkpW81cES8VLqsn}*!RIyR9ZQHh!if!AdN-B7}&bjx#@7({r z_qW}$($d;aAHDav*4$%`wdWcG*YgDTC11ziWxEPH_LH-_6J2nAnDpHLSpMqa#o)7p zE7CH6#*3y985cDe#oqx%GQvdvIW0e!{idsOjeUXWLAaEa8!-^Y}(8VF+;`eG? z$uvh=Q_@3&Q+v`KPgDBEGZO0Jbc2`MiQHO|#XGjNZaA(OUm~pFh5BXnae4$BN9p$~sSn&4JF6fgLTr#7yInJ99Po667u;oc@T(am}zrU|HcHYWjVyXCP z@Amy*G$v&`1)gxq)nakulfKagM)j$3$stiy`dSGQr(MYML+QFs%)7U{Sy8^2BDU6I zRzY${gY`IZjit{xzv^~YGI~}z(WCCwY&os(+3avhr%udw-Sb(Gxd-bv4Kzqz*V99^ zhW5sBH`BSt5cm1Ej`E|oXS{v$Zlw~g!XM`RP1a`ye2a}^%nN1EH4FW)RZY@F3SD({c`Vwu9c{l; z86kA3fu&N4pbG$hoWf=(as&Nvm;BQ9d<)CWNdLYrOQNs6qa$2llPzSrf+D zLyb-3TWb&xh*OqSyyphujsg+Fla6!c{m8}LKJEKs>Tk*jv4JM|*n)T~Iw6#e+r7SB zp{G!`_Fmu1=sV@y0dFTIo0l&B&CCg<{)^LluQsA*uQvThums+T7nH&DWj4X1cNVgS zFcLn=#}k~m0+R(~SB~_3VaJWP7pI?NBb(PFt@sH)MN!cAJ>{duSXrT{(&flWVZvlS zkx(7@r9Ob8gqWG3hz~as;i@{D%K!F9@Jb-4CA@mxi+xUyP7a-yAuGwat-mgX!uG8H zqGzU7hunp$Rq4!@s2OMUEHxxH6cbUi4R+CzQD1Ybcxq#7x=tfHVZTrv|J8r1EQG%uvmkIpk@Sxaht-EX@BprR6t^Wv7jKliw5z z{x0?5PIkoKIUxu?3*$VCRV?9m>xGAQS1eXV=S)?}0G8>?n4z<0 zNB#G+vT+EBM$Mmh3flPnc5;VaDi!|UsxnlAFV59nzg^8eJ~OS_=AfS$Y~|heS?(mc zTD~WoweK%%yM9)hV2|o$J@0ylO}|Y zk3Cf$+o~#RBSvr*KU-GQIaQ$VCLHbk%HvmJiFVjxvjt ztCAM^aMuoz#V=or=YG(BGc~&CzBcojTrcx2ZSkTT(SFLdC|;<20o#H9<(7`+_c}cM z7BKO=qX3pY`CX&Amw@2b*RC51xY7(=G)VbDh?SB$5FEa`2Jgn8oe&Q@bi0N;LRPro z*<;j=LaT?=|GXcoEV(8U7^Ya5<@|fqm5r*Gb_w;@p2`f>i|y#TxI*{ z;?9Pa00P97f|UIQ6c`-)Pl>mWqPmmf}ShHV_lZH4wh?OE=Px*EhRAx{3eVJ z@QG5&4Sd5|JB0qOQ_h<2z-KlYXlo~H9>?@|)w$xpY-G&I2O|6|CfhaS-pHsEa@*kb z;&$}9*pd$St&%Kdh<=z|eVPF3^8 zMQV3Tix0>xntEr;ls)FlTo>-pmaBltHPmu0;A10WtoNrmK)a{3gFEwbpv&J&3`yH= z;V-Gljt+lG{aL)+$rm*s!(nu1&HNSPD!OPucxNjLVk5(rYaYBpVs}_h&p&owcd86~K|$0*-{r z)s$kzX7_jrZ>Hu?lX|PAD4AdOEh&9DF>L}3oqcWD4ka9DGCvnN+mnd)27HH<-&@^( z-Fb9)$TeqqafR+|1hl5ygRRwDu_U!jXY(V*WVFOApI%i|QF<n1d785F1Dy!A>W(zxI|O$km6-? zZwOrPVxZnEow%4pDhi3QIZOaPQ9OmTEETqB^y&)Y(snjcb#guzF7v7AaA$I4c+Lj5 zm>0E#@EV>FSgz}Wv*XQ@71d!dyMZ^ah_IT z-Xu>~!8ugHIw%N+wtPp}L_7v5(Rbag(mt&+Lc-yLUVB;siAwg*JF8MJmYVjo!DyS^ ztukY_5pZey^}tTS+K0rHFhW**yM#Ix4 z6+GmJe{&ZnNP(GQsi#fS>Q=)Ro<#XqcbnA-JjFq#Te5mwt1YtrkOu3d!7g-E7OPWmp+Nl>w4;q@&%zgadGwXUY|gGX(LXfl^iolO^J z(Z@;HIX)q#RVi7X(hD7 z-3flvYhzknVFs_smHf=!&mC&TBH6~EwS*w}y;R%%MM>V-XMj_;#KkO< zOABT(H)^qR{<=_LcGFswtvN01F7rf~X7LA&Z7z=Tt9%Ztg z4u2_UA`_q4!;oCmpEL}DK_LSntaV~MRSN^@ok2igedLG`<2J>19V5O3g#FKuD4_oi zdA?!+4C!|9S4h66kcB#ne}&A1LLn0l>qS!N%~lyNA_a4?rnSMuS*LxBMiGfrO=T80 zoW>YNus4Dt7dN~m4@6q&NOq+Y2QjpS3d!|6lTzjZsx2?Ezq0%)3L%_}l|D}sS_gJu z7Xky~{9B}&Uwr2_1g8GwlPJV+5X`U0u8B#oAer&>FRi7DC~JIt8;WLcQtk}sII1P_rWk1Y5l2vjDI{}@G+eM^;(Vx z1jB$JO!cCuDh}{uiYG)?ReGKse*Z!(4gz7F#~ba8Lod8#9tJ|vLVVCJ20^}s(g#Bd zhAsx7&yq1MXRQ$f=Mx}K$LhaSgcc6l$ebW4pX<@41JMs9-jH~UD;x$w3dYX?dWBoy zHB|n&VcZ54CT*t8)(R8nd6_E+hL0_n*9KLKJ(x96H?>L$jy@0n+wJvP?*J;~@qiC<;Lp0<(9!@Kbi?5c?J47ME$R zeexB{%E0(bBnLAl845Q^tGgrKfAf(QgD|FYWzyAwlzeYOBn|j3Z`6(A|49{xy)_s& z3dMgY27%A;T4$~d1=KGO7svR_ia=7Ir}fW(`TU;;3_wWsYvj)9@#zj&_f6e+1!e_2 z`YvDFPp-)P=^>!&lMqk{a-V$+W8dlbtb1O`Rej!ClOdh@jAFx}#_<#25XUnT!qLZd z6MjDlj}!HS90h~Y30x2O5BTNup%TB-BmEv38c3O5pVI9Qy-!~EYEX3MXaT24VHr`z2CVp@aH4GHb^7K$3$aMPaKK5c#T@19c>{CpT|#9V{A)ldnS1s(L1Ui ziNfrYU!l`E6%&mv${MRW8qCpu+IKygu6gaN;GU}>hHmKVEOah{>d_y|oYbf>RWh#7 ztfxNQoX`pKMgHhU{m}Q3<>(%5texcOnZXg;>U3vAsE&z6jO&|s7@i;5xR}}q8rg0i zA#OJ!kf4Ouf1>gBx%WiX_gx$Kp1Pd#CXKA$!>a!wKm@%XZ>$D5graOZrB6#(y-Pxn zwf!agRM_dG9eMMz`^dfbIH4FmjGcy+oOXnbXL7Rc&4TA{TeGcfVSV$$+vzhowKb{W z{#NDnrkv?s2^b4V`2<(9-Kih6obyymfAnba>5Kc@u=|@oe~zN;nOtiUe&RxLjVZu< zLX(ZAZkK*F;qJwZvHv`Dc{^;GS%?zPz*I-eJl()DD$ik_1V&Qxm_}|}&#f4$CTHOM zZ(+;Z-OJa&E0|9Ere13IF=H9Xbe`yGu=BlA4yk4vr^Xjg(Oe{);ZogRNhPB@o;Qur zU@Uhqq{dWn{5+)zriNJGmt4Q+HPO;L&dMmw$|sLCq#KhC?^w=i;M}4AKT+D3iHCP7 z(i0inR|{@lrp_hY-$vL(MfE?5&QLmi5<1^+O$A{-Jwb7nZ{!woeWP?yA$}~wNqjC; z9LnDK`WBD1`v}AvJWt6%i)LnHWMH3S<`|x75smBjc9VC11G<))(Uq2Q^RoW)rK-lm zuD{vHSJ^DG>pgz1%S>NL0@T3$ZFRyD?iV1iuhlg0j-H#QOu=9*Q|%iPW+2-kpW4M3 zCTMcw|3%Lk(jmNl-#_&@_~OcuHzS^(Q|O#L-kaSPNN=S)?(H7H^F9yMBho5rT7Omf z@nuJ(Kak>)r0v#AOi){n2DBd@q+Gj78N3QL?3l#+_x_SMtzTkb$Dw8>xwIU1Ce{Wf zI=0M`G^l1YlMf+?8lkbL(2w{n-;&?_nS~#8OXnA93-EfyJyr_MEbnbg6AOL0pg5L| z`nxV~O*|S&@{QlJK`>}?g%t?V%Not@NA73B!DG(Wyu297bC3;pW|`mS1SU0{Q%j z55+;6ZWO#+C>d4KJ@Q2P3N}fa9=?Z>kBj@a80Y`17)wo#-&Rc(v}tMjA}Unuzjbu@ z&$Ni@d2g`Gb#i)h=xwsVyQXw>ao2cX{7l$rn~*+N%csyYZLYgFY+cXs)_G}F`6zTe zyuD5A31wU&H<&ufI9R2ze5~3xjb=vyM&|AnPlG271TUV_2KvsN79(;>5zPnj8O4lL zoa;jBxCuimEgbQ-0x`W-%azqI4DQy&#IAUSg%QAHh;>LRJYH&cS_p}0y)Kp)JwM*J zqNl!!H+_l)%Q>Wj^gU=wblVYegvU;obcA=~QT*np8m8*mw`WUCflbkZn(Kc=$3}4F z(`-v2;szQdd18MO;)KBpuHTHNA01N&@Th=qJECQlz|>UQ>JKhf-V(*E+Nj?{QPThM zB;q0Bfe(sDQ$setdu1^piI#{hY#DSX>C}(1x;l6#b(zHEZhK&w_hYp~QL+canti35b#wTu9@rIVIyNwW9KKX!rsfvAL$grMCpS0$c zjcT;BYlG zoqkdIz-ODbk%}hLc*AiCky;&%JqKKeTIus0jL!P5pEnGe~uQt z5-U>ZFI@ns^@iitV1}2p(3pBw6o`};a@$_Xx$4c&xY)>ofMUZ#vJkH|aDRtj_QN8K z6U9dQP9f5TP^?~iBHo5#B1G#CYMmqlV-03w{kicU)JlJ?f1wWHB^93ig<2O9*Eg3g z@Q{UNqk{t##z}x;EmOH$s2%&l9gObZ=Qrq6eRVuM5H&xxtl&bY)O^dGLu79)9;4d8W9 z#)vY}#7@;F(vYOu&e32JKryH~bW34LqICfpUp`l&;dIW%y{aFok8KCd*=6o`S?Th!-MjsIWM0AIUj|3_gg5 z1k*&ZWV97m-|Jz1}ShG7s75R@FjX?#dsm7DY#+h#BX!5DE6 zkFob`q%?zZsT2cwSdE#`HHPE>7jH{JU4rGGke{2RTs{x=morsy zePejo@E*}fN_2(QE@&5zCVjq$Uv-!8el-uNaw>=yMEZG7 zP(r2@%0}P)sqkdbE%r%}o~ct2#g+HT%T$NXB1}EXrIq6l)L6Z66$oqG38LhjiTM^I zbJad0V7jOzb*mwaCt54lQA=RLGQg=wXh-Hoyi~~e(V5?fNn&Ci;gsgbsj)^`?59nC z>a)#__%naeX)KG4sY*n6(&R?0PDqy;@BBDUh@X_ReAq%C)khKPh6;*4G8n znKKvA@?ihT)Os$|nFCZH_0%S1k_uH>X;f9EhyICL2>VY|5~L7H;)PnOR7ACZS)f-7 zv>*;1>yHIf9T5r7Bo8Z*JEfkeiJqFuLzxR55p+;yTk2|c)IY29+a+edVp9IacOUW( z@@7ZGoeP56taLdKesDq9TL`pGz^X7Nr(isvdgTxCl#&RHv=d>>hLqU@hYYAdr!le< zO(11pEqGGK%pFKMAz$jhD3gKxlQK{0w7ISRP`V+Pl0)Qzup6SbP}OO&N_zWXYjYK(m(q;Z&QZz-kh2HG77mCd zX9ptDpSV|o_X^jQb%pJ*>?xErdeibFjj(3$q&GGU3U6A2u~9I%hi$6g_h|h}zTHeB zf808QY7)wgx@jOz$bwy=U*sfV=*@zFlHd~y$*IuMpRm2Aof3>sx}sQue(Ovh1!X$!5|bbi07WPOR~Qh6OyIda!hdYcn-W5qKtqZJgDtt3&)dWai+COOCkQX%c4>D2Qv{Hc$&G=VbkkqLd<6}yK?*u#;We&w@^OrPSoAbPPC%jVv zRNkgdNFwkmo}syjxKm;?K^rRcX5y}OhumOq1@xS)nr3<)Lox-B$_1N;)M+IO3|38% z>HBeMvt89Pp4faET5e=ojtC9xOAuvMF6_xD$99U^eDtYxA(L8gvvW(d>w~W4Abh+1 zh5>g)UIwSM(vYU=b~k5XTovef@np6!&%VcF5TE?010RS>8tihBkk#92x1lsho3U@CgcYR%d&oN$VM2}a)klG|y(Yi6k%VH( z=fYSlP1@JbAY=p1Jt3bIdd4DF5zROZJ?_cq_ zb};^UAwNR1hn$PCMoKW)$3ox;^z45~A@~0^0Q0wF!moK1x6st-L(hrs$H9Cb>JWcB zh9gqlX~>n+AjCv?dtXWy4da4!3q7grb;R(8*ovR(A4x2P1wh#W`BtRi(WFhJkvKo!9rrMeK5|LF@KhDJ>PtY)QeD!{)`5%&Ga8Rx6t^G zz|q)4E;a$mQG$CzK{{%PS9I61=iWo^<=jIypJWCCwyyX*TQ#jW1R|ZTb_`e@@(j4g z@@@h$Nfnb1EH%Ho;$n69xo2jW1rGQIYd0Ib*G(f9nrw^tUIk6vt%T{S_;V)kmq@#4HGiE9dErL#|qo&^9@6*p$_5e>K;1 zLO{u?|2*)L;wteF#6c8jp1&{+MF+5Fn)6J3TM7R*a!b%+D&aT3!Cc~T*4BM~8wd(; z`I>bEgemz0Q}Q>=XF$ob$^_w`|I^JpvO<9pY68_nYRs|pHx-C{uiCq@XZy%?`3)$n9geS7B)c5z?6DC57n!_!{F1cXQQkjN5Pjz-l_8P-1C-Tg zxfdg+0l_o%=A6E{JD36WY6ukhxugw|0f;sy+;7!vL4uie6n~b<4PX~B1Mo~arf0aN zd&s8r0*N7%v@!GFx?V&>o6&=19{KQ2#hp(>UuZ$0BRHmaoO87JL-I_0#*^lmdO|2H zo%hy)7V09Dr-Y|nw-7XN{n{zkWr`n?52fK)0Q&}jb^8N8k8yUB=jtN|D0NsGj%G(3+{Phna{v|j9 z0O`UEv*c5)Uq6OGK#@1poHS>?di`OLsh#^o!4S2!NYl6-0vC5yc?^S`J1tU`k(dS4 zw&wQkG&F8O8oQPJB_UiVYa?Or)I#)7x~SFb+S9HOK>zT!I5Gv37mPPe`un~&30#p+ zmpm==&(}j|r#mK=k1B7wR}Bn_xU+F%38$d?UL3Xf{@_olGH{RG&Q+=>6l9ljG?Zjh zV)UnJ8fe3SNdPreQ;>s(7^AXDe2Nse^v%a&bl99ZMRg@gh3u2IIpQ47P1rue|z_Cl{hR! zoD|`W3)JI>g#Kg2A;kkZ_fDCBWsEZ$GH{OnkR}_4jh0kWQK^$B&n>NliOzM*bHeiv z!)K^Q4WmI}!}AB;gaIDzXJ9;wQF)XJ8iMa$I}&GLf;hphB*uu)prdo?@%*{Jg7;Lq z*HG~xMen@M=x_w|$6`G_-|u2^25_-JM++l4SJ^V#frz(AvgAxd8?k0c@eb6Bki+a5 z;?x%rERpYC!m)2v)09^K+yz|Hm0;H0V6+T9>?foMgmt8G=a*_GagPPYN1p zJ6dX?sxQCs+72AU+r{G*GU395G|2oXtYyknO;*H{I`~`>ZiS2E_+3^rKCypW_O{Rd zs_h;^aM&%AujvhP*=>HRbiWkWEW)zmMCTzvrP30xRZ5{AJgxi;_yxR0(w5b#MoI7H z!|C%Y=BK~jJG6>XUS=@Dyc}%>PCzmi69nU>i8?Qe>ff)=k|Oe)D1UBY#wW%#tIV^6 zN#4eO#HCY~xHaY1A0*~0VT@YsipI_hVqJmqLjLtyG{ZPh1Luw23(BrH05!Cu;fkGK zfemEY@hvnTv--^Yoq@NgbO_X0rxoR(F{TMs7$70Zrj4B+F8qTAeavbX*ZJUq$_0Ov zcC;*BIaZbMU?C>oaj+|IMHo<^Er75JhIIcI0gs)AgG4e|fqxO8I)viI#2s_u$npY{ zP?V=A3APxGo6ndNBPk&%k(CqyxCK4#JF3LXgf``Ai2$UG^y0<+o~5Va=iAjfw4G(+ zEU*t69Z5&6i0`ulG9%h>O}?_2e5bgdu=tBq`8~2c$a&{JkJvop6m6(|jIM>=n$cHU3s0gIxJbt#+nbW_@ri)V7R?MRD74F4CnBcT= zR6GT=^WheL@L0e~_^51(E3bo>&4~Xf1e_Kn%4GH8!(#_ zLVe|EMXxf8`SVR-0d~aKx}@&8DU!b`Bn`}~y`-FiXrPgm6WxhsaTu#9y<|WPiKk!* zS&R1CED6a1L$s(iVgiP_SU_X41mM&1*VU+uw5p0}hWcnA4%vV^S9Vhq^Wf#$fST}@CH=`mV}0PU}Ad)Ex^g#Tyg_g?@6js@79E_If=e<0J$U1MF$aDI!cn4Mre>CY!@4&&$UZrmwHjWj7=QQc3CoX z%QiZqKld3Qc%5_;iWqE=`ngc4@o%|{I=SBsx=33e0bi~$>-HzlF9&v_oPVll z)?ghM9wQ_sQ{n_-52h)`MhH5-1{N%@VB>Vq*Et0r8O>zAOd|4A$6Z3K|y3)&PP)b zq#aU5D?r+)u>Tg1*pNNk{E?p}slHiCdh0tZA6Ae_okM9)JZ3AHwZe2yOr9dz`V)X8 zT(!yyQn7lh?Gwvr?Qo_~AinbE^03Oo3PLZl>5V=ZiQd7qbYw|j07BS#+H+0-Cw4Mx zxrUle*|m6Z!gEC*)yQ%reLdUzjfCvEdf*OM_Ea%p9l;uT9|xfSfFd4Z%+(1FmN`({ z+Y2tdI{tL=4udT^{^HCOiko})Za^j@$D*qhF`hy&*fjFMI^C`7l&@d4ieiprYQVTW>%%+S`%)4y06~PbHz|ri=61yRu;LT3%lVcrNmf1&A<5o z-1RHiB;8|b+E@`lH9uZ zeC&}1nB5gqQgz{c4A!-!L+QvW?Z(O-{15e`6Wz1>QaWfF6JhfytMbs!V~PA zUOB5TEHcG>UGJJq<*)KyDn@)!+$J^@ek#}%8H{a0ab22kp+Qc3*(N78qdy@6VP7e_ zF|M1!6r=_(upAnL*SAKQ%De|;aC-fYt{%v&_dL%dOaAqCGu)aM?t8em1*}u}-h(s0 z93SR0Mk)tJ%J0gV7Ciw|ORQlnSC7zw&=N_aArUl4nO|@%B3C@Cy(+W%PIwTTelIg6Z9HWyCE0~P5hY1x)9-W1c0Ox~aU_H0lZd$|`2ro`8w znNTOlUgJi~KZ1pn7D8NT0kKsn;5)iIv5zOMF8lO?y z2MJ|u0`i^6O7*QUt6!^Wh~}biTWEN`%l5O6H-O?Vd0dG|p)yX5&&D)wI~J7x}S39Dvg zZ2MQE%+2IJ`!yDV;p=Y^G%1;~wh2ubsC2_2jT1=tULfcMwOH$Mm%?pxzkl%C#;{!0 z%5*%~#d==SPf~yez~H)yNrRK}eoQ|be>}Vq>a=`isHYOAqienH#dBon2WKtxKHw*Q z>6!>Jp^bhYXUNN&rjpn~`Is&w0M{frp}J5Ww#+#ihtH&)A) z;(WlyAVhU*MxqtPNjMXBmKF)pTJM7I5f%v}h8L?zCXKVp*R`EQ!S+3%f;D<^+|Dy> zU2W8eK|(l@P1jucXoTg^2LI#|hZRpcPrTH|oc%dMh2Di9;xtU6c_`p00~H$$nQU); zc+}oNOXJ6nbS_@=;&-26C^Fe1wJ28X2;l-n$Ak6U1Cx&P)jk|Ki3d+EI!jV>j`S*u zOiN`Hlk&h@*$hLOlnREEi0@J9rJyU7eLv`CT6VucUQU)dXa+2l)P433<~uWT{3?m|bnf9s5W*7xUg2Nk#%Ge1zj0V~;gT)TjA^Xx*bsV>vw7HAzfFOJak zgk{e$@o;0sPnFPc(zzSsVf4tmcLXaP9n;n5bUW{i6rKTDHj9S+fI#`w!rH-;Pi3Vpa$Xc2 zHaD6@ZCT4;nPo3CgJe0{1Gi@U?!x-f)Y@Y(*^?t^FOLxZI(LF zmn_t*zoTa8c+i)8FPN-4Qdzs_013uCRd;>(E&PYuYf3lOd5Nb&wPg9X+y812nkYin zIt=Vi+(8Edg8A=L($&(;&W!o5BkNxs&U6$U*12%He`=z%A1u7AyG681T&!F!6(gdx zh{ZID>)O&Nlblj?BVIc7`WbE34!~VB57br(!(Yt3rP~uWBb^xF(5^<%C_5hwDXdXK zkB~hJc=s5n+$^4l5`q2>bCQ31(m7P|KqT2NMtT~#Z1M_xA6mlO0eeBBSdhAGqTRDu zuKC;wR|A9X0VCZyUDMlq2#2aio7Bn}O4=h1elXF7YDR={7Z)vu6bK!^L|$aww!z?m z@*C?WFLZ5ba~5VD1_7hU?Gg;c<((*wxO>N%fuIR?y=fpTL7F}tS(C>r=~?yHWJ#wS z&Pr&Z-PjwUCyQ`sKNy5FDfOBL?`wlBtCS3R9ELbUzWmJNfKV2b2#T!M;^~Sz&b|7} zbvSP#5 zsVm+&Rk}_{akk<-9rroDI=aFqv3Z(W1&e}pyL3xD+;nq6g^xSW2Kz!QDoee9w=Qoq z%%)S}c@i|1`~!1VIl1~qmD!qt1?kK$PGsLpnXydsp@~(NQqCJUVKG*qjq!3(8!4;d zVTsthDMVV~`Uc|{GNE&>7f24-! zO%I|6_RR_H{pdIIyUz>luk+`x4%yyKAfpMr+rBRsEe1V$ekd}7=QTNRw|lGS4uT)| zq0|zsh)|(28z5d`f&3>R7fOnB291<>^^|$w*n1SN1H>*TVvtM$k3kiESMsF(5`IW? zgpN65#=2pxtRAJbP3QID(j&d6g?5Er~cX>k6;8U~MZDuq*zKJxZ1K zbU~g8!bf;a8-?d&3Q2Zk1#sWvVjz@UT#@t0UcsX{KWvRMlmSv;0=>E5PIaWv?lhAp z87m3jv$4jR#AF*zmcGs86*>+mG}efjwu`E?!jh$9+xLe1>DOt@kjsqP(QJrHd?}e+ zA{YrqC}t(Ycpw<`ApOOZVNJIg-{d4>Y8O{lB9_|g6&$-BJ4a!faOL*-1aipJXj>sb zaL!QN#6>hXHH=(l&T)TtYl5GCd zUTYqT{MS|%r6r7&vK7~+p34zezV{uQvu@M6uIu3gi#5~H-j3D|Lvz$AyLwOTuv5DMin>6->pZR!ULNOJYIau~nS8I(S>pS)ot zCnI5VKKzv8BgW8O2wz$pKMKyvzyGGXmz>zyMz^rAL|r6#d1qCo9FC(X9V5G+>Ur?% z(%=*|y0Bk9>*XL#Fw8r+Br(oIg<#reMV$NJEhjA=u2}! zDN9+(%+JRBs!p1<{s4#4&4?v#EZ4ojz~-i{QZ5F=fn2-j141dEN3b?x%_`LRy6tA$ zzPVZJ3&@e5arVF6T=Gl6t88_WZJsi#(dVF|A{9nA!+7+Pnwf49i_5vr#wjbB)U6hE z7Icz+sz;uTq3l|6h&HoGdKl9+xpA1#b-0qDth;4_vrwQngBQ7-Df98APJnB>z4w~> zmrb*&Gv6G6CHq`El)CJSN`qnlfCJF?Y>B(BMui*SO~aCE5%z?NTWY+e zW?%2e?*LeBuh?|~t3f{bKFN<_pzc>mg{|8#M}&-26s@COwXkI! z`SY60T50$szu`HV4AqAB=eBKSRuCC|SW^h;0>bmRPH9z>Vjom}K-b`eG-vFySt=hW zBC#wi_bd!Rdhgg+AXY3qdoa*WLskH}jD1lGCdO0SIm!abYH(YG+%HQ^jI1!<=xM&} z;?VS1x_)Jb)y9r@2{&|C7?)i$#pJuTYuaHMojKAr1+yVFR2unrQyK~cqAUqx=8$HC zHpP_2S+JaB&7*lrlbaxKI;4~vtBawV*PJo^qWwI>TK_9W&34Khh=0<1`uhTJ3tZ$WI`27-Vl)IYUQ1OGN>rR>7YalG)kA$w5BKSIsAA1h@%#(_*rjT-u)76Y6k4AAc-MXsXwBI}(d-lL;-+ z#0iJ0@^h!0&nPVUH5PDJsq?Ekw^O>Avgogmq+_D5smJ<&HL^Rc!m7+dJ`DGg%pnA!gUp>Te2<2a3nXmwEzAy z<%H_urwZ&U8rqMUR$pPOkKOl}>EEd9bC76sH6=7!d~4LVD{IneQMUZi++qC>$$MHi zi8TjylVwwy^aSKy(?fG#2zN|1!*^I^RfpJvZJ|{watmJBxZw8h=G-!sHcd2~I%~qH z!^(Cd;NgneF>QiTYSs@Vov4)dAgQ#7I5d@JFNT*iYL)w(R2TDD$<=!;rDW13&zDim6_>DUzHVes+GcmG^ ziq13*;f`TZlw3!FNjZv^0<#bPMR`cjf8F}M2Dk&)lJfraAY&9xFTK4Vw>fNe){xS0q6jhx?^icM10FSHQhgjt0 z?RCUMEL*I$~@e#UYq>QPj?}W>fdUn)Os=H;}mmm6JZMtT5uexsJ^~IyR zZbY}C`#x)a9zF>6l3<3i&%)$e>q77D3rFGj0*26QdZwV$m^+k=LNQJEc7N^r{(;m; z9Bv%OlTfC?8C~~+b?coA4`4eHw|X%LV=v38!&Hj^X1l>oU#a#tjxHxN6!TZT*P@-S z6=zJaK5b9&-8FsY{teR&MP<-+ROJM9q|9-CBAo91X&blWwn^RM6{Z?VzB(lOa~5wx z@3+a{E0_lEn%>)l-}sKpzkm7YhF6e8z{lT3f(BL6*Zb-I`PQ}RZdZu!GXr}<*1Nsu zzHM7gZLW!hVKpw+LazY(MK#pZ)yNa-(Q@zAWUUAy1Is`s-bycmi;ZC(E|j&Q82cn| z@GA93-qr{FKWD7`(Ity6NDz=95)cq<;EV-q-2K-y1zdRnuTOg;D_bUOM>C5{4I4*v zbqv7{FK$}9DHIw;4Cww2w%$TUQF<^gtF_`pu0qBdrx2M01@v?(qp$PHfULL|kjGE~ z?~ghRHP=ihrP%;J6$xP}XcTx1oMAHSTTTHC1Mu68%|ckEpg4mc7n`eZ-I@2BF4MeT z$M*Rn`33_scW7R)EC}Fc?jjG3-4pgr)s8$BvKN?Kt{^8ZZT-6-Hei+r#yah` zZ8F>N3{e3bqahqAx^URM1ekt-*1PRar!XuS$cn@pA2sAtz*!K43esbgybV9D1>^?w zt5zbYtHq4|3`1z#`L%d9sd2#QRN`_)XX+ha60DJ)4$O2ZB@EUHYYuBeE~6XBFB30_bfc%`1aX0@cD!-erbzO?HvzAONK@dgwsPQ*WrTg*|pUa3~5M0!D;Ta1$kH z!Vru)F#wVkfy}dWClo{n;sMU`mi?_39_ahA^%_p31FF(DHiboO6xqa+De6v$>Yk0r2_~p|LozwL? z78D@Vmor#_9l_G#7q3jdWTqz-CIN}~c>K8oeds{7CTN$=Sj2nzE|`|2oG1 zYs~_FO|mD{c@qd|;1J6iOP`W0j!mj*sq`SbDXuf3SqSY3?x&lr_+`23A>@f0-0QO) zo3eIbK<~f1 zlD%>Fnm+n7z2S5D?XYd@kG%}s;+KNugBlEO9=Lq7;(W3j{|6y8cK(7>kqukx6b!3V zbKY*ckuQ3a&um@7ycZ81%?Vv{Q8;1gf4RKu3kut%n>*jJC3AIa7WD{5C?A%b`9e;j zd*`QB3jY#QBld^Aa-8Fu!0=deYu|TK5uf{F6)l@lz*m zPdof<3g@)9ca`U~pYuJlUifzVlC-p5nW?s!pQg;&z3kkc>T7SB4ppx?x^2=Wqw301 z-?xuce^lL-I~e``^ZF@IJc5f)zq-~gSNG)N*4J{?HIJ7qpI7(n=JR>=3yV)*n;ut} zdVBTyy+5zrw!T-nJ^T5(e!F|0Pu{EjZU6Vp>BI3~Wh|@Ke6P6wGXGr7@4Mgsrq^54 zKYX-)f9$Wn{r3MCl^P!4onn^}dxND-wMDrqO8l@{aO1=ekBdqVcZt1>UES7yK6>(` z#G4x`tG`d+{CTce`PC8Ul{1CYzxi7Edk1Un-g@ZP|KL>SR@GNld@p74ER@q*eil6S z;w#y}zpRN(Dq}$-R^q>L$G1cF0p5&EBFv!SaSn#NGtDE`1}&X971%;O1srn&bvt07 z0Vu}65bX>c3{K4}i4UnPNG*;9wa(BDs8sWI_yJUU4>*p@4bu&z8yJrPjexZA!A*N~ zjU8>=!I?lM7l9fDQ8YdWioolh2F3Cy;7~ePJH+S6 zhF}ea-qm8(-TDj+aiOdX{3s?J1BNEpq~emwoK*01C3+a3A1Dda-@sUBjiMRtcu90~ z(C0}J=DaU}nS(Tmg03BX;sv4oZV6O7+B6Kh3Fs3M2ow0rpeCS9OQ7pVA2mkkUsM6r zk3NQsZUlP&8)3xkdaS*1bOX>kx(EY`8;}ja*6l?%3%&1%Fe|4K*(}taB)Tc+T`hzu q%}vlyLFss*>ql=7BJ|6(A!RYt)?t7*D=-Iva+M%MA}DY6fOr6*8!Bx8 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.java b/src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.java deleted file mode 100644 index 52a7fa898..000000000 --- a/src/java/com/twitter/search/earlybird/common/EarlybirdThriftBackend.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.twitter.search.earlybird.common; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.apache.thrift.protocol.TProtocolFactory; - -import com.twitter.finagle.Service; -import com.twitter.search.common.util.thrift.ThriftToBytesFilter; -import com.twitter.search.earlybird.thrift.EarlybirdService; - -@Singleton -public class EarlybirdThriftBackend extends EarlybirdService.ServiceToClient { - - /** - * Wrapping the bytes svc back to a EarlybirdService.ServiceToClient, which - * is a EarlybirdService.ServiceIface again. - */ - @Inject - public EarlybirdThriftBackend( - ThriftToBytesFilter thriftToBytesFilter, - Service byteService, - TProtocolFactory protocolFactory) { - - super(thriftToBytesFilter.andThen(byteService), protocolFactory); - } - -} diff --git a/src/java/com/twitter/search/earlybird/common/NonPagingAssert.docx b/src/java/com/twitter/search/earlybird/common/NonPagingAssert.docx new file mode 100644 index 0000000000000000000000000000000000000000..357c71f7fda61bcc505b35a9611a3833843d8d65 GIT binary patch literal 37101 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 gj>I-_Bvh_v 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 z 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 tDLgIEP(kTB0RVXG*l+*< literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/RequestResponseForLogging.java b/src/java/com/twitter/search/earlybird/common/RequestResponseForLogging.java deleted file mode 100644 index 695ce4503..000000000 --- a/src/java/com/twitter/search/earlybird/common/RequestResponseForLogging.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.search.earlybird.common; - - -import org.apache.thrift.TException; -import org.apache.thrift.TSerializer; -import org.apache.thrift.protocol.TSimpleJSONProtocol; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; - -public class RequestResponseForLogging { - private static final Logger LOG = LoggerFactory.getLogger( - RequestResponseForLogging.class); - - private static final Logger FAILED_REQUEST_LOG = LoggerFactory.getLogger( - RequestResponseForLogging.class.getName() + ".FailedRequests"); - - private final EarlybirdRequest request; - private final EarlybirdResponse response; - - public RequestResponseForLogging(EarlybirdRequest request, - EarlybirdResponse response) { - this.request = request; - this.response = response; - } - - private String serialize(EarlybirdRequest clearedRequest, EarlybirdResponse theResponse) { - TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory()); - try { - String requestJson = serializer.toString(clearedRequest); - String responseJson = serializer.toString(theResponse); - return "{\"request\":" + requestJson + ", \"response\":" + responseJson + "}"; - } catch (TException e) { - LOG.error("Failed to serialize request/response for logging.", e); - return ""; - } - } - - /** - * Logs the request and response stored in this instance to the failure log file. - */ - public void logFailedRequest() { - // Do the serializing/concatting this way so it happens on the background thread for - // async logging - FAILED_REQUEST_LOG.info("{}", new Object() { - @Override - public String toString() { - return serialize( - EarlybirdRequestUtil.copyAndClearUnnecessaryValuesForLogging(request), response); - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/RequestResponsePair.docx b/src/java/com/twitter/search/earlybird/common/RequestResponsePair.docx new file mode 100644 index 0000000000000000000000000000000000000000..cc6d6a0de02c693fc6a10420d2fd50ae2666383d GIT binary patch literal 37144 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/config/EarlybirdConfig.docx b/src/java/com/twitter/search/earlybird/common/config/EarlybirdConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..4b10474512698c804cf180d64d6aa2683af71f14 GIT binary patch literal 39329 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 aiS3UL^|h&i74&0Ov4X6D overrideValueMap = ImmutableMap.of(); - - private static String logDirOverride = null; - private static AuroraInstanceKey auroraInstanceKey = null; - - private static int adminPort; - - private EarlybirdConfig() { } - - private static final class PenguinVersionHolder { - private static final PenguinVersion PENGUIN_VERSION_SINGLETON = - SearchPenguinVersionsConfig.getSingleSupportedVersion( - EarlybirdProperty.PENGUIN_VERSION.get()); - private static final byte PENGUIN_VERSION_BYTE_VALUE = - PENGUIN_VERSION_SINGLETON.getByteValue(); - } - - public static byte getPenguinVersionByte() { - return PenguinVersionHolder.PENGUIN_VERSION_BYTE_VALUE; - } - - public static PenguinVersion getPenguinVersion() { - return PenguinVersionHolder.PENGUIN_VERSION_SINGLETON; - } - - /** - * Reads the earlybird configuration from the given file. - */ - public static synchronized void init(@Nullable String configFile) { - if (earlybirdConfig == null) { - String file = configFile == null ? DEFAULT_CONFIG_FILE : configFile; - earlybirdConfig = new ConfigFile(EARLYBIRD_CONFIG_DIR, file); - } - } - - public static synchronized void setOverrideValues(Map overrideValues) { - overrideValueMap = ImmutableMap.copyOf(overrideValues); - } - - /** - * Pack all values in a string that can be printed for informational purposes. - * @return the string. - */ - public static String allValuesAsString() { - Map stringMap = earlybirdConfig.getStringMap(); - - StringBuilder stringBuilder = new StringBuilder(); - - stringBuilder.append("Config environment: " + Config.getEnvironment() + "\n\n"); - stringBuilder.append( - String.format("Values from earlybird-search.yml (total %d):\n", stringMap.size())); - - stringMap.forEach((key, value) -> { - stringBuilder.append(String.format(" %s: %s\n", key, value.toString())); - if (overrideValueMap.containsKey(key)) { - stringBuilder.append(String.format( - " override value: %s\n", overrideValueMap.get(key).toString())); - } - }); - - stringBuilder.append(String.format( - "\n\nAll command-line overrides (total: %d):\n", overrideValueMap.size())); - overrideValueMap.forEach((key, value) -> { - stringBuilder.append(String.format(" %s: %s\n", key, value.toString())); - }); - - return stringBuilder.toString(); - } - - /** - * Returns the value of the given property as a string. If the property is not set, a runtime - * exception is thrown. - */ - public static String getString(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (String) overrideValue; - } - - try { - return earlybirdConfig.getString(property); - } catch (ConfigurationException e) { - LOG.error("Fatal error: could not get config string " + property, e); - throw new RuntimeException(e); - } - } - - /** - * Returns the value of the given property as a string. - */ - public static String getString(String property, String defaultValue) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (String) overrideValue; - } - - return earlybirdConfig.getString(property, defaultValue); - } - - /** - * Returns the value of the given property as an integer. If the property is not set, a runtime - * exception is thrown. - */ - public static int getInt(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (int) overrideValue; - } - - try { - return earlybirdConfig.getInt(property); - } catch (ConfigurationException e) { - LOG.error("Fatal error: could not get config int " + property, e); - throw new RuntimeException(e); - } - } - - /** - * Returns the value of the given property as an integer. - */ - public static int getInt(String property, int defaultValue) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (int) overrideValue; - } - - return earlybirdConfig.getInt(property, defaultValue); - } - - /** - * Returns the value of the given property as a double. - */ - public static double getDouble(String property, double defaultValue) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (double) overrideValue; - } - - return earlybirdConfig.getDouble(property, defaultValue); - } - - /** - * Returns the value of the given property as a long. If the property is not set, a runtime - * exception is thrown. - */ - public static long getLong(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (long) overrideValue; - } - - try { - return earlybirdConfig.getLong(property); - } catch (ConfigurationException e) { - LOG.error("Fatal error: could not get config long " + property, e); - throw new RuntimeException(e); - } - } - - /** - * Returns the value of the given property as a long. - */ - public static long getLong(String property, long defaultValue) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (long) overrideValue; - } - - return earlybirdConfig.getLong(property, defaultValue); - } - - /** - * Returns the value of the given property as a boolean. If the property is not set, a runtime - * exception is thrown. - */ - public static boolean getBool(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (boolean) overrideValue; - } - - try { - return earlybirdConfig.getBool(property); - } catch (ConfigurationException e) { - LOG.error("Fatal error: could not get config boolean " + property, e); - throw new RuntimeException(e); - } - } - - /** - * Returns the value of the given property as a boolean. - */ - public static boolean getBool(String property, boolean defaultValue) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (boolean) overrideValue; - } - - return earlybirdConfig.getBool(property, defaultValue); - } - - /** - * Returns the value of the given property as a date. - */ - public static Date getDate(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (Date) overrideValue; - } - - Date date = (Date) earlybirdConfig.getObject(property, null); - if (date == null) { - throw new RuntimeException("Could not get config date: " + property); - } - return date; - } - - /** - * Returns the value of the given property as a list of strings. - */ - public static List getListOfStrings(String property) { - Object overrideValue = overrideValueMap.get(property); - if (overrideValue != null) { - return (List) overrideValue; - } - - List list = (List) earlybirdConfig.getObject(property, null); - if (list == null) { - throw new RuntimeException("Could not get list of strings: " + property); - } - return list; - } - - /** - * Returns the value of the given property as a map. - */ - @SuppressWarnings("unchecked") - public static Map getMap(String property) { - Map map = (Map) earlybirdConfig.getObject(property, null); - if (map == null) { - throw new RuntimeException("Could not find config property: " + property); - } - return map; - } - - public static int getMaxSegmentSize() { - return EarlybirdConfig.getInt("max_segment_size", 1 << 16); - } - - /** - * Returns the log properties file. - */ - public static String getLogPropertiesFile() { - try { - String filename = earlybirdConfig.getString("log_properties_filename"); - return earlybirdConfig.getConfigFilePath(filename); - } catch (ConfigurationException e) { - // Print here rather than use LOG - log was probably not initialized yet. - LOG.error("Fatal error: could not get log properties file", e); - throw new RuntimeException(e); - } - } - - /** - * Returns the log directory. - */ - public static String getLogDir() { - if (logDirOverride != null) { - return logDirOverride; - } else { - return EarlybirdConfig.getString("log_dir"); - } - } - - public static void overrideLogDir(String logDir) { - EarlybirdConfig.logDirOverride = logDir; - } - - public static int getThriftPort() { - return EarlybirdProperty.THRIFT_PORT.get(); - } - - public static int getWarmUpThriftPort() { - return EarlybirdProperty.WARMUP_THRIFT_PORT.get(); - } - - public static int getSearcherThreads() { - return EarlybirdProperty.SEARCHER_THREADS.get(); - } - - public static int getLateTweetBuffer() { - return getInt(LATE_TWEET_BUFFER_KEY); - } - - public static int getAdminPort() { - return adminPort; - } - - public static void setAdminPort(int adminPort) { - EarlybirdConfig.adminPort = adminPort; - } - - public static boolean isRealtimeOrProtected() { - String earlybirdName = EarlybirdProperty.EARLYBIRD_NAME.get(); - return earlybirdName.contains("realtime") || earlybirdName.contains("protected"); - } - - public static boolean consumeUserScrubGeoEvents() { - return EarlybirdProperty.CONSUME_GEO_SCRUB_EVENTS.get(); - } - - @Nullable - public static AuroraInstanceKey getAuroraInstanceKey() { - return auroraInstanceKey; - } - - public static void setAuroraInstanceKey(AuroraInstanceKey auroraInstanceKey) { - EarlybirdConfig.auroraInstanceKey = auroraInstanceKey; - } - - public static boolean isAurora() { - return auroraInstanceKey != null; - } - - public static void setForTests(String property, Object value) { - earlybirdConfig.setForTests(DEFAULT_CONFIG_FILE, property, value); - } - - public static synchronized void clearForTests() { - earlybirdConfig = new ConfigFile(EARLYBIRD_CONFIG_DIR, DEFAULT_CONFIG_FILE); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/config/EarlybirdProperty.docx b/src/java/com/twitter/search/earlybird/common/config/EarlybirdProperty.docx new file mode 100644 index 0000000000000000000000000000000000000000..b384dc5fc2102ce72ed694db341ca51e4ec2a229 GIT binary patch literal 40065 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 - * This is a regular Java class instead of enum to have a generic type. - * - * @param - */ -public final class EarlybirdProperty { - - private static final class PropertyType { - - private static final PropertyType BOOLEAN = new PropertyType<>( - Flaggable.ofJavaBoolean(), EarlybirdConfig::getBool, EarlybirdConfig::getBool); - - private static final PropertyType INT = new PropertyType<>( - Flaggable.ofJavaInteger(), EarlybirdConfig::getInt, EarlybirdConfig::getInt); - - private static final PropertyType STRING = new PropertyType<>( - Flaggable.ofString(), EarlybirdConfig::getString, EarlybirdConfig::getString); - - private final Flaggable flaggable; - private final Function getter; - private final BiFunction getterWithDefault; - - private PropertyType(Flaggable flaggable, Function getter, - BiFunction getterWithDefault) { - this.flaggable = flaggable; - this.getter = getter; - this.getterWithDefault = getterWithDefault; - } - } - - public static final EarlybirdProperty PENGUIN_VERSION = - new EarlybirdProperty<>( - "penguin_version", - "The penguin version to index.", - PropertyType.STRING, - false); - - public static final EarlybirdProperty THRIFT_PORT = new EarlybirdProperty<>( - "thrift_port", - "override thrift port from config file", - PropertyType.INT, - false); - - public static final EarlybirdProperty WARMUP_THRIFT_PORT = new EarlybirdProperty<>( - "warmup_thrift_port", - "override warmup thrift port from config file", - PropertyType.INT, - false); - - public static final EarlybirdProperty SEARCHER_THREADS = new EarlybirdProperty<>( - "searcher_threads", - "override number of searcher threads from config file", - PropertyType.INT, - false); - - public static final EarlybirdProperty EARLYBIRD_TIER = new EarlybirdProperty<>( - "earlybird_tier", - "the earlybird tier (e.g. tier1), used on Aurora", - PropertyType.STRING, - true); - - public static final EarlybirdProperty REPLICA_ID = new EarlybirdProperty<>( - "replica_id", - "the ID in a partition, used on Aurora", - PropertyType.INT, - true); - - public static final EarlybirdProperty PARTITION_ID = new EarlybirdProperty<>( - "partition_id", - "partition ID, used on Aurora", - PropertyType.INT, - true); - - public static final EarlybirdProperty NUM_PARTITIONS = new EarlybirdProperty<>( - "num_partitions", - "number of partitions, used on Aurora", - PropertyType.INT, - true); - - public static final EarlybirdProperty NUM_INSTANCES = new EarlybirdProperty<>( - "num_instances", - "number of instances in the job, used on Aurora", - PropertyType.INT, - true); - - public static final EarlybirdProperty SERVING_TIMESLICES = new EarlybirdProperty<>( - "serving_timeslices", - "number of time slices to serve, used on Aurora", - PropertyType.INT, - true); - - public static final EarlybirdProperty ROLE = new EarlybirdProperty<>( - "role", - "Role in the service path of Earlybird", - PropertyType.STRING, - true, - true); - - public static final EarlybirdProperty EARLYBIRD_NAME = new EarlybirdProperty<>( - "earlybird_name", - "Name in the service path of Earlybird without hash partition suffix", - PropertyType.STRING, - true, - true); - - public static final EarlybirdProperty ENV = new EarlybirdProperty<>( - "env", - "Environment in the service path of Earlybird", - PropertyType.STRING, - true, - true); - - public static final EarlybirdProperty ZONE = new EarlybirdProperty<>( - "zone", - "Zone (data center) in the service path of Earlybird", - PropertyType.STRING, - true, - true); - - public static final EarlybirdProperty DL_URI = new EarlybirdProperty<>( - "dl_uri", - "DistributedLog URI for default DL reader", - PropertyType.STRING, - false); - - public static final EarlybirdProperty USER_UPDATES_DL_URI = new EarlybirdProperty<>( - "user_updates_dl_uri", - "DistributedLog URI for user updates DL reader", - PropertyType.STRING, - false); - - public static final EarlybirdProperty ANTISOCIAL_USERUPDATES_DL_STREAM = - new EarlybirdProperty<>( - "antisocial_userupdates_dl_stream", - "DL stream name for antisocial user updates without DL version suffix", - PropertyType.STRING, - false); - - public static final EarlybirdProperty ZK_APP_ROOT = new EarlybirdProperty<>( - "zk_app_root", - "SZooKeeper base root path for this application", - PropertyType.STRING, - true); - - public static final EarlybirdProperty SEGMENT_LOAD_FROM_HDFS_ENABLED = - new EarlybirdProperty<>( - "segment_load_from_hdfs_enabled", - "Whether to load segment data from HDFS", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty SEGMENT_FLUSH_TO_HDFS_ENABLED = - new EarlybirdProperty<>( - "segment_flush_to_hdfs_enabled", - "Whether to flush segment data to HDFS", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty HDFS_SEGMENT_SYNC_DIR = new EarlybirdProperty<>( - "hdfs_segment_sync_dir", - "HDFS directory to sync segment data", - PropertyType.STRING, - false); - - public static final EarlybirdProperty HDFS_SEGMENT_UPLOAD_DIR = new EarlybirdProperty<>( - "hdfs_segment_upload_dir", - "HDFS directory to upload segment data", - PropertyType.STRING, - false); - - public static final EarlybirdProperty ARCHIVE_DAILY_STATUS_BATCH_FLUSHING_ENABLED = - new EarlybirdProperty<>( - "archive_daily_status_batch_flushing_enabled", - "Whether to enable archive daily status batch flushing", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty HDFS_INDEX_SYNC_DIR = new EarlybirdProperty<>( - "hdfs_index_sync_dir", - "HDFS directory to sync index data", - PropertyType.STRING, - true); - - public static final EarlybirdProperty READ_INDEX_FROM_PROD_LOCATION = - new EarlybirdProperty<>( - "read_index_from_prod_location", - "Read index from prod to speed up startup on staging / loadtest", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty USE_DECIDER_OVERLAY = new EarlybirdProperty<>( - "use_decider_overlay", - "Whether to use decider overlay", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty DECIDER_OVERLAY_CONFIG = new EarlybirdProperty<>( - "decider_overlay_config", - "Path to decider overlay config", - PropertyType.STRING, - false); - - public static final EarlybirdProperty MAX_CONCURRENT_SEGMENT_INDEXERS = - new EarlybirdProperty<>( - "max_concurrent_segment_indexers", - "Maximum number of segments indexed concurrently", - PropertyType.INT, - false); - - public static final EarlybirdProperty TF_MODELS_ENABLED = - new EarlybirdProperty<>( - "tf_models_enabled", - "Whether tensorflow models should be loaded", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty TF_MODELS_CONFIG_PATH = - new EarlybirdProperty<>( - "tf_models_config_path", - "The configuration path of the yaml file containing the list of tensorflow models to load.", - PropertyType.STRING, - false); - - public static final EarlybirdProperty TF_INTER_OP_THREADS = - new EarlybirdProperty<>( - "tf_inter_op_threads", - "How many tensorflow inter op threads to use. See TF documentation for more information.", - PropertyType.INT, - false); - - public static final EarlybirdProperty TF_INTRA_OP_THREADS = - new EarlybirdProperty<>( - "tf_intra_op_threads", - "How many tensorflow intra op threads to use. See TF documentation for more information.", - PropertyType.INT, - false); - - public static final EarlybirdProperty MAX_ALLOWED_REPLICAS_NOT_IN_SERVER_SET = - new EarlybirdProperty<>( - "max_allowed_replicas_not_in_server_set", - "How many replicas are allowed to be missing from the Earlybird server set.", - PropertyType.INT, - false); - - public static final EarlybirdProperty CHECK_NUM_REPLICAS_IN_SERVER_SET = - new EarlybirdProperty<>( - "check_num_replicas_in_server_set", - "Whether CoordinatedEarlybirdActions should check the number of alive replicas", - PropertyType.BOOLEAN, - false); - - public static final EarlybirdProperty MAX_QUEUE_SIZE = - new EarlybirdProperty<>( - "max_queue_size", - "Maximum size of searcher worker executor queue. If <= 0 queue is unbounded.", - PropertyType.INT, - false); - - public static final EarlybirdProperty KAFKA_ENV = - new EarlybirdProperty<>( - "kafka_env", - "The environment to use for kafka topics.", - PropertyType.STRING, - false); - public static final EarlybirdProperty KAFKA_PATH = - new EarlybirdProperty<>( - "kafka_path", - "Wily path to the Search kafka cluster.", - PropertyType.STRING, - false); - public static final EarlybirdProperty TWEET_EVENTS_KAFKA_PATH = - new EarlybirdProperty<>( - "tweet_events_kafka_path", - "Wily path to the tweet-events kafka cluster.", - PropertyType.STRING, - false); - public static final EarlybirdProperty USER_UPDATES_KAFKA_TOPIC = - new EarlybirdProperty<>( - "user_updates_topic", - "Name of the Kafka topic that contain user updates.", - PropertyType.STRING, - false); - public static final EarlybirdProperty USER_SCRUB_GEO_KAFKA_TOPIC = - new EarlybirdProperty<>( - "user_scrub_geo_topic", - "Name of the Kafka topic that contain UserScrubGeoEvents.", - PropertyType.STRING, - false); - public static final EarlybirdProperty EARLYBIRD_SCRUB_GEN = - new EarlybirdProperty<>( - "earlybird_scrub_gen", - "SCRUB_GEN TO DEPLOY", - PropertyType.STRING, - false); - public static final EarlybirdProperty CONSUME_GEO_SCRUB_EVENTS = - new EarlybirdProperty<>( - "consume_geo_scrub_events", - "Whether to consume user scrub geo events or not", - PropertyType.BOOLEAN, - false); - - private static final List> ALL_PROPERTIES = - Arrays.stream(EarlybirdProperty.class.getDeclaredFields()) - .filter(field -> - (field.getModifiers() & Modifier.STATIC) > 0 - && field.getType() == EarlybirdProperty.class) - .map(field -> { - try { - return (EarlybirdProperty) field.get(EarlybirdProperty.class); - } catch (Exception e) { - throw new RuntimeException(e); - } - }) - .collect(Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf)); - - public static ServiceIdentifier getServiceIdentifier() { - return new ServiceIdentifier( - ROLE.get(), - EARLYBIRD_NAME.get(), - ENV.get(), - ZONE.get()); - } - - private final String name; - private final String help; - private final PropertyType type; - private final boolean requiredOnAurora; - private final boolean requiredOnDedicated; - - private EarlybirdProperty(String name, String help, PropertyType type, - boolean requiredOnAurora) { - this(name, help, type, requiredOnAurora, false); - } - - private EarlybirdProperty(String name, String help, PropertyType type, - boolean requiredOnAurora, boolean requiredOnDedicated) { - this.name = name; - this.help = help; - this.type = type; - this.requiredOnAurora = requiredOnAurora; - this.requiredOnDedicated = requiredOnDedicated; - } - - public String name() { - return name; - } - - public boolean isRequiredOnAurora() { - return requiredOnAurora; - } - - public boolean isRequiredOnDedicated() { - return requiredOnDedicated; - } - - public Flag createFlag(Flags flags) { - return flags.createMandatory(name, help, null, type.flaggable); - } - - public T get() { - return type.getter.apply(name); - } - - public T get(T devaultValue) { - return type.getterWithDefault.apply(name, devaultValue); - } - - public static EarlybirdProperty[] values() { - return ALL_PROPERTIES.toArray(new EarlybirdProperty[0]); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/BUILD b/src/java/com/twitter/search/earlybird/common/userupdates/BUILD deleted file mode 100644 index 27a3c8c8f..000000000 --- a/src/java/com/twitter/search/earlybird/common/userupdates/BUILD +++ /dev/null @@ -1,45 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/commons-io", - "3rdparty/jvm/geo/google:geoGoogle", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-server", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-twitter-science-provider", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-common", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-smartcn", - "3rdparty/jvm/org/apache/lucene:lucene-core", - "3rdparty/jvm/org/apache/lucene:lucene-facet", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/slf4j:slf4j-api", - "3rdparty/src/jvm/com/twitter/scalding:core", - "3rdparty/src/jvm/com/twitter/scalding:date", - "3rdparty/src/jvm/com/twitter/scalding:parquet", - "decider/src/main/scala", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/common_internal/hadoop", - "src/java/com/twitter/search/common/logging", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/snowflakeparser", - "src/java/com/twitter/search/common/schema/earlybird", - "src/java/com/twitter/search/common/util/hash", - "src/java/com/twitter/search/common/util/io", - "src/java/com/twitter/search/common/util/io:dl-reader-writer", - "src/java/com/twitter/search/common/util/io:flushable", - "src/java/com/twitter/search/common/util/io:record-reader-api", - "src/java/com/twitter/search/earlybird/common/config", - "src/scala/com/twitter/scalding_internal/error_handling", - "src/scala/com/twitter/scalding_internal/multiformat", - "src/scala/com/twitter/scalding_internal/source", - "src/scala/com/twitter/search/user_table/sources", - "src/thrift/com/twitter/search/common:indexing-java", - "src/thrift/com/twitter/tweetypie:events-java", - "util/util-core:scala", - ], -) diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/BUILD.docx b/src/java/com/twitter/search/earlybird/common/userupdates/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..b7108e8d23cfa9d68bc48d55e732fde9e5e3bdf0 GIT binary patch literal 37213 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 OL54(N_ITC<;sF5E1fq5T literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.docx b/src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.docx new file mode 100644 index 0000000000000000000000000000000000000000..dc010d477ac218b5b88320c86c7f8eff134ba607 GIT binary patch literal 38334 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.java b/src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.java deleted file mode 100644 index c0c6c3be7..000000000 --- a/src/java/com/twitter/search/earlybird/common/userupdates/UserScrubGeoMap.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.twitter.search.earlybird.common.userupdates; - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchCustomGauge; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.tweetypie.thriftjava.UserScrubGeoEvent; - -/** - * Map of users who have actioned to delete location data from their tweets. UserID's are mapped - * to the maxTweetId that will eventually be scrubbed from the index (userId -> maxTweetId). - * - * ConcurrentHashMap is thread safe without synchronizing the whole map. Reads can happen very fast - * while writes are done with a lock. This is ideal since many Earlybird Searcher threads could - * be reading from the map at once, whereas we will only be adding to the map via kafka. - * - * This map is checked against to filter out tweets that should not be returned to geo queries. - * See: go/realtime-geo-filtering - */ -public class UserScrubGeoMap { - // The number of geo events that contain a user ID already present in the map. This count is used - // to verify the number of users in the map against the number of events consumed from kafka. - private static final SearchCounter USER_SCRUB_GEO_EVENT_EXISTING_USER_COUNT = - SearchCounter.export("user_scrub_geo_event_existing_user_count"); - public static final SearchTimerStats USER_SCRUB_GEO_EVENT_LAG_STAT = - SearchTimerStats.export("user_scrub_geo_event_lag", - TimeUnit.MILLISECONDS, - false, - true); - private ConcurrentHashMap map; - - public UserScrubGeoMap() { - map = new ConcurrentHashMap<>(); - SearchCustomGauge.export("num_users_in_geo_map", this::getNumUsersInMap); - } - - /** - * Ensure that the max_tweet_id in the userScrubGeoEvent is greater than the one already stored - * in the map for the given user id (if any) before updating the entry for this user. - * This will protect Earlybirds from potential issues where out of date UserScrubGeoEvents - * appear in the incoming Kafka stream. - * - * @param userScrubGeoEvent - */ - public void indexUserScrubGeoEvent(UserScrubGeoEvent userScrubGeoEvent) { - long userId = userScrubGeoEvent.getUser_id(); - long newMaxTweetId = userScrubGeoEvent.getMax_tweet_id(); - long oldMaxTweetId = map.getOrDefault(userId, 0L); - if (map.containsKey(userId)) { - USER_SCRUB_GEO_EVENT_EXISTING_USER_COUNT.increment(); - } - map.put(userId, Math.max(oldMaxTweetId, newMaxTweetId)); - USER_SCRUB_GEO_EVENT_LAG_STAT.timerIncrement(computeEventLag(newMaxTweetId)); - } - - /** - * A tweet is geo scrubbed if it is older than the max tweet id that is scrubbed for the tweet's - * author. - * If there is no entry for the tweet's author in the map, then the tweet is not geo scrubbed. - * - * @param tweetId - * @param fromUserId - * @return - */ - public boolean isTweetGeoScrubbed(long tweetId, long fromUserId) { - return tweetId <= map.getOrDefault(fromUserId, 0L); - } - - /** - * The lag (in milliseconds) from when a UserScrubGeoEvent is created, until it is applied to the - * UserScrubGeoMap. Take the maxTweetId found in the current event and convert it to a timestamp. - * The maxTweetId will give us a timestamp closest to when Tweetypie processes macaw-geo requests. - * - * @param maxTweetId - * @return - */ - private long computeEventLag(long maxTweetId) { - long eventCreatedAtTime = SnowflakeIdParser.getTimestampFromTweetId(maxTweetId); - return System.currentTimeMillis() - eventCreatedAtTime; - } - - public long getNumUsersInMap() { - return map.size(); - } - - public ConcurrentHashMap getMap() { - return map; - } - - public boolean isEmpty() { - return map.isEmpty(); - } - - public boolean isSet(long userId) { - return map.containsKey(userId); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserTable.docx b/src/java/com/twitter/search/earlybird/common/userupdates/UserTable.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b68b1babc0c18a36781305b85017a43fc1e2161 GIT binary patch literal 42106 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 Q(l`KP*zkbQ`RnNa0QLD8>Hq)$ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserTable.java b/src/java/com/twitter/search/earlybird/common/userupdates/UserTable.java deleted file mode 100644 index 3df08a5df..000000000 --- a/src/java/com/twitter/search/earlybird/common/userupdates/UserTable.java +++ /dev/null @@ -1,572 +0,0 @@ -package com.twitter.search.earlybird.common.userupdates; - -import java.util.Iterator; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Predicate; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.util.hash.GeneralLongHashFunction; - -/** - * Table containing metadata about users, like NSFW or Antisocial status. - * Used for result filtering. - */ -public class UserTable { - private static final Logger LOG = LoggerFactory.getLogger(UserTable.class); - - @VisibleForTesting // Not final for testing. - protected static long userUpdateTableMaxCapacity = 1L << 30; - - private static final int DEFAULT_INITIAL_CAPACITY = 1024; - private static final int BYTE_WIDTH = 8; - - private static final String USER_TABLE_CAPACITY = "user_table_capacity"; - private static final String USER_TABLE_SIZE = "user_table_size"; - private static final String - USER_NUM_USERS_WITH_NO_BITS_SET = "user_table_users_with_no_bits_set"; - private static final String USER_TABLE_ANTISOCIAL_USERS = "user_table_antisocial_users"; - private static final String USER_TABLE_OFFENSIVE_USERS = "user_table_offensive_users"; - private static final String USER_TABLE_NSFW_USERS = "user_table_nsfw_users"; - private static final String USER_TABLE_IS_PROTECTED_USERS = "user_table_is_protected_users"; - - /** - * number of users filtered - */ - private static final SearchRateCounter USER_TABLE_USERS_FILTERED_COUNTER = - new SearchRateCounter("user_table_users_filtered"); - - private SearchLongGauge userTableCapacity; - private SearchLongGauge userTableSize; - private SearchLongGauge userTableNumUsersWithNoBitsSet; - private SearchLongGauge userTableAntisocialUsers; - private SearchLongGauge userTableOffensiveUsers; - private SearchLongGauge userTableNsfwUsers; - private SearchLongGauge userTableIsProtectedUsers; - - private final Predicate userIdFilter; - private long lastRecordTimestamp; - - private static final class HashTable { - private int numUsersInTable; - private int numUsersWithNoBitsSet; - // size 8 array contains the number of users who have the bit set at the index (0-7) position - // e.g. setBitCounts[0] stores the number of users who have the 0 bit set in their bytes - private long[] setBitCounts; - - private final long[] hash; - private final byte[] bits; - - private final int hashMask; - - HashTable(int size) { - this.hash = new long[size]; - this.bits = new byte[size]; - this.hashMask = size - 1; - this.numUsersInTable = 0; - this.setBitCounts = new long[BYTE_WIDTH]; - } - - protected int hashSize() { - return hash.length; - } - - // If we want to decrease the number of users in the table, we can delete as many users - // as this table returns, by calling filterTableAndCountValidItems. - public void setCountOfNumUsersWithNoBitsSet() { - int count = 0; - for (int i = 0; i < hash.length; i++) { - if ((hash[i] > 0) && (bits[i] == 0)) { - count++; - } - } - - numUsersWithNoBitsSet = count; - } - - public void setSetBitCounts() { - long[] counts = new long[BYTE_WIDTH]; - for (int i = 0; i < hash.length; i++) { - if (hash[i] > 0) { - int tempBits = bits[i] & 0xff; - int curBitPos = 0; - while (tempBits != 0) { - if ((tempBits & 1) != 0) { - counts[curBitPos]++; - } - tempBits = tempBits >>> 1; - curBitPos++; - } - } - } - setBitCounts = counts; - } - } - - public static final int ANTISOCIAL_BIT = 1; - public static final int OFFENSIVE_BIT = 1 << 1; - public static final int NSFW_BIT = 1 << 2; - public static final int IS_PROTECTED_BIT = 1 << 3; - - public long getLastRecordTimestamp() { - return this.lastRecordTimestamp; - } - - public void setLastRecordTimestamp(long lastRecordTimestamp) { - this.lastRecordTimestamp = lastRecordTimestamp; - } - - public void setOffensive(long userID, boolean offensive) { - set(userID, OFFENSIVE_BIT, offensive); - } - - public void setAntisocial(long userID, boolean antisocial) { - set(userID, ANTISOCIAL_BIT, antisocial); - } - - public void setNSFW(long userID, boolean nsfw) { - set(userID, NSFW_BIT, nsfw); - } - - public void setIsProtected(long userID, boolean isProtected) { - set(userID, IS_PROTECTED_BIT, isProtected); - } - - /** - * Adds the given user update to this table. - */ - public boolean indexUserUpdate(UserUpdatesChecker checker, UserUpdate userUpdate) { - if (checker.skipUserUpdate(userUpdate)) { - return false; - } - - switch (userUpdate.updateType) { - case ANTISOCIAL: - setAntisocial(userUpdate.twitterUserID, userUpdate.updateValue != 0); - break; - case NSFW: - setNSFW(userUpdate.twitterUserID, userUpdate.updateValue != 0); - break; - case OFFENSIVE: - setOffensive(userUpdate.twitterUserID, userUpdate.updateValue != 0); - break; - case PROTECTED: - setIsProtected(userUpdate.twitterUserID, userUpdate.updateValue != 0); - break; - default: - return false; - } - - return true; - } - - private final AtomicReference hashTable = new AtomicReference<>(); - - private int hashCode(long userID) { - return (int) GeneralLongHashFunction.hash(userID); - } - - /** - * Returns an iterator for user IDs that have at least one of the bits set. - */ - public Iterator getFlaggedUserIdIterator() { - HashTable table = hashTable.get(); - - final long[] currUserIdTable = table.hash; - final byte[] currBitsTable = table.bits; - return new Iterator() { - private int index = findNext(0); - - private int findNext(int index) { - int startingIndex = index; - while (startingIndex < currUserIdTable.length) { - if (currUserIdTable[startingIndex] != 0 && currBitsTable[startingIndex] != 0) { - break; - } - ++startingIndex; - } - return startingIndex; - } - - @Override - public boolean hasNext() { - return index < currUserIdTable.length; - } - - @Override - public Long next() { - Long r = currUserIdTable[index]; - index = findNext(index + 1); - return r; - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - /** - * Constructs an UserUpdatesTable with an given HashTable instance. - * Use useIdFilter as a Predicate that returns true for the elements - * needed to be kept in the table. - * Use shouldRehash to force a rehasing on the given HashTable. - */ - private UserTable(HashTable hashTable, Predicate userIdFilter, - boolean shouldRehash) { - - Preconditions.checkNotNull(userIdFilter); - - this.hashTable.set(hashTable); - this.userIdFilter = userIdFilter; - - exportUserUpdatesTableStats(); - - LOG.info("User table num users: {}. Users with no bits set: {}. " - + "Antisocial users: {}. Offensive users: {}. Nsfw users: {}. IsProtected users: {}.", - this.getNumUsersInTable(), - this.getNumUsersWithNoBitsSet(), - this.getSetBitCount(ANTISOCIAL_BIT), - this.getSetBitCount(OFFENSIVE_BIT), - this.getSetBitCount(NSFW_BIT), - this.getSetBitCount(IS_PROTECTED_BIT)); - - if (shouldRehash) { - int filteredTableSize = filterTableAndCountValidItems(); - // Having exactly 100% usage can impact lookup. Maintain the table at under 50% usage. - int newTableCapacity = computeDesiredHashTableCapacity(filteredTableSize * 2); - - rehash(newTableCapacity); - - LOG.info("User table num users after rehash: {}. Users with no bits set: {}. " - + "Antisocial users: {}. Offensive users: {}. Nsfw users: {}. IsProtected users: {}.", - this.getNumUsersInTable(), - this.getNumUsersWithNoBitsSet(), - this.getSetBitCount(ANTISOCIAL_BIT), - this.getSetBitCount(OFFENSIVE_BIT), - this.getSetBitCount(NSFW_BIT), - this.getSetBitCount(IS_PROTECTED_BIT)); - } - } - - private UserTable(int initialSize, Predicate userIdFilter) { - this(new HashTable(computeDesiredHashTableCapacity(initialSize)), userIdFilter, false); - } - - @VisibleForTesting - public UserTable(int initialSize) { - this(initialSize, userId -> true); - } - - public static UserTable - newTableWithDefaultCapacityAndPredicate(Predicate userIdFilter) { - - return new UserTable(DEFAULT_INITIAL_CAPACITY, userIdFilter); - } - - public static UserTable newTableNonFilteredWithDefaultCapacity() { - return newTableWithDefaultCapacityAndPredicate(userId -> true); - } - - private void exportUserUpdatesTableStats() { - userTableSize = SearchLongGauge.export(USER_TABLE_SIZE); - userTableCapacity = SearchLongGauge.export(USER_TABLE_CAPACITY); - userTableNumUsersWithNoBitsSet = SearchLongGauge.export( - USER_NUM_USERS_WITH_NO_BITS_SET - ); - userTableAntisocialUsers = SearchLongGauge.export(USER_TABLE_ANTISOCIAL_USERS); - userTableOffensiveUsers = SearchLongGauge.export(USER_TABLE_OFFENSIVE_USERS); - userTableNsfwUsers = SearchLongGauge.export(USER_TABLE_NSFW_USERS); - userTableIsProtectedUsers = SearchLongGauge.export(USER_TABLE_IS_PROTECTED_USERS); - - LOG.info( - "Exporting stats for user table. Starting with numUsersInTable={}, usersWithZeroBits={}, " - + "antisocialUsers={}, offensiveUsers={}, nsfwUsers={}, isProtectedUsers={}.", - getNumUsersInTable(), - getNumUsersWithNoBitsSet(), - getSetBitCount(ANTISOCIAL_BIT), - getSetBitCount(OFFENSIVE_BIT), - getSetBitCount(NSFW_BIT), - getSetBitCount(IS_PROTECTED_BIT)); - updateStats(); - } - - private void updateStats() { - HashTable table = this.hashTable.get(); - userTableSize.set(table.numUsersInTable); - userTableNumUsersWithNoBitsSet.set(table.numUsersWithNoBitsSet); - userTableCapacity.set(table.hashSize()); - userTableAntisocialUsers.set(getSetBitCount(ANTISOCIAL_BIT)); - userTableOffensiveUsers.set(getSetBitCount(OFFENSIVE_BIT)); - userTableNsfwUsers.set(getSetBitCount(NSFW_BIT)); - userTableIsProtectedUsers.set(getSetBitCount(IS_PROTECTED_BIT)); - } - - /** - * Computes the size of the hashtable as the first power of two greater than or equal to initialSize - */ - private static int computeDesiredHashTableCapacity(int initialSize) { - long powerOfTwoSize = 2; - while (initialSize > powerOfTwoSize) { - powerOfTwoSize *= 2; - } - if (powerOfTwoSize > Integer.MAX_VALUE) { - LOG.error("Error: powerOfTwoSize overflowed Integer.MAX_VALUE! Initial size: " + initialSize); - powerOfTwoSize = 1 << 30; // max power of 2 - } - - return (int) powerOfTwoSize; - } - - public int getNumUsersInTable() { - return hashTable.get().numUsersInTable; - } - - /** - * Get the number of users who have the bit set at the `userStateBit` position - */ - public long getSetBitCount(int userStateBit) { - int bit = userStateBit; - int bitPosition = 0; - while (bit != 0 && (bit & 1) == 0) { - bit = bit >>> 1; - bitPosition++; - } - return hashTable.get().setBitCounts[bitPosition]; - } - - public Predicate getUserIdFilter() { - return userIdFilter::test; - } - - /** - * Updates a user flag in this table. - */ - public final void set(long userID, int bit, boolean value) { - // if userID is filtered return immediately - if (!shouldKeepUser(userID)) { - USER_TABLE_USERS_FILTERED_COUNTER.increment(); - return; - } - - HashTable table = this.hashTable.get(); - - int hashPos = findHashPosition(table, userID); - long item = table.hash[hashPos]; - byte bits = 0; - int bitsDiff = 0; - - if (item != 0) { - byte bitsOriginally = bits = table.bits[hashPos]; - if (value) { - bits |= bit; - } else { - // AND'ing with the inverse map clears the desired bit, but - // doesn't change any of the other bits - bits &= ~bit; - } - - // Find the changed bits after the above operation, it is possible that no bit is changed if - // the input 'bit' is already set/unset in the table. - // Since bitwise operators cannot be directly applied on Byte, Byte is promoted into int to - // apply the operators. When that happens, if the most significant bit of the Byte is set, - // the promoted int has all significant bits set to 1. 0xff bitmask is applied here to make - // sure only the last 8 bits are considered. - bitsDiff = (bitsOriginally & 0xff) ^ (bits & 0xff); - - if (bitsOriginally > 0 && bits == 0) { - table.numUsersWithNoBitsSet++; - } else if (bitsOriginally == 0 && bits > 0) { - table.numUsersWithNoBitsSet--; - } - } else { - if (!value) { - // no need to add this user, since all bits would be false anyway - return; - } - - // New user string. - if (table.numUsersInTable + 1 >= (table.hashSize() >> 1) - && table.hashSize() != userUpdateTableMaxCapacity) { - if (2L * (long) table.hashSize() < userUpdateTableMaxCapacity) { - rehash(2 * table.hashSize()); - table = this.hashTable.get(); - } else { - if (table.hashSize() < (int) userUpdateTableMaxCapacity) { - rehash((int) userUpdateTableMaxCapacity); - table = this.hashTable.get(); - LOG.warn("User update table size reached Integer.MAX_VALUE, performance will degrade."); - } - } - - // Must repeat this operation with the resized hashTable. - hashPos = findHashPosition(table, userID); - } - - item = userID; - bits |= bit; - bitsDiff = bit & 0xff; - - table.numUsersInTable++; - } - - table.hash[hashPos] = item; - table.bits[hashPos] = bits; - - // update setBitCounts for the changed bits after applying the input 'bit' - int curBitsDiffPos = 0; - while (bitsDiff != 0) { - if ((bitsDiff & 1) != 0) { - if (value) { - table.setBitCounts[curBitsDiffPos]++; - } else { - table.setBitCounts[curBitsDiffPos]--; - } - } - bitsDiff = bitsDiff >>> 1; - curBitsDiffPos++; - } - - updateStats(); - } - - public final boolean isSet(long userID, int bits) { - HashTable table = hashTable.get(); - int hashPos = findHashPosition(table, userID); - return table.hash[hashPos] != 0 && (table.bits[hashPos] & bits) != 0; - } - - /** - * Returns true when userIdFilter condition is being met. - * If filter is not present returns true - */ - private boolean shouldKeepUser(long userID) { - return userIdFilter.test(userID); - } - - private int findHashPosition(final HashTable table, final long userID) { - int code = hashCode(userID); - int hashPos = code & table.hashMask; - - // Locate user in hash - long item = table.hash[hashPos]; - - if (item != 0 && item != userID) { - // Conflict: keep searching different locations in - // the hash table. - final int inc = ((code >> 8) + code) | 1; - do { - code += inc; - hashPos = code & table.hashMask; - item = table.hash[hashPos]; - } while (item != 0 && item != userID); - } - - return hashPos; - } - - /** - * Applies the filtering predicate and returns the size of the filtered table. - */ - private synchronized int filterTableAndCountValidItems() { - final HashTable oldTable = this.hashTable.get(); - int newSize = 0; - - int clearNoItemSet = 0; - int clearNoBitsSet = 0; - int clearDontKeepUser = 0; - - for (int i = 0; i < oldTable.hashSize(); i++) { - final long item = oldTable.hash[i]; // this is the userID - final byte bits = oldTable.bits[i]; - - boolean clearSlot = false; - if (item == 0) { - clearSlot = true; - clearNoItemSet++; - } else if (bits == 0) { - clearSlot = true; - clearNoBitsSet++; - } else if (!shouldKeepUser(item)) { - clearSlot = true; - clearDontKeepUser++; - } - - if (clearSlot) { - oldTable.hash[i] = 0; - oldTable.bits[i] = 0; - } else { - newSize += 1; - } - } - - oldTable.setCountOfNumUsersWithNoBitsSet(); - oldTable.setSetBitCounts(); - - LOG.info("Done filtering table: clearNoItemSet={}, clearNoBitsSet={}, clearDontKeepUser={}", - clearNoItemSet, clearNoBitsSet, clearDontKeepUser); - - return newSize; - } - - /** - * Called when hash is too small (> 50% occupied) - */ - private void rehash(final int newSize) { - final HashTable oldTable = this.hashTable.get(); - final HashTable newTable = new HashTable(newSize); - - final int newMask = newTable.hashMask; - final long[] newHash = newTable.hash; - final byte[] newBits = newTable.bits; - - for (int i = 0; i < oldTable.hashSize(); i++) { - final long item = oldTable.hash[i]; - final byte bits = oldTable.bits[i]; - if (item != 0 && bits != 0) { - int code = hashCode(item); - - int hashPos = code & newMask; - assert hashPos >= 0; - if (newHash[hashPos] != 0) { - final int inc = ((code >> 8) + code) | 1; - do { - code += inc; - hashPos = code & newMask; - } while (newHash[hashPos] != 0); - } - newHash[hashPos] = item; - newBits[hashPos] = bits; - newTable.numUsersInTable++; - } - } - - newTable.setCountOfNumUsersWithNoBitsSet(); - newTable.setSetBitCounts(); - this.hashTable.set(newTable); - - updateStats(); - } - - public void setTable(UserTable newTable) { - hashTable.set(newTable.hashTable.get()); - updateStats(); - } - - @VisibleForTesting - protected int getHashTableCapacity() { - return hashTable.get().hashSize(); - } - - @VisibleForTesting - protected int getNumUsersWithNoBitsSet() { - return hashTable.get().numUsersWithNoBitsSet; - } -} diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.docx b/src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.docx new file mode 100644 index 0000000000000000000000000000000000000000..7b6842e9376724be6d0d00c83b9a4d83af356c76 GIT binary patch literal 39405 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.java b/src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.java deleted file mode 100644 index 76b14de5a..000000000 --- a/src/java/com/twitter/search/earlybird/common/userupdates/UserTableBuilderFromSnapshot.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.twitter.search.earlybird.common.userupdates; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Optional; -import java.util.Spliterator; -import java.util.Spliterators; -import java.util.concurrent.TimeUnit; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; -import javax.annotation.Nullable; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hdfs.HdfsConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common_internal.hadoop.HdfsUtils; -import com.twitter.scalding.DateRange; -import com.twitter.scalding.Hours; -import com.twitter.scalding.RichDate; -import com.twitter.search.user_table.sources.MostRecentGoodSafetyUserStateSource; -import com.twitter.search.common.indexing.thriftjava.SafetyUserState; -import com.twitter.search.common.util.io.LzoThriftBlockFileReader; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.util.Duration; -import com.twitter.util.Time; - -/** - * Builds a user table from a user safety snapshot on HDFS. - */ -public class UserTableBuilderFromSnapshot { - private static final Logger LOG = LoggerFactory.getLogger(UserTableBuilderFromSnapshot.class); - - private static final int MAX_DAYS_TO_CHECK = 7; - public static final String DATA_DIR = "user_states"; - public static final String METADATA_DIR = "last_updated_ms"; - - private final String snapshotBaseDir; - - private String snapshotDataPath; - private String snapshotMetaDataPath; - private UserTable userTable; - - private long nsfwCount; - private long antisocialCount; - private long isProtectedCount; - - public UserTableBuilderFromSnapshot() { - snapshotBaseDir = - EarlybirdConfig.getString(EarlybirdConfig.USER_SNAPSHOT_BASE_DIR, null); - - LOG.info("Configured user snapshot directory: " + snapshotBaseDir); - } - - private static final class UserUpdate { - public final long userId; - @Nullable public final Boolean antisocial; - @Nullable public final Boolean nsfw; - @Nullable public final Boolean isProtected; - - private UserUpdate(long userId, - @Nullable Boolean antisocial, - @Nullable Boolean nsfw, - @Nullable Boolean isProtected) { - this.userId = userId; - this.antisocial = antisocial; - this.nsfw = nsfw; - this.isProtected = isProtected; - } - - public static UserUpdate fromUserState(SafetyUserState safetyUserState) { - long userId = safetyUserState.getUserID(); - @Nullable Boolean antisocial = null; - @Nullable Boolean nsfw = null; - @Nullable Boolean isProtected = null; - - if (safetyUserState.isIsAntisocial()) { - antisocial = true; - } - if (safetyUserState.isIsNsfw()) { - nsfw = true; - } - if (safetyUserState.isSetIsProtected() && safetyUserState.isIsProtected()) { - isProtected = true; - } - - return new UserUpdate(userId, antisocial, nsfw, isProtected); - } - } - - /** - * Builds a user table from an HDFS user snapshot. - * @return The table, or nothing if something went wrong. - */ - public Optional build(Predicate userFilter) { - userTable = UserTable.newTableWithDefaultCapacityAndPredicate(userFilter); - nsfwCount = 0; - antisocialCount = 0; - isProtectedCount = 0; - - if (snapshotBaseDir == null || snapshotBaseDir.isEmpty()) { - LOG.info("No snapshot directory. Can't build user table."); - return Optional.empty(); - } - - LOG.info("Starting to build user table."); - - Stream stream = null; - - try { - setSnapshotPath(); - - stream = getUserUpdates(); - stream.forEach(this::insertUser); - } catch (IOException e) { - LOG.error("IOException while building table: {}", e.getMessage(), e); - - return Optional.empty(); - } finally { - if (stream != null) { - stream.close(); - } - } - - LOG.info("Built user table with {} users, {} nsfw, {} antisocial and {} protected.", - userTable.getNumUsersInTable(), - nsfwCount, - antisocialCount, - isProtectedCount); - - try { - userTable.setLastRecordTimestamp(readTimestampOfLastSeenUpdateFromSnapshot()); - } catch (IOException e) { - LOG.error("IOException reading timestamp of last update: {}", e.getMessage(), e); - return Optional.empty(); - } - - LOG.info("Setting last record timestamp to {}.", userTable.getLastRecordTimestamp()); - - return Optional.of(userTable); - } - - private void setSnapshotPath() { - snapshotDataPath = - new MostRecentGoodSafetyUserStateSource( - snapshotBaseDir, - DATA_DIR, - METADATA_DIR, - DateRange.apply( - RichDate.now().$minus(Hours.apply(MAX_DAYS_TO_CHECK * 24)), - RichDate.now()) - ).partitionHdfsPaths(new HdfsConfiguration()) - ._1() - .head() - .replaceAll("\\*$", ""); - snapshotMetaDataPath = snapshotDataPath.replace(DATA_DIR, METADATA_DIR); - - LOG.info("Snapshot data path: {}", snapshotDataPath); - LOG.info("Snapshot metadata path: {}", snapshotMetaDataPath); - } - - private Stream getUserUpdates() throws IOException { - FileSystem fs = FileSystem.get(new Configuration()); - List lzoFiles = - Arrays.stream(fs.listStatus(new Path(snapshotDataPath), - path -> path.getName().startsWith("part-"))) - .map(fileStatus -> Path.getPathWithoutSchemeAndAuthority(fileStatus.getPath()) - .toString()) - .collect(Collectors.toList()); - - final LzoThriftBlockFileReader thriftReader = - new LzoThriftBlockFileReader<>(lzoFiles, SafetyUserState.class, null); - - Iterator iter = new Iterator() { - private SafetyUserState next; - - @Override - public boolean hasNext() { - if (next != null) { - return true; - } - - do { - try { - next = thriftReader.readNext(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } while (next == null && !thriftReader.isExhausted()); - return next != null; - } - - @Override - public UserUpdate next() { - if (next != null || hasNext()) { - UserUpdate userUpdate = UserUpdate.fromUserState(next); - next = null; - return userUpdate; - } - throw new NoSuchElementException(); - } - }; - - return StreamSupport - .stream( - Spliterators.spliteratorUnknownSize(iter, Spliterator.ORDERED | Spliterator.NONNULL), - false) - .onClose(thriftReader::stop); - } - - private long readTimestampOfLastSeenUpdateFromSnapshot() throws IOException { - String timestampFile = snapshotMetaDataPath + "part-00000"; - BufferedReader buffer = new BufferedReader(new InputStreamReader( - HdfsUtils.getInputStreamSupplier(timestampFile).openStream())); - - long timestampMillis = Long.parseLong(buffer.readLine()); - LOG.info("read timestamp {} from HDFS:{}", timestampMillis, timestampFile); - - Time time = Time.fromMilliseconds(timestampMillis) - .minus(Duration.fromTimeUnit(10, TimeUnit.MINUTES)); - return time.inMilliseconds(); - } - - private void insertUser(UserUpdate userUpdate) { - if (userUpdate == null) { - return; - } - - if (userUpdate.antisocial != null) { - userTable.set( - userUpdate.userId, - UserTable.ANTISOCIAL_BIT, - userUpdate.antisocial); - antisocialCount++; - } - - if (userUpdate.nsfw != null) { - userTable.set( - userUpdate.userId, - UserTable.NSFW_BIT, - userUpdate.nsfw); - nsfwCount++; - } - - if (userUpdate.isProtected != null) { - userTable.set( - userUpdate.userId, - UserTable.IS_PROTECTED_BIT, - userUpdate.isProtected); - isProtectedCount++; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.docx b/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.docx new file mode 100644 index 0000000000000000000000000000000000000000..c18acff090ae162bde4da3fcfd70d2f059751c50 GIT binary patch literal 37077 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 Xt-}CsR$vYSjCiq4Ovk1 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.java b/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.java deleted file mode 100644 index 6cfb0814c..000000000 --- a/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdate.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.twitter.search.earlybird.common.userupdates; - -import java.util.Date; - -import com.twitter.search.common.indexing.thriftjava.UserUpdateType; - -/** - * Contains an update for a user. - */ -public class UserUpdate { - public final long twitterUserID; - public final UserUpdateType updateType; - public final int updateValue; - private final Date updatedAt; - - public UserUpdate(long twitterUserID, - UserUpdateType updateType, - int updateValue, - Date updatedAt) { - - this.twitterUserID = twitterUserID; - this.updateType = updateType; - this.updateValue = updateValue; - this.updatedAt = (Date) updatedAt.clone(); - } - - @Override public String toString() { - return "UserInfoUpdate[userID=" + twitterUserID + ",updateType=" + updateType - + ",updateValue=" + updateValue + ",updatedAt=" + getUpdatedAt() + "]"; - } - - /** - * Returns a copy of the updated-at date. - */ - public Date getUpdatedAt() { - return (Date) updatedAt.clone(); - } -} diff --git a/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdatesChecker.docx b/src/java/com/twitter/search/earlybird/common/userupdates/UserUpdatesChecker.docx new file mode 100644 index 0000000000000000000000000000000000000000..d203ff6b9e891b56e076654365ddf1572bc7ec97 GIT binary patch literal 37860 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�y@^ln;mN-c3SZDVeBB_~mbFVtn`(^80WuLZfKc?29eev+O!C zo2Ht3?>c(mmf^2L&r!BWyNV-GLeF!T2h*QPr@oPFVCz5Iu+MX6(|iVvhIfg1YP99K zE`Jb_@3elH=pe)xYdqc4@v>o);(b}vazLv0Q387o`;GCIQ*==>9eXzYFk%N&pJUiE8i(0E=DbyzQJ!5RbwEuy{d_upi(Je8BPpQnD{v;wGvc*0Y$p zF>%nEdSB=SVU{uE7L`%2SwYrOuTSz&LLYaSx?`~(tPQ4RPUu;>@6waXSOrxRzzDE@ z5#9btg}JB%fCm-Wb1h^71L)%(K6d(JF0OR<64 zYJH&7aS>9HvesYtM#}mNOfV|$$D|ySp(I%)665xO5Dz6ltT=+rTr@7vUKAx4_>8Qw zd*T*WoycnMB>Z#$&5!YjTy(QOinfBC!;;;#2^dRQ!aXb&$u12RxWOx_#!@InT3A;3 z#p?W|=uA2($4a_onK|iNy&iJBX9?MTCAw;TE4o^;{fRmN&Ih0Iq0s?7jlpf}C8s!m zu&*GC*NzGoT;*bJ=~*`Q%46?E<$|?wJ0uJI_7;rhAr~hd&ZkIDa11}?hG!totK6Am zt22PGEV>-yh34+8EPGN4Qt&g1%EgICZ*?RZlXLI$Z^19f6u0Z#jzGZy{}CLJT?#4q zr{Lb-f-imxuEITWc42;0JF)KagcMXERHuDNBpkIaCmfae3)roRB7~17X}alrO5(IV%)K5(93w? z6>^OLb<*NU^Y9bnM&&{@Wj^q7-g)_DxG*4l=wHqJUu)x%|7bL%Nj0{M2&``oz`1i9 z*ijZpL4fd0?cA6nS_ePRCVF7<&jFX^X_jNk*3Fs*;S$anBTS=ywz|BnmG>^Crq#X z-svnM*Jc8XC+M(!VkyXQcx4>C9o{-c>Ywz7Y=6-g8=LcOLjuho?6d&d!$I2*2HE~Q zof>?2@8R_Z6A6#P4-BWf!^hPf96ek=Mhaeo4_Y!VAyI;iKG&}B?7X!zZdAFDLprI@ zbu$N}jOJ72wy<=O$3;rvq=F)juVY#+P2{V>MYx;;`&Oh+Dmt3WMZ7kgw^>40_n z#&ErWM-zOxK4VZ1^V%dWmMlnw!sA6Qlt-~_@%J{f%!`=_j}vg6rqMWyM>#}ao8!aALy21Sy)TJpwX}~d-@jL4bB1N6cREO`7#q) zT;a^^%Fy=AstifWwzi*JbgGgg*$oVKjd?V|BV#8i!-E+es!tv3R@?~Ox-KeFY2(dJ z2ZxII)S%7*pDQLH)F^=KW#VX_LW5#hqQ%5mK-l?X2Sdx?gj_|0h99KFGHtrQ4HV=|CKC;k`-&T#u2q7jU?mx|$K{aZYV%cbb(4t`{YNSq8SfgLDxOCF5 zDbzSt$Pl@NB|0Z0M!sB*m}Mi4Sm#Ss$dGg%B&4UKG9;gvnj&DQXr#(53K^Sbovb;= zBDSB_*99NCvtDY`o0}egC|X8M88+C?^bhMLV#Nl1VVE|6$iWEe9U=0(FWie4pI(bS;_0yrE9d~w_`oLpUsMlaf>{(Ox ziCnFSnfAJ~2Vps0p$WtMP$O077b@)u6>a^{ne{}~2n+5EusxF1-1`SbLF4;r_XZ09 z10z#lBLPTBC+-5C$}CnQ*3L+aBe;*&b>nTSMy6L470W~!!(-dtePM~j^(>%rB-3LM z+a!PQD43v~*IiKRD^w-0vQ3|bD=K&^tk0s>L2*5ppOMl2#^|A`2@XY}Rus=ZqoK)k zpTXVE3I$}0PlUW4jBu3WIZ+Es46CU-5~C2n2-gq(UOhf#o2Q>CkW+eDwACobS2)b6 zS((#Z3YfOObLw0F-mWnpk?6>oAj}u6d$`oDC^n_DuRh#H5flU&t0{&OI+P=NduW|L zNc4m;p~CUj%fSMl(nmOp+c<8E{tdPa7rS`cA;^`HB4!3DX2$E2Rsbvn8Vm)pOiWXW zxhH5bsh_P-Z~Ak-0hLd=vq*4URhmT!2%uC-As0&_H<%*~0t1EyS%s*C$hXG|IRNrb z9koJdfkFj_4sbR(2xycmQTTpLkASi5y$M5e15U%X)m{!zAdbNHC8<5HcPWW!&;6i6 zWi3llBBUUURkHom#fdtlY9j*ai}`_{1KfDiGE*V9pjZiqrU#b>Mdb)u%2Xz)6MX^u!P5~(m`09=|7B;y4|My3N$1dR%|JE*xJnUhKWg#wcVvf z-6QO6hq4w)PT$=J6Q8E6>Lw1k$Um4L^_+)bncSz$TJ=;ux-R(=Nk|cRq(1Ww(uqFP z1F{<_k}Gs;HgcqUoK6gji_B4ihFfBTWr>780lYm;+bYdzdMUiKS_L6nyQ0g8UEs>}n@*hnEFuTs> zh=QN8HAxGYfZvUq^^+Vds^-UvfFp&wT01e}PA|h(Xaa$h{sO}I4W#{VAe-Mn^S%?E zK9ad_=8G`Y5gVnZ;e6IuF@GTNl>_fB_KenO)WG+CBuZ2(u&EMo7nw0Z=rGjt-_R58 z;2J~Fj|Jtl1PlJ~fiB_CieK-V&*Z6t9f^+PrqMwPZY7AXI~}-=5i2q(F~X+g2M8i7 z5R%N5E68b5E#U{|p%gz6|LMR0iE=98wGrEq_1ml@uo8pX#R|`1ogM@X6`|;#?}UqD z!Mq5`h#^JboJk-XGeu5;dC?nlKnL#=IK+@!E?6x13=tA=2z+$A{>jeSB&CP`$(#jt zk4u+??@0eVw{PGcFvraf0^(Q=1%mU>bNlKRPG7{$%uJ1){yf6(t(%-LQFr?Mh|zdF zD4&%CLOeR|J%tK3q&L2InR@piP+mT-n^qNf{F$a1c#2;r+YfalT5=@l)F*{n=wnPP ztK%?Y=);@uo11&rvv=!8CCADA)`xeFhXdPIpJl$P#q2HL>vR1*0Oi*D>0S8k-mZJS zUf27<^!{1;`{Vih)7yz_`)l^}_=fJ)^X*xCbv4rYdG;OfX#ZyC8b2SsK4yD&X9Yo1 z`o_WB8vrRi*)?50TMcR4RiATh*mcT)i|eI(>GZ&`b&Y)JApG_`eB-sWH5ozQiZMLo z`rR2SQ0nU5(%WM1E{dai+}Yu3&g{8vnbOx*kg|K($KCUl!{XYxR^MBPzxvL%$mTKG z%*WUFy-C;C)pBob+`FLrk)hT9+{f2lK)<83?anQ~_?`RRXxuS=I6Ejkq&a!t!?&f= zb#33#p+Eih%;MJLlyhYte}yy<>5iCXtji+2e&l{Ku>B`_hJP9Us3fLEnDy;M%oMG66T< z+FKnzJ}&_eA>X_63-4ydeS3TL7QG8n`9k&RD|uyi1*)jv#A5q`w}V;h@~L_I0*NOJ z55DxYU?CQZ?_JP^|t@ooOcRMXuiy5mcyi$=3?_v^7B(EC7G~_yvlF(`MhJ8rRqT{s3i#z*i*E!LE^tYNVTctZ~<8gZ! zYjMVE`S1-(bwH#MmyfLG=EhcY`LLE}e%x#2P#@!Tc*y?T0r03`=d<(UuwGegHm56L z6kdr>53I+2@xo#8t8QNip*!6ZIe4$>kKzSeeL(Jy+!i`JgerZo4IKD)4S}jny(#{| z-dL~Xz9?nDuySoYBHVO;L_(w;Us$yf8NOE*=ogIx{V zrfJUU^wZ*I^D|XbI?h8zmj?m~+g1GtyGnZFR_<)=pmQ@Mq%hGjaMOhajh=+#Iy!@I zX5N@glJyGk*kl^DkQJl!8}C|gU8|X}%?~Z-EFH~vm>Y43C`K&r&rK^!@g^Z6Z4dUH z`c6@rp`*qcr@6{{!Xk0e?sN-&J6EHKRKudp6~E&MiYMiYa|*V=e0>T zfnlh?u;14HA7SqR9a*=1i^uBNwrzLNu`0H0qoa;(+qP}nPRDjS?oK**)!%pTefRtQ z-+TX2Bd12jsG4iexzE|P_Byp|AzC|CO1&UH-QUIh4n86|(x!Z^l}hXa@$p{rWe{X& zoqPlzy zJu&bTEecOc(0$Tp+l|}p<(jwM`{TrV;oSO(qk8m!>r?61NhGZIU+&K^S597MZ=2aY z82s6t+rQ5kYoJ>?O(Jq?2;ukJ1zis=5D24|cGi#d0H2vncBUWkS}NaSBTcH_+Zns} z9`9nmosFL?zf3+Ku0On5)=%p=5ro|bE4N>BXU%w{q`y9zwtK(vwD*1uHWsX2nbdvS zeH(`A8!WrLqVIf{7(aesh05)Fa&KWT z^5C3AnF!=&qXSF?aQoydX2=k%U=<4 zFG-dq@h!B`Tp-K2&V`>#AYu{!(j9*hY`GSyq86phXUCtHm8fjf+PadMP(9GS3T5b^ zCvfcta#*+UOD)X)w}ohRn2!$Wdr`d-{_X3pu#2zwt8-al3;1J)y|=ud!kR znMXeNT5pR76AiCTf_j|zvK5T4ZRG8t2=%mV%BE*&W7X3@5SgJ-sLue_0`A2`at*s0Js z_+t_OzVz$FyL5L^=RrzNPm(kCjB)S%%<5MUFM6L{M0cD4SoDjfdJk>>T=(c(I~~N4 zLC1#A+b%jUqJXUx_p`PxQXi-IRxJAM%dFH~?&43!WAiNrdZ2m&^`~kR`~21E(koSo z1du3R1U-k*W~9eXYJ*nZcAY-LCHHBl_Du>>MvqhOKQ7ji(<7&KZ!PrM3_!nf)B2Yl zBo8d!HdQT~*cBVg1_JkiHLkfr30@vCEXUN~h^ITyn2;RlpV^V@dYaHJpA%D+ zWaz)#PUh7KFW<4I_rP(+`VyipuyxXW_L@?k-4R*mak1+bz#h2&Zra0S-e|}T`|R3~ zKj;~oZT4;Av$?DM0)s+o{=xOy9ioaqU>xs!l?u~CBKy$~|3^L-cy1(~>x)kTNj}F8 zl54gcQXTG|tl)sO9(J!l(-_@B71g0TLsvCqgfKx(=UJUj0p5Ay>0P%P7yE;IRs7kn zn>B;pl*S|{rvg!_)BX%o%In*sj?&>5XRWcvo3G%q6j#X!)yFELMSG0S1cEt;Z5=k3 zO)I7p)+hOsqAAlQoi^NQO)KX88~67OMo!z=jLelk?ObCH$6`}=Qa=$)yO=L;e%3SG zM6WqhEIlHu&iGzR$YC3@`cSr^75nb(ZdzO*B9Eo9oL!jG*=RLERBPcg!Kb{For0E~ zLHMYBJzqiNdp+NBj6qkS>&vG8E^riKd1<8pR{+St)F;cBw*7~;Oz-dS<{_KbUA z)}v6$Su|tD*KBpJ&%4|-&a_kxJ+UKH`)+(&x0MvR&2)B#3cG)&Oc0tY5nM zwz4J_1}@L;z1j(%z1sC2!4i2UUyz3~R#^p(- ziR^EGc&|kKI)dxx{kZ3h=#RJ-Eo+eU31l?gP0~S;|5NioeeSPLp0&^c!0?b{HO+;Q7_qfCnds2qNS+itIq_7U@|nUcqP>z7XJu0K?aHRl zXgy;rUH3Wic35m;K8E!SR`fImm4^J(^ z9AsD0wvZteL+@d0f(&9Gt=rY@E|bS)_M94I-wEUm^lNiy?;uzj|J-L#`XPm#w)t3C zaP0S%&Fddh3OdkDDSi$*tT~MIH+vrKYnbiccPFLG_rkkUAG&b_M2N@hnx2=`B%O|i zqse_6hR8l^HXj4Tr$i7KJ4YMqQvEeQ4Xd%tZF5aj?DR#p< zE2gjL*U`m;Lc7~h5Sy7coQr@Cu4{*VIq)Yt2UmsPC)@7*HUdBY|Jec9Bkyy+ZaQ(a zabY5X`+FUHYU5gmQ_Oa;Ctb}&k}lv{l`HVQmgCQP(Hm#fq$j0o{N&t%^b_hDfybm- zQKp`+E=p^l8x(3|gm^Pk@BW-Ss;e%ot`ayB+rW`fx}KJ=-0GPq<;hb2Y20AB5+(J^ zt~IqkH@2O>v8%s5$G(&uRqE$5M@KT@{-E!$;(MF>uRD)U51E#1FV4{2&49Mld$8{f zmdwemvpIYSv6-#0t7q4h)fAqq!drCtE6vDuAtZL<#xx`T-{jV)+}uH6v_VL&Ja0{^ z0JVj(>InMuUYZBvMZ;7%B;^&RRD`UCgH+ZFRCK!xx!q`bnrM3I-YFIYJb8FCta9C_ z1AL7Oe1rJRE{IK6#h};>;3CV~m9l-=k1Ny-_NiXh_XfcAE;`E1%Biz)q`aUAtNkS4 zGx<|U>q=3pTA#K64oz1xWf#YD(JHT!7FQN~rssTct66bt2#>)jzQu+%II|X1NJXn! zx;+0ywIVrMXlqJ$)ve0T{^D$$=zfDTlE=heHOE;s#!bp>HJp7lti7B-Xlo4o7QzWg zsh-PTwdPs1AtE*}^!KL~kf;>@{PSwn5{X$)YxMT{y=qe?YkueUUk_~LOdXd?BHvxz zt>rwefqSQvhX=H+2ecFArE19b+y`l<%dvFbt<^lO)4)S!{9C#?KnhI_$~>);*S8zD zam6aWx?8VL;>r&(-jX)pSZKua>f} z_G|Sf)dx~^x4wfta4ib7=icLgEcj$UEp3nB+&9NF*U}1Q&;$=pV}JEyW7#-4)s4IM zI?EI-v5!ZD_dR9tmI#+gt~(TTL$9x@87AzzMLCG zX0XT$BdM^uSyyV2m*b}{^q)VH^u}I~2JLcr@T&;bhe<3q4bPQ)PV?7c3p67!Bxv%V z5>>SGIUa2H3nn0stHqOtW6ne?Zr5(d)?Ti(g-;(z&|}XCiLZkOB=3b^ei+ec3(2|7=2)Fr7zC7N6cz|UDJIaLUw{PjngEyMb<8r-xXN8BnHNk!-O(Z!ebrVN5$kV!!Z z>Kqx)RKh^|=HTI39@!&AxJIZ6}7Bw)@~G}ai{8#Is6$ik7zX-uL9v*;u6c7{-7q6W8Qfrx9JDK504 zAO;ptA$gwX5{leFwH2jy*A`#DKnUewW-L;N)`K0|hQNS0{T8m_6WzTHfoXX8`~_kp z2TXbqy8LGIX$ZYw} z>kG8ZceS=KC@v;&_rWli=>uu~41YYJ_c56R^;%5;1jB&9Pxm1!%MWsAi6%x?S9zWv z#kf(4fxg@F*a5*>DkK#*-C_rs8Yp@~4~F=x)oSgFOr`2>j4viPqQ zqlUvaF(r!2=6SShK@32NHYVNT2!(-=fbp?|UgH#c4Oi$kPFSPBq|de6SYlv5uW|;# z@UjN;SfgmL1+xTdr}e|2XuOW)fj`wyWW%9=U}yM~l;!Zw)6YF{)7k@}_bD4*jq*;s>|IUlJ#FmWU6K=_!7?yq_q#Xx{=7s#^wY`k zFi@FQlSZR1U!#_2##%|k7x9u+7}`_YpNZc_b&eZGqcHkq*J!oQM7~59XOCAO59R7T z9k?9N*1q;vaxGL6K{xhy6*(0{_3DjhO{vwIC>T|$H&7jIO=<=CB7O9reCYW|v-gZO z)lISY&S8sece%5|*Tlvl#P=`Sk1UREUQTZYjqY@e5_K5ji&1>id!qLCx%WiT^Zh;; zleU`sCW)li%cA$ePY8XGV59;#f}&_Xqf1X*ze|Rfw)rLfRMh388F}-v_sF&XI4K`K zf|ZV$l75VZYka!l&5Y}AQ@f*RZgum*)8#WYy*(x8{#NbvrkLek1sD%V{R~&T)1?=* zn)_5ocl>Dn+0FfJ#Qn{mFIQgrT&67%>%x3JZnp4A_~E0|XEra@xwF>@8j zbdm6BsO!B-2C;SryVe(1-b^^0{z}zOK`FB*fhV0oe>`s}q}D`!;v%&frj|(0mrSqs zHOay|-qJAL(kGuKqz8i*_e92W@WOuJKT$eXiAMIwGm_}t*9&i6rZ2?Y-$q%#e9`+T zK1c5IN$h&RH4%XM`~<~Ov6)xI`HjL^iRiH$JL$PdemH0I>stcm-Xjoi=pr>2HJXW) zfu3!eiG5_Q^-KJKx2vrC8_>11%@)U8}di$#@h*EZ(!$SP*RCAmcijoa0_r043aEH)b-c%t7_rr>Ai47+5TX>v=2nG^buk- z1Y4Lf$&zFUvo|_FUw{%g07Vr1 zh4C*D=RzXve?$OT{l7&-4~aI)bnE>sfF%!h9-gj?&}^fS^&ENnGMMHMEjLDA0zVZh za{O*Gg!w6aM_`WexlgEsBm)#uJlw1&&BBf5E0E8h_)zR58HT~DMdDGVJ)=()uV7Oo z8R7fr1vof=i*fqDim^~<|83b^Nt2$gC#*!t_FGGf?_7hhf#(LRLMyi~m(DsHyn9+p z8|OREi=QzoO*5iyjch6%L{ZYu#1jo0PsvggP9cJ%aD(dN%_V7W)MkiLh_Nv^xX z4xg|x#2r4la?5{nP!3b}?BBN`BF7?cMalC&re(#y_Gz&p7j^{=5{$t@))LW#YH!%iArk9j zaTkCep_Y2Qhhy`;8y78yqU4H_EHK6EXEdsaS7;toj=%Ro5|k#Ei%+w(D!8ZJ_z5VI26#R#H`aWoo+$ zYIJ@Y;PoLzN&(!fEJcWc^zGv5&|w@|Fbo*hL#Pwl!gQUCD`5yYL%3laT7Jv1id@=N ziZsvx<$AoQ$ky1j{u~%89Ske%g8$*FXg-=>)d*e>WrQFVP2^Z(ED1@X=@bnn1{8y$ zMY|G~{G~oX%}uuo1&{TQq9%|^qC&eCjY6d{IOT4aIg%CTp5FSBC-u_d49pNvBLwIm zEmUi6+994KjD6x2p(>Jc0M+eyD^BwdlW`8|3*o9gQ45b5+0sY1G(i1yGV{{B=8|zM3`ps6^A8GS8D6bFF?~ol+;zT zF0hrFRa0~dsp*Gs0YNDd97ab})p^OfSk^-!@J0wjxD0*gqh*;4D`n_NBPvV;E@2!| zdaWhfPXC)MF1q!5kM3tRb${tvVw!h$JKfB)tb#p+1z#K06Ym@DuYugq%;g3#T`c9P z%7@eALzqX^7;1MRmv1XU-2xS#k)E3+oOOo>Dj2IdztKNzdXK6lC%M3C7Iuh6lRRH0 zthPUF$;gx7l+;8+Z({bsfn~t|lk7FA zp!2Y(uu_R205h;S5ehG*hq%51V&SA_n256895hKIC_xi)MZ*|>N?a*4^8;eUXR0&= zQN;tYa^>Ok2osMANyT`06&5cXIf7bu{3sbGBHrc5JQZDd3}>a}9u@eBBrC;wDlrUL zdN?I9&B(lnmr5x=TC*DwaSV)O?6QJ*6_zOTgY?b!{c zNy##!-IV9QMhu}KTB@T=Ls0pb1v+&=3*tXv{;^=XGa~Vs_+c$_x6BhI z$x~f%IBTghf)>hjTUDi=>Ss+shuHjA42r+_9zgy<-s+6FbB0%$m#pB%3oZ%(&QnGIeij1n!~DeG(c8UDnS3$hjQQWDitG}T}pyH`?$3fV%3ij%4TlW7CZCw8V( z0nIf(iyjjJaAaHF__rC!b;_vhw6}VwAUqhZ7k*k8t}j9t^*<2ypmyVH(FsHg6S$^q zlkG0Y1*K`X9TFWqoqGL+@~RmgV&lUI>JQ>lP*^a zT_~m7LViz`GNGI6(%IHB1TV0(dWIJoI1^RVLZirXM-5gS+tQD7Al}mn*>)JkM@5VS zgDw5B>o`CR|LfTg5;f+tN52#Wz8xzg)85VfH!$1!=f7gck8kBq9U{U)qXIk@#()bA z3Yv#aFypu}I@-Ao69n3CL2OBck+4sGLYT|tAhKVf?=tbNeE$o3pmG#shv zs)PpogOtw?}r67~FRl2~8ky9N+wNm39M8BuTIf!PYCO8Zsz({jvK@sn{6huVE zqsE{Ov+!XLoiqJ$ic!SA%@{~u(m!a?`9`#mIc6<~H4#aJcyCQvB2r~wkMiIS6;W_U z9oplScz6 zoWvQQLT5q9vj8gUY>ETn18cFRn{SXnvt~?B5x!25?19k4Id~%GIA8)B1k6Iy$2nY< z+e>AB3Qdigl;M8$&LzeI-2WYxv|L0p9{sPdyy*w!Ka%Nbef(J@law$lbSs=HgnqLI zD?w(YRz}j=2sOde=7LIcXP0?e6$GJ4)T^TwoBV%$=5rsgz-FeDvQ&Z% z&HPtfkhJMoqZ11J7<_K@a{H3>#Vcygtwo-@Q=VylN^g^9MBz_Lo}qaNIMX6?L7Pf+ zrlKzOM_gcUg>)Qk>ZUp#!%~HiiiKN8ROzL1^p?$$83*y{^W8O4o>;tU8m^=o4)Bd^ zD-h+?&TJ{jC${pMymV>xAyXP~^9w698$&J?AiR461_5`)UixP=l8`23P@GB7X zHk2B1EAEYipt6jAA8FS-Ot49|<~VS^&-nKaqF`*rLKw3-if><5v-u3^yWg)s1a7fc z&|Bz5mWW@#DDRtVw>JF7sXt8Gx55O0fdu~!#2=nAa|>;v^9A_YP`)9e4qV@xLh31X zU2dkO=LM25LBCv*cLRv_3@Bk{BlBPiNs!22;QL5vjc(JLf4J3wmWBxuzZ>w1qxgap z&k=q3H0UtGs59i$3H-kX#h2OGr+k!%-~X2gC%509cm8?xT=6dv?9fDu0iCkXBVVF_ zf&aqUM`B2<1l|Ubj_~z(<*$$?8^{9EcV5Zi`70jhF8UuYWJjs@k@C>Lli&~aGvhk| zJ^L>yWd6SfVg7bZ=rzCc7Mdz!_&Le_B$)R@7273^;Qe1sMr$@5^YTVVp5< zp{F#xj_LmpTk})?BZ--y5GY&ewDyA;P6CB5Xyl(-y#0R##{Ngi{4Wt;(Mu|id-et> zSWx7(AI1qI_RkWo_nQx)YB7r8pV8p4p8X@|78=h1I2!v%CB{HG3UF`8h{ufy^6naT zT>D6U9Q#OSQ%pd>wl$w;%jS*7K*Y24&Oyr~?m_oBo-IHYiG0eTg?fw&4rZsHdse1t z;Gl1?W{duN{VYO>S#ldi!VIr|b2>c76=g}ngQrbddpu;H1u<(786_0HH9=zp%PisV znX3qS zux4q#{wQ&qlnnuK?KHc2#90Rt+AaeQo4TIkui}zH04QDeUj$xKoTVND*a-YBiGw$hcYvJEUZ}D4A#QYXFnMys*+j}l<13>}KU$c*aFr|NBO8nkC_H<|1;QUKq=3~ z{D5W1qD}DPl(GWWzv!%oZ>BnDsF&ct`?av2S6N(Yv8 z?87r1e=!SvsR4xs?~u`X!QSc*$vv%$E6F|m1YcCP=&b=Q*i9fy@rh=`TtMIDYmfAn z@l44M=ZrDq&B>ykqjKDsihepI;5K0?xJk1VKz%rEB)jQ-Z(8l_!s5K3+^W|PyNp*` zRV1Ml^XS%2%H^bG43`%`JE*nx_CU1wV}_7#1r8rTvNXpe{#55TfX*LK>->>podHOrJ;W+{6`0N2IRM9??A z6g`~r#q#z0)1Dwe@94KE5;>z6j5l@0`++wxT(M8LEDh7o*CQv#J4WV@YH!dxR5((BKSytm4|mXa4SdiQlsi#=c<4)f{xeh-r) zfRhM?kR?-sXRtw-3})W|yP+6=g>3H%j%~Y!y1Y`eBugP_ zHONV+ZI1h>NI{EC0{3P-o-PyIy7sXpEt4m?XVc=q&?F7sOy038Kc5bt9|b+DfsQHlS_0y8-g z=**Gmf1Ghbh0e#SbIxzTPC=NE!k;o{YjGOzB&VjbrJ)k6cKeOne&`V1A(|kU1s5Kq zM(RIlB~`9$ye695$?F1tD^wEC=e(ZzneE%Ew_VOxP4^J|qaLXOb#IWX9 zVdh;&S`RTwrPhG$GIG`6S;c3-FW@bb_Utwl3OZLG4xeAKKmB#yp_L5tvx4ClWoRm~ z15z*tBsDUjtXWZf%Y#{TlZ;{!!r7lklJx_7jFsPGO z8}eaOY%_`wKunxf6RRLxXoebX+;R`c>F|Nl8E=ectUN(6PMP3vDYn32s5^g62vDfW z55EqEc>fmxkKM+@BvM%Ze-WTOg5trz8FysQ_5u@=mnAO^HXn;$%v=y5E+sCN78eG% z20b1)C?!aRHs@;y10)P}5=8x;C8rY>J5)L~ouuQp9W!#w_n77ZUq?!Pp9f(}$>)0|Vj=*}wKfs5 zVN3K%{OP%mx)xdsde=F$QL38q+0?#5eVFi*9M%ro~sKjS}BlCHvuk3AT)uyq3zA4PlhVWXS+_NxE z{8xpfk!ih;ghK!oG_q>4C&@G(eLc006o?`A6f7of-cgq=CSGWO8r4pOPrnccXi5oIOU31At#Q5l{&vGFNg ztYsdEWP%Jmm@sRu;XDk5S$-Q2qhX@EpHClIB*_nfso921-@rt##5*2%MbCOOSVx|T z{~tm{d|B?wPn~2_Iw0T7;%y(2pMH``>`@z~x*PnLI-Gz%>O_$Lw>lempgL}tZojv4 zjQ@a{9KJZmyOjP7WQU0ZeZL+h*Zyx(tn_zxzKPkdAOE8ZWuc(BelIu($O-I!^=xxC zb#bw@GyiL!RkPZb(|2z4o}E&Iwmmc07Dw3wnltjcZ8=IC;Ex1=G<*ZGec(!f&zIjJ z+lUxXF-yC;#JGE&>FseI8kJ|tLU7ANNH!9HV+xoD5v8G{<-DI?EwyWNHwbmZOEtX7;DPSe^K-W~@B5nx@;Q~#@+3k~q#Ts=~J z7@?u1Abw?t3MtHbxjFV+w?cZQ6UD>O%_Ducbosal0f*PX z!qqh_>`uCR$KYebxvZBd1U{;GOwYVv$`^+$NT$Wk=(r4Y_+ybNGxzAI7fK4E%S8g= z6G-e#MZPR7km6xRe77FKYzBoLCf$~oiSZiNsV zS|lX5V_vqmReo|`~%aqZm= zN@eDncef!VkP8HxL>^jYxOSiM4k)+&CTteu$v|+ot|#uAOM+Lk;{#-g=jYm&-?)Re zG3{cHUkn5uIDWzgU{5;ed`51%i@Y{R%Wo_L{*HNe*s_V-5YXz7B&P zTEi0=_x^>1vm@x{V$S=uDi}kt!qmGS_C!RSOB;`uEm9w&r*c}NKAe}{s;+D}14*gF zNU@Xep!K?<)i+s|QUvD=fZRz2@NBi5rI)(2&IMd6?Q2|4wVqm1~o{UNH6EL;J9MN#` z2rUdP6(<}PMun961=lKk&Ar~IG_U7~3$f+*(rdB01NzVHm8V)q${@fNR4u^2KmCON zYC-kY)JXZiF8JuVeyc%dc#t`-o`J&zfKhMo_#Jk85EG6o%=E`Pi1t0)|uQ6Gbq^uF+HbSr}8_^t*Q=lcWbp?ht;$ zM%yMO$1eJnvC||R&29i@_bCUvWzYhrA-#`+MfBvxZLs~bp9Fk%TOXRMBLV_+F$t#i z`^kpw9ppb9`^}T*Yz%Bb`x_1f1ohvJnF0GPs~8&D{MChaE2ZD=J2U>sk8cswsaeuC ziOuLJv?C!+lZbd;AZYk?m>cm|LhTE`XZUPlnXl@kIv;G~Jg?}c$Uy^Oa9l(r!AW>N zW}l5d9^MGFTEEgaP>Ryhw*BbCb)X*rXDRYN*PTVbWSO zqi$16Y0s{t{N(Lb<+|yjixCAoSV3tt5RDBtUdNg0bjV6CNO@~YtP#aQFc)^79tqOc z;Ed-H76~JQ8>dbxiM_|$y^~DN8WT{-61_ZO>lwD8GG<6GCX~dgZKilU%6w#vcY1}* zf-9LXT4rs=_8g%^=gbFj7ADp*9B`b8f`y7iy1y|pW~Z;AHZzmK$zxXX?lS^KDqXA+ z#ex+fR4DIoxRG~g+nUcLp#^H=LUH-Rc@~yuvA*F>mST>7N~7EQUb4>%UV#?YGT!m27mw775A*?&+87# ze=lNosColdy8HP362{fD8=}+piaS-X^_P%tKN&iC;i}PtQ!P1?J7OR5^Z6SBq1ZgmC zJKoUMcmP3Y4rJ9d8ukMM`Ex5vCwBp*rK<2nadgbK9lb@iozxtn#aJ)gccXV_ zmXGGPUj3=wTmd^-`0&@+J4#fk@Tv(sW)Hr&Ez7$U!4|z;6$6LE{*-%x6y?#Xx_x^{ zFsAAHA4lK9XIx)XdnhkTJ>_b|E56+fD|2`#MEKF@pnf^Mm z{M~9*&VGXvyXU7ma>wD)%Z6)2huG!X)k+BhYO6?Wlc=^0wIcBuc@M&sW1pYlR^1@n zWy@e)wa}-_g|`elf)>P6eQcWb2x>*A<6*h)6wsrj&-~uK`bsy;7omipzr!45-=4IN zlspiKcS;bSMz5N^0^f&MaCgC85XqM$u9|7~tygPx+u&+pusmQS+h%L~T8`jQbZC;> z7(z*UMZpgz+fhsj(eL7;We@|Q6IRHIt=c!~J&=E6-sFdVU)h?6*?@sZFLu2G195&Q zj3?^ZwW7ywhTUi$%ubY~%Ro}+_DX(M{xwzFC4;>dT4X!^M&QXT6gmI~;Y339U5)3p zQJO_UiYy*ol)gZA?r~5sn^729T4VWa%^mw*_2uz#GSkwsB7+_BMz41DN_C-=YHzNk zSd8u&{n4j#K}sqPY?vJ~!DTYqX-hIOxgnR~`zs}w^gh2FEgy{5629p`^uoS5qP`#hW_tH|q4{<3{MA0k zyBTCGv2Vxs<+4@3SH}-oYUrXi_w9Cn{lZ@0<35y1tPKGwRB98%D=d)j6y#Dto>sq! z0=I!89~^6+++~o+`BVgwG2k(%vj19^#9z!0ae=@gcic!jtc}H^jHdabAzX4aC8X`h z6W1tGX(7LA4Wu;*TWUk@^%kssjU0B(-=SBb%8oY3Gg0UmmvOV`f>bWqmb4HqCO#HI z!Px~VpY#ArF#YjG0!nTM5mM z!X~!y<)tENeO|$F8*vNdCW+Usx~GuCo`ySe0RsD8tjfe|B?TG+6(@C`DKWwC`(Yii z@fr1A6uU!Y$6*SF+$u=SJTuR~t_iC3-kWsFY}h2f0b1f$cLd)0 zc(+2D3=JDfe{Xyd>Zo+3alQ$iU*g;w+7V~T0K5T3Vqh7Qec)ELRN2mY0l`K1lOC{B@;&h7w&gAe;Sim@c0pNh8;YYf06J zih5YaEC>0_pEc_grS6nPh|)19JgS*m=Tq#~Qdq`Zo;vrlsi3-x`ujkDec4vT3Kyo! zeqdlr^L800y}@9fZS*05gwG>bJCS-dN<#fki%tK+ywxS-=+Ah&->%LDrQp>zS}E2~ zSv6=2P*IU`V_RX|I>{}Jw+JN_oaYl1mCdS_%UVlX$v;&iPsfq>EZD!aFpGN_(KfrX z8`E~WkRormW`i@6qqTq+yPhlZ@}^CKYr4MonfRB_vZ^xO9D}9!{ID-`-uog6hBX5R zpzGZhby<%JJCgV6&%2vDm%T-A*Cc!~v45O_Fz=o*cZeo}S zk}>W4q+|0ly=yT|B}omWA&mwc1Fpkm``gqiL${{-@j;5GpCt{J)z)~8EvcBHTdz_1J*k#_ng5vIjUAy_S!yr zyHQtmj>;93^L-LRcRlA-X&sTZ1sQDR_os3diacdoRq-Iju6qfO!Krof1P(pm*fNRf z3VV2KkxpZ#_>lEg{i-Ojv>O))kr0ccwKS`jwyh$6{vfqd7&$Fyd`=-nvF7=?V^ftK zL`oOd973`L|NN~>QrWn~2SpFiJv1rF5%+AG#tVu-Bn`_o4+D_gKQZEu6A8~53ba*| z=0_@LTb6){_0)8VGDox=+7Tx6%N7wKEh;d4S}eajGC7fKSes+9w&hvD3EdOIVN*{v zj?r{UKPsm+L);-}GN6J=CyOzmCWj}?7BgZBY0+<&Pi>k9%S}-~UZgO-3G${zOuezZ z9KLzY9oH*9$Tz6t``AmThjohOeyi2}1^v%lEXR*`wG{Y)2L;St(SXm!uFfv@wi>oJ zOqMRDwts!>RY%ps4KSmF{PYnUPZ%%Z4MSg4LZ(8=hpUl#`3{xPl~82#u^raC>;BbY z^w?JJ9gK*b7tksuPA`gy5J3fwn zpu>W>1fdoLX6{gqa9SM(`!?o)-4uXUF&q$Sqn_eL+02eB!E|g%(Yx-eMu4q=^1@gH z#cg<1&5*N25nS5_mucb@w7mX5bO}rxEq4R;Pyuxj{zKQ_-C_Tu?yuIc(X;iy{2Uo- zw_Bd1$)dv4oH}3Q2^DPpivvkz+-yr&Fx4cA8IbD16Q3(vhIom9&B;$-)RHbvNku-o;H8C`({9oBwhOtej%sK(r( zk7@Pn5&g$FYm&3b?`m?YvgMs>f^VyDVE-J@=1y6;J)mGCpm6Me2>&Bl!O7mi`L9vU zj;pr|WJVYJ+B0ysKhBZ|VSyed2|{DNEUio6?nhxmwjml_@$MzZ%V9kFwZ`RonGav^ zD9FyBYL1p_o{}6!rIIf{B&(~JgPm-Qw}w~15|XDqkYbdS+r@3iakP37iV>0gj_@db z`u23Q%Y3SZOwx|a6Y6MC4{tnMaJtWBClZr(ixD-+*b$quO1DeKXAG9?2PSY=sne?} zmt%&h;+G5Og*n#s>rLgUZZ0(38d#GF2WEHwS##LA+8UWU0jn~9vb$-GExUbg z?CzaXp?Gnf=I}&z2==A|AvN7-akA!n5K8R2^V~5O=FMxFE8}Ups%*is2sT+%x5;QU z-yNQJZ@??$uh*Nvgl)udbZ5@%K<&~U5&C19sg;BGpQ)#mmp_$Y*HKYt=GuIPEI;<% zV`qP(Y%D;c($BCR~k7Hk8pT$xw+%E}3MaJS%^rLbkJ=GavmMio}R8}SLQxC6sF7`b-iP~4GH zVIPuGgOFWaVg7PtMXgS;-%)uvpM^}d&q6{fed@yL{!3)OXqZgI6bT!lJ&h47-7IEU zSpbg=7dOxON|GET7lqVSh&*Sfyx-2uL%N?A2RTqZF+D zDm@*~w_i`wMLZZ^w*VW0kUNwToSQLM;oWLF6=<)B>U;BND+_MJ{PqR~h{(|r^424e zI>@T=N?oP7k{5c-RBe*Qe)X>%#ob(AfNG>OdljYf$F8_@yHZB{{fFmigoRZcg9sZ7f`3sqr9HU|s4LL^t zrx(Rx0sjrF_gdf%Tnmc(v%}0WIHlk8BdikDhUFJQbi=}@+`KyiW=16xbE0AzTeig7 z7w`5S!s$7;8|!!L?gb}I!%&p<=F!7BzX9AXIv*mDSHGK$E*yRubyC)!L=VRh`s2ZO zOGy|}&E5%BB=_#Bq}KFExvxG9z*=|D?Ok`@$m)qkci(*3f$rB;*BvL3_(Oiq81wVaH1A!rF4u3E9wy(Yo0@iGAOuey?HZyQ_Qe5Pai3sfcm= z==mfk4v&YohX@U-pr`ZGUH8_d`EE~;SC^hGG5g)l^T4LPwl2@u+@J;rbE%J??Xm{y z>3Z}D<#@I4da6zsfu4D=3wNy#-r3q99|y|HK!k0ICwQIeBY*qj(?4gdg0U6zZb%T2 zAYu>@EZ~dZ8eG*xtgPA@JR+i7HK26X6wPS(C6 zhA(troR;59k~oVPY8^wQ66Me`C=I_ZrU0_zUqBv1`Mp2t(N$cs92MpRc$LJ2B%qN$ zp<|DbTHSK+qw9m;Zf+I9Dg?#r&s=V;zx8C@Z#mEMc%9f4j27q*&fWd5w$41NiK`9c zVc!!lAR>s^82mt#RmHRhs@Bhn6cnilWhVqfKnkIfge8W3D+#+uL$NLeB(b%S4@AnA zehA7Yf)I&-K>`V~s1ce99Vj+r4*6qp=ALRJ-;RyCN@j{li9jltkQE z{kK!9R=O~kozGWTh{wQF5MruCY)8}?(%FzXxyv5;as+ITPme_^T{wH3u`7Vu{y2ZI zs-buRRbc6Eci^kNktLbUGf_kudso@lML{f=aU8Ux{XcqCs^Idq5KE(gb|Fml%PC%4 zT;@;K+UcxA%Cm%ua*|vCw0dMu;o-oB)|p@35oKwy2_Chsk|4gr7u#`}G#4emR3azW z)4iL=ovyk-{S03Be@kv?fOx>q8&iNPn!&5?i}=G%GLoxDR(?q@TTm0LAJ_@~?C3Aq zVvVJ3zBeqkmhCMnsSKO9uSSR7+@1rUikX(+0Gz5_j?oz&?kzbBunWUcuLsbMq~;;HynJ!IbY zvZKPV^59`zU@O!N66QOHAF``7nP<-18$L-oxz#!^wqcT{Zd0U7J8DH=;-hVHbbqR$ zJu)a3p7bnZMt^70WuE4DuF^}h@ZAu-w2d?~uKv5EDQ}WlvZH=Kb{E4XQpK?a+E(x+ zPxxX`yxe{~%eXIkW$bNSm}~UC47|N(kq@d2XLGJxX7wAg3Q5Ys8i-sX$7zp%~ogNLXs0TK_D!)+Scot=p^mI_P@(gd2!rvk} zaKD!Fdg6aau}}1b8BI5?RqpMdnC>vknY?|C+ITc}m^mE%+VGso?uuMtDN}^1KR+ch z{D!WB&5204%h2Do99dneuH<@iLX@5J0f6MKjy0|p3ZQxNvG~kbEaaIduD$m z9rq=ezc^(2#<9iJQn6T~!MLCTubt4L3?eCauBv%K8R-ZgMM25L_i4_**p~S>LTC+3 z#Ay~mgW-JpdT(Zo&(tCLZ+P0-%OeKaK0NBYi@XSWT;f<;v-kj_q2K4W^DM<`sOia2 zOn2Z3*xVLV6<9>a1xii4i8UF6pZWFKCA}f&L8c!=Fgjl9exn!ecXP!!JhaDzZJ3z; zS~*ZX(=0Me#{KBTrf$*tt;JXj!|&oF1%XNc zKQ+5^U!RsQzc0tPfX)tXeU-0PI5UDMP3>}i#Da5EZv+Qt8xZND=Jwf;iP6q8>E}-|D;<~=k!3TaXi1bMrcfqeR=CPBmULUBqO0b zs&k;oCmzGCVm(+I;C{*@vO_1CIcVOShrBq6!v|4ktM5Cb!=yX!V_r;M>WY<&y#Ihr zuum8pXZ`N|=Z74JmFv;gO0%-ClXQ z{zG?(SW`4h>Wq8F6qmYc8MnR{H!tD{*q@{?7Q&7TP z*e$B^_K+X1Yng0K$5kPtR}XnqpS?*h03y^5Am_GfJ3js>KpO<& zbqq)bW5Nl(=ZF!QDDTzi3=ANeIyo)^m-2u-vc^X>@K2HZ13>%}Dft$Z^p!V$kO$!5na%RLVI`_{iB%L;=geg%_zD z6|*h}m0`dHa3MlUz!TRAGGz&{9-K9n>Q~6?dT$4(byuf;JJSf$Z(>E+J+33*KNeNg%tE)-} N;twp3u$ 0 - ? new Date(clock.nowMillis() - TimeUnit.DAYS.toMillis(antisocialRecordDays)) : null; - this.decider = decider; - this.isFullArchiveCluster = cluster == EarlybirdCluster.FULL_ARCHIVE; - } - - /** - * Decides whether to skip the given UserInfoUpdate. - */ - public boolean skipUserUpdate(UserUpdate userUpdate) { - if (userUpdate == null) { // always skip null updates - return true; - } - - UserUpdateType type = userUpdate.updateType; - - if (type == UserUpdateType.PROTECTED && skipProtectedUserUpdate()) { - return true; - } - - if (type == UserUpdateType.ANTISOCIAL && skipAntisocialUserUpdate(userUpdate)) { - return true; - } - - // NSFW users can continue to tweet even after they are marked as NSFW. That means - // that the snapshot needs to have all NSFW users from the beginning of time. Hence, no NSFW - // users updates check here. - - // pass all checks, do not skip this user update - return false; - } - - // Antisocial/suspended users can't tweet after they are suspended. Thus if our index stores - // tweets from the last 10 days, and they were suspended 60 days ago, we don't need them since - // there will be no tweets from them. We can save space by not storing info about those users. - - // (For archive, at rebuild time we filter out all suspended users tweets, so for a user that - // was suspended before a rebuild, no need to use space to store that the user is suspended) - private boolean skipAntisocialUserUpdate(UserUpdate userUpdate) { - return antisocialStartDate != null && userUpdate.getUpdatedAt().before(antisocialStartDate); - } - - // skip protected user updates for realtime and protected clusters - private boolean skipProtectedUserUpdate() { - return !isFullArchiveCluster; - } -} diff --git a/src/java/com/twitter/search/earlybird/config/BUILD b/src/java/com/twitter/search/earlybird/config/BUILD deleted file mode 100644 index 3bfb3ee1f..000000000 --- a/src/java/com/twitter/search/earlybird/config/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -java_library( - sources = ["**/*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/code/findbugs:jsr305", - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/search/common/config", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/snowflakeparser", - "src/java/com/twitter/search/common/util/date", - "src/java/com/twitter/search/common/util/zookeeper", - "src/java/com/twitter/search/earlybird/common/config", - ], -) diff --git a/src/java/com/twitter/search/earlybird/config/BUILD.docx b/src/java/com/twitter/search/earlybird/config/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..5f636e181d746dad28fd0bce4c5f98095113f704 GIT binary patch literal 36933 zcmagFWmp{9wm*z(a1AcO-Q6V++}$l`Bf+8Z;BLX)-QC?oaJL|V;O_rsX3jY?=id9i zUy6sl*ZRp?Rl9aqS1ZauLSce|fx&@orf_LiC>O*gf`fsL!hnHcfJSx10Cr!@?7kSN zy4#yM=`p(5+B77}DXa*iem#B0N@5Zu@f1VBD&4lHwx^H96R%3U=GIzdI+lgFza8fd zRhw1}hGC3NPr3CbTB#N2^lGHk5feYw(@WRLBZDmR%3I52JTd3mm53#kUXa=$oE?Cv zZcg`lKg9{oyi?uBYk(efDw?hBpQw2c7DZJNt&UDS7zC#*FbW+~l{d|m(@t)$s(d(1 zwL|xLcT~~kdECd9>|V@QBJ+8Xky1UwIt`)KkNaDw;hCD`SHt?aey19j3A#E*3pIz@ zm7W4*w?RYz>W`nc-Hfhd8f=F!wIvZ(D%$JlRzW|H0oH+()iVc>nHsNleA!1U>U5vm zwY8#Dy)6#|r0_g$#gNmFy8UUW>PYnxU{YDzqbs}uZ~Ja%8KhYa&aZM5FVZNSKe-6>Ie9`G8nd_Fi1D=V_s6ZC7aYmMr%XQ%)aD z@gH4ur<4)C19fj50t^fh^w+@A%*Kg{@$FaW zu>0HiNueE3s&KipLrGju6T63K|8&R1d_FA?f03@xCP2ejYtBDsp+|Fr=DfbmU==P2 zzTJ=1O?5j^%O*AanjBf!jPjP#T%AOaZXIJlhoeYX!+FcaNk>|)Q6f`EQ1el+_Hgk!K>6(*gja-VZmEzL|XY$-TGj1!QulX)J6*Y z{c*rhc`x0Jx*CR+;MnCJ`W*^5o3K)fvTL(C>t@)olcU4NlnbO@*}JCTcgRWabEc1r z%Z2@O;8t~9)&czmHAAzr+p7#t6uv@VOq=MIRAN(X|XlD>bUf#*-^4j zu~026+d%L85GM-Pq-ZEsj(U>S8IPY6!P+}1&`o_=MiySL_bhCaxA*$~WF{=} z+ok5N|143lVR8MN60<^B8RT=-=Q8)=DFKd;JJ*L=Nr_0vk`PAEY*1tFWtP-SA(A+9 zB={_b9cSa8p{x)+zg*Xv{zA*Pu+_ogpCK1MBBHmyn0a^CkMI-6B!5#F`2AYazAWQ} zdIbz8tp2EuM5VSwBjh6TIHpTeWGI`51M*pnI%4Dpd7_mOpyvuLOVe-FA*T7Ju7ocJ zS>^^A>VZ#m@d;a;c3BKon=mH6F$Ke?W)yJwn~VEhe8mN%CV1Gz&&R!tYK#P7OM<0V zv=82s(}EH;W7TD!wi(Mw1u6%rJ|q!78WZEwnb4eQ?C*;$XzR)AL}F!e;GwxtYy|;Z zz;^*u&~G#X3m_i4!f*qd>)?r!kKt{eM}XG8dSW6vgHOA^#DAT;{!RSP6JtK=*}!OrWdQ*%owjdOI^FH07dam{B_}>2h@u=vw84sAcLIf+fPaNh&nC zNdpOnq*s?Shh6YmyD}Yq6iQ^5Dz>f>{H_tW+;iuz$fYisM_tyF8IusRHo93JF&(Ri+Z81$zW!F_i?{ej`jhBb@`}9al+3 z$H;*9xDte%a#7gkN{Qb6^d%UfF})T1^Z5Z<@_nNRZjsZcZfh@gF_4td}7w+jlRL(6?Dic zboL(6V5h<9wn=%z#i*YSo%&3MQdgVRV~P)mi_D zdyJ?Mgx5{mwjej<;V54`GtOp<6+&YT<0D^GfsdTB++rGb zGa^wJ%aCr}TnyJ#2+W7~bFw*{D8QHn;T zW#t-647TTj^`>*`3Fe|FxpFiEdlyC&>DcrKZP?;SN%BSwui9q}mPh!1UVnDJ_~@*l zg?S9LFcbXi`ulTR@%O9n&n-rRh(Z7}?$^^7gx;Wd%tE{H_rG%~+h`@L3cP|Om*Z~4 zb~kj^OzFk8{dR6Sy|bunXC`h`=GXaf>FPiEb4Ng+V9o?7nxXSspd=r4*GZ{~SXYq1 z^H%q8b}aIX%1s~FBz`X6|CAv2gizB$(O--3p&`dkxCN^+GXFqQCGKl2mo|i!_;lPi zqu{K}FCJ}V=M$C97air+n?h@;PCc9Qb?W}TXiznabB22492ADzr~BWp?@S4No?-P7 z%kSPQDtRkk26irB(MxG8E= zRRXPp-cML_TU|{j^n1v|fANHc5ZV!pC?eSAA=I>18q@fAB+z^I4c(7~$`;#cxmbPA za8-tT`D(ffiswGy2h%@m9a)CW7tRC*rmqGKhVrjkJAHAtF>`ub=|J1(_-)Br@2;-g zJcFm7wlRTVLz8x3aV`W#o*kJrr)+X;Grzxo$N3z6Y~VvdDom`Vtfu~{G_IDfHxpZt zW>+I4Ue)aRIm@Tr<`if^9F_Kbvc}cdh1A)ibE^JWG;wm-1^_)@ge_&aI4j zxP}S6+G_&(&~DpyF88k8-XE6@e>S)cE?VdVHV6{+Spb(Zhdj0HTo#PJ${S@TPaIYY zod{*TU<=ARemqy)8VU}$GhkYI1c`Fp@L4}b85=r&So7xo{wyRqA#kj*4%&U$dh$y8 z5CH{0_)z)`ydvJT&77YcxsL5v)!pNMLV|T$3N-1+I*v+vJWIU3a7!iR8oLSyIx=`X z^LUV7#+U8TIJJCh=sm%EPT_gA6;+jl=- zYqYy0Gx0lHbtF0OX&$;cJ#JYjs9x??_FTC35qV0^2VUDk2q8Wb2rHo zv#6WJcc~DF6hT8hbV5qi0MLJX^w0fP?_c%q#-$cv1?}WloXsHcXbW3E9B(|g^V16v zCsj?kPOoamD6{qkHx0!vRv^#WUHAQ}-tex(G|{p$eo9{0-*s>*$IdT)h(yS)5$(&v=UP8ZZd zP@oa{+PCLcN|b&{trmc|^nLe^!sm>5K_RUvIot~Bdx$k%Saqocw=h~PxHyqfK5J+9 zb6fX0Iez%+tEQQk-(yyB1VAI2DZ{corYS6FL6g@7=kfUE?3XQFI?><{G%qaD8@L}L zUW5kJ(h&vZ-0^~^=4EQbtKv_pq|u+Gl%$H$l@r*?0_k@#=}2W57Cynn$+vcu`)m*} z-KmeZ4`I%ix3i?>fh*aZXEi;S;C<5$qknl^v+UrjJnhe43ae&e+mK$=wB3$J&F6&t z1gD&aKmpaWFYZ8k7@rqN-=L)|8ngU`h7`_X9kbg2?y}GqGtgZ{7-6}ch6K@ey*wjN z3Qn1v4&C2AuF01q{ihyZbS!FqW_wxCCItXoi+e;z7*+lP8#OS#9eS8S^a4A^Kc*cz zKl^R+GiVa~Uz1Q<9{}JYf5lfe;88F_F}WiS_e!rr{0sY-Jr0yg0*a&gBUKxO76iim zN9vzcP$g8SR-|tKMR2M_4jMuDLq$?Mv}w-&koX^{7>|oeZ2x3X)Zc}<;Dhuiqk_C* z*8gN6L1g$Zi3}ugRPKmyf2f{~cWppze~bF}P`;B`{iI7jdh&x>xCI(LIJSyfwZRlnv074~=cMsm0AA~%Heny$r(qwKaB zmxL2_qfR+u@m?S8--$7}PZ^@pua*#|Zw#!G+?)Vi7Smmk239&5eTK56Y>yn{_FI1U zhXJa#{VJnTOKiNU`Fk(#9qA7p-Y=hR@XgQIa41XOVLuGVKV+ z!P_8|-wU;h>o6(W-C?Lik~{H9})C z9=pw|mVBb+rDrX6Q0azNwa+neb^Y+zZMmyID(N;m;l~9fch?tJmCuvNBiJEFrS)!* zP(!q8*jptA^J)IiFa2kQ3j1TM>tBdM+oea-ls}E7Z9c`7azWFG&7aCi^AfYx&A3~O zB+4Am`=pDbYkVl2T{5k8-!?UvKU&BVy+;A9pKx+MUc(O~I}bB2s8-!6{p$|SX?M1d zO)5Vbg`PS)5I*tA4h(MZ`p9r%e`Ipx!nP1}U(qDc>$If@^1r$|0CUv>shC_X+wu(Y z+RUG(ajn0;5Cx2{?83=^WCJRGo2E>rD~TM%nA2jMZ5p`#fH)IR53XQrTJexhw`8HW zt1CvHJ_b+O*D~Z(*-qE;PQwvRcVw?MF7nr>#+*u1=e|VDjQ%a&(12ebqI~05rP3M& zO^y!P(k^{g&a%-K0wli?u^)bg<#}*Z9F(CSLY~}^gxkz<@ZIEMTmb0Gb~&_daglpJ z6@FM?Kb0`4#EE3-_`Hh5q+!kwH*K7fy}qQ*woSP{Tn$~kTnr9)v^_hx z18-jvU+0e>W_~>#+A|xqzcdSF+%P>&4MBUnfT1j-V zv8u7@uH#@DKOxzWzF#~{^}{bql1ZIm(?aZ(IzM2Rb z%xUWA=~qk-^tn!6;naw7K^GZ;muqHzE0WZW^fTrbdUBWcBS zZw@BjV%3TpnabavF_*8YIlfzsq6uBQUk_OWr$r8Vfs2J#F`9n$$7G{MRpKtbh|88`# z8ydp^v8uvzEsDT~(DVByu}LAoRd0)u<6K^$-VH0k=*8%g&4FC|MO^pyQF>jK=-=ZQ z_KCT8%Nh+D2O&kM#VO%Ovv$#{9mT21iNjsOGiWw-yL#y`Z#2o@f$yoFMjO zumI8uX*cd>eV2~6JiLX6f?7J!e36n17 z^u6btZB540Eb{}`bLP%HkSh{~YGYm=?pE^Uy83qf+WoW2GAWc5*z&8ob3eZP3@M@b zYI5Ll@6f{gJLS48`5=)jx)lf(RLol6vj|2&L(+QW1~~nkUd_0U|Fv&S1Ao;ug2^EG zY~5%HvS^zSW03LZIG>G$szZ@HcN^vX`O_?x0h4%#$U1TwTZud#if-ix@hgPy)!3Vf z_P6D9KcA_9SOxR0mr68;nKu=jb0f&@m(z^y1sPT91;nvcBipf~#KlwsI z_YQr=utS$7DibS(xfNx~O}Ys<39}oLJ!faFsU4DveTU|r6mfYMhJs9k7J6 zX}YLS72Kk=+r^0L zaEq|+#bA%P-@2Do#vLif^=oRf8!sz3?{8L= zlQ-||9pY-?B1CtSnxG7$*24a5v^o8<$kxb2k-SS5(NjqeMj=Os_@KEEm46T0)|vhE zS=svF{RebBNog5nmljgbNqWg8QijU%2g8MiqHd8jmG1RLYdPHOr4qv1gUDN+%-2$6 zTLE129`gdbT;3FOg4$lbeE%*bXLD>;z``n2+-XgD>c_9cYHcHiarBqPsh1)Vw5KMz z0$3hmbX2+}3}C4(GZjAULs@nJ#kqK-=^2*s=M~g!7WO*a2pHs#Y{}OtE#nm@>R#Sh ze2#QUDz<8M&FaIi4j6+YbCKYuTp*m6UN^ql%KfcR_j<_E+b zMHzd->f#c#`beT$MP^JUgiD&O?MbZ6y@pbYZf4ty&dGzABrysOgFrsg2+NU+wEA(T z+KwU8>0xItOfHc>`>e^go8Ybrl>NkTtUU`nM1!gv@2o0}6RS3TqKh-ir^^|0e2k8R zTdQl5&TknMdDi>O;e@(o(k1)PFJ~I3bC5yi80q;cvBfXi}hwd@s5QTFFQ_rI>jGe<(OP|AK(j7`1c=nT% zudqk@#>!wCztkUd8sEA|5VE6&>$i2(`ryfIEzWN!Q&;#7x&6!g&!e7-_7GJBN#E0= zoZ5Z4vM0_VYT-I!&EPvyAmw#8ZY5>yjV&r~use)srO-OCrWVa}xo-ScQuCUWHf4v{ zTp(H#fAadSQ$jAJXtl#aQ=N?(!FT-P9zt}3Tqa;53IC3-1;S?8>_==56*BV2pmJ)c zIzUnr2|KX;@O531GMCGf+o8}2gyXl5oXuq+s6(&29^jARwp$&z{v~|}R3m`1Y6HC} zz*I{Vu;+_0mIb{8tvkR|w{U=@0)m;q5(89*9!xZ?4fv{fw(S-mXEz!0I}^$mI&Zs9XaIy ziOF(X=Dwvx&nr6AU5D};ANst_l5&)Er{mxsmztU&_oqq6^9zZ18QR>ZkW%mQ} z!o%u$Mq)Ot&Z^N_B1?%0x?Qmw#jFfC6Xsct1|I zv_rMy;5=70hL{DF@Jhzq^>np52J?pq51P#&h)hMM2~v+{)sEt1n_yEu%h|`OzP-=@ zm!0HnlH1ze6k$dVYP9!k3zsO)vm1&ZDM%P$sZn}>uDp@~1R7}*LsA8&Ck9EcYsBkQ zqL<=%@W0r&%PedH#Op;Dm?<~1!l$w7| zj8zi$zI{N4q8}`d9D}ed<-FZ^4*i%Hqq5sPt5R#5COxZx6L4_LYuAcl_n^&2I5|Qt zn{BuJkRkz`mlG1Jm{YsbiCoWJ2PB5M&H|8FX^TUs_$y5#lzlX5jlL1Atr}-CZdIs{ z71v!;CSDaUF$amc0KYeIOAZJibW#TRXEA!3hPYUsDhl^KySY?_qF+p3o*ibDdER25!EYZp4Ju#VZC0RibJLS9(q+MReFd+ zTog=XRjApsmq(WOme^j)*x(~BagFgb!_A$ik(J~YC{eNobM5yr@)|sUa)Q1)6W%)u9llwZ7mC$2O z`-jp(3E_)K^^(j%K@AfH;R_xCugWO0Y&u1#b^@TRgm54k385atzs(^KHpoeIN8t#J zN7~t;DJGw(mwCViQDK3v(EOj(q#lOKJar2=8vf-Uk=F9RG>i3q}U0Mxdhd zJGG~uv;>x&@zl@8*(5I`WiJjb4;S~7DcMC;-%!9OvV`3Dw97U*qFU z-9ihEI#kb5H7T8p+F2 zwUr7Na-`pUFA2Q)?g`eEb?`nmWjP~o;UxIex5Nkt5_Djx_GbCvA2RSIXh6}l5hJDH zIDDjWaFSE*^lvKnB;Qo35Z8lL_QAfXgaWVmW<1pL%Zqu>R1C)!!A}a@`4Mv1ul^M> z#E;N~gds#zRzvfhggIZV77pC-_0718_wj!aSJ>N2pb9lstSU5RcPoK+=D?z^{2)*5 z>D?Q@V8VjT%gbJ z4VRY`chZ(SQHn*)H`)x;%V=QIIqSv)Q_m=;0n+MHUFhK7ov+@1LC#%yKAA_;Rpvb} zWIGd;cQB|5Gnv?gI$ows&PA$bxQ1Em=M1$)U-_;5DNf7AOdrE|J56(ts?#!kZQcdn6m@@A;dV5=?t&Uj z=9wC7JN=Jw1`27}d6-5Ms>x6@ukG}~ly?I9p-%I;+Hdo1NUR}Fhee)dlUnZf0R=#N zNC){p#*^YqIayK`__MgFlFmb&@GMxb+$bis!ma*L!Z}PbS(0^<$YZg~f}ixjg8v_d zIfQ$J&cf*!6Mrgn`JW0e(l3K2VmHb;J(O}pj*H(rjyM+U!d~>}{9qWKsmy=Rw(G7s zAl8H2Q#!8-t7T*SBv!qV5f!^Z_;!arxZhaoqJM1@YR?K%!j;wyMzwTVrJrGX7-=}T z-am*OSE!6Cn%%wMv&@Syx2|PkE-G5m=kOqanf&s*=A^Gz`lMANk_Wc-S|7BqPcXnt z1CYOFo-%t^G}i4cH!G3s6#fMM}tCFU6zZx>26&MRy}N^QUO8{;&|if)S3*-%l4z zp=r!bk5+5nWF(zdGh?A?oV`A62-=F*33#el-dH_WLtU%S8NxTMnPVq)d)lJY_XJV2 z0QFKd>$gbtdFXr4`;0>0sAc}3Mh8*D%DnBq$6MCtk&+Dmpms4G15xvF{z?6V0wWyx z|DZna?1yg;%`#Z`YWdh<2!B{n+JkO4lSxnS=lYve)4#p(L)(!MMmV`!hz7Dub-%qP zndz2YUmT}N(NuN6aK}y$`r9tM;C++l?7P3nZ=8og;HP&O8&d-znJf2gQ^)LXX?n+F=8Pe^M& zBao%SW(WYPyOcHxp6_ zzc{Hn!6iSFUsM{^+P=kJ@hm8pI#d6ECC-i{J~QfRrghj+8&c@(TL{nI7Mu0Be3%Uh zA@F=cVU8*n&(U@My+l5h^8Ky&412C6L?fHpW#kO|uaeR{MgXszbq65hguTKA8chyz zy8dF_FUjLnIM*s!FBX5|WutJw79iI4%=>&lPOKE(e^q{~rd*tU--(%T1 zuN`(dkJ7{9F?{)%<rF#LwEWpHqd|#Jl}plX&TST|BN@ z7s~(TQTw)VWZ-XLm!31Gf0+EmUUA(y*g8|c{4bL-I)@zvp?{hTPJA=TjreA=!}kBr zB)6P(*Hqgcdj$|=5~I-amDeV-nUE+C2MdocD$U4@(t!ZbnvTgjkQ(H0q4bIFAk-Bpib0 zqABV#g2!U>K!7VM022V4!$J}AVnF*WOoZJwKtq4#~CNu2H7+g$CmpM zis|$3qDNh-X0AK%6kSJO2@z$sBlO zw%;NZFJQ{TwpQSdBzh#EZH5~-qZB&RFybM+zTy$Wv{5_QC2lXGEK?fnC8N zixhbihZ}e%dTu>DV!X-oyPBA#kEk99P6GXQfUN}`U>bqo^inR*{`J|No6rTvBZPy9 z%+aLn-TIi!7m|XHI!sB)4Xr@%OZB-k2-jc_Y^HA4Vhnxi6W6p!SQGihHc;`7OF_ju zhJzjUvuTFAJw;a`>WoK!e6PFsfz^^uB&5!{BwD|cxNF|bSn-; zR;!uz9oUVNO+7d5-3W__7a^x;8|0luk!T^OIg0~nkK~hKWNWwvkG34MJXy4#z@rge zVjddocrVNDL=`$5;90tmnY#uI+3mT}tVB|>y0fz-Y3KSx9|~2Y5v=3Mcq?r*5=tFB zd!MvF`~QHrM5OH8_v}@W9-jiUml>}Lmn7K>Ho+N7^K?3|Unje??h=XPy;PB)*>u<{ z@LPW4p#zARl{96O?Ja=sab-;HlTYfq;Ez5*!9X`O7ZYLsn9lW3)r3Txb})NXQ;l4~ z*<0}9E93mOLH!f>8-ePGCiFf9%r5la`8!C~<9H zgTv0?o53Z6`O4D%K8(s%(T6dPjwmIf6YIOu-2{)THt8*PNny`SsUnH7U5+ryiY-Zt6F6F{w=SlU9tzk1b6Y}~Rg7z*4FAV`$C@(Zh`0a|f zKhCSnnRBDVpSU!-4C{&Z=A<-hLK<4=6PoJTkw;HeBnGo{&*PimCsfMoRURjhVE_LJ z_RlJT7Wz|g&zs=0H^G(oN6s!R_v%MBou1G_s>B*}cZtL!Hf6*kvVQ@)^;9JWME?s| zvGt2-6wbsT7}nF(HBhCneVtnf>q(a3E@xlZyTca&SUgw=BASUV#kX`Z75E2mWIqBh zIexli^CPqnk_r^o6K<93bGxVBS?9fo0<=&Br}>gfK^==Qw2*hlMgmP0*Cc3E1rd0_ zqiDdC4RT#mvT1R6mABdl_!;Ttvi5C&uy}JpWaH2S763kJv6YbqEtSi+sv2U{h=d;d>PeTR%S%d#-=Koq7m%Mx9K`rXhZDde= zvjNT>o1l)eLJI-h?=C>E!qBST=i;1fYxo9roM)%>>a*h0P5nfghvC!QeBUp`11m_( zTA@245}>;fZbst}l7f-;RoCA#L)Oz@)9s|g5i>%R%r z!!kKcfhteZ9!|3A_`BPTiIoI*9p+urni8`a;F64FUDTJ|F#1LKyf9%2kvXbN7Mfe1 zzqS=@sAotGgWwc{07tMVYLmO?oUzwop_X854+^a39D7p59`wY&A4$}H)y?w?Hj1lY zT)*2v*NnFNeA_P$nj2YAHg3}`YqR<6o)u~cKFSp>im#Keeo^kmR$ZQoTfa`^?ODG> zlmjXEI@W&!I4HaU9ESb@V1MiCzXLVY1~+uvO%%1b;l^8@E^ps%9uNUx!J8S1AGq0k zesh3A0Qi*B;k(m3s_MHl(1(j)PvC_L*>f(~~9UR!{IDhr|-Fq40`0M0iw1tDW z?G3R1cRCH^(9YfS6*dY1r7r|tS3A(v9TGF#AVwNdlOI+pE+J9!14E8|!O3Y$N8E@? z0jEq-f$MrURw?bricJxjLXWd=1rv%&cs@?4Ikb__if7^SjvO12z!XeU@8i{GXKs$j z&XRtcwzZ);L61hnG6SZ-ZkCk^IvhE$2*vxe92k!xxuPGf<{4+-BRq~Ebr0ivc8w*g z7`O%@ag!bF0)92x=Dd7BDiHag&~A+J3MU`Hc=i;G4na|K!To^Mt|Y8y*%W0Dz0d*; z-X4=*#UZ6kqPrTElq3aFAsfmi1fAh2fPzv| zwmeUET$?+brA-CafkllmNyX0YQ?qVmawLbL;kF5{7Gz}X1XXwtlVjDfQ|*!)kz40k z1v*{4h1tMhA-_7zDd1E2IFvdi=zf_vlB-y+6q;x`KI$KOdf(32JTNX_9-*lPtGVQ6 z!$5z7him>SZfu7Bi=${&*HDjfVQdtSnYo5Fqug(B^l93Q)dIk7Di>l~%gXdE(&D$o zVz~~5I_1=8*t4yB`MdSKB+d7%bYs_*qq4%t35mN8Gv+W2S|vEPnqYJoxQUu6ljSy; z7pyKF3@eJ&PUW&BE}@Ce35k(U=fmb%D8n{+(&e&b9eW9BY3Pi}M`mV7xZgBWwn4&N0nqJJAQ+|2L`?IB^q1%G0kGK9*;3hWss;{>_v zIT$y5+XXa~{EiErWWm*vRCrg&_ij*Y(J6U>gAi8vI=ScPzo?i&RJajuRLtQ6#+x-$ zTqYo!tl!+3i9KwLhg;Pi^rbTsvG~L;HQ%?3u-CAfswW*iB&GQ3Qqzq&yG*|0H7?Mv zHzM_{F8xTMUdTds+0l)(7_ZofWwEcBBK#Yj?ueSMZt%orymFWo|2wEXQdK;=dxe2x zyQ#N^a{xnQGf*P|C`m`|f}Sd@)}l7fDD%Vk_cpa-t!l<*7v<%PBh_qAABfS0>7s?nTK0{$GJqm!1g;NR&1s!W zaZFpzJ5_2MIm%*TMG>6h&4*4d^hq^aQD`6RcLJP{ChJxiiaGg3%6PQh__S!M2e7K2 zJEi3}vU?Y^7zsitT^q!LR*}rIMRQQdMWFo=QiY+J&M4C}96=&zRdLxoEc7_IILx@1@W&2~rI&bOD z9cl-qoWeHVRm{Uhb7Y@R1#JEMGU7YMst2rth$ENzX3PhAYRRnck z63Uk;saIM#SNQKM@F3}?G=(8!y*MxOpOcC{(PF+|41715`eSxMV3(AsG%ZHl>=YF) zCPB__n+|=4xTg)qMl?BXdly1timI}UH25rUZ+66U7K(LZmnw7FQ{~{Y_;VyNWx#>P z_gAnE%XL&()l-# z?Hkan&v*w=D(A&w9*!nrt;8&x-v%e<4+Q=)(Awg_WP?EidhSQ2OuYo3B8hO85fg|B zM>89SnQ(*95R7>!B(E)$|A!AuNk2BiI@dgAPhH$dOguNuc5+B-Aws>WfK{wm(GkgE zc4c2c;D>x+sT}$I>_)X>0Z<-V(F5t94h&JKCKH|;aGlt~rlmlY7|J z!TfY1QWy*2Mf`yjS`@*V47wph^ca*Ey*2}K@H&o13ccZi!%D~)A&G#*PrvP#?3_hb zvhSD7m2ZE)a8CS+^3V774c+}`csRhooT^~J@c#MUzJ}$O&l2Y5W+q?$e1+dzFF8-L z_W1E0tKo1!Au|b#bY#qX5*=bte{APG<>pSXtZY^uFU-aQyx&sDwNaHtQ*j){p%eo0{jdH z*lk@M5E${Z_AyVD9)-eXUB^f^T*mnDjz!`s;)(#yXP~f<)w3tfw!(e z)s0V~?R~O2(8uSsQP0QKYG-B4JHP9mvBmEc=;JPE&|cDd zl)UTV)7;^@vg_p7mv(((dF^q`wKN|WudpvkOU!*)ZD0_bxttxmGO+N|rxNL6^=0S$ zBh%CnUzME$_a<&^edrjIn;j|O(u+##%scTY)n*^4ezejB-~v=F%&S{fJU72MTGDC3 zh%fU-D&0)GSaDr$S)QlLW+w-q0-xH~ZE%RQ;`u&#JTXfAeD--=SktTJ7qBDh-7Oke zxdbK?@er)M)Cv&t5%Ci9zdAqht(V`nwN-5}xS*8HRgFATRCJZ2iwTX-x6OGwnzt+- zTeQuQd9v~n%1j9r;IR7KSFczg!=dLof7P?|xV7 z^;E4O-`*vpset_QIAqXRHo>X2y0M{9R1`p*#8gJC9vwY){rI?b-+MiC=y3m+sj~O2aFhpTBL~dmvJ{zSlJNd0R173+w zWx(YoEtp)n&bC=4Giyya>ePY@Zs&0cDf9Np4D26oU;kphAg<+RqnWn;ncW3rMuL^cNI^PfJ zm&Rssxe`Ya6a%~AJ$8%c_KTkNdV`7G=^rQ{d(3_o&Dj|Ma(?DC)7v9e8bGY!A--w~ zR<7$$3JmnbdL{QpsQ`vlYT}U*rurfhBJKG@tBgModSz0*r^DZJiwmtqYg!LkrNv@w zG`QQ_*0gJ!;+jf3E^4wkQ8T0G+GldPBa*aRHi)pVU@&Rn$*& z8Z6p+=g?tL={m+I7|#gpIdPm15ui|AfS^gfr~_S&W>X6>kLjudlo4O4^cC@c*67CT zk)$__wEwub>8;Ag8cb74n9_%N95rqfc1?E=Loz{kPm@2yWSFJ8%LR z%O)`7fItu!$3L|GC21MrkO2(<3WEoQS^pK*4X{JpWR_@n!&!sie)r=I=kEc3^IR=i z4?U|xwhjtI2Zg;^L$-D-lYT(Hxx9#a4B92#)uDWi83|c$P&^l}&6F6bk{~MObebzV1Jr1n=%%NibF@-eS zAKvRfeJ5vJ6OuVj?63E1vw-6FGpAF@d@ZY@C*-563l$s5-Yczl3Ik0Qzeaulbeuq+ zUsqCzCVf^?qfAbs-A~Sme>`tK(N_wE6~RIgFZ2DzIz7b+mfQB=Uc;T?dA}cFDwvgl zDQ_y6nPKXAG%JQ+=u+DA`!iG>In>_Mg9X^ILKdu(zt-obSi zg6U4xU--EM!)6G6yAjMl%vHgZR-qLGH~e^6iHldQt;ep(fW5f0~SwFLpnqr zs^GT0e?)4)y|#Y36o>AI%Ty(I%SG#n?<9A#5%ix6`YN&|F8LYvyQsT1(r$?)wZbFv zZs@(@d@HWC#IqPg<$xF~GL~P8N>s^M(M|9>mGOJUxX4n3b}@%Db)jiNxgOPX_Fzo8 z>zcy0KIgehd6(^DA;JCZw5R7C-VApGg`Uoxc>b4~VI*hAC9nIZr)UYmv|Zq(_Vdin zXzf$IkUl4YY$@YY^U^6769I!A3gBjzJta!*yi;MwZL6j#Gf zX_rGJnNsm{e}ZRUeW@aI>T(jN0s4s&@zAJVfk&}pjJSzMk?p9ud;8+7QO4dm1P$jS zGtPyn%OuKv$dR5A7ya+X@q$uEPeMmP1xJSUq@AfVoC+$Nyns1@<2bj#pzI@>h)7`b zHJrl;+BO8~9GudZv8XB)7T9aIPXR(MpPT33s;p!i1Pt-dv?Z&if!ArQx#Qg+qP}nso1ttaaH_wopbMf_k90*?{B+h zrKPowSt+~e>YtJ>>x=4JS<6AN5wlA|%bGeFPkH_X(4E2Ha`Rh;BC-(WO)1{ZI z67j*2z3_Vuqs>W)l!!uo?n?K%frzx+7v`3fb5heY1?!~Ags0Ync!8~$xcDd z&LDWyxt^<__C22)DecmZjnTQ7^O%3Iepg2U=XO0iLTT)1ns76ne++S7Xz#2zet*U} zFz-<;jeTep=Ixy^WXh625Rr-C1#Bxi7qN%*bZ zjg8y!!)e|BjJ3!9>v)U64_lRF4TR7&N0-Oq1KY8VJLOS)_pVg=1`&Oa@{4G9!bur- z6(61Ur))`8&S~JzbFRwa*$*&K{~PLf_khxPY9pB@#S0;dkW- z;GVRdtL{fH?+&Ox9@AdQBSZ$9VdDxDtY`#~HgEU)_XM6oSvvZBucGgi@&>(~6m4F* zdAG7A6$dWQ?!DRxp1s=jA3+kiCtr|;GFDjlk3X158pDWq#2-(w;tNd{5nb6b4g?)H z-(Q@5jgM~q9Bso*{3VQpdf+J=HO|ZoL6IRtN(>by^@WJy&@b%)6e+~a3`umPi2z&0 z*;Mw`AI>WguMYqEc|YzsBRVB?L5id_^S0q<83d+h!&hB1)q2EkY|ScXmL!dMqi2a> zk>S{g+8vO~*35?5TZI!-4d@Wo+-T*pa4K^A+Ev_C7@(<-wk+~XSsW{M?7QriNN|kE*MtLuiOTf7gmHMu^Lpt~ zf9J#?+-$UqY-W+f*S1R!t?oFC%C6b!(m@Q|19mb; zUdomJ->WlKf-f)BT)$t>KRz?8+2*328*Jy__gn5JyIOuEp0^J8NW$D?Z1>Qci>_|1 zx6?c;s`@b0T4c?4$fJ8mvY6#UNsQPzm`-$PvL{apoSb;7O!-V<6wzEsinA~(`F3T~ zWwf3#l&<+4d2*g5+}^C0p2as=>Pe-Rlp=~Q|PGL1g#uZSRH4TC{-sf@nEkXA&OqTmCXO3{%&e? z+4IxPXKJI|x2)BRW>o7b$D(Ah?geBQ_P1LGhTq%B$a}!#^R667&Qy$gOCKKIt*>1V z1Yo5Zx@3_010N$bZ7?`|Z5`H)PAf41diZu7ag?NJ(X-dw2?4&>ma*Df+wR*d7~so< z2xGDd18m%pM$eaP-Yz9fHWBwFg3u09d!74iynH$cS%|^MPl%j`OE4>$)!({3d$?=i zXTiIYwgrtS>3a`b6J!wjXue+E?lO8@X3wgF_nm;>K)yAH_6~xi@y&h#rW;b+X`73M z2F3bl*}VQKrKk(pl;Y>8%aX%DceCfwzKYTAeRop2bT70k^{E$!Pl#~5rsa7_McnCR zG@9JEVT9zfYWq1rbV>+@zH_v(Ce>f_%jh~LRXzFOI)s%py|(-Q8qOk5%kvW*%5<>U zUq%E*%dSZI5`nHT+0n+Yzl9lUrDUaw$90e^0;Z~CY-x8>lMfE;TF%M`HN;CL{ixYU6xAUh+W;CZ(wT>LRhXt;qx67EQUkZOR(^b-o*W zc-xiFRp8V%#=6K&Pb9t@avQEydtHEx6FA)SSyT!kxrZ_tMCG}UyN*7PmpcI?Y zoi*b(wCm{NLBZYaD6q{;TaE?!4$f=GeL2u4dq+3L*OP7cep~)u|Nrdd*&^?Azim3R zw{c=1g8F+Mz_xL&!6;?BI*_d7B1#u|GV5ONu+{+2#dp{ z{1>vPkk;j*R`os|er)QlW{NKM=b{xJWo^zZwoK2t;8yeE)(~#PQ#{KJ9Z)81h>(g_ z^>hWki)tk@)X>(H?y6hWo&ANGIMMwE6-1ATy=wNeYV@0wnQ9n^YG?;J{?OJKxGne- zpi+I;y=twqY9jbk-#?18zF|AI`_LPi3bf}hc zsP=31CNTg|bho*KK5#1vbl}?Kdn|x;n3i^ccj=quo^5G`Fl>T@qjtFZxv^xDocfik z_BzW9HL;Idgy$n=;g%4GQT1eY;mrXjBUHvJN2WcR^WvSs&g)m5_In1x_UmivurJ33 zp*b|t{75RaUe=X*l0sqe1&zZoDc2jbUP|O`~&VpVRy`=mM=sbP4MG zr$kkqeD(*s{elVb<7)Bb;g~bgirdxOvDKF=9ih`lVzk&Z0;21n0m*xzm!HPeI)Zdw zQ>z78eR`d$B|13pcaK)aE_SN{ko?6fCTLY#@s@oXk;SHMZnO=#gIwH^g|K~ zLXyzTp3geqpcn|KA~JM-BazhUq1KgF=vjsJWi@=&1|Rua!9XH9yN@Qmq(5aC1cgKb zgkR@Gf2JA+)He$U$Nb0^A;M{j={in$B_Hjy(psglMhYB+;70%vaoK`Lr^OB#r<+L_`? zBMM|_2@#U#c`l*E1yEa2YJY9{O&Clt4Ni(D|6o0(-3_$Ol6K!AiU_Srn0h7lk`8|5)^!RiKsQadEz5%iVE`6789jDhM{4E%Wre;TBd z;-aH4sU?j@UA{#vQjfKggfHMGtJ1fpwm%cSkLn&bj7FjN%dXOBpNR-Z7iW)G9}nf~ zKOMLp&(yy4S8~o*5<)iicNIAoL-gv8XHBWsnkpJsYBW$DZB1$i`67PyAb;xnNVD~f zHPubA_0D36YP6IE*ZeZeC7r2954?j1qPj;fayM>OWC=``mjX>-(+` z#-y#}zDpwN_cH5$@)1BDBp9p8A3=~epV6i#uH7ZWN!$LGek$tn(Tcoz*?Z*Nf1FeZ zAHht=NJ&4$PD@Mgksx2@e#var5+;qLO8n%n?L~ZWi#oxkKc6wHR03^zq*8wor0A^>Kgi5SIISumPT0LBsl+@{g~(LIZ(hk3{XaULyQjGE~3= zus{`B)k>h%$YCc$-meGC-qe0cft^PhS)`IOm{}N`=%|=d%aXtv(F{KLK&tr0o&rA- zwtY)qd9#W>X_hZ8(-&cNOM0#3T9`iCmnRqd^MJ7|oAmcw-kZ79lVzK}=K!Hm85nUIb$EPjG4Xb?hRuZ#!5pAGc{tCAWadat+l_o0V!w4IX=X&iL$y3 zk%yT-0)eK7SVEv-k!LvdXp3tRVH9XRv4oi;O%r82x&&jI_K943P_eGUx40zU^w#U#ykK&x=Am_iw92@p~6 z7skItoC}Ju{Sg6R_5T(TJtW#F)2;uv0OmaCIXK!b0`rYRmUE=(%V6q1w7xR<;`^ym zlHqle!p}|NIRSEvFMWa~#2LWg;^F2!X_jB9zXACCi4Va>oM9BaQY0Q#+B5n@{suBd zoDsf{R)CHDw;1RDs~AfSwpXj>O6v4mz9-g8ZY2JRco3hms!Tw0rK(C%q% z9qe`P7e5mg>ShGJ8rf7@hOG_v#_gZ;-1T0X)jo2a5AW}j`vRF)h>fOBQVv$>OrLA^ z&0{%H@}u+j3TMGn2K<*#>4W{}PD>HFW$@-hxbz}M%Fgv6^_=*jRThpo+kxm_YZXeW zXa;v1A|lt^f`V`$QiR$>l^!p(yRGOP-$}+tJhCM4P|Ff#e?1fcqXcC%Nqk zIl^LQh&#f%aVdOvR0&h@?BBN~B*P?YMb7g-reVRm_Gz&t6LJF%5MCvlbEg+nNneW#vkG^wH=fn%H36$~p^*cFU})owOSp4XLi6?hkL z#{t5os4rGBxHXd!O-9A&Hw$<4SV)D({G4w?d$jaR@;s@vBTPEyPFYnE_=sND66c8C zwC)EzEdlV+ku6~oX3`%OcQh>cf2;5S4l>ub4I7kFefzk3Q~av@FC8j*CjcEEF8|i? zF}~TrLh}D0;Z~rPC z=f!~t`60I*RqSity!1;=OmIjxTttfrnuGUuaArR&!q|~)B=6)RUGPO3v?dd5$R5yUUSy1%oHbW>AIzqIa49j8g*h4sB?Am@yu}Yje zRZ7&50p16;0?=VkD?}^O2R_>7R^HCF&LF@*ID9ark>vVk|&MQ;S7urU}Jd5 zAZ-*IE}9|kB=mivWx*=qa(T+z@mB2SpQhvN(icKid!m*eKXCF%^wno4Y9iT;)S7E;j-;m8N2M6eqlQC8tWgqg}@oZ58=@FosX7f(l3{xA&#gr;=6{i zN9nhgY&-vNvN&iqA3b_s)HVF2Yl)~o*zEN(&$0^k;OBj9)lR%`xV{B)K{Aya#&j{4 zr>Y!Ij}KuSRimrlgo0jFavJhH!IO*GpBX-1C+W>uqGo9GPtja3lpo^y3W$V~nxP`fdUH@EjUfa~$&`#@{3&pxP%RFK5S}U1 z;6;@VNXu1*&m&AdDkPQS;Z&Kuu;uV;-SMJioC$fBBJ))B;Lu%^lY3O*CX%d`>M6z0 zq3K|h#k3;xB3>$`{AkQ?M8wh2kFm-M;#HZWEDq9VzVzGXMf{n+Xw+9k##O{3JgM>` z)+Qy(jCX&WBqmJB*guj`iJ&J>jVp?g2coDdjpv}Lk=0R2qMOkN(45bh!B?d9BVwzm zrkUhLh$|0!V1+bt{{n0Drvc0aZWWr@(O(qMsT=A8Y0Mc5skt!!WNN*aYK#HO;JT_) zQprUs%v35WlEeQ*ErR|hDiJ~mIpJa*MH;;7zbw$L16U9bi}A;T>CTA6XQGGI$lWqe z^%h1 zCSXkvot-~{N3H6IXliK$TKcIVdSmL`p+hD_pwl?XsRn>DpcXtOW#$f`oLC_7KPZ!c z{F5?Q+Kjoa{&0pNhoV??ESUm2H@`*x?+CMb9#+v9V-s!$3Bs%l49ccAyU99@k7e>Q z8s7uuF4ZOvA(V+FJ}e7J=POBiYv(AXL-4snLJJ4@((^;1=r5eB!TUuUN;-n}81`gJ z>V4@2kwzG^IFg&221Pe*!I(&BoFg_hAN$mPrQdI+5I=97fi>`D#@y85C#6BIQ7?0o z(RAm4fQfJk1!RVMalY`;KyeBSUey1D--FnVuSLTbEll8? zvP-tV92bzL*>+5H@^}u({aFdx7_4*|9W;0!0dF>?P7mt1^ay)w$2FAUc`|luj_0NCBj33|1pE^W&Zy zG{~tRHbG3{#%O6~J5+I${wNKB0VpL?1t^tQmV~xIQ;^=)Hh#n;!;|Dn z&F9=?4h;e=0#M?1pQno@<`wNf1jUf#dRn|7N_K1;Z|e#gocRUab7A9y=0&>asH*8i zMO!5};2)%NexLx+lPU$CtfSfmVuF+6l?6ex=UNaE z8IKZ!I?T+AHFVDS$0-I8hc*)ceM$eI1(zGqLZ+D29F{~xO`^S36^TgIfjx?YI}`+g z9Sulx*uqs@=+MHubP=s*I1~i3tUFWcKZV@2$ceH(EHdXks3wMFSc$yv>AGAX)00O7 z$Q(o&u%RcBHja{j&t-x$Z^B~Jb`=$k}l5i zvfM!`6E-w8YEp*l%{!L}Q~v(%uq5RoTJdOqh2=>mNV~tP9@nZ0}(8?W3(ig6%IJOqJ?@qa=`6#?in-PRyl|4iA;IXGgW`j1B zY0X4k>yJ1=-V15j+ceB{J%*(U!IcWPjwsVh<>;)MBQp--)91Qtq&zWs)HU5mG#%j@ zS(m}et6f-AkWTCrw0LOK>O-b9VdmzSsW*mPD}Z?R1`Gr4ioFcZs3pNo)$DH0!#FBY z^AkvHW1oFb#=*Y$Q3gH`mNweuAt0*a##nco!ZQWCU^sK8SOujD{t7iSB7}F>xfR9_v=YXj#@xGjfEXkAwx>LVeG556h~%5c7VtX| z_%@UZVJq&P7{9WNZy#~jB21u3w&pl+uFvFk2SFgVVm^$?0@=4OtJ&fQ$%o(XKzJ^( zH{e^y1?Gs~fG8iEtGBj%CaFJ7+qc350D%Pl4#XFp^5YiLR96`A-ca5l!VVnYn?kB7 z4LvT##pikAFaf_@;txZx_6!IiCS!|Wa!H`b-=O=5X^mf}wf=Cc11=2{Ao?)m5l8j~ zDxM`2h8=VqVbC3N?gac@gY3&>;!{3K$mjoCgoDfP&wu`T_iXWR5v%@3N{Y-d{ z0MGtQ3aS6^L8!kS6MW0ByoIF97=BK2KMCgfR0I3lF)X2)E<=voMga!=+xs$_Xebwq zTgWLbuVcDD#8&-O{zziNF9gU|KCS&^f{{Sx4I25U7H|LGfwBKlGWS~qQ1p_@xXhikNvZR>;3LSpjM1*^k+1rIop?tGkf%8l9BLoL3Ton<2;3@|Vn*19sRHT)jale1EuU;saOslOWVV3|Q(AConf zxK{7)2j%U$5dr?*xNmOsyHtZpEkjCA`{PW88dV{ca2nV(4RnrGTcP+f(choEQXNyU z4_2)#)*dBpld{3UuAOH#k2vapLfd6Pp;Om#{8e2u@a0R_{1*V16i2BCKNdV+%fh8; zD5^YbmO0n-_to(4qqlgireb~zn~bF%=j}Zgw}HU&F5j|`0WhV1U`qdn(UUKIR-VNF z^M5*7$5u#Sh14$F?Q45M0BCG^7s9W`jCY|3odflg>*0HB-&U;%UR6f3@BhzWU*t=< zFXjfULKbX;7p7DcG5XvK2A8#;*@6-2ehBTuE z$vXDoo{qnmfxOg&K!tP6=)7QS^#|vg*29tHntp;SDqHZ@gcRt;mnDa#-mu^|aQ)UJ zy=C&FWQXI23B%3Fg1(bV+?c9CI=K98!eVffR;fJI;k2>rruV&BwTmmW%e+dfen0dQ zZf#YOgmTQ|*LD(4XKfRhya1X(?bY`O!iAqd2zZxa@Z^aXXBowx>ih=K_yUT(A?797 z3)C8pf=un)CkuxuwS<}{?BF;!vnyihWZbC{s*OY}Aa*o%_GTcl3)5MxWUugHx|o~r z`=%G8hckq&-qxS?1myLPUPTef7`&josWLteyoq3neY$0-8GpSUIXm4kFnv~g+r6oy ziN&8!7>hXtHS}SrCJY3BQIUdq>~XGEIVB^xlA$6enHHfvOIJr3k)M*MglGxRPp$!yfzeJWcb%H#@ zx>lGu1(>A8H)Fw$hTx8hin?^uorRUm5GJJd26Ct=NvbEQDF1|{1cc;1OLaz3C}5(g zv~cf)7UuSM200Rib1fM9tB0euGEk7%15sOYmo=O^Cn44PHGRs++ ziZzZDUflzvjw zp`z4Nk{6$IKg8H+t)U77KRR??S3N3XDhmGo;oT;7R0KaI#2p`~%L@+q$BHAe2U5=6 zaz4vgXBI@j9RDdvG65YeuBfbBFH4$NRs|KE=a}z=;~$1gSA!fzg~Wp654Z^fINZ-d zd6pn^Dd9B+-@SDv%|ZpSgItS^6QDpw=h5Q$bAAKut#YrW;6aGqeVf&03mAyQczV9y z!(b2KV1kSmL~yRQWwZklZ53zAoq;rB&XnLDY!D)a+Bd{%D8^eR-MfNe-L9c3uhc5Z zQcPM2a#n7eQ&ZPy11K$O2LDY-R1^9S_w^puaSt5dD({ zMsgy+nIqBvIOB{0nU7iLlHY)p0zV;zH)X-v;ymCWi9gy>-QCJ`{X`=uu?B+HKU=N4u{QhbZ@0#lgyZQN&k26?Glb3wylQh_4c znAM(e+yXzwH83~$U#}%Iv_n-;?&$rXoCX76Lpv&txP?{dK&D;aBJ*)8J?w|x%z|*iA5^I0R(sgahYu7kxMS2~dc?l!k1W~_d$?1fJ4%JRAXX$tg%)=%};xQ}2`<#HRh<0p~ zZ%igJWcQO6f03%VNA$}I$fCgp=Ux($&sMcO+*Y(DD&3=tFi!p3kTtkJe3AhOe;HDe z0t(N2+lCh6{Y}}B<{wU?xdx&>p9SH$E@xo7ZL(o zrzEWXvOd0ddR7q^hsrFrm%%b*^v1)6|WW)!| zwYCwmVT*LieCfH5dY0Pr`qw!$QEFNW*;KxQeHd_)>^6=HXYw69*hQaQ7SLio%3GpJ z8=&R0qCbk{&x(_zviophF#|ZCf;purXX~=LArhbYj4kFMzOl8TR-48C`KB-*EBsr1 za?kuU(O(skM#i;1Vs?HM;K-`Uo+Pt)w6)Ye5&(wSQ?Qt{MMqt>n0TQfN>n=`9^HJL zd{c^;{Fjw)Yf+i$)s-`J4bcD`l0kQlocdk@vuSi(&7u(r62o{mtAqx+1QIzEP18N$ zy0M-*$+IN1md3H!*iFB8W7>=UeiHaIQ5&tp)m$D11p|MvmU)d1twTPzLF`Z6dVeuM z83Y7FD|Loyl7#vW+g}WDHb-8{~& z!8)=`y#Ej?;>~hbdFmvc(gpf%9&h)M{Pc@NVvou=)!p#F)L{qwQ73}*zt!2o0n~9p zb^E=aqyGoY^zg+c-nH~^AbSjK$osV@x%PjPVxhac^G(ct`}`km?g|CO4SE4hp-!Ox zt0|O=nX9Xny~SVqteVxgoY%R~dUi?;+xE<%TbyJMsL#miw&f^n0S^fPYWNOh_rRF| zm#?rxx)Cv+VxD$&iGKI|qqoOpXjFkQ3;t^!e6le=3}e6?kSH}R4afc5N~!Ie5gSuV zSOgQbAwQ2F_V4Np&1}wg*-|tsHrm3!4(K1aopch5>1+@N zIFKoEu#Sm>*Obk=I6n-!iQ69Kzy3t8KbX3>8r+R?{-vx@i*ZtP0+*CRjunVGl&%mL z!SDDMSh%u^iPcG4?-YD&G@JD@1d^8)96q1*s?w^!{QNSGwgi0gRyjx9 z`>h~CLyLsub__HRMvzIpLs@SEdK-wf+)Qt5z5>d|lRQzlO0^ZZLd|&l7pAegku0A; zT&1m*5#@(fxIRYH8+{NW-NPBl$kM<7xUh@#=iC5x%oOGdbyb`4pQ6Eu&z1cYqbrfL z4J;owV$v6Cfx8?z(v7u1+w}jDcF-UNGS`31>@pXe`kQm*=Js zoSb`igHoBf7Ts;|31s}irjdu%8E)NYJOe7NuLR8k+!^rhHuXeZvq^C3_Pp|0;`zA_ zr9Ox?hl*?jmrSgWO!qX$v^JcjQHKllHCKd>_?F6a+uZ z&8oFsYs0P24%7y?uIb9_5R<&x%Of{+pf?>Q6zMBwc()z^yMFnbC40@`2qg!%#4(3{ z+gyi14z1#fjC=n^#NHA3>T1FBttuE@slv>=9{NN?oKpvvhc(gwy{B?oqCT95&bqE_ zI0I3+!&s@4_n~2IGUlN~pX17`K6SYJa(A^{&}e_B#Ki za?}^eZE{oYmz-U(!T1&g$Cddu3i#yL9a2Iw+EW4`*45%0y7zDN7pfI5ZmJt*VL$x#7)q*7p{?4FEi@e?4m z#2C?Z^$0BtEfpsi7D54+`VG@6bj`Kar#z?cgafwa_tI;*vIG3j?Ukq6M=C&o7E~>O zpFa&t|7rpE&CFQkzb^Rb*?#LmCODv3ubzR!1eF8RC}!aV7A*YEB%u~WM?7-oX252s z>6c%uS{zuN4-~{_#O2$*IMWQfQu%-O+p|EZ@8?}EniBpD-7*=Wg5rgW#>lvYNxIr7 z(ysu2K@bj$9wIR=XK9c+K>|D~c^o?`4-bD;6K@U|+4!8&K1d*YOTNH~q)gumz2>ck zieNtawv~!2MtXpCq7fK(+2dMB0-1h#VlK92vw;2-@~H~sE|&@|~m zk}HIdpwX^L*{O?edF(U^TdP|hqx+Pd%_?Y~!-&pD(K32+<2Kmg*-rv4yR8q^%?TbJ zvX~gd=Hq0;?hgE)j=gf{xtIVtT)x5p0ipccF>^peS5+fp+rQdeZl(0wuQTC|{QMq4 zm6|1Oo7jwoOfwSFG>L%g1%!%Mhp`cVCD=ay`h(Xtmg%Zas`J4v&hv_PiVQda3fomg z5|o(xbLQFj^Why|yY(Ag1BECJP20~t97nnVQ05}gZ=Ai2&4{bmXJW z7Dnv_bE-D=l=kdO3RrKiDz{BnJ@hE(!3qlFfoLq4@j8xF=R+1c0g78QBF!jv{MoSc z^hlt#1{Yk9ut+EooHz{ZmY9G_=IEsfJI}BU)iEPFF~KAj9do7QQKlms z+|w&8W*o_U(J~uz*5?RiS{GihvoNui;eg{zWK0x9lKqX5F?$0|^&dYnIJnJAK72+X zNTiEZqnI%x1Pc`$4>$4-O*${u`mtoh9y~c{EQ!t8GOEe4ER~QbA1Q%T$z>_1YBja)Muoe7?}~fY z_vdj3=DQa$KUBK`DcyZszl3u0?1rzcDc9xXYa6^MiO}$bX3aJ6aAU?z6H|B6z8mMF z_sG9@1SuOE*HQ0sJL=Ol%d*cIK0DjnSQtdSxVy%s^GVoPeWdIGPqb5l@HBeW>=pPiyo|F8@`6CNC~?(Hy>GKptJelo3x(+cCD}Gp+t+dg zgRD!P+(sWt+$#!tIN6SDMu2t~A1#9r2$`@UhU=aaWd1&sv?68{6@cag}n73YE?Lp!7-M`3}6^8!~5 zRql((0#%)yMd5~Bh9wSmhB?37=bdMxeUTM~rEb7`w>JuU^O@iR5eiemp*gdROhc3M zTy5c^WY$+Fl9)0^4ATNgLgnSui>57Tv{guBoIKHCu; zO}`B|$O60Xc!FBSG0Q#QpAR-tXZkB881=ur94#G;))Ktyg7rebJE43WzcPOKyiotX zc>d;)hIXASY=NW5bU`AQY)4WE z6B8c`rs(2|m{0Ns8pZx;Ym})ZF9E{Wmj~)pPYmf!HFcV~ni!LVF~J}r-FUkEeKxZVJSh)?FBm>jFFWgVRUVWBSYRrymQ&{Y4>C`gbXfRv}GYQ%Q-jE0JZ-z{3 znyrLpCm~b2`0`Sbv_7xkxQ)1ZGSkFsH@#EvVNatSxd8rsFBTP|)sg~D{)&@2&y<+p zkNvQY*m%tb;jKZF6}%{G^8pwabfxYP*>R|Xp|2Ih=AN17-&O_Gd+$v&7I-HcZq3htMn=x`WxmGx5$#)pZSm00FYrUQnr5TRLiiH3o zK1`|E*2w@@B#TblJeX$FFjPpCr@Ng?|DDF5?4jfI9W5mV0h9gVmjn+Xn$BYQ^3ud{ zaDKu4ca{B=q^@?F#l>aHV)3gxt8%4qECtC}>4P-S!{1j1XUNe-1G3pKhv^C_lGJjI zI98O6C@60Tq*+n1XOZYs3v=eGnBPZ1FwAl8~&skrBkN%3ce|2*yCpN;5eTkuWVMcTGC$BPX479c{+}?XUQhq!X)lt zOw;VfW~^li!;>}%s^#|4XX;-*!=lD`a}1K=^V6ZsWlvZV z1oH=sJZ185$;sV{TW-CLp9mUU1mc~4x>Gm zpqAmO?N9p^=_U6(DA-loMA_h}bzv?HC%A9>t2FmP%7O#{zDHK z)=VPW!XBPl#M785UL*rGzbXn$oyK_rM1LDrY=9-5S7k9#&t;{k>zl!oS{4f)SpEXR*$r4;ai2LZ@lQ31bA++188 z>@@9c8LeE+?Ed=LtB$IN8DK&K`sE`wo-kg*6Na{+j6{i?4^t!cvJR2Zl~82-xgFNK z>;BDg^w>`B1B8%`N4`}|%Eb}J>q=an@YnsZ;5}0CMX(TLRt=J+iiL!hTbnyLu>vS2 z&G9$?cv36;N!JZT!z)E_S|%m2E;4 zv2$f570G_5jt@>8=N7BJ_Q^yoPEEApOy|HwFV}@%`mNhdEpNj`g-Ed5nMxh1$LW#i z)Y6DjCWE*&8BB8A8m^5kW-~iJ=AV0sJ1JH0#7XasY>Ti6pttLtGP(lsJ8b;M7-^b1 zQB1f(AJgjDBKnW9S0!hVKGfyZWXn6%1>RTQLH;?Q&7HDxdjP@40O45w5dKH7>g!dGkZEx_a5!NXK|;c=)Zrx!VKDM@hI`zwS7VRxdy>AduY= z9Hmd+o^EzoOtp|o+H-nB91ZH@j%N!@_qpywV$f_cpd^_%VNq1+b;4$!Rp#$b-COqi zTv**ZrGoL|y3OHXK? zuBk@&F0-`CFl(?aq)KI8;TsDF%)#BfTbAOMiMmr)Z5U-(`ECR(OmPRgO)ygJ#-X?q zh2lOqg(d-;hT`1i$g+B!QoobRQa&@OTA!taRQl9~^Sy9nzG#?C#1t_rfdjQM3+)U> zSXltK3?~=&`ErsRI48N(Rfqydr-I+kkB4+WFLpd=Mrz;mK&o-tS_`lr;4zjFFiuj? z4l8uD+~0pcO&4*af7_DZ5CGqykl@&ixeD)A*R4Q(L(tfpJ6oRrI?U%_Sb%^OEummD z0YS?Zde9=Lx`oN;F2{>yCr6pKK?iC zI`N&eq+)s@CIwaIj|DP0N$f1ozI27}oUw7)2!`xQk>wOLrs;5ZbW6gd+Hwp^QPgDU z{je`e!~Fgm)*rQi9k`a{_h*NhV=&6EbR#Sh)kftPLA1j{r(8Tc{N~0bfy3 zx}_wHDQE5kE0TM6Ra0wvq}*2?2B2-aXZNnVZ)EjFqq}c}cOd)qH1tLegT2HUA?&l! zdDgp8d-}tX*uH|m^_iZ_X*cB!ry!Bd(7fOO^!@lmXd(O4mOXkrZN=@*1XrFoqj6JnqYj{ndZ4`*5iDI>Vcpz z=svD?f;d)UyEqlh@cy!c-Fe%rX7L79gCJWI60Mibo!Iw%>U9;}z+J<82md?INkz=p z&mLGgaX4JuJp@Q#MSb00?s~Vb&3AhOJbHAjiP<0ao(Hz=wRL$W7KSz07>j*;td}(q zPuHVQ$j2*v*Hd*u@N`UrT{x?Ka4t56`PdNFh9ay}+`(&YK~3dWW#y1{{f zf{1{CFaa|bpmFzK(-dIk1-L%#jjU`LtR2lPuGDQDQPt4+JH0rm?WU2a=+PhtI$8RP z=!I!PIIPx7k~oU!Yn?)*66H`cD2%=>q{wH-zW_ak@_B#Oqp7-PIVsKs@FgfzOVxqF{}yDj8UNn1e|`$v}D9H9=kw< zk~-TS`W{)xj1*qW3GvglJl_-87@>NLGKJfuYw)T;jWjpR+gGzi@zwNDKn%w^GEM>9 zFw|o>L0fHRd*i%PD}WEReUx#-#`tO3P|qxxC-uq}ir#UA?R6^w-3#I%KKBm#35J~z zfls(T`U&3!`>JgLdR?_jVX&QWlN6dXVp zN?u63*jah{7!!>mn0Nc!d-!gr=+^jgXYt#o2Qs(&Z9FJIpg(u05;KCS)h|JbblZm< zk(xU25U1ldr9XIve=#`0RipY8zGg<=-I6k>IXRUk|GV~pHNW-8+NR02?Y8yDZ3YA4 zI=MY+Yv8Nj#`x7fKO|~v=EX7p;ghq2<4^MLO5C5Z{@-dBacfgNAugJMfCGn_)|vVh zZLw_9Ov@yPSWU5=;mty*PqDw;Y$vS9)C?m|-eCVc-?b_405rbJ*D4oO=D`bETDkmO zwPgu8M0sWJZ1KB3Y7@3tK);CSE6S{(T|7FUppHE$%?#)f_Fk`9ce}<_B_b%X%6%BAq<#ogbYh~09lw^ zfCa?t&pc0216P_IPKtZM0SZR2v{%?1ElAXsBV@l7a=)r{XdQ%{a8iA+(~P5-Fu8ix zT%#VKxUOf9^IBKf9J$hhxkz{YGfoiQZKUXrE$nFh?SNYakV^#7SHYI%-`zm4nDhT@ z!SX>31~(5}zFBcT*^U2$kQzIG!KuiGt#t~9)u}meH{Hk=y~$^`E@9q_2ao22F1aY2 zu=KxNUiJlr?b6Mi@7R*Lx;2Y>1S6CWOU`^DC(*t0(<+63iK!8NAFOImO}Jtr@()1i8ubqrT+M-6St=wel~@3+S|LzbK1}Oo>?z^yM0Mo zTCdDh+ssc>=ImZ}Zcp{KH%*7C*Bsq8>5@@(WvTDmN2))n?#dmEe*by>lqVj+#iw6g zYnQ8ga&hZxx$2t7%a+fpdv^2ry!wU3r>{+qt4qDTdi~y?*KS+itK6Rbd|kiYz0W7_ z)&92s`{wlF_^&dSRcpRi+<%#WuIBgM?|;+lE$SaWTE9Q`*WZ5o|BFfu5AaU0%ZRpveoc~aud4VBg3Cvg5eSFHT%i1W&s!s*|9 zt^B=%wRUekbnAa`Ds!vqD=WU2GIY~Wwk#3q%opb;za-?-!3A^QMt zMkWzv(C|11!-JXT5o?2%PMivCp`HScxq-SJFwg)LV_=AO1`YUR2HNb$AVgC z=mu1(c{}_7D!m6BN9Km<2GR|T$ACsa+W6q6J-Wt@Htyg|ppuI~je;l|p94kUbx(4B z5qKmTUHg~Yx5Zxrwdb%fFbJS%uLp|2wI>!7U~~1gzIQJJfvwPUK&_~j&j1Dlc;*0T zL}@P2@7T2GHAo8?0WCibv`PlWatYv2I#@fz=g5X&4Tav-V%FXI3=DChtPK1pCba-V z6Kqm(No7tdc)Aij4A2jhgz0Z!w6R9fjCQ;vx;g0cqzH4?7QoCwnnXd@jy~~%&_25a zsvT__2Hgboi3o%VXG@_bpiE1k>qj3oM(9tdfa*sdLq<0Oz5k6cBC;N9ZyenK^o}mV z0K*1k1F&^_(al2dJ0i@|YD6{*wI_*g3VK%yVTxlDG*nPJUg-MK+k*)GcUqCM7;5V< Vz?&7AgFv}TkRcJ6JgyXU|?e~U|<-aQ9W^h{bzIg&qnGV z4(84VOzw8JjY$eht0Jgh&R(#RnT1Ha#8I%yb{uFN7~=3Gs?%?Hbe5P;0?|g_>>jb;Jo2c}}B~A&?^X+MBPQ&+}lq7x4V!>J06L5Ei7&v55iCY2>w>*^9)|)+l&he@y{ihCH zooIC*tD`_^JkL9ETsqwKugZ;nUeWIi`JL3+!)5{f<@5=MeF{vrcj_ZP@d`yZiKaPQyw zSKUcJcNXortOn$n$}=R>>b)cp7NB*mXmiL6IU&(pb`&b!2DGSMp>USn2IYL=%-=rZ?uxu!Cs8Ar( z^L661$Q~$Nw9?h7B4MD7-Ai(R2A2%q z;ZN$Wz7wQln-+0Hjx1tMb;o6)Ng_nQfib8@TYowuS|ui7L}w?BToP28fOd`enMTXS zhjA7F1CWw$;tVgYZ2e*D7Je_>^jX^2Pvj`p0ZlDc(To*`rvO>T5#w51=3qLyEVeZR zyX~=E`IBDx1=C@mxRRQoJH<83WC!{Hk7a{E@l4C^hkZs0@<}bvDGQg4KowtyX`){& zwJB%1jWJ6;aHBJNTxb6*Q0Ny#H7n3*J_9Nc8mK^K08?crfP*u$DZt76_eq`^Kd#u% zf+~6EEjg#48FqyVCn-Y*eiSY%jp@JCddtD7U^|}0HMzN4V5gfy?@F}EKYZmNw9ehw z3~3r1A50t)cjj*vj;Mq6x@v;G_LL<_$6J{c)OXhNID1KD$!9v&6QP3l4xuIsQYM|% zKz<>Vk9?qxlVk476lrFQYEkZ?m>QbG@)u2!c$zkHB$7Q$+MoXZL}3Z!@%3n>%|%3D z8E7TB;9XeVbjP+dPVK+g`5ctf*yXy-p z*7QUf%wo|DD490t?+jg&d587BZy#RYFA>n+b6-H=9$6wA($2bxzdrX};{UTR*Q={I z$DqF0LVi~6|zDhq1I6Fro{=Wr`nQ5D?yfCbSR@pZhK_>AVcF*4aW zs8-e;pwB}n7Vj74n=t-*{-=hqr$tc<*apQ<8d&2Gc_Ye>>j;h2;lul@lLutZP-W1i zSek=q298G4W0mtTjPRdRwUn#IyvXWJCN79z9h{Zur$4VCi)=J_6}2lmcz=5~7m@ts zT6;fmo}}EkwDDDiMJc=-@}>Gyxkt&gAm@kOntJqP~#ruRy50@QaB1E z_^igA=M$fxtP#CF-_)7?M9ZJoA)h z6$~f5;kceet*%rn^fKxswp&|tIER-L@OcQ1j}t` z6h2ckLXx%PHRZB9OckVpRYTMi$%IcP#Q5~4w5M7J2jYvm28w!7SlOI-Xs(po!N6AV zJpeUyqKzP~@&{Ml9pbxBcrU0-7j~=%TMsURh(~TPJiwNEc%qaOc-xoJ$Z;b77Te8~ zB%w*IO$z>y3>*zFTcx;^fmIpdLZuI#9qG)^%tYt#=?_=y=bv z-S=3c>7^4IDipYGh=t$Krj5aH>e zRT|MFb|Q_A{pdjUkeQwrknEF9llYO|B8Y{=pMW(Ih|HbA=+xbuet3|EeZK-`FD_gW zS=V6l%93|xmm3riVRzlcD|cRCGbe2Q+t8(JR4{(8X^nMM zT2<=$h&)ExF2tBNOLXD)&&g!ukvz5Uf4*~cODlD-+Vpt%`swL$Od5^h6Q6?xLc%&> zR?BhMC3t^EogSWZ0Ktkf99Y%r7q!WFE}_{y`9oCrG3kNq3eH5_HZjjR?^6t0y6Ds1 zUVF6^7R~UUoNnA!edqq00Df^N5g|D;ibukaIK3IvpDjexU~t{U;NhzDzARldiK@N7 zx+QvOnf4Q$IH*^z`C>F1{+eX2)O8jkv|O$Ywb!=ex0+5Gd;XM{BV9_@0uBLvATo5| zl^7-vqwFg--2Oq{1X*FZNQ_Mgd9&+D5Ah;9Q2@>H(uuRXz^yv`Ew4o|MS`|<ZiigN{bJFHjj4X=)rLmf1Sx%jT;GRl8_cq6mk^K_2z7MjZ z`FPX06$`VhNqDxEH+80C`^vS5jA9Xt6xndbBXz5HM_?K=G!gTI>+8=(xUW$EyrAs; z@X^^oEA2RFr6u^+1@-4X;qRB#pL>QxQKdi@+%IRZ2z|i`m__yx?|n=y#*`0w6v`D9bu%}(B`Eo|`P(l^Kk@I*qOV9o|Bo1+U@qNE)6)JtoK z+EkLj^VRfnbuI~rDa@SICVi?nkWEy0MyPG29H>K}Xw0=2X~n9FDmau`2x5 zba&_F8$JK9iwy!Bp0WpvcP04f)tOa$#;(9V`|H~`oKG<)M!uA!BE%Z18k(|Y@pb%t zS=h?7ds>+Z>gF#m*}fgNXFwz3==7J@U(aqT`b&uylZg(uzt~=GT;7mF#GeSJtSoJ$m69>;MMM} zZ6lZ&xI%20Tzo#=e-M(gw>`dk++6-Letg;Bv1ZF%EKFR{+taD^g*P;^?(N#DUf1hs zes$c_EnN7`K^xGIcGtdpwSVLO{-k{5lhIvB@nS!)QHZGD61bc-?4@Jxy7=*n;>Vnn z$)g(KQ{l{4Y$1844;RYY!y$q9M$D^EAW?3cz8fbfpnc+UWCOa1y8g#K-(!h zFFq+>BA^h3FO~1$8{%#I?8WJ^+xV_^{R6Hn60G}jkZEW3Np$+tdD6|Ldm174_;m!( ziP7_g*OUAzp?sIt#iPq(WldN@EXFsO`L%1UtG&5mJZX^C*RFldr%PY&tn1}Q{Lw-+ zg{a?gbDbGw6Zln<*jqa5g!FBo`k~vTw|ab@D!Kmovu+3wEsYZIb31(J`37EliZIY4 zLcQIa{{(}yIxP0O1_in>w5UaYLFViQ2ik+U{)QN zw?&?mP17Q=M~y(F3>xaC7gnhOfd1QOcp0#M|7LJMA-x1EWUsjDVh({vSJXyvviZ^> zz#vSVTs`eJv!)xX%GMXsJe;spi9BzA)Bm$()29m4RL9!nIc4!+&(XO8yP)JT2JO7{ zY4PKgI<56Us^xv)TZci_!t~S0?4!e-b7Gp#yeo5O<_wfS6eo=#rRf7;P!5Dk4t^Tr~* zh5Ih*O=v_T6In>klOS|vQLZtvCh@FJ8Y3&MB3**6n#f)r#IT1+Pb$Z_C<_;_*w$U) zyGg)&uQ}E+jJZ(J!J3{Au3~$U-TYFD_fR{tr&VscFqJ6+H?Dk?aRaCwyzA4f=qhJ z&u4?{Pd6^D2KIwqqR;({6Rx?RmfWxO?uTZxtGC^&f6faj9qjFo=560cZ3-JS-$)Qg z+wU+fizMkspK-?Fy*)X+6KC|8Hb!MwD<#a>99$#0Jq5ZhWw;>?u68l`4rfc-9XrJz zwEh|h2UPF)SH+-~+WOE4^j$qTF&sI*Upe38UzoMyZf8z8K8VAf9{*v=ji|rDs^Cgw z))|Kq@cGi+Wfl|2P99pw*!>G1ONHNwH zskM}V-ELh+KH2)(yB;^Ba!aS)@07H*adhIo(mfEJe3z5>{gR5O`?H(crzzx7?9k(~ z26srPVLA=$?NXzK^njPwf%77zgK@Tv&qQGzGGpngvg7Gn&+%p4(6r(UX9_ZW#BBAm z9yX#$awiME84~DP6h(8(W_2DrW=0Fgi`iliD4_KdPQllE@AF-!j`L3Slpe+VUeI?>J`U1=Q=&n2@$1sdMwJ8O+mFwuY#m%$`(3kIaY~SW4 z_jxX&SmZd9G_AskV(t92hQ#a?bxvl9`m*17hDBP4=9|V+^ZEN!1|8z{poF#7FJR^I1O`B_;&;KR`>Y}H&_MEl z1bD)#!KS~7hiQ^UvL$`Lbd=_gU!E+NHp|3W9A&21?zSH!_Uq~>t3z-~i?zl@K=pkM z5i*$b^zrl0*k0%hz5Jr-QPsk3G6HY6tb#m%j%j0d5>?*V_)lfjrUaV5aTkSG-x4V+z9Jy$T_pydU@^*9^11I#Hu*sk}VR{O&jDXFc5Dq64H4?>4-klCh|H% z?8{*RWR%ixJqB=#{ zCqAB~vYKPfL8Xhk3|j??>Yq6wD(s$H62lLJp85T0ZMSn6%E7CVbUZV0C3y>nsG5T< z_8JU*7hLVlCNr!HgE#XQF1?VelExb2-ku)TiWT~X_5!*CbEIs)vi`IV>Y)iB8cC}bxpGGc933f-}HxfvnXf7yZXeR4vFZ^ZsX z3JK{=12ZibacYrcmt%c$v#J7D29xuG4)n+GvlzYY7tlM7UZ*A&~^Xno=RyiMoI6k zdVFuV%MSd&Bk)Fuizc+qV>8&?vV*@#3B$?CVqf(5;PCRTcyikvAH*uX?AC;!?yYIE;b?NTaOBt}>b@ zSsJ^>NM}b~eK2`M0UUFtUvERYD^U)TBCz%?@eqxwbA7U_F;1=94T&z#sh+Q9E$}fq z5AUpRNV>jeQs&zntV9s%o6D3Qyu6-koy|iATWn6nJ1Npiv=e+A5;~V~u7EjYwV=|) zxL zF8-oknOke48T_&U%o%)}Vj;-RTJB#q(Hldjb9Fespv>IhI~5MD9zKnEDLX(^6C{62 zk9O|x?3^VPo7~!cgPh2W|D|+_&OkL)~x}=jxgbm0T|TI zjn#)p8lvHcb`)PWq^R<^y?7jpoIyDL2go_xmO^?A`Wt}(818#DK^vblc0n})xTrTW zhyl!W!~pw#7~|Q{%h39Ry!DHRNNOOMNi1 ze20^^7=Ul;0%F6DYZ!5a>{=?B^4j7Z54^zU#U(!7m9s_m?-CWv;2&%aOB1i{5=$EE z?!hnK`?!4mprOkDbYlmjy0R657s-MA>_kBs>U)_6)UWFD7W%c>CqJ4)nfjSFqs56! z0g#lUux;U2R{XNMJ2`KF;4J<14mV>aGB=oBW?QmOXO;_6bSXTG_JTKJ3`q@cw(M5$ zTe}s)$U!NV98Rs>RN1m7gpX7+=D8TS5>3iJs-S+EVS`+gcwHvK(cVp(OunIe{(Gt; zg9+HG<7=!N+1rS3?aS{*j!T0Ta8v-GbnJINQk{RKm;9AJ_wV$>-|2xwVx46^T-WyB zAum0xUuGre((A38TqLtqn4vqAdoYd)c_mO%%5ZMtPhxG013W!CqrR8mY%GN;S6lm{ zcc$a}cVy{OxuD(bSESiJ%vjFJfiq*C2YFf{&-51_Np_m?Q>>Qe7#b>-a2y452a(N{ zuPjQQ6)D%a2+moT1(tAI&fAtJ3gsIjxaay&&&fH55;199wHekCMxUrFGgqf*;@$M& zTcI6koP^}Nu`|Xlszp>W1WSX`3v}a?3M9}7Snd6 z=6Ff{4OP;0$udi@xGV5mBahUeAVL>apueuQjX8f9S)`?x|C!N;DI%oUt}?6E81Hy{V;Y3s)xSQch z0#OA-61z7IpJt_YmRX_2{+kDi z;$J+9yD~W7+r<~kXf?*pM?=gkbR}>!AWMnge~PMKv+%aHN{Sft=~W)79P~1%L#Z=B z9O0s1BCA8qoxeV@zPG~mUcm+*b&YRIpdD%HI*Y0zw?v7SH=1vNlkS?Ko1a}eIHHG$ zpSId@cEJSq2*D@B#Dr^9>gG=mEz?D_^)@M}69?q{zL_B&dk?;KlWL1F_aU|HEjblcWXOAgeUMN9|e?ol+l#?pU#HO3Utn`^q?qKWmXi6NK7B_Cl|(Li1-+}H$#UqGp*jeF@{%G!WF&+JjQ=)=K-j1t*%OT; zI1y!UkEWb*u37F07fg)>zDoOlR+DA~D(lQW@Ob2BKxBIB|I$2`a6jRyY%TyZaaM}b zHX(Klj8M0CN=KCg)4BN>XVRNJ<)-L$db8{8r*mh7udrJyZ4K{~OAT}p3ND!#p_+io zs_!(Of6x(FbtTZenBHQR9j zSgWajJ*?DSYHMsh{?_4uF`n>~0XK5~a@d`2-PfJoV*zYPVPK}VJSjd?z=ijORfA2g z0x2qOPQnzJ6Um2c@PVFahZJlHh9Y`~FJ$$ZBNf%Lsl1CUUOVR5I`4Sfz@rrzq&6WF z@MVqD2$#z#BWSY-#!XqzuS~-RG3&P13>m006#cnYFd^a~QpHG|z|`O*-h~d1Ad+Fv zVquHNEi0NWKtnjevYW^JI%1C?{lMKb6E=A0wPUKrAXUu{+i1o*n1ANZ00RUgs{Ja) zl>w8moS`=B_^k*v6!V*Z0vK;B1`W802!oU%YVFsm8r<*+SF(C0)L4EUGOvB zgADa2G$mmS)t1-NekWFe|I4PQ_TKhy44utu)NUH41Lg12&|_`pI^gAy(D1GI(LvrR&xbzVt3! zb@!2q(vmK^3TGhp4-(GDg4c zCgEB#mQha0WYn*c1o9LE+qCvG=8bI2n(3)Qg9$vAi>mPhW_HHopLQ}pNmG9&@%+!E zq{%(ToBhiH-Y{qMgWptNE0Ao@6*4f!?+19J*x!40pdVC7HvXP>#WzDem{YnN%c#Gk z0h4>70o%#=W1NvvMt%XN$&`93%-nk?V<`2VpkbKvLZ0sL`F13>Q0Jp!FY_rK4~M`) zpaZ0%;veJ5@n&4Csfz;HJk-e-Va|A#Y}f9TQ#ujWe<0pAHF*}V+02ZN+a&ybhdzART<>OhYZvaw4pzaH(GNkja$RGXWqurO zJiIwLjG9oYiY}hpd)T+ikF>CKCv7$W^U${n%^3%K(nn?;jc) z+>Ru<5}7H~j|O=Y4I?A4is+rKGe3uvn6pua$FO~?I@O2nPHrAR*-}HX7|Dtefh{mV zA3~{Z!oz@8=g|C7CcSpnQrjeFW5yV?6|WccQnR|XeyV}G(VRDiZ(g^+PVVutLucp> zrfdZoq-r;8lN$0e^rH8F4Es$j_XjmPh#FSz_wIY5bz=c3+4v7?SF>>tH9yy%)ZZyF zB9Q+N>Wi)c_>Qn_qYdxY51q#FN0nv0==QT&3=IBmzeu$MI+`fjkA*QJ$lXJ=kmYIy z9JI;Iw(a}lxlD_vYX(F*cYD!)@3ITuH+#*!`-}Y6Wdua72KxtjGb;y11k?XPK4UDi z^$?x1x#sj2d7rV&gR0g&f>yH%=J&qO-(e5cTH}~IjSM$C{aXd^8`#?rG6~<>4##Bk zZtfR%zIGNt6&E})Xd{RJi~`gq4*4wQh|;a_YR=~SDs*O69$mOK?Z+}$mTk;}>8hMG z$}17Nxb?4UHFlyH)unyoyeViCEOj8aEfz{%*9;yVaA%D5hrbc4ne!q=r91|s#8{eO z5I$~f6vu;deO#ySBeABk0q%ZO%lskFb{dvtB{2fILJDcK4Ubq797qzgV_xPuN1b({MJ|3t@Eq-N*-tA+ zIgk*7FQ=3is0s<3-51|V71OBR-$~4JJ_{mq+>lH9qzn5gO@v*dC*UoakD<@i z^SW)Z;$I$h?}|nT{|0vDHEZ^V$)6mRH(f(*vkfc%GAXBb)L9tzr^%3{-zIqwf1B*I z`~Ne^qhQlL-M-IJ2?UwMD6)Fvv(0KDB+AFZ!sCxl|7cF-NC0}HTo<;wx3he50N%1j z%?Nodnbd$Ojis$C%@i_Ezu)XRh&y&`c2yy}Y4p+Q!5wJ*O@$XiyjN!ibyjbJR}T&n z4#8{54D|)UbE#!8&TGP2NUc^JZ%{W-5gAT%?H|bY(a(+fQk8q zf`5c+A(2TWVJ@NO5v{y23yFi6FomOM>9pm_g3W44X$-?w252BLJG94GTtIX@(QF5s zFxMLk5Ib{?>P^(Zy2wNRzD+`n_;buchJtTHgU~vDqq&P#!s>=x{6=GTxP_SFdT|7 zoFC9P(9ATPyFXbB{XE`nL*F(VWF1Um_Zcow8H#jjaCY>Z3?~jEo&)8BaKaVt14eD9 za^aELe~DJUf~ktwS%W)~7?6Or8Sdar(&)@1h)3{-%Et&ZA3MOVaQhJDnbTpfNG%&F z#{VNOO7yol+@N!@3!9NqlP%s~HN>p_L=8Z266oIt*gDVwrU?knAnp1R(2&!$1zmVD zN;rhb5<}Y2V~ELeDJArz$DEwf*aif@(wsksa0~IoX6|t-!7!vbbxWUuHC0?{2Nmz6 z3{<=mIM@+?+ZL#Q7SAqQ|F7cJblP@(om@&_`AZ=}KjPjo!S*;l^<)pEwXqs?PN_Q$ zoM$NkI)nxtEc90V7^^6WgoC=wfXa!tj~`AHpj}-SyyktsTfR}RC4pjLaTCJ3pu2&9 z(9ymTc|rS{*>I$JuNzzd6gEqj_4BJq)EZWu9BJXOa31Y?GMAbqmzm|9UbsBy$6I-(20~eA@Xh+L6!sslUEESo3KT`9jS?QzEEzQxgjmn9uLSI}eSf zUv(_DUdwXm#BQ2u?!E2kL0Ce(3_U~JB=0JYLJK|1T^dY(BA*H;TgNqevg4fN&8CwD zk3n>eeQdPnyDGmIQ|fetXYEF2=^ixZaNt3+7ER6W$;pwTo9`EUEK-j_ut^}}tFqNf zEOYegd)ECF@Ezg`k*e#!t4~R0Vj9drZlXFuiex{;6lXl$%lV>VgY3$tTQr{UN==e> z%W=EVf8{q1JwVjFv^j@te-V72J9GMge9F)jf9x3w2D-7Ogb4flOrEE@HYDPVqxqAD zdekb;{-QU3IoH=snjgSl2-L^4VGpTb_F)e$-{1zGm4Bh%pq?)kGFj*X;vO0|j}$W> zO7k$!Th1kW8g14;?`v(ye^UieNl#QmP5{^(GUx1P<%9T?_d&%AdVqh2XbgnN5BQpW z-V#4i?X;G~(v6LW(bW6QAPl#JrMRGme#H*9hJJONhZg#<&C(r*b8l-rEq~0&)_t3v zT*fY}kqAMA^NZx>Pb%yMRRAKW2#^!gsnghqDTKM?G*=k7m<`j_p4uZq-A5`PpPnU# zlhzNkIPHzT8eK73tS%oMz^H8(Q|w!UwNUOaN|K{qiPuJOU%m8TD;?XNUfFcMaP$cY zOa3P6nyz-OOrLrl!}r!ZLh1t5!0!QixAfS7Y%Z8h*k4o>X}CNj_!_602x~!6|Fiz` z>9)r1ZO}vGH-?U=v*+iY?Zh6P|8CWEw&yQZ9QMlQk>?d*X_3F`=Kx!3a9qUJefi>Z zZs#*=5t^maKx?x$(CNGYtwLSvFM2Iw`w1=>9shlDj@eMMf-0HmU65j<15Y0n>=&-R zbLlzVaHxTS*k%H8ldKRtH1hy|Nn~I#IasFJ@z2LHdx=@XR-g-Gp2lYNq@>)lG-m~# z$;QZok`XcJE%cVI(l8lfUTJw5?K-qUk&-}}V!?bI*AJaacK5{E#sJAsBIJrg_{;^< z^6Uk1N+DTP^_^q)u<9gs$IqgV`>=vo52!`gYoi#;xH)XuT^oS0#6|prVzKPfV4-V* zl4=~~Qk3~6^ zm}yMzo6kAL0mOX;S^N$(_>k)7vx`p(sh6I+&+6ywjawmEkT*9FboaS<=?K6gMd2~R zuh)D7@!sVwT$`N%#APw%SkH8~r)AlbGSI@ZXzJ(3p1svk7%VQmPrn5}qf*_h@j8P9 z2mD8HKz1p#@SlQve+xeUEw~E**u|CgLG#$Q%L`gqomh+hK8bkLww!oW{x4wn-s+^l zn12B)w|zE?#+e)f!+O5H0jd>sZ14zUJF_c*?|Kkbf)`w=9pY^Vj+TKcc){*S`)DmTWDGZXS7p{0z?{0IRfnrwap!LDCdJ zB{A*TFz#hO_YS#2f;nz+rn~=%b*+9b{&gFLxJ^PU{9$zfZq5IAc;AwxqDs1 zMspWV81^{oo744N?D)q+^B@b!$8Wi3Z?&91ut5#ON4ud#^LOz#EGgXDX)03l7}ksa ze%CJ7%`aJX{|*o7KyhZ{cWA&OqwbmyzcP;}_92#kcV>Qxg{!B`8-0=iE}dwn2Jg2bF$Xr z!owNWRXSkXzCK(p6%hlg=4c1# z#a3wWj@W`~PH9yV{k7<1kDbDerFh)0@b4HFM5(*WyjW#2o!6XYrc8u>sTK_!u4wOD$Vwh5yjl^Ncr}C4j?BA=IvpjrnVo z38(V0??&CQW;ziOu{ zE{K?#XC1FP$04_$)Yk(IO43&cw)H_1P z1#;PYIAQ#I7tmPxD?Vh36<0?}>0J^3yCIz==afZGLRi(Cl-?izqGAD2;YR+ZVu=_u z*{Yr9HU-&a`|80$>}hK<(x&lfD3g_h#V>xP{k}t#qn6D~Gx_*2In_^}hJM_|b?P0T zNugoGM^dkvvJaG+MXdB!ojpiP3Cc}amIvCYBEQh-k7?-ZhfZxLsz%uGzk%8#UCq0< zUlcUHmv(174=^?{2Q?Cal6>qTk}*8C<x2mWx6z3LSuuCIZcTPL+}A1QJ1~j_Uz#DGYt3 zc^rg5871^x8GK_eFh`6zM+`9&{}BcY!p0V5sW_2EYh)1_%ZXdPD=aVvLKNB{CjcwX zWm|v#NH;k347TaMaseJo)-}607sC6PS2WmABpAC1;|_^#X=)(7_PA&QoBH1>5K;bA z5!`b{s93I|S!L}~8E~M)i=?009FC0j>arwoK`Qo4hxvXf=-pV__qj#EJyPbf^jHb= zGgP?PLZ)$ikn{ZgxlykZ}znwZp5DPf^5F zfrnb(-oQFBzx9CaM2Y2!+*php8XTpQ!sDZIm0;kP*x^{C5Ke%Wr)hiDSsicXH+GvK zR9iPpc}aqLMBH5e5J_?P`U?Sy-9E!5Dn-yUs$_w39S&O*=9U*JJT0nf2?lM+3AQx~ z?S1}(nGkl@nIcK>W3~=?0SoB2af^Pk{RNHuI59|+2shi$Ecnw)h!r{@Al1KsuzmyS z{Ts;cH_)8#L?=)>_tkO%jy7_=)I37K7AN)(1c7qU+TzG;i$M!|??ar3 z8-xi*I~R_bc#F^&f_WsYs4HCXhYw6Ce|Expw|o{aecUKaJa_F5a!4CtLWAkRHLN(X zQK=CQRX;!wMS+NPu3|w>lSYXkC=adpk@Qao#wgTNi7$<~&g|hc(x6HV>J=+Lg>`xo zF;#?O%HE0=#X)!zQ;?K5Re2IcKlOZ zvdKyh{8P9K93B=gh~H5D`Q5&;N5CvECm5J>H4GTuKfl}8vikf<(!#>r^z)ye@cS5~ zWRABmA3 z2|59Or4@M}+sf`dj2wFZ>ig>M(e>ohx?ah3e7E`Tjq85jz7@D6P_>Y~>3el%vfa~84w zQren=WMsn}5pwnB0uv~6d1viowR;=QRXy(FbUADBRJTO!YcEXQy#(~|df~FVa;Y`) z(HE?~^)0e{NU;F=`o1+8__|r|u8#W@bU!e)`kw)PJ%o%pO51MT^NZhj-%Q4x6Na;c z(nFe4_B?%CI^9C=nG|KcLln*@Wev(Ys3`#hN!8y}(Ev~VE~o9{!-swFaP`SAQpd&bSW(Wpi@bJpf2|I}pZL)G<QGR+fCxSyHwt5R@R4CVC~Co|F4z4yEC?Rhez^7l`wxT&CO2iNBg@rcWpv@vkR+k z`GqF4d$scEa!ih?CE>S=>gLZA*nlU6S0=-Hw>a)pBHDLH+pTw_WVhQbIFvXH!Y>UT z_jTUSHA;#d-NM>R$gfYsMos0DTsmu;n@YvSfyBwo<;0pXG2=H+PumZDH?v2M4{uq? z$G&IDF^juz_{95frGp`ptDe5zIdZUqXGHnJM9I}Z^D^}73=8_7ogd2&uBqE2YsK*a z<;RSKD46oZ$ggkp>)WmQWAcKGI6td=xGNgDC>!=!@Nodcl-9%K)|L`;(MoeuUrRFK zRru8gU2oGv$W`m@TGX<#*F~bwEV#9i6zJ;9)%!!6JdE@+7T_D0xC zo8YzUVO#ngXLr@@^!Un+opfzR)@^FL5%%if!O70ePo_O+?xLf#hx1#EZhT)XpU~imvN?)`ZU|6j-0U2SsKQb}OK_IN!go4mJi~2o1{LfPq(dd6X)ABGUeK8Z3QCyx7^M09 zymn9GQ5}PExP=cki*&s*A})n?Ep){w zVuD$SSlhj0r%{#LIKNN=6SUXlNdZKlQcWR(Hu;hsbOoAi9mE2rn;uY3VztUoG~h+6 z2d`I(!8pp{!~T|!IzL+oZ5d%|KjumF#K&0I5B5VL=rvMX^6=W^YY;pYX!hWf_c{;@ zp-q0Caszr`A)-WH%h~A_&-qo9`JXR|6K(xXEU_J*Sr-79{Cx2 zZ~_>sW-#QyAP^YmKeYZOX$9hl5e)zeg9nA#{1w&%ut(ftk!<{pvkt-Y?)z_?zX$xy zbB$C3^qd~q1}F?26!zO1vW-)@%p>yc)n)Wk@E+-&9@TTTOhN}3(0k68QJArL{04IP zm=RNRdYaBSc?ap*xcTZc(q_~6?cn(|WN$BXtnUsZ z5?@BxeH^&q%H#TY%Gc`sc3|`U$mW)_a(I^;vDj@K1?TnN{Q>U8$?NCKT4ooPKxX^K z(@&-<*rs-~@T@ALcRQ`ZF1yD_M3Hlw%X@~3f-Gj6lQ;NHooIr<%- z=L~v&T}>mJ@?A}fHa(5;IK3eL{<8JVP$e8*3=2iP!v72F>J#oaF%Mm&y;3O} zr6=UQum|OZHe4IY7jcNHL2))@EdNxs=+g1x+mLr^6A#MqQDq1n;*RH*d%!E* zm)YI1y5|OALoNdOGN$L2cQUggel;$~iD_T!qKoy+qkIR}?e zG@K7CIG1LwQz!?a#|9s{8GbcQ6qY%85jp`XIWujh?9E)@)KJ+K1uY1iCU^vg^Al)+gZ@Qo1E2^=!`pM+I=;(=;qc|2F^p(l{-9(7@_k37`xSSPsg zS^rT&aecx4XG;ee&?&ANhhgJaMoKnMA>#hXOp~!8xS>$(q2}0*KxL}zLPY{0G@2J- z*Z(8z9iS`Qwr=6rwr$%L+qP||DyrDFZQHg}v2CZ~s`%|X=idA7`TqCb-*(GNOKUrQ z^xo%MbB{UJo@*RNo0A+ns}EXx+jsg1mE5PHI5a6r89z?B|GZdDPLG_{yR|f6H3a^~ zMdM$3kUX$(+f?nuy{a0JVqa_`8wl73*0|~hA#iy_zZ6r0EuQX3ZAyG(aAr@u>uE~6 zbWTKBl40<2JDFD}v~q~$#&)P}-#cN7qW=CX=+tt3CA8X)#-K>YvqS1&8 z`q`}^f6y~F+x+{)7YjFqd3wdv{DbS&I|NmK`ElIy6-o>biR?!|yr21;pt+H_ZZAFs z#QE$yh;G?(h;=x7vH}Cr`dGdEO=GkNRg{PB^j+295kmMioo98r1-R#lr+3}zoNN#7 zRq9 zor0R3LGY+^Jy${Pdpj>4qTqyd$kihd$sF7f+TWJz90={tg!GOe=w0Wh7s|IKb~U67n&?0y0T>) z2s&=Qzc~FGAKm&n+J>9>OBf0Dz*9DAoS7MdB149h7%EKa3lYVkU)lpGQiz!ulITbi z0k(>>sqCvioL3@V9sc$6e%y0LbV}%g6iI33ZNtwp2u#n0uexTc^@!crnpMs$NgDA+ z&l1BT!?6*yJ0O>>nGLnK3MZx-&>^h3(aL4vROI-ztGKB!KvN%WS>%_<$&BRf4+z8H z`>KFCKpL+G+APJanM1yMsf*6b!{Wm4GiqM5I9BS|ciAnG;24pw2?qufmFas4Qe-EkO|U9;7tgBYeS|~C-lq>zeS7)jOUtXxWe!rf7d}dg)%|$&o*v`N2x7D5@a;O{C`r+xXRo;v0(`G6W3{)o-M3dT zz?TUT#$*!)*tjE&o-fzDT}qg2BJN8Bp&g|5I``Rl`E(Gn5QC4O5IGH(U{*4#zjb@| zaM!}mf_Eit3mQ?<_a3$;$RPC5e7(BeW%Rhro>d3$I|09ed}|Kv9Rx|^oBaYzH>9}J zHWv#GiuKX5dHqvLQ5Ui)#m`ZfC5M6TX3wL26{Fqz?xb|-UT9b9Q!fsm5aD=D%kz?o zxYNmKG`VlX2+3#F_H%&fln@Mk=V)V1s=wx!(REC!dh)?_2rFrNZTI~(oJF3N=O;Rp z>0q(Hj0lXDU6Jx70$pLUqm5sG3p3P8$x0QE>mXMIOjXC&((a}v9~{`VoRtr1h?h$I zaS`tI^rFl66qC zvn9NS-^6tuvo1_A{$_~X9OMNG*Agw%#`%7{TgOMPhGTlLx>pnsRsBlr{G2 zd^h&+wkw~>Pl%N~`OnSF@xEW?@>;!Rot#-$gWdjKA_!V`i+@Q?adh}g>aUWOE}p1C zDK?`!YsPPA*U`m;g1g&MV4In?91HRtoY#)~a-dK4j&6#tC)@7*w*0^T|Jlj2Mc(Ir z+jM4cnQOb68AX&*plrG?0kt^`MmgCEL(I02fq9dVggmq~_`~`6h z&u!YQBva2@7o|PW4Ggg{LbREwe}B#u)m4{PR|y!2ZNNwj<50?mBK2#Dy(5`mf6#YW>7&j4_nk+lhfGVh7f0ysWB2(i7m3H6Bocez!{ukJulIzYr% zp0}n|^0kGs8t?{mURnp^MZ=Ui#N`!clmskBgOoP&l(f6_x!tJxTB!Qz-YJ&&+BToIbCih;4{K}D8yDrNh!AD5{b98$e(?hOI!T{PsI}vNCg2A z7KcgsFJw<4t;U}!=*wkIk6kY7kMJqhY+MHQznVxgOt>(q8A>4+ic$OPFpiJ5j zAr-Ca=?Z)o)kdEZFn*&ZpsEk#POnWrv#XEzY*RMM5_Y8#X*Voix zUycnzb7-XbkyL2CtSj}%%kfiJx-Xwe`eScLgZ8=HcvS=%!^BpbM(4^tr}=Bp1zM5l z64d!miK;sJ><@PP1ry-M)#Ay+F=wI`x2v~ft1nkNLZ^?!Xt8GmMAtzBlJ`O{KaHt% z1nIn{RtvKF^g2~bgmR35>+pea`zUq>ij%!_&gIYCl9sZGt}GZu+$cpVch zha?n)B%zr-pLM`NF%VEiWa#`xBB|3utt+k2vkL3WYWS)RKJvAKfkbq6A5DBof66cj z3W)>=zs`yNOf?LsZx#-Y`H?L`gwqt$b)4`@KJ33kA_4z9S z{uMF{0*OR0tPer1FGqQzm>9&xn%V{(YlHeR8c8TpC5=(ka0YDz&fW-uRMha6G!S96 zGsTrg6v)sLA|%iATtbNppthpa{@U`JFqmK-M#chFXg$cGT?iDA^Q%w|ujuY=2voz% z7h$lGAgJGw-IG&}@ylk%t&*=OjXFghuu~^nW~{^D&(T_F74h4~7DQo9;tWQ5fXP5>1S( zuJSxTiup<@3It}I&mHZIMJu>%9tK3zN_f~I0!F%x)DJ}rf+_;0&y+bMW33(w;}alC z!|cCYj1msr#F!{9o9EH44K@HF+L&~UEf@ww48qF>e2rb`HC&T$aN#NB4u$v^Qe{a5nt+ z&@5?#0kuC8t>BZ~c!+@U3xiRFK<(cy{*se|8ucLge^J3=Z41VZLh>Juh2t^&sXbqg1nifO zjb(gpg(t4h)%It=eE!b^CXY|@d-Trf@#zjw_f6Y;17rnU`Yzu(POnM)X~7^HlHri> z@}7MR<34Ejt$W`{ReavtQox=1jpD)}CU6sB;3qN@!%-)65?`MLCkO_Bj)Q?|_DXrMgWn$!;RMf~hR{?zx8 zX6qSis+(f#oy8K_?s8{=tBH++kMCb_7+DzIyqw+)8r|s_CG0T56C;P!f1>jCx%WiY z_gx>1Nn6Q%mqgU>W!C@XBY-?eFjkd6f*@}`qfJj-yGw?Xw*4*rRMh386?yZr_sF^b zIH?dmf|-tyl75VdV{*FT&4lA_Tf3uVVSV$$-Q_biy*(x8{$B0%u9W3oB|jdJ`UR$T zr%OL*CHJY0_W04_%UAdJ5%+h0-dqLgbD6ee+@!^lT2p!RNevdN`aRmU#Jd+W`hknk zm7TB^Mgejh15<5H^9%#asC8{l56_qo461dap4aW0^LTXJFCN5H&p=t^B zeM$9u-;yl7Yn#EF+1|eXa23W%@$Q{e6^0 zSXlqF_#COrC$a0})|4OW%M%29#b#a+$9HlUWx~gDtfc26h2fmdZ|?~hdyfFTp^Ma9 zlxRj4dOFr=Mz)dJR^j*oZ#P-@cYteYnceA`H!mB%UaD(7>;_tle3i^1yFU`vAj@BgPB z2VZO%(iZrO3o`A~$9uEeLdosa$NjxSSnlV+26$=(4eM{pKfdk?4Fr-s61CrYiSTR5 zPyr9X0##^LD}h!chn*04zaA`mQ~M|Gx*>Gsp1=Z z3j9de_APzo%_{n&S-!YTUxd{y>9vw;Vftuao?PtD1IDs!(%*A=Z{|`@mTmf;1B6DE zCn$%HTH$!6sNNQ&o6-&EjD5&5X7;YTH;iQ%D-A8o)QDMvG)0uQ*8b)Oq?{e+_z=S; z%IY#i9%lXs1ezXV34w-1p5fG^Ev`j`QK0q25@wDxO_cHI5{zl$_oZS8dTvTTO_(jv z(){FZ1z6Hecwmlq9%*_CIh8152^7v0rvO{gFv)U6!(c7HsupgJ&I?af z9|3wpu%$VpEOCYqTcgYK1yB(W@!l!ERhap4m<-bNIWPnZ{2Uw=lQi1_t-`fp3T3Dz zKt#b`82=J+E-1qGM+AV?|64@#kZ7Y!xBlM(nDe0L;Ap!D%r^>I&XJ}sgQ@?}`pV#o z@25&hhSyCBKR1Qv1jsSI^a+*_X8?nXhnx4LS$?Jd2H^82J_H+ahEecJk$6;T&*&5R z8^{!KM)*Ej0XFvEVx0f4Vk|Y-UagudsngT-g_J2+U$wP)&ov1exNk5kv~&A%X>GDW zyQj5vu-Ca?{7hJ=n-TPCWK(Gwwl>@ww|~xa*L!JJ`^a@ZyuVNG3uIm)Hkvv~IasAL zeXiLzkL5(kkIvsKoCQxA@LxWq5B8rsEk)#(!J7}^(u)`=JJ*NQbK-|qSvcZs2cmne zRVb;V8Qg7%h+K0E3c`U%5o!}vdc4%`w&D{~dtI(9d47IuM^AqfZT=Dml6yo0?t9pr z{g|3j3|&KUdmy+(XgVxYGdA+S<^a#8rM54xv=`oqDR#q>6q7j%{97Fsxi*S1=A%yV)>#URTyt z;9bBS2MC*@zF5iN)=Ww?85N`7EZos!Ar&6;bG{Aj(b6x;^Q6{}FzK8-WmQGsBYIs+ zoFjVEx*znk1i(i}wuDKTNq!x>(&?lFRE{o(`kwL0#dF4KB8W6GLaI;zRet{tqi_s7;xG=r(N zclMonc@D{AwFFC^92`CeU~6l6qj!&8>>BAnTP4%JAtVz!oU^aWpSUbDHWJYU>hD-C zArfn2aToGGL#_0A4#(zvH!fNZMah&TnW2i;&ZyN8u24NFonH5W5|k&=T(Lf;(h*l1%xgt6lxSxZ&z zm8tJ4s?+*ug4Tx=DF<+^Fc%>N(zT1HLx!FUgfYBSG@(A<2&8MruV3Na*`{wR$+%| zH1YFg!kW97_nUc0wNqgNKf#9ykB^RkMQ>my(4*wIi2>PF>LEU_m@A#vco&J0lXGi5^xX zcgsAHlRPz)hO-tsBWNJZw$)VYDSy=zbcoG;Lnr@>?*aH9%fHgsMcK!q&wW=SYsihHU>8FC|jj3~o4w(>vPU9q}8UV_GTJV&VnLB`TVu8f} zpiBbtPs&_rGv>DX!x@Ggiek~RWD4lq{1*AYBh2P`SVd!uO}H5(2(vOUD4X8wChIgl zmdVR#d=HenRGU16P$ri6uq+^*uO#WMouiZv!RHPMEgaxW&ku#7zi_Sw?-y+-=?L0m z*pn%#_oWv^8ez=hNN#Q#6y3B1V{I)de!rPQ{JeDr*1(q;b5n<(lm@v* zz06HU)13nXCc-5YkWr?gJ!N@IKf{}taz(NxT1=u`jHVpSWAjR?P$ix3P<1x*e==*J zhGk<+<=0yEv+ObD2Su{uiGTkgxkeF{o%UW25rhlH`NBs7#VIU!QU4Qu4`MgI77bst zFoAQ*F4_KaTtJ#;+cD9}<2fYvXC-K3u+n98(BORpyxEARBv+i{#C;lqIB2b@k`qjn z5Xn-t;DvI!9r${xlqv0Om+rQ<5om#x^)sB{z?rDJHY$0RJ4&$9*p@+@Bhj92$hPAs z9tuJn2z2SsU8eyexZlry;3zR)Jo=@`@$6X`824`Ozk}G-KmQdoetau`>JR}M5=Gu) zehjeCAg6xV1Tl#lqotYcP{mRDqcj8tpp;A%pj2LwA2iO9C!T&=650YyL3&%;_z{x~ zPm(J&pL3HrGzhc^K#ALZo-US{SG4~S6ho5hY4L(6*|BZBtt)77<`;C&g^drI7wMj( zs-_baZI$4Fe~`-gfdWKNsuXy#j%pW(2~w(~sCH_+qv(2SoTF$)YJ%esJd`w776j3r zYe7V0JW34eFf%XK&^hBDrx-*W+DriSCH;dITy8`QnPOIRSP~I6iS|}iBqCJ@_9zbS zP!I%mG$74k3s-TWLksWHMYNvbP!Pzn?o6rw6mr)hC(8P;$ej0}ni!H{CGx(f>vDli zPaX{*a}Z^~hRy(yWyz~*uqq9N53I(PZoY#9%=%$=3jb}2cn^p=&e0Pg#}NbYNbwm+ zx;V$natEnQ*wECdNg1v;?_45G`TM`al9Y>R#iRWdmM8t7{AV&9jgLRGWRfzvrCx<| zh2Seourhc?YGovitzZ)zO)jt`S9Y1FbwLoSM7;(|vFZQUXI}RKOPmG~G+BN_{~!~E zEh}Z{(9D0u1xlNaH9jH7i^1bUD|aYKU$~;;*jnJeJLR6{qwqFuMi7Ek_6*H~$DS6M z4cb(uH4}BMKjH*=FQjE}(=gNZ7?vsoS1Q~(qD(K9qqAy`%s7ZopX;uX^2Fp(*K{M% zbcAbUT?Q+!c419HI^~1Bk}Ok zKth5L#znO67ben5f{>3pLSDX#>;l9qGSx3=tyZ>?o!c13Lv%i?mkQ&8;S`ENq3XMj z@bW7qX8-5$c|F&Bj%y46XOl_ zGvPS`Jo_&xr2fALq5gJE@GZac7Lqb!_&Le_B$($@4eW2nu!L&53^{Te1sL#e@5^YS zpwpE{JtLBZyK!mfk&Oxgqu0i)W?k)K&Vuh4LON|&;Y>ZAn z_pD5_z(L<&trmli`Wg5V^W--2gdaQx&FOILR}>`)51zJV?eXA!mP9N;q!bW%Hu#MZ z%rgY9H%;!k^KsfKH)dlGwfJIomW_xoz`$r&>&md!@Ow;8&PsWL0sP>l{%XL3Wd?P9 zOx9T9TD`v?l(*|f1o(U7zPZuwQVlA#3@JVBk24u+RE1Q+X<*kh&^cCZh2qade}D2y zbxgrNShccPdz83M$_4|wcAnWh;-~`(ZI=OsPF>6KS9Q(6moHuOUjSTE9Hk!oSnzx; z3zw#$sPe2?=3LX?SHr)L-r}{Iiuo;UGM0LrxA$D!1_H~we9Jxtz?A-hDg7HpPrme7 zc@qE6|LJ5MTOolJQoC%ouk8f^pt0p$2)`OL-i0D`4%APshwrg{TeTv1RT<5`|38C$ zkuT-Gm>aMPS+EUWm{L*1{1=_I@U2z+nAM-&9#z>`@-Cs-$4ZxSqpUtmeOA{s3!4xa zyKLXAi1yevSmPq(U8M5waZA(l#<>4Tf%jdQQUXW#4^Vc$<$kP;IvCgVyK~0Y-cTmQ zn;}4?UTHf#9RO`!aKNg?f(SkPIN>~tQ=V1GOrC4nF(cD0!$Uf?4?qmAw4IUn*7Y(P z(u@`)>)3~TI{sn?@=_B570xlE^Mb9_ADnAi4@Z(~`U$S6Y{6R-QlJ}OmK>IP!-C(y z^;?hhmdTHj9gZI+3^ykW`c5iwW2y$};PST#i@{A=rSepV)5fx!-uGtJF0RZj^D3?S z{m@IewN*tD$}x{$+etW`wM}610%!)cSKl897k>UA;9Z8nlP6xBWfXs^^BX|p3n=!6 zn3rTPP-{2}GPQG`EF7lP5^A2XgX7@Lu85_Rai>P8HWIOb*wNV8n}NhGOlP%{y~2m- zVs66kn_i3_&JebGTYuUUkk>zY6-6Xt@PhKD%J?|&CW0yU>6WEt{PlL^>~zP#^jYm~ z_oj{}7JoirEanu{(1)d(FcADjMGEGz$GKYNl#Jv`hKihIT7>p2T^(gaeoCGaqB+Px zU4-6W+c;Nyf2#XAEqe~rGu#S+ZU;dNYkq*=mw&Uscpl<7FMUj?CR^c$Hc*)T5?R{R z3Gxie5Yj7FIGtn2_2V$f2ersh*^w{1cKA5R&^W)fq*h zfQhEk!o3q(nA_hOQ8u98)6~u_ACxHZfZCyqi$|OdnIlwP!~n{ zL!y<5r+ElLS6a$Bsx+`mFj2Y?vp{E*k;dDocMqzI_`IyN{H&x!EIJi=DrtCOZfaf2 zEN5jZ);LmleS42oC3%?SPv`2+;AOKU)c7ZIz~MMQ>p_+qdpI!+pMPv+*x#9?D$9{k z`bklTic(KWUVP5|5M!schAIsF=+Jpx^{9xcDERw_cbnKz5&V=8cYL5OFF52MD~`w> zNI7@Q`7C3dSr7qp{HG+z1a!2xqOx+mENNa@6;yPdW4;rPe;6)Z4RRP25(|z$;3f>< za6b#>S%S=^gx45+_tu#-3l+o;axFGafC3qvM~man`3G^&SgFS$Q2{Kv`!MWO&(GEzoRh%hz2GWQ*Q-XW2L5LJ;-w>;z7;l+$?+S)>yN0T~ zQmZ6OF=-{pS-EYN>!?Ukn^XelZS#&Hd5+ZJie=@c43I90BLdPz7EdTP#G@jE2`RJ@ zpQ-JY`{um7EGSya&B%l=ix?A98cC=Ymop=mP}q%7cu9$qRw~Jf|Kh~K>e=MSO-1P( zXG2*i0Sh#jGdGAh7?#Z%JzQt2C~scqh*l5IuuLk%%`C!AO?6^l@6dpQ2NmVJviv^P6A6dLcyBo1EYalN(@(n0Z&8%*D98f)7$dBM{?dp- z^iLKT$%z1Gjzs_Cj57*kK4zUuegjqt{Dc(Vlm%;x^MEHA6{Q_Dr9k!9SDf}k$M6o( z1i37j@E~;(|4D19aut(R(d14ZSGZfjl6YR1wahQ9-&eftbG~W0hu|IcNEK*!16}o) zpDEri$F~SE?K;tTh*2oF25gs+sRhp{Jns+8%gEwm!7zgEIZPlTbKz+@h!>=Okv`;ai8%STh;P#ThW%NbdN5=IQ4Hs*5Ll|Nd_SN zWk^X1D1eXDN@fu2SH9@<*;P?zZNNBjcT3SCIKwzsm;zjqxEp7>la|h|=Rm_9v$~U9 zNCQ~3(^VZcqY+c+wm$#?Kz7kzSBK#Tb( zZ;2{xfR@jS{wR_^D^8Ni?!$$}4B&hU=9H$Kt;^fZ5I3Io5Fmo z@Nf0WJ@eB8XO02pFV!D7-D9d+4a;)RANQSF3y zbn|iYO(|mXUsk@YMP;T}SI*EiL<4Y02HiPw>U#;yrqOXVi$)|!4CCFb5*p|dNaRp7 zP4|TB#(L@`&yvtu8pmd1H~rp?X)pTwN#M^!ZL|(ob9opP4E)7f<~2IB4*B2)u|IX| z{lx%f5D*Nl)ETNt66!l_e=)$>9C-;JnKX@W#2cA4a}t=K(W`}sfMF#`sXa*|0Vsnv zs=zTNHa?|`wafvKOpzc56J{(lU4|hr%5USLG)?vP^XVdsB>BKFwAzs98W`!6dBy{; z=vZzB>&P@lz*@7JQ_+W$?8h3@XoH!=I|^MCZMD-;kn=mm6n zI)VPLE>A9IuC7-07Ju!tYF6KJUgtvV*(o(_+cSr5agsftJ|nB!mZPu*JR|_9;X9Ds z17`wUzQPXaM#OlEdD_(_`rY%7-X52sQ3b{<_^)~J$;SLJi~(~%qSUlB9QSi8rM7QI zY)mO(5lqyE{5*cx-#b384*1y(>8;a&J&`Dmj=bBN)r%9usayNP+v8xs0&L2;>wlMX zqRKzGRF4!NMrdj)ieDL_fD5r)ZjL?IEt6d7Msd?OvpL&kOVO;@Xbb;3pnu?Y(n&0) zvq2c(K&HgOIwlHUQ#R}3{4nSyZhMsf`V+nWVCv#(a5u{Nm$F7J#!1l$Tv7@-Rv_k3 zx+vpq^3Rm7{&Y*LL(2nk_MMWxWaLZ6MZiGrh6-3Md;-@SN2nk zu0+x{uzcKzNnfZ1?sDWzm*Cgqt&{e%$qyWoC4h~)I>A6Q25NbG!GzZ&oGsm@|lYlpNd= z#~k`?a~%dbw2CV-?)@7Pdq?1_s|C-us$g`b3N!C|=o1lfP90nx)<^^Np2}&7`fwgP z>$R5jw`eJ)Zy;S`AG&Zt$nlbL_4Q9_L@tJED>MVyJl0_ z>-?9>QC}pt$xXRma(2ZA<696MSLWL&;FDi>ND0koPYHlnSBr0q>!;EADM1S@hsR;{ zt&yg)?&UMtyJ+~Bpo}jkM+NkeN`aBGdorfQ zPk_`CV?@){BeXEIRGeT~2nAf~H%zP0HP>37@|?aC4%n98ORwe14)8y>SDtDgsQ>|5 zP_+Pl{&XPytEbyHGh>ziy5OT{`>h9=;DBbmdIk;?R1Qp|n1vHqu<$#Rgjx_C@yMB* z0h^(wUw*M_abR^mP!OLHmv8&xOf&3C<^S1l&jO*opLe-vO87H$%VdNKiWe#xBjXY# z>1v}$zXJRPK{zaWh{U*@r9tWh3Gk@oaqOr(Jp5Hnyg6KC<8w;;Ac5>H`2r`BGJPxb znztG%g8As%Rw}L-=>gV>Mqu1!k82?bWculex!9J?0{TKZVlx^t%}7YoBm%A%5Gr0B#zy>=VEg>*4_@0?rmH%s&Ih|V&nwy~GT;Cx zY*!IUP-5=SnP=nAhj)DK)^BtT6rwaVZ9n^P9O(u?nTxy+c?n;-CqqoAqo0u^0#J9- zk&iZ87_}G7soK<2+OsPuV7o`)K4_W90C~nP&G^5z@ zXT#3ZBZ1l)TyQAYC$$C43y@Z_MeBsOQus3yy@R6;VT2)vcfG?YrM zq&tm>iOMJgUaji?K{MOB_Z9qVs@y>%V6n7b&p(*^EKtXOqy$bSm!+Vp)zrEh74H7M zEACm}pT`}T?_R|GQ0)e!boX)n63Wf98@{%tT$hutZSbNbLc}+piVG!}+_P%tK(cn`FljCV2!OESJ2D5_^ zbv}346mc+aJKo66WB^`p7HGvR8u}9q=}RkfCszT5m735+adg=HST?0)9i3&iz0@p% z_b|E56_UkB*&5LL_Y?fM&s+G(bS;|2`#M zEzRuA82>sl|JC74Th3vF1FPqk22#i2;>(6xM2Fbr>eX@yJW8ubY?G*tEtL|{8Cehf zl~bRe(N^6c%w@}9U9}+W<@|ewJ$?(qsR0)CS_GAn^YO6UIyvMh$upmKuYvN-(nTl% z@N1Zp?E91Uk+KIo(M}1%)96*RSK!C+GR`i@3j*1q#8or(zRgOlUK>m;6s8B1WZO(_ zU&|2;vMzOU8+|BouPEr@WIM7M0oq-BvcYIGK!O#H^ zFlS=Qb#?ByMrmdVDbjc}QMv-z*~dYFYz84DY0agxRd=j=wU@`o$xJJ&iVQaJ8~xgq zE4BGf%Dvf^Vlmohv`3%Hc`2zlkYP6P1lP%E=Pk*^cb<**MOGA+x&iOq-YDqJXMzhvC`<*1=FBoO z4Nb~(wS|k4Sznz93Sv)c^8wv~)09OYp7>)(idagz|Cx%J|{) zLjC*V`I|$IcQepfV&9JM%Vn!UudW}G)X+t3?)&Zj+JyuE=Y1%pSQ|Vuf!aTlX?zpi|SR1oP8FlkT zL%8Huzhkdrl|4<6XQJRS4#Q^A1&Lg; z9Z4ZfOnfYuqKhkHKFJ$s6#J*GQKpi-1PEVW9;j12F{C@y)M@5wVoVOk1cQilF*~YFVX?2JQ_Fax!EhzaBxnzKLmtGx z88WSDwi241giP(?%S%Pl`n-bUHsa>VOcSr&^iIKtJ&ktc0{Hj6SX78sOA0jkD^BV> zQ(}TY_QN`2<24(Ew+2mC@S?2E2Vh*#mAXS@$Ds;_zE%*MduE=0TNP06y*KTY*|1H1 zmv4z*+2Mchg2UnO1n z)6{b%;@bDVb8F6RM#psn*GTy5a8lleu7jU$#>m;^TH%}}-(e(Ufj@1p^?Fj2W;h-z z76OR)Fr{W&Cj(rOEIMuTV46+CP$5yC?shKycN&AThmO;Cw3HMCO!kLg5xfWz9H8X*g#QAa~3PjcTRV`4oR`DJ)|uPo4eMR8ZYTwLTEw zP_`AZ%!%Q;9~juuyj{jYXE>N=7k!8?;qwU6PN-3hoKU~hV%tAIXMG7i`YYc4)y<`# z6tvn_JH_THs|Ix*A}UgDY%7dQH@Su37QUo{<9vd=vRTb)NqbQ{`IlPc={VA!C7W;y zlemX5O|u)D2~DRf3DSmJHYgJrY71zw+qn`CPue7?mfJ_4sekzliyGt2F-VHfPlqy> zJz+@@%pWlFw7uJ+u4_?YM+#p3d3SS;6XKN(dRO@C45bZO8`lqZoR#=v66};FP&)eZ zSYQ=gP4p8%GG?8yy0*X4yB5+^lhlD4(x^d!gx_xjL|)5BxKk~*w^i*M{CFMY*E%ZqTtGP3 zt5%lx+CF=`QI>a($`w`eeG)=P9Z_I z;r_K_Ta_I|LL1f`Lc9p~{Jl$3#iYasSzo?;Xi}0r?%6Dj2N<4E8k%zsN?vmR#F#Hm zBs^y*&`w>N53!teNdhX?Q_DHZ0>Nr%M~KufTSSDUsKDrHq5Sg5^hB~@b(Y!2j(Zt9 zbWaeQRU_3TM$0w*sGP{DNb1$6^+Buf%y;kox`JI5JEN{`BpJ07e^ScD{*y zJyQ?J&ygT@yA_C=EGx_`sPZ+RP(ap%9f>RBW?I6EQ9EQLw|fdyK(Sf2@jrjL*!dz> zwh2+h&Xtu^B>SB@J~(llTdexpClj?eHPMPQodXxWTo-=nw{ADJybTu>BEfEFDs`wH zr$?ewOCw5|4C2;gFv)RixHh(!&FuJ?f9@sjq*TEZC%reaEy5yz-mZ7b=nBN|u<;vX zq-p9zG2se*Osi*$=s(6@m7GEPP?uAaE$>tpcwc!3`R9N(cgo7`0R$TZgk$|f_#erC zwTJ&}RI}si?E{(6#J=?m-0hDu=Yd(Gg-HTY+bl`z;k)~h+mddGMpt}z$?>q8jDD+e zy{eap`4>2gHo;J%@4`y>Sbpm9pkCt;kN?kZVx0MCE;@Yy5lrjy#T?0 zKz2uPlsP}8g2uq$%F&4yZ@{??A`2)&71*MnLpXx zwC0xmJ{MN^PN`tLxNdWJA{!W6Q-PqmUbHxA^F0s+R^55-7&Fu6wak^tG;LM3Kv@K< zEXvo(XjI=F?hkMIH}KzYH-QP;2;pch9M^$5r8^>Y$1+pP2OqyuPbn^cDMPQJp!}F^ z^A)uE-1~@~c}3os2S=f)Ev3@rS*N^RU6)LcvgM8D3>$bz+1I>Dsy(!uDxcP%#Uu5a z8J_=&ziX-yzRN7FGRzum3#n3>SNO)l0dsIS@0O*wWuorXRU1YbR=yhn3sc;IZWD}D zyKyM)M4`A3PN7M_rlB}@IkK!?r_}GHvXswEs@7*IA(cLL;e0O~nJ*e96EQ{1O5i|k z%tAYZ5mpw!EyKyheZHI|2hK?@brqt((W&6K^W!1i&x;)onvvQ!J&cgNf!InzjYLMbAD5ptUofPrW=+)-w>JskR)0 zQWP~AdOz%o(lEdOhV@4+UxNa#4W6GI3!HVSGUDec@9x3;ghXH7t?%BQT?i*Qs(dh0Q;T_0+Jq^8)!(cBl zMhN?Cbe{EY)SmuuB(|?0aDArda@tLK!zoB)Gc@n_KYc$w5t<0Yjl;MS%hlPV>t8T# zz4Kt@Sx!Z*Ud%yQ%X90|RU-h|Zm`ogii6GLtEo(df;I2;Xs4eFvnCi{cBXmmn)Nte zp?V-F47!i2ogj{t*e*^5GrYg-V0Yd&t6983)gZ{$ghcCQb0_wFpL$(IH*nYR-ogLQ zb5arW^|J?7P8<#wcMky)SW#d1m%HArYxCWn0FNFWYhw0?z2|{#du?5wiG^VeHpXHf zAM0fe#MAZY6Y}v&-}O|T5Ih~zU>DA6ADoMgVLmp5wV?>>6nF3%%6Zdm}4b25Uz%iz{^-M^rU5{!TAWYP)G9Dta`? zflijbB6?w35Du&Lk|d5I`dX(DsYE%{3<{%f3n}v1@h?D+p?uz-^=PWDSx$;`0X)iL zf)bEOuxMB#B-Xd=d}s!sx0_o<(27Cv20t#h*4}%v?zdcKxV=v73q}hJ250Y3yr7xj zK+W8R9-4Y4?VD>HxhkbE(K%d!PFvdt_JC|aEa4^!8W)YVJ8avfc3|nE0@%hv*iv<1 zFuC#2{Q|A`I-Jg+n9vXv2sb}#Nv8p`AP@z(#~5ilZhR}y4e&S3Bw$yIS^ZhM(D;j= zqB+FI0b|oiE0tYocRb0AYHaNCw9Xlk{Z}p?ajnF;>Zzu+3j5Xw6Ju290RgAqGA$YL zjK?kzp`^~XhrUM^G9!i8azgxcEzkD^Hb$u4qD)C%B3Z69UaurYpGHqg`#&HVSC+5K=*<;h|j%) zeu7~qMBo#ykA8xE#xf|P!^ovg&8V=u<*MelDaHv!)##YOA8U-SMHTr$!){Td0+qzG z^m}u=?lSDC?-3F-8Qoge7>TS{e3;?YdSbENG$o2rDO)DR>z({5t%n{@@rmSEyd?tJ z!cNv@mV8}$iR&-`sVaK-P{LDpxT%#jZYFRz3Kk4X2%mooDQMCVgfb}roEeV9vuigL zNE_?{#`2c+n;_^q#0obWpcQI_r`cD5?C46k8YK-b+=U=X4CX}du9G+zmQ=JjVW#-! zLw=T6w8G}NDeSZhN$uPkx35G$Xu=FtD|Fye9@pZthCHwKVR~Qt5>IL}@H-eRh;tO2 zAq58zhLRT&FLqX*KE_0&24D7cej5)85a`bxs>F<7YV}J{ zBHi{ON2I0>JjCg^P3aGw;a?0+aMh?jg|C^BcekVrYEDk2$^WiBV9js+v9@WlZM$v# zaht(_xK3`5+8X%kw=sUT&ku>(nt5@|fB59=;P{igyAtQn45H`@s-GBv}9lQ-Bu&v$LgI{=NZ^0mqZm3i=j zmR2r5S8Z8B4pCm&J6rs&kJ^MS7SJyu`ie3uXcv#pC#YjjN;3m`guT~m*4?ggRf)*T z6E3o9E_pgM&Mqm2Dg6O`idnu`R_EVX&l&tol=CpZw^c#*sQ^p-a+@?#j zCQPoLHP@&ID6Z?-K|BMqvcN;1CV+%W4e>>n-0pt=v^i{B>`FA%E zEatolp|T&-THnH&`;3V=;tdJ~B%?N!671Ns^QM~z|5>F)mj+MLiO z7ljj+{+G+kzM!yOy1DZmTQXO-W>Jq|gz{m@nJ?rdx_5qBrSLB?HKOl>Rqd$>S4>3S zNO0*KF4TEgF)tzW4D$>2q$lmYr*$v!#y`2#A3t^C_O!##rf^Psdslf*`#Ik;>xFN( zFG)-5m6>Xr`Dx0W-OJAHslN86=}`5WquVB3GODgD^?mzD^+(lRxr5Q~Kd+zi#3Q)) z^s8&_a&=EGZhb9RUGsR^@_BX7Za$w^zp(i9wdrwnskc|J-~030ZR>lL+q0jq>$ki2 z`Q*LY-}ZmsoIV`?RmQSv&G(A?FZ0jU{J#7BZ+g8&{liD=_s9PF+i(AWQK{hp-YIq& zu{T)SR9lp*qQnoI1vgIo@VKb-aF^K2*wtbH z8~}|d%?0`$oA$g0X(1z^<)?vG$)H&N5;)Ze)(-JGvLRSQp?9^Ib+ zXwNBuYDb%fK{o+?A_8H;yi%wMDAN+?`q4*?5&8`)p!(6rkkO4m?|&nV(5lDU8%H+) zy`zgTfT;o50Bqe}bhFU=jtH}UqnL%-lSDTKy{m;VMW_iHDkvQo6 YwRITa%?ivxpj;)$kO<5k^SePj07;MfB>(^b literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/config/ServingRange.java b/src/java/com/twitter/search/earlybird/config/ServingRange.java deleted file mode 100644 index 076f3bd80..000000000 --- a/src/java/com/twitter/search/earlybird/config/ServingRange.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.twitter.search.earlybird.config; - -/** - * An interface for abstracting a tier's serving range. - */ -public interface ServingRange { - /** - * Returns the serving range's lowest tweet ID. - */ - long getServingRangeSinceId(); - - /** - * Returns the serving range's highest tweet ID. - */ - long getServingRangeMaxId(); - - /** - * Returns the serving range's earliest time, in seconds since epoch. - */ - long getServingRangeSinceTimeSecondsFromEpoch(); - - /** - * Returns the serving range's latest time, in seconds since epoch. - */ - long getServingRangeUntilTimeSecondsFromEpoch(); -} diff --git a/src/java/com/twitter/search/earlybird/config/TierConfig.docx b/src/java/com/twitter/search/earlybird/config/TierConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..93fc691b7437ef829995e3b747da743f90e576b8 GIT binary patch literal 38801 zcmagEV|ZQN*DoB~Zk)8SZKJVmr?H*vxUp@UjcwaD+oZ95cJKSo=Q-znzpPxDbB!Oy zSZht}sUQswfdK*n0t2#>#-UNAR1}v43IZ|)1p%CIj~LFu@(BI;#)@MIV=$ z_TWRfUdPwv-9)Y}B6_B)o2gzv3SQz}u$fPPZpLva7DpnvEU{0pFbGxKlIi_vnjMsJ zzqX%SA1(MoI9DqmN#hA5nxZO34UK3h7)FV23^KH)V3s4VIn=-tNESx%tp$|7%-wYJbKgAdN^tb)jE=YN7{tAE(?TK{f$Bz@ivfAdy&Bt8R}Jm@8!*YR9sVTlDtkei z*69&Rj9ohj8_eCX!wpzOqD zn%Kfis#*`M-NGLQnw%vJ`~**8?NOD}ffbN_M+HQ9kSz-ivVTQb|S|MiIO%jZdT&nYvPtw2Rz`)R`8j6YH?v>Ibp zd|*arwb?KJJ3*n};gv0bkNGSxL8!n4nb;XCINI4eF&Nu9n*Mpnv*O3)`WaEg9=ydC zWYxlMP+-I)sX^9Lb*Q= z)UmNHe4ir8YEdfA`zfr9D!ck!O)#Fa?K2|rAqLeie}BTTgwOHysAbK?gdmxyrFo!X z$peNmQ+g2dD;2PTj=R>>* zQr1E-<%G4F(*IXOCPPrHKaRvpY|_F~i~iO$&PkDC2*}*bLmGDDGY^5yN_@DzvS7+cl*A|z z%7l3E@m&~*;CfEH53i4Ry3nibi^t&PuYUKk^lii2on+5`AJ zg<^7jXSfUFspolV7<*Y3GJ|fA`=*LH{**tW;IIkTSQ9>cv_5%E>I6{^S%#@Lh^p(L zKRs5p2t^0$oTjc&J?2GPZ!~d52yO2qPc!Yjh9tPv;8ol%XYW1pYAPu9+x5rez-5v` zC8V{#o=12bfIGl8F5D3W%-o6FS7e=2u7hBQH=NcJ zE7z5&hh9gW#dd254d-&Pfxn4RMvl&XPO>z#>%B$I(eU4Jh;6yAFXM?tlDW*7ClkW0)Mp)^^4EcEWg-~ z@!AThJ^D%#zUm>0FUbTiMnrft##HC($HyYeTDo%DQJ6VwxTvmVyTO1~&_g>4$V4kX z9EGp0T6;tf-*Deh=&x*;j(471_~1|6pf~|7^{|8~XRy|9qmko;{w>zqDM|d3>f2v< zLNc*cy{zTqQU=x~1&ZXqc6MYiyfP48!e%_(;C(FK{U-YF2P1dfoFEGh1jJbF?-$n1 z&e4Pc_}04E00*Z(PsW*!w$nO07GPW7e^G>v0*-85lf!}3O;^*E@6N`$wSE&DQB)Ys zDBb{6p>A#U?aT|w9o5A_EgDk1Dq&RPizpb;)EhqG$v!f&zr45%HGSXFQuO=^DXnwx zaKDh#X|>b!(I%E+`gg)Rv5|Cb^x`G}=j;0Ll|RJ>r$HV$qev;zP~3VYLSr=2iOV69 zreG4fy*eD(^O}R00`?ofo2CzKq58JXZ`KLLFTvx90f$8MCGZ25^^gmbNN#vh zZuV3C-qB*Bq(&s(tJuuBxN?Ue=dlkCw@^osrAK_{PJF$s_cs>elTx((fzHt!Tu2?q zARzdWU;^zL-sfu&-=5<(Nz_5pHXJkKH+m|hkH8I3%SmF2onPiwcg79bN6k5OR(^A? zdA#rz6G?M_kNFi;(en_W0VW{y{`AQWm&P8VWaL5vvhR2Lr}+HKsP0Hsu|1^huj|TG zd*8V6e7CI4cYXM=aRN#vlCDcz*zR~4n?-Q_!646jSBWv=@4W>fFeoVFl0<6d_;zJ4 zS(tsR$pGGtqmKrnZ)Qalf-9#XM5j+~M=|`7rC##TkswfCV_KJFxWg5HArU;D%6sZ~ zf-wHR>4oml&fqd(o=;e+@a^S;6(D~p7t4cg}L`A z6Ay!f$fEYZ`Wo{0JN25ST2tphXgF^~_bLhI!Glm$q*0o=PmW?bIn-i3t5Ge(7+h`q z%A)YXy3PPmVjd#sN$-aV}ImD zKpvPJD$+2P8zT^=@h<$9s)~JS?zKWrkLb^`@!-#teu+}$8=7Nnu-H^XiOKaNWpv=> zfvpbwgJZg{vUD)zE4Fw<*@tzN4|8@l3O~4-x!+pKSAp#27|`hCE3N#hl3bw@2dw*G zr+z?0+8jruXO<*u()Wz}S%>DEQ?|L&9}!tM_47I0coYcr=VrLG8TLi?YeA($zP24t z&Xmmt{w>y9F}NpB2>cfJU1f}_Qk~TFm$*I)r^r>|xMjJZX z2pU!2ZR;tW@YHx+BC*z?nADr?SHPF>%P}FAWtBp!ncdqkuRTHQ17U4lyw(+E)X&7* z!wh*`I3MRMi&!Rad#S(^P&bX{u5gE1NvYY{0{A7igB}AsbK!ibz~&-Erp@IBnXk>$ zLj_WjGGSBUEMbHILeN#~M8*fd>r|Nu#_gvzR&*TeJ+jCVS-iVg?|YeRl=&xMQ|lo{ zq>Z8%<7r81Mr4IuN1#gv)o-B<>^>h|^PA&XrCz`#ubHKHW$zt@&rRLBb-l;Jyt#qD zfgU1nqDiGwOCQaznbMzxt?18`lI2Ufgh5&JJXnLRbpPtpasj1G=MBIyM1+@qb7$W9 zjD?jWwKE?PD#_RDxp52UG_NnlBohsKwG$RgP~1>n3?NzejMBN|XHutVZ>pk@#wZN6 zAu*}Mv?mAY{x!Ph^PQR-65*%pF79w~HhAMvO+K0?BBK+kduCa%oUXWskWw_UcAMF? zqXBYi9jES(#YWE6b_C7+NG4nKg|p=mcvl zbJ6=z9q+Jh8?53c>)u31X&A4I6mR>f6&F>Jv$<%#WO>ZFn^%~6b0qx7t|NsK#97&^ zDtw)WHYs^ynMbpZAu0Xhd8|qbhY0HFIivS=p3x0l+O+(BI> zDf<$4TB5KT4c&ZX7&1|3nh98^SP?|8Z0^?;t(FP6BN-$1_{+@9%-)Qvt>^57Dvji{mile`yp>JLsN!t+NLN6)Zn){D=g}u& z!uT{|#Kl_gO_sX`(-{6Ps+}BZP@xfSL1xHVMlTiUD{>g0Hty~^1jNihwPG~#>3czF z@Mpo|_IH+YeX14e*j5pP+|;GiVg(qm&tPyIY=&hpao3_F&X2l!E^E*x6EZ@eX`>>Y z&C=gx>N-wit(b?@x>lg=Rakrj2*T-A(+_-n*ybW!NTi!$ctPOmpi$VXB8!U=5B%mE zK1rRRBmP!JB5`{hN@^Wx<$P9uNGZ5!XTSP%C!@`M&Rx{yvjD04i%Arc)Sr0kcPtaT zn^ALNpI$4<97H9x2}F~Yl%FrW>lBCUIjzm=#IO6gOg{@ku?mL>29Q)1VkE#64`__# zS`sUMZMBDHZUlq3vqz{Mt9@!UL=0m{{RDe9sR!Y&o~>`QnyLtEdCmDKwKLM9ete0v zU|d7YkOoqzMO909liu*I`@;>W+$4xH&#oal0Gpn z;5~#(zTcu&Kt3f9o>D2jBa|g3T`Lr29x4rg^Zj8VhIH+e)ltxB9ems|Wz!c`>a{W1o)(mPK@+c zjRWnW_fLC;HXMUL>YkI2Ki$=Fvfc!26-bW6XZFX3RpDG);YK^P2z`Z2i&qb%@24l>I?n?sR=x3Dj3wo@Ml&Ewu4>)usiF% z{-7TwV16LHCZBY4=elBVbF5E~OCSr~;bwPi;fF8lxzmwuQKLTJWTlB3lC=7G+ma;1 zYfI)_S+VkCf6D7KCG^gExtom#x6$U9hkE&g8Qa9exR zgjQtFfB%8qCx^mje)3*xzGZG9LV?J2H6phy$IpwscUP4vKs)`tvySA6T zbA?w}cJ}N?(znWEsYKaVxF4-#19fm;8uM%gTQRGn3V(_#$A7Qm&;rvGosCa549UrM z_G~A;nyhZQ?yR)h5!g(3>fMp6R}1Jvh4`_uXrTLz-Arrix<qTO>t_M60(2d@m9zCZu8N$70duwBhpJQ zxt#7l4oNxO9bZ3fu6P?iy>9T>u;wTcAgb)`>6HJ@6&hLhacfbp<@K_-KJMujF7RQm zVb_oP(7u0jbm#u*tYYMw{zFK~azCJvpRnH?u$n#WrD^NBZ1`QyFgIoLq*mZuAnP5A zU&it4mBQ|DNZ_MB!}<$Ql-suN)*15n@Y(aG59iFAfbb;WnfexRC&R{zTillr!2iXU z+;{K;{=R+w>ipDgeBZME2}cSM+I=<1xHIQ0I^*Rs>F(M+oq%KfHUi*C=lRCv`S~WH zVxP*zqswD$LqJqG#y6PZy=$YZy}5EcX^_d+rhUVwOGo>n>+MeD*-R;gu-{>OlL2`f zkSa#xEs=dj@-a~J)NRyTGrmZkT>t8<6#_s_C&P7ahwZ%F!fj6x0C+^Gw0rZMp_9~v z#opE;Ll%Xcqj67%)FX$~R13V->icL4_;3a@bhO8q24nlay&w0R`NF*2ZoWCE>%7(i zRy($N`KsJ5&O=f-&a*k>Pd|M0E&zPhIkw9m=mTBJku7W8XL85uF?M^82OmGQy2Z2c zy4tkG*`KJMd)Pf6n8+yJAJ>muIga7E%B}`K+C%Zl?~Noq^cV_oy7AQD()VEMQun10 z4J(j$OOctBi278Cj4JsDM14Z3yhG;!F0Ng-!)F$Q6mWVfPhkP`DuDc*&q+CyEux1M zaD)oLrd}EW#acVye@C=$1D2mYbRQ=qR-pN9<NS(5+sYemR?ewtsMV8_57>`E}m!l*vjH+=^eM9`(_G z+|J%%C6q9e9BJa}1y+ZFre?EUhW4NWHD&>X5aCdoa_oRBwxKBZ)2 z(Pz#C{tL4T)sYR+R~3>NDG5c1QZ%JRmWm+SLkt=cX}V=8n0UFi?n>Wne1=E0v5sMk zrOFPbi~>+a>#LmRw=&#Rt#I1+mraXKp6ZK%!qxCvCYEi<6%Cuc1e8K{a48t23^+1~ z-eXY*l9PmjAlgPvCE?gLXDSjH^DT@XeVChKKa3y`WkI;L4k}`Jo2|;M0tpzU&opQO z_VLYr#F+=WJTY-7h1ney!8>GjpqiYc+JY!@*H|b)2_29lbi&tIu>r9ikcGK_I==xs zvHsZ!vHQgiROlb~S2yC4(L*qJz>oAvZh`$1`;0Xn7)lJhkLs^bEg)Jj5cj`A|E7W{ zqqwjnasM9#7mA;OEpUISNbZ0%$@^at{|y!Ed0mYakOI8xKZUvC0re=M0KH-~9MBQN z)BO*Lbi^*(DkypMYR@*y9m`>d@i0qeKmcx zh?d%udZggQ{8K0rV@q3_+`G1YThX;wY@F~#H5QH>+E<6it>0-Q`RKKiUoQqXU+!F5 zb!`W|gkJlXCtUNst+?N4KMu|3)a<&~{95FfKR!Gf&EI{D+7{4lz7r*iw%wy&6-?5J zzF>>P{dloQ5TWy!Hb9}>C?m++9^4?lKL@z3WV#^^u6NP<4(CYNoI1uIxBeaox2xIn zuZ}?}v-Y9n?Ynt$q&;!?w0618vovqR(aw-^dK`x}J$_)!0k5;gB z6lNLUXcF~gX1-WR;DYSO!j!t=<;LBKBr20w%R=Z{0 z=gHRh-p#ln#d~U%e#fMZt&=nNweErF}C<=lORO%bv7>EeDs3N1K;st!uzG@H!gPTQrfdOv2+3PHh z)%SP8z=`!k7`d-30EN_9@)Vk~s4?_KP5OoA!MiW;^9i(|@~e<%{`wN_m#`s`(Zp|jdcu-% zro=V7i@*SG%*X z8t8bI`7=d{>R<@s~pe#ynB;_66z3d-_8AwA=IT@b&xk(4c4gn}Y}7;XUbN z>Fjy_*XxNrqhZH;i$K;r!|U`gq~|*b@@j@h3qOSZc6)Qm@EysMQrruh!A4L)>A8~= zl9=o``FPHK3X()5UR#ICdA3rkbfDc#_2SDbdUvl6qTLH-Ef&pP zJXDhuqBY5P)pRyh@*H36VgYrcYmg z#r8s8X%`evk17>)lj3{3Wf$h#X&N`?B$4NjjXwr+O%aApIL1}#2AOUrubUh#LM51Q zSaKp!1O(9M^E9_4^r(_GqiGH3BB^7y$|5auFmWry&~CgsIz>-xKKeN%^>I z>W%6@LrYLf(;`k6Y-3b9m7?w-4yEU6WqrhkM$3n|PX$&fXlL<~SuUj^*gQlW%2v+DXc1 z+^O3{2}~iJo}f?;6a_ z^iOX$t+TCPT*NP@tM(_segAlTe_q1Ju9Qa3WaR8#ac8YnHDoJ*lT-Op{*9Y+rM&i3 zZBYK|A=6s+OUtY6~R664#gh#aG=F&)=a6KPlbYldV%{%= zH?uacPb=grDZ0-jU3FT6^s;Q(jgXDS8ufVasHl!VRfr$Z&|o!MlXp4ZsjB?kvVU}f zqlp6-(?ep6Jc3dOeb8im;k?4q#6XsENE+E&O$$OMO9TI`u^e6a1l``1`}$4E>gT5~ zXt?5%(n_waBwkar;;STd)s@c%%Z(*HLYvAxTPs$wICraM1P?!>9=NhU%8_jNaLjtm zifr?_)6DSe`gjThx)oi_u$b+ZHz49KepIG^{XU}FK57t8dsCWzBNRz}VXVW4=_x`( zp;JZ&lHNLB<;yypV{50dn1DDt&ouG2j*`p7T8|S6h4hsr}FZ zJ5gG(Lzo~(M21p6&1@QkSe9tbz%VAGYP_v?ugA0E;R7`e9pVAE@dR+CbGQ4d>%8%) z0L%tS>Dx`yB4=yDGZud91Pej>*_?+`-KH8X4KukyQfmxOOP|VtDisV?Xv*B za`Ju<;GpvFa#{^Gx9s6dDG1?YCKiR*{luYir!$o;bI}gJDn!29@dnBu1P25;n zg;X0&Qmx94%?5MLu(3IhlYUZHY}Ltbf7d>L77-^x#-`&dL>y&0b(K^*%U0btK)g8V z>VwKB3}9U_PQ4H5u0lReioiTF$A#Cg$@9snK|i-_*CV{XB!9h`H^W2k{P|#cN8FW~ zMOI*SycR*AV=7s8{PupSez6E1Y_>fW?8%)-zu4ecGApHZFYa!$AG zF4oJg?%S9yFrBd8R8W#TN&RS^^A6G2mrxB{dV*Ma9CfsL9L7CiL_wDa>^#N2lJ}PS zvv}nJ7_)d*CH&x>KRA9{MQ;tAFVtcGhA?r1?UX&fdHOcyrC<+MgP%N;5$)9B$B{dE z1y%>s8D|RHnFcPWv;810V{c?$eUH^?NG*Zdi8;Mumd|nTzn)&uthggH%;E~xmUO`F zw?z)VoTk|U4M}l1W(eE)i*p#>9efR+fjD9YPZNmEv@-zT5hh?5fKK7mSo0H6RVe(Y z&6n?6;^g@pUYriaPCy+0W29UTbAD}FovpwCboayBpe^UjePE94TvQrqh3!l6OxHg694DSNda79r&}8}Pai$Q8Tn!ge@n2-|T_ zU4d=+u@A$Kklu*~#k$J&1lDlGcn)B@7LM!3fR99RPV~ENy^X2z^Gwl{|BgbW! z(%3(2rpi~@xw67wJoR$U4Vk_DK!?6&2#5?~AFa1aO!oR|Q{s|8x6z(kdVZXJV1HbmPe47_r z$f&n$auLf>WPt2Y=s`az;u1wpDaXExKZ~_43GnpjjG8OO-dYJ&sIl}#>&(FO@5t67 zcR{^7s!X?enl)dL24%pw4Dz%IBQLIqw z!na^q9$3m@zGz*M$X}ob=bq@+iziC3u2WITNae-Y%(Ml)UgA9K5*N%q1!%du@Fp+ewN9#U3*Rw z11!l3h*T}A-fBl}~!hEniWn?x%4YET=d;%{ykWz+9gsg0M`-;pQX zmaZ}ei?{-28ac%W`QW<91O2rutxS2sNF&X?{4eysP7xx;c9mPS#&{Q~mY4jPUQ~bn zoHIXgd_oC!y*6DE;dgm|qXI#@lDRew7YRoV1{Xu~sc3;dC!CP{D@QX-skD2AD&NU( zQ8_U|ZZH2n5*~q{TA~G{#E|+4y@C{x-+)vBkworI!{^y)o#hs&vH#+M`0`I4xqV4& z(A|Uyw|WmM_uEa5~xO6x-O!sKbs>*%jhpQz({n>QZLT09G}pD#ZO!8Ik{kf zdW4`C16}pQmceM$auLXV`8S(k`2S$za{2#cqa1Pf=eVL+j;lZZR#IcB1@UG3ThfWe zZ>Kv<(9vVot5)uCzmEF!c`?C9%}HPqZ9z-waVx$C-$7sysJqVdXVJ-uAqN&@Y@;hA zT&h_IsO|sg1QMRXmKyRZa4MiG^uJsTn-pqZT4+OjS(jXsD<(F6swZ9#J7c$hE-w}n zypB>U%O2uaHc2gryC29XjI=+gbm92`NTtXNMpHs3^)tu3lT z%B5O`CrmH}Cg?iV|1+DEBM{ja?t!NxzXBpNTK_M_V+{8bsLo-xV<5^-k>4f2ih<(q z_D<=jwx_=|y=kU1|X-GZrks_pK>VXWtFrDg| ztpO%xLtFnrt-6yWxi?otRaGbm+?^>DkOrFBwS+)sM`^)!HPM$?izNR&A>PD8n2oEI zR*5({U_@!?X4RmVuM*8_&riZ%h5&`jZxoyqYC!D(5>@{foPOSjH3jo&07$E`e?7GL zLt1NW0p8Bf0Rvot7hMjdg4M7Gt-92`-cw#IZ~;J;h71WFeZZCXghhi@o-7FpRc^u* zh$HdW9MFNDX!{f_QQBe}+V7)44 zWD!)^_~XV*mp8^?gBW$Y8+x?lnR5Q@YZzd0U}?g{jv&e~q6ndbBk-hH^O#s7ajSAB zOORlW&@84gzfV{qNWOCP%!UpA^x894rWLPYfo?Qm8Z5YQr-cH55dKINX3vC5Sj|+P zcbF+g3B{Q4PXOVHMW+Nc5~LN^L-~={@=dEMuCvP3sbER(_BF4pmXq`f=Ls4TH{&7Xw%RX zyX?h(s5}z?qf(iu0jRPc`j1Ko&>yKr!>zx(8IMdvux;S{B|u$Xz(@QWKEOl$35<#9 zLN#R6H4wzic;Ym%VMgxmCtQ8b{*AcK+EE5ktiEnpr6F@z4R|yIlynycduh!c-us6T z6lG`k)F~Qh_I#e3*-6Jp-1x#Fbj*y{SU=e=ImD!NQ4TBMx^mlE%AL`LqvAeNSytLb zUFk$F61~)9J=h?vjzQz1lK@D+B%igDRFmjN1D$cX{p5_4zy5Z5B6DM7LMG$3E7?62^MuYyKRJ#%mg+!X59H0!jm%dUequTFP#F~IMd~eI zQi0aAHhLAQ-Oh@R+a~xkLjQc)-t4CRXcy?n30B0B)CobcaNVGtXLufM{CRi$GipM< zI=W=x@af2+AkxgLj)AeHWL1yN6CY~I`S*|W{yxd`HnAu!=(;;S;D>#Z4r3jAC zqfb>+{n1*BBJokFWuos8;fd}wY|u_XtWL@1L7q~Tt6{G$7cD4izkg_Ka66*dT4WY~ zKPvcLG?XOoI=pv|=HdckV(wNsF758U(o`Rs`)AVtvXwfG$CXfMx3;$ zb@t7Mk{Lhd%{7d2w`L81Q}KE}FJ+5+%a>Y+JGDgv*yc?$tmGaq8#LP9V6s+#Zkk5J zE{Pr&Z7*8CVb~vP>A$GafYi{^e`enkty@co$p(K>yPAvxsd?D{rk*21k3jl=P+xTo zz;=Y?=x=$qe(f}XJ*g`1MYEmHrls|F`%R(|(9!gz{Zs%w;j~44!G0B`orD{*DiRGppcz{kfE2`DXV_f-Lel~0_dYnN@~5qk)}iC zTVU#^mOXqYNnZj@C!g660-Re_7(>9^-nP3%3$e;By$*?#a9gCCY@o}|hZe)GOsPzA z$juj)lt;I9?6Ow9@yn*qH#}pCvLcGkk9nDDo^;lQ7Q6Tr!?L!=<-Dw&`p7X~*kao=_|~#5cbY76Psw1VmXiGZjn-=u9bU_x;o`8>JZrVOq&)c@;%71#) zdMF+p{131juX&TdO#Wi6y6YNhn{QbAr%7q;lg^^BzfFcD{V~Z2|Hovf&HtZCPFbt& z>GmVmDge+Vda=a^w{><40bv0)CN58OhM_6B13qv^xh`z|aBubO7_?=Bf)4yvEU5uQ z0#idvf<9!C=BU|o5NGV(TSY2Nmo`G;JOT*&O@@iyJuW*Z~j42NCuQ1vP|dA(l)e zW+}*}^85JSh-vrtQbU>{axXjz6-oz49C!~r3KMY$2=;uR~Pt~fKltIJXj=_-$GUI zAWDKZmY|Nry2QX~hC3*|1RBE#{0Xd{!YSOWVF$iFxCf@qdep68a+! zC+Jf6%4%fPXou@}EfG^cVFLh^81l~rx(;}OY65`LO1QoSG~{;eKo*^i5)8pJ#*lRM z=wUEki}Sx|GbE=pwgEtI)D|zn+(JCD7<$}F(e)_L-7==2jpbI_fyp~72PW?f271Kb zx&`9DlV_8o^N-}!c3O9(POc;{{zD;LKm6e-{_Z#)#bgh-rGYX8kj0I zG~`bF7?TjOsJ)8hfa00Aj~{lFUAu}DXzizdw*viMb9}j?k|sEWpof8g(9ymT89v+E z`EbNVuR9z&2rR}f%hz|Ks13|IX_BI0fqbgXWOik9b`$dj?Qj|3kHfI`Dz(N7RTuYo z=ODi_XI$N+ecE}h+L11KC{huQH+-4|zf&+$mh#Ep)y4vN7Yq7uFGHhg)*VVLH?r+J zv6`lud+$4X;8x(TLoZObKX;Wxp@v@Mtqf+oe4Yv?-Ney>e~=wdX{&6iUnK$;}m~UhEfsE>?+wvq~W4uC`WBEO+qgd)4|D zFb8%6Pu_Lx)h91GF%4obJy8=OPJ9$%j6I&=<#g4sMS5e^Efmjvqbx?Xa!bl+H!L6_lct6%d6;c(&n)`o2`DT z{tcbk`s(p9l=5!Lmm_nK7P6ydvCk+sB0nNHZr*yZ&1sSo`<|#QqR8|NT;XCI`+;T^i+kda#sINULZr%{uvtsS6*)^HWc*Sn zDto8yVKqrC4$eZ)N6>tjPbkH=8>8r}IJwL@U0ZfziOYD$CBivn!Th)Qr8U?JWyp&w zD!*A=o)uj_Ps*`;-nPt|bgS72IoY>_?7kLRv%V8qE8Y1@6#xeyV0dhF#7L)i-+s+4 z2_Wh#%;vGD!~<8koL_#CO}qBoe^t3;Y1|3P2EV%lqkhc8&42?G%L$ATq~3B5#Cun` zuy1z;5S7PNV7^k{pO@!MNk6V#nSTJg_tqo@#{3glq0QMO z8hdgG1oQRw4xn7zvBfEX`6@&An0GAb)9D8XC><&W63xey<5{?x@ckEX)BqeHC1JK~ z=PRTDqA~>LD^88uTZfnKW!ICCJfuJ*yVt^a8LFvx2(DsQZ(9iH99H3gGce*Hm2q;Y!m=fcTErVW$ zOYe{yM5xmiC+f#vn71mIBB=|3R|_sHufs(FIYa*}=KnP}t_4pir^k#(Gkt)#1jVDV^JzeU3!0yZxk_hL zC{SlP!j#G(Gz~rDyH0>vY!#zmiKwbB9F9D4sdoOuZ6osZcnKR!z6qrrpJC6^mujI# z)?uA3e2bH?F>qB(Yk)mSCFtSzli68WRj^WpZdF*JjnRiw5&r8g?`8n3O~4LBFVoZr z8HyZnM+EVP0tK!5}c*f`o8Awh&-nurB z;of0Ybo>i+d~E*S=pD}9EBZc% zjwyA|)t-MmBqtKTO#F^}&Q8na6EnmxY_uC{G*1^#!;0*^jhY+VCAZFla#%<|OT@XA$m|6=?2uFjG8|DA4{wjZL7w(E{W0r5=u3>vd3PXz=8tw;?Ajwh+m8lW z|7SQA`0)PY+btF{KDi$lZg&U3%>x`GLO)g#UV|4}B0e!m{0m*4ebM0-~z)S^iRMOD6ymca?R%18}OXpL2OYdYF{ zTpY6xQ6p2dUu-2CItIG*%j09XjEp~+vnu_E#$IQ=na%B3O=LrD>X;c)qs)JctyF50 zsgX~Qg}>Q&R3dC0C2M?QrWwDh9+MG7N=!O@o;QPP)GWic(Ey=A$4Syio2sm_Ev0ez*PHh{>*4C);rWe2+K{W)Rq zXBN;{_B%dgiU~(kTpppA2VqEa#VKW(jR0EdE~WS2pHz%MDxAnaRE!aWMms;IIgEie znNvL&i9D^1M%q-L^(3>CFnL67G(L3*vHoB-QA<93PEPaFp`;miah*coHY(CALFGuN z#~^k{|FfcC0`}hbL1}MLRlv+PNeNX}@>E)%M{j`Qc{07Ap#KM>r=})26uDY)0^5v+ zCgVdUS33(7kTD?%@@6p7NsjweEi5Ulw(h4WIX`BEe(+q)_>^tFeinaj*;Vm&qa1J1 zFo$MUZgZL4wDrAn-^N_K#zJJ06Gx&DZ?Nw1a=W7Fl+L00a2t705M-RDC~D|XuE^c7 zb;cm^Gv%pIRC80uSaYS!)c3OfaoNE~0%9~bqmrLpaK z2r87;vgD0|##@$I3VDSkO1RWLc+{vWKcQ8=bxF!? z=k~4S(Bp@ZyETdgZy=iH3g;nz7J>|bOBaM>xFpZaas-N?R>AQAH5Y)qQ9BKSBa7mn zQvlsM49pc~$Q6dq!h43o1hcY6UMWdrR3BMJ!gS`LVrM{UYQ!m_;Ff1fkp8z74XP^s|fD7A&{$3 zRI9dhsR}rj=R(v;YYs=ke0N#ly&@5QrN;QQ5`-|8KDV&UcSyoeo)If*dVvBHn<#6$ zM}xLc)Y}eaEu50EcL*jnO;O!V5^`B^v@q(m0Kq(YNRhqfrTp`z^jj1WdEig=nGcXo zjF}#gy(r;4!8@~&pSmX*B(QiW?4{^$OIF>&(pN6(!8d(!Uv005Q?=MhKv|~ zJv>gHe~6d}Z2cAQm;FAy6>>S?8da=Np$?ll3S-BM1eOX#sT7^6^bE@qnd-6N$%G%P z>q3q=_&G=Ob0H(}w{f$6(xWBSf;eGt zs5lPHo9GJ(q%fQdDP&`o@EI^JW^*3s;9~-p1ajLIo0)(a7zsK9q*4if zifv_a8b%6zeD{5K_vm`@Y2B=1KYiFn_+WoLvTX&d@K!J7Z2R6^=R!LxowwK2AYWYM+yjsHZ*{Ko@zUvIwRd+` z5;kRQ9?ieoA!nqxWyt5KA&W zJf)Zce0@KfbbZ|{_t(dL3cH`^Tm3Hpz8?Jg9c69z?gb?uTpvc`P6@*~K^Y;@A?;*tTwA+=2&pcXtaC+}#Q8?!kh)ySux)ySo$I-6cSf z*W{dg-#z#L-uI6lR1dm#&o$@V)zxe7>Rs!Fd!zhUTU*s8tusQ|Le8#vLN61 zV%x$Gd*hbnbCb3OB6lV(T*)cE0(2&?r|MM`c*wG$h1a(9`*ocW&GOgP_6EDe!_^7IEcA!05|7vwn z!?iZNHtUjFY&3jSESoArVVPX!d%vz~avVpq`7QlMr(O3whCKz3682=f<<|(&!*(+| zDLM_`YrX4Zt;b8XtW0|spPDTE+wUQr#1jy2G$xDvJANciv1d25+kVl)VbSZi-XMHenrFZYZ==1U1#2CfoV}c8 z8e6zZ9guabPw#5Hl^fcVUj}+&Jd%1N6>WwTYvSNxruxF;BW!s>s`N>4Ju=BLsj;_R zVnb??nl^&hs8Hz|bsi6P)T|q)*r(FYi<(R>l#OWE59ysB@kFeD>V(@?&>FOGW@-9g z8Y3Wt2#$gpEi9;Y$Dh>F=!P2qKw}WAllz20qE-W5K0>?xuJP9SGXuKmvH6mzz3BmM zJr*8GpXvQ~ALUsb!YdPHb+BWy(vwtgsaGX+tW;->VWoJWr9MLUaH4+bGui)=|js}Zk( zaFioi15Z4vgDeI&db>&XYXSuc^wN6wVQr&z>qXdp+PWGoX#|2-R08av{0Z1Wa1PiJ z4cJjF(hP3dy4vHrBhAl&eQ zvkt-mJNtq2pAG&)bG1l4_`D|32A~--pxK8scnkY7@n`sl+ndPW0sDmenq)6k;&JUj zo*wgFw0yKpWA~s#r?e<4Q&UvBi92w2x^++XL%+nmHGOdy-OHk;$|kl8iur6{!!0&- z-w$6dg7)__MtgsK4#yVfa~bp8aOQA+zTj%{ct5n5J+XLTtr*&6|5WsS3<3S^(d7y1 z+}{28buFV4l_#TZ60EvDKGa%Egr9&EnVLO z4EQP*$G$ym-S>?|jmf52&HmWf^PZgh9-qW|VS9gImE|e)GBnm8qwGLa#qr3jjiv)&{JNToH|e#S8fkD5<$7_AKl{4%LQ}~XS_BD(|C9R+_3{!u zNP5SOV;y6T6Z0_KkT)v>MaGafGsDpRbY2if*SWOk%oMDS80_HX*#u}m+uu($2o%^B z5;4V?{_3g$w_hScA^RJCKjcYnu@%EY_*D?3azKy?9@QsBF|uT==phJJar{XxHlh@! zUC{1Ig>Qyex<~1nB?v|OzNWCP&uQUS#(C$QkM}S;?d5fsE5lVswx@G9j_0jr7|zLl z#pCJaB}$k#ZQt`&<8^L#wDzT*Pn!)#s+8`fdF7Iw9*5Q%!RBF}B_&e%x>I(@Wvj*0 z{i%5^Q$MD_u20Z9F}8+>%sK~8B&A~SaDwwtWu+o>>UI*n0sMvR(}`ZaET>$@7=9C{ z9P?>)_s-2#qol1mT_TwC12Bm%@2?+Q%-$U7rAnkwH_EVjFMXDz0Yh z_zm&QwaL}>UC!a$7JVOmljz8A+fB^ujCa78H0ZjWT>9?nPUE=+?}FJ2jdD6)$kRTi37ux+EIlcUqu|rQ@JyqwHn28t&5_FJ z4o^jj#A10IE;y1qZs%TvG0}m&N}suhb(^O^;cYUqO}(7B{{6Vi<>_)lO4!7=Yf~L& zUEuE=R6a$!3B7aI^%ZuU%Syh9)&&Mqet>mgb<0i=d}sT#3z3zWA}O|%hJ^b%$JT^f zZidtgCj{h$sXEWsW7*XL3pY$DoiJ=sUU;FKYaP>r=M#n&sLjnTzhKTN$_PQK?t+g<@4Du7$rc3iEMi+vJzbkm{2 z&T{8c9&`M7wXEBfSQl?^pDQGO)RSsNc5%JmS~T$NpfP-Z^&M1-^gJQ9;y_6#f1Az$ zmoF2(xz+Nle$j~3;xK1SC~=~&&5|Rze$k|7_4c+_-+m*5j-l+AwNvEYa8%M}(kI*r zN0WuMFWP!*D3!dZ&+t4uvd zxfM4v51koy-gtwQEF0YM#!x&fb~7svv`NIv(#M*R|GtToL+{)u;`+)< z>s+AYe{XSO;k13T`{{Gc+-dDR(#SVyshFS&AGBiYa9^-%Iox`qFof&Uo+MK%sO?&E z8sUOJCh4N+soC<7A*RGWLHf}64Hvvdu>RbQqzd7i7RZmPCsinWS0yHaAI<(8Kz13T zv2JT{The&24;uF6w?k()yOeMD$-hZM1^XI4Md!tuQSl+JUGMa4^F0JHwRU@*N8HF~ z_j%aKSv+@eucwd6^`0Hyy0_pxxwmNFgT!%;JtOv~E-~>QyfF~f1rue66i@= z?%)T&ca#A00Lk2{DAQ!qMm9MrMGl(Jck^?P$CTVg(ae-luTtxR0g-~vvAa5>WhvXS zBXD9TH4;NU_Hq8$87QY2jDm5$o6lU;JEGCb+NUdu`p^uYM|ADo+G-s5c< zNULM_T1oD^E0p>Cs7O-`I6GB#{BbdR|3tT9nf3WZXCvpf$8;;f(ey3uq^Z|a4CX3z zqm$NHXnFl-3)PdHk|$l2N&0N7463UblTj9w=%AI2;b^NGYr+`c;h~%2xaT-pKGnIH z2ot@$S9=CcYSS@Y(TeB38~btW_0`X!l_Oj}P0E{$)7Icy(anX{J`vO8%etvSIQICs-9=QIAFhrC;@785(2M^a}Nnhci zVfFnt7~sc*@WWEEy)2wzdQWF79u9>J7NNI={LnVy+ig26+&r4_=?DP_4+!kK3ouJ* z72iADIytN0ror3eH~96)X}k8CVkP0bshrQRx9DBZGNx6)yAQ#yAYU4Sy81wpd8WSr z)AY-2HqS&sgJQfju3cP;%V|N@CwkjzF=f)xTy49yETgq}+#D7y+zM=ozkiFy#fLvw zQFl9|AZ)YK8%pS2)kE}LwtVj;IKl@*-P~VY5$~z|rFRjTq>`|E5y(uOQq^&L0c(=2 z?)HufW!P8XBPj@@Zk4Za22YchU~A#s)5r+5RJc^m<=Dp&3RB)Xys)*V#sdp>A#LXQ zInZ4(<{%&YVq)Im#}c*sYF^g`+@U7JY#YO+CY!Cz)`py*3U&iZ8|YXu=^D0fwH0h{ z$1!VFB;f9aI_m0)s)td%9W{;^P-|(kQhu<%3W>IL+1Ju)_?*@_-Pvv3&o-p|2r#6_ zo`u&twk`25;MTD1ht2a6^}p+4Hu$@P!Zt<-G_$`REO?>>5R+9oJBV&?sBr0n*Sp;(bndV)L(^5 z?Ofq~;w*YM=JelDE+Pv0__sE~!Pe3&+2&+g*)ME&q(L97ZJp$PA8xqxSn~e*|7Rz| z5_X&Qea)V=nH>!Q)W?1IQ#1PtjC_Wp4bf5-fwZ-6w}e zgkKOBaGZt>@{%>&)!`bw9l#K)g9K}7+P5bh;qBGQ)n$O5*Z}l|!o`Ga*?Q+_5ofyU zFN0dM#c=UQ>!zfhtf&^Ay7r!yOq(JWWbt1MtgQ)nJAGaQ@^8&9k2kJuu9A%z?rcF@ zYrf4%w;(@j%@`7zrZTzVqSBh8mX0sVDoEXy1lFl@78?+)0|~7~3@8VEen>BqJG%fu zX#x?RyImWW%T(n_slw^dxU27ufGx^^sf5l2dQdW_5hlR{yM>;*n^I z%bATm$t2xz)XQBr%iV{=;0RxTUI2_i3o5vvStiw;alc4WYm?+|ajOd$@1h`GEgm@- zgvs&=GTDsDd?9%VY+B53Qt8&@#iVR+AZurR%3tDA&|ptzNpqVCXfiHn3gpy1!ZBUd z1ZB{G2rO+fqIoVRRLpD0c|7A z8`KmDyAF2zlp$Ct_1^M$~5hy&-C+DO>xlnY<%>t!mX1l_O-h#)WKteVP_`Z4EpdHz_s%irW<z}c=ksB7?X1)ttmD9fhy1G>Sl%;C3`!jhqkH%2HW5S)U)meaj3N#b(6c-P4J(o| z+{8i=Y%0WUD!iLKh;#rHT`X>(cb)S6Y&f=g?sGrcOi0+kIdo5RPB%6|=+?u+Qretf zt}YlPBsp_bU8Ea*j_c+W|he~xAb$Bu(OdPN18A1@!G>L`+e3~oH*rpssn^(YkDUNo<}(= z(7EbisG^iP4{=JGIjnb9JGrCa2Nfa-1Chr zZN5Q(CBe@ZjnaBVKUw{{Kc{3+pt?^})DtSRT$TaGfqJ8r(L<5zgAKexIL3GE9&E^0 zBm@EyWM=3`nVW{&rD$CqU8bjK0=bD7}(42cN*uaKw9CV-GmXMaL+ zJp|6znEV|w9RiVvKe!uSx;s;0w15!A!JN_p6=Rk1J_1o7Ofi{WNOuZl5Y}1`f>=oR zn%ED1xh>I=N(e~T6e2L&?L<_b1E99F$oj(c`&TgjY_!xlil7>hJ*z+{Ap73}mE1yG z*MU&A&tJZR4f;bphINdM+r}&!9W;skMy}J$cP&BmX$I~Y@S6kr3I>I=oC9q;g|SYp za-OP;MTE$l2j2y+_%b(Yeb+(Y}}0gb2OG_dT#)Au2|n#RB9I=z97%5vgp~77ego2%)<8YfS!NAVLss7T^oaJokapZ*`*KT_53f1>3#GUuxm`Z+1BwFG&3E2=P(v} zR3b!nf@T+6tpDaCAqb{V=18Zh0WR{^07vK>DW%tm=<`JpgSj~XGaS)pAPSaC_fliF z1QFOf2NOg8#0*D7o1^)o!#w}z4wJzpdK|j3yMMR=%=;#5Tn>}FmR)3aUq{aHRFCi@Q>p40v!YZ zQ}JB(`Sf{b^&sKDQN#Zp8t6-!TAk4B4Z2NSb+41P=VEEEXX$Ka>1Y=l4GNHiD!$#i z((&QKztl+~#zsYEP>vr8KYIzEryOn~3Yo)BP@-)~YI!1f9nw0e9STS7ky@tGI2QaG zQIIiGanPTo{jlqJFje)^Q^r19h7VcS)1Gf%0MVsAl0L3dWhkd#rdmtBzdokn?}hN* ziS(}RDZ$b?TwguT(lw1CxY6#y1X~#u4HwfhXEQiAw01VJ=0CLAI)vYi)GcOyoveMGiST!_{7Gzw99LS`>TAqOS#O5 zZ_*c-s?Bz7|D~*lYU+b~lP}ILuY)eHKHOQd5+{<)3E1)Tg;jqNbI%7FgXmv)i`va>CWk*kw z8lbB1wY`Y7yI$f=Jz~uCQp`Ma7y~;|sjvUrW+ z*yVMI>FZbR_kt6|cF(x>w`)UQs4ou?tfgz&`D{N(9Tf2IOEBV}@?{4y*S^2TqHW&; z@cK`avXCR_nP_R4C+JxQr<=aU^m;f+xx4~gOHS)ZNxOPp{qZ^sLlvOqVt}yAmCD7|fa!=55 z?JmfxE=d90`w6I2y+R(e0x9^Az~lGsq6ejSykFbCYC5r)Bzij98tP|s@kKFU)d)II zTp%S}eK)?z*bT3u-`wf>?^KJYXDRcav ze`EroP-OE<<9;r+J(g2x_SZ`6fVIcmV;VMk)!H7w(2bIS{>o5?UWhnOki63J;sm6S z5p8=H$s)w;&`%m{d=CVg5@-s6f$qA zTs!$Ii=V0S;ms1TnA6wZ8SYuciE*SPg46|2SVOE_OgY_n(?M08m7MY_*clpkOd;kE zjOUi#Fve~?)Y<@3V|ppVQ~{Pcho@7Zd@jQ6BV4m!t9i#XvIWcd&QVD-O?i0BuplkCv`O8{dw^b9O@JD%}s9@7cp#9094 z2Q6nhFI;aWauS>lVz`-c96Lac@ui!;kT4Y(TqMM}GuhOc@;iXfM|=nt!c@J0rF@a_ zqRycQ(if0%!qku*lw3^Azr@)8KgF1;vivq{D5FeC(H2l3WB#q7!F{5JSIc>YUaFDR zokeYt0opO4p^5pE^V!>giLwFyTcuPIHQoBEOWnrhEN6|oT7{={+uiHy*bZOXIYOPG zow$uz3d8$~b;EFGxXjS(t?Y5YxDM~xLrP!IiQPhIRxzA$KQ^tPo`QW%U=2HNP`QaM z)`lOd`%0<25{k~vs-WNnCqF+dh&a9mL7D4w)m9TOKBfEF(t_Lj+eXC1ccF$a(I8p- zRN!8F4e?G}0=A#fQ$=h)IdRDTuvH9JbnDr%#3w-~X+p~OIiO;~x$tbXBoS}|_7^#_ zJ_@u$VFcA~MAnXo%9n91`_ytkNiU45D!0)aP$<9g6}4imb_Y>Td-6fRRlpS+7>lBc zXm0z$WK0A(9-ZIR|3<{F7jb2!|3>sYryUDlJmW?sNpDP1I~2<@yFK8ObY6P^7DkKF z0BLr6`nlhY?+qIWi=4J_Vc+^xVgv~Vz4tWi{(T+=4&zgf1@->IFR_#Orq*DI%o_zI zIpBR-EmN$0TEpr|T53Gt{e4UPc=Y%W6*p8&xPPf|1@<@AwhZnQS9*E7d69Eg_*;i! z_8~yWo5R0!yp62YG7IPv0_kf zFJNE~;xMQ-?#A4M#C3G+dIf7>$-Gk!w&{x}kaI=!D@~gDbn3V{r$l(Yl~oH^Ti4|J zC5q1Y$}8(;jSQREfpV-VS0)yZ4Y0YnjNYs37G|Y{pQXHEcR!+m71pt{!aFw8l!a&n zp2{nRL!ju&aP+CnWssRR*WU1q*Xn8Go)C$=7$a1{$}y!f{P|~Ba=YIRYJImiutt+6!K{cDVmH!Z4!DA~ z>SM7MBx8YUAE-4VG_+Ny^|hz^AE@O%YJZ~+U?t?A{6Vb=jOm$8<+;m1v(UhR2xi4W zG#4-5E>_u+Q=#@&1FZ?nSMcRnV$6s4qiGRIfedC%hoVKb=tmya6rgUSTMUN7?8gdb z)$m@3l4sW}m#2jEEz#yWLbSl3@?k|)YNcId;rlmNd6S`>@;cBO2z@y52z%&3%Yam;2Q1x@hqwWwa@|P2q$dF%;G+{Pe8ji3^oC=h03z@o3V&xENt4xnp zhOz1kLI8qCpy}Ql%uk?MC`mBrmnOk;^-_dbMb$^5ih%Ns#rj*?aeD4H+^m(O&PTFWuY|(MsKi7r2nWc(q6JCa74D+Da|s0E8=yjqyD~qE=|k`tlE~{t`jBCX ze>T}AfPW%Sh7*$CB`#4MI0-d$EftfGfmLF3$CSpca={6gw8!UK2+LOb28-&TkkF|F zI~s2;Uqdd83QYr}Agmsi9r|1*?oDNUB`AW5dVo=!8>7S+ZnB#)^`*x$JM`oHMWwPN zIHD*V>PC?rx-uqKtiLsR7#BM(X?;&bA&8nVJ|ZVf>W8c(Kaz=}Oj1oDhH6CXOLa13 z1Xr5egMg{5lx&b4DxxspiV;}H`3tPhhYD~ea4J>Hi1;FlN?BXuM`cW(N6CTyk*Rf^ zDbxEZfNLp@iznnOGEyiiiVge|H6Qw)s08qVr1{GOFUmw9|D?>3JY{UDJ&>x)CMO&bMIwvJ$!n7H7-}@j#Vi!5Z@@_>il3f}MqdA7 zHCCK1l^C>LaF?lw+LHaYsaRg86vz`3Um9Y!>(UQYGTqRwa8Q zp9iB_%10f8Og6T5dPRu?9V(@Q0!m%PirpWwjs7+ zs!(u+@?zP?trD!yM))MCHf-bUT%Q87F3Ujc0_4vk{QGW0;fw~=#5kgDM{kqiML??z z%nLoku_Z|zWXnZD3cR>!2A70mqwk6os z3f!fPH-O21kzk;@Trliet@0N56e_`vb(P=IKw&n346I@jZBG zNMsq;*D4H0@!~7{hf^G9ibGv`v)Gz4HQwvWN zcj9eZB{e$=>T>>GAAiM@U0I0EBysQrO{I1a1H>d-A&sOMTcMvx(Y8XVNwK#5a8ME) z=@10lj=7;>G02gh2N=0A`cLRToT3x7X*K}R7xVF-bGQ=9V~AYNWQs#jBiLS66b)1A z-6q?;L5AnsRE0GDl(&ox9h7&IBB=fZiwsYaeq%`aF_F6xHd@?`L1MoRRZo}jNi_RM ziWUdR#Mpi>5*tD4r=Teyl5`m*Rc86#kly8}qP16WfLW79M{wWA3AceLqix;bGi}iT z)jXykX`*eQABl>Q+pP9zQoN{LNj%G@~x+xi^m%@OAW51EHy1H8Z|1-GDV zILrybY5z3^Y9k@XntgVV*F0+0W>q6C*8%Z7aQVFTee#qdX&SSJu+-g{l$nl7aW`}> z6*VU!HCxy^=0&iQ3J2yy#6v4tbuQ}Un!s^2n3>r{%GG|yQXsDFUR~dt0(YHbN-=Ol zWvi=`V79W)Ik7~RQBPinBVb>=$^Gu|i|VYh;SrRuBh5REVT)FN8Yg}A-oA@GiYA`6 z^%T8(t|cOZ59T1)@eUSjB7)Ds9waSUMsfh+798*4H&-rR&B&??<{~(m{+0yefMyqj zMyBMo1ONOhF|!vX22zqCbQzQ)z!_?4PypwqZ9SM5XepRCnXzkr7a@}WWm};i^BS@r zAJHqD#rM$<_&SIJem(k?5Vx$DX9r=+B$%&Ws`9{ZrrY56COltM>1;5A36fWLdV|R% z(VO?99~_793-C4M9AoGsAj;d?^0g(8LDHpR%X%;$AQ0bQfp|g^C$Aw5wY~z{266Y} zw_=JU=XeA5MMNrez#&^HMn6$1);1l>VMu5+GH|KL^)TolYl z@TSWpg5(8MFpdB9Q=jc1omRhn8{q#+BrgU7&ypd09-l`+HV*HPcYd^ukgl2djKNuE0J6z_5v!1b;S_LpNA0+sE$Y*}@Dbhy{I z#Z(bc4rteq`|jWhHza!Jn@tZkn}!!gVSQ_L(VlMwk@DHb`S~;0CMDDUJ>CB z>SASG)U4Te5V~1+5RAv^0f5cRo=;{Ct95?x$181pX8Rm{F43IpGUB1k&c*X zZQd^FX-0m1UIFTjI&U>oaD~PR&7`rDTsjRYu&n1~g|T;Tmc=bG;N7MKO#Z}V5I7dN zb)k$?c)zdeU9@JSH4?9khVQCyg{@5M5MY3TQ80cgd@_gIW_Yld&*t~#1uybZ2JS1? zsqSVl#}HBPdc0HEs2=3w?TY^HM7u@NC*RmF|FAQ{psQLQSO%+#Sy@YCTfQEII~DQc z!9B?~5p#Fh%w*+W^g2ER4D7;wYHgpb8Yrkm5)?XVCDTXAF%?&)XvJp^@R4FGa^=N< z<7u2bGYtAH!<=r+G4W$LT-kW8&35b$z=( z4dO)?Ao5#L3mgpqZI-{+tkHx3HRB-mB%NJ`S-?n!W5PBy%_-GYBB>id47R9+p8MMI zECSMq8YKO|lXD{GbPDoJ4dOGbZED*oOOp>c$HX@*F^-7`*!d@>4qPeHPn4@B zygH8GJ0;c)CJQ&&CJpGW4(GJ(6r+cgbW*@&u4Cr|>eY*6DE21wrPe%djVc@*869R7 zo3wkN7qF|!^F_+&cC)BLn*d5;ESR-%zdYQh2jwj(YYiADba)=^>K;{@}SJP3^_!D zzm19@t&fI&md4I_$5V2~47yv089dDU}s=LG=WBb_Q->E*Ws_O6sIxS>B%|i@$(ooiZT=ua9=qo zwM^6P6)2daiQ%-ZU6bTxU=rT#E7}4Ujp9GYJdgr52RZ3?Qk<9ralyE}!%G7`_C)3B zw)7GYa+(z6-{fUPW?c5rHk&Fbg2DIq?0+il=QHF7{CM+d7T(W?8yDb=@zdf4hy1W& zpX831eXE4WG|HX{0dS6g7b6;lju4SkP^gh2&Mq#8ipaLjvBUBS#-^!63Z_70!tw!J zgaK@Br=i>mkvQaW>H=RRgh%j@AtSP>v3%ISgLaj>RFQGPM{K=JYq0qC zMx#AE-EO0?`m!-VM)1SiS6I?p0SPsUFl0?Z>M^E?a`x2<5JTGkED~>@!!U1D zQk0ab7pBX_FZtUmG*5Hv=gVmji(5bK;XEjCoYb*HB z$nB#o$n!)$0nKF2^da;GXD~+$R9ni)80Xod)PU115({uL3UX3XR%!q!&8r3cMM+2q z2T@f<$Pp8BUnu_vG+^UOLH?>BvqSMf#HKpZ6#_U))Ht`bqbIBZbeDXSK<5{t7XqN zq*W+ZIvpm&UxmnL%v`)g(O_99p^eKC_L{#ihTCB!?F;jdB@gS&@9HjrIQyOAxvCyO z=bgsKa<_{yjRFi?c2usyWC~5b8^t8b0aNl%GLL{uBrO@uN~F|Io~)jaQNMh&-XIn9 za?%4}=Oii1Fnkly=)h>t4U{<%75{pC6A_SNMf|vg85&F-=Ml4QO#8h%G6(Eo%Hfh&`DjJlz4@qI z+y0K6Wqz4FbspFi5cu0a1YEc3_Tq`4dHyCqwhzIHiaBD(lHm>_EGtD)6kswOGnY0i zNKiyjBq1Uo`M&+E{WcZFx*H;WYn;sU=N$! zh|R_NI*yB)d#AtsXmcwkEC`aEZz=vnm)aE_9ac-0da*W14oh@y|Jt53J~IQvoS4J? zf=`bNIM-T+N(Il;DDb3Y-G4LHnAN_>qzYG7m(8H?;_pU-9b>hyl|7be<-*K==P-d5 z_EcCGl3xWanHHMNmpLwo7tiR%{)Fz!{t&<}K|Wob!3h!f#G`LA1M!`u`E!L))Wuw~YC;TcV!Vyop3iW2F@IGM%P(!>%; zBdZy1f2|(wtQI?tM`^4Zo{n1ce$}Tw?dc(cI~KA~-&@Y&qLbC}5pJASZB^gnf$hV5 z*Q)Um226v1ps6QKQH&8$-eCF&1CHjfGq|w$30ytyu=J@zzgX2Sbp&`cGcj_FF(OgG zG zmaqVI98ewJuP3Pg1~c4yc8GB-`U}V!4HNQqC0x4YU!<65Zf?BdGG5;Qt7L2*pNLKu zC=k#g^nVmsbTD#sG_yAOv(BnPW!?TK2TJE=k#6(0F?6Gy)Gp;QN%e*_nI+&R0YJ4s zfUNG=V_|b-H;Gq6M-q*b&(BbAo+i6G9r}l4>C@qyv*8l-d12^%XMlt#sj1j*XO@aA zU-VcQ5`#k-D0O+cyfJ^YzMb##vg*>BrvSSllI`z%G&iUe#D!2cb%(S>!+`l(lyKHO zmau=8xpSx(EZ7TG(~uK6*Fy#uU^-hHeyUz1I@b#4q-|iax5^NwTC&ji`fHc=j?+#v zu7Jh@zLyP&91G)sAYetosGa>yr-QKhUdH(nwPttx^t^8?-2Rt>Y8BdH{vm99A}NL+ zdVh*+bSSUwi(lT-GCD>Zb&XxXf!=ib^Eezgc?_Ccb^zJ4Z8|vpTw6qRDhlj@;JC3% zMEElqDgN0UuD~HUMw&c#ItNf#%;_5PCn#+2a85UPNeHlv^SKBzoRodi2x)K&1?JyE zp=%QR>yx?J0b{f?`SsZj!V-6l(Y@v)?b@X8iOxPW3(NhBz0tTl=F9TSe6zEQSQ?^m z3F{?n(XZG1@U@MiVjGdrTxk9VH8#avv8c@;=F(GLQ8}{6s}C{+A&M1d;Ifq?EngUh zs|V9P{jlZNmj)H?mSMZ;4X?C82(!WcR2_1m@kgdu}5W~=oDvHm6$tHIyN!I(Oiy<<~GFe`q?yxHqs znMjuZy~L~w9?ss(h)DM-B9$pa{DrHWzc44r*uFglJ6& z7may!@jxnqLaV-f8~0u9@L1$sp*GvOQBBf7$Jy){oxA#uQAnJX-3x2wnMt~!m*Y)? zq0~jrbJ>s=qSM%#^e<_v0-cd{2)1+M4P@{!=S^aKBkChOAm-(QEB%@YR9Jkx=Z zPuk{)6X~}yX{_$QBP#pSYu!$Bh!P)PuLhe_LcI2OHURS!Ubmq1&xiZDv|;joVN%KHHN#KHGrCVV}+YSqC-TS%AbZPUyN>CkX>?;BR zN>DWd{yvI-|0zNB-AG^YKR)mg(>>;W46s1c?w!4Rv5LEf;f!BnnJ{qM;sqKJY;i~# z8vu);CZ2yWtFvLW-H{O<6P9dvVNK9&iRXN*w`YP-*~vbeH^jdTS~nP^fZ~RVKubM? zi9cV>*DeKrhW{EI(NCmb!c;4MhzPh<@(5;lHV*Ex8qN$hlKu&~wLf3Rx=gMeQL(le zYUN8M1>S7LbrS_gq(m?CXdN*2qU(i#C=%_&=uA}OS}yGoeEZOm%@mZ8SIW&B zzG3{G7)KxvUY%9Ff?Ye!;_y*Crh11ATE`J9i<$o{n;wm)oN2_^>UDt4leZ{rMsxRP zCp$Pe$O1w%i?_p7s~hltE=c{&neAWzs22SjP=prwUyd0AilZy(>0ACO8NHs^WBro> zXYlezC`D4bgk@X<3KG>|VEq_8wmZ;goNBbym~;M?+251gmQf7n)#7b;R?%+f)Z-+; zzEGHsf?}YAobOXl`tNtIxEf90X==%YsHmDRyRmF(dO;cUJ@&ZqpF73^4Jad?5Ji1I zZ>AvauQk$Z%o$TOt0cB$l#zY%a4&aSbNq%H4&7Hurr#TZ0W(s~mSn%jM8ijRZA73J z&Wbx7e3B9d)LiR;?HU{gC5RQRN+gD{&DF7)K*AL1TgDi%Flyx%ys9*;M@x zo>WG26dD%{AcAn||jT zJB^zW4qDfoTU(Ig;So)hcBlPrEu(bn%z@+M?bW$HgwyNWq9J;ncX@QShq+iY7j`Q2 zR{GDgSp$X$ebE~+dQJwtaQxFiOGXjU?_h{uni$(Sa>>k;1x^bhf@g;_$W5zhOf#&- zr{PV9yI_9mzd10zH#B$YjCW=6T1&x(yiDDYA&ZBUk76^pa!0S5-6ZlgYHum&+V1rv z-ts0Y4wYB$*nor3Pt;uQ{|K3MdP(XeJ1ugPt`sT#as6M#vf~Aang=0(fZC{lfKdN+ zNIIGtSsBs)*)smAaHb(`v&x3i`AZeCb#MN8)hV=9_-y%nu@DZqNieEjNYj!+p5U0I z6Ykuu+goqFx)0{8v9G#<|I^v*YpOMFBm9vL2IWd9g}nX2fb>sN$RVO99*-^^g{y_r zAUxpT!FE!w4;uRlu5bjKh42qU=MCRVXC0eU7^I9 zr>eRe_hFEw;FlHbz|TU z>IDI_CnW!=!ue7s!6+(D9D^c6lPfiS-^Z6hCx9rSws5@cf^n<-e1AWdW@c8J$^w3+ zUA1(sJljUTJ>6I!O#Os%?^!l0E*=dszycoYI2K{QE*6(im?&GfaqNh7N|ve-SePk0 zN5y`Mt^8T~i{KnZwX{jzs#U5f7G|n3uk`zkTb*^j8JVe;?`ww#GHSyy{~Q4_L++k2 zqoibQy~0dY-n>}4vmH@nF+G}LE+oFfV$x~-IyA~Mq&`+QQax$qCulq-4-$c9n4bRF z`Sgj~!+16CRanSes~iUt3oj;y-SCgiC%0%h4zdY|R><(4oy=sAVLBHA|za9Lh zfAf5%d;}C+w#oEp02+?#-t>AtYtre`@za74%wW}e7bfFkON?VSL%tRZd6O^bs zTKqAclW*H6U0)?=*!oqW8JZ{+-MTx(Tf0VOnpk|;iel}nuyfJ)BF<0%Y#}2N${kL> zE8!zunmN^aY=fPEp;b&tkzjJSdqDJR^el;C+=bJ(Bk%z?y-jIf-W_))MS|tRTs7X( z!)mw0$bh$<;MS-Zwc4-ieFjT7;pWD@Fb=5l9f49KP`UlirG&U)A=(ZGk;dR@#KI1f{>9~rm_tkkIK6_Qm##<|O@OW$`Z^o2oFN{9dhq}xBXMDI? z2o5s_Jc!5uxmt4@9c;c7Ds@9&vPErw9znL&Mi%W4DxKoH)}vRH#6);>*1KP#T=*!O z^C621qXz*wxwk(QcM{{uUJIDP=S5%w6dU0pPUWPj?%1Ukk zrKv500anUUPdn-_Y1H;f%ko!B`&_b8yb4flG9@U`*VijP!QUl=oJr(6Q*T6JIEozSM$}REE+<3RteeF{fG>#9P_LNZFc156Nn|cJc$8cB zlt_eR!TD>`vOL3|h&s3-kZ>OM=|{VmqCuf2lD14o|CktS^pjCC7cd;Y1T^~$l#JNU zp*~NvU`S@apOuOP4?+p^f+$p!o4S3t3A|bVrU0>bhM*u(ey-lbT*=wK;h|XV@-(A` z73U&m&^A9Nvuct-q`G6uehHN^{3Z##E;&RBaik#y2`pZQus(fYqfU!#QvD1_R-)>` z9I3&TzXuh3(v{iSz|~9Eh<3qlj&3#g`*sQqw0#uEYt^?$$baTynciGWMSw3n2tfAw z8Srf2_{P3Fv^?)A~{kHOr`kqPl(v| z*nIu>jo_{=m+!Vi2UgN=Aowg?GEKtb4z@7v=OQxrzitosZxI7d0|X$`D-lfU}?#4)}&yswTRVHLzfb(jS_y+7gyUPc;S?d~TH#+vv_Nj}oja(5&g!op^G9LpEdZWfJwcQW5 z)xvw2o~phL*?=SHKDmY^wC4bGS!@dNO+{K+s-#VY?{(=F}_lv{`6`_bd9wi1B&qX&fc4y5yosVQ4u ztOi5hD;+NuxN-RQ{jGJ&r>V$i$Vi}+%D8g^)7!gPS%`5$_M>@dj6zqLzx z4nq@Pq5)Qw+P^5X+oc-Ge?4`Won~6OIFd|OVX@lzrk*7$-$2`CheS{>^L*|Ruu-`e zQn4`*{0`q9dP;Jq`^dAw=+07GGz$56n@IHdU!%0>>7Wn`z?@77AiMkbn8Vu1O5eyH zFe~$s-A$;iTkmjSbZi#!$B1Y(gv7CcvDD}Ct9*+PA#S(@BEzUY$r@&4Si6usH<+L< z&)_Q#WtKvA9*g+wwaNMBA@c(M_;TeJy8$19;=p#{_kY?t@2IAdHjIZ}f}sXP5Ot9t zMd>Z8fQSMj0wRJS9SprAC6pLi07EY#9YGh+M7|YR>Qao0fHV<=NGL{Hf;2@jO1>+r zi{zL;l9M_2`AufdnYr)tz9)BV?@yhPpEK?oeY5>BZvjUAc!_IVK%jr{uNYkq`pkCP z0F9qG%qAdD@2N>fCSEheHa@CS9%swBRw)n5yYyFn47W)GMA3Pb8lUfSJv* z!K@`zt;~j~Pe-pjGVchmcv+?-Y1!^>V3glS3Ea?2DbvRoC-)suk?@moR+bwO#{7ZS zGS<-4S{ltZVbhQ@T23%kZ#G3u^}o+YA=SjW6l7xZV~;(P!y{Px*;3t;xdV*2{Kn+v zw4y$3KCjS%hE852>ab104AftzE+@5KxmGRs1!6Tbv^Y9^gK*N%u^hsOH8Ayh%65&< zGUHOq{SrfpeVz1QhLxz=FHM!L8lk4WwQpTz5+_GEy`Tx7(!TC|Pij#Ato5YNVOz?! zU-;?#;x*#<`gmCRyaIt8R*S$AifI=$gRjxgq%70woGJbvott5`^H@Tv#7!}tRwDyv z>4A0K>YTr)FX!RfjKap=cXD~P4$i!5UAeL(bHn7P# z9x<^Q2nUmy{k4x_c5A_P>oYoVJ9(9?qHW)ZH{Ol-N2M+ZN1UkeNc%|@Dvo{g-9MZB zb7SrA`W~I$C$HGma^O`vPmq^mnJBxb;~AAct@v?idKrlh-n(O!caI`k*+8JU!yu3d zuwwxSckgUdfb#;@r>~QT_X$sbH^lN4FMmNxA?;?QhK$d1zGKIQI69k^+bfRi$uX;Y zOx(*>uQ-kmNHEGW5xfI)3Vo4#u_)s+=tJVkNP4Z%<>0~qvmrG6(pg;t4nDBZ{-?ir zuBn|Aa$s3|Jz2qJ7MJ1BPn{h9+E%zR88o1UocAsNr`(}ya9se&rO3nL7IymmE^fB@+uXVOWPXItg`h#HiSsWt z$!NX@SOVD~;u_&`gG%~9Ea4WImGksL?Mc44UPor>Y&4q^&uD+0Pv1uTOZYShP&WkL{ z)Y#^BxBe}O;Sl=F`zRl?kUzKA5uc*lI7(W-Jc~o?bd)@)5lL2TKxLXslA@(}Wn^N> z2b$J$JK_hlN8&SstsXAy!wp;vbC-^*%gK{1i?ZqT)b`vSf9*o@CV6hJ-8sQKA>}LB z5KBW5pDoX7a|kvRQ0BDBo50^5)>yCJIuWId);>Z z!|;iUt7zapw*;95(Nn9W%rRpefwy;6bY*GUtEve&_^Rw`mF^|Dc-+e|D*ctWaspX^ zrq*1KdiVA(J;VzrCAqz#pjvL^?NX0S+Wh?jbemq}1a2bao!I5WN2@X^g*Ym_$!d`b zBS_x_&M8(t<^Hg2)pN*UCCeoI`i8d!e{?l#)~SVJrRQXB)(gqT%1P*>7!x#teQ>2T zLf;`+c1i=bq1y>lV7*NP7hmNNtbfao8k0gj$mg=!kduaWq$+moVLdlGuhl$i?Ar|H($eQE`PMTRX7T|z02x4#$< z8*n+tyD9+V;PvmhimHn~tb}y)UjE-JKj=6_9p_lQFg;snSurH&SV@=g^%^|fAQqeS zj@^YjMJDhTzqMqSX#Rr4{*=b`>ciVkZq})*@Ti{j5mh1Tes1}$0Qs4)Vn>fYmIV%H zaw4|(`0zdl@^G3%PDaD^uDNWk+~rBh!o+@)KD;0?vEur5ta#2TkM-=r=6n4u$Wbb~ z6ZwEppE<0I3=c6`o|XC(F)7huyRw1LCL3A=^)8JjN<@=~>L?P($T#=y7e~*H&lks( z1@(^R*+;t(Yw)dGqr~4y;SFB%xHN6j#xqhBP3J4Mx69#!xK_l2k6}}be*KZO$&X(V zF`6+mv-rR5K7UQqp_hj!weQQ;cDH-QnjjS?8DS&RrEYOEWA#m7NLRA(qFqfw+JJ3V zrqlSNaOB5yuC4wc$)zV}s`3R9nCIoh(N!>;ojPX5Ow2+o-_qlppy_-K>xY*rGjf0kwFk(#eX|`uUMQdq z1hPE?B!k_2gB>o1`@03%eT&W*0pT!X-A}-!Bp{Cr{-FjwQA|$(#J@5APH4|4#3X<% zJb+7v03rV#;XKgt-@V7hFK{Ol%_x6QB#KY~xi>2a#J5Kt1GM}nck=iD)vqq?MI0;w zvfeIN7(2fWOvFy*06>KJ0Av4^+!rM#pbT{03v?yEr*l_eC_D0hNB%S9m$QJa5&k_z z0R*zQWCQW;Aq@i2@eU~{INaN9r(DT62aFGt{GmrNVf6Nh86Gdm$YHFL?sB$5e{g;( zqA&*#*0zU7!U61k70jW aVtb=QGh;Sj1$|pp{2(V_c^t_4_U-?FL#J*4 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/config/TierConfig.java b/src/java/com/twitter/search/earlybird/config/TierConfig.java deleted file mode 100644 index 4ef7d339c..000000000 --- a/src/java/com/twitter/search/earlybird/config/TierConfig.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.twitter.search.earlybird.config; - -import java.util.Date; -import java.util.Map; -import java.util.Set; - -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.config.Config; -import com.twitter.search.common.config.ConfigFile; -import com.twitter.search.common.config.ConfigurationException; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.util.date.DateUtil; - -/** - * This class provides APIs to access the tier configurations for a cluster. - * Each tier has tier name, number of partitions, tier start time and end time. - */ -public final class TierConfig { - private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(TierConfig.class); - - private static final String DEFAULT_CONFIG_DIR = "common/config"; - public static final String DEFAULT_TIER_FILE = "earlybird-tiers.yml"; - - public static final Date DEFAULT_TIER_START_DATE = DateUtil.toDate(2006, 3, 21); - // It's convenient for DEFAULT_TIER_END_DATE to be before ~2100, because then the output of - // FieldTermCounter.getHourValue(DEFAULT_TIER_END_END_DATE) can still fit into an integer. - public static final Date DEFAULT_TIER_END_DATE = DateUtil.toDate(2099, 1, 1); - - public static final String DEFAULT_TIER_NAME = "all"; - public static final boolean DEFAULT_ENABLED = true; - public static final TierInfo.RequestReadType DEFAULT_READ_TYPE = TierInfo.RequestReadType.LIGHT; - - private static ConfigFile tierConfigFile = null; - private static ConfigSource tierConfigSource = null; - - public enum ConfigSource { - LOCAL, - ZOOKEEPER - } - - private TierConfig() { } - - private static synchronized void init() { - if (tierConfigFile == null) { - tierConfigFile = new ConfigFile(DEFAULT_CONFIG_DIR, DEFAULT_TIER_FILE); - tierConfigSource = ConfigSource.LOCAL; - SearchLongGauge.export("tier_config_source_" + tierConfigSource.name()).set(1); - LOG.info("Tier config file " + DEFAULT_TIER_FILE + " is successfully loaded from bundle."); - } - } - - public static ConfigFile getConfigFile() { - init(); - return tierConfigFile; - } - - public static String getConfigFileName() { - return getConfigFile().getConfigFileName(); - } - - /** - * Return all the tier names specified in the config file. - */ - public static Set getTierNames() { - return Config.getConfig().getMapCopy(getConfigFileName()).keySet(); - } - - /** - * Sets the value of the given tier config property to the given value. - */ - public static void setForTests(String property, Object value) { - Config.getConfig().setForTests(DEFAULT_TIER_FILE, property, value); - } - - /** - * Returns the config info for the specified tier. - */ - public static TierInfo getTierInfo(String tierName) { - return getTierInfo(tierName, null /* use current environment */); - } - - /** - * Returns the config info for the specified tier and environment. - */ - public static TierInfo getTierInfo(String tierName, @Nullable String environment) { - String tierConfigFileType = getConfigFileName(); - Map tierInfo; - try { - tierInfo = (Map) Config.getConfig() - .getFromEnvironment(environment, tierConfigFileType, tierName); - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - if (tierInfo == null) { - LOG.error("Cannot find tier config for " - + tierName + "in config file: " + tierConfigFileType); - throw new RuntimeException("Configuration error: " + tierConfigFileType); - } - - Long partitions = (Long) tierInfo.get("number_of_partitions"); - if (partitions == null) { - LOG.error("No number of partition is specified for tier " - + tierName + " in tier config file " + tierConfigFileType); - throw new RuntimeException("Configuration error: " + tierConfigFileType); - } - - Long numTimeslices = (Long) tierInfo.get("serving_timeslices"); - if (numTimeslices == null) { - LOG.info("No max timeslices is specified for tier " - + tierName + " in tier config file " + tierConfigFileType - + ", not setting a cap on number of serving timeslices"); - // NOTE: we use max int32 here because it will ultimately be cast to an int, but the config - // map expects Longs for all integral types. Using Long.MAX_VALUE leads to max serving - // timeslices being set to -1 when it is truncated to an int. - numTimeslices = (long) Integer.MAX_VALUE; - } - - Date tierStartDate = (Date) tierInfo.get("data_range_start_date_inclusive"); - if (tierStartDate == null) { - tierStartDate = DEFAULT_TIER_START_DATE; - } - Date tierEndDate = (Date) tierInfo.get("data_range_end_date_exclusive"); - if (tierEndDate == null) { - tierEndDate = DEFAULT_TIER_END_DATE; - } - - Boolean tierEnabled = (Boolean) tierInfo.get("tier_enabled"); - if (tierEnabled == null) { - tierEnabled = DEFAULT_ENABLED; - } - - TierInfo.RequestReadType readType = - getRequestReadType((String) tierInfo.get("tier_read_type"), DEFAULT_READ_TYPE); - TierInfo.RequestReadType readTypeOverride = - getRequestReadType((String) tierInfo.get("tier_read_type_override"), readType); - - return new TierInfo( - tierName, - tierStartDate, - tierEndDate, - partitions.intValue(), - numTimeslices.intValue(), - tierEnabled, - (String) tierInfo.get("serving_range_since_id_exclusive"), - (String) tierInfo.get("serving_range_max_id_inclusive"), - (Date) tierInfo.get("serving_range_start_date_inclusive_override"), - (Date) tierInfo.get("serving_range_end_date_exclusive_override"), - readType, - readTypeOverride, - Clock.SYSTEM_CLOCK); - } - - public static synchronized void clear() { - tierConfigFile = null; - tierConfigSource = null; - } - - protected static synchronized ConfigSource getTierConfigSource() { - return tierConfigSource; - } - - private static TierInfo.RequestReadType getRequestReadType( - String readTypeEnumName, TierInfo.RequestReadType defaultReadType) { - TierInfo.RequestReadType readType = defaultReadType; - if (readTypeEnumName != null) { - readType = TierInfo.RequestReadType.valueOf(readTypeEnumName.trim().toUpperCase()); - Preconditions.checkState(readType != null); - } - return readType; - } -} diff --git a/src/java/com/twitter/search/earlybird/config/TierInfo.docx b/src/java/com/twitter/search/earlybird/config/TierInfo.docx new file mode 100644 index 0000000000000000000000000000000000000000..3e62705bfee1763b80da08802d3bb6f5ad60d56c GIT binary patch literal 38117 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 z
      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 N;0`Vizr?Tq{ski)R;d60 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/config/TierInfo.java b/src/java/com/twitter/search/earlybird/config/TierInfo.java deleted file mode 100644 index b4640224f..000000000 --- a/src/java/com/twitter/search/earlybird/config/TierInfo.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.twitter.search.earlybird.config; - -import java.util.Date; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; - -/** - * Properties of a single tier. - */ -public class TierInfo implements ServingRange { - // What I'm seeing historically is that this has been used when adding a new tier. First you - // add it and send dark traffic to it, then possibly grey and then you launch it by turning on - // light traffic. - public static enum RequestReadType { - // Light read: send request, wait for results, and results are returned - LIGHT, - // Dark read: send request, do not wait for results, and results are discarded - DARK, - // Grey read: send request, wait for results, but discard after results come back. - // Same results as dark read; similar latency as light read. - GREY, - } - - private final String tierName; - private final Date dataStartDate; - private final Date dataEndDate; - private final int numPartitions; - private final int maxTimeslices; - private final TierServingBoundaryEndPoint servingRangeSince; - private final TierServingBoundaryEndPoint servingRangeMax; - private final TierServingBoundaryEndPoint servingRangeSinceOverride; - private final TierServingBoundaryEndPoint servingRangeMaxOverride; - - // These two properties are only used by clients of Earlybird (E.g. roots), - // but not by Earlybirds. - private final boolean enabled; - private final RequestReadType readType; - private final RequestReadType readTypeOverride; - - public TierInfo(String tierName, - Date dataStartDate, - Date dataEndDate, - int numPartitions, - int maxTimeslices, - boolean enabled, - String sinceIdString, - String maxIdString, - Date servingStartDateOverride, - Date servingEndDateOverride, - RequestReadType readType, - RequestReadType readTypeOverride, - Clock clock) { - Preconditions.checkArgument(numPartitions > 0); - Preconditions.checkArgument(maxTimeslices > 0); - this.tierName = tierName; - this.dataStartDate = dataStartDate; - this.dataEndDate = dataEndDate; - this.numPartitions = numPartitions; - this.maxTimeslices = maxTimeslices; - this.enabled = enabled; - this.readType = readType; - this.readTypeOverride = readTypeOverride; - this.servingRangeSince = TierServingBoundaryEndPoint - .newTierServingBoundaryEndPoint(sinceIdString, dataStartDate, clock); - this.servingRangeMax = TierServingBoundaryEndPoint - .newTierServingBoundaryEndPoint(maxIdString, dataEndDate, clock); - if (servingStartDateOverride != null) { - this.servingRangeSinceOverride = TierServingBoundaryEndPoint.newTierServingBoundaryEndPoint( - TierServingBoundaryEndPoint.INFERRED_FROM_DATA_RANGE, servingStartDateOverride, clock); - } else { - this.servingRangeSinceOverride = servingRangeSince; - } - - if (servingEndDateOverride != null) { - this.servingRangeMaxOverride = TierServingBoundaryEndPoint.newTierServingBoundaryEndPoint( - TierServingBoundaryEndPoint.INFERRED_FROM_DATA_RANGE, servingEndDateOverride, clock); - } else { - this.servingRangeMaxOverride = servingRangeMax; - } - } - - @VisibleForTesting - public TierInfo(String tierName, - Date dataStartDate, - Date dataEndDate, - int numPartitions, - int maxTimeslices, - boolean enabled, - String sinceIdString, - String maxIdString, - RequestReadType readType, - Clock clock) { - // No overrides: - // servingRangeSinceOverride == servingRangeSince - // servingRangeMaxOverride == servingRangeMax - // readTypeOverride == readType - this(tierName, dataStartDate, dataEndDate, numPartitions, maxTimeslices, enabled, sinceIdString, - maxIdString, null, null, readType, readType, clock); - } - - @Override - public String toString() { - return tierName; - } - - public String getTierName() { - return tierName; - } - - public Date getDataStartDate() { - return dataStartDate; - } - - public Date getDataEndDate() { - return dataEndDate; - } - - public int getNumPartitions() { - return numPartitions; - } - - public int getMaxTimeslices() { - return maxTimeslices; - } - - public TierConfig.ConfigSource getSource() { - return TierConfig.getTierConfigSource(); - } - - public boolean isEnabled() { - return enabled; - } - - public boolean isDarkRead() { - return readType == RequestReadType.DARK; - } - - public RequestReadType getReadType() { - return readType; - } - - public RequestReadType getReadTypeOverride() { - return readTypeOverride; - } - - public long getServingRangeSinceId() { - return servingRangeSince.getBoundaryTweetId(); - } - - public long getServingRangeMaxId() { - return servingRangeMax.getBoundaryTweetId(); - } - - long getServingRangeOverrideSinceId() { - return servingRangeSinceOverride.getBoundaryTweetId(); - } - - long getServingRangeOverrideMaxId() { - return servingRangeMaxOverride.getBoundaryTweetId(); - } - - public long getServingRangeSinceTimeSecondsFromEpoch() { - return servingRangeSince.getBoundaryTimeSecondsFromEpoch(); - } - - public long getServingRangeUntilTimeSecondsFromEpoch() { - return servingRangeMax.getBoundaryTimeSecondsFromEpoch(); - } - - long getServingRangeOverrideSinceTimeSecondsFromEpoch() { - return servingRangeSinceOverride.getBoundaryTimeSecondsFromEpoch(); - } - - long getServingRangeOverrideUntilTimeSecondsFromEpoch() { - return servingRangeMaxOverride.getBoundaryTimeSecondsFromEpoch(); - } -} diff --git a/src/java/com/twitter/search/earlybird/config/TierInfoSource.docx b/src/java/com/twitter/search/earlybird/config/TierInfoSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..d3bd1e7e91265a48f3d29f549d2ef36d14e274ab GIT binary patch literal 37070 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 P getTierInformation() { - return getTierInfoWithPrefix("tier"); - } - - public String getConfigFileType() { - return TierConfig.getConfigFileName(); - } - - private List getTierInfoWithPrefix(String tierPrefix) { - Set tierNames = TierConfig.getTierNames(); - List tierInfos = new ArrayList<>(); - for (String name : tierNames) { - if (name.startsWith(tierPrefix)) { - TierInfo tierInfo = TierConfig.getTierInfo(name); - tierInfos.add(tierInfo); - } - } - return tierInfos; - } - -} diff --git a/src/java/com/twitter/search/earlybird/config/TierInfoUtil.docx b/src/java/com/twitter/search/earlybird/config/TierInfoUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..67acf344888b91fb194b127bc6f4c2bf10542079 GIT binary patch literal 37527 zcmagFWmsIvwm*!!dvJGm2`+))?h-U;<4)tj-QC?Cg1bWq?iM5v-2LB~nRCv}x%a;B zm(4>}t)Hy5yQ=o?Y9(1nC@e5AFgUQSG#;%gm7=&La4@hj7%(tQP^+#uz|Pss&e>4S z!`{qEpV{5krYT8Yaa9EE%h?NdGK&zYmpCeR`HnrUJ!2fcL`}vGul5qli5$ek-2{J_ z`ixQt40Bv&+MN&aYQ12WcQduFxWtLRex_ytIb?}M@V-P(SBLyX`vv0R;iB&`RqXqu`R4GfZ@U^o@QG3d~mf*GE?4hnlUm7@`w zU53wlV@j?s6TWWb58{53*)L1X)EZgV83;3}eY5x=S3f?`E zfAyX8b7%3M%W6Qri5z1xo$gB#Q6YMF+@~k6N5qnfcM?Lq&xN-bPcC7qSay&hV-`5D5XJV3Fy~|&a|2? zK1{O!7=V;qGgo*?Rof36xA1%6W@l+5KarzYdvw(_1yeR$-a-@^2h3}6nS<%*^4PXa zoUf1VN}qKrE|?Dk#T8Wz+$pbNCOa?&cr6;=m&~;8e%NQCq?pw7oHBRW2vqj9pCG`UXg8I&S9%nD9E%;5wdLoqZkq~OLA!Rby z^yL;p`6&kKxj5&(Op#@^subrPim9T@FMrVxiKqQaflRuGMfcO+pExXmBEA8=tfiP3 zEEByn4?HY+;FH{x0o3eL1$?06whfdkezlI`&f$hG8~$oD@~U&~*GH2}HeVo-4sy`1 z4}(T3`xYfMg5e!|YCtsJ$OFU{k;G%25end^Bd!)}5WA@Es=ch?t| zY#E6%SS6yFP%>YozcY4C<{virzI}Low?xQr&vOBVcVvNLKsW0q{`%Z^N$}6QT(7R; z9)s#)0|f?#_V>DcvbX=EENbI+tE^}pPYh7{&f%7@qRM#j0Slrt;_LXe@tG}iW8@#> zpxW4WfIbhQ*nD4DZo&i_1fCklo)$&TVH*`bt7DHppK`uk5$dXFu^;gX)0BZd6735Ph1eg+B+#SOgpcjh-@@^6}Kzcdw+X26OsJo zT6aHio}|>Yw2`XJsu*4Y`BL+_!lQIrkn6+l&5?F;5;BSu#HSYysBw=9OWNg7DO`C{ z0yd-0^NG(;R)}8CH}$4J(Q_?qb#dR%QivQAGumIyBHa%l{J=FS+!6tPyOFZ5$U3E6 z1;Y(*JZ>OWtuNCIy^K1E?bZ?<&gJ8Rd=aOO9Q{s_Wc3NqdySr><-g_-+j`qjCJ>7v zdy4|~C?K}ZNLD7+WTGcy5&{Mjx>L=A1Mx*2eFfbp>>Mt9bXThFU|<{g z9)Jcq(OM8s>4U4z4$0kT{1-Il3tP5>tp^uD#3MHtUSMkjJaNhiyv@sKZEWjtrJ(7UFaGjE5_NxA~i2B>%iIG!k>B3ZTKj zpcw!Bz`6k(O<6#nS{GZ;;`IB@IMI=HTIELTy3@3A4mFFB|JYnn__0uKs9KeT{Z@MF zddXipR00Wt5Dep(`{7JKc5YP-YrHT~!I?B{acB3m1vTFD>GUkLKb3y6@Q{!*YY1Fv zTP7zg*XjJ{>CulH@Xz8wimh0UPUj*wz3rzgfP`ii&@34Yo=EB}5Z0-{#7S+}UVSTu zkA5OCp{g>T=kWernAcxXCYU_1W*>)9d3nc_n9M}gxEjFTy zcoANVnzq^5!Eg%8Ym~~1n9DLdC6%1(N%BD?i-j;||2!%CZqJ$tr|s46#FH^Fd36#A zERzl>N$Zi{dRop8wHR5Hwc+Nj4aH{DuY(U76r_>fA5D2L&viA1+&p^%OZDMG4u4f) zrKvS%tWV@zu-=hiax;AcMNXKKjbG_UQw<~;_B(rtAbi;I5gpuuS&>K7Tf&kMT{FcT zLFpBfK7l5GiTd{SmQ!a&!BjiB4lfKP5u|9DR5mrfbd0@V6yk?|KROcda5BV=rFrV4 zJa(DQrktlBu6I&6gDUUt<%R~{y&K9xB>0NOreYgbCITeMm^)K#IM!{}fGB}Xi75b|W%&OL#r8OnpcR>v` zRj%SDW|1x)YAcRlR+B+lyA8SA4x|Z!*7n!VyT!rD;nlm&J2xJ|Ly>jPnBGj{J{kTz zxk|8VL_sTS6oi#@Z2b)S+Tv?bg!8aGg)%TKu2hV3V3uFHtg-Yaniilg&BdE^blOoz>2?Y zW%XpNKHp-PWUeKD|X%IAj$j>T~N!2SIEONGW(wV&A|srq}NeL)&!NuIQl(qbKzzq&r8T1B7YKm z7?z8^cJzfE2)%Ng*A6nvU(q+}E0HW!;Z&71II)nxvY65g z__l<5=+ja?Jvpkj@|QMhmZe|2*rQe-#)T9r0@B)>s`N0;#Yp{PE?%gXefoqEMI^4(lI^JfXq7IMXs zwR%aa5qAP4UE(UvNM~FJ%D*b~lqEgKp9#$IgfR;Ty_%DBxK{MKv;j54JLp~w+U_Ft zGVXwk!5We?2P1In2Z+z-6unVI1ilLMraN0r&dy$a$$GbQQ&V%XGD+=C=}JOj@=F-d^)Xo6Ya$(Pe&qAQ zzB4Zme*Q9TzK2VCILSxL{q)|E!bxudMaQVlHt=7WjjJgeus^;eO+s~=4T&dOR7q9m z$`SlDyB+3ryM0?f_5J6JZs$jU!46vL$3aUyA!w=pV@CgTqx$!G{m)HnqNrjZE8ds0 zSA@Rc1gv7aho^#rHOK*G(D4cl>wnxP5YHY-cBLRTnk{@E96D z2Jl8gpkmDiE16-uw?Iuf?rD%#7qzY;h3BvB9r3B`-|{Ga9ZqA(1hH10AX`#J87EXQ`u z7fiq;+`7e6#Mz5#GgY@CFH1NgM0u&|(^Z44gWpYB^IBccBo25gz&m@vLJ02)MV1im z@DXWQE01e_I2PvTt`*l2t=@eff=Yn zgQ5N_*G|qJHfBzLteyJ$2|H5tKHc5<1%}T*Y-5AKhNtYn;#~%>MfJ z4fk`*iJ>nQnFxuxin_+f^7wjzzHA&Nx;@RT1U0jlmmJ>?n=_yxNp!}`={iq;H*!~- z?wQ6@$>ix(I{^5C=PmHCf9kGtnw`A*V)t^IA-p&YczuX@dw5zri!KpvIo{R3e^|e0 zPnmCjI+*==(;gDCd*ty_|NhnX?dwJ`3vh+RAi3mxy8j>~Wp8_Y^|+FzQjNwN?&TkI1m@ z%RwfcIVaH>Pv=QDm+t9AJmc39Ku0Fe7d}sltAvVOIv0;FkCioH39%U8V3yaewXXJ- z%JHN@HecKJHJ>g$-LtNj8}UbTl@#KBhs|{s)J-+M0&~NSw_j0}d;+(GcTnk+8*nBTo<#u)&lEQPE&7*ky=3{UM z6s*p%TYSSD=t_=kUFkkiI9QDV?A-r&tJCS0$|mUgsw>6)K=;_g?Rm#WMe};Uy6?(! zfXG*NG5FRVN=SWcEaPFoQh?V@pn;IS16QBA`w{t51?qMwDw_&PpE`+grO<$cPbi&t z=q%91wd;EL#Bz`Z!9eXHEMQg*n7>7lltbGpu}6bItORQ6We`@b1%UqBXM7p3diSP( zKOwyYD`cmz>S6|gPhb3%@?`U+<2|D=Npj7!+sv9ytO|QyNXu}-QWeU)-A(_`+D)Ho zEE8=j=y33s5g-ztxRMQ1#g1TnR$i!$eP5n8d=OoX=UkB z43$KViXg^4ECw=Jrp1qN@d{tND}6T!S?)E)I)I5uULv}|`0&1fh%E`Bx{@HYEUD^sn*NP54yIP%IvZ zBYiR(5dXqH;fx1`l7hz3{Sm4ILJJ1r{v-5HDyTA=Gb=Lp{~|b3rU11d{GlSb1KKq2 ze@OffRIKM^HBLYZXw=_@xe|c%sGxzoVm1C?B1L5SFNsW~a5Nr>aDS+tOK@vK>-atD z-%W*1;*C?T?Om7#+58eZ^Q2wG8ZJI(58%GqzB(ie?MXc!5hVRnXcA*fTbtdxHhtSL zb(d_N2qm=U_8r=nhsSMR86yRmb(5dZ2G^f%T-x;Q2E9a|`xhr%^FA-RU+LZt&F0i> zyVv}j7g9Xf+aJx}zK_}z)^E9yAc?lyVO|zV(u+Rhio<_Z-Y(VmDsd1Fb{u|NMS$BD!$XCWN(-4;cd@Hc?{u}#avQUXr9RXxRI+iUN7+>r7uy;{Fx(%Qz+iTg_T zKy>n5ZsPY#YTj;VH`UKmD5E%`$K{RgkWj<)>NwkFh6@=1FRugV#fk^x>>JL+VI4AK z87d#gGq#@N%Xy&b#23!wW%xd_w>XmGRNVm``d<{syi6kkTf09^+xx<#z+19 z*qm2w>e8Qtl{K)<9~StNGTJX;O**4l$mIBlBjd_<^*k4SF;FU%nDgihEZ?KM(vU3U zFv`@X6x>#xgWnbp^CCb`uG^t~n}@>ZxtMa1^GwpD8aIlq^Ya=qi(}L|xdqzGe&-?9 z(ayd&36JuJ0=_SZ@~zCAz0P?uJbIriV-V@=tHA@EkkPy?$8L(~idp2_w`DPXyy4l1 zKJn=k7mhu6hG=6>wv(1%q7VCgF+T0@K2x3ZDfyATd-}d;Q+9n2P*%RJA#nfGAp>ic zq-FDr{OvV;u6^3=@p}03^>S#?v;D=v19hDWOql;LK3OUm#K*@H^l6PM9iP(kUblM{-h{5bV^&TR^cbR@yo4z<&4l{VQx zz_;r8r)SLWZf|A33oe~!b%}>Y(g$R~6Lu{Q!%aL)^G9SGvUf{I>HY*2$+GFQ%v>c= zrV8zD`$1yAu8y)h1gA9FYF*x|ysITf0dtx@e*PKT3w@zmP&_@VQq)aO=ypdUdJ%5Jv%ya7IRckC#y-E`)Ex!8mA8~haIi7Z~-=s5%GQ=v1?fl1?29< zDrUabE#q{%D;msEh?aUEtJ^1Um-=xL!YrWajnSqfvTOW!h_I3xc_iADzm`M5*G(gO zLoe!b*%>F`S}d)h$HuBM6Y$I37}$#`bw_6!BvDg*sYeyu6n=TvB0ePyxbACHcAPIL z*1u&Z9J?G_wmFpVxQy@lHpZx@8uM!c(>^I5e?_xN^Dwjotu!s-c+M_Hty3lH25L|C zd#${Wnj$)A$H!lMB&4kyBM>Dutu;|4 zgLsRdv);UB#7`TH6!qSVEn#5VAWP!N>vr4d`?vn-&E{3E)w8qs#dP)lB!n+-_pgr& zgt(QmsF|$1-AnGAwd$X^3J?_3D9b0zZ% zsb^sKUT0uVMK+DP3P)j0Z~nXUkI*uzFD8ec4-ReoztV0hQVx^IW4;2xf=k&OdzZin z=}5mGy93TXXVx-r5Paz$*CbeTi)1kjIp6rS3|X>6ggM0gV?w~jLd~H>fw!Id;o^A? z+mJ<~Q*;9*gQH9VA62iKQsNrnTP@C3lKovJ!;cplAa>D$+m$liQTA;W_xvbI$JGq8 zM^RRdMiEI|&FD_tnDJcv3U3x|?GJ%4(Ar_Z9Dd~5LStg3IKQewy~QvICuw#|y6@tm zJ-tg>b>Pt2nsqte$px$tC7WwlMZ*{R*A zy_jcNM#oXlYLqRWYM7{n@>PmQhC|`wB(Es@ZXu$%jYUIRp8UCeRV0gG!; z@n?0F=^ws~sJD+A#WP-&reBFh(w~{=31WMSGtlUjF@dGG%~ttx4(Hebl;#tVXJ*+Z zURKd^**F{UB4JQIaHQO%wM|r=YIyr#3pg?`$YB?jmdA81!z!04D>~d3_p7xym~pL) zSeceVckEqmM#%PGb|8G8oY3YUvHOrhN_Nx8LdQ*#R_qWa!V{69lFu-c1|^v#Q8O@% z&8i-6=iTe^sJwSakH>`kgWqHV^rUmM{jBf2_O1ZJ7DeUrRr4h0&kXR#O4=zi-^cF` zkk{Lj%#8z&oh!q>fj-Z9xxj?gL@Y=;Av0ROx}Z8NDwli=&djxs&yko4A>--Hy)`^6 zxE!mRB-Oix1svw|-M_l0Qrb&UGrFrE-x=(306*})eifB9B2x$TY+5r_B+HqRRw3_+R`$##%PjyRd#GPglmSa?P;9sgQjwu zUUvJd?&+hr6bULWlVBn8DBH2CjK)c}`mPc3*-=*?Og?b{=bTCEZAf<&>OoQj_Pzx^ zqG3&*PfiWysa3lH@#Q)7^VO_50cPjnoz)F#S85hjf%U;k1d*PZOxeN9>$&FHJY=x> z=2X0+0-Z!V;kO~7a|x$Pm_s&mY8}k`6{PsDl4E{BON|+;&>i5muDG$1rBRHsBa?Wa zca{ydp7=h;=Wsklt}9^|hHhx-Zs8q9bz&+wU30tGEV{aHV!Oa~!h6%f$ZRF`V|dOw zMB|>rH1ZjU;NCJwy#*^0$m=rw%`!+{p`wdbrLwGx*LlNCmykJ1IGPV~grr zoX$`5(&(Mo(@W<0Jh%R<=>;vyTXMr3t`J|7e(?KkP(v=JX?MUv)0~feg75svJB;WK zxkAW78u5)l8-&faHGtR=Cj2P?lg6p3<`7w3H2lz(^2>%4bv}<5uS2mD2*>{bC6~uS zNS9G>BQOBdeXllX!#Q&olp}zPS`(ufz*JiduMn1gUz>e$qq$UR&UBfrj@C`*C%$dl%Uv2Q-!Mto~uMjAOT3zo-K27tnGkbI;% z{|GPrD}3(X;fKG&1Bt~t%YC@7?Y=`^dRo2AO3r08ST(yy<|wm3cPRB>9u@IPpr(}L z-o&58+LQ!%dUQs8FU8$h3RSAH^2O-PAn@v+Ez319P%Py<3g!tSpQ~6|lsqd|s&x^ZvnmfP<*}HzsYnzmFhFq6^P`!Q zbqXbBR=@gcP)`(nqNc=BlcIrt(??*5ex!a9QsBnH6uYPzQO%sck*VImWd0cGNw*aY zk*&lsN#@zA)>)cj6Jjc0Irmi4zaJLpx|@`J1bQaqAPz%KbG?#mCI>qn<+seKyFVb!Bc z@2f@`tg=w!$;iXJDY8lH-DOwJa`Vqgampe-caIoQj6<=U-0rbz-9C)a{y#^ z`qEIE_tmD6D!y9upHd0e*Nn57x2rV9OB-&eldembS%bx0f!~^Vr3M8Nx~K#Fb*!w- z1j5K8Exi2C3_nZ}Bgb}?Teih`7pRw))J@N8K2qe&4jdfOLR_v)mqhrT-(IOfF)n4U zOd~`h&_f`^FuW_8W6lXDrvAXw0#_>QUZE~{^h-iPQiR{jzmH5n_)tfpfSeTCFrin3 zCh{|gDj<@?y?OXFJFTl52MOC0YN9Pm-s_~rzue)Mz=w`9?VDt{M9I*`n#H(=gU=;3Ryt6Wo1c@8EPpxOV1thya9*_Whx>Ijq|Zu<+-pyQ zl4u8B(tuy_A@~Lgi%8RTRw#=}UJ^C1AY&6#DdAkhCO~7it`kIf0$=*+y%Mhyx>Ens z*|2G$_PM1l6y>VSib64|$wLF_YS;<4{bPBtq{wBIMp^cdkfw>E$R(ekcXc#*E`t(O z2O&^SQY46+lt`cH-{ugAn&c&WqHzT$qU`L@l~T?%Dm>wWX|Tap>Hg1b(vCo7pScGf zkNgaX%xL>xipLu6CtRJw4PYV3PEp(@!ij+q>h@0QsJ3T5H#_4>db6Y26ur)9alQR~ z?u3vEyS4JQ5lN{`Uk9P^l9>sr8K|U!r2hPap3t%@f%e5Xm-KbC;?<$;@$#Y87xB}a zPbVT3EipmV2LlI+Hk2XFztdoWu@*(~OG3P0$oa=?hn(ABb0uV5vH^^TvkzZ?-7 zpWi4XIn02@4`_75p9qF|BQ`Yb#{pn%CjJeuQg>->u>}NMhXY3V!cY1!-V>IM)_L+|Xmq&=Q(%syA9BD4dZO)9a3mOu85qBiH)M@e z*2JdqEwXy;nB{0A@qGo4R$!FcgiIj#Xp~O0TtO8tBJ+nqL%3#M|aDVfZMRnkD-65vpUlhkX z&kl@(O39|*{jLP2Xa{qOcVn3im$YEAFSKAgnSZo1QOU?Hz%-lCOof?w?_>_8Aqg6U zIW6St{O)f@W)F2bD)BO#()O?qECSj?Iw<_no*Zw=&6c+KK8Kek`6A2---7+xooY%u z!s-tt+#{q@WjUuwd=`6b1j&zV1piT(N3>7mB9e(Y`KLnH|EcgY^D1OAZnKixQ#nuc zr1YKRsAH)f?Bzh-ccziq>cV#%dmd_o;=L%nvixxI&d%YsOA>v|T}l9FWuE>A+3 zDd%5xr~Q30r(Y$b_+aaA3_uh6BooXG0Od>e8LLlKbHn~ht1{_+sa2xy5b=@zC4A6U zK&)QL`j0%7D%VfF`h1Mw=>7hovBB-gk}Hu}LjCBFH_^qcp>8zhjo@3>&2f@@ylgQTdxNRkfcj}#joV}fe2l#q{hz{qQ_KEAjRB&DmHoZ@ zo@m=xKu$LLgWA<}97HX^{U`NzD$EF!|AYFXYXH6@EXQ!eyX`}#5&ThAc`t_DY&IjK zzuPY|t$>bZ%JySn%m@niP)!us+5vkla?@?Q{&;SalIhw3kwgAa7yg#EfA6Kgef{WVRlnQ#RKe|03@*l6g?kyhqS%QO5e-=lmV^P_-?N zrPI)0v(vv#@V=4bD?%30+th$aBKej?xt0)<-9HYxn)$>1MHIWe z81N-#O(y~Goy!x7WrhT2IHNwN`<=+md+&0}dzK%SjuR-%uAJ?b@yS;hib~9ia8`As zloxHtCVkd{{hThsA<+}?mdwxC=jwU=b+Pha9(C@DM+g4~cI7o|`iIG%oK-hnLtkeb zSN>&ER`;m0DC|#@AxXbY@*@5=*=hU#XOdUmx_i2PpR)=GGKpDi`NnUP-AY7UfQyYU z5S{VKjM{+^^hUWpY;|vE`Q!k+b&ZAz@>(*f5lb3dOGlbHWS(Ka#d8pE?AG+E^5drA zC&veOpw%~JJ_zw%?HROL-3dNjI7m1IuO(Bo7X;6x*1c%uA4r0Otj)Aq)hC3TJ zyEUaL3`Yr|j?7};9%Ft1(eXsP9c;|fVDz5EiF;Icq88Rg4)XUh2{q!+ISUyIz6}jR z>-df4E?Nbv6LRqzjm7>JW^#x_b7_2K0I{^C{0nZY?RmXB_y$bOxft26gIi;^?OzLx zX`fJg5z*+-I>6!}dl1psNISrADZ_AoK;J;K&~okmWHs>fK-z}BZPCv@n8fKbSfDl# z=~Ud$pVWlkPND6v}0w(rDgo@(j6?dU;RLc9z;L*Jz6Dv3f5 zJX5xjl$YJXvAsHi*6;F zmeZ4)D@8xwFZNih7K31&K+a!nqnTLl;MMo6^Eu!<#1$fS*MV1`qRhlJn7!;oO@tKb zeuxR~c!rnLMdJqfm36mhJpYxdB;A(7c9H+eZypAKs99M{F8Tf<_&!h8^Z~_`fh)n- zGZYMTQ)?+P&i9#oPcj2^&nl_IVvL4FvvCdo1C3~8z*PZt@H{`yl0H~!WY9J>7?Dko6 zcC&Ip{7U4ZZK48*n&iW_H#;G>%b_)DSyODMpyRF8i? zmfK0p614$cnDW&(YbGUSpQX7f@r^e|9uy5pKyRV9bQFil5%bF`%IVgj^@|nXmn#&` z$8rDAuHtY{tZNF83?)XXJcQ3$FsaB{5T_FQh^Dr4>>gH=#Nps9`nV4(i2Z<8e7!b` zxr~>~p3}7f7)x9vI4BXzDGL_5CM>PNRVqWBUsC(U;qs{LLNTepL9uC-HR)Ef7IL&} z1>JoqzG8DDzEZmNfi3_6NW^mA6NSm@();vV@G~0q%^IH*NN~V^1PA1lK@0yWxc9f<^WTE2364Rh=N>eUZMwXm zh1Ezj8SaxvMr|rcM&l>hIamNO)F!r+?(|z87 zh)<^<0}R|hx0ent{qwE|QAKFs zNN)3G)uIMA5olqb&do%+8lEXot12S!kWa~wB^Ttnu58QV=(=F7AMhi}+jTv4kf?NP zQFQaj6Xa)j9syXb)jM4jKmw8`4@!wi$A(ca%ei;R6*A0ms}ueGPwZ>8bMe%7JT zrRU+IfSjR!74v`1jcdV!@sKv{*bWLPzqtUH&MiQ;vrT^qeS78kng@@@gb+Xiew^|DQkP@yT1c0`b_IsWP~V__%7+kio8SyyH? z16+}lZixAD8pXVdToflRBeF(U$U*ZOys!TXHrzX`j!AfiNr)@d8@})1Hk^yEnpXFxE*fz zq=z_qY15s*GE>36!#pq&!h%0Lj38*M_2Tvrl@RbTt zYt(6f(jRdCMPFiK@qP;$WPX3U70@05-o8J``QPDmki)z8FV{Gzgw%cz_}v{qHxEdx z2*X$zM6LI*((#E&Qj|=2_C=>>ZJqI>szuzg$wh7(x!C3OAF8%QWs5z}Q;Q~*l<|F? z((~w}UX;!w6dbuWqkw5xWIiWrtuDM=QC(#NHtp-f4MLvHh!ut`K|O4%lMJ}>V3A4> z=Xo%mCGsWTznW*Ae~a`yhSWPs=-o4xs$t?8g2YR4unYXzY@7E=iCiQ~sn}tR`39#D z$b9}Bf&oEQcgg#R-JvX^Z`l%U553q14c-x3Si>c)LaMhGo$Rqww6PSAmkN)>xEROI zQ3?TziHFnE2PH*CT+D%b1;Jo+2B4yrlB+C`o6zBnU~5-}bzoCxPFA(E``D^iof5@m zWVB<#uMHU$H%Su_%;H#c;#9xvPVC-wUWLJsU|}{mRQz58<_z$$aso<&8nj*}jpi#g zDu*RmPK*VFojr6gw+>DyR7PrP!)h(N+b}WS;^UdWNf?`9{NyTG(=*a%UK}68XJxHp z&#Lqv8hf7cX14%vn#zaT*0ZyuMp^ulT&mQi(x9Fm3xBcos6^V>Pu6r^R6>Kc~hl9&|rd@*94gF0eU zAX6zv-npNck%7USa%^UXjF+mFrm!GlVwQcp>J*34e$r4MeBi-xq03}pc7#;CgpoRI zw3X!_)=SEP2mZ`FZ3LBz9n?EQ&JA+edpKeAdl%4D_A5SQiVaU&N)f480BJ~j$th)# ziwIWbCZ+eszo=M2RCtlUsaPWhjkoHic}zey*;74ONjz~X}#+Z z<*Z{j)kr>mOiuIDqh%O(ah*cqH!d=0{6yweTmFGcqnM51sP?L{6guGPQt;K9yP!~oB z9&GBzzp5LXT~<~uk!B8$ZTa+tC6P6-gDa3vk3nsb|GlCR!uH;`L1`~ARiMl^e-y2( z6sWX0ja~yM@ML>J!~7egr?xgE47Ema0@pV!ZPvR?zIF~65Mx3T^wnUblLG&-Mp#l< zZT+DHwGeiMVet2w@hQ7}!z`iPvWw!)CWZG!!#vtmxh-XYX`5T;zP0b|T62*}PCSXC z?}POZ7Tc92ru6nShrdz>1wqGYOQ44i<%-`N*klZnK4MR(aliI*vm>VVk<1V@joV>` z!%oK6k`niNWvz8^6m zV{iFvz|mhr(sORMR{)gABJq65>&_ZnOJm#fkkn{xDhaoKt6JIf6vctKoToTL?p6X&eV3P(=xSR|4PI3(OT`$rVG)B6x(shOo9lT`Ear z)f`zw!FJ?P>k13Zg%E|-&kewibJ^CLKhg+*%=yKY@)o~4gU&m+IkF>E|dC>cB(IZ*O3oSl@cUcA~`cL~hJS4)u>R$lwXkxJxk! zN^NniP>Ci$)6=w_%B;4x(i?|$5Son}mYgJE10r6Ye~6?we8a_i%H2MLC29rGGpb~v zQavtv6xNm(89W`DN+~8?=?RV%D&2j-gQ*Zs*O>xo@MDfPMIkHbyK(b=^8E$%f;cfq z)Ce~lXI6sgCB#Z?5Rl4WK-j;5bpH)x`x|J^ccK$0o%d?707n zpt;3?#RiiO^xltLg?1S}O$y;WD>euVj&3d-EAbYgDFo|CSV2d)@DCqYQvMu74Q>Uj zUV3;@SorQ*9Tbq(!bJMhfos@tVxv+coGN~RAj(1!={$wP+-CJsK~Nle$s^gH4vbJ~ zrV?M8@SHfpXQV-y7}PCMdJ60GBxbG*#rk+FS{w)AO+rZqEr#Gi4&9U`b^?lvS)Tf{gWhz-WhY{eltMs$&$#2C;*vvNcHp1FQ)vINctP@p`p9x%*6T6Bm6%4DFssXCr=O9O-F-@*~wsJqvJkP7!X4S03aj_(gL3Fh*jeM}kg(sdOUmV%s>JhEYQAUwvQQJ-VKJ+SaSMkMA~- z-nj4g?b?7#@2eMbHhr(o40i!En`-EO&3CxogH<94}|h zpX!%reC>p3x|e_+UN791S1xsiK6-*Rx4y-;4=LtAU*ET8eP1`L-PLiQ!tMv=HvcoA zuZNIfN7>g~_kxl)zBl7>r-b30pp1}~ls!-1)=sz8JtxQhjGI%-8_yG-<%ReJ#RDmN z65gv?L&K2lmE4fk!NniG)yS7?ue%o?Sf+;sYU~_%xA5W`!^THzni@_}sB!gG-W= zAn?)inOXA3i|^awx_=A}*KBMLufV#O+x}lGeRpT<>-LWn zi^^gCni`v(IFELBU){Bc>`X5#yX6*|P487JrYo>GrCo12OyC4nT# zEEOagF)`yePfyzqeK)g54i9hH$;ZBD$uWz&Zv-U!Z)JlaldGP--np`{f@j19!oJ19}pPe2n4z6k1BkRNo02RkfM5tJDBq*mp{@X7+JgRZw3ArvYNwymn!IqM?PXBIqgyHCr=x%WWV zK$5PU^`2l*(;?_5l*o9XCXU-1VJ|Jh*RF?cX(X=h>f7n@l^a{>y3Fj`w01+B)xm?4 zotvM`d(b?^N9hmew+_>8v*H06ueFH{-ESVzb}NugYl6H zve)cK$-JE*An!+BE2BMfwIRehKH{5}Q1ynvl;B`*oOeoJv?^d&wJre#VY)vuG0OgZ zSdB3yk#{!DI|hPn_xP}S^p=g#HF|93X2bja9WA@&X`bnfladyTQ*|>&o&y%wdtxcO z6~jpTDkhUQz8u}4GjmkbF!3=+v-x?gp2VYiMx$_Z9~@Tc1|>v1O07ER%2B5EH=Wn6 zl`Qy{`_?n|j+R@T^>`F?WA?YF=H!UXv$<5P^!dMF?6H zOS;gN=r;8b3s`QtKv{{^YCq9{7tJ30UMWVSDEkllTRv(6>>+gJL}~q4C(#q1VqHJj z4TWITN^Qx(Yf-F0@K&PRfluCRLo9?g`+3R^=z@ia_A&YO<8R~ie2TJ1+&UjCYX(D6 zRReX&wSc{(6LeGU{2uhL=--3fCvCwAi%Wl_H2#MF z1Lf}n{*Lm$tH9%GfwoW0UxDD2o3R5Ygt2S^LkSE5fpPsq>tB*qAdZ;O0ia>gO7ngbpyE_na@2FjLF;4dn1K6PCvGG`&&s4)V28!-M1Sos6Gu03n-KMa*=? z-u=g-{$>xVEz5b`j)F|c$WvU z#BCfE_x0ZW0q(@n>*vc_Ru}gBtoDtkpUl;;&F!Y)+112IJ8i-)yT{1Hk#n2Ndj<-E ztfrfjHw4WUFEJ6Om9K5go!d8;F+M*>59S}oAAT%fKU>yK>NygHUInYRo$_W*d84O2 z-j5v5~7J5;`sH&0%Tkv585TrXN@%8`_>dE*o=fZpxFS)Di3SHp0ijlCf@xwgjJbC zd}%!2#@P|JOH0{Ga7%QtOosz``5f;_5GhYxy#)_$Ob_lUgI!R&ush|z%g=#;q^ zgB*s*RVDW*L>)-#CHJru3|tNg71`gXvV<7uEU(0h<1@ZKaT~89`$c{K{@qQhtfN~vDz+pG_MNHwH{_G>3q2!l zhRfFJl1gW9LT85>&K#R>_NHzyDk$uLPv!*9(>$L><$j}zhy=Gk!Z=N!?t_so!zj5< z#n!2?LO*)Q1PQrYwy)sgoA2DKY~&jRjR`DvDK-uLSR}YF`!e}1(^K4akeb_@?1J;n zr0@RQ>K9LM2H#yI58OdmjEkiPPaT0gkCU+082 zY=-U2?6f?d68Pis`Bp=HP<_FMQ}xMxftn1NmFgryNK|ja-oqGkvSVlUA!{G|E?<$- z`*bviW<_b^$7zor7i%dQQ8RkCmImyGpkH|C0?H0j1{ZIeYn*u3R0C7(OHAZ~fcwCj z*4&_kE{_`8aMOzD@;NvKOR4PI`i^6N#G@7OYW;ke@bh|m_; zyJ$aoPixHXh_3Ux+V=?J4Bme?>t(iRGU9=Kc55sc@`}qb|2p}}!cAd;Q8BIH;Ck&2 zNi_g4fq%YAjpZqs^XO0TqktPcFACr7#kY{OfO7}gEk_=?9&b-hXi!EUr%$kXoc^Gi z`p|>1y9P2+gs`^jtX{Ve|2*mRu1B4l3NAu|7B8TW+3UUaEke z+!3yOH@U6fN{-rQK08B$-M>>I3{;XgxW*>_(&5Iz>-g^UJ>ZPJ*WP`iRp^_oN{R+j z*t(<3W66Q-c;}t+7@}%b#28^?(Dx1jH_Fx_mryR*duT8{Vc_M@-ZRhIyvCF#y+V{uw-;|M}LoM*} zMTu5)LMWTJ`vZGIPho7G{eD+5cS`v~K2C}@FFpKQ*;9&xmuL6h9YoLG9r}-8NxV}p zD8renY=Xz{EM!gLBzzK&r#J~kCQHb!9GM5gj+<{UPCqBcwtkGY<0t+6jDmjPB^N!x z$_ho5DN9ZY6E6LUgzC^g{Q(>$)XWS;Y_ypOSH;;>?sou!cM?H8;q~)={BveZYS^MQ zSy|R?G$?*%1hJ~X3CBSq!Gw{RbU+;onHfEj%v=#p+LRNMd#&VY4O(? zEx%bjJ8j&X+?Hratf+h9fx%=|#$MtCqSSeV%vgYPQZRlF#zhXRXwvWYOHZwyc&w`K zxtg*eEYp_>Luaq9#@O?UNeJ;~jh}b&TKI!@vPa&^RRLdXvQ$DYFVtMWUN1a8Gp*a^ zp`ROU7u*k6?xwg}z9*fx4f;yK-DGa}GMbC6ZGG>cdsbBSWva8tUg!j1dP=dG<-tgf z+Buj`c4~5_ObMNwc&SYLPGc3*T}er>F)R6X=P+cpoiUZI`yP35pC#Vjd@nmoXtvao zPAe@#7QdSG=E$OIsN9hN6S01IbqNbST%?7{x;k*y@xVTh2Q-Y%;F@k``|M|tiwIKb zsM-Xt9#vW$XO}9~q%8B{em_DMyLv5M_(uEH)abJJhnes6MulH_n>XE<)>E!U=~Dd* z*e?7pw@fVm*U{0pz^Uh5d9d8+SoPL^0)ksVyIv^ZN;7QPAnh9=R$BT{NW}VgcsB;E zq(s<}+waI@WW`HfedbO`h<&!qH9p#QUw%UXzf6cUE|)mS!5d}te7Wx9Qp#czd0#3F z>ma??wa>vXpo5f+9CG}G%x$;~x0+S+rN^t6w+?X*vO9TO*od03@31XV7O9`k{pxm? z+4C}IP93uU1o8&@wI!@?2rOM-?h`1(u;Nbpd>kw|&U@?T^$%%9UFhaie@9)mTqcH_ zJMld|P|kzMHzy?8=mq~mohuS*)zE+?b0l>QAP6yG)5k3o`CVhGHgqm6ax zf!d!&*Rg5pDF@e~?Bp4BJ@?lL7WrCUADA$vLnQ&SqHtPv#mbjR3`Hr9HvR*xtT3yk ztJQq2Lp+gi)t%$ZyPKK<2oTruR=((=-YN;l#rW4VODAg3K`mPaAbXXR;Sbpem zIXdiaD~hV)w_tREPnA<{;v3f6Aq@7Man{8GpW$VorIo625;xe>;EDsYnYADngz&SJ zY|oH;Gpj+!ZIjoV+tK@STP}zMM}F!>e5+^AmiQWR6W@8}Hus1kDYm7)c z_uKKZFGdJCRh_$wACOxN_3pMQdz|}15AMjetANQ5sMUPH$7a?<|4(y(R$qA+ zclOm#Pk^^5l9t`lUs6*Y9sZK~vvjqaFM3Ft!|2YM`3uH%Ov#Y&?shc9W|l42BA}D| z+HqeV{K?+YP4V~1w#R_2;Lrbmb^wm3`@Aok&YbPsSjgZ3-UsmQ-0N^kIj#<5t9i&W zh1{$1g?`ua0=X~x6HHnRWb{q&F0IHvp{@~mO(lG2fFrRD90}#?8HK8?-pMlFY>l5LjaDns(!cE6(gyP4Is}@!2Rd>c$~e%Ze=c)& zrV#B9`Hd*Ow|o4$^X&4JZO!rK3ftWbY)`uf``&29lF~Mt%a0hB)fTsUc3o9N>9s1d zMPIPef?^*^YA<0zI~wp+evR7Q0|Z6~g!Ibm*0dT>S0tx_Xu#mDbudvpLY+%mQE5g^ z#AY-^ZL>g4zss1{gRZZIuAkwPYDvhOkN=HLzUOq1ziEMgh=9cvsrjk|6o(O9bXliL zu0Q8-g{ILV&D-YQ5V+pOK)qQxbuo!j5E5l`m;!vFcnWP>DQ;8m*Ac{}?QWs!=6o(* zaa z;T>jV91val=XmE@+n@}a5fEq{u6}GRo1~<<^VD5uo1rK5^NRAlr!L+S<1wqA%q_k; z;AMu%TII@i#Bg7{G1+>)=7Ddy$tP#?iRkmvY zPy(2DMt~89;t)dU1M(TMYyW6Vu?i^&h$uVDFvj8>;sH(P+T?1@4AB*U1q5d4vkTr4 zi@JaJOh1UQz0kN@7z~|kq`4>r2BkPE*|>gaVqs`9hS~F3Cjtx;5lv*K&My?QdOh^| zvPwOx@c!&ZcWuZ~_ev%*vAKN=iDmt1!(bQ`G7!RgC&n|?aFG5v1O(Pcj!02%Q*74> z;wwP-e}_Z?{ddTVH49)!x68jm@;!wvHCX&BWHuBEnQ(YNl6-%z@?;4qn2R;74JOV8 z?PCmzNR&!CvzXy5#wdcl5fr(Y;VpR((pp!lE1ejKp(RvkzSp^=5)V*qWtsi8<(JP8 z!ueR4i!@;kV25_0Fd)vqMQZuQc5g#r8ecwrh8PWo`4!bOHSL(NVs_jn^&728r`WRs zC7>O2U?gY}RJJ;<1Ee=z4}$A8Xg%6dx6XP0v*d;ogECSt0~-l2+U>1VEO># z9}gIOP3J(pR}%ptFdzss{U|C5Lp<4HNl`V`Ugt-#?$lx+5Y`2}G0r&j!rSKIAS7+X zhn=DjTz(sfns#50V^eF5wOk7NfL7To*mi{gHU2k$+x(| z;UJ`7{2ZXyxJBM0m3mE+HmEQea~-x;m^ja?T){AWY$3chsG95{tU)^I12CwXujBdP zPqmaeaHt?SnE|BbxqR~s->6OdGADs&!+#IWvNi-r$0NxqA=!}weRPQP#6_e!qf`_`Tc=`>&z9}YE% zp9F_EnUxfQKB<%R`$>3`Xb|K$1e8wT$56nKf8GEp@jE@z@3E1gwAqarox!mC)D7<@ z1!q2v?q-hOc8;EIsmZVqS(x(s-5Y}dKH?t+8RYnwXe?^UW6_td(Mz=BZDbLP_$jK4 z9cdlUByVH7$Bkprm;-WablPX4pJPgLCTfm{^Yot%T#sk#UI(hU7pjP%n+CdzolBtl z^e3{X)$2?ZjjJ>osgJg%w1fSSKYCF=^nGPGddHjVr#brOa74GeJ=hRxXncI{y-@Z2z7NHwujai;A?x?C>VF6jK_4UJ*DMXB7XJDmf9Ao2|oNoBA;Ca~A?I>AT z-@Nd4`%cenPs@9})p)-tWqVWuCIZtw!PV__>j$sqJ=N16KU#cp_jnuicnjdqQ;<2A zZBM~ZUMj6K1(;81u+cQ^(XS`ny_hi$UWBdggs(CSQQ{exYHONj8dydbI4qLDNNAkU z$nNO6l|t3!4PE>#Y;~u1^#||@rqjAEnp4p#iYYKk+mAS za2Whgl+IP+(LIXHWCoA*qMMhQ3vrLPF}Ba2^*>6^QM!GTy5Db21z|otL2*`Y<`;8) zrF2myeyqSrelAuR$=&?&mWZ|Y2*ew{NXtWuVP<1wV4q>;7@ceToG|F)Cg<@6bS*ur zCnM|TW#i{dO`WIRV5^azl37&Gd*VWmnZA%XsDa1Z`jjQyFF?>hyJ^rJJvU8-yun1a z>Q^MpAhshu)yoM?(A4Jti=K0&BY6FRf9i4Y!<8j(MZCD6&^~>Y6FV7;Ka4q=|b8&{0|55`N!U=(XV5oTkEr8%=4X{HEAlgsl3NHHJj-YKC~ zxcPCoEXvF|C=?swJOT}i495Yz!nI;5b(kekMB!f;{}OR7EXwgm1d!GLTSUyTSd(mz z{@(&v^I_)^=(~x`H;UNKQD!bfX#dc1XYwQTSEZ&P=pjd(pC)hu<`|#)g-b~@K_Mj~ z%zM)<-D$r7`TU6w#X*{B6tY?@5na|h_C)y#Hcgrtv5!%Ri~F}2=l`o1OAU_SRxMSu z85#N_%2e#XwYB-rHHjK|Z?G%1^ZN7XZF0bSX0&y1zw^HMo3PQgAnDc0rO`8OZFn?o z|5)H{@YbyHmG63Zdz;!9%DO^sGIf%6u*zWhShsH(&y5C*E!-=dg-ja=UOr_E4V*hI zN9L6ynh)bMiW(_9H-t8D6NXh=IO1&wVS2AuDyd=^+--=8Uh@hIBY;U0Ym-!YzSQlu z5famSU#>2DeY|hS%zP1R`4kV9cSHy2ci58bwkzTYkDV#u2=B(D@YPWzT*Yf(-MZ(;&+F`tY6PRY5l%v2@Oz zdYaLcihd-XZGLwMynIo22p&#{*$8ERclK4#UEm!T7>A<1cNRYlMvMqNw1BSzEuZ;bRrphrix#L3vne^lJju@U~Q z!V@&uT;Dc)NLuyv{q9xKUHM-+RPs-NI^JFWt>b-SvyqML|3Sj7P%GPSfO@&$3P ziGO3rvYyMFw&sa4fSKHQfflnCFH#&JRRpQ|hU3;`hL^I`oPJ&sgj5iE+gZ)I?!(Wx+{}W2V#7nS zl&Cp$e}`c9%_5u=#YXB*KFWnqv{7p+(S~9wRPzsNg9HO(9cFXmh4CNM>Hy7up^o6C z6rcZv+7OyBu#hS6kb`BTjRO_VNq}N4UA>2aMSU190%YbbrvC>zPd3I#Prgbvn5v*Do|=1s=jCs`4$CanNa-%hmQ zw)`-i;FP%#sooQ_^!$cbK&G!gH(49SX)Fo_3?74J_-L{;gJq*C!(v>ShQv3F7b;^Y zzdUIl#W{lvK8%M1(?YT0xWwf~W0Un6Xqu?9hFbOoj&h4ys%{Yt!!RBoI5m>f_=vhD zKSdAQW;hhV7;zYnvHyImJd1Iq90Pe&m6^~roHJU#t#sS@f0M<-uzBy*`=qWBAX7&| z`_5snmvxq1xQDplXRCJNbHno`hzFXb!Z5a*wIWUBaAsl{>!=1({Vw$KZ6&xzu<{e~ zbBm;l-pF7jQw`TwhKEg`G4+&WS6Hp0PO%u$=gY)(4{@JY^UxZnqC`QYpNE+U3x3&2 zHk-L^bMN4^^}@B8`I1~xTId+fEZ(@Vj0As@y=GMmURG5$YEeXB1{N<$>8<<_-(N@~ zlH39lS>Bh6E@ccQWJ;lA6dOQ=Cyj1#K!Ws4osKA`bURBnJlz^bh>WwQ; zSm!|yE$d9ow;YwPs)vB-qMXvJiZGdMt<*p*jtR>Er!1}&l^^+1CGAgVej_S@iFu4u zUYMZD8f|fqG5cx2Hb3&u{6(j}DmtMe9_dAsAGtmyRc^fd?IbC2TGsxNj7AhQWqLwU zoH7VaRcRs@Lye-IMher6F_7+j)(o*SeE=C(O*P#lKT<+@#1kj9iT5W&Qve-sCUC3N z%!&D=fJxif5JYFrTtv%*{U=lFyHsNiREE@5ot921R$--4QIQ(?Cu%Y5KT%1LLMe%t z>Z#HZRsUsyZavU~1bD1J7R+=-COwlptVQjXd!Z(KX()|kFLg!IL78oW8x?jFnI+n z3VubJE%336#TuLNGD#9=XJSz|zuHaJYrL;emectiD0izidy1ekO(vC_C<^jyNR)c8z|Smx7@?4+2VpPb?&>Ohij)<_G_!JHF2t2x3!JH3$3i5 z5rhZN#MHIXDYHG$LX^h04B{P0_H;wH9mfdJkmA8$%YN)S4U!=IdiIAzi~Zy|AWcbN z&&I^OcXR(0%&y`2ub2rFTLsgHNU+do0MCVS;6j6v_F)suBz~NpZmv@mPw9`+P&lAc z3RR#|fTAFHydz%%ZJx5hdCmQ-{;lY4lmGc7ysNOVb$P^vbZZH#+ zG)FP*v;;@7?`iRlVwq`)j>CvBGCbK(Bzvxfkx>a~vFIbL{5Zqs%zvC>5_M=d0n(QW z2wrr#5i4SeUCU)lLe?bNTT_vYQXSl*I=Dka657##His`-!-owky2}vNdPYD)qR758 zrTtULU5}b9@5iBV-h*joN`aTm|C*u812!{tG>FPYk_jI+3qp|%P}N{p8jKiRi!0lF zg9MuO&FmEM%QWd82yMKh7gDYx7Vw$&v(OCjj+Ye<(pm6fY0*=%Jg+`^B-nuazr&JM zh-xKZ{1uijkV$a{CnJ0n2lW7>iw0{M}Qcvs?Wa7HTyX{u&-a~{rBgXppwz-$)6o$_4h3cP+w&n&oPb zgXa59e(xX&#Z@kZvsj?|^=G$Od?S1J{}qJDBmN3{3%$r1`3o53eRJ*BR=_0fhiS)F zxDYUq(BFXsB2vHILYwM-2EI3pf0(!v&+n#)W?Dm!hk5CFfizsmKacd?5TYX!N`%GO zB7{;3B5Cf7hb=v6%Q) zj1db2{1WBj@&EImf8IS;@=FvaEXi_ExBS!S=a^sMzi{`F8I!7jw?Skg{XAaPw_nf@<_< zG1@4g$m)n^$RnP23y@8!ka}pT5$lSJ)#dMzon;m@*@)x@Hmr%GLuGftM6lnWrEQqCo57rD+&CfIZusXXfi##MiM~f;Lle|HVz_ zGSBml-izBHP=L#qoMRwN*&mp)zhU$MWzWh}gn#}|C;Qk61)_-7WxHd2FBk}o3veNJ zH)g&IL+ToAnED>E$MI#&is-k>SkC?b8SE3FjQ3)G&?1M*>`=3-0mDGV;fH|42df zTbx#cMEVa<&Vc29oUA$o&&->1=GNYD7SyXDP^4a22Oaw8Hrau6?j9*t>EU6s(=-xrb?W}DAmmf$sq`mg` zK)m?l8xj8s907oIX^vUqsosAOLm;rk2Wmlzvrw(^DA?4_W2$I`T1%v5(hh-(JEt;^ zLDqv7sm4gu0%}KNXKxl7wUkpH!sb9($c@ zR8A?#u4HK_$!0|9&ob1}Mgh|RYN(cA2X#@#0Bz$u?fvPV=k%O;Y_A9_B!(R%Eu4ix zK|jIGLgNLfrBkJ3GrYQm7Qa+q(x_C~N5zQKBD@Jfy8MvPf2=s7cp&HAtq`z`b7n&Z&hZ~oWRtKl5{k;o4RYl9 z<<&4T`Hlrncmd(~47I4?G$?F%0l=Fuz{C9ZE*9t*VI=1oTV^{Du{H^oyjf@? z)+|Zhp+*sMn0-T>#u9=R^1UlK_U&4liYl$rY{lf&U}xp_Ii90pMQw6Pyw}Y;rj&Vd zgDbYxmvUgbD1i)27umdEIFOHu4JM^AMt!HZSMOW$^Rr>-sW+n%KP_QRN^2yeTU^eL zUc%ru!4M=TOjsM7rR%pKQ9fnbG!|8kt96GeD3@Z@=$mVd(23^ts=m@$PuFf zl4*rpgqKy6mzK6x8%SwMGvsedVqyd+8UQg@T-+nE;;*p4gC`C3n=)XZ=823;W1=qt zc$R4L?&&9A7PKk?It#NQ-p7gSVLvsYk^GYdR!S1knIp0PIOB{4U4UKhQqYK#ia04v zFm1u!>OAO0K|^gvOD$C6{u{63&@rM@EKxoiE+SZ+EMUr7xZGqe66lx)}O3#2_ zz*{68Iqj;H^lrYKzQ5vr2I#&+D;pJLhafD<(pKRFreZNcFkYFc@uH~w{nC>Vk>f=9 za|<&uIiXc~ktJN>HvS_ald{aMrLgfZxlj>f+-mQ0{GuS%H7GCSU$12|j6+p$-kAO1 z+(rXXLpvI-_{BBYAeLRfV)F?rJ>FOb-jebWP-pFSl*8t@7F1z?xCEOPc436@HyZQ_ zt36!j!v`uC{BhdxibSP&6~e=%xI)L_o`N-DK#`UJ!a5kz{a*w;cbg8A$zTQkMS$uE ziWd`i!igit8%$h5j-o8YVmx6nYeAHxjHFCPLImIz{CMD~oG2aEQlKdUkTlXw6!U+U znn_&jRPEAomPxR{K5TX*9k(LB&kf9u?7%ho!eSCjaX)487pcm7WdH2IY&u*>-enO$ zj;iJ1wxTUb*&airaoXR8tRwv4lLAEe%aGDka3CM))vRE4cY&CUxiv9oZQwZZ_DIts zIm0`tjkh1G%3T`IZlAZ;OE#{%VaI~Y>n8p41rmz4z;%h@n@4^hpUlo!j=JkG3PC+!#sOqWSWU~Z} z^|XF6Acpu;h`5YJXMK*iM3Es{bO$j3!$LfuIaM6+Y4yu`bXG=9)ht6}3=oHG$b&1l zp^wOH1`}VicvOOdd_sbnkQhcyGPbSu#dz)A(H6rvIBU{l&ll8RD6k zjn?5>9v_o}L4bJcf<~v-p#Z`V?uTwefH<%W0*0lPHcK-_Mtg@FAPzj6qb?Dnl4l5w z_@lCCPl6IP`m~Udu&ku0wWr7=fo1R}6$F-~rl$TD5!>Udy!{NK(o{{v=v_~Me_TJ|@PJr*wX{d%-~ z$G=IjG2GqxCFQ(+{ExwbQ<%=XoYgC#XQl7-e#kk23YYv=pbfgqPL;EI2{6-H`om6Y0!h2_HvHfeAu?@PpN2eX!+ z?Taf=K-+i%kVL4|SV1b(PIP=?8LuDB_6@>U+FBh|epo~3XEwdj2P4rvoRx|y3kpOC zzsPvb3*^L3Wvx_KwW;_a7LxQ_H9$4C8b#m8_I@KSbD~Yxot0vyo)n&F&K2<1djv2nR3+qgwlK$ ziPsYB=3-7?$lbF85Y0>8w{G`)R3lRm{-`jk(RQtius%Cb8|1lWsHjIy_U@>N+SGyF zbd*$NteoZFdI0YF6>O2}Ge;nn8rqV;9{y!>9S%LbhA%qd^9vbwN66jPg6~Up2&Ph{ znNI`kiKqm(4n7}ylmTXM)r@3A1RsNSefdZxvT~=fQWyV2qUL#aO3m03gDNYCZM z6qC2szF9<)ozp94?WIMwsGsXyi>cgo!AsScABx-5ruLl$q>%Ko+O>@0i-5>_)GP0f zukVBhvE~2LXSuoq`p@l^r`kst-zl@EpY#8LG{JVSmnPi_?Wo?>me2dkU8(( z!NWwA1Jh{M&xvd}gk8xZt;mi9l&mel%}_HhKiRdoaJn9-NY6+sw*ByCn0BQL{_MAB zgHqqmzg#jU{t>oiGD-u(4-q@`Dslr~pxuU9+-NH^a*KX)>->4*;v@l#|0M zc!A4^!B^2TW@_U$#NpXr5+SF(AKlFf5fQqC6wBuQWW(+b@}G|V=FN980rpJ&4F>{( z_HW0`fh~enjf`#oYMi>2I$-~ug<$l@*GQVQY#H0677SFn(a`28Bz$iWbb@-Ujf5-V zj)mXf_-*4@uIi<`9_-@1uIQ&JKm%cLT}7q9NqIkJpN&5r-UzkZzA!XWiP6!u|LDha zWEcczE%rI&Cw}Rf3N@jPc}9^8MBm9kJ=$z#)?PHHX;)9}$f=@&_wlZF+jP~#jD{Vm zq%t0i!GW8o=Sp)vWMdGbx-}!wjOHYq3qQ|@0%>n_!S@W0f)T}w*C3O^+2iZkNugki z4Xk2~S)R1>3g1v2H)0SMPG-|FS2`YJIkLe&y~1I|lPVA^w=rjbj#Q?1;fFX27jGR2 zJkCPJMnfjs-xwXYH_%l7_AQf(*Sz%IcNB_DrbIQG6+2S6NWt-NBmdB(>tcNXM^^m7 zi;K>Z)SM%;h9cWi3B{x`=vF4nP&%!O;WRQfI^6?2B^=`MLeqFO{``nSUv%QVQ zA>@nO`?4`+gAXNauBXLBD-Uiu>`rF%g}f0{kX5r7*bfMlPi?GS zJcU$NY9bdUG2sj2InJmN(x$XChLQG(fgetFpqde3+$F@wA_YMw zu8@~lcWg3vqWs3XDG2+%vNaF00fT^1;&ufF;_^mYr3pk7H2K2*lyyD(2GSlY!D2>nUwmwI`3;zQL!sQ<r{;M zmQ+$oX{tig_L(c*1y!bYXlbs(A|3Yyz8bpxC(%WkdU=bY4ZBQBJlsrkLHUn6uO|Cq zD=JIfz_%VBG|ZMW;YAWOmcm1GR$1A`X65<1q9v(pcPFyga%L>kLTF;;m9&fIEm({- zXk)y5)MmyyRQVoTE?*}yq!M-`6y&wN(e)oN${dMvD#Ua=itk^TXCCO9>zeCeWV` z?$kgE?Ljkrnzfb`n~OEcBr4N%y7G0dpxALpzPV1+wDYraJ1kiywtatuzkY-I9J%zk z9nI!vard(66@sx4gi=;Aj0b{YPtspZS=Mx0i7iedrgjMxWuoc*-XZZD@e35DN!M
      g8SZVDkN*Ag_?quC-q*bu_5pK;hk{_nvI{ghD=roqOHvb;ao74dP3zU zU+Z+sT+ta77uxe1$J z;@TVDkzfm$_5SXu!2iR_qP&c;TBhoUsn=@cwcmZ$*1X%Sj_U@#(P#IOR4& zkcyKzNcTGYb!Bjd8dE$dm-BL%p^z#?E8m1?Mcsskc393L5BV&RJ?k8;;har`+BqjO zrj=IjTjJhYRL)Y7Hutl+u%?^l`(U6$`Bvl#Hg6Cs6h*IX<_tNO&64wYYJZ&~>?zp=`M2fU{7bw}O|roh$M2 zrB8utxxM$B22{+lsWIOigQfcZa42`#`z!^9{S6L4-?uI1x*i>Vq~JY}e>d+qDN)s^ zcSZP}sjM-3z!45E?``o)vGIe?H_$TXe&EM6^beazKLPGUh`^nPAED; zjCKn9(|L-;UUF?}_>kh)eMHCLG`jhMhn{fkStRsDy?k}Zr?J!gCe>O|!14Sg3f#sfu0Z8qi7z@OUM&u3$*{RD2AXl(2OTxr?X*ow*AXyFXh>-i| zh>DUG7aBb+R$LyLo=7#W&9U0p@vh*8?Fr+uYowXPYPn_{RnVCu?NBfqQbT2s$C}bm zAQ0t<8#9Nt8gwY6HP3_PrD_~6QkvWZ`_Lh!-B?|Y+`Q&Z=$9N67}oQD>}4>(I>+(6 z)#?3${%0(94Z2K>N-0%ou1z~3frF0KxCns&C#R<34te|_xLL^r?QGp++r$tCfEF4wcxQSZw^U9p1O=@x^iM*iQZ(jF^KD&?YYJ;t1z`B>^D* zd4DW?j}mebA_ARVi(;u_A*too?g2@v0FF&JF@bTQ%ZjxGp&kro;aGuqS`!ZYHtvYi z9Ee^y5*THxk?Kv=!ht8rd~8M8x9+D-h@*)5!c+^zV{}!+n7c(8Qr8ZbW$GNfy#7CQ z2~Hj@_W<=!19cJoL)YKkVgIA!MEs)*Ysnw-I6@WVjtHWeznHj3^9h=_ILB!MvJGCb@2n*TxoeS)K0-&wZp_ z)G7oLhfxG6w)${~XYkE;;!7}uTjm3Z?F$y!4Ut_J9xK0!I}?Yi4iUZ zLTj@uqetlBPiafOAr@2l?k&&9X)^Yu*7bUspFrp+*xs;uj*fbsiULNpioYNa*T|})qTfltY#6435nv4=qO|6_H?t`V!D-F%AVT`>S#zGeK~H=L?sGIkxrdQ`vNN4!eCl ztvmREj&RFY=E%au>acI{zA&Gtz62U2(B1;vBmFM(}VZ;r;YN$6kqsbs(Y$0{v; zE-b9o}~zz$@gh*PEckZKMbc7q06d zow6NKhGW_3m4o-6X{S_|Kb2wE(a^rlwfhNMeeAu*&HhH+Sb#*Mt1F|?kmD!=HJjSKGJ zZow^Eamz&Ask<(mI=o^x5+1Ik6VoOHrEcR;!ih?8ACgLwh(kkh{&I9hyFG?eV0UOrub-*3CmX!Brhgsur z%D)*#*(7U>DlUTQM?_9}_;v)%jY}!##KbkX>_~Jj-W@zeGIDP>*6-Fm3Qw3vpr{%w zVn%X*19)6@KSZOhezzE3IQ}&5qG~va8Hptdz(?qjmNcfGy%VlX>DyIJtL>HcSbZ3T zwdtALyY9J>(-({Bx%s>UJ)ozdH+mT2EzS&OpM%Nwy$8K_AOeNM9Sou0^ju!MIe#P- zg<_WO?f!?~`v+1pafER=Pf~?CXH3Hj)~!!IJb>*~%<9D)jJ+bS0aG;+nC*r*eW5zo zJieOFQYc*a`5xo+Lt)MY>(kB*-(8Cy_ivb9C@O=V;~FQZVw=HTG zuQ0VpaeluVET^X!z_9e&su$H1PH^KS2TVB1kwpKoGeSc{9b)Gxq(Sqt@aJ@$lpyxM;~T`z*jz%ta0x7Lr~ zVq;i<3uSF6%0A5-vQGU`u>Ar5&l#(5e8r*%5(Ffe1Ox;dIAZ}DcmFj_0asqY>(k!I z%9hF6(ahpX-Nq4J4MVWYo14~d28D(Z1A4HFt-qM@Gd&oW)%Vh5u42YIr%>r6dGt&w zqc4l8fSiOEkjF3qpN|F%Ro84M#rZ%!WpQCiXcTx1oKZ6CTTTHC1Mu6;tzuZk-~@wj zms{&^z1jC$F0;JeC-#M7g$6@&cWB9nw4S4AFrc4de#&i)J#YtHqrD979;b#SgJuQscn!ndH@~?({pp6lOIJP5`}gX4Jry zi)VZrX`XtTX`RBpHPYlb4Q62A>6a`^W&-2!3uGASv+d!pQAMmM5p~>9KU^ycyg-eS zYPP6Tc}=>9t{Tlxy zKdl(*nWgZhUD?7gI*xMu-b%#uhB`>dyMuj#<0M8B_}mcl1pka7~ZHG7^<;4+#nGQr7U;?E~`M*Sj-w@x@CIpeiQ)ckd& zWeVrCIub%wMe|JidUN8OBUNu7aqa(oVDj^Ivt)Par7ONz4*7J5(S|^o+uYJM0?z~?`hI-4^snfL<)fY7T@B16e*I$udKdp-G^;QPP=A#C;3=Rh5 zNMz4QS>bWSI7PCEH?>Xkg{19=dy}qvuRF?r`h(>AR}ZpR?gCzXwJ>s}Ly(nB%hl^| z{@=(kYI`E|+jRG~hIdbQIHg|}ecg3n$?R3ySDwB)rP=>{`Rt~BPBpjI-70-29ipJJ za?)u%H3V-=V?WlSq@Sb8L+l;jfKV)5ue?Qr`GVOCtuwdOPmdUm+<{6%S!o}j# z#7ZFW^zXJ&FfT- zV|g*_X)C`Je`an+Go6tT>~KM{`1#Tog`N`d=E_ONY{^{RnngW=5z2=pXTFe==-&BhmBPQo)QG+h zR<)-lTrm-OBf+I}xKQU|#k_>fGt4j8lb*Eqp4Pp@8~@}|fBe*m+tUs|o5DHm?Oo+L z?dN>YtQWrBz9cQJS7xeh=BFuhb}u`(r~2BPrbE?hj&7TD$*8)r)c5Tp)gM)Ne(%p~x2^A0 zZqI(cuHWw7=actpf7}0kbNX=nR~gHyHQy`lzsx^Z^ZV}izv=ZB^$#Dd-yi$yZ@>Nj zMWu!Zc&FH9#NJ?OQ*BYMiV{C;7Th@T!{egT!(C!8V^_EJpO2nADe>lp%IfbEIDeii zR(^HFdF4#u^l!da{@%e_ySE;?^*=b3xmER*72ivlJPYOYmY)Srz4%Ht@Gom(lge1o zh?V$n-0|&@eSkM3lL#|tc$|ab!A$drwLwcKP6f75PXWi=K-~@)XaI^aFhn~82ZK}d zO5#H*3sQ??L9H`%11i zK@^S8fgfs14ZE46AKEkxjJmh{Bw(eRUL~C zy5%!~0Rf&l02)!63-miS?RgE-LPkK#PXn!zL9slG2dW+7b7VuXhC=UZG3#!928Os$ zRtA0)ldkbXO)4&_%t-}LSE7dj`hk)#{SAzLwkVp>j+aC?2YsFtVb1>|m^nz3DCpYJ zCteWR-hbyql+-0xe3_-Y~5aTv(WpF2(xOMk TIER_COMPARATOR = (t1, t2) -> { - // Reverse sort order based on date. - return t2.getDataStartDate().compareTo(t1.getDataStartDate()); - }; - - private TierInfoUtil() { - } - - /** - * Checks that the serving ranges and the override serving ranges of the given tiers do not - * overlap, and do not have gaps. Dark reads tiers are ignored. - */ - public static void checkTierServingRanges(SortedSet tierInfos) { - boolean tierServingRangesOverlap = false; - boolean tierOverrideServingRangesOverlap = false; - boolean tierServingRangesHaveGaps = false; - boolean tierOverrideServingRangesHaveGaps = false; - - TierInfoWrapper previousTierInfoWrapper = null; - TierInfoWrapper previousOverrideTierInfoWrapper = null; - for (TierInfo tierInfo : tierInfos) { - TierInfoWrapper tierInfoWrapper = new TierInfoWrapper(tierInfo, false); - TierInfoWrapper overrideTierInfoWrapper = new TierInfoWrapper(tierInfo, true); - - // Check only the tiers to which we send light reads. - if (!tierInfoWrapper.isDarkRead()) { - if (previousTierInfoWrapper != null) { - if (TierInfoWrapper.servingRangesOverlap(previousTierInfoWrapper, tierInfoWrapper)) { - // In case of rebalancing, we may have an overlap data range while - // overriding with a good serving range. - if (previousOverrideTierInfoWrapper == null - || TierInfoWrapper.servingRangesOverlap( - previousOverrideTierInfoWrapper, overrideTierInfoWrapper)) { - tierServingRangesOverlap = true; - } - } - if (TierInfoWrapper.servingRangesHaveGap(previousTierInfoWrapper, tierInfoWrapper)) { - tierServingRangesHaveGaps = true; - } - } - - previousTierInfoWrapper = tierInfoWrapper; - } - - if (!overrideTierInfoWrapper.isDarkRead()) { - if (previousOverrideTierInfoWrapper != null) { - if (TierInfoWrapper.servingRangesOverlap(previousOverrideTierInfoWrapper, - overrideTierInfoWrapper)) { - tierOverrideServingRangesOverlap = true; - } - if (TierInfoWrapper.servingRangesHaveGap(previousOverrideTierInfoWrapper, - overrideTierInfoWrapper)) { - tierOverrideServingRangesHaveGaps = true; - } - } - - previousOverrideTierInfoWrapper = overrideTierInfoWrapper; - } - } - - Preconditions.checkState(!tierServingRangesOverlap, - "Serving ranges of light reads tiers must not overlap."); - Preconditions.checkState(!tierServingRangesHaveGaps, - "Serving ranges of light reads tiers must not have gaps."); - Preconditions.checkState(!tierOverrideServingRangesOverlap, - "Override serving ranges of light reads tiers must not overlap."); - Preconditions.checkState(!tierOverrideServingRangesHaveGaps, - "Override serving ranges of light reads tiers must not have gaps."); - } -} diff --git a/src/java/com/twitter/search/earlybird/config/TierInfoWrapper.docx b/src/java/com/twitter/search/earlybird/config/TierInfoWrapper.docx new file mode 100644 index 0000000000000000000000000000000000000000..15dffa7b0b81a14a44988e57932d58ecc351a54b GIT binary patch literal 37373 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 Vyjg)c2$ZV?84`inqpcUj0{}T^;yM5T literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/config/TierInfoWrapper.java b/src/java/com/twitter/search/earlybird/config/TierInfoWrapper.java deleted file mode 100644 index b6c3110dd..000000000 --- a/src/java/com/twitter/search/earlybird/config/TierInfoWrapper.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.twitter.search.earlybird.config; - -import java.util.Date; - -import com.google.common.base.Preconditions; - -/** - * A simple wrapper around TierInfo that returns the "real" or the "overriden" values from the given - * {@code TierInfo} instance, based on the given {@code useOverrideTierConfig} flag. - */ -public class TierInfoWrapper implements ServingRange { - private final TierInfo tierInfo; - private final boolean useOverrideTierConfig; - - public TierInfoWrapper(TierInfo tierInfo, boolean useOverrideTierConfig) { - this.tierInfo = Preconditions.checkNotNull(tierInfo); - this.useOverrideTierConfig = useOverrideTierConfig; - } - - public String getTierName() { - return tierInfo.getTierName(); - } - - public Date getDataStartDate() { - return tierInfo.getDataStartDate(); - } - - public Date getDataEndDate() { - return tierInfo.getDataEndDate(); - } - - public int getNumPartitions() { - return tierInfo.getNumPartitions(); - } - - public int getMaxTimeslices() { - return tierInfo.getMaxTimeslices(); - } - - public TierConfig.ConfigSource getSource() { - return tierInfo.getSource(); - } - - public boolean isEnabled() { - return tierInfo.isEnabled(); - } - - public boolean isDarkRead() { - return getReadType() == TierInfo.RequestReadType.DARK; - } - - public TierInfo.RequestReadType getReadType() { - return useOverrideTierConfig ? tierInfo.getReadTypeOverride() : tierInfo.getReadType(); - } - - public long getServingRangeSinceId() { - return useOverrideTierConfig - ? tierInfo.getServingRangeOverrideSinceId() - : tierInfo.getServingRangeSinceId(); - } - - public long getServingRangeMaxId() { - return useOverrideTierConfig - ? tierInfo.getServingRangeOverrideMaxId() - : tierInfo.getServingRangeMaxId(); - } - - public long getServingRangeSinceTimeSecondsFromEpoch() { - return useOverrideTierConfig - ? tierInfo.getServingRangeOverrideSinceTimeSecondsFromEpoch() - : tierInfo.getServingRangeSinceTimeSecondsFromEpoch(); - } - - public long getServingRangeUntilTimeSecondsFromEpoch() { - return useOverrideTierConfig - ? tierInfo.getServingRangeOverrideUntilTimeSecondsFromEpoch() - : tierInfo.getServingRangeUntilTimeSecondsFromEpoch(); - } - - public static boolean servingRangesOverlap(TierInfoWrapper tier1, TierInfoWrapper tier2) { - return (tier1.getServingRangeMaxId() > tier2.getServingRangeSinceId()) - && (tier2.getServingRangeMaxId() > tier1.getServingRangeSinceId()); - } - - public static boolean servingRangesHaveGap(TierInfoWrapper tier1, TierInfoWrapper tier2) { - return (tier1.getServingRangeMaxId() < tier2.getServingRangeSinceId()) - || (tier2.getServingRangeMaxId() < tier1.getServingRangeSinceId()); - } -} diff --git a/src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.docx b/src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.docx new file mode 100644 index 0000000000000000000000000000000000000000..775c896baf7bc5890d18219ec3793f16b7ab72ba GIT binary patch literal 38746 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 U0annrRmBRj2A0QM^0#mQ2g8Gps{jB1 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.java b/src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.java deleted file mode 100644 index 8a0eb852b..000000000 --- a/src/java/com/twitter/search/earlybird/config/TierServingBoundaryEndPoint.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.twitter.search.earlybird.config; - -import java.util.Date; - -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; - -/** - * The start or end boundary of a tier's serving range. - * This is used to add since_id and max_id operators onto search queries. - */ -public class TierServingBoundaryEndPoint { - @VisibleForTesting - public static final String INFERRED_FROM_DATA_RANGE = "inferred_from_data_range"; - public static final String RELATIVE_TO_CURRENT_TIME_MS = "relative_to_current_time_ms"; - - // Either offsetToCurrentTimeMillis is set or (absoluteTweetId and timeBoundarySecondsFromEpoch) - // are set. - @Nullable - private final Long offsetToCurrentTimeMillis; - @Nullable - private final Long absoluteTweetId; - @Nullable - private final Long timeBoundarySecondsFromEpoch; - private final Clock clock; - - TierServingBoundaryEndPoint(Long absoluteTweetId, - Long timeBoundarySecondsFromEpoch, - Long offsetToCurrentTimeMillis, - Clock clock) { - this.offsetToCurrentTimeMillis = offsetToCurrentTimeMillis; - this.absoluteTweetId = absoluteTweetId; - this.timeBoundarySecondsFromEpoch = timeBoundarySecondsFromEpoch; - this.clock = clock; - } - - /** - * Parse the boundary string and construct a TierServingBoundaryEndPoint instance. - * @param boundaryString boundary configuration string. Valid values are: - *
    1. - * "inferred_from_data_range" infers serving range from data range. This only works after - * Nov 2010 when Twitter switched to snowflake IDs. - * This is the default value. - *
    2. - *
    3. - * "absolute_tweet_id_and_timestamp_millis:id:timestamp" a tweet ID/timestamp is given - * explicitly as the serving range - * boundary. - *
    4. - *
    5. - * "relative_to_current_time_ms:offset" adds offset onto current timestamp in millis to - * compute serving range. - *
    6. - * - * @param boundaryDate the data boundary. This is used in conjunction with - * inferred_from_data_date to determine the serving boundary. - * @param clock Clock used to obtain current time, when relative_to_current_time_ms is used. - * Tests pass in a FakeClock. - */ - public static TierServingBoundaryEndPoint newTierServingBoundaryEndPoint(String boundaryString, - Date boundaryDate, - Clock clock) { - if (boundaryString == null || boundaryString.trim().equals( - INFERRED_FROM_DATA_RANGE)) { - return inferBoundaryFromDataRange(boundaryDate, clock); - } else if (boundaryString.trim().startsWith(RELATIVE_TO_CURRENT_TIME_MS)) { - return getRelativeBoundary(boundaryString, clock); - } else { - throw new IllegalStateException("Cannot parse serving range string: " + boundaryString); - } - } - - private static TierServingBoundaryEndPoint inferBoundaryFromDataRange(Date boundaryDate, - Clock clock) { - // infer from data range - // handle default start date and end date, in case the dates are not specified in the config - if (boundaryDate.equals(TierConfig.DEFAULT_TIER_START_DATE)) { - return new TierServingBoundaryEndPoint( - -1L, TierConfig.DEFAULT_TIER_START_DATE.getTime() / 1000, null, clock); - } else if (boundaryDate.equals(TierConfig.DEFAULT_TIER_END_DATE)) { - return new TierServingBoundaryEndPoint( - Long.MAX_VALUE, TierConfig.DEFAULT_TIER_END_DATE.getTime() / 1000, null, clock); - } else { - // convert data start / end dates into since / max ID. - long boundaryTimeMillis = boundaryDate.getTime(); - if (!SnowflakeIdParser.isUsableSnowflakeTimestamp(boundaryTimeMillis)) { - throw new IllegalStateException("Serving time range can not be determined, because " - + boundaryDate + " is before Twitter switched to snowflake tweet IDs."); - } - // Earlybird since_id is inclusive and max_id is exclusive. We substract 1 here. - // Consider example: - // full0: 5000 (inclusive) - 6000 (exclusive) - // full1: 6000 (inclusive) - 7000 (exclusive) - // For tier full0, we should use max_id 5999 instead of 6000. - // For tier full1, we should use since_id 5999 instead of 6000. - // Hence we substract 1 here. - long adjustedTweetId = - SnowflakeIdParser.generateValidStatusId(boundaryTimeMillis, 0) - 1; - Preconditions.checkState(adjustedTweetId >= 0, "boundary tweet ID must be non-negative"); - return new TierServingBoundaryEndPoint( - adjustedTweetId, boundaryTimeMillis / 1000, null, clock); - } - } - - private static TierServingBoundaryEndPoint getRelativeBoundary(String boundaryString, - Clock clock) { - // An offset relative to current time is given - String[] parts = boundaryString.split(":"); - Preconditions.checkState(parts.length == 2); - long offset = Long.parseLong(parts[1]); - return new TierServingBoundaryEndPoint(null, null, offset, clock); - } - - /** - * Returns the tweet ID for this tier boundary. If the tier boundary was created using a tweet ID, - * that tweet ID is returned. Otherwise, a tweet ID is derived from the time boundary. - */ - @VisibleForTesting - public long getBoundaryTweetId() { - // If absoluteTweetId is available, use it. - if (absoluteTweetId != null) { - return absoluteTweetId; - } else { - Preconditions.checkNotNull(offsetToCurrentTimeMillis); - long boundaryTime = clock.nowMillis() + offsetToCurrentTimeMillis; - return SnowflakeIdParser.generateValidStatusId(boundaryTime, 0); - } - } - - /** - * Returns the time boundary for this tier boundary, in seconds since epoch. - */ - public long getBoundaryTimeSecondsFromEpoch() { - if (timeBoundarySecondsFromEpoch != null) { - return timeBoundarySecondsFromEpoch; - } else { - Preconditions.checkNotNull(offsetToCurrentTimeMillis); - return (clock.nowMillis() + offsetToCurrentTimeMillis) / 1000; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/document/DeletedStatus.docx b/src/java/com/twitter/search/earlybird/document/DeletedStatus.docx new file mode 100644 index 0000000000000000000000000000000000000000..293aa27d452a6897a9c4774616f12a35633f64bf GIT binary patch literal 36847 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 V7F^&A+L%?MfEzeH%#$|G{txOqTATm? literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/document/DocumentFactory.java b/src/java/com/twitter/search/earlybird/document/DocumentFactory.java deleted file mode 100644 index 4745f329c..000000000 --- a/src/java/com/twitter/search/earlybird/document/DocumentFactory.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.twitter.search.earlybird.document; - -import java.io.IOException; -import javax.annotation.Nullable; - -import org.apache.commons.codec.binary.Base64; -import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; -import org.apache.lucene.document.FieldType; -import org.apache.lucene.index.IndexableField; -import org.apache.thrift.TBase; -import org.apache.thrift.TException; -import org.apache.thrift.TSerializer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.text.OmitNormTextField; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; - -/** - * Factory that constructs a Lucene document from a thrift object stored in T format. - * - * @param ThriftStatus or ThriftIndexingEvent, to be converted to a Lucene Document. - */ -public abstract class DocumentFactory> { - private static final Logger LOG = LoggerFactory.getLogger(DocumentFactory.class); - private static final int MAX_ALLOWED_INVALID_DOCUMENTS = 100; - - private static final SearchCounter INVALID_DOCUMENTS_COUNTER = - SearchCounter.export("invalid_documents"); - - private final CriticalExceptionHandler criticalExceptionHandler; - - public DocumentFactory(CriticalExceptionHandler criticalExceptionHandler) { - this.criticalExceptionHandler = criticalExceptionHandler; - } - - /** - * Given the thrift representation of a tweet, returns the associated tweetId. - */ - public abstract long getStatusId(T thriftObject); - - /** - * Given the thrift representation of a tweet, returns a Lucene Document with all the fields - * that need to be indexed. - */ - @Nullable - public final Document newDocument(T thriftObject) { - try { - return innerNewDocument(thriftObject); - } catch (Exception e) { - String statusId = "Not available"; - if (thriftObject != null) { - try { - statusId = Long.toString(getStatusId(thriftObject)); - } catch (Exception ex) { - LOG.error("Unable to get tweet id for document", ex); - statusId = "Not parsable"; - } - } - LOG.error("Unexpected exception while indexing. Status id: " + statusId, e); - - if (thriftObject != null) { - // Log the status in base64 for debugging - try { - LOG.warn("Bad ThriftStatus. Id: " + statusId + " base 64: " - + Base64.encodeBase64String(new TSerializer().serialize(thriftObject))); - } catch (TException e1) { - // Ignored since this is logging for debugging. - } - } - INVALID_DOCUMENTS_COUNTER.increment(); - if (INVALID_DOCUMENTS_COUNTER.get() > MAX_ALLOWED_INVALID_DOCUMENTS) { - criticalExceptionHandler.handle(this, e); - } - return new Document(); - } - } - - /** - * Given the thrift representation of a tweet, returns a Lucene Document with all the fields - * that need to be indexed. - * - * Return null if the given thrift object is invalid. - * - * @throws IOException if there are problems reading the input of producing the output. Exception - * is handled in {@link #newDocument(TBase)}. - */ - @Nullable - protected abstract Document innerNewDocument(T thriftObject) throws IOException; - - // Helper methods that prevent us from adding null fields to the lucene index - protected void addField(Document document, IndexableField field) { - if (field != null) { - document.add(field); - } - } - - protected Field newField(String data, String fieldName) { - return newField(data, fieldName, OmitNormTextField.TYPE_NOT_STORED); - } - - protected Field newField(String data, String fieldName, FieldType fieldType) { - if (data != null) { - return new Field(fieldName, data, fieldType); - } - return null; - } -} diff --git a/src/java/com/twitter/search/earlybird/document/ThriftDocumentPreprocessor.docx b/src/java/com/twitter/search/earlybird/document/ThriftDocumentPreprocessor.docx new file mode 100644 index 0000000000000000000000000000000000000000..359e895e6956fb994c5c09f62dd2a585f4d7905c GIT binary patch literal 38706 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
      +fzDBJr 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 f{%OJwOYC5DXl%#?te~%}iW_7PERV+2uiyR! fieldList = ThriftDocumentUtil.getFields(doc, - EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - ID_MAP); - for (ThriftField field : fieldList) { - if (field.getFieldData().getStringValue().equals(FILTER_LINK_VALUE)) { - field.getFieldData().setStringValue(HAS_LINK_VALUE); - ARCHIVED_LINKS_FIELD_PATCHED_COUNT.increment(); - break; - } - } - } - - /** - * Check whether the nullcast bit and nullcast filter are consistent in the given doc. - */ - public static boolean isNullcastBitAndFilterConsistent(ThriftDocument doc, - ImmutableSchemaInterface schema) { - return isNullcastBitAndFilterConsistent(doc, schema, NULLCAST_DOC_STATS); - } - - @VisibleForTesting - static boolean isNullcastBitAndFilterConsistent( - ThriftDocument doc, ImmutableSchemaInterface schema, SearchTruthTableCounter nullCastStats) { - final boolean isNullcastBitSet = EarlybirdThriftDocumentUtil.isNullcastBitSet(schema, doc); - final boolean isNullcastFilterSet = EarlybirdThriftDocumentUtil.isNullcastFilterSet(doc); - - // Track stats. - nullCastStats.record(isNullcastBitSet, isNullcastFilterSet); - - return isNullcastBitSet == isNullcastFilterSet; - } - - @VisibleForTesting - static void addAllMissingMinEngagementFields( - ThriftDocument doc, EarlybirdCluster cluster, ImmutableSchemaInterface schema - ) throws IOException { - if (!EarlybirdCluster.isArchive(cluster)) { - return; - } - EarlybirdFieldConstants.EarlybirdFieldConstant encodedFeatureFieldConstant = - EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD; - byte[] encodedFeaturesBytes = ThriftDocumentUtil.getBytesValue(doc, - encodedFeatureFieldConstant.getFieldName(), ID_MAP); - if (encodedFeaturesBytes == null) { - return; - } - EarlybirdEncodedFeatures encodedFeatures = EarlybirdEncodedFeaturesUtil.fromBytes( - schema, - EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD, - encodedFeaturesBytes, - 0); - for (String field: EarlybirdFieldConstants.MIN_ENGAGEMENT_FIELD_TO_CSF_NAME_MAP.keySet()) { - EarlybirdFieldConstant csfEngagementField = EarlybirdFieldConstants - .MIN_ENGAGEMENT_FIELD_TO_CSF_NAME_MAP.get(field); - Preconditions.checkState(csfEngagementField != null); - int engagementCounter = encodedFeatures.getFeatureValue(csfEngagementField); - EarlybirdThriftDocumentUtil.addNormalizedMinEngagementField(doc, field, engagementCounter); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.docx b/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..c2bba8c593717580f352398f29d473209babba95 GIT binary patch literal 39546 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.java b/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.java deleted file mode 100644 index d225a387e..000000000 --- a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventDocumentFactory.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.twitter.search.earlybird.document; - -import java.io.IOException; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; - -import org.apache.lucene.document.Document; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.decider.Decider; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.partitioning.snowflakeparser.SnowflakeIdParser; -import com.twitter.search.common.schema.SchemaDocumentFactory; -import com.twitter.search.common.schema.base.FieldNameToIdMapping; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.base.ThriftDocumentUtil; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.schema.earlybird.EarlybirdThriftDocumentUtil; -import com.twitter.search.common.schema.thriftjava.ThriftDocument; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.text.filter.NormalizedTokenFilter; -import com.twitter.search.common.util.text.splitter.HashtagMentionPunctuationSplitter; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; - -public class ThriftIndexingEventDocumentFactory extends DocumentFactory { - private static final Logger LOG = - LoggerFactory.getLogger(ThriftIndexingEventDocumentFactory.class); - - private static final FieldNameToIdMapping ID_MAPPING = new EarlybirdFieldConstants(); - private static final long TIMESTAMP_ALLOWED_FUTURE_DELTA_MS = TimeUnit.SECONDS.toMillis(60); - private static final String FILTER_TWEETS_WITH_FUTURE_TWEET_ID_AND_CREATED_AT_DECIDER_KEY = - "filter_tweets_with_future_tweet_id_and_created_at"; - - private static final SearchCounter NUM_TWEETS_WITH_FUTURE_TWEET_ID_AND_CREATED_AT_MS = - SearchCounter.export("num_tweets_with_future_tweet_id_and_created_at_ms"); - private static final SearchCounter NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_FOUND = - SearchCounter.export("num_tweets_with_inconsistent_tweet_id_and_created_at_ms_found"); - private static final SearchCounter - NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_ADJUSTED = - SearchCounter.export("num_tweets_with_inconsistent_tweet_id_and_created_at_ms_adjusted"); - private static final SearchCounter NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_DROPPED - = SearchCounter.export("num_tweets_with_inconsistent_tweet_id_and_created_at_ms_dropped"); - - @VisibleForTesting - static final String ENABLE_ADJUST_CREATED_AT_TIME_IF_MISMATCH_WITH_SNOWFLAKE = - "enable_adjust_created_at_time_if_mismatch_with_snowflake"; - - @VisibleForTesting - static final String ENABLE_DROP_CREATED_AT_TIME_IF_MISMATCH_WITH_SNOWFLAKE = - "enable_drop_created_at_time_if_mismatch_with_snowflake"; - - private final SchemaDocumentFactory schemaDocumentFactory; - private final EarlybirdCluster cluster; - private final SearchIndexingMetricSet searchIndexingMetricSet; - private final Decider decider; - private final Schema schema; - private final Clock clock; - - public ThriftIndexingEventDocumentFactory( - Schema schema, - EarlybirdCluster cluster, - Decider decider, - SearchIndexingMetricSet searchIndexingMetricSet, - CriticalExceptionHandler criticalExceptionHandler) { - this( - schema, - getSchemaDocumentFactory(schema, cluster, decider), - cluster, - searchIndexingMetricSet, - decider, - Clock.SYSTEM_CLOCK, - criticalExceptionHandler - ); - } - - /** - * Returns a document factory that knows how to convert ThriftDocuments to Documents based on the - * provided schema. - */ - public static SchemaDocumentFactory getSchemaDocumentFactory( - Schema schema, - EarlybirdCluster cluster, - Decider decider) { - return new SchemaDocumentFactory(schema, - Lists.newArrayList( - new TruncationTokenStreamWriter(cluster, decider), - (fieldInfo, stream) -> { - // Strip # @ $ symbols, and break up underscore connected tokens. - if (fieldInfo.getFieldType().useTweetSpecificNormalization()) { - return new HashtagMentionPunctuationSplitter(new NormalizedTokenFilter(stream)); - } - - return stream; - })); - } - - @VisibleForTesting - protected ThriftIndexingEventDocumentFactory( - Schema schema, - SchemaDocumentFactory schemaDocumentFactory, - EarlybirdCluster cluster, - SearchIndexingMetricSet searchIndexingMetricSet, - Decider decider, - Clock clock, - CriticalExceptionHandler criticalExceptionHandler) { - super(criticalExceptionHandler); - this.schema = schema; - this.schemaDocumentFactory = schemaDocumentFactory; - this.cluster = cluster; - this.searchIndexingMetricSet = searchIndexingMetricSet; - this.decider = decider; - this.clock = clock; - } - - @Override - public long getStatusId(ThriftIndexingEvent event) { - Preconditions.checkNotNull(event); - if (event.isSetDocument() && event.getDocument() != null) { - ThriftDocument thriftDocument = event.getDocument(); - try { - // Ideally, we should not call getSchemaSnapshot() here. But, as this is called only to - // retrieve status id and the ID field is static, this is fine for the purpose. - thriftDocument = ThriftDocumentPreprocessor.preprocess( - thriftDocument, cluster, schema.getSchemaSnapshot()); - } catch (IOException e) { - throw new IllegalStateException("Unable to obtain tweet ID from ThriftDocument", e); - } - return ThriftDocumentUtil.getLongValue( - thriftDocument, EarlybirdFieldConstant.ID_FIELD.getFieldName(), ID_MAPPING); - } else { - throw new IllegalArgumentException("ThriftDocument is null inside ThriftIndexingEvent."); - } - } - - @Override - protected Document innerNewDocument(ThriftIndexingEvent event) throws IOException { - Preconditions.checkNotNull(event); - Preconditions.checkNotNull(event.getDocument()); - - ImmutableSchemaInterface schemaSnapshot = schema.getSchemaSnapshot(); - - // If the tweet id and create_at are in the future, do not index it. - if (areTweetIDAndCreateAtInTheFuture(event) - && DeciderUtil.isAvailableForRandomRecipient(decider, - FILTER_TWEETS_WITH_FUTURE_TWEET_ID_AND_CREATED_AT_DECIDER_KEY)) { - NUM_TWEETS_WITH_FUTURE_TWEET_ID_AND_CREATED_AT_MS.increment(); - return null; - } - - if (isNullcastBitAndFilterConsistent(schemaSnapshot, event)) { - ThriftDocument thriftDocument = - adjustOrDropIfTweetIDAndCreatedAtAreInconsistent( - ThriftDocumentPreprocessor.preprocess(event.getDocument(), cluster, schemaSnapshot)); - - if (thriftDocument != null) { - return schemaDocumentFactory.newDocument(thriftDocument); - } else { - return null; - } - } else { - return null; - } - } - - private ThriftDocument adjustOrDropIfTweetIDAndCreatedAtAreInconsistent(ThriftDocument document) { - final long tweetID = EarlybirdThriftDocumentUtil.getID(document); - // Thrift document is storing created at in seconds. - final long createdAtMs = EarlybirdThriftDocumentUtil.getCreatedAtMs(document); - - if (!SnowflakeIdParser.isTweetIDAndCreatedAtConsistent(tweetID, createdAtMs)) { - // Increment found counter. - NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_FOUND.increment(); - LOG.error( - "Found inconsistent tweet ID and created at timestamp: [tweetID={}], [createdAtMs={}]", - tweetID, createdAtMs); - - if (DeciderUtil.isAvailableForRandomRecipient( - decider, ENABLE_ADJUST_CREATED_AT_TIME_IF_MISMATCH_WITH_SNOWFLAKE)) { - // Update created at (and csf) with the time stamp in snow flake ID. - final long createdAtMsInID = SnowflakeIdParser.getTimestampFromTweetId(tweetID); - EarlybirdThriftDocumentUtil.replaceCreatedAtAndCreatedAtCSF( - document, (int) (createdAtMsInID / 1000)); - - // Increment adjusted counter. - NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_ADJUSTED.increment(); - LOG.error( - "Updated created at to match tweet ID: createdAtMs={}, tweetID={}, createdAtMsInID={}", - createdAtMs, tweetID, createdAtMsInID); - } else if (DeciderUtil.isAvailableForRandomRecipient( - decider, ENABLE_DROP_CREATED_AT_TIME_IF_MISMATCH_WITH_SNOWFLAKE)) { - // Drop and increment counter! - NUM_TWEETS_WITH_INCONSISTENT_TWEET_ID_AND_CREATED_AT_MS_DROPPED.increment(); - LOG.error( - "Dropped tweet with inconsistent ID and timestamp: createdAtMs={}, tweetID={}", - createdAtMs, tweetID); - return null; - } - } - - return document; - } - - private boolean isNullcastBitAndFilterConsistent( - ImmutableSchemaInterface schemaSnapshot, - ThriftIndexingEvent event) { - return ThriftDocumentPreprocessor.isNullcastBitAndFilterConsistent( - event.getDocument(), schemaSnapshot); - } - - /** - * Check if the tweet ID and create_at are in the future and beyond the allowed - * TIMESTAMP_ALLOWED_FUTURE_DELTA_MS range from current time stamp. - */ - private boolean areTweetIDAndCreateAtInTheFuture(ThriftIndexingEvent event) { - ThriftDocument document = event.getDocument(); - - final long tweetID = EarlybirdThriftDocumentUtil.getID(document); - if (tweetID < SnowflakeIdParser.SNOWFLAKE_ID_LOWER_BOUND) { - return false; - } - - final long tweetIDTimestampMs = SnowflakeIdParser.getTimestampFromTweetId(tweetID); - final long allowedFutureTimestampMs = clock.nowMillis() + TIMESTAMP_ALLOWED_FUTURE_DELTA_MS; - - final long createdAtMs = EarlybirdThriftDocumentUtil.getCreatedAtMs(document); - if (tweetIDTimestampMs > allowedFutureTimestampMs && createdAtMs > allowedFutureTimestampMs) { - LOG.error( - "Found future tweet ID and created at timestamp: " - + "[tweetID={}], [createdAtMs={}], [compareDeltaMs={}]", - tweetID, createdAtMs, TIMESTAMP_ALLOWED_FUTURE_DELTA_MS); - return true; - } - - return false; - } -} diff --git a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.docx b/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d0bdaa873dfcd4062c23b98764884ea997308e3 GIT binary patch literal 37787 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.java b/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.java deleted file mode 100644 index 63a4ced1b..000000000 --- a/src/java/com/twitter/search/earlybird/document/ThriftIndexingEventUpdateFactory.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.twitter.search.earlybird.document; - -import java.io.IOException; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.lucene.document.Document; - -import com.twitter.decider.Decider; -import com.twitter.search.common.schema.SchemaDocumentFactory; -import com.twitter.search.common.schema.base.FieldNameToIdMapping; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.base.ThriftDocumentUtil; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.schema.thriftjava.ThriftDocument; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; - -/** - * Builds a Lucene Document from a ThriftIndexingEvent. A simplified version of - * {@link ThriftIndexingEventDocumentFactory} that can be used for update events, which exclude - * many fields that the tweet indexing events contain. - */ -public class ThriftIndexingEventUpdateFactory extends DocumentFactory { - private static final FieldNameToIdMapping ID_MAPPING = new EarlybirdFieldConstants(); - - private final SchemaDocumentFactory schemaDocumentFactory; - private final EarlybirdCluster cluster; - private final Schema schema; - - public ThriftIndexingEventUpdateFactory( - Schema schema, - EarlybirdCluster cluster, - Decider decider, - CriticalExceptionHandler criticalExceptionHandler) { - this( - schema, - ThriftIndexingEventDocumentFactory.getSchemaDocumentFactory(schema, cluster, decider), - cluster, - criticalExceptionHandler - ); - } - - @VisibleForTesting - protected ThriftIndexingEventUpdateFactory( - Schema schema, - SchemaDocumentFactory schemaDocumentFactory, - EarlybirdCluster cluster, - CriticalExceptionHandler criticalExceptionHandler) { - super(criticalExceptionHandler); - this.schema = schema; - this.schemaDocumentFactory = schemaDocumentFactory; - this.cluster = cluster; - } - - @Override - public long getStatusId(ThriftIndexingEvent event) { - Preconditions.checkNotNull(event); - Preconditions.checkState( - event.isSetDocument(), "ThriftDocument is null inside ThriftIndexingEvent."); - - ThriftDocument thriftDocument; - try { - // Ideally, we should not call getSchemaSnapshot() here. But, as this is called only to - // retrieve status id and the ID field is static, this is fine for the purpose. - thriftDocument = ThriftDocumentPreprocessor.preprocess( - event.getDocument(), cluster, schema.getSchemaSnapshot()); - } catch (IOException e) { - throw new IllegalStateException("Unable to obtain tweet ID from ThriftDocument: " + event, e); - } - return ThriftDocumentUtil.getLongValue( - thriftDocument, EarlybirdFieldConstant.ID_FIELD.getFieldName(), ID_MAPPING); - } - - @Override - protected Document innerNewDocument(ThriftIndexingEvent event) throws IOException { - Preconditions.checkNotNull(event); - Preconditions.checkNotNull(event.getDocument()); - - ImmutableSchemaInterface schemaSnapshot = schema.getSchemaSnapshot(); - - ThriftDocument document = ThriftDocumentPreprocessor.preprocess( - event.getDocument(), cluster, schemaSnapshot); - - return schemaDocumentFactory.newDocument(document); - } -} diff --git a/src/java/com/twitter/search/earlybird/document/TimeSlicedThriftIndexingEvent.docx b/src/java/com/twitter/search/earlybird/document/TimeSlicedThriftIndexingEvent.docx new file mode 100644 index 0000000000000000000000000000000000000000..94b2590f816c0ddb3bc5405e087a9a540ddf175d GIT binary patch literal 37044 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Ξ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%0D3~fg!oiQk_uc3z%ps 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 Gul@%?vY0ji literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/document/TruncationTokenStreamWriter.java b/src/java/com/twitter/search/earlybird/document/TruncationTokenStreamWriter.java deleted file mode 100644 index 830ae7946..000000000 --- a/src/java/com/twitter/search/earlybird/document/TruncationTokenStreamWriter.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.twitter.search.earlybird.document; - -import com.twitter.common.text.token.TokenProcessor; -import com.twitter.common.text.token.TwitterTokenStream; -import com.twitter.decider.Decider; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.schema.SchemaDocumentFactory; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; - -public class TruncationTokenStreamWriter implements SchemaDocumentFactory.TokenStreamRewriter { - private static final int NEVER_TRUNCATE_CHARS_BELOW_POSITION = 140; - private static final String TRUNCATE_LONG_TWEETS_DECIDER_KEY_PREFIX = - "truncate_long_tweets_in_"; - private static final String NUM_TWEET_CHARACTERS_SUPPORTED_DECIDER_KEY_PREFIX = - "num_tweet_characters_supported_in_"; - - private static final SearchCounter NUM_TWEETS_TRUNCATED = - SearchCounter.export("num_tweets_truncated"); - private static final SearchLongGauge NUM_TWEET_CHARACTERS_SUPPORTED = - SearchLongGauge.export("num_tweet_characters_supported"); - - private final Decider decider; - private final String truncateLongTweetsDeciderKey; - private final String numCharsSupportedDeciderKey; - - /** - * Creates a TruncationTokenStreamWriter - */ - public TruncationTokenStreamWriter(EarlybirdCluster cluster, Decider decider) { - this.decider = decider; - - this.truncateLongTweetsDeciderKey = - TRUNCATE_LONG_TWEETS_DECIDER_KEY_PREFIX + cluster.name().toLowerCase(); - this.numCharsSupportedDeciderKey = - NUM_TWEET_CHARACTERS_SUPPORTED_DECIDER_KEY_PREFIX + cluster.name().toLowerCase(); - } - - @Override - public TwitterTokenStream rewrite(Schema.FieldInfo fieldInfo, TwitterTokenStream stream) { - if (EarlybirdFieldConstant.TEXT_FIELD.getFieldName().equals(fieldInfo.getName())) { - final int maxPosition = getTruncatePosition(); - NUM_TWEET_CHARACTERS_SUPPORTED.set(maxPosition); - if (maxPosition >= NEVER_TRUNCATE_CHARS_BELOW_POSITION) { - return new TokenProcessor(stream) { - @Override - public final boolean incrementToken() { - if (incrementInputStream()) { - if (offset() < maxPosition) { - return true; - } - NUM_TWEETS_TRUNCATED.increment(); - } - - return false; - } - }; - } - } - - return stream; - } - - /** - * Get the truncation position. - * - * @return the truncation position or -1 if truncation is disabled. - */ - private int getTruncatePosition() { - int maxPosition; - if (!DeciderUtil.isAvailableForRandomRecipient(decider, truncateLongTweetsDeciderKey)) { - return -1; - } - maxPosition = DeciderUtil.getAvailability(decider, numCharsSupportedDeciderKey); - - if (maxPosition < NEVER_TRUNCATE_CHARS_BELOW_POSITION) { - // Never truncate below NEVER_TRUNCATE_CHARS_BELOW_POSITION chars - maxPosition = NEVER_TRUNCATE_CHARS_BELOW_POSITION; - } - - return maxPosition; - } -} diff --git a/src/java/com/twitter/search/earlybird/document/TweetDocument.docx b/src/java/com/twitter/search/earlybird/document/TweetDocument.docx new file mode 100644 index 0000000000000000000000000000000000000000..c5cd5b49ddeb0aca41efcd7e726ed416a73eb584 GIT binary patch literal 37077 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

      iT^&2i*C@+hQp**3RGQS&W8p7$ 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