From f37e76300b0619acd03692d6cc4f27da2f59348d Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:15:55 +0200 Subject: [PATCH] [docx] split commit for file 4400 Signed-off-by: Ari Archer --- .../facets/SimpleCountRankingModule.docx | Bin 0 -> 37133 bytes .../facets/SimpleCountRankingModule.java | 32 - .../search/facets/SpaceFacetCollector.docx | Bin 0 -> 37271 bytes .../search/facets/SpaceFacetCollector.java | 47 - .../facets/TermStatisticsCollector.docx | Bin 0 -> 42317 bytes .../facets/TermStatisticsCollector.java | 487 ------ .../facets/TermStatisticsRequestInfo.docx | Bin 0 -> 38130 bytes .../facets/TermStatisticsRequestInfo.java | 94 -- .../TweetSearchFacetCountIteratorFactory.docx | Bin 0 -> 37208 bytes .../TweetSearchFacetCountIteratorFactory.java | 41 - .../search/queries/BadUserRepFilter.docx | Bin 0 -> 38390 bytes .../search/queries/BadUserRepFilter.java | 115 -- .../search/queries/CSFDisjunctionFilter.docx | Bin 0 -> 37692 bytes .../search/queries/CSFDisjunctionFilter.java | 87 -- .../search/queries/DocValRangeFilter.docx | Bin 0 -> 38530 bytes .../search/queries/DocValRangeFilter.java | 195 --- ...FeatureValueInAcceptListOrUnsetFilter.docx | Bin 0 -> 38155 bytes ...FeatureValueInAcceptListOrUnsetFilter.java | 113 -- .../search/queries/GeoTwoPhaseQuery.docx | Bin 0 -> 38776 bytes .../search/queries/GeoTwoPhaseQuery.java | 255 ---- .../search/queries/MatchAllDocIdSet.docx | Bin 0 -> 37069 bytes .../search/queries/MatchAllDocIdSet.java | 44 - .../search/queries/MatchAllDocsQuery.docx | Bin 0 -> 37721 bytes .../search/queries/MatchAllDocsQuery.java | 91 -- .../queries/RequiredStatusIDsFilter.docx | Bin 0 -> 38208 bytes .../queries/RequiredStatusIDsFilter.java | 131 -- .../search/queries/SimpleTermQuery.docx | Bin 0 -> 37621 bytes .../search/queries/SimpleTermQuery.java | 86 -- .../search/queries/SinceMaxIDFilter.docx | Bin 0 -> 38879 bytes .../search/queries/SinceMaxIDFilter.java | 211 --- .../search/queries/SinceUntilFilter.docx | Bin 0 -> 38154 bytes .../search/queries/SinceUntilFilter.java | 137 -- .../queries/TermQueryWithSafeToString.docx | Bin 0 -> 37100 bytes .../queries/TermQueryWithSafeToString.java | 29 - .../search/queries/TimedDocIdSetIterator.docx | Bin 0 -> 37821 bytes .../search/queries/TimedDocIdSetIterator.java | 128 -- .../queries/UserFlagsExcludeFilter.docx | Bin 0 -> 38048 bytes .../queries/UserFlagsExcludeFilter.java | 128 -- .../queries/UserIdMultiSegmentQuery.docx | Bin 0 -> 42472 bytes .../queries/UserIdMultiSegmentQuery.java | 528 ------- .../search/queries/UserScrubGeoFilter.docx | Bin 0 -> 37948 bytes .../search/queries/UserScrubGeoFilter.java | 82 - .../search/relevance/LinearScoringData.docx | Bin 0 -> 40526 bytes .../search/relevance/LinearScoringData.java | 422 ----- .../search/relevance/LinearScoringParams.docx | Bin 0 -> 39952 bytes .../search/relevance/LinearScoringParams.java | 304 ---- .../relevance/MinFeatureValueFilter.docx | Bin 0 -> 38906 bytes .../relevance/MinFeatureValueFilter.java | 163 -- .../search/relevance/RelevanceHit.docx | Bin 0 -> 37935 bytes .../search/relevance/RelevanceHit.java | 104 -- .../relevance/RelevanceSearchRequestInfo.docx | Bin 0 -> 37476 bytes .../relevance/RelevanceSearchRequestInfo.java | 66 - .../relevance/RelevanceSearchResults.docx | Bin 0 -> 37015 bytes .../relevance/RelevanceSearchResults.java | 37 - .../search/relevance/ScoreFilterQuery.docx | Bin 0 -> 38142 bytes .../search/relevance/ScoreFilterQuery.java | 138 -- .../AbstractRelevanceCollector.docx | Bin 0 -> 38446 bytes .../AbstractRelevanceCollector.java | 147 -- .../BatchRelevanceTopCollector.docx | Bin 0 -> 38335 bytes .../BatchRelevanceTopCollector.java | 118 -- .../collectors/RelevanceAllCollector.docx | Bin 0 -> 37658 bytes .../collectors/RelevanceAllCollector.java | 70 - .../collectors/RelevanceTopCollector.docx | Bin 0 -> 39054 bytes .../collectors/RelevanceTopCollector.java | 167 -- .../search/relevance/scoring/BatchHit.docx | Bin 0 -> 37016 bytes .../search/relevance/scoring/BatchHit.java | 47 - .../scoring/DefaultScoringFunction.docx | Bin 0 -> 37152 bytes .../scoring/DefaultScoringFunction.java | 37 - .../scoring/FeatureBasedScoringFunction.docx | Bin 0 -> 52590 bytes .../scoring/FeatureBasedScoringFunction.java | 1360 ----------------- .../scoring/LegacyScoreAccumulator.docx | Bin 0 -> 38235 bytes .../scoring/LegacyScoreAccumulator.java | 98 -- .../scoring/LinearScoringFunction.docx | Bin 0 -> 39303 bytes .../scoring/LinearScoringFunction.java | 237 --- .../scoring/ModelBasedScoringFunction.docx | Bin 0 -> 38655 bytes .../scoring/ModelBasedScoringFunction.java | 151 -- .../relevance/scoring/RelevanceQuery.docx | Bin 0 -> 38424 bytes .../relevance/scoring/RelevanceQuery.java | 164 -- .../RetweetBasedTopTweetsScoringFunction.docx | Bin 0 -> 39354 bytes .../RetweetBasedTopTweetsScoringFunction.java | 165 -- .../relevance/scoring/ScoringFunction.docx | Bin 0 -> 39440 bytes .../relevance/scoring/ScoringFunction.java | 213 --- .../scoring/ScoringFunctionProvider.docx | Bin 0 -> 38986 bytes .../scoring/ScoringFunctionProvider.java | 216 --- .../scoring/SpamVectorScoringFunction.docx | Bin 0 -> 37823 bytes .../scoring/SpamVectorScoringFunction.java | 85 -- .../relevance/scoring/SparseTensor.docx | Bin 0 -> 37459 bytes .../relevance/scoring/SparseTensor.java | 87 -- .../TensorflowBasedScoringFunction.docx | Bin 0 -> 40670 bytes .../TensorflowBasedScoringFunction.java | 339 ---- .../scoring/TestScoringFunction.docx | Bin 0 -> 37396 bytes .../scoring/TestScoringFunction.java | 52 - .../segment/DLSegmentDataProvider.docx | Bin 0 -> 37355 bytes .../segment/DLSegmentDataProvider.java | 62 - .../segment/DLSegmentDataReaderSet.docx | Bin 0 -> 39287 bytes .../segment/DLSegmentDataReaderSet.java | 237 --- .../segment/EmptySegmentDataReaderSet.docx | Bin 0 -> 37309 bytes .../segment/EmptySegmentDataReaderSet.java | 72 - .../segment/SegmentDataProvider.docx | Bin 0 -> 36966 bytes .../segment/SegmentDataProvider.java | 14 - .../segment/SegmentDataReaderSet.docx | Bin 0 -> 37660 bytes .../segment/SegmentDataReaderSet.java | 79 - .../earlybird/segment/SegmentProvider.docx | Bin 0 -> 36854 bytes .../earlybird/segment/SegmentProvider.java | 13 - .../earlybird/stats/EarlybirdRPCStats.docx | Bin 0 -> 37477 bytes .../earlybird/stats/EarlybirdRPCStats.java | 55 - .../stats/EarlybirdSearcherStats.docx | Bin 0 -> 38880 bytes .../stats/EarlybirdSearcherStats.java | 213 --- .../earlybird/stats/SegmentSyncStats.docx | Bin 0 -> 37295 bytes .../earlybird/stats/SegmentSyncStats.java | 59 - ...arlybirdThriftRequestDeserializerUtil.docx | Bin 0 -> 37720 bytes ...arlybirdThriftRequestDeserializerUtil.java | 77 - .../search/earlybird/util/ActionLogger.docx | Bin 0 -> 37216 bytes .../search/earlybird/util/ActionLogger.java | 49 - .../util/CoordinatedEarlybirdAction.docx | Bin 0 -> 41632 bytes .../util/CoordinatedEarlybirdAction.java | 409 ----- .../CoordinatedEarlybirdActionInterface.docx | Bin 0 -> 37450 bytes .../CoordinatedEarlybirdActionInterface.java | 50 - .../CoordinatedEarlybirdActionLockFailed.docx | Bin 0 -> 36838 bytes .../CoordinatedEarlybirdActionLockFailed.java | 11 - .../earlybird/util/EarlybirdDecider.docx | Bin 0 -> 38222 bytes .../earlybird/util/EarlybirdDecider.java | 128 -- .../util/EarlybirdSearchResultUtil.docx | Bin 0 -> 38662 bytes .../util/EarlybirdSearchResultUtil.java | 182 --- .../earlybird/util/FieldTermCounter.docx | Bin 0 -> 40208 bytes .../earlybird/util/FieldTermCounter.java | 304 ---- .../search/earlybird/util/Histogram.docx | Bin 0 -> 38175 bytes .../search/earlybird/util/Histogram.java | 160 -- .../search/earlybird/util/IndexViewer.docx | Bin 0 -> 43723 bytes .../search/earlybird/util/IndexViewer.java | 798 ---------- .../earlybird/util/JsonViewerWriter.docx | Bin 0 -> 37071 bytes .../earlybird/util/JsonViewerWriter.java | 68 - .../util/OneTaskScheduledExecutorManager.docx | Bin 0 -> 37527 bytes .../util/OneTaskScheduledExecutorManager.java | 91 -- .../search/earlybird/util/ParallelUtil.docx | Bin 0 -> 37564 bytes .../search/earlybird/util/ParallelUtil.java | 71 - .../earlybird/util/PeriodicActionParams.docx | Bin 0 -> 37368 bytes .../earlybird/util/PeriodicActionParams.java | 79 - .../util/ScheduledExecutorManager.docx | Bin 0 -> 38210 bytes .../util/ScheduledExecutorManager.java | 150 -- .../earlybird/util/ScheduledExecutorTask.docx | Bin 0 -> 36985 bytes .../earlybird/util/ScheduledExecutorTask.java | 27 - .../search/earlybird/util/ScrubGenUtil.docx | Bin 0 -> 37098 bytes .../search/earlybird/util/ScrubGenUtil.java | 28 - .../util/ShutdownWaitTimeParams.docx | Bin 0 -> 37069 bytes .../util/ShutdownWaitTimeParams.java | 40 - .../earlybird/util/TermCountMonitor.docx | Bin 0 -> 40566 bytes .../earlybird/util/TermCountMonitor.java | 338 ---- .../earlybird/util/TweetCountMonitor.docx | Bin 0 -> 41670 bytes .../earlybird/util/TweetCountMonitor.java | 447 ------ .../search/earlybird/util/ViewerWriter.docx | Bin 0 -> 37082 bytes .../search/earlybird/util/ViewerWriter.java | 47 - .../com/twitter/search/earlybird_root/BUILD | 75 - .../twitter/search/earlybird_root/BUILD.docx | Bin 0 -> 37512 bytes .../earlybird_root/ClientBackupFilter.docx | Bin 0 -> 37820 bytes .../earlybird_root/ClientBackupFilter.java | 90 -- .../earlybird_root/ClientLatencyFilter.docx | Bin 0 -> 37486 bytes .../earlybird_root/ClientLatencyFilter.java | 45 - .../EarlybirdCacheCommonModule.docx | Bin 0 -> 37816 bytes .../EarlybirdCacheCommonModule.java | 96 -- .../EarlybirdChainedScatterGatherService.docx | Bin 0 -> 37468 bytes .../EarlybirdChainedScatterGatherService.java | 58 - .../earlybird_root/EarlybirdCommonModule.docx | Bin 0 -> 38248 bytes .../earlybird_root/EarlybirdCommonModule.java | 170 --- ...lybirdFullArchiveScatterGatherSupport.docx | Bin 0 -> 37002 bytes ...lybirdFullArchiveScatterGatherSupport.java | 21 - ...arlybirdProtectedScatterGatherSupport.docx | Bin 0 -> 37078 bytes ...arlybirdProtectedScatterGatherSupport.java | 25 - .../EarlybirdProtectedValidationBehavior.docx | Bin 0 -> 37187 bytes .../EarlybirdProtectedValidationBehavior.java | 45 - .../EarlybirdProtectedWarmup.docx | Bin 0 -> 37041 bytes .../EarlybirdProtectedWarmup.java | 28 - .../EarlybirdQueryRewriteFilter.docx | Bin 0 -> 38746 bytes .../EarlybirdQueryRewriteFilter.java | 157 -- ...rlybirdRealtimeCgScatterGatherSupport.docx | Bin 0 -> 36996 bytes ...rlybirdRealtimeCgScatterGatherSupport.java | 21 - ...EarlybirdRealtimeScatterGatherSupport.docx | Bin 0 -> 36990 bytes ...EarlybirdRealtimeScatterGatherSupport.java | 21 - .../EarlybirdRootQueryUtils.docx | Bin 0 -> 37484 bytes .../EarlybirdRootQueryUtils.java | 53 - .../EarlybirdServiceChainBuilder.docx | Bin 0 -> 40144 bytes .../EarlybirdServiceChainBuilder.java | 278 ---- .../EarlybirdServiceLoggingSupport.docx | Bin 0 -> 37321 bytes .../EarlybirdServiceLoggingSupport.java | 60 - ...rlybirdServicePartitionLoggingSupport.docx | Bin 0 -> 37290 bytes ...rlybirdServicePartitionLoggingSupport.java | 42 - .../EarlybirdServiceScatterGatherSupport.docx | Bin 0 -> 39065 bytes .../EarlybirdServiceScatterGatherSupport.java | 202 --- .../EarlybirdServiceValidationBehavior.docx | Bin 0 -> 37953 bytes .../EarlybirdServiceValidationBehavior.java | 111 -- .../EarlybirdTierThrottleDeciders.docx | Bin 0 -> 37379 bytes .../EarlybirdTierThrottleDeciders.java | 49 - .../earlybird_root/EarlybirdWarmup.docx | Bin 0 -> 37569 bytes .../earlybird_root/EarlybirdWarmup.java | 69 - .../earlybird_root/ExceptionHandler.docx | Bin 0 -> 36879 bytes .../earlybird_root/ExceptionHandler.java | 17 - .../FullArchiveRootAppMain.docx | Bin 0 -> 37096 bytes .../FullArchiveRootAppMain.java | 40 - .../earlybird_root/FullArchiveRootModule.docx | Bin 0 -> 38630 bytes .../earlybird_root/FullArchiveRootModule.java | 241 --- .../earlybird_root/FullArchiveRootServer.docx | Bin 0 -> 36872 bytes .../earlybird_root/FullArchiveRootServer.java | 16 - .../FullArchiveRootService.docx | Bin 0 -> 38133 bytes .../FullArchiveRootService.java | 148 -- .../earlybird_root/InitializeFilter.docx | Bin 0 -> 37123 bytes .../earlybird_root/InitializeFilter.java | 36 - .../MultiTierResultsMergeFilter.docx | Bin 0 -> 37362 bytes .../MultiTierResultsMergeFilter.java | 55 - .../PartitionAccessController.docx | Bin 0 -> 37444 bytes .../PartitionAccessController.java | 70 - .../earlybird_root/ProtectedRootAppMain.docx | Bin 0 -> 37094 bytes .../earlybird_root/ProtectedRootAppMain.java | 39 - .../ProtectedRootAppModule.docx | Bin 0 -> 37535 bytes .../ProtectedRootAppModule.java | 78 - .../earlybird_root/ProtectedRootServer.docx | Bin 0 -> 36869 bytes .../earlybird_root/ProtectedRootServer.java | 16 - .../earlybird_root/ProtectedRootService.docx | Bin 0 -> 37836 bytes .../earlybird_root/ProtectedRootService.java | 110 -- .../ProtectedScatterGatherModule.docx | Bin 0 -> 37396 bytes .../ProtectedScatterGatherModule.java | 62 - .../search/earlybird_root/QuotaModule.docx | Bin 0 -> 37791 bytes .../search/earlybird_root/QuotaModule.java | 110 -- .../twitter/search/earlybird_root/README.docx | Bin 0 -> 36951 bytes .../twitter/search/earlybird_root/README.md | 8 - .../earlybird_root/RealtimeCgRootAppMain.docx | Bin 0 -> 37106 bytes .../earlybird_root/RealtimeCgRootAppMain.java | 40 - .../RealtimeCgRootAppModule.docx | Bin 0 -> 37868 bytes .../RealtimeCgRootAppModule.java | 152 -- .../earlybird_root/RealtimeCgRootServer.docx | Bin 0 -> 36887 bytes .../earlybird_root/RealtimeCgRootServer.java | 18 - .../earlybird_root/RealtimeCgRootService.docx | Bin 0 -> 38017 bytes .../earlybird_root/RealtimeCgRootService.java | 132 -- .../RealtimeCgScatterGatherModule.docx | Bin 0 -> 37483 bytes .../RealtimeCgScatterGatherModule.java | 71 - .../earlybird_root/RealtimeRootAppMain.docx | Bin 0 -> 37096 bytes .../earlybird_root/RealtimeRootAppMain.java | 39 - .../earlybird_root/RealtimeRootAppModule.docx | Bin 0 -> 37851 bytes .../earlybird_root/RealtimeRootAppModule.java | 151 -- .../earlybird_root/RealtimeRootServer.docx | Bin 0 -> 36885 bytes .../earlybird_root/RealtimeRootServer.java | 18 - .../earlybird_root/RealtimeRootService.docx | Bin 0 -> 37987 bytes .../earlybird_root/RealtimeRootService.java | 129 -- .../RealtimeScatterGatherModule.docx | Bin 0 -> 38047 bytes .../RealtimeScatterGatherModule.java | 118 -- .../RootResponseClassifier.docx | Bin 0 -> 37463 bytes .../RootResponseClassifier.java | 69 - .../earlybird_root/ScatterGatherModule.docx | Bin 0 -> 38279 bytes .../earlybird_root/ScatterGatherModule.java | 167 -- .../earlybird_root/SkipPartitionFilter.docx | Bin 0 -> 37567 bytes .../earlybird_root/SkipPartitionFilter.java | 70 - .../earlybird_root/SuperRootAppMain.docx | Bin 0 -> 37173 bytes .../earlybird_root/SuperRootAppMain.java | 48 - .../earlybird_root/SuperRootAppModule.docx | Bin 0 -> 38863 bytes .../earlybird_root/SuperRootAppModule.java | 234 --- .../SuperRootRequestTypeRouter.docx | Bin 0 -> 37659 bytes .../SuperRootRequestTypeRouter.java | 79 - .../earlybird_root/SuperRootServer.docx | Bin 0 -> 37075 bytes .../earlybird_root/SuperRootServer.java | 36 - .../earlybird_root/SuperRootService.docx | Bin 0 -> 37913 bytes .../earlybird_root/SuperRootService.java | 121 -- .../search/earlybird_root/caching/BUILD | 20 - .../search/earlybird_root/caching/BUILD.docx | Bin 0 -> 36907 bytes .../caching/CacheCommonUtil.docx | Bin 0 -> 36897 bytes .../caching/CacheCommonUtil.java | 16 - .../earlybird_root/caching/CacheStats.docx | Bin 0 -> 36855 bytes .../earlybird_root/caching/CacheStats.java | 13 - .../DefaultForcedCacheMissDecider.docx | Bin 0 -> 36990 bytes .../DefaultForcedCacheMissDecider.java | 24 - .../caching/EarlybirdCachePostProcessor.docx | Bin 0 -> 36944 bytes .../caching/EarlybirdCachePostProcessor.java | 22 - .../EarlybirdRequestPerClientCacheStats.docx | Bin 0 -> 37242 bytes .../EarlybirdRequestPerClientCacheStats.java | 46 - .../earlybird_root/caching/FacetsCache.docx | Bin 0 -> 36842 bytes .../earlybird_root/caching/FacetsCache.java | 15 - .../caching/FacetsCacheFilter.docx | Bin 0 -> 37145 bytes .../caching/FacetsCacheFilter.java | 32 - .../caching/FacetsCacheRequestNormalizer.docx | Bin 0 -> 36928 bytes .../caching/FacetsCacheRequestNormalizer.java | 18 - .../caching/FacetsQueryCachePredicate.docx | Bin 0 -> 37049 bytes .../caching/FacetsQueryCachePredicate.java | 24 - .../caching/FacetsServicePostProcessor.docx | Bin 0 -> 36964 bytes .../caching/FacetsServicePostProcessor.java | 24 - ...RecencyAndRelevanceCachePostProcessor.docx | Bin 0 -> 37447 bytes ...RecencyAndRelevanceCachePostProcessor.java | 66 - .../earlybird_root/caching/RecencyCache.docx | Bin 0 -> 36843 bytes .../earlybird_root/caching/RecencyCache.java | 15 - .../caching/RecencyCacheFilter.docx | Bin 0 -> 37200 bytes .../caching/RecencyCacheFilter.java | 34 - .../RecencyCacheRequestNormalizer.docx | Bin 0 -> 36918 bytes .../RecencyCacheRequestNormalizer.java | 16 - .../caching/RecencyQueryCachePredicate.docx | Bin 0 -> 37052 bytes .../caching/RecencyQueryCachePredicate.java | 24 - .../caching/RecencyServicePostProcessor.docx | Bin 0 -> 36992 bytes .../caching/RecencyServicePostProcessor.java | 27 - .../caching/RelevanceCache.docx | Bin 0 -> 36844 bytes .../caching/RelevanceCache.java | 15 - .../caching/RelevanceCacheFilter.docx | Bin 0 -> 37158 bytes .../caching/RelevanceCacheFilter.java | 33 - .../RelevanceCacheRequestNormalizer.docx | Bin 0 -> 37231 bytes .../RelevanceCacheRequestNormalizer.java | 40 - .../caching/RelevanceQueryCachePredicate.docx | Bin 0 -> 37056 bytes .../caching/RelevanceQueryCachePredicate.java | 24 - .../RelevanceServicePostProcessor.docx | Bin 0 -> 36982 bytes .../RelevanceServicePostProcessor.java | 24 - .../RelevanceZeroResultsCacheFilter.docx | Bin 0 -> 37384 bytes .../RelevanceZeroResultsCacheFilter.java | 40 - ...elevanceZeroResultsCachePostProcessor.docx | Bin 0 -> 37034 bytes ...elevanceZeroResultsCachePostProcessor.java | 20 - ...anceZeroResultsCacheRequestNormalizer.docx | Bin 0 -> 37255 bytes ...anceZeroResultsCacheRequestNormalizer.java | 31 - ...levanceZeroResultsQueryCachePredicate.docx | Bin 0 -> 37105 bytes ...levanceZeroResultsQueryCachePredicate.java | 31 - ...evanceZeroResultsServicePostProcessor.docx | Bin 0 -> 37260 bytes ...evanceZeroResultsServicePostProcessor.java | 36 - .../caching/StrictRecencyCache.docx | Bin 0 -> 36847 bytes .../caching/StrictRecencyCache.java | 15 - .../caching/StrictRecencyCacheFilter.docx | Bin 0 -> 37214 bytes .../caching/StrictRecencyCacheFilter.java | 34 - .../StrictRecencyQueryCachePredicate.docx | Bin 0 -> 37072 bytes .../StrictRecencyQueryCachePredicate.java | 25 - .../caching/TermStatsCache.docx | Bin 0 -> 36843 bytes .../caching/TermStatsCache.java | 15 - .../caching/TermStatsCacheFilter.docx | Bin 0 -> 37156 bytes .../caching/TermStatsCacheFilter.java | 33 - .../TermStatsCacheRequestNormalizer.docx | Bin 0 -> 36926 bytes .../TermStatsCacheRequestNormalizer.java | 17 - .../caching/TermStatsQueryCachePredicate.docx | Bin 0 -> 37059 bytes .../caching/TermStatsQueryCachePredicate.java | 24 - .../TermStatsServicePostProcessor.docx | Bin 0 -> 37005 bytes .../TermStatsServicePostProcessor.java | 25 - .../caching/TopTweetsCache.docx | Bin 0 -> 36844 bytes .../caching/TopTweetsCache.java | 15 - .../caching/TopTweetsCacheFilter.docx | Bin 0 -> 37159 bytes .../caching/TopTweetsCacheFilter.java | 33 - .../TopTweetsCacheRequestNormalizer.docx | Bin 0 -> 36933 bytes .../TopTweetsCacheRequestNormalizer.java | 18 - .../caching/TopTweetsQueryCachePredicate.docx | Bin 0 -> 37058 bytes .../caching/TopTweetsQueryCachePredicate.java | 24 - .../TopTweetsServicePostProcessor.docx | Bin 0 -> 37202 bytes .../TopTweetsServicePostProcessor.java | 41 - .../search/earlybird_root/collectors/BUILD | 12 - .../earlybird_root/collectors/BUILD.docx | Bin 0 -> 36817 bytes .../collectors/MultiwayMergeCollector.docx | Bin 0 -> 37758 bytes .../collectors/MultiwayMergeCollector.java | 82 - .../collectors/RecencyMergeCollector.docx | Bin 0 -> 37569 bytes .../collectors/RecencyMergeCollector.java | 75 - .../collectors/RelevanceMergeCollector.docx | Bin 0 -> 37228 bytes .../collectors/RelevanceMergeCollector.java | 39 - .../search/earlybird_root/common/BUILD | 22 - .../search/earlybird_root/common/BUILD.docx | Bin 0 -> 36952 bytes .../common/ClientErrorException.docx | Bin 0 -> 36851 bytes .../common/ClientErrorException.java | 24 - .../common/EarlybirdFeatureSchemaMerger.docx | Bin 0 -> 40633 bytes .../common/EarlybirdFeatureSchemaMerger.java | 377 ----- .../common/EarlybirdRequestContext.docx | Bin 0 -> 38950 bytes .../common/EarlybirdRequestContext.java | 227 --- .../common/EarlybirdRequestType.docx | Bin 0 -> 37489 bytes .../common/EarlybirdRequestType.java | 68 - .../common/EarlybirdRequestUtil.docx | Bin 0 -> 37883 bytes .../common/EarlybirdRequestUtil.java | 107 -- .../common/EarlybirdServiceResponse.docx | Bin 0 -> 37550 bytes .../common/EarlybirdServiceResponse.java | 87 -- .../earlybird_root/common/InjectionNames.docx | Bin 0 -> 36809 bytes .../earlybird_root/common/InjectionNames.java | 10 - .../common/QueryParsingUtils.docx | Bin 0 -> 37846 bytes .../common/QueryParsingUtils.java | 86 -- .../common/TwitterContextProvider.docx | Bin 0 -> 36917 bytes .../common/TwitterContextProvider.java | 20 - .../search/earlybird_root/config/BUILD.bazel | 7 - .../search/earlybird_root/config/BUILD.docx | Bin 0 -> 36747 bytes .../config/RootClusterBoundaryInfo.docx | Bin 0 -> 37117 bytes .../config/RootClusterBoundaryInfo.java | 48 - .../search/earlybird_root/filters/BUILD | 40 - .../search/earlybird_root/filters/BUILD.docx | Bin 0 -> 37147 bytes .../filters/ClientIdArchiveAccessFilter.docx | Bin 0 -> 37538 bytes .../filters/ClientIdArchiveAccessFilter.java | 56 - .../ClientIdQueryOperatorStatsFilter.docx | Bin 0 -> 38430 bytes .../ClientIdQueryOperatorStatsFilter.java | 129 -- .../filters/ClientIdQuotaFilter.docx | Bin 0 -> 40147 bytes .../filters/ClientIdQuotaFilter.java | 274 ---- .../filters/ClientIdTrackingFilter.docx | Bin 0 -> 38613 bytes .../filters/ClientIdTrackingFilter.java | 148 -- .../filters/ClientRequestTimeFilter.docx | Bin 0 -> 37167 bytes .../filters/ClientRequestTimeFilter.java | 34 - .../filters/DeadlineTimeoutStatsFilter.docx | Bin 0 -> 38470 bytes .../filters/DeadlineTimeoutStatsFilter.java | 188 --- .../filters/DisableClientByTierFilter.docx | Bin 0 -> 37641 bytes .../filters/DisableClientByTierFilter.java | 64 - .../DropAllProtectedOperatorFilter.docx | Bin 0 -> 37547 bytes .../DropAllProtectedOperatorFilter.java | 71 - .../EarlybirdClusterAvailableFilter.docx | Bin 0 -> 37876 bytes .../EarlybirdClusterAvailableFilter.java | 85 -- .../EarlybirdFeatureSchemaAnnotateFilter.docx | Bin 0 -> 37424 bytes .../EarlybirdFeatureSchemaAnnotateFilter.java | 57 - .../EarlybirdResponseExceptionHandler.docx | Bin 0 -> 37827 bytes .../EarlybirdResponseExceptionHandler.java | 108 -- .../EarlybirdSuccessfulResponseHandler.docx | Bin 0 -> 37237 bytes .../EarlybirdSuccessfulResponseHandler.java | 54 - .../EarlybirdTimeFilterQueryRewriter.docx | Bin 0 -> 38413 bytes .../EarlybirdTimeFilterQueryRewriter.java | 133 -- 400 files changed, 20641 deletions(-) create mode 100644 src/java/com/twitter/search/earlybird/search/facets/SimpleCountRankingModule.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/SimpleCountRankingModule.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.java create mode 100644 src/java/com/twitter/search/earlybird/search/facets/TweetSearchFacetCountIteratorFactory.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/facets/TweetSearchFacetCountIteratorFactory.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/BadUserRepFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/BadUserRepFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/MatchAllDocIdSet.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/MatchAllDocIdSet.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/MatchAllDocsQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/MatchAllDocsQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/SinceUntilFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/SinceUntilFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/TermQueryWithSafeToString.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/TermQueryWithSafeToString.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/TimedDocIdSetIterator.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/TimedDocIdSetIterator.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserIdMultiSegmentQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserIdMultiSegmentQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserScrubGeoFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/queries/UserScrubGeoFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/AbstractRelevanceCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/AbstractRelevanceCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/LinearScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/LinearScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ModelBasedScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ModelBasedScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/RelevanceQuery.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/RelevanceQuery.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunctionProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunctionProvider.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/SpamVectorScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/SpamVectorScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.docx delete mode 100644 src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.java create mode 100644 src/java/com/twitter/search/earlybird/segment/DLSegmentDataProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/DLSegmentDataProvider.java create mode 100644 src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.java create mode 100644 src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.java create mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentDataProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentDataProvider.java create mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentDataReaderSet.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentDataReaderSet.java create mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird/segment/SegmentProvider.java create mode 100644 src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.docx delete mode 100644 src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.java create mode 100644 src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.docx delete mode 100644 src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.java create mode 100644 src/java/com/twitter/search/earlybird/stats/SegmentSyncStats.docx delete mode 100644 src/java/com/twitter/search/earlybird/stats/SegmentSyncStats.java create mode 100644 src/java/com/twitter/search/earlybird/tools/EarlybirdThriftRequestDeserializerUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/tools/EarlybirdThriftRequestDeserializerUtil.java create mode 100644 src/java/com/twitter/search/earlybird/util/ActionLogger.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ActionLogger.java create mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdAction.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdAction.java create mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionInterface.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionInterface.java create mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionLockFailed.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionLockFailed.java create mode 100644 src/java/com/twitter/search/earlybird/util/EarlybirdDecider.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/EarlybirdDecider.java create mode 100644 src/java/com/twitter/search/earlybird/util/EarlybirdSearchResultUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/EarlybirdSearchResultUtil.java create mode 100644 src/java/com/twitter/search/earlybird/util/FieldTermCounter.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/FieldTermCounter.java create mode 100644 src/java/com/twitter/search/earlybird/util/Histogram.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/Histogram.java create mode 100644 src/java/com/twitter/search/earlybird/util/IndexViewer.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/IndexViewer.java create mode 100644 src/java/com/twitter/search/earlybird/util/JsonViewerWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/JsonViewerWriter.java create mode 100644 src/java/com/twitter/search/earlybird/util/OneTaskScheduledExecutorManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/OneTaskScheduledExecutorManager.java create mode 100644 src/java/com/twitter/search/earlybird/util/ParallelUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ParallelUtil.java create mode 100644 src/java/com/twitter/search/earlybird/util/PeriodicActionParams.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/PeriodicActionParams.java create mode 100644 src/java/com/twitter/search/earlybird/util/ScheduledExecutorManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ScheduledExecutorManager.java create mode 100644 src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.java create mode 100644 src/java/com/twitter/search/earlybird/util/ScrubGenUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ScrubGenUtil.java create mode 100644 src/java/com/twitter/search/earlybird/util/ShutdownWaitTimeParams.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ShutdownWaitTimeParams.java create mode 100644 src/java/com/twitter/search/earlybird/util/TermCountMonitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/TermCountMonitor.java create mode 100644 src/java/com/twitter/search/earlybird/util/TweetCountMonitor.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/TweetCountMonitor.java create mode 100644 src/java/com/twitter/search/earlybird/util/ViewerWriter.docx delete mode 100644 src/java/com/twitter/search/earlybird/util/ViewerWriter.java delete mode 100644 src/java/com/twitter/search/earlybird_root/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/ClientBackupFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ClientBackupFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/ClientLatencyFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ClientLatencyFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdCommonModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdCommonModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedValidationBehavior.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedValidationBehavior.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedWarmup.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdProtectedWarmup.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceLoggingSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceLoggingSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.java create mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdWarmup.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/EarlybirdWarmup.java create mode 100644 src/java/com/twitter/search/earlybird_root/ExceptionHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ExceptionHandler.java create mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootAppMain.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootAppMain.java create mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootServer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootServer.java create mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/FullArchiveRootService.java create mode 100644 src/java/com/twitter/search/earlybird_root/InitializeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/InitializeFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/PartitionAccessController.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/PartitionAccessController.java create mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootAppMain.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootAppMain.java create mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootAppModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootAppModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootServer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootServer.java create mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedRootService.java create mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/QuotaModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/QuotaModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/README.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/README.md create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppMain.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppMain.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootServer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootServer.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgScatterGatherModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeCgScatterGatherModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootAppMain.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootAppMain.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootServer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootServer.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeRootService.java create mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/RootResponseClassifier.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/RootResponseClassifier.java create mode 100644 src/java/com/twitter/search/earlybird_root/ScatterGatherModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/ScatterGatherModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/SkipPartitionFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SkipPartitionFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootAppMain.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootAppMain.java create mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootAppModule.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootAppModule.java create mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootRequestTypeRouter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootRequestTypeRouter.java create mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootServer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootServer.java create mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootService.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/SuperRootService.java delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/caching/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/caching/CacheCommonUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/CacheCommonUtil.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/CacheStats.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/CacheStats.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/DefaultForcedCacheMissDecider.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/DefaultForcedCacheMissDecider.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/EarlybirdCachePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/EarlybirdCachePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/EarlybirdRequestPerClientCacheStats.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/EarlybirdRequestPerClientCacheStats.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/FacetsServicePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyAndRelevanceCachePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyAndRelevanceCachePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RecencyServicePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceServicePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCachePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCachePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/RelevanceZeroResultsServicePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/StrictRecencyQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TermStatsServicePostProcessor.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCache.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCache.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCacheFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCacheFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCacheRequestNormalizer.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsCacheRequestNormalizer.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsQueryCachePredicate.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsQueryCachePredicate.java create mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsServicePostProcessor.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/caching/TopTweetsServicePostProcessor.java delete mode 100644 src/java/com/twitter/search/earlybird_root/collectors/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/collectors/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/collectors/MultiwayMergeCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/collectors/MultiwayMergeCollector.java create mode 100644 src/java/com/twitter/search/earlybird_root/collectors/RecencyMergeCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/collectors/RecencyMergeCollector.java create mode 100644 src/java/com/twitter/search/earlybird_root/collectors/RelevanceMergeCollector.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/collectors/RelevanceMergeCollector.java delete mode 100644 src/java/com/twitter/search/earlybird_root/common/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/common/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/common/ClientErrorException.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/ClientErrorException.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdFeatureSchemaMerger.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdFeatureSchemaMerger.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestContext.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestContext.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestType.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestType.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestUtil.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdRequestUtil.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdServiceResponse.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/EarlybirdServiceResponse.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/InjectionNames.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/InjectionNames.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/QueryParsingUtils.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/QueryParsingUtils.java create mode 100644 src/java/com/twitter/search/earlybird_root/common/TwitterContextProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/common/TwitterContextProvider.java delete mode 100644 src/java/com/twitter/search/earlybird_root/config/BUILD.bazel create mode 100644 src/java/com/twitter/search/earlybird_root/config/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/config/RootClusterBoundaryInfo.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/config/RootClusterBoundaryInfo.java delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/BUILD create mode 100644 src/java/com/twitter/search/earlybird_root/filters/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdArchiveAccessFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdArchiveAccessFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdQueryOperatorStatsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdQueryOperatorStatsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdQuotaFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdQuotaFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdTrackingFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientIdTrackingFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientRequestTimeFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/ClientRequestTimeFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/DeadlineTimeoutStatsFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/DeadlineTimeoutStatsFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/DisableClientByTierFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/DisableClientByTierFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/DropAllProtectedOperatorFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/DropAllProtectedOperatorFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdClusterAvailableFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdClusterAvailableFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdFeatureSchemaAnnotateFilter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdFeatureSchemaAnnotateFilter.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdResponseExceptionHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdResponseExceptionHandler.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdSuccessfulResponseHandler.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdSuccessfulResponseHandler.java create mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeFilterQueryRewriter.docx delete mode 100644 src/java/com/twitter/search/earlybird_root/filters/EarlybirdTimeFilterQueryRewriter.java diff --git a/src/java/com/twitter/search/earlybird/search/facets/SimpleCountRankingModule.docx b/src/java/com/twitter/search/earlybird/search/facets/SimpleCountRankingModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..77abde3905d8bcd499d1842d78cb860c8fe428ee GIT binary patch literal 37133 zcmagFWmsIvwm*!!dvJGmcL)S`m!Lr#2@Z`1cMIaC$k8XdP$&Smu)-HIxxoJOID}f@ainGoXA5w+>P^x zX-q4Jz%a*Uq~7@uuha>3dN)z)Nl2a;7-VSWlS3AJ=da~4pIY$jNyU-LF39W<%?`lS zv}Aa{o8ks%-Kpv0H^K-$6VK5NNYZ`)i>9fJ(ZnDb42Dw`8ifw6&Y$MVZKrThS3Mf0 z*&LVGVbd}{vhEemG!d7Os$z|laBDspZ9B+@wtZd7vqNbe&<@(35I$nOAW`m zm7YQr_d!Ge+K*kkZf3VJEsi6Yy3)vNHQjX#>)_oJfK3o}&CDTWme!lSK+f@sCc~$8 zU7cukAFHE48GO$>36zZE?f^QPdNPAVm^AkGm`d-UyS}?Sy22Pr;fKXg!@JoT1-o$# zzhTrbTpA*^s%>I1$s-(mJa3Li668KNIYD|$e3FVj?UF`9wEm*~UiTL$Px~LCm+|hA z{HyL{o;!;6Tvh_|OywDq>GWQbhziiV;yylkJt7vDzmpX1d0r@9+Y=eRBhP!nQZNKl z{znx(sO3cOLDgG_00Tn={WWqjw{>P={(Y^CpZEaDhURxBEHzA3Y~Q3IS+Ha%d8kkz z-2HX@w8$PPQ?%UKp(1IZjnhMXaJFM=F`u4Ku*gtk8>nTXGZ&D%(4)OUchS&hv?e8@>wvD7s%XZB%UggV>xg+RA$u?tT^8G# zf%EOLP5F~v`33V~poEf|p*!U@%tSjzKd)tjVDWUz&ij2PN{R_B&q)iH^*|M0hbiJ; zthFg;x{Wc5K5!$`dfaFKOi<_-L^UhWZ9WZ35IQJ9W&l%VCxC-9iz&d#{P#_s89%1j z$BHI(=Pfm>pc!_B1}7y;4}KK>K?cizvGtadOTl(5i+f^Yr@&4(hryM2LtyC2L3oX) zu^G}dI6jypB<{@LEF4h>`*p2ur`#;K08bZx1mcs`+ZP`M(;#cV^Z6B`dvEi>YA+LO{`Sxgf$>s|r(nSvX z^?txubw9(Lwg!fs@Wk~28VMDgLsTVI)vZO7eKY*T*~xKZ$`#U}9H}`32_^Ym?(|7X zg=j!7+^U}II-tL>c4&5XdzHzV%1`98Sqn!E=1bEUFHOovV8&W5%8;9oWe9v`;@$Oy z66`7}CwSNxVMyUK0GXF4rq7 zxW}Nn*g}DUq5Zus9~~V2D2w`-{R%5u`x66{!RK%*STPm6_<(t_X^A!bn)r<7*-`Qj zaZs&n+d!X(P;9<0EH_~S^#V@~qfZNB7O)M9pER(?9`c5j9oG;VtHX!(S0)a~ouSI0 zOR+Tv&#adG{t3ae6hIpjHL0KbueZHwP`-z@oX{U!PI71QO*^@fk;wepv!mmnb%&DHYSVb`)^+i-#8}q4E+^8$A4S_h~<~1~XCAig4*0 zI;GF#w6Ij|SWWqdZRQFxp{hX|%4DJ^6A}UjQ@T^Fg9C{LT?0kEDC}%5d~{c;tzcj) z_#S`;I?+Z5Px-y8?l#HYC;S&Q<_kNvgUtsQA;cp$7+zpYJv?#B3B2vgNaPr?e~ax# zN|Nw|)&`|ONCvKkm#tDg15PwUnKv$F%o=PX5N8r z3R&zwKd^29Co>k%r`E*|v^f2~GbXfGoL0Eee9p8;Jwta>zZTePIhw2eoGoR~vQmxN z1A;*@OZAg>L*!r;&iI~Tkh)xGG%*%?lGY$@Zf^cEk@|Vv*Q_5)_o*)_a%GLw8Z%a& zN?&pN)<~=GWrv$Bc{B)tip+khr$Gb>$e($GIWS6CKov@=;Hz2FlBA<|-S@o)$;mn( zgQGI?gI%{eaT(_xQg7-HS$8xSiUo!S6JsQMH|f2^G)?4`@`>+GqiLsNSVZ{~dk{O^ z6dHd0J?cL*bUAOJv<{E!7T=Et=nC%#tat>^>2=HRXqK9H4K5m;m&{+siTb8RSk!rb zs-n^5nLy}(m+jg$WopgGwMLWCmQA=YDP3`%c3`y;B^Ep%{b(t5_o*$%clPs_2@D6! z$1tNr#Hr_x{q_xFlJubi;R>`BXG^R)3Y|+=1v=Pnb(u}s4fGLI_!}rE`i3kuHE4p+ z<<9wI-hDAyQ-clg8C;{wNmM1L+C>`)iwWk_MGmGgHt zf*M)4AM`Gh6s?qXnFE|DV61??knR{ zD{P>UV|pgxb@v(;qf9aWQ0rnSGI#qcR1G^0KGGpw z15D8KBTeUtRaQ45)NQAb^>k4<4b%(tobpg@eV;-3l#tG^>Xc?{YRaAY_7%2Fg68MS z8k#%G`;{;uvY(IF9d-!^=)ehFX{lrG+>ln!PKHUC$bNzOSzmh@Z23*@sV}OQXH;d2 zFBul^h9cHm<)TRQ_YpNiCfBP1b!b*F#kF6m>P5E&`tW3iJezybd)0n;?6^a%BDL;P z2kvt9llOP|K`ACVr_yJuPI?y-cGAQM)lRN^D!y^My|8eGMB_5r{mOhFcCQZq*?`|v zOAz;4zA7Ae%Kjr2y#5I>Tpkv>5T@4xs5Dkar1>=!glRy3P_z`LFY zFWKjH%Uh)J=BTP^4MMbkS10&Os!`MsdEw@bIcQ8o4E7EDpYw>l9{~nCXn`36%_W4O z1?G==?NitHoa{mP?mqnEBO^bVF@j=z=I+t6Dx zW0ctT-?`)V$)>TJnYdM(Ul+h*X!sDo8wr7mH506Cjv;7?nsVG-FQXx5Q%MTXU(>_g zu_!36Fnv;+^r_!J)KT{Fgc&T?ie?>G-c7L$b3z zd$y5ZOjNa8c2wAGimatM_iQTGYXY=Q5kQa9elsJHzV|Yfi*<1XqY3E zDBAOXR?v^aFoM#&%Yf|TxHq;M-LaTA1(S5^l1PzYFRaN>+k(6-=7*;DJzK6gcEdR`PR5^}71Pd6Lp$0S<>c4XB{Mp0S-1+y64SEbn*p{yI>FUbMH+tT+ ziwy!BnzRRtcP0Gj)sa%(7c*o%WVeO(VWv=b%VCLsdTS&;xk;hA&;H%x+xAkBa;4+C} za`E|8-$6*q-qzU4adY|0*zsk9$Eqz)u?R^;Pj`pX7rxNQy0>eqdR?!lxs@?bw{Vd+ z2W>zf`d!=3)&7n9yOZ+aPeykk#S4AFMq%PUOW;!0ke80V>%zw`iXU@QCXQ-EPDL_b zafIca-d`wh4TS{W8?mfBfke4&_^zLzjt!kWuKDnOe-RO%5IWIX2kj#5y!fSkiGjkD zzSO=0Z-}>TGZ&}FZeu&v^$&O-kYU}If=oNIPomSG&XaB~-P4G8#;zlPPE4LJe4Z3n z3FSLqA*UGpQz7-JA=OnPFEvI!IwC&2!7S}&e7r6KO@y>^VAD;1rZR#-N|KJ}rE_Qm3=- zPqn-cd}}wTnxA?)nR#@$b9@<+y}c4SITOxMk#01Yn?3K_zqa4$DDZGY_V?%aP+ip7nt$-Wy1Dt9) z0u@xxfutkZQ9^zYW226$cLk6 zDI(K%=t7;+NE&Bkd&Cbn!WR0Qc4L z)g_s4OX~iBAmyJzlNejl(&XN`;oFL-w`k`~D5*WW@7T69G-mtC7%9Z8m;8J-u=aH0 z(rREo;3f9lw=nLS`)SerO7DJfCcApez53^zu+qWa{z%@|ebk1CLGz6yNwobo^O9(i ze)Jhv9RAyr1Cj)j$CNP|<7z2U#>T)Z>Fp`dbuq&Yd0?fJ*>@;g#_rfD{-E_&e>k9e z+rKIXt<=_sROULJiSt z;B1u|&8G*vy!M|LDIJWluYV>EYnL5OSN$-SzWE$q#sf_!F@L5Y%TK~yKjUE|mLzvF z@0%fsp+#9VyJS}9v2A8Ff4q<_{(uUaKj9R7y@wx1b{=P5(X6{u`_~;^((mn_n$>oh zMV>o55IzXV4-9Va`O0zQyk~LZ!LbzfSkWdl=(J-53ck5H0`oM2Xjt5=+VYL@+bo`^ z@oc`l5(kd2?7=C%=Kv~you*D!Hin%fSK9wiiba;N5G| z+x*Gn%+Kc|2iA}6uPq{(w=B<7L(rbDV5m#!9xcL9MjLI-DML4852|rbT*j+G`6Z{$ z&L~m}W7K2Ww<#zxkp$n`)laijTjc@)->c@Ho-w<+yjA=zxOAU2Bp(_`ACLi0*flr| zH}Nn{ACPUy-Yp)b`4f~U%cadQa}`IKDYm)o2Z{f>I?8Gnn$%*eaS>E~S3`^f<~()$ z{4=%(`a&Se@GmoY} zN}GnruDSaVVJ$uUNVK7FEsub&mrC@8UfAifJx0K_P*P2gja6wb;Fq)BzZX;Dj?Oed zqOSB(hbpuo^75`(Vp0Tf-P@|-G?!mwaLZ0OdO5med#KQU8Q=YVlu=(T=GQo;LsB08 zvR0$kVQ4X0NovILtbL4nhicRf)Sldr8U-Jz!I82-{$r6P8pdgYWR7z=C@v2P$I_*f z(lXriTH;)94V@@|-^^osj{aB`XFT!+!n!GgJOxIQtpy@_ZzvtHXSzf_XNY|{Y=Ep% z`mKj~-<8uHAAix2u#R4gK$P^9_IRZ%;w^smTGOgAKW#8ll%N+|LjROursR>=?UwP6 z?|oAnO)Fe0XJ_#XX&QY=2w&drUmxcQaVz9dGgx`M7Tq~(G(K|WBPgmSG8@0ln@L-QY*I{d@-?^8(0ZW>tV zxJgor9K%F;BGOg!7^YL9q%tL|`-iYuHRA2PdpsUh_U`EMn2>k*O~*k`IyYO-2A@~o zWvHIaT5>qi`ERDIRnui6KV?~RkYNsHd!-Br+SJz}pTQO>SSJmS?!yOLb zdtSjeB0O~AEnb^}=9X=O4JsHeHdgzh#|MX(@5K{a?g&v{Q=bPAe@@>1fVihB=S*B( zT!PjdNz$myip_#>O}DcgQMheM8#$ zHIpje=3qI3NZ(wx^x)<7Tg`=Ic-q;mz#A)5uYF6R9*Qv5fm zQNN(YhV&Kac5pja+*qlSC`P&A3A|6+ONN_Ie4pa8Ii4cdl(7p!*R}OF@eZRpFcqDz zxm|1*T-`UYUEn(4z3E_NHJZBuEanE5I_zXpHa(U_)b9qd=!$^Y8cew?MdSq{{ zjiw380I^;J8F4;*+j1op3c_c{(>@dgYQr{xO(_B>ZR-eQB9cqJw4jF-H#_{ z;sT-$t|QJIz9SVhp@p$n%7CD1({0~racr1nW81>f!12En9YJ%23XY7D-1aMJrWE2OO>4*dN z{V>O}p_icb2l(n24w2PBFca7kfU2;=iRQHdKQ*tmy+V|nW@AAYBE=$?E%FK8{gtyt_U{xGOcNYz4#|+L?vO|s>+ZoX-21qE zey^b_@N{Dbqq@8qf*;9=^6W%O73zDL2Gp&3=zE(L!tg;U zwj6G)-DKI4CWMc4GuF8{xDsv3KAMnznPG!mlSEx6!qMJMnryzId;UA>BZG0+s^e?y zn-8}U-`kduhL1~w6>wDmpl}={AL))i!b|=NpZ$0E;qUN3V)2eLAMR`WACQ-x)-N+s zv+4ELO)gT|DlE|L%H5bpg?y5zDP_1f@h7pi#Q~lk9Z^3@aMu?@m8-3NF*?!-{M)m1 zsa?=-_AAot9;Pj4<-l36&VxLyP^S9|kEA-x1SnTZa|{iYN;r>#d4kAi%a<3V&We<4 zT!dz=%K}SyEaz;?6NU2)5!`eAXlCV{Ly4I+uD%)85k;SdsmkuPI>@hK@zMbzi+ z5d(^Guq0{>!m5n>ZsR5FeSWOkUdyanon5-@tQKzI;T^yIH%$9ST@Iqj5eoSn`{l<} zDd4<k{S9@} zb;%NIu!Jk{dn2#(fDl3_b)dhlwT-zz7Mm))?=6jk4m}sX47j zitL&GgCkmq%jK!!2*2~&D|INw#f;@Cgh&K>2!t4hcZIXe+2O?0?|GWxO61(jHH40S zNh(T-@_YIBk_m_$>PqI5lR_IM^oY_#egaViM3T5S4V`ACc9dD6$NrlKit=APiaWBn z;9JEP%IG!5&PRhRtn?*tv>;1~KYog-U$gRkYn2i;=+&z{QaR{hREJV$ggC-O#X?bs znmvDgVtZ$WqDMPZ2=EpIf}04LKqO+PoYcyPo35kF-1*V+fV1t2w!10m%lY2DVG}PA{1OQGeI>0l~s{6o_Fa9 ztvVBEUrcgHUq{Mc9a|qSA8LFNKhFAeAX3p16GXi?bfjoS8Pp2ArwOT^yrV)aNTYk? zYJiJb)ib)&tm+_3?#YqR&=3oPbY}|%rh;d5&LdF)Xsx&|#(NWMP?WwT#G84DbMdt@ zs*)xL466=aEgAO+Rbbd``^osr6QS|>jX;va^lR=yqZ|E1Fv=aarC~n~0Bbe%uZNYs zOKpwKC)hmfH^vuvGT=eUUkba^t^2y&b1aAhDFV#YmM0@%4!H0hw`#D-RUkv7%So67 zb0U484c^}!?T~^a$ymg|_=UVabGV{9HkEII)oa^4TL+2n8+f!Lqx1%30>KC4G@_+) zstCF)!ZA~}^DEP^0j#>MRYOMV3`KwLWh{s|h*WV>ConZQNu7fWbb*pr^5ygy|zu&7^SN@U>nWY2J+9`8DW56#I;|=xierAmNL|4 z9KRQ#g<^g8PXObK#iRu{5oMG%M63N;Rf88k?n++Ij20`PL+-UN^EZtYM5d%n zq1y6V+DK9s0&zOHaKksZ(ps^u)Ry0?0^VByi@OSfy>zGdZv8`u z3bV4h>r{+&x+#8q-%P_wT&3g@J77m{teu~;5V)Pj5#CQvStPvP-6nG<$`K_znPu!*r)9bP|)O`LA?JnC~0Dk>1O}3 zpD)ZAd*9v6YbA=4dvHO0$D2{iY?HC6YQjNd+T?x$44rZ0^Mljm3^VuM&KOKZ5;6>Pp3l?$-QR}H9_oBl>}5WwFXX>|hl1O~!>Dnk zs_5d`y@!3P{74I%Iu_RA;w3{aPePc<&%bI<`+8+hzez>$!Peavf+qF}CYWge%9pG& zR-ekI`u*h=71I3@>qOr{;v<7g_@K>zSpDL)-CWg5*N;60e2n1eeg2`b!EMM=%aNJF zedv%k(J-=tD~R6NI&-tgi85b(s*}AK?iA($R4p}>3z2M?5jcYV3?Wq7CcKR3 zbq>uRWz%bCEVWH?)~Ag@Tk(1!FEy)M>!%v18_hXm_~tbWoaAmVI}FC2V5(N2L8^Ac z7MUR*V-H5($FSeja(_@`fT&^Re(%1=Ti552la2qNb~PIVQ44VYN&SNgGXmxRpuXtr zhi?zdHd^;?ecxdWe^go4gJD0D#mMOI_KQqApuLH*?N|geg2Fvi3q`J`-$9$)Y|Fkc zp4+r|s-|DGW2Xn>_b$8eU9;CL(qH7aF2f*lHP}DMo7p%qBbfgW@@Zq)&4=ieja8?= z$a{@tA5^vO5wx0BuzvJ@{sDWa)*8psVPv?`;omBB-@x$=A(QCs+u`Vkyqo)l?XMk0 zP{jpLjM^ySKcfJ(iGx0iIb!t7e3~=)z6u?gl}8tDP5ZHomSyWRV7e+Njq*xFE^d7* zT8$m3Ms;c5xo!%+36(lf*cJ;XuW1I4^t&^~`orId*UWm6p-~-!QDH8QGm0EHHcH?_ zxjwEj^paXr+W>bys%7rVv!8}#SxHVo*;K%NGZ zXN7I_we;=_S=u~!8uj;8G2p39xhWLf^>v$Dv>2zt{PUnhF~3!s*(#>OOlT4O;-vZn zkK#;0aar`Y_ASoJ7h#38nTAJfNls+RnNcruouiJr&>|PVB6!ZWxa_CpqZ~*Gp_fxC z3p9lUuC9ykrHX0P@9rdLIPwbb69B=_WeG*HgF@4sQJ>QMPUPpjcQ_S1 z%Z^IM2oz_Q&vr`r6v~anBxgi9E8A1b3fJY5KIy`KN)zRf><)NK=4b46^}PPJQ1LI1 zx_3n*1Aha%@|rRG!{krS%A3x?Z!-1cr$*W+~ zHPyDySqTK0#4NIU-5{DnO>)3=0B?J@q3kClO)j}$p zNXk+|!z)&KV-^wzF>VUSz}jKUoduiKlF}H4qYThMW^rhXvABR}f1=$AHesnZ79?@z z9?=`Gfpw9G{Jl&<4f}J>K!$>EL4(lRf1|mJRl@3qT>M63akzz<8064e99!;3ENL$L zg4<$uUgr+J4ij@OPWJ2I)`V^A*L*|jN7NofG&;0)usFzWL^L+ib}(GZFx*|}8)z0< zuAQH(hJGGMThO=723ZFaIK77R)P|xR8eHw&Cqsz?i0450Alz_;`+yPK$y|68j$dMx zuVAX8cGlodqz0s*ZH7BIvkV5yFyaxsq4F`p^v8CvE4*Grd6sn8D>BPQ%CY~5ixT@S z4ln3j{K95<#AK82R}BeUA8`W^oD}-^1-1@!foTGQGs?KW1T^GyZbBEHj1UbXvc{0L zcN=1{UP=o;>9HiIG=2kuUun*rL%4-_;;?kPm0%jup1P$^!kQ{BwtPeGp$~EIm~d;1fM%i_(%M*!Ca2V$7S6Mj5CcMk z9u|5tew0m&RMJ6RwqNDM+s6+#3ecwh0lem2pIg3Bk0qgEVQ~`zQqWz0K-`MT^kZ{+R^+;Lp^E*cYncK zpq%^b2JJ5J7Xr;OUD!h^n0?rT%Xhf`XXRfQH)!XJh0GSZfVhXojU&a(htfQ(^Okd| z?naxn&-+^I^50bf)H37MkmCS$hs;^~8TlZ7<$X}{f*#4ilgl_nG!h|* zaetBC{7Ho~uL?i}B>{4LDs>76F@-3Xg7yj%536CS+EaU2xa&yeuokNQ1t|)&D~Z|&o~xH`9HnEs(<_^f7tUT`5vkuqom17W zmFbhuqXgc1N64L^9QZvz@01=pkk1CQi};I)ArF;@1YhG;6JyUS>VMW>I^ELPxea<~ z{La`Ob@u$+y_MLl^WUYK%J%%Fipx>iJp8;YA|v`&{v2RS4UUW0yDndR&h30=EJCwX z8t80R`#YTHp;c&V{l%_jZ9l;UV-UPc&M_NIR!}83y$e!obl~l!hW*05cP=xl8xGaq zAKOeQVUiVsk8U2|FNFdurU1)SJO24tW-mEI)CzQA%G21Wo{*Azmf@nly6aM6+4e?axn%P_T>t`*h~>V~2`i1+ed9T& zIDn+LAWOi3mH<-yd}iTEA@$O8=UM%nqj57N3-aa$g8n`iKOF&Bq$n~<^!1v*Ki<3C zg?pnTfTS#@9Q&F6_OvW}LKa%&1G@V8v1d#t%HKYl zMdMBkf?+>j-vHH$+ShqSu%G3b?sE@BeLDOQfF*-PAflO=G6E}CGogO~NA)8BQxc|2 zH{U~xAge)PKjT%qy|jB7oOeEmDM5=wa$78^71pzfLW}rxY$VcE^Gt$T)ewP)e9A^F zIUv`yrJI&V*ZHe`fZZr>*R`($L?xRGVjD-EAU{KM2*4`so~gnB5|A_nP)bbO*NuBv z&b>pfkYSEnoayg>VqdGDOMIOTyqI-ad>$$c$R7MxG5^=xxaL2Y4C>I1Zli$mn*(s^ z*aTIS9a;q7aeoOq3PZ2{kcWG^t>qWoagmeSYsgN(Ftv+34d4)(gz#mjcQX*)E?^U?hi!70 z3Qdu;J%V)A=~uTo3p**^It)_tnhL8q;EJ4dUEGh;IObLKq9}0*ku|zp9-7xsu)8Jd;HdN);3(`50EaubfE}ozHn^daZsO?04R`*E3`K`_i@-<-Oa81df}qWoi`zp~ zLcoXA4!@n2QFXtafj&G02SRT&$es(~9>=ZqioX=-1y1)9IYanux+B^QgLIP*k$zZD>udDiagK17EUOu;QKnK<ygjy{ znoCBNRDU%(*<-tKeK8*ID?Ae8LL56s2?Q)A9!_^Jlr$A_5eMoO1cUJzfQnjLz9L_K zT$eY3txXNqkxhd+SZo8`aJE;ZVBKtQwX)IV`upqW%)~Lu|khZ zlX_}2{Kd|r0%?6eS^FJ3!`MyLsJtjjV$$B@j0H@iPARUPHW&jYUXpg|WQ8r(CA(_} z(~5G9bA>#qYgm#?Vp7!e#jr&->acCTY=t~|$9`gZItFvfvAH=i-dF8Z#d%Rv^Q_|) z=QxzMllr>g0}qZ1Jtj-@Bc!55jITq+o0T81$f*GVLPlS0FWk7Qmo zW$&ppi`W>hI=Yb;6O@~>*h`JwM%>l~b$*!O!M1Mfn}&(`WktmzX~xj#rcZBJ5?MVvxFY$~ zDAXqT-zy3s;^2K7l==cw3Ce8K2eFC@fePEx=v8n6PqrsC%)c>u>gYhiP-_+?aDCU- zVZF=XYvX_cF(xEIUkyY$EAk&}h9!m7)E!Dv3u8wZ1^=iXo3zg}$`sBiy(rpfR1_>6 z;?b$hX)Xm!+1`HcUH#FfJsX+i%#$c47;JE`(550eslTT+^o=?w2s%zj5H{=@sv}L8w+*pchuPL-tTn-;Gr<#sL|wO zn@TLbz>6vT>_vOhpYn}qf#ojZ!SPjTRwZD7Qd#9(T;<$g?l359IC?a7(h^eNZX2`! z=vys}3jH~1bvQ=A>BIn_QL#k%#}N}U_NLD|9Q`#UJ?BPSIY5~#63>^s_N?BuB(^OV zNuAbKfx1LgSq!&i^Rbf$V^YIT9NHHLNr)TLblo~rIk%u#6`#JFfF51_5LW$Dr>x>e zPVZtiGhrCDTcbqqDzbTwcrGf17<2$ankY2OIdw*+6G#NTI-Uo(r3mzu<}v8ECQ-sa zl)=~c0&~P!a>Nlc2_9jvA#7|>7mE{FwT2f^u$_3+JHrBVAjF^zassg9T({Ke%QW=R$ZN^N9r;iU#8}VcsFrFHZKS*B%#*lEeo5NACUtJajFUZ87>9O7|1|f~6{g_=4+9P8rOOKT_KSP6yO;oVo zX294X>1l(p6;Dau-h+^uqN(a43pvlw7oYc9eLo=#9njp}|o)89V_RcL^pzi5;#rD$zJ-dYZCVozd}De&etSLbG+ll9wW^ zN5sqZ50R39ufGta-03x3q*eqyqe>Mh*Wt29VQqSm!PB9smSEDAoZwia(%t7jmUmX-oJtDegn<= zj&}fMa$hay;pigQO3fn#ZE<7&KoBek%`J{BwwQFF_kQH6v`g@*(g^37u|ZgHbhF`D ziMI%iAy`Kuin<~NfB3+X_U9m~cgtt>(#MO!!gtqhr+~B(Au^Z>T*ZzPACVsBRP_S{ zQ5J~G^&I)`wfM zqBsa|5=t^?aRe7~=*CR(6Hr{t+6>6S+c-WM^oA=gI}vlFGy<|9j!tY~{k}q9%^7Me+ zcr>7tl?+BUGUhXh0WoMewsVnsdoNsGK5LLx6@T=Bz8Q3iUo_hfV>m`;IOqiUl}_|s zY%7QJ5K8F%tM9A3N9U7I>slrE@!bZ}8~6RbeJgNLuxdVg!}sdUXa_*Ev3hbFakI1S zQE%A!wm-FZn*R21_V)OC?AG>@JvFvwaQSp|+E!hSdUlq53p(1r-mxMi$Yg}m*40r# z+?2kyKl2JeO;2%4SIX8z9dk3{Ss8MhH0I@f?piq6|Jb@hHMk#fa~84oQren=Y-Ga{ z5pwnB0uv~Ed1viowR0QIT|MUFbU9=3RJTauYcE36wFva^df~RZa;Y`)(HE+|^)0e{ zNU;F=`o1+8__|r|tc>{-bUiS)`kw)PJ%o+gOTXQ^=NG^6y_t+TCk$l=rH3@9?0NdO zbhxeTIXm^G-<(?Ac%JYq&BrGw9Z1uY@Ltsz8HHpm=Y*^bEbRJLAz!Y(?p(ZQnHmzP zws+*+#EWYP8)I>|Cj(r0)99T0Bps*O9so6uSGoW^fa-;LP3y{+mRBb$1|1m5W&S9Y z+i6#8o~tdZi!}M1l#nyvbNjk2E=hKRzz5G~W~tp5-?xP|gE~PWd*a@`;(?VbU*9%J+Z?$U zJ3o=!lt>{iyYEBIiX{qc`Ow@;TgJ_r(TGMDOV-AQz~n^fL)G=}mC4J4w^Qru?FLER zT`J!-8{5Mxu=eG)@7Hqg-5L9u!z0ClN|?Wv=0*q3qy61CcWokjvkR*(`S~WZd$sbZ zaxBitMUl6Q>gLbmIDjXGS7yU{w>X|uVmhRwt=78{^4qNzTq;~fk(UOK`#SIE8YRW{ zE)i`dl-H*rqo(o+Zk^SQ4W;7ZK$2vZauUs$n6aCur>%$Ho0%iWhqtWcW8bsnn1!7; z0+Ri=(t(hP6;EI9964B_Gva&^;^gX|c^Ue3h6R1k&X45>*EDUBwGsq?@?$0U;U=gF57fkQdn4kdP59dRuqA`U z)m3#nHMV?XCsUh|b(`8|gtIbmaI$^#lX(xCr|2l{;r!Nd%56p>ApNyw!(R1P&veWY z&Q^-0S}9`9S_=?m!V6T;Szp^|E+5kM%8!4k9PDM8iU`@8*#{jJ?09l{7&0u2%jR(- zi6$%ocEfw_70(?MzZmp}ka#dYQbG2Z?-tM58v$~6b6Xf4kgJR!*6_bf??GrltkWHH18M)w%p^x>d>3lLs#jsnVXF6_qVm} zo2GcC(oc$;El)Mf8F>y^TKKi~ zEqriTW$Kj?@hG)xp({q1*4}hqJC`%zo9|oB*xQ?Lan|Bd&`sFio|={x63jxxzuh}_ z7*)BA2?!@JLwik}6hH(j)f6IVQ!MI1SD@S0LCj;h=>g>=SE~HP0$#Mb@q45hjiVgi z?{E633$TaKl@X=(VVy*ee~fi~Z$B7a$s~OtiYu+*hul%$ z5D1LxA6oyCv`D<7=z#egvRjTnf&Kd+S(vRObe;@ES&o$Bw(6f5v z>!4v6pkcqQq1ZT;%RZvqUR_2%1@DpV=}|vd%O5wQ zledwtjq4wrhVEqj^a2Rkyvk#y$|tr8OGE%jkv1E~ZwJq(A$xn7qrG>Skp!|L?qk4p zS6e-yl|wr`h{bMWsJO59?hkM$PF_D>Rx>-X1vA^$pMEk|!8Wy- zg=bX}BW<^exa=Gw6GzT&EbSR83bC4POxzGOmA}M9m{q*CGIwmAR8^ZF(Bxae6`W<7M-iu}UPo7#50TS>PA;*%@w#!nP;x8r}@wyMstG;p|K-MKj^7 zOf#?JSqTJV*Rq~ppP=d~p!T01Ey0GBvSFPAycfx0y)Mk~g3L)-{2Po=tg>-_*mD&a zM8L0J_8VvGEXwUCvRC4Y%#{ zBT5VI?c0YdN$7sKEOiR^JoKJ~P6~Hh;eff|FJfDg(x33Yi+kuI@0Ci^Dm|g>g*_j zbD6tRblpA?5kAOCe}38F&-5@->gn7`5PYp2Ms{&p@_u-Jj*${h-veIhzRc{5);%|f z7;+QJmoY!LES>SN5Hi`L0&ZtHQ=>I5I+cdpH(P;T4=t-%CUJ$1eG>M`@wI}~_PNB; zsg=726MP4nOO;vwkFd7@j$_HXgvHFv%*pH$%Qs!Jiv7Dex+GPZGECDzabH_3hu? zw8%QTg`;9ivS8nty3Zh=gkR_xaWh=DOchr+dlNc4RCDIo%-EZ{!Kk3H13sA(I8X6> z8j<^rDk2ix_6XxNj=B#V*s0h! z_+ydazVyq)yG(ac=RxYXo@5uC8I#`onbj|z-VDCGNFKNYuoxFh^`1HcxgIgM_PR(T zgH8>fwq12!!~k0>9%pS`WWLS`t=J6Pm)U8#JjL+GWAiPB`k?xP^{46+`vTP&GAmU{ zgpjD-ggu8b=48jt>Vwuk_MN^WCHLuQ4o!;E#*b4TKQ7i%GNPvSZY>Si4MD%~&;^tp zqzo+HHdQyH^l^V-aGUw5s;72|;cy1KF+ly}jX+Gx; zvRjTkavk2DoX~)bK2EP-(-{3h74@M9V^=j~qzGY6=UJU@0seW?>0P%vH^+lVRl?b? zn>EAU)W&3I=K?Y5)Ba2|s_WaMj?&>57wxgfn=jyUlvgQ<)yJx0MSDyxghJnt+B$46 zn^w#yZBFth#ZsqBI&FEV5>w0#C*4WWB;byw<80xXu-dS<{_KbI6 z-lJH`RWxJH-)wzuz_;8q&b(9(J+UKP`)+bux0M{V&3tx-2D^W!LKvtdZ*YxG{H5KE zgV*uh>3hH#dyl>Qc#F`CtxAdpQrNnq%VY6@?O4a1@+hH4R~n!}RNu4wBF2MwQr1Jo zSEv0cM@p4@n)0bdj}Wq6wCT!=q83?C7wl{8vj&W_rz)Gs*S26D5T_i;M6XT6U3nse zCvE4d`_aq01KRh;^xu?`qJz!w@r8+2bV4YbxBLBjLQi3A9esXRF?ULNgFa4*HZR@$ zTiKI}1D9v_-t9!s-tGF2U`f1_FDOHqt89YD?<{1E;Us(#kEb{Zg(geLt{j;M!j7A7 zFHS$lN4I{Aw&5rJ{EUKr;3XG5&dLf!l_^V33KK5|~F; zl`8|jR%fY%TwbWTe!X6Jd}dm=%|$;q*v`N2x7dRDXk-g9X!1R=2Gs}gM9I&jus zY&~NtUH3im;yz2fz4=~xme6FWC!JPOiY$IL;mwgnRbR0q0VZPo^6C;6dbmgnm34LC ztmA=w9uKG=nZ`BU%=X#OA{P;)(owYuUOlR?I?gUps!mzv!~K4QEOzx;vM@vY)zs*+ z=ZBf^)JC~qS*thQsMgari;|_f7qDIUUv8OL{;wk=Z-JA~yYgV)ref7w`UnVa{p@<6 zfFsSYWrMUCLaem(!H|gc@9=I6T1knp!?)j&N6Ctoyn4-@kPv%qnX7%Y?Y{hm0RET| zX-qD0fP**6==pNp$EAeDCi1>S7}i00uXCS+UqA;b8#(0o37Ok)8E!SJ`b)Q04{t5v z9AsDWwy+U3WA9;WqAXG$o%_}8F0P z$cn;g*%c{YA~6)EINJF4x3I#jmaJCsxeoF~!c}#QE$?n>3LrpS%Uk)PhkC0d92enV zPcONAU8VQlDD1sPJkeoU=w$h!!{z9(yR9gyj^B*Y2|igyxruLBXNNG*ea2ZE3*0%% zKuarC<0NjNyWSNCW;1I+E(qag3E7?@_hweTklQA&H@Bnr<+fZ936A{ai}+Ueo-Oe; z;wHZHm~~;Q@fSnf=3sAdgq9eQHtx6MWnYXCa;jQ)7sKy8 zZC3%4A5g1#fRD|r@xGtt0IlA#PVVfh!R`QWQ6w$9rN5-6Iy(F%^=HXy7hm+CG>6fh zHS-sY>zLv};oa?Mh|Mfpu0=ox_qF4`JouBnqnqOIlWmWFTfv|I|Lg!9QTMrDHk~=! zxUrDI1H2F5+ql=^lyY1h$X0WaWeT`ghHn1g>ucs9%w|XW@d9yWsnlxCgL`(m& zZ%ymZjcXTZ?CNj-=1|IkCjE1nvm=FQf6#AO>AlV4*PUmlr)*1(H&@v1W?);|J=pgK zE0&bj*>C)aaapZ#t7q4h)s$YVB3tzNE6phOp``W_CbS~~U**@R-912HbU;Y2ylzda z0JVj38i)oA-dYFaMZ?tJNXskCsEOE&2B~cpsOfhZbGy;?wb1o5d{Qk5dGqjR*yOuU z2lyKo_y-ACT#=ftia~K0!9|yKD&_ie9#?1@9MZgP?hS$CT@2Kll~Wg!CT zCyJ-g)|H}G^*$XzT-vT?sxHpwqE$X+ZSHK2EU)>HR`cT4P+r4R0?Q2@a29Q-(27>| z3s$12a{l(dMvHb=WWY3AcYRc?{A{mt*UB*rf)tt=mU-EvtZz4N zfS@RT8d)o z;-v59oB|a+5#HFw^Pgv9QSEM?IDFJ{h#_u~jBW7#An&7G(A zI@=6AsgGBb?>%+#mKcv&^<-}G)d4RvOxEg~YyN!24ch1O5>yds43k=I8l5Zqp60K^7HCCbO48;( zC8_GV#J*hkz5B4NZpIP{4l1~5oYk7 zS}Vxz)9X|%5&32eT1NP9VE!C&9ypa%t!hO|^V z!RQnJZ1?l=ik3y0?lDWnNUYL!4FF02^Ueq`!cZJU2z@|4BX;c@X)aPB1pyIdXBom+ zoI^aI=~$ast)3>j0LKI=e$VIrc5%+&dXLRP1TURPS7XBFO;-QcbbIpSWyL?$-3k0G(FKV=vUgF*&E zSm(rerWy{?H-~`0`p6L}%5946I!=5A2>;KJD4_on@?y;b7}D+XuaJCCp-c4^{|cE6 zg+eAA-iIXL_f2`Cm=w&#n$`vrXM^@J21O)FC7oH!a28_(!QKdpT+Hy6JP2v6Gu4$& z48+h9Dm2gQTvCY#sJ5ci{@U`(X9(dutjtB4uzIjVyHFSq=ieeV{9?Pep)d_EpFTs3 z1jGD_>Yki(Ojt2HZk76t)~HkDS&kCW2HHOyvMF1E zqgZ!pF%SsreBKym9D3nx^KcN7R^r1BQ3&#FlztdeFmzD}eU_|QS!?w;INv}qI@W-d zVzda@CgvmwxjfHyZHNIVvBuNnNE#R`XVild@JR)Sy)6Vc8YN&j4uQ|`hxS4_3aEcRE{^fJ z6@i34Purgc^Zh?J7=V!M*XW(oo6_^$9=(~LBIK3tdpof5NNI^g$$b0rR zjDM%!x9)ur>9_jb!@L<~P##1|4}%PH zd`vVJwdB$0%h%{7+Obx$h(-JqRmS$T_Ggl}QQhN)(P+$mxivcNGttj6#W~~E$3waL zPY15Yv$e1NmD~%J#L$iXT}95tP`&!&*;DGZri#Xu8V%G(Ta((se#jp^s2}>iG8{c) zO?6Woy>mFC+g%=P2sLr>hzb3R4kL@Bo0rp@!J|7Jqr@FX1mcwN`cE`IzV}|J`hMRB zW7Ai2-=vWBds+2A1c;yy5{*>>M^Kc_XY?6K>vt&#GPb{Do{GABwW4lb_8z(SA14(e zMzAxmQZtUR@k~xPd|2>2Y-@LvEUa%{c)NV3rnjf$J>IIl-;}aFssQ7GX`kR~ce?b0 zS9720=#L*QKDm3mjd;8T@aHPXoXfVQ;3qGY)S3d!CpFk;>i6i^lkQ&37zZxGR(HZz znT06v3{15(%`*)wqw^gWNnj*2PH1FzblpmzYI6rK{uZ{n)3f>mcm>mG-84w}kGD~_&!6=_ ziqBEHe3QD~Z%qYZK0QHkR&3@Kaebw9Q6_#Y$4P!JQW*ZW`Ql`v&CD?}*ZMhOz{gF_;|=IqdRBKv*3HYt&zI_2PrHE@BR?gxsP6Z~g>Ex_A#qRx zkGJ(nOSoTvp#C<~pgVeQnsRxA@od$vNSHxvM|`T6mIibH z9;8C6S_!-wHT;Cc=l8*i53PT4Q0I|GHo256b~e@~COWqCiWI0u43jS*h$^A6m(Wb& zwqNOQ{_LU;x|NH|j3s#8l3pwM7MAz+mC2?4JWw3VCjC8^w`Lyo6uG9a-#{>E@`U9H z(JLI!6xG{;byK?$oN*7?#?0Py_l9u{<78kzvovCtpiGgZueZOtfhgz1J3hp6h_Sm2 zQHGm8f`Dg)T0&vqP-Z&yXiI33U=?URv4xwXOp|0jx`bex_FGFbm&~j(;BlK6L zrXc7hN1UG`a02ESpZbJLNHakpB_hmw(k-2TtFmy!+YZ9?UawG6 z#W1+r5EZ@V6&6MSlP1%KG}yo#a)17ap;6&YgOi(WHugB%W^;MQzv3vO&h{n7GIsq^I4j&PZ8cgm`Ypht|lmUu^u zrgbxn^hBUXN4CVt*vWrX+|jWS{;k3jG}v6{@1^(Ku`Z;#gp>?Ks=QJtw8^OSTSOB7&3eabrRN) zbZ6~D;W;sRyN)-!YTaXm(E7<2#JxKHjUmf=E_2G7S0=j2&aNGzvv+3e2Zq7a`Wxp? zJ%CHe!JiWR1K{ft%(=?dMG+UfT`NTTv2hAYndR0fjSu^bFL zin&ySdt@VlsB_>%qID5Li11*E5$%v!uiQGiq-q~;rrTca6X%2HGM zd2tX@e&}sS73aDSKjU%}3j&G_56M!Z=HUGug4v8kI46pY)SY~k3!!L()?}g$#bl`F zAJlpY2F6;dh@o8~13H{D8-@|nW(aLUM})qUX(b#HcL*<>Q`>(zPKjHm zN{JRauw0+-6vYOIE`SqLwS#emL+IaJl`KZ{s~W-Up^OowV~CwMve6%c!ait6cc|?_&&^4Sh zTEDeq+xdT!#lx_9@6r3Dt`Q(pOG5k3VXv2UmR+!ixZr22cH(ox^CgG}nx)(@wu`kq zP33TUdJA0Km}7Z*H?yzO`lQqlw?;}t-=nm7}Dp< z#B~pGpI7tHYNx_PL8PCDnFtGh*-18=-&*J1!D;J+YclgBxumqvF`8JsabXz={v>-% zsu;Yis%+Gvh`X`60fqfJ7v@878u<_ZzyDF_e%gg_2Qh02Q7zy2Swr(ld2B zqL|VFdAZ8)d8Dalg_KePf-0*wt~_C_2SK!~Gcn(CRGz9H0;Y>{N{=eSM6$I~J+(L{ zECZafxK>nN)wB|!?MBwnhcN=H=vmj$|YKnoJ!vHn;v-5HtmO!BZ6wOi(e zn(U>aG@QNE8A%6awymaGPyMr|phJBA3nt}Xd=DW1Aa8X>-nk&C&P!GB;D;23zlB2E z1g;BXatbE$sa4I0rIkivWSk0PHm1!VI%GiwIgOK@Y5*w%=YprC%{+jVlL{pNi!vG5 zKPmI1&zjrn4`&*3DT>F$Q7B;Y3R>jz_EaKzLH|Jc8*p$gq%Mlws1f!JwFtQ`NX{zvR|~Jq$6yPWly1` z-j`7jWrQ_{C$+h0P;}E4f{lW~Jz`VyzEA64`t@cC`Qz3ZRD)1<%uO9}QU>fA{W3QN zLw6nolmwqxNLHDS{*>)CL)F^cpQApCmvheV70GxNnp>$#JqQN{}s%x{`s$%3FBM&Q-?^f&}ab9g)!hj zgOc`P6U-!jjGk_;LlsZykJ3;$pi&A|pi+RMAb7kZUjpN{6s!e?g3PwI@gp_`ffP?# zKKCYTSTJ}IkP@%Q0z(`rzgYhvIF=O8)6xY=ieuY&TUYSl>`&O93mabyZ}L4yRZS-v z`YPdpfMAvL0|ls_G-=2b9n~%{6O=SZG3~SjN3ri|@s47dX^Ds%`L+8wYoMIAnXfpxQmkJ18bh!~LWQkq-#+HPvNwT-5A{nJRut#-phlV7y zqXBIWU$}-38&-IiA*%I^fQCeoeP>GhXCik!YND(Uhr)Rerim#9UNY}%hAt1-^yJY1 zDi=v6eAp}qMK(ZHgI#GLVqh(u zA{dTDSjSWaPBRH}aaNH0HA zzYSm{K+Cd3u7T5pxWmkjh!EU$ZiNeitcDAwv-U0>Ajb;7?kNx9-a-!%qxj`<1pW#F zy$z#5+KPW8C9EtH*hk*A2p4LSt2qvu?=$(mgCrDJu@KH;f$GV5`(HjICWxC77crjTYz zLyw1f>3M-PT*yC{^xY7mJrhcV#n>W*QVJyM7x+GMdZYWa)*o(lprzqLB=3fN5~zM4 z#dE};;RhW@m~@AnJAwb#p!%_x_?C|n3k3WU<>K-G^UXh>o-6((iW8P(IiOqiY2jvWwTtn`3%OC6edIih@1z7n{VW8I zK+pa|3VFb)|Mj_9GXF~yIO!#w$1{5a z6f7kA+7IK58TV%h*Zb9%NUa#v=ud0#+RXlua|?~{2yBggqGI55_pg9A9^NOk@@xjZstUUp;&ys{Kn4AiVz=p6fl698o z_f3W$ghLoK1Won<3394IIT&Ua;aYs5X4CugNR;Xpyi(f~Ek!7_uoJ{D^n z39a5=56athBSM0`@n75+cWDNdT85OK_QzQaHL5}@5j1dX8Wic zFmwQWwmHxA*R_bRqqhXDrsDpKo6M!2=j}Zgw?Uu)moGWTK$y}$Fr|OP=mAQfl_v@R zd`~C)*a`)rkk)0peSI$&2#pJHA$B)rz6(R@9H^iC9Lsl19J_P^+?M{KPT#;*PF@vO?h0l0+a94lSQkFxu+^jTfkEN((!?Q(pv zBH82EV2_UkxJc*U1|Zsk@PJi|1qo)(apHM4H-KHl48Sw(n3?64=_!-e2PB42+Rn^>>v|ajZAK54 zeeBCSop3P=eW?kBj^LQtdBM>d0Le40hbP4|{e)0dw&E>in-$^BYOw}L*5^$Ti6w;(s3ZOZhHkRA;xi_nJabW{4qnszXC@9AYGbcmUyc3AHWa@EcSs~km4** zYd8uvwey%P9H!P1X`Zk{;Ns4yh+~lTphc=S619NZ(b(CWg~lz+V7HRHB82N=Z6fTO zUWysc{A~65{b^4KpnvpR44Hz-8^(tw^Zmew1g_Y(TaK3b=j)NP(;XAbN41aLt2%~w z!uf=;xKnULAC79`K*%Q*X}HH8=W3Nx3bHF%8cMQhQTnqCb+i${6o4A4IoLs6lrcct zI9Gdrs{1)TXCB)t!U~CD2T2QOVL;GNaI?U80qQs}V@#wbM`1=AB;01H^8Rx(4Hklq{kMoUdrJxN3TCnPm6B=1?8GnzsH3tgp! zMh%NJV(tv$@oGX%Vc9x_OE1m3XbdT@(R_B&!oo z3sAzY^wje-=@6F?Vho{XLC$C+jknQno-`K;dD-dt*~v>d3@QK`8N|=Lw7Qnr&dN0G z@#Kj5_MT}<0JxM7=jzUo6|-dYgeOYi;W$70L5>%9I4PV^aBOurz?rNn+mTu3Nl}M} zT2BceG4FARwbNQd6ApQF==@#vsEDN~b4WvU0r~d0tr+OiZ3*z7t+RI6gxSYB&uF8(skLAq?sKif8SQFA3$>5-7)#T4hL+u=ILtQ8d z4>JF4eh_&uJcm7IxXxA)U|#5mQ4h(qLN3C~D#}YsTcZu6w4@pGHzhGK0u&8^m@6*s zkyz1JSm42vhWbqzuutohwxgvMs&@a4*M8_2(IJ*7pA8og ztWFj%X)Rr@VzMTd(#hwFa4TGr!0)o2^@;uKs*nA*FIpa<1V=s61sXmeS3TxuiuWrC zEg~$tPIR8)RLZS^+hr7LA+t))fM38zB<(qEs+9C@zMQ_l;(i9`zC$Y;PMEUawGch@#MR}1WT;ewVBO#Nr)UCOo;V`*C5o641 z?{oa3Al5Y~FXUgZWiyOJRdC*z{orp62B3y^G+gnEYp_8qyM9IH<5qgSu?)P$Wy7G( z+HEL@O>xbr!T@mzHZAOe2;mtT^l_^_T<60FDi{1Q+OhIPrFa#>!=<e50lAY1^z{V>IjM#6L;K+BgY#|TtSYaG{j;oVKHk#l%$lTR7OGs z;1>LN;HaD^9oC$$DFTo*(oGcef0mj~Tt=UYx0G~ zB$ncS(&8^t75B*g*@4+~xRAWdB7huK%foF&TawZ}hDhVIzYSSO_`@d!i13#oC8^** zKGLgM!R+n=F&T4fV$RyYcH-@prblvybFMH2x+Hlw&T=OslT*)yfj?$-C$*Ru=sG27 z?VtVrwbQGLv^Y$5sl5!IDYG{|KB|E#^LlfJ8iDM}`K>E$YJMJsJvE>Im6(|j*w@-d z%7rg6C<|odKI&O&FX&%?ql;G4Qpln46Yj%8nB=r^R5$~4@ZlDH@L0f#`zmjVDQ$q4 z&xy?x0nUn(rE~i5;jsg`pF+50sORc(c%hP>1&l4`p}ugmp;w#5{rRP^06XGqeM-;5 zG|68xB#q4LeWaX%XrNJ5lRe312^i~XePlok@uv`R8H<=3hD0)XG)>dJ&vj!x zby8=^7%h!sb8(ygZ^rZ&{rzN!XJR&5hikcfObP}8;w=jr9a@J12!psEy7d9#z-bUL zEUmOznn^O+JKO+q;Mp8?i5QhUO=!d)l|6eBl&I0Gg^Yw{B}J`0NhS%L25(eBU`c9x z$`Egv2O^oGKo2I)T4=fqLt&NQCctQ#>h0$e>H76GV^2d3Nq z?Hu#pV5WyJE(xxse*@WL;X>c9N6WYW4=FZ=yF0(6oY#;4D%V#iBw^4C4gzul`ya)v zT+Ccut?VuST4&X)zUBO#2cu`F)Ua*O9Ja+t?tu1;qHbHB$`-gu07%1E5W5HNM1*{W z9rBIH@l^Blt4qwg=b7Ffm!VMw=4?dwJj4`ZK{)2Xc@QyLdOEKA`PEX}S0fIV)bL0a zT0=oTf84Jf?^g$coQ90n8K7P$R7XcXZO!V%NfETIeG%>Pa1enu<-GO3%DK@24=&Xs z#fOoa+KLiaMre>CY?qs3&vh$gSGv)>jLjU*b~(~?t2Wx7e;zPC@H*)v6*Jf%4RE1S z(%!XuM?2L)e#6UO}oig``iGHD?B)(iE z6gh#!$x`Ca<^hRHxY$I4hrx%8=Ji67g@VYrT8yD0$T*^mk%zQVX8$b~xhZqBHB*om zGRZh!)RgBUF7wb5KVUuHrBC^h>K?$byf(Bl5Kkyzy{5D#w6L&(r!9$?vQ^F%|8^^k z)X*X+wH*t~hZSs6?@-p8h}i~aEkD~Em#=`f@dO}=P^q?pRHzwm|HLv@HlrhS0}sdZQ0UqI)AA9>YIHSu;iFA>K?x51V?DuDN6cb$fn5wnToeL-~yd zXdCk`&iKVZ(18;?4ghD;QTG!{(_JK9bFiC>Ieh_l_YOcbH+kQ>&F@i-OhNdg+^kyL zwKl@~>_BaR=bE9s4msJoy*z4D2X@m@QjxJ@mVfI3xawE1S*q6@fmmvAO9Ff7m(6uJ z^w1i<=(x`>WZWGgcUKF(FI6F!N)={4^{^+R65KlYeC$yMm_3!#lJyaM4AymJ!ixUS5%(I6+?cgTs&=ue42*w>10jO(W{1*yRcEr-Y9^{r8+v+n^} zoZi1$e_cK>(Ta?in~tR5>t>X8oMVhC|qyEYgDPNI=Qj3|tH~{qmDt ziwmdofr|8uw0zqSZ<=XWI{(jldp0Qb{k+R1Q{o?CTP7nkF#IqvSech_$yXai`W28b zNT0)FhRBS8MckxMP=H${kK;z?5fH9v63pYH8lO|!2MgtF0ScVR%Ji);YhG(;h!$dQ zTWNS=Wd_(M8bR?_Jg-G0Q5mNv=Hps63m8wKPn5uvx<*eOW?{_yGVb1qO_Lv_ctQn; z8ts~tow^uS#!i!QwYmXV-KU%!R>2EgMhw1+mNAnXw;>MC{*nkeZGGr&PKb!m#iUp^ z?rjbpj0lkR-5i}$*spP~Q_gu!(cl>#T_ z{g{0={&;vJ)NcL4&_E?dN7weF56_Wd0GzeR=a8THrF$~egf`|GMKTb5Cj<3pvxQlE z(VV7DJ+(cjk_z6(yUK0TRSz>7cCdoVcpwG`ZoG~w&H0dxL5S+sj6^e7jm1Iai`)CsQD%b=C2X#z#Y8I)ZaVA^X7q*JVN>M6 z`0WHEH(@L4?hwg@5jhJzJP3xh$DD{%Bk*N53`(K4hlSRndMu0VvJLy0`fF&vazKC5d&FsvW z|2ne%RpCrq-eH3ar{|{zO2^^S%Z6KIhxp~%)k+B>TB~SWlbDVzjS|TjMGxYYQ=h-l zR^1@nWy@e)wJ`kU!ds?2VGGi!0S@hYB#n~u@v!`NO6XCtX91sH1Ld3Li!dV4-{DSj zZ%^7s%ASZMJ0(a@qgTz|LGQyWc)MUPNEAzwSIxBhHmkLIZE&?P*q$&_ZL_s~Ek|&u zy0j^6jA5j`V&I39?Wkr%7VomZoMkrkDtZs1$D4;p6kneZYB8cV^UIjgK}LzD7+ zZQ+tsw!0HqY#B3_X#q5`@=Dr8(-tho8niK99%>V14LmFnn-7IZ8(jZT;!^hX{YkQ> z{{{kdf!$XEVJ+j>m7cH92ODX#{gsl;`k!8omJdd2iQaS}dSTz3(B6-KGr#-3(Ehr3 z{^Ib>rx|1{sc*;c<+9bFSJxj!dg!7y_w9Cn{lY=;<35a9ybTd5OnMW3(q)8c_F`Q4Wu<0M|wm4^%kssjRJNpz_C}c%APLRD@phmk7={$f=oWej;s(a zHX#l|(Zv-xpX?Ppn)AcfC`$<-2`12&2kul)3hhBNb(*!76#ETpf=N`S@pR?uTz-+` zpnOxUsA}x%1cGl`@BQqH{us4Op~tN^iCm%y^MC`0|ocJ*;Gi@N(wXuD^BXXQe#8j z_rp8l5;Pk=Zw;EP5=2{@55T!#Ds_j-jl&cSxmS>ydu5$}Srbz4y*KTY-LOr01GFTp z?g+m1@oj}R85uQ{{@(a3+)?R9>v9t|zr?jSv?IY5Fzfx@Q-S}7l|@-8W0g$h4^ywz z$ZNm*&aHX3Ssm96e523q!^wFYx(@!jnImVD>xJ`{0*6t|1p)NE*58w(H6sYvage|y zhN(5%I++lPLDS)Mo! z$uGG7scoo{h*+h=It^r2E)NTyO={lN#94Xc4Ccc)WrIo7Tf-XdFxBa(Vq$SzujC4O2Mmb zwNq`LvTM*6prWJX$F{WGZV^i=xXvdiE1T7MhKyLvrb~{(%<4d0e*K&LBGYu%8Wm99mIR;Dh{ozpNviDgE z40{F+K;OG9=DHpoex%^tpLaL!I3ZElpm#<1ovE}Td*k}Sj=Pd@Op=q@1V%?6fCEv% z)5JItENj*YuWS1=qiZo;HCY{`A)OW+qU zdu<=R-DoR2N9Bqt`M!x^yI%8ZbWSKbLX36_`%}4!MP72PYWR@i*S$o?;552{%rAg*|+=$fvPW{3r%${#8`iI*kiN$VkO8+FI31+tyJ(e~?)#j+_=WKBtnQ+VK9| zv8~DpCZi8;4kcYec>dZYrD9Uzi>eRk9-5TmjDI#u=L1C~mVxD-hXF|KpBM|oi$;7K z3bIp|5kM|yUzUW4^U`vTwm`BP+7Ti5&k+?RD=IL0S}eajGCh%MSes+DvEyCA4cimO zW!FeEiPdt=I4Y+zN7|uaHl&8iAdfYrp+F$Y5jSQIZ82z9NNbu0%T3idUZga+3HG5w zO1rVT9KLzY9oH{D$TzIx|Jci5fOU@Jd8^g?1^v%l?3+K|YANuB2L;St(Sh$KZZ574 zcA9p!%vP>uc7NUWs-x@S23Rmae)@`!Cytl!g<~u#qfn#f!_`Q?e1}TxN-Q$|*beXA z_4wjAdTb~E4o1wu2WSv5?eqYx964RRG7P z8z09w&}GG1f=~|zvv4d&Jgp9geH(McX$nNI7!HiG)kyWGYUaR`WInc{>|OU$C&W=i zePODB;xW3aX8g8A8B*H@mu2c4yuAKjx&$YVmb-y^sDZkO{-Nvd>ahP-_g87ynAv(@ zevSgQ+pR#_WLaTmL6fifga)?$*^#s|ezqmN7`;PQYP+XE1ss=coABeOi=7{GWt#|9 z+66E(rwnaEZu-o-cnO#AI9X9@B%ydni zXeK;ikLmRsk^RTGYf`f)@9Oeua^;=sLT{^YVE=5;=1w{JJ)mG?pm3aj2>&Bl(b>V# z<*!!FiLbX0V!;sq(lc(&r18g*mqM>r>fubq>3IJ*`{?rDn!nCsdLqz{{0S$ac+PMD_M?_y_Q@SI{a4b8ua`65$?Ud^Br!wq18rsZUo1d`N z$KHF~>~GYK1xPfy+EN-#zVFnxYu}|ZqHXzOxWfk?Quj4)l4}p`rpl)^=n2TZXNMQu z33p93B6eA2REF6@Y@t;u^9oy-MPRF?Bu$<_KSC8aZ_E}ZW_N9Bu!%SKL-vJ*Mb8ne;Q zVuhCl^2&1a@Sd+E%R_QgN?(O4aCIv9@60@8_uptDwLnXv{)(irH-EOW;65ziU|4{J5+kW# zGXklLqL!fCRhlbxq2Em1CROZT|JqU9&HY7Tvi``FmSI>Hb3=r!rQni1UArZAjxpgE z{CCnjXDP*uLToCUteHg$c`4j%uf7b0uiSC*IY@?_$x-E0bfy^ycMQv)$+hK~l%i=V zF#F+Ol!gTZHmu)kfh%w=Deun?v&P_*e>04*Nmd(`Uj)++i=6WC?FgD1mr%}$iED1z zk?35!J9vs@e7oIPzgzbxIAI=!qN=xu8UFSgz~id>AsTh{yV>}{@uzVoRsBiKa4b;( zK0>#&q%rmEop41;@2+ZEO^>w4>car6P50d1b@z>&zF186&F3BHemxDnk;4#gab_s{ z98A9N-RM325hxt)UpOG^nD!?oSWBTi52hJt00l2KJ$>aIPwBspY}#pwoKNJW)@fKHje0O7=oSN+_ZMnC^U>1&;y-p zeMO9)>A|?HzLz9(6*1O2g-R#Mqi0eXeOXKe1fLS6;6f`awYj@bTOYgulLt0nz+v+e zVEPAH?{zqx!LVQ;D-dsf)RIpFdqEH?NY63ycKn1^kQ>l1n#rK97IXS@3}FcuKg7O~ z8V8O|C$Cm^rQh+TFspHJ0_dGHqx!F0JmXtQbJf#KYZdmbktW7yFarZmzhqf56Bv(O zAj3$XZ4Z5oDr7~8sO5(G;aZ;W1!{~`y+xhMYtl7%)u2Y68}8$$*`oN{^iW6~&pIkz z0n#wcb2w33ZFYO(yizMr0KI*bdBeu|X~j^_EQK%a$`*#vafIXdRwAZ1)Imb-9qbbv zCoz)1=lYl@_-7o0A_lBn`n1dnyIY=WL7QT{Fm#QM3Bs|)gj#gb89Gjj8WosizU5z= z+jW=WM}3db;3=5aa>ghW#S+6zzpW>h+D%iVnU!*6Q@!6PpVE662^62mjwM0OhJk29 zJiuArvVRc<{|>dvivcW!8tG-`E|e2fiBO}Y!GpgTEQQ6IP_;q_A@y-RA$!Q{Y9FrmcVE&;O(tOnlLhHF1!rjC z0i>an#iWa!)u;C{v1p|EtwFj&Pt>4!-O}1^ft>14m znUKFz+M~Ay{r2A&zuFgsMsLl!I2Js70^YrUPtg)-$-b3opL2o*>sGN$wtX?r@az*V z7N0I}qs}Ik4&SD9whQkURJp{LXx%qg`|NN?O`m1PZ|-@K?84ig3N~CJf}kJ}f!&g`7n9&QGfp{w1bH z^nI|ZJvHHqiO3rXE}g@LIu9%6C1jpqe!-sfq`mjF?j_#%Cztx;r%v3ScKF#8&S`J& zD$i*@=X++o@a^^`X=%MOQ*ARpO_{TM*||N{*WNT8s$O$++oVfI)s>~bZy%}tsJbh6 zF#7%H^;4dB1Q(xvb*){l?#aciujQ(19xq!yukP8+=kw|p7N5R0J+3bG_UiR}e_p$7 zeXnwR_Vac9cK1G?yjT0%{_mU9hvUD>SXQn1UUC0r{<)gpcfbElueYdw_-Ot9*k6D9 z?f)+-H9WvO#V#ZE21}c2i*i+z_+hi)#)%&u7nL6F5_=iDx~>0w^yEp2H#byPf1kkl z^IWm=t0T@UX9}l(^R@E#4%XVe_0X;V!Kuuxs;{j0UdrTID5tmlEO_e0SF(YBSreO7 z#)3wy#DC+CZ-?vyycwB9m_fti91Ndlnn$b+S~_tmu!VXGIOYcGcECUbP>g{g+8H<) zoSIh>A5vM6S{w^%ouM00spjqQ1E};Ka2%N%rW;5%FdhRM0cqodoA&4$JKDH|Gl5Dj z0yPSvXnYP7f!96B`9Jv4b+~)!oVPaqP-p{0@t2cP=L+Vlk4>_O9It- z0$ZV|md^kN1bF5EXhdl)(C^r^=QT(R838Rn4KzXq#qtNhp>(izh|iG?!5Rv^tHrFl z^%)rALRlI3QB3mTftplYQkjzqo~}d>1M~wWVfq^wS!_@=qa81aZVvi9DZ-r6LYO&7 zlPKug(I;LI+LKG6+R>(A&`m&}h(MSywG3(k%CrQ!e)Lgegno@msDAV@WOO6Y``-v7 z6dSPi#?cKx@8}{7_=#cwwr(%FS?GO7gjt^&(H(>6NuryA-qk{w!r2TB6_kz_x_ facetCountState) { - Iterator> fieldResultsIterator = - facetCountState.getFacetFieldResultsIterator(); - while (fieldResultsIterator.hasNext()) { - FacetFieldResults state = fieldResultsIterator.next(); - if (!state.isFinished()) { - Schema.FieldInfo facetField = - facetCountState.getSchema().getFacetFieldByFacetName(state.facetName); - state.results = hits.getFacetResults( - facetField.getFieldType().getFacetName(), state.numResultsRequested); - if (state.results != null) { - state.numResultsFound = state.results.getTopFacetsSize(); - } - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.docx b/src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..4357e93951b58bc21d2e7861904abff2657f5d9d GIT binary patch literal 37271 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 Tz#Ih1Re}tO!0e&W3*rF)wkM{5 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.java b/src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.java deleted file mode 100644 index 3ceeacb20..000000000 --- a/src/java/com/twitter/search/earlybird/search/facets/SpaceFacetCollector.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.search.earlybird.search.facets; - -import java.util.ArrayList; -import java.util.List; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; - -import org.apache.commons.lang.StringUtils; - -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.earlybird.partition.AudioSpaceTable; -import com.twitter.search.earlybird.thrift.AudioSpaceState; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResultAudioSpace; - -public class SpaceFacetCollector extends AbstractFacetTermCollector { - private final List spaces = new ArrayList<>(); - - private final AudioSpaceTable audioSpaceTable; - - public SpaceFacetCollector(AudioSpaceTable audioSpaceTable) { - this.audioSpaceTable = audioSpaceTable; - } - - @Override - public boolean collect(int docID, long termID, int fieldID) { - - String spaceId = getTermFromFacet(termID, fieldID, - Sets.newHashSet(EarlybirdFieldConstant.SPACES_FACET)); - if (StringUtils.isEmpty(spaceId)) { - return false; - } - - spaces.add(new ThriftSearchResultAudioSpace(spaceId, - audioSpaceTable.isRunning(spaceId) ? AudioSpaceState.RUNNING - : AudioSpaceState.ENDED)); - - return true; - } - - @Override - public void fillResultAndClear(ThriftSearchResult result) { - getExtraMetadata(result).setSpaces(ImmutableList.copyOf(spaces)); - spaces.clear(); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.docx b/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..24c4d59d940382e3b6900c62a9eeaffbfe8a7e76 GIT binary patch literal 42317 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.java b/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.java deleted file mode 100644 index 5856d5281..000000000 --- a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsCollector.java +++ /dev/null @@ -1,487 +0,0 @@ -package com.twitter.search.earlybird.search.facets; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.commons.lang.StringUtils; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.DocIdSetIterator; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchResultsStats; -import com.twitter.search.common.schema.SchemaUtil; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.search.EarlyTerminationState; -import com.twitter.search.common.util.earlybird.TermStatisticsUtil; -import com.twitter.search.core.earlybird.index.TimeMapper; -import com.twitter.search.earlybird.index.EarlybirdSingleSegmentSearcher; -import com.twitter.search.earlybird.search.AbstractResultsCollector; -import com.twitter.search.earlybird.search.SearchResultsInfo; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; -import com.twitter.search.earlybird.thrift.ThriftHistogramSettings; -import com.twitter.search.earlybird.thrift.ThriftTermRequest; -import com.twitter.search.earlybird.thrift.ThriftTermResults; - -public class TermStatisticsCollector extends AbstractResultsCollector - { - private static final EarlyTerminationState TERMINATED_TERM_STATS_COUNTING_DONE = - new EarlyTerminationState("terminated_term_stats_counting_done", true); - - // Stats for tracking histogram results. - private static final SearchResultsStats TERM_STATS_HISTOGRAM_REQUESTS_WITH_MOVED_BACK_BINS = - SearchResultsStats.export("term_statistics_collector_queries_with_moved_back_bins"); - private static final SearchCounter TERM_STATS_SKIPPED_LARGER_OUT_OF_BOUNDS_HITS = - SearchCounter.export("term_statistics_collector_skipped_larger_out_of_bounds_hits"); - - @VisibleForTesting - static final class TermStatistics { - private final ThriftTermRequest termRequest; - private final Term term; // could be null, for count across all fields - private int termDF = 0; - private int termCount = 0; - private final int[] histogramBins; - - // Per-segment information. - private PostingsEnum segmentDocsEnum; // could be null, for count across all fields - private boolean segmentDone; - - @VisibleForTesting - TermStatistics(ThriftTermRequest termRequest, Term term, int numBins) { - this.termRequest = termRequest; - this.term = term; - this.histogramBins = new int[numBins]; - } - - /** - * Take the currently accumulated counts and "move them back" to make room for counts from more - * recent binIds. - * - * For example, if the oldFirstBinID was set to 10, and the histogramBins were {3, 4, 5, 6, 7}, - * after this call with newFirstBinID set to 12, the histogramBins will be set - * to {5, 6, 7, 0, 0}. - * - * @param oldFirstBinID the binId of the firstBin that's been used up to now. - * @param newFirstBinID the new binId of the firstBin that will be used from now on. - * The newFirstBinID is presumed to be larger than the oldFirstBinID, and is asserted. - */ - @VisibleForTesting - void moveBackTermCounts(int oldFirstBinID, int newFirstBinID) { - Preconditions.checkState(oldFirstBinID < newFirstBinID); - // move counts back by this many bins - final int moveBackBy = newFirstBinID - oldFirstBinID; - - this.termCount = 0; - for (int i = 0; i < histogramBins.length; i++) { - int oldCount = histogramBins[i]; - histogramBins[i] = 0; - int newIndex = i - moveBackBy; - if (newIndex >= 0) { - histogramBins[newIndex] = oldCount; - this.termCount += oldCount; - } - } - } - - @VisibleForTesting void countHit(int bin) { - termCount++; - histogramBins[bin]++; - } - - @VisibleForTesting int getTermCount() { - return termCount; - } - - @VisibleForTesting int[] getHistogramBins() { - return histogramBins; - } - } - - private TermStatistics[] termStatistics; - - // Histogram fields. - private int numBins; - private int binSize; - - private int numTimesBinsWereMovedBack = 0; - private int numLargerOutOfBoundsBinsSkipped = 0; - - private static final int SEEN_OUT_OF_RANGE_THRESHOLD = 10; - - private int seenOutOfRange = 0; - - // ID of the first bin - effectively time / binSize. This is calculated - // relative to the first collected in-order hit. - private int firstBinID = -1; - // List of per-segment debug information specifically useful for termstat request debugging. - private List termStatisticsDebugInfo = new ArrayList<>(); - - /** - * Creates a new term stats collector. - */ - public TermStatisticsCollector( - ImmutableSchemaInterface schema, - TermStatisticsRequestInfo searchRequestInfo, - EarlybirdSearcherStats searcherStats, - Clock clock, - int requestDebugMode) { - super(schema, searchRequestInfo, clock, searcherStats, requestDebugMode); - - // Set up the histogram bins. - if (searchRequestInfo.isReturnHistogram()) { - ThriftHistogramSettings histogramSettings = searchRequestInfo.getHistogramSettings(); - this.numBins = histogramSettings.getNumBins(); - binSize = TermStatisticsUtil.determineBinSize(histogramSettings); - } else { - this.numBins = 0; - this.binSize = 0; - } - - // Set up the term statistics array. - List termRequests = searchRequestInfo.getTermRequests(); - if (termRequests == null) { - this.termStatistics = new TermStatistics[0]; - return; - } - - this.termStatistics = new TermStatistics[searchRequestInfo.getTermRequests().size()]; - for (int i = 0; i < searchRequestInfo.getTermRequests().size(); i++) { - final ThriftTermRequest termRequest = searchRequestInfo.getTermRequests().get(i); - - Term term = null; - String fieldName = termRequest.getFieldName(); - if (!StringUtils.isBlank(fieldName)) { - // First check if it's a facet field. - Schema.FieldInfo facetField = schema.getFacetFieldByFacetName(termRequest.getFieldName()); - if (facetField != null) { - term = new Term(facetField.getName(), termRequest.getTerm()); - } else { - // EarlybirdSearcher.validateRequest() should've already checked that the field exists in - // the schema, and that the term can be converted to the type of this field. However, if - // that did not happen for some reason, an exception will be thrown here, which will be - // converted to a TRANSIENT_ERROR response code. - Schema.FieldInfo fieldInfo = schema.getFieldInfo(fieldName); - Preconditions.checkNotNull( - fieldInfo, - "Found a ThriftTermRequest for a field that's not in the schema: " + fieldName - + ". This should've been caught by EarlybirdSearcher.validateRequest()!"); - term = new Term(fieldName, SchemaUtil.toBytesRef(fieldInfo, termRequest.getTerm())); - } - } else { - // NOTE: if the fieldName is empty, this is a catch-all term request for the count across - // all fields. We'll just use a null term in the TermStatistics object. - } - - termStatistics[i] = new TermStatistics(termRequest, term, numBins); - } - } - - @Override - public void startSegment() throws IOException { - termStatisticsDebugInfo.add( - "Starting segment in timestamp range: [" + timeMapper.getFirstTime() - + ", " + timeMapper.getLastTime() + "]"); - for (TermStatistics termStats : termStatistics) { - termStats.segmentDone = true; // until we know it's false later. - TermsEnum termsEnum = null; - if (termStats.term != null) { - Terms terms = currTwitterReader.terms(termStats.term.field()); - if (terms != null) { - termsEnum = terms.iterator(); - if (termsEnum != null && termsEnum.seekExact(termStats.term.bytes())) { - termStats.termDF += termsEnum.docFreq(); // Only meaningful for matchAll queries. - termStats.segmentDocsEnum = - termsEnum.postings(termStats.segmentDocsEnum, PostingsEnum.FREQS); - termStats.segmentDone = termStats.segmentDocsEnum == null - || termStats.segmentDocsEnum.nextDoc() == DocIdSetIterator.NO_MORE_DOCS; - } else { - // this term doesn't exist in this segment. - } - } - } else { - // Catch-all case - termStats.termDF += currTwitterReader.numDocs(); // Only meaningful for matchAll queries. - termStats.segmentDocsEnum = null; - termStats.segmentDone = false; - } - } - } - - private int calculateBin(final int tweetTime) { - if (tweetTime == TimeMapper.ILLEGAL_TIME) { - return -1; - } - - final int binID = Math.abs(tweetTime) / binSize; - final int expectedFirstBinId = binID - numBins + 1; - - if (firstBinID == -1) { - firstBinID = expectedFirstBinId; - } else if (expectedFirstBinId > firstBinID) { - numTimesBinsWereMovedBack++; - final int oldOutOfOrderFirstBinID = firstBinID; - firstBinID = expectedFirstBinId; - // We got a more recent out of order bin, move previous counts back. - for (TermStatistics ts : termStatistics) { - ts.moveBackTermCounts(oldOutOfOrderFirstBinID, firstBinID); - } - } - - final int binIndex = binID - firstBinID; - if (binIndex >= numBins) { - // In-order times should be decreasing, - // and out of order times seen after an in-order tweet should also be smaller than the - // first in-order tweet's time. Will track these and export as a stat. - numLargerOutOfBoundsBinsSkipped++; - return -1; - } else if (binIndex < 0) { - // Early termination criteria. - seenOutOfRange++; - } else { - // Reset the counter, since we want to see consecutive tweets that are out of our bin range - // not single anomalies. - seenOutOfRange = 0; - } - - return binIndex; - } - - @Override - public void doCollect(long tweetID) throws IOException { - if (searchRequestInfo.isReturnHistogram()) { - final int tweetTime = timeMapper.getTime(curDocId); - final int binIndex = calculateBin(tweetTime); - if (binIndex >= 0) { - for (TermStatistics ts : termStatistics) { - if (!ts.segmentDone) { - countHist(ts, binIndex); - } - } - } - } else { - for (TermStatistics ts : termStatistics) { - if (!ts.segmentDone) { - countNoHist(ts); - } - } - } - } - - @Override - public void skipSegment(EarlybirdSingleSegmentSearcher searcher) { - // Do nothing here. - // We don't do accounting that's done in AbstractResultsCollector for Term Stats - // requests because otherwise the bin ID calculation will be confused. - } - - private boolean advance(TermStatistics ts) throws IOException { - PostingsEnum docsEnum = ts.segmentDocsEnum; - if (docsEnum.docID() < curDocId) { - if (docsEnum.advance(curDocId) == DocIdSetIterator.NO_MORE_DOCS) { - ts.segmentDone = true; - return false; - } - } - return docsEnum.docID() == curDocId; - } - - private boolean countHist(TermStatistics ts, int bin) throws IOException { - if (ts.term != null && !advance(ts)) { - return false; - } - ts.countHit(bin); - return true; - } - - private boolean countNoHist(TermStatistics ts) throws IOException { - if (ts.term != null && !advance(ts)) { - return false; - } - ts.termCount++; - return true; - } - - @Override - public EarlyTerminationState innerShouldCollectMore() { - if (readyToTerminate()) { - return setEarlyTerminationState(TERMINATED_TERM_STATS_COUNTING_DONE); - } - return EarlyTerminationState.COLLECTING; - } - - /** - * The termination logic is simple - we know what our earliest bin is and once we see a result - * that's before our earliest bin, we terminate. - * - * Our results come with increasing internal doc ids, which should correspond to decreasing - * timestamps. See SEARCH-27729, TWEETYPIE-7031. - * - * We early terminate after we have seen enough tweets that are outside of the bin - * range that we want to return. This way we're not terminating too early because of single tweets - * with wrong timestamps. - */ - @VisibleForTesting - boolean readyToTerminate() { - return this.seenOutOfRange >= SEEN_OUT_OF_RANGE_THRESHOLD; - } - - @Override - public TermStatisticsSearchResults doGetResults() { - return new TermStatisticsSearchResults(); - } - - public final class TermStatisticsSearchResults extends SearchResultsInfo { - public final List binIds; - public final Map results; - public final int lastCompleteBinId; - public final List termStatisticsDebugInfo; - - private TermStatisticsSearchResults() { - // Initialize term stat debug info - termStatisticsDebugInfo = TermStatisticsCollector.this.termStatisticsDebugInfo; - - if (termStatistics.length > 0) { - results = new HashMap<>(); - - if (searchRequestInfo.isReturnHistogram()) { - binIds = new ArrayList<>(numBins); - int minSearchedTime = TermStatisticsCollector.this.getMinSearchedTime(); - - if (shouldCollectDetailedDebugInfo()) { - termStatisticsDebugInfo.add("minSearchedTime: " + minSearchedTime); - int maxSearchedTime = TermStatisticsCollector.this.getMaxSearchedTime(); - termStatisticsDebugInfo.add("maxSearchedTime: " + maxSearchedTime); - } - - int lastCompleteBin = -1; - - computeFirstBinId(TermStatisticsCollector.this.isSetMinSearchedTime(), minSearchedTime); - trackHistogramResultStats(); - - // Example: - // minSearchTime = 53s - // binSize = 10 - // firstBinId = 5 - // numBins = 4 - // binId = 5, 6, 7, 8 - // binTimeStamp = 50s, 60s, 70s, 80s - for (int i = 0; i < numBins; i++) { - int binId = firstBinID + i; - int binTimeStamp = binId * binSize; - binIds.add(binId); - if (lastCompleteBin == -1 && binTimeStamp > minSearchedTime) { - lastCompleteBin = binId; - } - } - - if (!getEarlyTerminationState().isTerminated()) { - // only if we didn't early terminate we can be sure to use the firstBinID as - // lastCompleteBinId - lastCompleteBinId = firstBinID; - if (shouldCollectDetailedDebugInfo()) { - termStatisticsDebugInfo.add("no early termination"); - } - } else { - lastCompleteBinId = lastCompleteBin; - if (shouldCollectDetailedDebugInfo()) { - termStatisticsDebugInfo.add( - "early terminated for reason: " + getEarlyTerminationReason()); - } - } - if (shouldCollectDetailedDebugInfo()) { - termStatisticsDebugInfo.add("lastCompleteBinId: " + lastCompleteBinId); - } - } else { - binIds = null; - lastCompleteBinId = -1; - } - - for (TermStatistics ts : termStatistics) { - ThriftTermResults termResults = new ThriftTermResults().setTotalCount(ts.termCount); - - if (searchRequestInfo.isReturnHistogram()) { - List list = new ArrayList<>(); - for (int count : ts.histogramBins) { - list.add(count); - } - termResults.setHistogramBins(list); - } - - results.put(ts.termRequest, termResults); - } - } else { - binIds = null; - results = null; - lastCompleteBinId = -1; - } - } - - @Override - public String toString() { - StringBuilder res = new StringBuilder(); - res.append("TermStatisticsSearchResults(\n"); - if (binIds != null) { - res.append(" binIds=").append(binIds).append("\n"); - } - res.append(" lastCompleteBinId=").append(lastCompleteBinId).append("\n"); - if (results != null) { - res.append(" results=").append(results).append("\n"); - } - res.append(")"); - return res.toString(); - } - - public List getTermStatisticsDebugInfo() { - return termStatisticsDebugInfo; - } - } - - /** - * Figure out what the actual firstBinId is for this query. - */ - private void computeFirstBinId(boolean isSetMinSearchedTime, int minSearchedTime) { - if (firstBinID == -1) { - if (!isSetMinSearchedTime) { - // This would only happen if we don't search any segments, which for now we have - // only seen happening if since_time or until_time don't intersect at all with - // the range of the served segments. - firstBinID = 0; - } else { - // Example: - // minSearchedTime = 54 - // binSize = 10 - // firstBinId = 5 - firstBinID = minSearchedTime / binSize; - } - - if (shouldCollectDetailedDebugInfo()) { - termStatisticsDebugInfo.add("firstBinId: " + firstBinID); - } - } - } - - @VisibleForTesting - int getSeenOutOfRange() { - return seenOutOfRange; - } - - private void trackHistogramResultStats() { - if (numLargerOutOfBoundsBinsSkipped > 0) { - TERM_STATS_SKIPPED_LARGER_OUT_OF_BOUNDS_HITS.increment(); - } - - if (numTimesBinsWereMovedBack > 0) { - TERM_STATS_HISTOGRAM_REQUESTS_WITH_MOVED_BACK_BINS.recordResults(numTimesBinsWereMovedBack); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.docx b/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.docx new file mode 100644 index 0000000000000000000000000000000000000000..216677e4f8f37a7088ce175251007f06eca20d55 GIT binary patch literal 38130 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 X9okuoffn?|s^kH8&^)L~U;h0I6r4-} literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.java b/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.java deleted file mode 100644 index 6162f4192..000000000 --- a/src/java/com/twitter/search/earlybird/search/facets/TermStatisticsRequestInfo.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.twitter.search.earlybird.search.facets; - -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableSet; - -import org.apache.lucene.search.Query; - -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.search.TerminationTracker; -import com.twitter.search.common.util.text.NormalizerHelper; -import com.twitter.search.common.util.url.URLUtils; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.search.SearchRequestInfo; -import com.twitter.search.earlybird.thrift.ThriftHistogramSettings; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftTermRequest; -import com.twitter.search.earlybird.thrift.ThriftTermStatisticsRequest; - -public class TermStatisticsRequestInfo extends SearchRequestInfo { - private static final Set FACET_URL_FIELDS_TO_NORMALIZE = new ImmutableSet.Builder() - .add(EarlybirdFieldConstant.IMAGES_FACET) - .add(EarlybirdFieldConstant.VIDEOS_FACET) - .add(EarlybirdFieldConstant.NEWS_FACET) - .build(); - - protected final List termRequests; - protected final ThriftHistogramSettings histogramSettings; - - /** - * Creates a new TermStatisticsRequestInfo instance using the provided query. - */ - public TermStatisticsRequestInfo(ThriftSearchQuery searchQuery, - Query luceneQuery, - ThriftTermStatisticsRequest termStatsRequest, - TerminationTracker terminationTracker) { - super(searchQuery, luceneQuery, terminationTracker); - this.termRequests = termStatsRequest.isSetTermRequests() - ? termStatsRequest.getTermRequests() : new LinkedList<>(); - this.histogramSettings = termStatsRequest.getHistogramSettings(); - if (termStatsRequest.isIncludeGlobalCounts()) { - // Add an empty request to indicate we need a global count across all fields. - termRequests.add(new ThriftTermRequest().setFieldName("").setTerm("")); - } - - // We only normalize TEXT terms and urls. All other terms, e.g. topics (named entities) are - // not normalized. Here the assumption is that the caller passes the exact terms back that - // the facet API returned - for (ThriftTermRequest termReq : termRequests) { - if (termReq.getTerm().isEmpty()) { - continue; // the special catch-all term. - } - - if (!termReq.isSetFieldName() - || termReq.getFieldName().equals(EarlybirdFieldConstant.TEXT_FIELD.getFieldName())) { - // normalize the TEXT term as it's normalized during ingestion - termReq.setTerm(NormalizerHelper.normalizeWithUnknownLocale( - termReq.getTerm(), EarlybirdConfig.getPenguinVersion())); - } else if (FACET_URL_FIELDS_TO_NORMALIZE.contains(termReq.getFieldName())) { - // remove the trailing slash from the URL path. This operation is idempotent, - // so either a spiderduck URL or a facet URL can be used here. The latter would just - // be normalized twice, which is fine. - termReq.setTerm(URLUtils.normalizePath(termReq.getTerm())); - } - } - } - - @Override - protected int calculateMaxHitsToProcess(ThriftSearchQuery searchQuery) { - Preconditions.checkNotNull(searchQuery.getCollectorParams()); - if (!searchQuery.getCollectorParams().isSetTerminationParams() - || !searchQuery.getCollectorParams().getTerminationParams().isSetMaxHitsToProcess()) { - // Override the default value to all hits. - return Integer.MAX_VALUE; - } else { - return super.calculateMaxHitsToProcess(searchQuery); - } - } - - public final List getTermRequests() { - return this.termRequests; - } - - public final ThriftHistogramSettings getHistogramSettings() { - return this.histogramSettings; - } - - public final boolean isReturnHistogram() { - return this.histogramSettings != null; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/facets/TweetSearchFacetCountIteratorFactory.docx b/src/java/com/twitter/search/earlybird/search/facets/TweetSearchFacetCountIteratorFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ed9e1c9a0b50269721311c39de8a0af6fa19234 GIT binary patch literal 37208 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"CKOFh`svM;tMe;1LEJ!p0VLsW_2Ub7T<(+lfc5 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/BadUserRepFilter.java b/src/java/com/twitter/search/earlybird/search/queries/BadUserRepFilter.java deleted file mode 100644 index 3577b8635..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/BadUserRepFilter.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; - -public final class BadUserRepFilter extends Query { - /** - * Creates a query that filters out results coming from users with bad reputation. - * - * @param minTweepCred The lowest acceptable user reputation. - * @return A query that filters out results from bad reputation users. - */ - public static Query getBadUserRepFilter(int minTweepCred) { - if (minTweepCred <= 0) { - return null; - } - - return new BooleanQuery.Builder() - .add(new BadUserRepFilter(minTweepCred), BooleanClause.Occur.FILTER) - .build(); - } - - private final int minTweepCred; - - private BadUserRepFilter(int minTweepCred) { - this.minTweepCred = minTweepCred; - } - - @Override - public int hashCode() { - return minTweepCred; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof BadUserRepFilter)) { - return false; - } - - return minTweepCred == BadUserRepFilter.class.cast(obj).minTweepCred; - } - - @Override - public String toString(String field) { - return "BadUserRepFilter:" + minTweepCred; - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader reader = context.reader(); - if (!(reader instanceof EarlybirdIndexSegmentAtomicReader)) { - return new AllDocsIterator(reader); - } - - return new BadUserExcludeDocIdSetIterator( - (EarlybirdIndexSegmentAtomicReader) context.reader(), minTweepCred); - } - }; - } - - private static final class BadUserExcludeDocIdSetIterator extends RangeFilterDISI { - private final NumericDocValues userReputationDocValues; - private final int minTweepCred; - - BadUserExcludeDocIdSetIterator(EarlybirdIndexSegmentAtomicReader indexReader, - int minTweepCred) throws IOException { - super(indexReader); - this.userReputationDocValues = - indexReader.getNumericDocValues(EarlybirdFieldConstant.USER_REPUTATION.getFieldName()); - this.minTweepCred = minTweepCred; - } - - @Override - public boolean shouldReturnDoc() throws IOException { - // We need this explicit casting to byte, because of how we encode and decode features in our - // encoded_tweet_features field. If a feature is an int (uses all 32 bits of the int), then - // encoding the feature and then decoding it preserves its original value. However, if the - // feature does not use the entire int (and especially if it uses bits somewhere in the middle - // of the int), then the feature value is assumed to be unsigned when it goes through this - // process of encoding and decoding. So a user rep of - // RelevanceSignalConstants.UNSET_REPUTATION_SENTINEL (-128) will be correctly encoded as the - // binary value 10000000, but will be treated as an unsigned value when decoded, and therefore - // the decoded value will be 128. - // - // In retrospect, this seems like a really poor design decision. It seems like it would be - // better if all feature values were considered to be signed, even if most features can never - // have negative values. Unfortunately, making this change is not easy, because some features - // store normalized values, so we would also need to change the range of allowed values - // produced by those normalizers, as well as all code that depends on those values. - // - // So for now, just cast this value to a byte, to get the proper negative value. - return userReputationDocValues.advanceExact(docID()) - && ((byte) userReputationDocValues.longValue() >= minTweepCred); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..15d2c2ae12899c218205543e1d2ab4d77fa87734 GIT binary patch literal 37692 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𝔇yf_qE@v&ZGLR( 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.java b/src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.java deleted file mode 100644 index f5ba12493..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/CSFDisjunctionFilter.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; -import java.util.Objects; -import java.util.Set; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; - -/** - * CSFDisjunctionFilter provides an efficient mechanism to query for documents that have a - * long CSF equal to one of the provided values. - */ -public final class CSFDisjunctionFilter extends Query { - private final String csfField; - private final Set values; - - public static Query getCSFDisjunctionFilter(String csfField, Set values) { - return new BooleanQuery.Builder() - .add(new CSFDisjunctionFilter(csfField, values), BooleanClause.Occur.FILTER) - .build(); - } - - private CSFDisjunctionFilter(String csfField, Set values) { - this.csfField = csfField; - this.values = values; - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - return new CSFDisjunctionFilterDISI(context.reader(), csfField, values); - } - }; - } - - @Override - public int hashCode() { - return (csfField == null ? 0 : csfField.hashCode()) * 17 - + (values == null ? 0 : values.hashCode()); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof CSFDisjunctionFilter)) { - return false; - } - - CSFDisjunctionFilter filter = CSFDisjunctionFilter.class.cast(obj); - return Objects.equals(csfField, filter.csfField) && Objects.equals(values, filter.values); - } - - @Override - public String toString(String field) { - return "CSFDisjunctionFilter:" + csfField + ",count:" + values.size(); - } - - private static final class CSFDisjunctionFilterDISI extends RangeFilterDISI { - private final NumericDocValues docValues; - private final Set values; - - private CSFDisjunctionFilterDISI(LeafReader reader, String csfField, Set values) - throws IOException { - super(reader); - this.values = values; - this.docValues = reader.getNumericDocValues(csfField); - } - - @Override - protected boolean shouldReturnDoc() throws IOException { - return docValues.advanceExact(docID()) && values.contains(docValues.longValue()); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..293a7517be70351140f9d171a91f448bbfed7f47 GIT binary patch literal 38530 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 W<|bUg2wERiLJ&t_c)*g^kNyv;77geC literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.java b/src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.java deleted file mode 100644 index b9b5ad68f..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/DocValRangeFilter.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; -import java.util.Objects; - -import com.google.common.annotations.VisibleForTesting; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.schema.thriftjava.ThriftCSFType; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; - -/** - * Filters tweets according to the specified CSF field value. - * Note that min value is inclusive, and max value is exclusive. - */ -public final class DocValRangeFilter extends Query { - private final String csfField; - private final ThriftCSFType csfFieldType; - private final Number minValInclusive; - private final Number maxValExclusive; - - /** - * Returns a query that filters hits based on the value of a CSF. - * - * @param csfField The CSF name. - * @param csfFieldType The CSF type. - * @param minVal The minimum acceptable value (inclusive). - * @param maxVal The maximum acceptable value (exclusive). - * @return A query that filters hits based on the value of a CSF. - */ - public static Query getDocValRangeQuery(String csfField, ThriftCSFType csfFieldType, - double minVal, double maxVal) { - return new BooleanQuery.Builder() - .add(new DocValRangeFilter(csfField, csfFieldType, minVal, maxVal), - BooleanClause.Occur.FILTER) - .build(); - } - - /** - * Returns a query that filters hits based on the value of a CSF. - * - * @param csfField The CSF name. - * @param csfFieldType The CSF type. - * @param minVal The minimum acceptable value (inclusive). - * @param maxVal The maximum acceptable value (exclusive). - * @return A query that filters hits based on the value of a CSF. - */ - public static Query getDocValRangeQuery(String csfField, ThriftCSFType csfFieldType, - long minVal, long maxVal) { - return new BooleanQuery.Builder() - .add(new DocValRangeFilter(csfField, csfFieldType, minVal, maxVal), - BooleanClause.Occur.FILTER) - .build(); - } - - private DocValRangeFilter(String csfField, ThriftCSFType csfFieldType, - double minVal, double maxVal) { - this.csfField = csfField; - this.csfFieldType = csfFieldType; - this.minValInclusive = new Float(minVal); - this.maxValExclusive = new Float(maxVal); - } - - private DocValRangeFilter(String csfField, ThriftCSFType csfFieldType, - long minVal, long maxVal) { - this.csfField = csfField; - this.csfFieldType = csfFieldType; - this.minValInclusive = new Long(minVal); - this.maxValExclusive = new Long(maxVal); - } - - @Override - public int hashCode() { - return (csfField == null ? 0 : csfField.hashCode()) * 29 - + (csfFieldType == null ? 0 : csfFieldType.hashCode()) * 17 - + minValInclusive.hashCode() * 7 - + maxValExclusive.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof DocValRangeFilter)) { - return false; - } - - DocValRangeFilter filter = DocValRangeFilter.class.cast(obj); - return Objects.equals(csfField, filter.csfField) - && (csfFieldType == filter.csfFieldType) - && minValInclusive.equals(filter.minValInclusive) - && maxValExclusive.equals(filter.maxValExclusive); - } - - @Override - public String toString(String field) { - return "DocValRangeFilter:" + csfField - + ",type:" + csfFieldType.toString() - + ",min:" + this.minValInclusive.toString() - + ",max:" + this.maxValExclusive.toString(); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader reader = context.reader(); - if (csfFieldType == null) { - return new AllDocsIterator(reader); - } - - int smallestDoc = (reader instanceof EarlybirdIndexSegmentAtomicReader) - ? ((EarlybirdIndexSegmentAtomicReader) reader).getSmallestDocID() : 0; - int largestDoc = reader.maxDoc() - 1; - return new CSFRangeDocIdSetIterator(reader, csfField, csfFieldType, - smallestDoc, largestDoc, - minValInclusive, maxValExclusive); - } - }; - } - - private static final class CSFRangeDocIdSetIterator extends RangeFilterDISI { - private final NumericDocValues numericDocValues; - private final ThriftCSFType csfType; - private final Number minValInclusive; - private final Number maxValExclusive; - - public CSFRangeDocIdSetIterator(LeafReader reader, - String csfField, - ThriftCSFType csfType, - int smallestDocID, - int largestDocID, - Number minValInclusive, - Number maxValExclusive) throws IOException { - super(reader, smallestDocID, largestDocID); - this.numericDocValues = reader.getNumericDocValues(csfField); - this.csfType = csfType; - this.minValInclusive = minValInclusive; - this.maxValExclusive = maxValExclusive; - } - - @Override - protected boolean shouldReturnDoc() throws IOException { - if (!numericDocValues.advanceExact(docID())) { - return false; - } - - long val = numericDocValues.longValue(); - switch (csfType) { - case DOUBLE: - double doubleVal = Double.longBitsToDouble(val); - return doubleVal >= minValInclusive.doubleValue() - && doubleVal < maxValExclusive.doubleValue(); - case FLOAT: - float floatVal = Float.intBitsToFloat((int) val); - return floatVal >= minValInclusive.doubleValue() - && floatVal < maxValExclusive.doubleValue(); - case LONG: - return val >= minValInclusive.longValue() && val < maxValExclusive.longValue(); - case INT: - return val >= minValInclusive.longValue() && (int) val < maxValExclusive.longValue(); - case BYTE: - return (byte) val >= minValInclusive.longValue() - && (byte) val < maxValExclusive.longValue(); - default: - return false; - } - } - } - - ////////////////////////// - // for unit tests only - ////////////////////////// - @VisibleForTesting - public Number getMinValForTest() { - return minValInclusive; - } - - @VisibleForTesting - public Number getMaxValForTest() { - return maxValExclusive; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..9da9c877c3f7ea30ac6f494ab2f9afab1dc381e0 GIT binary patch literal 38155 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 z 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.java b/src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.java deleted file mode 100644 index e4e9d37a7..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/FeatureValueInAcceptListOrUnsetFilter.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; -import java.util.Set; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; - -public final class FeatureValueInAcceptListOrUnsetFilter extends Query { - - private final String featureName; - private final Set idsAcceptList; - - /** - * Creates a query that filters for hits that have the given feature unset, or that have the - * given feature set to a value in the given list of IDs. - * - * @param featureName The feature. - * @param ids A list of id values this filter will accept for the given feature. - * @return A query that filters out all hits that have the given feature set. - */ - public static Query getFeatureValueInAcceptListOrUnsetFilter(String featureName, Set ids) { - return new BooleanQuery.Builder() - .add(new FeatureValueInAcceptListOrUnsetFilter(featureName, ids), - BooleanClause.Occur.FILTER) - .build(); - } - - @Override - public String toString(String s) { - return String.format("FeatureValueInAcceptListOrUnsetFilter(%s, AcceptList = (%s))", - featureName, - idsAcceptList); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof FeatureValueInAcceptListOrUnsetFilter)) { - return false; - } - - FeatureValueInAcceptListOrUnsetFilter filter = - FeatureValueInAcceptListOrUnsetFilter.class.cast(obj); - return featureName.equals(filter.featureName) && idsAcceptList.equals(filter.idsAcceptList); - } - - @Override - public int hashCode() { - return featureName.hashCode() * 7 + idsAcceptList.hashCode(); - } - - private FeatureValueInAcceptListOrUnsetFilter(String featureName, Set ids) { - this.featureName = Preconditions.checkNotNull(featureName); - this.idsAcceptList = Preconditions.checkNotNull(ids); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - return new FeatureValueInAcceptListOrUnsetDocIdSetIterator( - context.reader(), featureName, idsAcceptList); - } - }; - } - - private static final class FeatureValueInAcceptListOrUnsetDocIdSetIterator - extends RangeFilterDISI { - private final NumericDocValues featureDocValues; - private final Set idsAcceptList; - - FeatureValueInAcceptListOrUnsetDocIdSetIterator( - LeafReader indexReader, String featureName, Set ids) throws IOException { - super(indexReader); - this.featureDocValues = indexReader.getNumericDocValues(featureName); - this.idsAcceptList = ids; - } - - @Override - public boolean shouldReturnDoc() throws IOException { - // If featureDocValues is null, that means there were no documents indexed with the given - // field in the current segment. - // - // The advanceExact() method returns false if it cannot find the given docId in the - // NumericDocValues instance. So if advanceExact() returns false then we know the feature is - // unset. - // However, for realtime Earlybirds we have a custom implementation of NumericDocValues, - // ColumnStrideFieldDocValues, which will contain an entry for every indexed docId and use a - // value of 0 to indicate that a feature is unset. - // - // So to check if a feature is unset for a given docId, we first need to check if we can find - // the docId, and then we additionally need to check if the feature value is 0. - return featureDocValues == null - || !featureDocValues.advanceExact(docID()) - || featureDocValues.longValue() == 0 - || idsAcceptList.contains(featureDocValues.longValue()); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.docx b/src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..62b7db4b23c4d9fb958021585272f2fccefa6781 GIT binary patch literal 38776 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.java b/src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.java deleted file mode 100644 index cfae5f988..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/GeoTwoPhaseQuery.java +++ /dev/null @@ -1,255 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; -import java.util.Set; - -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.Term; -import org.apache.lucene.search.ConstantScoreQuery; -import org.apache.lucene.search.ConstantScoreScorer; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.Explanation; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.Scorer; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.TwoPhaseIterator; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.search.TerminationTracker; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; - - -public class GeoTwoPhaseQuery extends Query { - private static final boolean ENABLE_GEO_EARLY_TERMINATION = - EarlybirdConfig.getBool("early_terminate_geo_searches", true); - - private static final int GEO_TIMEOUT_OVERRIDE = - EarlybirdConfig.getInt("early_terminate_geo_searches_timeout_override", -1); - - // How many geo searches are early terminated due to timeout. - private static final SearchCounter GEO_SEARCH_TIMEOUT_COUNT = - SearchCounter.export("geo_search_timeout_count"); - - private final SecondPhaseDocAccepter accepter; - private final TerminationTracker terminationTracker; - private final ConstantScoreQuery query; - - public GeoTwoPhaseQuery( - Query query, SecondPhaseDocAccepter accepter, TerminationTracker terminationTracker) { - this.accepter = accepter; - this.terminationTracker = terminationTracker; - - this.query = new ConstantScoreQuery(query); - } - - @Override - public Query rewrite(IndexReader reader) throws IOException { - Query rewritten = query.getQuery().rewrite(reader); - if (rewritten != query.getQuery()) { - return new GeoTwoPhaseQuery(rewritten, accepter, terminationTracker); - } - - return this; - } - - @Override - public int hashCode() { - return query.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof GeoTwoPhaseQuery)) { - return false; - } - GeoTwoPhaseQuery that = (GeoTwoPhaseQuery) obj; - return query.equals(that.query) - && accepter.equals(that.accepter) - && terminationTracker.equals(that.terminationTracker); - } - - @Override - public String toString(String field) { - return new StringBuilder("GeoTwoPhaseQuery(") - .append("Accepter(") - .append(accepter.toString()) - .append(") Geohashes(") - .append(query.getQuery().toString(field)) - .append("))") - .toString(); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) - throws IOException { - Weight innerWeight = query.createWeight(searcher, scoreMode, boost); - return new GeoTwoPhaseWeight(this, innerWeight, accepter, terminationTracker); - } - - private static final class GeoTwoPhaseWeight extends Weight { - private final Weight innerWeight; - private final SecondPhaseDocAccepter accepter; - private final TerminationTracker terminationTracker; - - private GeoTwoPhaseWeight( - Query query, - Weight innerWeight, - SecondPhaseDocAccepter accepter, - TerminationTracker terminationTracker) { - super(query); - this.innerWeight = innerWeight; - this.accepter = accepter; - this.terminationTracker = terminationTracker; - } - - @Override - public void extractTerms(Set terms) { - innerWeight.extractTerms(terms); - } - - @Override - public Explanation explain(LeafReaderContext context, int doc) throws IOException { - return innerWeight.explain(context, doc); - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - Scorer innerScorer = innerWeight.scorer(context); - if (innerScorer == null) { - return null; - } - if (ENABLE_GEO_EARLY_TERMINATION - && (terminationTracker == null || !terminationTracker.useLastSearchedDocIdOnTimeout())) { - innerScorer = new ConstantScoreScorer( - this, - 0.0f, - ScoreMode.COMPLETE_NO_SCORES, - new TimedDocIdSetIterator(innerScorer.iterator(), - terminationTracker, - GEO_TIMEOUT_OVERRIDE, - GEO_SEARCH_TIMEOUT_COUNT)); - } - - accepter.initialize(context); - return new GeoTwoPhaseScorer(this, innerScorer, accepter); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return innerWeight.isCacheable(ctx); - } - } - - private static final class GeoTwoPhaseScorer extends Scorer { - private final Scorer innerScorer; - private final SecondPhaseDocAccepter accepter; - - private GeoTwoPhaseScorer(Weight weight, Scorer innerScorer, SecondPhaseDocAccepter accepter) { - super(weight); - this.innerScorer = innerScorer; - this.accepter = accepter; - } - - @Override - public TwoPhaseIterator twoPhaseIterator() { - return new TwoPhaseIterator(innerScorer.iterator()) { - @Override - public boolean matches() throws IOException { - return checkDocExpensive(innerScorer.docID()); - } - - @Override - public float matchCost() { - return 0.0f; - } - }; - } - - @Override - public int docID() { - return iterator().docID(); - } - - @Override - public float score() throws IOException { - return innerScorer.score(); - } - - @Override - public DocIdSetIterator iterator() { - return new DocIdSetIterator() { - private int doNext(int startingDocId) throws IOException { - int docId = startingDocId; - while ((docId != NO_MORE_DOCS) && !checkDocExpensive(docId)) { - docId = innerScorer.iterator().nextDoc(); - } - return docId; - } - - @Override - public int docID() { - return innerScorer.iterator().docID(); - } - - @Override - public int nextDoc() throws IOException { - return doNext(innerScorer.iterator().nextDoc()); - } - - @Override - public int advance(int target) throws IOException { - return doNext(innerScorer.iterator().advance(target)); - } - - @Override - public long cost() { - return 2 * innerScorer.iterator().cost(); - } - }; - } - - @Override - public float getMaxScore(int upTo) throws IOException { - return innerScorer.getMaxScore(upTo); - } - - private boolean checkDocExpensive(int doc) throws IOException { - return accepter.accept(doc); - } - } - - public abstract static class SecondPhaseDocAccepter { - /** - * Initializes this accepter with the given reader context. - */ - public abstract void initialize(LeafReaderContext context) throws IOException; - - /** - * Determines if the given doc ID is accepted by this accepter. - */ - public abstract boolean accept(int doc) throws IOException; - - /** - * Returns a string description for this SecondPhaseDocAccepter instance. - */ - public abstract String toString(); - } - - public static final SecondPhaseDocAccepter ALL_DOCS_ACCEPTER = new SecondPhaseDocAccepter() { - @Override - public void initialize(LeafReaderContext context) { } - - @Override - public boolean accept(int doc) { - return true; - } - - @Override - public String toString() { - return "AllDocsAccepter"; - } - }; -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/MatchAllDocIdSet.docx b/src/java/com/twitter/search/earlybird/search/queries/MatchAllDocIdSet.docx new file mode 100644 index 0000000000000000000000000000000000000000..12cdb0db8de5f836b7dd2407b502064410d50365 GIT binary patch literal 37069 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 WFu terms) { - luceneWeight.extractTerms(terms); - } - - @Override - public Explanation explain(LeafReaderContext context, int doc) throws IOException { - return luceneWeight.explain(context, doc); - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - Preconditions.checkState(context.reader() instanceof EarlybirdIndexSegmentAtomicReader, - "Expected an EarlybirdIndexSegmentAtomicReader, but got a " - + context.reader().getClass().getName() + " instance."); - EarlybirdIndexSegmentAtomicReader reader = - (EarlybirdIndexSegmentAtomicReader) context.reader(); - return new ConstantScoreScorer( - this, 1.0f, ScoreMode.COMPLETE_NO_SCORES, new RangeFilterDISI(reader)); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return luceneWeight.isCacheable(ctx); - } - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - org.apache.lucene.search.MatchAllDocsQuery luceneMatchAllDocsQuery = - new org.apache.lucene.search.MatchAllDocsQuery(); - Weight luceneWeight = luceneMatchAllDocsQuery.createWeight(searcher, scoreMode, boost); - if (!(searcher instanceof EarlybirdSingleSegmentSearcher)) { - return luceneWeight; - } - return new MatchAllDocsWeight(this, luceneWeight); - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof MatchAllDocsQuery; - } - - // Copied from org.apache.lucene.search.MatchAllDocsWeight - @Override - public String toString(String field) { - return "*:*"; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..04ae50c09c825e96955504f017f530070a1a00d1 GIT binary patch literal 38208 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 BhX()v literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.java b/src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.java deleted file mode 100644 index e62de315f..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/RequiredStatusIDsFilter.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Collection; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.search.IntArrayDocIdSetIterator; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; -import com.twitter.search.earlybird.index.TweetIDMapper; - -public final class RequiredStatusIDsFilter extends Query { - private final Collection statusIDs; - - public static Query getRequiredStatusIDsQuery(Collection statusIDs) { - return new BooleanQuery.Builder() - .add(new RequiredStatusIDsFilter(statusIDs), BooleanClause.Occur.FILTER) - .build(); - } - - private RequiredStatusIDsFilter(Collection statusIDs) { - this.statusIDs = Preconditions.checkNotNull(statusIDs); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader leafReader = context.reader(); - if (!(leafReader instanceof EarlybirdIndexSegmentAtomicReader)) { - return DocIdSetIterator.empty(); - } - - EarlybirdIndexSegmentAtomicReader reader = (EarlybirdIndexSegmentAtomicReader) leafReader; - TweetIDMapper idMapper = (TweetIDMapper) reader.getSegmentData().getDocIDToTweetIDMapper(); - - int docIdsSize = 0; - int[] docIds = new int[statusIDs.size()]; - for (long statusID : statusIDs) { - int docId = idMapper.getDocID(statusID); - if (docId >= 0) { - docIds[docIdsSize++] = docId; - } - } - - Arrays.sort(docIds, 0, docIdsSize); - DocIdSetIterator statusesDISI = - new IntArrayDocIdSetIterator(Arrays.copyOf(docIds, docIdsSize)); - DocIdSetIterator allDocsDISI = new AllDocsIterator(reader); - - // We only want to return IDs for fully indexed documents. So we need to make sure that - // every doc ID we return exists in allDocsDISI. However, allDocsDISI has all documents in - // this segment, so driving by allDocsDISI would be very slow. So we want to drive by - // statusesDISI, and use allDocsDISI as a post-filter. What this comes down to is that we do - // not want to call allDocsDISI.nextDoc(); we only want to call allDocsDISI.advance(), and - // only on the doc IDs returned by statusesDISI. - return new DocIdSetIterator() { - @Override - public int docID() { - return statusesDISI.docID(); - } - - @Override - public int nextDoc() throws IOException { - statusesDISI.nextDoc(); - return advanceToNextFullyIndexedDoc(); - } - - @Override - public int advance(int target) throws IOException { - statusesDISI.advance(target); - return advanceToNextFullyIndexedDoc(); - } - - private int advanceToNextFullyIndexedDoc() throws IOException { - while (docID() != DocIdSetIterator.NO_MORE_DOCS) { - // Check if the current doc is fully indexed. - // If it is, then we can return it. If it's not, then we need to keep searching. - int allDocsDocId = allDocsDISI.advance(docID()); - if (allDocsDocId == docID()) { - break; - } - - statusesDISI.advance(allDocsDocId); - } - return docID(); - } - - @Override - public long cost() { - return statusesDISI.cost(); - } - }; - } - }; - } - - @Override - public int hashCode() { - return statusIDs.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof RequiredStatusIDsFilter)) { - return false; - } - - RequiredStatusIDsFilter filter = RequiredStatusIDsFilter.class.cast(obj); - return statusIDs.equals(filter.statusIDs); - } - - @Override - public final String toString(String field) { - return String.format("RequiredStatusIDs[%s]", statusIDs); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.docx b/src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..ea0e4bc04d35eb790b95bc27c7394f00c8715077 GIT binary patch literal 37621 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.java b/src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.java deleted file mode 100644 index 9981ef2ab..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/SimpleTermQuery.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; - -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.ConstantScoreScorer; -import org.apache.lucene.search.ConstantScoreWeight; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.Scorer; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -/** - * A version of a term query that we can use when we already know the term id (in case where we - * previously looked it up), and have a TermsEnum to get the actual postings. - * - * This is can be used for constant score queries, where only iterating on the postings is required. - */ -class SimpleTermQuery extends Query { - private final TermsEnum termsEnum; - private final long termId; - - public SimpleTermQuery(TermsEnum termsEnum, long termId) { - this.termsEnum = termsEnum; - this.termId = termId; - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) - throws IOException { - return new SimpleTermQueryWeight(scoreMode); - } - - @Override - public int hashCode() { - return (termsEnum == null ? 0 : termsEnum.hashCode()) * 13 + (int) termId; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof SimpleTermQuery)) { - return false; - } - - SimpleTermQuery query = SimpleTermQuery.class.cast(obj); - return (termsEnum == null ? query.termsEnum == null : termsEnum.equals(query.termsEnum)) - && (termId == query.termId); - } - - @Override - public String toString(String field) { - return "SimpleTermQuery(" + field + ":" + termId + ")"; - } - - private class SimpleTermQueryWeight extends ConstantScoreWeight { - private final ScoreMode scoreMode; - - public SimpleTermQueryWeight(ScoreMode scoreMode) { - super(SimpleTermQuery.this, 1.0f); - this.scoreMode = scoreMode; - } - - @Override - public String toString() { - return "weight(" + SimpleTermQuery.this + ")"; - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - termsEnum.seekExact(termId); - - PostingsEnum docs = termsEnum.postings( - null, scoreMode.needsScores() ? PostingsEnum.FREQS : PostingsEnum.NONE); - assert docs != null; - return new ConstantScoreScorer(this, 0, scoreMode, docs); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return true; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..b79f40a08afa3d66f5b41babefabb3858492da4f GIT binary patch literal 38879 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


    oZm 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
    h%o2 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.java b/src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.java deleted file mode 100644 index aae8fcf2f..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/SinceMaxIDFilter.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; - -import com.google.common.annotations.VisibleForTesting; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; -import com.twitter.search.earlybird.index.TweetIDMapper; - -/** - * Filters tweet ids according to since_id and max_id parameter. - * - * Note that since_id is exclusive and max_id is inclusive. - */ -public final class SinceMaxIDFilter extends Query { - public static final long NO_FILTER = -1; - - private final long sinceIdExclusive; - private final long maxIdInclusive; - - public static Query getSinceMaxIDQuery(long sinceIdExclusive, long maxIdInclusive) { - return new BooleanQuery.Builder() - .add(new SinceMaxIDFilter(sinceIdExclusive, maxIdInclusive), BooleanClause.Occur.FILTER) - .build(); - } - - public static Query getSinceIDQuery(long sinceIdExclusive) { - return new BooleanQuery.Builder() - .add(new SinceMaxIDFilter(sinceIdExclusive, NO_FILTER), BooleanClause.Occur.FILTER) - .build(); - } - - public static Query getMaxIDQuery(long maxIdInclusive) { - return new BooleanQuery.Builder() - .add(new SinceMaxIDFilter(NO_FILTER, maxIdInclusive), BooleanClause.Occur.FILTER) - .build(); - } - - private SinceMaxIDFilter(long sinceIdExclusive, long maxIdInclusive) { - this.sinceIdExclusive = sinceIdExclusive; - this.maxIdInclusive = maxIdInclusive; - } - - @Override - public int hashCode() { - return (int) (sinceIdExclusive * 13 + maxIdInclusive); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof SinceMaxIDFilter)) { - return false; - } - - SinceMaxIDFilter filter = SinceMaxIDFilter.class.cast(obj); - return (sinceIdExclusive == filter.sinceIdExclusive) - && (maxIdInclusive == filter.maxIdInclusive); - } - - @Override - public String toString(String field) { - if (sinceIdExclusive != NO_FILTER && maxIdInclusive != NO_FILTER) { - return "SinceIdFilter:" + sinceIdExclusive + ",MaxIdFilter:" + maxIdInclusive; - } else if (maxIdInclusive != NO_FILTER) { - return "MaxIdFilter:" + maxIdInclusive; - } else { - return "SinceIdFilter:" + sinceIdExclusive; - } - } - - /** - * Determines if this segment is at least partially covered by the given tweet ID range. - */ - public static boolean sinceMaxIDsInRange( - TweetIDMapper tweetIdMapper, long sinceIdExclusive, long maxIdInclusive) { - // Check for since id out of range. Note that since this ID is exclusive, - // equality is out of range too. - if (sinceIdExclusive != NO_FILTER && sinceIdExclusive >= tweetIdMapper.getMaxTweetID()) { - return false; - } - - // Check for max id in range. - return maxIdInclusive == NO_FILTER || maxIdInclusive >= tweetIdMapper.getMinTweetID(); - } - - // Returns true if this segment is completely covered by these id filters. - private static boolean sinceMaxIdsCoverRange( - TweetIDMapper tweetIdMapper, long sinceIdExclusive, long maxIdInclusive) { - // Check for since_id specified AND since_id newer than than first tweet. - if (sinceIdExclusive != NO_FILTER && sinceIdExclusive >= tweetIdMapper.getMinTweetID()) { - return false; - } - - // Check for max id in range. - return maxIdInclusive == NO_FILTER || maxIdInclusive > tweetIdMapper.getMaxTweetID(); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) - throws IOException { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader reader = context.reader(); - if (!(reader instanceof EarlybirdIndexSegmentAtomicReader)) { - return new AllDocsIterator(reader); - } - - EarlybirdIndexSegmentAtomicReader twitterInMemoryIndexReader = - (EarlybirdIndexSegmentAtomicReader) reader; - TweetIDMapper tweetIdMapper = - (TweetIDMapper) twitterInMemoryIndexReader.getSegmentData().getDocIDToTweetIDMapper(); - - // Important to return a null DocIdSetIterator here, so the Scorer will skip searching - // this segment completely. - if (!sinceMaxIDsInRange(tweetIdMapper, sinceIdExclusive, maxIdInclusive)) { - return null; - } - - // Optimization: just return a match-all iterator when the whole segment is in range. - // This avoids having to do so many status id lookups. - if (sinceMaxIdsCoverRange(tweetIdMapper, sinceIdExclusive, maxIdInclusive)) { - return new AllDocsIterator(reader); - } - - return new SinceMaxIDDocIdSetIterator( - twitterInMemoryIndexReader, sinceIdExclusive, maxIdInclusive); - } - }; - } - - @VisibleForTesting - static class SinceMaxIDDocIdSetIterator extends RangeFilterDISI { - private final DocIDToTweetIDMapper docIdToTweetIdMapper; - private final long sinceIdExclusive; - private final long maxIdInclusive; - - public SinceMaxIDDocIdSetIterator(EarlybirdIndexSegmentAtomicReader reader, - long sinceIdExclusive, - long maxIdInclusive) throws IOException { - super(reader, - findMaxIdDocID(reader, maxIdInclusive), - findSinceIdDocID(reader, sinceIdExclusive)); - this.docIdToTweetIdMapper = reader.getSegmentData().getDocIDToTweetIDMapper(); - this.sinceIdExclusive = sinceIdExclusive; // sinceStatusId == NO_FILTER is OK, it's exclusive - this.maxIdInclusive = maxIdInclusive != NO_FILTER ? maxIdInclusive : Long.MAX_VALUE; - } - - /** - * This is a necessary check when we have out of order tweets in the archive. - * When tweets are out of order, this guarantees that no false positive results are returned. - * I.e. we can still miss some tweets in the specified range, but we never incorrectly return - * anything that's not in the range. - */ - @Override - protected boolean shouldReturnDoc() { - final long statusID = docIdToTweetIdMapper.getTweetID(docID()); - return statusID > sinceIdExclusive && statusID <= maxIdInclusive; - } - - private static int findSinceIdDocID( - EarlybirdIndexSegmentAtomicReader reader, long sinceIdExclusive) throws IOException { - TweetIDMapper tweetIdMapper = - (TweetIDMapper) reader.getSegmentData().getDocIDToTweetIDMapper(); - if (sinceIdExclusive != SinceMaxIDFilter.NO_FILTER) { - // We use this as an upper bound on the search, so we want to find the highest possible - // doc ID for this tweet ID. - boolean findMaxDocID = true; - return tweetIdMapper.findDocIdBound( - sinceIdExclusive, - findMaxDocID, - reader.getSmallestDocID(), - reader.maxDoc() - 1); - } else { - return DocIDToTweetIDMapper.ID_NOT_FOUND; - } - } - - private static int findMaxIdDocID( - EarlybirdIndexSegmentAtomicReader reader, long maxIdInclusive) throws IOException { - TweetIDMapper tweetIdMapper = - (TweetIDMapper) reader.getSegmentData().getDocIDToTweetIDMapper(); - if (maxIdInclusive != SinceMaxIDFilter.NO_FILTER) { - // We use this as a lower bound on the search, so we want to find the lowest possible - // doc ID for this tweet ID. - boolean findMaxDocID = false; - return tweetIdMapper.findDocIdBound( - maxIdInclusive, - findMaxDocID, - reader.getSmallestDocID(), - reader.maxDoc() - 1); - } else { - return DocIDToTweetIDMapper.ID_NOT_FOUND; - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/SinceUntilFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/SinceUntilFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..e7e0c0b2e6ee8be8b7702633b24e56ac21e94bb8 GIT binary patch literal 38154 zcmagFb9^OT);1j5?$~zHvDHb(w$MJ zXIHHYYt^Y*wQC;*X>bS(5D*X;kegIajY_4$*hEkekTEC_5OmM$|R832U z*QaR?Q0Bdweja_a;0uu)t$;+0Cy*$r%4jt-qM=|ICH^tU(CYkI&fE?%I~Apq5vo19 zZwF%vE^iaQuB1<*e&Shg%Z!w2nO5m=ZT?&-VFs6~65kCP;szXRT_)-39n4kj>(+V; zk=%yh0VqHBZF(48$JNBcPJ04qsOm{{6QI&qJEAMSf*$%G9%u@q$pxO4L-ii!=VWarRQ*Pf zzkgO0tW|0kj!qh7K%ggO z;=IV#N3v+Ot5Z=-R|Bh;@aSUC*laO9A8(ni$U0EnNOK_|cd1uni{`4KU4I=W3AV$Z z#7$*4NYgqk{EiGs$dvMd!%U4>fNm3gP@AUyd{($hL`K;>O&YOXXzIM}uznN>3 zFSHt?m%U*|XSF#l{xd!cR?4M<=$Fn#lxAqEbv~uWN2)B5LZ|np%I2)V6 zjf3NYi9%v8{7rtqYhu2y8DXuzWQo&qS0)DaUGzN9T~nI#7?1UYE8-%+)ntK7rL*YD zEQa!s4b**RpZ`8ZlG&nElzS|qj4HeGT}>#Cx{VBx_yB|Em%l$@SUg!=J!)xl5g|wh zYDq3=Ski!@%#(egbQw!mi+GVrZx-iS`*@$Q%&2m@imLD4}lh9(C;sU z218z`OQOMGZP+euPj*7 z6QnSTg)<tbkU_g7g|#%_h;}oQR;}%pJa)ahJfB%)NBp^b^Dl>`}$Je7$oU? zB#38Tk>yt`G1^s8Xf1-6_@-2J-`X+2&2LUFg!sy9a1GEO*ZVJrnKkGMLKgTdZK&kl zQ?ml%wc|DAUw0WRNcgLUsK}EDUW|zF=!|L3)sK!um$Y={v?DRIKjWghQ0xTzw1OT0 zs2~%p_;D1zxM=MXJ$%D`Lt(tKVL94Sbc6S?aQB<&KTnLH;PoOb7!VL> ziNAlat^fxUCg88u*#>xX`g3NS>1?>Ja$xvw>E~X}q$J`VUVgH!F)ZEzr628jIC?28rz6no;z9nDhE75g{himlxj9gB z-#%NSerGD=fvSDlHAaQ&nq?35)42{x>&?k_dUCk`bSF7^tcVavT%h=GL~VbitDLn& zJs}bLjTnyrX#v%$;eN(!xzaCf@QknLdevKO>b2X1v1rQ#yWgTr=_s(T*A(GvlXcJU zJf?GH^C==}NeSa&po(>ZG=!BWwqdVm!d(5$A}})*Bo=~;8oSBah?>w)5tVS;rSYFr zK|ydPM3Xiqs@s>qWPR(X25f{@zeFj;;<@PxYQpV8&ZBZ z1Gkf?QSsJ73LdOi_gf(kZC6?cQHs5vv0cs#UW6Gcwp$+vswBQexHW;0Q<~j}$j8v( zY37U|5q|^D1PfjhC4NMw=Ve_xKAZjt@z5p}9~lgDi=}WPXjubB z?Jf4>9Ul;T=hySB7&F8G%$Oue#@2`(G8&a%(tkz#YTRYktrU#gz?%2OjcewL;_T;FOlYnC z6v#|`3IpoeXa7C_Q>}ypJ8m?G*}?{69W}WUyhwuBGWfg)K`_Rbm)J7S{xi+vk^kv@YnPB zuWYJ(&Wq^j8I-eoPE$VhTqxNtH6yYeu+BNkAjfX#L8S}TO(+QQ)(~HN`~Pis35u#3m>*vve?P~ zAiB50NLs5-po`_$XV3D~iaQ<+`-A)6f0 zYD=dEx?sA#FoA-0NH{LK4Djs=S1eGxG_Q+l%^U{JXKWkH@pR|Vq=$~48yi_2l z!iy@uuvJ8~6vgd(XwX*HYjv_9qb_jUq=;0=xZV}>M%&?ZGwXv?u;w205Q3?b`CC;4 zFWn`&I3Eea7cGy^4Gotp&~SCN zI!-!wr|*)JqJ&qYUnh-LpxU$F4ViA}r}Y5t#GX)Cn4(i$n6TXgdf*m0G7=}f$>+k6 zv}_~DQgxkY66`CShNx9H<|^SJ^d(iewB~duj^hyRzIY11DHg*T&tz-ZL0Sl0DL#pX zF)k&(WQ@5J?yqdQ+<5%V#z$tw`}ymRIq(2(P7z=_=JT7jC^WAot@R2<6ns2A&L&w7 z86%dHxY7o`>)tUxEoKB^qE)j{JibCd@5vv-F@v}hzbI5!*Q*&Px~5M~+jT#heV4e6 z5!Yxal->UTrsqI%gGTZ+2#)tqeNi=YHyops>+E|C8@*Z5ue%;;nw>*`?4T;?UOHOI zWZLSl8|@|fzQQdSG1nrZrmGgjta&Q3nG$XXhjR$s0WRr=DZJ8bue5qg2uqZ7d{!wO zfSivfD_RBT_Tvc%qOb%>nONcC`$2aMt(q}I2MO;fwaKv z%&y!t9ezJ9F4Tj5xORu&CUi#CtY9ee&}v@4q~v3%q}-kRRXy$1T*JCcXM=5O?))IL z2JM@Nx~FHnv*?R~w+}_H%oc2my5vbVqIT!z=*~N`yquQi5^pZA=S$}sRfy&h4k2r& zeAfBH!=yg!K>gJga~n?6v!|!L=kpXuRkttFlCEdJcEuAlq3FllJDaEsVEI7S4~|A_ z)67H*2XUf-)tY~eZNC`biyknAW|~IB8_fpWSqgT`UxXKNVt(l(n=Y|Wph}qIRktM# zX;Ns&c;-vybkl9e{fPXZO@yr<9vUmKyBr60m-xW$@~fp#5b8UrMF{>gAjwO`izSnVTfoY1(#-$jBWM?^fw3A*tjSQ`0lzM03m4|1s7q50vI_n*X~kuEJDV`zAqVT^2@NK=ClFDL zzspUaVWl{({^gXv?=l6=pP0%9%W<_t?a*LdnrroTwi<%_Dex!Lf95)}9E&%c2?Rt> z6%qvbpSgB)aY-R ztM-N3OY!9SO*_En4abZ3>G0f5>pUxI?alV>JY8^U81ViS{qgj&bP-i7*nGOD`}nkR z)t#jW{WbefNt&Z>A=A&&hn8|0ANH3}Qa=QO0B>7-xeC@Qk{B8X7y1{+j znzLAtsG_&0Q~o=5Xhhw|twp_-=gY#{xQFWx!4EqPKtJk3``*pro!h6g@{w=)4#w6A-2>1bbcz1@jEn<*s|_SAcqXtaNPg@mIQDoQEWHo@a5&pMH4j zUHI@JQo-q|JcR|!srck=lO<+Tw}>53!4WC|hkEG*6>9*%Z-?}61D2mY zbRQ=qm!So0<<^`{!EkAd+Q`qg-a7c`1&NZXr(I{)wPKW5`$C$BMqP*_8;Ed{5tP<%wVSrZpANDkNoIAbSopwxS>`JgkPCCc%<;XBwCVB zZ%z)kgqR7nqWe)(Ce9^<8Vf2$Xjs77)$`Wgb47+1zW$+M>gE5ET@nFMk7mlW=!j|l z5xk_q)w0_XP zzie1^@>X386s-KHVPV^nTGp`HjYlcq0RIZ3lnzG$(R(CjPjV8UA4K1%sU#A!>O?~V zW4?*eqYraaWL`H`eU>DcyN1U;*%NrewQjpbA9=uHf z0M+Cg)fPgLyT(EZitm6NVGy~-iV2A6fGo)Qv-2BpC)PiALhO(OK!yKtd{rYZ1tSEL zJN!tW)F#+JvCr7!fT6^|<7oa0)dHdg19AT&^lvJNQmP9}61V>%xKJbmj==q;BB=w? zB=>(w{2!T!rFuTzwGpM` z&r$yxDsU8Sm~v_FLf6aU5z|^A?jlrk_P%%m_0{y%B3f)u?D+~O?w?GR5L439aMK1W^X}X#*7c^-_Y2 zt-*ET`*RW_AGj=%KN@GVp8Y6Yofn+x|A*Q zgbciX!pQo1jXaO;JqlcyR)#pG(yo^OELZuUBhWA*)=FmPh+07mW$n~y@uEM+oX zY2+CCf+pj9^WYsh{9HUesJxL$<#Ptzin;EAjwo5iI4os<>#$>02VEIfQZ0FkhZF4d%0d!=#?b~-a$-G~S$d}kJ#Eq-4BUw7Xts^oyL|&4bqr4q< z9%G#B9*PoiDt^i5{thqO!pPq1lq*L9 ziz7|s+FcKWM1J3#WOeXQsk78L^C^9*Aw&XkoIZX171IlOrJY|iJ*rgLO^Wa3npKbo z&@^t$PNd8m8-EPuo+1pLaEPtY4Km$IS~EFZfQmO?x8y>i3J74#<85wD`E|moVKEet za}Xn+@lm^i)$Jy)H%}&9;&rNOm$Xyj_Zc5*5k+T=It`vxZT~6UQexzpU`zH^1`by{ zmEZ%lu*-RO9Pjf|Ni{7dMx`mQU(V*hL3D{5D#IX=iu_w0GXIv~+oxvHDM7$(U#p_S zLVl6%JuCj$_1KE_v24e6T+hrHy^eD9?+J9f#5~+p^+xsM&|;L5)bP`J+h~bNvfkoDqh&)pr-Ca~^s{(LY?smypWQ|6OIOZH%dpdH33I(vH6#6fGf!>V24WN) zaY&c&>!x+{Wa)`^mI!FQAT)(vX%e^{!49P{0aEhm_wJ_sHx3WnJVhr0n%dF4krLAy z6O~f%_qf>`P3s0c)WHame4Z@v1Jin$Vke&WI|e^z`lq*=);_OYT*NJB~VCL#xc4MzmHT;|pC#OPQ_Kk;Yxvb_?ZBYK|A;Vghy!uy8h$5TEw%G8~ zphtdxTHF0Rx)es-xWuDv(YTe;^5tanR74rnz(`LxR-~! zrCf!Mo-Lo&z`T-lDrF^>+`7)fPpAFRQi|`!#~x4itvtU|@5+;p6G@}nd_aOrSQ~nm zLGWpa+fLm87vC~!7&r00_m8XNt-D4r>4#iy8m@pB?-HO7G44j>#cC<{_767pOX`sJR`PWl8H&~8klG}h*FE}!-P1))0Oh*W>X==GsUV0 zhB28{<7~Zp-JcZ?9%ykG5cheECxA~ncRR1TPV1lY!EBI}zTGrUvj0j4eXgLMGWC7_ zX%Bw8Gs)O6@Z7mN>>KF)nw#Sjzm|XjP9tDS&0QN*i$UR>hsK_<{`EBiT`puijj^|y zlL?z`O`WJ}uOOezjJErC_f&FwF>-o$)$=F4JvN^&Tznq{IH&?UTvmh4ExUMI6i}a8 zm~D%mpX}adiYIs6;37Szod)55P2K+ld!#65Pgq}Gfm9n!RISX4$pUjpx3M{om3~rJ zY}LtXf7d>L7L_1E#%ACzKpbT`b&*m#%TnDlK)g8V>VwK73}Bx(PPq^1u0%dc497e) z$A#Cg&h^f&MnAV~*CV{Xqu^-K2 z&OQqJ5~_h)PY5fQvyMKO)3_&$DClyZgSV(x>fTa+7OyM-V;0Y!_02oqP>PT8ZIr*C7P3U*-C_(?PAQH~vcoH>(MV0AE^v8J${so-)tTMrU4c1Gq^ z_gI~Vw34WunA6K_G=bPG+XL_&VS}F6hDmrxPD=GG-%kgXyGp z#OpNYIKYLMe`L{Iafgo~D#Of`-Sf}1TfmJRm10U`*V;^#t*C){OEhC#ih#;fCm*8l z>y+s=NH>YrWx|~t+@(q7>$&BBqCC-^fUY{d#k~7^A3oE*f-rJg8Z3*g2mpp-A$Uu4 z{uN&GkMQ|_g&+S34dA!bQAyoxbzGefnW!R$H0gJwGz zEK7lDlEkA$rL!d2I>dz6V*aJN|1d1jWiL60_@S;ZRfzF3HR>m}r5j}D`7MPn6vT|s z)X2R)t~?Tf`0DAC!;*y;=lV$>8$_GaA~$0B6`~O=ytYZdu;2EzZl4`*B@U_7hm}vR zy>1$$FiJy>CL@k>r${EP_Eucf%gnwd#wrSVKRlyB&<~YFj)Pg0aXf6jg?-77Q9fvy zSFW>3mzr0{4m^I~v28=Qeb!MOM$+2C1P8IiAlob@MTu{B$j@-=K1SI}&od+PY z(w2l$@l}~bDEVs88m8cHtQ%!9?o_Icm(<@;Cf=5;Fb9je_{=nNNeuGCbx{WTYgt;E z@`jN{n0xwP=zp0aM2zVwvuKU>%2zEbuAN>`eGfauJTe&L#$!{?^aUmX0|2`64!DB74d{Saa{rFxX zs)%nus(=V0x2ECqtkljj3)Gl@@j#IOlSgh(3LA8%_(}n_#=!Aph>4lD1cn-DDdFcY zVU=5E?zUEOA>BUh$`i$-UV0S>6?(7}9Ape66^QxE_ZOB=7Fb@ZSfHaWaZT|wBQ0GQ zkyT{o$Wb!-3k@)mU9+?cbIV63bYOAQ7Q2ql7@+PU=tV$R{jjAl8a3Pma^(NRX87a3 z*tnhlKiQ~9-26GOsFq^ukG>UGTWUd&Z+%NVvH0zHhY31*#D3Mv^TV&BK5b51=uvYL zm_%F9;(FZjFTr;Z7zFAra{`$Rvf{{r`RQBe3h|d})&XjJwVgo1GuRSCJ_RlXRE7SR zi(!)j%}Wby2=X%uMY zbmUh+M0)H0rFhIg`~<7AIRH#VS;_J{1X$5f0^MH89aVOWm!=n=6F+PzwuEofn_cd| zT{^<0KyRT1CiTr)C2H2EkfA*jCY)8bon#Z$i-5mF)a|V6(Nku~ z`E#sdfW?BPiV!=1D8q;$gbt3tlVZ(bVu{AC$eAocf;m95nMVIUVGAeu!r3z$HhAp0 zYphH!QOyS3Xu>j>f8jjJ@}n3CktE3kUw+ zzQsp@kiZQ~jW^5BfY3pw;6VkGCiK+Cv+&WTp(zg8i+@vjDDg+7GEoCiWk2*El@Oq{ zDMrJszr2_aO+>M6;QS>)onOF5{2M;NL;VSii5WsQWYjef#LakPHL+nv?(QdCywCmz zagDvB6rxCd&9YKM=Ag>w(afi~yCB$8YxdyYKZKw#E32nY(Ll3@?B~pO8b-o8Ij8Uu zD`I2)WV_T5i_%3Itf0&CZEFcndKZq0+ek%eNf&K}Bc*86Vw3e?gS0vZowH87PueBr zEI>+4vKtL_#`*S>6H?yV+xa4@juOvR5!eq+^xr%+-)DJTj^sUR9>8OB% z@m%IhN^t`wHU{J0b~AuMQ-23>{qLZ}$pePF!|MU=Fh{hbKU66dh}M^~8R+AW1Kg2p zpFBFyjw-|(|Lk|cGeJ3;mwy<`sK2HLk$$5F+0FQCoPk10W)Z5%m})A_)N40mC>4QU zFU)Zf6UT55dOvY|iaCj)@ z3ZIpHau{_e(Sg1m$oEu~i{Q^4`uJ&U zqnrMtU9clNSP@4`Cj`a9Wu1PG>3OvA`0nU9azef;s(Ak3>ChrS!py3UiMhCVMenl* zKGc-c@7nYJKB@CI@knmyx;s7Kg?*9%Y8HU>J?nzmyRxbNaJ5B|_^`w>!FP!8ME4pt zXgeTAr+8yOSE`xA!zgES)&SUw*YkTS zTijc|)Ii*+Ef~NyZ0=bWE@D%%kek$PYU#Kr2hx?Ro4J)M_9K0rdR8iP6ODJ%CcTG+qo=y zdVkm7BpLx7P2}yTg6QF7ZlUT((lrBi8l)yWw*7G&#>LY$145m9y=Z^B?7~mYp7RL* zAisAW0g@|2|3%)+!j2x!`2QfEHIUkVib~#EclZZ+pMlhqlKLZ@db1+N&pxN0(8tQH zu}q!%dRv|Tt^AJ-Y;ACv1Rrh3V_);`9+!4gI*TBR3ts3okbeA%1k@%Bc`xS()2?!> z&E@;bc4k(dT)8$K#?YIWZO(ycDV{aT$P+lb_OGcob|UN7rOkZ4D`?{{wIj1G7D(Dq z3mzSCV~FvGy%VXK_as4~I0d0VU!I^BJZ)?g#f5Nr-k|FvwxqQ3*)vqm+?QcJ56iL; zn})D9FFVAe`u0;<^^5MN-H$~deY8m_tv5K*G^jiaO#PJ7hwmh5i=b(gGwZ@W=T_y$ z5HPp5?XFS6?6QlmL!!kz7HKBy=(2O6MX<|LDwCXYa|Oj^QEeSN?3HfG&6!LB_?*h(i=>A5XW1jarTLx7EO_m)%X*ZZl#Jua&8=SSm2%6L>kEs`39(mp zB$pL#N+*8Pg8r5!#3t4g@R7tr-{<0S+qP8kPmfv;MWciN26p2)XY!ZHU+k54T|;ei z4Xgh&DXo3dSs3=W$&kc9Cb{7MnC!Iq|1-%YYt=p7e#ln2(K# z%Nvz$Xi90151di13tKzbT{$}fZCR&c0KXMaY`~Dj)X1Nr(}D_BrrS&>cu1 zTE`zWH{nWXt&pofXiRqZP?JM!>dWJ+1MnryW#6$|Y%c5EKsTYHFGWaxAKe?V?EGGA zNHs+6g-4-5=>UlZ?}0~QA?^UdCJ)2jhrEMiqW--1i&@Xl9bpIZzF9ZxXcDVWZ;?_@ zs8jWGN6*=C!XW&mk4zBu5820nQR}H(SR}UJ!jTxYW*P}jnO`n1`mRoKIChx2an7lI>=n;SG7Kr~$o=vvSKay9|Y2B4Fxg5{@ z4~203@CT>(JL7m%lRe;;2Fg@9rEb(P9;NtbV5+pxklS%%EW*TMb}CW>if3Nle%O(K zc9pN7HJ|!j^Ywep@#PAOo8Sp) zNeYJr^Jq4bIF!vfOw8xCf5-q|4#V21)ELiKUfkoIgZ#>vadDOQZs)yfN4n&tNRyd z8hVktJedAMHuZya14sYG=JPyvHtko?Xn2>H=SEweoAO5y`A&OSmTn~G?m+`~J1$g9 z;neJ&oE!<-g?^FeB9&-3t9VkLDr@zGGJDUySFLXWKf!L`DZ7q5`{bo2ra|naC#u6G zhz~=IvB%Rr9j_WTNpGyWh2wZ`l*MVb?RN_OSO4(P0fbFUn{!AHmp~6WGpCQpru1C! z#$F+yARAjs2(f<7=6R@SfWyz)o4%;3M6O{UE_v~mbEIrh@B93QqdKJtdrAed4SRB) zff;yJ_>Fdla=Bc{Xr={-eQMk~k;{B4&BM5CxfJhdwAyewRNs`DQ36m(PE>V2gbgjvRvTU187VFOu5 zyE)B64Sm{S?vBNNv^JQQIb~q&zE4joV-r+O03*cyO?>w^71p8>03MhG@QLZvX)O3; zf?P7{8+06uhUsb#jS+$F6Gg+9SFz#5jU)BXw)!dhHwtkwrQ9Ty=LscQX&Z>6li!33k> zeM-tP8A_5>A~k*pl54c%>Z64I&T()lIj{8tVqhSq8DG>WD+CwSG{9dR$)}hMBvbkH z*K?Vz*c?Htk26D_>Q?onxb&;!=L%e-&5O?ksC*kKqXnxEml%m`9 zQS=p@9Mf65dgh+M5 zJxj>$YtdEfJJHpW?JqO|a6SY~kBtr(X^d`LuQ|m5M12KWymr)h;3}7MOE0pi*B*PX zDwk}H+aX!tcXwd4kGZ(%a6UzHf@1_Jw>$%JUggdlTb%(!WzprBueA5)W!aNbkb+-P zRW46GdaEPRnVoxI{s?|Wp}bq?b_5Cz_#eRm*`<(ze+%yYBlz-<;3~XRXBUfuRfgd) z_ejXQ(+|$4WT*&8G#6clXW?SP{~y4S18_dc@w27dUmyh$l_4-+ajIS4Iy`kRyPkyQ zAq68i%vO{O>sf>#1-(1B5@@P9r+}l%@IJ@f3i?brK-aaU+vX>?`Ro0F{YWpDjg&!x zlIB0aapfp)vN{l-;4SJa_y+Upfp-x*IX&--K-l|-RrpyOk z%{wo@4i^Sw5B;;4|JU5OW*=CafNh9gmZ=d66glFKaN>1`-#w;Gti(8*PzcQ% zip-{f8&cv;5kGc==y##3qJ$NA=BRQRNG?6Tx;BvE-eFaA{0nq^Y=PdWZLZ!c#yM?km;VEB680B>-Gghu9>j1v z%)ZVVj<&G`hnqgclfxv zgJXp2$4J3z@Igz)B_v9aGvwM8o?os|krHy=3xD1zb_`DVAlZrv&eYW1>%=J04t8~D+ePg&@z@rJiT%ReZhh=S&4qFx^ zLgDE$7s{hpw)kh8S?1+TgvTkk&PjalfssTt1LqJpPO`mi;IAf|+;?)sLSb_G4kPpr z7`Z^k%hwPzFpAo1u4l{+MIl{_<|sSJrB+DLj+lb#&yq^SI_ptM?z@GX%W*gsH(d-MTI-(dgpMO$UdH_|%{-0ADL6Ak-*<_shi5 zJcS0uutbZAv4F6Prw+!J!3nvF2n|hWjTJX*2Kswk9J3EGBU7|rpNrRZ40IWn#>a4( znQK`yEBuGXUT3{n%>nEtvY|G0tV}79=D)?4E3_%pD5uAMyxF){AZ#8cX?$X(8^5a> zlMzBnNIZC+GlOc>EXB6b0HH(2Nz_Q4s<6hmW_9UgSW~ERtdJpg2}^WNNQ`{F8Zpa8 z9K!5F0J`iwo-p{+1vHlajtiM$!O@hEM=0V&7}8vJ zOkVm-0IhVF+`IozDrO)RPQ)K7=I}wI?b>NhW1vme6nADK4{M{5Hq~c6sjNgyUeOzk zPaVSSwX7y;NvF?AseU@tbmPu0QwTgpg?bH!B%U>8UntaySm-jj-a)0Lvp;&3$lK6f}O2_F%98FfcL&77~D*bm}hPsmy96V(pB) zID+?NT{qsQYGis{QL#*%F+8^I-4~WfQqKx1M>;(Qu}%8#6$KNt^STd8eS@k5X13|8 za76`gh4p#VIw+n8%L@wnzcG4fYJx*isujh5p3%@`e#qc%XM+MV#wSAF3`RK0@tmrK zC5F}19g9&4V20}l|EwOLvdz=a6v!#PD%xt4<0~BI)U3>DE(J_m-#hiK|7_Qok4SXn zOc3S^);(HkR}`DlIZz*NqYMgyjMWrF4IRo6y*si_A0&RpoKWF-@8w{HPw69?#cLe5 z#rOeRhKEx;?GWV3L>V)K95dtfMJoUn0v(1DMJA@H#M~3Kn9R>ss5kv3-+Yq27w7fi=skYLhRdPg%SXHuZ~usvp}f=Lk~Eg90WAVl_>l? zVL-&(_TGe{y#=Rb-)b)hD3C$IM)Vq|#wC5tIP+QAVmIx^bW0!0{cX6UksoID@ z`eGsQbATIfT4pNb78EPt()QrdqN*H2t9Ail9}&aR)UQguGD${@H;dQsAco=;lFSjtEnZ2z(~qGZZG6l{NBm zaRRgY$PyB!1E)$?SYQsAFr;oy0A{T7j?Th~R&eSCbkk$yA}r=tm+azPFt1Z?;b1+X zV5}ze2SnQCse$y`)1nD1s(-0~NB&zyaL)~aT)CoJm8ElKz>z#RqE2e_4R) z@dAZ9Y}QDOZBG(d8Wg1xbefVgEK6jX$NVP~0j#bIIpW~wY)!HPX5hPVvwqUUMb-RR z5pd*iS8FF`yy<253QZu8(m#MO{{U(K3&`dV(7f+Nr;lXryZIsvO~gj2X*i!XcFbQ0 zeC5Dvi#?MyIt_5%k5q|z1vXUz?lLnb2m^*@{s%_FJzQf5#)+VumSDkOJ}@Nw*$C=g z^O-$$a3V2q-84GLz^w!cbf*K?F=ItWB}Ukl`~X4Z1wxX!as@d}swMouIMm{2lD{1o zAX7~xyfxxDvi+Eq1ZHATyIA2RtkZ*#u_6@X>%DMMESMJ&ISHf)oHHq8W2VR%FfMvy z4(Q-x0+$4G%LSX2fH6V>4v~+3*FV`go3!-EKbf<@?rG_Y=;OcsBVphkFvtBF1jMl# z3Iz8**X^rYIDHd0Gcz@I`g;k#w{CL2MBUlT6K3PdpnO&m2+8QU_Y@k~kly&-RqFkt zKzaGRZdz5`$yeHD;3|HhY(KP-XvvYFGoKV1p-(ZbY>vZ7p^xvr?{4m0FW#*il^mxJ zTL>Q4Wq1kEe@|=l4_B_P6Zm z@eSSUm%H=!>T2YRi|l*g(*DiPHGVz@eXREG&I-b&^o_&0cK~vFvTM40wi@!dt3K!2 zul($-Vffue_{LjlYcis~6;pV~&4)8opw#t)rMJc2eH2IaxU<9c zoY_m=GL^5bAXWFWkGtm^hsBL^t-iMofAzg@kxOYMK6Jx9Y zg^#bhfPP15+r3+U@dx*Z(YRy$aCT67NOSUmhi^-#>)L^%Lx1|+xy7Bw8RyDkT)g~| z1T7KQO^v>ONY-jj$lBo2zHb%c_4@nX)fcAeVcu$6d#-Jq*oLriCO2CWz>OD`=B0Py zX`1zskJ{;4H-HmRy|k!iS^3uT?qETu2_?456RCJV>te}yvtx0UCX zlpW9e)#H^>eE-e&V`)RTj*s7#uujiR!<0!>tKVzGU}+rg}L`OLh1fz*?ghd_E-un?Qo_o-&h90|I7c;T%* z<8DKLRJEHaYio;lYO?gH>URIe=U4)mHU>3<>}q0_U*p^_iEq61?z_0 zGue`2n7_K(Rwvf8?L(WJ27#@~l|{GAVw1_Ea`|*Q2K&^q;Kx;Uv(p3?;6?VGQLo-L zmNS)*2H|9<^CUaq5CP(vQ+{bg9cseF<{bA4+|zPLD$ zD2b_@NG&>g{O;vt=c(^*?!^A-BP;3D_aZ5JY3~D%=o{ets&YBokJVS9#FoK0Sm?sothVIV*cZDC)wT6K3ya1u^H* z$0d-cD|@3S7&vsi4IIJ&4zbSLM?4>_1S1TGcqd~tpn)+>w6=5!^B!Y}dZf%P~jUN|a#)9ni(a;JZ$ z0Pi*3FJ7?K2juSOw$R%lR_TLn;KF}s2vlwAP4N%*#(E|9MJWS@m22aX;HLW{5+d#R z!m5qP3B0nXKGEUrxW$Flp*C-ZuG3;NHt9be?rPXJO><7CpA|QopR1bEa~?6dJQ7OS zuIfkFRWca2a%XD?U6>&whl!4Xn=UM9^d$Tr!rlTZj&17}#w~bocXziS!L8BY!QDMr zaCdiicXxMpg1ZwuK# z`43oRYBiAMBlPQU8n2x{GGLn?nt!siH{D~b$0DNWv%LLoTv>`U4Eo&qVAr8j`E87s zKaK&?ed0VH%ulYm08Wi`Srf7x#j+M`5$&6%r?kjwrMHmpi)uGcj~Jb9gsu3&)^}xI zmLTd<{FFYl^T=_%XlHTj!64LXu`L-`HPSUOu5uJ>(1{0iu*Kj;Z#U_FO^_g=UV867 zoNbJ5y$IV6TbH9HjUb3h%D^4eKY%-k&Vf6kfjg?jnjvlf4S}}^(**L8irYoL^WNxR zpMG!TGGPUZS6KXxQvVMB2jxE-{3pu)%mRzO3DPz>_Xil4%#1ZC9+X)V2%?`q5RCmF zT>qx@1MGwz#Rk|67TC<u05*1@>oXWw!Dv%!C8t`@6@oYy4T05(Gf zHhY(bXklL_`Gk0Xa~=6RV4rwjlj6BbGOiuO(_`L?UVy%7><)bBlpalGYKlfTaR=d6 zx9-t?=$E9orY|0|ds);}*~E51v49PHxW%UK+u`#?(EfhLXz#C&;kc3lE@Pe>&Rot< z7d$NeY6+^q6ABw(>Az{8gxIDs~+q)mXtYvhf^JTPc{61!=gl=pz49%=0 zfZu5maN0dZAPAq|T-nzKd}1=(oVdenEPIIxGc12?Vd&VtyN>#PJaV}3H1@c+a{Fvn zGofXVAAA#_)N;XKI3Ag`(R2WgUsqEJCcRcu zBMmO1TraK&XJ59S=_&<6i=ZJ0fAF56|NMy=B)j9rwT?B%jeQty$e)#g1~BB$%rJC6 zofn4FbuR5WGli%lg*bSAG65Nu%Yt_B^;jm3cE2*j@;4%4^r_cDG|R%6wPw%%8WHXM z8^Wx}Cc4n4NEJa&j+E~cv5U5(nF-P94}_I37f7sIe5HXm5~S(k--GH*_|qM#9r-x< zL+9|$T=3?=7OJ31t5AwPH+^_m2#eP&EXs%oRQ+7aQTlf~{g!_s2X_cPRl)3hpN&w3 zd25xr5rOQ7$y6qF$wldj>m+rtHlh@+UD)nYMPP+W93{%1w(ohP@iMnNTKiltpv{3N zQ_Aq%yz-Ni5s%&)$>x5ZEhX~HRj1sL%T|l0`(yK3rhZI;U7xUZVr&f`g>?>rSW3m- z;RN@g%1TA%)XgMj1LQNshZDVeId1umF~TNpdDheF?w#w)Mrm88U=&PoCd_L?=Sif) z;M1>qoOEZ6;{~Pm?)dgL73>)nlh%e#FiOa*fKSGF_TyZi24#Mu2nqQ&-@(|8pzMGV zFTf}`jzv}}F+<H_E;~H z#M3^e36pN)EIlcUtKh@I@JyqwHmEj#&5_FJ4qruz)M9xYJ|v1ee&=3MQKHmz8}JtqTlf z{DAAg>Xx0L1kU#97a}XM#Zqjk4T<-4j;)Ee+ze?KPKYQAQ+1xM#TxsR((Z3?e&J6d<}WA)zrFzRG9sng?veRQhL>2r(9F#bOJ$;3%+mR>$7 zXZK?H8d2E?FoJusM2X=lo^j`m_cMnRJSz;>>B%#fIEQ@`$tgn?sTyZnMxa+p8>@@I zewcQ*oN~{FzP$o6R0zMa?YLSi7xyIY=(dj59zWqi915?>AYp2M);i#m|q!0KLjwTChpS1PX&?=7=iuMUAQhyW?uv-N# z-4?HEM7?^r7!~9S%VDZ5WaK5b)tQeHR+)N^@+xg+B!0|DCAibPm?@?9I++)w#eV{MO>c#%=p*_rvFywbR;pq)}kf zQYk?dF=)ls;jUoUa=7(caR}d~Jqb`NtnFHI8sS1XChel+so8R$A)(AUL4M!(6(6!j zxc=OYtP1I?7TEWyM^zYmS7jEV@6G;PAa)tzv2JS!Te1Z3_Zs%)H$!LFyVS3D$-l`% zh5H&lMCZkt(Fh=~UG4O23)}~>w03))M_emp_j%aKTRe5}uBVU5_nsZ!xVI2Iy0>WG zfyHr;Jt6m}F0t?*yfTs01rzaz-5p`YofAl zT{oHV5oTs6id1P*VwhmbPec@Z-pRM%$bm*i$RdOF1lUUUhBCi>;N9c!s_`!#ccLFt zBNBt=BuR?Wu4;c4Lt(nrI%^pz*C2IZtCicc#H+^WJ&F$q4@8AlZGxROrPWql$sHQ1 z!UnQtMJN`BP?6(TE#oG^fsDU4r<0$dBruY<+#(J@?kEH20g`!D(WWV;jcjsMiX1eb zZs+G7j;VQ#qFJemn1$nhH=ntx zcSK{9wNF z-6O+_W!A?NosFEE9@DJ^N7L81lcruz3AoGDjZS)Fk>&LtEi{kv%AO2WCh4=S0CZOg z7NaZ}@j)va!_ihX_JlEk!$UWvanEs#e429!F&0Jzul5YO)TU#Gq7~15H_qeOtIHon z$1(M$UnP?Yi;zUmN8Q=dC~8VK#lVEjpPn6p0{7;qq0-KG?KNF6Poe=egA>?>Yv~?4 zX{18@6q?Ew{!9C%W(Vno3Kakwng)3uh;(zZ>eEb^bK+9A7Q*DsFP88B)K` zG%1{~egfP2@Zgk+;r%=~_~JYExFrjgIUcFf*o}vG|g1srJxE$Ado;$tKw_XUKk z{P^HRrydszJ8<;_X^13$-mS~n4iTZtlCi==!|K~_2;h$i5r<`Bd)c_d^d8SvJRAy{ zEJAMz1z~L@x7&8uc=R}BZ85r@WlXC;b{|4sLO(YIb@hQI^G$yOrR$g9Y@UgN1;=`AT)X%wDX#@xpXhC? z#gfTDce(A_vW(H#_r1-wbNy4xE%jA37akF+qHx>dg786sU?f~|#j zPa`wTQsGiLk7FNKC|r5#@WR%b8Xr8wg{+z9$3S}$O zmGOiBRYaKWv_tsQ*nDyTRWb z9KJC^sG0NSV8IhDfRv)j*+G1JLyZT>ErN1u!;m$~dA0+4V8fBm;3w2lHsEb7ZKV5` zF+jbmxQ#RYysyK@T^Lc_YW|PZL|dCbQhyaLwey7cNwVo(n=^hxyND?06WrPehgeIq zCnq*?Q+_5qG-kFN0dM#c;_7>!zfhtf&^gy7r!yOq(J$ zRLNfp?5zm|JAGaQ3a`yB57(}3uF{Pe?i@i|Yrf4%H()<%&6pCJrZRaEqSBh8mX0sV zD#+cIgw|gBDQxU3 z1PM>{$vLU`QYb#u@^H&a#@Ko`FZ{#F#X{E20=RZcX`olrqE|Cc zPO_48+og|sq6G7+i-n4tMKXBcq)%f9J4l|9Zn2w1!pcV7299XyHy4YQF&w#mhAWa< zY_kocB7)lCK23|;wg$e9>l7Ox#qEj_6SbunfsSqX^Z77_c6Qnh_Hj_*L&4Pz9Pb$x zCgqNX(Y-r$n+OtzPwfq7MiGYzm|32Ih80N}ZW5tLHWiXK72ZuABsxHfE*96YyH5Fj zHeB0$cex*ICZuc-9J;5uryHA~bnD^ascp`Gt}YlPBsp_cU8Ea*jO*qW=6Ow=yCTG4 zR6d-Zd$z$z4U#s?lx~UOJbhuXa{pDW@sf(T@%wkufEULqp)oA->|he?*YtChu(OdP zN4igM@!G@B`+e3~+<4^#ssqGkYkDV&o<}(=u(|4C=;G8l_i@UaIqbJqJGrBf2Nhxo z1ChrfrB};W!^=3y8rS z%&9HVu~wu`3aSCyvkHU(vHvYp$t$vT6$n%N^yxFipg+t*SjX77ZOo$4L6gL9 z)H=<4*Air(X3(Aizd4Z45HKjqIk2`_<9Nihw|v=Ws{ZW6=t3 z7zcw8H4*N$3PX@?Aosu!gMAc+&}K@Tk~UX~g7fqhp<(t}EIUYId>3`ENc_!VvltjtrU_kYcY5 z2*kdTGJ2iJKA)7ZSepZ|!;yUkqTqRSe`?H@AcK16U}Nc@nBj?Ob2YzrnCJi8VE}xR zhoNh`yZdY4yl?W_GcYUQ(suaPdUQeJLkj_2n*fiDm;LCe8~sYVW8U>ls^t07oCs;x zqZb_vHHsSthcKEJ7xHmbGw%1j;3z>a$Uy)o4d2f`pFZ!b9u&e?TEyQ&1AR$Ts}q{N zK{tu3?sanZJZ$atY@N+)9qkgMK>^Y*#W!1*IzBvvKXp<_anVtkzQhlOpFM}qQx7+h zgv{Y4DATtjwLB8N3~3$I4uzxl$Sl)n91DMrD99M8IOxyPzTb5`n5ug2DdU_iBZRK& zY0tMWfa=m7Ngr3KGL+XZQ>~@kUmw%(_dM0wNplw#`~uCE?v>zc+A-e`AWfv=2; zMu_Q|vl*NlT05Iq^B>x59U^Si!xJU{pnXr};d$eRqV4sgFEV*4>qP=dyNg--jgJ6& zH&$O6un$Gva7>#Lw{o2TFJ<{4b)VnvsUCLuw0+09b2lazGKiUik(hFTiDPiI>cNEL zVp+ARU}Apx#NF;WKCv+_>+(|J{-TiXQVtmLP5J~^wb`!izm#=fO?z->^2yodWzglt zhc`=3>O{IZ0XKfWu*wi%Jf_M*RkKaI5_kP%MBjTFw6qz##3(?HqhqL{W}K>H8lGb_ zM+76LdPpU`spV7%Rh89u`j@b!&CaEtz%!Ue{jyek`z~z>$aIe2zQ6soTpF=z6RXM# zN6uI%gzo%{wY*|lXDoLLz0OE>e_)lN+~{di156d6wil^(*K@q7M~sLHm@4ut8E)foHlcmPfxvb<}K24m8y1WdreEzKcR&avc?ittqdS%ED^XVRn zy>u-*pW{2ZgCgNw30C}LzT80O+P9ZjjO{xhUjJ!Q7HR||3q2j{1S8wvbkpaUUJoZ3 zmlvRG$!Q%aX_rr{zn&_pT&;Q=^}G~}!a81KXFH6v1w=u0TwYejOyM2?em%{Ge%G{| zR3)-HBk9WD5z+lv_IZ@gM$kbM>;E5mP7wD$X!rb6kBt|$G-)Hk=_#4U(cO*FRi4B~ z(%sJX-Usf-zFGuoIaTv-ij&S;LcM-ucSJ2$?!x@)(o~?mA3#dgD-^&hP=XJMJbv#k zdQf}E`?c+>rjtrYW2R%Qp?}1bT$BJ+jbQM^2T{h?cN3V5-S8^<&6}S8MzeT&mNNfA ztFX&Vwvp+zWpQl2CmR&Yv|fAL;iZ8~B|)bCdnO1PRkolk{>M_=V|kTkf33t0czf(U zmSLk8t?dCU-6$#8&rEfgg~;PX$tx|-P9TaI(YCjdY$B`<{p7*McOc*?fu>MsSmdd8 zof=~5L>Rg1_bkE2$P+}VcMbuV2Hu}a`(bCswUa-y`I#CYUN3=4IDPJ&;hjaE7)MDW zN?iblH^j-sme-9p9aPm>$tkabpP_Td7GZtIcxvelW9}wEuMIFYW|SdL6=JJ%csvEk z=ONxc!Z!;xJ_wdZo;U%8VnLXJr(%*~+ohGekWZuxG6jmr{e$thh!a6!ws#RgR{y(* zh<=ee=??9`1TbgA&cM^Q6Bw`Nv78`JoCQ$7({g6;!uM9DB*W_1G_ikhKY1IlP&Xict&~Zk zWmsQzsoVHD%U$EHR^chzcKh-&wj+>sj#Ou8Cuw7r!t}Oc-7uUP4j7ufkvk3;*Wo|A zPwDG9v0DhuDn>Bw$E6q6Q?#!Mtl`8DDmSsk+3-VmUnx~kM$@@o6&AkW78HaBlO)t2 zDsz3R+G@flq;@}BT5x-N-H4d@CerXJ8Z2v{2GVPL_A$o2zfs+jEuCoZ|~wo1WD zZaq7egk+dxO(@wu2Q(~r7oLrlWI|4${$fYgM}c-|%;4IMsM--x`2g3l4=o4OjH2kO z@*BMYg$f&=(JR(!caY_^C+~$^g7zLF$GQiuf^RFGR4`aH>{qdrzHU0-?t=;$Bchh zaZSU5|Cb6^P=8}>%iumq<>%MyXL)DEzjY{O9|Co}I{Zt=>&RLy3(5aN!YNlh-D}|P zNj_0g`}-d&J|@3gaj*CD+cxU0tWV=4ufjruFXBjTt~;QR&WNE%schq zn?8AhI9Ei!(50DAr;eL*ONG~4S+zj4bxp4SMAI2xd12qI0dPnhe2F#X$;9Ea0W~)V z=)JgZVOL7|St=NI_ahrv;T$_FzTvV=S%^mvsJvh~1d6W=N1p{vBvx?@%@ON$JO$C{Kn8{t*;u01IkXN>*xq+E);u3C zK(H@lTG2<0t|bROzV;L~VmVqU-$x=3QtbuHsm=%|VZJ{3q`(g`C-ADZoPEWEmwut1 z2_D&ki)cPpt?%X<-e}S!m>tMKJ4hq zt@Mj*0{`Z!U^0|bUI$(SrH>#PL1oE2SB=CM5M3@G$Mca7}Cn}4y&p^|J6;;2apJFLCd`Z;GqoV7_0r)3| zvg_|tR%9o9#kA-Tgx5#t$D!{&87fYrUo1vL8dPS)cMN6^*KR7@u>ZeganLMYJHLKX zQT36kBBFj}v;LZPoSwUlFzaRc<zf}JG*gLgWIJ<7lG5J9NI%AY1-i<0;MvQf ze+Pf*C#1&)afh!1y`>Bl9N+0~*F1()65<_U)$>|KB8VT)Vpm*5J)VsNE9~-O`4NBZ zrNYm8rN>#UWj0N}f>T!uR;Ff)b4aLvM5||V$A+cHdr$W2mC?AFm02i-5r7$3v@p55 z;%#(yE|E}t159XfSLR0veJBA#G6lUz9||1Fk0!fBh>w)X2qFr*q$NrNC!vO}r4kA; z@XE~Y*s}OlE_mV6_JlkOVcE)G;n5uw6FQaQN8`;EYA8j~Vd>x$Mb*QyL!Zhdy=jau zg~ia(53q`JW0aZ0O?FeJKJ{2;hrVCGXjGPjN0dZE-KerdSH>iY^|vMu<6_69t?x*v zgwYemN90Ax{ZN$^Ml#X9kX2Jjpc~Qq(ws~gA(STfAYp$|PBzF66;m8=#R{zB{smFz zLj$}LIF+hpM0}D%r>?E>qcLX8qvpbV&(ylkzA*YKLTV|GOD5ziF;giiNeuiGH6Qk$ zs6>c?_*9eKSi^x6Slc}Aj?3pXGy_$3h9!goawot;0H=S%sdNK#QK zTFQ|idR@}Yo=qB*pWO(_kt&cfa4vXU(#Qo!IWAZHzbKP{{gX0R@|3Zq_CTsGhrDP+ z6qy`4H@`{FL#WX#535L|z5zFbIAMA!24(%T)mXLa>mqqEjn}SXyK=p&5bEdxAC?KU z{ka6axqZ089^}j(p@|Jb(aD}r#3#<>fSvqR1x-O~3~Mq4mF|?>Fg=WE9Er6xo&3w@ z08C^w&OwXH*Bxr_qVJdENN-p6psM)N!%iv)V^UxjAJ4K9(6nYiK#6b(1*8>eXpdN) zQ;zXQ#~qQ)iRR-e=OZZlvf13@OO;7yTb1pNeC~~EsXwqWCh@B;dz*F|@`EE=@x;7L zN~}6dsa6a+Tz;J#RJgxbOunn~pQ-y{vk{8Q4Zk1qtHX_$Lhw{E#R~FAlB6N+bi3Au zh8}pXnfW8UVDGVripEFsbQjbBh2eFbXj`Ift-uZ2Av{#XXfW8KpIdglMDP!f-jJw~ zpImz+$?>dN7#O!NZ@z5EmH7cUOrYf}YhrDH6*r2@Y6k+v8 zcvM8P^lL-v_lew8rfo4q_9U*)hC*B63j<$6}%(TS-mQk33ri->cE3uJG`w)~AJ|@le?2$!; z3Ap(yEJ=y5dJNj1uskWdB|j7BXgqzGCE^v)O~01fmkR!72~dPgO)3kcu@tO_r^y19 z;L0d=Gtc$^C|;wAT44D9^_kbD*A%B#7)^#>*T>&LZrw}~HYn}yxFE?BQTm7Ec#(Kq zXeBm%sU;u{zgS(K1ap*q%!wtjjC%As9D(@cP3d<_ zSX5_~jfkX-8)@EQ3}3YJ!#L@)_x5e%Q8ekat*7|yQ!NPzVlWrcj(4zd6A5At?jU)| zGKvETukd(}p!t{L)r_pVU>>5A>90v}4j6Vp7!=B0JBUxe5;J?zVxXm&LYKj*0-Rx{ z28Hmh+t!2mL6(B~lbO5bcab6mpSKnJv9F-}36Z_B*?b@TK(B(R5Z9w$i1Evc`F4=D zOo9dKWhxK+X1Wc2Zz2jrmCgn;nV@)er#F~PlDv99_#tqKK7(FC&oPHS0HeIFEnivk z86^EQY*`N$00t8HD-d5u;^Y;yq1I<$+aTV4!d4uw%RH)a)vsKP^N+K{!2;e{#IL## zEvZmKO!_7PX>hIjDL5qR~h+cJh#8A9I3Z@A^f9SIvWYFrjZv*~c ziQ>g%;8`+6$mjDQ%)#aT{>k^&(*+O0SV3{7y;{Ye20uqUfIndGAkoK_0dIpyg?hO@ z^OZ`G_ND{rJ1k~$|B1)3h4$`+%n;QMQa0KTV!ZwyCOli9Xa6CE)aRiO<}b$tpL5Et zpea)a9^+jO19;xPK>XzxmQZE8E=N|K00aKjO)*Ubj046M^tihF0o^;XWpAZ-Nlf^8 zK-r2%Rc}mi;wZfSga6dx;q%}Z^=~CJ55mAnFUf4KsY{?>0paH!7<=@n_aR)@cTa*Z z1t@y&y}@lU^)BZM8rK%s8#_pa20%ITa4*P+2X(P>E^5}CJ4oH^J4nXkj6lHVWzR>m zhSfSh#N(B=KC^wUK9^|jbwE0?T;iUoYNR7JMw_=wdYX}6pI3l-qt0v16hfhKLNj^n zB#%x*3OxHcMPcl%n`LoJ3}m+{5sN=51r(kIeqAW@6v6MydKazPXpO{6qv6{sd{HaY zIwUwyP&BL`iXY4owwdnj6|x0=`5}vZzJT@>>r{6$nPZ8mcRk!HZd4Bn@OMRjbE4m( z>QiX!SGeC9VbWDC4=jUM#jdQSvn^i_!k>!xe(#=Sn~1%;Y-X}@Cw>*50ReGgKee{c zQ4JE*A`K3kw36wg?3juVC|dEE1D;YGMXvl<2z-rmXNEx^0j%l9Tod1yL%t7P;WZhG zde5yf7P+3Zbe>-MfdU-9WgGxuir!(0{(|`mD0);J!+-yrX8M5{GDIG=!$!->wm%RW z8{k0btj~BIgxJH}6 zYx05Qn)r$%!8LIYpIqqyfX_;heUeQuMI0 zP6{O8Dt11gUcCrFwKt(Jv*vMQRN>&r>@cg;q}>C%fLm3bFRmDQ=iEZVX|G`bm+ec_ zr?LEUOE~v)l7M#+4i7*)Kg}q1U+vwC#^+n$0W~YZp8KVC-`~*6Wh`%iQeCKF)C!)1 zGov($PTGYUu|iMS1Zq=tb9)LJJ1>RROy(RPuAR9azk6anVj%Ui+4GP4Z2^Gx{%;W^ zG6r`T531DHT@NC-0?!T^YQ|sB`}TI%3`}no9#+pPXreJEqxzzD{)C9}WF1jh*q1$K;F|Ot%m-M7m8x zb*$N5elPyDT>V+7gY1-Hp~?)oNez%->jkpp@k5j;)|I@pao|N-Y%L06zaM@-Kfhfo z#s0H`5#p%ic5fy%B}v5?73F(KN?=It<0N}jxm+fiG830J*w5TP_F(%W@HWOYl)E*o z-<&Fm8n?Tncz~0oTuM@zXH=>|ht7 zBLt|>5!tjjKAhjcyUJavD0mPfww|Xo*nE4VG43C4wlUa!Ihdd$1QG2kEE%mpM4H5y zvZkQ*nA60$`)Y+qVRm$}Y76idNw?48ST`!EO3Ks=)8*rr{OuK+r@8j?T((3+bL@j6Uc4g0AMmFS-=FcRW`&g_f)+ZlUQ=p4*yhn!lh zM1)aEym1rOM*ChjGAc?dYD$3$=ifLjd$u91BC)dRa3TIGBtB#2k|jz8%OVMFJdW^J zf`u`>4l8M&SidiMSZ97ycL~JX@083{^#D2VG(MKUS&V5EV%oB!aTTRdZ1UYGCi@aF zrSJ%N0Nx^L$!Jz4r*-mV_k4)@<)ifqt*Doi9soZlOxL4R)Wg&SGvuh&;G zAsKe$_gk2;@iC2xb4@@wxJ7!)Du`qv!ZBEaTgR1fZA&`Bk$EmHJ}IrM8#OtF>^x% zC#gP;m~CU*@7+>3;0{v{m&7VWE8*|WN9Ee~cjPP!0`k=P;8(y9Z~hQ)-KyJ*CxPYr zn*hZ=6gN8dh#gyoJD8}P3|Uct$#BeE+N>~95mAwpm=M6p|8Cb-F;+6DAxBLJAg-qs zE8_hqF%di0s@$e-FBM~gxmRyXJZwgIlj)lt+JbHHjmaRA>}Jg552?}{B=20b*u8SzFf|pE-Oy&cQ3*sd+x^X{X`f}a} za7s~5S7&fT#Xa)ro6JCcV{86cVHEZLOJP1%gy))s&e;i~KQknCj4R#5?EI*pVdZ0; z@kTLdD@olXKn&6Q08uHE*6IvVu{>SW@D@Tmy4h$zeWEDf)6%z<@U)bQvMIXS2p|qg zp9@E3O&5XD1Ujx-{-8LCZj6&zY%N_Zi7cv`;r8e1;m&G_<9M{jy5Z@lHSZUF+S8sM z5`<$B3-!I_EFK0q9UsxgS=CncJwEt8>^H3%A5q{m2pEQX(iGJg3H3F$k0|hH4m(2# zi=V*P;|)unI`oTG?NUcV#4wYf)EFZX2Tp_6DZw+v)!nCvHqHQ%43VMxVy8^h90s5; zO0HsH)C|Awt?Z0Yu<_U=Dbb*6_9K!xbWjhBWM@KVjlRxXM8dTQpe{i97 zZWie_ZyUol+R5xvACpyY$WmAW9})mk`yIsUmNOPUM{bjJHFPA=IQjex{rYjTtJ9%> zNRBZb!8sctL7yLv(RT(!gqoIy<7Q^5$nsf_jVUoWl!;oGpT`^fd+Y1@E zcqwBr+_D2Go@~=08Ryy}qEpe}4}`~!T_VDtD98!V=J16MA+gdFc+P(Q%n zLWXm@Axc9*WSq}MP~fHPlSjxxS}3yq771OG+Fzf{%?=o&pUJP!b`X`iZH(?UA8FSn ze@k@sp<7t)U+j&>=QCecSQeO_UBuB4M@U#N;fQ{@5=5+R6qneDgyq5TH>j~G?utck z1~ZqP>Wa#dLtVWG5QQjJm_f=_jV6SYH}cyj_OxW;DFi1|!nio014C z^7DlcK23Sd@@2Ri@_H#Mb^66`iz9QQ5WfcR2Wbx* zpm&cf7GlKF4i1*lPu;^EE~GN{c;On2B_j6h#1M*;bNjkaGA+xbqZuKVj6c9IY|lK^ zspFWZSE=bYL4yEyDuRne4N?1aJiLlEFCbkkC(EYf(gn1caSLnYwAXLf?gJJ8Ys^;b z6LS4^C{BaFlY=pBE@#IkKsYOY$Gq9=?hA>W;9H4Ng@$8Qi23pEmtL+5x{_+7c=wi) zur*ECHCu6c`qC-h^;_VoU;YM(E@OB?iN19)%>D<9i(u&fWnAGAj|U{|O#x>|6P|D7 z0q6>)Mjkb=hr(iE)x`s;NQ$lc3T?c%wZmhPw}sjq=SDS2 z1083xV+`)kYqGy&tqOET)}c7gjWwX&HoR~q7`7yH z-q+i+K&k9xpUoQ*{tQ|-7^H&Xg^9pOJ%fusU(MGpg?vK%930V4qF=&ND|v_vd{puX zc6c@({<0e03@(cP38l5aK*l;C*N&uE+YG((xsr-tHsY#@iYrp8mvyub6nD|}LP#8i zeqwYcs&Ors{s{U|0ZgHN=*VUY#>gw>`jyZy{#Jr3kdL6ws$S8qoo;dXC>~qA1Ax(S z#Li~sKg*#<=P7R*F}8XYVDsoL4xiE7{n5z|0Rg&z7{lWAaMkJ>@}G|V=FWC70G8?f z4F>{(`Y*?ffmNxM_4F>x|C&H0~!j=U|{_iBCb2gN4#o` z)tGa^mf7Evyp~Z+=hc#Jw^q?^=d|NwpuRBJj=~b)#N2OFkNR)7FZdcw-{@*7L}+N5 ze|F>8()EHf=X>n&5w6fEu0;HI`||d45Yc%0oOG+3`Q6yT9rfsYn!KI zGl7gH(zlE`Vqw(EEqGOVSdUIrFrG!zSm9uZY2O0(=p2g~Mi`%Vi(Ro!4&vkY9Fm~oRuRqQmbN4V%+b8c+GiibxuRob2QyS0qctuqIX zkGEIn`jAeqZi0*(Iqv6T&0IKXFk2Zv&Sni5BK1XY#OOI0^dbmOgDe?Ez`j8s ze`;cGY$(1*H-RwG1piz5ES=V;2C-H_qQE8~WddCJ5jB%po=l=JQNvG$ePKwha zH`z+D((hOQRi!vyh@^QCSRlQP1_T8CUx%clsgact7&ld|3P@9CK>P0jysT7Eg$vP3v?Yh17)~oyA&KmowD+E8B&Ay~s<2NE6 z>0nW>gikHz&Fm{k~fv;wDdFc61Vf*8WiEps}&2H4exzKl2t z+EgS}F872-rHApNc4@5TpnR*57koD+!Ju9+2zz46A1d6>byCdYlB6+cB6PVj(|3IW z84NkY&FSVd@kGrc$ zQ$1zkjM|@`_7`@Cst8`RAi7{*>`-41elxy$K2blMK7O;w^k@JXj_cm^dOB;;>C*B> zmh3;R%6hrlSvj@gf4d2y6m3R;3X)s{aS!(6JpwtCm!r|CC&#HJ&jH8WA#>~_bT|@* zWbnQ7FYCFGA@&jVMx4dB%^K0y3~pw2Ev9ZbtqqYFN(^k?cf-*SQ=H8yUj}K4$C6x? zeZB%~Stf&B_Ob1fFSn-gcZ(A|z+qU+KP8b(up-HWi;RhakauuI${~3M4`+X~)JszU zh=cKUXM@|-5JS6AjUS~g$3_F2@qXnYZGC;+~YnFQ??uiusUfg#PDW<9pSPRP(Irld$Xx!XM;dNq2M z%rNf4>FW{XfScZ?tS|qLJBt$0a$&9-f9YYhTViCu>rQZMRE%2f=k-2=CA@HR<6bxi zbcK#UnGu-We&HC!&U9m z2~b+6g@)9Vsyz#w8}o{pN|L63)#p~UQ~l`mwJBZ?UF5`Y-0|~kY}hE~pwsQkwu;!p z7x%maYavvvK#8r{Y_#l|oiRUy9QqYw{oBbQw+Ot#QX|pgKE3keEL3=y?C^RpmsUa} z!xchdDaXkud0E33vjvTLjf7uc!j49ew@ukTH!_L2>eDnhu^G^`Ig%i+I%R+}k$r3g zFK{|h;NeLg16Ox??Kbo&nPU0EczFPp==sy8*kSv#1Q_Nd9DufKL&R|q&xt*ZldadW>!UMa^jHfYOj z<_nD-vZesNmE6vFmVCaOOw$)!NYRTff&*|Wt!(~1S2)%*BHFx8o+_lH$Z=j|oiEnWlAu^{|Jt-H&+sRq4Q>b|o`-+@-Y%hJ zQ0R%G4e00}lVFd2G)m?HMIe-d<(z>5NbDTy^F<4XWcK@6sYvl5m9Q>|!$i5M+lQMV zn)PoAk$Ptc3zOvM>fO(kob4MPO4Ke-Gh0}3FJcF63u3dXCK*JkJErWH&=@0bk}>L1 zLZy&K8d8zL6J&_$GX^&5w8$mZ&wynmsvgXd8(jK(&>$vVnwi|jy6_mR+fxrjz(60zV<4@Yv6jB z&_I59ijKsN6!HY4%_$;NqU69;Nyd_0}%eYIS{--4mb@Ef=;hQHdQhaS9fZ5fh3j#$D|n#ypt|5o>>G;G9F4KP1PhT7_oBd#|sH8P>fQM*S4 zTls8DToygm7+mnNRa#=BGgk>5n`Hz4?U#d<7gAZX5Jl8XabanK_mS=vdXn~D*7WV$cOM2Tbm+-eL4nNGDA`XUBqpaN_b+VH+q)&SOl;eHFl}(e)z2x-ouPE^=+sITtRoqHEf|h2iVIJQ^>C> zvR`CM+EfHymR`XA*`W<>GP2u1!TLbqSpN|IE?M5*#@69auVzHoSo<-diGJ(sz1|sN z&W12W3zh((wpft*itpl0Zb`Z-5>fio&OHJ)D)&MvHU@&<5Zgmf$!>KY_%@i`*=mbMp&xD% zNgn=dlomZ56k-9KlL-N4cmE!9SUXwi8`%SAW!|&93AJ_W9WJbn%_6}VF|CG>I5r5j z`dmSkuMuLT4L2YZSk)(4!^});7t-ej6SUz=MGN{gD5g)xaxnDg1&yWw#mwvGu zh#_bW92b6?MVrEO2h!t$qfGr0FQaYyYkzG}~EyktU^7LU|@YGBqGf6GucWQ$o!X@E7r5?ZM& zJMWo=18(6dO(amkeNQ~R6GVL2kf(xKzTtOPdH`Yg0l7{SH9+|ry}+$W3ivXGqQ zlIMYP9Bp#mo0GRG-tO#pu#D7RDSlKVv{fb$laP_7p>TGRur^C{wA|kx?kDoO(Z8(& zRs|q8Da1L}BF{rQRJ2MzJ|n7b&m1q#IuG#K=;k6KM~KT=3_@xle~D3SFUpcQ)o!3{ zmMHM9d2TJ};QS^xRUfvj-B9$);#tZhm^bz9H5VhUf=##g(YAN7OuFTzO=F0I(d1m^~STv6f`jpeu(0 zv)ur@Zxp+02j}Bya=9xWKO*dY%1s+!eA=Agxo-H%`5UGaisJvYb?)&@?r|J{+%`-@ z8xl#0jw08JokEw>sU%8HMQmtIvm~Z$Lu=*|iMb~cM|C1woeqxckxL1=ln8C2xo&c+ zm9vwbC#Q})FV7!)Ui-bC&--_Iy}rNadwIQ{AGUI+@EmODkfmV6E+b@npJw?~kqhA; zc{cI@J2KAwhILYPXtVg08aDW7NZ+bZ%y9nI^O7or!yY9qt$rk2%E{xz$6)s4Hvz}iRPU(XW+7z5MDL!6REN5%-!v>H>fUxMP6_ch7HAVB`hbr=RC((k7xm zo-qE4uRqEKZBtI$YIx?E$`8h9cul!^b)NCgjnZ3A_uNk2l4s007r8IV0hM9kdErIs z!5gflx zs>~T~V5>E4*e~}JjlmeXaNWm5+p9sKEWdA*R~H)ltC`AW&Q{n2`ECwX$_rV@U7u?0 zT~Ry!yNh0SbjZbH#ZKareA}N^5@Qn_<#17y`b1ZkR$lK|!EwemROu6wUSBU!C(a$8 zf=L@E$s7AWwiI&{)o8G{tn6t8k>cjn$Zb0x#EB5IE3kP+>e(C9GV;$%Sryv&-dY)j zI$GAas^KAvgWA=yVKag4ET4>d`RO(9zA$>Q`U6}hMU8mCOJ&`yJ@uQ!#Kw-&lc`rs z4&AU%rG3^HrB@kiJBii~?J15?C7d}B*rwmJ|D_e5p>i*-p8qrTMExHn774B4^;ZzG z@;g@9a8;O1IO+At3^_BUwbY6?QGl!Ldqtlqiwkx#J+LloGAOg_C{QR68q3m zE3FsIz3OI3Ar-?3isotPgq^0WS-y>VJo?w7gl5fj!Cu#FcF=j)k(wbj8$cu2y3z&1K@Tw$hwplNrJvE(OkpsD>~1EB>nG0&o~7=oSPo0-l6q|4NDa@H9wqqxf94Mz| zNY1KZ`LapdN3zVG@fBqc#Mql(W~_^LU=Uz!6E~^5vE&VXTMcIHY79(d)5VCa<8V~* zpensfpMLL}f*UgHvYvkEHx%2A7bkpwY7u~_F-g}fMmm9#9{Tq+di^6oxXn4~2 z@2}3PbtAX1aakj81~Ogp+EKV$5*D6jp8_`)2TRNSu zJLic%c6AaH+L+K`i59L0@dB`c(k zbM-Q#S{#}=sNSf&Q>WszQ?{R;PR=a9-BLm86f$aP_v(uipPSPtK@Q^s`k$y=okwmH zGn{1pUgyB3vCb%+Fn)WHK!+Cc_V%5uu%YhZtcy8;O`T~TVffwxPUUQ8?~go6iSIBw z-i9~xlou+t{VZ&%#eUGXrr!G)+&6l*B}B~q_?d9g>SF%@=P&oaKgZija)ZpOmnGZy zxWAH()Mx5ZT{UXAIA3B-z6}VfjZq(UFNln9bxTV0?7mN-eN0f8Z3)yHtJ`(=8j2ut zz&P4FZzwOS>5(|&Wg_&)FvwADKPx=~bJl-wKazZ3`8ET#(&y%-C4VFq(V`k#CwnPr zw9J?ExI8d(ZR@eZ!?#!|poiKB=G?x79p5fG*aiS@yTD{H-j9quLh;83x_|M`pa6=2 zz1=79Q688_MtoC)ce>PL5b>XnKkwQ@h0&1+=hNUL?VwO~k#HDn`TyPHeKue|6AhKW z@9otPfO3*70H`dIUj$qJmwWpAFEwgr#OvGY@&Ewe1MNH=T!{I~0f-1X1I~RZxgT9? zxjEQ*6WEpZqRzR6O6VFu zKPdT4PnVLiTO@{jUJ}ZI)=3vQ0YTq5-xX1ya%kaYL5`z*l|#xfPy)0Nu|P 0 && maxTimeExclusive != Integer.MAX_VALUE) { - return "SinceFilter:" + this.minTimeInclusive + ",UntilFilter:" + maxTimeExclusive; - } else if (minTimeInclusive > 0) { - return "SinceFilter:" + this.minTimeInclusive; - } else { - return "UntilFilter:" + this.maxTimeExclusive; - } - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) - throws IOException { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader indexReader = context.reader(); - if (!(indexReader instanceof EarlybirdIndexSegmentAtomicReader)) { - return new AllDocsIterator(indexReader); - } - - EarlybirdIndexSegmentAtomicReader reader = (EarlybirdIndexSegmentAtomicReader) indexReader; - TimeMapper timeMapper = reader.getSegmentData().getTimeMapper(); - int smallestDocID = timeMapper.findFirstDocId(maxTimeExclusive, reader.getSmallestDocID()); - int largestDoc = timeMapper.findFirstDocId(minTimeInclusive, reader.getSmallestDocID()); - int smallestDoc = smallestDocID > 0 ? smallestDocID - 1 : 0; - return new SinceUntilDocIdSetIterator( - reader, - timeMapper, - smallestDoc, - largestDoc, - minTimeInclusive, - maxTimeExclusive); - } - }; - } - - // Returns true if this TimeMapper is at least partially covered by these time filters. - public static boolean sinceUntilTimesInRange( - TimeMapper timeMapper, int sinceTime, int untilTime) { - return (sinceTime == NO_FILTER || sinceTime <= timeMapper.getLastTime()) - && (untilTime == NO_FILTER || untilTime >= timeMapper.getFirstTime()); - } - - private static final class SinceUntilDocIdSetIterator extends RangeFilterDISI { - private final TimeMapper timeMapper; - private final int minTimeInclusive; - private final int maxTimeExclusive; - - public SinceUntilDocIdSetIterator(EarlybirdIndexSegmentAtomicReader reader, - TimeMapper timeMapper, - int smallestDocID, - int largestDocID, - int minTimeInclusive, - int maxExclusive) throws IOException { - super(reader, smallestDocID, largestDocID); - this.timeMapper = timeMapper; - this.minTimeInclusive = minTimeInclusive; - this.maxTimeExclusive = maxExclusive; - } - - @Override - protected boolean shouldReturnDoc() { - final int docTime = timeMapper.getTime(docID()); - return docTime >= minTimeInclusive && docTime < maxTimeExclusive; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/TermQueryWithSafeToString.docx b/src/java/com/twitter/search/earlybird/search/queries/TermQueryWithSafeToString.docx new file mode 100644 index 0000000000000000000000000000000000000000..64fa6bc76d7ee8e201da095bba05ee486bb218b3 GIT binary patch literal 37100 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 0) { - deadlineMillisFromEpoch = terminationTracker.getClientStartTimeMillis() + timeoutOverride; - } else { - deadlineMillisFromEpoch = terminationTracker.getTimeoutEndTimeWithReservation(); - } - } - } - - @VisibleForTesting - protected TimedDocIdSetIterator(DocIdSetIterator innerIterator, - final long deadline, - @Nullable SearchCounter timeoutCountStat, - Clock clock) { - this.clock = clock; - this.innerIterator = innerIterator; - this.timeoutCountStat = timeoutCountStat; - this.terminationTracker = null; - - this.deadlineMillisFromEpoch = deadline; - } - - - @Override - public int docID() { - return docId; - } - - @Override - public int nextDoc() throws IOException { - if (++nextCounter % NEXT_CALL_TIMEOUT_CHECK_PERIOD == 0 - && clock.nowMillis() > deadlineMillisFromEpoch) { - if (timeoutCountStat != null) { - timeoutCountStat.increment(); - } - if (terminationTracker != null) { - terminationTracker.setEarlyTerminationState( - EarlyTerminationState.TERMINATED_TIME_OUT_EXCEEDED); - } - - return docId = NO_MORE_DOCS; - } - return docId = innerIterator.nextDoc(); - } - - @Override - public int advance(int target) throws IOException { - if (++advanceCounter % ADVANCE_CALL_TIMEOUT_CHECK_PERIOD == 0 - && clock.nowMillis() > deadlineMillisFromEpoch) { - if (timeoutCountStat != null) { - timeoutCountStat.increment(); - } - if (terminationTracker != null) { - terminationTracker.setEarlyTerminationState( - EarlyTerminationState.TERMINATED_TIME_OUT_EXCEEDED); - } - return docId = NO_MORE_DOCS; - } - - return docId = innerIterator.advance(target); - } - - @Override - public long cost() { - return innerIterator.cost(); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..2f600978dff56e1c11240d54fe48434e48f7f76b GIT binary patch literal 38048 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.java b/src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.java deleted file mode 100644 index a3d0890ff..000000000 --- a/src/java/com/twitter/search/earlybird/search/queries/UserFlagsExcludeFilter.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.twitter.search.earlybird.search.queries; - -import java.io.IOException; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; -import com.twitter.search.earlybird.common.userupdates.UserTable; - -public final class UserFlagsExcludeFilter extends Query { - /** - * Returns a query that filters hits based on their author flags. - * - * @param excludeAntisocial Determines if the filter should exclude hits from antisocial users. - * @param excludeOffensive Determines if the filter should exclude hits from offensive users. - * @param excludeProtected Determines if the filter should exclude hits from protected users - * @return A query that filters hits based on their author flags. - */ - public static Query getUserFlagsExcludeFilter(UserTable userTable, - boolean excludeAntisocial, - boolean excludeOffensive, - boolean excludeProtected) { - return new BooleanQuery.Builder() - .add(new UserFlagsExcludeFilter( - userTable, excludeAntisocial, excludeOffensive, excludeProtected), - BooleanClause.Occur.FILTER) - .build(); - } - - private final UserTable userTable; - private final boolean excludeAntisocial; - private final boolean excludeOffensive; - private final boolean excludeProtected; - - private UserFlagsExcludeFilter( - UserTable userTable, - boolean excludeAntisocial, - boolean excludeOffensive, - boolean excludeProtected) { - this.userTable = userTable; - this.excludeAntisocial = excludeAntisocial; - this.excludeOffensive = excludeOffensive; - this.excludeProtected = excludeProtected; - } - - @Override - public int hashCode() { - return (excludeAntisocial ? 13 : 0) + (excludeOffensive ? 1 : 0) + (excludeProtected ? 2 : 0); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof UserFlagsExcludeFilter)) { - return false; - } - - UserFlagsExcludeFilter filter = UserFlagsExcludeFilter.class.cast(obj); - return (excludeAntisocial == filter.excludeAntisocial) - && (excludeOffensive == filter.excludeOffensive) - && (excludeProtected == filter.excludeProtected); - } - - @Override - public String toString(String field) { - return "UserFlagsExcludeFilter"; - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - LeafReader reader = context.reader(); - if (userTable == null) { - return new AllDocsIterator(reader); - } - - final int bits = - (excludeAntisocial ? UserTable.ANTISOCIAL_BIT : 0) - | (excludeOffensive ? UserTable.OFFENSIVE_BIT | UserTable.NSFW_BIT : 0) - | (excludeProtected ? UserTable.IS_PROTECTED_BIT : 0); - if (bits != 0) { - return new UserFlagsExcludeDocIdSetIterator(reader, userTable) { - @Override - protected boolean checkUserFlags(UserTable table, long userID) { - return !table.isSet(userID, bits); - } - }; - } - - return new AllDocsIterator(reader); - } - }; - } - - private abstract static class UserFlagsExcludeDocIdSetIterator extends RangeFilterDISI { - private final UserTable userTable; - private final NumericDocValues fromUserID; - - public UserFlagsExcludeDocIdSetIterator( - LeafReader indexReader, UserTable table) throws IOException { - super(indexReader); - userTable = table; - fromUserID = - indexReader.getNumericDocValues(EarlybirdFieldConstant.FROM_USER_ID_CSF.getFieldName()); - } - - @Override - protected boolean shouldReturnDoc() throws IOException { - return fromUserID.advanceExact(docID()) - && checkUserFlags(userTable, fromUserID.longValue()); - } - - protected abstract boolean checkUserFlags(UserTable table, long userID); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/UserIdMultiSegmentQuery.docx b/src/java/com/twitter/search/earlybird/search/queries/UserIdMultiSegmentQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..4dd46ddb6c51cdc977858b9050169bd6142a8715 GIT binary patch literal 42472 zcmagFV|b)b_ca=GV%zq_wrx#p+t$Q3CblO|I<{>)nb^k3{GR8}_q^wPslK|Z_Fil4 zs{1bNZUt#jFjOEQASj@_bass@rK0#`U?8AT2p}MouUc(kJ6mTHTW38L4|@|Q9eQ^g z>&9eR`85H=pO^1wDGYpsUcv}y<-7Kj_O$WXA~l)!9Gc4v=Q1GAkK5o46YjwPx-c97%!XoE7I$7!k#GobK1snPF7pCk7qVYtMOA>o{^8*mIEm_`JQ*6MD zd$oOBddMM{Lb+Oj$r{fRIMTxPuT;f;>Nh0xJNQ+23Y>nVbFAB43- zoZYwSrgs}tXFh?bD~q~Q*4jk24B0=ovkE4!ojV52R{yl+&OKdIqcLyS(u`5@u{a5m z!1jC;hR-_f4y2-}C(=oR$oSqKTjd@6*!TEIRTN9g_q-gY`#3)*YcsCuKaB8`Rh9p@ z5**T)_0Rx(74zv^K=q@k`qXnYv36ph|65iiOh|z;A^KnPi4K#M*fyz(6t3us9LpB+b*GJA6x;er z6t8x6D2nK4p!eV(UG5o~E@l?sEYlQQ2dNusE(GQ+^=NEST{i&q)}d0M+XIN)Rd$0l zturF;N#F%c$RF8E)d=}$HcCg1gnKa^r&ql;7fzc5|Qp;ohj8_eCX!vAne3s znph)Bs#^E0-6Ed&o17)|{RK|q?2(ky<&2pyI11q<9Z>FsC6A_J%HvwI(A!=B3g+4s z*Yw9h!t%&zA$4SW(IC4m~S-1@-6Dr-HK%{H;MS7@V^OXG^a#XWRu&$q$e*bHhEk`O`= z8h;sJ9099|_OWJ&zW$mmO3hi79Nc@^{W5n$ZpLLa+8wEg{SBrz8&oorNk?WejEkhd zj+JHp=Oodu7Nz36Vi*1_#ro5vryR#+!XIzFH#q-uT<+G^FiyY5#TpC< z2=Tvb-6%W?RwCn5h z9EQgEli@y`yPo^CVf1xL&=j&k&Ri93>^Xl}!C?cYu_j{ZaBbp<*a@s0ybMik07=I| zZ)&t^0fG+NIbB_$den=!-f;XHAJX1Qo@UB<6<%Po!K)Y`XYW1zW+EVZ=KA}o|0-Fb zad|UMkx@RP0`$Gcyuzb&ikDS<@BTzHB^eH048-7_8Enj>!h&)oObkPo5Qj;><7(U- z%o5hi`M%Eh4^pm~jW!0)9ErdwKCS)D+_$HGn0*YR!fgTH>3cEzieDF$Yd{zg4X5>l z%5`PxVK>p|aa|gML%E!+pzp$zQ6sY?$(9CoJ$Fbs8UgDLaV-z^W!!P_(hu-pFWf@Q zZ|EY_tHO|4cyWnM=_r1`N9}IU*g3u>R^5PV07u;HzaIXoMM)B{z+GuWBK4V^;S>Em zR$C#pOJ7OETRliYnu7OgNPt6QM0KHlbR@i_r6Z>ujh4fTjpRzU6XM$nd|*cbo@B*~ zsUYsEwM+15j{S~Ee{I8bwEgVD3wz=Q!QtCd4~?IC4sHED5;cY&&|mBCT!~g>R=Ye&z zb2Mi7dTL#4z80syGvl1s%4w~sZtJo}fYmAXKrHXPkfLO%YL=@h%Q8loRBrPFEq{1OrU zl?Q6i*XO9%=jCk;k5~yCl4X~v;!-Ak`FZEw&xfD$TMIva9S7OfPYql-G2f2w5_2;< zo7q>8))FD?-`;~^H>G)V5FXuYFkYN=BzV!(5O_+xEp3r?lyaK(SW>ku+@!RY902Kq%i|4&YM2xV(mbmF> ze`cBAk6-)bS?`p6a%b_& zT>EAjDR5(Fo@imXc+zA0C#24FC`-hqj52w(rrjDf4Sxr88bM&pjokcW@%_U(t<>pd ztC$@Sr!6*q9SgM24i!4@q0#hs%*zjJ?5fLi)^(6X=RNY(n?;8Vo_k-IxdPPg;~3=! zlt{7amufA$?5yD3M~AZlw04Jp);5=eb%meqP8_%;9O4!uiL#{a`1kD8JNQu0CzR+v zq5=?wK3R+vfo^59VmXMzc^F}Em#hwOXf7UhY-D$PhzlJPgvKbj#%njA83f z2AsVvQkg>}s{8~>^N+-WmYmrWAv?-c_tb3iA)B%u^?3i&biKKxXP5hlxyym7|5ER1 zlEiqtLRZmFu9rySD4mE{Tp0WaMJ8Mraa0N_aT^TAd>bq=A6E_)Y9NA=;COQstBBb} z!G2X|8b?79-W3aA&9pB8%|OP6mKzL&_WvPVpHa!504?K-mDkLYq`QLs=Q{XXfC+S8 zw;WWg1~}GlY=;kD9^^U;ymCdK01Cs955@j41zyB#QGe@)`-vp5O7T2yR?JLM;Z&8p zPcujOHj??=9rF<@04uURXECyoAX^}|2iwk|L7rmpcpQ8hm_QsOxdHXfI?%5OP>wR7 z5Ig)=8NP9SR~s>T*Y7n+ZdFcTAXOZ!s3OoDjJY;SNEQgWWkdzP$&I(`ID~b5@3z_E zaD9s7Qa21Z0*MJWqcv!IwS5peN6C*-$h9Y~8ixHEam9=VK>`BpB(|85V?*&o@%6@x zZu=_{7EMM#%y_gMuIXhUk>^0CpQKQ#(DymWB^;Sm8%s+BHpIUXB%@$u=H7B-P&0KK z6%QHcMj1CSB^9d*v?+V|x)4-3TBBTB8KdfdKg{(VBw>le2f-=(UUL~=3mIr9&O6Z~ zhW*p8drmoJRrM{2w31&8MP!dFsu4uB7DVKBoC(^1vMtJ=E_~&?emK7pTPu=LF10=o z;*UCICFFDCd~*tv;ymOYu2Nl+y{BjED3;>yoZn8W%uuW?3{80a4N;5Cm!Ndf$6dle zBm>HtDvcV`i&fuD)C;~7vdQEKZCowO*12&^XMor8I~CT+ZBBm6l#w!K0VAO()iDv5 zM1|oL6f`ssM7|*N*4TcDB2H>iH7=T9XH~_F-ac!ub+0t?hyZmIR~%VL>LFXeho>Pn z97y`6@ok=VJQWBbfP>TzKWkwa_Q}iR0m&plHVp1jzhe4$C?h*M{hFH)l=}PfH**5X z()M1$?rz`7!Oy9ncb}HduFsk3>TqTu3WgMrQu}6*VGO8!>9(0&J%da=c>9{QmmTP(FE6%R!8C=h zNQlNr>lwWX({$3yeMtvjJORdR4=r2qEB&<0qa;I=g~;JvK;cFU-({AL?#Jt4`J5#| zqjsS!66xD`&~{H2{Jd@>@e!_R`BMCMb!qq~=zb|)9O+FyDb4LB4BLKNi>lTdS@p#@AD*s-7`OVQ2jX5vc+ zLPgn>D+AjUUQN>U{?5n{tro0uTu1C?=cXkK?p~WM=5B=oTo(AvnW-4!j88+U>=-sm z41DHdgWm;JriuRq3z}g8cQ-!6Drrp|4&o8yRcV+Me1|_iaJjX)-90{wk0z7v<#QdG zWwgyo6_<3ER&KK8pvS)ClKN>m&mEuZ1PTDTWy&-^5KVXXr@(TC}&iijti+0y#=cae7F>o z^?)-e1P__GNSg2_i6;4E%rtu&u%){mM1shM0zrYE6I1yQiJV&4`yhV$L=MN}`H@p( z3-b64$v$g(9aW*YU!kDuQ zAz?L-U<_SKZ#a-oKwF%C*^5XLI9hZe*QpTDoc+dhpMgBP))3vrGl#x0B2GpNtEM|C zmwoagU~^FQ)#W$Pzhnt|KBHPgQM6H(jMAMZs>d{rC-{*OX-ZM7F0G7q*Lcq6LQrJd zw6Rz&itgmO!iM=+{I*$>U=viTu8Re33TS;!Mu%-1M>`;qyu0U-wWMBy`!u&ii5p;5 zkVZ}7w!g8GgUK+*NRsWP;DTUF&9-4B6;ty9;=wC6e~4)VNh{_`Oeg*MNlj{j?|IK~6@=dJG?zDvL_D|$G!M8YI8Diy2OG&Z4kps;y+zX>@;3BZZietX zLmdl2If3CusU-Z!=+LG*hEt+tKcvpG`Za$zsfbGEK0C)mT9a(TWK<2QKS!7;MMjY5H_l7J1u&PlGkvQ0k0opH6bBD*;DT6sHPSU`RE)2gSeC0 zfG${{KJeEG)^druC%QFu+pf%_0D$f!o*B7qQ<-H_(1f$>;j8Bp#NzhG-F|Pga!KcJ zw04?3KxBC8u_m^$lcy^jW>`_JKqim+c1$;h-k(|FL^C!nCBmf?{>~SxT)sHB48BIo z)SaB*IV0^`6`3>YVn~DDaR$|>-(y-ydV9o~>+!2zsq|KHj1s13idA724USAxa(4C! zU>KgFXtD>7xkvI{(!X}T4JZn3^qA~z+c#`O%}2q?(>uGnkEF7cTD?4vJJNnyoCO?2 zTucZ75dfOSfg%KR#q&b9ra5pZJW(xM;pnDW5q42GgF^L9#N}s}7DSzoIzEiFe4@?9 z$o4TC8R$Ga6XRopI-3<&CeaRIUwbK?gKi`LyyxVeVboZRlQEYYCIfGDjgQyLpd-#? z6kY3Rjw54JRuEB05%P9-HXro>TLk6&QylwmJcU&*Gqap^ zZa~qaU{!06495>Cgz4?3K`reDx~yzz<{j*p1;l#Ki@*fbHIl08ODIgyBCnD=ZbzABHA;) zUs`~j)LU~%m8b>uW+j4%6~?SI+rcnkHN$4-XVuUf{<%bQ(h)Bo+n3i-5^e3vPMOW^ zq{jB%^oPMBo|a^yUnhjlDaCX_{mmC`PsTr{gjJF3id^0Zy&5lm|B^RC7_3*fn6Y=D9{GU}G}+UM`(Rz?l69``rgrlVu!0?aA)bN3%I!JejM!x44{#HOrBNO~>B?0T!o zu_yq>PaDWR7LWzPdQhRLel6Of&?-Fl!l@!Y>_=0?5C;@Sv{yagH1cLj@z!let)V`i6h*;?XwC65iT+9m$ybi>jccx&%;Fe zFO?6jObX@q!bhBKh_{cchK|{JU>@IBoj>zw#ir!twfbw`B-7A1*&#rowBe_rbq34~ zq~NGA^)gH-L~|VW7qSTEm|0OPvE3PBJKcGwI8>#Kk}_p}m&)_sx@Xm_T`Y;$*_`bm|41opeec{w3>A{ZCO-;i;hXD ziPtG8FIZvkg>@a1;xFR?6U2Qy`Qdg0G!u6_?I)hi8#MP&)P*V@U#y1~D9obv`}$@_ zj%sWnVTiADm^XjusGzL9mw9uExIQIs<)xQI+}5{F=qec$(u8!Ajva6tJU%t{Tf1x4u12N#~EFCt0TN+{V#(AIyJ8vVIN9j~tn8BOr829=_hh!raE@)RwgfM%dxy*tETXEbjv%~(*~gvW2-;Zyq-|2S6oH^6!X$Dqd+e3NyjP*mxA4>g#l2;V5|Xv!<5mQ z7B5(?B?^76SiT%YQ@xKX%t}r_I$hImfp+_-_=e7DP#dF z0!!?JF|NsV;HGW{rBgC4{f_x@zf`6$&&!g46~0kXLbu*Qch*;lW~5fTq7so;Gb-x2 zOy4Jx%4jZh8)uTv5S8G#r95YAvXmRhBSclubC1n3J75Y}j?`ad?+c$|;>^UndpzP&ks#Inq z%Km#{0-pjQs4dJDXj@j*7bc0w42YKdjagbCWvp}2bCiAc*)i(O!s2jlY8 z(AsGH#qtp1R2Uu-x|`NZikO;4J9l0dBq~^}Yy16Umppjzwcs4ns55D7SZTANsr)y? z=Mo%`E^%JJtahP_TYYoJNT90*Zs>NeiRyc?M$pL!*bAwUW&d6tF}a7zQUq3*UdnlM zjzp*Nc|6tcb#Wm01_d*X35CFCT+8f@EB!Vw?c=Wh*<2oRPL_3i=48V`{M|c6EwNQ;%fpP z_gxBA$W|*laq@XW6R={zx|z*RzlxWh?KjI~%g(?M)Aai&Z>1BnzS5t4|Fdn=_WA3m zgUg=D-O1C{X2CAU)2a(>%6VgoQR~7F#K^dm)FyUui@R<9NsFaOTdAHPH3+OhGt(!I z%qs4{sI5=r@bc(DDM{SfZrf?2i~B1%z*n%n`FFdfoJD@+XGO%V42+Mc7`;B*=s**? z=Fs-P4^C@)r##F6vu(}C=HX_tc@@uI`3$~e@5CiFkP%NzGFuvwL{1VqxQ zgd@VI2eV`B#wpT)C;7RLFp4BjA?564m#dl2hW10k=w=tx6|cC|rLg4Az58$u<%d+v zh;(E6>On?7ixl?aNoSeRZ^LJzJlX1fDJ#ZL*Ti5aafN7O!xXNOpw_PtfZRvzg;H); zmw)z|4hXSlYEHi8ibnWN^Efot%(vlg1u~$URh+seIp7ETg853)s6oK@x1)T;>vD6H zj(+f1moN-uL$Jf=O@+We$s;Re4x_Gtgo33=EOKP8P0X%Zi7?xZNwl>~1VLyQjr7bk zpFM@KQ}@ba)pZQxbad&^L78x(x?62b4G?MY_h{fsV5_%Wz_zG2cI{VNTKZ zTXUQ14%Nt!c(4%MRDaaq2Aad8YhK9_7n=epfgb3*d~jTA@#}16{o)8LCnQ9`7xWO6 zX5%DkU8SmaUmk|b`pmp_V#8DyU!Z>^N?zN8Z#vs>G0#lChlrIR@MsJZaHSM?k36f^=!y*ME;!MvCv z-Ub7>^L0*nzuIr>1YvZ>9J6eE`bWck(&0$_l(mpyL7^?qS}l?FkPk=^+k`}M_A zCJr^Q)+cp<7YY)@(*5Yi$DiwpPY(|*rjlx8p4Lyx&xJ7~r#f(ik$Q$M50|TQ;>`2r z5C4ip&x7rONV|vYNnqU1TWyX_W%ev(Yl;IBj?amnuKh9lj@~m0|BRcRGq--v)(X&c ze65+! zKVW)85>bn7BeBl%$pO@2HAUVbVyg)c!UtR08^*N4y8(NTY(6;@HggjX%8Q%am^2Mi zfgDjF2&i)*3MR-rW(cXL-SrZxf>u?8&|I}WY#qxyLb5aGzmv@?kED`h-(Y^XlJ(cY zkT&Mo3bdkCM;9K8DJT4_W7h)F6q!j#GYHMecJ>4iUr$uG+;mi0ZS!wrIQ4AH)vE>e zB7yy0UeMPeVI|Ywy*!$}e=^4PdxzA8F>P4D6)rvqc$57RjjRWz_Lv3Q$NZ#kF}i2E zXapqU)+L-O{Jp3)OL+(Mri3|Ckb|r)Lpj(g1Z%>I!}4w>sozr$+Sv;dgny4OsswkJ z6HmiRaZFwOl(+XP4LN|2!Uo-GwN&j;e_fhm^=_sHjPp5Ymf?SB%^e65_iSwe7d^w3-sRhZQ_D~h9+%+5?pZ&ygIUfUoy)w&z((A zW0=RD>-mup2@t3%sj5kpC)9EGW}_=m9jO0GR55vf&+%)wzVy{2h{=4v*kJGLg6nM6 zzEpcHnYg$G*!jL=dUHP?Ubt&rWT&jX+rD39@-Ge9eLTm0KEEzq#+2|kpYG{AJ#SnC zQWpTPM{|Gf0imILCm!#0JRde+D@+K3?<#?AO3Bq!-%)7l!Oqy)X>-N<*y&A!$GSCp z2|qz)Pj`p>PtLHYy3ad{dM&Tlg|#tHw+Q}Edkwojq({Ks?cu#U)_KLSx!z-F$x@$h zBOiXBneR&Wke8;d>yp7wIfLBPiIZCX3;tgp=zKDc;@1j0L!m)WdJJo?U!>f&{5H=K z#)i&cHhegy-}!|mc+b^0zY^p&UR+{+_`ZCke&l`wpRf;rx$BElx3N9T`e#fjI7s)E zV55$l^O(%ntK|C|_Y6GtvAalLM>@}UPEV5C#ELyC7mrSl)pdRmp;*5VhL6tmPC#?z zSn>dqpABH$r}KyQW#{|7@QbNZDt@2C)&>K@mT#IUfwx5VInif-&2yJwPtDi@c}o48 zvsS1tQU)2eGXT2dY7-lf%J1tDsRHokK1U&{36Hz0MF1}fy+G!g3av*7t*PdJuhsL> zlg6}qw)@$ z^L26Uyc;^V7@&aBRe25%oKx}5-zG`Up==R3pn$b;;mXh03x&-Rvpovt6fpaq9Ja?#2Gm;eAN*;g}X+e}j04W|=1mB?WduR7Mp!=ExCvyE$!^At_HK#PnPCb_4mqmMAb419J z2A3-opk9~+u1{J~iyZ#1F@s98a8JUvRus3H=MM7~SY3f19tkvA2hSSblbiBe>x zB<6}>+5=P?B5ArMDX0XwwysLQEnJ2twbAw=)Wynnrpy9hMeFOF=Jzt}G_45Quk^A- z2Y2;lf8k0*Efe#WkeNQYH);SkIA&1JOxhK`?Ejrjk(HsxuW4l-VX~ zw;t4Ou|I0Chq3_7YC9Dntj%WSuL21uB@!CsK>LJdf5NPN9q!n8#KP?MijZwGJ77(Y z5p4lPxf^uE;KX+DVLG83^tiydcJRX7zm4W!jp+Z;2)09N2Q2vS{?(1xWb|MR9M85*suOk%`;ziztw&koXe@% zaj*Haz$brna5$2`^Ax?suhV=lLJ(uSOTQwJ{3GU)H6Hu()&83>oyU|uBJFw^Ue?yY zI^n~Guj_J_8{EKJC%xZLj)cvrW5QAES$~9G&2B(-EMl3p4<%3U?Xx58i38T^)fV^S zoDDmGA@%eq9(`(T--sRd$0n1kE530@P#*Rcp4?%$WkQEh$-y4e^XGw&;wa1|)7!0! zpSRm(OCl*k(WX;a?czP1@){oLXj_!}aw0mwvW{e;^`mDaeo*m&TBXl1d42Qb+;23>HY=-!L*l~<{ zvU?~@z^*7>!1)tawuPRh$2m`u{fBvFEG(6MHE@s<9HO_y=zS4YF@r2%M;gV)8=48v zfK#iuaP-+TR1;+aKv;r;H01Ns@S?BlQhDB|WIucFf~ROpdSk$@tb9j}`{|EECh8nP z^VTKt=SRjoV9M>~Zs_LYW^lk0@b2K@`}mRkxp@9E_vh`zp3$KFqlN$11H;?Y5V+?D z5W-5PM++aA-WH%ab?BbxStIA~29XpS!swv0Ig_8Ck1e2VNbc zRTh4Uory~!mUjKk(TSy)xq>`JMdZpyW2(V0V_+rxWVM;qZu1lt^Uuk54U56R+=Dpz ztk2&o=w0sey7MH0rQWBi_9;81{;aqVi-u^#Cs*+apQd&!ceL1)#(0$^ z>;rbrM$@`J7iGw|XdW-7#QrJWUm_=74?Fs^(|uE0O>3-cmzN1k8LEBBFh4(^K3*1a zF)F1IvKTqKmfcxuRSj4RVB}Ot%gwnsmdk5T)du9RAG54wNo)S(hAJ|9Zi@^(4|o>z zWwbraqbP)|MNxCi#FyqT9wVv^wAiZB_Fl6Anhj@|763`n{oN83>n( zurojqm$u1tsApQP0x3!syLx~&*fc*LTZ5~aJ zL8L=)6F!rVO)9n5qs`gXGYVkP482Fu zuNt)?g7}(|-S|<%`Gi%DUzD}`+~Hqqhc11@iEA^3k)`~?niBao%>PVubK2ij9rphPHKWf@cUjNtf{qGeR?5pNzp?V@ru(bxR+(iPNZxc z`iRG)M@4nQsX{`(h6an_s=Uk5c2y-w%iiG$rY0s#Y&Ve+!Z2bTKKa@8Cy(JTFJGQ$ZL{TY=wxfy7EPTsj;M6 za6`F!bJM^4r;Ki9!@6%hyt1i^MebBfaX=r573QNmlJ60eS%M|4u9*X-^njK77SBEW) z%fQPyjenhV?swjFoY%1mKy2WZ%x{|}SpH-Jzf@9An)toUI)L8o zOwc#mS&t|g&@Qt_Eka{dnfjY{T{kIa&_F7+0LA{RQALElru&Va$Z zrcO}3S6IMoO5JtVHJJ)1LCEZ?e!}wuo`G?*~Qr+gJ5N1v@L#l zwtt^4nb>iMiT0Xu9)SHb`7jIeL{`C)w7$Fot~QdaT9qA_4dR+$TDw~_7K`tg>aM{iFRm)4Xam^ z=aW-|a$yP3#lN{Cf4iMC#X;#fezd$N>`ePbR$z6s8j1JAM6&GY{o_jgasf2NbZauf zQI1LkfIB_NcO~Lf331G1O0I?SwE8WfO?1>hc)1~S4ZI!L#uXz@v^1JldUyiUe0N26 z`<2r?A&2=jYC{37Fl5k3Cddby&3(W_-dbxySPX4!BTGqr#ujK2FI#|547Vq`keJ=k^a?qu8&2~s|imOor=#D=eL$L0ktGEn= zk<&PuU%r{P`(fL|`3(Y5D4ZH=j^R`VBaUrIe{PDA=d*ipI21d5`3X3J&t*5`)298g z85D@(eoz~{>72Fq6(c(rl}1`2J7Y~DyF-7Ju^jLf@E-%5^-ITa%3p3K(1h)(!;dGL zHwOHby#NPA@VU+UJT7>0#V$M0?T#8kc3hL!Ae;VdL$JfdcVa1Icc$Mspn0~gZ*Zt@ zolJB7hNy4`=V*IKf?$1*KvZAr0D9@k$HiG(Rf+rc-UdQxbvqP0iUt17k(4aV?}Ij;Vin$@|*g#DWftlSJAhX4XtpUI>lkj%c0c z92=XSn)pHL~|4wz}pqNQBI0DMG#WUG42!2 zpJv}<2XG<|Qm%|ilEd7u>GI0Xhv$e=wknRsFGi;t`%;u$m8Bni+JuTp8`if3O zJB+zW*UEBrb>&N0PD0p&iRUX;mqag%6>430=Pk>FO4-d8tSgfE3Up!I^ZY61rJcg? z=~ZvrbnEb9&Q%l`YEsp(?|X49kWN(3LkrxP>Ef1@Bdh82H?vgh=}cduJgK%rK(ZAW zCWt&+R60sitwW8uE#_Zq`VPZ`T=!CQ2_Nfv(*@{RDUq<4mu?YU=C>5Y$q4BoDG_>n z-MGYpaMd#>h9rtEFZ5DAHwZSTglJiZ`<(GHeIkAYZ}vpsIThl>})DIc`VE7#d% zO3tfe1RXze*|wqBzGyMyO^%SrK74%JK_WEvVjUM{nkD+9gN0&D+6!r!Ebn z;Hfr_Qu5QFHb}$WSU1e3->Fg?E3LmLPrfT%VGI#=^__0y5F6ly=_C&d(6Y2L;SMK` zGV=JBm`8~Cu{z8&7*MD?E339VKRTAlc^>C{KM!TG~It3F2 zLk$8GOM_K3PoEQkPcF{h3{@)aUZKi+awZ}tD!}Cx&`ZS4f2<`^Kuid(m)Ijf5oP`b z6&OX}-ZXTPo!(JyffVwLIadU=M442-15;04M@V2#jcYJDzHZ=O7WMfKIk$ijap7TInw_^Gl=+KXq+zp zpJTjt3p7H3ZPXuu;!EZ41E5&rG<8FQinPnr{7L9_)f zsmHDm54i_J#Zz~k%$) z^U6XSjC4(MRj!!O=((P7E&QC#{-wNFRNy9Btt@+xPu)mf;D(deyE=wAmqr1s9oJVz zR3Mm`5Ko8hKgGe|HOh*1$6)Y|N88#WDWqPhRd_;$P@n;?QT<<|NjVIbed!)_I{YUv zDzo+fW$+jy{Q0YM*z6bxvQy=E@X%u+_`1AP+pF#AuS_mklRs_Awgm4on_VBwubg1g zAh%cB8onu%>1e?e-q6#5HTfzieN%ngr^dDDOr(4_%q9F7srYbceYttA^@BB-_vwHo zqr}IF7T0wkX@wtD4|<{qt(klzgDuRUdSPvVie1;%dsM6LAWG@U6;@Rh3r_tQY2R-=G=NU_KC*0=(k?c;uZZ2ngrcKCvo@JFq>wB4Rl z9&}KC-(MOsL^$+;*WTk64OV%wM2J+miIYH%gyK2C{oOJ4spulK#Wb`(iR*t2SJuR( zb1pG@?V99he&cKdj*+7k+X79*k5;hAtexB4@k^4&n&OY!Z8R!W>B?&fYx}K5*={Yotso zR>KV0Xv{QFaOqA9;R}TSJ57i!3nFnPOL@*=x)?DGbvhssh%*j_64+3HR!kT1cUpBV zX2iHFaXmd^9JeO1*P+CJ<497Gp`}>7lqdOD_X_V{-94ciG7diH#!OeZu57sf(k(jj zQnV%Z1zmn9hR?=-`q z)<52ihsMGfHZTDaz%H+#!vPJSpkV=cMuc=>8Zzn{-$YHh<25m$hVLK7U472~%i|hL zdl^`<`kG~xhRi{=?~|!-NmpTrm)6X|LqI5AQFeBBoua;GH_7bub_QzFIw`y0(RaAU z`U!yKAd}K%IW)iP@?C2wS7s-siu-V7S!pMAr4zYu%wm)EK!db8DvisJMBj`n@)gA|<>StHYX$(Uwz0 zV!qbjb^zS>FsG9eFOx}45Bs1ZUwcpoxqs?Y5{%iH(wBI0I4DxC!=13rzTdf%O=?D3 z{=9pbqNWT8y_i=pfP$?zuYHgqC>tCG!AF;DQk z6w7hMvGfPzO@H1j-SAv>Ar|w2hsuC(4}4Ggq6(y@wc(p^?bffD_$|D@EA;X6);5eMq49F%XhGYp~uqnhW!ANx7R}Kk3`sy|L(Gju$sN*zx^Bh z!DaXhTp98o@Mb0!lt}vj3;2w_ejmBzrlO;C7+elpJ3FR6;WqvoiymPoGVDZ%BeP2 z;3wPhtLo(1t?4k1)~tMU4oFM!yirCT&&928O}()LL9Z@jn)SZ0jknC6#JYqpWkW4w zq~Dz`E&%#osCM3q2$Ad*hzw63c%=e4%YzvVo zFl)2&LmUe8S!GpmolX0QMPEJS2}!MY7~%|wdY^~8RXOJg1#446-HoC zcXt4{7(o`<#kWD>5-y7j<8>6-xv*mB5dvho6YJ1$wP4!d6$ELE=HNV1?a4L6$sDV~=C`4)J&79bN{`$wHkToC~R@?Bmu z*dlYr6Lvh#<%z|TgS;~=(dHTc=Q0c4dn~e^E83N2A-GQGeT(rHeo_B3amH(kp>#=xb;J-P$^_nyON8}%ts{78twz-DY z{}3syebP}B{x6ZC$$v$1!2T84Ve|hdl0(+2YYK44Qsw(45~bMUlgm201rNUf0}Y!y zCey%#+yVFNM!7D0?O=E1{0O*Zoq`VZPBggzRRT>zOM*Uhf#$H;a{zPn!T7dPYD>?+ z@!8$ia$1oSM7T$D260Y%oKqVL6bi;`*%;bt{ku$p4F|ByfrbI^fPZ;w z|Le_NunJNu^!l$i2Kxtyi9u%d<+0U%*wW_mpBODRS9R{dn-H;ALPTdr4~9%TXNwK# z1_(W{h*XH}K=Gj6u!u~A?LZi$;TZei_uveatb2bLb^SfQ?SMZt>tr8Ip!e!7lIsd| zsIsj zbrnuwW(?YaZZUgdWf(FcZ;8wrNyq++T(sa{a+twaLf2Mb|Jm5)JgX&O>cemF1ttXl zTR_%*6%b9nz_b#s?|}`uo!j6==OcK7u#B-p?cKVlj5lI@ui6YLsf}&Ez_)4(S0HYo zp6CqSZlx%?loxK9laNMo%Yd)ootJ+F?;HwpIKa9E?0*K&Cg;b$gIC*O-I+GAoXGfZ zhA@4w2dB6@V>lEO-Jq8G$`rX}?vzlTWw^*7s??C++XF_KUveRZqhyg?rQ-26*ooNx1)8R zCV`(6jFhFk^7plIzB~&Bz1UY_F*IuqC6?>i_8sU=lg&L3?cFfTus30sNLwVGCDBM> zmwC$rnXe?15yTsqdapLD^PD- zIo-LrV$=(LLNCQCu`pJN#9YPh7eUcGNx=7F;yx3J`$M_#@1lH*fA_R`}ukz$00 zp+*>EnO;uU4V%QbR$YP#T(`=iRND?aMFFdSacJxWP0E^ci4T{657~cB9g$4xy5fw! zfkA*bwv^(d&(7p~s%U`1&N!I7s;WekT&-u@}@4o-7S!>p!yZW=5DXOchYH0So&)}#} zX~Uku9&9`KX~!J1pIC*pHU_)3T?GtlbY8$>nT9UlYNIu+K>D|E9uPQnG;u zh5$Y>oi>dHpF)^NPIHTngV8u$-Mz=Oa9dA;?|<`mAy|;NaBO2Yr4j{Dr4$p4Bu1h1hEU4 zf$tOKUfHQF*+LMjke`SM;&4Ss&>eOS5#|y=+fjS3`0lM<;zRYPGXP7 z|E#L%9QQLNY__VFk(ZxBQo{e_XA51Xb6U*Wee>#dW#u(*5}K{pNNce^(CM%QsYqSt zCvqok`5h(*4Iei-*JvnNPKoT>??6D4Eq5OkbTH?^mDGY}IK;p}Yzu*yVRi@}sG5;9wfH=e|Z2n`>fSlfOhL5mMzZ*sP^*6*)^{l!7uSD!ZqyVKqr?c8(&? zhtL9;PbkHA>!awaIJvAjU7I#ziOcv$C89ZHL4tP#r8U?JWyp&wDram?&x%gulK?jI zE%U5NmzwpElRb0D?i;b6miJ;mOSeDM`onn>GCwxiW27^=ZoTA|_!IXPX7kz7;Df7N z%`g9vOS^I3dr`S!YuXOU2EV@tqkGK5%YgGP1_+H2rrz-m#Cujaac*_`6PL$SV7|~j zT$JZbN<#|CpsHM*y7$&Zp|d#k{`nC6fa#yh4 zZ?hle>AaCTNLaePEV6at4)im;2-p7OCTcGY}?I8JM*m!SC6w{ZuAc%TJ|S*x^1MFO;!BaCV7LetPQ zg0=lkVyjq$OT@qGz~RUvmultzzH36B9xvg5$v2|05isakqNo;WVjtGtBrrP(8w3A} zY3XeXQVDtxd@?&L_Z6&Eq5CVW$olB-Q!&AtF3%QkSS$Z+h~7_ABa|orl8y+Hb^Eg( zV`f$ooJ}Z%mJLM~W1Cwtl1))xcKw();p^hWRd|-@3Ry^QUH{|7=GY(>-EDgWC9zRv`*i>)-e^| zy}^DQI9mcw6!6|_!Ct$a&B}iiXa&p;5ITVQZo9%;42Phb@?vwr^xEy6&k}QQCbD{f z4%;P_fec4f#lzbYtW%}^O@GAx4}HluQ~qs8p!vg{R-5(+(DuVY_WyY~E%@->^Wm{+bsB#hKm*gUs&0NfKy3bYH zB43K#uTqO96%_G&9MbdXqFxoQA^`RrTT$L=7^Gh3>#a`Q98q0m1D5R@!wrJ&&F~d^ z%z-_h)+Xt(u$K8F*_86buv)s@J#>#7QkKEc#@aHyDH73$JP zrg8#8l?wR(GHEnlp;0j`$!ucGKkV|UgQ<0J0#F&Lt^uvS>T1cz@PLP7@-A*@jCRaX zvaYSK!?Zj;hR4EE$C_2?H#GJ#>&a?r!)_!OYE{q5oEl|%Cb3efMX5?PJr@3IRI8l7l>ASs-00OV)Xqn2~|TlyYipjEIw}o(5PF{$`wgy5cGtiPS*7uHL{h6DP-G_4Pjiy7EELdFSn+52lk|DzYsRCX30GW7{Z zLsA~0m=9q{W5pq5nS&5o={}`*|6f!rKq{Qb4=R?3LBs93X|8WTo2;pBEX3}Xh9f_| zKI=+nCt>o5-Kyhuh_KhO8mT6qJ}0O7YSYkAOG>y(DCNFD!|)ffW=$Ha!NhP4=HP3MORh z`4E`)3RMM6wpm7`vXZaT@*;X26yN>R9~AWeV072e0EePdEl%K=QP*JkoypVA1_fkH zNP@f_jC26-o~ni=h1J&o5~mWxjL-|3s~MlN&ezKl%q_bv-f9By7Y%c1ROPmm*-TqL zIQFg2wW}{gCOL2=itq>N94)siice`Ds15(13Jipd(-21u9m*BEKeEgiBzeZ1P~m** zsv=?@Em4nu_^8{1rJ>H%6p?rSaF zoAIYWpT@hwNi-&~DmG52BfUVrVl^iC5Fe;ZO zv7mKC<6O}^WO5Nmf4FpENaic5%q)AL2s#xUH&9a{$XnIZKsd@M!8rxc&4YkkQRZAx z_$>TqC`>R5OXQW3L>9G?Wh6{{E|spZfLt&UNS$1N%s8hV?Zp$#ptMWq=EtffSWFq` zoRT~+&r=?eAYI`gtY-Azh;%Dc0~vLv#S>W6|5gEy{I`mro?Ajdg`#S;xl@(@kvtEg zc3Mj~66TxJ3jZ~!=nEYN?n)rSSo++;vcLf;b9qLrxbYl^x24~sh^Yd8sm;8DbYjf(fb2$z<_X`M zjQr9$$smQrN8v0*$1kB1P$;wd43@hVz3R@ z{1khAx+_!w;618Dp+Y@2YZS(|2PrHqic%>$ZRt6dIWp~I!IP07R@WtfB2E@LOWX{)NC_0c>0Bm@Uz1f#ZH;N;IpmX_9bPS+Ri_FtiKd7>N&XO(7U3LI6#n z!oPfANcyo6HnGv`5AWoQk-(g%8vX}xC(8bmamE5k^g(% zzP_9PJP!v5h(iq&2;P6s+gCGl{4QZ)V*JhV?+jVQu?Rr0)KDfwu zf4Y2semiw(f6bX5-_W`FbAQoZQ-geYnezag+P~SkCcw|Aht=NQSxMBKv2i&6W`mrO z;*uesql!H4qQ|v1>@ua#&Hd87e12%qwnjO07;%3YvGH2gmV&5f!5k5C`|bo4Abs=O z+{d$W#@ zi}~K#xL0BK6H}YtrMHippk7DWj|bO+l6RhW!*Pd%;heyXkd~AKcc0cym$d^2`~Hmk z3$uIobFS5;_yqYQNjhTg+gd%nknEqiA!~!n`##l(H|uYE*PofEhxux(?YOsb;u^!o znO&_(ZEiiOHLkppPSY)qyj4%vx^1{@YL=H&&8uEp-|WrkHK4?Q@%sQKM-R_uO zr_1K1gj{;RbZlB;6XzuG$+*8TN$kJ+yf1I))bk5i6ZIXG46faJrx5WFti9C>5b_c6 z67#=1z3^>T{%&ut*hn~)W{Lz|F}(QNo_W8aH~O`kIeTl1Z)&pasrqjJ*6{Vo)4uKPVT-u_cN)*#r%z9B z-gU1J{bxV>eqXX~*glglD~9>0scv;*JzM|&;i^t(ZFFtcExXig^r&1hU4g+qwIcL> zUDM(?fo1bY?u|*e!6l9>jffWEWT)--DA~hKD>fxIgV1ZE+he`wORYShqgzN_9_j7R zuwHY;B&Wvu)|PxpNdR#&a|N+#Ow9QGpFcZKefRSxc2Dow$)`S-$uY}&@A$-r?`4A_ zlWXoip1EJ31ulsSgou)Bj`K6M>vaqJUmTt*j_#=2BkRQQZ7NO~36U{miILvk8#Z>@ z3dUpw7_pD5y|^lyI4K(sS@5xKhAGX5$<0m07oz1Crcz6@U={h42b~`>LdcaGtXh?` zb2fydFHN~%_WrCQ=018m2M~AVZ1e;H5B=H(9>M`0Vtcq3@=zyu>w4OeLg47GewZHr zd2c0Emzn*L)~<)OHh6TtdwcNSkt2*{mKg#y=;kK6w zA8QD0Ibm8q#(DIFL9Fv<>!A>|TFGr$SatGsFz!lJYtYF@4X~xqW?%O&16m*@Y`2oWz8T+$|}GUv_F9-NX~&LVu2@WC0ikF{|!N~1k(cYnvUO1x%*M* zUsrz=a-FmSB`7ZaKxzDd{|n_m3;ZX_|E>auqXp77HUB3Vx9qGnC;^mN3kXs`AP|h> zzqI}%=_l9;BdQIs7%Z@u#XrS*Y^>q8StOc1a5liW5#~N{{aC;N|C+L9mK#S_7MmnJb#M^Vhhf#>JW&9p|_>>Vtb$XgkKY17N zPQT&Fe)zYvua-Z-Cy$Dl>59pnqEaCngh-1m{r97ni;#nZtg*h|=#lu+LayW9o6g+M z&lkLHp6^E%b0-!L996@6T<|3>D!&*M+~t9LJE zb(7lmgrT=V%D{c1GN(LI(_Ze4+dN-++PYnWz6n(=jq5yY-}jHkjLTxf&0kKZ@U^XrUXYKiFIR1)c&+_-lpk!VIv$;~(Q*LZzpkYdP5G>) zM}NDBal5!Co_pPXVW<`gFM)<2{>gWSd3lK)BDd?#y@4~&gL@QdB$$(h0WcEG&NA{i zT@ZuQcP{Te`wr1S4srPMYzi_Wp9AgS@3}%6>v3&_6KG7r?ANG=WR`<9XU$Ql6BX}U2#UTe^vQ@}k^HF;fy2xEE1^pL;f<<=3CBNg$h`MPa9+XMa$p1k)2zydk`hjC1 z@hS#ZJt)SCgz1;299=eE@(_ZcJn^IuA5{+5A!c`_Dl{u7*Q;{P9)clvUsv4T@3eRe zaNa!^5}VzeLIES1o=V*e`3%m&!f;ePTazyz;;^OvwL&Z{KeKO6cxCa7WR#i^Az$? z=&6nY7sFZeL{YiD2cf-96-SoEl(mr)j4}!vK){5+eu7(INcIn^h)7`TJ&fHb>Mj`R zB8;Nrcyx{OC+K@unE)Z@@2yL?_$FJo%4@lL0mJAU@D+{J9#V89LgLfqMsF0Gk zcd>GVq~Zq{#Xni5#&Y|db?-}Xna2g56M^sa?43`V$FYU%lqH8;i?<^y)F-2h(=FII zLcdo@z3n7jRk1^Q8EyLlyDD9VQ1tp=_kqAC_m0OU9HIM|tDo$&*4v4DKf0ht&SOqWN zm9A;Vym`7B7v+n|W2-M_6(qMen2!Dl zd7%t?Y)iQ2?b~(jMq-UT+XOPdorkL{b?PrqZfE^Ft}W}zud zzvkX2iU`=UL|ksmio!-TFKDS&!0UAMB+C|Ba~FRseoT5S(mQYu`Nln>21gphS& zjpyzZHOM;JU|uy(YB2V0Dy$-2t%2Mic3Gd}-PaMf<%kd-H0>*IhtF>IXy5Kr|4@dD z^*6!C7Q~y;38AcC@AmEpJ%q6S=3yS_q0>6c<$ue$Q)PbJ3GGhXd`;^Xw$t1 zOW+xQMj1$7W)(bqVjW!gjBB);3nDL+->?ue4`PREsls`aCE$7!zKz1$NewQD1W{e`KTv z8_bpyrBoV5LrGY(f}a8hGV#`$NqL5v#7x%6L*21^9 z`4h}?@p2`vV?TE|T;-3E#qD) zc9u&mPFtJpO$9Mk{3eWc@bOa0b$tC=D}=tzV~(0=;HLO`8XC!JM=^b!b&fbN>lt&h z0SLc~$#(R))-&paoYr|fxNJSnHe~}yaOB3HB{n*DEQv1=*YWK~%nOnYUG#CA0zJSH znxjNoxn2(!y)lBwscM`ZKJRR*^8&R+QEzV=vBfygb>a?gI`V(Jgj&u8ysu}B_WU*h zXmpphb7h|QclvpVA!%4G{AD%S*5)s(zl)bUcq99z*$r;YnO!h0qKf*3w>Kjp)-x&;@%lEmE5H19-kkI?;7C&~?*1lfM)4nC7wL~1-Q0>xnj z7hBY-knPF3U!tkEN%63_)d$}1VxV3v{c`vgAulAxYBLTHpm+#wSt@K%?a>m%rR`{< z>fm@PT;^5MN|6FRq$Rnt@>*qU zcYZone79a1*==m6isQHn^D23|3eKhq)<#Y+q$L_*1Mvu?MAvbrO5?c7011Z|`sc$E zNMy2K-bvNh;?L9W78q@_J5|Qa7W@uvk9TYo%sa9WTHL_yITZ%j zaPRQn=fm4f%Ge+}^vv+gG`B$MHzFX=+MHjmEq+T%aptbM$TUVz=;0CLeM_FdCdOk{ zIhvV&vB66Z`C^v+r7eo<^p(lV<9Ds*YdX^ApFb&sKAdaBCa@@TLn*L2ndhnzXQRIy z83f)Fbw^$f`mJ+#2r7xx21(7<4NjE2f90*h=4(V?ex}WPNKnzrS$RI!68UvciV<^6L~;?>Cv_|Gd}&ClCCuP4v67$JqtmWZERt;qT1yCm z-$S+4SCr(LeF8XkN?gn$IX7h%bD|b2=d0_m(Sd?UL0TvoWAu!Dvig00PRpW1cb}nb zAYNg)0stj|d1C|^U?}t>1m7Va6Fc?{H5Dq8f`Evzu?%3$&miv6{8$-Vu9_q|2e5#^ zEQmVb9k8hSc1-qw2wMw{IEBE_eF--agTSDaKqVW|4UW$bPQ);NI{twG!$d?Ap04$X zLRPDTURzSGV;0(zS?{a~Ipkc+GlPKe>7G4Y zjLQhyag_KR5c;2#D4_qMJY6vbQaYXeMalaRyijNQ4`n743YlcIA`f?+`H|ASzRa8w7Kf z)|cAL_>lpFx6ur!$8tO%2nGaUvIj+3zMnf&JRzd0(*5Kh+L>A$1j0OzC(0g&UU<_a z6ojOOc>jkO1oW|%ln%bbBQysSYy7O3iML7xJ&QhQ-g z)n7((!5^wAv*1ucaMJxqOS5@r8K$U>y3@yipN9Xenng_rkhXi0WkRwmH!%o7Q3$GF znBD7z-!d}?*e?**xJ+|DCSI`2^bDON*qJfOP`F51U2XCHrydzG2tz7ICM``!$+sp% zQvYaKgDw<50c9Mv)*#$S6u-e31YZ41&ABoZP~SXU9K#bc0!dx&){hGF{@*JMKuGpD zd}DY2a049oOzNee%|ieWTws?|vay_I_+PA20ExUK%+*CK}7v#No)Zm&gU$kruMB zdHf_5#X=x> zxZZi2q50wUv&r?q;jJIT#6JuOBq-r^A80(iZ{1OKeSY>wr!MEbN+IiZf6{&DCxYIK zH&g)}Kv6aw)2Ah@-XtN&SU$=;6n1!PL|i@Z+;i>TkIRP*VW(jwryXMBefzcM$%5x< zS+k{RYJT<1)8Rcaxj7-{`da1js+j3o2^jTH5rC`N>d*~b&UvV%KfE^;aCUtia((sV z%aNBk`O=z%pSVz5V+1f6S7W8A+o4}gxOp~a>^luv-U?l27NW${GtyKyN!R-xnP)Rk z0wbw*MDt}!+o>3;Ca3@OZ)3|_UCWoiZ!n$4RsH9k`;29v(s`nXfsVJzFGw|8I5j?a z@+Kl-4Ci016_hf%;(5{-^+t0Cf@_TA$4*n4U}}hUeaLmYUlPB2#+ezUnR(}Z3hu(B z!#nz7)_-c#_ivUT%fv%F6zPc!uB!!C&y%MTuCK$aqN2L*MJFg7-U%IV*G7Uc0uN9e zk(l5C?_HV6hyuCN>-db#bff@*7^c5)|zJ?=j1 zi1DlT&LEC{j0~(OO9OT>$^=R3YTJtwh*DOp?OimxIGe)&WvIzL2zXlXcPI=T%5=Lf zO-T(BtbC0J)=(3aNs{z?hal{4z5?X~u(K1osiN!w-%XBgmO-VQMEhp>=1?XlP*X_K z7r_yX@bYmL^b@}isp+leRn{QPGI-#MvwdJZxAjGQ>LJ3c5BhGxEK8a$!rtKUbP7_) zOS9=-g9LNay8cc6*B>i=#c zYCycUplP%QbU)a_B9xz&j^3wQzs(Jo|oQrENmesg_Nl zXWCeEZP>h=l8;4_LDDB0Hq*KrYsRGQl2Z3bX^td=XPVCdbfiHTkC2n!>CNfT?5 zRJc9YY_|{+(|VjOFS@_KZAMMHh&Ktug5@00LHg`BB|2@3*urC{OWMLaam#zzDu*h& z_wHH}Q(#lHpyv7=(yNv`30$`sO*bm05a3n;-*!mLEP<(} zu-O+>thgzPS+!oji=v=A^#I&U(G4FIkEVufe&@n;ToNr2Tljn6jig;4%IfOC&FAyH z4m@J%tQ*x7gK=fua6HT0jv#osf{q|OoHpY@%G{33^MD)w8%{8G1zm~a{*CG6C<+>8 z-x-91`vMw*PfvLk^aqQ-rA`uCeuTO6zKn#D25F7g9i7Zjza1aZp=L?+{VVQSMdgy&ASW` zS_Hg7oU3AA88Xag(kIM$WFi}_tlA*jyQelTG4v)@Upcnw0Gv{XU*o^?X5;bOfSQ{F z3|`%~ajRtlEESD<22j3P;T=0Gz2mb^TYQcpQhmj72>!e}5_<}`3^CK?-5;6tSvzgs z7pG8^`UF$7dQAHj=^WjS+V0OTNW9WGh9l0~L>iLup)3p=iiuRcb9e)Rn7#j4ym=u( zkZ^z4jFO)uLt7qZV*M#v)Jm*Kp`TO%r1~q4Q-d*H(n4eENl^e&UhwsgN{&@eKE}mH z76cRvZjyy~_5Rx%1mh{wP!1FesT;Wn2STxWjq!L3it%9e57atI2F4o9#`;sk57bIO z^?y(Y@sbKp{z9z_j_aLE=fBIsve3kV3gsX`F_*5~DOKH8P^I@(2d@h*RPyIu{#1w* zz|ba{1|7EJ1_dOK!qUJ0wlIlhp(4X#Se}B! zJAfA~qc68OW*xyXi3~n~hXm6^v1Gfz=|p3ZAqoslOiAr)<|&R+)7NC+&mS-h-~j@Y z!#NBOsH<|5bg(T3f)NZ62k;nsPKHY}7?(;hkcU*52^~W@B6VAeH|_tASUe1iw=Nw4 zRW(1E8WP$!c59uC@O&`|uCgnL7exBK zpN=r+lbK+#p4~F@22NWmT%Df#nNvyw9ix%O0~eN&;G?tGsDi=sNrjbK3=!A^ixs2v zP`Zol$tMv>Y=Q|d?aoG*GK3N`qEIx5_M^g+MmOCfL3*N2MHE-uBQH}PJP9{)E0dYPdahln_7h#rmF% zMhr7)VpKtbG5}3QaWos_D@84h6s9qwKi$c+F=BaYFEZ{|mDF#!;gU*&ZaBdWJij3t z{OEu!fm6A9R+NA|CT)FP0G$bQ0WCN7M^CN$>?^as5~Q}ugmhA&@+TT)WvRjcMlFQ> zZ&VVbU`pbJTB=k;m4718t_4OA2aoj;!DM@Q!V}5eO2l@lJ8Gi4n&M#QLVGwJl=0?Q zl{)I*)%iapW?e8T|I)h$`GLIA9)9D1pfW2}&W#^b5c(PnZQ;KvjL9Jw&-=Ay@4D7!pbEi(5Sn3X@>vJkd zM8#0ZWAX@^<~@cR&+)Q}M;m_QVfsv*nT|!>_+m9)tM;};SxV=#r_`a+=q7?Tw#biT z3T=Nb#b|CHskje0yH9LtgIIF1FA^odwGy;jxTdHjY>j12p{UxEmLFk&HG?O$zOGkz z)f$A2g26RpQT?_{>s#V=HG%woZ4atO_+`XN6>(e!>;nBPCkaD)76g<8pIGRN5*__7 z)|a$ng0Trl6myb=MCyeo>i%4IkHm5n^0^->_Qrk>#`U!D?93^G8Y{lvyNm?EQLK35 zUZ z1?OB=fHwpwo<#-r--aU^52;IW$J&nFrXop#*BB|hfuLy851ExFvb>mxyUeDZ}v zixzO}m8K-HW@TdDxw`cNv#NXgi!*L?BX43K2^Ja+;5Ih`ywRYfy;}$S7CS;uH}gXU zPw~TPFdWb+g$mFqKtT{Z)|NMpaZ?J`6hmHSQ`7Jsn}R@!J0*{6{ZmLFcp*>{kLw&m z3@M*@?>;z|6!*izDM^xT>u767VE^=Q*sfCxZwwFe9a|N3I~w{*;Xc1W<&!;msIC-g z$RsV54zO=1DYoL8DRH*qKT~3D#nV&bZ3hrxWVkb-NOm0a!z1F*qR|IG@!<@dFn=V) zBxck44JcpAFL2)BO1yw2dL^4R0a=}7XGQsQgi7BI)!q#nlF*hKv5=G{X5$(r7?rOwXX%7yC{SHhcQxg2=T(2~3Zm`MmgFaMFl63fxX%LD`fQlNM zVqaL_N=(W6DtmHL# z=~L^1C)D9)=ay*K1{}*lcz62r{cnmq^p0tzAdS9SU7dt-R-os_lUc?*`5cWx2>4P5 z+!2>FSmh!itKdhQcbXuSto}4f5%t}9Gp$CXjd~(_S9|J(ILuimTVqZxKD@yry zk+)4lg&Jk64+Ca%fE^=yv^Q6Xywp!4VP$7~xeO^gaACRIMVo~^h+aV_H0sD5~ z-_@u-EZ@A#hKc$89>qAheLt@JC_Pj3D25Y~@V!sFRA5Ln>Jj`AcNdv4p#u0AL?+zF z?S;QwhP*EmDBoczo98b+&TWj3EM$jic9C;2ev%Rl^s*4x0yFy$E98EU{V;zgCj63D zaSctKKKPXAdKAR_{uScy#BfBaJM=ko8ibe#uWw7~qF@}buAwJ1JPsK?gsu20e^_E6 zECAY8`c?DJ0{0n}FL3C;y?FXP2E_c^$?T&TaL`LSmwWmOXjn+>r5DB?Gv?zKuG`C- z=xY(G!AEWISWJJ|xrWBK1=hwca`88y9R;{o6r{t3czIWKYpz}79*$jPlL=-ZVC#za zlUdVRLjcn8YJ0!g0e8P^EYAiYlT>1@K4i3f36x`wdZ0rldp_N?rI1n ztiCrO!-0Zg;QUmAH%HuId9YW^74{c|Eb;pa+FzFeQJ(=m1Kdl*S1^uG7jqG(&+Xpmo@6Tipo+ zLgNA)h@B0YZ$gmT`|8GjhV8Jste6q~Q6A2^{ola^03|%9vwdd4^OiyL6UqwM|HxSl z+gKrtUb*yitIWayID}*!DxS#=vw5@hm|axQuR~#Nv%8p)?69w~#fAeMr1Ng^OVV;j zcs{Hk`pi!#LL&VeD69ATZp;@|2=2*O`}B>Sfefe@eV|F5k~TyJAljU8pINgh31-$| z{7EJkfK9|0z&&Z3p5c`4CX>{u^coqe1Ob?cM=*=@3cRCGyrVfRUV4L24 z%HHA!$vvrqC&fMafKXUE@2L(g)JZ5y2~WFbDyZk^(j~L;ZK`;SbLtz@)zQ4JopS7m zie4Hd;5vRGs8OQ?K(jw-D7)@?Yh2~v_{m{Txka}Zb`ig(vhcG~^u2Q%8JE50H@IAX zx_-@-*E{0*%PAthB{%{A>B0=NSJG0icFz3baubWAxKB%+cJP=zL1en#FbxGect7 zLejvQ>l5@5T+cV0gF4Jj8xg6_lAqE93AJ9NNS!!Bon~7t$d~{&(vs^j5C;PY2Ze>RFmph%*RrhG63W zd$gg3>&RC(n$x)4%+$Qh#04A%WdMx~q9_lo_V-MCB^tI^aztHgw-iMHT++LJReR8q zaUy!$110e7Ffa2?mIrq*A(T*XWO>lfo~$y{mRaUOL5qf3M-d=7>$;D%)ly9p3VE<^ z|5N3lkfkul>&>%O;-C<5LWCzSK${N|`Xh=1iaTV{d zsZN$Wx3m%_D%Up84$m(XpP?Exlm>+r&ky(z2KaV61LIzd%B@Jy5Onj>o;U*&$N_dC zF-n969hFOu=f~v&-d*WhL&b{}wf!=q$?o45i}mnyyMx8y&&dKEC5&WWWyx#>BHkj& zk~0l$@G0XnPk+4#In1s;PJI!<68X+K9NT6!O<9FTai&7za-h9Z>kRinp@Js)XS|p7 z8>XaLa=mlb<>yjhcTo}<*j;3GhhaxPDAXI1#u)OR*j&DC%FWG$p{HJth!XwZ4swGMgp zILU}((gYKxY|Zw4?i4iCRQfl$vET#Aw zG_CjqcmzHoY0GL=p`>^6=J0-u`R%9u2CZa}ml=dG|An>!$3Gd134-zb+gBbG<-cD# zk|MGkC?Ah7;}heWmF8JOC9h-Ogmf$Ce)aK_HBzy`2v`xKgtn(6RFGw>9Z4uaZiwxaAe#x$V{10*C_HL&x; zgr{iGN6mI{?f37f9PmeIN6O+AW0eW_7h>{l2RidsgaHK_{0OUHNVk6paNBO!Pb7oo z|3?7T0Td4=?x-DmmIs)GyevgYkm*R=e8!v@NeM}bjHC#_De!*JRw-UOq$y8b1n}8F zJ6_!PNoq2F{)bAthP_OjDfWJ&E$N6E@olz$W_TO!Hy4&~(G<7irhkblzeV=V^v|Tj zh2&Wj0c5Fs-``ZQBq`Zp2scdmJCId`4?RghguenQP6h|+kzURSWOL?^N}E{`x7P&L z6Hli!J(4|~eYp`ZrO!8`EH^STS#_Kk_#|N61C6L0 z?@Ba|!&pt}Ap>GaJOoL|nEt5El8`LWM~iGDCSaJ01vDm000fp@RwFagsw$=#>Z5=- zWc{w3*>&AS#*>)%>V-p}$@Jr#%;M`A;>qOD)QxsTYe%|jrH&IZnj1!DV%B|M4e3vN zd&v-w#Vs`US8{lnr@JaQ!5JpXP`& z#E8U6LIb{t%;}?mc(rZ~WF#yzDQeAevd_R_@CIcBmV}0fG>PU}Ad(RZbbtJ`sk*}; z6js@F9E`e=&TbwkdzZYB?J35+KoBp-Vs!4Uj z{wFs^*H(#s>y8O*vz_c7?J-5|rW}sznK5v@JbhZLx3={uX6Cb&q9S=zu$is-dF&aCJ=u$#VlVNDrZ+e}i zt@prR4aBV5n>ao1-;T8Zt)y0ibyRqSkeEz~6M#LCCLbFvX!{aSu)Kne(@tM!7j$Sa zlleS>$VVNA<(?Zv^=z97$vod46`PKMa40rm;u;nCOhrk2Hcu#W1c{TO$d}0t5)pU0 zjs_2d4;jhhj`RfzBI|rUii#lZfHF!B(n5*tk9hdH%)!P~es0h><7{DLu7iZkU2|-o z`DlkO<$JQTAH(9xz*1iAR+!CJVXT+q9GS1l7Yhk4N=Fd`_(XhN&f#2$E zO1tARTfxlbrn_VE0`Rc4U#)uU|!EF-l;nce~TiW|#AN_Q&=JOb#e))_Dtf7gmm}!wS>LWCWKO>ZY;$H$78BMH z{3P#X2lVYz#6yfa+QGpx2WWVDz=c)EA1~fuutvq7oftuJaqZmnOK0SmcD5qMQwRnb zMeLiWJ9QrO_9?ggA!-uhNk??Gs3Yl^NkmY!<^yC(=H=LwUAcm`GH>IIp7sUo*}>xg zaK>%51yCAq!tt5{og7T)^SL^=0Ae|byXLJv_g~56h2P7Jt27;J!px8NzV>lnFqG9I zCwjD%MXYPVuG@ZAU@V{J+qeU+`u%^}x(cW$y0^b{N_R?kH!3M54HDAb9nykyE!_>$ z4YG8@(nyHZ3J8+YAt~^!ey@LDIq#gaGiT?_?|0|9Gta$GoI8&QNVdxYol>@MNt&?# z()J)6sehhSa@hA0lXyk+wVS1|M`Z}UYPq>@9mvT`IU^Z+ev7=hd2dM54X(55DR>%PdKMw-b<=!a@FZ z#h^cy`{-xI3q|`P!{H@F{(XyO9E8!=D>RhmEZYbPhEw z2?n&?yu#jvl}J;7#c>eiE>WAr4+Iyw)us%bN#K_PuDh(}R$%_t_HCUFbpW&kRU`C= z_gmXN%uUq)rSQPX9-BT+bikxfXYYD~`d71PE{OzgBJ#E*@kUH1GCD30bTQQU^##u> zexkNBda50&vSojgarQ5A`9Ig&b0cc5SNS&`%`~6G!Kfkp)xvn{9k#Dz@=+0oyjxmMW}j`{1_Y1hTn*`pF%oS<;!TVCYkd z_x25H&h4zTL)%HjuR4?nI=1>&E2@}&W|1;6;Tn` z-fcnbPZ0j@u^XX0S5sI3;06@{!1>){7LE>XFO5y?%zxIBT1x40SmY!dIP{BTOwD>> zmk7ecW*!J_7{ws<0pOC=5 zpSUu)Kf5K@Y4TvLr+?1O+6ku$5rUN{)FHy133!Di6NtN#j=k}@kwfRB z1!J>jN=tSHJ({mirTb?$ef(&YzH)k#ULX_{_Y(-_kn^8rZWu=N`S{`)#BGX7NwSsj!GA25s z6lT7%=L7R()9P!4{joAft-zU*I{mjHLOVga4gbcwnl}%&g{zP(Y9PF>ykVBNtIQLdxm&ByP$2Bt^8*;LA%Rr}dtcQ;`()!OGe- zM+8`o@w&qezlaa+KT1JhaZ_e>+ z&-JUqnU10(grBJMLJO;PedZeC9@#3jH@`ny{0OH>GPdElt{tQ5;~m=0NBhp*0me(U zeW-hleYI6$XnWJQ84l!)7~6(KObd~WsxF&g#YH-#LF%igzFmfDN1t}XC}3{FofU4+ zbvD$z9z9+u#yB6`2l)iufoDm+z+Pj}&dBV8nAU9PYV?~?Ymf=OkY$@EYPuUYP_gxx zlAGDWsJfoRt&g@~n^WMO!~^9qf{+qsX^L!GKC^mZ-4Gn*hb_)7O(8>&(eaAh_hA99 zcNFoIonLHN$v`L&P+xYUEK3HamY`4amHOpaNxMAJd|09V@GZGFr&w4oEW8U9!=k3p zkM}RQWaMb#@t(65C`^9u6U}B9$9kdtX=mP(=v3qS`}fgIYwPk1UW6lqnz?*~H}H6y^8JJ8mSq^cgy##W~6!nFV%9HEd;}4OG!zPMUs~~I)Smu?nXK{Ctt9OL z2s%=My&sv_E0dVnPQR!x*HRA0dXxeFpf1L(4w{_EeOa z4IAi4>gn>~2-j%c`Y2tuB@x&IzXwDQRd$|b*WT3Fb8`lifxjxe=gjmR!p|1euo+p z9}BPI>V}z5{R1wV@7~ThQ&mX@_Gxz>oO2x&k|*QXcIJFyOb)>ayX1@a+p~U?`Grn> ziVZcAW~~xx%_!6vgbv*i0S0xNlQeQe_Kcq;q+XYd&5{j|eL~_OanrPBi3jfb+X!H9;}yj~ku@J~^~dwY1==FzTeaRPF(G$r z;jOXp+Vv7keWr6{(KZ&nsIK^`9ia-t$OZkc%c(59GrxJvi)wbAnzhM8?2>Pl8sq0y zL~grOb0V@q= z&~9#HM=w;sX94x4+1B^Jdz`1YoXh6NY*>2Mx_yh6l7d0VcXlBoOo^vE6EXW~WHThc z;M7ljEhVYFg?VOXmZ3;`|HQgXHG)W4HulBWH1GAxeZw7WU}3L9_Vs$Ya*8aI;(HQn zhW9u)>!qBE2v<+DCS0PmT(T&zTPMW_U!~T*DSF-bu9UMZb@HO2psJm5u{Y4MbSZLH zfWU1nD5w#%T*}XC)R$)uTql=#^BuN@QmYC(p>Czou4j76W)ETTBHrP~-L;?uuF6g) z#r8a_8h08oI!bY9DO^x5xsm<&QE@r{w-LGukcRaqof)0v3yrAlVXRdvUWrCdX)hCI zkUOs_bDJAA7Q{Upj*}L*5w6Jno2syI+9=#B_q%Shw`CLD8XQNPuqkg29ZOwTC1ha< zKcFhHbS*!3TZj(dQ1l!E#!Iuj* zu#E)Eo429q*JIuZKlCiR+>RN0f@P=?P)Sdy`+k}N6Qc;I^QvlQ*(U1ZklIFNV7uV`RSGq>tI`6PoJ>;1|l+7iRMe?^=oAX`$By0F0b{A1bPhS`>E{rn`Ct-a7JaoDOD zF^^WNY0N9P^o=rR3yc+74kHG{beb45Mp|@=Y$+3t&_=@+<pWLsev!b}f3f|V}Un2cI@#O>v&y_$YJVdDViVHoOy1TkL z+H2d}aag;V+y9#Os-o*qdpYp{7jLA76NZb0!|^_ZTXx0HG1-t37$r3^>N zJUoo|Rga5c23|85*3zl$(RNih%I%O7Q9~eZIXE!NPAkQS9>hx`!?9^i*R|lUNlv7K zea&8tC}_N2#g?-~7gE!VnrY?|{AuBVTp}YIpE{uOFhJ#^_)D(;uMYb^>3)@l1y0mK z?Q<-|FCEHM4OZpmmW=t@=Qywn5>8YVaTATTtx|%jEYLuJ-i-z?|-9g-h6IybOLbAE#bh`Ar9t- zHXKvIuRQWNnx$58etdTo%A&`{{)~xn}^K9S!6;u>8(PQJBwk(4*Sz z;L{T_(T!jSqsmEUhADblqyMXV8oT7u{XsRi9$uQ(4@eMDr( zpgp13NFP7m{@iXk)<`4kAmEL-(Puz9oGm)u?Y0s{z`VqclVs{lL|>`jF8^i-h31d| zx~kOWhlYT2hPkT5uIuz9_rk%pe3~Y&{hI!(TxC@dTbDET;|8VceczDf>h*}KWpMaC zMtkHg?U~W#(`7Cn-ujXeq|4J3>dOaSTHIt>-J-1<610aG(HpH z>DT06%(NoDaJ^6m^Mu$TsaNE^`@zkR`t@YmJxgWDRMWY=CY&L>>`NpXYEdh`Z3tEk zWL?^sUS$n|UYmkfOJ!99q%c(?E{_}A8$T2D&3P&ar zZk7px@X|mbc>zJ8Z?j2?2m*9+`=QGGZOQ>FAI{PPeE7&vIGFs?gBXWdYAoSDAjDWj zqB_f=IL@)M2>D%}j~5Ezdn_qIL=jf#W%xhG>_>EH>XqaEz|dNq+L@hx4SwoqRDgj6 zlu@=FK+wa|h*xVb$(7wT05LSn76sJ(Xf5gx@K7GD+c0Bd10ScWn8u!%mNnQ78G6)u`ns7n|v;% zy=4DbclXZGOFTX27_xA(;90Q60Y;>+vjl>3Zj=Pw^zJ32_HRHYyG|D-ZS-|pKyVDj zTT=86IT;g%i4(E%#1WJm=1OQEWRVR}VUl6bzmNJB}n)kb3mB^as{Me55!K z9kTI-7dvn}dm^xSU&Eqzn|)K%X~+YoV9`!6-<}@&-`!(0P)3-93nrFn@&W6v366d9 z(3H5hpIcvB!19#k*5SX5gj%~H&K~q%KX2}jWhxge_$~sS50xiP37)Nt3!i}W1#XZ# z5$O#(HmjTwH&uCex5YAipREwL9fLG1e;`+5C{%|6^|OT%yZy#)=J5?ZwR~5|{e-v5 zV_x5PqA5zFlaj7tAi<~@=v{c~AG?80Rz-#NS$Pt(?;O0p+O^cw=9yX=RTC4;bU)?U zt42IO7(B<`oa;Uqs}+C5%GuXWGT)8vYHO5FjA&yd$ulMtvcPbkzkHAO_lQ+6G;7&` z000C(1^@`5BNnu9_pf0J>Ulx+)4|x0 zyO2$S1(x4>u{eppkgdi!R4!2wH-p~T<70|acKkKqd)QOo`#QXrZduMMQ-Q*2QerYl zSZH`e1JpLhd{6NV;f_Bq6{4sF#~XgwTUxm7%sO3ioe=Wbawr%qFzlN=!SO-iM29o? z6hCX|9CZLyI|)|2*u&>{18g_7^sWMIVXe?d3f|9{=(O6k$gQBUMhEf^h4QBAq7n*` z;RgiSthPGuAamkjDpP*Gub~--j)DMs1g{~Q7Si}8z!8jxb`p%6<)pzRYgqj5;qx3S zlfa?zq`8Xrv=iZE4h>#DB^H;AsGfaSuec_vT+LLo8s#+`jFBNm{J_9%k4!5LGLxZQ zOk}y8<$k}YcU)KzH3Eo-Ze{u2FeVsPOAIMOrtN+E^%^v};lBRbjVd>0>!MO5Hc@fP z2u5LE-~=6wiDk&QidTV8aa#sCAhsswvqt*n$-=4ocF1f_1H3m&3HUyUU*mI6P|i{L zC^4Q&)B(@Yu80f^SqXAkQZvf!j|HnlY>P<3aJ5=T$cNs?*WgNiVCJ)|R!2?}{&e|y zxppsnqx(A&Tr$3mf(aIFku;e7#%5%u#VjS7Lp57I#pjmpJgt+BOy!(fmHOTd-r+rAZt%AJZAC&3wiwJyRP zi}wx`H%6ScE31=R?f&}l2j+02m*u+XDc=|3v--XF*HF7|x)ZmmGss)nEva&pU690j zG5V7~Cho4xo!<>TkEWP*zh6D`vsZC{e|KVe`KA*ox8uifaG+>UZhr+~Bxh4Vf-24O z8#+uTrl56_*5j0(kO`5QkOVias_jSB6H1;|48fq}ROWm?on9Leo4bY2rptEAHh0Gv z?3jym4!BK0Hvy30{WTFJ+@{RkO_B9;=_Vbt#yF4-vW!ffwcC?%@CtnT596cgF{PxARtQA`LD*siPn3^zI@Ta-G z`*}O=&~=;}zP84IgNuAcWHV)Wn5gJwacZZI{iYl~@!56`*Z4Xryh5ZrcSIm< zxMH9s;^bkT_j5xx<`n_@Q?Xup4*0Yiw47H+xQ!dw0dsT#mFXzD7&#F%2JqV%8!_RE zbv(Jooq)LZE3a=gZfH4*B?VJao(4MtuzJf_z`G@4puuwBu`=u)#`7DoM$lyk0F7{3 zol-4;bD{g=g6D*(H0BWwJrbtV$g2R*o5x%}=63t_^N#on82r^nIon^>vNQ^(aE*%Y zDI9DkA2*Q(MI0cSqDC>fL}P2y^bx0TQxHY9oRmMlGd9>b z^~^D{9)sIPGFcA;jZj(@)E=xnON8*@lSO~=(N4IszbqM?T)!)V+eRXl~ zizL|5uLzBu&`nG*Ua0l*xrjr#`ru0QtzWV%9oO<)QCL}Cow*IvyLhi|4i`fAO&DW` z%t4UGGWg1A;{}FWEoN~bB8gSr+yC6%^Ms%GimJ%Nz~aIE438rN&e8?6tJI3(lc5&s z2sGyQ)9v`Z1whXM0J@UUV6eG^o8e0@Cv#W*pVrw!0xx=bu}kQs%g{J7+HW-U7yvT> zrTBjv|Cee15Evecrfva{6?FbJ?7c&khg}Xge_Wy!A1d!rz zLmMB3HbwSV<874x!2e(Jf0O)YF90hDo$V>zuex3Tn~N6 zKV0J}|K|GJlYGeX(AE0GvYz@+ul(hBJ;Xn>2mj#xGykPxe_Mwt@(553`l-^`0Ar|n JIOqTT_kXp1xh? [100, 200] - * segment2 -> [200, 300, 400] - */ -public class UserIdMultiSegmentQuery extends Query { - @VisibleForTesting - public static final SearchTimerStats TERM_LOOKUP_STATS = - SearchTimerStats.export("multi_segment_query_term_lookup", TimeUnit.NANOSECONDS, false); - public static final SearchTimerStats QUERY_FROM_PRECOMPUTED = - SearchTimerStats.export("multi_segment_query_from_precomputed", TimeUnit.NANOSECONDS, false); - public static final SearchTimerStats QUERY_REGULAR = - SearchTimerStats.export("multi_segment_query_regular", TimeUnit.NANOSECONDS, false); - - @VisibleForTesting - public static final SearchCounter USED_MULTI_SEGMENT_TERM_DICTIONARY_COUNT = SearchCounter.export( - "user_id_multi_segment_query_used_multi_segment_term_dictionary_count"); - @VisibleForTesting - public static final SearchCounter USED_ORIGINAL_TERM_DICTIONARY_COUNT = SearchCounter.export( - "user_id_multi_segment_query_used_original_term_dictionary_count"); - - private static final SearchCounter NEW_QUERY_COUNT = - SearchCounter.export("user_id_multi_segment_new_query_count"); - private static final SearchCounter OLD_QUERY_COUNT = - SearchCounter.export("user_id_multi_segment_old_query_count"); - - private static final HashMap QUERY_COUNT_BY_QUERY_NAME = new HashMap<>(); - private static final HashMap QUERY_COUNT_BY_FIELD_NAME = new HashMap<>(); - - private static final String DECIDER_KEY_PREFIX = "use_multi_segment_id_disjunction_queries_in_"; - - /** - * Returns a new user ID disjunction query. - * - * @param ids The user IDs. - * @param field The field storing the user IDs. - * @param schemaSnapshot A snapshot of earlybird's schema. - * @param multiSegmentTermDictionaryManager The manager for the term dictionaries that span - * multiple segments. - * @param decider The decider. - * @param earlybirdCluster The earlybird cluster. - * @param ranks The hit attribution ranks to be assigned to every user ID. - * @param hitAttributeHelper The helper that tracks hit attributions. - * @param queryTimeout The timeout to be enforced on this query. - * @return A new user ID disjunction query. - */ - public static Query createIdDisjunctionQuery( - String queryName, - List ids, - String field, - ImmutableSchemaInterface schemaSnapshot, - MultiSegmentTermDictionaryManager multiSegmentTermDictionaryManager, - Decider decider, - EarlybirdCluster earlybirdCluster, - List ranks, - @Nullable HitAttributeHelper hitAttributeHelper, - @Nullable QueryTimeout queryTimeout) throws QueryParserException { - QUERY_COUNT_BY_QUERY_NAME.computeIfAbsent(queryName, name -> - SearchCounter.export("multi_segment_query_name_" + name)).increment(); - QUERY_COUNT_BY_FIELD_NAME.computeIfAbsent(field, name -> - SearchCounter.export("multi_segment_query_count_for_field_" + name)).increment(); - - if (DeciderUtil.isAvailableForRandomRecipient(decider, getDeciderName(earlybirdCluster))) { - NEW_QUERY_COUNT.increment(); - MultiSegmentTermDictionary multiSegmentTermDictionary = - multiSegmentTermDictionaryManager.getMultiSegmentTermDictionary(field); - return new UserIdMultiSegmentQuery( - ids, - field, - schemaSnapshot, - multiSegmentTermDictionary, - ranks, - hitAttributeHelper, - queryTimeout); - } else { - OLD_QUERY_COUNT.increment(); - return new IDDisjunctionQuery(ids, field, schemaSnapshot); - } - } - - @VisibleForTesting - public static String getDeciderName(EarlybirdCluster earlybirdCluster) { - return DECIDER_KEY_PREFIX + earlybirdCluster.name().toLowerCase(); - } - - private final boolean useOrderPreservingEncoding; - private final HitAttributeHelper hitAttributeHelper; - private final QueryTimeout queryTimeout; - private final MultiSegmentTermDictionary multiSegmentTermDictionary; - private final Schema.FieldInfo fieldInfo; - private final String field; - private final List ids; - - private final List ranks; - // For each segment where we have a multi-segment term dictionary, this map will contain the - // termIds of all the terms that actually appear in that segment's index. - @Nullable - private Map> termIdsPerSegment; - - // A wrap class helps to associate termId with corresponding search operator rank if exist - private final class TermRankPair { - private final int termId; - private final int rank; - - TermRankPair(int termId, int rank) { - this.termId = termId; - this.rank = rank; - } - - public int getTermId() { - return termId; - } - - public int getRank() { - return rank; - } - } - - @VisibleForTesting - public UserIdMultiSegmentQuery( - List ids, - String field, - ImmutableSchemaInterface schemaSnapshot, - MultiSegmentTermDictionary termDictionary, - List ranks, - @Nullable HitAttributeHelper hitAttributeHelper, - @Nullable QueryTimeout queryTimeout) { - this.field = field; - this.ids = ids; - this.multiSegmentTermDictionary = termDictionary; - this.ranks = ranks; - this.hitAttributeHelper = hitAttributeHelper; - this.queryTimeout = queryTimeout; - - // check ids and ranks have same size - Preconditions.checkArgument(ranks.size() == 0 || ranks.size() == ids.size()); - // hitAttributeHelper is not null iff ranks is not empty - if (ranks.size() > 0) { - Preconditions.checkNotNull(hitAttributeHelper); - } else { - Preconditions.checkArgument(hitAttributeHelper == null); - } - - if (!schemaSnapshot.hasField(field)) { - throw new IllegalStateException("Tried to search a field which does not exist in schema"); - } - this.fieldInfo = Preconditions.checkNotNull(schemaSnapshot.getFieldInfo(field)); - - IndexedNumericFieldSettings numericFieldSettings = - fieldInfo.getFieldType().getNumericFieldSettings(); - if (numericFieldSettings == null) { - throw new IllegalStateException("Id field is not numerical"); - } - - this.useOrderPreservingEncoding = numericFieldSettings.isUseSortableEncoding(); - } - - /** - * If it hasn't been built yet, build up the map containing termIds of all the terms being - * searched, for all of the segments that are managed by the multi-segment term dictionary. - * - * We only do this once, when we have to search the first segment that's supported by our - * multi-segment term dictionary. - * - * Flow here is to: - * 1. go through all the ids being queried. - * 2. for each id, get the termIds for that term in all of the segments in the term dictionary - * 3. for all of the segments that have that term, add the termId to that segment's list of - * term ids (in the 'termIdsPerSegment' map). - */ - private void createTermIdsPerSegment() { - if (termIdsPerSegment != null) { - // already created the map - return; - } - - long start = System.nanoTime(); - - final BytesRef termRef = useOrderPreservingEncoding - ? SortableLongTermAttributeImpl.newBytesRef() - : LongTermAttributeImpl.newBytesRef(); - - termIdsPerSegment = Maps.newHashMap(); - List segmentIndexes = multiSegmentTermDictionary.getSegmentIndexes(); - - for (int idx = 0; idx < ids.size(); ++idx) { - long longTerm = ids.get(idx); - - if (useOrderPreservingEncoding) { - SortableLongTermAttributeImpl.copyLongToBytesRef(termRef, longTerm); - } else { - LongTermAttributeImpl.copyLongToBytesRef(termRef, longTerm); - } - - int[] termIds = multiSegmentTermDictionary.lookupTermIds(termRef); - Preconditions.checkState(segmentIndexes.size() == termIds.length, - "SegmentIndexes: %s, field: %s, termIds: %s", - segmentIndexes.size(), field, termIds.length); - - for (int indexId = 0; indexId < termIds.length; indexId++) { - int termId = termIds[indexId]; - if (termId != EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND) { - InvertedIndex fieldIndex = segmentIndexes.get(indexId); - - List termIdsList = termIdsPerSegment.get(fieldIndex); - if (termIdsList == null) { - termIdsList = Lists.newArrayList(); - termIdsPerSegment.put(fieldIndex, termIdsList); - } - termIdsList.add(new TermRankPair( - termId, ranks.size() > 0 ? ranks.get(idx) : -1)); - } - } - } - - long elapsed = System.nanoTime() - start; - TERM_LOOKUP_STATS.timerIncrement(elapsed); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new UserIdMultiSegmentQueryWeight(searcher, scoreMode, boost); - } - - @Override - public int hashCode() { - return Arrays.hashCode( - new Object[] {useOrderPreservingEncoding, queryTimeout, field, ids, ranks}); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof UserIdMultiSegmentQuery)) { - return false; - } - - UserIdMultiSegmentQuery query = UserIdMultiSegmentQuery.class.cast(obj); - return Arrays.equals( - new Object[] {useOrderPreservingEncoding, queryTimeout, field, ids, ranks}, - new Object[] {query.useOrderPreservingEncoding, - query.queryTimeout, - query.field, - query.ids, - query.ranks}); - } - - @Override - public String toString(String fieldName) { - StringBuilder builder = new StringBuilder(); - builder.append(getClass().getSimpleName()).append("[").append(fieldName).append(":"); - for (Long id : this.ids) { - builder.append(id); - builder.append(","); - } - builder.setLength(builder.length() - 1); - builder.append("]"); - return builder.toString(); - } - - private final class UserIdMultiSegmentQueryWeight extends ConstantScoreWeight { - private final IndexSearcher searcher; - private final ScoreMode scoreMode; - - private UserIdMultiSegmentQueryWeight( - IndexSearcher searcher, - ScoreMode scoreMode, - float boost) { - super(UserIdMultiSegmentQuery.this, boost); - this.searcher = searcher; - this.scoreMode = scoreMode; - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - Weight weight = rewrite(context); - if (weight != null) { - return weight.scorer(context); - } else { - return null; - } - } - - @Override - public BulkScorer bulkScorer(LeafReaderContext context) throws IOException { - Weight weight = rewrite(context); - if (weight != null) { - return weight.bulkScorer(context); - } else { - return null; - } - } - - @Override - public void extractTerms(Set terms) { - terms.addAll(ids - .stream() - .map(id -> new Term(field, LongTermAttributeImpl.copyIntoNewBytesRef(id))) - .collect(Collectors.toSet())); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return true; - } - - private Weight rewrite(LeafReaderContext context) throws IOException { - final Terms terms = context.reader().terms(field); - if (terms == null) { - // field does not exist - return null; - } - final TermsEnum termsEnum = terms.iterator(); - Preconditions.checkNotNull(termsEnum, "No termsEnum for field: %s", field); - - BooleanQuery bq; - // See if the segment is supported by the multi-segment term dictionary. If so, build up - // the query using the termIds from the multi-segment term dictionary. - // If not (for the current segment), do the term lookups directly in the queried segment. - InvertedIndex fieldIndex = getFieldIndexFromMultiTermDictionary(context); - if (fieldIndex != null) { - createTermIdsPerSegment(); - - USED_MULTI_SEGMENT_TERM_DICTIONARY_COUNT.increment(); - SearchTimer timer = QUERY_FROM_PRECOMPUTED.startNewTimer(); - bq = addPrecomputedTermQueries(fieldIndex, termsEnum); - QUERY_FROM_PRECOMPUTED.stopTimerAndIncrement(timer); - } else { - USED_ORIGINAL_TERM_DICTIONARY_COUNT.increment(); - // This segment is not supported by the multi-segment term dictionary. Lookup terms - // directly. - SearchTimer timer = QUERY_REGULAR.startNewTimer(); - bq = addTermQueries(termsEnum); - QUERY_REGULAR.stopTimerAndIncrement(timer); - } - - return searcher.rewrite(new ConstantScoreQuery(bq)).createWeight( - searcher, scoreMode, score()); - } - - /** - * If the multi-segment term dictionary supports this segment/LeafReader, then return the - * InvertedIndex representing this segment. - * - * If the segment being queried right now is not in the multi-segment term dictionary (e.g. - * if it's not optimized yet), return null. - */ - @Nullable - private InvertedIndex getFieldIndexFromMultiTermDictionary(LeafReaderContext context) - throws IOException { - if (multiSegmentTermDictionary == null) { - return null; - } - - if (context.reader() instanceof EarlybirdIndexSegmentAtomicReader) { - EarlybirdIndexSegmentAtomicReader reader = - (EarlybirdIndexSegmentAtomicReader) context.reader(); - - EarlybirdIndexSegmentData segmentData = reader.getSegmentData(); - InvertedIndex fieldIndex = segmentData.getFieldIndex(field); - - if (multiSegmentTermDictionary.supportSegmentIndex(fieldIndex)) { - return fieldIndex; - } - } - - return null; - } - - private BooleanQuery addPrecomputedTermQueries( - InvertedIndex fieldIndex, - TermsEnum termsEnum) throws IOException { - - BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); - int numClauses = 0; - - List termRankPairs = termIdsPerSegment.get(fieldIndex); - if (termRankPairs != null) { - for (TermRankPair pair : termRankPairs) { - int termId = pair.getTermId(); - if (numClauses >= BooleanQuery.getMaxClauseCount()) { - BooleanQuery saved = bqBuilder.build(); - bqBuilder = new BooleanQuery.Builder(); - bqBuilder.add(saved, BooleanClause.Occur.SHOULD); - numClauses = 1; - } - - Query query; - if (pair.getRank() != -1) { - query = EarlybirdQueryHelper.maybeWrapWithHitAttributionCollector( - new SimpleTermQuery(termsEnum, termId), - pair.getRank(), - fieldInfo, - hitAttributeHelper); - } else { - query = new SimpleTermQuery(termsEnum, termId); - } - bqBuilder.add(EarlybirdQueryHelper.maybeWrapWithTimeout(query, queryTimeout), - BooleanClause.Occur.SHOULD); - ++numClauses; - } - } - return bqBuilder.build(); - } - - private BooleanQuery addTermQueries(TermsEnum termsEnum) throws IOException { - final BytesRef termRef = useOrderPreservingEncoding - ? SortableLongTermAttributeImpl.newBytesRef() - : LongTermAttributeImpl.newBytesRef(); - - BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); - int numClauses = 0; - - for (int idx = 0; idx < ids.size(); ++idx) { - long longTerm = ids.get(idx); - if (useOrderPreservingEncoding) { - SortableLongTermAttributeImpl.copyLongToBytesRef(termRef, longTerm); - } else { - LongTermAttributeImpl.copyLongToBytesRef(termRef, longTerm); - } - - if (termsEnum.seekExact(termRef)) { - if (numClauses >= BooleanQuery.getMaxClauseCount()) { - BooleanQuery saved = bqBuilder.build(); - bqBuilder = new BooleanQuery.Builder(); - bqBuilder.add(saved, BooleanClause.Occur.SHOULD); - numClauses = 1; - } - - if (ranks.size() > 0) { - bqBuilder.add(EarlybirdQueryHelper.maybeWrapWithHitAttributionCollector( - new SimpleTermQuery(termsEnum, termsEnum.ord()), - ranks.get(idx), - fieldInfo, - hitAttributeHelper), - BooleanClause.Occur.SHOULD); - } else { - bqBuilder.add(new SimpleTermQuery(termsEnum, termsEnum.ord()), - BooleanClause.Occur.SHOULD); - } - ++numClauses; - } - } - - return bqBuilder.build(); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/queries/UserScrubGeoFilter.docx b/src/java/com/twitter/search/earlybird/search/queries/UserScrubGeoFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..2dfdb716a432d0bc31d7503e6e32bd2a23efeb25 GIT binary patch literal 37948 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∓ojWAmFZ5g`)nHl`B0sxf+GI+awS{B|qfQAV1^4pbwqkcZSdw(!0q>{W>w@HBSAy7EhKZJismUpzXclxVWvtsLP1DMc6zjgQD?u{|$LYSk4 zN`O#XElKI%yZMq^ldg+ImA`q)@~|6?e5-c8TH?hMI1IGaubic!oTDIvQLf<43(oB9 zVP_*9<*DZ3w}9ks3m_jM;c|A}b{MHzfMP%-yCpbGo4PsK=ro&bCY7+|^nf}X(8V3g z5}4|B-j2Ya*B;5&w_hnI6c@h~Vb@Smr)OJz1TEfo-(qI|psdeBqSDlqP^t6$puAcA zA(0ko%^SrT+JB$Cr+%GSb6_)BHl;?3N9s8{rPo|sGHvqQ@$PFxo=B*4_#`nafgQCW3+)U>XsJK9G$$AL*>a*RBqzD#Ww0Da zhn(;B^nIGICp#W2BehRj0M!_6jTyu=WVCrWoP#8+-3lEo_xInAQ-$2<-!=j30+8Dj z;v5^%mtkG1+U1{L5Y=|)PM7ChhxqLD^AVAw#O17pA+?cJ;uJeeawN`mn94N0S~3$ZlkU$CZXHb>9W$Nm2FgZS1_LO!hklY%N^dVx$<0z1>A zH%;z4XH0AsqCR_KL>UE*aT@$B-O^W5O<4woNNO_lzE95zL;Qa0mTxt{9k}M?cc%v# zqi~9U=!RLus|?D{18IkZPPlls`ArRr$!A4G)i-U3w9en`+=bGzZ`Rjt*WB`t8Hb=K z>dc~svi|_MoVDMDBQF0m8J^q!GVGwJJB}KPCh)_B?~)WZq@1}GEKlm$QBJAumULUW z?}xSOn%%wXx|Y!uiR!xkx((f@qoy-_5acP!2xXgv&hw+|b9Y}DGMg(He6R7DtY%~G zP%<*v49)A^PoKAU#74p}!%(h-GFA4dx@U|VuiQ@nmJ<<+XHziNvYa|}<#1rO8|3hf zVt?c4axz0Mf6ePhl*3QCStE=u+fzKZO*))^V7j3w^tz6!9H5RA*v?M`)4jfIV|Uy% zshGXMR3pk%2S@2-aVPYCpZv3muIHxawT=Is=eRuD^}YL(tQb5l?k*xUsJyQBFE^bV z=ce0T0UjMX)`YA#TaSI~wwl^pBQyPKY>dTTKGutBsK=|3N0g(L-mA%4Ap|<6fli#& zUU(-f{XA?aOMPM1N$#LE%J;mj_fP*EvGPZk&AK2#Kmv(CKrn$L7O-&lU&9n|<^{Yy zZ4E4}87%Eh%q~@}>_4lZ@ppJ~Qrk=+Q_-VA_jj=L7SjK(w$42qs{D`R$Nkz24Iz@6 zXi2#XTUfQNk|^24GH%moNMbBA<1!7oTgE+UEUWq6pdVFBPFN!bT4+==!hIjX!LBLngN4mN2 zQMadam0#t_H&WV3WW%Ny!)zBx1ydDyQWSQu>e`sNt{mKM_v;lp@&))51T;kOO~^`R z3ImuD2yw~~z+u|m+O=aT+{xqAJ)Y#I7a6^!)j2a}nL3V!MrRHL<|fun1mRN|d-8wG z_NLnnVPVZp-^i26qan9^bW}W>xNz~4W9-K8#NYH};^~J)Cvn9E1OZQ28Eb!*saJKw z#P5#C{J5}4rwV(%H^<`po!G=wI}!I-JTuMNv5h@2UV4#y1X207&VaAyLXW#EI@2tB z!cY8Qz*9p$D@~p#`i_!6Be5W9v>SHB>S6MN)RH2qNP9>Af$ZFpE7K-r=Dv4!#v(3M zHScPAM4=;&wQ3n*Xb$2TW-k|Cvmfx{hHK}=gfiu^r#)r%-8sQL#K$&wS9)h9>72c7 zlSTZbzK~OMP{n>>@B0%K39^_gr-Rzn`%k?z;gDtSCo?%e5Po9*!7xZ|i()2835$QX z%bX<>-Qq5|KZ7iyC%uhuAd_JTY2hpr5vucb3QHjXSG(XIQR1-4*P4B{T)A1zL&ft~7x$rCY!Hnq!yyUVE|q*x2Ri+(Ynwb$h|l_+50K_=6L_ly3xQ}DR3J)Msrl@=oCAx*M`P~w@fKb zj=%LSt^yanD!5o|dCp8F`eiR~<&~d)3}-vv=y3(CEFb&B9+VwvwjY; z5hcRuM@Ol8FF2CIrxR@SieXt& zuR7`eO$iqmH6H0EJeoWFOPuXPgM5z~Ahmi4KTgLIa#Z{WQ7_3v&A=pCCuD=t%~4gw#LAfxwPg>q z(=StI;mxVthH^YbN$rMf+Jm7~_sh?PM#VfivB@n5JGY@YohhhH3gc44`wWS!2^KOh zw$=7I9WfAFbm>yEO6JkaGZ}f0@3vMGdwAq};(caCTBkk{A8b1@q`pXCsn)qn&eAhD z)($}}<2|ve5uA>4t|~F?-Q9cCi1&RX)X0LMmY!_42=qWH{mD|#z_)BX!*_(1V$Pm@ z#t!FOeB!knT+-7#`X1nkA5$fkT7!_|jmL^_A}|ZKW_C6X zT93=?`&S&$LO0aM&0u3H{w7FF^isg^DH!en{4QB^r_Zm~x7@85#4XfY*xLvQ$_cHe z$HjrUn}?ms&fTG8f*xu!m~&eVJHBotunz!Sj)BQwv_B4Y9v^@Xa$WV#pa8svjpZVE zDjUorOMO*?N0Pu(5b@c^UvurD!nhbIhs)q89iUKllW+v=`S0E1bv1A;6AhKm4Gbu7 zLAjqW0LW~TM}j^7$vpxBwz_Ir*!+*yVgOLB4IMlOG{jov07L{|0q=b)xj#vHyFNI0 z3pkX@rorK`FY?cKz7eve6_QJLe4D5P0B(*V0DKdP2sYO)BnXH1L$8%9p*Dd2Q1Yvu zBw%2%NeubDB$NZKldf}$a9=qaiYQPywD7VnPYeAbhm>KU1ZW{*ozRH?LfBN6fa;-H z<8?jw`NwA~LUYJa1T_9$N7zSg8I3~$&_H(`@J;kaz*b=|lm(3)*I9dRY-DYYB%u^& usI^WpiTPrcO@S9w5A_Gv^ fromUserIdDocValues.advanceExact(docId) - && !userScrubGeoMap.isTweetGeoScrubbed( - tweetIdMapper.getTweetID(docId), fromUserIdDocValues.longValue()); - } - - @Override - public String toString() { - return "UserScrubGeoFilter"; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof UserScrubGeoMap)) { - return false; - } - - UserScrubGeoFilter filter = UserScrubGeoFilter.class.cast(obj); - // filters are considered equal as long as they are using the same UserScrubGeoMap - return Objects.equals(userScrubGeoMap, filter.userScrubGeoMap); - } - - @Override - public int hashCode() { - return userScrubGeoMap == null ? 0 : userScrubGeoMap.hashCode(); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.docx b/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.docx new file mode 100644 index 0000000000000000000000000000000000000000..659b1551cdae6228d915daf7bf4770c31657fcb1 GIT binary patch literal 40526 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.java b/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.java deleted file mode 100644 index 9d0e85795..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringData.java +++ /dev/null @@ -1,422 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import java.util.Arrays; -import java.util.List; - -import com.google.common.collect.Lists; - -import com.twitter.search.common.constants.SearchCardType; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; - -public class LinearScoringData { - public static final float NO_BOOST_VALUE = 1.0f; - - // A signal value so we can tell if something is unset, also used in explanation. - public static final int UNSET_SIGNAL_VALUE = -999; - - //This is somewhat arbitrary, and is here so that we have some limit on - //how many offline experimental features we support per query - public static final int MAX_OFFLINE_EXPERIMENTAL_FIELDS = 5; - - public enum SkipReason { - NOT_SKIPPED, - ANTIGAMING, - LOW_REPUTATION, - LOW_TEXT_SCORE, - LOW_RETWEET_COUNT, - LOW_FAV_COUNT, - SOCIAL_FILTER, - LOW_FINAL_SCORE - } - - // When you add fields here, make sure you also update the clear() function. - public double luceneScore; - public double textScore; - //I am not sure why this has to be double... - public double tokenAt140DividedByNumTokensBucket; - public double userRep; - public double parusScore; - public final double[] offlineExpFeatureValues = new double[MAX_OFFLINE_EXPERIMENTAL_FIELDS]; - - // v1 engagement counters - public double retweetCountPostLog2; - public double favCountPostLog2; - public double replyCountPostLog2; - public double embedsImpressionCount; - public double embedsUrlCount; - public double videoViewCount; - - // v2 engagement counters (that have a v1 counter part) - public double retweetCountV2; - public double favCountV2; - public double replyCountV2; - public double embedsImpressionCountV2; - public double embedsUrlCountV2; - public double videoViewCountV2; - // pure v2 engagement counters, they started v2 only - public double quotedCount; - public double weightedRetweetCount; - public double weightedReplyCount; - public double weightedFavCount; - public double weightedQuoteCount; - - // card related properties - public boolean hasCard; - public byte cardType; - - public boolean hasUrl; - public boolean isReply; - public boolean isRetweet; - public boolean isOffensive; - public boolean hasTrend; - public boolean isFromVerifiedAccount; - public boolean isFromBlueVerifiedAccount; - public boolean isUserSpam; - public boolean isUserNSFW; - public boolean isUserBot; - public boolean isUserAntiSocial; - public boolean hasVisibleLink; - - public double luceneContrib; - public double reputationContrib; - public double textScoreContrib; - public double favContrib; - public double replyContrib; - public double multipleReplyContrib; - public double retweetContrib; - public double parusContrib; - public final double[] offlineExpFeatureContributions = - new double[MAX_OFFLINE_EXPERIMENTAL_FIELDS]; - public double embedsImpressionContrib; - public double embedsUrlContrib; - public double videoViewContrib; - public double quotedContrib; - - public double hasUrlContrib; - public double isReplyContrib; - public double isFollowRetweetContrib; - public double isTrustedRetweetContrib; - - // Value passed in the request (ThriftRankingParams.querySpecificScoreAdjustments) - public double querySpecificScore; - - // Value passed in the request (ThriftRankingParams.authorSpecificScoreAdjustments) - public double authorSpecificScore; - - public double normalizedLuceneScore; - - public int tweetLangId; - public double uiLangMult; - public double userLangMult; - public boolean hasDifferentLang; - public boolean hasEnglishTweetAndDifferentUILang; - public boolean hasEnglishUIAndDifferentTweetLang; - - public int tweetAgeInSeconds; - public double ageDecayMult; - - // Intermediate scores - public double scoreBeforeBoost; - public double scoreAfterBoost; - public double scoreFinal; - public double scoreReturned; - - public SkipReason skipReason; - - public boolean isTrusted; - public boolean isFollow; - public boolean spamUserDampApplied; - public boolean nsfwUserDampApplied; - public boolean botUserDampApplied; - public boolean trustedCircleBoostApplied; - public boolean directFollowBoostApplied; - public boolean outOfNetworkReplyPenaltyApplied; - public boolean hasMultipleHashtagsOrTrends; - - public boolean tweetHasTrendsBoostApplied; - public boolean tweetFromVerifiedAccountBoostApplied; - public boolean tweetFromBlueVerifiedAccountBoostApplied; - public boolean hasCardBoostApplied; - public boolean cardDomainMatchBoostApplied; - public boolean cardAuthorMatchBoostApplied; - public boolean cardTitleMatchBoostApplied; - public boolean cardDescriptionMatchBoostApplied; - - public List hitFields; - public boolean hasNoTextHitDemotionApplied; - public boolean hasUrlOnlyHitDemotionApplied; - public boolean hasNameOnlyHitDemotionApplied; - public boolean hasSeparateTextAndNameHitDemotionApplied; - public boolean hasSeparateTextAndUrlHitDemotionApplied; - - public long fromUserId; - // This is actually retweet status ID, or the ID of the original tweet being (natively) retweeted - public long sharedStatusId; - public long referenceAuthorId; // SEARCH-8564 - - public boolean isSelfTweet; - public boolean selfTweetBoostApplied; - public double selfTweetMult; - - public boolean hasImageUrl; - public boolean hasVideoUrl; - public boolean hasMedialUrlBoostApplied; - public boolean hasNewsUrl; - public boolean hasNewsUrlBoostApplied; - - public boolean hasConsumerVideo; - public boolean hasProVideo; - public boolean hasVine; - public boolean hasPeriscope; - public boolean hasNativeImage; - public boolean isNullcast; - public boolean hasQuote; - - public boolean isSensitiveContent; - public boolean hasMultipleMediaFlag; - public boolean profileIsEggFlag; - public boolean isUserNewFlag; - - public int numMentions; - public int numHashtags; - public int linkLanguage; - public int prevUserTweetEngagement; - - public boolean isComposerSourceCamera; - - // health model scores by HML - public double toxicityScore; // go/toxicity - public double pBlockScore; // go/pblock - public double pSpammyTweetScore; // go/pspammytweet - public double pReportedTweetScore; // go/preportedtweet - public double spammyTweetContentScore; // go/spammy-tweet-content - public double experimentalHealthModelScore1; - public double experimentalHealthModelScore2; - public double experimentalHealthModelScore3; - public double experimentalHealthModelScore4; - - public LinearScoringData() { - hitFields = Lists.newArrayList(); - clear(); - } - - // the following three counters were added later and they got denormalized in standard way, - // you can choose to apply scalding (for legacy LinearScoringFunction) or - // not apply (for returning in metadata and display in debug). - public double getEmbedsImpressionCount(boolean scaleForScoring) { - return scaleForScoring ? logWith0(embedsImpressionCount) : embedsImpressionCount; - } - public double getEmbedsUrlCount(boolean scaleForScoring) { - return scaleForScoring ? logWith0(embedsUrlCount) : embedsUrlCount; - } - public double getVideoViewCount(boolean scaleForScoring) { - return scaleForScoring ? logWith0(videoViewCount) : videoViewCount; - } - private static double logWith0(double value) { - return value > 0 ? Math.log(value) : 0.0; - } - - /** - * Returns a string description of all data stored in this instance. - */ - public String getPropertyExplanation() { - StringBuilder sb = new StringBuilder(); - sb.append(hasCard ? "CARD " + SearchCardType.cardTypeFromByteValue(cardType) : ""); - sb.append(hasUrl ? "URL " : ""); - sb.append(isReply ? "REPLY " : ""); - sb.append(isRetweet ? "RETWEET " : ""); - sb.append(isOffensive ? "OFFENSIVE " : ""); - sb.append(hasTrend ? "TREND " : ""); - sb.append(hasMultipleHashtagsOrTrends ? "HASHTAG/TREND+ " : ""); - sb.append(isFromVerifiedAccount ? "VERIFIED " : ""); - sb.append(isFromBlueVerifiedAccount ? "BLUE_VERIFIED " : ""); - sb.append(isUserSpam ? "SPAM " : ""); - sb.append(isUserNSFW ? "NSFW " : ""); - sb.append(isUserBot ? "BOT " : ""); - sb.append(isUserAntiSocial ? "ANTISOCIAL " : ""); - sb.append(isTrusted ? "TRUSTED " : ""); - sb.append(isFollow ? "FOLLOW " : ""); - sb.append(isSelfTweet ? "SELF " : ""); - sb.append(hasImageUrl ? "IMAGE " : ""); - sb.append(hasVideoUrl ? "VIDEO " : ""); - sb.append(hasNewsUrl ? "NEWS " : ""); - sb.append(isNullcast ? "NULLCAST" : ""); - sb.append(hasQuote ? "QUOTE" : ""); - sb.append(isComposerSourceCamera ? "Composer Source: CAMERA" : ""); - sb.append(favCountPostLog2 > 0 ? "Faves:" + favCountPostLog2 + " " : ""); - sb.append(retweetCountPostLog2 > 0 ? "Retweets:" + retweetCountPostLog2 + " " : ""); - sb.append(replyCountPostLog2 > 0 ? "Replies:" + replyCountPostLog2 + " " : ""); - sb.append(getEmbedsImpressionCount(false) > 0 - ? "Embedded Imps:" + getEmbedsImpressionCount(false) + " " : ""); - sb.append(getEmbedsUrlCount(false) > 0 - ? "Embedded Urls:" + getEmbedsUrlCount(false) + " " : ""); - sb.append(getVideoViewCount(false) > 0 - ? "Video views:" + getVideoViewCount(false) + " " : ""); - sb.append(weightedRetweetCount > 0 ? "Weighted Retweets:" - + ((int) weightedRetweetCount) + " " : ""); - sb.append(weightedReplyCount > 0 - ? "Weighted Replies:" + ((int) weightedReplyCount) + " " : ""); - sb.append(weightedFavCount > 0 - ? "Weighted Faves:" + ((int) weightedFavCount) + " " : ""); - sb.append(weightedQuoteCount > 0 - ? "Weighted Quotes:" + ((int) weightedQuoteCount) + " " : ""); - return sb.toString(); - } - - /** - * Resets all data stored in this instance. - */ - public void clear() { - luceneScore = UNSET_SIGNAL_VALUE; - textScore = UNSET_SIGNAL_VALUE; - tokenAt140DividedByNumTokensBucket = UNSET_SIGNAL_VALUE; - userRep = UNSET_SIGNAL_VALUE; - retweetCountPostLog2 = UNSET_SIGNAL_VALUE; - favCountPostLog2 = UNSET_SIGNAL_VALUE; - replyCountPostLog2 = UNSET_SIGNAL_VALUE; - parusScore = UNSET_SIGNAL_VALUE; - Arrays.fill(offlineExpFeatureValues, 0); - embedsImpressionCount = UNSET_SIGNAL_VALUE; - embedsUrlCount = UNSET_SIGNAL_VALUE; - videoViewCount = UNSET_SIGNAL_VALUE; - // v2 engagement, these each have a v1 counterpart - retweetCountV2 = UNSET_SIGNAL_VALUE; - favCountV2 = UNSET_SIGNAL_VALUE; - replyCountV2 = UNSET_SIGNAL_VALUE; - embedsImpressionCountV2 = UNSET_SIGNAL_VALUE; - embedsUrlCountV2 = UNSET_SIGNAL_VALUE; - videoViewCountV2 = UNSET_SIGNAL_VALUE; - // new engagement counters, they only have one version with the v2 normalizer - quotedCount = UNSET_SIGNAL_VALUE; - weightedRetweetCount = UNSET_SIGNAL_VALUE; - weightedReplyCount = UNSET_SIGNAL_VALUE; - weightedFavCount = UNSET_SIGNAL_VALUE; - weightedQuoteCount = UNSET_SIGNAL_VALUE; - - hasUrl = false; - isReply = false; - isRetweet = false; - isOffensive = false; - hasTrend = false; - isFromVerifiedAccount = false; - isFromBlueVerifiedAccount = false; - isUserSpam = false; - isUserNSFW = false; - isUserBot = false; - isUserAntiSocial = false; - hasVisibleLink = false; - isNullcast = false; - - luceneContrib = UNSET_SIGNAL_VALUE; - reputationContrib = UNSET_SIGNAL_VALUE; - textScoreContrib = UNSET_SIGNAL_VALUE; - replyContrib = UNSET_SIGNAL_VALUE; - multipleReplyContrib = UNSET_SIGNAL_VALUE; - retweetContrib = UNSET_SIGNAL_VALUE; - favContrib = UNSET_SIGNAL_VALUE; - parusContrib = UNSET_SIGNAL_VALUE; - Arrays.fill(offlineExpFeatureContributions, 0); - embedsImpressionContrib = UNSET_SIGNAL_VALUE; - embedsUrlContrib = UNSET_SIGNAL_VALUE; - videoViewContrib = UNSET_SIGNAL_VALUE; - hasUrlContrib = UNSET_SIGNAL_VALUE; - isReplyContrib = UNSET_SIGNAL_VALUE; - - querySpecificScore = UNSET_SIGNAL_VALUE; - authorSpecificScore = UNSET_SIGNAL_VALUE; - - normalizedLuceneScore = NO_BOOST_VALUE; - - tweetLangId = ThriftLanguage.UNKNOWN.getValue(); - uiLangMult = NO_BOOST_VALUE; - userLangMult = NO_BOOST_VALUE; - hasDifferentLang = false; - hasEnglishTweetAndDifferentUILang = false; - hasEnglishUIAndDifferentTweetLang = false; - - tweetAgeInSeconds = 0; - ageDecayMult = NO_BOOST_VALUE; - - // Intermediate scores - scoreBeforeBoost = UNSET_SIGNAL_VALUE; - scoreAfterBoost = UNSET_SIGNAL_VALUE; - scoreFinal = UNSET_SIGNAL_VALUE; - scoreReturned = UNSET_SIGNAL_VALUE; - - skipReason = SkipReason.NOT_SKIPPED; - - isTrusted = false; // Set later - isFollow = false; // Set later - trustedCircleBoostApplied = false; - directFollowBoostApplied = false; - outOfNetworkReplyPenaltyApplied = false; - hasMultipleHashtagsOrTrends = false; - spamUserDampApplied = false; - nsfwUserDampApplied = false; - botUserDampApplied = false; - - tweetHasTrendsBoostApplied = false; - tweetFromVerifiedAccountBoostApplied = false; - tweetFromBlueVerifiedAccountBoostApplied = false; - - fromUserId = UNSET_SIGNAL_VALUE; - sharedStatusId = UNSET_SIGNAL_VALUE; - referenceAuthorId = UNSET_SIGNAL_VALUE; - - isSelfTweet = false; - selfTweetBoostApplied = false; - selfTweetMult = NO_BOOST_VALUE; - - trustedCircleBoostApplied = false; - directFollowBoostApplied = false; - - hasImageUrl = false; - hasVideoUrl = false; - hasMedialUrlBoostApplied = false; - hasNewsUrl = false; - hasNewsUrlBoostApplied = false; - - hasCard = false; - cardType = SearchCardType.UNKNOWN.getByteValue(); - hasCardBoostApplied = false; - cardDomainMatchBoostApplied = false; - cardAuthorMatchBoostApplied = false; - cardTitleMatchBoostApplied = false; - cardDescriptionMatchBoostApplied = false; - - hitFields.clear(); - hasNoTextHitDemotionApplied = false; - hasUrlOnlyHitDemotionApplied = false; - hasNameOnlyHitDemotionApplied = false; - hasSeparateTextAndNameHitDemotionApplied = false; - hasSeparateTextAndUrlHitDemotionApplied = false; - - hasConsumerVideo = false; - hasProVideo = false; - hasVine = false; - hasPeriscope = false; - hasNativeImage = false; - - isSensitiveContent = false; - hasMultipleMediaFlag = false; - profileIsEggFlag = false; - numMentions = 0; - numHashtags = 0; - isUserNewFlag = false; - linkLanguage = 0; - prevUserTweetEngagement = 0; - - isComposerSourceCamera = false; - - // health model scores by HML - toxicityScore = UNSET_SIGNAL_VALUE; - pBlockScore = UNSET_SIGNAL_VALUE; - pSpammyTweetScore = UNSET_SIGNAL_VALUE; - pReportedTweetScore = UNSET_SIGNAL_VALUE; - spammyTweetContentScore = UNSET_SIGNAL_VALUE; - experimentalHealthModelScore1 = UNSET_SIGNAL_VALUE; - experimentalHealthModelScore2 = UNSET_SIGNAL_VALUE; - experimentalHealthModelScore3 = UNSET_SIGNAL_VALUE; - experimentalHealthModelScore4 = UNSET_SIGNAL_VALUE; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.docx b/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.docx new file mode 100644 index 0000000000000000000000000000000000000000..6bfab1e4a14af6b147c4a243800e6f825e12abd7 GIT binary patch literal 39952 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≠c;CiNr{$2 zFMR#C<7vKkdO+vjT`bICMr>)rbv5;cYs#C35A*gd-c*PjDv^j4Fyo+b$?3)!#mI5lW9L*BUL`jdndK%uq*F}GiC$A1S3xCR25 zTm*u_w$7gBH+)@fJxqV8GhzZ?n5N1Oa4P|bBh&qd2F@sw_W;E|8vnPnCkCR!>GbV^ zTY3N>;}PI2aOKb5W9{PpI}%L{-y9h^z5u|HiV}{bM6Mgxfnp8 zR_;|IjEBD)l2^qR&eb^AP7r4|#k7 z{^R+-BnmN{IPr1_zk~W0PLzfrW*|;P95STe|CixNT7no)95p_~i-i7*CypT#QxN;# zhZOwLfAz+R35XrtLxP`22>#~w5_1vzj)z>|Vu(9)=t&Z@5W8B3EcCJej>-|oix^L= h2M_TD3I8|6j;cdFO$uNJ{hC#bAWL9+WTgH2_dgr70pb7v literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.java b/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.java deleted file mode 100644 index 9c049068c..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/LinearScoringParams.java +++ /dev/null @@ -1,304 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import java.util.Arrays; -import java.util.Map; - -import com.google.common.annotations.VisibleForTesting; - -import com.twitter.search.common.constants.SearchCardType; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.ranking.thriftjava.ThriftAgeDecayRankingParams; -import com.twitter.search.common.ranking.thriftjava.ThriftCardRankingParams; -import com.twitter.search.common.ranking.thriftjava.ThriftRankingParams; -import com.twitter.search.common.util.lang.ThriftLanguageUtil; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSocialFilterType; - -/* - * The class for all query specific parameters, including the parameters from the relevanceOptions and - * values that are extracted from the request itself. - */ -public class LinearScoringParams { - - public static final double DEFAULT_FEATURE_WEIGHT = 0; - public static final double DEFAULT_FEATURE_MIN_VAL = 0; - public static final double DEFAULT_NO_BOOST = 1.0; - @VisibleForTesting - static final SearchCounter NULL_USER_LANGS_KEY = - SearchCounter.export("linear_scoring_params_null_user_langs_key"); - - public final double luceneWeight; - public final double textScoreWeight; - public final double textScoreMinVal; - public final double retweetWeight; - public final double retweetMinVal; - public final double favWeight; - public final double favMinVal; - public final double replyWeight; - public final double multipleReplyWeight; - public final double multipleReplyMinVal; - public final double isReplyWeight; - public final double parusWeight; - public final double embedsImpressionWeight; - public final double embedsUrlWeight; - public final double videoViewWeight; - public final double quotedCountWeight; - - public final double[] rankingOfflineExpWeights = - new double[LinearScoringData.MAX_OFFLINE_EXPERIMENTAL_FIELDS]; - - public final boolean applyBoosts; - - // Storing ranking params for cards, avoid using maps for faster lookup - public final double[] hasCardBoosts = new double[SearchCardType.values().length]; - public final double[] cardDomainMatchBoosts = new double[SearchCardType.values().length]; - public final double[] cardAuthorMatchBoosts = new double[SearchCardType.values().length]; - public final double[] cardTitleMatchBoosts = new double[SearchCardType.values().length]; - public final double[] cardDescriptionMatchBoosts = new double[SearchCardType.values().length]; - - public final double urlWeight; - public final double reputationWeight; - public final double reputationMinVal; - public final double followRetweetWeight; - public final double trustedRetweetWeight; - - // Adjustments for specific tweets (tweetId -> score) - public final Map querySpecificScoreAdjustments; - - // Adjustments for tweets posted by specific authors (userId -> score) - public final Map authorSpecificScoreAdjustments; - - public final double offensiveDamping; - public final double spamUserDamping; - public final double nsfwUserDamping; - public final double botUserDamping; - public final double trustedCircleBoost; - public final double directFollowBoost; - public final double minScore; - - public final boolean applyFiltersAlways; - - public final boolean useLuceneScoreAsBoost; - public final double maxLuceneScoreBoost; - - public final double langEnglishTweetDemote; - public final double langEnglishUIDemote; - public final double langDefaultDemote; - public final boolean useUserLanguageInfo; - public final double unknownLanguageBoost; - - public final double outOfNetworkReplyPenalty; - - public final boolean useAgeDecay; - public final double ageDecayHalflife; - public final double ageDecayBase; - public final double ageDecaySlope; - - // hit attribute demotions - public final boolean enableHitDemotion; - public final double noTextHitDemotion; - public final double urlOnlyHitDemotion; - public final double nameOnlyHitDemotion; - public final double separateTextAndNameHitDemotion; - public final double separateTextAndUrlHitDemotion; - - // trends related params - public final double tweetHasTrendBoost; - public final double multipleHashtagsOrTrendsDamping; - - public final double tweetFromVerifiedAccountBoost; - - public final double tweetFromBlueVerifiedAccountBoost; - - public final ThriftSocialFilterType socialFilterType; - public final int uiLangId; - // Confidences of the understandability of different languages for this user. - public final double[] userLangs = new double[ThriftLanguage.values().length]; - - public final long searcherId; - public final double selfTweetBoost; - - public final double tweetHasMediaUrlBoost; - public final double tweetHasNewsUrlBoost; - - // whether we need meta-data for replies what the reply is to. - public final boolean getInReplyToStatusId; - - // Initialize from a ranking parameter - public LinearScoringParams(ThriftSearchQuery searchQuery, ThriftRankingParams params) { - // weights - luceneWeight = params.isSetLuceneScoreParams() - ? params.getLuceneScoreParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - textScoreWeight = params.isSetTextScoreParams() - ? params.getTextScoreParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - retweetWeight = params.isSetRetweetCountParams() - ? params.getRetweetCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - favWeight = params.isSetFavCountParams() - ? params.getFavCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - replyWeight = params.isSetReplyCountParams() - ? params.getReplyCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - multipleReplyWeight = params.isSetMultipleReplyCountParams() - ? params.getMultipleReplyCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - parusWeight = params.isSetParusScoreParams() - ? params.getParusScoreParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - for (int i = 0; i < LinearScoringData.MAX_OFFLINE_EXPERIMENTAL_FIELDS; i++) { - Byte featureTypeByte = (byte) i; - // default weight is 0, thus contribution for unset feature value will be 0. - rankingOfflineExpWeights[i] = params.getOfflineExperimentalFeatureRankingParamsSize() > 0 - && params.getOfflineExperimentalFeatureRankingParams().containsKey(featureTypeByte) - ? params.getOfflineExperimentalFeatureRankingParams().get(featureTypeByte).getWeight() - : DEFAULT_FEATURE_WEIGHT; - } - embedsImpressionWeight = params.isSetEmbedsImpressionCountParams() - ? params.getEmbedsImpressionCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - embedsUrlWeight = params.isSetEmbedsUrlCountParams() - ? params.getEmbedsUrlCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - videoViewWeight = params.isSetVideoViewCountParams() - ? params.getVideoViewCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - quotedCountWeight = params.isSetQuotedCountParams() - ? params.getQuotedCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - - applyBoosts = params.isApplyBoosts(); - - // configure card values - Arrays.fill(hasCardBoosts, DEFAULT_NO_BOOST); - Arrays.fill(cardAuthorMatchBoosts, DEFAULT_NO_BOOST); - Arrays.fill(cardDomainMatchBoosts, DEFAULT_NO_BOOST); - Arrays.fill(cardTitleMatchBoosts, DEFAULT_NO_BOOST); - Arrays.fill(cardDescriptionMatchBoosts, DEFAULT_NO_BOOST); - if (params.isSetCardRankingParams()) { - for (SearchCardType cardType : SearchCardType.values()) { - byte cardTypeIndex = cardType.getByteValue(); - ThriftCardRankingParams rankingParams = params.getCardRankingParams().get(cardTypeIndex); - if (rankingParams != null) { - hasCardBoosts[cardTypeIndex] = rankingParams.getHasCardBoost(); - cardAuthorMatchBoosts[cardTypeIndex] = rankingParams.getAuthorMatchBoost(); - cardDomainMatchBoosts[cardTypeIndex] = rankingParams.getDomainMatchBoost(); - cardTitleMatchBoosts[cardTypeIndex] = rankingParams.getTitleMatchBoost(); - cardDescriptionMatchBoosts[cardTypeIndex] = rankingParams.getDescriptionMatchBoost(); - } - } - } - - urlWeight = params.isSetUrlParams() - ? params.getUrlParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - reputationWeight = params.isSetReputationParams() - ? params.getReputationParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - isReplyWeight = params.isSetIsReplyParams() - ? params.getIsReplyParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - followRetweetWeight = params.isSetDirectFollowRetweetCountParams() - ? params.getDirectFollowRetweetCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - trustedRetweetWeight = params.isSetTrustedCircleRetweetCountParams() - ? params.getTrustedCircleRetweetCountParams().getWeight() : DEFAULT_FEATURE_WEIGHT; - - querySpecificScoreAdjustments = params.getQuerySpecificScoreAdjustments(); - authorSpecificScoreAdjustments = params.getAuthorSpecificScoreAdjustments(); - - // min/max filters - textScoreMinVal = params.isSetTextScoreParams() - ? params.getTextScoreParams().getMin() : DEFAULT_FEATURE_MIN_VAL; - reputationMinVal = params.isSetReputationParams() - ? params.getReputationParams().getMin() : DEFAULT_FEATURE_MIN_VAL; - multipleReplyMinVal = params.isSetMultipleReplyCountParams() - ? params.getMultipleReplyCountParams().getMin() : DEFAULT_FEATURE_MIN_VAL; - retweetMinVal = params.isSetRetweetCountParams() && params.getRetweetCountParams().isSetMin() - ? params.getRetweetCountParams().getMin() : DEFAULT_FEATURE_MIN_VAL; - favMinVal = params.isSetFavCountParams() && params.getFavCountParams().isSetMin() - ? params.getFavCountParams().getMin() : DEFAULT_FEATURE_MIN_VAL; - - // boosts - spamUserDamping = params.isSetSpamUserBoost() ? params.getSpamUserBoost() : 1.0; - nsfwUserDamping = params.isSetNsfwUserBoost() ? params.getNsfwUserBoost() : 1.0; - botUserDamping = params.isSetBotUserBoost() ? params.getBotUserBoost() : 1.0; - offensiveDamping = params.getOffensiveBoost(); - trustedCircleBoost = params.getInTrustedCircleBoost(); - directFollowBoost = params.getInDirectFollowBoost(); - - // language boosts - langEnglishTweetDemote = params.getLangEnglishTweetBoost(); - langEnglishUIDemote = params.getLangEnglishUIBoost(); - langDefaultDemote = params.getLangDefaultBoost(); - useUserLanguageInfo = params.isUseUserLanguageInfo(); - unknownLanguageBoost = params.getUnknownLanguageBoost(); - - // hit demotions - enableHitDemotion = params.isEnableHitDemotion(); - noTextHitDemotion = params.getNoTextHitDemotion(); - urlOnlyHitDemotion = params.getUrlOnlyHitDemotion(); - nameOnlyHitDemotion = params.getNameOnlyHitDemotion(); - separateTextAndNameHitDemotion = params.getSeparateTextAndNameHitDemotion(); - separateTextAndUrlHitDemotion = params.getSeparateTextAndUrlHitDemotion(); - - outOfNetworkReplyPenalty = params.getOutOfNetworkReplyPenalty(); - - if (params.isSetAgeDecayParams()) { - // new age decay settings - ThriftAgeDecayRankingParams ageDecayParams = params.getAgeDecayParams(); - ageDecaySlope = ageDecayParams.getSlope(); - ageDecayHalflife = ageDecayParams.getHalflife(); - ageDecayBase = ageDecayParams.getBase(); - useAgeDecay = true; - } else if (params.isSetDeprecatedAgeDecayBase() - && params.isSetDeprecatedAgeDecayHalflife() - && params.isSetDeprecatedAgeDecaySlope()) { - ageDecaySlope = params.getDeprecatedAgeDecaySlope(); - ageDecayHalflife = params.getDeprecatedAgeDecayHalflife(); - ageDecayBase = params.getDeprecatedAgeDecayBase(); - useAgeDecay = true; - } else { - ageDecaySlope = 0.0; - ageDecayHalflife = 0.0; - ageDecayBase = 0.0; - useAgeDecay = false; - } - - // trends - tweetHasTrendBoost = params.getTweetHasTrendBoost(); - multipleHashtagsOrTrendsDamping = params.getMultipleHashtagsOrTrendsBoost(); - - // verified accounts - tweetFromVerifiedAccountBoost = params.getTweetFromVerifiedAccountBoost(); - tweetFromBlueVerifiedAccountBoost = params.getTweetFromBlueVerifiedAccountBoost(); - - // score filter - minScore = params.getMinScore(); - - applyFiltersAlways = params.isApplyFiltersAlways(); - - useLuceneScoreAsBoost = params.isUseLuceneScoreAsBoost(); - maxLuceneScoreBoost = params.getMaxLuceneScoreBoost(); - - searcherId = searchQuery.isSetSearcherId() ? searchQuery.getSearcherId() : -1; - selfTweetBoost = params.getSelfTweetBoost(); - - socialFilterType = searchQuery.getSocialFilterType(); - - // the UI language and the confidences of the languages user can understand. - if (!searchQuery.isSetUiLang() || searchQuery.getUiLang().isEmpty()) { - uiLangId = ThriftLanguage.UNKNOWN.getValue(); - } else { - uiLangId = ThriftLanguageUtil.getThriftLanguageOf(searchQuery.getUiLang()).getValue(); - } - if (searchQuery.getUserLangsSize() > 0) { - for (Map.Entry lang : searchQuery.getUserLangs().entrySet()) { - ThriftLanguage thriftLanguage = lang.getKey(); - // SEARCH-13441 - if (thriftLanguage != null) { - userLangs[thriftLanguage.getValue()] = lang.getValue(); - } else { - NULL_USER_LANGS_KEY.increment(); - } - } - } - - // For now, we will use the same boost for both image, and video. - tweetHasMediaUrlBoost = params.getTweetHasImageUrlBoost(); - tweetHasNewsUrlBoost = params.getTweetHasNewsUrlBoost(); - - getInReplyToStatusId = - searchQuery.isSetResultMetadataOptions() - && searchQuery.getResultMetadataOptions().isSetGetInReplyToStatusId() - && searchQuery.getResultMetadataOptions().isGetInReplyToStatusId(); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.docx b/src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..17dd20837425ab0cb6178f53aa362f772ab0d312 GIT binary patch literal 38906 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 Vumdyb+pH3RI04fmGWFZH{{h{n+=c)E literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.java b/src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.java deleted file mode 100644 index c3c3e3861..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/MinFeatureValueFilter.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import java.io.IOException; -import java.util.Objects; - -import com.google.common.annotations.VisibleForTesting; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.encoding.features.ByteNormalizer; -import com.twitter.search.common.encoding.features.ClampByteNormalizer; -import com.twitter.search.common.encoding.features.SingleBytePositiveFloatNormalizer; -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.query.FilteredQuery; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; - -public final class MinFeatureValueFilter extends Query implements FilteredQuery.DocIdFilterFactory { - private final String featureName; - private final ByteNormalizer normalizer; - private final double minValue; - - /** - * Creates a query that filters out all hits that have a value smaller than the given threshold - * for the given feature. - * - * @param featureName The feature. - * @param minValue The threshold for the feature values. - * @return A query that filters out all hits that have a value smaller than the given threshold - * for the given feature. - */ - public static Query getMinFeatureValueFilter(String featureName, double minValue) { - return new BooleanQuery.Builder() - .add(new MinFeatureValueFilter(featureName, minValue), BooleanClause.Occur.FILTER) - .build(); - } - - public static FilteredQuery.DocIdFilterFactory getDocIdFilterFactory( - String featureName, double minValue) { - return new MinFeatureValueFilter(featureName, minValue); - } - - /** - * Returns the normalizer that should be used to normalize the values for the given feature. - * - * @param featureName The feature. - * @return The normalizer that should be used to normalize the values for the given feature. - */ - @VisibleForTesting - public static ByteNormalizer getMinFeatureValueNormalizer(String featureName) { - if (featureName.equals(EarlybirdFieldConstant.USER_REPUTATION.getFieldName())) { - return new ClampByteNormalizer(0, 100); - } - - if (featureName.equals(EarlybirdFieldConstant.FAVORITE_COUNT.getFieldName()) - || featureName.equals(EarlybirdFieldConstant.PARUS_SCORE.getFieldName()) - || featureName.equals(EarlybirdFieldConstant.REPLY_COUNT.getFieldName()) - || featureName.equals(EarlybirdFieldConstant.RETWEET_COUNT.getFieldName())) { - return new SingleBytePositiveFloatNormalizer(); - } - - throw new IllegalArgumentException("Unknown normalization method for field " + featureName); - } - - @Override - public int hashCode() { - // Probably doesn't make sense to include the schemaSnapshot and normalizer here. - return (int) ((featureName == null ? 0 : featureName.hashCode() * 7) + minValue); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof MinFeatureValueFilter)) { - return false; - } - - // Probably doesn't make sense to include the schemaSnapshot and normalizer here. - MinFeatureValueFilter filter = MinFeatureValueFilter.class.cast(obj); - return Objects.equals(featureName, filter.featureName) && (minValue == filter.minValue); - } - - @Override - public String toString(String field) { - return String.format("MinFeatureValueFilter(%s, %f)", featureName, minValue); - } - - private MinFeatureValueFilter(String featureName, double minValue) { - this.featureName = featureName; - this.normalizer = getMinFeatureValueNormalizer(featureName); - this.minValue = normalizer.normalize(minValue); - } - - @Override - public FilteredQuery.DocIdFilter getDocIdFilter(LeafReaderContext context) throws IOException { - final NumericDocValues featureDocValues = context.reader().getNumericDocValues(featureName); - return (docId) -> featureDocValues.advanceExact(docId) - && ((byte) featureDocValues.longValue() >= minValue); - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - return new MinFeatureValueDocIdSetIterator( - context.reader(), featureName, minValue); - } - }; - } - - private static final class MinFeatureValueDocIdSetIterator extends RangeFilterDISI { - private final NumericDocValues featureDocValues; - private final double minValue; - - MinFeatureValueDocIdSetIterator(LeafReader indexReader, - String featureName, - double minValue) throws IOException { - super(indexReader); - this.featureDocValues = indexReader.getNumericDocValues(featureName); - this.minValue = minValue; - } - - @Override - public boolean shouldReturnDoc() throws IOException { - // We need this explicit casting to byte, because of how we encode and decode features in our - // encoded_tweet_features field. If a feature is an int (uses all 32 bits of the int), then - // encoding the feature and then decoding it preserves its original value. However, if the - // feature does not use the entire int (and especially if it uses bits somewhere in the middle - // of the int), then the feature value is assumed to be unsigned when it goes through this - // process of encoding and decoding. So a user rep of - // RelevanceSignalConstants.UNSET_REPUTATION_SENTINEL (-128) will be correctly encoded as the - // binary value 10000000, but will be treated as an unsigned value when decoded, and therefore - // the decoded value will be 128. - // - // In retrospect, this seems like a really poor design decision. It seems like it would be - // better if all feature values were considered to be signed, even if most features can never - // have negative values. Unfortunately, making this change is not easy, because some features - // store normalized values, so we would also need to change the range of allowed values - // produced by those normalizers, as well as all code that depends on those values. - // - // So for now, just cast this value to a byte, to get the proper negative value. - return featureDocValues.advanceExact(docID()) - && ((byte) featureDocValues.longValue() >= minValue); - } - } - - public double getMinValue() { - return minValue; - } - - public ByteNormalizer getNormalizer() { - return normalizer; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.docx b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.docx new file mode 100644 index 0000000000000000000000000000000000000000..0c4a4cf460836f2319cafa2845d4eb3d0059bfdc GIT binary patch literal 37935 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.java b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.java deleted file mode 100644 index abf312d9f..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceHit.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import java.util.Comparator; - -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; - -import com.twitter.common_internal.collections.RandomAccessPriorityQueue; -import com.twitter.search.common.relevance.features.TweetIntegerShingleSignature; -import com.twitter.search.earlybird.search.Hit; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; - -public class RelevanceHit extends Hit - implements RandomAccessPriorityQueue.SignatureProvider { - @Nullable - private TweetIntegerShingleSignature signature; - - public RelevanceHit() { - super(Long.MAX_VALUE, Long.MAX_VALUE); - } - - public RelevanceHit(long timeSliceID, long statusID, - TweetIntegerShingleSignature signature, - ThriftSearchResultMetadata metadata) { - super(timeSliceID, statusID); - update(timeSliceID, statusID, signature, metadata); - } - - /** - * Updates the data for this relevance hit. - * - * @param timeSliceID The timeslice ID of the segment that the segment came from. - * @param statusID The hit's tweet ID. - * @param tweetSignature The tweet signature generated for this hit. - * @param metadata The metadata associated with this hit. - */ - public void update(long timeSliceID, long statusID, TweetIntegerShingleSignature tweetSignature, - ThriftSearchResultMetadata metadata) { - this.statusID = statusID; - this.timeSliceID = timeSliceID; - this.metadata = Preconditions.checkNotNull(metadata); - this.signature = Preconditions.checkNotNull(tweetSignature); - } - - /** - * Returns the computed score for this hit. - */ - public float getScore() { - if (metadata != null) { - return (float) metadata.getScore(); - } else { - return ScoringFunction.SKIP_HIT; - } - } - - // We want the score as a double (and not cast to a float) for COMPARATOR_BY_SCORE and - // PQ_COMPARATOR_BY_SCORE so that the results returned from Earlybirds will be sorted based on the - // scores in the ThriftSearchResultMetadata objects (and will not lose precision by being cast to - // floats). Thus, the sorted order on Earlybirds and Earlybird Roots will be consistent. - private double getScoreDouble() { - if (metadata != null) { - return metadata.getScore(); - } else { - return (double) ScoringFunction.SKIP_HIT; - } - } - - @Override @Nullable - public TweetIntegerShingleSignature getSignature() { - return signature; - } - - @Override - public String toString() { - return "RelevanceHit[tweetID=" + statusID + ",timeSliceID=" + timeSliceID - + ",score=" + (metadata == null ? "null" : metadata.getScore()) - + ",signature=" + (signature == null ? "null" : signature) + "]"; - } - - public static final Comparator COMPARATOR_BY_SCORE = - (d1, d2) -> { - // if two docs have the same score, then the first one (most recent) wins - if (d1.getScore() == d2.getScore()) { - return Long.compare(d2.getStatusID(), d1.getStatusID()); - } - return Double.compare(d2.getScoreDouble(), d1.getScoreDouble()); - }; - - public static final Comparator PQ_COMPARATOR_BY_SCORE = - (d1, d2) -> { - // Reverse the order - return COMPARATOR_BY_SCORE.compare(d2, d1); - }; - - @Override - public void clear() { - timeSliceID = Long.MAX_VALUE; - statusID = Long.MAX_VALUE; - metadata = null; - signature = null; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.docx b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.docx new file mode 100644 index 0000000000000000000000000000000000000000..4ae3ddc4fddfc9a93d3d1b6db27626a1dd58d005 GIT binary patch literal 37476 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 bk+K+S>oCBZ6_|rSxk`{B5tu#R_JVi-0-zi| literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.java b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.java deleted file mode 100644 index 0b99ab0da..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchRequestInfo.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.search.Query; - -import com.twitter.search.common.search.TerminationTracker; -import com.twitter.search.earlybird.QualityFactor; -import com.twitter.search.earlybird.search.SearchRequestInfo; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; - -public class RelevanceSearchRequestInfo extends SearchRequestInfo { - private final ThriftSearchRelevanceOptions relevanceOptions; - - public RelevanceSearchRequestInfo( - ThriftSearchQuery searchQuery, Query query, - TerminationTracker terminationTracker, QualityFactor qualityFactor) { - super(addResultMetadataOptionsIfUnset(searchQuery), query, terminationTracker, qualityFactor); - this.relevanceOptions = searchQuery.getRelevanceOptions(); - } - - private static ThriftSearchQuery addResultMetadataOptionsIfUnset(ThriftSearchQuery searchQuery) { - if (!searchQuery.isSetResultMetadataOptions()) { - searchQuery.setResultMetadataOptions(new ThriftSearchResultMetadataOptions()); - } - return searchQuery; - } - - @Override - protected int calculateMaxHitsToProcess(ThriftSearchQuery thriftSearchQuery) { - ThriftSearchRelevanceOptions searchRelevanceOptions = thriftSearchQuery.getRelevanceOptions(); - - // Don't use the value from the ThriftSearchQuery object if one is provided in the - // relevance options - int requestedMaxHitsToProcess = searchRelevanceOptions.isSetMaxHitsToProcess() - ? searchRelevanceOptions.getMaxHitsToProcess() - : super.calculateMaxHitsToProcess(thriftSearchQuery); - - return qualityFactorMaxHitsToProcess(getNumResultsRequested(), requestedMaxHitsToProcess); - } - - public ThriftSearchRelevanceOptions getRelevanceOptions() { - return this.relevanceOptions; - } - - /** - * Reduces maxHitsToProcess based on quality factor. Never reduces it beyond - * numResults. - * @param numResults - * @param maxHitsToProcess - * @return Reduced maxHitsToProcess. - */ - public int qualityFactorMaxHitsToProcess(int numResults, int maxHitsToProcess) { - Preconditions.checkNotNull(qualityFactor); - - // Do not quality factor if there is no lower bound on maxHitsToProcess. - if (numResults > maxHitsToProcess) { - return maxHitsToProcess; - } - - double currentQualityFactor = qualityFactor.get(); - return Math.max(numResults, (int) (currentQualityFactor * maxHitsToProcess)); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.docx b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.docx new file mode 100644 index 0000000000000000000000000000000000000000..605db9e292cfd9b28dab3c77100b0e23483563e6 GIT binary patch literal 37015 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 G0r3Ed-$wfY literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.java b/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.java deleted file mode 100644 index 0dc169dc9..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/RelevanceSearchResults.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import com.twitter.search.earlybird.search.Hit; -import com.twitter.search.earlybird.search.SimpleSearchResults; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -public class RelevanceSearchResults extends SimpleSearchResults { - public final ThriftSearchResultMetadata[] resultMetadata; - private ThriftSearchResultsRelevanceStats relevanceStats = null; - private long scoringTimeNanos = 0; - - public RelevanceSearchResults(int size) { - super(size); - this.resultMetadata = new ThriftSearchResultMetadata[size]; - } - - public void setHit(Hit hit, int hitIndex) { - hits[hitIndex] = hit; - resultMetadata[hitIndex] = hit.getMetadata(); - } - - public void setRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - this.relevanceStats = relevanceStats; - } - public ThriftSearchResultsRelevanceStats getRelevanceStats() { - return relevanceStats; - } - - public void setScoringTimeNanos(long scoringTimeNanos) { - this.scoringTimeNanos = scoringTimeNanos; - } - - public long getScoringTimeNanos() { - return scoringTimeNanos; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.docx b/src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..6979bd258030434f42117d1243d808db7124730c GIT binary patch literal 38142 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

    7e(HEOqB0naHmF!d03`38upt`Y$L7;2Bo;vs zT;Y}N#uGHXuFAHqfM)lDGLvgHU@|`Sr)h=3YWh?har}=r7v#GTMogEC;dcY+_BpLc zm%9R0Z?6`$V&%|lAI06JqBVW5%bh}3E8ZMdT_0UCou@YMiaT{<5))J(*S-VAT`#3w zeNnqVAj8G8QDhkA#)*h&(0R26%Xt-xO=1+EtNxHEnLOT$PLF7^YGfgMB67~1i&053 z^_)&jFT2-NPVL~*tEdlZi{f7yP|5yQ;{)nnD7~sr9Vcd3iJU{Wehs4?5vswQ*1|DW zYT)~O_cMY&bPZ*MWcf98q&NrTdh%IM<~n+QW|ND(hM2Kt?3owrAinuGZbLQplZpxD z!RLU!kqb?M{NB&s@FB(_{R6DOoxXmHH5X+2>sPKxH1lwJBO0zAhNd_uR2$h|VNAaF z^{Z2IM zh>Eu{8Xq?2Gk63+dMI;`F0SNp=gO)-0>emNmAQ?jkT6PQAw4bu%--B}s^G+3MiS_u z)`K~>g|OrMMFZOaz;Pd#490nruy$l0oS)NzcLo(8Ygk%*0Uu?9d1Ux^8obklo`Dko z`S^>jJrs-#hueCBkF#T!_WW0Vv^r9-RAXxHnCCtpV711K5?yiq2aROZa~?|50Ss zRfx%7_j9x^065!=0WvF;Ou<<#4#bZ{CgK*$mC!YSeo*o|PZRoNz5<4PUJ|MUt&=Y6 zob&&#^Ft8@ibD%8%eWnR35S$npbF4J#Iiy-Wl3R0Spv#Kv&PH3V$c!~%^^c2pz-&z z#M-b`qj9JJG|*iZ7+oQ-TG$KKg2s-^TJNty2eTYWLRFxl*0Rdi@TFB*5qLp)s6V*O dCq?~WVk^Bv8%r_Jf)=bw4sZp{BO-3$-@ggjXoLU& literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.java b/src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.java deleted file mode 100644 index b3d6184d0..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/ScoreFilterQuery.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.twitter.search.earlybird.search.relevance; - -import java.io.IOException; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.search.Weight; - -import com.twitter.search.common.query.DefaultFilterWeight; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.util.RangeFilterDISI; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunctionProvider; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunctionProvider.NamedScoringFunctionProvider; - -/** - * This filter only accepts documents for which the provided - * {@link com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction} - * returns a score that's greater or equal to the passed-in minScore and smaller or equal - * to maxScore. - */ -public final class ScoreFilterQuery extends Query { - private static final float DEFAULT_LUCENE_SCORE = 1.0F; - - private final float minScore; - private final float maxScore; - private final NamedScoringFunctionProvider scoringFunctionProvider; - private final ImmutableSchemaInterface schema; - - /** - * Returns a score filter. - * - * @param schema The schema to use to extract the feature scores. - * @param scoringFunctionProvider The scoring function provider. - * @param minScore The minimum score threshold. - * @param maxScore The maximum score threshold. - * @return A score filter with the given configuration. - */ - public static Query getScoreFilterQuery( - ImmutableSchemaInterface schema, - NamedScoringFunctionProvider scoringFunctionProvider, - float minScore, - float maxScore) { - return new BooleanQuery.Builder() - .add(new ScoreFilterQuery(schema, scoringFunctionProvider, minScore, maxScore), - BooleanClause.Occur.FILTER) - .build(); - } - - private ScoreFilterQuery(ImmutableSchemaInterface schema, - NamedScoringFunctionProvider scoringFunctionProvider, - float minScore, - float maxScore) { - this.schema = schema; - this.scoringFunctionProvider = scoringFunctionProvider; - this.minScore = minScore; - this.maxScore = maxScore; - } - - @Override - public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) - throws IOException { - return new DefaultFilterWeight(this) { - @Override - protected DocIdSetIterator getDocIdSetIterator(LeafReaderContext context) throws IOException { - ScoringFunction scoringFunction = scoringFunctionProvider.getScoringFunction(); - scoringFunction.setNextReader((EarlybirdIndexSegmentAtomicReader) context.reader()); - return new ScoreFilterDocIdSetIterator( - context.reader(), scoringFunction, minScore, maxScore); - } - }; - } - - private static final class ScoreFilterDocIdSetIterator extends RangeFilterDISI { - private final ScoringFunction scoringFunction; - private final float minScore; - private final float maxScore; - - public ScoreFilterDocIdSetIterator(LeafReader indexReader, ScoringFunction scoringFunction, - float minScore, float maxScore) throws IOException { - super(indexReader); - this.scoringFunction = scoringFunction; - this.minScore = minScore; - this.maxScore = maxScore; - } - - @Override - protected boolean shouldReturnDoc() throws IOException { - float score = scoringFunction.score(docID(), DEFAULT_LUCENE_SCORE); - return score >= minScore && score <= maxScore; - } - } - - public float getMinScoreForTest() { - return minScore; - } - - public float getMaxScoreForTest() { - return maxScore; - } - - public ScoringFunctionProvider getScoringFunctionProviderForTest() { - return scoringFunctionProvider; - } - - @Override - public int hashCode() { - return (int) (minScore * 29 - + maxScore * 17 - + (scoringFunctionProvider == null ? 0 : scoringFunctionProvider.hashCode())); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof ScoreFilterQuery)) { - return false; - } - - ScoreFilterQuery filter = ScoreFilterQuery.class.cast(obj); - return (minScore == filter.minScore) - && (maxScore == filter.maxScore) - && (scoringFunctionProvider == null - ? filter.scoringFunctionProvider == null - : scoringFunctionProvider.equals(filter.scoringFunctionProvider)); - } - - @Override - public String toString(String field) { - return "SCORE_FILTER_QUERY[minScore=" + minScore + ",maxScore=" + maxScore + "]"; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/AbstractRelevanceCollector.docx b/src/java/com/twitter/search/earlybird/search/relevance/collectors/AbstractRelevanceCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..5e004f1a09d4b0e63ec985bf1dfaf2e769862e7f GIT binary patch literal 38446 zcmagFV|XOp*DoA%Voq$^HYc{N2|Kniu_v}|+xEoP1d~i`pPu{v^LfsB-!Iiy@2d5~ zTGdsncI{S_0f#^b0Re#lxlQBLtWqwDPXYx28HWM^K?9EJhyv`K&Fq{FR6Xp?ob(vn zZEc#8FH%^6p(A3vZg{CC@y)O?VbH10b&9sZ(L&9ke!Z^<(R~;m zfc)d9Z7+k{ga+#gRDD_0t%~**s#VC(Gk|q4MeY1Cc(%re9dGXGx;pLGPHn9iRUgZf zASoQr2T{b#)80U8$_8S+?@;M1ov~Hk!4Cru57b4mWCBksVfqgX^K!P6YW|~0-`Ldz z>y$f$W0S{Nxj8=^PDDw3?s9{5R=LIGeLBSq_^ASf2E87y5MK_BAlI-TKLu1jNWFFy zAGoXs=9|dUB~$CXCE*vM^u!yzcs;|HRD2c_=zCo***p*&e;~O?}naVXy&{4BHt%?5?^O ztYwoPc}I#UWJdA8VXjUjK)Z!Dq(j|sJ||o)B4$8iD}`7ZT$YG(3-3&&;o?I-4}bzl z$TqV_lvK6-v~i1g6l`{uGV~WZiL*yhNs~8a#^NeOly*S76_q}ki7Ah3%fxJd?oj-y zQ*p&`93-lsqVG<23pLe=I>=?w$X7Dgx-WT1PewYW;W=&YvK6G{XFo&mo2f44Lc1w; z#Rq0=PKV>-zY`Sp4PM0(c$&`v6NCaxkSV}K(Gg(p#ApI=H2ZUsXC+L?4=^E%KX{8T z$f<|lAj61D(}12te33#ASZTXwW0$j;$mW>Z-Y>M(&ZTuF*ybI%u@~6nY-#~F2}uYc z42{1CFpYrM!gyad#@u+x7N_B^N(%13=zX5Qrm)~K8Sjl$!ubSOn+-0V!K^2{6vjh3 zSkKP3@NJqnt5vx;?^r|yMQ-(*x=;dDJ1GLu0Xp@sfB=HX| zRJBkncxSFpke`r1S%s9+l-*j@S#~1MoE#mtXI#PcDn7M@enL$CoHut?S}7Em2eYB$ zx&;_4svB8Y*xR6YBKH?`Hf?3CMSE+W;G#@1^3B}LLmYAAw+MyJ`u=cxWyzfJT^hYa zI1@s;UFrv2_f-CIgWreb`{xxr+DFbS2<#IJM1AUcH_`Xk{%hR-uFLKEI@T$$E;bM# zAjtn&7bAQ7zsjOIVYkkN-1$Naq30Z72`#LIoe;PrJSVz|Q=5?4vM^5aB_5)UdC%A9 zDGY=A8{=I#Zv*d3TxfU2II*q0%&_D1=<!9!gO^E) zO)FceN=yn772t0*Un@LHXZYDA_wP=$l9Lb+CBTf{SRp1nDlDm1!z8feh;W$=yDlfc zLRi6jIp5Wr{zA#Mu+_ohnAl!EHoy|3oWa_>jYUlm1hm?0rz8nXX>616 zhGt@^dD$q$rwp!33l=Fzc6DYjzA_SA!e%_(;C?LL{U-eH6N6|$nT!V(1cdd=-#=J4 zfTJlR@K@_%3%oh~IWx|5H#PQKG5jtJ@(zt)RP4c6%}OSN=_!#Zj(&rXPu@Gk7}GXm zu3mp}1Uvinu|=!pnyG*tCcCCZV64;Z;@7^dk??eT<1;y%3M1|DW0m`IjW>);0O>2L zt84ex{k`CCqB46_!(p@^s~$v-M@NZ*KIwSS8#BfUR1o}R*X{|=SrUb+o*P!uf+Wnz z`m#QK2SM-Gv(5(|`7uvo&UwLY^P7G*mE@u;IN4lKjx4V$ z6lR2xVeVg0Te7a6H!d@WLT7pIqI{61@8fA^Z2`-u!JvlOqhZA=-TW<_t)DTnD)H^jY7=jF-X?;5 zDJ~%p=Mi(j1V;@bv|_w{Vxi9{rNrEny06e-8ra~;)DANEV%gOWzcKEgh3shYoJDt6 zw)i?~+(X9fcs)i+Jl3vJ{aN>FwJ8(b#Ly=Ed-@w8>LjUF%J)}-J{94*f_{GXk_MjVP8m62pk z1OrASS16lE(oSAH9G1+|f{zSvC1O!AorP_Q7(x9yJ2$zdglSe9ok7MKxnNl@33JL+ z`Ovvsqm1ElXSJoplA$zFe))vl=v0X}1=J#xh?YUzFCxT$R;kx1(U!D{7h-t(!>B-NBs){30!8sb+MR&!CEYJ-e*RN(W-6k?9#JLP5A|5CL=V*vjv1&h^B^s{|B0dm*w?AZ z&x%CRETE6!c7`y$9*9a!9C=li9HtABD{v4`pJdu31kQ)S{eJ4lla(gqAb0{&pIdoe zf9D+-?Z}l1J&)Ghy|<2n`I`W!yGMmhYXi%&$tlc$bkyl zvZcfK#R+675MBM|*kR$duI8^p?<_Yc&=6kh;=BXNnpM6$ToxjRR~M3u_+`}eYV7bF z^ZIt-p@GXp6Sp#-S(pW~Ca70Y#+phN(}+JF3?;md9jmtXg`+<{A>1imFJXh8xGxo#wMp-LJ?g0zDj_@9HTZJrMHv5 zgBIRwNNu&q_2J7-Au{XV`qM01{?IIZH(yoLA0EERian)n%mpvqW^sw4aGvbF!B@Rj@%h$S{ z-b`L{llMS>Ovo?v1K?#)J#@bo5O|Z;#H_{?dp31y4a(59Suu|1yxZhOwHjM3T0{lt& z_k9IdD*US;b=90fqxf#}rHNTrx&n$@S3qzNkXY2(l?;jB8&bhRuzJ+s4w3;wvI?8{jFb^L^Kb-~cq9{jt*@@XHt7l%F~672z1d*ItsX**F_ zf>I2(xMZnTEyPJKsM652q0@4cmsq6CcLF(YqvG7+(ta8WpF3Lfv~Nertm}u=Q{~70 zBVr?h1u8oXGPccL24r7af5^LhV%PQmhO|Rka#~nmi~)moZh`n9Lu~a5)!Uo9i@DEeN1c_o<{2(?@j16>G%$kX`(RE?E|y z!2$#Q%9ia)=3dFk_LcF)25F_E?fLrbbmz60;Gu=aN)Kesk;_G_;s@y1=W&(ncl)vu zcA3%!Es9^Msy>&N#U#~FDk^ccnx2Q?h3(;(6(V;DXA`H!*@cCj8t0Me=P@fH0J6z( zZA)dpN!zORW7}d-bIu1YS66kuyECS39%3~&S~|P@YFPo*dzod@?;)%4gwhN(b*Nph z6X;So3=zM$pKuzct@|(tja=YT@5@kY)@uN~E#&Y``ube?HR0QL0a7{JrvQ*_?g|_w9;m}^^gCL_miF_O zjq6?KbK6^YIO6k7v(aY-_j4U~b6ox@vZoynlF*We+cAZ^I|lY{KP>U^2)Y5Ml%!lA zr_fx010?Uh^q4*B#vZ}PF=vSZDLF>a^1Z9u^mwHMJ5ve(Z*&f#+yg0Mf13WcG?tWP zywcoYbz0T8D9dlCk6`)X=NS|~(`g75yLqj2pbj>eN}fKHEag5n=g0g&|GUw$^T$PH z0e0XMzz!S_*n$7mX#M^C_@C|8-_MfYg%yIBu)kfr!}W(Gq8Hmme*T?L(Lp0oQ{){Y zv6gTzda$jtX-X%$7qI`p;gdsYJ3n==vb4pEP22b-kShud34K09(F~Q(0x9LRw?Rrx z*t&`cmZ!FlqicmvL~ib^F6nFK(Uojp59uBNJ6ue&O(cLX=no%(j<8`J~)Q6TD877g`C*~ty}E{H5 z-k|m2%o`W+M2imsUgdP7Q4Ju}A2PuQSRV~7$M?;bOhClkdPGx1S&C{iRd&IzOIRa? zxyb9&Rf4TUK2KS5S>4WkAM})mb@qY=6WkYwD#6?1#@Dn~n$VCuqf~yPd0n;C>4F!T8^~j;_GujbsD?(N}{6LHcK|ot!;v%$)veY4!9H_ay3l zdV2B;3|@cQ#s!0nOxuAZxZ)Xkb!FFGu*$K{|DK)2`Wky?;73j@M5v~$rv9Zop`N!t z8&i?`KqD(r)$Hvp$FI}o!qCgbgVlXIX4p}S4zLj9#=>inhy;QNN{&HHqC?yh~F zoxJ{L_jaBkxI6-Qe~SHhdRe}RDG_Wr-Pe13+PvyWS?qW@n*Vjz5gNLG;_+6`_ip>q zz7@jgyGE#=Tyi-xa1@$yusgAS+EVd0aeCe8v0=kmB1l--*W0D=jXNx={^QoNLEGzP zaeczmEkf|aUK22Y^3bt=b9m?e`K)5}tHDEP$?|}2lK{bhh3{(ih?ka~>$1@|d86Ev zsgqj4bHS{4OaWO($t%U(kqZ9e`gw~O=86wdQ(PKDDCAN>no{^}gNgQe#&j)65%J;|hLs!ltcRp^uI*Jc@f`X%BtI0_+}K zb-46BnEKTHF9=2zNV}y-%*urQYJ|p>0)t{cVbtDX^S&;w-M1rWmP3?q`l?Uif%B@q z`8%XZIaIA;2b6FGiol^hT0x~+0Px!(-P@qm=MTNdNvRcR0XzA17c(#%n&Nh{v+cJ| zJ~~0d$`ADw#DOEWKL^UwAV4sRpU_cwxP7Xq0|5>0xG3zq|jH#fh|2b?n5 zXhYiYiZr4>1`gfJ2{Lb})PmqwXAd69{VoZY6*5{nl|YRkpBgizu^#R!ZF zS-N}QI(n~2aU(ZAG|jvNUUEvK02;B3S(cq~EfFEhnmn#pFK6$UzieqU35I{5cw-RX z!~78T#y6mnjw&MMN))&-uTUG^5PMZ6j{PE~Bvp#4{GGKTnC<|bmRN><`3p>fe0xu& z-!>lOqxyK~2>McGCv!#tsFKZ9PRm;vPO5eU-TTX?WfyPt#bDuTL@hJxw)Bdo?Oq~s zAqV&u808E&a)`boF$dz4#DZYDCM{)=xHV^LVi=1p^j-s)n__?TU=I}`xV27dB6!=a z%B%t@7-dpg)Ij@$7Js75pL)Ep@yLbQofRQFf5LYn6NFNyz#iu1g##tcjW9`&EXTycSV zl#zj6(Hno#6T#E}4~g_dFq9tfFn_6DNOWsL?)-DqzlI8(L>s4FJG#;Ivw6g{7m2zF z)LncooP=1dqZEbe%-u7!l(^;`~!V}Y6ICSV(9htCsr;Fle z&`Ey17}|Wfb7|AF8}br<9ax@p&HK9Iexvg^JfBmu>t6F~Q9$A7;BYK|_c3}~P_N}q zj4;M-k6~3PNjK(#Js#)d#r~5hy~m6pGTlZQe&+Vj2GRYwuj@*t8^X|fH-q0uj+E`G zW5Q9}@4*N_&0autEOMER4;5ek&66YDiNoi$%WdAJd0Wm7#+1{ec+8oJpC+8}x?9Y0 zt^}rCL3uda`0|J0Rta4uB?tS=Pag+9O5<=B%&#{te%@{ut%+nvMO#i`wM%#OD(m=U z5I}1x!v)STk_=*)GIQsvPVN z=G6UK84FKsUkw`Mgn;aAIeu3}UCb!gu`7e-;|wv=R#${r{rh${yAUKw#?=bpsajXo%ivVLk9XhVaxUf$;W&8LdT5T^X`}OdU zXUCg^hwsCC(#O)-^Zc*Z6MH73&i7Wqtb4}SnGs0OcMzo243Aa;2!rj8mXwh@;wRkGGQl6}$GUn%Gk# z(GvpT1)~;|_AUXc`3r&#@#mG3^Z?w7WSR7N2KJI@Q~3_J!(fr$Hz(Ph{L>oDwJv`maZFPGNPV4zo-@%ra( z4Iadnx}(q!5vnS@)g$q53%-4B5uFwU-1fIAIW86y>)o^9jbD$i+8oPuUMKXQJ_NR#uLcQAd#Ht)>+n;Foo3$2u6Nweep$Lzq&cJn&>`o%@Ua=O|;65O|s$M@$YJgiC?q)aBRo)vetS~Vl~0yue9 zvhuGyTr1_Zr|LrrR}Yysa%45Xazm9^J$J-Lo`yUN2GZN_7tj<#)}v^+=Hg59myVIu zhg$8_==!fXI$Dh9n3sm`7R_Dyz}LkM)h4_>J*?y_b@lD|vuplaP926F#hk0s+K#$bW6TNUBls<3?-HES ztny!`xP)2u3*pUeEE>`Z`AdrKGf7sR)*!vCT6ZJm;xNZN9y}_l6HXNq1~oO=jMo%g zj&`alNn7_1Pq4MH;bMD!E)(+gv!Wur@Q2ryP((^;Oe>kjv4+KWi?>6h1+B zbmzW)Rkl9<})*8JVG+Pdk?eA)X~xGdP05q?Tak-RJSFbnrlfO^@)C$7B-t zq;t3Xs^`4%xd6--QTgjl^Ay{!4AAFFs%bO7=N}H>x4Tmejf2l!Ya@O^KCgMXzKQGK z(ZQ(&%&55Qg6q)9UGh=cGB>`wMxn`vPNXyR)o?Omv94kb#~HRC)4|7-gG z2iPNd1>5(Hl~qXfu_U#s?6_<&*9=?R^LUvj4W%~S?2dPx^Jh^BLL@AD{z8N?=2KT` z^|NfXeM5wclkR?~e1br>1(VeK(4H!!qohcTLkk>ugPJ^_oEo%qs}6mF>r0B)n|X6w zw65a^t2?6Z)GYD>>!Y$i4YOxNy*`?!p~*Yla=6$mySi^7gOjo=aY*!k%yzcgcgsi=>MfE*qml2H=N*Bh=ig`ZgeZYEpL5tFk z>9{(*0@Z~hEPH0HV%W)&vu3uau@b2Jic#K4mv$$G7Z04Oo_|9-aqd+uD zr>2@?1U2D^V_ULsTM`ucoL*cG#ZEw+fFs0QP747YI^C_HKs5J*+Tbnc%za>v04}Oc zbRqy#EfK(>KiWhN4!F@g#ZW(q?TP#u0e)v`I{uj18lP=uJCApPICcicR#0AT@eRYjXbK_*5^Cv}xbGS!4BT|GL`-I|# z+6S=9k3KHWl4{DlFL$<3%4<8JI8khfua0EoVSd-?zPi=j-U7e3`(?*+$(!1jITJs#>!YdKk)K}b*;|MA+^X2#a zvmKUjqeo>JGFWxC)8(t`U_KHp=$9g(3REeF$o#tH`i(NpqV-vDCkJ=w(gphN1)nKS z^d_OJPj4~qzT8L7cC3CHJuM57!%_kO!!bYkNOb)bUiy#lg@1(~{|OHw5a}xS;kdQ? z0e>{3{#0c4`*o$^j#4U!DQjP_jm5j3~3H0>nivCfGwY3taSYzdf z+LeJD(3!1G;ev8^Seb77G-t6O1Imbg8SH6^I5$vqBHm@nOSWE?tFNz6%61aM8BDTJ zv9>IJQLI?&!oOfu9#qO{v1n8AU7$c8&OOhcazVx^jDSJyrd_`tKjutTk+CL49p|ne z*AnGK?JTswjg>xbStYWXA%81Vt%2VBIm(lICj=~8k#UOHvsJaLG{q*=l-F|MrDotT zJjiuFC70--zCTTfft?EFGwbpVlFP!jq9i#H12h#_~@-M8npW3(2PPY<=lo}%{C)eILjne34Va8KY$9dDlQ`Y;dt{Ua$ zUz6gMgnS;JQ6cDtOQR>iEXz3_w%@`f3*uA`S{GF6Z8M}7G_Zn>A9(EA(d?eJS@EaG zNM&>F)}GVEeV60}MXMIoZgrx!^0xp<5pD|r1QwdoFiO5^(O&X(Ayv+^cY=+$` z^@-AkJBp;+(p9DqQCHvDCN7B~ez>{3pM~APo}xgearF0;vL{2;G}U&a>0H$}Lgi{>1}9 z_D>%9eQ7Mv-I6Oslv+cllVL_Cno<}lpr!9WehI7IGI6)Ji3{oV>r|a69re+vLa5S# zonRxOBdS6yT)w|Bf40Q*Uc&?(b4_SYq#kYUzKE_SwLprIHCSwfk?NkKS)5-vI-vzi zn6cb*azO|62t_Lfx*C8jgVC(z#+N7iH=9w!|6t>G`Tu028g&ogyrNu=Z#eo|Qe&kJ zLAL!h>BRE4(;Wur*b&=R8&8CPXG8kDxX`246flW)pd}4B6_O!$5a{?CuJZy}^m5`z zK?NDxXo`uK>NbJu`*mGF!ZX-XBR)kgMHIz>mx~e8Laj?n9SE{@={5OcB9o^EqV@1I z4*TcwVsWACX!Ww}VF3*j1)*zhe(&lSl3ZFvh)z6TS#hCY5+Zy(`hS^&!*7xk?~TFY zpNzJ%Ls3k*RIl)a38BOQU8nwkW|L|ZBKyKU=ydc~U{pri|D||L5&nYJIUE2+!t4}< zU3|<~D1jdDl+J2`tV5GtMP?AFFtG0KN`+s`Z06TJY(DC#NF7jh57RAZK44edNQ2i$)ioq{9gS=52N|w_= zkT#Qm255^LEkJ*Sz=smIM_|~HbI6dQX){_{ z(^=$L^YAo>+{J&WJe2sOQiZS)sB!@Mk4gy8x>VzlwqM>%ho+)fwr~Mbpe`@qqXCT{ z;9&vyCPegMnz9<2pTy01P@{|nI<1RtqHp>o#T-CdU8)Babk^nevom7;`rG*uimo!x zRWa+Oh`fVAO@ztR4#e3SMM^$GE&UzT${!<5~YnPap2 zN!S+j<>b@SnGNeiL0l!i?HY%fiv~93Ewq%t!9*^LW#xoHQ(MD{uX~xmpy|JZxc+xg z($oR{-Qo2hceoSk(I2YRN(7rrxlFW)$3gCB*3X`us7ICJO@H>g;+i5KEhs#UXEt0@ zfylg3f$U}eHBL`1ExQEOY(hC5Zsxt0Ih^*1Uq9SwDPQ}~{tg6|FsG9eFSBVa5Bs1Z zUwd!|`M<`K6HGan)0X*ixG0ma!kus|SZ>|Pr?n!j{!+p*N;F-TbDqR)alnk5{LGB| zZ-sgIhxjf+nP^jgD|G$e3a>M7LZ{-lD>*!s@`TSyKRb>&mg+)Z59a-#ADyo*{LFgb zp*kemhuBxXqzbKNWBe*wyPXvizm5Or4t@Nzz1c(e(IMEG6QYDIts9DL>AFET&-gsn zbbNPo96hN}9aFM!@N{Td5M^#%&&X6#vZ~MSi3c_9{JZXapkMmDT|Al_y8ccdcwwKS zhnfQ*e#^dK@~LWWI9zL0B04O!`tCPOaH4k&8@v-3r(3f5Gf%n7)u>O8n+_CZARsI* zqys^GEhV9d221%auhRKBqrY= zZ78{>F&7<5y?u+3bVl90g{E=t)|?@*6>s48Qn9?ZdZ~rDQ(rWMZP_%(Oz!ovMWyQt zA#d~5OVe!JCD!Mr>q8wd3jaeb^A|NLkQ!R%Pxn39wzY(iZ1@+otLX%gnwR5m>L282 zk%<2f>Z|TS*v{}AgDvki$u2|KldAGQRJ-|XI=TS2-^7}Moy}w&r-Epar0!uFh%&W< z_L?N7yLJN!93~|*wSz)k`+cZ?y6mFQEnW+s{y~24G72PDf&PoUg_#X4lHvbBK4&Ps z^AwY^z2W!|@_s|0lD<~#%ByMHUzQxaW6Bildk%(Vi*5nShkM%oR_te zTyQY{w{voHWVuB4o~zk1`E-iU4`TCd`IcbKtZFyW^K8G$$_p3(JaX1ufUI-2DpyDp zIq#cxf&kLb^OZ;3*u&JJ(N8Qal5dlI9JzlgpV)Ld`06ypP#A4}T{yDbjuj&40 zvWwpPY;vCEC#4g(^7CsK`(@m66$Zj$^FnM@ohju-TQW&swV}VJ3$cpz27V;-(Dl1| z-nK7S{?nuOL-E+qe}LV1&71yZ@)ujxUH5SNeB;_bP0Hw;bQOjFZ89|Jk4Y~0KPJ0u z|Nl&K$yxWzbR4o(`2tO%6%-R%_Eyi1KwCE` z>A`QslN!;bFf_HL7(y3m4_iEku*dIBZz{iR8yGo0x%*npDsh8}_G!%_&+ANb>%f4+ zz%rf^I}fEog$eMhYM6|HY*5@9}9D^1ekc`)CTYUw?^0U#Lrsy|edhN9)E6(o+(JDu8GGGI(e$a#-7==3P2^WPfXO>6 z2PW?f26{BWrWNA9lV_Ww`;X++cG+~NPOT&|{X-$#0Q|uz-tGi0pwgMQk3Uv4phNWwXzk|#w*rGc3q1Lvl4iJ1!4HFh zVPpNHvix?n^AQM(UU%342u!AKtJinq=naf|8RDW5!F=k?WDXSz4pWN-od{Xr%VAi1 z)moEKQU*v*$vw5>CtM&CQjdSsV~~E>?|&vrZ)8skYJh zUhd%4|Em2p@CVopJVp1BSHFVvB$Iz}g=kT7a-wSxYX-;WFqUXV%OS>9oEp?)WPN6l7CtDFNn>xqMGmO>p=*2eTJ7 z)#!Ds!)0&Y3Xarms-M2U;V4h3!=KVX?82X1W?=?j6@R1NAz!W(F_>!u;-8wfPvoh)AXO#gIQj;~{lK>X`tOdJy*ULtyfPpI|@18~TD31g7R( zwkAy0IBsM!^8nJ6#P6=sv9(H^v0PQPt8$*o)aabmshco zq|GA@b~}SqgByDD_0^*zD3#q3vO^1yR`SDTaZ=^o3~y}g;U$}8|$t&wtfLY z@jpb}Gc~SN8Pl)hxZXM^2;IOO_&-7Jmz~;^EQGKK1_%oyj8ue%++x)bU@Xb&I_s{U z@2c(J2R}8<(sf2(yuSACe(%-#pQW0~@%*if#ah)e`no14CG?N{*+ZAR|YdV}Pr%Yn<5G>zh&(%)>{f*<` zQffgv0%CA5t_4rjI6D*v#VjyD9MQLg6eLUK^w)E_o!C5no39IfzS?%pl(@{R6niC( z@z&^*f&n3L7J5fpVT1%ezpSF1dJ|HwSb?uxzHl*~sK=*sLX! ziku};a)B?%s(YvI;WbID4$i{QhtT{OPsqi$8)Imz*tsk@-CKb1@5{JHB_cUxAp*B} zr8QWJWk`!Fs=rxXo|Rlkr{q~lx2>|K+-f#LPxh@Kd#**-Z0sqcOSkz5EgUicE30!R-VT z9Qbd+fjMQ6f`1F{`y=@BkKk(DQx{j}C-qaCZZAkdRYDEg$0Wirn+n1)*?$1L_thi? z#r_jmvEA7;25V{<1mpGg&R3^%Ku-$ z(SvZlDT#AsJCcxs2r3X5uh=ziZ=GIxm)%do3XpQ_xj@%-Wjhupw*?ymfS=LcuA8Yt_@z6`!rLdFKtCgkaK6==eKSRYgg|L> zz?7JDZW;D5UV4Y#AV8hAI?+7-!njqv6ir|5qc^xSV%o+Y?G5@c*aV>Z<9@e57 z-$MlEHy7a2wF9gu3#1^x6Ps2Z?>nb;`U!Mh+cIGF-5)`lI&gVfv zZfF5QmMYyb;UL}RNHc1Our#!cZ@PizaaBx0C1PrNaM%h+r8@Z!w@pYh6D900`KD9= zexu$cvTETbwh`SeJj;{tad0&Z8(({nO3;IECv$UhYG9>`J!-JR8)FZrq5{|5-Yvec zwt+hkeazFNOJS@2|s z;|A}vUfmxf;Q_v+b@}hNj;s3b4-H_$+2eU5gZEtt^f~NqRsKVPPSD&Sz7v@Ljyt^d zNGO^G4;Cj(pTqvy93j`%cNQ5tg{L0@8G!M6hmG=I3; z3h0Og?Km7_`=8;|;3NBwZ?~98cohC%I6a-dZXV$1kp^+n@S1$kQVHLaB*^IV?2FDX z+PV_PREjucl8fB7axuzjB&&9WWr{s7Q;Vh)m2mu=((`Dd-xMz+;VTRngL|3Rr)aU{K%x|%F7u!~OXNy^w3}yL&PI8jg6p0n z_8k~Y)X;MdgJY*S*aiJ+w#|DdLnsm^Q|L5C`+$)TVz_(_MFk_TyXJbv=u{HYvuug6 zhg@!h1nrC~tYMc@Ceq!AN%q()+FD7#PKEtMw;a#HS_%e@hKqXixvKSdcC!su9Y=2XAx zPT<~sS%pfQXkj)qT+F8qbpiNNISHXo0lZ%(jpZvgDupLmPL2nLUp#d(v<^+mS4L@S zL2ItM+tAb9<6xVAh#8xq{$elL&^6R!Se_WiVPdLd$*K$(9)F$lX0ZUUnaYLP*0V6C zMqB(AU#Zj~SEra6k9f27sQk2bn5_Akg?8eudR$fr@q5z2^Sn7!lU5m)ttJR98g`Oq z+H|E2`ZbGd7yY_oty85ek!yI8%lD+{*Q-(U9Hdd30_jRwlCHz=85yVyDW_&;2-vBb zY4S@#CT7{E>rU~A9cK;oAx9ppS32|-W+$JDS5Q+&40o~u!uyC=u|Z!MW(*;6F@pO> zNjQKm`;I3K|8xOOWxo?br*C88BPU3iF0Rv` zc#Mnm8;yv)YRe_b)r*;FZ@PLBRuUDPF)WTW(}aGb(wgILVl86hg0wV>`(#r;(XM7}c3oMyLXn4u*`^ z5<>|a&K12ovdI`Cdd8Sk<#_MoV1ZBVC!E7=ny^EUfGx+xE}3x*c4MT7n?;J7^_J8Q zgoQwZp+J_6Yc93$0xco+w-f5icquTX@~vaBQK!{xMIik!Kk;*bn`~KSDdrWHDC5xd;?kg~ z9z&~s?Ut6`&h1~xVZaNgaBC6`*+4MM70E*)6^0CiOBaGI zc$Zz>#S`t2vT7Y1gI-ty6^HMp!Dg7Ev zND*|bG5Z11g+AL0vKK9qCv;~%daQSnK@5wF%u$MlTWX7Cg@iu|ygbd=DbH(pD}JzA z2P50Kq05TnHNa!%1%!%=!Zuv-k?r^EuTaPXpHamN73;BBqS1G}h+(Obl}pj6OV2Q^ zkf?8%Z7R1+^3EIGj z7a5ZnWmEPC1d|mCN#)5G<~FO9@&n^gN}h@Tc3_A^IsN^u3EPP^VonN}i6Na5#h36d zPXdO@F!V3?!o~4m-h^btkRos{B#=#6B4@z3*v)yMgO5oZV#sY*EEar*C`3;#30#g7e?&_BAY>zlxiio0&NOy@cOK zFQq`D{_N!mqv>QwAv+m_cx=LF8Wn6UIop0W7Y6$P z%I%G_`^dZfJ&y+c?vKNngY%4!r;Cs0_fxlyx15=YO}*=vyYr5k8l;PhoO|HX{;jTc zem;5w%#NO}N`mH$&BOV308&PZTZTf8I?{xj0q6RN+q5AU*K5!6*`ZO}I{ENn3 zPH;wOOUi+#Uu&1!`hk<TFCzxc6;m8q8{69oB_%anpCcP}ryPyKiECk{^^ z*~zDV7s;{9`yaT3haY7_p;POge%`q<(EJw!1%d?0HNWyRb?fyD2VR|?D~@g{JEH1D zaRC*l^!P~VvV@559}SzkZ3W}9{PbAAs(m;sn>ffD51DYW03+m9BcxUqVhb?}3)88k zS+GjHDnqXK8KI=g4YsW+**Tj+|A(-*fU0BJx`lBI9^BpCEl6;8C%C(NaCdiicXxMp zg1ZwuK#;e|IrqMM?*F~-9}Jqo?%H$BIjg((s_I?6qJEmNL+$-uh0A&La`wmX%HHS+ z1iW;-4R{Fy@DlUGJ)egf&Rf^hjuX%lvD%ERhtzf*w6(#bi{1MZx&v_b zqSLges|UMjmw7?I^tYNVYlR0*gK;}3OJVwI+3*c>RhvkC4lil-&5f<*@?i~+{J7W3 zp+5TQ@Zf{_L%>%BJAXSp4QrRhX0yBCN8yxs^+3BH6fYhXzkcfr#&@H6CI#&^+Am(T z*0IUm&uyWxg{#s5*}(eruEtxnsXg^&us7B-xi3o5W>~Q{9v)`8KO!O0mM64Yp9I%4 ziyV_0d&e~{v<|6xGi03#m99zW@o-nox@nqyI{l)!+2m5$h=%=$-uV$v#QKL$gl#3Q zK`UprX24Hl1cXq*F;Jt$MYW!U(>fa6FyrrN3}W?ipD;+&YQZZ;X*b?A-nxEdLN`CQ z{AB8Aen8uZgGbV5djH+Dx*Ts9{I%`Tu2ZMVWt^Kgo(|k&@}dC5U$&+YMvZty6TAY+ zvJPYk#YNLgQfRHpN5Jn@wFj$Lghn^gR`hWDyAn53Fl8BTYCp8HPv;xK{D)~TZ_<;X|@}CX< z6Xkzqfx+4gZkv+#1B63r)*2WG!mJqx-ah~U#`+Jge^dGaa!QM2184>fXlC(uvmP7k zPumQ_jUPB0ARMrBA2|Qn;6F6ih%|sNXcBD#njr(4eMp11urC*XhJU!diTWLQKzN`@ z_EIe#-vQ+1x!_I9N83Dp4?28Ci=r|;O{JT(3wNhm|71V>OWa4(4~NmCJbJo(a;LC_ z&jvQaVoUe^=;bo_;2?9X@7L!DY;iuj%Pf!>39w)EsnO&$nneCguPw1*3o7xS-va0Z4cU$?K_Riq&A{Mq*542^zFc@x4 z-eWhFzea}}R=l;+b?)5XM1MaSJz9Jof7)NYdoin>)UwA7xeZioz2wN4@wQn{GAteRJPuYThLwnf224{?IDhOXz9-=X5f6>-yJA z;<5GR%B|$@Yi*CRgUyvEqjNTz4uJ9NS{mMz_gY$%!DY1D-Gyx6<=5}BpCh= z?sL?iKhcAwcilNQFy=Wik0K0tvold-40*FM4L!~l1YvZY%X-gE!Rm>@4qu*4fJS7q zAszfYR|sP~t_?8)j0os`8+72!veD+OSqr{J#yI~5Gb^@m{hC_`b4?AzzJkGf*&OFFsHAGo8Qi<1=FBcPj z$-0F_IRT!kziS23z+RXC%1^|QPJ!oYsNL^#k*ZMdZ4$Ra-~&)uO2n>tNWJl0#IBaS zev5%Y0y{z?rWi9{-8A41N<}DSf5RVyKFKY$VOR*i3W8J(3Npc?`lc#Im5vub1j8y$ zJjumHmceug+Fhye&GJh3DqXV#qe$P^7Pa>~E#AsF?_Tin9_6IJyzX&jy6MRFcJ0OU zyw#4tIoYpzKE1p|3-hKQc-?Be&hL%Yy)^J?v*AdU(Y>^+{$!`ep|wV^d01dcjZ(hu zk{x#4ZuRnbYFW?Hk1e$87qm`_tK}iH&czc+t=vDFV#d_DzqS=Dca5u*}{A*WRX*HPd3s z+RzC~5s_Kui!qM<1jm;lsozKf0s$@ePb`6`YCQ|dY%IB+v~&=8*~d1c(`=q+BxiFJemWePZPL{S z*5<7}RvFvnsZ5nvs))x0NAke!+K)6QI~{gm3(DJu}_!D(cDBc?|pE7 z=CXrkhhsZEd*u=4vTh+bWlAH|VC_ip^+{-Bbn`ZhQ14Zc@4M1=RDy>I;8wMt)M({l zpT-~GbgHnk+__f7o;+Ty=yoU7C)nHP35g%~rWui4ULUj-4?a6+jND(jfJ%{GB*s-9 zDhUf4JirOEE zPTorXggfbIvbg?5TW=ku>O{Wy0IxFbM=>6&RnYQX$(ly=o2RQ$VV`F5Z3n>0+YzwuK{ew-Nf`;y~Im6Yt?015tel0hh@A zF-B~@!2*IKOWGd4?fUDp-LKK%ji19U*zv!r=WP~6~lO!gD3K9Q8K(_Cb zatDeSWMqUWG}M5Hsc3H~_1hQLBOa#)_ws2s<|!>QDR^F-s5t$)?q>-Ex_h0omXT5| zLMNtLg*{V(YOLOq=%Ck)bMd5Oa2jCRe4{LG$@;VgB)ilG`YTnKJrSYC|wEO3*oO zPiL$=bti5VPVBT+V%XO{J^(utaQDVb?iPX$pa6Ca^LTj>575pXUdM>FX!%`=vFPWKcDJs=HB+2ZYMgLzQvz5 z_j!rIT%~Px(HaY_Z2V}YdXiJ}qN_H^m}`?kbrWMU%7zjhva&H8Yg1!Q9OpYaa#x)2 znm{X{x)2j#qL=sX$fQYYKA|gK^*V58KZ(1(`cZrm+hF=lJh`YCLHJ_KgC(7;wrooT zM8N#{#UVIof1VN|{bJ8v(-r+RMy7UX64P)!!*e&CSb&#IQ^_J=`Jl|~Fr!GmGI5a$ z^Tz>#(8Wv9+!W<^L%s8^pGIC2Yo*>L%^p<4>JM2aMGH00AlsiFozl>JUWSHV{l=fR zr9rYLqEwoCaB!}@t-2rpBhBDNo#ZK8wB(fjz|hqnpPXpatLe3=k_L@KV2g)?05>3r4Gp@_jE?6!y>+D3e*eV2usM-x5+A@J}4 zfn9eIW;wmmrPIBOvl?y&ydzc52r7^g> zA0&lm<_j>*fZSHgY&0||##__+A6qS^EIOL29k)%T-%+6q`wM*~1!2^!3KY)aY4Q_oEqr>L7@?MnmMgd%`#Hj3D%wUCx7XEp zV8Je>&AdJbc__vn7GPgaE;xK&ruJCN@4kdP(qx!xXZWefW^1#(DJQ6c-H6f-I$lD$ zj;&i`1>4to!de{#c(k65x_Xl8QFLEtts@51ditD{KkTm}q8(lK_4Hakr*%#bc3Y40 zO(}l@4C(P_;f>B6OZ-c?b!__)^ZX=z7hTN801r^urbvMn_SeHjFO)!HvTA1s(Va~- zE&#Vk^6gDS=4j`+PRzkgM;?Qp5X(6-@9XKKJ->`))VoXC*)uNsJAFL_;nl4c{zy%- zwfQ6USJ83@S46)!i{6bny$i}^WMM!5_GSdwdb%asyi6PWrR}aX=!3Pblics4P1jya z-e3R!>||KNZ?j$2?O9vc(GWm=J@!7eu&=_%XFA#tEoUQ0V zbd42rW~lx$s54uN5P!68PVUW)Zsn=(=xxoiDP}#90*5dkj)0) z^a{DND-e_>5aEUUwPA%!b-t7;oDPkL`rc^4AbA#HX_*l@9+O@_xy2kg^)_vG=Vxv8 z&)TV;Nv61*IoMN7(w)bB-1T$Z{WuJc@C_G*z!d6Lh;%}JdV*GgNv^V2axyLE~PZeu%@tS6PIS4q>A zFgBIYHqyMo%~7x$a7RGJ+KxMw>L-KOUBVB9eS_Pb-y+M5o;?P+DhqDvjtZ zcpO?E@0dyG+s+pRe>k~XNV{7A)=nu7_Gw!5X~xTnR}t^H_ES!lqJML>P;s|N0S%h+ zZR%tN$~V$2akofZ-K^il5-xLbwOAd;k{zJCCaS|U+cYZ1s~hRpw76?;%02VyrU)#j;nPp;7>TDd_zgM@3By#xD(RgkYd6bBr z?GdOW@_eBwaC}dQ5`BV4 za2e1ib}R7wQ=d|kpT=WiB`>4r8{jEw0$KXNHMl_7J!D&bg^8Y7r!pr_35%Ho7bf(A zPUM1R+_fDx-ypz};TMX>Xgy<|tbW~JP%6q*R;glM z9g)z?E{e#a_JnQ#6e1B2ZjBx7iBbqq&kQUq<2_55AiE*D<0$@xOvrzRLp_ zKuD+aKOwmuf);8`{tlS|fk?z3(gQEulcg|LNC@I!PHBOPu||0xi6{`Rm_je4JB=~~ zYpn-CETnr)><_=vp5#a+1f**U5tQS8Dk{$bP+L}PeQE0Q6^uUzEp476xE5sJDhLY5 z{u}emW&0@ci>op79N)dfqfO`l1=YhV0K_RW= zLfcMbY*4FQq$y(&Au{JWtjb+q5amoR1O#TD%Nc2pLCwEu90EkpjKAL|2u8e#*b7An@>vi} zn<0H#(p)7P#>-ELiqUte5IGdOfj(YDD#xu=1FR21s6OEulRpHA5QLir_!2YUW3cR7 z{g?$3RO(Etr5P&5(=uBC6c2)Fceo@3=ZVAMUK=d7q zhUL=zsWDfI2<(%KiJ^aLh9jcQ(elw@UjK84$>0(_4&T__KimN3eN)z709gTtwu4LC z@gi=;txb_}>rw zV|aZ)hk?LUJU{z=`+c%|k?`NB;eQVg_9suTO=|W9-zKej)XUm)v2--BbhWT_c8HAy z2TDSf+-_g#_;TU@)JY}AMnz^&P8g0je~DP29BC#BoySg8qHRrXeIj@r);g>kjzH~| zTA|W75&Rlim^oT`IFPOVu;+LsK>((7f+xtg37D4<6)RoW7FG0R(B|33Y1x>P;f7gyo~e zLqUg^did4z&OQ6?{kUxC5PB+FQtBZ(mcj9wCj*wNW%ZW4iTTwtXNT9suaUQ zt9*uQh0Lg5@)wxutq$#gce}JFV3#7L$0sB+}W}cr;;s+*a-_o)rK<0RSE@ID@Iwuj)j1?$eh6Oy}_)20Gpvu(>sRgf!c)W!ulSC)YeQbBFAor`W$QTwY~M*86!7m$F%q5%WCyd> zU0&nRcJ2Xq182$E$dU9+v^30<^ejU&&0k~tJe{OmUjeSAq<5yKUp=q=dakT?v+8To z^OiRX?|h4!>on5l69(3CeO(CPiVB?6 z@c+cS_jqHZ(kCWg1xrSXN{9AFI72JIb( z*G3MNM5%`FSwJWhIsDSNpUZ4dZ)$vWvkWZe^tEr6dk%4O0x6jwZ4ngK5GxN;PB+1HNL6Pwx1t($ zmc|29i1`EKxwS8xu?G*eF3{ANUWzbHfTiBy=?tiVi*V-{*DS>NFhmk@@)Q_?32qja zfESOTOalfN2{rCYF?FVN0r2^V55Yp1 zrWd$eAQDmBHT*#O0y06E7P^a)hl%-@82kUH7*kc2-)4>Fl&PuO0t#fzzcnw-}aP0%tscO)IFUU|$5uBMS|+cAqI0t*D0s=q&kqYCj;}#b?)F^0-HeM*>2bci=>Gn;89C`9 z)c7R^B>R90+by}Oq9B#qo5=Qd_b#ZigiG1STjXSjR$;iV2PiAp75dKhKdRIFBNXU0mj;vA^qY?FK;(5 za?T2W>rl)&0_b>i_?M2i(e*keqW^`2Q=WQ;_u&1rT#|zJ_diyAPWiCnLE&Ez4x71=q#jn0u1Ajg4QgVht{vcj>`4fAIoxu8eu5NjINKn=t2;h-k2~ zY6WZWp4#|{qBF7j%DPo6!zOm99B0avg~ek7Y;G>2_v*HdSta3bDR0;_fM{Tab>gh> zj?FY}AsUIN@`~XQB)U2hb0+gM*i4&ie`MBs?W}2Eh(unD5vp+Ygi;y);Th#+QkM2SVRjBf`vG>{@WW^qbZXRRzwT2 z8|iQdT){f^@i+^T@gTJi)LIc5+G^B>x-E0VGOrlvRNigV_CBt(KU?eMi$4b>L#b|52V-fn;{N350NOz%s>)5!`Rh_ZCvVvogr`PPhi`*@WptHn-)ZjF zJ%?2i6C9z{^V@_X37^j6R$YZXUyOq)?egPz;eYL?!OnSS#9ORqHP5_(Qr7TSrR9jS ziK%}^X<+ccgr>#$NcI|(P&gTtn8*d;02x?}AgPDKT})3Nfj~kdR9H!O)@Lz&2tGp+ zdA%rKGA!}WCVK?%Pvj|ZLh^gWrHX^6VTNvHV)C)DN{k+u(zw;GI1!Te_*{$OIZEGP zQ5_T#yOdzZ63pdm$%Rp&XF-r1cl^7#T_EM+6^jhYG zeO$k&RF(xt6@|mxDRRPA$HhwYx2KNc<0d4n?};b`Q4=Rd<%CK7k(J~}vrv>tYAD1| zjcEO-PN$9F%2Ij}FqM^3406Im6b9Weg6cVcfz|s`0j>m2Wons`Uu01!>uUX}jOp_! zInX~cweE9edOrnlEu{(Z!~#V|3PnY+!GEF_K>rh!06vHmf1!pf1y1R23$$tg7Q}u+ z`>L+V~ac(CXn_QVzlP=5%T-sv-|iaHgLtK`vQ?) z*jEB~3)bW{`K{5cN#s>}QuD&~&}Oj2*4K3ku37@o5mDHOEUMmiDSe8+UrivqU)uw# z;!2J&ZKfDOg|%tHmm{+0i% z_9xs9#CB{o3a(Io9Q%Y-qV@SGp9IyWZM>b^Q&9HLa?tuf`SZwt{@XA(qaighju_jq z+Z1>a&}u_@JD3OoqQy%7Glf(u@E^(IhSW11TALbrpm}EIPq6%bCqgP3pGh-ZkptyN zHgsZa33jxCHf@J-kl|xMpo@QQ+w~E^K0f(?BS(F4>lG)(v1X#9-?_T|4q{dN^e1NQ z=tl0uK0GuevW(l@2wqVh}SzO*PY|geCu>GzbQultc-jR7Q>$G{%-ImUdGN z+5|;bVpBu^9-Rb7j3YUheVs8l0JH!=iPLqCCYq32sCOR}O^oAV;fx^Bwq>-XBcOl! z7j)N|g%^qk@s6#MnjHmo1%ID!fa2+%EJRnbIC!F_QU{0uVzRA}MslpJ(2wL8TcNb% zINJd@C<%@X2!b8Qys+?C6G8{0*>F*}!5PnI-P#c>$kAYgLg84gbGBbG!DL zV$}(vNb&0W1{lb0m?=O9r~e%nC}lEQ|A-VP3Wo!w)TStP{(^#SW1jQom~)bc%+s(D zUf`30dvFdM=A__Ez`6ppk&t8U0XxWRJ~eBLs*#r4pm;vGeE!A(d1|pVjag%O+Foqx zY-g3YJ35z&niG+lEo?pW5?E=a19KAMk(I1E7j;T)(1aSy?A#LN+JIvj5Z6whuHQ|e zht3J57`UOb)zxVTTlweQI3mmFC-0+CurEI3{&)Dr^;S9X2uj#d=AFi{#j8JzlfU}x z+(jM75YO0piQYZe5fQKWQ%tCSLcb-)L z;8p`%9KuKNrpqOQHS!Vk5px%THohEi8$=?^+wFy?OoF&C13=$lDU0(@Jhp9=4=<#K zDRvQZP<{~N4D>SK*aAHJ4=KdHkNr@8ImZ8zTYe2mo;LWD;Cd9u^{x!|mtzK=zQAH-IC6h9;};N}BlD;!t9Gr))qEuc4c5sC}| za^zrM5#bN(<78dctl4)FdRTW6j3?*;fGsOtPiBp4_5ScDtL^<}2ORybF`OGR8HBP) z`=+W0vO(5K-@byi?e$8RFyZj&X6K-KOZ5ZyJz)*d1liRjmjrhgHR_s-v;3 z*a*g*j{N@Mk!+iUxwm3wvU)FiosbCzc4N^iO zr2x-s=f!~IX_`Mb4E`*`oMFr{`F$ny`|veRv!Srh{5pNH+i7dp*|k5gjDt(&ApoZM z1E%;dm~S%0PYUC>AMex5I5a~9%cpeMY+c<606=5PIN&?$)87QcxA)bK{|Mb-aal3L z`>i;fdHX+ueUT~VJe%z^3!1kKoS#sXL;su3YUsuaZq&+8Pq&Ip3>k;u%tQHe>0xFs zh90xas`+&Yv~3m_GlCtKHRhNw83*y)TkPW0oDt3sDRAEN6Y}8j{|3tJHQkMtQ~~3d ze6>&8*cnKNc+mxj{8rowM*~2ck zEpDafzIHs1gfyZC$vE`loQyr2hCEk;_zY{C)_%s)>9C(H7g30o~QnytbWU%!rasD!9yb+(KZ3da(?}{-nOty63G? zrGq1*!<=HXb}#fIc6CL8s6y1eb1M(p*{`}7=JnkhJ92vre8G4b2 z8lOHC9=}3Qh&eIVJmtEB07EO+@%%w@b%Dk)D_A!6%(7@2NmokvNyC!L+YtFFzi3_++#XehVRx(0M?4Ql!1@c@n@BdUZ-s(*Jrn zu(!LRV|cIhw0coN5sp0_(-*c2sO!N{it7vfq9_h?-(_E^cuYccAxS|>G$}}ZlB$9{ zBr_pH4$&B3qasM_tD&E*u{+WEl#)4%?jC9ePqPKDjxpEA>&?5Kr#}aAn3FmpP?ae= zr2!OTy-1QWafCF@yqcdr0k}wutVe?#48R@$Dj;a3+JBWdf*%v#>C2)dC#oE$ApZzS z4hYG4l5CGGo5w&^ZsOVw{gu<#9^^m>*2b8Me6N<-W#uOvvjw35XKMzVGAAXhnO-L+ zzO_838K{Gt%s#>L*uxwIzausIEJX^~IhYVlkdePV@=*PC#H$;{S!_;5N^VBN0tStu z421;TS58VT(+qnB3g#GMIBjdUWO*5w#CQA3_P`~hgwL@Lq=3y~ZpNJyC+1*$2rlo) z@}RFhQALI=y~Kl@CI$I7c^Q#e*L}3D<|>L1@PmE(A4&%W3}g0n#&l86{yG6-s9jx*xjQ^Vx z8?$?Z4<`k=eT)TpzUU{Q*{s=qg#M6B=E%VsOF0?id|Q-SaJnU80Zv9iPD;uu4FIJD zwZOk92?^mKs>%pCVqzW$6?}&VY}_cwUln9_DISQ}R7bl*0Y`}%=Z<#5d2W-OOj}+C z*xLwx4fL0KWP*RPKue4VICCKMZ)fb0A#>4d9CGV0lHkU~aVAWdo9z4CNhrvzD9QOM zoquDs?%Rg83B^fgz=Q^<5c!UqiIrnwWqcxcyA<0bz_4vch&1? z%UA0SQb8{_BM^38lCm7bFA0qfjP}AnnG;d*ub*!s0#dAqAGa{$5@MSa<{3gnu4CR~ z(@2Y*8uRM*6Y}IxM$C4;#?14gT>^80|M^)oLfKaW<&4}7$g0x;*0rKwig1Fxh-H605BP_zCj-D6FKSl9*)NBXSe*ccl0eggU1W-jL zMiF;^Av(`?pfh)cUnXCj2X++%{`L<6x9$4<1R`jjzX^~XKyadBj@q$gdVmPaN|6)? znvBHGr_Tuz6cZFnhzQ6y1>Eo1D#VEgH|DAd$cXA`#R>U5iA~1Mw<)!&+e^fnpzk-> z5{{VR-)8w`gtcNCxG)$*k=%}({2^6#i{O*tmqCRI&bcTclc{97zbR))P`pDErl0(m zA*-+-d=dc&e+(%~0tN69UrrBTcIJspommmG*8ubrXQwzdygiJ4nIXU>(VJ0*8wrWb zS~e8y5wjby`8Yqv2~l&OjJNOY?iGZE!IBHDC7&VhB*Qdx~i7xD4JCY}6 zXMvcLa=Bmd>2U$qTFWr0kOdkAp49C7Z>Ab^+Lu{W5z6YanH1jqJ!r7wtQNMiCo*kZ zm<8_~CeXrO3L8T5YoMhwLQ@4YCxr>(nLXH_(EZpS0@)?VXKFGzA>yBS^i5_VTv%E@ zR~kisd{dZ*8SbSvv1@LU;Li+6J^gAAAuBI3aCpUdSAtP2%4%{C5dcH@Ay8Ptq^%}X zSR`K;IieLGhh{EDrXfjK=F76nYD9W!W%)EsT_ga9sNa<>tF{}@Xc84$tzbx$NH^BW zEUu0wjz}6=&2Z;y%}7^`*hvCPQ~k(H^t#WhKJ{5|FA>~{kcImGN;Vgrtd6g6)0}FX z`aTbAKjynut*4zVg(pnn>T!o>Odt8jsdlR)z@wRo zk!y?-i2|m<>lI-c;_Dw$g_~vpNQQ`z{c+PKY7T=CXr1RF zp-vF-|EjZu1*qeI>hyU%Mg2FJ;r_EjtYh(CK-OrOkhiN5(yjj@#YA&+;~k&*^8R1- zO!N6fbh<%-fQ|qa06)rg{wYf1VC3j%W^M9komHdChW!r?l&-B}-Ig6==q5X3V6!RE?t5wC@fCK;z(oTJ`6O?7uU3=GTCXTUk*)g@iFs>hf~=V193VyV&Dp)ulC01$IXyJ2>!cX;dkU52bAG z32lvm0rRsc<*a=yW&bR5=TJFRxF4pbAt!R7hYT*jbiO|FRI@~Mp%uYN+sI;Xl_^fO zY@zY>*BGIqe96;f*XY0tHps>LsINjkTA;2;(<|D~) zQV&QYrNJ!}n12g}txFtiOy%VSj?>N-G~_r4OWZZZ^qG%#Xp_DtIs4Kqt_&>o#o+Ro zugI_P&CM-gX^6rlZj`dcyk7Ie*ENZXZAL+Jp#>P!+LUz1p|*gSOHX%4=gK0lJ;)G* zDps0-%T|rHeqk7?8OreT$Clq%9#Xhlf$gC;ywV0C(Au9C3orKfgAF-LeaiM@MNeWZ zQ&F-g{V5a}|5V;fHoP28UB~oxB`k5K?7z*HHCcpPi}QoHmqn&;pCk@!)X@$Gn%-aC z(*q{7D(+hz zt3@qA$4mmOiZ!=PhDdIl1ZTdgmM4L4y}jR8&$#?*Q2 zom(=3*$KPmE#CLaM6&$vrACz+j@6;&Cwt0$9G5huH3$hFt)=1Xn$YXEqH?rl)7%?( zfK|V|jbh!#u=ryA8zSffj~169kOM2&f}@^~2$)-Z&W&<571-+H4m_waJ5>=X2w99_qVBq48FB zFRWGPCK-a>jyH{lQkS{U<-^{HPUGv+zoe}Sbw)QJ*e;AWk-^8Ew}|nLsE_f0m{$s~ z^lK+kdC5WZO$SFmX`3TXX57l8vwHlFtm@CGb3e-^N_u>~8fr-m^*-3$1k6)---6OV zA06b;hRgehOYKM+7Crz{OSB<1N4Mbo;9?QHK>=iN@kf|uflH3n9)($LJ1npbpXYAV z<*olJL3ONgpa=vgLDdBK{isa+=WKT|(pUVC6FzdL*Swzr7HGz!t8YI}anCS<@oO9t z25x(TKof#34k=?JU@_F>^Dky~HjMT=GQtzW(oJuyNxE(E+>iD4Ob{x&Ip+(8_&?M|%u;Bo89r zF??(@4Q1q=dh>>Fm~bb?5yXR6Z`Gh+*Fm#1a-4vv-YJ9DdCbaU7BI)AN8=@D8acjp z9cc69BMO_@((~EL4h{~okPyw{?P$&F2K=83Qh#&iI2Zs*8UKa>0z&?mW5$5W-Aa1; zmVfFQZzT0v|6srw`uRPKA~{3CGQJT7iE1dQVH_UY1L!kO4cc1l1%K<@?jVW4Gl3Fv%$v$~{R5-0WenX9b?k^+L?~BBM8LeSU zw%=!>;Ul{?B2bH9#hnQ`O$`TXsdK<~3kio3#EMZR62sWx>fA~sVT$rAXN+7NvvLnv zQyS5u5#~=|(lnMo9A-GMz&^gfV8jy36)LeXW_}7&pmyK}I|&hP8uU9%M?yzNAlh9U z8nM<u}rfLAV>Zlg zlK7gmx0Q5l_j{9Wd6N`}D{6Laz(MFIYkwYm51n#)N$w&$D|VNz5-IzB{a=-w69kA_ zh5$w6+o^znQ2%vEI+_|;8PWgQGXAM>rXg*!#)i@LOBJzgf8lw}DXdNSeC1-P2oAYf zFuFlV(~?4-;Dn?L?!vCeM{lF1ALhKNzowG^)A`(Mnl)|{{IL!O$np`BE>zC@M}Iiy}mmCpB~5&zDIjfGDB1c(US(ajX1% ze?OjXW>%KQ0)C}ky?miO*G|4O(^M!-{e*JwRX!&!9s@GS0v_i$9%;WJ7N1y@BwN3E z;)r!dmZlL@lqEY)#eRmZ{8{>o;5)>ZnW>iFYo{kN zYU2t2JOMI8-o7!Tq-0%#!fbW^f>?&L9Z^&XJ(^)2B)-B@@>#PMG`cX?=-=Fr@lBaviMd`J_JRdCX4Oip6 zYJqh_zuFW4bSt53JgW;88%_#pIdI3)4_BDWtylqSPQVaflYY4dXB#}Lt0jbVrI~U6gvRda zr!FgeD&4n+?UHMjiLWwEvCCV$uRUBFK@EC(b;ZBezVf$~J5f4Z1c;*Qi@Je)f*h^QY})TsIwf~)$FC?! zN$}{bcfUlr@KH1uLYEfD4g+)ZZoez;CM9&VQY|bjkr#?w+?bWhhhoTzMN90ZxbHt+ z=$s%$7W7GFKJTZ>CW%o>*JGKH*CQkEmoP|!Kk;Nt+efI{XW${V%?J#uC)aotIydE) zFq9_G{A$Rn?4bD3=Vw#05w^sR=D6$c-_*ES!bYRppJNrdk1OhR57LUST8R`_yVYdb zJ2z{74nF)V*7~=TLtZgxrKLua#Y0Bb=Q)UoaOsha5Du-xCc105qB6GAG1BrzWwS+% z1&zdC%HhYOh&!e%Uz-?2-1Mm$omdR0+8v1y*PJpz8Av`iffhQQ%5!n0jDxB>z4aLS zmQFJ%(_bBeBzgU`DRJ2ODh7f+1tUY(QHYGiy60QeOA%0`~`9ab3pR z<((CKIqrxkE4cxbrnU?QSQ$qH?O1@MQTrz?%U`J-^C?ORDnNB9l%POgU$6KCf0qt% zCX??@TT1RLOPy~s>Z-Bn?Jxy24Nh#nTQ5s2y5>NATCt3m3Y_@yRh@z%#U$hb3A03h zQ^~r{hucPGwXJ-|0fddUVtHw&<-NNTd1>pQR8BG1D=v83eO8&u4pEbj)=GAFB3rJ& zU8-3b8(jFZ8}AU5LMw-N-wlR2oq#&Oi>n&pIBJ3$QAgRQf(%`=ehv=-zA#cly>emG zJp9*BB6GQ+H4;o{Uns zfZ^~ZpxI}kWW;ul^m$?gL$e0_tyCm<5K5UBMWLeI)$Jop;LQfM1c-ey1qF!;^7J0& zOV1AskHqR$W*9B3IF~Skcla@xRg(>()E!d~N~w(Dw@B!9$stmSqYNoXVDU1A_349} zbXsMT8)iYWlT;7qNe!+7JgMN5uguN|uU@i8wF~!hb!)iacT#Df?V~wftG_)${xcWL z^5I%827KT_0J7K5fWHP#4vscfYF3u?W{yTye?ImqBWhv#7*K$Ic?plkjTUi*pv)^E zk|X89REab+H{jw32=U!Dr!;X%-fDu!Zrs5Rt+Eb$iHvix_wo zC;*vJg=ng1BC77x;tEbE3yMxPI*PKV#fY{5rV;>RVp|G#Tp0rWI%12_;P<&~&@bFl zHOYglkp)YX{?LrHd(~S77efx|nXU?gL+_%JHfw`4u(|~%-OxT@arM7+@s1rVb^`Q} z19aj2L)Tx`VgIe}Piff5=~_U3jtH^cDNER3T4rQIk*oHA46^#wmasf#x+$dabDN~t zW>=mfC??Y;?)xtXD{qAI76G#8*^;8NM4w~ZJ3F>hlNE34M1m%}25J$8Q{aN<%lt3B z=B1}UwPu+y=eQrR^$wugk9>|LoAl zb}8u{fM9)qaEyNl|Bx(aZ)5B5r&lv$YOVblP=sB&`fhed8FRo)Q9{IkC@mHxzTvw1 zkXjP22}PE@c}R1y8VtKsIbJSuSnF2IP?67)kw7VxbLR$Sbab<_5RY(Gaq*gg zbGG`E4ij-WI&awxSI$Gw!IRwJ9i&cPAFp?qOf(UTS+l!C9Q12rk7n{s_Bd{Zqfu?p zAtxBvVUSgP>yY#sfhPWm23S>U|Dw!pmu4jY^~_;zhH3TkSTaS0#cKDPdbX^5BW<@G z5p|>JA6mj8OfdQBhMzI2TNV?806z^64B#-jnZOfftK^y~}~oxmC;`E27mH8qWg8(vZim@-0$?xbYT<45Q{W zdxVi;{ZjJ6V3N8bldmLleN)4!3{=D?Aus*5SqxPFjdulx{8jj-g7WDn`P zOWIYtN~qqqnkb!ArN$xlm>!&S#@#kl4c%sxP#k0qw1iYF&&hvbVuRVcnRCjJ+b~eE z>!=PP4=LRa`vg8ZD&6k5iJJgY$GLK^mN$RQw`HmaSdZXKU&%)yIPs z2b!MJJJp|Jl)BmkYzjQeGz`X09NK1?hMM#HwGwnw57O_H~+LyM%PIedB@!A7J zN}54Q)HMO7ro40J6pf~+8QR##Pd^B6?8W3#^U=vD(x>K0q{T2Z-2YEoXC4mK{>SmL zG?vkzu_ThRT_UoCxn)a>Bzp_lX&6h^!k{tsWwP&ET-6Vm$u0b>4Vn_NloB#h6T{e* z(%j5FDOb+p{4wV_=Q;1!_nhzZe81=O`MjSwUsA3~m_~9+A>2VdBe7gY-X)i3N#T{g zq_y!Ovm`kw!B*HeGqQHX2zreO`~%lbdU=YP-@$FpP-pP9(9ncN7F=(XX5Iwv&<&67zPb~YUA=~?i-(LUN~!KfNx&VALD4Xy7=l3#v4KVpbMd6 zd&7{E6*sRjTVTc~c|=9W;T$Zcc9*{d*)9guERE|RZ53403)j3uK6us>@85DpIS@pI z21rL$X9&=hxu+}q6N99=?)!Q>6_neX_PinS_x@;} z@fy{<0|JSXfIx(S84FmrdwrS$GB03!dONy%9zy%LqGr!~_#mtVv>P!Ra$e8*{!kR) zXlqmZe0^e%l`YTw?svP4>NI5+$DlvmiufM{tK^y=ZD3WP#=S#SE4JRG(d+LToC1 z-k@l|6RzWV#$aVr&Jr?H$x2QA+(Ey*#MW8=;FP-k#pknKh$ipR@Xn4u1aUap^?Wxa zF{chXFQ?%Y<#AZzUx)ePi5k%Pfbxg-X$wZ$*j;Q3-euiC8tGE%yi|z#L3zO zew5c)|32yAGp{tMIKF#$GWAr*W%9#1)s)^yauST4Q*W>KC|^{U1FLKXZpUGs10hZC zVjhkn|+m=JhPqDMZ?!Lq`JC+qW2YQf`>+4tO!7^L(`Lf+nnL#X{l zCVm{cZScpLFVpE`gDYzt21(*C0-58V!n{laAFM5*zJ|AO6gU6#EDER7TKu?DI6=7% zn`S0S376)TlZ&M8X;{o^jqcSRh)xT*P(|BG=sg$YCL2|gnJr%uX5EI?Mz0OMb*6Yy z&})l%hj@pjy%BYh4D86W+4tHUh`N0Ggf?{rcze%FH&=?zCr4Z-4u}%7LZI{-2umbc zd04sC)N{8-j?4c}KUQ@S@!RPdBS#ZCwm?Z6G$N3ByB0*|r{8&$HvkJ?m0T*GKB@@_t^ML%?yFdR51YAGRA zo<=Vq%pe;sOwGuUWg~!fidBxeRh2BD`|an`jf1Z&ds^^^SFooaqZJ)~PUU7ln_#38 zkCTcs#-X5n^S43_>;vS-G-Q@_+hmm3a~QCqOB{&WkNns{Y3#jRE*p4JyrdmFE$`#a zIOA&7V#gLpO4DlaG%)~HWPG=@KQYK|N`v(>g%7_rDuTD8;1*3-XW#}5-P)S3%@COI z3yXc`Smhzo%b}oN=aak(yJR?ceL62;Yr-WCV_ZFF|9*2-a0q^c;7~++_rAcYtRLZU zn>c#^Go8tDA_KOOB3InSie*uvF7M{@#X?DtTSamO<-m>w?ezG z!gx@TgL^j{jl+o=i|#m_5it^5cI66QEc2NA zQbs}Jot`Gl>ls`d<{r5=?S%>^IM8_Zz4X_RQSnxr`DJ1T^|Xb5*YxXH@o;K?4P6`) z`r*#qqVS2K$)X!2{#~!L?ZRD0Dv8ajuSfo*1lM^?5|Xtk%g-ob44v;YUG4Ut#k4~1 zeF++yy4n-U82$1cbwl&U_HNL~2g z7ucR4G-X>EliX{Qp5{1oKN#~Rg=@9PUvm2K@$y^*YQ-37Vq_uTSkpGlv~XpMmYzn! zr^LK9B~ekUJ|EA(1Mc(Q!9n-9-HO=uhp8I3(xzi-#KJ1T_M<$`3Hg+(ak0w$c4{UN zp>_f_w;yT8#)bvXK_E8Afnu<$cYwWRu#c<1?T_dT3<#Dn()|itN&)J~unje^$Fe*D z5IbG8r2FpKKxhFdW!ndIX z_E?r1z?uK#jy^uy-L=GkxfBv`1y#?08_xkcV%<3a5P@F6vu`K&#)|Gz0UGZDniAX6 zI16wu>++vZ{ySvbUcgrh{h6o)f!JB?fbec1c>$gB)36K(_H(IRD;6=tpmxje`N;M0XRgC+2s+c4;q|1 { - protected final ScoringFunction scoringFunction; - private final ThriftSearchResultsRelevanceStats relevanceStats; - private final EarlybirdCluster cluster; - private final UserTable userTable; - - // Per-language result counts. - private final LanguageHistogram languageHistogram = new LanguageHistogram(); - - // Accumulated time spend on relevance scoring across all collected hits, including batch scoring. - private long scoringTimeNanos = 0; - - public AbstractRelevanceCollector( - ImmutableSchemaInterface schema, - RelevanceSearchRequestInfo searchRequestInfo, - ScoringFunction scoringFunction, - EarlybirdSearcherStats searcherStats, - EarlybirdCluster cluster, - UserTable userTable, - Clock clock, - int requestDebugMode) { - super(schema, searchRequestInfo, clock, searcherStats, requestDebugMode); - this.scoringFunction = scoringFunction; - this.relevanceStats = new ThriftSearchResultsRelevanceStats(); - this.cluster = cluster; - this.userTable = userTable; - } - - /** - * Subclasses must implement this method to actually collect a scored relevance hit. - */ - protected abstract void doCollectWithScore(long tweetID, float score) throws IOException; - - @Override - public final void startSegment() throws IOException { - scoringFunction.setNextReader(currTwitterReader); - - ThriftSearchResultMetadataOptions options = - searchRequestInfo.getSearchQuery().getResultMetadataOptions(); - featuresRequested = options != null && options.isReturnSearchResultFeatures(); - } - - @Override - protected final void doCollect(long tweetID) throws IOException { - final long scoringStartNanos = getClock().nowNanos(); - float luceneSore = scorer.score(); - final float score = scoringFunction.score(curDocId, luceneSore); - final long scoringEndNanos = getClock().nowNanos(); - addToOverallScoringTimeNanos(scoringStartNanos, scoringEndNanos); - - scoringFunction.updateRelevanceStats(relevanceStats); - - updateHitCounts(tweetID); - - doCollectWithScore(tweetID, score); - } - - protected final void addToOverallScoringTimeNanos(long scoringStartNanos, long scoringEndNanos) { - scoringTimeNanos += scoringEndNanos - scoringStartNanos; - } - - protected final ThriftSearchResultMetadata collectMetadata() throws IOException { - ThriftSearchResultMetadataOptions options = - searchRequestInfo.getSearchQuery().getResultMetadataOptions(); - Preconditions.checkNotNull(options); - ThriftSearchResultMetadata metadata = - Preconditions.checkNotNull(scoringFunction.getResultMetadata(options)); - if (metadata.isSetLanguage()) { - languageHistogram.increment(metadata.getLanguage().getValue()); - } - - // Some additional metadata which is not provided by the scoring function, but - // by accessing the reader directly. - if (currTwitterReader != null) { - fillResultGeoLocation(metadata); - if (searchRequestInfo.isCollectConversationId()) { - long conversationId = - documentFeatures.getFeatureValue(EarlybirdFieldConstant.CONVERSATION_ID_CSF); - if (conversationId != 0) { - ensureExtraMetadataIsSet(metadata); - metadata.getExtraMetadata().setConversationId(conversationId); - } - } - } - - // Check and collect hit attribution data, if it's available. - fillHitAttributionMetadata(metadata); - - long fromUserId = documentFeatures.getFeatureValue(EarlybirdFieldConstant.FROM_USER_ID_CSF); - if (searchRequestInfo.isGetFromUserId()) { - metadata.setFromUserId(fromUserId); - } - - collectExclusiveConversationAuthorId(metadata); - collectFacets(metadata); - collectFeatures(metadata); - collectIsProtected(metadata, cluster, userTable); - - return metadata; - } - - protected final ThriftSearchResultsRelevanceStats getRelevanceStats() { - return relevanceStats; - } - - public final LanguageHistogram getLanguageHistogram() { - return languageHistogram; - } - - @Override - protected final RelevanceSearchResults doGetResults() throws IOException { - final RelevanceSearchResults results = doGetRelevanceResults(); - results.setScoringTimeNanos(scoringTimeNanos); - return results; - } - - /** - * For subclasses to process and aggregate collected hits. - */ - protected abstract RelevanceSearchResults doGetRelevanceResults() throws IOException; -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.docx b/src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..78bb86aacc9d344a049f4434be8b21cc11eaf4fc GIT binary patch literal 38335 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 Y-8(cjVgoGbyHyE5>;dyQlkolSUzYT}m;e9( literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.java b/src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.java deleted file mode 100644 index 3e4f6a711..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/collectors/BatchRelevanceTopCollector.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.collectors; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import com.twitter.common.collections.Pair; -import com.twitter.common.util.Clock; -import com.twitter.search.common.features.thrift.ThriftSearchResultFeatures; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.search.EarlyTerminationState; -import com.twitter.search.earlybird.common.userupdates.UserTable; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchRequestInfo; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchResults; -import com.twitter.search.earlybird.search.relevance.scoring.BatchHit; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultExtraMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; - -/** - * BatchRelevanceTopCollector is similar to the `RelevanceTopCollector` in what it outputs: - * Collects the top numResults by score, filtering out duplicates - * and results with scores equal to Flat.MIN_VALUE. - * The way that it achieves that is different though: it will score documents through the batch score - * function instead of scoring documents one by one. - */ -public class BatchRelevanceTopCollector extends RelevanceTopCollector { - protected final List hits; - - public BatchRelevanceTopCollector( - ImmutableSchemaInterface schema, - RelevanceSearchRequestInfo searchRequestInfo, - ScoringFunction scoringFunction, - EarlybirdSearcherStats searcherStats, - EarlybirdCluster cluster, - UserTable userTable, - Clock clock, - int requestDebugMode) { - super(schema, searchRequestInfo, scoringFunction, searcherStats, cluster, userTable, clock, - requestDebugMode); - this.hits = new ArrayList<>((int) getMaxHitsToProcess()); - } - - @Override - protected void doCollectWithScore(long tweetID, float score) throws IOException { - Pair pair = - scoringFunction.collectFeatures(score); - ThriftSearchResultMetadata metadata = collectMetadata(); - hits.add(new BatchHit(pair.getFirst(), - pair.getSecond(), - metadata, - tweetID, - currTimeSliceID)); - } - - @Override - public EarlyTerminationState innerShouldCollectMore() { - if (hits.size() >= getMaxHitsToProcess()) { - return setEarlyTerminationState(EarlyTerminationState.TERMINATED_MAX_HITS_EXCEEDED); - } - return EarlyTerminationState.COLLECTING; - } - - @Override - protected RelevanceSearchResults doGetRelevanceResults() throws IOException { - final long scoringStartNanos = getClock().nowNanos(); - float[] scores = scoringFunction.batchScore(hits); - final long scoringEndNanos = getClock().nowNanos(); - addToOverallScoringTimeNanos(scoringStartNanos, scoringEndNanos); - exportBatchScoringTime(scoringEndNanos - scoringStartNanos); - - for (int i = 0; i < hits.size(); i++) { - BatchHit hit = hits.get(i); - ThriftSearchResultMetadata metadata = hit.getMetadata(); - - if (!metadata.isSetExtraMetadata()) { - metadata.setExtraMetadata(new ThriftSearchResultExtraMetadata()); - } - metadata.getExtraMetadata().setFeatures(hit.getFeatures()); - - - // Populate the ThriftSearchResultMetadata post batch scoring with information from the - // LinearScoringData, which now includes a score. - scoringFunction.populateResultMetadataBasedOnScoringData( - searchRequestInfo.getSearchQuery().getResultMetadataOptions(), - metadata, - hit.getScoringData()); - - collectWithScoreInternal( - hit.getTweetID(), - hit.getTimeSliceID(), - scores[i], - metadata - ); - } - return getRelevanceResultsInternal(); - } - - private void exportBatchScoringTime(long scoringTimeNanos) { - ThriftSearchRelevanceOptions relevanceOptions = searchRequestInfo.getRelevanceOptions(); - if (relevanceOptions.isSetRankingParams() - && relevanceOptions.getRankingParams().isSetSelectedTensorflowModel()) { - String model = relevanceOptions.getRankingParams().getSelectedTensorflowModel(); - SearchTimerStats batchScoringPerModelTimer = SearchTimerStats.export( - String.format("batch_scoring_time_for_model_%s", model), - TimeUnit.NANOSECONDS, - false, - true); - batchScoringPerModelTimer.timerIncrement(scoringTimeNanos); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.docx b/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..52ea267084655c79ef1a6b9253402489f1558ec9 GIT binary patch literal 37658 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𝔇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%0D3~fg!oiQk_uc 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 JV{spd2LM?PdJF&n literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.java b/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.java deleted file mode 100644 index c7cd8d50f..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceAllCollector.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.collectors; - -import java.io.IOException; -import java.util.List; - -import com.google.common.collect.Lists; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.relevance.features.TweetIntegerShingleSignature; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.common.userupdates.UserTable; -import com.twitter.search.earlybird.search.relevance.RelevanceHit; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchRequestInfo; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchResults; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; - -/** - * RelevanceAllCollector is a results collector that collects all results sorted by score, - * including signature-duplicates and results skipped by the scoring function. - */ -public class RelevanceAllCollector extends AbstractRelevanceCollector { - // All results. - protected final List results; - - public RelevanceAllCollector( - ImmutableSchemaInterface schema, - RelevanceSearchRequestInfo searchRequestInfo, - ScoringFunction scoringFunction, - EarlybirdSearcherStats searcherStats, - EarlybirdCluster cluster, - UserTable userTable, - Clock clock, - int requestDebugMode) { - super(schema, searchRequestInfo, scoringFunction, searcherStats, cluster, userTable, clock, - requestDebugMode); - this.results = Lists.newArrayList(); - } - - @Override - protected void doCollectWithScore(long tweetID, float score) throws IOException { - ThriftSearchResultMetadata metadata = collectMetadata(); - scoringFunction.populateResultMetadataBasedOnScoringData( - searchRequestInfo.getSearchQuery().getResultMetadataOptions(), - metadata, - scoringFunction.getScoringDataForCurrentDocument()); - results.add(new RelevanceHit( - currTimeSliceID, - tweetID, - TweetIntegerShingleSignature.deserialize(metadata.getSignature()), - metadata)); - } - - @Override - protected RelevanceSearchResults doGetRelevanceResults() { - final int numResults = results.size(); - RelevanceSearchResults searchResults = new RelevanceSearchResults(numResults); - - // Insert hits in decreasing order by score. - results.sort(RelevanceHit.COMPARATOR_BY_SCORE); - for (int i = 0; i < numResults; i++) { - searchResults.setHit(results.get(i), i); - } - searchResults.setRelevanceStats(getRelevanceStats()); - searchResults.setNumHits(numResults); - return searchResults; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.docx b/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..cefc35d3860afa0e3e84850e5bfd50eaf03de84d GIT binary patch literal 39054 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 IXMErKA3OXQwg3PC literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.java b/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.java deleted file mode 100644 index ef921070c..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/collectors/RelevanceTopCollector.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.collectors; - -import java.io.IOException; - -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.common_internal.collections.RandomAccessPriorityQueue; -import com.twitter.search.common.relevance.features.TweetIntegerShingleSignature; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.search.EarlyTerminationState; -import com.twitter.search.earlybird.common.userupdates.UserTable; -import com.twitter.search.earlybird.search.relevance.RelevanceHit; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchRequestInfo; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchResults; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -/** - * RelevanceTopCollector is a results collector that collects the top numResults by - * score, filtering out duplicates. - */ -public class RelevanceTopCollector extends AbstractRelevanceCollector { - // Search results are collected in a min-heap. - protected final RandomAccessPriorityQueue minQueue; - - // Number of hits actually added to the min queue after dupe filtering and skipping. - // Less than or equal to numHitsProcessed. - protected int numHitsCollected; - - // The 'top' of the min heap, or, the lowest scored document in the heap. - private RelevanceHit pqTop; - private float lowestScore = ScoringFunction.SKIP_HIT; - - private final boolean isFilterDupes; - - public RelevanceTopCollector( - ImmutableSchemaInterface schema, - RelevanceSearchRequestInfo searchRequestInfo, - ScoringFunction scoringFunction, - EarlybirdSearcherStats searcherStats, - EarlybirdCluster cluster, - UserTable userTable, - Clock clock, - int requestDebugMode) { - super(schema, searchRequestInfo, scoringFunction, searcherStats, cluster, userTable, clock, - requestDebugMode); - this.minQueue = new RandomAccessPriorityQueue( - searchRequestInfo.getNumResultsRequested(), RelevanceHit.PQ_COMPARATOR_BY_SCORE) { - @Override - protected RelevanceHit getSentinelObject() { - return new RelevanceHit(); // default relevance constructor would create a hit with the - // lowest score possible. - } - }; - this.pqTop = minQueue.top(); - this.isFilterDupes = getSearchRequestInfo().getRelevanceOptions().isFilterDups(); - } - - protected void collectWithScoreInternal( - long tweetID, - long timeSliceID, - float score, - ThriftSearchResultMetadata metadata) { - // This collector cannot handle these scores: - assert !Float.isNaN(score); - - if (score <= lowestScore) { - // Since docs are returned in-order (i.e., increasing doc Id), a document - // with equal score to pqTop.score cannot compete since HitQueue favors - // documents with lower doc Ids. Therefore reject those docs too. - // IMPORTANT: docs skipped by the scoring function will have scores set - // to ScoringFunction.SKIP_HIT, meaning they will not be collected. - return; - } - - boolean dupFound = false; - Preconditions.checkState(metadata.isSetSignature(), - "The signature should be set at metadata collection time, but it is null. " - + "Tweet id = %s, metadata = %s", - tweetID, - metadata); - int signatureInt = metadata.getSignature(); - final TweetIntegerShingleSignature signature = - TweetIntegerShingleSignature.deserialize(signatureInt); - - if (isFilterDupes) { - // update duplicate if any - if (signatureInt != TweetIntegerShingleSignature.DEFAULT_NO_SIGNATURE) { - dupFound = minQueue.incrementElement( - signature, - element -> { - if (score > element.getScore()) { - element.update(timeSliceID, tweetID, signature, metadata); - } - } - ); - } - } - - if (!dupFound) { - numHitsCollected++; - - // if we didn't find a duplicate element to update then we add it now as a new element to the - // pq - pqTop = minQueue.updateTop(top -> top.update(timeSliceID, tweetID, signature, metadata)); - - lowestScore = pqTop.getScore(); - } - } - - @Override - protected void doCollectWithScore(final long tweetID, final float score) throws IOException { - ThriftSearchResultMetadata metadata = collectMetadata(); - scoringFunction.populateResultMetadataBasedOnScoringData( - searchRequestInfo.getSearchQuery().getResultMetadataOptions(), - metadata, - scoringFunction.getScoringDataForCurrentDocument()); - collectWithScoreInternal(tweetID, currTimeSliceID, score, metadata); - } - - @Override - public EarlyTerminationState innerShouldCollectMore() { - // Note that numHitsCollected here might be less than num results collected in the - // TwitterEarlyTerminationCollector, if we hit dups or there are very low scores. - if (numHitsCollected >= getMaxHitsToProcess()) { - return setEarlyTerminationState(EarlyTerminationState.TERMINATED_MAX_HITS_EXCEEDED); - } - return EarlyTerminationState.COLLECTING; - } - - @Override - protected RelevanceSearchResults doGetRelevanceResults() throws IOException { - return getRelevanceResultsInternal(); - } - - protected RelevanceSearchResults getRelevanceResultsInternal() { - return resultsFromQueue(minQueue, getSearchRequestInfo().getNumResultsRequested(), - getRelevanceStats()); - } - - private static RelevanceSearchResults resultsFromQueue( - RandomAccessPriorityQueue pq, - int desiredNumResults, - ThriftSearchResultsRelevanceStats relevanceStats) { - // trim first in case we didn't fill up the queue to not get any sentinel values here - int numResults = pq.trim(); - if (numResults > desiredNumResults) { - for (int i = 0; i < numResults - desiredNumResults; i++) { - pq.pop(); - } - numResults = desiredNumResults; - } - RelevanceSearchResults results = new RelevanceSearchResults(numResults); - // insert hits in decreasing order by score - for (int i = numResults - 1; i >= 0; i--) { - RelevanceHit hit = pq.pop(); - results.setHit(hit, i); - } - results.setRelevanceStats(relevanceStats); - results.setNumHits(numResults); - return results; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.docx new file mode 100644 index 0000000000000000000000000000000000000000..15714b70e811fe856e102aa8018aeb283d0a7a79 GIT binary patch literal 37016 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%0Dlpt`k`Qr8vl@RbDrNeipc~s4JXP^%c z!Jg0y4YKD#xW{2@z5Fi)x&hPuL{1RCn{J5KL&2C9{J1=DJq|l3(3GANWLk@{0 zU_;>*aftSWtJEof(jRdCMPFoMA-D+*GQYpo3}_1nZ`&W>{O@!+$f2G4munnULTX!m(L;_Q=$h=Qho1J;NB0Ed^ZQ9m`>V!QS5z7o&0=wB( zCKzz#!6K9%&U0WqisXxaw3=s}e~<7uhSWQX@7Xh!u43XDgv3jBunYLvXq)p&iCiE? zsn~9e`39#Dz%gYYoTO@J z_n}#@GC7jV$Y|SyUmG$qc7i56h{dt$#Hn`4jo7X8yaIzE-ok8PuuxC~<_z$md>l%H z8g#!*9LZIxR}M|I93S-$J$qA^MIQl&8#cl!MG?fprtz~EV7HRQIYO!3GN`rc8H0;IJy&P$MKS}Ey zJHyyb<*1w}NgLVn7tri#qCSIae%4E3>)+M`32h)mDwNtqqsY__0b3$U| z^Tn`v7V5A~o@}`sdB=W2S{ep(^0Ap2GTt|>6oq+F6SK_Y6{lE~wv)QrpaXY~3tc7) zvm>O!MT~DlMw=Oap*^G=c;L^>Q$|qP*nvI6aJ%{5)zjpx*CBNc=C)x0{r4^A1 z1&{`{7oCz9xQJj?ZjyU;|3$?LqQZ;#O~o2MV7yr~#bW}p$^OlqmBhowc(_&l(Lgpc z5nDjwO6y&_7-tQ;sYcTAV^WH*9xcO|v&$qBzj1*<{UeBaA8ii~OR~_BRi}6a0 z*cJy`DWbnH7>;Qf>IP43#w&-}3BH5cBU8ndRKq6 zY0X9?I`Jfk2?psOEVL<0PU`Jx4z*GT213VbOQMGiW=q^0*rW}RK4OonaliI(vm<`% zC7C8@7_-9)gD)k(E1Gf)bY-EA`HmX%-Rr%MKRgsB95tF;Ok=TyCwLKsubpU5+Ebnp zEwId4JSeU*)v_22P$H|8gR7Ji#2pHS4M&frMp{hj(`}9B4}GhNQLZ;ftp>*kIGq>( zG$<4+{WxMm#@_T^hoirSr03jdD+4HzMd106*PPY46vwpXAgR&X$Ws@KDv9A1Z$5VN zU`(ppibMP0API3pnyg!8DCOiAso>Lh6VRip9m1-8?vz#7$nIUtVkQiwc5RRdT17U? z7SBPY5QFwdNEL-%IJsyV!Xg6+to))^X*4Iu`tpY4ww>%65mccc@Pat7OYUoj7l{lO)xC(CJ9EaxLDiBfsR1wsDMWj%stWjy@T;YG9$cL<#(iDb* z{p!3ZctIxqOpo<$F%W4q^~daj&>k5}XVQMd?{8ooSl_$Bwj;%JL~qQ85A~1I z$lwXkxQj6fifwVNP>IGt%hQyd%8a&`(i?|$AexOUmYft}9U@+iU$B$}eBFg0=rK#1BA*rX+qiij z`To3mUaUAIYPhS-7gmC)MZ|J#5Rl4WK-j;5bpH)x`x|K1XS@R_lk;jZ4@VcVR$>+| zXoDN`2ZCT3Xl-#|vB9JRz4s$mpyjioogPerygD;7QUNSI|Zb*2$B9&z$$jE_=xl{r;0BikTPFXCPyJZyHUMZ2$Y9j z^hoxn10z(L$%K~%JSUE@X&F!@26T&*o7Vq!Ew>8MpnCowLYG4*ZgN^6eiME=b-`|M}g%k-Ps4 z9~T&yQxyyt{y)Fl*R=fdS<2kp%;d|TpYVI@C+A7mo;*EZHyjNpW+s7=jf{CuVn7TU zjO|>c+};b9mCfp>R>mEDpl5cn-->wC?C|Eh4wc&GhX1D{O*;qZf4ZqphcCRz&eA}PeJ576gID311 zJ$7w-$(kBl)4zPWIc=+|LOnanx&?jOzuvJTB*if7_?W~M> z=XX6YxA>g_ecXi&+e=z+-SUdw_}+}ioZ^SF0@H$W&Uw1CvvrG*MRM|Q3ZsNt(hmNth*^vRR zylAw~y%Ud9Z4Q7M$17a`9zfN?yoOc9OY^IvC4)AM5Yk8tI+R)|P|n4d)O&G}hi zz5K4Nt!jhG1+{FhYUG8gqN^N3LS%ftZO+@#yk+skqHT`clbxUF+J?f?Oh7rH5=Q*E3oF}w(r++ z@7)>un*Afif^w*zrp87G&ZFI3tD6>)o#};Tm)v}#>Ah;%R2dfMI<+GcFY_qsU9W`+cp~bG4#EdzXloBFgL2kYQul1h@9; z#)e{1Q2>N@6F7S!^2x<(y`B3QuM;k8v)7wTggE1#EOTHSN2C( zp)=w<5#pq(pSkIJwFdcp&rXkJ2iG)h5j7G7fU;vIB2+9n5|r1sy0xvAyiqwJCfuKu z-aO?E+*I}ZtOU4#Au6jO3M&iA*(k-?$#2CO@X7+J11`5|!4xWWw#}-US!<$EXBIqg zJ5Ni<+4n$~0FutEweBF$(BUR%2oE&GaeE`;sYUqO`LHE}#MM=KJ2kd^V=GgWo_U+n zW{9&gaB#AH^OJcGny2t6_2K;1Vajzz!awb`dc#iTR@Y?A0nSE>rAje;%}NsxY0L|h z*Ir-SXet}h@yv^RsTk~KnF34z-tTW~*)>k_Or@O^HCddhn=$en zu(;e4OWQ3QM%Y&{nY8d_=?0#eqoRgNj6#~t&1rQf9Mv)!g_(Qfu*%daA>vVL)j*ez zFs;4myml^Uz&G7DpRu<$-Qujpp`aVHzdbcBEySA!i?`l8bQo5;jtL0IGedh$oa93U zC{`CBXi+TcLYJf4)I!W-x#|KxO0HD;iuu22cH{R*Ga5zOzu({VRufBBmS z8vhjI^4@MR7^7NxQx0B>Vikh79Ni9l;$9nKKBUpt<72-rSg=?xlW!mX7Ebr4NPEQ1 z^U;z&L8`V8H4&BN6>iQG1 zd6q>_l}&6F6pH|mBCI!z-VUBmgZK6_MtkotBM4+g+{S?GF1#*}r~EBmZwJ;tj;wFF zDu#A=5Q|*LP;p=H-5%gh96f)&tY&m#3ud&fKmBB`gl%jy4a=+~M%r!>ao#ybCXSfh zSlTmC5Mnjmn7AQmEPII#H!Xi{VeZ(vxs3MyIdU-fIQFo+bp32uGoj~56mk`$+H%U9 zKIw&?@_b{~;`PGU(&ZXtB2qCwrhmJ6(>D@5rkG~?!+U+#cXGxxA(`vc{$}4c3n=+8 zb2gPM(6TCiN-?^+P_dEhz0!KGIM7t_bL0m=*9r9ex{^vf>9dj=WpWzretJRj<7M-i zu~HPA;*%@xI{I&=08r}@wyMqW*;j9cS1ykY73{%hJSqTIqm(reJpP}j~ zp!T01Ex?8qvtXV4y%x!0JTFY~0?kNS{OS!+EVFQa*m33SN5;53L0J|7Vha6=G?5h* zDFlVc+zezbEl7`-k(bm@Q8_jROTS*pP^7>24z9BhPIs#QBFG~gHbeN!jc^8Ht_r5K z3cVP(;m6NTQoL$yT}Dc*8Q@lq-oMisuy}?R(joR(1-I?}BT^IYt@Xo|By>MqrW%D? zE_zRVCxx4hu>V}pSFtTg>CbrI#ocv~_e!K`6`xS{LLZdoTk))=UL+tY2PD{0u>De0 zqe{k#ZiA6j#~+m9B1;k4B^=H*M5cx1d(oae3-T((a{gb%XQo?mwO zGu#aodpdXG1z&51k)0ivydIvPqost?_JCJ9FEcx%wa@h;2Hb>lrOeOGOJ_VRgiLm* zfZJKllqmI!PQ@X&%@&~NL-T5;acqG@pM+gfT#X>LT@JByO2zKM1mA(iQbp#})g*2M z^fNW$(WiPvKBbN^k|sVSj^pa??aTAVkM_CQ%PUj`ctBF#c*BFDP~N zByt2)aAjCe+L=1TsiJWx2$>T)j`Io)$~~cri3K*_z&VVdZ$psH!6|gv(gS~P4 z5Fq06{|I{vpt!cJTNrnDcX#*TE{(gpJ0w_ecXxMpcXxtYaCd?y5ae~vx%a+%zW=@V zR~MV2su^>PvG!g)*WA7Kv}#|$#kbhGSKY`r3>p(y>{4nP`msoGU-o74UACvV>mW6^ zH`x{En`z(ux79D6-VDCGNFKO@uoxFh4W7CJc^)yh4thwVL(Yw#w%znz!~t6?9%t>{ zWWFv5ZP*Okm)U7~JSFhQob#v$u#2LK*Zr;mm*<{QE`|RFWFys}NWASzJlcl@j0;5t| z!NK*~9g0OToH^+lVb;8-Nn>C}p)TU$?mqKxw(}7HL zs_WaM&a#mgSDo?4n=jz(+^j z)xDVaTzIf~(?EmdbvrvkYwB#CbT?ag4E0#-=&C$^d&WDk=v6A?D*k4{-(qua$hX`) z!Ms!fJ-H)X_ilPyzm*)d&3tx-2D^W!N*JiDV0ev9{H4R4gV*WZ`Fp?_d#}UiiB_R+ zcB(0wNMY+vu8$=LcH^CQDr1Bm-D!YEF$2$vix>~$DLD^SU)_$U9BDP~8Oo@Qy*U4z7~A?W){dX_QxpaL zz)L=Qf|V7DDpQV}6ee8e6A9I!fBFMBN~pOxiuhnf&hn1n(q*dcy1H{rKn1 znAEUE8M3mh+r}T|P}p9LpY_bu8jyQ%wW?j%k~I^IpQT2`M&cstcEB#%vKs4d6;I4G zVME#TVpPf_XebHm*6`EdK&Ic@vnel8QbR;dd3T9c(3a(SWd_Vs$< z@tJAeE)V_OaJ%4sz-l+e&FVerylv1|8tx`@yO+^Id~NG{2i>!hnlDqGW%fcR0Mk>N z%{&iAYSiA*Y_d~}Gi6HXDB$$ZJ%d2Zx=;0zQRMypji>?Ruc|4$DbOzUKGuvlB zi(EvIN>|M`c=f2#`Z&8(xh7?q5BK{KviQ|&>B2YKuV%)Vy+6!-r#CA6%G%@egR#iY~+yRCuDA;Ww_O>nlC+Gy}WgZbCBK1+rq}wjD3e~iE>E& zbf2$ocbPpebLKQ4`%fTmpkG_U`i8*L1?E11G7Ky2w9m)Eg5$imZeIV8QPP8MPW5-v zW6Nb?xY_gUSi|b@xjQLaz8Be*`OuFiBt|-3*Y>)kA?%2X?z`SjbNFt?e&2PV>VP0ASVW=ZC|W%iNsKp;$-VT z(8>z4TDn@z=QhL>30K`YzP!7sC4c~Ntzhko9_p={a9oUkJ+tKcb(P+Gqp0s1@kEzp zp^N2*E|-(z?zWPc27U`h7x+{;O+Fq>Hm z@<9kcOUd?(xHq#JgxoiIy}6ydFSq4`NN^OUUL>}9_UwqS5jXK&#%+pHO}-f6wgh{F zBecedv~#~5FZ*JIkW4LHPjQ}Erz6Rzx0>XR42#3r2Z^j?dFRflHoAEvtj;%aUD}KB)q#F4Y8SJ z$F&IPcO9#E)_QIgFp zgZp!y=)`hqknVytod5rtX1`T*opF zG?|~voSi8|`$K*s%J1zSzwSJ{Jmp$*yt%@5Hv`+#?!mq{TC=3I&F1nW#$~m|t)5+1 z)lhn^ifqvrthAswgpxW)n$nI2d{tPZ{_Ft)qYFZM<#lUT4X7)U*F-dA@YX(_I&z&}L5;)c|GRRW5` z2rjm)TP5G0^SDCO=$Phhdv63>?_!|dtem=bpv{{t2h4LDm5?F2Mg0tvAg;us{WGD(;)F@M+hqa~lRNt!Y z>@Uv7i|;q8B708m)o`BGVBVz8*1$Q|z&a`jhPA~aY$2Y2lo`0~)o7p97$f2EL4SW* z0f|lxC^)ZCFO{10vc>3_->WfawiR&g`1Qa}!Q6SdB=+6i!&bq|7Pxmxb!1T2c2GA- zQKpuB&tr&orUF~v!&bw~HXS_lTR>|MCrFXGQMs3G%KCQGHl9S~7Z2O@DLlntrdzT` zTpqy9`Gl#l4ydORd!ep`Ja2tEDKWZch3h&S_Aw6XA_*JpXw% z7PX$1$-_r&#~3o#Pu(q-<}oKJ*m=I8W;JO!Ueb}sjx{olHU4crWQIVB9=3O|2kyl| zjy!t;kA?7#GqR3|uKjbobFFPqM$HHaw2oIlHkM6O(mwOlU1yu4C-w7+@x7-m-V)<6 ztDVd(zB=M%hRIpy%5}tWU%WBdd;hH0dCNrF{{1^`#E)x(*a8-1VKfa^Kl@4}>T=@L zjp5TrvcdT4(U3zPFF`et<_M|vrt!Io?`gq0Y@v1(rW9?#Q<9o)0q2ALe&HnKagAik zNbH$-9xY_e*G@BQjuH}(0W1; z{C=vP!IBi8+;hO0d-8G)$(1Fum^-ytC4WP=qdpWw8q!kPB%@FKv;EJ;6a++!on;tfaSri-rgLp_wPuFs3cvya zvn1+@cf_LM-#yb0BJ3bE?j8n1Cl_fU27y5-fl4-R5SmyRnv7xoeAbBo!$d?AnW_5= zg{)p5y}qnc-#WZMyYaIQW(#w+Z4aK=^-$L;?MG$cr^gU`Y4Nze4gog)TK%{wriQ6bhMect4Utf3C`82`QMX z4XrIE&Iavc42npUYC5yH(JaO&f`c&>xwz3Sc@WZCSE?JGIEaxIRA|1}xs);wP;F(I z!?o2HQ3&CDtjtB4um-S0`%oAVm)|0_{NlT}p)idvpF|->gJFI}^-N7WC9Ieqw@Lp- zYtk+DtUw892OSs*S_Bb=fI(d=fOVS1*`n9D%2dZALt!s)U0L3J~OyAOf6 z%ot1`VEp3&gRj{fsP}3jAOr>kVWuBNRdI+XTRbVMrrPWLDE2e8I0%GI0dI^84!!WU zMK}ma8}VVM7zFt?$^Z;07`hmQ0ZZ1boQ*~toNu5w9c#c!30eefGjo!pe7TV{7ME$EbNUs_+R)^46bCaV845Q^yN46r|KuYp24O$7=V!M z*Vvu&r`MW9dWCjEXAo+KIsISv7(6ZkO{Fyx;%fJ*#MkMw(NWGHQRV@7u{ z>^^nFyGhZ7kE6Spqqm)-r(1e5EJO~b{C@YwFo2KvhhYXeJ|-HAdh%HGOV$1};>nBH;YSTyE<{2HCknV4uyNzO#g@o=8O(}COZY~AZX7573FF?7>F zcd<(eRG+~__OwQwnUYDBW+U~{)|5`LAM!^p>W6`^EJyEnbNw_&-yDwEcDDx`LTy|; zV#2_pkGC4{H|1=PYQRKb+9$ZWoo<8R)x4*A`r}8-PoF*BMm^pF z`12HH&*j=v@ROHH>&yTaQ<`iv4SV$KNp~;ijDr_pt2^PV%tDlShGsfi7MX@t(FKl+ zBruYiCp2<9dhVrAb$LS0SK+yn^YpZyKfc9vym)=UuQ(-RbD zxhdyhc8;fu69v>0YKMh5m7W{%OhHqnGZA9s0= zH=t|jSv?t9H!mAMUux<+?FURBOUKs1cfY34Kf4_AC3%pI!Vxw{mfru>`MI z+GnlM%JSZ^GPN|24~k>eY_RA0*21HaBH#Qq7X*VQUs!<%Zv@9EP8L>_r3t$fWtt>?z2ns#L?tKQ=^>UwoZWSpGTh=31Uw_u3JL>3DyX!(=-@p60?N!ZY8pxA zGB|=6ULmfMQL@#jrr~-)bsfSygEy`?`yY&#j=?C_ej?1q5GxC2dD2V~jwaXV3y@+y z(!Enc>u`(Xa5E|F?*k zVeuxp9)rIHu;#SaekV>8JJ^y>K860 z%>;#%jIiiUxB5)`1<2=5d?*gmOyiK%V#(;T-mxdjSFmZ)%!qxALR{Rx#kl-m#aL-_ z{I+hXqRq%K5K*CG|E;6Lf38K;$a{lbsgu{AM{k=0-ZP`4i~F7T#ov^TwgpMQRz8iM zX=}ryY5T_lZ-cj1jjux2!`s``zEIW`a+8^}jH7i1%g4Gy%Xn@yU~J)D@hoK8Q1J38 zV`$*qc{wt#9MNJJpHa+M#ib#%ftxU_+R_PcI|$Qzy;4~X!|-lHOzfIhSQr6JhFFKB z%JZdew~dgP*86gG+3VwdJ7(sKc+01Fu)HHWNWa6DWcOVWCwS~kNhf%B9>uRts^O|$ z1N(Nw6xbAPsQCfMbZi9IzO8l?BJQBUlBW)*q0Shr;0CQ|1~GBP0M9D;j$>M82~16; z?ZJ>zSn$5<26eWXiPa>Wop7@}6G<9T)d)Jmzl4!};!dAg|lFoxD>+8dJQdb4t zc*HU}cN%HNQ>q4$cy{^SA@B-C-64259p)pH`Q6!9L3e?7TwokZ1`?%1TeGP#6g15K za|lO|MKlDg&jq&hN6SB@&y(9a!)0^tRMeC}j~Ml=@QxVG>c2746M-Hb*%2pWC;w4# zN5@9^w+c_tU<(7g@F5ws*Y~?urOzt=(xIAv0@U&D`fnZY6Pt}}Wd9Em?uFXfej|@B zN~tOaU;nZKJ^harPb&Y0cq#{4f&TxnV$}FBWaJR)B&;#%&c=trb8_l-9dBgSrq>vu z?UOIa=bHF8hAf-8%xN25+303_`wob%zHeJUFbt>H-#B*~09?|?>WNl-xp)GOpf)xD z<2TP;+*;WnJ7u%}VH8t)ytB_LANXvuwo)-f8gDqRp;GJP@fUy}Vb%tGhvV~p8yBsI z;uOl#tS}|(XSC`_SLmM9&cF9T5>=)!+;HBfGmy-WY|Nxdcuo+7uIn z2oFWfsRT$ebQEAFH(sE{ti_8I2S^t|YQ5pOH<{z5EH$T}mjoddgx+>mbFTaFGcGr? zAfVXtkSrx?4c*@%n18bj=R~oUzEg;DB@}Dao=UW(mtCoNcqzr_f1x&nCJZcO3OwXs+3Mgxg>w?1*vM4xm22!OY0&#?fj5K}s|50_vKAu+ zF?2{~K!%#iqLm4t%M`u4&#M$>i93mDRb*qE7L*;Rv7S|qS)fl1#n`j zbuzAS2>pkvvgKGobrX04lnJ6t46$>qsWc?1wo43{1W*jB4&6$4ifBWi#%KL%RD8BS zikd;Hh>ILrwTe{6;Z%Fv=15mqdixqmpES!xGOXv|I4Msb>mK>>ruU>QA{F3n)ss>!mLRHh;E z4daE%8YwJKIz(~KAcGI%A;GjztT-)kxzpHYi2_X%Q_)nfyZmpmco??tz51Ut zGy`PoNNC?V9Q3o!vJ3YR7yRthPke58z69|=vs4(xcC%KbsUFTu3}YSDU~1fjUcRja z_Xt*gLVj+Ma@8LhtYoU;`pWRI=`*I0lI#YnUDPQaL;8G~xb7k0^J)=V<6M*|i1hO? z6JfzGJIQu4w{7knoVH%LHZxy}OIjNpqnX7U7nYIWPqNpnhQZ6K#zrlM2+Y9Z#VEa1 z9^(58Nko!cU?R)=a?zztpoGjQl#OEpsPJUaEe}YLo~hFj#gz}pD^y3$Bh5T3rIiy9 z)L6Z76$tA*2%_a&i20VI^40VaFkMwrdesmnlWmk6s3kCA8Q@eTw4?GPU#evM=`3!< zBr!3Mamou5)L5e}4>D#y4cO&J{+Yk%G*-nXR3#$4X!0Z1r=-hGcE6n@B~HsZJd)9f zVWvz^C`nKTp{XfPYufRof7k3Fe(4ydjRP8Kcp!9Efm@|a9tRaQ!tTFz51JYT3IAU z#;Gu7Q`-EYV-{49^90$cCXh0)7CbFu?g6BnR4Da7D3gKxlQK{Gtc9JyNTv~&l0-}# zg(4=epk=|YNb?0gcJWvfQ(h)1;_OT;>gHGbsd~-#70PltzXO$SwPsHdw8>=w97|}I zD``d>muTff$oWHJOGm`A^FxuCPuy!E`^6i|y21`v4iw57{TYQ(##nQB(wm!x#W(FC z*eDp>qqep0`?UULUvH+7KW<$>H3{X$-8B%WWWlb{FY{6`^yWc8N$`n<?hTzX;I5aEl6GH2gr^gW64~!yptdO5~olPjR@M5R#?ac1m*gd=Aa~ zQ3c)Jaiw4Xg;bX%@gl5d7q9X30`NW>s7zZviC}|%y!A#@F>FMS=)$o-6 zC=G=JDy2{ZDg`JBg2y}YB`|JF!&+h}%5LkJJYrK2Nb{r>aBs4P1%np@De-zNFvOAa ziw_)vV@dNoEnSeLIJHl-cLxv6{)Fwlu=U08Cf{>X({iSvuNEE*2v$8mP=xADlYvap zRqF;bMM-lK*GWro691kS?44xx*BkL7me{piwj^XNlD#!msVKFMc05x-26?t#$8J9#1HI$;4HYCa3i5btzZ;V6>@AC?w9CCBsXlShIL zxc@sWS%sK(0>)oq`7#bFexxwa`3A5`C#zsu=~uc`3jbycQGv`%tBRtt6K+PJ%LA3> z$tm};DGWxJYS2V0G5i1e%?FA z6^^ADi&r#UTZ_DRr@S))R6b@cNFwkmUSau&xHDpN!J8`d=HhM*N8Dg zn(XtDkk#;GZF(#a%GSSIq>1|PJ;a{Ilg~N%N? zx`ObFO%Dj$sF!c#d@ zT&P*T_Bd$1-}Ltml2BabLO6>hs$YM0i{&@6cmH2Oh&&RnptsPAtdYNfQQkM#ZtVn2 z(|(wBY=sK}0}1^dNFXBh+by)2o+$9WVf@3yop^pXMKsfz`aH}_&kLmCLjHNA??w5KjbvZq&Mu+1^l}f z)sMy0w_=P~AmEo67mxp+|NQgrxsqREIAKXvgL>tkMnz+Of&aqYM`lc_0^SCZjr8+; z6{wUYAIt{QcU{Tl{VN{VF2)}(y6PI2!xNrKUhRN^ox|NXJcyiXK`H-22G=ocqWY)677?_BG#U z>z0kCAf&VPt|99qo*|ET-Yq~jsbcD(m1e9PE>@SnM|PHZ(2!q)$8H_aY;3-LOsH|FCHb%YZ3 zR!zuopr9By-&Npk5cgP~T$J;L0|g<=0@Oi=$_?xLS!{45wflZOsBG7d3JLbbe{pBr zr5RFg9aetYpI|Z4tPZV0(8R56WN@n93L~72`TFFY=9G$iux4$!{wQ^uoC5)I?J~Q0 z#8nRx)*%NDo3@@CpyrlI2q;?*SOi{DTxFhuIEVtRiWdQnae!SJ9;l}gFpeUUviFtFlB#W%KnDY2b4XlOcDP1Ki%wOYZQngTG#E4^}S#q zG%moE__GP~T^Lf=V8hh+h&_%kYt}@+RmXDf|Ic8b0A;)v^Mlr*i*_N4)2d3?|Dv-V zv9(4RyY|D!vpNR{;2M^5tbD03#_r3~Z+%_6xCw=|%kjmUWRGKmJw6iPDpPQeUzU+S z&ih9SqTk}QG9=P}fN}<`_T%IUPK z1xH%|B+raKo;1(Q6GCzMqK_7|P!FLzB|PnhrJ$kPmtNT|({H6aT;EKYZcY{roK@q; z)eJKr0k?@uA>S8IC*vHQuWZW(~rf~Uz zbVE98Zx6(aKfV$1ufP!iNSEfAC7^-K6MyRz#S|;rg zxVUpF;~3;TXpw4+#VnzAGc~c*sbNS2;sU}n+f}8mSRRSMXg`IKkW$t432(_ zBU3PW!}!o-z90CIz?Jy+$kQ_ad_8h;zGGtfsPVCX)xeNQIG;3;a1L(l$5Bfh4Edxg z1NYeLQlolGL3SlaLrFFxMt_!}fi?=522ew_1UqVoF$UKpp32jEmIfD1Orc33phgNS{7Ion>Dy%9;jF(vq8T5J$rZN5#e6 zdKoUF%H~LuGJAu$wA5rZQ^0N+z>w6yki2JUE@+B{EOb?t9$m1aya6s?N8$*M7If4H z4eVdmeju{jl8W$lWOJ$W(jr(J_wW)sDDzr_yD9+=NmeJH7NCUP=&9#v(jhJ(#2G@( zgIv%?n{K1uJZUZx^0U(mvXhr^7*qi?vWTL*w0c(AE-Eza@#KgG4xVYs0JxM7mzu7S z74u~DgeOYi;kY3CL7o?PBq^LwaC~(nz=fcFm zib{h#d472{OiaF0fiqq}I6gxyYB&uF8(skLCJgX!KL_Jgiprx*&=hj_+Lb&96U+&A zEipla1|5@6j~BrG1-!4?qmGIXDQ5R|PKP6KFdpma`F;Fw3~mi+u|7<%f>sKif8Sd%iE z$>^4sv!j5-7)$GqpL+ui8OI;)d4>F%SKZHCKp2Hq9Qg5dO zuqblEXn4-9;(FLmO=u+lWPz2E1a#&|{6EgPpg|X4*Si)p z;-n%@$`DLjvbVYndQs3&+tX4D)qMVq*Kz0+(J7v&kPR0RtU(qqWg}CeYPu$#(#7Y7 za4TGz!0)=A^@;uKs*gkN7j2JFf}>uULQNl#t6qyUrTdkHRuPt6XF5*_DwVdt?Q#nB zkXhwtz%Sq}l8&5qHA;GSUryg&aX$m}-l0{D3$jBH7UgKGZ~{}Ym>?LhOx1Z&RR4bI zONz*IqWrmqnV6i=sF$nge~P?V=A3$YweSj<`wBPk;(la&+!xCcKTIH@GcgtZiCi2$UG z^%BMXpQUFK7dzFuv|VHqEU^!pok+*6iSKg*vm-ljO~0_1#!}o*S^h<;@*degJ20CL z7m{~b1dyXL`b2 z%Iu4ek7}gKyx#mqjX-wg^46U;JwFe^o?5{FO3X|MoNMhO<-?a4R0J~e9`&ts77VU) z>7v!O6?16(g!{1&rZ{b#6wd&ie7MCQJeIH$zA9Vd${XMnbK>8M0cR!2GCBSD@YsRe zPa)j0)N}PYyiiHc0w$L8P+vIO(QC}({(MtdfF1F*A*FX=hUBjbNfYyWKPjgm8faAY zRBy6*0>*k;KN%21;weNz*0QrcM?$j52rasUn1Ep+9?+aB0r<4~Wj#78qo!(>p)m%C zLpJ2WmD|uqWIlt5uT?xMMP`)XZk^c3kVvM0re(G#T0h=fFMXDb(b_aV7q{vEWJxR%Gqq-Yo*(Ym17seLGbFogS|*AO59EQ5eyX{XK7Op(#v;RZ+m&*rF0 z#Hi#MLSz1@?Aeo`M9n^JWF#zWX=Ql5U2N$t^?q&PPbIkvMnH|2kCb*UT4dj4@ z3w^&HtX~ z1JnzJ>gdR)y+xxWDT21GKcXWZ4kFODg16yU1vfh2!L??zQ7zoE=(-s~v(Jxe##FvYNA}5eIS<3v`JRngC7n^AC zF!+$syk1ChP!Ks+i!oFL8Ap^c3Xrxc?7zh$H)W5uz7^(&Ofk+EH|M)b$Ud~j586z0 z8&H0vehy$*UK?H+j3*SZSyNsUT3A@Y(~&|<*{a}*f4db%YHXE~-j0Rk!wNQSa4hdj z#B2w%QJC$ED^Nt+cmj|_sMc6RD%MVPd}0}|AI-^liUBO!aC9< zfCDgiNRbFJ;pPkn%N(Tb;|&*4n|QW-hrt$;czJFH#m&8UHzbplXW7$^m`EWQVit91 zlj+`b#y6doCG4!+{@=Em@G~SaIV4+RnU-GjTB(bl?n+1HhSb z())zcd>4t=67243L0`z-vjY&zOWwC>_j^<)QxyKFFt5>ZtBbHXJ5V3wxn`)SM^5(c zsEFFsh23%-*UQsfGwX2AlfwkxXQjP7~!W{)fi#sn~~71FkFc zhP08M%Y`W>Z|!~ah$MUGSI*i?%WN?}x4RZI`Rjt0sxdzl_o+>Vp9=ORh7(&*Tvry` zXpmE%cgTs&=}(D3*w;#KOd4h|1*yS{tVSl_4QxhQOZG4@_TY-B~QTA5^Ge;%`>bhtW1( z$TiP;zskIUGakg2|4X0M>JI2Xw^yF(9I1i;TTrzEfBy79{i_Al7jqNU|GMB~<_2tr zSP($wyn6=^6IBn)qFF@~*>DKEl0{mPod_sdTY#IPW?p`>YjfdrJy4OJkydQ`;mt7Z z$`t(BZ_fs$v7djrWJdfWY|C_%28JId1}pOtF8OMs*q{>f1xYkKW|+*Rf~`^J1O@o0 z6r>OrHy$;kqSiL$v{2YY-QG2w4iC%NbSg}qJsDFu6Eya z)5na49jc@<8H~Y!o2chXb2(&V5Td#@C((-LB%BLB&xitPZ*;}?43B~l!;9A>lg8QO z>)A=6V2cf`VvSjzwD$_%P#ZU9kPuF0)3s1O9%DJO#Xr5mVa1a!5HGj2V1JHOp?Bqn zI186(9SJ2M?e(6sAf zeE>&J;=zlH&WhB6BeRAg+e#V5v@+;cHp@sRt%~6^GB!H19CWRE;2Ygs+umo$tLX|y z&A_Fy2K|5#-m@TGhtX05)jYPs>NYc*9(08Jx9<37g8)7cP=R|fi$nDru(I99@0T#{ zUOk9)wH12Y0_{T=rIDImu$wX97;W*nk+)rJ_>AC+(ichg8A=L(#^`;-kkZbBkNxs&U6$UH@I+me`=z1 z9xlCXxJPzMT&`WMlp>)O#MlbliXB3?Q7`x|f755Zlw4%OEP!(T4EWjYYH zBApuI(5^?)D7zewD14`c9wU1e@aZ#DxmmslBLe*$?kxZIq;sU=iAb_jiu5#g)#4rW zKC*(h3-*FUu_SfXLc4FfTBqL*R|kXb2_xM;Ti4%u1c$0eo6^o0M%pJ1emK>EYEFc4 zmk=X|6a<~PLSACivB}_x@*C@>Ang0f);!Dx3<5@p`xO|7>pM{baqq4T13?SyM$1r6 zk~DoLvL=sr%CqXP>9TG)oVBoG`-wL~FBajjK`;mxQtIy-ysu5NtWq-M2^iuGh4OQc zLqa)BA}F$2%V%pIIQQx=kB?JX*4CAo9FR8#b*oqE3tiNEbFC#3^v@WNzEuk{GVx#| z9FU1_Q!y@E(n%?$sftb8XKr{GRGB)VrMZfWbleyC>gWoe#1?7l6)cN3>@%(Ka5F6g z6+Z5~njDI)sjTz@-+Fw|Fk8-q7fH}q3J)z<<>VThRp#r8mZY;kJCnthGh>+*LKCa3 zq+K*`!D6gIo8aZ6HdEHZ!xFLiP>8g{4GbqPWzXE7By0I^AV3$|eE&qoV62YlO%I|E_RSgX{rETYyYCC_uZ!m|j=4T9Amd5>JAN;hZH9e% z{wOlT7j=1WxBKfCj)EWeVbl`sh)`iNn;_odLHws6mr9CshRu|Cjg$r8*!vW2L&UD9 zVvtOMkHJ;IhLfZL68=aFgid)ACc5G6te)kxEf$1|uxkNMeM;31birOp!pC?_o5dGo3MuwvMR2hRaS%$bZpZ~>ui(*~A9luB z$^a=af&P4O=LS+}51Q%IthJ=rT&zhZG1;cmm9KLJ#ZE&C&2?gCouVr3uw~Gcg7`XHHvNxnXVE<+gJ?3 zxne5!gvw9A6b^r`B(?C$I{&gJq|tY8)+M)Lm+}T^O<3I#eCy}i3T-wvZY=w~Au8Ni z05@cz^BBL<8J0hEp1xtErXpc;KKzv8BgW8Oidb2mJPs)+y#K1YpPJm=LASKDLR}(x zb!T0n9D$=K9VdH`?sfR<%J2*|rg%_3=jAX%F;$vYp$X5Lx(N;Ku$)B!@>w8z)+Jig zC7TGfb53MTJFVWgvAJQ*>KMRXQ4oE z1uta7EM?MVvnq887 z$nu+;Wp`HHSujen-H1XVso77#C;t>dIdGM_&)x%Fa=Rl4^l(V%VH-we49Exq{MX}(J?rUUcTU=Cmeeg34Kv7Umfyk>@+`$p}K!H z6}E2E0ueG&NsNwm&C<3_)XyJeHcF$Xg-y??WT>{hKX>e^bArj}!&^d0mk^%6c1x?8 zminR^0D6X}q&efC&C~fn5s77Cx#wX3()%YS0`X!Ixx+#B8nOb&73|AWFmYbmF42}q z*26m@B%%QD@9g1nq^I&SpbVzA8)|VqUuXz&&B?kpY_52@u z84R#4aXfEz`oEz6nTzH6^R1QvKk%S{*(*Bmx2e0Uo1?v!y&bc)o4Ng8AA2>?4RC`j z7$84=B_xYNVl6>v1cO;RRUn?$ zgu}j#JK;13qF0UtM%ihmdQ-J<;7KtbTT}L}`)Ls3D51VE)k5(YU)3=sJ|ET+`HEhgm128{Ff!gg+ByF~;G`FNF(0W1x zTNiaAt%{#*4KG3Ol#|}>EmQ@^W!onF_~~lzhg{VzLKQb(URs&rf9mw$%yn+L=I4+? z((2qyFUfKaTKsZd^l8AR!_4Y7LR^Flw}Yk3v1Wo1g+V=?By}p7SBuFs*S+!D#BwgH z^L^pDkF<+gl|YjG-q@}fhX{7N!8x-#h_KVvf1H`FxeLvdC+so3fg^I@7&Z*{;yHZiEnTSV!@F3(mQy!Kf#(0 zVTBPc4MJWMdXA2Io{9oSt%|=O zG`qWxlY@Mmua-~H8j`moh;odK$L;fu^H|Ly6cZA~9nn$7%ssWT2$wSKpp?>H>^4=muWQkPeCZs$yMWzh@Qg*mqM>r=UO z4G#N#eeFC&LgUel9G+7Fd&s0A_dpS#vnJ+nboX0IM>8vb!0rEr)#`oSvOB;RH#&mWU({2#)4L zVGaElN%EF^5GtJd^Sp6Zmd$IqE7KYJ>Kvi+NOpO&&r>nzemlJHK7d!qU#~YoiQ7mK z7_MB`LAqr-VhqP}(<=w>KhsXBE`O@PuA`xSn``$Iw*J_AkDL9Cy0HL>Mpsuxqs8}~ z`gZNRbVjrte++l{;6v)Z)=hHVq5X8lj3zw+x%ceI!e_!=GtG!yR$0{%_7FR0)vElW zS2ixVgS!RyY^5zz4d?E$Eg}w0rTNRz6^(l3 z0cX|a0#4wX;O9~M_Lm$`dO^-@<3iWZXVwAm1G4-Zc3S} zP(`jTMgN^|4;lX6oCL7Uw0;>uG!yi7mJr_{W33|LoMm7gR~hJezy5lfDdxrevIW=> zg505!;@XV8is;eMt3-cA(%hRrTUq!#BH(CLh=dX&rD!_}sfVJTpweBICw*biLftN1 z;@|MvS<=J(MRBU($c&a@L=JO9gsrvkl099gHFl0M;TQaO(mNMvrHmqMDw?csixdjd zxY=I)8H!)I2lT9}kl&WTHCZP}CPUc5Vcie%*8Zmi#}dla59 zk3dm1SjLRx{s!>4>3xVrUHxt`xp4Yv(nZy95;GD@6o8M=BO_%(J$olynbNnbmR8#< zSzxNNMX5t8waGsqPbWAt-)lls3-|6ap1^w9L#A^ggBQW^XCqZeL55&<874+$Dn$w2R? zhyJZw%iW$3pFRV7QqH@B*MVI}U46c(rBN*|)>6L!`(-WE)AiUB>hWs-^>n=mA_L1% zH{M!5f~&1j0WOq{kr?|lZ^%0JN5S?7{6A-`!toW$9!L<7U=k1zY~YLqY~20VGzDCF z0k2O7V{1Dm8z*ziD-ByGbaf2DE^lsH`xz7(Mhxh|F1G$+Mp1e&F6-~5$y~*Zb%FCdR$0zMxN7;0|W&Pwxvd@2&cQqU;y7&xP3Hn*Gt7>3}tn_I=O zO2G++-!8Y--+Hs}w_Im=y-yqp#|jOH=I+qEVObEs%{@dOntP`lT56qms$?%Qx!gcb z+d2mKKy1OR5GD(omP~Xy?K)(3;2EL=ImSad(sbdlc?mH6gKYLXozGxcFpw3AH$Upg zXMnRH2oHqtzeG_yLzeH*07aT?6Pz|${TR?Gw@;}^&F7}O%)3R0-CYf*f*XDNpW%yD5BQ$slrj5J_3Pp+J z2-9zy$)ygn)M#eq9Jy5QH_E5*z0N^uJ3n$(n)P5VJDL%X|AFRwD2I(aLQuR#m?%}`?z>C(SrNO z-osaWCHJQHJIi0bz0i3*uM@$6LIZijRoIa%ZT^YMzk(AcH1`Zx0y`H-zgo?+k$@kZ%kb63qqr} zWnCN#9zMA^I{l#Rslxve7x1NS3BNAY3+kc;1T<)b>pOFuNJ93!-@_ z?J4f3o9)C^x!MursT6ebqCu!qO%CZ7`MSZ^4es{mdS0kaQNW93dz2xiEJiDYCp$-7{DQ5d* zRa0d-OaYHw{9d4?7 z;s3QmYWgfQesj-@WEbA{RIuT?YQvhDoY8#qI+f#CUd(#h*WtU-cz)tOh6#IqR=!$a z!adJ-`J#*66>%@knPTn<^!~dm*&BDS>7zf>8$Orc4%@c=*vr5zekoW!sKMaofy*~5 z&L_L^e-Kh*=Px)F*|4=v!LT|t=k2B&`Jy-Z%+@8$d-34WoX{l~g%g(km&?n(ps-!K zx$_-cGFP`|QIBAR@?puDFXSY;cYa!>@GmhnqVI!M?WqY@Ohn#DaOoT_)OlDjFCp^` z^9%N*C+)qbbuaP8Ke^N&KXu~vw8PJ)a87%BS9wnRIo~tug>SbnNlWXMnQEK)Y08}4 z%g*hozV@c+Q1zOl+a_Hys;(^cefvoDN7Y@qgVFClub=Y7Be?kVt849Ybx$sCeJxjA z^LW|vd3DcjKA%^=u=w<~>2YwA^kv!Ac)x4ZZGG!#1ESV zH%|QUxTy4Sm)OhL)ouOfqbE;Fyt$#W`uhaVpXZ8|UmbB?Ia4_Oo3E9>cd*v(t%q*? z4^CxnRefc}_fjU$LOH$VXTei1zLE|6%bM7vG8QyqCH@!8r(9(%hfi2Wiz%e&aw*v+mfMN^`(aylZ;MBa5_>jti)Z$oB>kQq1N;PkXA3&w| zfaA#AFx^19f$Gl-4b9cbfP4>~SVN(AwU~9cJ_AEsC@TX$ib>ajp$RsrxTG>C6+B&u z9tP+KO2YIvF!o!cXhu6;65Sm1c~XQq423XrkS0;kwWCkGAhf?LfoeyahCw$0eIf#3 zf$($B@yDK<|Gej962TwKtA#0D4CkVL(d*vH{q-z3674 z_Z<;t)ixrVh1!!uHwC?`g)n7G6Esv%I$r4d(c6Ov{rYW4Sq!yx7~stc%t4@BCCHEn K%pQt8ARYh%F*;`e literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.java deleted file mode 100644 index ed42bf319..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/BatchHit.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import com.twitter.search.common.features.thrift.ThriftSearchResultFeatures; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; - -public class BatchHit { - private final LinearScoringData scoringData; - private final ThriftSearchResultFeatures features; - private final ThriftSearchResultMetadata metadata; - private final long tweetID; - private final long timeSliceID; - - public BatchHit( - LinearScoringData scoringData, - ThriftSearchResultFeatures features, - ThriftSearchResultMetadata metadata, - long tweetID, - long timeSliceID - ) { - this.scoringData = scoringData; - this.features = features; - this.metadata = metadata; - this.tweetID = tweetID; - this.timeSliceID = timeSliceID; - } - - public LinearScoringData getScoringData() { - return scoringData; - } - - public ThriftSearchResultFeatures getFeatures() { - return features; - } - - public ThriftSearchResultMetadata getMetadata() { - return metadata; - } - - public long getTweetID() { - return tweetID; - } - - public long getTimeSliceID() { - return timeSliceID; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..442903c066e19c5d81976b5b3224f1d2b0d382b7 GIT binary patch literal 37152 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.java deleted file mode 100644 index ead0078d8..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/DefaultScoringFunction.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import org.apache.lucene.search.Explanation; - -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -/* - * A sample scorer, doesn't really do anything, returns the same score for every document. - */ -public class DefaultScoringFunction extends ScoringFunction { - private float score; - - public DefaultScoringFunction(ImmutableSchemaInterface schema) { - super(schema); - } - - @Override - protected float score(float luceneQueryScore) { - score = luceneQueryScore; - return luceneQueryScore; - } - - @Override - protected Explanation doExplain(float luceneScore) { - // just an example - this scoring function will go away soon - return Explanation.match(luceneScore, "luceneScore=" + luceneScore); - } - - @Override - public void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - relevanceStats.setNumScored(relevanceStats.getNumScored() + 1); - if (score == ScoringFunction.SKIP_HIT) { - relevanceStats.setNumSkipped(relevanceStats.getNumSkipped() + 1); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..00624849b927bb8cbe2ec70c9facf7e65074ba97 GIT binary patch literal 52590 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 Y>`+k#0@#CIyEF>G2-rP-j=aA5KS$Zt?EnA( literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.java deleted file mode 100644 index b6fe1f3ad..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/FeatureBasedScoringFunction.java +++ /dev/null @@ -1,1360 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import java.io.IOException; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.primitives.Ints; -import com.google.common.primitives.Longs; - -import org.apache.lucene.search.Explanation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common_internal.bloomfilter.BloomFilter; -import com.twitter.search.common.constants.SearchCardType; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.database.DatabaseConfig; -import com.twitter.search.common.features.ExternalTweetFeature; -import com.twitter.search.common.features.FeatureHandler; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchemaEntry; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureType; -import com.twitter.search.common.features.thrift.ThriftSearchResultFeatures; -import com.twitter.search.common.query.QueryCommonFieldHitsVisitor; -import com.twitter.search.common.ranking.thriftjava.ThriftRankingParams; -import com.twitter.search.common.relevance.features.AgeDecay; -import com.twitter.search.common.relevance.features.RelevanceSignalConstants; -import com.twitter.search.common.relevance.text.VisibleTokenRatioNormalizer; -import com.twitter.search.common.results.thriftjava.FieldHitList; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.util.LongIntConverter; -import com.twitter.search.common.util.lang.ThriftLanguageUtil; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.earlybird.common.userupdates.UserTable; -import com.twitter.search.earlybird.search.AntiGamingFilter; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.earlybird.search.relevance.LinearScoringData.SkipReason; -import com.twitter.search.earlybird.search.relevance.LinearScoringParams; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchResultExtraMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; -import com.twitter.search.earlybird.thrift.ThriftSocialFilterType; - -/** - * Base class for scoring functions that rely on the extracted features stored in LinearScoringData. - * - * Extensions of this class must implement 2 methods: - * - * - computeScore - * - generateExplanationForScoring - * - * They are called for scoring and generating the debug information of the document that it's - * currently being evaluated. The field 'data' holds the features of the document. - */ -public abstract class FeatureBasedScoringFunction extends ScoringFunction { - private static final Logger LOG = LoggerFactory.getLogger(FeatureBasedScoringFunction.class); - - // A multiplier that's applied to all scores to avoid scores too low. - public static final float SCORE_ADJUSTER = 100.0f; - - private static final VisibleTokenRatioNormalizer VISIBLE_TOKEN_RATIO_NORMALIZER = - VisibleTokenRatioNormalizer.createInstance(); - - // Allow default values only for numeric types. - private static final Set ALLOWED_TYPES_FOR_DEFAULT_FEATURE_VALUES = - EnumSet.of(ThriftSearchFeatureType.INT32_VALUE, - ThriftSearchFeatureType.LONG_VALUE, - ThriftSearchFeatureType.DOUBLE_VALUE); - - private static final Set NUMERIC_FEATURES_FOR_WHICH_DEFAULTS_SHOULD_NOT_BE_SET = - ImmutableSet.of(EarlybirdFieldConstant.TWEET_SIGNATURE.getFieldId(), - EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_LEAST_SIGNIFICANT_INT.getFieldId(), - EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_MOST_SIGNIFICANT_INT.getFieldId()); - - // Name of the scoring function. Used for generating explanations. - private final String functionName; - - private final BloomFilter trustedFilter; - private final BloomFilter followFilter; - - // Current timestamp in seconds. Overridable by unit test or by timestamp set in search query. - private int now; - - private final AntiGamingFilter antiGamingFilter; - - @Nullable - private final AgeDecay ageDecay; - - protected final LinearScoringParams params; // Parameters and query-dependent values. - - // In order for the API calls to retrieve the correct `LinearScoringData` - // for the passed `docId`, we need to maintain a map of `docId` -> `LinearScoringData` - // NOTE: THIS CAN ONLY BE REFERENCED AT HIT COLLECTION TIME, SINCE DOC IDS ARE NOT UNIQUE - // ACROSS SEGMENTS. IT'S NOT USABLE DURING BATCH SCORING. - private final Map docIdToScoringData; - - private final ThriftSearchResultType searchResultType; - - private final UserTable userTable; - - @VisibleForTesting - void setNow(int fakeNow) { - now = fakeNow; - } - - public FeatureBasedScoringFunction( - String functionName, - ImmutableSchemaInterface schema, - ThriftSearchQuery searchQuery, - AntiGamingFilter antiGamingFilter, - ThriftSearchResultType searchResultType, - UserTable userTable) throws IOException { - super(schema); - - this.functionName = functionName; - this.searchResultType = searchResultType; - this.userTable = userTable; - - Preconditions.checkNotNull(searchQuery.getRelevanceOptions()); - ThriftRankingParams rankingParams = searchQuery.getRelevanceOptions().getRankingParams(); - Preconditions.checkNotNull(rankingParams); - - params = new LinearScoringParams(searchQuery, rankingParams); - docIdToScoringData = new HashMap<>(); - - long timestamp = searchQuery.isSetTimestampMsecs() && searchQuery.getTimestampMsecs() > 0 - ? searchQuery.getTimestampMsecs() : System.currentTimeMillis(); - now = Ints.checkedCast(TimeUnit.MILLISECONDS.toSeconds(timestamp)); - - this.antiGamingFilter = antiGamingFilter; - - this.ageDecay = params.useAgeDecay - ? new AgeDecay(params.ageDecayBase, params.ageDecayHalflife, params.ageDecaySlope) - : null; - - if (searchQuery.isSetTrustedFilter()) { - trustedFilter = new BloomFilter(searchQuery.getTrustedFilter()); - } else { - trustedFilter = null; - } - - if (searchQuery.isSetDirectFollowFilter()) { - followFilter = new BloomFilter(searchQuery.getDirectFollowFilter()); - } else { - followFilter = null; - } - } - - @VisibleForTesting - final LinearScoringParams getScoringParams() { - return params; - } - - /** - * Returns the LinearScoringData instance associated with the current doc ID. If it doesn't exist, - * an empty LinearScoringData is created. - */ - @Override - public LinearScoringData getScoringDataForCurrentDocument() { - LinearScoringData data = docIdToScoringData.get(getCurrentDocID()); - if (data == null) { - data = new LinearScoringData(); - docIdToScoringData.put(getCurrentDocID(), data); - } - return data; - } - - @Override - public void setDebugMode(int debugMode) { - super.setDebugMode(debugMode); - } - - /** - * Normal the lucene score, which was unbounded, to a range of [1.0, maxLuceneScoreBoost]. - * The normalized value increases almost linearly in the lucene score range 2.0 ~ 7.0, where - * most queries fall in. For rare long tail queries, like some hashtags, they have high idf and - * thus high lucene score, the normalized value won't have much difference between tweets. - * The normalization function is: - * ls = luceneScore - * norm = min(max, 1 + (max - 1.0) / 2.4 * ln(1 + ls) - */ - static float normalizeLuceneScore(float luceneScore, float maxBoost) { - return (float) Math.min(maxBoost, 1.0 + (maxBoost - 1.0) / 2.4 * Math.log1p(luceneScore)); - } - - @Override - protected float score(float luceneQueryScore) throws IOException { - return scoreInternal(luceneQueryScore, null); - } - - protected LinearScoringData updateLinearScoringData(float luceneQueryScore) throws IOException { - // Reset the data for each tweet!!! - LinearScoringData data = new LinearScoringData(); - docIdToScoringData.put(getCurrentDocID(), data); - - // Set proper version for engagement counters for this request. - data.skipReason = SkipReason.NOT_SKIPPED; - data.luceneScore = luceneQueryScore; - data.userRep = (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.USER_REPUTATION); - - if (antiGamingFilter != null && !antiGamingFilter.accept(getCurrentDocID())) { - data.skipReason = SkipReason.ANTIGAMING; - return data; - } - - data.textScore = (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.TEXT_SCORE); - data.tokenAt140DividedByNumTokensBucket = VISIBLE_TOKEN_RATIO_NORMALIZER.denormalize( - (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.VISIBLE_TOKEN_RATIO)); - data.fromUserId = documentFeatures.getFeatureValue(EarlybirdFieldConstant.FROM_USER_ID_CSF); - data.isFollow = followFilter != null - && followFilter.contains(Longs.toByteArray(data.fromUserId)); - data.isTrusted = trustedFilter != null - && trustedFilter.contains(Longs.toByteArray(data.fromUserId)); - data.isFromVerifiedAccount = documentFeatures.isFlagSet( - EarlybirdFieldConstant.FROM_VERIFIED_ACCOUNT_FLAG); - data.isFromBlueVerifiedAccount = documentFeatures.isFlagSet( - EarlybirdFieldConstant.FROM_BLUE_VERIFIED_ACCOUNT_FLAG); - data.isSelfTweet = data.fromUserId == params.searcherId; - // v1 engagement counters, note that the first three values are post-log2 version - // of the original unnormalized values. - data.retweetCountPostLog2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.RETWEET_COUNT); - data.replyCountPostLog2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.REPLY_COUNT); - data.favCountPostLog2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.FAVORITE_COUNT); - data.embedsImpressionCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EMBEDS_IMPRESSION_COUNT); - data.embedsUrlCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EMBEDS_URL_COUNT); - data.videoViewCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.VIDEO_VIEW_COUNT); - // v2 engagement counters - data.retweetCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.RETWEET_COUNT_V2); - data.replyCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.REPLY_COUNT_V2); - data.favCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.FAVORITE_COUNT_V2); - // other v2 engagement counters - data.embedsImpressionCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EMBEDS_IMPRESSION_COUNT_V2); - data.embedsUrlCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EMBEDS_URL_COUNT_V2); - data.videoViewCountV2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.VIDEO_VIEW_COUNT_V2); - // pure v2 engagement counters without v1 counterpart - data.quotedCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.QUOTE_COUNT); - data.weightedRetweetCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.WEIGHTED_RETWEET_COUNT); - data.weightedReplyCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.WEIGHTED_REPLY_COUNT); - data.weightedFavCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.WEIGHTED_FAVORITE_COUNT); - data.weightedQuoteCount = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.WEIGHTED_QUOTE_COUNT); - - Double querySpecificScoreAdjustment = params.querySpecificScoreAdjustments == null ? null - : params.querySpecificScoreAdjustments.get(tweetIDMapper.getTweetID(getCurrentDocID())); - data.querySpecificScore = - querySpecificScoreAdjustment == null ? 0.0 : querySpecificScoreAdjustment; - - data.authorSpecificScore = params.authorSpecificScoreAdjustments == null - ? 0.0 - : params.authorSpecificScoreAdjustments.getOrDefault(data.fromUserId, 0.0); - - // respect social filter type - if (params.socialFilterType != null && !data.isSelfTweet) { - if ((params.socialFilterType == ThriftSocialFilterType.ALL - && !data.isFollow && !data.isTrusted) - || (params.socialFilterType == ThriftSocialFilterType.TRUSTED && !data.isTrusted) - || (params.socialFilterType == ThriftSocialFilterType.FOLLOWS && !data.isFollow)) { - // we can skip this hit as we only want social results in this mode. - data.skipReason = SkipReason.SOCIAL_FILTER; - return data; - } - } - - // 1. first apply all the filters to only non-follow tweets and non-verified accounts, - // but be tender to sentinel values - // unless you specifically asked to apply filters regardless - if (params.applyFiltersAlways - || (!data.isSelfTweet && !data.isFollow && !data.isFromVerifiedAccount - && !data.isFromBlueVerifiedAccount)) { - if (data.userRep < params.reputationMinVal - // don't filter unset userreps, we give them the benefit of doubt and let it - // continue to scoring. userrep is unset when either user just signed up or - // during ingestion time we had trouble getting userrep from reputation service. - && data.userRep != RelevanceSignalConstants.UNSET_REPUTATION_SENTINEL) { - data.skipReason = SkipReason.LOW_REPUTATION; - return data; - } else if (data.textScore < params.textScoreMinVal - // don't filter unset text scores, use goodwill value - && data.textScore != RelevanceSignalConstants.UNSET_TEXT_SCORE_SENTINEL) { - data.skipReason = SkipReason.LOW_TEXT_SCORE; - return data; - } else if (data.retweetCountPostLog2 != LinearScoringData.UNSET_SIGNAL_VALUE - && data.retweetCountPostLog2 < params.retweetMinVal) { - data.skipReason = SkipReason.LOW_RETWEET_COUNT; - return data; - } else if (data.favCountPostLog2 != LinearScoringData.UNSET_SIGNAL_VALUE - && data.favCountPostLog2 < params.favMinVal) { - data.skipReason = SkipReason.LOW_FAV_COUNT; - return data; - } - } - - // if sentinel value is set, assume goodwill score and let scoring continue. - if (data.textScore == RelevanceSignalConstants.UNSET_TEXT_SCORE_SENTINEL) { - data.textScore = RelevanceSignalConstants.GOODWILL_TEXT_SCORE; - } - if (data.userRep == RelevanceSignalConstants.UNSET_REPUTATION_SENTINEL) { - data.userRep = RelevanceSignalConstants.GOODWILL_REPUTATION; - } - - data.tweetAgeInSeconds = now - timeMapper.getTime(getCurrentDocID()); - if (data.tweetAgeInSeconds < 0) { - data.tweetAgeInSeconds = 0; // Age cannot be negative - } - - // The PARUS_SCORE feature should be read as is. - data.parusScore = documentFeatures.getFeatureValue(EarlybirdFieldConstant.PARUS_SCORE); - - data.isNullcast = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_NULLCAST_FLAG); - data.hasUrl = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_LINK_FLAG); - data.hasImageUrl = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_IMAGE_URL_FLAG); - data.hasVideoUrl = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_VIDEO_URL_FLAG); - data.hasNewsUrl = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_NEWS_URL_FLAG); - data.isReply = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_REPLY_FLAG); - data.isRetweet = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_RETWEET_FLAG); - data.isOffensive = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_OFFENSIVE_FLAG); - data.hasTrend = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_TREND_FLAG); - data.hasMultipleHashtagsOrTrends = - documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_MULTIPLE_HASHTAGS_OR_TRENDS_FLAG); - data.isUserSpam = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_USER_SPAM_FLAG); - data.isUserNSFW = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_USER_NSFW_FLAG) - || userTable.isSet(data.fromUserId, UserTable.NSFW_BIT); - data.isUserAntiSocial = - userTable.isSet(data.fromUserId, UserTable.ANTISOCIAL_BIT); - data.isUserBot = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_USER_BOT_FLAG); - data.hasCard = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_CARD_FLAG); - data.cardType = SearchCardType.UNKNOWN.getByteValue(); - if (data.hasCard) { - data.cardType = - (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.CARD_TYPE_CSF_FIELD); - } - data.hasVisibleLink = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_VISIBLE_LINK_FLAG); - - data.hasConsumerVideo = - documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_CONSUMER_VIDEO_FLAG); - data.hasProVideo = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_PRO_VIDEO_FLAG); - data.hasVine = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_VINE_FLAG); - data.hasPeriscope = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_PERISCOPE_FLAG); - data.hasNativeImage = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_NATIVE_IMAGE_FLAG); - data.hasQuote = documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_QUOTE_FLAG); - data.isComposerSourceCamera = - documentFeatures.isFlagSet(EarlybirdFieldConstant.COMPOSER_SOURCE_IS_CAMERA_FLAG); - - // Only read the shared status if the isRetweet or isReply bit is true (minor optimization). - if (data.isRetweet || (params.getInReplyToStatusId && data.isReply)) { - data.sharedStatusId = - documentFeatures.getFeatureValue(EarlybirdFieldConstant.SHARED_STATUS_ID_CSF); - } - - // Only read the reference tweet author ID if the isRetweet or isReply bit - // is true (minor optimization). - if (data.isRetweet || data.isReply) { - // the REFERENCE_AUTHOR_ID_CSF stores the source tweet author id for all retweets - long referenceAuthorId = - documentFeatures.getFeatureValue(EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_CSF); - if (referenceAuthorId > 0) { - data.referenceAuthorId = referenceAuthorId; - } else { - // we also store the reference author id for retweets, directed at tweets, and self threaded - // tweets separately on Realtime/Protected Earlybirds. This data will be moved to the - // REFERENCE_AUTHOR_ID_CSF and these fields will be deprecated in SEARCH-34958. - referenceAuthorId = LongIntConverter.convertTwoIntToOneLong( - (int) documentFeatures.getFeatureValue( - EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_MOST_SIGNIFICANT_INT), - (int) documentFeatures.getFeatureValue( - EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_LEAST_SIGNIFICANT_INT)); - if (referenceAuthorId > 0) { - data.referenceAuthorId = referenceAuthorId; - } - } - } - - // Convert language to a thrift language and then back to an int in order to - // ensure a value compatible with our current ThriftLanguage definition. - ThriftLanguage tweetLang = ThriftLanguageUtil.safeFindByValue( - (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.LANGUAGE)); - data.tweetLangId = tweetLang.getValue(); - // Set the language-related features here so that they can be later used in promotion/demotion - // and also be transferred to ThriftSearchResultMetadata - data.userLangMult = computeUserLangMultiplier(data, params); - data.hasDifferentLang = params.uiLangId != ThriftLanguage.UNKNOWN.getValue() - && params.uiLangId != data.tweetLangId; - data.hasEnglishTweetAndDifferentUILang = data.hasDifferentLang - && data.tweetLangId == ThriftLanguage.ENGLISH.getValue(); - data.hasEnglishUIAndDifferentTweetLang = data.hasDifferentLang - && params.uiLangId == ThriftLanguage.ENGLISH.getValue(); - - // Exposed all these features for the clients. - data.isSensitiveContent = - documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_SENSITIVE_CONTENT); - data.hasMultipleMediaFlag = - documentFeatures.isFlagSet(EarlybirdFieldConstant.HAS_MULTIPLE_MEDIA_FLAG); - data.profileIsEggFlag = documentFeatures.isFlagSet(EarlybirdFieldConstant.PROFILE_IS_EGG_FLAG); - data.isUserNewFlag = documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_USER_NEW_FLAG); - data.numMentions = (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.NUM_MENTIONS); - data.numHashtags = (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.NUM_HASHTAGS); - data.linkLanguage = - (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.LINK_LANGUAGE); - data.prevUserTweetEngagement = - (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.PREV_USER_TWEET_ENGAGEMENT); - - // health model scores by HML - data.toxicityScore = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.TOXICITY_SCORE); - data.pBlockScore = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.PBLOCK_SCORE); - data.pSpammyTweetScore = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.P_SPAMMY_TWEET_SCORE); - data.pReportedTweetScore = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.P_REPORTED_TWEET_SCORE); - data.spammyTweetContentScore = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.SPAMMY_TWEET_CONTENT_SCORE - ); - data.experimentalHealthModelScore1 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EXPERIMENTAL_HEALTH_MODEL_SCORE_1); - data.experimentalHealthModelScore2 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EXPERIMENTAL_HEALTH_MODEL_SCORE_2); - data.experimentalHealthModelScore3 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EXPERIMENTAL_HEALTH_MODEL_SCORE_3); - data.experimentalHealthModelScore4 = documentFeatures.getUnnormalizedFeatureValue( - EarlybirdFieldConstant.EXPERIMENTAL_HEALTH_MODEL_SCORE_4); - - return data; - } - - protected float scoreInternal( - float luceneQueryScore, ExplanationWrapper explanation) throws IOException { - LinearScoringData data = updateLinearScoringData(luceneQueryScore); - if (data.skipReason != null && data.skipReason != SkipReason.NOT_SKIPPED) { - return finalizeScore(data, explanation, SKIP_HIT); - } - - double score = computeScore(data, explanation != null); - return postScoreComputation(data, score, true, explanation); - } - - protected float postScoreComputation( - LinearScoringData data, - double score, - boolean boostScoreWithHitAttribution, - ExplanationWrapper explanation) throws IOException { - double modifiedScore = score; - data.scoreBeforeBoost = modifiedScore; - if (params.applyBoosts) { - modifiedScore = - applyBoosts(data, modifiedScore, boostScoreWithHitAttribution, explanation != null); - } - // Final adjustment to avoid too-low scores. - modifiedScore *= SCORE_ADJUSTER; - data.scoreAfterBoost = modifiedScore; - - // 3. final score filter - data.scoreFinal = modifiedScore; - if ((params.applyFiltersAlways || (!data.isSelfTweet && !data.isFollow)) - && modifiedScore < params.minScore) { - data.skipReason = SkipReason.LOW_FINAL_SCORE; - modifiedScore = SKIP_HIT; - } - - // clear field hits - this.fieldHitAttribution = null; - return finalizeScore(data, explanation, modifiedScore); - } - - /** - * Applying promotion/demotion to the scores generated by feature-based scoring functions - * - * @param data Original LinearScoringData (to be modified with boosts here) - * @param score Score generated by the feature-based scoring function - * @param withHitAttribution Determines if hit attribution data should be included. - * @param forExplanation Indicates if the score will be computed for generating the explanation. - * @return Score after applying promotion/demotion - */ - private double applyBoosts( - LinearScoringData data, - double score, - boolean withHitAttribution, - boolean forExplanation) { - double boostedScore = score; - - if (params.useLuceneScoreAsBoost) { - data.normalizedLuceneScore = normalizeLuceneScore( - (float) data.luceneScore, (float) params.maxLuceneScoreBoost); - boostedScore *= data.normalizedLuceneScore; - } - if (data.isOffensive) { - boostedScore *= params.offensiveDamping; - } - if (data.isUserSpam && params.spamUserDamping != LinearScoringData.NO_BOOST_VALUE) { - data.spamUserDampApplied = true; - boostedScore *= params.spamUserDamping; - } - if (data.isUserNSFW && params.nsfwUserDamping != LinearScoringData.NO_BOOST_VALUE) { - data.nsfwUserDampApplied = true; - boostedScore *= params.nsfwUserDamping; - } - if (data.isUserBot && params.botUserDamping != LinearScoringData.NO_BOOST_VALUE) { - data.botUserDampApplied = true; - boostedScore *= params.botUserDamping; - } - - // cards - if (data.hasCard && params.hasCardBoosts[data.cardType] != LinearScoringData.NO_BOOST_VALUE) { - boostedScore *= params.hasCardBoosts[data.cardType]; - data.hasCardBoostApplied = true; - } - - // trends - if (data.hasMultipleHashtagsOrTrends) { - boostedScore *= params.multipleHashtagsOrTrendsDamping; - } else if (data.hasTrend) { - data.tweetHasTrendsBoostApplied = true; - boostedScore *= params.tweetHasTrendBoost; - } - - // Media/News url boosts. - if (data.hasImageUrl || data.hasVideoUrl) { - data.hasMedialUrlBoostApplied = true; - boostedScore *= params.tweetHasMediaUrlBoost; - } - if (data.hasNewsUrl) { - data.hasNewsUrlBoostApplied = true; - boostedScore *= params.tweetHasNewsUrlBoost; - } - - if (data.isFromVerifiedAccount) { - data.tweetFromVerifiedAccountBoostApplied = true; - boostedScore *= params.tweetFromVerifiedAccountBoost; - } - - if (data.isFromBlueVerifiedAccount) { - data.tweetFromBlueVerifiedAccountBoostApplied = true; - boostedScore *= params.tweetFromBlueVerifiedAccountBoost; - } - - if (data.isFollow) { - // direct follow, so boost both replies and non-replies. - data.directFollowBoostApplied = true; - boostedScore *= params.directFollowBoost; - } else if (data.isTrusted) { - // trusted circle - if (!data.isReply) { - // non-at-reply, in trusted network - data.trustedCircleBoostApplied = true; - boostedScore *= params.trustedCircleBoost; - } - } else if (data.isReply) { - // at-reply out of my network - data.outOfNetworkReplyPenaltyApplied = true; - boostedScore -= params.outOfNetworkReplyPenalty; - } - - if (data.isSelfTweet) { - data.selfTweetBoostApplied = true; - data.selfTweetMult = params.selfTweetBoost; - boostedScore *= params.selfTweetBoost; - } - - // Language Demotion - // User language based demotion - // The data.userLangMult is set in scoreInternal(), and this setting step is always before - // the applying boosts step - if (params.useUserLanguageInfo) { - boostedScore *= data.userLangMult; - } - // UI language based demotion - if (params.uiLangId != ThriftLanguage.UNKNOWN.getValue() - && params.uiLangId != data.tweetLangId) { - if (data.tweetLangId == ThriftLanguage.ENGLISH.getValue()) { - data.uiLangMult = params.langEnglishTweetDemote; - } else if (params.uiLangId == ThriftLanguage.ENGLISH.getValue()) { - data.uiLangMult = params.langEnglishUIDemote; - } else { - data.uiLangMult = params.langDefaultDemote; - } - } else { - data.uiLangMult = LinearScoringData.NO_BOOST_VALUE; - } - boostedScore *= data.uiLangMult; - - if (params.useAgeDecay) { - // shallow sigmoid with an inflection point at ageDecayHalflife - data.ageDecayMult = ageDecay.getAgeDecayMultiplier(data.tweetAgeInSeconds); - boostedScore *= data.ageDecayMult; - } - - // Hit Attribute Demotion - // Scoring is currently based on tokenized user name, text, and url in the tweet - // If hit attribute collection is enabled, we demote score based on these fields - if (hitAttributeHelper != null && params.enableHitDemotion) { - - Map> hitMap; - if (forExplanation && fieldHitAttribution != null) { - // if this scoring call is for generating an explanation, - // we'll use the fieldHitAttribution found in the search result's metadata because - // collectors are not called during the debug workflow - hitMap = Maps.transformValues(fieldHitAttribution.getHitMap(), FieldHitList::getHitFields); - } else if (withHitAttribution) { - hitMap = hitAttributeHelper.getHitAttribution(getCurrentDocID()); - } else { - hitMap = Maps.newHashMap(); - } - Set uniqueFieldHits = ImmutableSet.copyOf(Iterables.concat(hitMap.values())); - - data.hitFields.addAll(uniqueFieldHits); - // there should always be fields that are hit - // if there aren't, we assume this is a call from 'explain' in debug mode - // do not override hit attribute data if in debug mode - if (!uniqueFieldHits.isEmpty()) { - // demotions based strictly on field hits - if (uniqueFieldHits.size() == 1) { - if (uniqueFieldHits.contains( - EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName())) { - // if url was the only field that was hit, demote - data.hasUrlOnlyHitDemotionApplied = true; - boostedScore *= params.urlOnlyHitDemotion; - } else if (uniqueFieldHits.contains( - EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName())) { - // if name was the only field that was hit, demote - data.hasNameOnlyHitDemotionApplied = true; - boostedScore *= params.nameOnlyHitDemotion; - } - } else if (!uniqueFieldHits.contains(EarlybirdFieldConstant.TEXT_FIELD.getFieldName()) - && !uniqueFieldHits.contains(EarlybirdFieldConstant.MENTIONS_FIELD.getFieldName()) - && !uniqueFieldHits.contains(EarlybirdFieldConstant.HASHTAGS_FIELD.getFieldName()) - && !uniqueFieldHits.contains(EarlybirdFieldConstant.STOCKS_FIELD.getFieldName())) { - // if text or special text was never hit, demote - data.hasNoTextHitDemotionApplied = true; - boostedScore *= params.noTextHitDemotion; - } else if (uniqueFieldHits.size() == 2) { - // demotions based on field hit combinations - // want to demote if we only hit two of the fields (one being text) - // but with separate terms - Set fieldIntersections = QueryCommonFieldHitsVisitor.findIntersection( - hitAttributeHelper.getNodeToRankMap(), - hitMap, - query); - - if (fieldIntersections.isEmpty()) { - if (uniqueFieldHits.contains( - EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName())) { - // if name is hit but has no hits in common with text, demote - // want to demote cases where we hit part of the person's name - // and tweet text separately - data.hasSeparateTextAndNameHitDemotionApplied = true; - boostedScore *= params.separateTextAndNameHitDemotion; - } else if (uniqueFieldHits.contains( - EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName())) { - // if url is hit but has no hits in common with text, demote - // want to demote cases where we hit a potential domain keyword - // and tweet text separately - data.hasSeparateTextAndUrlHitDemotionApplied = true; - boostedScore *= params.separateTextAndUrlHitDemotion; - } - } - } - } - } - - return boostedScore; - } - - /** - * Compute the user language based demotion multiplier - */ - private static double computeUserLangMultiplier( - LinearScoringData data, LinearScoringParams params) { - if (data.tweetLangId == params.uiLangId - && data.tweetLangId != ThriftLanguage.UNKNOWN.getValue()) { - // Effectively the uiLang is considered a language that user knows with 1.0 confidence. - return LinearScoringData.NO_BOOST_VALUE; - } - - if (params.userLangs[data.tweetLangId] > 0.0) { - return params.userLangs[data.tweetLangId]; - } - - return params.unknownLanguageBoost; - } - - /** - * Computes the score of the document that it's currently being evaluated. - * - * The extracted features from the document are available in the field 'data'. - * - * @param data The LinearScoringData instance that will store the document features. - * @param forExplanation Indicates if the score will be computed for generating the explanation. - */ - protected abstract double computeScore( - LinearScoringData data, boolean forExplanation) throws IOException; - - private float finalizeScore( - LinearScoringData scoringData, - ExplanationWrapper explanation, - double score) throws IOException { - scoringData.scoreReturned = score; - if (explanation != null) { - explanation.explanation = generateExplanation(scoringData); - } - return (float) score; - } - - @Override - protected void initializeNextSegment(EarlybirdIndexSegmentAtomicReader reader) - throws IOException { - if (antiGamingFilter != null) { - antiGamingFilter.startSegment(reader); - } - } - - /* - * Generate the scoring explanation for debug. - */ - private Explanation generateExplanation(LinearScoringData scoringData) throws IOException { - final List details = Lists.newArrayList(); - - details.add(Explanation.match(0.0f, "[PROPERTIES] " - + scoringData.getPropertyExplanation())); - - // 1. Filters - boolean isHit = scoringData.skipReason == SkipReason.NOT_SKIPPED; - if (scoringData.skipReason == SkipReason.ANTIGAMING) { - details.add(Explanation.noMatch("SKIPPED for antigaming")); - } - if (scoringData.skipReason == SkipReason.LOW_REPUTATION) { - details.add(Explanation.noMatch( - String.format("SKIPPED for low reputation: %.3f < %.3f", - scoringData.userRep, params.reputationMinVal))); - } - if (scoringData.skipReason == SkipReason.LOW_TEXT_SCORE) { - details.add(Explanation.noMatch( - String.format("SKIPPED for low text score: %.3f < %.3f", - scoringData.textScore, params.textScoreMinVal))); - } - if (scoringData.skipReason == SkipReason.LOW_RETWEET_COUNT) { - details.add(Explanation.noMatch( - String.format("SKIPPED for low retweet count: %.3f < %.3f", - scoringData.retweetCountPostLog2, params.retweetMinVal))); - } - if (scoringData.skipReason == SkipReason.LOW_FAV_COUNT) { - details.add(Explanation.noMatch( - String.format("SKIPPED for low fav count: %.3f < %.3f", - scoringData.favCountPostLog2, params.favMinVal))); - } - if (scoringData.skipReason == SkipReason.SOCIAL_FILTER) { - details.add(Explanation.noMatch("SKIPPED for not in the right social circle")); - } - - // 2. Explanation depending on the scoring type - generateExplanationForScoring(scoringData, isHit, details); - - // 3. Explanation depending on boosts - if (params.applyBoosts) { - generateExplanationForBoosts(scoringData, isHit, details); - } - - // 4. Final score filter. - if (scoringData.skipReason == SkipReason.LOW_FINAL_SCORE) { - details.add(Explanation.noMatch("SKIPPED for low final score: " + scoringData.scoreFinal)); - isHit = false; - } - - String hostAndSegment = String.format("%s host = %s segment = %s", - functionName, DatabaseConfig.getLocalHostname(), DatabaseConfig.getDatabase()); - if (isHit) { - return Explanation.match((float) scoringData.scoreFinal, hostAndSegment, details); - } else { - return Explanation.noMatch(hostAndSegment, details); - } - } - - /** - * Generates the explanation for the document that is currently being evaluated. - * - * Implementations of this method must use the 'details' parameter to collect its output. - * - * @param scoringData Scoring components for the document - * @param isHit Indicates whether the document is not skipped - * @param details Details of the explanation. Used to collect the output. - */ - protected abstract void generateExplanationForScoring( - LinearScoringData scoringData, boolean isHit, List details) throws IOException; - - /** - * Generates the boosts part of the explanation for the document that is currently - * being evaluated. - */ - private void generateExplanationForBoosts( - LinearScoringData scoringData, - boolean isHit, - List details) { - List boostDetails = Lists.newArrayList(); - - boostDetails.add(Explanation.match((float) scoringData.scoreBeforeBoost, "Score before boost")); - - - // Lucene score boost - if (params.useLuceneScoreAsBoost) { - boostDetails.add(Explanation.match( - (float) scoringData.normalizedLuceneScore, - String.format("[x] Lucene score boost, luceneScore=%.3f", - scoringData.luceneScore))); - } - - // card boost - if (scoringData.hasCardBoostApplied) { - boostDetails.add(Explanation.match((float) params.hasCardBoosts[scoringData.cardType], - "[x] card boost for type " + SearchCardType.cardTypeFromByteValue(scoringData.cardType))); - } - - // Offensive - if (scoringData.isOffensive) { - boostDetails.add(Explanation.match((float) params.offensiveDamping, "[x] Offensive damping")); - } else { - boostDetails.add(Explanation.match(LinearScoringData.NO_BOOST_VALUE, - String.format("Not Offensive, damping=%.3f", params.offensiveDamping))); - } - - // Spam - if (scoringData.spamUserDampApplied) { - boostDetails.add(Explanation.match((float) params.spamUserDamping, "[x] Spam")); - } - // NSFW - if (scoringData.nsfwUserDampApplied) { - boostDetails.add(Explanation.match((float) params.nsfwUserDamping, "[X] NSFW")); - } - // Bot - if (scoringData.botUserDampApplied) { - boostDetails.add(Explanation.match((float) params.botUserDamping, "[X] Bot")); - } - - // Multiple hashtags or trends - if (scoringData.hasMultipleHashtagsOrTrends) { - boostDetails.add(Explanation.match((float) params.multipleHashtagsOrTrendsDamping, - "[x] Multiple hashtags or trends boost")); - } else { - boostDetails.add(Explanation.match(LinearScoringData.NO_BOOST_VALUE, - String.format("No multiple hashtags or trends, damping=%.3f", - params.multipleHashtagsOrTrendsDamping))); - } - - if (scoringData.tweetHasTrendsBoostApplied) { - boostDetails.add(Explanation.match( - (float) params.tweetHasTrendBoost, "[x] Tweet has trend boost")); - } - - if (scoringData.hasMedialUrlBoostApplied) { - boostDetails.add(Explanation.match( - (float) params.tweetHasMediaUrlBoost, "[x] Media url boost")); - } - - if (scoringData.hasNewsUrlBoostApplied) { - boostDetails.add(Explanation.match( - (float) params.tweetHasNewsUrlBoost, "[x] News url boost")); - } - - boostDetails.add(Explanation.match(0.0f, "[FIELDS HIT] " + scoringData.hitFields)); - - if (scoringData.hasNoTextHitDemotionApplied) { - boostDetails.add(Explanation.match( - (float) params.noTextHitDemotion, "[x] No text hit demotion")); - } - - if (scoringData.hasUrlOnlyHitDemotionApplied) { - boostDetails.add(Explanation.match( - (float) params.urlOnlyHitDemotion, "[x] URL only hit demotion")); - } - - if (scoringData.hasNameOnlyHitDemotionApplied) { - boostDetails.add(Explanation.match( - (float) params.nameOnlyHitDemotion, "[x] Name only hit demotion")); - } - - if (scoringData.hasSeparateTextAndNameHitDemotionApplied) { - boostDetails.add(Explanation.match((float) params.separateTextAndNameHitDemotion, - "[x] Separate text/name demotion")); - } - - if (scoringData.hasSeparateTextAndUrlHitDemotionApplied) { - boostDetails.add(Explanation.match((float) params.separateTextAndUrlHitDemotion, - "[x] Separate text/url demotion")); - } - - if (scoringData.tweetFromVerifiedAccountBoostApplied) { - boostDetails.add(Explanation.match((float) params.tweetFromVerifiedAccountBoost, - "[x] Verified account boost")); - } - - if (scoringData.tweetFromBlueVerifiedAccountBoostApplied) { - boostDetails.add(Explanation.match((float) params.tweetFromBlueVerifiedAccountBoost, - "[x] Blue-verified account boost")); - } - - if (scoringData.selfTweetBoostApplied) { - boostDetails.add(Explanation.match((float) params.selfTweetBoost, - "[x] Self tweet boost")); - } - - if (scoringData.skipReason == LinearScoringData.SkipReason.SOCIAL_FILTER) { - boostDetails.add(Explanation.noMatch("SKIPPED for social filter")); - } else { - if (scoringData.directFollowBoostApplied) { - boostDetails.add(Explanation.match((float) params.directFollowBoost, - "[x] Direct follow boost")); - } - if (scoringData.trustedCircleBoostApplied) { - boostDetails.add(Explanation.match((float) params.trustedCircleBoost, - "[x] Trusted circle boost")); - } - if (scoringData.outOfNetworkReplyPenaltyApplied) { - boostDetails.add(Explanation.match((float) params.outOfNetworkReplyPenalty, - "[-] Out of network reply penalty")); - } - } - - // Language demotions - String langDetails = String.format( - "tweetLang=[%s] uiLang=[%s]", - ThriftLanguageUtil.getLocaleOf( - ThriftLanguage.findByValue(scoringData.tweetLangId)).getLanguage(), - ThriftLanguageUtil.getLocaleOf(ThriftLanguage.findByValue(params.uiLangId)).getLanguage()); - if (scoringData.uiLangMult == 1.0) { - boostDetails.add(Explanation.match( - LinearScoringData.NO_BOOST_VALUE, "No UI Language demotion: " + langDetails)); - } else { - boostDetails.add(Explanation.match( - (float) scoringData.uiLangMult, "[x] UI LangMult: " + langDetails)); - } - StringBuilder userLangDetails = new StringBuilder(); - userLangDetails.append("userLang=["); - for (int i = 0; i < params.userLangs.length; i++) { - if (params.userLangs[i] > 0.0) { - String lang = ThriftLanguageUtil.getLocaleOf(ThriftLanguage.findByValue(i)).getLanguage(); - userLangDetails.append(String.format("%s:%.3f,", lang, params.userLangs[i])); - } - } - userLangDetails.append("]"); - if (!params.useUserLanguageInfo) { - boostDetails.add(Explanation.noMatch( - "No User Language Demotion: " + userLangDetails.toString())); - } else { - boostDetails.add(Explanation.match( - (float) scoringData.userLangMult, - "[x] User LangMult: " + userLangDetails.toString())); - } - - // Age decay - String ageDecayDetails = String.format( - "age=%d seconds, slope=%.3f, base=%.1f, half-life=%.0f", - scoringData.tweetAgeInSeconds, params.ageDecaySlope, - params.ageDecayBase, params.ageDecayHalflife); - if (params.useAgeDecay) { - boostDetails.add(Explanation.match( - (float) scoringData.ageDecayMult, "[x] AgeDecay: " + ageDecayDetails)); - } else { - boostDetails.add(Explanation.match(1.0f, "Age decay disabled: " + ageDecayDetails)); - } - - // Score adjuster - boostDetails.add(Explanation.match(SCORE_ADJUSTER, "[x] score adjuster")); - - Explanation boostCombo = isHit - ? Explanation.match((float) scoringData.scoreAfterBoost, - "(MATCH) After Boosts and Demotions:", boostDetails) - : Explanation.noMatch("After Boosts and Demotions:", boostDetails); - - details.add(boostCombo); - } - - @Override - protected Explanation doExplain(float luceneQueryScore) throws IOException { - // Run the scorer again and get the explanation. - ExplanationWrapper explanation = new ExplanationWrapper(); - scoreInternal(luceneQueryScore, explanation); - return explanation.explanation; - } - - @Override - public void populateResultMetadataBasedOnScoringData( - ThriftSearchResultMetadataOptions options, - ThriftSearchResultMetadata metadata, - LinearScoringData data) throws IOException { - metadata.setResultType(searchResultType); - metadata.setScore(data.scoreReturned); - metadata.setFromUserId(data.fromUserId); - - if (data.isTrusted) { - metadata.setIsTrusted(true); - } - if (data.isFollow) { - metadata.setIsFollow(true); - } - if (data.skipReason != SkipReason.NOT_SKIPPED) { - metadata.setSkipped(true); - } - if ((data.isRetweet || (params.getInReplyToStatusId && data.isReply)) - && data.sharedStatusId != LinearScoringData.UNSET_SIGNAL_VALUE) { - metadata.setSharedStatusId(data.sharedStatusId); - } - if (data.hasCard) { - metadata.setCardType(data.cardType); - } - - // Optional features. Note: other optional metadata is populated by - // AbstractRelevanceCollector, not the scoring function. - - if (options.isGetLuceneScore()) { - metadata.setLuceneScore(data.luceneScore); - } - if (options.isGetReferencedTweetAuthorId() - && data.referenceAuthorId != LinearScoringData.UNSET_SIGNAL_VALUE) { - metadata.setReferencedTweetAuthorId(data.referenceAuthorId); - } - - if (options.isGetMediaBits()) { - metadata.setHasConsumerVideo(data.hasConsumerVideo); - metadata.setHasProVideo(data.hasProVideo); - metadata.setHasVine(data.hasVine); - metadata.setHasPeriscope(data.hasPeriscope); - boolean hasNativeVideo = - data.hasConsumerVideo || data.hasProVideo || data.hasVine || data.hasPeriscope; - metadata.setHasNativeVideo(hasNativeVideo); - metadata.setHasNativeImage(data.hasNativeImage); - } - - metadata - .setIsOffensive(data.isOffensive) - .setIsReply(data.isReply) - .setIsRetweet(data.isRetweet) - .setHasLink(data.hasUrl) - .setHasTrend(data.hasTrend) - .setHasMultipleHashtagsOrTrends(data.hasMultipleHashtagsOrTrends) - .setRetweetCount((int) data.retweetCountPostLog2) - .setFavCount((int) data.favCountPostLog2) - .setReplyCount((int) data.replyCountPostLog2) - .setEmbedsImpressionCount((int) data.embedsImpressionCount) - .setEmbedsUrlCount((int) data.embedsUrlCount) - .setVideoViewCount((int) data.videoViewCount) - .setResultType(searchResultType) - .setFromVerifiedAccount(data.isFromVerifiedAccount) - .setIsUserSpam(data.isUserSpam) - .setIsUserNSFW(data.isUserNSFW) - .setIsUserBot(data.isUserBot) - .setHasImage(data.hasImageUrl) - .setHasVideo(data.hasVideoUrl) - .setHasNews(data.hasNewsUrl) - .setHasCard(data.hasCard) - .setHasVisibleLink(data.hasVisibleLink) - .setParusScore(data.parusScore) - .setTextScore(data.textScore) - .setUserRep(data.userRep) - .setTokenAt140DividedByNumTokensBucket(data.tokenAt140DividedByNumTokensBucket); - - if (!metadata.isSetExtraMetadata()) { - metadata.setExtraMetadata(new ThriftSearchResultExtraMetadata()); - } - ThriftSearchResultExtraMetadata extraMetadata = metadata.getExtraMetadata(); - - // Promotion/Demotion features - extraMetadata.setUserLangScore(data.userLangMult) - .setHasDifferentLang(data.hasDifferentLang) - .setHasEnglishTweetAndDifferentUILang(data.hasEnglishTweetAndDifferentUILang) - .setHasEnglishUIAndDifferentTweetLang(data.hasEnglishUIAndDifferentTweetLang) - .setHasQuote(data.hasQuote) - .setQuotedCount((int) data.quotedCount) - .setWeightedRetweetCount((int) data.weightedRetweetCount) - .setWeightedReplyCount((int) data.weightedReplyCount) - .setWeightedFavCount((int) data.weightedFavCount) - .setWeightedQuoteCount((int) data.weightedQuoteCount) - .setQuerySpecificScore(data.querySpecificScore) - .setAuthorSpecificScore(data.authorSpecificScore) - .setRetweetCountV2((int) data.retweetCountV2) - .setFavCountV2((int) data.favCountV2) - .setReplyCountV2((int) data.replyCountV2) - .setIsComposerSourceCamera(data.isComposerSourceCamera) - .setFromBlueVerifiedAccount(data.isFromBlueVerifiedAccount); - - // Health model scores features - extraMetadata - .setToxicityScore(data.toxicityScore) - .setPBlockScore(data.pBlockScore) - .setPSpammyTweetScore(data.pSpammyTweetScore) - .setPReportedTweetScore(data.pReportedTweetScore) - .setSpammyTweetContentScore(data.spammyTweetContentScore) - .setExperimentalHealthModelScore1(data.experimentalHealthModelScore1) - .setExperimentalHealthModelScore2(data.experimentalHealthModelScore2) - .setExperimentalHealthModelScore3(data.experimentalHealthModelScore3) - .setExperimentalHealthModelScore4(data.experimentalHealthModelScore4); - - // Return all extra features for clients to consume. - if (options.isGetAllFeatures()) { - extraMetadata.setIsSensitiveContent(data.isSensitiveContent) - .setHasMultipleMediaFlag(data.hasMultipleMediaFlag) - .setProfileIsEggFlag(data.profileIsEggFlag) - .setIsUserNewFlag(data.isUserNewFlag) - .setNumMentions(data.numMentions) - .setNumHashtags(data.numHashtags) - .setLinkLanguage(data.linkLanguage) - .setPrevUserTweetEngagement(data.prevUserTweetEngagement); - } - - // Set features in new Feature Access API format, in the future this will be the only part - // needed in this method, we don't need to set any other metadata fields any more. - if (options.isReturnSearchResultFeatures()) { - // If the features are unset, and they were requested, then we can retrieve them. If they are - // already set, then we don't need to re-read the document features, and the reader - // is probably positioned over the wrong document so it will return incorrect results. - if (!extraMetadata.isSetFeatures()) { - // We ignore all features with default values when returning them in the response, - // because it saves a lot of network bandwidth. - ThriftSearchResultFeatures features = createFeaturesForDocument(data, true).getFeatures(); - extraMetadata.setFeatures(features); - } - - // The raw score may have changed since we created the features, so we should update it. - extraMetadata.getFeatures().getDoubleValues() - .put(ExternalTweetFeature.RAW_EARLYBIRD_SCORE.getId(), data.scoreFinal); - } - - metadata - .setIsSelfTweet(data.isSelfTweet) - .setIsUserAntiSocial(data.isUserAntiSocial); - } - - /** - * Create earlybird basic features and dervied features for current document. - * @return a FeatureHandler object where you can keep adding extra feature values, or you can - * call .getFeatures() on it to get a Thrift object to return. - */ - protected FeatureHandler createFeaturesForDocument( - LinearScoringData data, boolean ignoreDefaultValues) throws IOException { - ThriftSearchResultFeatures features = documentFeatures.getSearchResultFeatures(getSchema()); - if (!ignoreDefaultValues) { - setDefaultFeatureValues(features); - } - - // add derived features - return new FeatureHandler(features, ignoreDefaultValues) - .addDouble(ExternalTweetFeature.LUCENE_SCORE, data.luceneScore) - .addInt(ExternalTweetFeature.TWEET_AGE_IN_SECS, data.tweetAgeInSeconds) - .addBoolean(ExternalTweetFeature.IS_SELF_TWEET, data.isSelfTweet) - .addBoolean(ExternalTweetFeature.IS_FOLLOW_RETWEET, data.isFollow && data.isRetweet) - .addBoolean(ExternalTweetFeature.IS_TRUSTED_RETWEET, data.isTrusted && data.isRetweet) - .addBoolean(ExternalTweetFeature.AUTHOR_IS_FOLLOW, data.isFollow) - .addBoolean(ExternalTweetFeature.AUTHOR_IS_TRUSTED, data.isTrusted) - .addBoolean(ExternalTweetFeature.AUTHOR_IS_ANTISOCIAL, data.isUserAntiSocial) - .addBoolean(ExternalTweetFeature.HAS_DIFF_LANG, data.hasDifferentLang) - .addBoolean(ExternalTweetFeature.HAS_ENGLISH_TWEET_DIFF_UI_LANG, - data.hasEnglishTweetAndDifferentUILang) - .addBoolean(ExternalTweetFeature.HAS_ENGLISH_UI_DIFF_TWEET_LANG, - data.hasEnglishUIAndDifferentTweetLang) - .addDouble(ExternalTweetFeature.SEARCHER_LANG_SCORE, data.userLangMult) - .addDouble(ExternalTweetFeature.QUERY_SPECIFIC_SCORE, data.querySpecificScore) - .addDouble(ExternalTweetFeature.AUTHOR_SPECIFIC_SCORE, data.authorSpecificScore); - } - - /** - * Adds default values for most numeric features that do not have a value set yet in the given - * ThriftSearchResultFeatures instance. - * - * This method is needed because some models do not work properly with missing features. Instead, - * they expect all features to be present even if they are unset (their values are 0). - */ - protected void setDefaultFeatureValues(ThriftSearchResultFeatures features) { - for (Map.Entry entry - : getSchema().getSearchFeatureSchema().getEntries().entrySet()) { - int featureId = entry.getKey(); - ThriftSearchFeatureSchemaEntry schemaEntry = entry.getValue(); - if (shouldSetDefaultValueForFeature(schemaEntry.getFeatureType(), featureId)) { - switch (schemaEntry.getFeatureType()) { - case INT32_VALUE: - features.getIntValues().putIfAbsent(featureId, 0); - break; - case LONG_VALUE: - features.getLongValues().putIfAbsent(featureId, 0L); - break; - case DOUBLE_VALUE: - features.getDoubleValues().putIfAbsent(featureId, 0.0); - break; - default: - throw new IllegalArgumentException( - "Should set default values only for integer, long or double features. Instead, " - + "found feature " + featureId + " of type " + schemaEntry.getFeatureType()); - } - } - } - } - - protected void overrideFeatureValues(ThriftSearchResultFeatures features, - ThriftSearchResultFeatures overrideFeatures) { - LOG.info("Features before override {}", features); - if (overrideFeatures.isSetIntValues()) { - overrideFeatures.getIntValues().forEach(features::putToIntValues); - } - if (overrideFeatures.isSetLongValues()) { - overrideFeatures.getLongValues().forEach(features::putToLongValues); - } - if (overrideFeatures.isSetDoubleValues()) { - overrideFeatures.getDoubleValues().forEach(features::putToDoubleValues); - } - if (overrideFeatures.isSetBoolValues()) { - overrideFeatures.getBoolValues().forEach(features::putToBoolValues); - } - if (overrideFeatures.isSetStringValues()) { - overrideFeatures.getStringValues().forEach(features::putToStringValues); - } - if (overrideFeatures.isSetBytesValues()) { - overrideFeatures.getBytesValues().forEach(features::putToBytesValues); - } - if (overrideFeatures.isSetFeatureStoreDiscreteValues()) { - overrideFeatures.getFeatureStoreDiscreteValues().forEach( - features::putToFeatureStoreDiscreteValues); - } - if (overrideFeatures.isSetSparseBinaryValues()) { - overrideFeatures.getSparseBinaryValues().forEach(features::putToSparseBinaryValues); - } - if (overrideFeatures.isSetSparseContinuousValues()) { - overrideFeatures.getSparseContinuousValues().forEach(features::putToSparseContinuousValues); - } - if (overrideFeatures.isSetGeneralTensorValues()) { - overrideFeatures.getGeneralTensorValues().forEach(features::putToGeneralTensorValues); - } - if (overrideFeatures.isSetStringTensorValues()) { - overrideFeatures.getStringTensorValues().forEach(features::putToStringTensorValues); - } - LOG.info("Features after override {}", features); - } - - /** - * Check if a feature is eligible to have its default value automatically set when absent. - * We have a similar logic for building data record. - */ - private static boolean shouldSetDefaultValueForFeature( - ThriftSearchFeatureType type, int featureId) { - return ALLOWED_TYPES_FOR_DEFAULT_FEATURE_VALUES.contains(type) - && !NUMERIC_FEATURES_FOR_WHICH_DEFAULTS_SHOULD_NOT_BE_SET.contains(featureId) - && (ExternalTweetFeature.EARLYBIRD_INDEXED_FEATURE_IDS.contains(featureId) - || ExternalTweetFeature.EARLYBIRD_DERIVED_FEATURE_IDS.contains(featureId)); - } - - @Override - public void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - if (relevanceStats == null) { - return; - } - - LinearScoringData data = getScoringDataForCurrentDocument(); - - if (data.tweetAgeInSeconds > relevanceStats.getOldestScoredTweetAgeInSeconds()) { - relevanceStats.setOldestScoredTweetAgeInSeconds(data.tweetAgeInSeconds); - } - relevanceStats.setNumScored(relevanceStats.getNumScored() + 1); - if (data.scoreReturned == SKIP_HIT) { - relevanceStats.setNumSkipped(relevanceStats.getNumSkipped() + 1); - switch(data.skipReason) { - case ANTIGAMING: - relevanceStats.setNumSkippedForAntiGaming( - relevanceStats.getNumSkippedForAntiGaming() + 1); - break; - case LOW_REPUTATION: - relevanceStats.setNumSkippedForLowReputation( - relevanceStats.getNumSkippedForLowReputation() + 1); - break; - case LOW_TEXT_SCORE: - relevanceStats.setNumSkippedForLowTextScore( - relevanceStats.getNumSkippedForLowTextScore() + 1); - break; - case SOCIAL_FILTER: - relevanceStats.setNumSkippedForSocialFilter( - relevanceStats.getNumSkippedForSocialFilter() + 1); - break; - case LOW_FINAL_SCORE: - relevanceStats.setNumSkippedForLowFinalScore( - relevanceStats.getNumSkippedForLowFinalScore() + 1); - break; - case LOW_RETWEET_COUNT: - break; - default: - LOG.warn("Unknown SkipReason: " + data.skipReason); - } - } - - if (data.isFollow) { - relevanceStats.setNumFromDirectFollows(relevanceStats.getNumFromDirectFollows() + 1); - } - if (data.isTrusted) { - relevanceStats.setNumFromTrustedCircle(relevanceStats.getNumFromTrustedCircle() + 1); - } - if (data.isReply) { - relevanceStats.setNumReplies(relevanceStats.getNumReplies() + 1); - if (data.isTrusted) { - relevanceStats.setNumRepliesTrusted(relevanceStats.getNumRepliesTrusted() + 1); - } else if (!data.isFollow) { - relevanceStats.setNumRepliesOutOfNetwork(relevanceStats.getNumRepliesOutOfNetwork() + 1); - } - } - if (data.isSelfTweet) { - relevanceStats.setNumSelfTweets(relevanceStats.getNumSelfTweets() + 1); - } - if (data.hasImageUrl || data.hasVideoUrl) { - relevanceStats.setNumWithMedia(relevanceStats.getNumWithMedia() + 1); - } - if (data.hasNewsUrl) { - relevanceStats.setNumWithNews(relevanceStats.getNumWithNews() + 1); - } - if (data.isUserSpam) { - relevanceStats.setNumSpamUser(relevanceStats.getNumSpamUser() + 1); - } - if (data.isUserNSFW) { - relevanceStats.setNumOffensive(relevanceStats.getNumOffensive() + 1); - } - if (data.isUserBot) { - relevanceStats.setNumBot(relevanceStats.getNumBot() + 1); - } - } - - @VisibleForTesting - static final class ExplanationWrapper { - private Explanation explanation; - - public Explanation getExplanation() { - return explanation; - } - - @Override - public String toString() { - return explanation.toString(); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..79a6bfc0b546a4a66e3c21604dc28b3f03c41553 GIT binary patch literal 38235 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.java deleted file mode 100644 index bbe79cf84..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/LegacyScoreAccumulator.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import com.twitter.search.common.util.ml.prediction_engine.BaseLegacyScoreAccumulator; -import com.twitter.search.common.util.ml.prediction_engine.LightweightLinearModel; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.modeling.tweet_ranking.TweetScoringFeatures; - -/** - * Legacy score accumulator in Earlybird with specific features added. - * This class is created to avoid adding LinearScoringData as a dependency to search's common ML - * library. - * - * @deprecated This class is retired and we suggest to switch to SchemaBasedScoreAccumulator. - */ -@Deprecated -public class LegacyScoreAccumulator extends BaseLegacyScoreAccumulator { - /** - * Constructs with a model and LinearScoringData - */ - LegacyScoreAccumulator(LightweightLinearModel model) { - super(model); - } - - /** - * Update the accumulator score with features, after this function the score should already - * be computed. - * - * @deprecated This function is retired and we suggest to switch to updateScoresWithFeatures in - * SchemaBasedScoreAccumulator. - */ - @Override - @Deprecated - protected void updateScoreWithFeatures(LinearScoringData data) { - addContinuousFeature(TweetScoringFeatures.LUCENE_SCORE, data.luceneScore); - addContinuousFeature(TweetScoringFeatures.TEXT_SCORE, data.textScore); - addContinuousFeature(TweetScoringFeatures.TWEET_AGE_IN_SECONDS, data.tweetAgeInSeconds); - addContinuousFeature(TweetScoringFeatures.REPLY_COUNT, data.replyCountPostLog2); - addContinuousFeature(TweetScoringFeatures.RETWEET_COUNT, data.retweetCountPostLog2); - addContinuousFeature(TweetScoringFeatures.FAV_COUNT, data.favCountPostLog2); - addContinuousFeature(TweetScoringFeatures.REPLY_COUNT_V2, data.replyCountV2); - addContinuousFeature(TweetScoringFeatures.RETWEET_COUNT_V2, data.retweetCountV2); - addContinuousFeature(TweetScoringFeatures.FAV_COUNT_V2, data.favCountV2); - addContinuousFeature(TweetScoringFeatures.EMBEDS_IMPRESSION_COUNT, - data.getEmbedsImpressionCount(false)); - addContinuousFeature(TweetScoringFeatures.EMBEDS_URL_COUNT, data.getEmbedsUrlCount(false)); - addContinuousFeature(TweetScoringFeatures.VIDEO_VIEW_COUNT, data.getVideoViewCount(false)); - addContinuousFeature(TweetScoringFeatures.QUOTED_COUNT, data.quotedCount); - addContinuousFeature(TweetScoringFeatures.WEIGHTED_RETWEET_COUNT, data.weightedRetweetCount); - addContinuousFeature(TweetScoringFeatures.WEIGHTED_REPLY_COUNT, data.weightedReplyCount); - addContinuousFeature(TweetScoringFeatures.WEIGHTED_FAV_COUNT, data.weightedFavCount); - addContinuousFeature(TweetScoringFeatures.WEIGHTED_QUOTE_COUNT, data.weightedQuoteCount); - addBinaryFeature(TweetScoringFeatures.HAS_URL, data.hasUrl); - addBinaryFeature(TweetScoringFeatures.HAS_CARD, data.hasCard); - addBinaryFeature(TweetScoringFeatures.HAS_VINE, data.hasVine); - addBinaryFeature(TweetScoringFeatures.HAS_PERISCOPE, data.hasPeriscope); - addBinaryFeature(TweetScoringFeatures.HAS_NATIVE_IMAGE, data.hasNativeImage); - addBinaryFeature(TweetScoringFeatures.HAS_IMAGE_URL, data.hasImageUrl); - addBinaryFeature(TweetScoringFeatures.HAS_NEWS_URL, data.hasNewsUrl); - addBinaryFeature(TweetScoringFeatures.HAS_VIDEO_URL, data.hasVideoUrl); - addBinaryFeature(TweetScoringFeatures.HAS_CONSUMER_VIDEO, data.hasConsumerVideo); - addBinaryFeature(TweetScoringFeatures.HAS_PRO_VIDEO, data.hasProVideo); - addBinaryFeature(TweetScoringFeatures.HAS_QUOTE, data.hasQuote); - addBinaryFeature(TweetScoringFeatures.HAS_TREND, data.hasTrend); - addBinaryFeature(TweetScoringFeatures.HAS_MULTIPLE_HASHTAGS_OR_TRENDS, - data.hasMultipleHashtagsOrTrends); - addBinaryFeature(TweetScoringFeatures.IS_OFFENSIVE, data.isOffensive); - addBinaryFeature(TweetScoringFeatures.IS_REPLY, data.isReply); - addBinaryFeature(TweetScoringFeatures.IS_RETWEET, data.isRetweet); - addBinaryFeature(TweetScoringFeatures.IS_SELF_TWEET, data.isSelfTweet); - addBinaryFeature(TweetScoringFeatures.IS_FOLLOW_RETWEET, data.isRetweet & data.isFollow); - addBinaryFeature(TweetScoringFeatures.IS_TRUSTED_RETWEET, data.isRetweet & data.isTrusted); - addContinuousFeature(TweetScoringFeatures.QUERY_SPECIFIC_SCORE, data.querySpecificScore); - addContinuousFeature(TweetScoringFeatures.AUTHOR_SPECIFIC_SCORE, data.authorSpecificScore); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_FOLLOW, data.isFollow); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_TRUSTED, data.isTrusted); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_VERIFIED, data.isFromVerifiedAccount); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_NSFW, data.isUserNSFW); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_SPAM, data.isUserSpam); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_BOT, data.isUserBot); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_ANTISOCIAL, data.isUserAntiSocial); - addContinuousFeature(TweetScoringFeatures.AUTHOR_REPUTATION, data.userRep); - addContinuousFeature(TweetScoringFeatures.SEARCHER_LANG_SCORE, data.userLangMult); - addBinaryFeature(TweetScoringFeatures.HAS_DIFFERENT_LANG, data.hasDifferentLang); - addBinaryFeature(TweetScoringFeatures.HAS_ENGLISH_TWEET_AND_DIFFERENT_UI_LANG, - data.hasEnglishTweetAndDifferentUILang); - addBinaryFeature(TweetScoringFeatures.HAS_ENGLISH_UI_AND_DIFFERENT_TWEET_LANG, - data.hasEnglishUIAndDifferentTweetLang); - addBinaryFeature(TweetScoringFeatures.IS_SENSITIVE_CONTENT, data.isSensitiveContent); - addBinaryFeature(TweetScoringFeatures.HAS_MULTIPLE_MEDIA, data.hasMultipleMediaFlag); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_PROFILE_EGG, data.profileIsEggFlag); - addBinaryFeature(TweetScoringFeatures.AUTHOR_IS_NEW, data.isUserNewFlag); - addContinuousFeature(TweetScoringFeatures.MENTIONS_COUNT, data.numMentions); - addContinuousFeature(TweetScoringFeatures.HASHTAGS_COUNT, data.numHashtags); - addContinuousFeature(TweetScoringFeatures.LINK_LANGUAGE_ID, data.linkLanguage); - addContinuousFeature(TweetScoringFeatures.LANGUAGE_ID, data.tweetLangId); - addBinaryFeature(TweetScoringFeatures.HAS_VISIBLE_LINK, data.hasVisibleLink); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/LinearScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/LinearScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..07d0f5823bebaf5dd0431de87a242fa7fa27bc5b GIT binary patch literal 39303 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

    Ivn}t87+W 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 details) throws IOException { - // 1. Linear components - final List linearDetails = Lists.newArrayList(); - addLinearElementExplanation( - linearDetails, "[LuceneQueryScore]", - params.luceneWeight, scoringData.luceneScore, scoringData.luceneContrib); - if (scoringData.hasCard) { - if (scoringData.cardAuthorMatchBoostApplied) { - linearDetails.add(Explanation.match( - (float) params.cardAuthorMatchBoosts[scoringData.cardType], - "[x] card author match boost")); - } - if (scoringData.cardDescriptionMatchBoostApplied) { - linearDetails.add(Explanation.match( - (float) params.cardDescriptionMatchBoosts[scoringData.cardType], - "[x] card description match boost")); - } - if (scoringData.cardDomainMatchBoostApplied) { - linearDetails.add(Explanation.match( - (float) params.cardDomainMatchBoosts[scoringData.cardType], - "[x] card domain match boost")); - } - if (scoringData.cardTitleMatchBoostApplied) { - linearDetails.add(Explanation.match( - (float) params.cardTitleMatchBoosts[scoringData.cardType], - "[x] card title match boost")); - } - } - addLinearElementExplanation( - linearDetails, "reputation", - params.reputationWeight, scoringData.userRep, scoringData.reputationContrib); - addLinearElementExplanation( - linearDetails, "text score", - params.textScoreWeight, scoringData.textScore, scoringData.textScoreContrib); - addLinearElementExplanation( - linearDetails, "reply count (log2)", - params.replyWeight, scoringData.replyCountPostLog2, scoringData.replyContrib); - addLinearElementExplanation( - linearDetails, "multi reply", - params.multipleReplyWeight, - getUnscaledReplyCountFeatureValue() > params.multipleReplyMinVal ? 1 : 0, - scoringData.multipleReplyContrib); - addLinearElementExplanation( - linearDetails, "retweet count (log2)", - params.retweetWeight, scoringData.retweetCountPostLog2, scoringData.retweetContrib); - addLinearElementExplanation( - linearDetails, "fav count (log2)", - params.favWeight, scoringData.favCountPostLog2, scoringData.favContrib); - addLinearElementExplanation( - linearDetails, "parus score", - params.parusWeight, scoringData.parusScore, scoringData.parusContrib); - for (int i = 0; i < LinearScoringData.MAX_OFFLINE_EXPERIMENTAL_FIELDS; i++) { - if (params.rankingOfflineExpWeights[i] != LinearScoringParams.DEFAULT_FEATURE_WEIGHT) { - addLinearElementExplanation(linearDetails, - "ranking exp score offline experimental #" + i, - params.rankingOfflineExpWeights[i], scoringData.offlineExpFeatureValues[i], - scoringData.offlineExpFeatureContributions[i]); - } - } - addLinearElementExplanation(linearDetails, - "embedded tweet impression count", - params.embedsImpressionWeight, scoringData.getEmbedsImpressionCount(false), - scoringData.embedsImpressionContrib); - addLinearElementExplanation(linearDetails, - "embedded tweet url count", - params.embedsUrlWeight, scoringData.getEmbedsUrlCount(false), - scoringData.embedsUrlContrib); - addLinearElementExplanation(linearDetails, - "video view count", - params.videoViewWeight, scoringData.getVideoViewCount(false), - scoringData.videoViewContrib); - addLinearElementExplanation(linearDetails, - "quoted count", - params.quotedCountWeight, scoringData.quotedCount, scoringData.quotedContrib); - - addLinearElementExplanation( - linearDetails, "has url", params.urlWeight, scoringData.hasUrl ? 1.0 : 0.0, - scoringData.hasUrlContrib); - - addLinearElementExplanation( - linearDetails, "is reply", params.isReplyWeight, - scoringData.isReply ? 1.0 : 0.0, scoringData.isReplyContrib); - addLinearElementExplanation( - linearDetails, "is follow retweet", params.followRetweetWeight, - scoringData.isRetweet && scoringData.isFollow ? 1.0 : 0.0, - scoringData.isFollowRetweetContrib); - addLinearElementExplanation( - linearDetails, "is trusted retweet", params.trustedRetweetWeight, - scoringData.isRetweet && scoringData.isTrusted ? 1.0 : 0.0, - scoringData.isTrustedRetweetContrib); - - if (scoringData.querySpecificScore != 0.0) { - linearDetails.add(Explanation.match((float) scoringData.querySpecificScore, - "[+] query specific score adjustment")); - } - if (scoringData.authorSpecificScore != 0.0) { - linearDetails.add(Explanation.match((float) scoringData.authorSpecificScore, - "[+] author specific score adjustment")); - } - - - Explanation linearCombo = isHit - ? Explanation.match((float) scoringData.scoreBeforeBoost, - "(MATCH) Linear components, sum of:", linearDetails) - : Explanation.noMatch("Linear components, sum of:", linearDetails); - - - details.add(linearCombo); - } - - private void addLinearElementExplanation(List explanation, - String name, - double weight, - double componentValue, - double contrib) { - if (contrib == 0.0) { - return; - } - explanation.add( - Explanation.match((float) contrib, - String.format("[+] %s=%.3f weight=%.3f", name, componentValue, weight))); - } - - private double getUnscaledReplyCountFeatureValue() throws IOException { - byte featureValue = (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.REPLY_COUNT); - return MutableFeatureNormalizers.BYTE_NORMALIZER.unnormLowerBound(featureValue); - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/ModelBasedScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/ModelBasedScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..ea769749463bea4ad5bd284dd4b7f3c549989543 GIT binary patch literal 38655 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 eJ}dDD6Wi+@ni{hJ7WCDscp(medBmoDJ^L5d+D models = rankingParams.getSelectedModels(); - - selectedModels = new SelectedModel[models.size()]; - int numSchemaBased = 0; - int i = 0; - for (Map.Entry nameAndWeight : models.entrySet()) { - Optional model = - scoringModelsManager.getModel(nameAndWeight.getKey()); - if (!model.isPresent()) { - throw new ClientException(String.format( - "Scoring function is MODEL_BASED. Selected model '%s' not found", - nameAndWeight.getKey())); - } - selectedModels[i] = - new SelectedModel(nameAndWeight.getKey(), nameAndWeight.getValue(), model.get()); - - if (selectedModels[i].model.isSchemaBased()) { - ++numSchemaBased; - NUM_SCHEMA_BASED_MODELS.increment(); - } else { - NUM_LEGACY_MODELS.increment(); - } - ++i; - } - - // We should either see all models schema-based, or none of them so, if this is not the case, - // we log an error message and fall back to use just the first model, whatever it is. - if (numSchemaBased > 0 && numSchemaBased != selectedModels.length) { - MIXED_MODEL_TYPES.increment(); - throw new ClientException( - "You cannot mix schema-based and non-schema-based models in the same request, " - + "models are: " + models.keySet()); - } - - isSchemaBased = selectedModels[0].model.isSchemaBased(); - useLogitScore = rankingParams.isUseLogitScore(); - } - - @Override - protected double computeScore(LinearScoringData data, boolean forExplanation) throws IOException { - ThriftSearchResultFeatures features = - isSchemaBased ? createFeaturesForDocument(data, false).getFeatures() : null; - - double score = 0; - for (SelectedModel selectedModel : selectedModels) { - double modelScore = isSchemaBased - ? new SchemaBasedScoreAccumulator(selectedModel.model).scoreWith(features, useLogitScore) - : new LegacyScoreAccumulator(selectedModel.model).scoreWith(data, useLogitScore); - score += selectedModel.weight * modelScore; - } - - return score; - } - - @Override - protected void generateExplanationForScoring( - LinearScoringData scoringData, boolean isHit, List details) throws IOException { - boolean schemaBased = selectedModels[0].model.isSchemaBased(); - ThriftSearchResultFeatures features = - schemaBased ? createFeaturesForDocument(scoringData, false).getFeatures() : null; - - // 1. Model-based score - final List modelExplanations = Lists.newArrayList(); - float finalScore = 0; - for (SelectedModel selectedModel : selectedModels) { - double modelScore = schemaBased - ? new SchemaBasedScoreAccumulator(selectedModel.model).scoreWith(features, useLogitScore) - : new LegacyScoreAccumulator(selectedModel.model).scoreWith(scoringData, useLogitScore); - float weightedScore = (float) (selectedModel.weight * modelScore); - details.add(Explanation.match( - weightedScore, String.format("model=%s score=%.6f weight=%.3f useLogitScore=%s", - selectedModel.name, modelScore, selectedModel.weight, useLogitScore))); - finalScore += weightedScore; - } - - details.add(Explanation.match( - finalScore, String.format("Total model-based score (hit=%s)", isHit), modelExplanations)); - } - - private static final class SelectedModel { - public final String name; - public final double weight; - public final LightweightLinearModel model; - - private SelectedModel(String name, double weight, LightweightLinearModel model) { - this.name = name; - this.weight = weight; - this.model = model; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/RelevanceQuery.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/RelevanceQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..6ec15bd5b1d747bac4c66b4d8df1dceb4dbf59f0 GIT binary patch literal 38424 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 terms) { - this.luceneWeight.extractTerms(terms); - } - - - @Override - public Explanation explain(LeafReaderContext context, int doc) throws IOException { - return explain(context, doc, null); - } - - /** - * Returns an explanation of the scoring for the given document. - * - * @param context The context of the reader that returned this document. - * @param doc The document. - * @param fieldHitAttribution Per-hit field attribution information. - * @return An explanation of the scoring for the given document. - */ - public Explanation explain(LeafReaderContext context, int doc, - @Nullable FieldHitAttribution fieldHitAttribution) throws IOException { - - Explanation luceneExplanation = Explanation.noMatch("LuceneQuery explain skipped"); - if (!ignoreLuceneQueryScoreExplanation) { - // get Lucene score - try { - luceneExplanation = luceneWeight.explain(context, doc); - } catch (Exception e) { - // We sometimes see exceptions resulting from term queries that do not store - // utf8-text, which TermQuery.toString() assumes. Catch here and allow at least - // scoring function explanations to be returned. - LOG.error("Exception in explain", e); - luceneExplanation = Explanation.noMatch("LuceneQuery explain failed"); - } - } - - Explanation scoringFunctionExplanation; - scoringFunction.setFieldHitAttribution(fieldHitAttribution); - scoringFunctionExplanation = scoringFunction.explain( - context.reader(), doc, luceneExplanation.getValue().floatValue()); - - // just add a wrapper for a better structure of the final explanation - Explanation luceneExplanationWrapper = Explanation.match( - luceneExplanation.getValue(), "LuceneQuery", luceneExplanation); - - return Explanation.match(scoringFunctionExplanation.getValue(), "RelevanceQuery", - scoringFunctionExplanation, luceneExplanationWrapper); - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - return luceneWeight.scorer(context); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return luceneWeight.isCacheable(ctx); - } - } - - @Override - public int hashCode() { - return (luceneQuery == null ? 0 : luceneQuery.hashCode()) - + (scoringFunction == null ? 0 : scoringFunction.hashCode()) * 13; - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof RelevanceQuery)) { - return false; - } - - RelevanceQuery query = RelevanceQuery.class.cast(obj); - return Objects.equals(luceneQuery, query.luceneQuery) - && Objects.equals(scoringFunction, query.scoringFunction); - } - - @Override - public String toString(String field) { - return "RelevanceQuery[q=" + luceneQuery.toString(field) + "]"; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..8df83fb063c7d3b650ca7fb044ab9b6f493c7b3c GIT binary patch literal 39354 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 AGynhq literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.java deleted file mode 100644 index deae8ba66..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/RetweetBasedTopTweetsScoringFunction.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import java.io.IOException; - -import org.apache.lucene.search.Explanation; - -import com.twitter.search.common.relevance.features.MutableFeatureNormalizers; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -/** - * A toptweets query cache index selection scoring function that is based purely on retweet counts. - * The goal of this scoring functon is to deprecate itweet score in entirety. - * - * Once all legacy itweet scores are drained from existing earlybird index, new parus score replaces - * existing itweet score position, then this class will be deprecated, a new scoring function - * using parus score shall replace this. - * - * this scoring function is only used in Query Cache for marking top tweets - * in the background. When searched, those tweets are still ranked with linear or model-based - * scoring function. - * - */ -public class RetweetBasedTopTweetsScoringFunction extends ScoringFunction { - private static final double DEFAULT_RECENCY_SCORE_FRACTION = 0.1; - private static final double DEFAULT_SIGMOID_APLHA = 0.008; - private static final int DEFAULT_RECENCY_CENTER_MINUTES = 1080; - - // if you update the default cut off, make sure you update the query cache filter in - // querycache.yml - // - // we know currently each time slice, each partition has about 10K entries in toptweets query - // cache. These are unique tweets. Looking at retweet updates, each time slice, each partition has - // about 650K unique tweets that received retweet. To create roughly similar number of entries in - // query cache, we need top 2% of such tweets, and that sets to min retweet count to 4. - // In this linear scoring function, we will rescale retweet count to [0, 1] range, - // with an input range of [0, 20]. Given the realtime factor's weight of 0.1, that give our - // minimal retweet score threshold to: 4/20 * 0.9 = 0.18. - // Testing on prod showed much higher volume due to the generous setting of max value of 20, - // (highest we have seen is 14). Adjusted to 0.21 which gave us similar volume. - private static final double DEFAULT_CUT_OFF_SCORE = 0.21; - - // Normalize retweet counts from [0, 20] range to [0, 1] range - private static final double MAX_RETWEET_COUNT = 20.0; - private static final double MIN_USER_REPUTATION = 40.0; // matches itweet system threshold - - /** - * The scores for the retweet based top tweets have to be in the [0, 1] interval. So we can't use - * SKIP_HIT as the lowest possible score, and instead have to use Float.MIN_VALUE. - * - * It's OK to use different values for these constants, because they do not interfere with each - * other. This constant is only used in RetweetBasedTopTweetsScoringFunction, which is only used - * to filter the hits for the [score_filter retweets minScore maxScore] operator. So the scores - * returned by RetweetBasedTopTweetsScoringFunction.score() do not have any impact on the final - * hit score. - * - * See EarlybirdLuceneQueryVisitor.visitScoredFilterOperator() and ScoreFilterQuery for more details. - */ - private static final float RETWEET_BASED_TOP_TWEETS_LOWEST_SCORE = Float.MIN_VALUE; - - private final double recencyScoreFraction; - private final double sigmoidAlpha; - private final double cutOffScore; - private final int recencyCenterMinutes; - private final double maxRecency; - - private final int currentTimeSeconds; - - private ThriftSearchResultMetadata metadata = null; - private double score; - private double retweetCount; - - public RetweetBasedTopTweetsScoringFunction(ImmutableSchemaInterface schema) { - this(schema, DEFAULT_RECENCY_SCORE_FRACTION, - DEFAULT_SIGMOID_APLHA, - DEFAULT_CUT_OFF_SCORE, - DEFAULT_RECENCY_CENTER_MINUTES); - } - - /** - * Creates a no decay scoring function (used by top archive). - * Otherwise same as default constructor. - * @param nodecay If no decay is set to true. Alpha is set to 0.0. - */ - public RetweetBasedTopTweetsScoringFunction(ImmutableSchemaInterface schema, boolean nodecay) { - this(schema, DEFAULT_RECENCY_SCORE_FRACTION, - nodecay ? 0.0 : DEFAULT_SIGMOID_APLHA, - DEFAULT_CUT_OFF_SCORE, - DEFAULT_RECENCY_CENTER_MINUTES); - } - - public RetweetBasedTopTweetsScoringFunction(ImmutableSchemaInterface schema, - double recencyScoreFraction, double sigmoidAlpha, - double cutOffScore, int recencyCenterMinutes) { - super(schema); - this.recencyScoreFraction = recencyScoreFraction; - this.sigmoidAlpha = sigmoidAlpha; - this.cutOffScore = cutOffScore; - this.recencyCenterMinutes = recencyCenterMinutes; - this.maxRecency = computeSigmoid(0); - this.currentTimeSeconds = (int) (System.currentTimeMillis() / 1000); - } - - @Override - protected float score(float luceneQueryScore) throws IOException { - // Reset the data for each tweet!!! - metadata = null; - if (documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_OFFENSIVE_FLAG) - || (documentFeatures.getFeatureValue(EarlybirdFieldConstant.USER_REPUTATION) - < MIN_USER_REPUTATION)) { - score = RETWEET_BASED_TOP_TWEETS_LOWEST_SCORE; - } else { - // Note that here we want the post log2 value, as the MAX_RETWEET_COUNT was actually - // set up for that. - retweetCount = MutableFeatureNormalizers.BYTE_NORMALIZER.unnormAndLog2( - (byte) documentFeatures.getFeatureValue(EarlybirdFieldConstant.RETWEET_COUNT)); - final double recencyScore = computeTopTweetRecencyScore(); - - score = (retweetCount / MAX_RETWEET_COUNT) * (1 - recencyScoreFraction) - + recencyScoreFraction * recencyScore; - - if (score < this.cutOffScore) { - score = RETWEET_BASED_TOP_TWEETS_LOWEST_SCORE; - } - } - - return (float) score; - } - - private double computeSigmoid(double x) { - return 1.0f / (1.0f + Math.exp(sigmoidAlpha * (x - recencyCenterMinutes))); - } - - private double computeTopTweetRecencyScore() { - double diffMinutes = - Math.max(0, currentTimeSeconds - timeMapper.getTime(getCurrentDocID())) / 60.0; - return computeSigmoid(diffMinutes) / maxRecency; - } - - @Override - protected Explanation doExplain(float luceneScore) { - return null; - } - - @Override - public ThriftSearchResultMetadata getResultMetadata(ThriftSearchResultMetadataOptions options) { - if (metadata == null) { - metadata = new ThriftSearchResultMetadata() - .setResultType(ThriftSearchResultType.POPULAR) - .setPenguinVersion(EarlybirdConfig.getPenguinVersionByte()); - metadata.setRetweetCount((int) retweetCount); - metadata.setScore(score); - } - return metadata; - } - - @Override - public void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..d0885b9345796a51173bebd6ec5ca1c68321198c GIT binary patch literal 39440 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.java deleted file mode 100644 index c2b1a4deb..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunction.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import java.io.IOException; -import java.util.List; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.search.Explanation; - -import com.twitter.common.collections.Pair; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.features.thrift.ThriftSearchResultFeatures; -import com.twitter.search.common.query.HitAttributeHelper; -import com.twitter.search.common.relevance.features.EarlybirdDocumentFeatures; -import com.twitter.search.common.results.thriftjava.FieldHitAttribution; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.TimeMapper; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; -import com.twitter.search.queryparser.query.Query; - -/** - * Defines a ranking function which computes the score of a document that matches a query. - */ -public abstract class ScoringFunction { - /** - * Returned by a {@link #score(int, float)} to indicate that a hit should be scored below all. - * - * We have some equality tests like: - * "if (score == ScoringFunction.SKIP_HIT) {...}" (DefaultScoringFunction#updateRelevanceStats) - * We might also have double to float casts. - * - * Such castings seem to work with the equality test, but there might corner cases when casting - * this float value to a double (and back) might not work properly. - * - * If possible, we should choose a constant that is not in the valid score range. Then we can - * turn the float equality tests into Math.abs(...) < EPSILON tests. - */ - public static final float SKIP_HIT = -Float.MAX_VALUE; - - private final ImmutableSchemaInterface schema; - - // The current doc ID and the reader for the current segment should be private, because we don't - // want sub-classes to incorrectly update them. The doc ID should only be updated by the score() - // and explain() methods, and the reader should only be updated by the setNextReader() method. - private int currentDocID = -1; - - protected DocIDToTweetIDMapper tweetIDMapper = null; - protected TimeMapper timeMapper = null; - protected EarlybirdDocumentFeatures documentFeatures; - - protected int debugMode = 0; - protected HitAttributeHelper hitAttributeHelper; - protected Query query; - - protected FieldHitAttribution fieldHitAttribution; - - public ScoringFunction(ImmutableSchemaInterface schema) { - this.schema = Preconditions.checkNotNull(schema); - } - - protected ImmutableSchemaInterface getSchema() { - return schema; - } - - /** - * Updates the reader that will be used to retrieve the tweet IDs and creation times associated - * with scored doc IDs, as well as the values for various CSFs. Should be called every time the - * searcher starts searching in a new segment. - */ - public void setNextReader(EarlybirdIndexSegmentAtomicReader reader) throws IOException { - tweetIDMapper = reader.getSegmentData().getDocIDToTweetIDMapper(); - timeMapper = reader.getSegmentData().getTimeMapper(); - documentFeatures = new EarlybirdDocumentFeatures(reader); - initializeNextSegment(reader); - } - - public void setHitAttributeHelperAndQuery(HitAttributeHelper newHitAttributeHelper, - Query parsedQuery) { - this.hitAttributeHelper = newHitAttributeHelper; - this.query = parsedQuery; - } - - public void setFieldHitAttribution(FieldHitAttribution fieldHitAttribution) { - this.fieldHitAttribution = fieldHitAttribution; - } - - public void setDebugMode(int debugMode) { - this.debugMode = debugMode; - } - - /** - * Allow scoring functions to perform more per-segment-specific setup. - */ - protected void initializeNextSegment(EarlybirdIndexSegmentAtomicReader reader) - throws IOException { - // Noop by default - } - - // Updates the current document ID and advances all NumericDocValues to this doc ID. - private void setCurrentDocID(int currentDocID) throws IOException { - this.currentDocID = currentDocID; - documentFeatures.advance(currentDocID); - } - - /** - * Returns the current doc ID stored in this scoring function. - */ - public int getCurrentDocID() { - return currentDocID; - } - - /** - * Compute the score for the current hit. This is not expected to be thread safe. - * - * @param internalDocID internal id of the matching hit - * @param luceneQueryScore the score that lucene's text query computed for this hit - */ - public float score(int internalDocID, float luceneQueryScore) throws IOException { - setCurrentDocID(internalDocID); - return score(luceneQueryScore); - } - - /** - * Compute the score for the current hit. This is not expected to be thread safe. - * - * @param luceneQueryScore the score that lucene's text query computed for this hit - */ - protected abstract float score(float luceneQueryScore) throws IOException; - - /** Returns an explanation for the given hit. */ - public final Explanation explain(IndexReader reader, int internalDocID, float luceneScore) - throws IOException { - setNextReader((EarlybirdIndexSegmentAtomicReader) reader); - setCurrentDocID(internalDocID); - return doExplain(luceneScore); - } - - /** Returns an explanation for the current document. */ - protected abstract Explanation doExplain(float luceneScore) throws IOException; - - /** - * Returns the scoring metadata for the current doc ID. - */ - public ThriftSearchResultMetadata getResultMetadata(ThriftSearchResultMetadataOptions options) - throws IOException { - ThriftSearchResultMetadata metadata = new ThriftSearchResultMetadata(); - metadata.setResultType(ThriftSearchResultType.RELEVANCE); - metadata.setPenguinVersion(EarlybirdConfig.getPenguinVersionByte()); - metadata.setLanguage(ThriftLanguage.findByValue( - (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.LANGUAGE))); - metadata.setSignature( - (int) documentFeatures.getFeatureValue(EarlybirdFieldConstant.TWEET_SIGNATURE)); - metadata.setIsNullcast(documentFeatures.isFlagSet(EarlybirdFieldConstant.IS_NULLCAST_FLAG)); - return metadata; - } - - /** - * Updates the given ThriftSearchResultsRelevanceStats instance based on the scoring metadata for - * the current doc ID. - */ - public abstract void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats); - - /** - * Score a list of hits. Not thread safe. - */ - public float[] batchScore(List hits) throws IOException { - throw new UnsupportedOperationException("This operation (batchScore) is not implemented!"); - } - - /** - * Collect the features and CSFs for the current document. Used for scoring and generating the - * returned metadata. - */ - public Pair collectFeatures( - float luceneQueryScore) throws IOException { - throw new UnsupportedOperationException("This operation (collectFeatures) is not implemented!"); - } - - /** - * Implement this function to populate the result metadata based on the given scoring data. - * Otherwise, this is a no-op. - * - * Scoring functions that implement this should also implement getScoringData(). - */ - public void populateResultMetadataBasedOnScoringData( - ThriftSearchResultMetadataOptions options, - ThriftSearchResultMetadata metadata, - LinearScoringData data) throws IOException { - // Make sure that the scoring data passed in is null because getScoringDataForCurrentDocument() - // returns null by default and if a subclass overrides one of these two methods, it should - // override both. - Preconditions.checkState(data == null, "LinearScoringData should be null"); - } - - /** - * This should only be called at hit collection time because it relies on the internal doc id. - * - * Scoring functions that implement this should also implement the function - * populateResultMetadataBasedOnScoringData(). - */ - public LinearScoringData getScoringDataForCurrentDocument() { - return null; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunctionProvider.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/ScoringFunctionProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..9a893ee339a4a941abb654fb220c4fc924e617f8 GIT binary patch literal 38986 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 tweepCredThreshold - || tweepcred == (int) RelevanceSignalConstants.UNSET_REPUTATION_SENTINEL) { - return NOT_SPAM_SCORE; - } - - double retweetCount = - documentFeatures.getUnnormalizedFeatureValue(EarlybirdFieldConstant.RETWEET_COUNT); - double replyCount = - documentFeatures.getUnnormalizedFeatureValue(EarlybirdFieldConstant.REPLY_COUNT); - double favoriteCount = - documentFeatures.getUnnormalizedFeatureValue(EarlybirdFieldConstant.FAVORITE_COUNT); - - // If the tweet has enough engagements, do not mark it as spam. - if (retweetCount + replyCount + favoriteCount >= ENGAGEMENTS_NO_FILTER) { - return NOT_SPAM_SCORE; - } - - return SPAM_SCORE; - } - - @Override - protected Explanation doExplain(float luceneScore) { - return null; - } - - @Override - public ThriftSearchResultMetadata getResultMetadata(ThriftSearchResultMetadataOptions options) { - return null; - } - - @Override - public void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.docx new file mode 100644 index 0000000000000000000000000000000000000000..8eccee1e775a67b474a684044c4ef747e5e5a9ed GIT binary patch literal 37459 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 L0<*`RUJwre`cDMF literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.java deleted file mode 100644 index 67df06d95..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/SparseTensor.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -// Ideally, this part should live somewhere in the Cortex common -// code. Today, it is not possible to create -// a `SparseTensor` that relies only on ByteBuffer. -public class SparseTensor { - - private ByteBuffer sparseIndices; - private ByteBuffer sparseValues; - private ByteBuffer sparseShape; - - private int numDocs; - private final long[] sparseShapeShapeDimension = new long[] {2L}; - private final long inputBitSize = 1 << 63; - - private long numRecordsSeen = 0; - private final long numFeatures; - private int numValuesSeen; - - public SparseTensor(int numDocs, int numFeatures) { - this.numDocs = numDocs; - this.numFeatures = (long) numFeatures; - this.sparseValues = - ByteBuffer - .allocate(numFeatures * numDocs * Float.BYTES) - .order(ByteOrder.LITTLE_ENDIAN); - this.sparseIndices = - ByteBuffer - .allocate(2 * numFeatures * numDocs * Long.BYTES) - .order(ByteOrder.LITTLE_ENDIAN); - this.sparseShape = - ByteBuffer - .allocate(2 * Long.BYTES) - .order(ByteOrder.LITTLE_ENDIAN); - } - - public void incNumRecordsSeen() { - numRecordsSeen++; - } - - /** - * Adds the given value to this tensor. - */ - public void addValue(long featureId, float value) { - sparseValues.putFloat(value); - sparseIndices.putLong(numRecordsSeen); - sparseIndices.putLong(featureId); - numValuesSeen++; - } - - public ByteBuffer getSparseValues() { - sparseValues.limit(numValuesSeen * Float.BYTES); - sparseValues.rewind(); - return sparseValues; - } - - public long[] getSparseValuesShape() { - return new long[] {numValuesSeen}; - } - - public long[] getSparseIndicesShape() { - return new long[] {numValuesSeen, 2L}; - } - - public long[] getSparseShapeShape() { - return sparseShapeShapeDimension; - } - - public ByteBuffer getSparseIndices() { - sparseIndices.limit(2 * numValuesSeen * Long.BYTES); - sparseIndices.rewind(); - return sparseIndices; - } - - /** - * Returns the sparse shape for this tensor. - */ - public ByteBuffer getSparseShape() { - sparseShape.putLong(numRecordsSeen); - sparseShape.putLong(inputBitSize); - sparseShape.rewind(); - return sparseShape; - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..3f4aa784ed702a8f803025c388f9dddeba33d433 GIT binary patch literal 40670 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 c*A%rSw#x4Kur(u^IyOI2bIc?@c;k- literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.java deleted file mode 100644 index 497f4bbc0..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TensorflowBasedScoringFunction.java +++ /dev/null @@ -1,339 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import java.io.IOException; -import java.nio.FloatBuffer; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -import org.apache.lucene.search.Explanation; -import org.tensorflow.Tensor; - -import com.twitter.common.collections.Pair; -import com.twitter.search.common.constants.thriftjava.ThriftQuerySource; -import com.twitter.search.common.features.EarlybirdRankingDerivedFeature; -import com.twitter.search.common.features.FeatureHandler; -import com.twitter.search.common.features.thrift.ThriftSearchResultFeatures; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.util.ml.tensorflow_engine.TensorflowModelsManager; -import com.twitter.search.earlybird.EarlybirdSearcher; -import com.twitter.search.earlybird.common.userupdates.UserTable; -import com.twitter.search.earlybird.exception.ClientException; -import com.twitter.search.earlybird.search.AntiGamingFilter; -import com.twitter.search.earlybird.search.relevance.LinearScoringData; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.modeling.common.TweetFeaturesUtils; -import com.twitter.tfcompute_java.TFModelRunner; - -/** - * TensorflowBasedScoringFunction relies on a TF model for scoring tweets - * Only the `batchScore` part is implemented - */ -public class TensorflowBasedScoringFunction extends FeatureBasedScoringFunction { - private final TFModelRunner tfModelRunner; - - // https://stackoverflow.com/questions/37849322/how-to-understand-the-term-tensor-in-tensorflow - // for more information on this notation - in short, a TF graph is made - // of TF operations and doesn't have a first order notion of tensors - // The notation : will maps to the output of the - // contained in the TF graph. - private static final String INPUT_VALUES = "input_sparse_tensor_values:0"; - private static final String INPUT_INDICES = "input_sparse_tensor_indices:0"; - private static final String INPUT_SHAPE = "input_sparse_tensor_shape:0"; - private static final String OUTPUT_NODE = "output_scores:0"; - - private final Map featureSchemaIdToMlApiId; - private final Map tweetIdToScoreMap = new HashMap<>(); - private final EarlybirdRequest request; - - public TensorflowBasedScoringFunction( - EarlybirdRequest request, - ImmutableSchemaInterface schema, - ThriftSearchQuery searchQuery, - AntiGamingFilter antiGamingFilter, - ThriftSearchResultType searchResultType, - UserTable userTable, - TensorflowModelsManager tensorflowModelsManager - ) throws IOException, ClientException { - super( - "TensorflowBasedScoringFunction", - schema, - searchQuery, - antiGamingFilter, - searchResultType, - userTable - ); - this.request = request; - String modelName = searchQuery.getRelevanceOptions().getRankingParams().selectedTensorflowModel; - this.featureSchemaIdToMlApiId = tensorflowModelsManager.getFeatureSchemaIdToMlApiId(); - - if (modelName == null) { - throw new ClientException("Scoring type is TENSORFLOW_BASED but no model was selected"); - } else if (!tensorflowModelsManager.getModel(modelName).isPresent()) { - throw new ClientException( - "Scoring type is TENSORFLOW_BASED. Model " - + modelName - + " is not present." - ); - } - - if (searchQuery.getRelevanceOptions().getRankingParams().isEnableHitDemotion()) { - throw new ClientException( - "Hit attribute demotion is not supported with TENSORFLOW_BASED scoring type"); - } - - tfModelRunner = tensorflowModelsManager.getModel(modelName).get(); - } - - /** - * Single item scoring just returns the lucene score to be used during the batching phase. - */ - @Override - protected float score(float luceneQueryScore) { - return luceneQueryScore; - } - - @Override - public Pair collectFeatures( - float luceneQueryScore) throws IOException { - LinearScoringData linearScoringData = updateLinearScoringData(luceneQueryScore); - ThriftSearchResultFeatures features = - createFeaturesForDocument(linearScoringData, true).getFeatures(); - - return new Pair<>(linearScoringData, features); - } - - @Override - protected FeatureHandler createFeaturesForDocument( - LinearScoringData linearScoringData, - boolean ignoreDefaultValues) throws IOException { - return super.createFeaturesForDocument(linearScoringData, - ignoreDefaultValues) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_TREND_CLICK, - request.querySource == ThriftQuerySource.TREND_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_TYPED_QUERY, - request.querySource == ThriftQuerySource.TYPED_QUERY) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_TYPEAHEAD_CLICK, - request.querySource == ThriftQuerySource.TYPEAHEAD_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_HASHTAG_CLICK, - request.querySource == ThriftQuerySource.RECENT_SEARCH_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_RECENT_SEARCH_CLICK, - request.querySource == ThriftQuerySource.RECENT_SEARCH_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_PROFILE_CLICK, - request.querySource == ThriftQuerySource.PROFILE_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_API_CALL, - request.querySource == ThriftQuerySource.API_CALL) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_PROMOTED_TREND_CLICK, - request.querySource == ThriftQuerySource.PROMOTED_TREND_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_SAVED_SEARCH_CLICK, - request.querySource == ThriftQuerySource.SAVED_SEARCH_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_CASHTAG_CLICK, - request.querySource == ThriftQuerySource.CASHTAG_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_SPELLING_EXPANSION_REVERT_CLICK, - request.querySource == ThriftQuerySource.SPELLING_EXPANSION_REVERT_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_SPELLING_SUGGESTION_CLICK, - request.querySource == ThriftQuerySource.SPELLING_SUGGESTION_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_LOGGED_OUT_HOME_TREND_CLICK, - request.querySource == ThriftQuerySource.LOGGED_OUT_HOME_TREND_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_RELATED_QUERY_CLICK, - request.querySource == ThriftQuerySource.RELATED_QUERY_CLICK) - .addBoolean(EarlybirdRankingDerivedFeature.QUERY_SOURCE_AUTO_SPELL_CORRECT_REVERT_CLICK, - request.querySource == ThriftQuerySource.AUTO_SPELL_CORRECT_REVERT_CLICK); - } - - /** - * Return scores computed in batchScore() if forExplanation is true. - */ - @Override - protected double computeScore(LinearScoringData data, boolean forExplanation) { - Preconditions.checkState(forExplanation, - "forExplanation is false. computeScore() should only be used for explanation creation"); - return tweetIdToScoreMap.get(tweetIDMapper.getTweetID(getCurrentDocID())); - } - - @Override - protected void generateExplanationForScoring( - LinearScoringData scoringData, boolean isHit, List details) { - } - - @VisibleForTesting - SparseTensor createInputTensor(ThriftSearchResultFeatures[] featuresForDocs) { - // Moving this across outside of the request path - // would reduce the allocation cost and make the `ByteBuffer`s - // long lived - would need one per thread. - SparseTensor sparseTensor = - new SparseTensor(featuresForDocs.length, featureSchemaIdToMlApiId.size()); - for (ThriftSearchResultFeatures features : featuresForDocs) { - updateSparseTensor(sparseTensor, features); - } - return sparseTensor; - } - - private void addSchemaBooleanFeatures(SparseTensor sparseTensor, - Map booleanMap) { - if (booleanMap == null || booleanMap.isEmpty()) { - return; - } - for (Map.Entry entry : booleanMap.entrySet()) { - Preconditions.checkState(featureSchemaIdToMlApiId.containsKey(entry.getKey())); - sparseTensor.addValue( - featureSchemaIdToMlApiId.get(entry.getKey()), entry.getValue() ? 1f : 0f); - } - } - - private void addSchemaContinuousFeatures(SparseTensor sparseTensor, - Map valueMap) { - if (valueMap == null || valueMap.isEmpty()) { - return; - } - for (Map.Entry entry : valueMap.entrySet()) { - Integer id = entry.getKey(); - // SEARCH-26795 - if (!TweetFeaturesUtils.isFeatureDiscrete(id)) { - Preconditions.checkState(featureSchemaIdToMlApiId.containsKey(id)); - sparseTensor.addValue( - featureSchemaIdToMlApiId.get(id), entry.getValue().floatValue()); - } - } - } - - private void updateSparseTensor(SparseTensor sparseTensor, ThriftSearchResultFeatures features) { - addSchemaBooleanFeatures(sparseTensor, features.getBoolValues()); - addSchemaContinuousFeatures(sparseTensor, features.getIntValues()); - addSchemaContinuousFeatures(sparseTensor, features.getLongValues()); - addSchemaContinuousFeatures(sparseTensor, features.getDoubleValues()); - - sparseTensor.incNumRecordsSeen(); - } - - private float[] batchScoreInternal(ThriftSearchResultFeatures[] featuresForDocs) { - int nbDocs = featuresForDocs.length; - float[] backingArrayResults = new float[nbDocs]; - SparseTensor sparseTensor = createInputTensor(featuresForDocs); - Tensor sparseValues = - Tensor.create( - Float.class, - sparseTensor.getSparseValuesShape(), - sparseTensor.getSparseValues()); - Tensor sparseIndices = - Tensor.create( - Long.class, - sparseTensor.getSparseIndicesShape(), - sparseTensor.getSparseIndices()); - Tensor sparseShape = - Tensor.create( - Long.class, - sparseTensor.getSparseShapeShape(), - sparseTensor.getSparseShape()); - Map> inputMap = ImmutableMap.of( - INPUT_VALUES, sparseValues, - INPUT_INDICES, sparseIndices, - INPUT_SHAPE, sparseShape - ); - List output = ImmutableList.of(OUTPUT_NODE); - - Map> outputs = tfModelRunner.run( - inputMap, - output, - ImmutableList.of() - ); - Tensor outputTensor = outputs.get(OUTPUT_NODE); - try { - FloatBuffer finalResultBuffer = - FloatBuffer.wrap(backingArrayResults, 0, nbDocs); - - outputTensor.writeTo(finalResultBuffer); - } finally { - // Close tensors to avoid memory leaks - sparseValues.close(); - sparseIndices.close(); - sparseShape.close(); - if (outputTensor != null) { - outputTensor.close(); - } - } - return backingArrayResults; - } - - /** - * Compute the score for a list of hits. Not thread safe. - * @return Array of scores - */ - @Override - public float[] batchScore(List hits) throws IOException { - ThriftSearchResultFeatures[] featuresForDocs = new ThriftSearchResultFeatures[hits.size()]; - - for (int i = 0; i < hits.size(); i++) { - // This is a gigantic allocation, but the models are trained to depend on unset values having - // a default. - BatchHit hit = hits.get(i); - ThriftSearchResultFeatures features = hit.getFeatures().deepCopy(); - - // Adjust features of a hit based on overrides provided by relevance options. Should mostly - // be used for debugging purposes. - adjustHitScoringFeatures(hit, features); - - setDefaultFeatureValues(features); - featuresForDocs[i] = features; - } - - float[] scores = batchScoreInternal(featuresForDocs); - float[] finalScores = new float[hits.size()]; - - for (int i = 0; i < hits.size(); i++) { - LinearScoringData data = hits.get(i).getScoringData(); - if (data.skipReason != null && data.skipReason != LinearScoringData.SkipReason.NOT_SKIPPED) { - // If the hit should be skipped, overwrite the score with SKIP_HIT - scores[i] = SKIP_HIT; - } - - // If explanations enabled, Add scores to map. Will be used in computeScore() - if (EarlybirdSearcher.explanationsEnabled(debugMode)) { - tweetIdToScoreMap.put(hits.get(i).getTweetID(), scores[i]); - } - - finalScores[i] = postScoreComputation( - data, - scores[i], - false, // cannot get the hit attribution info for this hit at this point in time - null); - } - return finalScores; - } - - private void adjustHitScoringFeatures(BatchHit hit, ThriftSearchResultFeatures features) { - - if (request.isSetSearchQuery() && request.getSearchQuery().isSetRelevanceOptions()) { - ThriftSearchRelevanceOptions relevanceOptions = - request.getSearchQuery().getRelevanceOptions(); - - if (relevanceOptions.isSetPerTweetFeaturesOverride() - && relevanceOptions.getPerTweetFeaturesOverride().containsKey(hit.getTweetID())) { - overrideFeatureValues( - features, - relevanceOptions.getPerTweetFeaturesOverride().get(hit.getTweetID())); - } - - if (relevanceOptions.isSetPerUserFeaturesOverride() - && relevanceOptions.getPerUserFeaturesOverride().containsKey( - hit.getScoringData().fromUserId)) { - overrideFeatureValues( - features, - relevanceOptions.getPerUserFeaturesOverride().get(hit.getScoringData().fromUserId)); - } - - if (relevanceOptions.isSetGlobalFeaturesOverride()) { - overrideFeatureValues( - features, relevanceOptions.getGlobalFeaturesOverride()); - } - } - } -} diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.docx b/src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.docx new file mode 100644 index 0000000000000000000000000000000000000000..57f2552e3d7751d0c44e8b05de85118732312f13 GIT binary patch literal 37396 zcmagEWmsIvwm*!!dvJGmcL)S`cMAk)Bser4+%34fI|O%!;O;>J!QKCznK|dooO|#4 ze%bwWRjr?_wY#eJ?oyV6gu(&?1A_y*N#)V5R4t540tW*dg#iP@1hwi(0PH_o*nc)s z_i(UqHehzQvu#XLP+Ap5`*QYzoy;Ok>Lr1SUAE&u>%bU?FIk;_!>hBzav~4$a5v5$ zrZKG?0>d1ak$UGtyjmyJ>D@%FCn0%aV347ePYzk^oxh&Pd}_(FClyB~yC}0uG&cZK z(~{x+Zi*Y6b+@LE-v}f4Ogu+7AW8cHESjb=MiYZ%Fc?l%XcRiMI)9ocx1GX4UG->~ zW|!gP-l($c%eb!_`GbU?RMyK9Gqq;sr*wpG{=8qqjL$WszZf^f_dD0RPB7FvS!p=d zt@ae6xDO%%&}M$vbu+t-X>lCE)RjhFtLbiF*aZJL0elLgu9-cA%+h+Z7sxqY)nxeC zuB#KR?qhuvD1+~LCxMc2+#NtiQ%`1)2$RO%9#iQZbk}!xM^_j_Dg3Y$YIrv{t6(>- z;Wv!>g-b)ER<%tmCV7N|kLS(tNP^twCMQU5nNL#Dr(M!Wh}K`U-|PMYk+ZI{GFt5&+}sO`ku(>9eLgpmVzOe z@;|ERK`keG531e<1Q-}1=+nr_!q%CE`S-Ole&Pcp8=Bvlu+%VBv3-+ z44iL|ZOR|@$}gA?10|Hy4BaWOVJ6x!`gyGy1dFFzcHi$aQBq83c}`loYy_(KI!qD& zVy#U%(`}4d@_`$f*5f|=XM#e%AgWn|Zu4nSg3v(;G6$F`I{_S=SDN(ORcw@Tne^hS=gvqumiI_(%vfS&*{n zYzFcRq5Ks6bzGctUna>iTU3j355?8c6_&qfipJA^qd+Fz!=n4??@t_-KoMV$UfNtl z43>djk_#S|+;1X3X$UpDR1P2Lv~3IJieIIxv~#$j$A-V!guME>=G&v$C7UmhNEbQi z*ZTou)%^?$+8P*k!V}jAXe3l{4pEgM`=lp!}Es}T6i#JlSY zYqs=6S*&8Q3@F)eGBb>w6M2XAzHjee-z^a`-1A&O;T>6_7}CwUNxVMyUK0GXF4wE8 zxW}Nn*g}DUq5ZusCJqjNltq2aew7ui{fPm};B&Y&te6U3e87U(w8T1oO?*c4+$i~n zIH*>(9iY!cC^p|0mYXnvdV!~g(WgZ*OV|d*j~dux4|&7Nj_U}G)!{??s}l$0&QN90 zrP!JS=mw5PQ=^shFih~DQ?-<67^Xh2ponfXconrNI(UD7wh)#2 zAD+3Dd5&QgdT6Eiwo&LZ9SBmBTME7%eRe!r1+D9=2l zT?NApZ#b?eRjVu23cZXviS5!B8_MD1f_#ynjU1VwNU|{j^jxE7Yx}P`#y8yuSme^62&GorDFQljsmWJ@$e!gR9-@AgNI-Kc-qgb!AumjCS3l8 zPU$l_Ei6?#R#X0Ahq;1GsA`agGMVVfl!So6jP6wH;6P$g*FaG(3Okz%AKjH|I~dps zz6YRzPW&W}M8{K2{boXlB3zgibN(Bky_&N$K01FUjm0XM5jk+56?)Z-JzC)$?`QsmH$b?SMK z$5@d#UCbQ|WugiyJo{dsqGjlsR@YV}W&P(_B`;$IpFdYoHojf@P!AI}Y=4OU_Ck7u z5i38SKPkO##1fr-<`Pz`KB!I$pMMG=f46s^{^EqkplMFZB!)7BG?o#?U)uP`1*CJG5o>FeQ85ia)k34WDt0h z9MedeJW)5I$9bu_XAm<=d=*lsTfz8H5SlXuf<~h!&aEa^E3B;-!CHn*<49r+xjp=32w%{ZTp{cMt9?y(~179Ax--varPkRbXJ zrPVjJo-20CgwB-2(SU=5F=itl^`k3MqA1Y@dgXN?kEjlCQ5Tu_TJ@+%h&Y_QmoQPAm?mS^XLIa0 zFh(#@>Y4ef`?yEyk<2;z)VbIe009IGhd;8tkyoWaZ z6Kl@F_jd^jm*M?V$xJdtV6v(*n#xsJi1!I{@bAF~Ke$%v#g7K#5^b}gt51OiXQ;|%5W=Tm%dp(#NPXOvaMv=F zhqelWw?S$Z?Z*U&4@E)ucpL!p#G&2ax=}V(ZkiKarE`pLN)dn^m3o$$N z8X^Qx08rmfXa)egr9G!i!QF6 zK%PJ`$IO|wo1l<3E3GCw+?KslCLTRt^Zad^xt$m69&+BXT|;ESus7VqOO{A=MBqSE-&$50Yn9NnpAxpfURgTteT#QD>2cSwwG z5z)(#8+YDOu_RK%t-X*garr?eFB|&^DNkFLA%~5YZRkg2wsy}Bp4=^QytBMG9fHCn zE_sLd#^>vkj>Tk|Kg02m^Li%5Br>)r->)wdUBjMM31=(34sJNj{R9Bcr00jRjyF$D zgsveKtsA2?_-5RmSO__UHuQVnH6y8oo&<(V=RW=8X*~xTuVG&JMoc+?x~nzQ7tHST@WP zN)+w+KP%`*VHiPa-eo}caoihQkM3G7n1M;UbxEX1uou>3sBJ@D7IQ?1@lw^LsRexs zemC)n*XDXUvENe>{<9Y>gvhRNWHI3mACdMal`*aN$3ng5UoreiY3y*ES4uSZjo0LO zSFWe4q4*vGXITEZbVZfp2t=@eff;H*gQ5N_*Uq0kY%QGsShx%f5_Y8Pe7d^w@{OK< z*u@5c4NcmE#k&%kcy(meo^dE}%>MfR9rt6*iIFcAnJ9^ds)pu=viLfI-Ygttx;?GT z1a*s-mu%m5+cTgMNp$+l={iqe7jkE--kIi8@x8vyu%=PmHCf9kG#nw7lzV*hfQ zF0wcTczuX@dw5zri!K&vKHfFBe^|e0OPOzbI+*==(-so4d*ty_C-`dj_H84W1-L?D zm|T25)prn*vbR09dfZ(8GIo5~;IU@QQ!GMK(bL_b^o1`pvhMBLx?b1oX?}Ig(=A-& z%|RQ`hkn<#d$oV#{_doF_@mKXNbzDHuu+(}&kDGlHRPpZ@49I6MbRWDW#XttHUTB_E1RRy%Edm6G)WXrtiiH>e$f9HXHhXb;>^8P*Q~!YX0U6ePImoOd`y@L3={)J?(mjocXY4ux=)~mt!skhG zl~BG*=i<@nv9cy2DIVh+%<|f~*4frvF_tvI=4;os=F_RKch>oGBk^ddnnK*?xVg@P zx(WO$MdB@!bwc*mU;WT!+EYC?Pn}%<{8={yh@M7;|G5pm<9q|ZEky+A5ux7ZEpUQK zRvi|5U4sf;7;=iiKNV7s8d6;)@={~uqa)(O8_d$)7Gn{N>-+M0&}Zoj_j0}d@;Oca zxdyo0z9}eF>2`J+lEQPE#iMlm=3{sU6spR$Uwp&t?@W$tS?M}aJXnnZ?A-r&tJUq2 z&LZgirYFt)K=;_q?Rm#WMe};Uy6?(!fXG*RG4R$FN=SWcD(hj$l8@I#pox&S16TKT z_XDy?IqG%^Dw`@vuLg-}g>b*5Pbi&t=qwO4y^VAD;1rZR#-N|KJ}sJDsngl? zr&`?yzO@@vElfR~%sx8YIlc_Z-d>5EoC#;BNH-eH&z<+}UtRq??Q_oHWC(60EYym6 z>)UrPBhI*@)d)mf{=Rol<$F%DsFdEE5@7@NJ@gYpcukoUuPAyPxFoSj0effnOI!B^ z1wq8xo3@3w|5J8JBtR>MCDXb+wmCd_QJdct_vz&I{HGm52Jzqwx;Hl2E!>QlH<1yo zY-Aw?Z-VfdWx2-in&h)OSvj-fKyFJ zpn~c-kaQ$FO2`jlY}8Q|k6rmpM+RrLfz@pUcU9zv7385Nim=j7M~Y~-QIVN11E)&C zfDzyj-|R=4@xwqMCJwD2tGzsUiwXd)!#koUil%spgBFy~4n52yeu)zs5Zex2kn_9q zBd8PSU!73flmKwCzs6TJ;!`n0v3MX3_sVWS{0sYpGaeL53K~cEN2o3cEf|FRkI+A< zph{`ZY{=aIi{MO!0@Q-=hl=EOX!G3vA@M&@v7VPzH~}f3QGXZaN&wQMiU#tE)$oIf z6p`t_Br=i0(Rd)j{h@j;!L1Rk{r9MUHx)QbG)%g-bz&N3@k{E?lXenoy7-(ufcxtB z>XIz9C3Sy5kn&HVNsKLNX>#w}^lin|Te5Q|l+>QvcWhf88nb<6j1*$lOMX5ZSbw^4 zX*IAP@Dh9OTO4=I{kY_QrFTC#n_a!_Uj1`kSm|JIe4Q^!60!x|HFDJh0ly>^qb#V|VNnf6)4?KO9iK z<6jknR%+`*E7*JW;KX?3_-^HVQ($4%j;Dqx}-rWYU|2&5n;a z(yx41&vVch1Es$ba~^$x<$H8j9+YDoLYdr@hTF<@^xNWLUIggNcR99g^HBIa7f~*9 zo=KTi;YP7_d|X3jaf&)8w?cc_?>NLd+S!*N;Zb>?&-VpUp@o^V=X0(skN(Gs7(_aU zD)2yOWHfK<(VIfLA{K?VZ8=OIZ+JE$6F%Ldg3$-h5FN~kHqv5D^dX-wrl);fXKHgk z#XqukPX!A%<<J|F|0uxoG_ zZsK8@J|NqYy<0j;^Cu`zmP?yu<|>XdS8Q|J4-)@%b(GaEG^xc_<07c~u7(%|%z5hg z`Dbho^o3r2(bR})VHY`}w_8?09ze&eF*}JmZ*=TFm~WCeblfSf!XU_EGkMi~e;y{m zYR!fhg(e_?IZvRuC81k`su@GK-vC7mw^adUk%x_6IfilV*~yu+h@+f3SzYqnM|-Nl zG;Lrx>}aK#3$SsFi1+h|UE6vvAZIUDDdVkn8K=u#$#9NBti=0R!y$RQ#E***W&urq zlr{~KUGv97gpKs@BhjY9wLAj8UMkTWdSR!_&KLpLVo5bUHddvDfM3o=|6WXqJ37+< ziMrBD9jef#$jiHCiAfQ_b#JSR(|mrB!7V%C=;i3L?V&>ZWqkMdQAT~Wm|x?V4oP|V zD_Wq3n$TjjlGKRfIr|v(4%Mg|s6Dxv8U-Jz!I82-{$r748pdgYWR7z=C@v2P$I|7K z(lXriTH;)94V@@|-^^osj{aB`XFT#n!n!GgJOxIQ?L{JbZzvtHXSzf_XNY|{Y=Ep% z`mKjW-<8uHAAix2u#R4gK$P^9_IRZ%;w^smdefRQKW#8ll%N+|LjROursR>=?Y8mE z_r9skrd6)hv$OccG>yI_gfDORua66axD|4!8LYfrOYWRC8YW!%2#V^IWgq!@m&$66 zH3yU~?lNo@D64Rw{+=&T$M7`81we@uu-hgH?$Yj?VnSXOQo*FQC!oXpZWYFw3OQ_-pUL$<3!P!c3xT|3J z@j?T{E?jWCQlUG_x~=4%A3LE7$)GPEN)5nU0iggc1bG_99w!)B^6zn3bTw_g|gmOhxf&08KOT_ z@`~5(lptzW_(XzXL zgr|dt5YtU&hB}N^2m7PR_U!W#M-vNG${u-SPZc8=l>!6eqxNES!2@htXU_9S)lY}- zC^7J*W#v>|Tgkj88KsxWn5rrsjTak>yT#Vkx;K_SDd62KmlE9_M&0pcy_KQZ3E^4x zSQgsn@uyl6*7XV$1azsmSmLk)7T2KS&uS~u-hUa^Xd5w(XS^y&yAq3}KQq%8!uFJ4 zpwTa70!wS1t@Py_%C-k6&nF;H&$5lbtfJ+xan|ES!l1n8NV!RE9j`pq^!C9PaAIJP z$1W%-i|JT~RVh_ba=b0-Q*U;(;942BF)xK~-@Dw5kn6i_N0^xy*Wn+wf1g51cGJK@ z$4!!2EMqQw38OTk28*t*V_}!4gHTDD?`44KF_&1z=YLAEJ!+G3tGO~ zpjs>{mply4jI|HXk(i1hV`*0dVFwr`CdG+?T!%THT8J_@#p0248%QEIcMV9 z(lWH>NRmcnR%{l8Yr37?X`I}HmP)IBR@7#@+2`Vm=PyzA?+p(*x=1G>ut}*i2 zQD-kq9&rHYoY~jgkgiJ9gQN)TeJgxKqv~9r>}t$Yn>It@%X8}It656|%#Oo5n;X*3 zubEW&pAJ?ci1aOFOAlUN&$Z6xA%iV9C*z$I=_K0-zYhwZOFCD;9I{zb>tf!oAjN-^ z8ubfWYDiy&ZU?t>#f_CJiDHx+p1}LKvuwEa#P=~io8u{RT^YL|bVFNj3-2(h15?rY zn%l*8(batu+Xb!z-kT0ab}Ok5!*kX#8uuKgfzMDBCzq#=F_*`zJB%dg{0Fx{QIG7c zjnOngSpe2F!KY$j$c|c`U!S5k22bbeaDPFWyTNxT99%to9Q9ImfT$)+{+=G~-0sJd zGjRb?2iFm20pF1dsi?nsCoS(_YE^ZM(_um{gWiEXwPcycbL+pFmfx(hB|pUB3h^!J z2fyD2HRNKdPCG0#&H1Pae8*4TAw+k`6+#x$i0=eCAZ)g+e#G`L5t9H+8t2C9Lu3uH z@IyPwFB{U-c|2acjz!KO9RCB993CrSJx2YFzyM75y_%qn&l$U*906R^8yUp`<~rhl zeLu{xZ0KcZ{Q#gPSe875d(0jWB#r ziY$w#{5kMNSe!sq@Se)u~)kXXE<%!m8heg^W=)8=JX zYA(IrrpZMrTZIL>UAY_csE|(*HKh#qCjKPWwm87kqa$jj1b1U8RJq#57o#Jcz`s39 zm)ZsWX1^lM?qS+$P7a&}>paNQ8fCh#@JOn|T!3=5G{?|Tsf6<=m?wyQu6$)t>a0k) z#zkn(rYx|8$7h~7^nQ{UIkvORx;4f-U!$zJc4}Vh zks^Dx|KNxg;&NrGIKuDz_DUU!aVcYE3Lz4K9s(hT;a%Yzb9Oi}^?ROXxDq+{at)!Q zUy_PaqWoU|y<`F+hq{va2|c1Tksm=+0g)u`O+%+ysU2n3=&}Fifuj5ukK(Q@ zF8Frwg)(}LvGdU&3oCsI94*LF;>=Gm^=nqXZ>>_I2EBTfM=A$BjOtM8j1Wh7s8}fK zP;=+6Pi*h3alBV>z(-u;n-b`TTRP98swk{bqveg}8{lL*r|IWsmky2?AmXR2cbr|Y zz&%1Ri$JdW;7j4OYxsy1DgVP}68>Lod@lc=Y_!Af{yY~ni*fY_AB(GPbfG9WKPDYn z|8l;;1|K=#ylCYQ_iL|Do0Ss1*O>q%(H^|G9>4s3@C_6ek(TSMa3+(26l!38`X;7w z!nvkxfaY#(2Z-C~Xtr#J~u5 zd8f2jIWV7FoN*<+*;8$bU8gs@-hMoHM)(T5weqb2Nx9TO7op&inF*>1sH}>l@%)3H z(7H2$_Qf=Z^mU~C)v@*Q@}b5T(PYl21CffBm>}xCp(8~r%Ai)@JxxgUp7Sa!-zghK5)Wq&r(EFcmzba{-A8Kx@r)G2WY4gQD~$A>Q0WoQtoO zQI#|~U|4nVYT39)r~>2Dj-QObJP{h7-v}f*Ouyz2Xmq2W2u8WXwlwU=0bs3W{`IiZ zcd4zh`2<^s{l@qrPX;_F`O9HK1cXBHbrB5qmH zd;uE536{em=GPHN1lfC@?&+|BL$4h(HAd-b4%kL>wt@UJcSaZ>7;)`aaqbM5gyjsi zS;y~1XrWl&{S(0WVlipKO+^`{4bf`9R@LBzkGqoBGo!@{=#YEu%lu6vMR}U8O3`Aj z>~G)8Lce|YglNk<`ka`vofEop6aML2Y6Jucy0F#wu+0R74tx$CP&RMEOl>@g7-<@u zpU8}q zDO6itOB+ebQXozT7jF3GcHGtH*GG#`=ji*+Dkdvod%Q*QM*$68`i~JazZsiqeu! z`U+=iiRgtU+kpl-Ei48X{RCjzIrTI^R#T=61N^(o^}Ej~d8;p{3+Vc){1-(W=i-Wv zM%CeF6I)OxE7U1@$TdtiFiZX1VRjg+zjQyu>)2WtVw&!xYY)4o-~DaK?4iy_#aLN5wzd zljF^~*-{q;vw3NfFT$Mht=O;KsU~$IZ2nNfJxn@TnthtYXSK&hko?F-@E?V_MEgW8 zq8XSIe=2nSp9(KCu0kf_HY>P2RdU5nO5Qn*IF;zbUiRnCFb&UE6};ov^H3j<=t1cz zTTqA9u{C{`sM*Ynj@u;qy+R*8Y_4}PzO{+8X9ug`$?AuoS-Y+=&aym?G#=g@97c^R zRYe!i?LF*U=SNz8s$*d-E?zd|@+5?r{QRr-w69n8^qW)^A8g%?A!uTsV1k(jpnS1xtrz{d!V-sc}08{CF0wGx>r z+=mW%6AdFPxQghVtusG|oS3swhR?Wtt2)_>;Z9)@K-E%1xfscY8G$3%&k#bTZOY4t zUgywkBAZ@2Yo%?PvoUQ9+KSf;d8t|7+C0@j-Du7m!#A&6;v{!_*!W(3OrL4DEL z58ob^ZM5Ot`o6;${;0C72g80gi;>aa?H8GLKzkEq+p!2{1ciI37K&U=zk@cp`L=yu zJhxf#R87BV$8HbC?_GA`yJoLBq`$~-U4}vAYOsHhH?whKMlk;$95MP8KF!&DUxkj$%A*Unru|q(tFnz*FkO|CMtLP77q`Au zt;P;iqq?;3TsH;Zgi0MKY>S1H*ENGj`rVmg{o!xKYv#Pj(5Q~Vs4$nt8AXm88zu0e zTp!mNdP!}lKLK}5)G~j_v!8}#SxZhq*;v$Dv>2zt!t|PVB6!ZWxa_BuqZ~*Gp_fxC zOEiT9uC9ykrHX0P@9rdLIrFR`nm9DBqGmaNmX_r+1Nap_bpSF?IV)YE(G?)48!k8e zlReKw^Q?(-tRW`4ejIc*@rV11Ds_1=;7iV$PXGizmn9U*4hl_kMtw~4JCUFF-sM#A zEITS0BT$@OIomDeQz$nQlbjXhtZYvyE8LJv`lt*0F-??1vOC}{nV+%O)${t>V#U8a z>fRNN4Ezo3%4^pA50gJRD{ndnzs)wR{L7@A-cd(k*qfX-s$pLuF8VwWVwNz3A zmJGJGt_*X?Ji~so=K$X5t@%~OhfO0Brw4bS&36?(2#Fq@X|!3raXvjbNH_$qC3CbF z1ka_Gfj~Dj02Ul{S(VIOz}jKUoduiKlF}H4qYThMW^rhXvAlq2f1=$EHf5LWY8GLxa%Tf1|mJRl@3qT>M63akzz<8064e8e8c{ENL$L zg4<$uUgr+J0TXjBPWJ2I)|74g*Fr<832F}_8Xa0YSR79HiIG=2kuUun*tL%4-_;;?kPm0%jup1P$^!kQ^AwSkg%QU*%i2^{RO zzikWDKa*#dt^Zf@YC3E?zfLSAu>PeGp$~EIm~eZHfM%i_(#BYgCa2V$7S6Mj5CcMk z9u|5lew0m&RMJ6RwqNDM+s6+#3ecwh0lem2pIg3Bj}@U}VQ~`zQqWz0KV4Mz z7%&5Ig-G3b;MJ=nJ3a;GAU9qeAx*j;Vum}G?&W;Zut9$HsY@)L|4L1YZp(4I(0}DO z4+B8VqO>`Oe18#qpC@zbfMU|nm0&&t0rZqUw`3Yjf+0dWtFn@5V752bln=Pl<_ z-Ho5tKksX8$bVM_P|J*0LyiO39Wv+aXXS(VmG?o(3wnS@LNo?KI7-KMr&pgkUO0P&MWlWcbxu{g zR;Eurj}mz69U*sua^Uv>y<2+hKt31DF5)jHhCEar5`2wYO^m&usQ+1i`E*-j_crLE z@jGLC)YYl8`E!6RH8?I}@49^PIk)qfwG7Qt zX`uVG*5Bd00Ifn(>o0aKYx@x{7=z$la*p|6vVtnP*pp4-EgS> z{@7+h3Dc|)d~}Nde<>7TF$Gwr+VRiFGJDBcqE?^_Q=Z0V^@Nn%vkX@SzUjvBgOU*m z=q>b?uF?=WVqR%^8QnUxL6MSRnPS0w9QO~MN)GqL+QtB>P-2vdL-@=Ev-0c(2`b?a zXzDx1?qStQ9FCvG9`|8|upiKhuGdB|m+^AgvpY8cqlt?I2gTyqrNP42geBFu%B86D zOX|NkTpm?iC?*s+C^l^}C)}#nLXLKApt~+5R%~x1R!X+s(*+;^iCFF%ov_lF-8Y|e ziUUY`3$g?pXbB+I&u15(6jCoecc0bIIU2V@vLJ76An5ON@zW82MT#P$L|?D@`{TXK zUAQ+p0!YeY%CVp6Z%@mzCuE^TKA@|gAA9yxM`5zM^gR6*{ES9@v&QEP5*+X!!2#K& z&?0{d?)feF{I}pLf@2p~wg=5)+fFZN5p@zRhWjLv5!-T-5&6G>-FvE&0%QIKto-e> zc{J|CAQ<-Z^$k$1sC|Q11p8T@=|1;B)ThG_0a!9v1R|P^DI>6UH5d8^a8y46FePES zbn88|2(lU!_A_3!+e^Eb!FlI{m=d%|B)8?VT46n#D71)A$7Uj3HP0ldRSgk%$fs;bBV8WffsWwOV2}v0ojB9D(3&18`t~?(?K2D(H#^}escgW z9b2G^vO|jiJnk<+M`7sIAM$WdceMP1J1%lkdkxtM7^Z$8FTeVXxF5 z5ew8`jIf|{3{AyM|DqpY8C%IJS}dtyfPkljTB4VCcio6OHCD_8muF535HjgrpsW&W z)swgozXRei+XZYv^{`D2 zQ=uu6wnvbzIsNLkU|}c4+kio8URPnY09=uiZixGF8pphfUKAxRBeF)9%R}=T3f6rC z8|oR-z$84wB*Yc&iQeMvxnS;fT&yD;+lK<{xxkrJa{#^Z??)DQSabKfhK=Sa95?KC z)VHATzS!}Phvr2QmXF_Z&)#Y|e_)3if{%7Xj~3_@XjoFXwbN9j;Wexm`~9w8D%z2Z zcLV#s0UVWn1003@0pM`w7O)F7)CMyB4-G{EqBCELm`+}{J1=D zJ&wC4(Z`&W> z{O@o&$f4c)munnULTWz<{H}JOn+GITgi)+4qP8HcOnhRJG$m86L*eOJYe)QuS|PVw za-rKs4t5#+`^qgbxgyW=uZ0uJD)_$6X}R=KFUsc;icVacQNUCzGM|&R78hQwsLs-U z+qU(gdSTBd#Bw8+pl-I+2?ksRut?>H^IRCuVuj+FZP zRCCFwlIpKTCwuG^ZY;&)eT7G2T#RGqD1m^*#KYClN2CbJ#BYDaVDq%_1w6^oKupCc2Zv#eBi-xp~qxpafDQ~gzZ zvVZkpCGoU19sZ{AXegVNge@R(rTwm5jI);ATr>IjF*(&wpO#_F#dQ*i-?Y%M!Gz4K zrtCeHW)U01RYy1SQi5_5w$*`ls^~8ahGSZW`oUA%@v32Vg72X6$W-&~?H2`&?WNrr z&jXB2EkK0?pe7%C2z#lqe-gKKL0uRoc(AP-`=()PaamEZM4B-)y5-XwmPA(14z5T( zH43#w{`ZPPh&XuP2Bp5hRDv?w^g*nmLZHI-G4fAh|o;o^^Fw~kw30&W` zby)8*_}VyNK#U1V&{qSI&WilUnqf&{HFbxQ)WX;iM!_@HW0UrIMw!Anr58n;jf#SW zLp(Z_InAYjDcjr6y=yaV+H;Xf&OC`?g24s{i)|{BllpsFL*J-_f}rDcB+)|$b0lsK zY|{rwAF;>PxnFy@*%80?l1vjcj@e^{!(G%A)T&m1u!V{iFvz|mhr(sORMl>?N?BJq65YtQOkOJdt{ zk<@8z6{t%@mBnyNwjMiqFeWwZ#G!q0kc7A)%{FW@m2(S$O*uXbJ^CPKhh0O zJ%eq!uUvq~{@|KjoD1Q7%qJFXC>o5@gn5TdzcksOUVB_LjzjZr6^N*RstE4BB2p|@ z(X6s@sSG$!;zQO?Z4O7lesx(AydV>QrpJ1>6ofRIHZ!*Y+y zh_XObCRec_r%9tk2o#52{7Ckv17lR0$;6jNJZFyZX&F!^2K0)RpTaskiJ2=xu|C|2 z6~#e#lTeaDizB#@LpNrMpMc_G)@MNu-p29Cpf_D{*@>7Vr4f(?8F&0sT(Zea5ByVj z3LG95FG$`{|9NiT*dt(;j|&XUxf%ux|DWgfwX8pXl(Mw6F#G)H5q=+olzi#Blcxvl z#-jnHtYk2jIIo4!|PM!Nu-&9#%;h@0IV zk9xz-xBaQT)AYB8v$x0BW4E@K?5VMJgUhFz)3)kr)U&hfThP(|jgD0zK_(-dwyur} z;->WV{n=LlYI=%Wx>B|#>X@4m&+3rdq%kk=bJya@zDesU)!=@_%~{0yOKEEgve74& zh>)u{7nnfV%R3t%>)qRE?&>iYr^{K(r@AE?UwaXnt|g#{*9*7xl}oLWkG@d#t#6Ut zLy9HP*Y~Z-z}L-YcXiCCpzDFT)&C6W>mh8^Ui$6UJ-_&k@6B|~IbkR}C_SV(WzW;M zrNeD?&)KOj{pQsA#`A<{c_BVQ=|GyEg!ih($S5RhB`0KcVDX1<74qfU>+Z#SmZ>3u zYI{fCExfpfurU^QdosY4H;vA@PttLk?Ez5pc(n__1E^kH(6p(1X?bB-W|sQ#;`_F^ZcryEWKZ0?S3IzK1xz94 zBV2v06Cx5I<|h$+b9olnsJLrutKMXCMJ=DN9(kdv?5e$d zcbCd{&Bpfd3aov(?fbRTdw0gZ?(j&ls1oL{rMcOG^Jstf&0U+w-u%M4OMaor{9dhm zsvL`Ra!KUvqPqF>I1b=R;g#92-Yt$Nm6#6cXuI`pg#3291(yn!QRJn;8b5p6fIFKZnrJO`FCT8sB>1q3+_h$CU@!>5i`Pla?Ic9P9 zjeunTt#lw{V%5{vJ4X&y=!`gDggCkSXI_SWonb-Wv-4y5!8J`=WUT}Np!}GL2o+17 z1m*Rueto+&e^g$G3HN7}4^KrSH&w$vD*-NGh{|S&!p2H+E?Q}B@@q*Zyo!L@fa`5~ z2!(3BU5i>)_PS{FnH3M*?$a`I&OOjIkfbwvy*n7xbhrg-!UHvN+}?_?ou@!7D#)4^9YU-3*2j z7z6_2`iIuPB&|RkF`)xM!{9-~KK(VU8(@#P#VXbK8)qGY7is1<&ff?8&2x=(1N598 z`37hh258uCYbc+b%4Hu>Zm%w*pMv+u_VlQqt7Q|~!GPX#zDy!a&0{x^L&r>5np0Es z#>qR#*T(e^PD6LHetH3fY+mItQ{@xeg(V^Yq{vU3#%~ADry+ZLnWMdTn2`jsBJN|r z4Od>*$5Z}R@3(_bGe@6pxhjWtc@T@;#!zuz@7*8ZPMo}czN}?-Vhd)rZ9M&Cu7Yi9 zGY`+IB1YP26>-@;MkbD&+g#o=R1{)0-<-H1Xexh+i7>BtZDsD*zPXI?`8jeh|2X#W zWBK~ox^_a}i750cSgrMxH)GNpJ@xs!xocW=tvFZpLTh zhu`F^TVe{=sl&~_T{ckiVfJh)MWA&}{FGvJZLxAQ#b@=~z0yE)<gQr-@AiIbK&evEJbtS ztW0yS<2eZgW7o2tUmv0BDWLYBAFaTKm9k--1H6~WV!bZR@q#Q!S^OJ}P^`0YX6(5N z45DIPpP;OZ0kK8?#ahTpN)&=ZWbTHt)>fp)E6B?lr>GoTf@NQ>WGFJ;`-Ie631>Lh zd=}&p4xjyhguMlDTg%oZY-VO=X6Bd~WM*b&h$&`fW@ct)X2(o1Gdt$Qj_r(c?|X0F z{r;KxOQoYym9+L+tIuie?xXHaaOFv`1h!HSRaK8#;kO&e$3|SSWouhaLZlh&S%W%q z*cZJ19VMbyKswi54RV0EKnY)F`anW}M>)8)_M2&ywLN=dO*a6Mwqw;DnV zf(nCbcO2mu3Qvt?-NWuH4*-vYYazkYg6y~VL%v)uL&d?q!(@Sv#tB4smkr;Sx3_o+ z!R%wd2c7q&!>OjX79j&J0{JSYw~meP+{^@w4#UVvLO4$x}91$iu2*6&K%P_d#{Dz%Y1RV5wWF zdHDMh!9)4ysSnxSlJ3K_yuK7yoUf++4`0_ld-*W($^pN?vB(`HS>|Euf=kt`ppG+*Y85w{Y2sWN+OdSZ+X3DPC zBojiS`VjUV#afV^xM&R9_&Rj^iIhELpgFcE$(TINcz(ZJPtA;;)xWbcWH$o+%tIGg zewaG6bk|br%)71@l;%)sDjy772iCmq4kdJT%(xO)hbx)sL~BNRY4k?k>-R`%fq+T;i#2L2FR9$80D|v@+~E1q`0lTMMWltC zyU6aj3djw3`|?6VvIaQ)f-MvDhc(nko{T-UkWnIpb=~I;dPVpb$!GVy8r&R@o;8W* zKX2EK`qP?ITwIF8WzGh(%&Bhfj=Rc7UtM)3o^C&b%Tr#bCe@y(iI?m%xe^NHA$4@w zUA3&5Q`(*uPK&3_mUY|lWVEbW4sJd?G?}>U=_hzAr*8gH*th`4jK2G;?!E5o+=3N5~lGpA07_GUhWy;-b@hQx6sk6K4R&WrT)foSM80%{@PIhyN+o%3A?_&< zAw282)I5w|-5=6^JZ1c%j1n7eg-<9>vZfP4*}6Lz+!uNdXX_g9zmC0EE*SQ8R_FfE1_T))f$m|akXk(*itkTjbEfj z#YW?!>UY7e+OwPL?-WnXG-1Qo^J7&iB55cI>(}wq;Xr0SI&vtlP*a&HJ0FooArI7m z^8gwAni%s`^X86)8s)CKuaC=1KhJ6T%@f#ZZmelO_?RFB)aX z16`6s@N+RPb6Lfbe|21WY4;{zRrk!-mJef@y-pgrcy~9&T~tm%NVI7FxL44|AF`J_ z_ED)0{8F2(8hUl9?)K$o@#%$W!!95F!f>bXVbE$X)y?W7`J#QuPa5tvYp0LVLVSJu zTPNL%lA0e=y=Bf~7XZ^sn$0{PMrzF7(QK+qi!*gv==9WEb;fT7tAy@aT9S=f*}o^3 zA*=nIseHrl*qi%2>F)Mh`FUcCmA*`RSvj)A^^^}sHdSNQt|XX<&Fhkq4t@b$q#WeXlV@aZqZPQd?Ap)0-hI6F zi1Uy=DLcZ()QtT{?MZS-19TqOcYDlUSGn^VkOQZXx6p5`;r+v483Oa4Kp94qb~_g0 zVZm`e+O}@K%P8qVx19OT8G2HHZb*^J|`reE_CXCr| zX`q}KoVI<5$`ukrajKJTz+f9I%v#x64WHXEPZV5D*Tl-+mX-hl#EpWrA9|RNYT`)= z{>|*N>z6fppUvX_8^lvxmc?$C@48%0j(a;wVjB3Z7~SC06_i`}Mh*4|L%rvm^>M%r zv<$Vi(=<=xhk6^`aA3Bw7v+Nyew2~z8*y)CHww9L@%nH(`CRSD2b16^OutHO_wL&f z-ym+`yG+;=rfFt@L|MQj$ zX9qVHGI*fRA$$k-2Ap!Pn1R^M`4Z^=gdF zPlxvO!Tk76f##mU&OFC*4m6n`E1X@aLhF)G3NK88)%~&WcsFA5%Lz`e`QnX zJsaY0UgRGpU~xlgxh@68VFVXj(XEyr$bDL+X>v^Wv3)QCj(0IoZ&%M;O`{cs#Mm6C z0iP(I!`fF%+BF7r1#xM6TB&+CUrN^aRCKs=II_JLLfb7$+rxN`&IqhFb-`J5pu(!! zH8K?iE^C!3(8Jr)dTZ{~b`O^362uRhRFS==_G>xMYcX%r=4#;_YhfJ~1jF0o5VjFd zLCOu>_G`7zYmJd`_@KW%uY$y+1r}b^s+UR4dD~)iF6`HuGusNdcK&>1r(o{7S{D1} z?rE#wZ3|pGr8+vKYdfTytSD1QzVA6qJ6nmZ?`f;yZJPle_BF7rmlLGe+^E9aHg#jC zc?VCT>a(Zq#x$Pd2-6)|6R!1+c{x$j#IUaIV|S~-&V8mMkm7#rq@~tcqEPQX!u4`A zQx7M7FXs%X*s1X54qm_l8;e?R>(tScwqq=r>!+U9EA!aXRP21eFtgh9TyNbZld2*ex+?Vf6_C7xvbl$U&c7FXzANA+j zB({J>SsY7;)z7)sh`yRUb7T1QJH=q)?ReNBpO>J9NOP3bddv7i#qX?e1GY#z8dHk4 z@Htscw~+JE{-9_I@}yQWbu{i=yy|ZKZesoQT36)ki4-ILoQUKmWJvl!t-o?oer}Z{7vq+&yI_m*m=#Sv|$fMFt{iOSObi9*((kKRyTrEeWEkkjO$13BhV#Y84Pe}EymVlZPA0)s*Z zLfGKUc&-)!GBA&T!1}}yCB|)r?KVk#4T$*fkSL)44tcq52@L6e^;bx~=dk5Q%YTK; zfkGh@ju=2v7|2tZDkTMTwV}1e#Mz{MibWBLR?T1*H=4s3LvS#LA{RHhBM(Me?@n{0 z69+M}f(k3}zK~Mp0jjMkcet_oED9l9fR(jG6W$1RWFH0t;_^$Rj$eH5E)1sW^^+*X zSP0C|=-%lWr^HqBlXmG}XwAAMUX>_;9iW4w!Al^b5HP6gg|JR@INS6Z*IDX#WGL)~ zt{aPVEcf;HFsN>3a1Ws{SD8Z@gN%PXVDK}W2lZJ?0))bVAj}S+s45Qg(r(+FV zEk%ojZDCH9lrQk=)PWd+5^qkq!xfGIAqC^-0KLI2_8G0xZ=SM6g~^=nw6n&WmVe03A7j5k+~G1UcFnwDSsR*oL~}4>lA&;uba*=9 z{ZBr!Vh|=&ZcMs5kdhy*h@?Sr^2U8AfuB@y*gHaTV^9J|;}Q6bzUwSjqJRbz;^LTG zSQAJZ@O1oXFu(tEg8>N1evaQeKRw?A=Y2D_-hf#FkAdswuCp7mKza!1rc?wJf`S)6 zql6Fo1DpOga#g?gjx-Q-`-!c#;;ASa=qbOPUp1BV0h z2T_SX=#hSnj}E8LZO-Zrg+HWi`ZO!L@Nx9CaP)O>^!7+kg@?+)R6Ok68V2$ae>cn| z$HzotQBN6?v_6h3Yq$%$d=sH&ZgH)@-6a-k#P8@kjpMhx*&VPnM%^ zqNQPmqkkSpY^TSQ4WTYR0WooK$#HCHeCujp6X9^2U8Cf~?(7+2@iTKkew-*Zn8%gQsc5 z$T93pthCG%Y&_GmOAtuXb(2L9v* z{ckB&zKPbxnbv-VtYLkabaA2XVq3g3D*}&R~6!?N}QCJ62;NHtvyphZFe6(0* zHbw^aS!Ry0`F7F7AzycS&v&3}8QHy=*|)EoKVEC=z3hkDjQy3(qkBJ+7JJPNgd{)> zJ>NH`t>AtFf(JXyg74|MX(|;ACv()kAYlfx9rLMOO=5zkwftZ7Tp%688w~zakE1`X z9C;h!(8lu7xjMZ(SOAJ+)nc&k`rgW;kt*NvB@YCHra)MM z5WULjTuGxNL@%uu!3Fn-ZNmIrZ+{fWC|(v;l%*NF3}uESW25uU9YiHJ!RaxML!8}p zgfhb72?RVd%nAwvhce5#Pe)Rl1gl8 z{TisWyXepY|02rl3~D+_)(SX+8D0^tl2MA)n5N-IVNE^40)r2(IQt)r*Uq76)&U~S zrcf&jW_i*q5sqfpmrIZmKGOX&LhA^NlL$GK*$Yr8HpB%48WvfOLwdycg7?nq z=;D6keGM>Wqisdfuai%wXWHKMY~K04$lK_nRqLnF{rLVqeIS&5jofVJEaPaM$?|){ zp>-lJ1~9((pm-iSV<>p_oH;yr;k*)+Ux8>bg3l;stm4ub*2qm5USsKmw-b!%vr(n2 zhGBTWDJFKqD=drvCPS=4QtkCxzt>JkOzU&Cw&MN!V<&d@vv}*L1hD*LI!OPc))e=B#_|6krW(iD9rJbSBGUXjn%-XG{0~95Lug@Z0B3}5Qcr^87OZzvL(~@W@ z*uqvJ_ma*-C>t9i_fpq|J$S@2x%V3B#?z_>QFwL*J)!Ul#XX^TIGyIBlm$IG*TMHe z_gr8cN(K^T!`pLdu@p4S0rLpQPsKC@tS^PO^v5edq%Tt1yCP)s?p4&3K#v*qtniK* z%^JQk(i4FmAKMY9V5j_1aZkra__qo#&=3m)yNF>KwYQJ^Hzg01f9X&yI0fqXaQ(NA zkIAhjHnRT*3HKuH9RJa$SEV!+gD-zsfu8Zlif5I7Lp)aitw8^OSTSaN6gqkYbsFB3 zd~f4R;WagVw}CghX47Yk(EiB}#G^Lhogv$1K5NE?S2m`_-o6u}yZ`I*iPAOUkF_)mJB%2a~P~qXod6hs(hR#CFl%`9x*!2XFl0fNVNUe7q_hxgv)a90p zi_&1E!mzup8qN)0e#Vs+76cSq9+KrGt>K4z1oN+!5u7Nt()S9{u7qMu+S5t46w_f^ ze^47G85rv^TbeFS{-D+bYW)j!6fd>p;xE+3u*AW|EP=;dEL$BMs0dC16dReE{R)je zB@OxjE%3&$5|tpHHP#ZOV1`b~Oy~&C92iDS+Yz)WT@m_jrqu{U+!4G8PMv_2cx7(g z8f9AOph^S2GZb4Kx2tZ4>sgfc;ti6wTfGnIxU)pm&mlK_fA z)uCIBNEK}i((ur)LB(hLqo@U>nz-1ZO{-XC0#3EpZJu{+vXGz%*X)C3Va zLGCX=t(q*0NmV)$-w0lqtdYXXltVP_Yt}hIaTfXBOsVQ!-+QnVsv7|3o zNgJLLzHb&`wa&#!f=EA(vJe*ibCPYh^4jM=z-b$V>#_=@xTLkwF-X zY8bq%YHZYEh`4iE2 zQC#_uyi#@aBFfCGN?JJ)L5*ky-*1 zmH|#hLOZ%3>a|)XfX?DpOcE3G1gD}XQH?dm@-TDm)1X~J)Sv!~PGe1MQdJ_#o2DRY zV_LexWbf-~a?*^P!xI^e7-s6sq>=<>Fq)e3WFCe(MFWjAra5B}-Nl?aVpYZ zhG{{Rq{^rlPFOSV4~XVKI$%%WUZs^A`$-X#wy80g&Vsp^mIwP!rq+L@&K#rysi!t0 zlUkz6N~5YOJ^D}764-yDk|2dq5-&GUWgx2k%L2UypaqHWSbr>-?T$)*A$eSn-mCCN zP4U)L9?e=TMVym`McwjdKi#1Du}WD% z=YOcuqt@ajf;P1xfMW^maxKkh;}WBM1i5fTZ0U$tesLrc`-yu!^q^!@Sy$Kr%Yi~! zV<59A+8ApdPkL+1u;jKQ6dMJDd(5`(DUxf$<`P$9t0l3xYrV7NtvFB`uj?nCV*)?*Ng7bkJg z*rz&NO$y1woZS#U4JajIup@UADo7q;UxPJo7# z00vwBeb0G_1mWjP03=%6C$B*nN&*KqCg%Oyhc96EjW2)2Oq|>E-ElvOj z8kDq;TVSRM6ZCZRU21sBf0Ty70hLmy0hI!j1i=%W_!1d+q+u;F6lHgGOrEeQ2&8$^ z3%R#g!$ZJJfRuPW7a8J7`Nap1z_Fxxo|i94Qk^;`J9k{AscAXW z(ANkL1%{|z94bQfrOQC3>Z6ecL4=Xz$$=u-cPomD zPDG1CA7$mo8M$Eo;}nyaV}~h_zI0&7lIyK_F-zQf9$PZ97Rmm)s#LVv&_31SJsOhG zt|qhveDOLyYl~c&UOfnR+~6v(v{z zs9Ypj@ZobH6gdDjO?Ks>$f5Q4@~wABpjltd&k#S)knV%fCOCN`>u^UWv020Z*7maI}tI}ziruzZ<^mETht===g%rBhTet@Nv0s)T>B zg{nYirB_GO*$KBG(B*?l^W;`|+Z2VMOEqeum74v3edhNZvchW;!;lv=3Jft-+_qMM z4bT2pT#$^}c#~5~f;a*mj7rC{%%y7@uI(k>`!n8I0V-d!RwNO474Pr@MBG`i`H(FY zdUJ8N#$#@<_hNd^4o!1CuThy|Naf<~W9rOu1qSQZ=&ZxU%!S@M8E1$0#e;QC&g!#bySDZPY6^bMu=c_((41_0!>8v7E!PsMP!qkY0bJ zBF728?W>I7-a(HLqxcta1pN#K zy$h#7+D>>UC9JLxI6&UBj1X#(uR94|7%=^{izF0ZwHU!-iRwR)(`xyZ>?7c3Fd~n{ z8|WSM5^K~?V3d!o^*cKO)Aa9Vo!b#Yz(7KO2NH-(`+5g$rY8#gY&ic2aTlKdZ86P^ zralkz^2;J=git^}>4y;K|Mq+W_@{HHZ|ZRh^Txr4@c0=C8ha+xVmjuPBE3erh)lA@=U z1NQ;)0OtX+#SAkLuw&it#kzH~IT-1DqkGu;m}l5Cfp;5_L#mi|WThGBhKto5;F*(c z9z5(Hs@-Pz(Kv@#W|7)Kne>&CxM+qB9Y4z>0(|gq#YBz?QH%igk|Y z*KLcZ-eQ7I+O7G-V?CjSy;U*w4PAWZomnDW12^a15BD$|62 zzNedWVvPb(OzXPSxv?JtgvJH95__01--jc04>eAIi`?hL6ZD1A=Gv-6d;#eGpKVz*#k6Ld`G}5^$Ha9NMB?4xl-jHId))eK4%Oe-(}ZK)O87Ecx6JFoYoxRO$=0D9u@< z-gF#dX74#&JW8!C(mG|2z{Q*LUu1g_MtSDu#n$J?=s^F0&G?^<8`Hw_Gl z#EU5t3FnZe0UWiYq0mpNGH_3QF14y>6lB+OG?ZksV)W;k8fasH82~j@Ylx$U7-OK0 zNxsg(Oz%rZ?gF-Vq%{)5E|NCR;*g-f;8u~zBGgGi=7dOHuHsi6kO+qrij0|4)H(Kz z;_MkCHp=DV18FPh85f}D)PoRno822}u!ETSkct)5kmiwX^U z0y(0AgIBsT050{nOKo@Ps(A`};xi@ia8j7_D9?*KnjAqWII%Vw=t5SLVXI)}1mB6T%60BQZ&Y1|3^Kj~B@O8N9#7v!03%DR%E|UWX%SC;{vFz*lff!y$#ZSA!Jm@Y~p1Jgw|Zx{~b;}XLu8H_Q%nVq$V z)`Ef@7<%fh=%i1}SW_~ZDd?70b7NO9xXmyGDaq5;s;SBU;>5-7-4eh{L+z4aOI<7l z53-QAFpNALk;@)C+F+*yuqbxIXoO^1B^Tjk72~C)t$q>v~vbVVmc~j6(+tX4D)q4EG>pXIb>=I8>$bpLt z(I5+)wvnk+HC-1^?dEesxDzf*1)e&DSCCv$kg#!Ev8Vk)|)mb)Ut#(!*+E zn+VIEGo6pQU2V*OiD>?Q(0n(ki1LyotQ;g?%rC|bd*x0gfU^g zFPg9uK#GQ2J$n^n}P?V=A54D^~T*_V)BPk~-mz5L& zxQ9F)I;kYdgtr!Ii2$UG^^(K`UZiJ}mb%oswOwQrEwPVUoJc3Ei68QUa-uqMO+T}k z#!);>TmD6=>H#?*Cn$#w7m{~H1dyv{b+n^oM^e7e5M`47w;>w{fB2*V5&klyEDapU zM`kTMgxy0RHgkSm+(if2PQ1M`^hhpnE>&hgm!$3|S?*An>6M2wB}0Wu(l#B->GtYue2u7qT<5n4A&E=@P0MUwv|*yJ zLHaxeqpf*jK7K3U-Gu&faF7h~T-;XsXg!~gNzpJ+qHR&LOZ!LwVHo$fUSpsHa2f;* zOFMmzW}1xl9yd?|cs560Ax5Xn5*qVI=ggf3Cu#O;BO_s1OH=DilSu)m!JAbPSdyEc zGbP#*Yoc5E-#`vnxX=$9F$$gkCdI~ZfA621`}RMJ(i96x8uo*OfSkhqSB)=M zb2m3@2g|?KS+#0xyL{up=-Vwf>e#n{ZF81Cq&=r-*ioRe18x!k()0zy{*gNgp-^#` zd^2h?%_8Ia3iJNuYk!~X$habN4x&c^VycNC9COeDh&U}h9oNIcTDjeuF$YUpL=+3H zksx0H?w78Q>q9|KBSxD{P;V5f<73~BR*ll+NZR&+$j$^fh#=ca-o~Gm+~|Nu*V?ht zqbMyMCCO`JG)NJ)tF4KbhE=j_y%=7`Rt^{YTp7AGTOH9Khm4QB&brB^47Nx^T&UD| zI42~b8!F~K+#iO$q#aKHkMEd`hclPg!+S9zO6=K@xSka$^*#TywFxMYnsED@t3?PYAt+j?!tefoo#4^z^mg5(Uue`lB zrt-LsFu-hfYXC-~cQhv*T^<~S5OJCLk{`s0oyJ3roLgDp1c>cR|)n|uF$ zSSCB)vbO^0>FfHUo+_X(xtJ_@fj#NE|`zKFYb7a*3Oa$wWp|D;Z)DEzz9yjI7p zKGNp=P<@E!hM}?nImM^5GI~oFcFRdhiLq*qfBO-*>Q}H;y59nUSbBI{5_{yQ?M(#q z$U45*r0-8;++86LH%q?HHKCZwRp!2pu%}{@+`9OD?9qmpebuv4jgfo|HVqY{S;#6~ zCd%FXk4+QPagSvNT-WA}>7%_@i_=U#+6U&5$@b1~oOM^0Ib!~9_pN5~H-)d&# zKEGn?hI5*{FAK@ie!kz1b!0~RA0O-h=PCRjz?ol9kBbqbNhm2q}zA--*^i17^iR2fXUXZ*}@4#wO+^ZtX_Eag#}Crp5- z*}g@^xrbqO;w%MMyBC1fd&bFO9kR$}%;2YF6+69o7wY&DAcc_IF@WywjED$bN{VIs zak^=L5BX2We(@H#ngR=!{(=JmLHoC37Qp(vYQ`pZe^o8rP8)Ri#zHXm{Yw;0dXB7J zaw`TZ-B?)5G!niK2s%Ln)@I_haOdK$ul#oLEY}S(-H-MO-q-Xq6re#cxNc(7;H132 z=Uz;HKfV*{w0~x3q7tX0>-au^=fp4s&RXJo#83R%I~`_98~cJH6@T|UM0ICQq7}nQI3ID584c3W zU7m3rI)9mAJpQJUVc?D?i%?yUG35*p4r_mez~UWE@% zU=}vALd?lB_+s>9D()(HHYa&5(x^ zb`p)vQ`(lERBs=oXDlNYGAO+byvYP0J`)2at z%KE#tqu+3*KVQ&69wG8=?w$%wCbDJ3vj}<=zT)l2u>s{ztvm6cMtHF<`0aZaNSU%zvMfZdT^@=FEQ` zS^uhVrlSBX&56_ZLldRzX!&*1J*rFMYW;e(3=yqeEWSlt*N#S+`U{%Y|(%Ym>B>C6y^b|Z>L+2v$Z;Tt9NIN6JUZ@;0+?aF015$LZ7XZiPM zonsX*M3UVyr04PLR-fRH(N(-Xuva9CWvS~{+5_9Qdi@T#dKhdk80n6=`hm7%I8;5_ z)DFgQ(tdI9qv=jmb0UoU#8^3`VCbY(@=}}5Ee0=?Us$(=;onxb7hpDF5HL#JufafE zKZp{E`}S-Y2wGt`TZeO#rRlSfHF3K{9b8)UcP*G z%=2vpnMfYk^?$u;H|*C7K#>`_tj~YHJJ`5%6#V@VPA$=a2o)}~1>zGC%zp-QrKCt_ z*g}cdL|F)qeL&$hOze6l2FVok6jD8SBTpJA5rDKv=#)Qcq8rh{>QzD8df5~yJ)RcU zaqNv}60NdWShEh&o`NH@sql6O*11jryB_G&uT3>TLe z5257hhFnPY1|Gxt+s-&!86X8FFi-&Q+(-)TNi%bny`CJGhc(3{Cfj_r`enYb#A#Te zrC!XeOH`!;mMja~VIVTVpiyIoex${A~9tG}ChuSMPX zKXh*|xXh?dW@zNZ0b1%=w*$aPj3`2SP2|OGZzKY_uG6+iP4HAV8=lMlN_bi z>gZ-dD3QmcZynCCZ5k;iDbU-=XZ%8ESn=3(_KuO3hJ?-e_(O`17(;hCa&=|uB($*T z;fv})T1rnR-SYA(b*bd_y>+E>B#xqVyzF6y_tDR5!*kTwk|Fur*P~3uG-+CeW;|=^ zW;C>;3Kj*(7lE8Pml#c#93s@Nd69AL^aj6DkGA3pmdf<`A1y_-Jv85jf*dQhqgJ`G z+zx_++gf)jxEPFv3+!W$2&Md7EPDLV?}}Uh00K%*U584X*9}F<=&0Imf2Xe0u_x=J(yP!gXI%8Vvg@ z9Du%mN8D{ACgNDpXRzRY!D&jex=H_<@EcQkQ_kkiqdj*u;e-??wJD6Q0RRW0il>Ef zDn!n_8(z=uM`q7bhFXdSNK*zaIEd)`t&rHS$}!$_>Vr8uxg&M?t36gDEiU7Iwve{b znVsJbYqBez1u*dIcFFRgGv7qDX;?BWBc4%lD@=CO9GU|79RV9%)%&hsT%0v)tNR_l z`+Lz=caJNTR15u*!uPxv)ajg2bcGo06%S_el}fzj+tu+QC2snOPQYpO3Ivb5;MlWC z=!^UK>XFalX82JI)dOm%uyvakiI9;>V|BD^mv?NUe|#siQ5ridYJN#0L$&4ov1?b8 z8$w1O(Hcg&jPUZMM_Sdi%n#K7&^t0M&6)6Gp1}u-NGuD>y#ND{J~%ZINDzz68ws}8 zkQG3#WM7ejiTBoaiLpeo9@!Nk56Bf0BP%H~eqO4)IyO6%Zd#vbwYBG6#SPyV#%0$` zH;vPF%RH{6vq0LVU^b$L$|R37qoF_`%9Su-4r?>)R7`JK0LxF)JXxYNy$$iDLrTB3 zz8bxK%bzqTJuEb8;Qzg!$pGsT&+}fd{}cM3xmaER-F2M-FEy`lqOP2FAH9PPF2 z?U=3I%Kb4!{+t!Ff_4N)i3>V&zrh*I<}Iq99gB2{o)wjILXKV0qok*hmIsNxqY z%BoTW&YT{dxh^c%{T)(C+MHYHC0Q;&OI~k^KMmS+npxdNii?opcCwT^)=n~_FsNsc zq)mtLYB8DSxi{UISk7m6eJsB8lXg?95=fFi7~7TL5W(&=I%o9+6L#4KOfb{6bfcN_ zgg<38azqWD;I2#0p?qj4sLNM&YY4rsy@UO;L0h}!750IGO@P92{vrI2WF;3zC)dAP zH8-KrA(#b2;&b27{lO$_0fZGsgfs}P?TV~Ep=SW49r>nsY}JR40w1U8_~$yen-zWn zq2mw-qndd->IEta7`1Bt!mym4eohYZ3BEc$L2F3f&S1)MG9EXNUFY%IB`78&ihH8t z%-OrMtscvnHgahPZf~gLVFUchT%p+kx7}zgx@{)36jNs$sv7+sIll>5^6yx{Ri!R( z>fFv*=E|a%u8Z?*8#iZi85$h+2m0Fiips5w{m!T)Er8c+-_V`9qsZEw(TLwjJyDkw zk48TQc36Eln#!l3e?Fv<{rn%Jw1oNaNL%2XOe8S7`_Gue!QI}(+yyu*^C!ET)!KGA z;KAwLEf-Fd)N74Q=78X6DH7JukCh~EeE^}tX}HLrU}f35k-IjXrLV~qs)%BjNAsAD zMfcz3{qP06LH>NZ4NlrYio|f`x(U`T-xXsxk(*gP{P>Z6Ms@W=1$F}s?dyDpzp(Z1 z{g3#$U#OdlkZ5%EC1_ze#7t*zw15M+`lt9cbOA)F0W;RL*MB6OjANjV^i+ z?wM&u?y<_MjUkZyrfH zQz;!lQfU!!XeupSjjd`lC=WWTt`xG8s}ER7$z;x4x;%(R7m7#7Ma_`16FJhFu+h(9 zMN|aw%5n4XUaY1lKyp*cT!$%gbt?w!etpag@ZltYWv2Dd45pc+ueXHw3K?e=1?MaS z>$t{1&->-)^K1z(=I3p|rV!*Vl@!-j+;wEHhF%r=8_h-fF#$z*DhEX}pO%b-XqAT_cowm4n#>AiS z-$?IWq?Iy@v8iaXzb;WINaN;s4`eES;f_zpMKa<{iLRugGs{G{XIK#>*HK_nj-jQ% z9E5*W9u*ASwE3t9uE4dTd^kVKo`6&N#W2PuRcl;%8A3lQa>m2AD`;U-MmaAop|x#K zqI>z_=p~YwcelB5zu{SQ$~+21)o2+zn)eI9$PO2m@vp3OX$XqiHA7|5>zQoDq7C0~vCiKW=S{Ib?auPux9W5Mg6V^z zGVDF6b%r`o=D0i)&hq`Vi`#wIs&4rPQ->s97Z$6Z%bPs#W#-p9rlF^%?=ImNzSF8W zkKcXp3X%x;`1?rEph^aMKRosC+*Of8M-aIuyL1lX_Y zpq_8WpHWZN25x2=L=YKRhI{bV2M}CsjS6w0Y>dR%XLv(5sDBsk{D%K$k5x3WYS{}3 z0un+30)h?fv4DlU|LUfIBQN0f>0oSa$7JJVZh5U?>x8b3A=vH1O=~}kLc@pwJ=D!M zP{Jrm55{Hvtt^GBgt6W^OeR?YJ&Vft^HLfhH}MtZDO|w!cO!De z3OokR7@5r-rvQc__}$ia39M2`qT$!8?Tz=ooQG}KIbNSrhobQ!!{PaRG#^+N1aNat zk;j(4X@}N2C!T8AD@-mokhAvAp?wfrFe`+qqUL22oi4jhnO%5>m>`acFphLxIBZ@5 z%z$8<{VwNo7#0jLwMrlckw(@ zlc0&&l(p)fjC;ORW_1ou0KH3A^x(CtS3)~!zDBxPz2bol($oYEW>C=C=WHux0+WeL zWEh$Aoslom#jGfi_1sY3-6{*cK~0cqx2e;3O?!r~o7BnkBYgd}+LV5o9SKR`*+eHO zLK=m8jV9@+&+TkpRBHzbpm&ZlZ`ztXuNvu_r}Cv=+rcn8jdA?iPQvtoI!w&Jhkb_Q zBt{YtZH#?}f59;dJQdSM-UNlBRC1K*m(A32r&(GIvvRInn$J7sb4DK{fzmVCiDX+8s-?ZW z>pbN**%h9nAe5Te(IY8uz0sC-_Jq0M(HM9L7!g9jZIqB{BQWZeAV^jOGVh+fa1b4c zM>wlH_RqrL-=NlbF@U8|qrA;MgmPo65$cpRdGMD)q_J3&eS1z5;MmeJ5=2=NU;fvg z*ctVUEZ#cdjO2{h9#Qkxm6j=-)9OeFSryGQ?d#2nbB;Sk@Esh20ezJLAOzY{J!a+gZ~Km1ag8&JCW->38+b^F-o@BMSKrOE!_{3ENy zy9~BBObS%KSEtIasoDHQYS+hU2V2kEU1^t}XPz5#3R_o{nWOTX`LEMI>` zdi}I2w%1!37@Ln8+%h;AkRy>jBV~oh5#toeBHq+C%@>lkAMQ=M?!E3P|LG5s?_WL0 zUbzc+@zuh}l@38xGA&oHzxjV7$EfXz&~MY-+Zx_I-QkpeS@d<+fhDt7XXc^x z^X0Rf_BqwuT6e4TopgwT%F0Qv=d62UwJZGP8?~eAjlg?~jcha4F8q*nG5-Bz-^#Sl zIl+Q;t5_!6zL;lt_6Zk@PnWk*XOl{YZ&Nzkh4%}pT;fZ#?whN9b~vP_&objT_q<4U z;cZU^8?LK1teMFf%{Q-8IgaJUtfze)z8j6_C+=gIu;*vxtMw(^^L&>ty4YP2_tKmx z=AJV(V zTk8}It5b8{Zn}{#dXvv=UBbK<4<5}4U2;)4Vd;OlyzC1K+ohX3-?1fgb!!&&2u3I$ zmYn%QPNI9~r&S975>q4kK3LVBnsCKL#6w6}Ma=d_>mJ+of;cKedFv|gF1wwa%%%-Ox{+@9)dZ<-EOuQ|GH z(j}wn%2MCAk5qqD-IY5S{r>a%DNj6ti%-A0)-G4~U(uidu3SGhg=`MQ3)d!J9%w0?i=ufP5F{}+`S9^jo~ml1n|rA@U(xhhKhuvu{9#1D^)N)LC5y^LMm z)_*>F@}$I@8!D^6PvHD{u2}ii5$BaNh10+JTKRhiYwg~8=+^(>ROVLIS5|y4W%4YP z(_4NPJoVx$*}%W7iA^eFK_gb;zj4R6L-qmQj7%cTpy6>2hOaZtBi05joj4WPLOlf> za|3ldV4wjg#=sEm3>*wj%`1rysVqn>js>;O&<&_m^LF?FRC*6Mj?4|y4Wt_wj{%K< zwDG}BdvuK*ZQQ|`KqVJ}8U;}_J_m}x>z?HNBJfBwy7n)(Z;QVMYR_R|U=TpjUJn$3 zYfmgFz~*YJ#&6XMz^X1o7Txk0z<>bH8~}|d%?0`$oA$g0X(1z^<)?vG$)H&N92f>* z?GT?M8-g_ydRL2Cck44S#D%gl@S~U%%nLQCxTG>C6+B&u9tP+KO2YIvFml_XXhu6; z65Sm1c~XQqHAOIUkS0;kwWCkGAhc(dLA9ez!=RghJ`sU1VNN;J1e9qBbp7a~#t8lT zRZ#utW60=6p!dHKMrbr*?Tw=wfZowX7{JhkYyh@yFS=RieMf{@KT*s=?Mb4Wg5K3a tm?F>u4HcA*7rK7*_8>z4>UN|ohT1v|@MZ<(AW*InWJm;NkGZ`d9spHm^@0EZ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.java b/src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.java deleted file mode 100644 index 6e0c6a36f..000000000 --- a/src/java/com/twitter/search/earlybird/search/relevance/scoring/TestScoringFunction.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.twitter.search.earlybird.search.relevance.scoring; - -import org.apache.lucene.search.Explanation; - -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -/** - * A dummy scoring function for test, the score is always tweetId/10000.0 - * Since score_filter: operator requires all score to be between [0, 1], if you want to use this - * with it, don't use any tweet id larger than 10000 in your test. - */ -public class TestScoringFunction extends ScoringFunction { - private ThriftSearchResultMetadata metadata = null; - private float score; - - public TestScoringFunction(ImmutableSchemaInterface schema) { - super(schema); - } - - @Override - protected float score(float luceneQueryScore) { - long tweetId = tweetIDMapper.getTweetID(getCurrentDocID()); - this.score = (float) (tweetId / 10000.0); - System.out.println(String.format("score for tweet %10d is %6.3f", tweetId, score)); - return this.score; - } - - @Override - protected Explanation doExplain(float luceneScore) { - return null; - } - - @Override - public ThriftSearchResultMetadata getResultMetadata(ThriftSearchResultMetadataOptions options) { - if (metadata == null) { - metadata = new ThriftSearchResultMetadata() - .setResultType(ThriftSearchResultType.RELEVANCE) - .setPenguinVersion(EarlybirdConfig.getPenguinVersionByte()); - metadata.setScore(score); - } - return metadata; - } - - @Override - public void updateRelevanceStats(ThriftSearchResultsRelevanceStats relevanceStats) { - } -} diff --git a/src/java/com/twitter/search/earlybird/segment/DLSegmentDataProvider.docx b/src/java/com/twitter/search/earlybird/segment/DLSegmentDataProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..5eb7b96a7fa3a0891ef0d846b6fff0fdd6c319b2 GIT binary patch literal 37355 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 newSegmentList() throws IOException { - Set segmentNames = SegmentDLUtil.getSegmentNames(dlFactory, null, hashPartitionID); - List segmentList = new ArrayList<>(segmentNames.size()); - for (String segmentName : segmentNames) { - Segment segment = Segment.fromSegmentName(segmentName, EarlybirdConfig.getMaxSegmentSize()); - segmentList.add(segment); - } - // Sort the segments by ID. - Collections.sort(segmentList); - return segmentList; - } -} diff --git a/src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.docx b/src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.docx new file mode 100644 index 0000000000000000000000000000000000000000..faf17f308228277cf06a9764f8da3d1f3f2d054f GIT binary patch literal 39287 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.java b/src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.java deleted file mode 100644 index 88aa02a5c..000000000 --- a/src/java/com/twitter/search/earlybird/segment/DLSegmentDataReaderSet.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.twitter.search.earlybird.segment; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; - -import org.apache.thrift.TException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.indexing.thriftjava.ThriftVersionedEvents; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchCustomGauge; -import com.twitter.search.common.metrics.SearchRequestStats; -import com.twitter.search.common.schema.earlybird.EarlybirdThriftDocumentUtil; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.io.ReaderWithStatsFactory; -import com.twitter.search.common.util.io.TransformingRecordReader; -import com.twitter.search.common.util.io.dl.DLMultiStreamReader; -import com.twitter.search.common.util.io.dl.DLReaderWriterFactory; -import com.twitter.search.common.util.io.dl.DLTimestampedReaderFactory; -import com.twitter.search.common.util.io.dl.SegmentDLUtil; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.common.util.io.recordreader.RecordReaderFactory; -import com.twitter.search.common.util.thrift.ThriftUtils; -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.partition.SegmentInfo; - -public class DLSegmentDataReaderSet implements SegmentDataReaderSet { - private static final Logger LOG = LoggerFactory.getLogger(DLSegmentDataReaderSet.class); - - public static final SearchRequestStats STATUS_DL_READ_STATS = - SearchRequestStats.export("status_dlreader", TimeUnit.MICROSECONDS, false); - private static final SearchRequestStats UPDATE_EVENT_DL_READ_STATS = - SearchRequestStats.export("update_events_dlreader", TimeUnit.MICROSECONDS, false); - // The number of tweets not indexed because they failed deserialization. - private static final SearchCounter STATUS_SKIPPED_DUE_TO_FAILED_DESERIALIZATION_COUNTER = - SearchCounter.export("statuses_skipped_due_to_failed_deserialization"); - - @VisibleForTesting - public static final int FRESH_READ_THRESHOLD = (int) TimeUnit.MINUTES.toMillis(1); - - private final int documentReadFreshnessThreshold = - EarlybirdConfig.getInt("documents_reader_freshness_threshold_millis", 10000); - private final int updateReadFreshnessThreshold = - EarlybirdConfig.getInt("updates_freshness_threshold_millis", FRESH_READ_THRESHOLD); - private final int dlReaderVersion = EarlybirdConfig.getInt("dl_reader_version"); - - private final DLReaderWriterFactory dlFactory; - private final RecordReaderFactory dlUpdateEventsFactory; - private final EarlybirdIndexConfig indexConfig; - private final Clock clock; - - private RecordReader documentReader; - - // RecordReaders for update events that span all live segments. - private final RecordReader updateEventsReader; - private final DLMultiStreamReader updateEventsMultiReader; - private final Map> updateEventReaders = new HashMap<>(); - - DLSegmentDataReaderSet( - DLReaderWriterFactory dlFactory, - final EarlybirdIndexConfig indexConfig, - Clock clock) throws IOException { - this.dlFactory = dlFactory; - this.indexConfig = indexConfig; - this.clock = clock; - - this.dlUpdateEventsFactory = new ReaderWithStatsFactory( - new DLTimestampedReaderFactory(dlFactory, clock, updateReadFreshnessThreshold), - UPDATE_EVENT_DL_READ_STATS); - this.updateEventsMultiReader = - new DLMultiStreamReader("update_events", dlUpdateEventsFactory, true, clock); - this.updateEventsReader = - new TransformingRecordReader<>(updateEventsMultiReader, record -> - (record != null) ? deserializeTVE(record.getBytes()) : null); - - SearchCustomGauge.export("open_dl_update_events_streams", updateEventReaders::size); - } - - private ThriftVersionedEvents deserializeTVE(byte[] bytes) { - ThriftVersionedEvents event = new ThriftVersionedEvents(); - try { - ThriftUtils.fromCompactBinaryFormat(bytes, event); - return event; - } catch (TException e) { - LOG.error("error deserializing TVE", e); - return null; - } - } - - @Override - public void attachDocumentReaders(SegmentInfo segmentInfo) throws IOException { - // Close any document reader left open before. - if (documentReader != null) { - LOG.warn("Previous documentReader not closed: {}", documentReader); - completeSegmentDocs(segmentInfo); - } - documentReader = newDocumentReader(segmentInfo); - } - - @Override - public void attachUpdateReaders(SegmentInfo segmentInfo) throws IOException { - if (updateEventsMultiReader == null) { - return; - } - - String segmentName = segmentInfo.getSegmentName(); - if (getUpdateEventsReaderForSegment(segmentInfo) != null) { - LOG.info("Update events reader for segment {} is already attached.", segmentName); - return; - } - - long updateEventStreamOffsetTimestamp = segmentInfo.getUpdatesStreamOffsetTimestamp(); - LOG.info("Attaching update events reader for segment {} with timestamp: {}.", - segmentName, updateEventStreamOffsetTimestamp); - - String topic = SegmentDLUtil.getDLTopicForUpdateEvents(segmentName, dlReaderVersion); - RecordReader recordReader = - dlUpdateEventsFactory.newRecordReaderForTimestamp(topic, updateEventStreamOffsetTimestamp); - updateEventsMultiReader.addRecordReader(recordReader, topic); - updateEventReaders.put(segmentInfo.getTimeSliceID(), - new TransformingRecordReader<>(recordReader, this::deserializeTVE)); - } - - @Override - public void stopAll() { - if (documentReader != null) { - documentReader.close(); - } - if (updateEventsReader != null) { - updateEventsReader.close(); - } - try { - dlFactory.close(); - } catch (IOException e) { - LOG.error("Exception while closing DL factory", e); - } - } - - @Override - public void completeSegmentDocs(SegmentInfo segmentInfo) { - if (documentReader != null) { - documentReader.close(); - documentReader = null; - } - } - - @Override - public void stopSegmentUpdates(SegmentInfo segmentInfo) { - if (updateEventsMultiReader != null) { - updateEventsMultiReader.removeStream( - SegmentDLUtil.getDLTopicForUpdateEvents(segmentInfo.getSegmentName(), dlReaderVersion)); - updateEventReaders.remove(segmentInfo.getTimeSliceID()); - } - } - - @Override - public RecordReader newDocumentReader(SegmentInfo segmentInfo) throws IOException { - String topic = SegmentDLUtil.getDLTopicForTweets(segmentInfo.getSegmentName(), - EarlybirdConfig.getPenguinVersion(), dlReaderVersion); - final long timeSliceId = segmentInfo.getTimeSliceID(); - final DocumentFactory docFactory = indexConfig.createDocumentFactory(); - - // Create the underlying DLRecordReader wrapped with the tweet reader stats. - RecordReader dlReader = new ReaderWithStatsFactory( - new DLTimestampedReaderFactory( - dlFactory, - clock, - documentReadFreshnessThreshold), - STATUS_DL_READ_STATS) - .newRecordReader(topic); - - // Create the wrapped reader which transforms serialized byte[] to TweetDocument. - return new TransformingRecordReader<>( - dlReader, - new Function() { - @Override - public TweetDocument apply(byte[] input) { - ThriftIndexingEvent event = new ThriftIndexingEvent(); - try { - ThriftUtils.fromCompactBinaryFormat(input, event); - } catch (TException e) { - LOG.error("Could not deserialize status document", e); - STATUS_SKIPPED_DUE_TO_FAILED_DESERIALIZATION_COUNTER.increment(); - return null; - } - - Preconditions.checkNotNull(event.getDocument()); - return new TweetDocument( - docFactory.getStatusId(event), - timeSliceId, - EarlybirdThriftDocumentUtil.getCreatedAtMs(event.getDocument()), - docFactory.newDocument(event)); - } - }); - } - - @Override - public RecordReader getDocumentReader() { - return documentReader; - } - - @Override - public RecordReader getUpdateEventsReader() { - return updateEventsReader; - } - - @Override - public RecordReader getUpdateEventsReaderForSegment( - SegmentInfo segmentInfo) { - return updateEventReaders.get(segmentInfo.getTimeSliceID()); - } - - @Override - public Optional getUpdateEventsStreamOffsetForSegment(SegmentInfo segmentInfo) { - String topic = - SegmentDLUtil.getDLTopicForUpdateEvents(segmentInfo.getSegmentName(), dlReaderVersion); - return updateEventsMultiReader.getUnderlyingOffsetForSegmentWithTopic(topic); - } - - @Override - public boolean allCaughtUp() { - return ((getDocumentReader() == null) || getDocumentReader().isCaughtUp()) - && ((getUpdateEventsReader() == null) || getUpdateEventsReader().isCaughtUp()); - } -} diff --git a/src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.docx b/src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.docx new file mode 100644 index 0000000000000000000000000000000000000000..95d57e076ea7fff57a9693c32566d16eed7ce50b GIT binary patch literal 37309 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 F0|1|X-SGeb literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.java b/src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.java deleted file mode 100644 index 0d6ad55b5..000000000 --- a/src/java/com/twitter/search/earlybird/segment/EmptySegmentDataReaderSet.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.twitter.search.earlybird.segment; - -import java.util.Optional; - -import com.twitter.search.common.indexing.thriftjava.ThriftVersionedEvents; -import com.twitter.search.common.util.io.EmptyRecordReader; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.earlybird.document.TweetDocument; -import com.twitter.search.earlybird.partition.SegmentInfo; - -/** - * A SegmentDataReaderSet that returns no data. Uses a DocumentReader that is - * always caught up, but never gets exhausted. - * Can be used for bringing up an earlybird against a static set of segments, - * and will not incorporate any new updates. - */ -public class EmptySegmentDataReaderSet implements SegmentDataReaderSet { - public static final EmptySegmentDataReaderSet INSTANCE = new EmptySegmentDataReaderSet(); - - @Override - public void attachDocumentReaders(SegmentInfo segmentInfo) { - } - - @Override - public void attachUpdateReaders(SegmentInfo segmentInfo) { - } - - @Override - public void completeSegmentDocs(SegmentInfo segmentInfo) { - } - - @Override - public void stopSegmentUpdates(SegmentInfo segmentInfo) { - } - - @Override - public void stopAll() { - } - - @Override - public boolean allCaughtUp() { - // ALWAYS CAUGHT UP - return true; - } - - @Override - public RecordReader newDocumentReader(SegmentInfo segmentInfo) - throws Exception { - return null; - } - - @Override - public RecordReader getDocumentReader() { - return new EmptyRecordReader<>(); - } - - @Override - public RecordReader getUpdateEventsReader() { - return null; - } - - @Override - public RecordReader getUpdateEventsReaderForSegment( - SegmentInfo segmentInfo) { - return null; - } - - @Override - public Optional getUpdateEventsStreamOffsetForSegment(SegmentInfo segmentInfo) { - return Optional.of(0L); - } -} diff --git a/src/java/com/twitter/search/earlybird/segment/SegmentDataProvider.docx b/src/java/com/twitter/search/earlybird/segment/SegmentDataProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..38b7755384ede1d1e381bab9af9e66a0f5d7e367 GIT binary patch literal 36966 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 IEbRmF01F9tp8x;= literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/segment/SegmentDataReaderSet.java b/src/java/com/twitter/search/earlybird/segment/SegmentDataReaderSet.java deleted file mode 100644 index 84b18c34e..000000000 --- a/src/java/com/twitter/search/earlybird/segment/SegmentDataReaderSet.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.twitter.search.earlybird.segment; - -import java.io.IOException; -import java.util.Optional; - -import com.twitter.search.common.indexing.thriftjava.ThriftVersionedEvents; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.earlybird.document.TweetDocument; -import com.twitter.search.earlybird.partition.SegmentInfo; - -/** - * SegmentDataReaderSet provides an interface to create and manage the various - * RecordReaders used to index Earlybird segments. - */ -public interface SegmentDataReaderSet { - /** - * Instruct the document RecordReaders (i.e. document, geo, ... as appropriate) to read from this - * segment. - */ - void attachDocumentReaders(SegmentInfo segmentInfo) throws IOException; - - /** - * Instruct the reader set to add segment to non-document RecordReaders (deletes, features, etc.) - */ - void attachUpdateReaders(SegmentInfo segmentInfo) throws IOException; - - /** - * Mark a segment as "complete", denoting that we are done reading document records from it. - * - * This instructs the reader set to stop reading documents from the segment (if it hasn't - * already), although for now geo-document records can still be read. Updates RecordReaders - * (deletes, etc.) may continue to read entries for the segment. - */ - void completeSegmentDocs(SegmentInfo segmentInfo); - - /** - * This instructs the reader set to stop reading updates for the Segment. It - * should remove the segment from all non-document RecordReaders (deletes, etc.) - */ - void stopSegmentUpdates(SegmentInfo segmentInfo); - - /** - * Stops all RecordReaders and closes all resources. - */ - void stopAll(); - - /** - * Returns true if all RecordReaders are 'caught up' with the data sources they - * are reading from. This might mean that the end of a file has been reached, - * or that we are waiting/polling for new records from an append-only database. - */ - boolean allCaughtUp(); - - /** - * Create a new DocumentReader for the given segment that is not managed by this set. - */ - RecordReader newDocumentReader(SegmentInfo segmentInfo) throws Exception; - - /** - * Returns the document reader for the current segment. - */ - RecordReader getDocumentReader(); - - /** - * Returns a combined update events reader for all segments. - */ - RecordReader getUpdateEventsReader(); - - /** - * Returns the update events reader for the given segment. - */ - RecordReader getUpdateEventsReaderForSegment(SegmentInfo segmentInfo); - - /** - * Returns the offset in the update events stream for the given segment that this earlybird should - * start indexing from. - */ - Optional getUpdateEventsStreamOffsetForSegment(SegmentInfo segmentInfo); -} diff --git a/src/java/com/twitter/search/earlybird/segment/SegmentProvider.docx b/src/java/com/twitter/search/earlybird/segment/SegmentProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..1dc2b3ea1805f404398cff82364d05237c74092b GIT binary patch literal 36854 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/segment/SegmentProvider.java b/src/java/com/twitter/search/earlybird/segment/SegmentProvider.java deleted file mode 100644 index 7b8b94554..000000000 --- a/src/java/com/twitter/search/earlybird/segment/SegmentProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.twitter.search.earlybird.segment; - -import java.io.IOException; -import java.util.List; - -import com.twitter.search.common.partitioning.base.Segment; - -public interface SegmentProvider { - /** - * Returns a *new* sorted list of all available segments on disk / db / hdfs / etc. - */ - List newSegmentList() throws IOException; -} diff --git a/src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.docx b/src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.docx new file mode 100644 index 0000000000000000000000000000000000000000..a16ef2ae01ca86515dcfb8d85974660c57e083e7 GIT binary patch literal 37477 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.java b/src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.java deleted file mode 100644 index b8f6a67ec..000000000 --- a/src/java/com/twitter/search/earlybird/stats/EarlybirdRPCStats.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.search.earlybird.stats; - -import java.util.concurrent.TimeUnit; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.metrics.SearchRequestStats; - -/** - * SearchRequestStats with earlybird-specific additional stats. - */ -public final class EarlybirdRPCStats { - private final SearchRequestStats requestStats; - // Number of queries that were terminated early. - private final SearchCounter earlyTerminatedRequests; - - // We do not count client error in the response error rate, but track it separately. - private final SearchRateCounter responseClientErrors; - - public EarlybirdRPCStats(String name) { - requestStats = SearchRequestStats.export(name, TimeUnit.MICROSECONDS, true, true); - earlyTerminatedRequests = SearchCounter.export(name + "_early_terminated"); - responseClientErrors = SearchRateCounter.export(name + "_client_error"); - } - - public long getRequestRate() { - return (long) (double) requestStats.getRequestRate().read(); - } - - public long getAverageLatency() { - return (long) (double) requestStats.getTimerStats().read(); - } - - /** - * Records a completed earlybird request. - * @param latencyUs how long the request took to complete, in microseconds. - * @param resultsCount how many results were returned. - * @param success whether the request was successful or not. - * @param earlyTerminated whether the request terminated early or not. - * @param clientError whether the request failure is caused by client errors - */ - public void requestComplete(long latencyUs, long resultsCount, boolean success, - boolean earlyTerminated, boolean clientError) { - // We treat client errors as successes for top-line metrics to prevent bad client requests (like - // malformed queries) from dropping our success rate and generating alerts. - requestStats.requestComplete(latencyUs, resultsCount, success || clientError); - - if (earlyTerminated) { - earlyTerminatedRequests.increment(); - } - if (clientError) { - responseClientErrors.increment(); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.docx b/src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.docx new file mode 100644 index 0000000000000000000000000000000000000000..a26252b1634304fa0b34ab2a1ef4110743c1cb72 GIT binary patch literal 38880 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

    41!f4cR#bo$`kI_UY|B6Citj10ZgJTXmLGG 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.java b/src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.java deleted file mode 100644 index dcaedafdf..000000000 --- a/src/java/com/twitter/search/earlybird/stats/EarlybirdSearcherStats.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.twitter.search.earlybird.stats; - -import java.util.EnumMap; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; - -import com.google.common.base.Preconditions; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchMetricTimerOptions; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.metrics.SearchTimer; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.ranking.thriftjava.ThriftRankingParams; -import com.twitter.search.common.ranking.thriftjava.ThriftScoringFunctionType; -import com.twitter.search.earlybird.EarlybirdSearcher; -import com.twitter.search.earlybird.common.ClientIdUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; - -/** - * Manages counter and timer stats for EarlybirdSearcher. - */ -public class EarlybirdSearcherStats { - private static final TimeUnit TIME_UNIT = TimeUnit.MICROSECONDS; - - private final SearchStatsReceiver earlybirdServerStatsReceiver; - - public final SearchCounter thriftQueryWithSerializedQuery; - public final SearchCounter thriftQueryWithLuceneQuery; - public final SearchCounter thriftQueryWithoutTextQuery; - public final SearchCounter addedFilterBadUserRep; - public final SearchCounter addedFilterFromUserIds; - public final SearchCounter addedFilterTweetIds; - public final SearchCounter unsetFiltersForSocialFilterTypeQuery; - public final SearchCounter querySpecificSignalMapTotalSize; - public final SearchCounter querySpecificSignalQueriesUsed; - public final SearchCounter querySpecificSignalQueriesErased; - public final SearchCounter authorSpecificSignalMapTotalSize; - public final SearchCounter authorSpecificSignalQueriesUsed; - public final SearchCounter authorSpecificSignalQueriesErased; - public final SearchCounter nullcastTweetsForceExcluded; - public final SearchCounter nullcastUnexpectedResults; - public final SearchCounter nullcastUnexpectedQueries; - public final SearchCounter relevanceAntiGamingFilterUsed; - public final SearchCounter relevanceAntiGamingFilterNotRequested; - public final SearchCounter relevanceAntiGamingFilterSpecifiedTweetsAndFromUserIds; - public final SearchCounter relevanceAntiGamingFilterSpecifiedTweets; - public final SearchCounter relevanceAntiGamingFilterSpecifiedFromUserIds; - public final SearchCounter numCollectorAdjustedMinSearchedStatusID; - - public final Map numRequestsWithBlankQuery; - private final Map latencyByScoringFunctionType; - private final Map> latencyByScoringFunctionTypeAndClient; - private final Map latencyByTensorflowModel; - - public EarlybirdSearcherStats(SearchStatsReceiver earlybirdServerStatsReceiver) { - this.earlybirdServerStatsReceiver = earlybirdServerStatsReceiver; - - this.thriftQueryWithLuceneQuery = - earlybirdServerStatsReceiver.getCounter("thrift_query_with_lucene_query"); - this.thriftQueryWithSerializedQuery = - earlybirdServerStatsReceiver.getCounter("thrift_query_with_serialized_query"); - this.thriftQueryWithoutTextQuery = - earlybirdServerStatsReceiver.getCounter("thrift_query_without_text_query"); - - this.addedFilterBadUserRep = - earlybirdServerStatsReceiver.getCounter("added_filter_bad_user_rep"); - this.addedFilterFromUserIds = - earlybirdServerStatsReceiver.getCounter("added_filter_from_user_ids"); - this.addedFilterTweetIds = - earlybirdServerStatsReceiver.getCounter("added_filter_tweet_ids"); - - this.unsetFiltersForSocialFilterTypeQuery = - earlybirdServerStatsReceiver.getCounter("unset_filters_for_social_filter_type_query"); - this.querySpecificSignalMapTotalSize = - earlybirdServerStatsReceiver.getCounter("query_specific_signal_map_total_size"); - this.querySpecificSignalQueriesUsed = - earlybirdServerStatsReceiver.getCounter("query_specific_signal_queries_used"); - this.querySpecificSignalQueriesErased = - earlybirdServerStatsReceiver.getCounter("query_specific_signal_queries_erased"); - this.authorSpecificSignalMapTotalSize = - earlybirdServerStatsReceiver.getCounter("author_specific_signal_map_total_size"); - this.authorSpecificSignalQueriesUsed = - earlybirdServerStatsReceiver.getCounter("author_specific_signal_queries_used"); - this.authorSpecificSignalQueriesErased = - earlybirdServerStatsReceiver.getCounter("author_specific_signal_queries_erased"); - this.nullcastTweetsForceExcluded = - earlybirdServerStatsReceiver.getCounter("force_excluded_nullcast_result_count"); - this.nullcastUnexpectedResults = - earlybirdServerStatsReceiver.getCounter("unexpected_nullcast_result_count"); - this.nullcastUnexpectedQueries = - earlybirdServerStatsReceiver.getCounter("queries_with_unexpected_nullcast_results"); - this.numCollectorAdjustedMinSearchedStatusID = - earlybirdServerStatsReceiver.getCounter("collector_adjusted_min_searched_status_id"); - - this.relevanceAntiGamingFilterUsed = earlybirdServerStatsReceiver - .getCounter("relevance_anti_gaming_filter_used"); - this.relevanceAntiGamingFilterNotRequested = earlybirdServerStatsReceiver - .getCounter("relevance_anti_gaming_filter_not_requested"); - this.relevanceAntiGamingFilterSpecifiedTweetsAndFromUserIds = earlybirdServerStatsReceiver - .getCounter("relevance_anti_gaming_filter_specified_tweets_and_from_user_ids"); - this.relevanceAntiGamingFilterSpecifiedTweets = earlybirdServerStatsReceiver - .getCounter("relevance_anti_gaming_filter_specified_tweets"); - this.relevanceAntiGamingFilterSpecifiedFromUserIds = earlybirdServerStatsReceiver - .getCounter("relevance_anti_gaming_filter_specified_from_user_ids"); - - this.latencyByScoringFunctionType = new EnumMap<>(ThriftScoringFunctionType.class); - this.latencyByScoringFunctionTypeAndClient = new EnumMap<>(ThriftScoringFunctionType.class); - this.latencyByTensorflowModel = new ConcurrentHashMap<>(); - - for (ThriftScoringFunctionType type : ThriftScoringFunctionType.values()) { - this.latencyByScoringFunctionType.put(type, getTimerStatsByName(getStatsNameByType(type))); - this.latencyByScoringFunctionTypeAndClient.put(type, new ConcurrentHashMap<>()); - } - - this.numRequestsWithBlankQuery = new EnumMap<>(EarlybirdSearcher.QueryMode.class); - - for (EarlybirdSearcher.QueryMode queryMode : EarlybirdSearcher.QueryMode.values()) { - String counterName = - String.format("num_requests_with_blank_query_%s", queryMode.name().toLowerCase()); - - this.numRequestsWithBlankQuery.put( - queryMode, earlybirdServerStatsReceiver.getCounter(counterName)); - } - } - - /** - * Records the latency for a request for the applicable stats. - * @param timer A stopped timer that timed the request. - * @param request The request that was timed. - */ - public void recordRelevanceStats(SearchTimer timer, EarlybirdRequest request) { - Preconditions.checkNotNull(timer); - Preconditions.checkNotNull(request); - Preconditions.checkArgument(!timer.isRunning()); - - ThriftSearchRelevanceOptions relevanceOptions = request.getSearchQuery().getRelevanceOptions(); - - // Only record ranking searches with a set type. - if (!relevanceOptions.isSetRankingParams() - || !relevanceOptions.getRankingParams().isSetType()) { - return; - } - - ThriftRankingParams rankingParams = relevanceOptions.getRankingParams(); - ThriftScoringFunctionType scoringFunctionType = rankingParams.getType(); - - latencyByScoringFunctionType.get(scoringFunctionType).stoppedTimerIncrement(timer); - - if (request.getClientId() != null) { - getTimerStatsByClient(scoringFunctionType, request.getClientId()) - .stoppedTimerIncrement(timer); - } - - if (scoringFunctionType != ThriftScoringFunctionType.TENSORFLOW_BASED) { - return; - } - - String modelName = rankingParams.getSelectedTensorflowModel(); - - if (modelName != null) { - getTimerStatsByTensorflowModel(modelName).stoppedTimerIncrement(timer); - } - } - - /** - * Creates a search timer with options specified by TweetsEarlybirdSearcherStats. - * @return A new SearchTimer. - */ - public SearchTimer createTimer() { - return new SearchTimer(new SearchMetricTimerOptions.Builder() - .withTimeUnit(TIME_UNIT) - .build()); - } - - private SearchTimerStats getTimerStatsByClient( - ThriftScoringFunctionType type, - String clientId) { - Map latencyByClient = latencyByScoringFunctionTypeAndClient.get(type); - - return latencyByClient.computeIfAbsent(clientId, - cid -> getTimerStatsByName(getStatsNameByClientAndType(type, cid))); - } - - private SearchTimerStats getTimerStatsByTensorflowModel(String modelName) { - return latencyByTensorflowModel.computeIfAbsent(modelName, - mn -> getTimerStatsByName(getStatsNameByTensorflowModel(mn))); - } - - private SearchTimerStats getTimerStatsByName(String name) { - return earlybirdServerStatsReceiver.getTimerStats( - name, TIME_UNIT, false, true, false); - } - - public static String getStatsNameByType(ThriftScoringFunctionType type) { - return String.format( - "search_relevance_scoring_function_%s_requests", type.name().toLowerCase()); - } - - public static String getStatsNameByClientAndType( - ThriftScoringFunctionType type, - String clientId) { - return String.format("%s_%s", ClientIdUtil.formatClientId(clientId), getStatsNameByType(type)); - } - - public static String getStatsNameByTensorflowModel(String modelName) { - return String.format( - "model_%s_%s", modelName, getStatsNameByType(ThriftScoringFunctionType.TENSORFLOW_BASED)); - } -} diff --git a/src/java/com/twitter/search/earlybird/stats/SegmentSyncStats.docx b/src/java/com/twitter/search/earlybird/stats/SegmentSyncStats.docx new file mode 100644 index 0000000000000000000000000000000000000000..2e276a5c8bff0fb1d0b5cc92294fb887390c48b6 GIT binary patch literal 37295 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 W26(dqa}X$32{I%Cv&X|e5Dx&kgrX(@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/tools/EarlybirdThriftRequestDeserializerUtil.java b/src/java/com/twitter/search/earlybird/tools/EarlybirdThriftRequestDeserializerUtil.java deleted file mode 100644 index c6dd20c9d..000000000 --- a/src/java/com/twitter/search/earlybird/tools/EarlybirdThriftRequestDeserializerUtil.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.twitter.search.earlybird.tools; - -import java.io.BufferedReader; -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; - -import com.google.common.base.Preconditions; - -import org.apache.commons.codec.binary.Base64; -import org.apache.thrift.TDeserializer; -import org.apache.thrift.TException; - -import com.twitter.search.earlybird.thrift.EarlybirdRequest; - -/** - * - * This tool deserializes the collected thrift requests into human readable format. - * - * Takes zero or one parameter: path to the thrift request log file. - * - * To run: Launch main from IntelliJ / Eclipse. - */ -public final class EarlybirdThriftRequestDeserializerUtil { - private static final String DEFAULT_LOG_FILE_LOCATION = "/tmp/eb_req.B64"; - // Not threadsafe. Single thread main(). - private static final Base64 B64 = new Base64(0); - private static final TDeserializer DESERIALIZER = new TDeserializer(); - - private EarlybirdThriftRequestDeserializerUtil() { - } - - /** - * Runs the EarlybirdThriftRequestDeserializerUtil tool with the given command-line arguments. - */ - public static void main(String[] args) throws IOException { - Path logFile = null; - if (args.length == 1) { - logFile = FileSystems.getDefault().getPath(args[0]); - } else if (args.length == 0) { - logFile = FileSystems.getDefault().getPath(DEFAULT_LOG_FILE_LOCATION); - } else { - System.err.println("Usage: takes zero or one parameter (log file path). " - + "If no log file is specified, " + DEFAULT_LOG_FILE_LOCATION + " is used."); - //CHECKSTYLE:OFF RegexpSinglelineJava - System.exit(-1); - //CHECKSTYLE:ON RegexpSinglelineJava - } - Preconditions.checkState(logFile.toFile().exists()); - - BufferedReader reader = Files.newBufferedReader(logFile, Charset.defaultCharset()); - try { - String line; - while ((line = reader.readLine()) != null) { - EarlybirdRequest ebRequest = deserializeEBRequest(line); - if (ebRequest != null) { - System.out.println(ebRequest); - } - } - } finally { - reader.close(); - } - } - - private static EarlybirdRequest deserializeEBRequest(String line) { - EarlybirdRequest ebRequest = new EarlybirdRequest(); - byte[] bytes = B64.decode(line); - try { - DESERIALIZER.deserialize(ebRequest, bytes); - } catch (TException e) { - System.err.println("Error deserializing thrift."); - } - return ebRequest; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/ActionLogger.docx b/src/java/com/twitter/search/earlybird/util/ActionLogger.docx new file mode 100644 index 0000000000000000000000000000000000000000..b6e6ee8af094f7b8f14af2459c9d7bbd7c94f8a4 GIT binary patch literal 37216 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 T call(String message, Callable fn) throws Exception { - LOG.info("Action starting: '{}'.", message); - Stopwatch stopwatch = Stopwatch.createStarted(); - try { - return fn.call(); - } catch (Throwable e) { - LOG.error("Action failed: '{}'.", message, e); - throw e; - } finally { - LOG.info("Action finished in {} '{}'.", stopwatch, message); - } - } - - /** - * Run a function, logging a message at the start and end, and the time it took. - */ - public static void run(String message, CheckedRunnable fn) throws Exception { - call(message, () -> { - fn.run(); - return null; - }); - } - - @FunctionalInterface - public interface CheckedRunnable { - /** - * A nullary function that throws checked exceptions. - */ - void run() throws Exception; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdAction.docx b/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdAction.docx new file mode 100644 index 0000000000000000000000000000000000000000..d877b2d1ccf58661c6662367d3f9623bf6ec6055 GIT binary patch literal 41632 zcmafYV|b;_wr$K#I!-#a*>TdbZQJPBT(NE2PRF)w+qTiU>F?Y7?7h#q=iWc>dRA4< zF~%HK>#bU|WFJy}7R(TNuFW*rU>A3OT1-_z|?%0sqP{&{jR;AsusV&i+OM*NvJbL1;)^K%rG>~ct2%c+crK{u-f);t?t>@BS7_;sR#Sn-sitggf^+QxQrF(pv zWC5n%t?uQ}K?=C!&sO(MP<;l9B&�M#38ifRg7L0S~Uqn`X^vBeGGHKN%w1r83^KvG97Vs9zd|#p^RnGXC2GiohmK>scr6e4vTNm4B|I2Bds@Bd#$+l*-y8zy0 z0M;5|X3w&V)_GKg@dTo#B>YZ6eFMonVDH@er$1@+>=9_D%7+za_UWoJm1�TBM?< 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 shouldSynchronize.get() ? 1 : 0); - - this.checkNumReplicasInServerSet = EarlybirdProperty.CHECK_NUM_REPLICAS_IN_SERVER_SET.get(); - - int numReplicas = - dynamicPartitionConfig.getCurrentPartitionConfig().getNumReplicasInHashPartition(); - this.maxAllowedReplicasNotInServerSet = - EarlybirdProperty.MAX_ALLOWED_REPLICAS_NOT_IN_SERVER_SET.get(numReplicas); - - this.zkLockExpirationTimeMinutes = - EarlybirdConfig.getLong(actionName + "_lock_expiration_time_minutes", 60L); - this.zkLockNamePrefix = actionName + "_for_hash_partition_"; - this.joinServerSetRetries = - EarlybirdConfig.getInt(actionName + "_join_server_set_retries", 20); - this.joinServerSetRetrySleepMillis = - EarlybirdConfig.getInt(actionName + "_join_server_retry_sleep_millis", 2000); - this.sleepAfterLeaveServerSetMillis = - EarlybirdConfig.getInt("coordinated_action_sleep_after_leave_server_set_millis", 30000); - - this.numCoordinatedFunctionCalls = SearchCounter.export(actionName + "_num_coordinated_calls"); - this.numCoordinatedLeaveServersetCalls = - SearchCounter.export(actionName + "_num_coordinated_leave_serverset_calls"); - - if (this.checkNumReplicasInServerSet) { - LOG.info( - "Coordinate action config ({}): allowedNotIn: {}, current number of replicas: {}, " - + "synchronization enabled: {}, checkNumReplicasInServerSet enabled: {}", - actionName, - maxAllowedReplicasNotInServerSet, - dynamicPartitionConfig.getCurrentPartitionConfig().getNumReplicasInHashPartition(), - shouldSynchronize, - this.checkNumReplicasInServerSet); - } else { - LOG.info( - "Coordinate action config ({}): synchronization enabled: {}, " - + "checkNumReplicasInServerSet enabled: {}", - actionName, - shouldSynchronize, - this.checkNumReplicasInServerSet); - } - } - - - @Override - public boolean execute( - String description, - ExceptionalFunction function) - throws E, CoordinatedEarlybirdActionLockFailed { - if (this.shouldSynchronize.get()) { - return executeWithCoordination(description, function); - } else { - return function.apply(NOT_COORDINATED_ACTION_FLAG); - } - } - - enum LeaveServerSetResult { - SUCCESS, - FAILURE, - NOT_IN_SERVER_SET, - NO_SERVER_SET_MEMBER - } - - private LeaveServerSetResult leaveServerSet() { - LOG.info("Leaving serving server set for " + actionName); - try { - serverSetMember.leaveServerSet("CoordinatedAction: " + actionName); - return LeaveServerSetResult.SUCCESS; - } catch (ServerSet.UpdateException ex) { - if (ex instanceof NotInServerSetUpdateException) { - LOG.info("No need to leave; already out of server set during: " - + actionName, ex); - return LeaveServerSetResult.NOT_IN_SERVER_SET; - } else { - LOG.warn("Unable to leave server set during: " + actionName, ex); - return LeaveServerSetResult.FAILURE; - } - } - } - - private LeaveServerSetResult maybeLeaveServerSet() { - if (serverSetMember != null) { - if (serverSetMember.isInServerSet()) { - - if (!checkNumReplicasInServerSet) { - return leaveServerSet(); - } else { - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - final int minNumServers = - curPartitionConfig.getNumReplicasInHashPartition() - maxAllowedReplicasNotInServerSet; - Optional numServerSetMembers = getNumberOfServerSetMembers(); - LOG.info("Checking number of replicas before leaving server set for " + actionName - + ". Number of members is: " + numServerSetMembers + " minMembers: " + minNumServers); - if (numServerSetMembers.isPresent() && numServerSetMembers.get() > minNumServers) { - return leaveServerSet(); - } else { - LOG.warn("Not leaving server set during: " + actionName); - return LeaveServerSetResult.FAILURE; - } - } - } else { - LOG.info("Not in server set, no need to leave it."); - return LeaveServerSetResult.NOT_IN_SERVER_SET; - } - } - - return LeaveServerSetResult.NO_SERVER_SET_MEMBER; - } - - private boolean executeWithCoordination( - final String description, - final ExceptionalFunction function) - throws E, CoordinatedEarlybirdActionLockFailed { - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - TryLock lock = zooKeeperTryLockFactory.createTryLock( - DatabaseConfig.getLocalHostname(), - segmentSyncConfig.getZooKeeperSyncFullPath(), - zkLockNamePrefix - + curPartitionConfig.getIndexingHashPartitionID(), - Amount.of(zkLockExpirationTimeMinutes, Time.MINUTES) - ); - - final AtomicBoolean success = new AtomicBoolean(false); - - boolean gotLock = lock.tryWithLock(() -> { - Stopwatch actionTiming = Stopwatch.createStarted(); - - LeaveServerSetResult leftServerSet = maybeLeaveServerSet(); - if (leftServerSet == LeaveServerSetResult.FAILURE) { - LOG.info("Failed to leave the server set, will not execute action."); - return; - } - - LOG.info("maybeLeaveServerSet returned: {}", leftServerSet); - - // Sleep for a short time to give the server some time to finish requests that it is currently - // executing and allow roots some time to register that this host has left the server set. - // If we didn't do this and the coordinated action included a full GC, then latency and error - // rate at the root layer would spike higher at the time of the GC. SEARCH-35456 - try { - Thread.sleep(sleepAfterLeaveServerSetMillis); - } catch (InterruptedException ex) { - Thread.currentThread().interrupt(); - } - - LOG.info(actionName + " synchronization action for " + description); - - try { - numCoordinatedFunctionCalls.increment(); - numCoordinatedLeaveServersetCalls.increment(); - - Boolean successValue = function.apply(COORDINATED_ACTION_FLAG); - success.set(successValue); - } finally { - if (leftServerSet == LeaveServerSetResult.SUCCESS) { - joinServerSet(); - } - LOG.info("{} synchronization action for {} completed after {}, success: {}", - actionName, - description, - actionTiming, - success.get()); - } - }); - - if (!gotLock) { - String errorMsg = actionName + ": Failed to get zk indexing lock for " + description; - LOG.info(errorMsg); - throw new CoordinatedEarlybirdActionLockFailed(errorMsg); - } - return success.get(); - } - - @Override - public void retryActionUntilRan(String description, Runnable action) { - Random random = new Random(System.currentTimeMillis()); - - boolean actionExecuted = false; - int attempts = 0; - while (!actionExecuted) { - try { - attempts++; - actionExecuted = this.execute(description, isCoordinated -> { - action.run(); - return true; - }); - } catch (CoordinatedEarlybirdActionLockFailed ex) { - } - - if (!actionExecuted) { - // Variable sleep amount. The reason for the random sleeps - // is so that across multiple earlybirds this doesn't get - // executed in some sequence that depends on something else - // like maybe deploy times. It might be easier to catch possible - // problems if implicit orderings like this are not introduced. - long msToSleep = (10 + random.nextInt(5)) * 1000L; - try { - Thread.sleep(msToSleep); - } catch (InterruptedException ex) { - LOG.info("Interrupted while trying to execute"); - Thread.currentThread().interrupt(); - } - } else { - LOG.info("Executed {} after {} attempts", actionName, attempts); - } - } - } - - /** - * Gets the current number of servers in this server's server set. - * @return absent Optional if we encountered an exception getting the number of hosts. - */ - private Optional getNumberOfServerSetMembers() { - try { - return serverSetMember != null ? Optional.of(serverSetMember.getNumberOfServerSetMembers()) - : Optional.empty(); - } catch (InterruptedException ex) { - LOG.warn("Action " + actionName + " was interrupted.", ex); - Thread.currentThread().interrupt(); - return Optional.empty(); - } catch (ZooKeeperClient.ZooKeeperConnectionException | KeeperException ex) { - LOG.warn("Exception during " + actionName, ex); - return Optional.empty(); - } - } - - /** - * After a coordinated action, join back this earlybird's server set with retries - * and sleeps in between. - */ - private void joinServerSet() { - Preconditions.checkNotNull(serverSetMember); - - boolean joined = false; - for (int i = 0; i < joinServerSetRetries; i++) { - try { - serverSetMember.joinServerSet("CoordinatedAction: " + actionName); - joined = true; - break; - } catch (AlreadyInServerSetUpdateException ex) { - // Most likely leaving the server set failed - joined = true; - break; - } catch (ServerSet.UpdateException ex) { - LOG.warn("Unable to join server set after " + actionName + " on attempt " - + i, ex); - if (i < (joinServerSetRetries - 1)) { - try { - Thread.sleep(joinServerSetRetrySleepMillis); - } catch (InterruptedException e) { - LOG.warn("Interrupted while waiting to join back server set for: " + actionName); - // Preserve interrupt status. - Thread.currentThread().interrupt(); - break; - } - } - } - } - if (!joined) { - String message = String.format( - "Unable to join server set after %s, setting fatal flag.", - actionName); - EarlybirdException exception = new EarlybirdException(message); - - LOG.error(message, exception); - criticalExceptionHandler.handle(this, exception); - } - } - - - @Override - public boolean setShouldSynchronize(boolean shouldSynchronizeParam) { - boolean oldValue = this.shouldSynchronize.getAndSet(shouldSynchronizeParam); - LOG.info("Updated shouldSynchronize for: " + actionName + " from " + oldValue - + " to " + shouldSynchronizeParam); - return oldValue; - } - - @Override - @VisibleForTesting - public long getNumCoordinatedFunctionCalls() { - return this.numCoordinatedFunctionCalls.get(); - } - - @Override - @VisibleForTesting - public long getNumCoordinatedLeaveServersetCalls() { - return this.numCoordinatedLeaveServersetCalls.get(); - } -} diff --git a/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionInterface.docx b/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionInterface.docx new file mode 100644 index 0000000000000000000000000000000000000000..a2b6fed6c4d83d3280c410a10210b72d4e04ffb7 GIT binary patch literal 37450 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 boolean execute( - String description, - ExceptionalFunction function) - throws E, CoordinatedEarlybirdActionLockFailed; - - /** - * Set whether this action should be synchronized. - * If not, the action is directly applied. If yes, Earlybirds will coordinate executing the - * action via ZooKeeperTryLocks. - */ - boolean setShouldSynchronize(boolean shouldSynchronizeParam); - - /** - * Number of times this coordinated actions has been executed. - * @return - */ - @VisibleForTesting - long getNumCoordinatedFunctionCalls(); - - /** - * Number of times we have left the serverset. - * @return - */ - @VisibleForTesting - long getNumCoordinatedLeaveServersetCalls(); - - /** - * Retry until we can run an action on a single instance in the serverset. - * @param description Text description of the action. - * @param action A runnable to be ran. - */ - void retryActionUntilRan(String description, Runnable action); -} diff --git a/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionLockFailed.docx b/src/java/com/twitter/search/earlybird/util/CoordinatedEarlybirdActionLockFailed.docx new file mode 100644 index 0000000000000000000000000000000000000000..126e03c95c28f5e1816f828b8473ab8cd0163626 GIT binary patch literal 36838 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∾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 OB?GvE=Fye#?e1UgD~pf- literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/EarlybirdDecider.java b/src/java/com/twitter/search/earlybird/util/EarlybirdDecider.java deleted file mode 100644 index 6e2740a7a..000000000 --- a/src/java/com/twitter/search/earlybird/util/EarlybirdDecider.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.twitter.search.earlybird.util; - -import scala.Some; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.decider.Decider; -import com.twitter.decider.Decider$; -import com.twitter.decider.RandomRecipient$; -import com.twitter.decider.Recipient; -import com.twitter.decider.decisionmaker.MutableDecisionMaker; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.common.decider.SearchDeciderFactory; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; - -/** - * A Singleton to let any code in Earlybird have the ability to be guarded by a decider key. - * - * EarlybirdDecider is a thin wrapper around the Twitter Decider library to provide global access to a single - * decider configuration. This way any code anywhere can easily be guarded by a Decider key. The initializer requires - * EarlybirdConfig to be initialized already. Defaults to a NullDecider, which causes all requests for keys to return - * false. - */ -public final class EarlybirdDecider { - public static final org.slf4j.Logger LOG = - org.slf4j.LoggerFactory.getLogger(EarlybirdDecider.class); - public static final String DECIDER_CONFIG = "./config/earlybird-decider.yml"; - - private static volatile Decider earlybirdDecider = Decider$.MODULE$.NullDecider(); - private static volatile MutableDecisionMaker mutableDecisionMaker; - - private EarlybirdDecider() { } - - /** - * Initializes the global decider accessor. Requires EarlybirdConfig to be initialized. - * - * @return the new decider interface. - */ - public static Decider initialize() { - return initialize(DECIDER_CONFIG); - } - - /** - * Initializes the global decider accessor. Requires EarlybirdConfig to be initialized. - * - * @param configPath path to the base decider config file. - * @return the new decider interface. - */ - @VisibleForTesting public static Decider initialize(String configPath) { - synchronized (EarlybirdDecider.class) { - Preconditions.checkState(earlybirdDecider == Decider$.MODULE$.NullDecider(), - "EarlybirdDecider can be initialized only once."); - - mutableDecisionMaker = new MutableDecisionMaker(); - - if (EarlybirdProperty.USE_DECIDER_OVERLAY.get(false)) { - String category = EarlybirdProperty.DECIDER_OVERLAY_CONFIG.get(); - earlybirdDecider = - SearchDeciderFactory.createDeciderWithoutRefreshBaseWithOverlay( - configPath, category, mutableDecisionMaker); - LOG.info("EarlybirdDecider set to use the decider overlay " + category); - } else { - earlybirdDecider = - SearchDeciderFactory.createDeciderWithRefreshBaseWithoutOverlay( - configPath, mutableDecisionMaker); - LOG.info("EarlybirdDecider set to only use the base config"); - } - return earlybirdDecider; - } - } - - /** - * Check if feature is available based on randomness - * - * @param feature the feature name to test - * @return true if the feature is available, false otherwise - */ - public static boolean isFeatureAvailable(String feature) { - return isFeatureAvailable(feature, RandomRecipient$.MODULE$); - } - - /** - * Check if the feature is available based on the user - * - * The recipient'd id is hashed and used as the value to compare with the decider percentage. Therefore, the same user - * will always get the same result for a given percentage, and higher percentages should always be a superset of the - * lower percentage users. - * - * RandomRecipient can be used to get a random value for every call. - * - * @param feature the feature name to test - * @param recipient the recipient to base a decision on - * @return true if the feature is available, false otherwise - */ - public static boolean isFeatureAvailable(String feature, Recipient recipient) { - if (earlybirdDecider == Decider$.MODULE$.NullDecider()) { - LOG.warn("EarlybirdDecider is uninitialized but requested feature " + feature); - } - - return earlybirdDecider.isAvailable(feature, Some.apply(recipient)); - } - - /** - * Get the raw decider value for a given feature. - * - * @param feature the feature name - * @return the integer value of the decider - */ - public static int getAvailability(String feature) { - return DeciderUtil.getAvailability(earlybirdDecider, feature); - } - - public static Decider getDecider() { - checkInitialized(); - return earlybirdDecider; - } - - public static MutableDecisionMaker getMutableDecisionMaker() { - checkInitialized(); - return mutableDecisionMaker; - } - - private static void checkInitialized() { - Preconditions.checkState(earlybirdDecider != Decider$.MODULE$.NullDecider(), - "EarlybirdDecider is not initialized."); - } -} diff --git a/src/java/com/twitter/search/earlybird/util/EarlybirdSearchResultUtil.docx b/src/java/com/twitter/search/earlybird/util/EarlybirdSearchResultUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..dd5fad86f824c2f2fa2da6b862d99203c99b86ed GIT binary patch literal 38662 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 builder = ImmutableMap.builder(); - int threshold = (int) (sum * MIN_LANGUAGE_RATIO_TO_KEEP); - for (Map.Entry entry : languageHistogram.getLanguageHistogramAsMap() - .entrySet()) { - if (entry.getValue() > threshold) { - builder.put(entry.getKey(), entry.getValue()); - } - } - Map langCounts = builder.build(); - if (langCounts.size() > 0) { - results.setLanguageHistogram(langCounts); - } - } - - private static void addDebugInfoToResults(List resultArray, - @Nullable PartitionConfig partitionConfig) { - if (partitionConfig == null) { - return; - } - ThriftSearchResultDebugInfo debugInfo = new ThriftSearchResultDebugInfo(); - debugInfo.setHostname(DatabaseConfig.getLocalHostname()); - // These info can also come from EarlybirdServer.get().getPartitionConfig() if we add such a - // getter for partitionConfig(). - debugInfo.setPartitionId(partitionConfig.getIndexingHashPartitionID()); - debugInfo.setTiername(partitionConfig.getTierName()); - debugInfo.setClusterName(partitionConfig.getClusterName()); - - for (ThriftSearchResult result : resultArray) { - result.setDebugInfo(debugInfo); - } - } - - /** - * Write results into the result array. - * @param resultArray the result array to write into. - * @param hits the hits from the search. - * @param partitionConfig partition config used to fill in debug info. Pass in null if no debug - * info should be written into results. - */ - public static void prepareResultsArray(List resultArray, - SimpleSearchResults hits, - @Nullable PartitionConfig partitionConfig) { - for (int i = 0; i < hits.numHits(); i++) { - final Hit hit = hits.getHit(i); - final long id = hit.getStatusID(); - final ThriftSearchResult result = new ThriftSearchResult(id); - final ThriftSearchResultMetadata resultMetadata = hit.getMetadata(); - result.setMetadata(resultMetadata); - resultArray.add(result); - } - addDebugInfoToResults(resultArray, partitionConfig); - } - - /** - * Write results into the result array. - * @param resultArray the result array to write into. - * @param hits the hits from the search. - * @param userIDWhitelist Used to set flag ThriftSearchResultMetadata.dontFilterUser. - * @param partitionConfig partition config used to fill in debug info. Pass in null if no debug - * info should be written into results. - */ - public static void prepareRelevanceResultsArray(List resultArray, - RelevanceSearchResults hits, - Set userIDWhitelist, - @Nullable PartitionConfig partitionConfig) { - for (int i = 0; i < hits.numHits(); i++) { - final long id = hits.getHit(i).getStatusID(); - final ThriftSearchResult result = new ThriftSearchResult(id); - final ThriftSearchResultMetadata resultMetadata = hits.resultMetadata[i]; - result.setMetadata(resultMetadata); - if (userIDWhitelist != null) { - resultMetadata.setDontFilterUser(userIDWhitelist.contains(resultMetadata.getFromUserId())); - } - - resultArray.add(result); - } - addDebugInfoToResults(resultArray, partitionConfig); - } - - /** - * Merge a List of ThriftSearchResults into a single ThriftSearchResults object. - */ - public static ThriftSearchResults mergeSearchResults(List allSearchResults) { - ThriftSearchResults mergedResults = new ThriftSearchResults(); - mergedResults.setRelevanceStats(new ThriftSearchResultsRelevanceStats()); - - mergedResults.setHitCounts(ResultsUtil.aggregateCountMap(allSearchResults, - ThriftSearchResultUtil.HIT_COUNTS_MAP_GETTER)); - - mergedResults.setLanguageHistogram(ResultsUtil.aggregateCountMap(allSearchResults, - ThriftSearchResultUtil.LANG_MAP_GETTER)); - - for (ThriftSearchResults searchResults : allSearchResults) { - // Add results - mergedResults.getResults().addAll(searchResults.getResults()); - // Update counts - ThriftSearchResultUtil.incrementCounts(mergedResults, searchResults); - // Update relevance stats - if (searchResults.getRelevanceStats() != null) { - ThriftSearchResultsRelevanceStatsUtil.addRelevanceStats(mergedResults.getRelevanceStats(), - searchResults.getRelevanceStats()); - } - } - - return mergedResults; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/FieldTermCounter.docx b/src/java/com/twitter/search/earlybird/util/FieldTermCounter.docx new file mode 100644 index 0000000000000000000000000000000000000000..dfb3cd60a10837f285b3212dd9b8cbc09f8ea528 GIT binary patch literal 40208 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%0Dky}0P2CX5QrrZ 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%0DTn{Xi{~MDi;}Ci*(s7YwN-Nno{TdS5&s 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 bDR$C3)YBveX3)=BMGLY4rbkxh&$Isla*IzU literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/FieldTermCounter.java b/src/java/com/twitter/search/earlybird/util/FieldTermCounter.java deleted file mode 100644 index 29cece148..000000000 --- a/src/java/com/twitter/search/earlybird/util/FieldTermCounter.java +++ /dev/null @@ -1,304 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.util.Calendar; -import java.util.Collections; -import java.util.Map; -import java.util.TimeZone; -import java.util.concurrent.atomic.AtomicInteger; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; - -import org.apache.commons.lang.mutable.MutableInt; -import org.apache.commons.lang.mutable.MutableLong; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchLongGauge; - -/** - * This class is used to count how many times a field happens in hourly and daily stats. - * It is used by TermCountMonitor for iterating all fields in the index. - * - * There is one exception that this class is also used to count the number of tweets in the index. - * Under the situation, the passed in fieldName would be empty string (as TWEET_COUNT_KEY). - */ -public class FieldTermCounter { - private static final Logger LOG = LoggerFactory.getLogger(FieldTermCounter.class); - - static final TimeZone TIME_ZONE = TimeZone.getTimeZone("GMT"); - static final String TWEET_COUNT_KEY = ""; - - private final String fieldName; - private final int instanceCounter; - - // The first date in format "YYYYMMDDHH" that we want to check counts for. - private final int startCheckHour; - // The last date in format "YYYYMMDDHH" that we want to check counts for. - private final int endCheckHour; - // Smallest number of docs we expect to have for each hour. - private final int hourlyMinCount; - //Smallest number of docs we expect to have for each day. - private final int dailyMinCount; - - // Count of tweets for each day, keyed of by the hour in the format "YYYYMMDD". - private final Map exportedHourlyCounts; - - // Count of tweets for each day, keyed of by the day in the format "YYYYMMDD". - private final Map dailyCounts; - - // Only export hourly stats that are below minimum threshold. - private final Map exportedStats; - - private final SearchLongGauge hoursWithNoTweetsStat; - private final SearchLongGauge daysWithNoTweetsStat; - - public FieldTermCounter( - String fieldName, - int instanceCounter, - int startCheckHour, - int endCheckHour, - int hourlyMinCount, - int dailyMinCount) { - this.fieldName = fieldName; - this.instanceCounter = instanceCounter; - this.startCheckHour = startCheckHour; - this.endCheckHour = endCheckHour; - this.hourlyMinCount = hourlyMinCount; - this.dailyMinCount = dailyMinCount; - this.exportedHourlyCounts = Maps.newHashMap(); - this.dailyCounts = Maps.newHashMap(); - this.exportedStats = Maps.newHashMap(); - - this.hoursWithNoTweetsStat = SearchLongGauge.export(getAggregatedNoTweetStatName(true)); - this.daysWithNoTweetsStat = SearchLongGauge.export(getAggregatedNoTweetStatName(false)); - } - - /** - * Updates the stats exported by this class based on the new counts provided in the given map. - */ - public void runWithNewCounts(Map newCounts) { - dailyCounts.clear(); - - // See go/rb/813442/#comment2566569 - // 1. Update all existing hours - updateExistingHourlyCounts(newCounts); - - // 2. Add and export all new hours - addAndExportNewHourlyCounts(newCounts); - - // 3. fill in all the missing hours between know min and max days. - fillMissingHourlyCounts(); - - // 4. Export as a stat, how many hours don't have any tweets (i.e. <= 0) - exportMissingTweetStats(); - } - - // Input: - // . the new hourly count map in the current iteration - // . the existing hourly count map before the current iteration - // If the hourly key matches from the new hourly map to the existing hourly count map, update - // the value of the existing hourly count map to the value from the new hourly count map. - private void updateExistingHourlyCounts(Map newCounts) { - for (Map.Entry exportedCount : exportedHourlyCounts.entrySet()) { - Integer date = exportedCount.getKey(); - AtomicInteger exportedCountValue = exportedCount.getValue(); - - MutableInt newCount = newCounts.get(date); - if (newCount == null) { - exportedCountValue.set(0); - } else { - exportedCountValue.set(newCount.intValue()); - // clean up so that we don't check this date again when we look for new hours - newCounts.remove(date); - } - } - } - - // Input: - // . the new hourly count map in the current iteration - // . the existing hourly count map before the current iteration - // This function is called after the above function of updateExistingHourlyCounts() so that all - // matching key value pairs have been removed from the new hourly count map. - // Move all remaining valid values from the new hourly count map to the existing hourly count - // map. - private void addAndExportNewHourlyCounts(Map newCounts) { - for (Map.Entry newCount : newCounts.entrySet()) { - Integer hour = newCount.getKey(); - MutableInt newCountValue = newCount.getValue(); - Preconditions.checkState(!exportedHourlyCounts.containsKey(hour), - "Should have already processed and removed existing hours: " + hour); - - AtomicInteger newStat = new AtomicInteger(newCountValue.intValue()); - exportedHourlyCounts.put(hour, newStat); - } - } - - // Find whether the existing hourly count map has hourly holes. If such holes exist, fill 0 - // values so that they can be exported. - private void fillMissingHourlyCounts() { - // Figure out the time range for which we should have tweets in the index. At the very least, - // this range should cover [startCheckHour, endCheckHour) if endCheckHour is set, or - // [startCheckHour, latestHourInTheIndexWithTweets] if endCheckHour is not set (latest tier or - // realtime cluster). - int startHour = startCheckHour; - int endHour = endCheckHour < getHourValue(Calendar.getInstance(TIME_ZONE)) ? endCheckHour : -1; - for (int next : exportedHourlyCounts.keySet()) { - if (next < startHour) { - startHour = next; - } - if (next > endHour) { - endHour = next; - } - } - - Calendar endHourCal = getCalendarValue(endHour); - Calendar hour = getCalendarValue(startHour); - for (; hour.before(endHourCal); hour.add(Calendar.HOUR_OF_DAY, 1)) { - int hourValue = getHourValue(hour); - if (!exportedHourlyCounts.containsKey(hourValue)) { - exportedHourlyCounts.put(hourValue, new AtomicInteger(0)); - } - } - } - - private void exportMissingTweetStats() { - int hoursWithNoTweets = 0; - int daysWithNoTweets = 0; - - for (Map.Entry hourlyCount : exportedHourlyCounts.entrySet()) { - int hour = hourlyCount.getKey(); - if ((hour < startCheckHour) || (hour >= endCheckHour)) { - continue; - } - - // roll up the days - int day = hour / 100; - MutableLong dayCount = dailyCounts.get(day); - if (dayCount == null) { - dailyCounts.put(day, new MutableLong(hourlyCount.getValue().get())); - } else { - dayCount.setValue(dayCount.longValue() + hourlyCount.getValue().get()); - } - AtomicInteger exportedCountValue = hourlyCount.getValue(); - if (exportedCountValue.get() <= hourlyMinCount) { - // We do not export hourly too few tweets for index fields as it can 10x the existing - // exported stats. - // We might consider whitelisting some high frequency fields later. - if (isFieldForTweet()) { - String statsName = getStatName(hourlyCount.getKey()); - SearchLongGauge stat = SearchLongGauge.export(statsName); - stat.set(exportedCountValue.longValue()); - exportedStats.put(statsName, stat); - } - LOG.warn("Found an hour with too few tweets. Field: <{}> Hour: {} count: {}", - fieldName, hour, exportedCountValue); - hoursWithNoTweets++; - } - } - - for (Map.Entry dailyCount : dailyCounts.entrySet()) { - if (dailyCount.getValue().longValue() <= dailyMinCount) { - LOG.warn("Found a day with too few tweets. Field: <{}> Day: {} count: {}", - fieldName, dailyCount.getKey(), dailyCount.getValue()); - daysWithNoTweets++; - } - } - - hoursWithNoTweetsStat.set(hoursWithNoTweets); - daysWithNoTweetsStat.set(daysWithNoTweets); - } - - // When the fieldName is empty string (as TWEET_COUNT_KEY), it means that we are counting the - // number of tweets for the index, not for some specific fields. - private boolean isFieldForTweet() { - return TWEET_COUNT_KEY.equals(fieldName); - } - - private String getAggregatedNoTweetStatName(boolean hourly) { - if (isFieldForTweet()) { - if (hourly) { - return "hours_with_no_indexed_tweets_v_" + instanceCounter; - } else { - return "days_with_no_indexed_tweets_v_" + instanceCounter; - } - } else { - if (hourly) { - return "hours_with_no_indexed_fields_v_" + fieldName + "_" + instanceCounter; - } else { - return "days_with_no_indexed_fields_v_" + fieldName + "_" + instanceCounter; - } - } - } - - @VisibleForTesting - String getStatName(Integer date) { - return getStatName(fieldName, instanceCounter, date); - } - - @VisibleForTesting - static String getStatName(String field, int instance, Integer date) { - if (TWEET_COUNT_KEY.equals(field)) { - return "tweets_indexed_on_hour_v_" + instance + "_" + date; - } else { - return "tweets_indexed_on_hour_v_" + instance + "_" + field + "_" + date; - } - } - - @VisibleForTesting - Map getExportedCounts() { - return Collections.unmodifiableMap(exportedHourlyCounts); - } - - @VisibleForTesting - Map getDailyCounts() { - return Collections.unmodifiableMap(dailyCounts); - } - - @VisibleForTesting - long getHoursWithNoTweets() { - return hoursWithNoTweetsStat.get(); - } - - @VisibleForTesting - long getDaysWithNoTweets() { - return daysWithNoTweetsStat.get(); - } - - @VisibleForTesting - Map getExportedHourlyCountStats() { - return exportedStats; - } - - /** - * Given a unit time in seconds since epoch UTC, will return the day in format "YYYYMMDDHH" - * as an int. - */ - @VisibleForTesting - static int getHourValue(Calendar cal, int timeSecs) { - cal.setTimeInMillis(timeSecs * 1000L); - return getHourValue(cal); - } - - static int getHourValue(Calendar cal) { - int year = cal.get(Calendar.YEAR) * 1000000; - int month = (cal.get(Calendar.MONTH) + 1) * 10000; // month is 0-based - int day = cal.get(Calendar.DAY_OF_MONTH) * 100; - int hour = cal.get(Calendar.HOUR_OF_DAY); - return year + month + day + hour; - } - - @VisibleForTesting - static Calendar getCalendarValue(int hour) { - Calendar cal = Calendar.getInstance(TIME_ZONE); - - int year = hour / 1000000; - int month = ((hour / 10000) % 100) - 1; // 0-based - int day = (hour / 100) % 100; - int hr = hour % 100; - cal.setTimeInMillis(0); // reset all time fields - cal.set(year, month, day, hr, 0); - return cal; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/Histogram.docx b/src/java/com/twitter/search/earlybird/util/Histogram.docx new file mode 100644 index 0000000000000000000000000000000000000000..8d65640ca136c62f01b5ac4587f99c4788cee628 GIT binary patch literal 38175 zcmagEWmp|cw=Rlna1HM6?he7-onV0g6A2Cz5AN>n?(Xgo+$~5Txciw|>(jl@x%W@= zP~GE|F?x25t}bOcNGMD&Ffcf&z_%%}1YkM|RNp&GNw z!7xm*8L9W)L~C_|U0zL8dg2nN1_l{g`DBpAUilk&OlKC{`;xJwGE35Xg!6+iH7yxl zAE&v%S@vrB`Hawm&c$+c{S&nx!J?=uqczcqhl1c#1;?O6s`F>Lb34fG)m4v2sQ2i< z?2jqCyiWMIl0Az1N@l$-Gf`<~eoaSc^W#YgHNMc0`fl71H{ew3GD%^6i5K>hL4wui}eT#Nk}rmi&NMoo7U-8$&!Dd1}$Rn6QHWR}*u9e>WrnkN014qcrn zb#JTV0BJmrdvWB9lOBIs>UvUx1ei3oj_69S!2ACDd)mTi3Zcj45X1ZVIR)DZ4c`%z z@0=RKwW{r+(MhB1yxi{&$Kqt(w>g1&E4&hl-W?J~f;4_21D+3;$j=8R(5tu)AN;EB zrC&OW_MO-K^GxL#l4$i_6A25@x?@eAJ)aPZ%Rfp8^}Z|>Z|n-h+UFy}|qP=WrH(G~Fg75Gn zbyMFB)Uinmza>W&F{ircvd|-c$v1I^6<4%vjS43zLkE5wCM%8Ux7>Qi!Kq*~p2an}wO3%Pn?vtHw8cMsZ7;OJ-PjCi z8Wa~q92|S@XBLL2gY~xd8GHRXOOlSaGBL34yyt1|iprADbgU;_1@8kwO%|j~I;(;F zVhA7kKpiK?{P!u+%of$6+#@kHG=-J#nj&#DZRAKK`T=1%Nm3EId^;q%NnvmAM)wDgCUa|TB33ZVIe}5V@ zRz1itr>TKqBRF+=g#Lg6Μ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 Xp_9E7xPrc}DkZ=RTpoWUef{@;wz+YX literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/Histogram.java b/src/java/com/twitter/search/earlybird/util/Histogram.java deleted file mode 100644 index ccf40a64e..000000000 --- a/src/java/com/twitter/search/earlybird/util/Histogram.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.google.common.base.Preconditions; - -/** - * A histogram of int values with arbitrary buckets. - * Keeps a count for each bucket, and a sum of values for each bucket. - * The histogram view is returned as a list of {@link Histogram.Entry}s. - *

    - * Bucket boundaries are inclusive on the upper boundaries. Given buckets of [0, 10, 100], - * items will be places in 4 bins, { X <= 0, 0 < X <= 10, 10 < X <= 100, X > 100 }. - *

    - * This class is not thread safe. - * - */ -public class Histogram { - private final double[] buckets; - private final int[] itemsCount; - private final long[] itemsSum; - private int totalCount; - private long totalSum; - - public static class Entry { - private final String bucketName; - private final int count; - private final double countPercent; - private final double countCumulative; - private final long sum; - private final double sumPercent; - private final double sumCumulative; - - Entry(String bucketName, - int count, double countPercent, double countCumulative, - long sum, double sumPercent, double sumCumulative) { - this.bucketName = bucketName; - this.count = count; - this.countPercent = countPercent; - this.countCumulative = countCumulative; - this.sum = sum; - this.sumPercent = sumPercent; - this.sumCumulative = sumCumulative; - } - - public String getBucketName() { - return bucketName; - } - - public int getCount() { - return count; - } - - public double getCountPercent() { - return countPercent; - } - - public double getCountCumulative() { - return countCumulative; - } - - public long getSum() { - return sum; - } - - public double getSumPercent() { - return sumPercent; - } - - public double getSumCumulative() { - return sumCumulative; - } - } - - /** - * No buckets will put all items into a single bin. - * @param buckets the buckets to use for binnning data. - * An item will be put in bin i if item <= buckets[i] and > buckets[i-1] - * The bucket values must be strictly increasing. - */ - public Histogram(double... buckets) { - Preconditions.checkNotNull(buckets); - this.buckets = new double[buckets.length]; - for (int i = 0; i < buckets.length; i++) { - this.buckets[i] = buckets[i]; - if (i > 0) { - Preconditions.checkState(this.buckets[i - 1] < this.buckets[i], - "Histogram buckets must me strictly increasing: " + Arrays.toString(buckets)); - } - } - this.itemsCount = new int[buckets.length + 1]; - this.itemsSum = new long[buckets.length + 1]; - this.totalCount = 0; - this.totalSum = 0; - } - - /** - * Add the given item to the appropriate bucket. - */ - public void addItem(double item) { - int i = 0; - for (; i < this.buckets.length; i++) { - if (item <= buckets[i]) { - break; - } - } - this.itemsCount[i]++; - this.totalCount++; - this.itemsSum[i] += item; - this.totalSum += item; - } - - /** - * returns the current view of all the bins. - */ - public List entries() { - List entries = new ArrayList<>(this.itemsCount.length); - double countCumulative = 0; - double sumCumulative = 0; - for (int i = 0; i < this.itemsCount.length; i++) { - String bucketName; - if (i < this.buckets.length) { - bucketName = "<= " + this.buckets[i]; - } else if (this.buckets.length > 0) { - bucketName = " > " + this.buckets[this.buckets.length - 1]; - } else { - bucketName = " * "; - } - - int count = this.itemsCount[i]; - double countPercent = this.totalCount == 0 ? 0 : ((double) this.itemsCount[i]) / totalCount; - countCumulative += countPercent; - - long sum = this.itemsSum[i]; - double sumPercent = this.totalSum == 0 ? 0 : ((double) this.itemsSum[i]) / totalSum; - sumCumulative += sumPercent; - - Entry e = new Entry(bucketName, count, countPercent, countCumulative, - sum, sumPercent, sumCumulative); - entries.add(e); - } - return entries; - } - - /** - * Returns total number of items seen. - */ - public int getTotalCount() { - return totalCount; - } - - /** - * Returns sum of all the items seen. - */ - public long getTotalSum() { - return totalSum; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/IndexViewer.docx b/src/java/com/twitter/search/earlybird/util/IndexViewer.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ccbc17d3083cc69da936b9fb48e24a68c0dd339 GIT binary patch literal 43723 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 INT_TERM_ATTRIBUTE_FIELDS = ImmutableSet.of( - EarlybirdFieldConstant.CREATED_AT_FIELD.getFieldName(), - EarlybirdFieldConstant.LINK_CATEGORY_FIELD.getFieldName(), - EarlybirdFieldConstant - .NORMALIZED_FAVORITE_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName(), - EarlybirdFieldConstant - .NORMALIZED_REPLY_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName(), - EarlybirdFieldConstant - .NORMALIZED_RETWEET_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName(), - EarlybirdFieldConstant.COMPOSER_SOURCE.getFieldName()); - - /** - * Fields whose terms are indexed using - * {@link com.twitter.search.common.util.analysis.LongTermAttribute} - */ - private static final Set LONG_TERM_ATTRIBUTE_FIELDS = ImmutableSet.of( - EarlybirdFieldConstant.CONVERSATION_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.LIKED_BY_USER_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.QUOTED_TWEET_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.QUOTED_USER_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.REPLIED_TO_BY_USER_ID.getFieldName(), - EarlybirdFieldConstant.RETWEETED_BY_USER_ID.getFieldName(), - EarlybirdFieldConstant.DIRECTED_AT_USER_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.IN_REPLY_TO_TWEET_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.IN_REPLY_TO_USER_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.RETWEET_SOURCE_TWEET_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.RETWEET_SOURCE_USER_ID_FIELD.getFieldName()); - - /** - * Fields whose terms index using SORTED - * {@link com.twitter.search.common.util.analysis.LongTermAttribute} - */ - private static final Set SORTED_LONG_TERM_ATTRIBUTE_FIELDS = - ImmutableSet.of(EarlybirdFieldConstant.ID_FIELD.getFieldName()); - - private final EarlybirdSingleSegmentSearcher searcher; - private final EarlybirdIndexSegmentAtomicReader twitterReader; - - public long getTimeSliceId() { - return searcher.getTimeSliceID(); - } - - public static class Options { - private boolean dumpHexTerms = false; - private String charset; - private double[] histogramBuckets; - private boolean termLengthHistogram; - - public Options setDumpHexTerms(boolean dumpHexTermsParam) { - this.dumpHexTerms = dumpHexTermsParam; - return this; - } - - public Options setCharset(String charsetParam) { - this.charset = charsetParam; - return this; - } - - public Options setHistogramBuckets(double[] histogramBucketsParam) { - this.histogramBuckets = histogramBucketsParam; - return this; - } - - public Options setTermLengthHistogram(boolean termLengthHistogramParam) { - this.termLengthHistogram = termLengthHistogramParam; - return this; - } - } - - /** - * Data Transfer Object for Terms, encapsulates the "json" serialization - * while maintaining streaming mode - */ - private static class TermDto { - - private final String field; - private final String term; - private final String docFreq; - private final String percent; - private final PostingsEnum docsEnum; - private final TermsEnum termsEnum; - private final Integer maxDocs; - - public TermDto(String field, String term, String docFreq, String percent, - PostingsEnum docsEnum, TermsEnum termsEnum, Integer maxDocs) { - this.field = field; - this.term = term; - this.docFreq = docFreq; - this.percent = percent; - this.docsEnum = docsEnum; - this.termsEnum = termsEnum; - this.maxDocs = maxDocs; - } - - public void write(ViewerWriter writer, - EarlybirdIndexSegmentAtomicReader twitterReader) throws IOException { - writer.beginObject(); - writer.name("field").value(field); - writer.name("term").value(term); - writer.name("docFreq").value(docFreq); - writer.name("percent").value(percent); - if (docsEnum != null) { - appendFrequencyAndPositions(writer, field, docsEnum, twitterReader); - } - if (maxDocs != null) { - appendDocs(writer, termsEnum, maxDocs, twitterReader); - } - writer.endObject(); - } - } - - /** - * Data Transfer Object for Terms, encapsulates the "json" serialization - * while maintaining streaming mode - */ - private static class StatsDto { - - private final String field; - private final String numTerms; - private final String terms; - - - public StatsDto(String field, String numTerms, String terms) { - this.field = field; - this.numTerms = numTerms; - this.terms = terms; - } - - public void write(ViewerWriter writer) throws IOException { - writer.beginObject(); - - writer.name("field").value(field); - writer.name("numTerms").value(numTerms); - writer.name("terms").value(terms); - - writer.endObject(); - } - } - - public IndexViewer(EarlybirdSingleSegmentSearcher searcher) { - this.searcher = searcher; - this.twitterReader = searcher.getTwitterIndexReader(); - } - - private boolean shouldSeekExact(Terms terms, TermsEnum termsEnum) { - return terms instanceof RealtimeIndexTerms - || termsEnum instanceof MPHTermDictionary.MPHTermsEnum; - } - - /** - * Dumps all terms for a given tweet id. - * @param writer writer being used - * @param tweetId the tweet id to use - */ - public void dumpTweetDataByTweetId(ViewerWriter writer, long tweetId, Options options) - throws IOException { - int docId = twitterReader.getSegmentData().getDocIDToTweetIDMapper().getDocID(tweetId); - dumpTweetDataByDocId(writer, docId, options); - } - - /** - * Dumps all terms for a given doc id. - * @param writer writer being used - * @param docId the document id to use. - */ - public void dumpTweetDataByDocId(ViewerWriter writer, int docId, Options options) - throws IOException { - writer.beginObject(); - - printHeader(writer); - long tweetID = twitterReader.getSegmentData().getDocIDToTweetIDMapper().getTweetID(docId); - if (docId < twitterReader.maxDoc() && tweetID >= 0) { - writer.name("docId").value(Integer.toString(docId)); - writer.name("tweetId").value(Long.toString(tweetID)); - dumpIndexedFields(writer, docId, options); - dumpCsfFields(writer, docId); - } - writer.endObject(); - } - - /** - * Dumps all tweet IDs in the current segment to the given file. - */ - public void dumpTweetIds(ViewerWriter writer, String logFile, PrintWriter logWriter) - throws IOException { - writeTweetIdsToLogFile(logWriter); - - writer.beginObject(); - writer.name(Long.toString(searcher.getTimeSliceID())).value(logFile); - writer.endObject(); - } - - private void writeTweetIdsToLogFile(PrintWriter logWriter) { - DocIDToTweetIDMapper mapper = twitterReader.getSegmentData().getDocIDToTweetIDMapper(); - int docId = Integer.MIN_VALUE; - while ((docId = mapper.getNextDocID(docId)) != DocIDToTweetIDMapper.ID_NOT_FOUND) { - long tweetId = mapper.getTweetID(docId); - - // Ensure tweet ID is valid and non-deleted - if ((tweetId > 0) && !twitterReader.getDeletesView().isDeleted(docId)) { - logWriter.println(tweetId); - } - } - } - - private void dumpIndexedFields(ViewerWriter writer, int docId, - Options options) throws IOException { - writer.name("indexedFields"); - writer.beginArray(); - writer.newline(); - for (String field : sortedFields()) { - dumpTweetData(writer, field, docId, options); - } - writer.endArray(); - writer.newline(); - } - - private void dumpCsfFields(ViewerWriter writer, int docId) throws IOException { - writer.name("csfFields"); - writer.beginArray(); - writer.newline(); - dumpCSFData(writer, docId); - - writer.endArray(); - } - - /** - * Dumps all CSF values for a given doc id. - * @param writer writer being used - * @param docId the document id to use. - */ - private void dumpCSFData(ViewerWriter writer, int docId) throws IOException { - Schema tweetSchema = twitterReader.getSchema(); - - // Sort the FieldInfo objects to generate fixed order to make testing easier - List sortedFieldInfos = new ArrayList<>(tweetSchema.getFieldInfos()); - sortedFieldInfos.sort(Comparator.comparing(Schema.FieldInfo::getFieldId)); - - for (Schema.FieldInfo fieldInfo: sortedFieldInfos) { - String csfFieldInfoName = fieldInfo.getName(); - ThriftCSFType csfType = tweetSchema.getCSFFieldType(csfFieldInfoName); - NumericDocValues csfDocValues = twitterReader.getNumericDocValues(csfFieldInfoName); - // If twitterReader.getNumericDocValues(value.getName()) == null, - // means no NumericDocValue was indexed for the field so ignore - if (csfType != null && csfDocValues != null && csfDocValues.advanceExact(docId)) { - long csfValue = csfDocValues.longValue(); - writer.beginObject(); - writer.name("field").value(formatField(csfFieldInfoName)); - writer.name("value"); - if (csfFieldInfoName.equals(EarlybirdFieldConstant.LAT_LON_CSF_FIELD.getFieldName())) { - writer.value(latlongDecode(csfValue)); - } else if (csfFieldInfoName.equals(EarlybirdFieldConstant.LANGUAGE.getFieldName())) { - writer.value(languageDecode(csfValue)); - } else if (csfFieldInfoName.equals(EarlybirdFieldConstant.CARD_LANG_CSF.getFieldName())) { - writer.value(languageDecode(csfValue)); - } else { - writer.value(Long.toString(csfValue)); - } - writer.endObject(); - writer.newline(); - } - } - } - - /** - * Decipher long value gotten, put into format (lat, lon) - * Decode the stored long value by creating a geocode - */ - private String latlongDecode(long csfValue) { - StringBuilder sb = new StringBuilder(); - GeoCoordinate geoCoordinate = new GeoCoordinate(); - if (GeoUtil.decodeLatLonFromInt64(csfValue, geoCoordinate)) { - sb.append(geoCoordinate.getLatitude()).append(", ").append(geoCoordinate.getLongitude()); - } else { - sb.append(csfValue).append(" (Value Unset or Invalid Coordinate)"); - } - return sb.toString(); - } - - /** - * Decipher long value gotten into string of tweet's language - */ - private String languageDecode(long csfValue) { - StringBuilder sb = new StringBuilder(); - ThriftLanguage languageType = ThriftLanguage.findByValue((int) csfValue); - sb.append(csfValue).append(" (").append(languageType).append(")"); - return sb.toString(); - } - - private void dumpTweetData(ViewerWriter writer, - String field, - int docId, - Options options) throws IOException { - - Terms terms = twitterReader.terms(field); - if (terms != null) { - TermsEnum termsEnum = terms.iterator(); - if (shouldSeekExact(terms, termsEnum)) { - long numTerms = terms.size(); - for (int i = 0; i < numTerms; i++) { - termsEnum.seekExact(i); - dumpTweetDataTerm(writer, field, termsEnum, docId, options); - } - } else { - while (termsEnum.next() != null) { - dumpTweetDataTerm(writer, field, termsEnum, docId, options); - } - } - } - } - - private void dumpTweetDataTerm(ViewerWriter writer, String field, TermsEnum termsEnum, - int docId, Options options) throws IOException { - PostingsEnum docsAndPositionsEnum = termsEnum.postings(null, PostingsEnum.ALL); - if (docsAndPositionsEnum != null && docsAndPositionsEnum.advance(docId) == docId) { - printTerm(writer, field, termsEnum, docsAndPositionsEnum, null, options); - } - } - - /** - * Prints the histogram for the currently viewed index. - * @param writer current viewerWriter - * @param field if null, will use all fields - * @param options options for dumping out text - */ - public void dumpHistogram(ViewerWriter writer, String field, Options options) throws IOException { - writer.beginObject(); - printHeader(writer); - writer.name("histogram"); - writer.beginArray(); - writer.newline(); - if (field == null) { - for (String field2 : sortedFields()) { - dumpFieldHistogram(writer, field2, options); - } - } else { - dumpFieldHistogram(writer, field, options); - } - writer.endArray(); - writer.endObject(); - } - - private void dumpFieldHistogram(ViewerWriter writer, String field, Options options) - throws IOException { - Histogram histo = new Histogram(options.histogramBuckets); - - Terms terms = twitterReader.terms(field); - if (terms != null) { - TermsEnum termsEnum = terms.iterator(); - if (shouldSeekExact(terms, termsEnum)) { - long numTerms = terms.size(); - for (int i = 0; i < numTerms; i++) { - termsEnum.seekExact(i); - countHistogram(options, histo, termsEnum); - } - } else { - while (termsEnum.next() != null) { - countHistogram(options, histo, termsEnum); - } - } - printHistogram(writer, field, options, histo); - } - } - - private void printHistogram(ViewerWriter writer, String field, Options options, - Histogram histo) throws IOException { - - String bucket = options.termLengthHistogram ? "termLength" : "df"; - for (Histogram.Entry histEntry : histo.entries()) { - String format = - String.format(Locale.US, - "field: %s %sBucket: %11s count: %10d " - + "percent: %6.2f%% cumulative: %6.2f%% totalCount: %10d" - + " sum: %15d percent: %6.2f%% cumulative: %6.2f%% totalSum: %15d", - formatField(field), - bucket, - histEntry.getBucketName(), - histEntry.getCount(), - histEntry.getCountPercent() * 100.0, - histEntry.getCountCumulative() * 100.0, - histo.getTotalCount(), - histEntry.getSum(), - histEntry.getSumPercent() * 100.0, - histEntry.getSumCumulative() * 100.0, - histo.getTotalSum() - ); - writer.value(format); - writer.newline(); - } - } - - private void countHistogram(Options options, Histogram histo, TermsEnum termsEnum) - throws IOException { - if (options.termLengthHistogram) { - final BytesRef bytesRef = termsEnum.term(); - histo.addItem(bytesRef.length); - } else { - histo.addItem(termsEnum.docFreq()); - } - } - - - /** - * Prints terms and optionally documents for the currently viewed index. - * @param writer writer being used - * @param field if null, will use all fields - * @param term if null will use all terms - * @param maxTerms will print at most this many terms per field. If null will print 0 terms. - * @param maxDocs will print at most this many documents, If null, will not print docs. - * @param options options for dumping out text - */ - public void dumpData(ViewerWriter writer, String field, String term, Integer maxTerms, - Integer maxDocs, Options options, boolean shouldSeekToTerm) throws IOException { - - writer.beginObject(); - printHeader(writer); - - writer.name("terms"); - writer.beginArray(); - writer.newline(); - dumpDataInternal(writer, field, term, maxTerms, maxDocs, options, shouldSeekToTerm); - writer.endArray(); - writer.endObject(); - } - - private void dumpDataInternal(ViewerWriter writer, String field, String term, Integer maxTerms, - Integer maxDocs, Options options, boolean shouldSeekToTerm) throws IOException { - - if (field == null) { - dumpDataForAllFields(writer, term, maxTerms, maxDocs, options); - return; - } - if (term == null) { - dumpDataForAllTerms(writer, field, maxTerms, maxDocs, options); - return; - } - Terms terms = twitterReader.terms(field); - if (terms != null) { - TermsEnum termsEnum = terms.iterator(); - TermsEnum.SeekStatus status = termsEnum.seekCeil(new BytesRef(term)); - if (status == TermsEnum.SeekStatus.FOUND) { - printTerm(writer, field, termsEnum, null, maxDocs, options); - } - if (shouldSeekToTerm) { - dumpTermsAfterSeek(writer, field, terms, maxTerms, maxDocs, options, termsEnum, status); - } - } - } - - /** - * if term (cursor) is found for an indexed segment - dump the next termsLeft words - * starting from the current position in the enum. For an indexed segment, - * seekCeil will place the enum at the word or the next "ceiling" term. For - * a realtime index, if the word is not found we do not paginate anything - * We also only paginate if the TermsEnum is not at the end. - */ - private void dumpTermsAfterSeek(ViewerWriter writer, String field, Terms terms, Integer maxTerms, - Integer maxDocs, Options options, TermsEnum termsEnum, TermsEnum.SeekStatus status) - throws IOException { - if (status != TermsEnum.SeekStatus.END) { - // for realtime, to not repeat the found word - if (shouldSeekExact(terms, termsEnum)) { - termsEnum.next(); - } - if (status != TermsEnum.SeekStatus.FOUND) { - // if not found, print out curr term before calling next() - printTerm(writer, field, termsEnum, null, maxDocs, options); - } - for (int termsLeft = maxTerms - 1; termsLeft > 0 && termsEnum.next() != null; termsLeft--) { - printTerm(writer, field, termsEnum, null, maxDocs, options); - } - } - } - - private void dumpDataForAllFields(ViewerWriter writer, String term, Integer maxTerms, - Integer maxDocs, Options options) throws IOException { - for (String field : sortedFields()) { - dumpDataInternal(writer, field, term, maxTerms, maxDocs, options, false); - } - } - - private List sortedFields() { - // Tweet facets are added to a special $facets field, which is not part of the schema. - // We include it here, because seeing the facets for a tweet is generally useful. - List fields = Lists.newArrayList("$facets"); - for (Schema.FieldInfo fieldInfo : twitterReader.getSchema().getFieldInfos()) { - if (fieldInfo.getFieldType().indexOptions() != IndexOptions.NONE) { - fields.add(fieldInfo.getName()); - } - } - Collections.sort(fields); - return fields; - } - - private void dumpDataForAllTerms(ViewerWriter writer, - String field, - Integer maxTerms, - Integer maxDocs, - Options options) throws IOException { - Terms terms = twitterReader.terms(field); - if (terms != null) { - TermsEnum termsEnum = terms.iterator(); - if (shouldSeekExact(terms, termsEnum)) { - long numTerms = terms.size(); - long termToDump = maxTerms == null ? 0 : Math.min(numTerms, maxTerms); - for (int i = 0; i < termToDump; i++) { - termsEnum.seekExact(i); - printTerm(writer, field, termsEnum, null, maxDocs, options); - } - } else { - int max = maxTerms == null ? 0 : maxTerms; - while (max > 0 && termsEnum.next() != null) { - printTerm(writer, field, termsEnum, null, maxDocs, options); - max--; - } - } - } - } - - private String termToString(String field, BytesRef bytesTerm, Options options) - throws UnsupportedEncodingException { - if (INT_TERM_ATTRIBUTE_FIELDS.contains(field)) { - return Integer.toString(IntTermAttributeImpl.copyBytesRefToInt(bytesTerm)); - } else if (LONG_TERM_ATTRIBUTE_FIELDS.contains(field)) { - return Long.toString(LongTermAttributeImpl.copyBytesRefToLong(bytesTerm)); - } else if (SORTED_LONG_TERM_ATTRIBUTE_FIELDS.contains(field)) { - return Long.toString(SortableLongTermAttributeImpl.copyBytesRefToLong(bytesTerm)); - } else { - if (options != null && options.charset != null && !options.charset.isEmpty()) { - return new String(bytesTerm.bytes, bytesTerm.offset, bytesTerm.length, options.charset); - } else { - return bytesTerm.utf8ToString(); - } - } - } - - private void printTerm(ViewerWriter writer, String field, TermsEnum termsEnum, - PostingsEnum docsEnum, Integer maxDocs, Options options) - throws IOException { - final BytesRef bytesRef = termsEnum.term(); - StringBuilder termToString = new StringBuilder(); - termToString.append(termToString(field, bytesRef, options)); - if (options != null && options.dumpHexTerms) { - termToString.append(" ").append(bytesRef.toString()); - } - final int df = termsEnum.docFreq(); - double dfPercent = ((double) df / this.twitterReader.numDocs()) * 100.0; - TermDto termDto = new TermDto(field, termToString.toString(), Integer.toString(df), - String.format(Locale.US, "%.2f%%", dfPercent), - docsEnum, termsEnum, maxDocs); - termDto.write(writer, twitterReader); - writer.newline(); - } - - private static void appendFrequencyAndPositions(ViewerWriter writer, String field, - PostingsEnum docsEnum, EarlybirdIndexSegmentAtomicReader twitterReader) throws IOException { - final int frequency = docsEnum.freq(); - writer.name("freq").value(Integer.toString(frequency)); - - Schema schema = twitterReader.getSchema(); - Schema.FieldInfo fieldInfo = schema.getFieldInfo(field); - - if (fieldInfo != null - && (fieldInfo.getFieldType().indexOptions() == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS - || fieldInfo.getFieldType().indexOptions() - == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS)) { - appendPositions(writer, docsEnum); - } - } - - private static void appendPositions(ViewerWriter writer, PostingsEnum docsAndPositionsEnum) - throws IOException { - writer.name("positions"); - - writer.beginArray(); - final int frequency = docsAndPositionsEnum.freq(); - for (int i = 0; i < frequency; i++) { - int position = docsAndPositionsEnum.nextPosition(); - writer.value(Integer.toString(position)); - } - writer.endArray(); - } - - private static void appendDocs(ViewerWriter writer, TermsEnum termsEnum, int maxDocs, - EarlybirdIndexSegmentAtomicReader twitterReader) - throws IOException { - writer.name("docIds"); - - writer.beginArray(); - - PostingsEnum docs = termsEnum.postings(null, 0); - int docsReturned = 0; - int docId; - boolean endedEarly = false; - DocIDToTweetIDMapper mapper = twitterReader.getSegmentData().getDocIDToTweetIDMapper(); - while ((docId = docs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { - if (docsReturned < maxDocs) { - docsReturned++; - long tweetID = mapper.getTweetID(docId); - - writer.beginObject(); - writer.name("docId").value(Long.toString(docId)); - writer.name("tweetId").value(Long.toString(tweetID)); - writer.endObject(); - } else { - endedEarly = true; - break; - } - } - if (endedEarly) { - writer.beginObject(); - writer.name("status").value("ended early"); - writer.endObject(); - } - writer.endArray(); - } - - /** - * Prints generic stats for all fields in the currently viewed index. - */ - public void dumpStats(ViewerWriter writer) throws IOException { - writer.beginObject(); - - printHeader(writer); - // stats section - writer.name("stats"); - writer.beginArray(); - writer.newline(); - for (String field : sortedFields()) { - Terms terms = twitterReader.terms(field); - if (terms != null) { - printStats(writer, field, terms); - } - } - writer.endArray(); - writer.endObject(); - } - - private void printStats(ViewerWriter writer, String field, Terms terms) throws IOException { - StatsDto statsDto = new StatsDto( - field, String.valueOf(terms.size()), terms.getClass().getCanonicalName()); - statsDto.write(writer); - writer.newline(); - } - - private void printHeader(ViewerWriter writer) throws IOException { - writer.name("timeSliceId").value(Long.toString(this.searcher.getTimeSliceID())); - writer.name("maxDocNumber").value(Integer.toString(this.twitterReader.maxDoc())); - writer.newline(); - } - - private static String formatField(String field) { - return String.format("%20s", field); - } - - /** - * Dumps out the schema of the current segment. - * @param writer to be used for printing - */ - public void dumpSchema(ViewerWriter writer) throws IOException { - writer.beginObject(); - printHeader(writer); - writer.name("schemaFields"); - writer.beginArray(); - writer.newline(); - Schema schema = this.twitterReader.getSchema(); - // The fields in the schema are not sorted. Sort them so that the output is deterministic - Set fieldNameSet = new TreeSet<>(); - for (Schema.FieldInfo fieldInfo: schema.getFieldInfos()) { - fieldNameSet.add(fieldInfo.getName()); - } - for (String fieldName : fieldNameSet) { - writer.value(fieldName); - writer.newline(); - } - writer.endArray(); - writer.endObject(); - } - - /** - * Dumps out the indexed fields inside the current segment. - * Mainly used to help the front end populate the fields. - * @param writer writer to be used for printing - */ - public void dumpFields(ViewerWriter writer) throws IOException { - writer.beginObject(); - printHeader(writer); - writer.name("fields"); - writer.beginArray(); - writer.newline(); - for (String field : sortedFields()) { - writer.value(field); - writer.newline(); - } - writer.endArray(); - writer.endObject(); - } - - /** - * Dumps out the mapping of the tweet/tweetId to - * a docId as well as segment/timeslide pair. - * @param writer writer to be used for writing - * @param tweetId tweetId that is input by user - */ - public void dumpTweetIdToDocIdMapping(ViewerWriter writer, long tweetId) throws IOException { - writer.beginObject(); - printHeader(writer); - writer.name("tweetId").value(Long.toString(tweetId)); - int docId = twitterReader.getSegmentData().getDocIDToTweetIDMapper().getDocID(tweetId); - - writer.name("docId").value(Integer.toString(docId)); - writer.endObject(); - writer.newline(); - } - - /** - * Dumps out the mapping of the docId to - * tweetId and timeslice/segmentId pairs. - * @param writer writer to be used for writing - * @param docid docId that is input by user - */ - public void dumpDocIdToTweetIdMapping(ViewerWriter writer, int docid) throws IOException { - writer.beginObject(); - printHeader(writer); - long tweetId = twitterReader.getSegmentData().getDocIDToTweetIDMapper().getTweetID(docid); - - writer.name("tweetId"); - if (tweetId >= 0) { - writer.value(Long.toString(tweetId)); - } else { - writer.value("Does not exist in segment"); - } - writer.name("docid").value(Integer.toString(docid)); - writer.endObject(); - } - - /** - * Print a response indicating that the given tweet id is not found in the index. - * - * Note that this method does not actually need the underlying index, and hence is setup as - * a util function. - */ - public static void writeTweetDoesNotExistResponse(ViewerWriter writer, long tweetId) - throws IOException { - writer.beginObject(); - writer.name("tweetId"); - writer.value(Long.toString(tweetId)); - writer.name("docId"); - writer.value("does not exist on this earlybird."); - writer.endObject(); - } -} diff --git a/src/java/com/twitter/search/earlybird/util/JsonViewerWriter.docx b/src/java/com/twitter/search/earlybird/util/JsonViewerWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..5c7ebe1cf84e6853b7e609b7f0b3bb5ff66401cf GIT binary patch literal 37071 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 ZVyLad0B=@c4g%#WL54(N_E6{p@c=$@Q$PR! literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/OneTaskScheduledExecutorManager.java b/src/java/com/twitter/search/earlybird/util/OneTaskScheduledExecutorManager.java deleted file mode 100644 index cdd9d50c3..000000000 --- a/src/java/com/twitter/search/earlybird/util/OneTaskScheduledExecutorManager.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.io.Closeable; -import java.io.IOException; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.concurrent.ScheduledExecutorServiceFactory; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; - -/** - * Executes a single periodic task. - */ -public abstract class OneTaskScheduledExecutorManager - extends ScheduledExecutorManager implements Closeable { - private final ScheduledExecutorTask scheduledTask; - private final PeriodicActionParams periodicActionParams; - - public OneTaskScheduledExecutorManager( - ScheduledExecutorServiceFactory executorServiceFactory, - String threadNameFormat, - boolean isDaemon, - PeriodicActionParams periodicActionParams, - ShutdownWaitTimeParams shutdownTiming, - SearchStatsReceiver searchStatsReceiver, - CriticalExceptionHandler criticalExceptionHandler) { - this(executorServiceFactory.build(threadNameFormat, isDaemon), periodicActionParams, - shutdownTiming, searchStatsReceiver, criticalExceptionHandler); - } - - public OneTaskScheduledExecutorManager( - ScheduledExecutorService executor, - PeriodicActionParams periodicActionParams, - ShutdownWaitTimeParams shutdownTiming, - SearchStatsReceiver searchStatsReceiver, - CriticalExceptionHandler criticalExceptionHandler) { - this(executor, periodicActionParams, shutdownTiming, searchStatsReceiver, null, - criticalExceptionHandler, Clock.SYSTEM_CLOCK); - } - - public OneTaskScheduledExecutorManager( - ScheduledExecutorService executor, - PeriodicActionParams periodicActionParams, - ShutdownWaitTimeParams shutdownWaitTimeParams, - SearchStatsReceiver searchStatsReceiver, - SearchCounter iterationCounter, - CriticalExceptionHandler criticalExceptionHandler, - Clock clock) { - super(executor, shutdownWaitTimeParams, searchStatsReceiver, iterationCounter, - criticalExceptionHandler, clock); - - this.periodicActionParams = periodicActionParams; - this.scheduledTask = new ScheduledExecutorTask(getIterationCounter(), clock) { - @Override - protected void runOneIteration() { - OneTaskScheduledExecutorManager.this.runOneIteration(); - } - }; - } - - /** - * Schedule the single internally specified task returned by getScheduledTask. - */ - public ScheduledFuture schedule() { - return this.scheduleNewTask( - this.getScheduledTask(), - this.periodicActionParams - ); - } - - /** - * The code that the task executes. - */ - protected abstract void runOneIteration(); - - public ScheduledExecutorTask getScheduledTask() { - return scheduledTask; - } - - @Override - public void close() throws IOException { - try { - shutdown(); - } catch (InterruptedException e) { - throw new IOException(e); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/util/ParallelUtil.docx b/src/java/com/twitter/search/earlybird/util/ParallelUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..0c721457b3460b5107a2d03f60c31fe574056cb3 GIT binary patch literal 37564 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 MArY88T>C&g0BmSQw*UYD literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/ParallelUtil.java b/src/java/com/twitter/search/earlybird/util/ParallelUtil.java deleted file mode 100644 index 9e570b1d9..000000000 --- a/src/java/com/twitter/search/earlybird/util/ParallelUtil.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.stream.Collectors; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import com.twitter.util.Await; -import com.twitter.util.Future; -import com.twitter.util.Future$; -import com.twitter.util.FuturePool; -import com.twitter.util.FuturePool$; - -public final class ParallelUtil { - private ParallelUtil() { - } - - public static List parmap(String threadName, CheckedFunction fn, List input) - throws Exception { - return parmap(threadName, input.size(), fn, input); - } - - /** - * Runs a function in parallel across the elements of the list, and throws an exception if any - * of the functions throws, or returns the results. - * - * Uses as many threads as there are elements in the input, so only use this for tasks that - * require significant CPU for each element, and have less elements than the number of cores. - */ - public static List parmap( - String threadName, int threadPoolSize, CheckedFunction fn, List input) - throws Exception { - ExecutorService executor = Executors.newFixedThreadPool(threadPoolSize, - buildThreadFactory(threadName)); - FuturePool futurePool = FuturePool$.MODULE$.apply(executor); - - List> futures = input - .stream() - .map(in -> futurePool.apply(() -> { - try { - return fn.apply(in); - } catch (Exception e) { - throw new RuntimeException(e); - } - })).collect(Collectors.toList()); - - try { - return Await.result(Future$.MODULE$.collect(futures)); - } finally { - executor.shutdownNow(); - } - } - - private static ThreadFactory buildThreadFactory(String threadNameFormat) { - return new ThreadFactoryBuilder() - .setNameFormat(threadNameFormat) - .setDaemon(false) - .build(); - } - - @FunctionalInterface - public interface CheckedFunction { - /** - * A function from T to R that throws checked Exceptions. - */ - R apply(T t) throws Exception; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/PeriodicActionParams.docx b/src/java/com/twitter/search/earlybird/util/PeriodicActionParams.docx new file mode 100644 index 0000000000000000000000000000000000000000..7911aa7d1d73e2652654d67ef6f37b552802bca6 GIT binary patch literal 37368 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

    Eu$BXE6$GyZGpXu_LKLt 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 0) { - long waitTime = Math.min(waitSeconds, SHUTDOWN_WAIT_INTERVAL_SEC); - terminated = executor.awaitTermination(waitTime, TimeUnit.SECONDS); - waitSeconds -= waitTime; - - if (!terminated) { - LOG.info("Still shutting down {} ...", name); - } - } - } - - LOG.info("Done shutting down {}, terminated: {}", name, terminated); - - shutdownComponent(); - return terminated; - } - - protected ScheduledExecutorService getExecutor() { - return executor; - } - - public final String getName() { - return name; - } - - public SearchCounter getIterationCounter() { - return iterationCounter; - } - - protected final SearchStatsReceiver getSearchStatsReceiver() { - return searchStatsReceiver; - } - - // Override if you need to shutdown additional services. - protected void shutdownComponent() { - } -} diff --git a/src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.docx b/src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.docx new file mode 100644 index 0000000000000000000000000000000000000000..abfcf9994818aa629e500a0a57ca68d1128f0bff GIT binary patch literal 36985 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 YwhjZlS%EnSl&b_85`o!+sRzUZ03sV9s{jB1 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.java b/src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.java deleted file mode 100644 index a6cd074c0..000000000 --- a/src/java/com/twitter/search/earlybird/util/ScheduledExecutorTask.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.search.earlybird.util; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.metrics.SearchCounter; - -public abstract class ScheduledExecutorTask implements Runnable { - private final SearchCounter counter; - protected final Clock clock; - - public ScheduledExecutorTask(SearchCounter counter, Clock clock) { - Preconditions.checkNotNull(counter); - this.counter = counter; - this.clock = clock; - } - - @Override - public final void run() { - counter.increment(); - runOneIteration(); - } - - @VisibleForTesting - protected abstract void runOneIteration(); -} diff --git a/src/java/com/twitter/search/earlybird/util/ScrubGenUtil.docx b/src/java/com/twitter/search/earlybird/util/ScrubGenUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ff73fc9a51e689fef06b73f3c4aaecfcf978bb8 GIT binary patch literal 37098 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 z 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 L0<%Y04~Pc<-cwIj literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/ShutdownWaitTimeParams.java b/src/java/com/twitter/search/earlybird/util/ShutdownWaitTimeParams.java deleted file mode 100644 index ec056e93a..000000000 --- a/src/java/com/twitter/search/earlybird/util/ShutdownWaitTimeParams.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.util.concurrent.TimeUnit; - -/** - * Specifies how much time do we wait when shutting down a task. - */ -public class ShutdownWaitTimeParams { - private long waitDuration; - private TimeUnit waitUnit; - - public ShutdownWaitTimeParams(long waitDuration, TimeUnit waitUnit) { - this.waitDuration = waitDuration; - this.waitUnit = waitUnit; - } - - public long getWaitDuration() { - return waitDuration; - } - - public TimeUnit getWaitUnit() { - return waitUnit; - } - - /** - * Returns a ShutdownWaitTimeParams instance that instructs the caller to wait indefinitely for - * the task to shut down. - */ - public static ShutdownWaitTimeParams indefinitely() { - return new ShutdownWaitTimeParams(Long.MAX_VALUE, TimeUnit.DAYS); - } - - /** - * Returns a ShutdownWaitTimeParams instance that instructs the caller to shut down the task - * immediately. - */ - public static ShutdownWaitTimeParams immediately() { - return new ShutdownWaitTimeParams(0, TimeUnit.MILLISECONDS); - } -} diff --git a/src/java/com/twitter/search/earlybird/util/TermCountMonitor.docx b/src/java/com/twitter/search/earlybird/util/TermCountMonitor.docx new file mode 100644 index 0000000000000000000000000000000000000000..222870d95f2ca4679799bddf10f1eb5e788d5d69 GIT binary patch literal 40566 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 V=!g;Yb5s!lED*!vI_KxF{{hzwSM>k@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/TermCountMonitor.java b/src/java/com/twitter/search/earlybird/util/TermCountMonitor.java deleted file mode 100644 index 55d747754..000000000 --- a/src/java/com/twitter/search/earlybird/util/TermCountMonitor.java +++ /dev/null @@ -1,338 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Function; -import java.util.stream.Collectors; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.commons.lang.mutable.MutableLong; -import org.apache.lucene.index.IndexOptions; -import org.apache.lucene.index.Terms; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.concurrent.ScheduledExecutorServiceFactory; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.metrics.SearchTimer; -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.index.EarlybirdSingleSegmentSearcher; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentManager; - -/** - * A background task that periodically gets and exports the number of terms per field that are - * indexed on this earlybird, averaged over all segments. - * Specifically used for making sure that we are not missing terms for any fields in the search - * archives. - * The task loops though all the segments that are indexed by this earlybird, and for each segment - * looks at the term counts for all fields in that segment. - * - * Also keeps track of the number of fields that do not have any term counts (or below the specified - * threshold) in the data that is indexed on this earlybird. - */ -public class TermCountMonitor extends OneTaskScheduledExecutorManager { - private static final Logger LOG = LoggerFactory.getLogger(TermCountMonitor.class); - - private static final String THREAD_NAME_FORMAT = "TermCountMonitor-%d"; - private static final boolean THREAD_IS_DAEMON = true; - - public static final String RUN_INTERVAL_MINUTES_CONFIG_NAME = - "term_count_monitor_run_interval_minutes"; - - private static Function termStatNameFunc = - field -> "term_count_on_field_" + field; - private static Function tokenStatNameFunc = - field -> "token_count_on_field_" + field; - private static Function missingFieldStatNameFunc = - field -> "term_count_monitor_missing_field_" + field; - - private static class RawFieldCounter { - private MutableLong numTerms = new MutableLong(0L); - private MutableLong numTokens = new MutableLong(0L); - } - - @VisibleForTesting - static class ExportedFieldCounter { - private final AtomicLong numTerms; - private final AtomicLong numTokens; - - ExportedFieldCounter(RawFieldCounter rawCounter) { - this.numTerms = new AtomicLong(rawCounter.numTerms.longValue()); - this.numTokens = new AtomicLong(rawCounter.numTokens.longValue()); - } - - ExportedFieldCounter(long numInitialTerms, long numInitialTokens) { - this.numTerms = new AtomicLong(numInitialTerms); - this.numTokens = new AtomicLong(numInitialTokens); - } - - @VisibleForTesting - long getNumTerms() { - return numTerms.longValue(); - } - - @VisibleForTesting - long getNumTokens() { - return numTokens.longValue(); - } - } - - private final int fieldMinTermCount = - EarlybirdConfig.getInt("term_count_monitor_min_count", 0); - - private final SegmentManager segmentManager; - private final Map missingFields; - private final Map termStats; - private final Map tokenStats; - private final Map exportedCounts; - private final SearchLongGauge termCountOnAllFields; - private final SearchLongGauge tokenCountOnAllFields; - private final SearchLongGauge fieldsWithNoTermCountStat; - private final SearchLongGauge isRunningStat; - private final SearchTimerStats checkTimeStat; - - @Override - protected void runOneIteration() { - LOG.info("Starting to get per-field term counts"); - isRunningStat.set(1); - final SearchTimer timer = checkTimeStat.startNewTimer(); - try { - updateFieldTermCounts(); - } catch (Exception ex) { - LOG.error("Unexpected exception while getting per-field term counts", ex); - } finally { - LOG.info( - "Done getting per-field term counts. Fields with low term counts: {}", - getFieldsWithLowTermCount()); - isRunningStat.set(0); - checkTimeStat.stopTimerAndIncrement(timer); - } - } - - /** - * Create a term count monitor which monitors the number of terms in segments - * managed by the given segment manager. - */ - public TermCountMonitor( - SegmentManager segmentManager, - ScheduledExecutorServiceFactory executorServiceFactory, - long shutdownWaitDuration, - TimeUnit shutdownWaitUnit, - SearchStatsReceiver searchStatsReceiver, - CriticalExceptionHandler criticalExceptionHandler) { - super( - executorServiceFactory, - THREAD_NAME_FORMAT, - THREAD_IS_DAEMON, - PeriodicActionParams.atFixedRate( - EarlybirdConfig.getInt(RUN_INTERVAL_MINUTES_CONFIG_NAME, -1), - TimeUnit.MINUTES), - new ShutdownWaitTimeParams( - shutdownWaitDuration, - shutdownWaitUnit - ), - searchStatsReceiver, - criticalExceptionHandler); - this.segmentManager = segmentManager; - this.missingFields = new HashMap<>(); - this.termStats = new HashMap<>(); - this.tokenStats = new HashMap<>(); - this.exportedCounts = new HashMap<>(); - this.termCountOnAllFields = getSearchStatsReceiver().getLongGauge("term_count_on_all_fields"); - this.tokenCountOnAllFields = getSearchStatsReceiver().getLongGauge("token_count_on_all_fields"); - this.fieldsWithNoTermCountStat = - getSearchStatsReceiver().getLongGauge("fields_with_low_term_counts"); - this.isRunningStat = - getSearchStatsReceiver().getLongGauge("term_count_monitor_is_running"); - this.checkTimeStat = - getSearchStatsReceiver().getTimerStats( - "term_count_monitor_check_time", TimeUnit.MILLISECONDS, true, true, false); - } - - private SearchLongGauge getOrCreateLongGauge( - Map gauges, String field, Function nameSupplier) { - SearchLongGauge stat = gauges.get(field); - - if (stat == null) { - stat = getSearchStatsReceiver().getLongGauge(nameSupplier.apply(field)); - gauges.put(field, stat); - } - - return stat; - } - - private void updateFieldTermCounts() { - // 0. Get the current per-field term counts - Map newCounts = getFieldStats(); - LOG.info("Computed field stats for all segments"); - - // 1. Update all existing keys - for (Map.Entry exportedCount : exportedCounts.entrySet()) { - String field = exportedCount.getKey(); - ExportedFieldCounter exportedCountValue = exportedCount.getValue(); - - RawFieldCounter newCount = newCounts.get(field); - if (newCount == null) { - exportedCountValue.numTerms.set(0L); - exportedCountValue.numTokens.set(0L); - } else { - exportedCountValue.numTerms.set(newCount.numTerms.longValue()); - exportedCountValue.numTokens.set(newCount.numTokens.longValue()); - - // clean up so that we don't check this field again when we look for new field - newCounts.remove(field); - } - } - - // 2. Add and export all new fields' term counts - for (Map.Entry newCount: newCounts.entrySet()) { - String field = newCount.getKey(); - Preconditions.checkState(!exportedCounts.containsKey(field), - "Should have already processed and removed existing fields: " + field); - - ExportedFieldCounter newStat = new ExportedFieldCounter(newCount.getValue()); - exportedCounts.put(field, newStat); - } - - // 3. Export as a stat the term counts for all the known fields. - for (Map.Entry exportedCount : exportedCounts.entrySet()) { - String field = exportedCount.getKey(); - ExportedFieldCounter counter = exportedCount.getValue(); - - getOrCreateLongGauge(termStats, field, termStatNameFunc).set(counter.numTerms.get()); - getOrCreateLongGauge(tokenStats, field, tokenStatNameFunc).set(counter.numTokens.get()); - } - - // 4. Export as a stat, number of fields not having enough term counts (i.e. <= 0) - int fieldsWithNoTermCounts = 0; - for (Map.Entry fieldTermCount : exportedCounts.entrySet()) { - String field = fieldTermCount.getKey(); - AtomicLong exportedCountValue = fieldTermCount.getValue().numTerms; - if (exportedCountValue.get() <= fieldMinTermCount) { - LOG.warn( - "Found a field with too few term counts. Field: {} count: {}", - field, exportedCountValue); - fieldsWithNoTermCounts++; - } - } - this.fieldsWithNoTermCountStat.set(fieldsWithNoTermCounts); - } - - /** - * Loops through all segments, and for each field gets the average term/token count. - * Based on that, returns a map from each field to its term/token count (average per segment). - */ - private Map getFieldStats() { - Iterable segmentInfos = segmentManager.getSegmentInfos( - SegmentManager.Filter.Enabled, SegmentManager.Order.NEW_TO_OLD); - Map rawCounts = new HashMap<>(); - - ImmutableSchemaInterface schemaSnapshot = - segmentManager.getEarlybirdIndexConfig().getSchema().getSchemaSnapshot(); - Set missingFieldsCandidates = schemaSnapshot - .getFieldInfos() - .stream() - .filter(fieldInfo -> fieldInfo.getFieldType().indexOptions() != IndexOptions.NONE) - .map(Schema.FieldInfo::getName) - .collect(Collectors.toSet()); - int segmentCount = 0; - for (SegmentInfo segmentInfo : segmentInfos) { - segmentCount++; - try { - EarlybirdSingleSegmentSearcher searcher = segmentManager.getSearcher( - segmentInfo.getTimeSliceID(), schemaSnapshot); - if (searcher != null) { - EarlybirdIndexSegmentAtomicReader reader = searcher.getTwitterIndexReader(); - for (Schema.FieldInfo fieldInfo : schemaSnapshot.getFieldInfos()) { - if (fieldInfo.getFieldType().indexOptions() == IndexOptions.NONE) { - continue; - } - - String fieldName = fieldInfo.getName(); - RawFieldCounter count = rawCounts.get(fieldName); - if (count == null) { - count = new RawFieldCounter(); - rawCounts.put(fieldName, count); - } - Terms terms = reader.terms(fieldName); - if (terms != null) { - missingFieldsCandidates.remove(fieldName); - count.numTerms.add(terms.size()); - long sumTotalTermFreq = terms.getSumTotalTermFreq(); - if (sumTotalTermFreq != -1) { - count.numTokens.add(sumTotalTermFreq); - } - } - } - } - } catch (Exception e) { - LOG.error("Exception getting average term count per field: " + segmentInfo, e); - } - } - - // Update missing fields stats. - missingFieldsCandidates.forEach( - field -> getOrCreateLongGauge(missingFields, field, missingFieldStatNameFunc).set(1)); - missingFields.keySet().stream() - .filter( - field -> !missingFieldsCandidates.contains(field)) - .forEach( - field -> getOrCreateLongGauge(missingFields, field, missingFieldStatNameFunc).set(0)); - - long totalTermCount = 0; - long totalTokenCount = 0; - if (segmentCount == 0) { - LOG.error("No segments are found to calculate per-field term counts."); - } else { - LOG.debug("TermCountMonitor.getPerFieldTermCount.segmentCount = {}", segmentCount); - LOG.debug(" field: term count (average per segment)"); - for (Map.Entry entry : rawCounts.entrySet()) { - String field = entry.getKey(); - final long averageTermCount = entry.getValue().numTerms.longValue() / segmentCount; - final long averageTokenCount = entry.getValue().numTokens.longValue() / segmentCount; - totalTermCount += entry.getValue().numTerms.longValue(); - totalTokenCount += entry.getValue().numTokens.longValue(); - - LOG.debug(" '{} term': {}", field, averageTermCount); - LOG.debug(" '{} token': {}", field, averageTokenCount); - - entry.getValue().numTerms.setValue(averageTermCount); - entry.getValue().numTokens.setValue(averageTokenCount); - } - } - LOG.info("Total term count: {}", totalTermCount); - LOG.info("Total token count: {}", totalTokenCount); - this.termCountOnAllFields.set(totalTermCount); - this.tokenCountOnAllFields.set(totalTokenCount); - - return rawCounts; - } - - @VisibleForTesting - Map getExportedCounts() { - return Collections.unmodifiableMap(this.exportedCounts); - } - - @VisibleForTesting - long getFieldsWithLowTermCount() { - return fieldsWithNoTermCountStat.get(); - } - - @VisibleForTesting - Map getMissingFields() { - return missingFields; - } -} diff --git a/src/java/com/twitter/search/earlybird/util/TweetCountMonitor.docx b/src/java/com/twitter/search/earlybird/util/TweetCountMonitor.docx new file mode 100644 index 0000000000000000000000000000000000000000..30a987c5672882eef80723aa27b7253562d48aae GIT binary patch literal 41670 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 j$ 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

    !q>H2LV$>Ov+o;AZER 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/util/TweetCountMonitor.java b/src/java/com/twitter/search/earlybird/util/TweetCountMonitor.java deleted file mode 100644 index e33433656..000000000 --- a/src/java/com/twitter/search/earlybird/util/TweetCountMonitor.java +++ /dev/null @@ -1,447 +0,0 @@ -package com.twitter.search.earlybird.util; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Maps; - -import org.apache.commons.lang.mutable.MutableInt; -import org.apache.commons.lang.mutable.MutableLong; -import org.apache.lucene.index.IndexOptions; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.DocIdSetIterator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.collections.Pair; -import com.twitter.search.common.concurrent.ScheduledExecutorServiceFactory; -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.SearchTimerStats; -import com.twitter.search.common.partitioning.base.Segment; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.TimeMapper; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.index.EarlybirdSingleSegmentSearcher; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentManager; - -/** - * A background task that periodically gets and exports the number of tweets per hour that are - * indexed on this earlybird. - * Specifically used for making sure that we are not missing data for any hours in the search - * archives. - * The task loops though all the segments that are indexed by this earlybird, and for each segment - * looks at all the createdAt dates for all of the documents in that segment. - * - * Also keeps track off an exposes as a stat the number of hours that do not have any tweets in the - * min/max range of data that IS indexed on this earlybird. i.e if we only have data for - * 2006/01/01:02 and 2006/01/01:04, it will consider 2006/01/01:03 as a missing hour. - * Hours before 2006/01/01:02 or after 2006/01/01:04 will not be considered as missing. - */ -public class TweetCountMonitor extends OneTaskScheduledExecutorManager { - private static final Logger LOG = LoggerFactory.getLogger(TweetCountMonitor.class); - - private static final String THREAD_NAME_FORMAT = "TweetCountMonitor-%d"; - private static final boolean THREAD_IS_DAEMON = true; - - public static final String RUN_INTERVAL_MINUTES_CONFIG_NAME = - "tweet_count_monitor_run_interval_minutes"; - public static final String START_CHECK_HOUR_CONFIG_NAME = - "tweet_count_monitor_start_check_hour"; - public static final String HOURLY_MIN_COUNT_CONFIG_NAME = - "tweet_count_monitor_hourly_min_count"; - public static final String DAILY_MIN_COUNT_CONFIG_NAME = - "tweet_count_monitor_daily_min_count"; - - @VisibleForTesting - public static final AtomicInteger INSTANCE_COUNTER = new AtomicInteger(0); - - private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1); - - private final SegmentManager segmentManager; - - private final SearchStatsReceiver searchStatsReceiver; - private final int instanceCounter; - - // The first date in format "YYYYMMDDHH" that we want to check counts for. - private final int startCheckHour; - // The last date in format "YYYYMMDDHH" that we want to check counts for. - private final int endCheckHour; - //Smallest number of docs we expect to have for each day. - private final int dailyMinCount; - // Smallest number of docs we expect to have for each hour. - private final int hourlyMinCount; - // Binary stat, set to 0 when the monitor is running - private final SearchLongGauge isRunningStat; - // How long each iteration takes - private final SearchTimerStats checkTimeStat; - - private final Map fieldTermCounters; - private final Map fieldCheckTimeStats; - - /** - * Create a TweetCountMonitor to monitor all segments in the given segmentManager - */ - public TweetCountMonitor( - SegmentManager segmentManager, - ScheduledExecutorServiceFactory executorServiceFactory, - long shutdownWaitDuration, - TimeUnit shutdownWaitUnit, - SearchStatsReceiver searchStatsReceiver, - CriticalExceptionHandler criticalExceptionHandler) { - this(segmentManager, - EarlybirdConfig.getInt(START_CHECK_HOUR_CONFIG_NAME, 0), - EarlybirdConfig.getInt(RUN_INTERVAL_MINUTES_CONFIG_NAME, -1), - EarlybirdConfig.getInt(HOURLY_MIN_COUNT_CONFIG_NAME, 0), - EarlybirdConfig.getInt(DAILY_MIN_COUNT_CONFIG_NAME, 0), - executorServiceFactory, - shutdownWaitDuration, - shutdownWaitUnit, - searchStatsReceiver, - criticalExceptionHandler); - } - - @VisibleForTesting - TweetCountMonitor( - SegmentManager segmentManager, - int startCheckHourFromConfig, - int schedulePeriodMinutes, - int hourlyMinCount, - int dailyMinCount, - ScheduledExecutorServiceFactory executorServiceFactory, - long shutdownWaitDuration, - TimeUnit shutdownWaitUnit, - SearchStatsReceiver searchStatsReceiver, - CriticalExceptionHandler criticalExceptionHandler) { - super( - executorServiceFactory, - THREAD_NAME_FORMAT, - THREAD_IS_DAEMON, - PeriodicActionParams.atFixedRate( - schedulePeriodMinutes, - TimeUnit.MINUTES - ), - new ShutdownWaitTimeParams( - shutdownWaitDuration, - shutdownWaitUnit - ), - searchStatsReceiver, - criticalExceptionHandler); - this.segmentManager = segmentManager; - this.searchStatsReceiver = searchStatsReceiver; - this.instanceCounter = INSTANCE_COUNTER.incrementAndGet(); - this.hourlyMinCount = hourlyMinCount; - this.dailyMinCount = dailyMinCount; - - String isRunningStatName = "tweet_count_monitor_is_running_v_" + this.instanceCounter; - this.isRunningStat = SearchLongGauge.export(isRunningStatName); - String checkTimeStatName = "tweet_count_monitor_check_time_v_" + this.instanceCounter; - this.checkTimeStat = SearchTimerStats.export(checkTimeStatName, TimeUnit.MILLISECONDS, true); - - this.startCheckHour = Math.max( - startCheckHourFromConfig, - dateToHourValue(segmentManager.getPartitionConfig().getTierStartDate())); - this.endCheckHour = dateToHourValue(segmentManager.getPartitionConfig().getTierEndDate()); - - this.fieldTermCounters = Maps.newHashMap(); - this.fieldTermCounters.put( - FieldTermCounter.TWEET_COUNT_KEY, - new FieldTermCounter( - FieldTermCounter.TWEET_COUNT_KEY, - instanceCounter, - startCheckHour, - endCheckHour, - hourlyMinCount, - dailyMinCount)); - this.fieldCheckTimeStats = Maps.newHashMap(); - } - - private int dateToHourValue(Date date) { - Calendar cal = Calendar.getInstance(FieldTermCounter.TIME_ZONE); - cal.setTime(date); - return FieldTermCounter.getHourValue(cal); - } - - private void updateHourlyCounts() { - // Iterate the current index to count all tweets anf field hits. - Map> newCountMap = getNewTweetCountMap(); - - for (Map.Entry> newCounts : newCountMap.entrySet()) { - final String fieldName = newCounts.getKey(); - FieldTermCounter termCounter = fieldTermCounters.get(fieldName); - if (termCounter == null) { - termCounter = new FieldTermCounter( - fieldName, - instanceCounter, - startCheckHour, - endCheckHour, - hourlyMinCount, - dailyMinCount); - fieldTermCounters.put(fieldName, termCounter); - } - termCounter.runWithNewCounts(newCounts.getValue()); - } - } - - /** - * Loops through all segments, and all documents in each segment, and for each document - * gets the createdAt timestamp (in seconds) from the TimeMapper. - * Based on that, returns a map with the count of: - * . the number of tweets for each hour - * . the number of tweets corresponding to each field for each hour - */ - private Map> getNewTweetCountMap() { - Iterable segmentInfos = segmentManager.getSegmentInfos( - SegmentManager.Filter.Enabled, SegmentManager.Order.NEW_TO_OLD); - Map> newCountMap = Maps.newHashMap(); - - Map newCounts = Maps.newHashMap(); - newCountMap.put(FieldTermCounter.TWEET_COUNT_KEY, newCounts); - - ImmutableSchemaInterface schemaSnapshot = - segmentManager.getEarlybirdIndexConfig().getSchema().getSchemaSnapshot(); - Calendar cal = Calendar.getInstance(FieldTermCounter.TIME_ZONE); - for (SegmentInfo segmentInfo : segmentInfos) { - try { - EarlybirdSingleSegmentSearcher searcher = segmentManager.getSearcher( - segmentInfo.getTimeSliceID(), schemaSnapshot); - if (searcher != null) { - EarlybirdIndexSegmentAtomicReader reader = searcher.getTwitterIndexReader(); - TimeMapper timeMapper = reader.getSegmentData().getTimeMapper(); - List> outsideEndDateRangeDocList = new ArrayList<>(); - - // Get the number of tweets for each hour. - int docsOutsideEndDateRange = getNewTweetCountsForSegment( - segmentInfo, reader, timeMapper, cal, newCounts); - if (docsOutsideEndDateRange > 0) { - outsideEndDateRangeDocList.add(new Pair<>( - FieldTermCounter.TWEET_COUNT_KEY, docsOutsideEndDateRange)); - } - - // Get the number of tweets with corresponding field for each hour. - for (Schema.FieldInfo fieldInfo : schemaSnapshot.getFieldInfos()) { - if (fieldInfo.getFieldType().indexOptions() == IndexOptions.NONE) { - continue; - } - - String fieldName = fieldInfo.getName(); - docsOutsideEndDateRange = getNewFieldTweetCountsForSegment( - segmentInfo, reader, timeMapper, cal, fieldName, newCountMap); - if (docsOutsideEndDateRange > 0) { - outsideEndDateRangeDocList.add(new Pair<>(fieldName, docsOutsideEndDateRange)); - } - } - - LOG.info("Inspected segment: " + segmentInfo + " found " - + outsideEndDateRangeDocList.size() - + " fields with documents outside of segment end date."); - for (Pair outsideEndRange : outsideEndDateRangeDocList) { - LOG.info(" outside end date range - segment: " + segmentInfo.getSegmentName() - + " field: " + outsideEndRange.toString()); - } - } - } catch (IOException e) { - LOG.error("Exception getting daily tweet counts for timeslice: " + segmentInfo, e); - } - } - return newCountMap; - } - - private void incrementNumDocsWithIllegalTimeCounter(String segmentName, String fieldSuffix) { - String statName = String.format( - "num_docs_with_illegal_time_for_segment_%s%s_counter", segmentName, fieldSuffix); - SearchCounter counter = SearchCounter.export(statName); - counter.increment(); - } - - private int getNewTweetCountsForSegment( - SegmentInfo segmentInfo, - EarlybirdIndexSegmentAtomicReader reader, - TimeMapper timeMapper, - Calendar cal, - Map newTweetCounts) { - DocIDToTweetIDMapper tweetIdMapper = reader.getSegmentData().getDocIDToTweetIDMapper(); - long dataEndTimeExclusiveMillis = getDataEndTimeExclusiveMillis(segmentInfo); - int docsOutsideEndDateRange = 0; - int docId = Integer.MIN_VALUE; - while ((docId = tweetIdMapper.getNextDocID(docId)) != DocIDToTweetIDMapper.ID_NOT_FOUND) { - UpdateCountType updateCountType = - updateTweetCount(timeMapper, docId, dataEndTimeExclusiveMillis, cal, newTweetCounts); - if (updateCountType == UpdateCountType.ILLEGAL_TIME) { - incrementNumDocsWithIllegalTimeCounter(segmentInfo.getSegmentName(), ""); - } else if (updateCountType == UpdateCountType.OUT_OF_RANGE_TIME) { - docsOutsideEndDateRange++; - } - } - return docsOutsideEndDateRange; - } - - private int getNewFieldTweetCountsForSegment( - SegmentInfo segmentInfo, - EarlybirdIndexSegmentAtomicReader reader, - TimeMapper timeMapper, - Calendar cal, - String field, - Map> newCountMap) throws IOException { - int docsOutsideEndDateRange = 0; - Map fieldTweetCounts = - newCountMap.computeIfAbsent(field, k -> Maps.newHashMap()); - - Terms terms = reader.terms(field); - if (terms == null) { - LOG.warn("Field <" + field + "> is missing terms in segment: " - + segmentInfo.getSegmentName()); - return 0; - } - long startTimeMillis = System.currentTimeMillis(); - - long dataEndTimeExclusiveMillis = getDataEndTimeExclusiveMillis(segmentInfo); - for (TermsEnum termsEnum = terms.iterator(); termsEnum.next() != null;) { - DocIdSetIterator docsIterator = termsEnum.postings(null, PostingsEnum.NONE); - for (int docId = docsIterator.nextDoc(); - docId != DocIdSetIterator.NO_MORE_DOCS; docId = docsIterator.nextDoc()) { - UpdateCountType updateCountType = updateTweetCount( - timeMapper, docId, dataEndTimeExclusiveMillis, cal, fieldTweetCounts); - if (updateCountType == UpdateCountType.ILLEGAL_TIME) { - incrementNumDocsWithIllegalTimeCounter( - segmentInfo.getSegmentName(), "_and_field_" + field); - } else if (updateCountType == UpdateCountType.OUT_OF_RANGE_TIME) { - docsOutsideEndDateRange++; - } - } - } - updateFieldRunTimeStats(field, System.currentTimeMillis() - startTimeMillis); - - return docsOutsideEndDateRange; - } - - private enum UpdateCountType { - OK_TIME, - ILLEGAL_TIME, - OUT_OF_RANGE_TIME, - } - - private static UpdateCountType updateTweetCount( - TimeMapper timeMapper, - int docId, - long dataEndTimeExclusiveMillis, - Calendar cal, - Map newTweetCounts) { - int timeSecs = timeMapper.getTime(docId); - if (timeSecs == TimeMapper.ILLEGAL_TIME) { - return UpdateCountType.ILLEGAL_TIME; - } - if (dataEndTimeExclusiveMillis == Segment.NO_DATA_END_TIME - || timeSecs * 1000L < dataEndTimeExclusiveMillis) { - Integer hourlyValue = FieldTermCounter.getHourValue(cal, timeSecs); - MutableInt count = newTweetCounts.get(hourlyValue); - if (count == null) { - count = new MutableInt(0); - newTweetCounts.put(hourlyValue, count); - } - count.increment(); - return UpdateCountType.OK_TIME; - } else { - return UpdateCountType.OUT_OF_RANGE_TIME; - } - } - - /** - * If a segment has an end date, return the last timestamp (exclusive, and in millis) for which - * we expect it to have data. - * @return Segment.NO_DATA_END_TIME if the segment does not have an end date. - */ - private long getDataEndTimeExclusiveMillis(SegmentInfo segmentInfo) { - long dataEndDate = segmentInfo.getSegment().getDataEndDateInclusiveMillis(); - if (dataEndDate == Segment.NO_DATA_END_TIME) { - return Segment.NO_DATA_END_TIME; - } else { - return dataEndDate + MILLIS_IN_A_DAY; - } - } - - private void updateFieldRunTimeStats(String fieldName, long runTimeMs) { - SearchTimerStats timerStats = fieldCheckTimeStats.get(fieldName); - if (timerStats == null) { - final String statName = "tweet_count_monitor_check_time_field_" + fieldName; - timerStats = searchStatsReceiver.getTimerStats( - statName, TimeUnit.MILLISECONDS, false, false, false); - fieldCheckTimeStats.put(fieldName, timerStats); - } - timerStats.timerIncrement(runTimeMs); - } - - @VisibleForTesting - String getStatName(String fieldName, Integer date) { - return FieldTermCounter.getStatName(fieldName, instanceCounter, date); - } - - @VisibleForTesting - Map getExportedCounts(String fieldName) { - if (fieldTermCounters.get(fieldName) == null) { - return null; - } else { - return fieldTermCounters.get(fieldName).getExportedCounts(); - } - } - - @VisibleForTesting - Map getDailyCounts(String fieldName) { - if (fieldTermCounters.get(fieldName) == null) { - return null; - } else { - return fieldTermCounters.get(fieldName).getDailyCounts(); - } - } - - @VisibleForTesting - long getHoursWithNoTweets(String fieldName) { - return fieldTermCounters.get(fieldName).getHoursWithNoTweets(); - } - - @VisibleForTesting - long getDaysWithNoTweets(String fieldName) { - return fieldTermCounters.get(fieldName).getDaysWithNoTweets(); - } - - @VisibleForTesting - Map getExportedHourlyCountStats(String fieldName) { - return fieldTermCounters.get(fieldName).getExportedHourlyCountStats(); - } - - @Override - protected void runOneIteration() { - LOG.info("Starting to get hourly tweet counts"); - final long startTimeMillis = System.currentTimeMillis(); - - isRunningStat.set(1); - try { - updateHourlyCounts(); - } catch (Exception ex) { - LOG.error("Unexpected exception while getting hourly tweet counts", ex); - } finally { - isRunningStat.set(0); - - long elapsedTimeMillis = System.currentTimeMillis() - startTimeMillis; - checkTimeStat.timerIncrement(elapsedTimeMillis); - LOG.info("Done getting daily tweet counts. Hours without tweets: " - + getHoursWithNoTweets(FieldTermCounter.TWEET_COUNT_KEY)); - LOG.info("Updating tweet count takes " + (elapsedTimeMillis / 1000) + " secs."); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/util/ViewerWriter.docx b/src/java/com/twitter/search/earlybird/util/ViewerWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..8504af97d80d866f9c85ffee7347b2eb8443a53c GIT binary patch literal 37082 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ClientBackupFilter.docx b/src/java/com/twitter/search/earlybird_root/ClientBackupFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..33771443e413eb051e4911f3971f54dc0f599ec1 GIT binary patch literal 37820 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 Vds$!w&8{j{h&Ql2cG70Q{SRn*%ZLB~ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ClientBackupFilter.java b/src/java/com/twitter/search/earlybird_root/ClientBackupFilter.java deleted file mode 100644 index e24333735..000000000 --- a/src/java/com/twitter/search/earlybird_root/ClientBackupFilter.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.finagle.client.BackupRequestFilter; -import com.twitter.finagle.service.ResponseClassifier; -import com.twitter.finagle.service.RetryBudgets; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.finagle.util.DefaultTimer; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.metrics.SearchCustomGauge; -import com.twitter.search.earlybird.common.ClientIdUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.util.Future; -import com.twitter.util.tunable.Tunable; - -public class ClientBackupFilter extends SimpleFilter { - private static final Logger LOG = LoggerFactory.getLogger(ClientBackupFilter.class); - - private final Map> - clientBackupFilters = new ConcurrentHashMap<>(); - private final boolean sendInterupts = false; - private final String statPrefix; - private final Tunable.Mutable maxExtraLoad; - private final StatsReceiver statsReceiver; - private final SearchDecider decider; - private final String backupRequestPrecentExtraLoadDecider; - private final int minSendBackupAfterMs = 1; - - public ClientBackupFilter(String serviceName, - String statPrefix, - StatsReceiver statsReceiver, - SearchDecider decider) { - this.statPrefix = statPrefix; - this.backupRequestPrecentExtraLoadDecider = serviceName + "_backup_request_percent_extra_load"; - this.decider = decider; - this.maxExtraLoad = Tunable.mutable("backup_tunable", getMaxExtraLoadFromDecider()); - this.statsReceiver = statsReceiver; - SearchCustomGauge.export(serviceName + "_backup_request_factor", - () -> (maxExtraLoad.apply().isDefined()) ? (double) maxExtraLoad.apply().get() : -1); - } - - private double getMaxExtraLoadFromDecider() { - return ((double) decider.getAvailability(backupRequestPrecentExtraLoadDecider)) / 100 / 100; - } - - private BackupRequestFilter backupFilter(String client) { - return new BackupRequestFilter( - maxExtraLoad, - sendInterupts, - minSendBackupAfterMs, - ResponseClassifier.Default(), - RetryBudgets.newRetryBudget(), - statsReceiver.scope(statPrefix, client, "backup_filter"), - DefaultTimer.getInstance(), - client); - } - - private void updateMaxExtraLoadIfNecessary() { - double maxExtraLoadDeciderValue = getMaxExtraLoadFromDecider(); - if (maxExtraLoad.apply().isDefined() - && !maxExtraLoad.apply().get().equals(maxExtraLoadDeciderValue)) { - LOG.info("Updating maxExtraLoad from {} to {}", - maxExtraLoad.apply().get(), - maxExtraLoadDeciderValue); - maxExtraLoad.set(maxExtraLoadDeciderValue); - } - } - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - updateMaxExtraLoadIfNecessary(); - - String clientID = ClientIdUtil.getClientIdFromRequest(request); - BackupRequestFilter filter = - clientBackupFilters.computeIfAbsent(clientID, this::backupFilter); - - return filter - .andThen(service) - .apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ClientLatencyFilter.docx b/src/java/com/twitter/search/earlybird_root/ClientLatencyFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..9a2fbb4401f7206e346878a1edd3d95e82cb1cf8 GIT binary patch literal 37486 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 { - // _client_latency_stats_for_ is intended to measure the latency of requests to services that this - // root depends on. This can be used to measure how long a request takes in transit between when - // it leaves a root and when a root receives the response, in case this latency is significantly - // different than Earlybird measured latency. We break it down by client, so that we can tell - // which customers are being hit by this latency. - private static final String STAT_FORMAT = "%s_client_latency_stats_for_%s"; - - private final ConcurrentHashMap requestCounterForClient = - new ConcurrentHashMap<>(); - private final String prefix; - - public ClientLatencyFilter(String prefix) { - this.prefix = prefix; - } - - @Override - public Future apply(EarlybirdRequest request, - Service service) { - - RequestCounters requestCounters = requestCounterForClient.computeIfAbsent( - ClientIdUtil.getClientIdFromRequest(request), client -> - new RequestCounters(String.format(STAT_FORMAT, prefix, client))); - - RequestCountersEventListener requestCountersEventListener = - new RequestCountersEventListener<>(requestCounters, Clock.SYSTEM_CLOCK, - EarlybirdSuccessfulResponseHandler.INSTANCE); - return service.apply(request).addEventListener(requestCountersEventListener); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..c3b949a666d6ad5f33a3a2a145c7194ef6f9360d GIT binary patch literal 37816 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 ME3iEFCoO#YACW_~W&i*H literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.java b/src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.java deleted file mode 100644 index 79a67ac3b..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdCacheCommonModule.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.finagle.memcached.JavaClient; -import com.twitter.finagle.mtls.authentication.ServiceIdentifier; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.caching.Cache; -import com.twitter.search.common.caching.EarlybirdCacheSerializer; -import com.twitter.search.common.caching.SearchCacheBuilder; -import com.twitter.search.common.caching.SearchMemcacheClientConfig; -import com.twitter.search.common.caching.SearchMemcacheClientFactory; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.caching.CacheCommonUtil; -import com.twitter.search.earlybird_root.caching.CacheStats; -import com.twitter.search.earlybird_root.caching.DefaultForcedCacheMissDecider; -import com.twitter.search.earlybird_root.filters.PostCacheRequestTypeCountFilter; -import com.twitter.util.Duration; - -/** - * Provides common bindings for cache related modules. - */ -public class EarlybirdCacheCommonModule extends TwitterModule { - private static final String CACHE_VERSION = "1"; - - @Override - public void configure() { - bind(PostCacheRequestTypeCountFilter.class).in(Singleton.class); - bind(DefaultForcedCacheMissDecider.class).in(Singleton.class); - } - - @Provides - @Singleton - @Named(CacheCommonUtil.NAMED_MAX_CACHE_RESULTS) - Integer provideMaxCacheResults() { - return 100; - } - - @Provides - @Singleton - JavaClient provideMemCacheClient( - StatsReceiver statsReceiver, ServiceIdentifier serviceIdentifier) { - SearchMemcacheClientConfig config = new SearchMemcacheClientConfig(); - config.connectTimeoutMs = Duration.fromMilliseconds(100); - config.requestTimeoutMs = Duration.fromMilliseconds(100); - config.failureAccrualFailuresNumber = 150; - config.failureAccrualFailuresDurationMillis = 30000; - config.failureAccrualDuration = Duration.fromMilliseconds(60000); - - return SearchMemcacheClientFactory.createMtlsClient( - "", - "earlybird_root", - statsReceiver, - config, - serviceIdentifier - ); - } - - /** - * Create a new Earlybird cache. - * - * @param client the memcache client to use. - * @param decider the decider to use for the cache. - * @param cachePrefix the common cache prefix for the cache type. - * @param serializedKeyPrefix the common cache prefix for the cluster. - * @param cacheExpiryMillis cache entry ttl in milliseconds. - */ - static Cache createCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - String cachePrefix, - String serializedKeyPrefix, - long cacheExpiryMillis, - int cacheKeyMaxBytes, - int cacheValueMaxBytes) { - return new SearchCacheBuilder( - CACHE_VERSION, - client, - cachePrefix, - serializedKeyPrefix, - cacheExpiryMillis) - .withMaxKeyBytes(cacheKeyMaxBytes) - .withMaxValueBytes(cacheValueMaxBytes) - .withRequestTimeoutCounter(CacheStats.REQUEST_TIMEOUT_COUNTER) - .withRequestFailedCounter(CacheStats.REQUEST_FAILED_COUNTER) - .withCacheSerializer(new EarlybirdCacheSerializer()) - .withForceCacheMissDecider(decider) - .withInProcessCache() - .build(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.docx new file mode 100644 index 0000000000000000000000000000000000000000..185f8153f17bb8521ea3ad0dced1911752cc353e GIT binary patch literal 37468 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 TU=9N1DnW)sVD@<03*rF)n2{rF literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.java b/src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.java deleted file mode 100644 index 1c201ce09..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdChainedScatterGatherService.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.List; - -import javax.inject.Inject; - -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.util.Future; - -/** - * A chain of scatter gather services. - * Regular roots use ScatterGatherService directly. This class is only used by multi-tier roots. - */ -public class EarlybirdChainedScatterGatherService extends - Service>> { - - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdChainedScatterGatherService.class); - - private final List> serviceChain; - - /** - * Construct a ScatterGatherServiceChain, by loading configurations from earlybird-tiers.yml. - */ - @Inject - public EarlybirdChainedScatterGatherService( - EarlybirdServiceChainBuilder serviceChainBuilder, - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - PartitionLoggingSupport partitionLoggingSupport) { - - serviceChain = - serviceChainBuilder.buildServiceChain(scatterGatherSupport, partitionLoggingSupport); - - if (serviceChain.isEmpty()) { - LOG.error("At least one tier has to be enabled."); - throw new RuntimeException("Root does not work with all tiers disabled."); - } - } - - @Override - public Future>> apply(EarlybirdRequestContext requestContext) { - // Hit all tiers in parallel. - List> resultList = - Lists.newArrayListWithCapacity(serviceChain.size()); - for (final Service service : serviceChain) { - resultList.add(service.apply(requestContext)); - } - return Future.value(resultList); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdCommonModule.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdCommonModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..966bf4080c077d93f0e9f5abe3709960a38aa255 GIT binary patch literal 38248 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 altZkRoleFlag = createFlag( - "alt_zk_role", - "", - "The alternative ZooKeeper role", - Flaggable.ofString()); - private final Flag altZkClientEnvFlag = createFlag( - "alt_zk_client_env", - "", - "The alternative zk client environment", - Flaggable.ofString()); - private final Flag altPartitionZkPathFlag = createFlag( - "alt_partition_zk_path", - "", - "The alternative client partition zk path", - Flaggable.ofString()); - - @Override - public void configure() { - bind(InitializeFilter.class).in(Singleton.class); - bind(PreCacheRequestTypeCountFilter.class).in(Singleton.class); - - bind(Clock.class).toInstance(Clock.SYSTEM_CLOCK); - bind(QueryLangStatFilter.Config.class).toInstance(new QueryLangStatFilter.Config(100)); - } - - // Used in SearchRootModule. - @Provides - @Singleton - PartialFunction provideResponseClassifier() { - return new RootResponseClassifier(); - } - - @Provides - @Singleton - Service providesByteService( - EarlybirdService.ServiceIface svc, - DarkProxy darkProxy, - TProtocolFactory protocolFactory) { - return darkProxy.toFilter().andThen( - new EarlybirdService.Service( - svc, new RichServerParam(protocolFactory, SearchRootModule.SCROOGE_BUFFER_SIZE))); - } - - @Provides - @Singleton - @Named(SearchRootModule.NAMED_SERVICE_INTERFACE) - Class providesServiceInterface() { - return EarlybirdService.ServiceIface.class; - } - - @Provides - @Singleton - ZooKeeperProxy provideZookeeperClient() { - return SearchZkClient.getSZooKeeperClient(); - } - - @Provides - @Singleton - EarlybirdFeatureSchemaMerger provideFeatureSchemaMerger() { - return new EarlybirdFeatureSchemaMerger(); - } - - @Provides - @Singleton - @Nullable - @Named(NAMED_ALT_CLIENT) - ServerSetsConfig provideAltServerSetsConfig() { - if (!altZkRoleFlag.isDefined() || !altZkClientEnvFlag.isDefined()) { - return null; - } - - return new ServerSetsConfig(altZkRoleFlag.apply(), altZkClientEnvFlag.apply()); - } - - @Provides - @Singleton - @Nullable - @Named(NAMED_ALT_CLIENT) - PartitionConfig provideAltPartitionConfig(PartitionConfig defaultPartitionConfig) { - if (!altPartitionZkPathFlag.isDefined()) { - return null; - } - - return new PartitionConfig( - defaultPartitionConfig.getNumPartitions(), altPartitionZkPathFlag.apply()); - } - - @Provides - @Singleton - @Nullable - @Named(NAMED_ALT_CLIENT) - RootClientServiceBuilder provideAltRootClientServiceBuilder( - @Named(NAMED_ALT_CLIENT) @Nullable ServerSetsConfig serverSetsConfig, - @Named(SearchRootModule.NAMED_SERVICE_INTERFACE) Class serviceIface, - ResolverProxy resolverProxy, - RemoteClientBuilder remoteClientBuilder) { - if (serverSetsConfig == null) { - return null; - } - - return new RootClientServiceBuilder<>( - serverSetsConfig, serviceIface, resolverProxy, remoteClientBuilder); - } - - @Provides - @Singleton - @Named(NAMED_EXP_CLUSTER_CLIENT) - RootClientServiceBuilder provideExpClusterRootClientServiceBuilder( - @Named(SearchRootModule.NAMED_EXP_CLUSTER_SERVER_SETS_CONFIG) - ServerSetsConfig serverSetsConfig, - @Named(SearchRootModule.NAMED_SERVICE_INTERFACE) Class serviceIface, - ResolverProxy resolverProxy, - RemoteClientBuilder remoteClientBuilder) { - return new RootClientServiceBuilder<>( - serverSetsConfig, serviceIface, resolverProxy, remoteClientBuilder); - } - - @Provides - @Singleton - MtlsServerSessionTrackerFilter - provideMtlsServerSessionTrackerFilter(StatsReceiver statsReceiver) { - return new MtlsServerSessionTrackerFilter<>(statsReceiver); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..ea72b4312c20a5595cddc381d15aeb75765d4a6d GIT binary patch literal 37002 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

    Dyi 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.java deleted file mode 100644 index 1ffd2d247..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; - -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; - -/** - * The EarlybirdServiceScatterGatherSupport implementation used to fan out requests to the earlybird - * partitions in the realtime_cg cluster. - */ -public class EarlybirdRealtimeCgScatterGatherSupport extends EarlybirdServiceScatterGatherSupport { - /** Creates a new EarlybirdRealtimeCgScatterGatherSupport instance. */ - @Inject - EarlybirdRealtimeCgScatterGatherSupport( - PartitionMappingManager partitionMappingManager, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(partitionMappingManager, EarlybirdCluster.REALTIME_CG, featureSchemaMerger); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..a6c5209c9f264efcd1d20fbf30e218b23c5fb67f GIT binary patch literal 36990 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.java deleted file mode 100644 index abe694857..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeScatterGatherSupport.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; - -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; - -/** - * The EarlybirdServiceScatterGatherSupport implementation used to fan out requests to the earlybird - * partitions in the realtime cluster. - */ -public class EarlybirdRealtimeScatterGatherSupport extends EarlybirdServiceScatterGatherSupport { - /** Creates a new EarlybirdRealtimeScatterGatherSupport instance. */ - @Inject - EarlybirdRealtimeScatterGatherSupport( - PartitionMappingManager partitionMappingManager, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(partitionMappingManager, EarlybirdCluster.REALTIME, featureSchemaMerger); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..cc620830c3323fb8dfdc76792ba6872a3e940357 GIT binary patch literal 37484 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.java b/src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.java deleted file mode 100644 index 979885d09..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdRootQueryUtils.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Map; - -import com.google.common.collect.Maps; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.earlybird_root.visitors.MultiTermDisjunctionPerPartitionVisitor; -import com.twitter.search.queryparser.query.Query; -import com.twitter.search.queryparser.query.QueryParserException; - -public final class EarlybirdRootQueryUtils { - - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdRootQueryUtils.class); - - private EarlybirdRootQueryUtils() { - } - - /** - * Rewrite 'multi_term_disjunction from_user_id' or 'multi_term_disjunction id' based on partition - * for USER_ID/TWEET_ID partitioned cluster - * @return a map with partition id as key and rewritten query as value. - * If there is no 'multi_term_disjunction from_user_id/id' in query, the map will be empty; if all - * ids are truncated for a partition, it will add a NO_MATCH_CONJUNCTION here. - */ - public static Map rewriteMultiTermDisjunctionPerPartitionFilter( - Query query, PartitionMappingManager partitionMappingManager, int numPartitions) { - Map m = Maps.newHashMap(); - // If there is no parsed query, just return - if (query == null) { - return m; - } - for (int i = 0; i < numPartitions; ++i) { - MultiTermDisjunctionPerPartitionVisitor visitor = - new MultiTermDisjunctionPerPartitionVisitor(partitionMappingManager, i); - try { - Query q = query.accept(visitor); - if (q != null && q != query) { - m.put(i, q); - } - } catch (QueryParserException e) { - // Should not happen, put and log error here just in case - m.put(i, query); - LOG.error( - "MultiTermDisjuctionPerPartitionVisitor cannot process query: " + query.serialize()); - } - } - return m; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..fac0d7c217bffc3edc1a8546d80d3a42e6387678 GIT binary patch literal 40144 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.java b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.java deleted file mode 100644 index 9790de9fb..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceChainBuilder.java +++ /dev/null @@ -1,278 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.root.PartitionConfig; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.RequestSuccessStats; -import com.twitter.search.common.root.RootClientServiceBuilder; -import com.twitter.search.common.root.ScatterGatherService; -import com.twitter.search.common.root.ScatterGatherSupport; -import com.twitter.search.common.root.SearchRootModule; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.config.TierConfig; -import com.twitter.search.earlybird.config.TierInfo; -import com.twitter.search.earlybird.config.TierInfoSource; -import com.twitter.search.earlybird.config.TierInfoUtil; -import com.twitter.search.earlybird.config.TierInfoWrapper; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.EarlybirdService.ServiceIface; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.EarlybirdTimeRangeFilter; -import com.twitter.search.earlybird_root.filters.RequestContextToEarlybirdRequestFilter; -import com.twitter.util.Function; -import com.twitter.util.Future; - -@Singleton -public class EarlybirdServiceChainBuilder { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdServiceChainBuilder.class); - - private static final String SEARCH_METHOD_NAME = "search"; - - private static final EarlybirdResponse TIER_SKIPPED_RESPONSE = - new EarlybirdResponse(EarlybirdResponseCode.TIER_SKIPPED, 0) - .setSearchResults(new ThriftSearchResults()) - .setDebugString("Request to cluster dropped by decider, or sent as dark read."); - - private final EarlybirdTierThrottleDeciders tierThrottleDeciders; - - private final RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter; - - private final SearchDecider decider; - private final String normalizedSearchRootName; - private final RootClientServiceBuilder clientServiceBuilder; - private final String partitionPath; - private final int numPartitions; - private final SortedSet tierInfos; - private final PartitionAccessController partitionAccessController; - private final StatsReceiver statsReceiver; - - /** - * Construct a ScatterGatherServiceChain, by loading configurations from earlybird-tiers.yml. - */ - @Inject - public EarlybirdServiceChainBuilder( - PartitionConfig partitionConfig, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - EarlybirdTierThrottleDeciders tierThrottleDeciders, - @Named(SearchRootModule.NAMED_NORMALIZED_SEARCH_ROOT_NAME) String normalizedSearchRootName, - SearchDecider decider, - TierInfoSource tierConfig, - RootClientServiceBuilder clientServiceBuilder, - PartitionAccessController partitionAccessController, - StatsReceiver statsReceiver) { - this.partitionAccessController = partitionAccessController; - this.tierThrottleDeciders = Preconditions.checkNotNull(tierThrottleDeciders); - this.requestContextToEarlybirdRequestFilter = requestContextToEarlybirdRequestFilter; - this.normalizedSearchRootName = normalizedSearchRootName; - this.decider = decider; - this.statsReceiver = statsReceiver; - - List tierInformation = tierConfig.getTierInformation(); - if (tierInformation == null || tierInformation.isEmpty()) { - LOG.error( - "No tier found in config file {} Did you set SEARCH_ENV correctly?", - tierConfig.getConfigFileType()); - throw new RuntimeException("No tier found in tier config file."); - } - - // Get the tier info from the tier config yml file - TreeSet infos = new TreeSet<>(TierInfoUtil.TIER_COMPARATOR); - infos.addAll(tierInformation); - this.tierInfos = Collections.unmodifiableSortedSet(infos); - this.clientServiceBuilder = clientServiceBuilder; - this.partitionPath = partitionConfig.getPartitionPath(); - this.numPartitions = partitionConfig.getNumPartitions(); - - LOG.info("Found the following tiers from config: {}", tierInfos); - } - - /** Builds the chain of services that should be queried on each request. */ - public List> buildServiceChain( - ScatterGatherSupport support, - PartitionLoggingSupport partitionLoggingSupport) { - // Make sure the tier serving ranges do not overlap and do not have gaps. - TierInfoUtil.checkTierServingRanges(tierInfos); - - List> chain = Lists.newArrayList(); - - for (TierInfo tierInfo : tierInfos) { - String tierName = tierInfo.getTierName(); - if (tierInfo.isEnabled()) { - String rewrittenPartitionPath = partitionPath; - // This rewriting rule must match the rewriting rule inside - // EarlybirdServer#joinServerSet(). - if (!TierConfig.DEFAULT_TIER_NAME.equals(tierName)) { - rewrittenPartitionPath = partitionPath + "/" + tierName; - } - - clientServiceBuilder.initializeWithPathSuffix( - tierInfo.getTierName(), - numPartitions, - rewrittenPartitionPath); - - try { - chain.add(createTierService( - support, tierInfo, clientServiceBuilder, partitionLoggingSupport)); - } catch (Exception e) { - LOG.error("Failed to build clients for tier: {}", tierInfo.getTierName()); - throw new RuntimeException(e); - } - - } else { - LOG.info("Skipped disabled tier: {}", tierName); - } - } - - return chain; - } - - private Service createTierService( - ScatterGatherSupport support, - final TierInfo tierInfo, - RootClientServiceBuilder builder, - PartitionLoggingSupport partitionLoggingSupport) { - - final String tierName = tierInfo.getTierName(); - RequestSuccessStats stats = new RequestSuccessStats(tierName); - - List> services = - builder.safeBuildServiceList(SEARCH_METHOD_NAME); - - // Get the client list for this tier, and apply the degradationTrackerFilter to each response. - // - // We currently do this only for the EarlybirdSearchMultiTierAdaptor (the full archive cluster). - // If we want to do this for all clusters (or if we want to apply any other filter to all - // earlybird responses, for other clusters), we should change ScatterGatherService's constructor - // to take in a filter, and apply it there. - ClientBackupFilter backupFilter = new ClientBackupFilter( - "root_" + EarlybirdCluster.FULL_ARCHIVE.getNameForStats(), - tierName, - statsReceiver, - decider); - List> clients = Lists.newArrayList(); - ClientLatencyFilter latencyFilter = new ClientLatencyFilter(tierName); - for (Service client : services) { - clients.add(requestContextToEarlybirdRequestFilter - .andThen(backupFilter) - .andThen(latencyFilter) - .andThen(client)); - } - - clients = SkipPartitionFilter.wrapServices(tierName, clients, partitionAccessController); - - // Build the scatter gather service for this tier. - // Each tier has their own stats. - ScatterGatherService scatterGatherService = - new ScatterGatherService<>( - support, clients, stats, partitionLoggingSupport); - - SimpleFilter tierThrottleFilter = - getTierThrottleFilter(tierInfo, tierName); - - EarlybirdTimeRangeFilter timeRangeFilter = - EarlybirdTimeRangeFilter.newTimeRangeFilterWithQueryRewriter( - (requestContext, userOverride) -> new TierInfoWrapper(tierInfo, userOverride), - decider); - - return tierThrottleFilter - .andThen(timeRangeFilter) - .andThen(scatterGatherService); - } - - private SimpleFilter getTierThrottleFilter( - final TierInfo tierInfo, - final String tierName) { - - // A filter that throttles request rate. - final String tierThrottleDeciderKey = tierThrottleDeciders.getTierThrottleDeciderKey( - normalizedSearchRootName, tierName); - - SimpleFilter tierThrottleFilter = - new SimpleFilter() { - private final Map readCounts = - getReadCountsMap(); - - private Map getReadCountsMap() { - Map readCountsMap = - Maps.newEnumMap(TierInfo.RequestReadType.class); - for (TierInfo.RequestReadType readType : TierInfo.RequestReadType.values()) { - readCountsMap.put(readType, - SearchCounter.export("earlybird_tier_" + tierName + "_" - + readType.name().toLowerCase() + "_read_count")); - } - return Collections.unmodifiableMap(readCountsMap); - } - - private final SearchCounter tierRequestDroppedByDeciderCount = - SearchCounter.export("earlybird_tier_" + tierName - + "_request_dropped_by_decider_count"); - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - // a blank response is returned when a request is dropped by decider, or - // a request is sent as a dark read. - final Future blankTierResponse = Future.value(TIER_SKIPPED_RESPONSE); - if (tierThrottleDeciders.shouldSendRequestToTier(tierThrottleDeciderKey)) { - TierInfoWrapper tierInfoWrapper = - new TierInfoWrapper(tierInfo, requestContext.useOverrideTierConfig()); - - TierInfo.RequestReadType readType = tierInfoWrapper.getReadType(); - readCounts.get(readType).increment(); - switch (readType) { - case DARK: - // dark read: call backend but do not wait for results - service.apply(requestContext); - return blankTierResponse; - case GREY: - // grey read: call backend, wait for results, but discard results. - return service.apply(requestContext).flatMap( - new Function>() { - @Override - public Future apply(EarlybirdResponse v1) { - // No matter what's returned, always return blankTierResponse. - return blankTierResponse; - } - }); - case LIGHT: - // light read: return the future from the backend service. - return service.apply(requestContext); - default: - throw new RuntimeException("Unknown read type: " + readType); - } - } else { - // Request is dropped by throttle decider - tierRequestDroppedByDeciderCount.increment(); - return blankTierResponse; - } - } - }; - return tierThrottleFilter; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceLoggingSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceLoggingSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..2a577c5a88bc414ebcd84e8b2f1b2009572a9ab8 GIT binary patch literal 37321 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 { - private static final int LATENCY_WARN_THRESHOLD_MS = 100; - - private static final Timer DUMMY_TIMER; - - private final EarlybirdRequestPreLogger requestPreLogger; - private final EarlybirdRequestPostLogger requestPostLogger; - - - static { - DUMMY_TIMER = new Timer(TimeUnit.MILLISECONDS); - DUMMY_TIMER.stop(); - } - - public EarlybirdServiceLoggingSupport(SearchDecider decider) { - requestPreLogger = EarlybirdRequestPreLogger.buildForRoot(decider.getDecider()); - requestPostLogger = EarlybirdRequestPostLogger.buildForRoot(LATENCY_WARN_THRESHOLD_MS, - decider.getDecider()); - } - - @Override - public void prelogRequest(EarlybirdRequest req) { - requestPreLogger.logRequest(req); - } - - @Override - public void postLogRequest( - EarlybirdRequest request, - EarlybirdResponse response, - long latencyNanos) { - - Preconditions.checkNotNull(request); - Preconditions.checkNotNull(response); - - response.setResponseTimeMicros(TimeUnit.NANOSECONDS.toMicros(latencyNanos)); - response.setResponseTime(TimeUnit.NANOSECONDS.toMillis(latencyNanos)); - - requestPostLogger.logRequest(request, response, DUMMY_TIMER); - } - - @Override - public void logExceptions(EarlybirdRequest req, Throwable t) { - ExceptionHandler.logException(req, t); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..14b7b2b28df64f1418ad1949a4c102eebea43174 GIT binary patch literal 37290 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 }Jnz2*5hO~$^|x?V5y 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.java deleted file mode 100644 index eb4533a31..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdServicePartitionLoggingSupport.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Map; -import java.util.Random; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; - -public class EarlybirdServicePartitionLoggingSupport - extends PartitionLoggingSupport.DefaultPartitionLoggingSupport { - private static final Logger PARTITION_LOG = LoggerFactory.getLogger("partitionLogger"); - - private static final long LATENCY_LOG_PARTITIONS_THRESHOLD_MS = 500; - private static final double FRACTION_OF_REQUESTS_TO_LOG = 1.0 / 500.0; - - private final Random random = new Random(); - - @Override - public void logPartitionLatencies(EarlybirdRequestContext requestContext, - String tierName, - Map partitionLatenciesMicros, - long latencyMs) { - String logReason = null; - - if (random.nextFloat() <= FRACTION_OF_REQUESTS_TO_LOG) { - logReason = "randomSample"; - } else if (latencyMs > LATENCY_LOG_PARTITIONS_THRESHOLD_MS) { - logReason = "slow"; - } - - EarlybirdRequest request = requestContext.getRequest(); - if (logReason != null && request.isSetSearchQuery()) { - PARTITION_LOG.info("{};{};{};{};{};{}", tierName, logReason, latencyMs, - partitionLatenciesMicros, request.getClientRequestID(), - request.getSearchQuery().getSerializedQuery()); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..b7d134a16933991de4dcd8eee37ba6dcec9ae912 GIT binary patch literal 39065 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 z z2)uQ7!ASAS3=Quc_)2qNd}Vax#4zV~U)R9X?Y5!w`SR)N;FGT!M9JuC(NSQ4(_!{D zhh_ESgCKBn{QyetE31z}>KsK1ZCTVf>Y^sYLd(!S8SH!l9k9HSN!3dx?W(!%fsP1i z<^(jwK--8@bti2boVp{j&e&mleAI8L=DcbX=Yb@&tifHLu)yDB(S8XV5*f|>#-}H& z8MnUcSGmZ`f#RtIY$rb;xnJBAhNbC75T>`qp?2~d{B}4QmhE(8dK@}-IZ3_WipiGQ zF2#(iF{7BfzHPuWI!0ZQm?OO(b{(Ug>>Y{_aw>i;;Qj$C+seS!_dQRNQ|DV{3@o*M zHE^I4Jd&5i_;rO#hh$iY(2T=(s@`(2jqlP9P+zbzSbi6yb`#gRm zeJ-89%>RBnv1c;u{Ad-(dSHB;83FhB076{NaBt-Y)8FoBNg25(epZTmWjELeDk!~h zazYT3ouHV=c}PK!h{SF0RJq7jYLgDMo2_1aeM9Z(@ly1=X4iUC6@6|bdWN@qMX$x6 zy^n`zmV&n?#$Gu|_s6YBmQJ5%U@wU>k?U|h3=%%OJ<0Cmn^tG8b^fA+T}yxf}0Kl-EQj?7VGy3i-yH;K<+`TeCB7}Dn^f+yxsz-P^s6cs(tcqsUJHY#1fLu zI8{0tor@oA}<@aXKC4n6pV#`=orF zHT5R-vE~Th@umkCzwX)t~!(-*cJf{Mylyq~r$*fn>VC?Q94rQz7 zW#yO|bp&}{s+v*$zFDWXtb?(NPFN(%c=a>7`Lc9`yUX}AUSOI+Z`6t0P9TTU=ysCw z84vEJ1GkQk+&sl6{F>S^yiwva8k1F$un#yno6Q>rJXFDOQC~cn69#AWvP4fjA9f9X z&JN6MH?Om=UtY#9r>hPm!Tk7q`gmEw!>p7>%w*!~S#e{lRW)QUfRR%nEC0sBwNhSt zsx~Bl{g`PjOIGtcH$;)uV@Gu4dB~$+Aie!z0aYP*J(7lNF0M3x=@?0EsMS`LuK${& zqs3^Bd1>f=(agCIbY09qb;8TT-BPYnN6+?)*5HDYbQ(n!hTMkE;?M8DLd(d17$18) zJGAkfrQKJg94C>)wEF-Bm$EeWtpMRs6SbeZ*2LKxUNL8Lpuc}X8J&M=0E>1&l-c)p>u-X_uP)M3z3%(*J5<)~vh#vD&Rg5N^+A zG87zfNoggQHe%0dI`LIv`s&ITgXN}@UZG9p-mMiYS*-ijGW^Hms7LPX&vFDCJ}k37 zvm)Dko-{MO`hMQRfF4C>GYl5H26EYZ-pXhE{%2g&^<(G zDRs)|fzsRNt9;o;a%}As78Bs-=9wqo*O79W*&47SArQW@rrf8sO;%l~d3mGrI?~e0 zpcj^w$8@biDwZkAJ3JH*sI)kkvagL=nv{We9^7n4NDtg}!u*_?)Z`hp{hC5VeBa1O z%|Vz}><}i%8IhrsPdk?eCYB{yGdP0Iq#AGQ)#v`Ac<@MrMGyar$9NL3(z)M#)BV1I zT>xT(p!Dswd5Z0K2JlNI)wHSa%TEW;yWJ^<#=)1awGrPy@3*{MpM>>9G*D`OQ!4Jd zpgJ^i=X?~l%nhlxNL0CyiFAg(8cs$`)^&Bl>ixn3Rx_HOv!3acjuOO-p6VBDy?s`n zuUua~@v)Hkce$*FT3YvTx5**cnVD>hU!LvXXG^Ab-C&|TXTA@?{+@pL3Gzf;b9q%YdE!u%MJIsG2>Qo7F%xp%Xh5EDx7vC;6 z?iaMun6VDt32ftn87o#AMJGKvh4pQ3Rd45&`&)bt>ucnu0(xQSmWK8Y)^Su9s+`ju zhqLvvi`zE3GgKF}7d3?BPSOC1$Gk%{<`qOEx1JzI9%nsW9;b0{7-7)WFAm<~KFJ45 z{W;w70JJ$=s}g?Dt~$;$tLUxai-mg3GcXfZ=q}l#+vjiNo(lFLHF(Lh8PQIiew?{e z*C6#!U2&$+U1^|lI@^!pGWJI1)ejh5hBOk$UFb6_X8D{C{_E)lEs8rbBdjhU?Mc6Q z{I)1Sm(w&mA;BrH#tosneshh$x`D3YF%m`0;%Wl0nRfWRfWQj zZODFXiBsfrdU81wI{|R~j}US>&H1(IbhZKmP~8q{gSNhB?gMgU=d991Cv0b;DQtJ> zhdPl1z6!20#NDub46h7;nL-z_s}4J!YS|p}Q}*mQC_>0>G5F$)FIVim3*G6cA#BGp zeGRhZ$1wssN^&QjOnzqu#|8am`}zi#=GMt9=TC|X=Wvg9MkEL~_6fxdv<{$`pS+#F ze^piDeZ9AVP+Hpw!HHx;cylBp5B0rC_tB~D_ToR=?w1+MB~SZKo!RQhA#0bEBD-tm zS6=eIzCX373*#h_`iPY|7nv7KE4eFHuQ|^FDzp-wO?}NBF%GW`HDCU~H``$WGkR2p zE{$1dGhM!_2I4K=f_5bgEKikkh{UH;uGc8tEK;8Zb8>K>E?J=GR)9@$qB{v$eR_v} zFZB>H+p!8adRi7Ni>YV_2*-f)7Vr8iy!0R83;zl~{u3TZAly~%&2eY@6ZFQz@_k-x zA)~>v*;y<{krBL8p%?X}h+7mfr5y7<{yf&YB*4SHE9z${=GIE6LXD*_N>>K1e`mH9 zg){Q~VP(3_^PKsDG%zFDRgi}T!rVa7iCC8jFWGuouAZKJDceafXAsFk#oDsiWwAo7 zGv9(`d0;80`J#12B7cD%j9Z=`<$|Ul_k zD=U5MvT{TH!yo@UDV6Xz9q#e3VJ`j zpn%a0mqty1Sd?=-Zoh|pEr?YB4W;~2Z4#;Et3hL!inqC8l+CbPr8ZI8a8HqR zSGvj+EaKub+r%Y4#0S$&5$LaFX=TbAMiOc6>3^yJb(#P^w!7S-Eyk-rwY;QmW>Nix zG-rPB=!6R7W^JY#D&NVO zsGOJ}kEee>F|WX}mS_P95x9OrpCD!AHvm;YB%xdL$VGNqSGfgp?7w)x$o|PAw=ana zyjyaufLv?fbTZ7yL{kby1+bL(^S6-79TRtZo0y<(zjoD$;!z)+3YZEV$O#rA8iESg z!qvwsGqweW*BS=!m`i+f0`+KX_hnQysX1b_jQ(OHltlL&&EovZ(FrX`{EWq(lQSBy zdkAVVz|{bB8I(pXH@+O%zu64K{|6hl^ZzFs)u@|4=QZVWT*J|~k{U}bFtY7$NhcO( zPWR}*V@GV)Z9L(Aoek;pVuDYaQ-CDe0+%%4RD2D-2SdYGcbVtUqL&pz3@pglMpa0- zQnL>X82lz#vEFD*zR4(CTV#cl zE42y_s9;KT;C1T%XEv!u!Ll#i0#8SO2SjGH{a=d56z(Tbox@?rNSK`>zl)C%1Hs?p zmC{*l&v0dW$)5CSOTI01m(k+#@a@V8CKYmLt-TRWp-fi`rtpS=9<13%K?zRv?H3K6 zMRx+#yHPID$5_ROL)**EbFD9|;evM;EIAbcZq!#j2hui#VfDZ#z+sf>M{?N0bm|xO zMyQw#ZT&~J>Mr8szFZMiRiPkIH|9{EG~mqcB{*_BDhu}O$^OJz1oT)6!tcE>m)u-@xv_k*M%YqYW^HjR6k$#c&%M-z^_9XMK!PJA0Q0awZ(9e=fg zJc2qKZ^D@Q>ee`H2(5m1LywLkQ_i1b4Gkm?Bu$ve5l9(I6fSgV6qW>I9vwp@ZdJ}? z2^_=`lGQZk?1VLf_$z1cT-eaD=bo`Lop=o^WRnT=P{E}e9fS`ML0zgaM5XBk+r`nqM6hRi{=&y$%?Nl#(0r`FuTgMSEq zQFeB3y`q6;FX_+OopiLs4KhxlBNq6khN%w8VP>Vva%cgUmAkf5o{VlR6}QpKveIsv zN+$}D=%r@sp+;$SG+Jk!1fTRPia9$;HHjV+;92K8?C%Kq>+cs!$T~_q*Tt+?!g3D! zHQ~lnJ7DK)6e;=eweMtd0=!<5|?nPap2Nm%Ce<>b?n znGNeifm|g%?dpe_i~82(Ewq$?#sn_&Wu^E*6B~nxZ+n@5py|JZxc+xg($oR{{o&0Z zcbF5((I2YRN_gul*-X@lr$O#0R&0+>l%qMe<|S@C7LeFxk%zRKVZg9eqqM_x57O9Lwsk! zOw_5r6}tRyg*TbEAyaYNl^h<5c|zx<*p6e4r8}=&9Ri&>!HQUtIw43FE*o_7j4xwN$M;9aQIqo3 z(IpE9&xaNTk!Du)j7%jZt9tAnco5Uy&+0A)`Xw*g#iF<&>+kgd9s3kL#GD<%kL*h( z@2cj8!?jjLqQg?lMBib86Wtr=pq+qNos!L8c}i6-hJCu+bil|1{-LqK9q?jnky-o$ z$e{Pp5RzZkVZCxR7Z>0YbGOQI=yo5Jru$LcNKFICTWiUdBbiYnFun}ZhLCF*anT{y z+qW1>X4K7_YZ&Ej%^3iu;thPB$`%inueD(JYKsQYEt_T-$-SO7D0F?nX&Q~Y z#CqIxeJBHlVSlKl|Dr|#P(w=pnSD>TZ7snk8~jD>Vln}s=H>XC`X@PR1j7G=`nr1% zx-%?Cf6J@wYnK7^NmY3titT(h9i6}H8L>t{XERyHsQ_vOsavQzf^_Ymy#|TNuI)fP zhjGbF?Vw=Sejm!8S#}Y2i{}E|Kgb`PM*-x@kbjZ4FtedXF#JEr=L{rwo}*K?Hyr;# z-ftlJtfc+~qu!#3_Ot){Psn5Cwm8NveZB22|2Dp-M%H$iEd0;*<8i6{`={l-)UIN% zlEPOy4TSLDQFe8S!`>^oLNsgKYV!rYvRzqKC)cjchp}|#oYQbZJZuGJK(D%Z%3!cPC1A2T4jn; zZoaUjJi5Jem#ylZUp9Td@daI!4PJD9+|yL^q^mx(*x9cbnyn))=XLEQ7Zil={es*K zNj8DK=X$nGE}a7VQFNXy-vXqWRrNM%p6z#8c>#kRkE~UfUDgF#l?ynsEa+V0&6a<% z$E9Gt1%9pt$W+g-qwZ#&aDPGh9#2{v(Rq_8yD#6%6N)8=`R3T7zNPz}%Pe~Bv&njt zpOjAE%FVA`?w4`PR_F_f&I__tb*7XTZAmA6(}Mh#F32j{8}OOTL)Y)(ao4_F`A?5p zkHup{{{eREIdAfp$=_^M_ua$o^Nnl&G%2lp(p41px5<#CKPI_g|CsEu`TsM?C2Q3) z({adF8+BVQ5O>fCt!7t`A#3*jqh60&d-)qzAndOKL=u zK-bWcUC>D;n%AD>)`kLwg7I82L3)Sr zSZN&!bVag5g90y4=g%Sb_n0^DhY0o~oG}jsZwV&D-~r4!c0fb%fQ0=*fepc0i6j$= z7)vR+gsSdMLgGLsjiG3nx~w^}A+uXkn!+#?>{Q_y?K@)3u0c9qsdj^n7#j?}5IS*; zX;0QdI?I6m879F-{n_S0LxFd}0cf3n(AqA&mC?T{GmlR`)CTIUvG&*Pq0gsy|edxBykA#%10&$GhFs5V9a_t4;q2>OsMJu zNJ-Gf64;SQmk2P;a06zLKw%t(J%QF!IE9%r>;$^S>W7tK%z(TlHg6)E__w$yp+DlV zg06(GtwzU;cDT=K37H278hwC?!2etz>j4*tW*=ZW377YP#@y~5@S^iE{9#z87~;-e zJv62pasF3r#^jWyb|2tdwZ$tCSHP)G#$MM_R6VK-*NkaMW4VyDLIn@hlX`oD*TjoXu?S~m<*P$W>T#G&6TA<%&jwe@C(hLI^^f(w0I@Uib!)IGN z9}d6hd5>iWhQZWr`SxKHwSitQOhb~i z0_b<kcKB8`<_< z7|qiyeGi?zFe|V(p_jQ zw-ryq@?8$l%smK9Jwpa;_FTx8LTNd@xw+yrivz+h#VRo{RtY3L)z<2XQgk1A_RC97&H&jq7CBXPOm+zsX0SY_kVEU@6619$bxa`GS z!I8R6^~>iBhVqm;>^Tj{HtgAX7HaTK;SA*->1w5j!A#38?zw6EL@w*OEFbNv^-8R_ z$!hcaq5780tdbpt#AFTVq#cWW)`IQ4Oc0O4As~4{&(LtN20kDK0jW7xt?`pJjvLub zJs3Es&3$il0#GaHa!bl6x2!-LD7UBi$f3`>Og(X!Pu2!AGN<$`Jr5bl<*Wj#i68`+ zXGHgZQ(-JA*}(#m06IC7HiH41f}cl9b&HCH);Lq+p)tzebE0VY`X)M(w0We?ZmXZF ze@kz+zIt>7p}bo{c4!XNN`AO3Mv8PRQWwE_``(Koe`<4aYt{A6*3T~>_J^o@rpBcz zWBP3z*Gu~Zz8jDOzi06MvQvAKgeg&yQ=#SLC;OI zbe&O`Z*RT3iM^Wtvs5!V9%o9JtW_h9~T|@?Xm33K!!zerZ;*x+T^%1&D48-gychiMk>DB7(-pf%4Nyv-m)7{T*f^r5zZ+K=D))$t-(|%LtI=@ zIb(HxQFJDql4B*^w#=Gxt=R}U*|!Amxe-~jz86_5-T6u#0ONzt_|)Wxmd@a|{gzu2 zK-gcH&1+AE3#xK8zx*njcH^=CrgFvFv=fpIdVdc>^OT2^0pn9FCoqnmddD*u?^WT< zvE3CwSRPY>{zmg~QJym;2`(Uota5eg(N`0N%H-Vl`bY2^62<)nw-Z2cz`q3t)on4rp)lRLuJ;4Q32-Rtyk_gAFD+tGA{sHXPSCbSN^G{%f_U|Uq zm{Y?*=x=xTKFY3uJj7|M6V20a^gER+k<^92>jmePw~?ZNoZ){K^Z%L~mx5=bVNI&>Jp@30bM2hF zb^sM+0T-}yf4Tu2g`rV-&d0piQ}+w*y3S4O*JHt@o%sd71i`DZgFPs~4arZ)Ql&E{ z6sWTtVM^@~nueP3Lnpv2wu(uxL{wE521_2XR6GCit_g8wqJ$kP--ODJ&#-ritXimv zZA51a&*CI(98?wE+Q%NK68PZ9$=sZ*DoCk9k1Dj##@OSj2>(sDSBnp{O~4LVAM^Am zIg%VvX9UrP<5{mMBMTAM76e?&rXrK6-7N{xmare2LClBXb#dY~ zk-iaCRJ==6JWT$+=pC-UYleP@<$An{LolGeYm8}Sd%%wWAiS{shMVUdWHe{dq+YLs zjwwy=^`3t`I2QuHO#F^p&Q9yqGYi-VbhImSG;cR=xW}R zJUgkhF2DWOaTUM)p#dxydps{B(7tQ_K8M|{%6}-(4xAgrcLMR-af7uQ2|+anoIr)@ zbJ#zhBjnmjWbp(ZaY!ly8i}ZihqcGsph)|h{)p`#^d-jTUv|I&<_~vU?K&cWI}V4~ z{%1Hf=*a%l`yB=%9)%wWPEV(gt2-!Kgnq0fti~5eiTK1MaWeWm`=X1>wyyXw3K9!?+RBDa*piVQ9fyC#NOu{tuoe1@LA}iDQ?!_}K#>a1S9uT~C9)+y+s(4BW+OdLL3K_N`VNf5Yv?(L zL9tRCYy*Ec+vI(a!50aU$#)u|enQCwGF-idpn#Cq-Eh62cPa|%TC_ylgDlj8wlm(QIHtwWP?m5~~nkQ%FQ*7S4_ zI9O(%qDH1Dzu8MRbPRMEmM6w>n3(EVvMT+D$KU3>Sj_F%Ok_iC>RA|5qs-65Rw}j0 z)hK4h!{2S(E8(^dlQpneXeaKg$7KW&5|a*I=FK3QG|Mn;G=OMPv63{>rYo({ZdhEp z=+_l$ohoIBT*8u^6O*Feu1C#s5J#;GBr9b|x(*XFGEf*&PEAeWu~IeCcC!4#`iNMufZrHq48U^HgZf5EH~=pDjwcQN z%mSLq&f-I+nXxp*<>88X;f6I=oKlwA@gbG&Q~G}WlZpvIg%$aSiYa2qXs2$5(->fr zCDomY(8Jnjv|aT@Pcl0Romb>m1G`g*t&YV+E&22%In7Upigv=;Wg3phs7SBTkl3@f z{42RyF*EILS1#X%DX>5m4B zb_PbKfI`|KCZD?Vdn&V730pfOE{)(%vDe0GVx;5~{4^t+c*~-T=n+V17kH{SQVDO-)b;3bo<{_E`;0 zrpHX~4ps;NV?q-6?NFqX9M7p*SW;MR{jn$oKYE0I@XwlwY1@4LEdJcG>*DPuxi3W{ zoSId+EoF8y)(_wNH-2_#EJP+baV83V3D!MY?obq+);UlgX{QJZ0*})aMGhU#6}dmM z&KM$kL7!CN_~_$cflcivoWpIJutf`pF2}_xnQ;tqWu%CmMU0*G`l=NG4TcIufg}^# zTx#wKTtez+E7+IuT3|rsQ{gNe9ABMoQ3_;NCaI8zsgM`U5e9}1MT4Y5R7&LAYlRd5 z{-BOhsk2C-0!3$cF*Rh@Bv-2N^MoEAeaCwXislZKhHbl}!cKuW63dsQ?y|w9G`1rT zPKC-^mZDTpK?t*S=cStyWm?rn7~B^Fj*kP>c*`miNz+7R*Tw&NO+!qLR5G!lMm6Ajz_0eSnbVp8=?y$gI5Fv2g+yL}A=Utt}6RqI1 zOUUM@swHT2DVLm*JP@x_ZlPd3!C;JL)JJ%lmFdBZy3^uG49b70fJOXUMR4yezFdW( zTD7HfRlt!vH@r?-OE?1hhx5vpYhvLy8Z_*cAh_}Lp9{-;2gHo!8L^_Kmq<{tiL$nP zv?%+8eH{?i!YLVh2OwfIl+``NAy);53uB%OU@TJyl-X;Z%Ez~*-=YX90*}>aKY_Z? zW_yA5qJ;AV@6AS!bx$&gp>dHoN>Oo3Z7?kn@h1V@(~Pasyr!4JC#zKulC>+Ej2K=6 zELNU>h?od;!}S-k{eHa_3OT?URjg2<9+M>sZO4-sni@%|6qUO49K#Zk`l;aAgdd~( zQjRG2B}bFAkO}bLxY+>7;gV`WoG>V2gsb&;Cfu17*h)F?1 z$O;7|^5hD0n^jBs0CC7AFT{U4FhHc7PJC~|a$*gilK^C5NV`PgHLS~nfT1!JP3l3Y zI1a>%kc=2y7{-|dyeUig91s_?IS+8~If+9IzU_j^g3k~s4g>#%ZqGl(Ifta|$UlX% z(EfS(n(!0xzt8O(xChL0vjYJ+)j$B@{P($ib&K!c#LUc0jlchWgx^~?r9iy?{Ph{V z>10SgI~j<0Y{GjQ1!P!nV*fhr;fcSZVnH{(I{rk8rUh_{UogiHWi&=&H0azXm0A!x zwvE+k1R?b4!}r6@z5CU>ZL^Bw^l=;RljG^ow#{edOZ8IDw(sqw{=OaM_Qv@`#QpxB zdxKv0=i$u3MaJjz<>$-CscXl3&dkK7?#=7{MMq5y;^k$|1K?=?R@XY;7kYh+j-IYc zg653P!}$+8#EcZz4EY>2#0gh@&h-)3X#*~+V)XNW+_n@3A;i~Waaj+zN)$D4Vx|3lb2fLF4u-NLat?%1|%bZmCqv2EKO+qP}n zb~?7LPCB?Nd!KXe+24Qf{h#%u)|0AP;~itns<~#(s#))!x)pLCYkum3>H#W07 zr&=8^E#B%!pCYU0WMgk1pO2;=J}%~aYvW!8-OqHbeplW;ZhSf&rEQO{`NbccANu1C z@x$4H=^@R@2kt&Coi1w!4)*=&50_>S?icK@z$BWC2$A!=H;q=PAS@G1~UcE)@j8MKlun?7r6i+gIa^ttMO z|4#qy+0(xD{c#Jw?kSb?o{{nS-MjYfvH$#6-_sS-hV2XSvcgY4Rh6wyv={5AHdi%V zYr`9}Zt0~a!{18f)8!~EQ!D%*H`UFK6KFPnWZvnt>s?~mQ}HNaPj_0MMu{GGTF^<+ zY53n7+8P;hkpJY>C-`bKZE)Kv?qA$l+iH;tB`15Dyx$j~A z)b9BsE9uPVDk*w-?*kkE@S}7vWOB{j$1_I?lJ^QPpC2!&`Xnzyt4_P1|JC88{OF#% zJ)%|!+ot@C78e0U8Xx}sqkdzjHGfQ+mlpk`%8R|Ck&U$BkO3RrW|-7`nAqGzcp*w| zVJf906Iy{=Y0&vGJ%m`X-l|0@D|dJ&2YVXe~T+VNA=K%b!?2Vovz^dbIz$y&D zD(1%reh)RA_paw1aah*ws>kW^Uk_H|wHaBDsqH#wYlBA@yALOH2jJ{Qr)kgEk9N~8 z^FsdV?=@T2ijSHG<91M%BJ|aA;Tz_vHj(-q-ZJW&8(Yog!x|p>ac`AFee~1eAqVq^ zfJX&8|2RDlYnR1lv%BC&;gopyK)W9lFCG=Y{pbt9ccXbB1?@H3FJ83PvB}-fZK1J+ ztI`44!20r`##gneJ;giN8|#_e7o}t~tW+Bh4>R2#kq~Li^Rrr?1lKc*9FrP*$2IO} z9a8gV=sFcDU6ao5!(BD&rfK%+^o!zVlgsZ$H0($8&cE?Qt$*o6*jCaSv~p%^23{E> zAp8^>12tM)RO?ANt)tNmGxkDb5U-d2fA*cEFA6{cp+%JTr|C< zgx9Kk1^wStd$4*%X>=oP#SXWb`*FiWc zkgS0xf2)Hmg*N%ROATlOg$VZ1`u1b(p!MiQ+J4!-9xH7Ef>%-oY@qxF*g$Xr*boEQ zP$Sv`Zu=hyoF%Acptm&aZqnV)LjT_Tvykhg6);Xw$tOy~C;VS1|6Sm}QU1>?Fj$+x zZBz1ofpAFAS_9)im^A~z2LuAZSpUKGUzC1s^tG>J9=#gGBTKBd81*q2MZz(3yIM*RsoAUx0{d##p;?*Q`l zT=1dgr)?g803AM~MNyfarqWH?g}c|Sf3_cflJM2^$6@p+kDe}{+$k*Kw}FkY*wXzt zdc6!eILI99d-@uIEy3?P?!D>E;rw#R)#~|iWHEPY@yJ>^yvP2f*kv36{r$J=Gt`B> z$I07zW)~_?X8Y!!6S^wMrgp=ytSUU%-By05y)!txh=r}y18rGe2E(n%2kfTux9D)g ziuYE!&Yg$bXs?seqs5o;=l#|DSF_qlEqmP1yC9|3OOA{wPo&h>2cuTcH_p~>mmmZF z%BArikJ}IZqtWAX=~i=IoBO^~^DYU=te3VAhgR9%!q4+p)5+Ye>)$Sk$JUoCx01cq z+J4IoHdmgE&e>=>0Ipxx((tBy*3zO3E~DKpZ}8{dwqI$g_``}J!SH`^pQBz~p@+!q zx^rw`%yVKMMHupBXQId&@?~WjdYml?!RR`d^`4u8)f0mqzP^|MjmTv~I{1685XN}i z7-9q(5zzZJ=)jw0qs>{f7W{~easC5lR%{bf_W24Y-3+Q3|;~@CQGi<(JwpEJWUfK&l3XnBYMmDU^;~C zu2uMF`DA*PZ&*T5WFBgZ+WVar?_`~KFZlV6a?)Sl_P8?LbmV%w_TqWoYe(Rm>{mUX zUtgm|_|gx&?=;@#_r~g88~C-^aHPxVURzeL*y(X-tr2V<7g$oGzTb4o4ZCi)dV4&# ztY_)R7TWa-StrHS@{n2Q;)$kK?jKEZ9;vKWW=-Esp*MoRl6^VVYmnoV?;OW(=9FhX ztLfRjy>61SbqYm77h^!bHFTarI0`-cp~p^h-ZW8IX77P(Z&S&dX)$GO=me#N$Slii zjAK8+!8;`V2T4#cu;l^DZWL)3gm4i`!ErpQT8RrQDcM<-yI zXTDv&zW-_-=dRdg>|L_6pnWeXt1H0)W6GfWZfe=Z&4b2!8{QSO4;tlcq1H{4C)+jh z###%0sNb%RchgbpMOb!Y$@QeAgUH)Hwi%sf^E@Lto1^f{;mB;0t~RhXU+uBV*e*|H zs^n5dJT5qr2X5DXq%qNX>($vxVruy0j~i1RW?f(x z4l2Lmy~Muxn}$j|&J|_Whyu=*7z2>$Z}+Qq0UOwm+ZN<+c}ofB)qZFfWJ z#Zvlb;VS>0-?I$%_dDy4%$G4p->@4@L z6|pD3uUB-tlj;-f?el~sj(gLL$S!XV+KLBX95hBAu3bQ-NiP!PDi4)~3wG!naQU;~ zTiPto8g_9^zAn@=@`nNtev9vN1~IrlE2_iI+`r5 z^J?p@qg0(J6d&MKru{0$W3>uizAstRh<^8UH7d*#l0#Qp%*;<}uQwmVuQv4_<5t?r zO!}IchWDU(Ia@~Qb2>Xz+@TR2rFk~%Hg|9Srh*L4>3DL0T;J9(=43ec5bQeN+Fo|} z_KdY>+$CSkRxoAE-DrNQ!?oBjO21GFIkqKG{cdnmvyl+KNq=&J4841+gzK*$qjQOl z@6zhT!fE?%_sj2uxy#ylw26PpQYldtK4jI_;h}KPa-{86aTwRNBU!diNZYOSEYcN! zT*_6+TeI~sQ(T#SlJv3Z2QGN6P{V~gNj1U`EfBBjXH_VBH)SS4ua-a#AiGSlIQMn9 zZ5ce+M-BUmyW#WOJ<9iols}|lLj8?jV)En6sQ3}rZ+3fk_#Z=<+IoC0B5xIP`aSLB zEnYggH!{ZM`_519JX-OdJzBLNK;k*aUl0edd99h!# z1Z>yeUhJMmhc~WXxf>k*GrgM0bB8}pnNnG`ZFK~$W6Q+HJYf$m=CtYxHJi_nRwR$?4bE_zcBy%gp%7RhM6+@O?pEpC`!mVZck^dJas2-6i)oK zR&vCo zmDGWUV!5AJWx7((`Pp|zugkfIXS!9(?60Rfo4I$rrrU{*rtk5m&3)eDFxP3DU9`r+ zD;vLBsh;JPz3Hk=GUnQ3QQgFujIyD`hOBH1$J*3b6UX_Fj@*?dyeH5Ks4m1sndlXK zIx=a}nosD8SG^D1*-zqbu74Gu#5S1zkVq~nMi99e^I%CQt1a6S1raoVd36X0-k+z0 zNWa*#*K|ccjghS#n#43*&+yz$Cl=%*(^R$yTs|l>JIp9js7zes!u)lBAbjy!G&e=* zWvF-Fb!Fr|u~zC+((FMstp1o~QnXO>0hW>VgEzkrhKULm+`EnK;NiM0=_@@otX%$p z0UjoVACZphW8n`9#dvR8zr2!=*Me+F^0n1s%A%vW-f?SPL2LEAJt|(j6Wo^g_z{DP4}Z9-?tV@| z*lwpcoY=Fbhv>ax`O!ykj1Pvob+EQ7(OdPTcNvwelDKyn%uJkG-FbHjYm%ex{(%Z* z*k9-;B?O~xRiJndPm`Z$YvJ45#0a%qv|PdE*v}CLQ_(iExV^5%0}FO3W9I!e*h4Ay zumJmVa>2oCnc8D5zxxvINRwf%o#9H8&DLgnQ(i~~yAh=wbi9Og9b31?3bwEFgta;f z@D@iMb@e3Gqv*cQT1O11_4GOE0NAG@q8(lK_4HbPr*%#bc3Y40P3Zsv44Ls4k&VtB zOZ-c?b!__)^ZX=z7hTN8Ko3yZrbxjS_P4`DZ8ORUbc<>(sow{^wHYZN&e5#rfaVy-_!p;J6V?SyKI+r zd)5|qGz3sTkG(G~?5i*enT|F@%h?E$dF;zFc|MmiJXtT=qjc&tMAY?P9GVcGATHrJ z4I34tYPoA7H2OM$A=ZWn*3-4`PB|hvYEo*-0X4A+s0qc(NxAZkuCZdy4Am!tItdKjq0zqj45nj08 z7*@zu=S!=?>Ckwn?~N7=l4lW?mKl-bG3oV_Tg;JDZ_{RXe$`h0s-5bYWQxm~gFVG0 z(|O#-T|dX&kHg>y-*8a~j6n-3w5VAw-IMvSL{Vpx>|t@I3%K4zLAqW#b}$H+;}>GG z8JFcHc?@n|Dri>e(d5IV>}VwGV0|uF=2FyP&tOS+pABj@E^H3w)IG*AUDE_*(0~Xo zYgS2><2kETAo&{7oYYxyqr9~{KOG~yTc?EJHnvmAdQypcoitquV^axjBf}Tc90j`p zcLY?d?YL8^ep0CikHH1`>v0JvBFQiJwDNnA*tEL^O6%-Sr4hXak3;M4du9^)w(|v{ zUrw$TGVT_Dxl>AmeVP`1n(=ZHRm3~4{gjiX=s#R7RNO66K!d0JnmSp5@{M#$+$|DU zH|saCM9N%TEmp^|PGrCE$-VJc{XoTZ2%N^Do0J!mSg!lcVI6T z!s$9#sXJLGfQ60();6(xXPFq3I~&LLAJlCki5z%48qbX)j}p~qi02EyUW??;06$m>DBbv7qX1)l04q1n3LsiOCB?kaSidN`^W zW$t6VvSu#pz142s82DkOXyRbhiE!D?%FW2i%Y~-k@dF`B^a&opWniE9o#4xrKBcAr zjmN}FUPjN4cI6_$EPdb_Tp;WovaPPY)NA42o0_=}LOS<(4b5z&KFvw6c0A^8K*E_XsEWjy*$-1xkcKKtjw6 z11R$|aC;POD`U%*lXw@h3_wr|-yEaCVPMctocWrLZGOm!ih~W+F+sR@F>F4G=C!!)%^HcQ(X4LEVL)1&RGL|$hnM;NO)!!MRZYnLN^c! zkq8L4#*X$xITWa81{Rj_fhA0c-4NYz6#qgt^uI$Q0{=VY*@_7uq|^CdA-Nud7ivxZ z6*298f6I9S`UI)SoelF0Dh%C z$&pGJNY@l1ILG}|Oo0QSwyfCt($wV}m_QC%+B`)_Ey%uAFcgseAHgba;q9AXsJa*4 zZ(u`#P`|@F$0uxKmy8aZ#s47JYZkbbBKoxe_YMZk1APO7LR!g%ww=bl+LzKx`{@CVx8V%1$8wx(5EKyXWDlZ}Tt7#KaC~@W zh5PA2lry<75SV!`XQVv_wZNuvC=fw2{(hSf81W`zFBBojS0ONMhV*GEbCqZqZ+~Gb zM!%&(JAlxj#mzen;gJnPJ$1ISbQfFE%%}_C( zm)QcLxR`=CEs)fhgBSxeQ+lD0)Lut&Kp(3}GhvW`Fw*=8OR~6TX{N{xyVJ%1N5g+t z&7uYvQ0oK1GA_}zn-Cb^H!!kbsNI`|C&`%u^jEMOOuD(YiB~i;9ew9;7J5`7M0SD} zS6i(A$wyKMOrOk=PE!M1^t};|&_7CAuM5$SR|$i;B?vPD(QhysmP_|aW3Cht*f$pw zL;utaM^u}m<+H-P|IZaBi%ax-_}1>>@fI-do3j22=oN5iJGitRUlRFIgF)6M!Xo12 zJbUZLyi@O*cfS%VdB3$Jf!p=!#e_nPVaLP3jitx`{5qx?|L0L)46hI9FbJ56=c?bY z-#5D#3IClM{?G7WfAaL&q-I~pUDBFIy_`K4OGg7sR|`vLhxk}XkQ7wO-S)MP9~b_W zPAV}rDl)_OgyD$u*N6qmk!GTw^Vo^Xw5`dl&jfG7T8DMR5vaY=D^waMLf;|_Ge;{A z2eP#v_Z$zWt6zJ|+2_jfA?tfP3hWCZy0u3$CRC~o<@L)|>&Oo_#x(+c5I(w)KD50h zS-M6VY9?5^XE1~|J6xGytD@!RxpL`c7AKT>#l-?<}c z`~2#UN?Fc+6GzbQX4L-R!Gqk3(^r-~fFNx=p-zooy-kFbwEQjkSkU3E9)A6@^T59Q zFfR9V2t5@oDfJK?%iws;lL5=svU*Fw#Qge&v%`C0a&tn)^{vw5O(DazLUzaF(2n z97)eaOT#=#&oVUA{4KW6(@EO(4d7ZzdS`0-^~>7ROJ%j2RbP{ykAhKn=X=~-r;#?l z2(XUp+v>O}%x~F%-WJ1vTWWTSQW>4m3}r8P)BvUfF6Hx4RN$nB|BIee_=7Lnz5mo> zh)-RL z0=VxBP?>tA0%#>t=n;YEpS>kdO5cQl_5;-nVsR<-477FBujmp>;=rnrbl$i?%DDRO z{8Mq8KE;2yGYUSamd?&o7rtl}b(_gFF}$}fjW6`(0ArXoXzw_@HFBsVN;i0A0ijUj z2*}`mEweq5S7`~)`OI6;uI+WP7Qq?j3FdmqIj z%A}FjORvxCjZi4BMs?KU|MK$a!jR&SM^C!kjYhO5H z4<2e=kf|}fG+~+`OTEMM8BhTi;m$FxS*Y=0s1)MlDKG>R+$<~wgCxrywcMqA5_yOz zKt$eO82=J+Dj>x2DFVRi|1BbNK)7D2Q~PfLj5*M=u+$xR#%uXZr-+m1L6o1goauaU zeU-^ca5{(e(s{=VPgI*#{T~*##EK%k6B|mWooLnpduOb9}NxeQ#HIg&TI5CjqILmYKu(J z&PfeT%wL=@z6MN`jqpFJq?4)XHr8D0H?QV6YdzE|y=B_(-`>V|`O_~D>J9BAY|K&_ zK31(8N3tShhv)9(PJ$+M_|6|w`+HCA7Q?bj;EV^bX@&F@?Q4T;*>OWEOl+|>15iCy z%M_GRbZ*y#gf2M+1YkiV@HGg^-CnArY>>{@V3tuAhRwY?)TuD0&%QB}U=!;B#M-Uc9tI;57PDjQ? zz^(r+8wiWMwn$O`#&l972?f3H4D7)}J_QcrbFKyT!QzwnX+m>bsASfyqOv^j0j-uP z)&Z?y%@i#)9`M0|C4K^W!l#N`Dkj{&Rk#5M8f#mI_Dd+gzTdveJ1hQ6hf>ZFK*zho zzjeHiuGcXU{Xa-J<*8@*3_iTbCn;)s{bj}1lus)j75@$KSOT!(>;J=wA-(;e!F`CM zkh=I=b59btvGJQ#tifgTEq z)~#AuHu1ynai&~ZSUfhs=H{|`Z*JR|RgwXg3Whxchz3?zC(eo=*i6$FVv%?%Zx{~2 zVyh!DXR=ozX4+i)BeOnhXHEOUBnsk;P=%`}l;7bmzPgdy{n-VIQyfQe#CV@bg*Q5s zhGIrE7O!&-tH%+t_aBQhFTe>B=>IvR=qF0knv0rHcZM9f5+hjPC!PS}RIJTaDUKcc%Y|TH&YmFVsP-#DdemP-}x@d*{-4?laLWG%z4SS#c1}B`S7G zRJP?+sD0HyYl90E{W+Ey3*ZB2T18VKLs>JRXi+T&kjFFysoUw6Lg6q6utHfid>5k? z*flE@C?WkzwYiQFEikD3SW%VRXqQ;{|HD%9)9GpOq8Xu-hx zaFBr-$QB$_1Dpw{y97%D6@;a-m!@whL@d6c*{<0Hz5k zs(#Nn!%%Geo}`seK{J3Q8<-Tvs((OUnUnYf-C`gZRv&Hvi?-)L*!EK>5yM{UiM(BX0+8&d2imk>@psO8^HXL#b|5 z2V-fn(*ES=0NOz%s>*Hf`P))pCtn#a!gHgT!;itfGP+7OFPi&x&ta9s1V?D~{5Ii8 z!sqk2RaX(uSL5JHyZksl_^16e*g2n!c#HL{=9za;${K;Hv>Y)uarLh#4GbQb(6l(8 zoxKKS6i!BECUPM-Ko2ZNh}1*zKBgy+Kro>ZDy*bC>#Mjv1ivAPf?kv#8J5IXlRX0X zXYv#{VTC>7Ql-JuFhjR8afMh|WkwH78Qf}DoCqmft$IFXa-xRL0jrqNu2c7$teJ%8U^vd#TgBy_Pv)pY0cw%CgX?l1P|4 zMNZi2xOj>F_S8{)+=P_%0}+J~YU0GGya;Ikva-Tx7Rq;$8VYe#BU*o|(`h5PvXou~ z%ZeOfTt9v1&haK941 zUE+?E;I67Ln6c0vMg?KC`CYk|{HZFhO=Q*umGm#Zd*GkQ8|`7Y4zS9z;$DRZPu8(V4*rs=ZDi$q3~$f0ubndJTsGn(UK7LL+4;G`47&qzZfZ+NvDuTgzp zA}yiv*;DLLZg3Ms9$VzWFoCqc5T`Y_k5JeLpWVkdv4JZ--4~4HWnT%}Em%{~6tG6K zCQ(r7NzDt_Lz}@8UtiZLxNZqTM?_&CvZ#9BrSvWKx}HGzxUmOT#g!UyQh^(n1iAcr zo}GxIH46kxfQ`>DrAS46%=DUif-^SZh-gl*0C+ueBzb=hi$_A4GVxrSvb~Ytqfs5@ z7Z&2v^F*LK=aJZpJ4_1PJ~r7zLI9RA_pmqZ0N+;66|ONZ`uyy zAj8LiKo?(a+w~E^{(klaM~>ok>y;qIv1X#9-?_f?0L1bCvRatDY3VzRBUMslpJ@UP?;Tj8|iINJd@C`pbC2!b8Q zys+?Cg)8^%knP+^ir{I<<>6G80u8WK*}&o)nI-P#d4XTWYE_X74gbGBbG!DLV$}(uNb~9X1sce0 zm?=Vsr2i`}P|9Sq{t+oo6b=VUsZCMp`~?Nu#ysckG3O)?nWteRyx#cI&5tOl`%sY)?i&uXcCx7$ZxsN)IA)c}I7Q26` zBO-ziQi>sL1(YJl8ESe+5a+giBa{zlIg~Gjv3p?;AxhwNM{xl2266x&(Id_JxljfZB%hv)Mw2O`ci-Ou za2z79z&DWdjA6e4QQp^AZY+5WlCKO~H$wRVf%yLp#Pc(0>ITwK>l>hK2=@Sf89-xC(;BdE2mD`!^iM6Ge!l~v|D$B~w-8{^OCpD3 z`WhgZU+A?L${scP^AfJx%Ny@|A(Gx_ZE#vlf6BRm#I^<0#x6pU0YHvC%o`&7VSSvO ztC}_YE+-!+DFLpFm@E@|IXHOdhat=-o( zBi$&V-zP}DN$0(G8m`DVv4u2lic6<46_)jatSIi@-Lj-L7QDxlfGLoe30_gR9nDj7HM6(a3!@u85UsJpv3cFbc*m#V_V?I}DHZ3ONG)eBi}?-+}u}bZUAS z%rQjOyMNy+Zq^L(^L59#IMHrX^eZ$CC_L_tGU%#S1ee3AVpi4B*j8+W;7&(+J$fYD zCSmTan3=3Th}|S)f`MJyPp==a)c}RGN`XQruV(ovJEq~v7O(ov15PQnVmCevIG(2Y zbHk9YvdkIA9FtxvKfQ);aGDK8eCOBci``CJyUuO`fMp$AG7kYT#h)<6f5ZHcEq+!U z$Nk(-Gvm+<5iFn5VY790ClCOQDeHjmtWSR%0^i$Lsw2hsCbck17 zfXE-kt#C8|v^jx3vnCS))Xc-U(+qZ5WbgYG1%f(dhQ#?^GHY| zYCw_`Z_dfsvuVh4HHfdUwrTBWEX{u49Fsq=#5pD(VGBy;J=GxjJ8`8+zfi83@aZ_Z zbV+U)OciahO&QQ#AI)pqDaDK^>!gCq-oz~gHK-TMQtVIaORsz08C5zsGCIsDHEZ`m zFJf0$6o@HCJvg@#vD<4Hz~uN-^=quW-Q&++P2q7b!QjXeF3ix2KGyj5q44+@dP2;J zv*vxTI|wwiavjefBv%(~9J7LDW6vy$rjc@`gs;>SGJ)7q-P)Ok#LQ1+Hj}=8)afe@4`{0i-0tuZ5lqW^n`<^EOOrdwDG$sAh>w&%9Egi#0rKi=a z3W`YV>6pHVU0_`ghH_kA5U-L1%tM!brP478(S;NRDbb`5^+~D<@{sI=EICADppA+U zt)GT|w#M#6=W|NtEV}zoGkBUUcy)}qK0Y75^*sGKh{K%J5y7fVxhV~xQ0qmKl!+sx zY39}Z^a(&CExH~Jb}#^YP*BjJm1_S@!3cg#Vy7>QlANe=oPzu_Bsm}?=Si|XvRobm zRk?|4JM=eBKYNe^VOSeuD)PNrW|x&KIA#k%LC)3;w(p#jux5IlocPuXoMxa7^0NB` z%VUpo5CV?W=8g0*n0BGYs#EHhBBSqyE6>Fu5b4n_pB6DnW?Xdhpv1zK1LMafLu>1fwVE~J} z87TK6Bn}0f`k>p__JkRzKvs}Tkx@Kk$jBUOEI)P^(C!M?YBDbP$nDn|4Ho~t7_`Ud zyB#!Ee>MilNC9~JN=texAmL_FhU{rbJ;rn~&i*<fM&C1`w{v>Gnpd?Yb@nujq`0$YQgE2hy^(rg*YiGt26+V7Sw|NrX(zkgQzMi z?1+hZAY9-D4OqBQkiRL)?ovDwv8j%B{{$Q*YMeXT3Fo;@^0IAt8DQ@t_%+bH^~ePO zWPz3#4{+u{_&?6rBSYq**ErPt_CXqRaS1 z{%$F@NswXNj>=7hOtIO2vxMY((6qv{>~Fv=lGe-?Wm0M2H!ammHz(x5EYbWMf|*l8J7^-q&UwIDtZ(15t~L@?9`Z7x1W$F zk1}Gm^DSnc5A70|6a25wq7llzGAL){ZeUiO4zR8j1zXJg3UmO&woifasM!zBC>qYf zl0jg5jTXfHhUi8l0a+1ICUx|@p8``9Uq{V$Fzxs6$sDjpC`U@;6k?Qc_ZOn`YzI1X zR|I79)p=l7LE!KHBH*@Nzn?$^&GRn;WCswOsF$L7FEP|b-7FmAAue;*l|`1Te%b2HZIJ94-OM(5pTr} zVTCo&(i!2Y0@;(o1c}TZ>@Vp4?2ke0lH@ZrnVb;u&pi4jvk)#UEnh2*qCcM$=3$0= ztxfEjnCWkxrYdVA@Ud`B5BfAlPMyauZtYfijPAx z7bDw{BqGbZ?6Mk>o?2NxO;Z;Mz#-~)Wy`AV#xt5k#a1gA5+l-$bux>qqlqJuK~^)| z`BpR1RU>|qfYMYyG84V-`=(EQ*4s-2cOq<|zQ2;qMJK1@C(<;h+NQqG1KW@Jp;hZA z0vHAXK~qnjrWhxpyv6hr0UXWY=WyW(lel`^;Th9M0dcC`>Im>?X5!=;<3wVBVeon- zScdre$5fG~SpbqDB4mHuw27L-AOu?JO)Qj};g8*1n(zW~9xycZ7DSpldKyKp(SQpY zrtAJ1l60K^5Gvr#a8-J2C!Wv(@-mLKx=(z3A`;u7&`);N{V#Qx{-5fE5dXJ2OIUz9 z4yaDww^P*rfEn(;IK(;@{|#h~h6#DM8X?pAZ&FM&x3@m=nXe!JBXw>*zo z<6v{;wusllMw5(FF3wSJpQpOJ90rEv=riD)bKny7`C#b%XMuz%sj1lRW|xaCU-eiR zl0w56D0TU`d@;S+-Y@p}SaoU5Q-R$P$qo)YTN+gg<9|{%_xx;)fdTWkDCMmEUCRDd z_THg#sBk|_O+#MvLJt{Skm-DVv=t3)kleUq?-YQdqYS}{L+tVKHJ*S;!d?Aem zd>{*+u_$g#DAEYBkzX!4Ygi5-COi`ar5& zOcf~l@O4dM;+s*>Txfv?wKgT)ai}dI<}%aW(YbQSYmc%7Kb0!Yz~!n&TX`8qYKAhr z1F#h~mWLGYS73YS4X?F92(hiIHbXQw z+otr|6}W|d8)NjWFJRB^3x+JlxUCj1V#941R%4)(gE4g;d*_y{PzhC&XkU<-|U{zkyu;&*m5;c}@6LRBa;@~nkE5)x(C#O7iS*Fo(npA@V8$wgyc zQ!b|U!=`;VN{zu*m*uTPUoS%YxFbT%I=l5>f9tl$j9-v(NOv_ z_oaN;2hnMKUFJ!~s!(Ti1A^_scoP|X+jQ0pZd+Qig?( zfUYIlkeZ`gNPbAMDBhqTGPuNVm}bFCj@2H;S#3KkunpgrZqwy0;D1i9Jk~f+0s^F< zY6ARyCPDuz1(l1DzS4i4@R2jU=KTz?Kr9!?uKj+&sL8$EJoG%#SUxjQK3{gOFLq(#cox>zt ztQBaNfxp0i3ymBg(l2GIlQ=>IyefGVGa?5EcSQ|n78^+YGhp zwTc37F7l?Cf+I?@k9n*f7<Qcw(uc5-Ysx@kR+_89U=0Ysr=_}FF|%E%}6_8s3a z;a;30miBn3csWaE?un##`Pra(wM3$mZEs3^uc+=c|() z92{gJA)3Ye(VEpQ_&*){!*-tml{$MPsn_}!1J2Nu zR~SWdhNNYDBMK7LP;kRIJhlhWSDYHOwb%=R*111Z+?LS{7c~;?_f|3P7t|9Z!2VE} zjzZ#~gq$DK&-x$tZ@3!GE;Myy!ceT2zu+Gt0@oczRSgtvmiejezbiBh&AT#DE#CVN15(XQJUJyD=hAi(ti_ z2|Y~>2WqKvz;+7_hZ4eyQ6&<`*x~BjN+e;5@-JtMTpY7<4_#9p(W4O&NMO=5RyZ7H zIIzGzzQAC_63-Pbu`p(S4pXFd;08Mh6=@puKTJnLM@AspT^ky))=^WLno48iG%kAg z9)ci}EL4tQL=O|lm$Thp%h@+*KU?j^kP^9fXQMJDG-gSwB*`#UKr|=|xRFfPl}Ik9 zISz}8NGkzespy@enrYr~2EUjnwNdq7D6akC7sPoIplLl+1gn(IlvmMgXx{l1_U^4C z=2_d1%N3aCPRMxw`!z`M_QS7pC@1$$xaz7>Eq0!k{#V_(lbyBseuT4|yW(Mboeu?cw#WH6Ggo#h^fvmh zbJ>H22>mgev3gDheQ*LZK+8sv&>vukyv>a59C>7B-v!SKBSYs#GRaMAXiPJ$C1&7F zN4jBt>AyQLel)gp>r8ZK^I1#7{(POjB}10@Suuvq;Km)ZVRoCu-=w{*tZTd9n{>yQ zq%>SnvugtmLO)r1b>Q`L%IP(^i|nk}U8YL3%%SR=ibt+ahu?ebucJb!zdK&4+mv_kwOj=J@a^W>nL6?o`v86 z{|U8|etXn7P;`SM*eZg59KLAu2zVb{!rBITfhSoIyJ)1`wOFqH(E?Kqh3*C=-ZEX? z({uoXq(zz7LK{NZEeyIp-il;|hjJSmDFq(@8Mj1SXx_R`BlKEhe`dTmbsB;yhezVG((j4l4k?V4kOHgGH(YlHfsj5B zFndDsUn-oh^^%NY62!46!Zdl(GY|dznRJ4Pl4^@5E3O!K-(Mac#?#Hr%F4}Wmcp@-QfXtA$Z_Fqq zRo9?6Tb;ikp5bgq6jefxW|#+wueg+a*02GMvI41(m4nnkTJ;4QkI9onumz@fAZ{UJ z^6n@>&36qJGSA8jM?hUaYN^ZXd2cOwy0=`6UYqyjU~zA_8t+XDtQ-2x4*C7?5B`{Hq&=y9w63WK2 zx}W01Nx>}#?pXTaigURYD?rT&7!qqTuQwpADezx8671mUN?(qVLSaj~2ej95{ue-m*oo>;;e4uUOWBtp5z8E_-~ zO_y#?wGr27CunFDTUsoX(&G^nvlcT)ViaeK)i%I##Xj+eW{^GERiKaUYBWszPV5^e9x`fO8q4v3vTd%L>0r_nl$8)S6}D zn`~3;@)qA)57$O;gPvYp@t?JC0&V3^ln&P+vkPoH16!g@e$yVm+~l~g%uGs(X)7el zuMFLn!!CX9+BasMrZpYcu=Tz<4<_WSY1#N{r45~oujbF1^6ZDx=lM~0oBv9PQ2U9) zi~$cKI!Lb8(oP3kAdO1h*q>riH;_+|qqUh$>qVtga^H6RhLV&7kIs7kB*ul0qPg&M zX>sf@C^zrUOKCSLp`(>*VPT29Q1s%~tW@DAhMah`qC$v?<<=U zhn;WYAm~#tveez1!j7vEp$Bpvy*anDwqv5@bw4g}f6*1!WvpG^Td|kpj)<|68$fAl z%VL0)aWv451xgvUf6=mhO6{0WQBF_+s!O2+1^V`O%`fz)bci#Ve0SPXYX7@5AVadQ z8k^n@Q()8J#O8CKA+BUl?{U8L{J`)?yl!QN(ZY&z z2{U9z0FzlY*&s^YG4-I7${2o&gkF~%B9%DGkb(pjFH=OHKDbGzRW7+<79=}K^>Cil z;5yKg3O@PT?0oS0HG5RMa4%Q4hWleDl?K{An&Ykd$8X4g_QkS%xt5CoKX?#;-s@Mu zw}F#`qm7lCl_kBIqmk8LKYNuCwJ?1QC_qo%BBODmMO>jM^NNV%NVzao5--0X;yU6A z^glL3ySH6kY=;l6WZpsWS-51IMI;<-VLUEGW$~Zx4h8NIgU*5kAv3BFO_fZ<)SX&f z!3pI+(Wyp9QTDVL(H6i|0zph{OW}?yL!sYBY%v=Azm^U9hg+&9d5|@-V2RNmnvr&| z`l#Sy$RoYbRY7p*T~yL$ZIA|4x4@(u+6OMK{tsPzV+V_!06pXYU3mY{^>=pI|ET*b zHEiT`Euepn2(jHMN7!ImW@JK-GuGrN;sm#cY2lu7$!TJE<82=Fd zDOuj$#@6AlTFs29wGLoF5pn72yWJgS%mFh+2^9yTv{;n?=?@|OoE+C2AD{!e&j3OOWkd_FB8afDQ6u!|gllZgYOyZ=0gyRVzAgBOsM`5xW%nohb;D{(jD%hXb?+^&gB zlcSP*R;*@hfw}^z*#tqkpDq@5N=r?wXfNCKiap6!{VQJfI-6fNiai{!yceSTm3sH< zT0|-i9LM3Uuo7WjhQA~}tKBpFac?JU9=f!1gMO5at#9Dpa5bm>slB9r66^R7HJd1= z?2IXFOnCkMm}bs>*K;Vv*!Hc=Y16fI48g6Zyw^mG4-(vu9r8Qz!QLe9gY-2+tZbAk ztzqTEM_*+W7(Q+c`R3_Q+8KK`VPb`2%Rj_3GL$xOxB}Kw>BF?-P!@#Nfs1qII89cS4@sez|S#9EgM9MDX*r^RKP5qol$Dn5( z^t}<((d5YsYR%CLRZL3G2V2XhCzL})?Q@tm#NVky%yiBg+!qn#Y-9XlfK|CS?!1Qq zp1^e!+FT$!=w!G-5`QUkwaTWP7%7ImIIjf5tK6}DEHt2T*>uuPz?`^uH}GOk!TR{< z#%MtCoFtY8S`9~G3rM<3KDYNTB`lL_Y>6H_wvEv0ITSXL{~j+>v({Bx;rz|ew>(H?s=eBJQ^~F@?6y$u;aRb?}csDSSXU{T4sezR{FE=CPci31_NzH=`s8`)4gZ5CWytc%t z-~*bkt8bqIxllSXbrt{f*4C`SwO$L)D1IL)*BLFBWzKL+nU50@;XKvgxj-ky!K`<3 zVjlzP1!h4Ilsd2zQqP-G2U?@>H%+JTfe%;?h{vQ5S2YSw*&;i8(?=?svNvEEl16g! zx?*0r32n>Xfys5J3XQYuF?!R^;I7UyoJi!n{{u%!KHE+rGo97~?nP+ABWad6j3Ujd zPkB)gg)O*hQaDrDuBl`BZzD)yY)H6itv<<~pnCbZb3(EnwRKD&Hr33iA2+^Oc?)@- zz5bQtxQp%fu(gFl1}tmYl}^Irr5tH8l{1*;V@lx${WgRAN$`2~YScF4XKt$!ajrtK ztlSE>b)_m5m(t@g>?RFeCp!O0!LVQI6P1Uf4e8Qh?{+6}PnTk6T0hYq$>4OpZp$KA zdIfuy}vsY^4S>bNiy$6KGuDw$tAX%QEu!O5Y zx3SOaWRv?Nu=g3M=q{d6nPiFVwx$$LM^Z~OoepaH5Cbx!+G22Am-SaWGDb6^%mFNg z8Xx4~r<#wdWI`L5DDl3D)Z~&*3u&55W{}C^NLH6h`AkreN#b}^lib6TP1H0iMEm*) z^ohn=->fia%KS8%lJ_ELd79xlsWoj5oqM9;Ec{e~o)@iJJNQM$n=~SRWP7hu<39h8 z@BY+QsGGj;KYJVS-LMwg!sf59Bay0Yg)b_P#Y@#8QVk%uFd=3UkqE-^hV{(0sD72V zQK>#ARr5#D{kj2;!jUx@S)xUuX6?=@&U>R1b~sm@^WJ*yS>`bzclNpn5@P)I^0W#q zd)))#tO{WpxO=Y(HCOVkCf)PLyyeAY2GI~}Kok*JsWGWGeOGRmZ2P}7U&z|?cpY_! z7MbU{u!c(=(MDsLyVrPD7eBa^HvkJ?72PUVy8+{id^fVR|K3$5n!rYqZ>&YE%>1hk zf5S!uNo6ie)Z1 zRu!!|4_d9J=>*={bTwoRtDs7|Fkc|uOJJb7948CJxI5aLM=y*aob4q{0)pF5Knt5YpoXww2pZu%U!i1A@8&?ze( zObD=CP^7$#V?pgr@}Mkn$aOu+C9nobt+r;j8N_&O$nfM1gw$y3o6&%NyDQ9VY*1Qe zkFHyYnlJ(BU>-b%=2?6)NfP>?AbV&Ca%FkyOQ6^aV&8&hc7j#?3h zlB_aP>h5&RrqgFGPeSry`gD3Q?Bg*dckZD0GA=l6q~|q0?rRDjUP879Kf%_f4#@-u z`syrC3+)C?^0%3r^B-NRXyVGiS! znC8#J+(eAoEK=GT6c0 z$LeOFhl97p_vnlq5D3*)+XW8A0eNJ`UuxhNLGcnm{6EJ35!#arW1|@joq$6I0U_%l z;T*8%zk83}U9TURXma`1`1mm*Aa|t#fmja7!+|~j$!$D5{&d!_h8j9cfzvH>CT~0& z=!hSc0|4Rc23-4}4KO@Tr+?r2AAajZ_W%F@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.java deleted file mode 100644 index 8ca892dc7..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceScatterGatherSupport.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import javax.inject.Inject; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import com.twitter.search.common.partitioning.base.PartitionDataType; -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.common.root.ScatterGatherSupport; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.util.earlybird.EarlybirdResponseUtil; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.mergers.EarlybirdResponseMerger; -import com.twitter.search.earlybird_root.mergers.PartitionResponseAccumulator; -import com.twitter.search.queryparser.query.Query; -import com.twitter.util.Future; - -import static com.twitter.search.earlybird_root.visitors.MultiTermDisjunctionPerPartitionVisitor.NO_MATCH_CONJUNCTION; - -public class EarlybirdServiceScatterGatherSupport - implements ScatterGatherSupport { - - private static final EarlybirdResponse EMPTY_RESPONSE = newEmptyResponse(); - - private final PartitionMappingManager partitionMappingManager; - private final EarlybirdCluster cluster; - private final EarlybirdFeatureSchemaMerger featureSchemaMerger; - - @Inject - protected EarlybirdServiceScatterGatherSupport(PartitionMappingManager partitionMappingManager, - EarlybirdCluster cluster, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - this.partitionMappingManager = partitionMappingManager; - this.cluster = cluster; - this.featureSchemaMerger = featureSchemaMerger; - } - - /** - * Fans out the original request to all partitions. - */ - private List fanoutToAllPartitions( - EarlybirdRequestContext requestContext, int numPartitions) { - // We don't need to create a deep copy of the original requestContext for every partition, - // because requests are not rewritten once they get to this level: our roots have filters - // that rewrite the requests at the top-level, but we do not rewrite requests per-partition. - List requestContexts = new ArrayList<>(numPartitions); - for (int i = 0; i < numPartitions; ++i) { - requestContexts.add(requestContext); - } - return requestContexts; - } - - private Map> populateIdsForPartition(EarlybirdRequestContext requestContext) { - Map> perPartitionIds = Maps.newHashMap(); - // Based on partition type, populate map for every partition if needed. - if (partitionMappingManager.getPartitionDataType() == PartitionDataType.USER_ID - && requestContext.getRequest().getSearchQuery().getFromUserIDFilter64Size() > 0) { - for (long userId : requestContext.getRequest().getSearchQuery().getFromUserIDFilter64()) { - int userPartition = partitionMappingManager.getPartitionIdForUserId(userId); - if (!perPartitionIds.containsKey(userPartition)) { - perPartitionIds.put(userPartition, Lists.newArrayList()); - } - perPartitionIds.get(userPartition).add(userId); - } - } else if (partitionMappingManager.getPartitionDataType() == PartitionDataType.TWEET_ID - && requestContext.getRequest().getSearchQuery().getSearchStatusIdsSize() > 0) { - for (long id : requestContext.getRequest().getSearchQuery().getSearchStatusIds()) { - int tweetPartition = partitionMappingManager.getPartitionIdForTweetId(id); - if (!perPartitionIds.containsKey(tweetPartition)) { - perPartitionIds.put(tweetPartition, Lists.newArrayList()); - } - perPartitionIds.get(tweetPartition).add(id); - } - } - return perPartitionIds; - } - - private void setPerPartitionIds(EarlybirdRequest request, List ids) { - if (partitionMappingManager.getPartitionDataType() == PartitionDataType.USER_ID) { - request.getSearchQuery().setFromUserIDFilter64(ids); - } else { - request.getSearchQuery().setSearchStatusIds(Sets.newHashSet(ids)); - } - } - - @Override - public EarlybirdResponse emptyResponse() { - return EMPTY_RESPONSE; - } - - public static final EarlybirdResponse newEmptyResponse() { - return new EarlybirdResponse(EarlybirdResponseCode.PARTITION_SKIPPED, 0) - .setSearchResults(new ThriftSearchResults()); - } - - @Override - public List rewriteRequest( - EarlybirdRequestContext requestContext, int rootNumPartitions) { - int numPartitions = partitionMappingManager.getNumPartitions(); - Preconditions.checkState(rootNumPartitions == numPartitions, - "Root's configured numPartitions is different from that configured in database.yml."); - // Rewrite query based on "multi_term_disjunction id/from_user_id" and partition id if needed. - Map perPartitionQueryMap = - requestContext.getRequest().getSearchQuery().getSearchStatusIdsSize() == 0 - ? EarlybirdRootQueryUtils.rewriteMultiTermDisjunctionPerPartitionFilter( - requestContext.getParsedQuery(), - partitionMappingManager, - numPartitions) - : Maps.newHashMap(); - - // Key: partition Id; Value: valid ids list for this partition - Map> perPartitionIds = populateIdsForPartition(requestContext); - - if (perPartitionQueryMap.isEmpty() && perPartitionIds.isEmpty()) { - return fanoutToAllPartitions(requestContext, numPartitions); - } - - List requestContexts = new ArrayList<>(numPartitions); - for (int i = 0; i < numPartitions; ++i) { - requestContexts.add(null); - } - - // Rewrite per partition queries if exist. - for (int i = 0; i < numPartitions; ++i) { - if (perPartitionIds.containsKey(i)) { - if (!perPartitionQueryMap.containsKey(i)) { - // Query does not need to be rewritten for the partition - // But we still need to create a copy, because we're gonna - // set fromUserIDFilter64/searchStatusIds - requestContexts.set(i, requestContext.deepCopy()); - setPerPartitionIds(requestContexts.get(i).getRequest(), perPartitionIds.get(i)); - } else if (perPartitionQueryMap.get(i) != NO_MATCH_CONJUNCTION) { - requestContexts.set(i, EarlybirdRequestContext.copyRequestContext( - requestContext, perPartitionQueryMap.get(i))); - setPerPartitionIds(requestContexts.get(i).getRequest(), perPartitionIds.get(i)); - } - } else if (perPartitionIds.isEmpty()) { - // The fromUserIDFilter64/searchStatusIds field is not set on the original request, - // perPartitionQueryMap should decide if we send a request to this partition or not - if (!perPartitionQueryMap.containsKey(i)) { - // Query does not need to be rewritten for the partition - // Don't need to create a copy, because request context won't be changed afterwards - requestContexts.set(i, requestContext); - } else if (perPartitionQueryMap.get(i) != NO_MATCH_CONJUNCTION) { - requestContexts.set(i, EarlybirdRequestContext.copyRequestContext( - requestContext, perPartitionQueryMap.get(i))); - } - } - } - return requestContexts; - } - - /** - * Merges all the sub-results indexed by the partition id. Sub-results with value null - * indicate an error with that partition such as timeout etc. - */ - @Override - public Future merge(EarlybirdRequestContext requestContext, - List> responses) { - EarlybirdResponseMerger merger = EarlybirdResponseMerger.getResponseMerger( - requestContext, - responses, - new PartitionResponseAccumulator(), - cluster, - featureSchemaMerger, - partitionMappingManager.getNumPartitions()); - return merger.merge(); - } - - @Override - public boolean isSuccess(EarlybirdResponse earlybirdResponse) { - return EarlybirdResponseUtil.isSuccessfulResponse(earlybirdResponse); - } - - @Override - public boolean isTimeout(EarlybirdResponse earlybirdResponse) { - return earlybirdResponse.getResponseCode() == EarlybirdResponseCode.SERVER_TIMEOUT_ERROR; - } - - @Override - public boolean isClientCancel(EarlybirdResponse earlybirdResponse) { - return earlybirdResponse.getResponseCode() == EarlybirdResponseCode.CLIENT_CANCEL_ERROR; - } - - @Override - public EarlybirdResponse errorResponse(String debugString) { - return new EarlybirdResponse() - .setResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR) - .setDebugString(debugString); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.docx new file mode 100644 index 0000000000000000000000000000000000000000..0489d47051fc351af6647a5e245f51bfe1ad4ab9 GIT binary patch literal 37953 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.java b/src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.java deleted file mode 100644 index d145b5e4d..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdServiceValidationBehavior.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.twitter.search.earlybird_root; - -import org.apache.thrift.TException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.root.ValidationBehavior; -import com.twitter.search.earlybird.common.EarlybirdRequestUtil; -import com.twitter.search.earlybird.thrift.EarlybirdDebugInfo; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; - -public class EarlybirdServiceValidationBehavior - extends ValidationBehavior.DefaultValidationBehavior { - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdServiceValidationBehavior.class); - - private static final EarlybirdDebugInfo EARLYBIRD_DEBUG_INFO = - new EarlybirdDebugInfo().setHost("earlybird_root"); - - private static final SearchCounter INVALID_SUCCESS_RESPONSE_THRESHOLD_TOO_LOW = - SearchCounter.export("invalid_success_response_threshold_too_low"); - private static final SearchCounter INVALID_SUCCESS_RESPONSE_THRESHOLD_TOO_HIGH = - SearchCounter.export("invalid_success_response_threshold_too_high"); - - protected EarlybirdResponse createErrorResponse(String errorMsg) { - EarlybirdResponse response = new EarlybirdResponse(EarlybirdResponseCode.CLIENT_ERROR, 0); - - // We're changing some ERROR logs to WARN on our side, so we want to ensure - // that the response contains the debug information the client needs to - // resolve the problem. - response.setDebugInfo(EARLYBIRD_DEBUG_INFO); - response.setDebugString(errorMsg); - - return response; - } - - @Override - public EarlybirdResponse getResponseIfInvalidRequest(EarlybirdRequest request) { - // First, fix up the query. - EarlybirdRequestUtil.checkAndSetCollectorParams(request); - EarlybirdRequestUtil.logAndFixExcessiveValues(request); - - try { - request.validate(); - } catch (TException e) { - String errorMsg = "Invalid EarlybirdRequest. " + request; - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - if (request.isSetSearchSegmentId() && request.getSearchSegmentId() <= 0) { - String errorMsg = "Bad time slice ID: " + request.getSearchSegmentId(); - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - if (request.isSetTermStatisticsRequest() - && request.getTermStatisticsRequest().isSetHistogramSettings() - && request.getTermStatisticsRequest().getHistogramSettings().getNumBins() == 0) { - - String errorMsg = "numBins for term statistics histograms request cannot be zero: " + request; - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - if (!request.isSetSearchQuery() - || request.getSearchQuery() == null) { - String errorMsg = "Invalid EarlybirdRequest, no ThriftSearchQuery specified. " + request; - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - ThriftSearchQuery searchQuery = request.getSearchQuery(); - - if (!searchQuery.getCollectorParams().isSetNumResultsToReturn()) { - String errorMsg = "ThriftSearchQuery.numResultsToReturn not set. " + request; - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - if (searchQuery.getCollectorParams().getNumResultsToReturn() < 0) { - String errorMsg = "Invalid ThriftSearchQuery.collectorParams.numResultsToReturn: " - + searchQuery.getCollectorParams().getNumResultsToReturn() + ". " + request; - LOG.warn(errorMsg); - return createErrorResponse(errorMsg); - } - - if (request.isSetSuccessfulResponseThreshold()) { - double successfulResponseThreshold = request.getSuccessfulResponseThreshold(); - if (successfulResponseThreshold <= 0) { - String errorMsg = "Success response threshold is below or equal to 0: " - + successfulResponseThreshold + " request: " + request; - LOG.warn(errorMsg); - INVALID_SUCCESS_RESPONSE_THRESHOLD_TOO_LOW.increment(); - return createErrorResponse(errorMsg); - } else if (successfulResponseThreshold > 1) { - String errorMsg = "Success response threshold is above 1: " + successfulResponseThreshold - + " request: " + request; - LOG.warn(errorMsg); - INVALID_SUCCESS_RESPONSE_THRESHOLD_TOO_HIGH.increment(); - return createErrorResponse(errorMsg); - } - } - - return null; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.docx new file mode 100644 index 0000000000000000000000000000000000000000..867e47d1c7869f4a9816ccc796868d6223c32827 GIT binary patch literal 37379 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.java b/src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.java deleted file mode 100644 index 82f382ed3..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdTierThrottleDeciders.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.decider.SearchDecider; - -/** - * Controls fractions of requests that are sent out to each tier. - */ -@Singleton -public class EarlybirdTierThrottleDeciders { - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdTierThrottleDeciders.class); - private static final String TIER_THROTTLE_DECIDER_KEY_FORMAT = - "percentage_to_hit_cluster_%s_tier_%s"; - private final SearchDecider decider; - - /** - * Construct a decider using the singleton decider object injected by Guice for the - * specified tier. - * See {@link com.twitter.search.common.root.SearchRootModule#provideDecider()} - */ - @Inject - public EarlybirdTierThrottleDeciders(SearchDecider decider) { - this.decider = decider; - } - - /** - * Return the throttle decider key for the specified tier. - */ - public String getTierThrottleDeciderKey(String clusterName, String tierName) { - String deciderKey = String.format(TIER_THROTTLE_DECIDER_KEY_FORMAT, clusterName, tierName); - if (!decider.getDecider().feature(deciderKey).exists()) { - LOG.warn("Decider key {} not found. Will always return unavailable.", deciderKey); - } - return deciderKey; - } - - /** - * Check whether a request should be sent to the specified tier. - */ - public Boolean shouldSendRequestToTier(final String tierDarkReadDeciderKey) { - return decider.isAvailable(tierDarkReadDeciderKey); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdWarmup.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdWarmup.docx new file mode 100644 index 0000000000000000000000000000000000000000..8e1e78a04f5260b75b3bba1bda1ab33be88b5aa4 GIT binary patch literal 37569 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 { - - private static final int WARMUP_NUM_RESULTS = 20; - - private static final String CLIENT_ID = "earlybird_root_warmup"; - - public EarlybirdWarmup(Clock clock, WarmupConfig config) { - super(clock, config); - } - - @Override - protected EarlybirdRequest createRequest(int requestId) { - String query = "(* " + "warmup" + requestId + ")"; - - return new EarlybirdRequest() - .setSearchQuery( - new ThriftSearchQuery() - .setNumResults(WARMUP_NUM_RESULTS) - .setCollectorParams( - new CollectorParams().setNumResultsToReturn(WARMUP_NUM_RESULTS)) - .setRankingMode(ThriftSearchRankingMode.RELEVANCE) - .setRelevanceOptions(new ThriftSearchRelevanceOptions() - .setRankingParams(new ThriftRankingParams() - .setType(ThriftScoringFunctionType.LINEAR))) - .setSerializedQuery(query)) - .setCachingParams(new CachingParams().setCache(false)) - .setClientId(CLIENT_ID); - } - - @Override - protected Future callService( - final EarlybirdService.ServiceIface service, - final EarlybirdRequest request) { - - return ClientId.apply(CLIENT_ID).asCurrent( - new AbstractFunction0>() { - @Override - public Future apply() { - return service.search(request); - } - }); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ExceptionHandler.docx b/src/java/com/twitter/search/earlybird_root/ExceptionHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..58bc665ac10c7ed82633f67ece6c4a2da16114b6 GIT binary patch literal 36879 zcmagEWmp~Awl<2pdvJGmcL)S`m!Lrx5*!vD+%34fI|O%!5Zqk?!QH==?%sQM?{m(* ze~O1W$9QFos#&vYm9iWp6c!j57#!GLDvx%hYGGUwI2hO{3>X+DXjD%EVE@_N{Fa>!!u{IxvhQwyFwsW>v(1(_Y9*#VfE zmJIKAQ{3RJJ2id$Mi{|o;yJnjN!kx!(KMAYniwR5!EmZVqtKz%`O`eP?Gz5`sz<{# zI}D%pMwMM(#(mw$A0+&wvR)RMsWmfg(h|`+&FnU&#c>2vR~mV(rn`<|9lU!2unD5BnK^{a(t5KO$T?ooWcbvs zs}rs6V|5fLgYS7Kfs%3D9Y9A@PiBw^lg8d2Q|TRa*LQbER~SPn{ID2mcsDzvU^lMe zH;np)OGBhqwM{H0d4z+H=gsj*g52jOCrEFJPg2pRUD8O1)?c*W>;3}eY5ybiGTuFs zf7PALb4Ssh%Su3=sXSvco!(0lQ2}~a+{Y)cN5tatcap+A&kMzCdm^KEK=F{^D78#0c1GP+a<^pmTdbBs_E*jd5R^gK2 z+x^Mh)whFmY||ocC{RSrsqeTgG)aXS)-eb4=;}|W#j3<5jp*%UP)dSI6VR^_KhtWt z_%O`?U;xtcO(AnP|u8=e2AQES_%JdB4v@Nim`2Icedt9;o8$Fh%@} zwKnBUw=rhX2X16qkNfPO1q%IwsAdH^&8I;HLI)Md3}CA41aNR>F$Fl8|31kx


    H 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedRootAppMain.java b/src/java/com/twitter/search/earlybird_root/ProtectedRootAppMain.java deleted file mode 100644 index 68d155ae6..000000000 --- a/src/java/com/twitter/search/earlybird_root/ProtectedRootAppMain.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Arrays; -import java.util.Collection; - -import com.google.inject.Module; - -import com.twitter.search.common.root.SearchRootAppMain; -import com.twitter.search.earlybird.thrift.EarlybirdService; - -public class ProtectedRootAppMain extends SearchRootAppMain { - /** - * Boilerplate for the Java-friendly AbstractTwitterServer - */ - public static class Main { - public static void main(String[] args) { - new ProtectedRootAppMain().main(args); - } - } - - @Override - protected Collection getAdditionalModules() { - return Arrays.asList( - new EarlybirdCommonModule(), - new EarlybirdCacheCommonModule(), - new ProtectedRootAppModule(), - new ProtectedScatterGatherModule()); - } - - @Override - protected Class getSearchRootServerClass() { - return ProtectedRootServer.class; - } - - @Override - protected Class getServiceIfaceClass() { - return EarlybirdService.ServiceIface.class; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedRootAppModule.docx b/src/java/com/twitter/search/earlybird_root/ProtectedRootAppModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..870b9af6058a6664f872f3b71e293b94a315d024 GIT binary patch literal 37535 zcmagEWmsIvwm*z(aCdiicL@Y{cMIA`aA-V0a0u@1?!nzHxLc4waQA;_X3jY?=id9i zUp5a_YyD)c-Bs1Qx3U~06ebuL7#!GLDvx%hYGGU=I2hO{3>X*&XjD%E;PA=9;ggZN zr=x|70kem_U1Oqx(yA!x=d%~ABo<*(ZwVBvvK>cSN5(jO$?EhQUY#YD6M2Y-yK(+- zjTz-o80NT))H`3|)jFY0pC)QO3CR-!gAA>Fa>!zz{PjHMQ%jybsW>v(MVVcqxdE7( zmJA=fDQ~mM5I9w#QRuMh{289yb_z#z)uUmW zU51Z)qsneC<9_bs4-)=TSuab>)S8*L=?LEfcvHfS&o!h!8#l!FyVSZ(Fw{F+X*kub z_7oy}3?c$hzyGlBW_BOb;y8k-D~-HX)7?O~3HfmXunnfJnLUKe(t2|c$T?osWcb*w zs}rs6Ykd?XgYR`Gft+#N9Y{x0PiF8HCXKy4rqU<)uJ7)St}upD_+cr`@NRBa!G2uB ze;DO6mxf5KYMWS0(g+71&zsYc1i9}`PO#oGpQNI1yQGm2ZGdRM_x%O()4mDx3hw>8 zfT}y0=Z>O1*VVv0GkL}&I=z=fq5`z8IFl#uN5tZCJW1i6=f&dnJ(1Bn^1LTZ1w%09 ze{|84T2AyH)V&P|Ffc^WUn6G=I~Nw_-`C3ci4Tx$sQzcdQo~fm4ow=81>lESvt2XGh4g%aC59rqAT3j!`M})89_>xKi-tC%HMk`B z_5d;u^_^fHyR?WK3S?0W>N{>rO;TZo4U7Rjy86=@u_|#%BYJxojMI-;qiDw?z5@D?D;I$>N($R12Zm&LYb zV1IjTQ~sz|e!+YgB%!2c=s|f6GtrLT&ui5nSUl6R`+lE^l43&3YtqtnBS^*1afga#^*IlxTW8Q|!`Vg_)w_*!b!=}gCBkQAcGmO)OyRwrC>Lf#XYgPTVSu7!{A1|DKK>9D7?vh!>d+jMpik`1BF}U}v`*HS?+KS(7v^zot{~bb27Nl%C zn}Pg77(YdS9T(@^=Si~67S*EMLvb}Uh2_thqVcrfD3D0^FzJ2<1Q3TOP{h}xl{Oa< zgJqzVaA+3I@`Sxgb$>s+n(nSjX z^?txubw9&`wg!fs@Wkx_`W*^5hp0-bs(Xtj`_`8e7iXuCaWkAV(lljirIgxi*@Avlp6>o`<;hyIL3irqg*^qA5UE=k*_mbeBeYsv; z#W@D`#SRJ#4E67QF>!SKqb=%V4y&xF?N1C)2A{rI!-}ck#s@Bl%}A`{*TiQu&yA9Q zh=Xcn+X4DMgkkZ0X1NI$s26x@7=2n4vxIF>{HTF7_K-KM?6i*1Sp8*ae|6%3+y$x( zx)e)u0L{S3Xlk@_9)=12Q>vD7)u=alz3KP`F|4DD62sJ|6=czk2JfOaMMt0MXA4oO zUv9Pc{pX3wjY}ITDy&Lh${}B>KbCuzObKzl-@Q4~NlHXQmWD8S;eZR+2xWul{pqI8{3lwDmAxL0;4FpcF)^d#p%xQOV8Mn^eYmux_qqOO6WUKCa~7e1OB)piK5 z6?_js1O3%j2v_;No9+(D-ADWvROSnNwu7w)S0ThBcNkt^OFcYs@(H}%%ShxHaX^dR zW^$tNgw`gdKxhVzhPRzkTyp=atVp5K`;PW>mS+~?bNKX!D}uNAn_ndVyfN5#96HOP zK{o~6pC4FvfU`LZ=u_)z589l5-x(*m_G+uVsIR~-@dOlT%aUENWanJjT(WED5blI& zLvJHosSRF;)k|4taW9v*7fs*@!w=dmD9dwmJJ}?+Y=e_3P3Miywp$@~u+kQ|G6Jfx z4N_Fr?ep$R2OmBW&yFs!uSEe8LTI9{W>7Y}1}DkQeP1ZFe@NuOtHP;U;MUpXR=aA` zVPhQ!DJAZ?P=}xk*|TlqNL3HvVTOwH4-mDP4;3mSz%NoW?q~!=);HI8{AMl zH8HTnfHRBCfx1rk>FcCVtL*o@pL?Mm3zQ#<=XBf+k@qxWkNU>1iob6b0}QnU`l+^i6RPkwFW= zuz5C_OY50W!G;OU&P|-0Y4~_#V$AQ0p9lF+@%%J zEi0nwhJz=SoESFDt&aqOhTfqD|Q4S+=)gQud}DiI)#X` z;x)vuddb(~;58KBI>OGWp$gT%XM7^BA)gQ`KZSR@S)w1tz3~u@V)i-5lj3o$5SeB^ zA|8^WV96@om`XTGbtFf*+)3njD^sE%*Zro!lUMb*5b|A=oNi{z4R2}X=f-f8g;GZY z42AsZYeTYK?8LP6H4A$<^u*@cmJbB!W-l~}K+LMx8?7TJ8b$m~iEQK+?ZQT??+a4X zyQelw)U5;NdrkN{rKeIK4o+<`2EVcJ6>*!r+TRO6BsTZ3>{g4f@%^yBZH7GbCp7-t zO#kXM$&Gw5G@Tz;tQ2g%)qn9C$X@f6jz(x7ls{G~m!LV{ zdxELvrT!SENc16X37WOav!FC_VbE%Y`+3>D-0!pEEC!eyl4Z#HT*)LCVQCy4gv)qq z-6)dHb94~3Tj`27@g~DV;=><_U;iNLN@AWCSP;KoX5*4eP2(}R-vKqlF;ki-oGwHd zC(cth>EXC=r$VXs<#LmzsIkvZBGoDqAF$+N&Ys@Vb$Q+M3{j_mT^FTQB}{6P7oY=? z&L^-ojvP_&RMjp~21PXD55-D(<-ktk3v)Ptm6gk|R+ri_Li4@AW(CCoFZ0Q(tDhGT za&4M5H7$s9_k0(&U?Xn9l*Fe)QFuRibK*_XH>Ah9dZiHg~x*)&(Ysf%M)EQ2t+it;weZ;2*$z4jB zFf+<~aAXG^J#?>UuMWrK_cxmaY~Sni0XSz}**yGu!Rhc^D^jsm*N-nUL0$-~UBsC{ z>oqvcK3gcfIV|YM5wSoq<(Qa!^y!DQ-c+bEGN;SAo56i0g!}KaYoQUWdO&7#bnKn{ z`rcdqU#zWecI}GII1|T3o<2IHB*{b1I2oyXdqqL9_Ls9A@1vDwP6L@OSG<8<~Sv5-i4Yn}{+6ax)@k?6trw!%MtHPzpeyc)s<_b*K_$PG+ z8BW>d-oz-xvLKWfY5nyYb&cMZlNdbS67m;fr36fE}sUtTHoqxYU;uD z&MbAbGVIraQ!&7iJqhjS4V&!=MfuLqQ#K7(3L-5vH+c^Py;*ox-yO^MH7M}{pSe+T z2Dl`?wpj>hDCb4Bq&&-(@IJ7ZorwH%Wq0r=KxYSS`D36hpAfX=|FN?Fd0_qf`u^wP z^{bdt5G(HIvsZ-PkOa&khX}l1dDLz6($$4NA<`@Hw-S4sdh6zl5<3CAcig_&H1@L- zw`vO;0=Ntf9|CzJAy6=9LzFGh1+7q$kGtz-G{kHxN#Xfxdbm551jQ9*PHGcBRvdiz zs_=|Z+e+16hd|kw>mb^SRTWimD6JO%xsFE{LPv5YKE)(7JL{8I8~MdVRm){Zh3%He zdYVhmmSVkTU@sa}?b5ul0R%-4P|MfgwN zun;1twGkwmAz zoUZfqbs=@O>YZsm6;GUAwE=)HxIO|8`==hdr&&p>FAguK=^~3mfY*nZw}+?2v*==x z=Hp$1`-k<5w&eM?r-Rv_H*KMzyGNccb%L+cS=Swr4B4sMGkpA}7Vk|&O8L{3FAU$KSdo!?(5Zx4kA-5as2 zK7mBJZ~ASVpo|TjJg)olPQQqVPY9i8ZGg`8_TK!`e#AgwNa)(P2LfAvF` zX;1aoJatn2^C#UZwO0!TZ}~rj^E4cL7$}`+{^X)%cnH`=NjO0`=+2!rTf`wXfn@f z7LU^Lo3G&+P^c=~Vet*4zcVSaWu@yx@nAIuuyg<8tyZ^7I*Xw5o1QfH1Kndcx7QsT z70v7Y>b@J#0U}@N#lTxz7$NnosjR0VOFnKFfhI!Q4qRQz?gu23a+K{76gE|oUJVk{ z3gLc9-!M9#uvwt1Tj%xAiS+;tf}#3Dc;Ku$FmH<@F`KqUa*qaqSQ#|b!yuwk0|5QE z&-l`BgZE}|KQ6NbE9{`S>S_UjPha$n@?`U+U64_PB&mAJeP&HJR+YUsw0S6DsS2vbp!Jd;#1$IHnV+`7P>(ipil{%eGf2!4e&|AAf)xy-%$?T)! zozu&Z?Cq7v$(eA5igcsF{M>op{?*mb(>|9BPKJ|e9 zD!+4*MWyuS#m5nT<;7t%dvn((6tRcHML%U^2PI5uUMwC#5iPz$&rKftM`BTzy097sBm9VO%kGdAj| zipQ>eq9cQ|+Q95Kg1aj6#|-vV6Gd2Qrz1tQ->AsUmw{8IU_cLajBoZQ&G=y;5EF-5 zkkwuuvPA^|*Wn$}6Gc_L#6}HHXontV62HWb4UBDvF39;k`4KdU{jW)=ZAt*R*kAEg zjrdf|P%NH^!@aT_5dXqH;fx2Rl7iys{z%mYp@o2O|B?D96;vtBnGKo8e-WIiP=H1d z{!o$B4sD+MKP3JKD%R_=3Og_v6!mvuZUi7bs;D5Zm<>OeND-O-OCl2~9E~R;+#jmv z65Jb6+kZ#>d#J!gqG8gltrNpAi(gWAp0tx#)7AIv0o+f=PnTq&EwTFpf>b~<&DYqH zmL`wRO}|zQy(N1WLP_npeW$kNp)tEx#z-M%y`<-}f%T^w*H#0E0dKMAzQu93+>c8h zS9pWo!cW$cfg;}2SY^?w0W?*vrEpqASC(hBxoJvcKS zIpM9GZwf5T+VixrBp)BdVNZ?yFyleg-(XX4BR1~{%EjL#Qrr)>iSIBg-rHq+c-!+; z8AUi_d%kk@^Kn0GNuWe2+;9o2S-4?RTP30#{T8XUlz`o4Q%5n;`r5M|H>h$;uiodJ zxVCY0;<3`zADwiU^Y!~BHE-7^ceRg`$RpTc$7Ky3kWfSP8ra*VMhoeIFR%UQMM?)_ z>>Hnm!`o#?(^Wr=rEfjQm+?T;Ni3Wx$nul0*Ux&|iY3aOEcj(eqH9qW%`KbPdG44S zEgUaqi$9=%)=xMEKcC^pk=@7HS5%ws)cy@8*Ytb)r)ISu%p%X79S9!;e^I%&Ed#-8|8g$w-0tMgPoq%~7!89!H)@}L5_-&TYGq|>&Ux|apSNGr)-*W(! zQ)Z}>8A_u@G3Irc=b8s@C=q897{QfH%_|=>7?!OJ_VgtvGREMk`&x%ws@fS^-)T9c z>5uGxi;w#Gp((e@+_f(eGqZo2KRoCsWwd|7noN3=u-WkuNBWiD>Uj>@VvuwSG3U`| zSiVOO_$TX}GOiC;u%T=0$+Me3w((HV=jGa}nht=b4mQ6;2de$Hz4!7U!sQ zax2uA{fT2)tL??f6L|NU__lEJIQ#SY$dT2g{k26T z^Oog#Y6#lv6%1uL-Lpj)%4oB#IeF-Y>_Ii|iOYB`IKSl7#RXYPVT^h#`!*R_CX(P= zyZULCYO7ojV7hAl=^3M|%SXlkf=l;VL-L`4^Z^O*gjIvha1#&H^a06^3~%WuEr6gr zNiJ=cnX5R;T(Ql4KUnA)tU`2GEHD0bDltROG38> zRWrJ7zX7rqPOAd)A`ctCat!0zv$G3l5l1<7lDg!%ul7`fY1+VY_|Zx;7hvNU5%=d2 zySDXUV9s8wQpQ{DGIp1TlHnYMSc%WEhGWupi9Z)1%mS+ZC~X=dyXKFF2pj3)N1{!I zYk35Gy;Pz%w8Bo;oiPHg#gb}zEX+y^0sowh{=JwI4>YC$5_P4QIuxNzkr%vXiAfQ_ zb#JSR^L&1h!7V%C=;i3L-JwGJWqkMaD5Jhw%&&0_$HYAR6|F|C!?0r1lGKRfIfoea z4%Mg|s6DywH445`gCk{w{Kq28G>kI@NgU^LP+Xo8PNmByrDZtjwZyqT8ahz{ewoJ( z9R0B>F1X~2gmqH}c?ygq+lxf>K2SPh&vak;Tp;%4umG}3>9?L1eOJzReEda6!a8~} z0#VXa+T)e7h`0FJ>rHFM{IntOq6EF!68fhMGbN9_Z?}!VPxno2Hm!24o}I-nrfKvg zB7AK#C z{0MUU)eN&|VP>^vAxT{I$WGj->0JB@ZzgTc4}oyd-eJi6<;bm>#>_@(epQuvi(vvz z%Ho!E-_=!TYL~R~z^SDtRZ`K7sW8i^RVeFib$DM~mLd8>C9inhP6?uBg`aIw!O5EH zYO73>OPg_95zn%$uCu<)2wObW5K%Mbt2B=+hvJ6`UNQFF0z^wYtNPReq2j{Z4Dw}{ z6=-jpmhA|ISnLtcJJ0f}_+#bxer;_|(-kGxgRRO6ik98|BU~L^gqUtJGn8S}I@ljg zc4wcKIGR|flK03Xd#V`0s1z6wAGH^w3m#zGI&+>ss@fjnQKI8Z%gU*`wUT*HGDJ$5 z9ZO^Gspet9;aJrosoE{b=dh&j`qed=+*XW|-c|L8XSmA&e9tTRMudwdyv=Jn(A=^^ zut^2O#m4GT^!VWTGF?2e?ST;GJ@sh-@#p02cZhqca?Y=7OUuxjBZ(T7S+Q9VZt3>+ zr*U!*S}LvjS#7U+r;ifSBq%scLIp@8Y{zc0nkQKryT(XoN1eSedBlO7b7m>Gp>aSF@G`7#)XqHaDc5DVbFHwg)Q_MEVx8r3Wvs z=UQj;kRg_vlkv`qbdqg^(}Tk2k}ef6hisPAx)}E>@8Z8njrs>KHKeaXw}ace;lxUn zL@~+@PvCysSvK5y;`wxO-Jg?kv)fuZPf&FyNp=;pDBsz_wTzvZI#g zmu>XM;OSf)&Mzo)clZv4gR6&+qu$Dn5Y>c9)9KMJ?fyJD6BiJ5a2;_L@Exg;iu#*( z((;a`R#msy9VYZLXdPHnOO|;&w*jkZ`OPX@@{MEeM_6m`6nvDfri4==mx8d8JwZ#GalNS&h{@g=|!{pb}NmSRC z?|9(_H!m&;=&xKXvwxSUV20peYe^zrrVa^4Ih_=DB!37 zKcZIxAAHaTS`gDGMs$v6{Cl|0U74jiSrh-Jm%tkBNaG|l-<^Xgc2O;&iaBp1L!+L_ z@-fnjZYu;LOPOVY%&SGcqa@ib)Lg)N?y0(OKRn27H#vv&uC6y#l$nbb4Uc2-3dMD9 zQ~5m=DKjiBN)OPTUpk0TD}7=}rts|4DCupTWMfMFN;1DfB9cwOA?YX1%Mab_N0)2q zeHyJHwWCX)s|H!j(lFDB$iv)8vI*PWWjC!d%a4h1Dx$u3kLXa0gC$X85Y}bfcbhNa z@AG5T_FCrD>g>~H=d^Hw4)6FKzF{~#>T(cGj!?+wIIKLTN&y!XL?kNbHLmrdHu5$A ziC^6307&fgC1EszRpybZe%kaVDTM25rdiC}m6~HE^*7Xs*CorWArfxD=|*1Z0U?A= z>YxB!8(Ry3aPmki?|?I-_mjj(v7Kestua3N8fC?`Q}bGn6xp-=2S>CJmn&1n5&q}5 zSL#rVOBpLu2$2Z%5C}00c!hJ!*Sm{gP zXhD{~e*Y<^e$C4FtyN0YpjWT*Nadi1Q5{O15#k6J1ru2vYVQ2?i4D&h+h+wEe8erj zDS>XdrSmMRioyydTHa{B0ZyiKhJJo_>EMU~B7Vwx$Hf&B+%puT2;`~{z7$TohL1>* z@;_`QU;c}Y&-MS4jds{0faii{F|PjLV{x^OE)?bF$HXJ+UoJOT;3Ef|7p?qX{M+l( zW~D^$btXVXbO0}|$1i^$as!1)q~$g%oXMmhg%XsXzKNlnaIR?=sJUC)0U|tsFEJ5R z=2b>h?t3~LGB40Mx7LHAT$No>EFv{~s3%d`jj?j3Ng9Dm!^0{WY7hDJp7WgXN|5;7i zVW_M#kD%k>pMjC-t^Z5&Siks-RAqAmSV*#xm9~knV_<~4e3IL%9GTB8&bSia9H=(M zuG5>{Za<#8Af&)}xCp%Xp7SQcsSA zhK5)$qz79VFcmzbbKxBofYzGpV!Zcj4YJbbgm`mLaW1}AMpe?Jz+u(Ft7YRJp$c@{ z9ecbU6u=V9uoPv%&kjqaBm6B^iqt z7(bKOXAW0X$ENZvvU=}WWb3@+`vxAZ$SA!DnLzNtIE`qzoGOAYi*U@0?fl9td;qg< zd(DuMIzusldj%6B4kA^Y)EP_-PV!yYz%U{?_AC~*MBK8X`2sYAGc1Qi%&#Mk2(tG) z-810>hu%A8YK+p=9I%b%YyRDVcj>Ez_CXNkO6mnf*cNLc!LZJATlFm3e%R?(tampDG;ZF12=qg zJMQLt@*l)i&h}EMBCS=MN^SYQD&V~(u(+!r#9Mb}?=~Qms4y$5yH3Ser<>yY^i~?? z*ELEWu>*Fb#`=ji*+Dkdvod%Qx25aW68`i~Ty>A(iqeu!`U)3niRgtUyMYEdEldVi z{RCjzIrR)cR#T=69empL8t)Tw-s;Qg0-C-m|3wkUxwxW}QS}$Ii7lv;73$42DHTX|=L#7Z zWB2`hQ5<+)?dS&;QjNdo-3ZK459XBaMldk47c#v z$rwz1CuA7zvXH0yd%g{cJrs3JD0z8gAPxS$b9^{^~1$9^*JJV;0n$67UxJ{zp zJM`hh=6V<7TboFGc8ChDtbQn}wc8rwEX(6aKvO*WYcSBt+Y*ZHfD@L zNAY?gZ#C;%o2MG68_juR_~vy>?4)jQdvwO05UN(7L8^AcHklzGV-I?tN%(JSxj(4U zLDaBvzfa%ets4tSNydLryP1!Hs0FzHr2bBY5rO=FP+xTR!?%ZL8*TWszV9%GKdLP2 zL3fzVVq^?(|3#)9*xp3hb}WJsLE#amg)CRo@2E{~zU|N#&uvybRnsrpvD<_G`;=XX z*X%v_?l1CN*I^L38tfnB&1{?)5zPMw`HZpb)tR<(Q?5xW631~ikSJQZJu;KV+0ceCiA*=g>K%NGZXN_f)QhN89ENuZije2@b z40vi=ZUzN+eck3BEyk&^@H{9{%x|4$zJ{SN8&(9rG^swpqc~eoTo(PUeVeoLMOYzi zw&4*=k`qaCcGTNK=cuDDtjN{B2%fVoF8gWaC+9AtLtLAR56Vj?@n@- zGtU~Li9_QmYL@e7X<0rqfM3D31CV*jS?LCirT{t9aJdnX#;tv)xiYg>oY? z$yrg(%J$^4!VS5^kGilQ(?mHWy93{n_!)cMysp13R{YDO?p@Kyz~8{Gyl2h-F!__S z@}_g}+ib(izf8*M9d#6j|7kKb@wZ7{#NQ@6?En8v@+#PNO||WFRsumLF^a6;`0cV< zh=}uXuod`islk3#sf^QkD`LUa`s>^UyemaWgmu z)($)FEZD4;DpWq<|}i(^}i_|#;x`(L<1Ng@Acxk{*h)WQNpsm}oEH1@IuGy-n3!{MvR?t6~H`VjYy3Ae`xXePQLZH(1ua!NgD;k-%-(IGVGVWGF;N7=+kB^}je`&CYS zeEo5v0B!0Yz-#dO-1CiktOykgi<=PM1>f}thK=+N%L_Tw%zi3xw0{WuKos9s|>S9x|za0>P_W7^GK&bLkAq7C_6 zfF|YL!J2QA=w}*M+7cn9o0?dl;Cy~B{&`q5!>UuU&03aY2X@nBbI)yiH^LI)W!M?o zCPim)6k6C>?$SW|6UF2g@^xIJCws0rzHIsr;4z49v5$=o{8#1o;z}J(@N8YktX%`f zoQ}L`He#vS-8nhZ^z(h?MpMr-qX^s*mg0gM z`V|M*8v5079$MJLHfvWL&b^)Sl>9Lhd)IAxQW=Mc##abpoL{6je^OyDr~(i{MSvWi zN}a++OeV^upuNJt#cY_W_R<~}?mAL2d3u%{N?bqC;&L!bF}h;1TwOjmfKl5nrrfsz zYoXd-l%hbrlBkW~xq9iwRywvny|V3i;p`O_k@`*4IaTdenLhbEO5me+gwzSDf&T;a zZt1Zj`CJIQNPw6a(olJ5$TdziG1h{j{wMwA(`}92+u(=BX~y=bv*+jT?XTTB|J|yo zY_DIcI2@JD!_O-sGNOOg&k?rN;JApr>+;3-+}?NAGAv7_fzEcVzr$q#T7{-IK}T%1bD25aFHrscvCV`Mrdgr*XcmD1Qpmt! z3b0JI}ywdVAx^-xS zA|=5x#e(@b?jJgp93Ee58v~`nh>GBy4H3R3EUCs(E=8GNQvb!_`l#YcF`>vov1yYz z;acM>(YO_w1$lD=L4Ti%pN;@5QWO~_O1b9mkM}8e<=*TFBq@t2$9kr}JuSU|7%BH$b(b_6=SU ztY>+q``iOj-wuBSV98(+h-fyZjKJE>T<9ObQT+(O-@Doz>g>& zxAl|(qLQsevCShdke{J>1YnhR&s1R`2}qg(s3d0X8^%2>=RToVNHE7OF7)?5v98t6 zB~s>sF6La9o`(tpvj_jx%>T7EZut+UgF3XMJIJ8=<^Wtfwm=4!cL02 z0rReTU4_*Ga79kKA@0v<9P=uAQS@~gku|zp9-7xsu{VjbbwJ``Bb1@@$xBj|~LKa#lPnuqr_Y&1{dxM8=Gz6E{v#ZEvxG%vESeEgP2 z_EyXJ13T0Ze6%}Sv_Pjo!;-?Sy`~}!uVKB|?`Qo|(N1K%8(9Ah;H2~$;3)hL0LMG` zz+I@JHn^daZsO>rO%MKx3`NIw%b-XIEB>r-g5a%|i`zpKLcoXA4*%VjQFZ^_fj(RW zM?xP|$es(~9;fY%ioX=-1`fZ6}oTaV3pCouiO%oEAl!| zDV$JN!S{1X%cYNcQ9h4QbmrQO0;Xb;`JSw`xbkvEb(Z$qwXF};3wt#omK(7IceAZd zFyJVFMJhj>=fZduD-?hKW|?_D9qDxpsehEvvu7$@&BQYZiJR=?5cIRjKKGRpsZfkk zsofOg4NftL`TRK)9fGR%lJ^m-T}9Nux;ferda)H6ygjy{noCBNRDUfx$#bW0V<{dt z1^yl5VjMe12?Q(#E_Qb>lr$A_5eLc@1cUJzfQnjLz9L_KT$eY3txXNqiA{q!NzK9G zLyLY@auk=b@s1h44rEl^1WiN;i*xmfOWm>uu}9~5B|1ZbmBqkdk)S5b8Q??3IFu$e zXunJx$y07n2~V^h9}NsYduV5F85mcrh}71B)n4|nV`99;$F+QuG_^qg$yL0jZ*0K4 zI5vvU%38~wSrITe`aI*qZUx{pR|vDOV`oW;vic>pRG~+uNj)|C<;C8!;@!r6k~SVY z!`MyLsJtlh*TlWYSxcBkol+coZ7>E5+(hlv$qGBnOLn&ord8z{mkN1Ox9~*QuZdC5 z7sHm>D8qL7vK8{=9s6I?)6toek1Z^aa8tBX6&FO!EV7PQUE+}2PU`DI4m>$7^q8zH zj@}h5p{EQPZ)FCA_mFbnfuR zVhKoGY2&qvan`b%YbG5(CZ+o8(=v>?x=p_0H!U=5Fd_4ejOnQFeh{i5Kpy|g>yd4RF01*nk#l%!)%VQ)2d zTX8#Al!ak}2fMnlZyKf+mlYLDq!~k_TfV*FiDdQc;ELo^qflGqfA1)Sh@;PKaOw+8 zC8)AZAH*su1S;%Kqu0O*yx5*lG5*HrrK1B0L#BIn_ zQL#k%`wbRcZRwB?>n#aKiR8hj;mBBamf^x)Ja>Nlc2_9jv zAZ+bWmWsc!Y7H+UV>$DvcZLV$K!`yb{!ni}CUz+SsuRSgr$ENwW3PhAYRfKe35h<3dXja*{Rt6p@@geD_Hh)3J zdUahAydV>QrpLrv3Vt`5_I++qXpfAgEIn4z;tUlo_N#)!4g>lwNlzP$op^Hk&K`u+ z6irnZS?GEG{@jT792EP+9!=JYx7y)V$;T)X>Yzid={K+r%;|2hohb2K(HqO*LxZDq zGI#=1?h*`w5_=pQ6ryp^@-*e3I;-QO{KjD$jB4kODKAA>kBFNa5Go}BUwao$qNpoU@P`jf z=>QI*diQ)*Z++Y-OneXRb_z&a5h8=Bpf#*G@e%1^PE~(EFlB+LOs--t^S2gWEglV4vNaa}mR%*cQ$F`!qh{1o2dMa*0ghWX)EtSAn`hlG+0S{%WZ9J(=6 z`~;L2vpx%Q@HUQ52EFNq!%oB;DUE<6$hZ@b?3ztpdJvGzQ{ecpctP@p^3V77jXeWr z`MAKqT&iKf@c;SVzLxc;k5ZPF7G|IRe1+fFAUR*U?&RqKtMO<+DJuz#Y-G%L5*=dD zaBTM?_4Z!4ynN0ett$TL1AQ~-Eq>8#fArxPnc?6QU<#cmUTiCe%Mfzd{j1-rhiB)L zZ|iy`_wn84yEpFpeTP=yl3>+B_NL#}nb9tQW^?W2HsWS?$FttB^KE}>?==1G;q2}4 z_1L}bC3|XY-Qe=+=CrN48s+RP`xf+S|3=5EkRX#0c3W3R1#wgQ`u^-I03|)yJzXhV z6J^ZZh-Y=kebShh_ql8FWZ$H9m1=N5;^r)3{iU=u8Og|&B_j0d%@rm{_VUig*LwFh zn!9?;)%kMP@~Li##?L{7rfUi4>HWfOedStfUo^~f)N<9jn5b4eJ=4o(kkPTuqKYw2)b-E(p7OTRg_zVSNY zSzd@wP&$yNC*i%SF)|9xTFD7r9a#L~SA}%B_PTrVo@HuCpxVKScMCVJA$*L*!+{KN zJ+Bv<&ORBmV7Yt{c<|3ONw>?iCNLUICMd`3P5E>x75|i1|qb-&~&s zHY)Dg+Nw91+)&Ert4Cg_D!VGsB}B#-+U9+oEnAmPtlH+uz1jJR&L{Hw7jqN*}7Oe_WZqJoq@bzTR$<)ZL}>U9+)0yaH=qZu@?% z^xmDZuRA_cEUJVDXlZVCU_UzCee=*JaxlNJ?vh_#2; zQg~%Htap#&NhPLxceLGlH$r~9-GW1f!zl97;CWx?^IW5(*xn_gt%UsgG-T9NKEbWC zwz;WPTpUD_#8OV8851*h^Ypa+(0em`IX8nm;Np#Dw#+ z%9p32k(;VvpOpXyFhpfDL}6nkITx)oHo6Y4zy59NmFO`G6EK?Dod$aqXR|PwsTpxxE%i^+m+)1JdOMu<*UVFv!2gNT2 zy`dzYjE_{1Jr+NT=N*gyxj%AS7#)$Sj3CzW5#O|ht2PWLg$8=!e3E;k)c`|kwF$@w zQ+<(NqZ|dpt4%41e6ncp7znmK;=}9Enm5AM=&_iajPCb$v>lqJc&5@%ikq!YH7po; z4p`joiKQJ@j3ON?nao=Gvh{+`EKyLxB}O4F=I6D$zaG^w8h^3$#b%YMS4PC8)UJiD z7-3p}(|zq+$%JpdZ#iRcZ@$G|k4Hu`Wq*5WT3$>r4;BA*@6=&b*KXfa$IWl#^Vo@)rwy(dx$Uk!CcGa(utP<*P2h9!gh6l-h@R z5-OGZFciH;dP^Q&n_>-uw*t)peBxdQVj--_-%GAv4=hxym&v~me;d2oB+3zS z>wL7d2@F|H9W+6=0-7K_0Zqh$CTgTxpdJ4WLAU_d4EB;n&_%WLJLq58zk@s`?7<0( zN`9j>{D%Jn*np0Es#z{L!*T(e^&O>*y{(6Cg zY~JNDQ{@xeg(V_@cagT6#%~ADr=fd$nWMdT7?A|BA|7MF4L4r5$5Z}RpSJ_s??<+` zT$Mw+Jcz~aV<>>QHlBVmSHU*5nSaTuB7V2iD&o3(j6@tc zx4FD$s3^p0zBzG2&{X~s6JcKQ+REIqeRCP(`*Y-A{&DQ#$MW^Fb?t<{Gf~)8h+69@ zZ^on#TI%zSMXS#XUu&0ph?z*`!kEGB)=l3?%$QQT{deDuAO4fG?q8F+P91Od?X!WB z53^@e$pWow;-?g&Ym1ee$-b-K?v)0bD}RoB2k5zgzQ3-f5l{N9rbU~b#(17ykbHmH zdS{wr#tDinU|gHY%#vwr$(CQ?V+xQ*l*N!P|Atz4zVo{qMcM z?Ut36)^_^nz0bAg9&@Zc*N7~Gh9LgVe~J0y2X>hJz8B9H&LS`FNwle8UJeGpR4_Nk z)cayd6wc7Sa^TVuqKO>h`1QpCWLzN++9l9ujWpi-))Xh$jD$I$*#OBZ4{O1mvsf=C z-u*X(RhdJ4X+W6uT4??7IS$q4!ec*^*zwnk)pfUFuy0 zxCJ8@2`)Vd7QvS5pepN7%YAnO_}GZcH*IXHNQg9oJgQNL4|;>vexQW+h`iLn?0;Q| z(SZ5rl(`p!9EQnNCHE*q9Z2dW_plWVTn-5p*%Onn#F_i-sf~D4Awi??8|f(GS#hNk z$42~36s&eclnn_pAVVd#Vyf&Z3_)f3SuruD60Td+=|){>UQm8O^_C+HL;kU$v}?$1 z`5xfDefJh>v z=I~^O_e6cYCU^G!8+HriD;4~?QL_TCV$T$D8?Pe!MScJN-A${kqgyyCwj>MoovHgb z)~T>UKYGXn3AtOgui)aF@7$|wx-VjYtrd^6 z_HHs?=Y%$FhV9Gjv^<^?_~Y^URzrPIeZhuP^~rsKnhcqh>Lfx)RByuG!x(e2V`udt zYajbAUy;)LbTo%%MQP*5X^$TlYbhB~GkUj{2JD8QUwG&O$_`Qn7jK(uoOst%15@ow zOyq)q`@ovk+@ORmj~JI@YjGtq9BEBSj||T2Nq46gz*s7o^qUT&xI>qVCD*fM(I zxZ?bX&=%OcXg_&RYs~J5uJgLu_Xy$)-hVgiWwvNC;(>j3Yb+S@ipw$oI{C@MO<{pi zF|FX>dhHHLH2^Syf4)kM0UbhhcJn8hVN1dDF!J|6i?AOhjVP9%fva@rcnDpsD zrWw`s?NMjh$cu~i_~XqNa5>7Wl*F22Rk7kdCKp1XT%`6++soz^GfJD2f+?}onbIy> zp7iDwi-C>%`$l8u?HneSs-O05v4`VvX*+4~gfp%d%bTC{jW#iA&y>oJh-xywml1K= zg|0r7Z)nH8`*@g@6pAWfYcA&$rFJ!0PZHNz`cCqz?Bt}P=VTH+>RiuP()yjxkCt_7 z$HnSg%zG|8Sih;GLGrqu9icUKHcz^lEMEOvBN9=|=~9hmnjmT?t-Gv{xyJ~!Z7 zZk}LXs(_x{5w3eTxvk$yj@o8EJ41urzf&O$RFXHi#wPyK;l{!1`0n&Q;EcW3-hHA~ z=$oxdiUv~Hx}(cu$${;7=biExp+|Qbpixxcv*IGggLq2TL&aC8<0(f*>s9LYqlO~hS!B7`Sx=j!{h%ew>G_s8_# zl#!xCE%5P0iB@z%D4VzY1A9VGVQiiKepfMfO8G-RPKq`!J^WkQQ;LI^XZPM6M9d-&^0URaN%nU_rw3!H3#o1KucL0KS5BBI|a*F59vi>uwcJ zOf_Ib+4EwQ%Ohwg3G3GI)8Ig+-`le(FHuvNDLWpJMj-c9fpvg%ehrK{syQ=<0`)Q% zotKBD#b0N%{ATg&v~h28TcRPcqV9Qs)gaV*$=d!T32C7dfn=Nx$1K zJ+*q`v8uY~YRZPNOkXApoxQpmW6vulA;goy zz3}+Vv~HV+er~W`a6e$Vo8oHuo^;+e=qm+xleyi?XfC$4^}U1cSy9!Osm>yMp%Z}V zDaB@%2O~LZ=U_V7smYl#C3JG)r84b1ja5u{B_+YetmN07!;sl_##FZMd*sD^mUw&f zz3eQZ*-}qBt+WhT{A$vhBa5n`az_G8#QNpcB`oxCkrpcJ>cCmY1N%H4&@eiKYr2{3 zv!6vSB1om9Y7@MARB3gbU8+=*vdoA3{Rmm?>a}#?8|_z9qs!hOX1>!K6@KMy-gIMH zPq`MQOZ6{cyYRob51?&NJ@BWlLJ!?r|O zq<%X0tJ_^>&&!-Sb;$k`$Q$U_max7duyldBPoNCLiaYJ|aj@Vx@2#8HKcp3Pp_^0v z9d+4qnHX;NJUiB~I(+U<%9ig%cBMb`;t7e7j@PxkE@?=+oQ%d&`ZtVFeAjG021!nd zAuxB2HrAyFYJVDC$EK;L99)O8lV{ZR++QPDbd)u0PKyESAyW6JhaqbH}xFg%H0wzD8R`UTLn^_b6 zKg|JJedS%;*;hk70p6lWT6Rl+NlkTh_)F@~($#Lh=pktiqdRNnFBsP`B}2ly+tCo4 zS+-n@fKKjf$9;M5CwoUX#os5}9s{<5KmY&P0XU-W^S*34bGCD1A%h2aAHcVBufr+j zxH^!n<{`@za<9r4`d!NlI-_B$Tgb6sop*C(C%VHGY~jTCGG&|FUmO8_0|65NPTi=*V>_ z<3N-Cxy;#_LbN~RH=^|3?(yr+v&&PqHOHGPYsi0fV>J!9?*0 zbuMW|r5QC5o6!)p%>p(3E@NH~y1o{=euht~B_VG<{x>%Hp3_18rUm{X0v1=K=BpA= z97b@_Wt}Ry{+!1Znns5-Z<~8V;CdGW^=9SN#Ux5WNR-WC3h;^IDYR{+xJ|uZM-Z2` zyM?No^SOAHPg$EgnKBUdOq%D-!@RY!ELkFBi8!EK2O+7wik=8>Y~%UQ zv$3f5v`ij8YB|J^xqRwwxipJ8Nx{zZ4K=Mv%kh$mM0Ti=cBt`h^C2?;QuMI7gFSF7 z4szhx6L>6ycbJiJKy>M!B z$EeQcR+~oW%D$%s>#&7dQJ9jn1y4z;It82$cKd~skjFI= zDI>9GVwJaRx8rLsS2`l6kE9rJXGA2|!GluwA}>FTX?27dyr+}qALIk z2+Y!F7rY}Db^q>}eh^`Mp>ek`7&_TVb5RHkN^w-OasAN5!q8+4v*)u;1Q;eFn#fF@ zUnpetdg%3Km3mg;{n?G~+K{8}l}uz}bNd()%lgxX!7wOfAcXZ!jAyFhApLU)2&|7B zk)qtD*sc@ASAg*U4v7N#?~oU37Qm2hmw$!idkS4@u=rQVY$y~m;qZPW`Tktx$r4g9 z7i(G@Oq>nc#~2imD3x?(F~eDmQ3QJE2?K|+A(3p?6^(p zH(HZUv1bKJKs)HbNYEn4X9yV7wE|ejS)46;^{Y%ZJTesa0+;m#I+nXSI~Y_~Q@HyO zn9Gd8^Z~{{9x(Wt&VhQbCIUiWKoDm7QB)L$c(TQkqH3zW&W~cCWI&7^lah_MXf?@dBLU?UZHQ7U0gLKjd zU{Ez*$MeCTYAJKzP(g4q14zqr`Q{nEQJeN{|G09N4N!mRe@%|?t8BqvhDpw{QZAgjt z7DUp(SUIC!lz>kvIPC2qxX~y9BXJ0PhCj3yDo{ZE3vh9a&#ed~^m*F<44Ci#dB6aK zWWUDloF1RgmuSb^ z$RZZ;Q&br{(mI|=-o|u~8^@wC2jtf1w9iC8$CTtu)Ep1z=|3H~9?#aj4peb3R1rfr z4RjYfmq7LDPh?N4*O@9BS7|g-A8k!(2m2v^^rC*~`^s?ijyKm&bM(#Oh;Da#up!jO z#UmyREIN!Xj%{AfYzB|*bdC{s8WD(7!s|cL`1sy?q3Zj6ABs(1&3ltV*6(B0{}3R8 zK1eiH1sp+9ww%#tB(2}2AjsJMl6flb_SK5IdD(m9-hZ4@h#1Arz)HO)_-SA<- z^RTVkQL?bUdExE$ou1jAmiKt8@qSav_NWF-1g3q0tJ~?;4_?iCs;57GwD{!i@iyx5 z7QmmUAagF;o`RpeR9a^WFrU(3qiNWqUr)MwF=HIO2wU9=Uu71e#4|9})-=yFu#7Hn zSR{dw&^V!y-O+U`g{sRNy7*hz>Q3+K58xF{r*+dPx%Zg03S_!S^fcW4UM-7Mw}VsX zho@jJ62Wk#X0NE6)tkth!Duj%KO962h(lwsvtz#7_% zNr!hLYc+J?F!-M+ovXy7dlZ?;3?A!6H!m|6;vR2fY@a{tf0Ue~bo(ZCzu%e)!hCvy z;;h`vFXsA6>7q>hSb>xLT&ysXyZPlU5o_-eh&OzZmWLL@%*M#TKEup0I@k6&VbI4- z&f^W}T6$JbM%K;C#?P0UI#0X7RwF+pv#6f;#DyL+eIapB1CO`$DNDFtfS`eP)1W(g zZkh^tgNba_uSl3dY)5>mmlK$vsm=cvJ?BVA@cIM))Z^fXD@)#rcyU3YefoHBc3UL1 zo%XoDcL>k>Jk*FttDs^1MfsciuE<~z#Un|_t+%M4mMjhEAUsH=R*e#P4QluaiO=tY z6(3svC2E;E+k zbxZrKF$l-7{eZIeBEc%udSVMVN0}kXd~^xHHu3*dISe~Lt)KpxBgoSHv^!aRdFt{D3tjF*nVDAs-=%*GH)b7ncxOc9PIm*)$R zVm{KnQ$nk7^W$(?l$mo-C^p1-1R53@jstpyYsFORFiW6_!oM*7CE{FIl;e*GAglkk zh?rrqCfOeSzXh=7!_FhncN3X!6tSJ7%v^@h{-Nd0L>GW121sn~yOYxAFL5;gMPU{`AA_2<#sLl%8mBI3{Zr?JV8x0s+xK}s}nKlr- ze99OaICol(%qvGUAI4`CHBxqN2yNgd46C+q#M=(S^j@!2QpGU1+YlAK<`ou30Fx%x zCaLm#soQNMB&PMgTwV71c;Akh`6AZxDIP5Ehz`>4uqD}TSHuw>J5$0D-i=4$tD{P| zir2utEinZ)MH^~6|aqsJl|0@mjO8~UT=pHk<^ZJpsVxp&H{il9e~x|VoHjHdP980m>XkB)4Kld+Tk zsJNqJBm7&1Cup#_zHRuBwCd~o-K(Oz^1pPb(ggOapOuDo7q41oXx?RT`S+(vp zLTLNs3*ufA|HhDIJ(oFc%_|e#Y-iU2(be~D>j#Fx^!gj;P6L2T>R2t&k}nrezyZ|S z8esJ1xr{t$l9mQO#(LJ(>K-4*KGSRx2 zAVhd5Voo_gf}x`TGr92sEoLoVq&PsT2vYM6$F0c>FJ-AY{k$XysUY;Wvzl|=ho5n| znFRsGhKFP+QFG}24#Di3MK~vljntidlnbF~qt;ZS4aHQb<{#7s2?oYG%;v@m<3Fg? z0h<3p9l=W}KK~1~Av9rNAyeQX2g^nq2P&MC0L5Cmdaqo4S5ckbUlY6`v{*TiXO*=W zDTtv%A_F>{GaH5x(`FcLQb&Zoi)kes5qB6boKxF>IZlaNr&@^?IO-pJPxPQ<2pyW!qVHVLU)^ zY9y!e5p_*|iXOJja43Q?;xHa#|M^&X7UN1e2J)yXGofoZXS9A>>9+I#CX0t*^WLlX zNnImArjCU6ox@%)>nyu)4{^cIR_(;+hUZHV4>U`KVQe>RMViXt%)~I(Q4Oa0UFhZ8 zN^p;0M6;tuv$f(Vlkx8mx=2h;y$nDp*2oLiGoN! z4>J)K{IZj5HgntN-oa_>g=;hOCAp-u&@q}>ym4U}3H~H|&8ir@tg39(qKLo@EMAn- zTlpcrzmP;ExdkS&ye}7B${0$>ltRfUHh>CG8r|Z61nHSN9Z^i_fV@IwUvrVKUiTsexJ?6P5u^SzIeBKk}tY+Mmw+ zMpOb5^BAYRFhP|y+TtK%_S1lEe&nC|i%xx2bV5Zu(u*cPa(zmw+<5ofNmAmpto<_8DeGn05YzcYPv~&q=fQ_Cr)S+?@x%P z06O4I;8v-b6Z1&{leV!Th|Zk3h?WQYPo~y)sm2_r45_O+EuB)V!b+o}A~o_))MD6w zqLLtmQW7uKQ>7!S{>uX0dY}af@K}E=nCXg4dM0^Ti`p&sLQVG4P#Vcz>WZX;GTT;D zZJ_>HTi7W+{{@rsFTMwme~`DjBJW%fROh8CdGJGu!rwxnZ35SYF*yYj`P8bviKUfA zVq}~OV>YGDA39_~1vyQSooWCn18c$4(qW^d^aw&?( z#8D_<@(NlM{E9SN;A0nyH8$a8k|fT~#G-C~wVSHfcweC`r}H~d?pAH~6hWI@7QnH9 zcD|Bgw04eGI)t1*B(`usEIU6GiTT967P4Qwp`;^hk7ZAxq~4!V7-fVthbOhUX;6IA z9)gX6!98kI`@T=>U-tE88u{ba8B~K%cHB)JaY_d48vQaa1w(fp1e64ySV&fxj{cPG zHRFt6a@rNenq(=NdMSo_D4)YSxl)yUp;Oh_Ea1tkkrtkVIZaS&&EK-uR1h4+jxXWu zo76g0bWZwP15_|R4EKuw9Srwp;fsbJhV}gh7BN5F;HKlms9VhS8ktD$DOqHDAqD9D-YlJV9GwdM0r%9XA&vol= zYa4+VT3J6M2oIi#scWNCW_zH8D2;C!#54t7QjuD_C#e>0?{n&LHBtiJ~><@_+ z`^j@anv%etjfr{h=Kd>~UBmNVF%u@X3Z@T{V4=|fo(to^g$5<dTs!mdloetVy!BrXm@oI=Dx5aEFE@w4(uS4qvo}4;xl=mm#Y4 zjDUtjk$q=M`=^k*9yM9sk3-?S2h+@y0xy~WHA9yNY-Z|c5S5E06FzJfgd!WDs==-_ z7%{jOSGM^E2{h}Q*(u_eY0^Cq+IUAVq+CZV;Ir*#p&8;GFDo3Rv*5$hqNikeUVZXN zumSgfhb5~J)k?tlD=c5eLB)?020GsWR;grVOiR5==Stzxep|OrF82B`WhEA!EL$R@w`jPhHcEOw$peiG2m4qQ-?i73IWEL5q(* zy&-g36K;NCg?3}uwGxDHZ_qICuEg8mj8+QLRL$<@Je;cvy&#dyHtyN)WCG%oKXuRp zaaogHJ`%DjeynwmIYQa`ck{H*{(BFxr}5--j=qu)FO6hmNZ~vr`~KmgZDdFV_@k5+ zYp5B(^>nL4v=GoU-y)Uac`lAiBbIWIRbwLf!>DEAZ^9JkrGyw3+yBB zT7(NV%hetS&G(!9-a!(It6T_Yu|W0f&u+2!M)vOiD+rNC{1x;TdXY8q7ck2E=Gv{T zfJxd9(~hlhAz&b(zXJ(Gq<*`FHr4$Md~X>4FmWfI-%SzCw1yrJ^V0JIX}FMo9_hOw zL`No+2#c{r2&EKA)GzRTOsrGg-G5F`6N*NKuYF_Kf@0>jxy;EJ9h#9 zu0{1@G4ZV!BNhnwCCbI)|K~sdynC+XmncqHlI5Uo`KQs(F~7in;qD_dCRG7%gUCes zdAj~8-dH2cW;7~e?=h6h*(9D$zwmlX1VUqdi|J0|>E zP<0DUojLNH>~Rvp_n`*yw_`XWwcUnXc}+r0gtzzQbTKe4ShvvATHePDe~7L5tNf9~ zLRbWpt$bSd!2&0V${#%XPc1$Hzk=faqh$VA&k#h@;?+6@?edJOTpd3ZGHx#7frbGn~O?&Qrd*?QNI)e+B-M?CKqAe&Sn_0Uoy))g14%ikkA%PeTfFGQ==;JslMvD7@J zoigzopFv9o0_PP~Y2t&IZFxrmWWOZ|TQE5l6oCz4QzYvw(eImP58Z`$?bI8y@rOD> zaXZTqmtI`{KX2 zG49d~DYXtOJ?&4h7;039Rv~EM);2OYR&Rw7&c=Lw@=kM1#XVTFvRHqVyiLx5fVg&^ z-8|x|2MOzt1&2*r&kay@%_Ibrtp_XuFDb4vPeB|+f!4)K(=c=Zd$u{x%-6MuuVc3a zZKmS>i<``4p64CC7q>y60GBU0$3U2}KQLu~!{`CZo|UHv|NNg$_OTTTL=mmacE|c& zFc2CS;6m(f%zPJy)HT>J^*v&bA(QlQpocsSX*e5_4@5TI}Rp_E^$l|n$BKE)N ztVe9E5yr0l@bRq9!2!60y*kF&31h_~S+~b#J zUvNWHQSL#0%Cu768dJqlYKOGxLN{T)ya|2`$t^C`SoTyI~<{;QFOkX3OMT=?>R76Q-M!MSUlg z_;FQ(3`oFj;!;SnRvCciaK>0})92o-#>JJ@WkID)e*ktFzplDiQaSd~y@QO~S=$6I zKag%nd+qIkc=5+KBK{RP0s!gK9J9nzz5gJFKwyav)PfXep<3fnu&JHLRM7~vmPpH_ z9Re43PGuZ}tOqSpjghDY)Q-l^-Yhh3Q3kt}+!Y~QH)}It|IAX%Nakm&*Y8hzLIC}v z-(tuVOx`d)G@0)QJ|u7@zCCiZ%s*d`oSp8NSUzfe>|WI|#1qaZjm4dU8~bro69+>+ zsYt^;_Bz+7oKlco$Y|JR+Qxa>`_nzo={fV*UJ+JE z3_D0#I17VOUc=fgyR%(wxy03R&o?EIhhkKl27SgB^(>IGEE> zA2hIkS^I&=ZbK@<+mX$s#!HJ}Wz@q$pcoTwj`5~eISaC%0K+e5eAz&Hj%!Uk{<3FUxCShYF z6qS`5bebYEi>!P}uMSfHz@)hx<7guToSVC4#1qyVtJdIhbHh zuxs%NA~fije0sb9?l0hd)gE44TEd!? z)<{OTxSSomgu!isAxKV|vQkM&`WGiIcCTiCUK(oWcpK^>NqCU?-1#Boq3|5`n2~y0 zMSyvcBSr%x(+ar=FRLgoEp4qfkkXQ7$lsL2#0XF{0AjAVxJP2eUtxgg@HeAbtko$80b1JY3-l={jg$*tVo(;y$a~bY)LziP z&ZUc1(^ANx@e}UHLYU&Taa1@1bn@XAfACnqiu)>Wi79P>SImihD+ZjEBunS?;0shf@q*o z)lX-HCtc;qfS%$_K zAP(7(2Ul)GACcJ%Ccb9zs3e(Tf}2%hBSRvYJesEI-sk%9-g>FCWQ^9P@wvE7|2Jd$ zi-7?$#4|A)t;4lEJ|+c&0P)rZjZUpY0fZsk58Z|UabOt)3`;9*mS&2K_6|2d9C$WI zT_Q#$&k!2%M`h2R1SM+pX(1zFSxHfAPmxIi%iv8a2rNlWPZ{E^^FSn16zHMESqn{< z5h$#R+XNU*Q@#BHhNxmG0SGLub`*w2W(H-xiJ&V6wws}PiY$Wv5Gv-+_E351BA?a; z`D&hE_mJ}RlT31t#yHKx@W0gI2L4eeit@kJ*&+bd@xb)>znx?L2h8;F#U;VD>~A1@ zEL`aO^=SEyf0JTkxV!U9%6a|x9}N_Xgd`05z(GJxVE?P#n2VXKtChXQU;C_D)VG|! z^I-Julo__~nZvd^$sN$1QPgkCQ`rI^5&+Wp6~yj=I}xEkVTXJpaw63{{pu3)?)h6^ zugmb50&_N^dp=@{u^=3C;5>*JEj=CA{rqZ~?W++7OKNx|3$39bpFi%`&iAVWK~6(P z>kLpY6sn^mpY|5@lB5XQw*H8YcsPhan+o2BUlrWwfCrbF(UQYRO>ISqDW5w^?C z@#p##vMb$aUd9#XzP&p!_sA9$T~l1dnCkOsL>sqt`*NkZ0@&APeY4SGo1 z9|7(^FdGi0FRq4mqn&>$Yt&(#6rUg@r&8hsVGn00#77D`z6KSou3_VJ(Kk4S92?DL zzf2?YQzu|~<%dwcIA%jKFLuSmXJQ~6i%y$+#6-VPQ4(J+5{jHa;$$iDXY+tWC0uNx z!NcG~M)P_h$wEQoTrI{>5o8=u#>hk3D6{_-i`fxT==j7kUO$@c8-%a4wK}T&u!hjjY>QD|e=puz}z^ z`2YuC@Q@-AV#3u44wgAc%f}loqBikt`3{3ECh_vz6pEXB?`}vsE6<{*9WjwYFvK+K z&^ptt=ZtSqrR_ISix6)nqK8cbN%vebg1S9FAX}m!&!OVR1GJra7iZ#PFzCPu9tVIk z<*54!rTH!ruO-;c#hkv7yJrU=nwPw9-R}3OMy4SAQDIi2?OGRMeRiNW$aBq5QIDML z-BA&>sRO&|D5=O;Im^HG0NnK}*do7(YKb+f>FOC)6jmldG$MiqDg6ts zP2`$qywU1OlfGwz6fj@s*;r`Wv>Wi7N%70z(F>?df zLo5g&bKbp!hlwf&rqQgQ6WMSGyOKp(ksS#rSzCacp=MrwvTJeSbUjd!o{?5;`{B(n z?MfH?*>BGVrM{nkxnxTGBW%lLlm><$CI&0>5-#~_qgcNZ@&)O0c+4=FaRpnW^a%>^ zQOOgy(fI^~YnlY}_^8I`)b_zbIa`22C$e&VE6m#0S{kB-nA-Yd_Q@tt{1wk@ z5lK|WnaTOM*3Cl3Q|J>VFs1IXQ-@g?Grx?xcVg4z2PvLV0iq_mW@V>thL!QtWL&Kt z09MZ_Cx=z=0+$hkucBql)W&Uy!?V96LQZ=>x|4g>`4-;S9BTLr5c8QcEVKy@p1!2UZ6!RU{#ku+)9GPX%A7^rlkq0LiB_}(Ds z1oc=O30J}$3%|ed+s3h6)k}9h*u{HY(N9x=2EyRFib{c#@_x)d8-F~!5o))6VQ8ch zqoZs8(U0fIFbK|C>~qLZ{L(WOYC;?Hj3OC`zLSA^wAsq6y=YF;uAbVFQ$+>u<6Z5x z>8ghr4LejxWjq*z12<96mF9fN#vnv>Yeu3O%}F>Hex4Bp(%$HT?-?EiBZ?QVK_-Q> z$JeuyLctarSj8H%JZa|@zM(p9#2_x5%%)?mbUem#WP^Wtg~N&`RUlSwW6u5@sZ8&} z4{;VQ-Z~O^oP~;whD^4mGE3`?v1+XZ-*^4^V-7QS(E!8?dt7$M2Ug zZeBfzb+r|`+yd=G7p0LJUa;(WCZ2Ar`03*6PTF@9JdBG$QQTwWn;_+A4=FhG!=Ivx(B-V3Ixj8)g~J3xXl&oulv`Wo@g?KQ2J z>Y~g`zE-00>+Sz&9h)pd);DbaJk(^QVB3?Q5`x|Z555Zlw4%OEP!(T4EW!e+A zBApuG(5^?)C^;XG$bYAV9wU1e@aZ#9zFEEqBLe*$?j-m2qEYDR={ zmk=Y16a<~PLSACsvB}_x@*C@>Ang0f);!Dx3<5@p+Z7my%R5m5aqq4*13?SyM$1r6 zk`#R=vIdWL%CpL^>9THFoVBoGyNNeKFBajjK`;nsQtI#Oysu3%tdi2?2^eAwg>rL` zLqa)BA}BJN%V%pIIQMEVkB?JXR#ugn9FRBqb*oou3tiNEbFC%f^v@WNzEum-((zy; z9FU2wQ!&n4Qb{SLsR~WoXRde`RGHeLrMU`=bleyCYUuKxL>Fo5Uf>@qF!a5K#X zs|*TwS}hg_c)knyDc9lw{$HiJH0 ze-!EAi@LnG+x_(m2f>f~FlzC3M5r+7O%U(!ApTR3OGO1bgJw#+M#=(k?0pK?A!3(P zQAno1$Ka}gYdO*Yaet%*LdU!bW1aAJR?l+UmW##+sj<}1_9HJm<0$2Yg6cJpwqzXX z4f)qwu#Pnf*tG!1KE-N#x?ry);bT0e&Eg9(`4l^{BDmOuI0!`-SL6b+SMX@g4_l)w zC4eNDKz}~CQv)fq2hH?p)>=|*F4iQIs7%x8%GbGqV#gu*<~mW+&dLXLPD?Z^iT?t8PTkgSy!Y6@1K)O)4IhP>~Gcg7`XHh$h3GFc^vwl*Jx zbHP;V36-0GDI9jMBsKTSI{&gJq~3RL+9kVToAL%|O<3I#eCy}i3T-wrYApM`@maXD z%8l0LCTxC*Yj1c*f-PXy`@5$C{|_sR@-oJ1nW`VAUaOJUe)nBl^KP>`t{eD9pWR22 z^EY%I{B<)&&!*Ok<}C#dqnHZ===-d{Cr4{W5U}GQfk})|YqobWAr#AD(zgty+cXXr zk>u-c=P`bzGbn%PJblARO+~`yeE2EJM~tDf6tS{Ac^pzuc>h&pKQ+0#gKlYQg}OxI z>dvY{DFR19Do*Ag-RtnzmBATmO!1&x&dXtjLaG$4d=s7(brTxeVL6LDKY@*X2rvvf-8k&O(9S z3SQ!NuEfWeJ_WAj_TFzAP%+D<#(Z-Omg@V%q1jyjTD#CF|PHGbv9en@}L?ur%<7BX`Sr@#n?az$v#dOtV zb&$q%T5yohZ#P1szbi(0)2R1nZDkMD{n%$J@R4T*KCvI zLZ-ie)}moaw+Mei#Vt49R<&>R=XU_CcUJAWfN^nFudeL1fAsaBt?V3CD5@0rCWh^L z&8yKlq38%P+9~W$=P4F@$+fBBLyBMb5gmim=;jL^dcv`1klKN{Tc7*({w86p>g4mU|usAhmyDED$dmkvkk@r!FIaT*1C92@~g~t?nLx+@hV|6)l^O`rIUvf}jSkM2l zm%#w*9LMukr}qo`pSf7BKi_H@@BGo;ow8Efy@e{^xNO^mA3t5}{E(~KMX2KD%S$U${7)SpoVd;{*8J>K zNLrnm=_OdsL5p9mi#`olcbHn@!;dZc;In+!rqA;kXlcY`s^J+4g2N8DK_>VKwHFu$z@Ps|4H*iD_9OJG@&7!=k z%d5#%bg2uyt-gW%b3j|V2S=B`Ml~nC!9IuuL;Oqc;NAWN zYd(Y}Mz|CRt%%G$=H`#*Xw0|0->W|d&BBEI_h~U3K-QY z{({i#?mkWq@^QXeK0zx;-i{#3F)|)k_Z_FPnnfrkB#Jwtql}r`)6H&+=~i+ndu}hN zqal6#i5#Jse%GBSEV?Zwv}6+}9I9%)Zdu=PSn?lOz+I)zuWH;*nPy6#FI*Pp*w(L4 zWz*F;?DqAv@)VR>82g-1NtyvKS3V)zwTBTk+auv0NZpYa6c2{K1h!edIU36*p?}?{ zlKuK0tF-vJum~GqO(p`E-Ti0HVee*VY~~EC%KXXhW;D0#_jz!7cFKekBy?LMk~knZ znhS;1^f$xUPeA%63EqJF+IOjpXj}dm?(o5f)P2pH53T*dIECq*^vcz!d+91h+S40l@az3TWFQ4 z{GwMjF1Ulc1-ER)EfaO8?z(X5@QU3?c({^IOq&ptx{X5#Co08#NGeSt4h_Zm%h46} zdZhs;mE{6fa_iT<#%%PnSmEV?yt3Rpyyq*)@{rt= z(pRAhTwMzOJKr8M{Jl8|V3}$CGJ zuptDwLnX+^+@Y-3@!~I2Js^Q3#mSIE|b3=r!weXTXUAr}QjxpgE{CCnjXDP*uB5W#}tZ$1H z@>00jUi}#gU%BJrbC3)NfqjxF%2(Rw?6ss0Jc*xs~2-H_KLg)Ow~wW zwj1K~h3a7Q_-Z;!p>W;jdyLZ$g*g+fPdhVwcP)C{zhQczs0@0JYn-5tl{hX=g)@CV z?cjFZwy0UW!qg(k)rQ9C+eZAV>wzKMllEiTqlzX1DXE!5NX*c0mUYX9|gy$B)$ z%TPDoT0eq|jbQ;Ul(nHK`!sLJI`v1v_6PhwXRN~U6^kB75RhOJ5D;wOj0J4m{ns=F zTzLVnPkSRPTPABqGm9&A8%K0C48bmMZd$t;6dFbh=)o?w{$j?@^k7_8-%FFZiW%#i zLZy@B(KD%xzAUB!auQxZ9>WBDJ{mAoU9+7O=L7ka#f2rIQQ$FfM#-#iIR!8bz;8FV zieVLl6AZpxZmqxdX5VkQ%<_7l*cXl!8Vt?dp?SlyAb^{Bh&(j+PT9BAI`UM>Tw-#$ zf}FN>4DNy0fLS6;7B(#zYj@gqNbkTiLl1n#rK97IXS@3}FcuKg4oLjRVJLl2@y`)9?6FnAJEq z0rbw9Q3F>lp7Cv@dFpAVbqf2|NR#6@tkYS|Hwuiq)6|tg3)Nw=o zaIGlt0yRde*`iM6HR&F@YE&c73-|HUY*qYidMG50XB`!<0BIQJIg+TYHoLuXUZoW% zfZj32ykTSfv|^}dmco~IWedaTILh&RD-qKh>L4NS4)zI-lNd?hb3@D%{4S{0aNzU5z=+x3^>NB?UFzOpk<70vQV z5>Q#{c2w_o)~PEyQ>OLk2hR1LR{dA?+l+m>G6CO|p1E!75=_taDZZe3%j>GelO};R zy+@z8SH&FNvfX&X`R1cN+$Vb`AN%~he@?bE*&m#LWVLvg!S;qpfy(#l zRQWYEo1aMS`Z(=i>v_8?t&>W^*S_FgciyieL%n6|)ahCaYoiWj*=7B^c_;Z^&b_RE zA7|#svt%VgUZ z^9;{E;bQUW@;2&hQt9w*N@u(9enFK>e2Lb5bG6S7ht%|0X8h)!7s)QX?WthHb=8J7 zGdZLA=5;E^vAme|w6DW=qw)O2eGC)!{H%PnzJz<8@A5?#yDQ>enlr`R6X^YSSF$(m zUeiZ^rZ;>pza6%1{jryUTl`Y6d{BeI%>$QjR-8|EJufT&VM~VqQY#8Ri%4Nl)5)PwQUdjel~fKYr@O?P-Uf zP2rsO_O9}r_H({x)(hWmUy_#AD>KzL^V5_$yO*8YQ+@4C)1m4$N4HJ7WK>;Q>ihPQ z>W`|satEW|e_lW3iAQkp=~vg<Hyi@ElVsEgtskSIrMTs9a3vQhF;c-#v;V!Y4v8&tq&qq(5lz4MP zW%c(7oIlSME5AD8ymF>+`Zr%IfA3(e-CGac`X8Li+^YJ@itnXNo`rIH%g=(RUVJ4R z_?I=YNo6c(#7g`(?)Y}dKERuiNrV|RJkG)JeWrQD+MuNqrvh83r+{N_pl$~YGyugI z7^0nlgTbkJCGjDZ1*yfcpw=0>0hMar4nKfO?*Ye=xna72bOYltpb?NZKDcR*uCb$y zJ2(@l provideLoggingSupport( - SearchDecider decider) { - return new EarlybirdServiceLoggingSupport(decider); - } - - @Provides - @Singleton - PartitionLoggingSupport providePartitionLoggingSupport() { - return new EarlybirdServicePartitionLoggingSupport(); - } - - @Provides - @Singleton - ValidationBehavior providesValidation() { - return new EarlybirdProtectedValidationBehavior(); - } - - @Provides - @Singleton - @RecencyCache - Cache provideRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule - .createCache(client, decider, "realtime_protected_recency_root", serializedKeyPrefix, - 20000L, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - SearchRootWarmup providesSearchRootWarmup( - Clock clock, - WarmupConfig config) { - return new EarlybirdProtectedWarmup(clock, config); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedRootServer.docx b/src/java/com/twitter/search/earlybird_root/ProtectedRootServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..fc4c1ce45c20a98c72843ff34c1977554734ef58 GIT binary patch literal 36869 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedRootServer.java b/src/java/com/twitter/search/earlybird_root/ProtectedRootServer.java deleted file mode 100644 index 926250641..000000000 --- a/src/java/com/twitter/search/earlybird_root/ProtectedRootServer.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; - -import com.twitter.finagle.Service; -import com.twitter.search.common.root.SearchRootServer; -import com.twitter.search.earlybird.thrift.EarlybirdService; - -public class ProtectedRootServer extends SearchRootServer { - - @Inject - public ProtectedRootServer(ProtectedRootService svc, Service byteSvc) { - super(svc, byteSvc); - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedRootService.docx b/src/java/com/twitter/search/earlybird_root/ProtectedRootService.docx new file mode 100644 index 0000000000000000000000000000000000000000..f03bb8270aafd3388ecb5801895fd1c46260c07a GIT binary patch literal 37836 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 allFiltersAndService; - - @Inject - public ProtectedRootService( - LoggingFilter loggingFilter, - RequestValidationFilter validationFilter, - MtlsServerSessionTrackerFilter mtlsFilter, - FinagleClientStatsFilter finagleStatsFilter, - TopLevelExceptionHandlingFilter topLevelExceptionHandlingFilter, - ResponseCodeStatFilter responseCodeStatFilter, - InitializeFilter initializeFilter, - InitializeRequestContextFilter initializeRequestContextFilter, - QueryLangStatFilter queryLangStatFilter, - DropAllProtectedOperatorFilter dropAllProtectedOperatorFilter, - QueryOperatorStatFilter queryOperatorStatFilter, - RequestResultStatsFilter requestResultStatsFilter, - PreCacheRequestTypeCountFilter preCacheCountFilter, - RecencyCacheFilter recencyCacheFilter, - PostCacheRequestTypeCountFilter postCacheCountFilter, - ClientIdTrackingFilter clientIdTrackingFilter, - MetadataTrackingFilter metadataTrackingFilter, - NullcastTrackingFilter nullcastTrackingFilter, - ClientRequestTimeFilter clientRequestTimeFilter, - DeadlineTimeoutStatsFilter deadlineTimeoutStatsFilter, - EarlybirdFeatureSchemaAnnotateFilter featureSchemaAnnotateFilter, - SearchPayloadSizeLocalContextFilter searchPayloadSizeLocalContextFilter, - @Named(ProtectedScatterGatherModule.NAMED_SCATTER_GATHER_SERVICE) - Service scatterGatherService, - StratoAttributionClientIdFilter stratoAttributionClientIdFilter) { - allFiltersAndService = loggingFilter - .andThen(topLevelExceptionHandlingFilter) - .andThen(stratoAttributionClientIdFilter) - .andThen(clientRequestTimeFilter) - .andThen(searchPayloadSizeLocalContextFilter) - .andThen(responseCodeStatFilter) - .andThen(requestResultStatsFilter) - .andThen(validationFilter) - .andThen(mtlsFilter) - .andThen(finagleStatsFilter) - .andThen(clientIdTrackingFilter) - .andThen(metadataTrackingFilter) - .andThen(initializeFilter) - .andThen(initializeRequestContextFilter) - .andThen(deadlineTimeoutStatsFilter) - .andThen(queryLangStatFilter) - .andThen(nullcastTrackingFilter) - .andThen(dropAllProtectedOperatorFilter) - .andThen(queryOperatorStatFilter) - .andThen(preCacheCountFilter) - .andThen(recencyCacheFilter) - .andThen(postCacheCountFilter) - .andThen(featureSchemaAnnotateFilter) - .andThen(scatterGatherService); - } - - - @Override - public Future getName() { - return Future.value("protectedroot"); - } - - @Override - public Future getStatus() { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public Future search(EarlybirdRequest request) { - return allFiltersAndService.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.docx b/src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..511db6307be11a17e7c5f71f85ec9dbbc73fba49 GIT binary patch literal 37396 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.java b/src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.java deleted file mode 100644 index 60a02e666..000000000 --- a/src/java/com/twitter/search/earlybird_root/ProtectedScatterGatherModule.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.annotation.Nullable; -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import com.twitter.finagle.Service; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.PartitionConfig; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.RequestSuccessStats; -import com.twitter.search.common.root.RootClientServiceBuilder; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.RequestContextToEarlybirdRequestFilter; - -public class ProtectedScatterGatherModule extends ScatterGatherModule { - /** - * Provides the scatterGatherService for the protected cluster. - */ - @Provides - @Singleton - @Named(NAMED_SCATTER_GATHER_SERVICE) - @Override - public Service provideScatterGatherService( - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - PartitionConfig partitionConfig, - RootClientServiceBuilder rootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_EXP_CLUSTER_CLIENT) - RootClientServiceBuilder - expClusterRootClientServiceBuilder, // unused in protected roots - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider) { - return buildScatterOrSplitterService( - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - partitionConfig, - rootClientServiceBuilder, - altPartitionConfig, - altRootClientServiceBuilder, - statsReceiver, - cluster, - decider - ); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/QuotaModule.docx b/src/java/com/twitter/search/earlybird_root/QuotaModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..cbbf6714ff371ee6c8e964099b1edc29c46c09a3 GIT binary patch literal 37791 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/QuotaModule.java b/src/java/com/twitter/search/earlybird_root/QuotaModule.java deleted file mode 100644 index d013e17d3..000000000 --- a/src/java/com/twitter/search/earlybird_root/QuotaModule.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import javax.annotation.Nullable; -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.util.concurrent.ThreadFactoryBuilder; -import com.google.common.util.concurrent.TwitterRateLimiterProxyFactory; -import com.google.inject.Provides; - -import com.twitter.app.Flag; -import com.twitter.app.Flaggable; -import com.twitter.common.util.Clock; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.earlybird_root.filters.ClientIdArchiveAccessFilter; -import com.twitter.search.earlybird_root.filters.ClientIdQuotaFilter; -import com.twitter.search.earlybird_root.filters.DisableClientByTierFilter; -import com.twitter.search.earlybird_root.quota.ConfigBasedQuotaConfig; -import com.twitter.search.earlybird_root.quota.ConfigRepoBasedQuotaManager; - -public class QuotaModule extends TwitterModule { - @VisibleForTesting - public static final String NAMED_QUOTA_CONFIG_PATH = "quotaConfigPath"; - public static final String NAMED_CLIENT_QUOTA_KEY = "clientQuotaKey"; - private static final String NAMED_REQUIRE_QUOTA_CONFIG_FOR_CLIENTS - = "requireQuotaConfigForClients"; - - private final Flag quotaConfigPathFlag = createMandatoryFlag( - "quota_config_path", - "", - "Path to the quota config file", - Flaggable.ofString()); - - private final Flag clientQuotaKeyFlag = createFlag( - "client_quota_key", - "quota", - "The key that will be used to extract client quotas", - Flaggable.ofString()); - - private final Flag requireQuotaConfigForClientsFlag = createFlag( - "require_quota_config_for_clients", - true, - "If true, require a quota value under for each client in the config", - Flaggable.ofJavaBoolean()); - - @Provides - @Singleton - @Named(NAMED_QUOTA_CONFIG_PATH) - String provideQuotaConfigPath() { - return quotaConfigPathFlag.apply(); - } - - @Provides - @Singleton - @Named(NAMED_CLIENT_QUOTA_KEY) - String provideClientQuotaKey() { - return clientQuotaKeyFlag.apply(); - } - - @Provides - @Singleton - @Named(NAMED_REQUIRE_QUOTA_CONFIG_FOR_CLIENTS) - boolean provideRequireQuotaConfigForClients() { - return requireQuotaConfigForClientsFlag.apply(); - } - - @Provides - @Singleton - ClientIdQuotaFilter provideConfigRepoBasedClientIdQuotaFilter( - ConfigRepoBasedQuotaManager configRepoBasedQuotaManager, - TwitterRateLimiterProxyFactory rateLimiterProxyFactory) throws Exception { - return new ClientIdQuotaFilter(configRepoBasedQuotaManager, rateLimiterProxyFactory); - } - - @Provides - @Singleton - ConfigBasedQuotaConfig providesConfigBasedQuotaConfig( - @Nullable @Named(NAMED_QUOTA_CONFIG_PATH) String quotaConfigPath, - @Nullable @Named(NAMED_CLIENT_QUOTA_KEY) String clientQuotaKey, - @Nullable @Named(NAMED_REQUIRE_QUOTA_CONFIG_FOR_CLIENTS) boolean requireQuotaConfigForClients, - Clock clock - ) throws Exception { - ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor( - new ThreadFactoryBuilder() - .setNameFormat("quota-config-reloader") - .setDaemon(true) - .build()); - return ConfigBasedQuotaConfig.newConfigBasedQuotaConfig( - quotaConfigPath, clientQuotaKey, requireQuotaConfigForClients, executorService, clock); - } - - @Provides - @Singleton - DisableClientByTierFilter provideDisableClientByTierFilter( - ConfigRepoBasedQuotaManager configRepoBasedQuotaManager, - SearchDecider searchDecider) { - return new DisableClientByTierFilter(configRepoBasedQuotaManager, searchDecider); - } - - @Provides - @Singleton - ClientIdArchiveAccessFilter clientIdArchiveAccessFilter( - ConfigRepoBasedQuotaManager configRepoBasedQuotaManager) { - return new ClientIdArchiveAccessFilter(configRepoBasedQuotaManager); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/README.docx b/src/java/com/twitter/search/earlybird_root/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..14224ba2ea1c9cd6c5bad07a75771c87e7b4b05f GIT binary patch literal 36951 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 { - /** - * Boilerplate for the Java-friendly AbstractTwitterServer - */ - public static class Main { - public static void main(String[] args) { - new RealtimeCgRootAppMain().main(args); - } - } - - @Override - protected Collection getAdditionalModules() { - return Arrays.asList( - new EarlybirdCommonModule(), - new EarlybirdCacheCommonModule(), - new RealtimeCgRootAppModule(), - new RealtimeCgScatterGatherModule(), - new QuotaModule()); - } - - @Override - protected Class getSearchRootServerClass() { - return RealtimeCgRootServer.class; - } - - @Override - protected Class getServiceIfaceClass() { - return EarlybirdService.ServiceIface.class; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.docx b/src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f6ee4099f075b80cbc61de0c5761a72e761f494 GIT binary patch literal 37868 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 V-9-u9K`XmT2M7eW2O($W>L2Zd;2!`0 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.java b/src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.java deleted file mode 100644 index 2e0cde6a2..000000000 --- a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootAppModule.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Key; -import com.google.inject.Provides; - -import com.twitter.common.util.Clock; -import com.twitter.finagle.memcached.JavaClient; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.caching.Cache; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.LoggingSupport; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.SearchRootModule; -import com.twitter.search.common.root.SearchRootWarmup; -import com.twitter.search.common.root.ValidationBehavior; -import com.twitter.search.common.root.WarmupConfig; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.caching.DefaultForcedCacheMissDecider; -import com.twitter.search.earlybird_root.caching.FacetsCache; -import com.twitter.search.earlybird_root.caching.RecencyCache; -import com.twitter.search.earlybird_root.caching.RelevanceCache; -import com.twitter.search.earlybird_root.caching.StrictRecencyCache; -import com.twitter.search.earlybird_root.caching.TermStatsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsServicePostProcessor; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; - -public class RealtimeCgRootAppModule extends TwitterModule { - private static final long RECENCY_CACHE_TTL_MILLIS = 20000L; - private static final long RELEVANCE_CACHE_TTL_MILLIS = 20000L; - private static final long FACETS_CACHE_TTL_MILLIS = 300000L; - private static final long TERMSTATS_CACHE_TTL_MILLIS = 300000L; - - @Override - public void configure() { - bind(Key.get(EarlybirdCluster.class)).toInstance(EarlybirdCluster.REALTIME_CG); - - bind(EarlybirdServiceScatterGatherSupport.class) - .to(EarlybirdRealtimeCgScatterGatherSupport.class); - - bind(EarlybirdService.ServiceIface.class).to(RealtimeCgRootService.class); - } - - @Provides - @Singleton - @RecencyCache - Cache provideRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_cg_recency_root", - serializedKeyPrefix, RECENCY_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @RelevanceCache - Cache provideRelevanceCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_cg_relevance_root", - serializedKeyPrefix, RELEVANCE_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @StrictRecencyCache - Cache provideStrictRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache( - client, decider, "realtime_cg_strict_recency_root", serializedKeyPrefix, - RECENCY_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @FacetsCache - Cache provideFacetsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_cg_facets_root", - serializedKeyPrefix, FACETS_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TermStatsCache - Cache provideTermStatsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_cg_termstats_root", - serializedKeyPrefix, TERMSTATS_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TopTweetsCache - Cache provideTopTweetsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_cg_toptweets_root", - serializedKeyPrefix, TopTweetsServicePostProcessor.CACHE_AGE_IN_MS, - cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - SearchRootWarmup providesSearchRootWarmup( - Clock clock, - WarmupConfig config) { - return new EarlybirdWarmup(clock, config); - } - - @Provides - public LoggingSupport provideLoggingSupport( - SearchDecider decider) { - return new EarlybirdServiceLoggingSupport(decider); - } - - @Provides - public PartitionLoggingSupport providePartitionLoggingSupport() { - return new EarlybirdServicePartitionLoggingSupport(); - } - - @Provides - public ValidationBehavior provideValidationBehavior() { - return new EarlybirdServiceValidationBehavior(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootServer.docx b/src/java/com/twitter/search/earlybird_root/RealtimeCgRootServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d854f48980b3a078c24c03e93bcbb6f20ed9f5a GIT binary patch literal 36887 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

    pNt ze*i}hA^=kpXUn$VLyI7*L191R)wsWOdK;W~KZq$oi$rl-tf&<=u!%y8_;zh2(be!w zgGSX5fj{_^jaYI)uItLSEsw4X)&~IJqkY^qz6=qSZZC;#9eIKLj4U7ktF`-PiULVM z(iA`?G40$m?qfOk3B5vwIc{~PzyFDSt$r@?Wj^R)-gWtTq$n_F_+QQZUu)x5@L)2m zLp#2U0;+E=z_n`|)KPY55rF6YCFoNadi95V+|ykx|B$YW+_Zi}b^?Z(@5qZV0@~Z} z21WQ_g-O_}^vA@4^p_&d=^Vq-Ff%^u2U^5cv5J;RY8W8kDWR6?<=BSq-5pB^Uv~Sn z0O9Qdx1svjrbnsJ6iGWHN!Oiz^_sJ=lj3c{Ahm3$u$lv|$VoTF{W*)9&oBvbh5KT*dHXJy`yH3+2`3Jq!1^w5rqvukZ~O<5#U0i? zysu$nc#0+sdmZ)7>3c7B0}`NlQH13awmovTThAZZp+?|i+|gqMx&<1S6>jY`6=`@4 z8^nIU>z9ggB;(!0{%-(BrQZNY;eP-)+_?wtL5+04jhyrn$1HDo@K>!adg#We& zqRmJsrX@cv4_u$)-pMQp?`9IaH~5HSav9i2WK{y91K~P#+Mo1?oPW`mm|6;MLxap8 z?6d+pBEdTjhB*H_oepwj@BZZ)2bGZ89|FIp6X@;-_6X_Zzo?%G5R7d-upUrl8uaw9|Vw6gqCYWzoF;wyG5JJ33y-NkrP5E^oqvNM&B12f5YEGQ% zS3HP4y3eaH7!obbhlYy$c6%Sh`##?+mi#JIVbBv!{CF}ae2Fyzn^v)xHV;y?-?1}H+*FUti=reY??292z%=QU;o50~F<{~) zYo|?D+G1U@yLB%7F*|%sgWZm5UwR zH%iV8a@qG|()jl-psDOvLg+Lbo{qEJk?btm;i_-}iq}v4W`ZqJC4c zMh=;5*Uj*lf^4#X@nj|OvNaiP*LXCP%}&M^khs!**D1zX$8M&Xa{QQ*=C4o7FyZPp zjl^$KWZ3wT%)7SyJ(XrL8^cvsFY~?+FARobT84(5$w z4kQe`0@KZ#5Is_W4Fx z!ntJ^#am5^f<+@dI#szXWq=vmTbKUzZynn6QOV9cNn(N_28T->Dw5Os`&uLI)WN~f z@j8;|VZ*r+H;1+vL!^(`lj_{BecbGbU;0UA37RJCu_EBh3Ghm0oPyn1sN=q(#(nj9 zuNw#tg$YNECLh;aYUvGLLg8;O+L!TEU`z|Fa1{?ps7|*k1p}1HD(B%U=Y?>GLt(?w zqp6dYlKS=9panwTYGG9BFHoz)F#=Afh5${9rOMxqn2@ozeK+CguOaCl~S%4AV^ ze&ls$4Q{1z9eGIVw6+S=rJ~AWxTV{V-8>l68g}B)emF=%+>oZ5)>+DVg(a%^^t}Z1 z=;}XU)jxI1DsJWWFXu25hEuyYNrbE;o9Bw>p;CxJ2O^}4LbIGxXJ$EpM9{0_d4gMt zKwoJd2P05L3x87v-`o$%6=%s6N6aF4gu#Zeu|-`jNn+I+T|&Wj;!*Do56XoQgEq(w z#Ey5}(O)>y4M{tLZN9Hsgvb8imQ#`k;d9I<7GfwGg42w7hfKdbJ(y8AfOStWeRcwsx%wJXGRC)=z7RK*4@>T^76`6Mv@1dbb>mG@kx#eo1JbjHNsy zPSX4g4K6N8!G4zkV~?b-1IAW7HDh-lLTZMlx`!~{f5ibilApysY2y?T=ree)p8MzE^4F9JW|jWH|`Gv!3xmY;>co)Ne6oGN3Ke{0-q+0 zaGn(xj0HzGAAyy0i_jE`btIywD^mD}4=m{b4x$G40#`w>As5H|_FHLyP91*iJph^tsl_)=j zcX<&rSB7DIxD_johwvexB!d=5a3zOs$`U^T<;8ByfgHR|;*&vdx#6-CF-J)wAPX|? z2Bf;?ke3|>r1BIxJS<(1yrKT{yM1HNz&SoHFfivD7%=>Qez&h>0&!ou9t<8d1d&e%AZdj+6oq`GG)-v%qHMT}MaF7Lyxl#X`;43sqH5C5D8^-OKI3uhss$GxiOKM~Wqt@Bl5%tuCBL`@41zZ6bTK z3#%Ua#b&d6wThVvEY9g=k++MQ7MDpJz>~r&vtfgKJWm=i9n#TG+ua!X?M^E$6)vO5 zOQYv~z0Y&4l456%h_({S>(hu)bHx<5&idAtQb|b=NeW8^iDqo<#Ld&w&O`sr+>ztM zTXxE^-&soR(%u^Z$-!IMQ0UZ}m!D6r9IVh8ae)YNO3lywO#OPp!hvV!$BM&invSSC z2?9XHF%uCgmOKf{>s!OdPFumaybu%a&uU+u$|i2A#sgLYT)+sG^$3NvrR02!(){$7 z(kyrt0kt8w+l){O)dss(wd|Y?(U>z!9=N@y73AD|pj!}0cg{v{2x#cXHfRVBG{kXx zBjT-1_}cxjBZI`%Q++!#v3g@CQ^ivU~HBc^{gm_$dA1{MK>CeNG}U z3slhA+}LWV7}51ENO-9l?q`{a4BekQ0DUUh z_2l|6VptxZ!{bg8Ls$yzh4Zd z)V#8kXcj8oe(%_2RP8;wb)%=N@hB3~OfJUETq$@=RB60&($#LiSq?G%-Y0Fa_=wv68npHD;g_p`?P z?=YhXWJNqCfSYc-ZjYz@Z9Z>@Hs6kHZn>&P_IMCW+$T_RU++C0;7**pf4;0|bz=)= zb!Z4+_bJ4Pmsn%`R4H&hg2HQSoHA!x36iH$U?d~IXy+PS%m z_5C?^xbQgf@O|a_*{W_z--#&fDnzaAls9wQ2R-fi#=Onvg|Ds0J;YR`YH`BgcKc>v zEOtUE!|t2!=6C<;IrpSgu2YAb1G^lc`@PaoOV!V@ zZvZ`K(DUnBI`OpMT6&D>X{_hz1t}R@RtYS9K=EmOnD7@DR3)*pPi(1-NvSZlvpdsqY`~^uRCb@ z3@xln?6C%J*Y{hr7TjC=hbu|wLAY#n3XgpBzQk?{4_o2Dg^LTx# zNz*Dlq3nl0C@;3-*+{)eKvWM&u%loHq^ZS}O_bb*BB@P2C?`ahBXmkQo@&I<5FTJU_=u31{pB zuXJDL_Qva<8$}Gc3FXU~pIcYXcvuLT>`?)?^PFih8W-J4BOcprK<|gv^=y;)BF6y< z`;>$_L2COvV(GN1?}t--hng!@*)vzuxJ}T{)QCqP8?)0YkPMu&zt2O zT*J_D-?QRgnz>D*9)=woeB@#L)jU~L?&MA61gPT5vYECwbA?kw<4_c`Aat7K6&jX* zLKhPYZoPqX97ErQAX|V_ahZszQDcL>@%RuV;`XU^@g0H1)|J{?u2Im4;9Q4t!@$`b z;Z=$I`0IzR!j8R^?CvCIylK;(tLY_oPj5!xHj2l)et4|o`8rQM!5ok13wwQ(;Q_~b zp-mV4M@hwvMUS7Yo#a5L_!eBo&0m?RIlM)P2cxsi#)jaA!gW71$9Dy*(mpI!CK5rT zdlUUX!rlS8vTf@Yj&0kvU9oN3cB-O^ZQHhOI~Ch@Dz1v(u5<3a?>qN@@BMAJthBVY z(?{=pt~K|VW9_*{&tbGV$+5HgptZMsr;kv{eHw~GlcJRIO9NIz z;BQ5kN<#772a_QboM zrnF1vM3f~N1~0dhd38cdcP!~WFdVVI1Ss>Yoz!2vrZi@DMAo=n?YsH02JY9*dKfJl zjkutn-5T--J!7-YzfXLza8sD4S4_=6xL&Fe)Plpna>HD8;R@o z;!{AJ&%T4`mMw=^hqEUuFd(gu)yv;BMte|2dFW2xRSg~?gkRHnR;OEld!BfD*R9UU z_TXL>fA;%k)v!0EG0EAvKve3qKf{dT`u3=!boj+Zd+hP%8>lS#RdPc0v8rg%9)kM zi>1vk`bL{*HD^ktM+DUw>!k$jb|EVdWgFVDAKva}#RVb?n3_x3g(;nl))R!amOc}_ zDm&RJsM#3=k2=?L71X}xb0ei)+OaV@7jqu-57zJMDB#?#XGbWF9ZeH%rt^;>?hEam z702(-I0xoEilrPyKg@ZXtRjy^1b$11IpP$l||@#TM!qJQ?^8c z=O+BF90A;uwsY0}=;hr3^~Yn{D|v*-U^8r7VS*Kn0Mh2|e*d1pQz%PEpYK)lol@SQ zx09mHOE>RU)}-RV<=MSgJHfM8yZ$3cBKPDA(on_<3;*#46G>wj5s&!eDOP-;$s(dF zTgHK)MU@%dczLzi# zFL_=sJ?ihA7=)XRc9G32lK9$o>7msfhf&!zTU|PcVfr#|=-ooLhBez<)N_OF{QG{(-DFqGkHquV0Ut@2n~d!q zdUMg$t@U=AXGK*XhFXiP`3`w>4@nlYTqubVI|tK=4o&vtNr96SPn9X3DU2eTD@kz{ zMkU{_Y`TorGltSNpCeDsvxM85_0qHWCQCi3)RIy}v8xF$woHopiXCwfA?uenm(Y;I z1!{=Qs{>~pcg*uR`TCJ*Y}3sw@BK_tA$|%SRhyudqYA6ztP-W_L^&>>ltGAN* zAJpGXjV^nBn)ys^l>3&odeMw(J>^)GEY`h%?85$b%fRq^8yR^In0(%q1Id|+QE%zP z!@Kph>wy5QG((pRQh(rMq^1o9hp(-}y3uJRCO{A0t|N|;6fJu8nmZxD_u4X6du!W$ zdj$i0nGj)2HerB`JJRU+a?RVNgvlo2zC;k(L29papN*GK2O$eF`1lEt({Kr9CA0cl zw`UJ`E&MEaSJJki5hZ=^VQYd6LLbf7tJ_^hkIU>?b@09u@Egdt=Fr|jkTky8FTiv| ziaTv{vCyDcA1#~LKcy6PA)8YC9CcZ880c>HJla<=+P&{iN|)}1cBMY`;_wL(j@Pt2 zFR6$-os344`!PHz-ZYODPJPc6(&2{`1Q9iL#>poRPneDaz(&Yb&M_TZff$ufnCd4`Jje) zsl*=_;a*QKx_n=u_1Y-xy@o&0VVdt``l-X==&-x3D58$rjMfP{Sw_BzYglIoH_&~? zUK;~=hLVAnR*J?+>_B(DD;Csd=Dchm+^-UnJwwjT%z6R0O>QqvN3Y9m*+3#Jxycu? zt?oTr!fW_VT<0;70NkP}cehPh zW53RKV-Ih;@|paESjm(B+{_&B`(-Y#)mzrdnRPYT?e8Umpk=rCm(&zThrgu$Dp~2` zi5iq*GrF^8{DyWNT|6kbyB!6#nQ6y?uKRR=w{f0#5Rb_fq3Nm^7>gcMWJ#w|wlDi}nX17d)ywAI5U}1wL%vx)buo!l z5D;N;n3VrQ_7u{(T-2)Gr^Am;-PKId#r|Bh!lSIsnZ=grITze&UfdeOZFq`jxuFBf zqzw^L(W;)Vz;{utM1~sLn$lf$tGctlFcT-b-=Ko%F|k+8epZcslQL5c<4_IlAjcot z8Uwcle*#ph@48p5byjVJfW-s3{~2);_maZN_NB=hFWBft8H0 z<8o1C-Ob%b&eI04cS>b=K*wf4Cs9GFhIG$;kb1ftQ_tN--P0xwG~|bWOE)`Ep_yTs zr%m$OcH=gVSj9JYo3%+Cg&~Gpk_K$6ZL?B>hOt2%n}^P3zU{ko2LQ#r>TwIrm3V>f zJ-DmINQN$U+HUqKV38BSjcpviITj|>?&gWZM=ghF5|=Ms&6j4;C&`$(J|U*nso9>A z5r_`eQV!LAt==RC0E+H5chCoJMS%`ndwh=tunyDG4)890v)r>Stq_JyaB$QPS3ftF zOp;T-a@AgEnV}~3af|SLq%7PL;xMY7%r3k+;ADi#SmnsHM{{1hGuV0ks?&bYK-hkL zO&#{-*dR2AMw%Z&|DDVylZf>FecQlx^nzRN)m z0xT6_v2=poJMP);*W(p6lQPX?rizhhrR}ObFdozgy}S{c;vihe1L7H>Yu`w7kqR*o zkO(W&5Zb~l`~g+R>cmR*G{KcT6A;v*unW!+le%BmbRUqQy}+1TC=`uMgt-V98o3xU z$(VjfLP1Cpn%VPN2OJaw0aZkX&Tk}=Iz807(h5DRu)eH@uiD@vUn>|$L}&NW#FzA^ z41=JMNPzI`oaoO~!+`o`;oz7b*&;+ZO)*`^39sbC{%1%e;D3j_ShWCzbi4d3B+paG zV!g$`LS{iAkqCzMA;|URC{Gj_A&+3dJg@)e~~r^urm$-fP_e>iXfNEi$Xc{Lx}aRzIPR{bhN z4Tl7YHQ!}zo`&hJ)(#5U)fDDF80s>8Ag!PNj|X%0HMZol#GG}D0)nj3N z0z_$;{g;bT!l9cO6UAloJleIv1|UQmlWwsE!+?lEc-erju?xM1EA$#CY>=VSXWMP9 z(6OFZID(*fSc182kTqF@nFDpw`k|0D-^TJlpK8dnVUU5aGW?0la(L$Geo&hBW=sIi zhW|M0wJcd8D=gX0R z{qnJ~jL)s`#Pzw_{tTGU|9QaV@kxG<-Z?!!-2v*pX`63=tbj}3pMvyWli2kpLf?;EL#&wE=6xKqDTTo}XzZXyi)L}p?*>V!_>>yzLF!2r;4Ffa|@ z&q4n|zubOg!Vg-6*U{m@)R~QGoq^E%lnt*&1!o?%t|qpgHn#3A$%)Wl8K|=R-5Udc z9>Sjn>7=;mC`@WeqfwV{QH#`Ltt84**G}>n(!qLUq zb0hd#+4cklt){W+CjdEpFPN* z`aaTZJ!4IEQ*6DnSR&h9?ksRMv2pP6{R<8w3!|Ht)0;t~I~}8h9Y%O!w__AE4lBIi2A+E`k#CRkOv9Is`5t=4|H1$#BxPzonmwx_q=EZ(jBu zIrkqY6~ad_(=k%gk1=sfPB*-naNKQcca$uwZ(g{&e5R(ir{vti$0B{_fA4s~~+Y)0T{zv{+JWDsMii!9rEPN4u7I_hLpr za1pw)6Sl%AK#pTzs;z0BVPF}R@324wC9ZKoC9|XJRsvC*J9zQ8u$7&jm7jnsm`3ZS zL1OPQa|OV3f#7MV>!V5rp>_wW))z;?TqvCGO3hwTIkP8$JDuKOJZ~tZ)>L8QBDEQ+ zmQdf9RKNEv$#CwEaMd@RRGdM;8J&e{C-o`A9U2*4Y< zNXURY6K$asO)yr{o;FPBSi=K0YBUt_Z zf9i4Y#g-v$fxoyQ(>{H?H@hvA+)jPm-#dimejaRqr&iFg{-*rn>#op1AlV~P`>mG< zzm^OY@Bl1Og;uo^Xf<-!36b~f!Lm2CUs7P_kwzA&qzq;j#wI!{rqr?|utqe44?d78 zzOkpkkA!XC(pTQBqEDLTi_7#ySlyCdE4db?kM`xs#r`~CEXyYSJ(u@pF7;&DrtdjG zXjFNEa`>nfj%SMMZ9%#z-Ehv>hb&`e@49=#Scb9E(85fOm?cP4L}_d7Z*D-!*>R2! zF>Io&E<@yD=8r(2=^>U7XjtSKPCeSlc0h72D3stw=b90 zCL6SST3ZKuo%_YlgoU~pL9a$Om6l;^!@Y6)=R9}4mu9t(T<634`{cer<`rV2sgsn0 zRXWq>ntk(FPL%xU{Jp|i@RR}nh>@~$eMmhgerT12BhGdp zy4PBTk}8_P-G+$BHMgK39EcR5Hc_R=OYLqeJ|VT&<;s%h=f`&R^f%GwFL5BbM>OER zhs{ZDyF!kzm>J@Zux?xm-yK!LR6P6lZ3)RR$y$-~{Eul^@UDGYY{`V&fP=(O?N39T z(3nB>TTt|)V~gZHDq-7?sTsx4H59i8f=iUPh0&`w8}^YD^?y7Gc?fyn0^?BCk}T|9 zTTF_hBw-3#2HlA}4Ir(p4c$px<#*u_N@d@vry5PF=ttn#=5+A9fuqo<`l?-mpq(qZZG5XEI9X%FO;W0nw+t3~@{gOOSYV8P<&bd=oRRlhw z*R{ksqBpJkK~GBnd~{?>n1q@1N5vft3;y3KJb;7D^=-ojrBvTO?%ou?D*sD|O5O=T z$A`X!%L>%AKUO>`{~O||3}6N7|HFzAqr>3g zLx_{mhQvE-Z!(XG$=fxY;T7v1Be>QtK0sfqH}9kUUmPu;j_X;d21Cww5<~_t?d*kq)#~GVL2eGO@!s`>Onj%Q9ml5lx`} zj^z>}u{IWWA^$VfN}uO&Y|eM%qUBJOOi7X%s(9^;S`Fa})q~RMbss1}c@oVP>tiY% z!R%NTiWSLRvf*n)Bc6zJz(j&|5niz1VEC-Ezc^icK6+Ba1xoa4oKTU!WFffbJC<9c z8BX$IQ`&iPAVPk~ZATURnl~@~QWFy#k_{KpVuI%2{T-ay4~sB%Bpb;)xkwj$kp`{F z1RJu+5Y0cR_2P8&wdhR^7sh{3tNbh%7l&(Z70KW7(Dh6P8hqk z-%_j+r%sg;HDo}!KF=wV4Hk_*JGyEI{W6=tf4C}HjOJH0g4RPA!%IaII@Op+f)i^w zM}vp~#2{2*@>D+ zc4H9;K=5b`!$*_FX$%`xX(r=}R0N(OoDgY4xupsFNcL$&&>a zs*L!qVeC=*ttH#e|C=lhn$1U#-WPQZf9YBx>JK)1z09+$f<5?oUt6^k?;Eaffn1PG z<%Tg`%;l*nhtuOj7)RCU>USZR@5@2m{1smipPMCI^o9p27^*qG(>-i@kE$mpxk76d zc8Eq3KVK%Sxr=$fnTJ$66(;Z_{5s5loA=F1wAsvQo&5l%t`n@u$dllZ)IvpTV)DX< zrpNn}>@}&PaWkv3P>R3Q0h_c=sR7qn90aG$1qZoe*94Sdu$o~6hH zYo&ThF?47;7-cc7$h?S`N+~}Y^BWOybo67avVwS3<|vDU^qDXHws{eM<}Vuc6_Ifj zu?SD9yoj|)$ui^JA18?kQ!@6CBvc~k$y4KsV&s7+s!HQIXli72RFdds^Z_*IGiLA= zY5j=UYN}}_c@g5u!yZ^6joiP$8vSViGl5%$W_I)!1$63$`al|U#zJZ?%s-i0@1+`J zfHJtQ>XcM+kqR@Fii+g$KT(UI|A|V35JFD4SVxftulg?wbn5^X#KU6zv0%D0BJr8% zVKs8M%o91uQ$uMuYq2we2EuGxO|_o#S4}~O*xWaC^1t{Vfd4_>>WsK^fm5B6tl+{8 zE)07QfwT!&6GUg{PvB9j`XQQH8iAI6Du~{gI(O)h2@&WtPI9UNpbV%5Pf3}%11KjJ zNcq8{Oi8^jy&%#EV-`npbJL*crY#r~35|2arsiXx+OPEc%@pG2tuwF&zRZ}LI{c(G z$TjL^ZZewg91t)OE}?*oG7ar1%Uk*x-o%tEk~Ps{66Inv3oN(vzh;s zSpzjJ8)GWJ)~cUnk10PWk{wU{`wz)Aim2?g_j-sRTqw>LJ{l-aVZn>~pYVGSyYaPX z_@adgoKtqm_Lt)V(lpzSiB2BRA-O**K^udWE~A46?<3&NMl>b4;v6UL(-6c#YfY7$ zV4{RbmZ}9Wl+*3N*HfiTX=l51x3!Hx3#_c4;RFZHMAfxX$+O&1f|bU$4B{M#_H;wG z9Y^s{5aK|fOMmV<4G_Woe)a=LiTUEuFGY@L&%(gCcXR(8#IFANubA=UTlrIm2+)uy z@*eYJfQ1G*^}{BJN!%DM&1{D%j?y2cAus@?WU2tA@{0VRagIFk^xKlq7HA66+uFvD zm}Gd8T&ek-o6Mm>phW;m-0t&qvBbQh{fD3!l3Y)V7evX9ZR2fSL4z~DpnEQCe9*i| z_Z(F{@UyFg5kQXNILQ{x>)*HhyhMKe+p9Eaecq`9&n zi1u6yA|m5aVo-;fd9jAh8UHxNAmY$w0-!JHAGF|dBU;E5vzo(_h^R@lx2hr$sXDMn zad3x%Ah4qWX%1VsiVGcDc$Y4s^$drCK$dl9O8uvhyB0Z7)`vyrya(09kPIu4_dQ*g z3uJooXaJdmC<8Wh28b+6UR8rtX&`)HHMVr~9UNfR53^JFZ&Sp3K-6)Lo(MUP7=UMr z&p^_}IbN1KNM*u?rbbQ5aJ_lw5@E{U{~ea3Ttq7#?XR#r=?CRMlj&%D{Fx<_l+i8q zDx50>Us-~c!81}TBWY{}o8V}2fhD=J%RH?Mf>0&uHBgF8|Gz%-x(`_5G>D+d@*DaG znJ8>oDMN>5{wpp}+H|b(2{~R29v51GiEZq&@5wmW7eC6t2g1@uyF3I$RoocsZgaTOwRQ7UVZXhHnA14YSw|m< zhnEHt5`-`=qJ6(Gkya9feB2T8@>OIPAYPHFenD%svW@KA#xNeD^I5%A7#9quPz(xH z-+hFaUnw~QXz`FTOcAS~RKZ`NW=4eY?mD-^_<>f!_|uqs7Y`6)1mE_Qhp=xUhX|2; z^VkA@2Lj)QQXy=`y%XbCmhtT)?plNiG|AQ+2hR1GyzU?f#8%9QF$KJ%Zgs$=VFE-S zhCJfPzCgvZgu<|cjw1}ZL(ZLmziW_vnM{1jM+y1-e~WN%`ThCNKkuF`{w;zPnrJzo zTlQr{IQlo}Z|r?U`ov1WZ4l`QUynDw3Te`TEC79%XOM&k^9+|ByoJ|9cSXZ^s1R@+)s4DKmzjliW{&c|O&^{&oyYsHV%1Bezk20sr>C zj3ye&1>+WSO3Uk*?hmn5Kb1d{nD7e$vXxJ3Kbc@8ka>ef{;9>=|94>Qf0WGq76BB! zr1H3CZUBM>MBe(LoY7L-2ajcNi% z&)2eWX&Q|+2-=^vQVzhU&` zOP`e|@&EjvPS&v%5?CR%%Xa(PUJw8pTi%86t1;tUC_?8z{p5Q19^1E7D}q;*(d_&G zGuRjTQtpen0jrP&+u(&M6-CT{(OC=MTE&l9{psydm5n9u5}JLibSXE=>ciA$bzQTt z34yW8_RWfDk8OiBE<)Z#D*qn0G(B&O`;QcO--Rh9aD@K=W%pa|$I7UKaZSHFXKd{a zWkS3e0z~SSw!_l_(B=gPtXeFH(6f&d&a*h>S%u8xxuzX6GTkyfq*MC<#NbNX8F_DA zFQXyNXhE`$eYmINFJ>SwH6c*p95XsE*joL;xu*4SB)O)a;EKu?yfq;Oy76VnVW~GP z_zhgY^+<1-{3zMs_+i3ubF!fCq!Kr#YLE^tf19uv+@w`1PjxtLEW7D_Z&vN%%Iq?) z(yHGNy@Xp^RV1Mt^Z2!$gwt8u1ST(lW>9B4;@uxb!0W`jV zVsD6fN%jJ@hNB=;JNL=LVM;Bb<_SAE4$ka~SUMSZYJ_Sd5etYNjh($2NbJINRx8;n ze3&lgCj7qX#pvM-VXL?Gr#%6A{i9b=L^1|1C~vBaj{|Qam|~x9S!%{#Z%58fcMMFQ z)!ue*>S$u|=M%4^gbG7%Ux}Vds=P*6Ptq|yT5VWx72l##YHw%pCA&&FX$AoIK6@F*~h1oBW zrA?h6&#z8HcLW{e5ikOOmzkhhQi5(TePYH3y2kP>IL;kVi zi0pxsbGMw&GS-;|5irMpN|H=KM~f>eE7!}C=9N`JMdvx@JK^|;;nLM0hfyK1;P?Y> z!T=8UvrwKT$XrTzjlp+sok_D$LF^#cV&eoTkkNUxIR2d9Kzpm)YbkgTqIchBwb=p& z;xL|`@Aoj+12~u7qCyAYEkfgknQHDl(Xm zLL2d!+FrSD&dbY!qNUu7O!%^hF(IXqglcg)Gja)q-3W!3lsIXnlAQQ2P8_VBO@7=| zl+JNBl!X$oKyx{BgNTD+*{spSb+(G~=7o-E_23N4q(a=xBHYx}HQE45i<-fIQxX-$ zL(-5Jb;ZU$5-s`;4LEpEQNAn7?^8XIaA=J8h6BzLP3}GYq|5vkMfr|`EU=F;!aC?L zjVMI_WPy>K2yo^|^gqrxqd?|k*16<2V5PuMNa0Ocu(mi4c#=_3+EG&qRDXTNX+Lxf z?+{Ip%Yq3HQYZ1Bw3aGYF>n=XF`j{KEQu#oIpTo0fYB-cgTKfrdBG zRgd|Z;{9@bixAVU6OD%$g>q}ab{Uyk@Ql*4{BOW5lJ@L2RdQN4A9kPLvA_IvKOmKj z^0R{B7G$U^u>w*s7{KVSOw_oMRQ`VHi3`cHBmKFBnUECUqP)NqCVm_D8J|I3>egJ) zaF|q}h&E=mCmgrHk8usm4gS|_$qemK6_h)AKPacc0NBuuiX(1e6*`b<*SE-g+)9r- zhK{?qY#7*CyAA2EDYh9|P+m-&MGLbaT<`}K>bTV&w)5cwg$wQ&^;mg=Qk)9@;bLro z<4|}0s-S$K79ZRi2*Uke1Uz;d50gls`Tj+K;s}Bp9edn~E!zu3OhJ~cG}vM+ej#&S zgs7CLR9aj}-Yw|yz)?9tDzrIYQ%GLINH;;$?^$v>VWC5{Q_ER8-U9Qm$&q->its)s zASPgygeTEf2R9ZHY?v=pu|$|2AX|?hl`2 z0K#8}l%#+H_(-i}2C;tSi%y?i6?N7Ij1zaa6fJ@?jB|x4z$J;hai%+I>FjzAG~6+( zJIRHF0M{uAYrm|I@134i#Koa9i|u8w3>m#~aghxa8P}UXDB(!1oZq`rr{?B>SX1(O z-v}A;0duWwglyO%oibl~?xUWi_PqXe4o#GrmO?g_uV5br+$6h=qr#bd2M>19Czl1Z zn2++7sL}>#`K;)VBKfo8B&qB^Tv*Hi&Zl5bY0BBUY;K6eXFg+#If!p;ZK%~|v46fP z%*P7u@!fhe5%>U#w+bqeJVE4{i|q zQ@7q<3{VCE!O%*bp_(M2zQgtx1Dwr~m++BE)A&Zbky$e*fe9MDT8Ic3R+5z3lOz&= zGI*m398+TBQ@U8o9017_334!D#zNC&7y_gGHXcgTRBu0@F0x3H4-7-A4T-LSkxrRs zJn)K+>o;u7y#`Zth01~%mVT9jP-ze%ys-QD>nX1{&@SL3=u0da#~ zK%1u%=>O5?$;Hgo)ym%DuYFd{>RZn1TxdNzrG{;L=FlxpvIo>>WOdte6t;ke1OPRB z2eNzMOn}Q**dg7B7*8=zyShZbd;Zbe<1#d=z?cR9H4i@7m>-5QU=B!>nwEy+er~1I z_RWZmDJ3j|iQ15##}E5^$H&zHKf58lbvm#o62;MxcU!Z1abh@iYhQSK91K{1O*wb{ z?{ZF5`3INkk>bM$O>IT-D;z58O^V ziN$m_2m>6*lsH(&M8RvyW?h^g2HnJMkMduCqSqfxU0ePHNdng=7uq~4*dHvzp3#9D5qH#T1ZW#dVnC|sr53S6OPy!{K) zSlvjLPav++*2;+T!zx@Kqv?%42$AmLjAUeKU;td$Mf!7Y06S(1bA`I9P5DpJ;Kb+3 zeu~kRNZJOLj~g-R3$?&qj-2Td{Cd1~(tbAifkUzcuyI!>7-+^oEpIQF@S23Pr8_j1 z=!DC2QwUDZy}LoF%v_7^HuwZG{$SI{L+cE;?lYbNmDX2+W&!RDcz2t6qORE_ICXno z`7H7LT!-=-ci=Y0U99nofxrVNSS)$0Nk`o;NKJPUIL$$BF6OiaoZUO}BDqQX)@{Cz zY9tDRpXFxN+ODx^&juMLW6*IhB4}e|2{LPZR=5U0P zgInU5L%(gV!yt!NaYe?xeKiS2mo1sN7+!)XDqMFg6+UP@>OqWmca$+626Zx)_t=k&&2b7_$!;_G_X zY$|)5|57>Xi{v)BDfdgxuGnCF3xeayd>aLP^6L&Mp&9Kd0TAnI@r`l)G&(;eXrbls zIIO-k(sb6nd?vfsYjn+ER)gn7K1s^&_nVQn^l;y!{cS*p>AbU%`z=@(`{uJ^=2}G%D^wePn%FH+Y z?t{=Y=|Pe!gpZ)nu1VRci*9-BGznX)TOOnPl%35gXr9A}&PUNQdUE47*x}hv0xr9) z57o^H9v-ro7{lh{WW(+b{GX1!a_7020D4xw!TidToR5q~AvKL7fI*EW{vs!po&!7k48igt<& zH~`Dq)Z?7u1O;2L0 zrBW;DP9tKXGRlBgtNMS?%(m`*1;3gqchCq}EUnk`59U4#)Uh8afm6w4DX3~SweCiR zyMOPBd)D{oaR=tR7coCny8$WPeO$kUa`WtludON9<>YG{yeNs#@PuZ~HSus`#!VAb zchbHa=c4z>zjp*F8ynYA?{Yip(>2So&lx^D+uK+eM7+4YFCAqx_*BB=cv?uXa_6MM z>|jKl&mA^J9E{tJH*zx>fESzvS}}`;{scq%(#qV)RX|~-CUj989X3CfO=($2XPIp; zHH%<5)(f+4{Ncj<+1%D^Fx8vOZ!ZfM{x)+*fg%-NHG#|I!5g<_b(bR0qQ9$Z=y=$l za?hWlGFnx)?*Inq=zI7Nx3|Ns3{*>H>K5W8HxS}uV{X%&fW64kM#QX)Dd z>w&*=>hm+&svCs4Y#FSp7KFW=f6uVTZ$UUUz@lD@pi*)^9+q1tha4q&=JW0~P`+8Z z2qgf14Rexxf6_iu_JAkaDM5G|y=wLf{1{%w*#&t)AX}8UYNp<|S*g`)gQM>ZosyNi#OK?sCQSSBsDZr`NyKzhZv$q!v$-kO8j zfPzCScDn)ra`_;LC+yj^ro(H7-e?}oPL!n0K-A#!N`6-PJyqHzgS8r3WH zIsgLZOia11&i&RX%`72B8jmJQS0Fq4I4F?KAcQ2XxpcPbj&-m0^7uHJX=PQB!3KV# zU%PUpHs49PH``JyM*EER=uC@ zSw^OzNqMfea8WYrs}o5~86$>i0VJXFa_U9X7Bt!_q%lq&auazCEHnX&Hut>l@g5lUtW%u4n}JU-gUuxq2HZQK8{}* zKYU)Oe_uR*bI9>-1{zE3+wpz5Y&GcB^+S>xx~R>4zujNEaNz&E52X}qgNF!}+63|n z3*Qu4F=!&kX&}!B#oQ-z9VB!)6#-`mcnqrSzm_HT7xP1y$9K#fH`WPjWA-Sc zZoX&;mmEzAX*=@7F^*K8&#zhqYE8nD+K_v@1!-R;gI@J_>{YC?rwQ^*6g|4N|FkvARFanf;p@u-b*d+Zbf=m+&0I~4$-$Ul5Rq;? zUH(3sU*tF_*HkNF+99mm22GNIY2O#_r(dr=ODZ*HN3|&|_O*0s8E-Tgu7sHc?E!Dd zgZMW?rZvr0LbH>Qsa& zNu6g(Oz_8kSVwHUW`pq7pvekel(qQ)j0?I_cZlpbRKd{K3Sx85%=2%n0_wf@rkyey zw#o1EE%7Tm{O^4{TOmzGMh&H}8^VGem2T87H=%Qj9D74M;w=6%Uh5tTyg#ih%1Y_0 zq$_`#daguV``&kM&AH9!xNhJY34a|<%G=O&@YBs0Ih$N7oU`ORjAShEr|q>~Pm0nE z$797p01+Ri)NJcyfGd(kr)?fgvuPMAB+Ap>&ZYlOV^H?car%yyl7fKA{_snJhY(F? zF?@Mx;y5_J;QqVHeo9hTJI&(aGG(#&)tyzjQaF}^WUTZ-n&;u~D}yuS=%NAH?3crI zg%n9@xkel-%0?8F!!jm0@MpfP8RsYs=PUx`j#;5mt<*Z7;;$`*WlZI%v%i`Os=KJx z2Lc?*wj!1}FUUaf`{(DZFTqED#oNES zxfGOwR@-W)*gR#`pw2@?MaqqBg>mU7w=mqomsD_^PmotOt642+FKQ?MQj0ttN7}Pw z6K-J=_b{euc4IT4>2xJQ+HlJTWg3V)rUv>|Kb`oWH~5`RpBozetK zM_(Qbtb(hFej-T5tP@t(_E&n>LYiulI#5FzH7Jnq`;CCeYxxLwD&_u+t<0gC?By=A zp(cmX9!pTm@YMFF{fhLGdma?*s%@fd@YK4n78O&PMc5NEcA4?Es(phWuY>$rN9CRi z2nT!B%JN>@XKy#k^3GAYqDsC`Lg=pNoEnW2l8ykqox=W9u40j=Y^xeBxY%_s!7(V6 zZXW-k2MlW_5p7`)Pc7nU%oHz@ftp_x1*T5pJOLs?akREp_2Ra5#Q&7(FeNUmlsBNH(m_GTYd3 zFJp)931YKqq?*KNxuzeL)0iXdkTDukLZp+%m{O6!5oC)QGlsMnv@4`G&4J{mXdEw) zo7@C>(;%eYSX~a^yycGT7a!ys*71JsrPDz>$8x>b>ivfNXD*iG$Fouj_`rhzWUr`z z-zIJ@t`2sZcD9UGu4Z)mz#<~Vw6C-(tD$i^ezDkkOP2;+4nE>HOD{#fuHDfl8-2r{b%$x_8aLd&hq z9h_JJ6q9Cr9PL1t8DkMlJqX0Yu^j%iIt==K%n_?80JUN`AktPN#fzeu4M&3U*owS& z%~u^COA+~np$3A>=&G7NXNx?zwhboJ)H!Hr?Z0&KPaG|E1N2Y=bP@bR*WcY?|D*1& z*09kt^?>{w31YWffw;-C!pwpyU-JnCWKGzSxH4|0C9D{=Lq>ADr$7Z1n`ImS^OuXA zFJfhz5Jl`Kt+6UVv5s;_-AQHxU(tvJ&;aM8~^M7 zhw5>9Bs#S;qLj%XZcPT09JhvRV~g3$j*t20UgAzl6+Cg$dn4N-ECT55dZ&!8K>Q9H zzcEIdrcM+SuF%J{dbWuEW9(JQ8Ke(&IW^hxPIZCzmG}SZh}+yLE4K#_Yzz>N^$+2H zB>&YP{;yHZj;ps1WI_}B)-!OoKhB&7W{DOi2}EtPB&~<i4zt@m0p*O&loi6 zPYl4WQs*}{PNxhrCE*K~`B|2=>r z2v%8?uanWJzB}9>-tuqYzu#^G6Sfh;(OfvL19eJwMCguXrj`#rex;sLT>esqUPD3o zG27-VX!W`G5j*pWyfF`sLQ`8xrOC5SdAqtUnI2`!8_gLu@Q|{vd6QIoXg5_ptwD=N z>NPVw{}q4NR3m(sSz2Y7HP{wXr82MZjfDf|;BMY6OL5CY-KncKj54fzHv$%>xC7lL z7^!ySP~3?^aUYyQlYmV_aqei@4FhZOLy4fbUR9aBRk0g?Fp#R-nEiXzb0MEzf@)=5sJC zKtPI?P_P*R*F{o`SMDm!mAuezrfice_N#yEDDLL`rZ8E5WJ*mpEQ7uw#L`l5$(p9! z5;IF5{~LCl_|92UF})Czf-3XJ0-2m7c9v&fy25wP*tl#2L-wS|ata#LbhtaZC1Fx+ zIR>RDYBKbG*cYW?e*X>Yk6OSETubu%v%}0W80A;G5f+JRqwFjkUWq_kt6~VF-$Pi|FB;S9va1-A|FotJh}Z3&&r^ofP#a z(ZewW{>)oh5{ozP#UqRsdOwZ-CoAQQJkjQ3e-tT|<@d-1Kal6x;zsL!y0Ui z#XdgP%NmHM>(M9V)N(<}UQm)H7+{T;s@9DSe5~;ROOBWTuHWtE` zssn?`jfd_RXua3rbOyzQhNwWe`B_Uk4VVRiD8N0&NZWDaTY+wXziB1`yIRcZ&(ej) zU;Gr!AvO*en@(D(>`J@iNoG`IW0$9O&WP;4a`A|3CC*h(HLX?Hw?>#4qe2e|IQ^Ds z$%tn>c7X^bb+$e9J+hD)DZG{w;-_nQz9+CTLiHA93b#qu;8lYfX>OReuV#zltLdSD z7>;#hoC3IEsK;=Ew%W}0#(AYy03T}mDC35W@zb)Qo>?+a>Xj`Nz2gYm>sA7~7sNq) z?j7_K3_BqLpKyKj6YMjVK@lBBE^TT?h21SzHNQD$PXHJiy9TE zB%Y<;o7;7lVMl$Bkf6!v*0RP(WX0mc46oJ`i|wW(WbHhXF`c(Zh!lp1Q+Lt*mh~fx}U-U{FH%{98ytlZGIaNde%@a3r2x zyP-hZU=J{sx2)d;LDwNxxX}QuP$N9ez6xYVSHjgOX>j2#1W95rCwh0C#KEwnqQwa_ z#XleNv&5nmHpfk2r(H;D=hnD=CHg@VW~f@B1DEo+7N0fbd9@GI``VXyQj>w-!C*n0 zqu>lFIDjyeypVXYv-0#YCK^RB@AkR(@ZC<)t?}c|;j# z2M#l>GxaOlV%embmPrn=nqoV{n}txHVt={WPFRtt8AhDE!Tx!^Yg66vM{*-3y9gDd7h#Mt~5KG6!(Gy6pUbLudq2nth0vz07Q{8de?9*AO^r4FA{Wy?F3w zPUw=0!U;?N%jIQXP}nZr-1&|znX6l~s7EkD`LN{77jhEaJ3p;b_?MU((f7fs_SA$c zCL(VnxO5H|>O8ENmymge`2~B@llI=zx|ew4pIqvXpE_}S+TmwYIH$e6t30RuobQ?S z!nfO(q^0%BOtsDYG-b~2W#{%(UwhMZsCv!OZIdn;Rach!zI~+nqw22Q!RYs&*H3xk z5nO!w)wOoHx+fR6zLu-5dAw}-yt-#MpUbCy#(UT`7-rP`G{e1%G&vV7fuZ}pc zoGG0C&DYA`J6LP?)}cZ-&IBsC2-GNuqVYLU z1YY+f=NExTqS3W~xqVywHBfsF3j>1yiuQV-2wZz&K>;>bcgNi=R0g&}zww}3J_8sK z;F$xU5v936zhl#$*B~uq1ho7#&?*@e%U=Pf8o}BjK1VhLYbf-t7PIcwXJCj6Wo6(; zF)0ifnqZTPODc0x!PAxKVSs+1Busw;BcC;jX0+oa(ak}hCq6 zLVIorR6E)<47v&E6A=g#=9fZEK$(_6*N;AGjL>gX0o9K_hKz0mdjA_?gmyjF-Z;7e z=p9{z0n81^24L&{=v^&@DZ)+AP(kT { - - @Inject - public RealtimeCgRootServer(RealtimeCgRootService svc, Service byteSvc) { - super(svc, byteSvc); - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.docx b/src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.docx new file mode 100644 index 0000000000000000000000000000000000000000..a590f9d2d786d0681dbc9f337ff247cf177d58d5 GIT binary patch literal 38017 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 PDsjLCoE}2d^|Sv2G=Uo5 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.java b/src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.java deleted file mode 100644 index 1e8a9cb76..000000000 --- a/src/java/com/twitter/search/earlybird_root/RealtimeCgRootService.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - - -import com.twitter.finagle.Service; -import com.twitter.finagle.mtls.authorization.server.MtlsServerSessionTrackerFilter; -import com.twitter.search.common.clientstats.FinagleClientStatsFilter; -import com.twitter.search.common.root.LoggingFilter; -import com.twitter.search.common.root.RequestValidationFilter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird.thrift.EarlybirdStatusResponse; -import com.twitter.search.earlybird_root.caching.FacetsCacheFilter; -import com.twitter.search.earlybird_root.caching.RecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceZeroResultsCacheFilter; -import com.twitter.search.earlybird_root.caching.StrictRecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.TermStatsCacheFilter; -import com.twitter.search.earlybird_root.caching.TopTweetsCacheFilter; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.ClientIdQuotaFilter; -import com.twitter.search.earlybird_root.filters.ClientIdTrackingFilter; -import com.twitter.search.earlybird_root.filters.ClientRequestTimeFilter; -import com.twitter.search.earlybird_root.filters.DeadlineTimeoutStatsFilter; -import com.twitter.search.earlybird_root.filters.DropAllProtectedOperatorFilter; -import com.twitter.search.earlybird_root.filters.EarlybirdFeatureSchemaAnnotateFilter; -import com.twitter.search.earlybird_root.filters.InitializeRequestContextFilter; -import com.twitter.search.earlybird_root.filters.MetadataTrackingFilter; -import com.twitter.search.earlybird_root.filters.NullcastTrackingFilter; -import com.twitter.search.earlybird_root.filters.PostCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.PreCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.QueryLangStatFilter; -import com.twitter.search.earlybird_root.filters.QueryOperatorStatFilter; -import com.twitter.search.earlybird_root.filters.RequestResultStatsFilter; -import com.twitter.search.earlybird_root.filters.ResponseCodeStatFilter; -import com.twitter.search.earlybird_root.filters.SearchPayloadSizeLocalContextFilter; -import com.twitter.search.earlybird_root.filters.StratoAttributionClientIdFilter; -import com.twitter.search.earlybird_root.filters.TopLevelExceptionHandlingFilter; -import com.twitter.util.Future; - -@Singleton -public class RealtimeCgRootService implements EarlybirdService.ServiceIface { - - private final Service allFiltersAndService; - - @Inject - public RealtimeCgRootService( - TopLevelExceptionHandlingFilter topLevelExceptionHandlingFilter, - ResponseCodeStatFilter responseCodeStatFilter, - LoggingFilter loggingFilter, - RequestValidationFilter validationFilter, - MtlsServerSessionTrackerFilter mtlsFilter, - FinagleClientStatsFilter finagleStatsFilter, - InitializeFilter initializeFilter, - InitializeRequestContextFilter initializeRequestContextFilter, - QueryLangStatFilter queryLangStatFilter, - DropAllProtectedOperatorFilter dropAllProtectedOperatorFilter, - QueryOperatorStatFilter queryOperatorStatFilter, - RequestResultStatsFilter requestResultStatsFilter, - PreCacheRequestTypeCountFilter preCacheCountFilter, - RecencyCacheFilter recencyCacheFilter, - RelevanceCacheFilter relevanceCacheFilter, - RelevanceZeroResultsCacheFilter relevanceZeroResultsCacheFilter, - StrictRecencyCacheFilter strictRecencyCacheFilter, - FacetsCacheFilter facetsCacheFilter, - TermStatsCacheFilter termStatsCacheFilter, - TopTweetsCacheFilter topTweetsCacheFilter, - PostCacheRequestTypeCountFilter postCacheCountFilter, - ClientIdTrackingFilter clientIdTrackingFilter, - ClientIdQuotaFilter quotaFilter, - MetadataTrackingFilter metadataTrackingFilter, - NullcastTrackingFilter nullcastTrackingFilter, - ClientRequestTimeFilter clientRequestTimeFilter, - DeadlineTimeoutStatsFilter deadlineTimeoutStatsFilter, - EarlybirdFeatureSchemaAnnotateFilter featureSchemaAnnotateFilter, - SearchPayloadSizeLocalContextFilter searchPayloadSizeLocalContextFilter, - @Named(ProtectedScatterGatherModule.NAMED_SCATTER_GATHER_SERVICE) - Service scatterGatherService, - StratoAttributionClientIdFilter stratoAttributionClientIdFilter) { - this.allFiltersAndService = - loggingFilter - .andThen(topLevelExceptionHandlingFilter) - .andThen(stratoAttributionClientIdFilter) - .andThen(clientRequestTimeFilter) - .andThen(searchPayloadSizeLocalContextFilter) - .andThen(responseCodeStatFilter) - .andThen(requestResultStatsFilter) - .andThen(validationFilter) - .andThen(mtlsFilter) - .andThen(finagleStatsFilter) - .andThen(clientIdTrackingFilter) - .andThen(quotaFilter) - .andThen(metadataTrackingFilter) - .andThen(initializeFilter) - .andThen(initializeRequestContextFilter) - .andThen(deadlineTimeoutStatsFilter) - .andThen(queryLangStatFilter) - .andThen(nullcastTrackingFilter) - .andThen(dropAllProtectedOperatorFilter) - .andThen(queryOperatorStatFilter) - .andThen(preCacheCountFilter) - .andThen(recencyCacheFilter) - .andThen(relevanceCacheFilter) - .andThen(relevanceZeroResultsCacheFilter) - .andThen(strictRecencyCacheFilter) - .andThen(facetsCacheFilter) - .andThen(termStatsCacheFilter) - .andThen(topTweetsCacheFilter) - .andThen(postCacheCountFilter) - .andThen(featureSchemaAnnotateFilter) - .andThen(scatterGatherService); - } - - @Override - public Future getName() { - return Future.value("realtime_cg root"); - } - - @Override - public Future getStatus() { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public Future search(EarlybirdRequest request) { - return allFiltersAndService.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeCgScatterGatherModule.docx b/src/java/com/twitter/search/earlybird_root/RealtimeCgScatterGatherModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..93fd27d583eb5d70e859a95752e6e1be2804ea7c GIT binary patch literal 37483 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 provideScatterGatherService( - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - PartitionConfig partitionConfig, - RootClientServiceBuilder rootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_EXP_CLUSTER_CLIENT) - RootClientServiceBuilder - expClusterRootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider) { - - - return - buildScatterOrSplitterService( - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - partitionConfig, - rootClientServiceBuilder, - altPartitionConfig, - altRootClientServiceBuilder, - statsReceiver, - cluster, - decider - ); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootAppMain.docx b/src/java/com/twitter/search/earlybird_root/RealtimeRootAppMain.docx new file mode 100644 index 0000000000000000000000000000000000000000..c10d6f8d85cf6ec6dc5533f14526ec428a6717d3 GIT binary patch literal 37096 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 { - /** - * Boilerplate for the Java-friendly AbstractTwitterServer - */ - public static class Main { - public static void main(String[] args) { - new RealtimeRootAppMain().main(args); - } - } - - @Override - protected Collection getAdditionalModules() { - return Arrays.asList( - new EarlybirdCommonModule(), - new EarlybirdCacheCommonModule(), - new RealtimeRootAppModule(), - new RealtimeScatterGatherModule()); - } - - @Override - protected Class getSearchRootServerClass() { - return RealtimeRootServer.class; - } - - @Override - protected Class getServiceIfaceClass() { - return EarlybirdService.ServiceIface.class; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.docx b/src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..ddc5aadaeb886aa73b86611c58cb2b86f90c3239 GIT binary patch literal 37851 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 Dw-3nk literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.java b/src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.java deleted file mode 100644 index 8e2328fb9..000000000 --- a/src/java/com/twitter/search/earlybird_root/RealtimeRootAppModule.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Key; -import com.google.inject.Provides; - -import com.twitter.common.util.Clock; -import com.twitter.finagle.memcached.JavaClient; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.caching.Cache; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.LoggingSupport; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.SearchRootModule; -import com.twitter.search.common.root.SearchRootWarmup; -import com.twitter.search.common.root.ValidationBehavior; -import com.twitter.search.common.root.WarmupConfig; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.caching.DefaultForcedCacheMissDecider; -import com.twitter.search.earlybird_root.caching.FacetsCache; -import com.twitter.search.earlybird_root.caching.RecencyCache; -import com.twitter.search.earlybird_root.caching.RelevanceCache; -import com.twitter.search.earlybird_root.caching.StrictRecencyCache; -import com.twitter.search.earlybird_root.caching.TermStatsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsServicePostProcessor; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; - -public class RealtimeRootAppModule extends TwitterModule { - private static final long RECENCY_CACHE_TTL_MILLIS = 20000L; - private static final long RELEVANCE_CACHE_TTL_MILLIS = 20000L; - private static final long FACETS_CACHE_TTL_MILLIS = 300000L; - private static final long TERMSTATS_CACHE_TTL_MILLIS = 300000L; - - @Override - public void configure() { - bind(Key.get(EarlybirdCluster.class)).toInstance(EarlybirdCluster.REALTIME); - - bind(EarlybirdServiceScatterGatherSupport.class) - .to(EarlybirdRealtimeScatterGatherSupport.class); - - bind(EarlybirdService.ServiceIface.class).to(RealtimeRootService.class); - } - - @Provides - @Singleton - @RecencyCache - Cache provideRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_recency_root", - serializedKeyPrefix, RECENCY_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @RelevanceCache - Cache provideRelevanceCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_relevance_root", - serializedKeyPrefix, RELEVANCE_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @StrictRecencyCache - Cache provideStrictRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_strict_recency_root", - serializedKeyPrefix, RECENCY_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @FacetsCache - Cache provideFacetsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_facets_root", - serializedKeyPrefix, FACETS_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TermStatsCache - Cache provideTermStatsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_termstats_root", - serializedKeyPrefix, TERMSTATS_CACHE_TTL_MILLIS, cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TopTweetsCache - Cache provideTopTweetsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, "realtime_toptweets_root", - serializedKeyPrefix, TopTweetsServicePostProcessor.CACHE_AGE_IN_MS, - cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - SearchRootWarmup providesSearchRootWarmup( - Clock clock, - WarmupConfig config) { - return new EarlybirdWarmup(clock, config); - } - - @Provides - public LoggingSupport provideLoggingSupport( - SearchDecider decider) { - return new EarlybirdServiceLoggingSupport(decider); - } - - @Provides - public PartitionLoggingSupport providePartitionLoggingSupport() { - return new EarlybirdServicePartitionLoggingSupport(); - } - - @Provides - public ValidationBehavior provideValidationBehavior() { - return new EarlybirdServiceValidationBehavior(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootServer.docx b/src/java/com/twitter/search/earlybird_root/RealtimeRootServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..4f987ed9ddc83f0ebb678bb8a7b0a5863b78b3de GIT binary patch literal 36885 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 W4De { - - @Inject - public RealtimeRootServer(RealtimeRootService svc, Service byteSvc) { - super(svc, byteSvc); - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootService.docx b/src/java/com/twitter/search/earlybird_root/RealtimeRootService.docx new file mode 100644 index 0000000000000000000000000000000000000000..ccef1058b59bf4347d53b5e5a3858b193f83c907 GIT binary patch literal 37987 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeRootService.java b/src/java/com/twitter/search/earlybird_root/RealtimeRootService.java deleted file mode 100644 index e13379337..000000000 --- a/src/java/com/twitter/search/earlybird_root/RealtimeRootService.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - - -import com.twitter.finagle.Service; -import com.twitter.finagle.mtls.authorization.server.MtlsServerSessionTrackerFilter; -import com.twitter.search.common.clientstats.FinagleClientStatsFilter; -import com.twitter.search.common.root.LoggingFilter; -import com.twitter.search.common.root.RequestValidationFilter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird.thrift.EarlybirdStatusResponse; -import com.twitter.search.earlybird_root.caching.FacetsCacheFilter; -import com.twitter.search.earlybird_root.caching.RecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceZeroResultsCacheFilter; -import com.twitter.search.earlybird_root.caching.StrictRecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.TermStatsCacheFilter; -import com.twitter.search.earlybird_root.caching.TopTweetsCacheFilter; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.ClientIdTrackingFilter; -import com.twitter.search.earlybird_root.filters.ClientRequestTimeFilter; -import com.twitter.search.earlybird_root.filters.DeadlineTimeoutStatsFilter; -import com.twitter.search.earlybird_root.filters.DropAllProtectedOperatorFilter; -import com.twitter.search.earlybird_root.filters.EarlybirdFeatureSchemaAnnotateFilter; -import com.twitter.search.earlybird_root.filters.InitializeRequestContextFilter; -import com.twitter.search.earlybird_root.filters.MetadataTrackingFilter; -import com.twitter.search.earlybird_root.filters.NullcastTrackingFilter; -import com.twitter.search.earlybird_root.filters.PostCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.PreCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.QueryLangStatFilter; -import com.twitter.search.earlybird_root.filters.QueryOperatorStatFilter; -import com.twitter.search.earlybird_root.filters.RequestResultStatsFilter; -import com.twitter.search.earlybird_root.filters.ResponseCodeStatFilter; -import com.twitter.search.earlybird_root.filters.SearchPayloadSizeLocalContextFilter; -import com.twitter.search.earlybird_root.filters.StratoAttributionClientIdFilter; -import com.twitter.search.earlybird_root.filters.TopLevelExceptionHandlingFilter; -import com.twitter.util.Future; - -@Singleton -public class RealtimeRootService implements EarlybirdService.ServiceIface { - - private final Service allFiltersAndService; - - @Inject - public RealtimeRootService( - TopLevelExceptionHandlingFilter topLevelExceptionHandlingFilter, - ResponseCodeStatFilter responseCodeStatFilter, - LoggingFilter loggingFilter, - RequestValidationFilter validationFilter, - MtlsServerSessionTrackerFilter mtlsFilter, - FinagleClientStatsFilter finagleStatsFilter, - InitializeFilter initializeFilter, - InitializeRequestContextFilter initializeRequestContextFilter, - QueryLangStatFilter queryLangStatFilter, - DropAllProtectedOperatorFilter dropAllProtectedOperatorFilter, - QueryOperatorStatFilter queryOperatorStatFilter, - RequestResultStatsFilter requestResultStatsFilter, - PreCacheRequestTypeCountFilter preCacheCountFilter, - RecencyCacheFilter recencyCacheFilter, - RelevanceCacheFilter relevanceCacheFilter, - RelevanceZeroResultsCacheFilter relevanceZeroResultsCacheFilter, - StrictRecencyCacheFilter strictRecencyCacheFilter, - FacetsCacheFilter facetsCacheFilter, - TermStatsCacheFilter termStatsCacheFilter, - TopTweetsCacheFilter topTweetsCacheFilter, - PostCacheRequestTypeCountFilter postCacheCountFilter, - ClientIdTrackingFilter clientIdTrackingFilter, - MetadataTrackingFilter metadataTrackingFilter, - NullcastTrackingFilter nullcastTrackingFilter, - ClientRequestTimeFilter clientRequestTimeFilter, - DeadlineTimeoutStatsFilter deadlineTimeoutStatsFilter, - EarlybirdFeatureSchemaAnnotateFilter featureSchemaAnnotateFilter, - SearchPayloadSizeLocalContextFilter searchPayloadSizeLocalContextFilter, - @Named(ProtectedScatterGatherModule.NAMED_SCATTER_GATHER_SERVICE) - Service scatterGatherService, - StratoAttributionClientIdFilter stratoAttributionClientIdFilter) { - this.allFiltersAndService = - loggingFilter - .andThen(topLevelExceptionHandlingFilter) - .andThen(stratoAttributionClientIdFilter) - .andThen(clientRequestTimeFilter) - .andThen(searchPayloadSizeLocalContextFilter) - .andThen(responseCodeStatFilter) - .andThen(requestResultStatsFilter) - .andThen(validationFilter) - .andThen(mtlsFilter) - .andThen(finagleStatsFilter) - .andThen(clientIdTrackingFilter) - .andThen(metadataTrackingFilter) - .andThen(initializeFilter) - .andThen(initializeRequestContextFilter) - .andThen(deadlineTimeoutStatsFilter) - .andThen(queryLangStatFilter) - .andThen(nullcastTrackingFilter) - .andThen(dropAllProtectedOperatorFilter) - .andThen(queryOperatorStatFilter) - .andThen(preCacheCountFilter) - .andThen(recencyCacheFilter) - .andThen(relevanceCacheFilter) - .andThen(relevanceZeroResultsCacheFilter) - .andThen(strictRecencyCacheFilter) - .andThen(facetsCacheFilter) - .andThen(termStatsCacheFilter) - .andThen(topTweetsCacheFilter) - .andThen(postCacheCountFilter) - .andThen(featureSchemaAnnotateFilter) - .andThen(scatterGatherService); - } - - @Override - public Future getName() { - return Future.value("realtime root"); - } - - @Override - public Future getStatus() { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public Future search(EarlybirdRequest request) { - return allFiltersAndService.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.docx b/src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..1551809f36062d65386e7236bc19c846050ea7d5 GIT binary patch literal 38047 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.java b/src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.java deleted file mode 100644 index 16463e4bc..000000000 --- a/src/java/com/twitter/search/earlybird_root/RealtimeScatterGatherModule.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import javax.annotation.Nullable; -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Provides; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.PartitionConfig; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.RequestSuccessStats; -import com.twitter.search.common.root.RootClientServiceBuilder; -import com.twitter.search.common.root.ScatterGatherService; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird.thrift.ExperimentCluster; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.RequestContextToEarlybirdRequestFilter; -import com.twitter.search.earlybird_root.filters.ScatterGatherWithExperimentRedirectsService; - -public class RealtimeScatterGatherModule extends ScatterGatherModule { - private static final Logger LOG = - LoggerFactory.getLogger(RealtimeScatterGatherModule.class); - - /** - * Provides a scatter gather service for the realtime cluster that redirects to experimental - * clusters when the experiment cluster parameter is set on the EarlybirdRequest. - * - * Note: if an alternate client is specified via altPartitionConfig or - * altRootClientServiceBuilder, it will be built and used for the "control" cluster, but the - * experiment cluster takes precedence (if the experiment cluster is set on the request, the - * alternate client will never be used. - */ - @Provides - @Singleton - @Named(NAMED_SCATTER_GATHER_SERVICE) - @Override - public Service provideScatterGatherService( - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - PartitionConfig partitionConfig, - RootClientServiceBuilder rootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_EXP_CLUSTER_CLIENT) - RootClientServiceBuilder - expClusterRootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider) { - - - Service controlService = - buildScatterOrSplitterService( - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - partitionConfig, - rootClientServiceBuilder, - altPartitionConfig, - altRootClientServiceBuilder, - statsReceiver, - cluster, - decider - ); - - Map> - experimentScatterGatherServices = new HashMap<>(); - - LOG.info("Using ScatterGatherWithExperimentRedirectsService"); - LOG.info("Control Partition Path: {}", partitionConfig.getPartitionPath()); - - Arrays.stream(ExperimentCluster.values()) - .filter(v -> v.name().toLowerCase().startsWith("exp")) - .forEach(experimentCluster -> { - String expPartitionPath = partitionConfig.getPartitionPath() - + "-" + experimentCluster.name().toLowerCase(); - - LOG.info("Experiment Partition Path: {}", expPartitionPath); - - experimentScatterGatherServices.put(experimentCluster, - createScatterGatherService( - "", - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - partitionConfig.getNumPartitions(), - expPartitionPath, - expClusterRootClientServiceBuilder, - statsReceiver, - cluster, - decider, - experimentCluster.name().toLowerCase())); - }); - - return new ScatterGatherWithExperimentRedirectsService( - controlService, - experimentScatterGatherServices); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/RootResponseClassifier.docx b/src/java/com/twitter/search/earlybird_root/RootResponseClassifier.docx new file mode 100644 index 0000000000000000000000000000000000000000..0eebef1b803a7b2a38e1d92692302217c61ea502 GIT binary patch literal 37463 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

    1Uf#c)X^*+9ucR0x|^^^DWEkI~&@JawO0U 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 L2+ST2dO0C literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/RootResponseClassifier.java b/src/java/com/twitter/search/earlybird_root/RootResponseClassifier.java deleted file mode 100644 index f9578b648..000000000 --- a/src/java/com/twitter/search/earlybird_root/RootResponseClassifier.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.twitter.search.earlybird_root; - -import scala.PartialFunction; -import scala.runtime.AbstractPartialFunction; - -import com.twitter.finagle.service.ReqRep; -import com.twitter.finagle.service.ResponseClass; -import com.twitter.finagle.service.ResponseClasses; -import com.twitter.finagle.service.ResponseClassifier; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.util.Try; - -public class RootResponseClassifier extends AbstractPartialFunction { - private static final PartialFunction DEFAULT_CLASSIFIER = - ResponseClassifier.Default(); - - private static final SearchRateCounter NOT_EARLYBIRD_REQUEST_COUNTER = - SearchRateCounter.export("response_classifier_not_earlybird_request"); - private static final SearchRateCounter NOT_EARLYBIRD_RESPONSE_COUNTER = - SearchRateCounter.export("response_classifier_not_earlybird_response"); - private static final SearchRateCounter NON_RETRYABLE_FAILURE_COUNTER = - SearchRateCounter.export("response_classifier_non_retryable_failure"); - private static final SearchRateCounter RETRYABLE_FAILURE_COUNTER = - SearchRateCounter.export("response_classifier_retryable_failure"); - private static final SearchRateCounter SUCCESS_COUNTER = - SearchRateCounter.export("response_classifier_success"); - - @Override - public boolean isDefinedAt(ReqRep reqRep) { - if (!(reqRep.request() instanceof EarlybirdService.search_args)) { - NOT_EARLYBIRD_REQUEST_COUNTER.increment(); - return false; - } - - if (!reqRep.response().isThrow() && (!(reqRep.response().get() instanceof EarlybirdResponse))) { - NOT_EARLYBIRD_RESPONSE_COUNTER.increment(); - return false; - } - - return true; - } - - @Override - public ResponseClass apply(ReqRep reqRep) { - Try responseTry = reqRep.response(); - if (responseTry.isThrow()) { - return DEFAULT_CLASSIFIER.apply(reqRep); - } - - // isDefinedAt() guarantees that the response is an EarlybirdResponse instance. - EarlybirdResponseCode responseCode = ((EarlybirdResponse) responseTry.get()).getResponseCode(); - switch (responseCode) { - case PARTITION_NOT_FOUND: - case PARTITION_DISABLED: - case PERSISTENT_ERROR: - NON_RETRYABLE_FAILURE_COUNTER.increment(); - return ResponseClasses.NON_RETRYABLE_FAILURE; - case TRANSIENT_ERROR: - RETRYABLE_FAILURE_COUNTER.increment(); - return ResponseClasses.RETRYABLE_FAILURE; - default: - SUCCESS_COUNTER.increment(); - return ResponseClasses.SUCCESS; - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/ScatterGatherModule.docx b/src/java/com/twitter/search/earlybird_root/ScatterGatherModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..455d95fc6b6f38327a6bb428c33d24e9974202c4 GIT binary patch literal 38279 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 z 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 UJ{vfLHf9wcV6!nd<2LU81@GmwQ~&?~ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/ScatterGatherModule.java b/src/java/com/twitter/search/earlybird_root/ScatterGatherModule.java deleted file mode 100644 index a0bfa07ac..000000000 --- a/src/java/com/twitter/search/earlybird_root/ScatterGatherModule.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nullable; -import javax.inject.Named; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.PartitionConfig; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.RequestSuccessStats; -import com.twitter.search.common.root.RootClientServiceBuilder; -import com.twitter.search.common.root.ScatterGatherService; -import com.twitter.search.common.root.SplitterService; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.config.TierConfig; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.RequestContextToEarlybirdRequestFilter; - -public abstract class ScatterGatherModule extends TwitterModule { - private static final Logger LOG = LoggerFactory.getLogger(ScatterGatherModule.class); - - private static final String SEARCH_METHOD_NAME = "search"; - protected static final String ALT_TRAFFIC_PERCENTAGE_DECIDER_KEY_PREFIX = - "alt_client_traffic_percentage_"; - static final String NAMED_SCATTER_GATHER_SERVICE = "scatter_gather_service"; - - /** - * Provides the scatterGatherService for single tier Earlybird clusters (Protected and Realtime). - */ - public abstract Service provideScatterGatherService( - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - PartitionConfig partitionConfig, - RootClientServiceBuilder rootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_EXP_CLUSTER_CLIENT) - RootClientServiceBuilder - expClusterRootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider); - - protected final Service buildScatterOrSplitterService( - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - PartitionConfig partitionConfig, - RootClientServiceBuilder rootClientServiceBuilder, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - @Named(EarlybirdCommonModule.NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider - ) { - ScatterGatherService scatterGatherService = - createScatterGatherService( - "", - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - partitionConfig.getNumPartitions(), - partitionConfig.getPartitionPath(), - rootClientServiceBuilder, - statsReceiver, - cluster, - decider, - TierConfig.DEFAULT_TIER_NAME); - - if (altPartitionConfig == null || altRootClientServiceBuilder == null) { - LOG.info("altPartitionConfig or altRootClientServiceBuilder is not available, " - + "not using SplitterService"); - return scatterGatherService; - } - - LOG.info("alt client config available, using SplitterService"); - - ScatterGatherService altScatterGatherService = - createScatterGatherService( - "_alt", - scatterGatherSupport, - requestSuccessStats, - partitionLoggingSupport, - requestContextToEarlybirdRequestFilter, - partitionAccessController, - altPartitionConfig.getNumPartitions(), - altPartitionConfig.getPartitionPath(), - altRootClientServiceBuilder, - statsReceiver, - cluster, - decider, - TierConfig.DEFAULT_TIER_NAME); - - return new SplitterService<>( - scatterGatherService, - altScatterGatherService, - decider, - ALT_TRAFFIC_PERCENTAGE_DECIDER_KEY_PREFIX + cluster.getNameForStats()); - } - - protected ScatterGatherService - createScatterGatherService( - String nameSuffix, - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - RequestSuccessStats requestSuccessStats, - PartitionLoggingSupport partitionLoggingSupport, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - PartitionAccessController partitionAccessController, - int numPartitions, - String partitionPath, - RootClientServiceBuilder rootClientServiceBuilder, - StatsReceiver statsReceiver, - EarlybirdCluster cluster, - SearchDecider decider, - String clientName) { - rootClientServiceBuilder.initializeWithPathSuffix(clientName + nameSuffix, - numPartitions, - partitionPath); - - ClientBackupFilter backupFilter = - new ClientBackupFilter( - "root_" + cluster.getNameForStats(), - "earlybird" + nameSuffix, - statsReceiver, - decider); - - ClientLatencyFilter clientLatencyFilter = new ClientLatencyFilter("all" + nameSuffix); - - List> services = new ArrayList<>(); - for (Service service - : rootClientServiceBuilder - .safeBuildServiceList(SEARCH_METHOD_NAME)) { - services.add(requestContextToEarlybirdRequestFilter - .andThen(backupFilter) - .andThen(clientLatencyFilter) - .andThen(service)); - } - services = SkipPartitionFilter.wrapServices(TierConfig.DEFAULT_TIER_NAME, services, - partitionAccessController); - - return new ScatterGatherService<>( - scatterGatherSupport, - services, - requestSuccessStats, - partitionLoggingSupport); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SkipPartitionFilter.docx b/src/java/com/twitter/search/earlybird_root/SkipPartitionFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..dcca887ef4a184a91febd4e9f134d6b3ab19e901 GIT binary patch literal 37567 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 { - - private static final Logger LOG = LoggerFactory.getLogger(SkipPartitionFilter.class); - - private final String tierName; - private final int partitionNum; - private final PartitionAccessController controller; - - private SkipPartitionFilter(String tierName, int partitionNum, - PartitionAccessController controller) { - this.tierName = tierName; - this.partitionNum = partitionNum; - this.controller = controller; - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - EarlybirdRequest request = requestContext.getRequest(); - if (!controller.canAccessPartition(tierName, partitionNum, request.getClientId(), - EarlybirdRequestType.of(request))) { - return Future.value(EarlybirdServiceScatterGatherSupport.newEmptyResponse()); - } - - return service.apply(requestContext); - } - - /** - * Wrap the services with a SkipPartitionFilter - */ - public static List> wrapServices( - String tierName, - List> clients, - PartitionAccessController controller) { - - LOG.info("Creating SkipPartitionFilters for cluster: {}, tier: {}, partitions 0-{}", - controller.getClusterName(), tierName, clients.size() - 1); - - List> wrappedServices = new ArrayList<>(); - for (int partitionNum = 0; partitionNum < clients.size(); partitionNum++) { - SkipPartitionFilter filter = new SkipPartitionFilter(tierName, partitionNum, controller); - wrappedServices.add(filter.andThen(clients.get(partitionNum))); - } - - return wrappedServices; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootAppMain.docx b/src/java/com/twitter/search/earlybird_root/SuperRootAppMain.docx new file mode 100644 index 0000000000000000000000000000000000000000..781d2e809e6fdc64e6252fa2e2c8eb0f7f45a0b3 GIT binary patch literal 37173 zcmagFWmsIvwm*z(a1HM6?hb+A?h-U;<4)tj-QC^Y-8}?%3y?r?_kU+*&N(yZ-uu2^ zHV;*`ezMl?s@l7&m1H5IFu}mU;K1(FxV5TOisF*M!NA60z`!s-t-9g>J7+UHXG1j) zdow3}CU;w#rX+dAH4)S=XD?XE%t9ny;wV_w2ssjFf%(20kG;Zy|2p+jp5X1Vh^$?ertjz+2X z=s)j|E4jW*`nr)li2F%qzbrFRX=GVvAhi4Qq=p%tt4n<`YK$Lrs&k#9Z*a6wcc@?M zD?)Z3Mg*XK`)=FI-Ta)q?WDTj zD9RU3b>TXd4$+w8F?L?=H-{r}GM}5=Al(&S2?d`{2}3~|f0042`wQf!gHO<_xcBe; ztM8IVmk{cEUMktx7aqSO%YVX@Hvm)m zM-@G&WJT^l)!T#s149J;HFPwyabjlreXWY0`UuI2>USn2IZ9b#*Q_p4xMCpjL%vX` zH+Ax~*bXRNyxQHRETON3-A8nIwr66#m{EYgOkZphsA;Ud5RkXjr?o|U(b!?Q4wnqy z=}+pewi~2vlOAzHjx1tEb;o6{K_W!Ii7}*0+i*H7S}i7FNM|dJTpCoCfOd`OOrz=I z!#D?k0Z7R;bB32xwSBj73%?g`c9u5s6FG{tM^jBxFlEKzDMXfWz_=EdIh=_uk8R7u zZh!1h`m9@V!So|gTv64)o#Gm1suO*X$D&c7WVUth!vP}&`IM&Tw7JV>pt7(14AC!^ zx|B1WrkG_PxUpGXuCsq8DD(@WswL<)p9Lid4U`~LfQgbLz}|`31mI})`zFtdpHLWJ zL6yAomYkQ@2)jasla!$YKMMaSjp@JKcFVyjZ!?k2HMO-@XseS;?@F}AKXPR+w87of z0%;N)A50t)cjj*zj;M|Gx@L^M{**0A$6J*Y)PL6dICn{9!Dlkw8=;K%4xu(1QYM2{ zUv4p!k9@G6lVkqNG-+0=N^#x~F;z7Al`k41@igt^NF@81v_Jj*iNX@d;~UV*T8fFl zGSN!&z{8RUKgmrSK+P>zzy~_+*g(1BRqH73{@B!I#anAeT63;#e>Ayd^#u~@AO-#U zFl3~1kZDF!3&Tcm;`#vn4h5WDL^(~xtyP0$Xc8w%#A$c5jR1L5csUbyXy-} z){I0M%o5Q|D4BNYZw%d2`9B(b-#)y)UnZcx=e~f#J+eSHpq+CQe|_%1#Q$equGiLZ zjzM*?fdT_V{d-+L+1vk77PSexH5Sy)CweG-=Wt6{QDxltfJM<+@eRD%_{^61ak7tb zP;IQcK%a+DEZ#57H(~q@{7;SJPfMcau#F0z)v+cX@<){%HV~R>!bc9)rVh!Rpvs}k zur!9y^c@Um#;X=!7~!4MG?l8yy~rAjCohO#?VS|qXPj4&MK&9~iaQkSy}v%2iAer( zt-BvQPf}`H-b__yQ4Ftue5v_d;ZZsx$oXOK=14m^2?<#W;?oN|)PzTcCCy5x6plOz zKC4mJ`Q&FPD?~5nn|jlqXt@@)x;O%JYXV5J?6 z!e@F`NV0CCw&LS1QzfZj^)NL>GU1akF+RNs?WyMBq4<)HzJhKPRt_f~nk(f_Ft81L zA3zPAXf24V^ubkUm-y~8-U}+zg)Qsh_JfNc;*lE+53scXo+#x6-sWX2a)QXe)n+Rt zNoY!Qi-JES6Gz?4MlmjBa7{+INby5gX9n{#GtoJG#={l<+rrH+;(y*4Rbz_sqM(~% z7w^vxtQ)}5lo|A?b+H94PQUMr6YVY4JuXz>nPJ}80CcJ`zlak@tWr8XxAS-+`s4gh zXG{+hL{nMnv5TUt*E9XG2bXn<0ZJaTVxPLAq}#cYjRmW{OhfNUsP}~BrjvPs;j`5{~8m_Cm|=vNbJ~mGWe3mKo!6vwrbvNVb%tYXS; zY`>X2V$F|frKvR^Y$RvSLjzN-1w#5utfx~MU=7>SER&-$Y%JF9bg-@bhg-xuril-= zQsKIxtd9!ztI|$J->Hdw=s@K2dy+QSL?o)oW7w$E z>aQ>qYw^)amgq++Oz=Kg>wLPxWU{x0(OnU0uU`B^%iS?SymT5IocpU^W&r+s90&u* z8fyQ5e7OVvhczVdC|jlNT=;4l zNbA#Waq!_ykDZ8CfHj(vXt9 zRBG;UtZ1GHGocFvG2?euWC3{yK#*X@j4Le0b;e+JT#rF-{b~3KZs*9klp0>7IN%x% z9tGJ-f*SU_*BJEYU`|?8hNMt=|L0Kdu^nkAj=T&Va)v`5y0FU>cIKBj`fM^1nN29~oy4mdhQ_sX^SbMYm;$OHy)sxrAiG zLDR@q`bMmx&=>`LtwGL<)>DC2fkLG0n?&z<4+u_b5{!xDAeIrf=;6>h;hv>Mp!upgP(s)J6drpP;3YBl~=e1A)K!<0dM*MIMh%O{80c5doc zb#ap)m%j0108bDF?ahC}> zz)s$Le}EanMr%-q{Nl zLU>OovV>rlmr%=Ec|!BUv0(psD!M-jwJo;OYN^J7(Yh?p>h)|56z@aeH|BrlI;sMj zKY|$y%s?F)4CPFLQYFns=Q8yf^RGHnMI?@I8=t1G+i zj9s36?$_6^IGqE@j!_(4Pbct}w z@t*$u!^TBN%0kD};oQ%gj*yVOBafGQfmhqN_RU~s;3}~}a>@D3z+p(r{?5eOaZAO^ z#PMaL$GQ!7i7;_xUvHP<7v9jw`nPM#1|6@bg|!J!w{YP%do92K+Fi%q)xnMX`;&^% z&xUs)B})UqCLy8$3*bujh?lmV>(Zw$3ZHUQrjBZbPldByv4!LuKU^s7jD!T<8#1pw zfke4&`EH(|OpKg7ZuszgeGwL$5zs^o@eXPporS~?}3a|e9a`6gaRiZIY4LaoD_{{(}yCM@>476rN}} zt$6(AV{ir(tj@7pdczp(PL6C{?Kx36T#Eth-hY3q)9I1Q#_w*|mEwA!eeC7(ykn)L ze!X8iaOFNkr;u zybM~sf78F8lwO7vvQt=dF@wOPD{iMa*?Q>|U=Suwu9gwm|fKw(1eQ+B=k!IA}z=3-?QRWqmdLZJ;*Zq4+ z-*e(6#f+Ae2rH0Ki568eiRn zN67@m?14DiFS7~pFYFVJcu*(_XdLYyp*kS6U=Z#)P4oVT#Q#9WdR|sz2c&>T{au(VK1h!WD#$Bl<99|9M8^M;$VdW5?STmQhwAwR zwt%$QTSMz4x2HhYS>;`cOuGW}@U{pQ4#KSByG%;<_gEj^_I;Gc z5zbhjuUve+-OgGQC{T(vokD9DZx~hA2r0(fBQ=*3usf{k$*0<0`!?c+m2c_P1{{;t zH;+!-S9=Ddlkaj9zg<%C^fiBoJ(K;S2Q-Qdd#F>vC!Yw6DQA{fTtR08*!@cq;Gqt>4>H` zcF-Ol_48wMUbU&qKoVxw;0|9{;7^KZzl3$^jAkK|<0JNrE8n&AT(qS?sZ=74qc5<$ zkM2stvJ4~0(_2z-+j$Ot+uTe`06n=LhmIX?a-Zj7iY1OSNt0@vDAume>qyLwQRie9 zs4oXyKQNDW55$SNl|K~lenFIPW#Z^_&XeKR`&=1=NNZmW9_WOG>TNlGQ$$by_M_w2n>fub$hjUhl;`Hlwv z{ZEGs%sJwgtuwN>*Yx?08Mnvlk;~W1;UUkC7Y7gE-D}d@;>qLO&*vk1mQS6pt-@Ki z%+E6;(4MbgC@UErtwKH?IUNb#dfJv}ex8gyj4hUe%=Wl6E=vAj| zLDw17N7lq?lSf|SX5~|gVOW25bmAyxub@g+lQ{R$nrSpnA6f}JT5aJ3Y#t-x{ybvS zvK$V`-H%nwe5+f*?r~Q%m?sx4^*&a&Pu?l@<0ODtMAaLoNk?SU`2G-KB{lj;xFvrr zhk&P>M)-zS)a|l6fzP>AT0@70S!KrWm%BN*A5-d%#yCW*rub5iBDf{|^1elUS{QKM z-=^%iP*ALY%SJGMIlf}^L%#DezW3`mgPv;4uSpF1qSy%xjK?9NfE{)w{yK|zh8{4*cVa(V5s#*pI0U8apZMa|FL5M_4H zZHbYGAQvvth{j=BE|Nl3hZKVW#hs{5BS94kZda z9aIk&&+}M@%o1Iqo5&gLWeRvGdesyX*9c#0vA2`#?<(oPzfc3QiWc3jlxdH$Z>zW# z#*jO&W|=&SvT8Jnh~sL;cH_p4=i^s-vS@0*^M`@f4g;p}Bi9yc6D!4qH5ICD`YAX` zvs;n_7Z>fBJ(8+Jht|F{2?bZiqHM!9!R)uS(E~9V`sj~UJYw~`rHC4pzShZwC+jL} zZPLw79Y!6++$%CVj(S#Otnrj1ge?@WQrt4^3LmFu=KXMDqoI~96Ny0 zLITq49P8xE8fq>pM+0so4Dtu|l$*4+$*NNgZyzjvM|yfWtisarn64FA9l}JoBQjL->1WfR zB(o%H21l@1)Z^{E`#c_%_wVR%8Iiv8nM{J7bZ&N@^_|z>7eLq|t9-s{p5pkK0sdG? zGi~Pk_{{VV9UkkUmeyVT zElLzC8<|s$7VygX4u-E z#>qZtD!1uncf9JJK8i~bqu?+K79x$Y9=pnDoMfx-86lk=b@#*M69sV0o21@`^i-i7 zCPiQ!Sl}TV*5vu*)L@)ibr=v`o>M(v&6(q4bp5!qx*_RK&7v%@K3t6;)H9PQJA8RP z*F0N*3^w1Ij(1d`mFOV&IxKW9;ZzCpgVmf$2jhPAU3|ObxL?q6W5ybEC%COEPOM~U z6oc&O6z=EU6@%?3-p}zl>`##!N?3)Vn_9ZtxId!0Fch4wxm;|PT-~>@T;RIky=h@& zwvz_XJ?9*van4~Hc@0Fc^SJ97^0-ZU!-#{MfELq*C#q@v@WcfW%GRQTmQB6f)?d%xe<0(i1wuKe14l$kV|RWov_f<=i{H? zyMFSFAi6`Y5-^iQe8txWVY6-zB6fxee+s~$c515mfut@P{==5y%cc}nKDQT-L$MPG z$NvyHm)k-}mqBkcFaX1Szcy&oIdcz`BY=xq6N4DQR9g&i;D<4h1HA&RH^kep^aDv1 z1T%#t4yX?MG1am$wCnKMmqcOOZPr5&L7lO_@8cUVN_PPL+~Ow zke?kXC_{ZO(}8-`-QGgKw)*A9aw*fCX){|Lx#R&!De^n!e&r=EYkN}*`UpkfO`s*|ZnD5#vazaC7Cif?qo<5k?Qouw-%SY^TdtG$4GWS}@PW zz!hmy4p0U4$_*N2o5kz15RUe5(q#$^+zZ}Q9qCWPRv%wu-F&=__}a1ZZuGb;SRO|i z01C%`=OfkiM|kO9;q(6v|M5FKkVven+=uJh?i=K#r`5}xKM_1IhQk>1@P^B6xU-YgFeE-gD9V!>Jn}f=9+lN_;d0B8~ z%<~{mOXS&sq9e&JQ+|rIvRnfL#Zr!=VD2EY`HIyg$+KdmS{K22tMb57Zi@w*ibSCT z0|fUxKk9i|r%)m$^{aM+dcx=vH6`Yn6b-zaetb)`BlVMz0ylQX*d^77YNq_nO!Wpv z^T$X}+U;P7Y$fI?QqNYkuF@2n5L153`KOwJgRnr?y_8&%yZZh#5hhL=wD;^wS12y? zTS^}&Ntj@1Q2Kywd{Th~ni*3g(nV*dhRJUm#G5l>R}ux4;*qTUcF8|+UcT#GKRR7Y z9Z+kIs2*K8Ic+HgaabX~f_5-jct{My7LH6)18 zO%>>`V`Xi|A4V2w;pKm3_+gp|DYm=ZvMt8DK)t-AZe~IAkvwN^@bHKR;&OGSB*O3f z_DT(kVL5Yk1|brG4gw*D{(aFrQ%*P$)d%htxKdg73U$GwUlIzEB79!{{iOWDKXfDt z$Vi|K6Z%A`BR_+v0wRgsn@3Kw)4Iwn(PID214Z#K9)&#_9Ppiz3njE#Bd4QbW)`|q zI2w?p#BV=E)vj51+uI~X^!s(Ij+77k7}TKD7$A;tQ81C!pytnCpIF~pVtcP*gO9n! zHz&}JwsxOIRg+twM9Ud2G{Q-D&(bZ-Egv4yL&VQm?mD?(f_sEu6oXt1z?Z>k)$$T5 zQ2dAOQ}}LVd=6n?oRMl9%j_#u1#1va>@|N;%i4@PrGd#sXiX{Xerw zGYXY`<{o%F`ZFLhqwRkw9!t2NaCHtBfSEWuMRA7^I|fFm$2+C7+Mem$?2I$%&5m+Q z^g5%(_4f0*6GAHN_G)|MJEbyx9fZP5CPt`cppwcv_2=(&1eV7$P5{uWaS&sHQ-gfY41qP`t$OQb4M(Knr6_gRQ*#r|NtmjuIVMCbp zJL?7vRGA9?T&tK6aS&-@B#vOJa1!rAhei>}u;;L_#p6~KOc$Xc9AVkbVtyU5N05Ht z?wt)A`r)-}qRJpu!w%bI$~shV=FR{E1S6_T730c;Nm$8LopbnFj2eph)jt7@Hx`2i z+*pJ`$^f-4wYnBJeA1PyfeAI1Uz^P9K>BYQ$t%)zl#7@0WPbZz5&Z4DFGNeu!RN%3 z^_;+!i{MY+l4Br9(1o?uhxJ=P=#X>pkdkRLMq1NJ#8~t2G?)C@-&7t*{Z^?;+z3)R z0Q*}d6nI^#@krZGZ0;rmJ+K5|3VNwi#-a)x@NC z(MtfPpHs~OWHh9E(80gDT)%fl&R=^uT}0DU;kzhiKNnMQFsunTnc9XrS*1$JN2+DK zfmt5p3bRFD`=#?SUfagZ0K<4ULu;72+cI

    s}JB1!Fnov`l8h8c85e39w!BAalXc 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 T1?C`7t`cNO1ZIzYJs=(c;4_%T literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootAppMain.java b/src/java/com/twitter/search/earlybird_root/SuperRootAppMain.java deleted file mode 100644 index 26ab5e5bb..000000000 --- a/src/java/com/twitter/search/earlybird_root/SuperRootAppMain.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.Arrays; -import java.util.Collection; - -import com.google.inject.Module; - -import com.twitter.search.common.root.SearchRootAppMain; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.routers.FacetsRequestRouterModule; -import com.twitter.search.earlybird_root.routers.RecencyRequestRouterModule; -import com.twitter.search.earlybird_root.routers.RelevanceRequestRouterModule; -import com.twitter.search.earlybird_root.routers.TermStatsRequestRouterModule; -import com.twitter.search.earlybird_root.routers.TopTweetsRequestRouterModule; - -public class SuperRootAppMain extends SearchRootAppMain { - /** - * Boilerplate for the Java-friendly AbstractTwitterServer - */ - public static class Main { - public static void main(String[] args) { - new SuperRootAppMain().main(args); - } - } - - @Override - protected Collection getAdditionalModules() { - return Arrays.asList( - new EarlybirdCommonModule(), - new SuperRootAppModule(), - new TermStatsRequestRouterModule(), - new RecencyRequestRouterModule(), - new RelevanceRequestRouterModule(), - new TopTweetsRequestRouterModule(), - new FacetsRequestRouterModule(), - new QuotaModule()); - } - - @Override - protected Class getSearchRootServerClass() { - return SuperRootServer.class; - } - - @Override - protected Class getServiceIfaceClass() { - return EarlybirdService.ServiceIface.class; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootAppModule.docx b/src/java/com/twitter/search/earlybird_root/SuperRootAppModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..723db20bf8275c7d010bece4d84580252eac8088 GIT binary patch literal 38863 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 rootRealtimeFlag = createFlag( - "root-realtime", - "", - "Override the path to root-realtime", - Flaggable.ofString()); - private final Flag rootProtectedFlag = createFlag( - "root-protected", - "", - "Override the path to root-protected", - Flaggable.ofString()); - private final Flag rootArchiveFullFlag = createFlag( - "root-archive-full", - "", - "Override the path to root-archive-full", - Flaggable.ofString()); - private final Flag penguinVersionsFlag = createMandatoryFlag( - "penguin_versions", - "Penguin versions to be tokenized", - "", - Flaggable.ofString()); - - @Override - public void configure() { - // SuperRoot uses all clusters, not just one. We bind EarlybirdCluster to null to indicate that - // there is not one specific cluster to use. - bind(Key.get(EarlybirdCluster.class)).toProvider(Providers.of(null)); - - bind(EarlybirdService.ServiceIface.class).to(SuperRootService.class); - } - - @Provides - SearchRootWarmup providesSearchRootWarmup( - Clock clock, - WarmupConfig config) { - return new EarlybirdWarmup(clock, config); - } - - @Provides - @Singleton - @Named(InjectionNames.REALTIME) - private EarlybirdService.ServiceIface providesRealtimeIface( - RemoteClientBuilder builder, - ResolverProxy proxy) throws Exception { - Name name = proxy.resolve(rootRealtimeFlag.apply()); - return builder.createRemoteClient(name, "realtime", "realtime_"); - } - - @Provides - @Singleton - @Named(InjectionNames.REALTIME) - private Service providesRealtimeService( - @Named(InjectionNames.REALTIME) - EarlybirdService.ServiceIface realtimeServiceIface, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - StatsReceiver statsReceiver, - SearchDecider decider) { - return buildClientService( - realtimeServiceIface, - new EarlybirdClusterAvailableFilter(decider, EarlybirdCluster.REALTIME), - new MarkTweetSourceFilter(ThriftTweetSource.REALTIME_CLUSTER), - new ServiceExceptionHandlingFilter(EarlybirdCluster.REALTIME), - new ServiceResponseValidationFilter(EarlybirdCluster.REALTIME), - new RequestTypeCountFilter(EarlybirdCluster.REALTIME.getNameForStats()), - requestContextToEarlybirdRequestFilter, - new UnsetSuperRootFieldsFilter(), - new ClientLatencyFilter(EarlybirdCluster.REALTIME.getNameForStats())); - } - - @Provides - @Singleton - @Named(InjectionNames.FULL_ARCHIVE) - private EarlybirdService.ServiceIface providesFullArchiveIface( - RemoteClientBuilder builder, - ResolverProxy proxy) throws Exception { - Name name = proxy.resolve(rootArchiveFullFlag.apply()); - return builder.createRemoteClient(name, "fullarchive", "full_archive_"); - } - - @Provides - @Singleton - @Named(InjectionNames.FULL_ARCHIVE) - private Service providesFullArchiveService( - @Named(InjectionNames.FULL_ARCHIVE) - EarlybirdService.ServiceIface fullArchiveServiceIface, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - StatsReceiver statsReceiver, - SearchDecider decider) { - return buildClientService( - fullArchiveServiceIface, - new EarlybirdClusterAvailableFilter(decider, EarlybirdCluster.FULL_ARCHIVE), - new MarkTweetSourceFilter(ThriftTweetSource.FULL_ARCHIVE_CLUSTER), - new ServiceExceptionHandlingFilter(EarlybirdCluster.FULL_ARCHIVE), - new ServiceResponseValidationFilter(EarlybirdCluster.FULL_ARCHIVE), - new RequestTypeCountFilter(EarlybirdCluster.FULL_ARCHIVE.getNameForStats()), - requestContextToEarlybirdRequestFilter, - // Disable unset followedUserIds for archive since archive earlybirds rely on this field - // to rewrite query to include protected Tweets - new UnsetSuperRootFieldsFilter(false), - new ClientLatencyFilter(EarlybirdCluster.FULL_ARCHIVE.getNameForStats())); - } - - @Provides - @Singleton - @Named(InjectionNames.PROTECTED) - private EarlybirdService.ServiceIface providesProtectedIface( - RemoteClientBuilder builder, - ResolverProxy proxy) throws Exception { - Name name = proxy.resolve(rootProtectedFlag.apply()); - return builder.createRemoteClient(name, "protected", "protected_"); - } - - @Provides - @Singleton - @Named(InjectionNames.PROTECTED) - private Service providesProtectedService( - @Named(InjectionNames.PROTECTED) - EarlybirdService.ServiceIface protectedServiceIface, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - StatsReceiver statsReceiver, - SearchDecider decider) { - return buildClientService( - protectedServiceIface, - new EarlybirdClusterAvailableFilter(decider, EarlybirdCluster.PROTECTED), - new MarkTweetSourceFilter(ThriftTweetSource.REALTIME_PROTECTED_CLUSTER), - new ServiceExceptionHandlingFilter(EarlybirdCluster.PROTECTED), - new ServiceResponseValidationFilter(EarlybirdCluster.PROTECTED), - new RequestTypeCountFilter(EarlybirdCluster.PROTECTED.getNameForStats()), - requestContextToEarlybirdRequestFilter, - new UnsetSuperRootFieldsFilter(), - new ClientLatencyFilter(EarlybirdCluster.PROTECTED.getNameForStats())); - } - - /** - * Builds a Finagle Service based on a EarlybirdService.ServiceIface. - */ - private Service buildClientService( - final EarlybirdService.ServiceIface serviceIface, - EarlybirdClusterAvailableFilter earlybirdClusterAvailableFilter, - MarkTweetSourceFilter markTweetSourceFilter, - ServiceExceptionHandlingFilter serviceExceptionHandlingFilter, - ServiceResponseValidationFilter serviceResponseValidationFilter, - RequestTypeCountFilter requestTypeCountFilter, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - UnsetSuperRootFieldsFilter unsetSuperRootFieldsFilter, - ClientLatencyFilter latencyFilter) { - Service service = - new Service() { - - @Override - public Future apply(EarlybirdRequest requestContext) { - return serviceIface.search(requestContext); - } - }; - - // We should apply ServiceResponseValidationFilter first, to validate the response. - // Then, if the response is valid, we should tag all results with the appropriate tweet source. - // ServiceExceptionHandlingFilter should come last, to catch all possible exceptions (that were - // thrown by the service, or by ServiceResponseValidationFilter and MarkTweetSourceFilter). - // - // But before we do all of this, we should apply the EarlybirdClusterAvailableFilter to see if - // we even need to send the request to this cluster. - return earlybirdClusterAvailableFilter - .andThen(serviceExceptionHandlingFilter) - .andThen(markTweetSourceFilter) - .andThen(serviceResponseValidationFilter) - .andThen(requestTypeCountFilter) - .andThen(requestContextToEarlybirdRequestFilter) - .andThen(latencyFilter) - .andThen(unsetSuperRootFieldsFilter) - .andThen(service); - } - - @Provides - public LoggingSupport provideLoggingSupport( - SearchDecider decider) { - return new EarlybirdServiceLoggingSupport(decider); - } - - @Provides - public ValidationBehavior provideValidationBehavior() { - return new EarlybirdServiceValidationBehavior(); - } - - /** - * Provides the penguin versions that we should use to retokenize the query if requested. - */ - @Provides - @Singleton - public PenguinVersionConfig providePenguinVersions() { - return SearchPenguinVersionsConfig.deserialize(penguinVersionsFlag.apply()); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootRequestTypeRouter.docx b/src/java/com/twitter/search/earlybird_root/SuperRootRequestTypeRouter.docx new file mode 100644 index 0000000000000000000000000000000000000000..388f6c202630d4d286ba1ad89534c4fad22dc4c7 GIT binary patch literal 37659 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 { - - private final Map routingMap; - - /** - * constructor - */ - @Inject - public SuperRootRequestTypeRouter( - FacetsRequestRouter facetsRequestRouter, - TermStatsRequestRouter termStatsRequestRouter, - TopTweetsRequestRouter topTweetsRequestRouter, - RecencyRequestRouter recencyRequestRouter, - RelevanceRequestRouter relevanceRequestRouter - ) { - routingMap = Maps.immutableEnumMap( - ImmutableMap.builder() - .put(EarlybirdRequestType.FACETS, facetsRequestRouter) - .put(EarlybirdRequestType.TERM_STATS, termStatsRequestRouter) - .put(EarlybirdRequestType.TOP_TWEETS, topTweetsRequestRouter) - .put(EarlybirdRequestType.RECENCY, recencyRequestRouter) - .put(EarlybirdRequestType.STRICT_RECENCY, recencyRequestRouter) - .put(EarlybirdRequestType.RELEVANCE, relevanceRequestRouter) - .build()); - } - - @Override - public Future apply(EarlybirdRequestContext requestContext) { - EarlybirdRequest request = requestContext.getRequest(); - if (request.getSearchQuery() == null) { - return Future.exception(new ClientErrorException( - "Client must fill in search Query object in request")); - } - - EarlybirdRequestType requestType = requestContext.getEarlybirdRequestType(); - - if (routingMap.containsKey(requestType)) { - RequestRouter router = routingMap.get(requestType); - return router.route(requestContext); - } else { - return Future.exception( - new ClientErrorException( - "Request type " + requestType + " is unsupported. " - + "Sorry this api is a bit hard to use.\n" - + "for facets, call earlybirdRequest.setFacetsRequest\n" - + "for termstats, call earluybirdRequest.setTermStatisticsRequest\n" - + "for recency, strict recency, relevance or toptweets,\n" - + " call req.setSearchQuery() and req.getSearchQuery().setRankingMode()\n" - + " with the correct ranking mode and for strict recency call\n" - + " earlybirdRequest.setQuerySource(ThriftQuerySource.GNIP)\n")); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootServer.docx b/src/java/com/twitter/search/earlybird_root/SuperRootServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..91b9463dd781ea45a329e3927189854c5c6e28aa GIT binary patch literal 37075 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 z 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 Sa}X$32{I%Cvqwx1hz9`0>S1I6 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootServer.java b/src/java/com/twitter/search/earlybird_root/SuperRootServer.java deleted file mode 100644 index e1e9ba266..000000000 --- a/src/java/com/twitter/search/earlybird_root/SuperRootServer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.twitter.finagle.Service; -import com.twitter.search.common.root.SearchRootServer; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.filters.QueryTokenizerFilter; -import com.twitter.search.queryparser.query.QueryParserException; - -@Singleton -public class SuperRootServer extends SearchRootServer { - private final QueryTokenizerFilter queryTokenizerFilter; - - @Inject - public SuperRootServer( - SuperRootService svc, - Service byteSvc, - QueryTokenizerFilter queryTokenizerFilter) { - super(svc, byteSvc); - - this.queryTokenizerFilter = queryTokenizerFilter; - } - - @Override - public void warmup() { - super.warmup(); - - try { - queryTokenizerFilter.performExpensiveInitialization(); - } catch (QueryParserException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootService.docx b/src/java/com/twitter/search/earlybird_root/SuperRootService.docx new file mode 100644 index 0000000000000000000000000000000000000000..e34d14d6323f48d056d5f44266c4f0165f052eb7 GIT binary patch literal 37913 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[iOxkIy2YiD`fex z_Z~a@8)ahw5|y^Llv;!LJJs#lcggf98@_0+uz`n^eT|!>+C$r^@@aKCd@`@u;RQE> zT@&^2T^4EOVYXl!XywYh!dF&KxP!X|*DQrCV>QRF+AylH^4*9}aK#-M*1^cN8;9bK zlnVQhlp2KW>I(ChBP(ikiv5nt%lRy1s(ls`Qt49{PWN9T^F_mCBBn^#2<>T%Sm|al z!^#49WVpC_&R3G;Ah{@{u0rHFJLUa$W**Z0yg2Y-nP_~|1F6U9YRw^LAY&{d;2fo3 z?N{mPc)tC5nl9qO___ty5QN;Jl;GTqxeD)A)2TpvMO5FLKU-OF8|Jq+C_qGxmXNm| zfz&}(jaTX_&6T{+Yo=KKP-c>A!-MCh72Z^vhq!wB#5SqiD!6 z`aiuW4h#5iSiRQ*ci>u3+@Bq0j=?GYrXOLIs5UIW2%;MnKIP`!5im0_tT&Gy&iM`CcG39|iM;yVY;@u9)2NfO{v>)hhR`1m zzFSJdh-&sus3N&{S0%NkN6LNmVF1>;dv5Q#`$kqzG`jod%MNtEuDb5XVX&7N6O>&x z2JiQ7w4VNOWOg?&_&$?!IjyF=;S^-@S=zVzAHMG&h)qP{Mq%8EUSSkJ3<{RvR|AEWq5zy!RfqhRyBWxsX>&j35nLt=1J`PHuZZAL*HH9dxzi~?@2|B z+egnQIdOPAygfu{Pz61mpYFQ1F3op)g1ox)Y>Cb_u8PEuV2a;q>;_q63p^EWYsLSR7r8zk=pMj zrHxeJPP<;LG7wL|e?dT30^f$H(WEkgS&^%5*&;Yhw^z48B9%L1PuuNFZhMkFP*ImZ zZ`s+z{OH}I5 z#)`>|!;&+&vSNaWFRYTaFW1tqu6g=5S42@#WQ<$2v%sHY`{fR7YKD`9cOt$u)7`a; zJv>!$o_s{P<}btHKwo~pwd|S~M@imo?u7J96~bbiUk@ zI;zxQd(r;9g7V9A7L_)EH+Li|pQ~-(*>;c0P(IeFZ;qk6NM~C;TYSO3%S#$-crPWE zql!J{tGM^(@z#R^Y4nkFYM{l!ijmSTK|x9GlXvV^hx9zxx#M8IAAoov9I=~X+i zA;|$t6>uxm6axBt+aJ>_iXQy)D4uNFSkzLXmSV&tWu8W`qmghuy*SQ} z+PU1uYh5;d*D`VEDkl`^UEf3m?2E6;$rD;$J-@6sS#e2hea>271LK(8tGna@|=?>4`wg0tFBsn0LZEJy6iebG8$}nIvCOA zcN{*uO;-vY(te&)6|G}TLO)kw9vJ*N7?)4s&;T-w+>S?F8Qsb zpKPjLXqu86qFLkmgtmHW&3w7eiVxcDhgqwr_KZF=6`s1RLGyP8BM~(3OOM4Sq19=VBl zr?on>*Mx`NXi4lerltD1&ZUC?6JkW*H$Nv&WD1SWndWb7micNcz( zEV(1#r`RpOR!x)mO}5SsBBCl{Yw2-mVDb84x5_g&sX5>ZwH?g4t%V&QKP0dX06dO? z$zXIa4s{kEf)4XsTb)4#cwGm(MetNMm`9fTNQ1v5k%yq-zcv2)(jE#XCCIs40#E4y zK_ww@9Bldj+2eO5bUhOd#orANt8qa*NE`qZh42`#<$v5KBxI|r7NJ;QKuQ6?PJ3wQ z`QSjTR}Mf$_+{|kx59%-n%hjk&O5-aw1hh6DQw{X-T9}IEk_}}V*BT*h5+E@DgnTS zOm5)e`h|qy@ImPHawT*Opf8mC$dg1AZG~XS>m{KcXq|M^6N~%k`J{*f#i50lP5es4 z1`a91Kn>7B#HOJbzhMw6OF(&O)_9XQi`?L$Ib^5;8h>vp4#aI4jY9>{KzCCh5&x-R ztFRa9g2s-Ut`#Ada3l$}Ktrufi)zBgs0amKP#(G-+~n^je=@~{SBK6H65tG4n^j7H M4>&zaC~HUm0+`YK8~^|S literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/SuperRootService.java b/src/java/com/twitter/search/earlybird_root/SuperRootService.java deleted file mode 100644 index c11052c35..000000000 --- a/src/java/com/twitter/search/earlybird_root/SuperRootService.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.twitter.finagle.Service; -import com.twitter.finagle.mtls.authorization.server.MtlsServerSessionTrackerFilter; -import com.twitter.search.common.clientstats.FinagleClientStatsFilter; -import com.twitter.search.common.root.LoggingFilter; -import com.twitter.search.common.root.RequestValidationFilter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird.thrift.EarlybirdStatusResponse; -import com.twitter.search.earlybird_root.filters.ClientIdArchiveAccessFilter; -import com.twitter.search.earlybird_root.filters.ClientIdQuotaFilter; -import com.twitter.search.earlybird_root.filters.ClientIdTrackingFilter; -import com.twitter.search.earlybird_root.filters.ClientRequestTimeFilter; -import com.twitter.search.earlybird_root.filters.DeadlineTimeoutStatsFilter; -import com.twitter.search.earlybird_root.filters.DisableClientByTierFilter; -import com.twitter.search.earlybird_root.filters.EarlybirdFeatureSchemaAnnotateFilter; -import com.twitter.search.earlybird_root.filters.InitializeRequestContextFilter; -import com.twitter.search.earlybird_root.filters.MetadataTrackingFilter; -import com.twitter.search.earlybird_root.filters.NamedMultiTermDisjunctionStatsFilter; -import com.twitter.search.earlybird_root.filters.NullcastTrackingFilter; -import com.twitter.search.earlybird_root.filters.PreCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.QueryLangStatFilter; -import com.twitter.search.earlybird_root.filters.QueryOperatorStatFilter; -import com.twitter.search.earlybird_root.filters.QueryTokenizerFilter; -import com.twitter.search.earlybird_root.filters.RequestResultStatsFilter; -import com.twitter.search.earlybird_root.filters.RequestSuccessStatsFilter; -import com.twitter.search.earlybird_root.filters.ResponseCodeStatFilter; -import com.twitter.search.earlybird_root.filters.SearchPayloadSizeLocalContextFilter; -import com.twitter.search.earlybird_root.filters.RejectRequestsByQuerySourceFilter; -import com.twitter.search.earlybird_root.filters.StratoAttributionClientIdFilter; -import com.twitter.search.earlybird_root.filters.TopLevelExceptionHandlingFilter; -import com.twitter.search.earlybird_root.filters.VeryRecentTweetsFilter; -import com.twitter.util.Future; - -@Singleton -class SuperRootService implements EarlybirdService.ServiceIface { - private final Service fullSearchMethod; - - @Inject - public SuperRootService( - TopLevelExceptionHandlingFilter topLevelExceptionHandlingFilter, - ResponseCodeStatFilter responseCodeStatFilter, - LoggingFilter loggingFilter, - NamedMultiTermDisjunctionStatsFilter namedMultiTermDisjunctionStatsFilter, - RequestValidationFilter validationFilter, - MtlsServerSessionTrackerFilter mtlsFilter, - FinagleClientStatsFilter finagleStatsFilter, - InitializeFilter initializeFilter, - InitializeRequestContextFilter initializeRequestContextFilter, - QueryLangStatFilter queryLangStatFilter, - QueryOperatorStatFilter queryOperatorStatFilter, - RequestResultStatsFilter requestResultStatsFilter, - PreCacheRequestTypeCountFilter preCacheRequestTypeCountFilter, - ClientIdArchiveAccessFilter clientIdArchiveAccessFilter, - DisableClientByTierFilter disableClientByTierFilter, - ClientIdTrackingFilter clientIdTrackingFilter, - ClientIdQuotaFilter quotaFilter, - RejectRequestsByQuerySourceFilter rejectRequestsByQuerySourceFilter, - MetadataTrackingFilter metadataTrackingFilter, - VeryRecentTweetsFilter veryRecentTweetsFilter, - RequestSuccessStatsFilter requestSuccessStatsFilter, - NullcastTrackingFilter nullcastTrackingFilter, - QueryTokenizerFilter queryTokenizerFilter, - ClientRequestTimeFilter clientRequestTimeFilter, - DeadlineTimeoutStatsFilter deadlineTimeoutStatsFilter, - SuperRootRequestTypeRouter superRootSearchService, - EarlybirdFeatureSchemaAnnotateFilter featureSchemaAnnotateFilter, - SearchPayloadSizeLocalContextFilter searchPayloadSizeLocalContextFilter, - StratoAttributionClientIdFilter stratoAttributionClientIdFilter) { - this.fullSearchMethod = - loggingFilter - .andThen(topLevelExceptionHandlingFilter) - .andThen(stratoAttributionClientIdFilter) - .andThen(clientRequestTimeFilter) - .andThen(searchPayloadSizeLocalContextFilter) - .andThen(requestSuccessStatsFilter) - .andThen(requestResultStatsFilter) - .andThen(responseCodeStatFilter) - .andThen(validationFilter) - .andThen(mtlsFilter) - .andThen(finagleStatsFilter) - .andThen(disableClientByTierFilter) - .andThen(clientIdTrackingFilter) - .andThen(quotaFilter) - .andThen(clientIdArchiveAccessFilter) - .andThen(rejectRequestsByQuerySourceFilter) - .andThen(namedMultiTermDisjunctionStatsFilter) - .andThen(metadataTrackingFilter) - .andThen(veryRecentTweetsFilter) - .andThen(initializeFilter) - .andThen(initializeRequestContextFilter) - .andThen(deadlineTimeoutStatsFilter) - .andThen(queryLangStatFilter) - .andThen(nullcastTrackingFilter) - .andThen(queryOperatorStatFilter) - .andThen(preCacheRequestTypeCountFilter) - .andThen(queryTokenizerFilter) - .andThen(featureSchemaAnnotateFilter) - .andThen(superRootSearchService); - } - - @Override - public Future getName() { - return Future.value("superroot"); - } - - @Override - public Future getStatus() { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public Future search(EarlybirdRequest request) { - return fullSearchMethod.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/caching/BUILD b/src/java/com/twitter/search/earlybird_root/caching/BUILD deleted file mode 100644 index 9ea5a4041..000000000 --- a/src/java/com/twitter/search/earlybird_root/caching/BUILD +++ /dev/null @@ -1,20 +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/org/slf4j:slf4j-api", - "finatra/inject/inject-core/src/main/scala", - "src/java/com/twitter/search/common/caching", - "src/java/com/twitter/search/common/decider", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/root", - "src/java/com/twitter/search/earlybird/common", - "src/java/com/twitter/search/earlybird_root/common", - "src/java/com/twitter/search/queryparser", - "src/java/com/twitter/search/queryparser/query:core-query-nodes", - "src/thrift/com/twitter/search:earlybird-java", - ], -) diff --git a/src/java/com/twitter/search/earlybird_root/caching/BUILD.docx b/src/java/com/twitter/search/earlybird_root/caching/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a6ab6a8bf4753eb287af0a26f2992df1e4544c3 GIT binary patch literal 36907 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 o6_kz_x_ { - /** - * Boilerplate for the Java-friendly AbstractTwitterServer - */ - public static class Main { - public static void main(String[] args) { - new FullArchiveRootAppMain().main(args); - } - } - - @Override - protected Collection getAdditionalModules() { - return Arrays.asList( - new EarlybirdCommonModule(), - new EarlybirdCacheCommonModule(), - new FullArchiveRootModule(), - new QuotaModule() - ); - } - - @Override - protected Class getSearchRootServerClass() { - return FullArchiveRootServer.class; - } - - @Override - protected Class getServiceIfaceClass() { - return EarlybirdService.ServiceIface.class; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.docx b/src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..f14db64229c4c423758008c86ccd7256930c72e5 GIT binary patch literal 38630 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 U8!&@D&#Ju;M__t*rGLKq4?C%16951J literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.java b/src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.java deleted file mode 100644 index 1a128856b..000000000 --- a/src/java/com/twitter/search/earlybird_root/FullArchiveRootModule.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.List; -import java.util.concurrent.TimeUnit; - -import javax.annotation.Nullable; -import javax.inject.Named; -import javax.inject.Singleton; - -import com.google.inject.Key; -import com.google.inject.Provides; - -import com.twitter.app.Flag; -import com.twitter.app.Flaggable; -import com.twitter.common.util.Clock; -import com.twitter.finagle.Service; -import com.twitter.finagle.memcached.JavaClient; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.inject.TwitterModule; -import com.twitter.search.common.caching.Cache; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.root.LoggingSupport; -import com.twitter.search.common.root.PartitionConfig; -import com.twitter.search.common.root.PartitionLoggingSupport; -import com.twitter.search.common.root.RootClientServiceBuilder; -import com.twitter.search.common.root.SearchRootModule; -import com.twitter.search.common.root.SearchRootWarmup; -import com.twitter.search.common.root.SplitterService; -import com.twitter.search.common.root.ValidationBehavior; -import com.twitter.search.common.root.WarmupConfig; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.config.TierInfoSource; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird_root.caching.DefaultForcedCacheMissDecider; -import com.twitter.search.earlybird_root.caching.RecencyCache; -import com.twitter.search.earlybird_root.caching.RelevanceCache; -import com.twitter.search.earlybird_root.caching.StrictRecencyCache; -import com.twitter.search.earlybird_root.caching.TermStatsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsCache; -import com.twitter.search.earlybird_root.caching.TopTweetsServicePostProcessor; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.RequestContextToEarlybirdRequestFilter; -import com.twitter.util.Future; - -import static com.twitter.search.earlybird_root.EarlybirdCommonModule.NAMED_ALT_CLIENT; - -public class FullArchiveRootModule extends TwitterModule { - private static final String CLUSTER = "archive_full"; - private static final String ALT_TRAFFIC_PERCENTAGE_DECIDER_KEY = - "full_archive_alt_client_traffic_percentage"; - - private final Flag forceAltClientFlag = createFlag( - "force_alt_client", - false, - "Always sends traffic to the alt client", - Flaggable.ofJavaBoolean()); - - @Override - public void configure() { - bind(Key.get(EarlybirdCluster.class)).toInstance(EarlybirdCluster.FULL_ARCHIVE); - - bind(EarlybirdServiceScatterGatherSupport.class) - .to(EarlybirdFullArchiveScatterGatherSupport.class); - - bind(EarlybirdService.ServiceIface.class).to(FullArchiveRootService.class); - } - - @Provides - LoggingSupport provideLoggingSupport( - SearchDecider decider) { - return new EarlybirdServiceLoggingSupport(decider); - } - - @Provides - PartitionLoggingSupport providePartitionLoggingSupport() { - return new EarlybirdServicePartitionLoggingSupport(); - } - - @Provides - ValidationBehavior provideValidationBehavior() { - return new EarlybirdServiceValidationBehavior(); - } - - @Provides - @Singleton - @Nullable - @Named(NAMED_ALT_CLIENT) - EarlybirdServiceChainBuilder provideAltEarlybirdServiceChainBuilder( - @Named(NAMED_ALT_CLIENT) @Nullable PartitionConfig altPartitionConfig, - RequestContextToEarlybirdRequestFilter requestContextToEarlybirdRequestFilter, - EarlybirdTierThrottleDeciders tierThrottleDeciders, - @Named(SearchRootModule.NAMED_NORMALIZED_SEARCH_ROOT_NAME) String normalizedSearchRootName, - SearchDecider decider, - TierInfoSource tierConfig, - @Named(NAMED_ALT_CLIENT) @Nullable - RootClientServiceBuilder altRootClientServiceBuilder, - PartitionAccessController partitionAccessController, - StatsReceiver statsReceiver - ) { - if (altPartitionConfig == null || altRootClientServiceBuilder == null) { - return null; - } - - return new EarlybirdServiceChainBuilder( - altPartitionConfig, - requestContextToEarlybirdRequestFilter, - tierThrottleDeciders, - normalizedSearchRootName, - decider, - tierConfig, - altRootClientServiceBuilder, - partitionAccessController, - statsReceiver - ); - } - - @Provides - @Singleton - @Nullable - @Named(NAMED_ALT_CLIENT) - EarlybirdChainedScatterGatherService provideAltEarlybirdChainedScatterGatherService( - @Named(NAMED_ALT_CLIENT) @Nullable EarlybirdServiceChainBuilder altServiceChainBuilder, - EarlybirdServiceScatterGatherSupport scatterGatherSupport, - PartitionLoggingSupport partitionLoggingSupport - ) { - if (altServiceChainBuilder == null) { - return null; - } - - return new EarlybirdChainedScatterGatherService( - altServiceChainBuilder, - scatterGatherSupport, - partitionLoggingSupport - ); - } - - @Provides - @Singleton - Service>> - provideEarlybirdChainedScatterGatherService( - EarlybirdChainedScatterGatherService chainedScatterGatherService, - @Named(NAMED_ALT_CLIENT) @Nullable - EarlybirdChainedScatterGatherService altChainedScatterGatherService, - SearchDecider decider - ) { - if (forceAltClientFlag.apply()) { - if (altChainedScatterGatherService == null) { - throw new RuntimeException( - "alt client cannot be null when 'force_alt_client' is set to true"); - } else { - return altChainedScatterGatherService; - } - } - - if (altChainedScatterGatherService == null) { - return chainedScatterGatherService; - } - - return new SplitterService<>( - chainedScatterGatherService, - altChainedScatterGatherService, - decider, - ALT_TRAFFIC_PERCENTAGE_DECIDER_KEY - ); - } - - @Provides - @Singleton - @RecencyCache - Cache provideRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, CLUSTER + "_recency_root", - serializedKeyPrefix, TimeUnit.HOURS.toMillis(2), cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @RelevanceCache - Cache provideRelevanceCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, CLUSTER + "_relevance_root", - serializedKeyPrefix, TimeUnit.HOURS.toMillis(2), cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @StrictRecencyCache - Cache provideStrictRecencyCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, CLUSTER + "_strict_recency_root", - serializedKeyPrefix, TimeUnit.HOURS.toMillis(2), cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TermStatsCache - Cache provideTermStatsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, CLUSTER + "_termstats_root", - serializedKeyPrefix, TimeUnit.MINUTES.toMillis(5), cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - @Singleton - @TopTweetsCache - Cache provideTopTweetsCache( - JavaClient client, - DefaultForcedCacheMissDecider decider, - @Named(SearchRootModule.NAMED_SERIALIZED_KEY_PREFIX) String serializedKeyPrefix, - @Named(SearchRootModule.NAMED_CACHE_KEY_MAX_BYTES) int cacheKeyMaxBytes, - @Named(SearchRootModule.NAMED_CACHE_VALUE_MAX_BYTES) int cacheValueMaxBytes) { - return EarlybirdCacheCommonModule.createCache(client, decider, CLUSTER + "_toptweets_root", - serializedKeyPrefix, TopTweetsServicePostProcessor.CACHE_AGE_IN_MS, - cacheKeyMaxBytes, cacheValueMaxBytes); - } - - @Provides - SearchRootWarmup providesSearchRootWarmup( - Clock clock, - WarmupConfig config) { - return new EarlybirdWarmup(clock, config); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/FullArchiveRootServer.docx b/src/java/com/twitter/search/earlybird_root/FullArchiveRootServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..a1afd8797e90444e92f0be9771afee9cc8eb6b22 GIT binary patch literal 36872 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 z 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 { - - @Inject - public FullArchiveRootServer(FullArchiveRootService svc, Service byteSvc) { - super(svc, byteSvc); - } - -} diff --git a/src/java/com/twitter/search/earlybird_root/FullArchiveRootService.docx b/src/java/com/twitter/search/earlybird_root/FullArchiveRootService.docx new file mode 100644 index 0000000000000000000000000000000000000000..d487ab2ce8359b0856428a6716f628a5cb282622 GIT binary patch literal 38133 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 ZY`u4AZ6O3&(6Uv@04|_;gd{Hi`v=-ZWQza* literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/FullArchiveRootService.java b/src/java/com/twitter/search/earlybird_root/FullArchiveRootService.java deleted file mode 100644 index 977c8b974..000000000 --- a/src/java/com/twitter/search/earlybird_root/FullArchiveRootService.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.List; -import javax.inject.Inject; -import javax.inject.Singleton; - -import com.twitter.finagle.Service; -import com.twitter.finagle.mtls.authorization.server.MtlsServerSessionTrackerFilter; -import com.twitter.search.common.clientstats.FinagleClientStatsFilter; -import com.twitter.search.common.root.LoggingFilter; -import com.twitter.search.common.root.RequestValidationFilter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.search.earlybird.thrift.EarlybirdStatusResponse; -import com.twitter.search.earlybird_root.caching.RecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceCacheFilter; -import com.twitter.search.earlybird_root.caching.RelevanceZeroResultsCacheFilter; -import com.twitter.search.earlybird_root.caching.StrictRecencyCacheFilter; -import com.twitter.search.earlybird_root.caching.TermStatsCacheFilter; -import com.twitter.search.earlybird_root.caching.TopTweetsCacheFilter; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.filters.ClientIdQueryOperatorStatsFilter; -import com.twitter.search.earlybird_root.filters.ClientIdQuotaFilter; -import com.twitter.search.earlybird_root.filters.ClientIdTrackingFilter; -import com.twitter.search.earlybird_root.filters.ClientRequestTimeFilter; -import com.twitter.search.earlybird_root.filters.DeadlineTimeoutStatsFilter; -import com.twitter.search.earlybird_root.filters.EarlybirdFeatureSchemaAnnotateFilter; -import com.twitter.search.earlybird_root.filters.FullArchiveProtectedOperatorFilter; -import com.twitter.search.earlybird_root.filters.InitializeRequestContextFilter; -import com.twitter.search.earlybird_root.filters.IsUserProtectedMetadataTrackingFilter; -import com.twitter.search.earlybird_root.filters.MetadataTrackingFilter; -import com.twitter.search.earlybird_root.filters.NullcastTrackingFilter; -import com.twitter.search.earlybird_root.filters.PostCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.PreCacheRequestTypeCountFilter; -import com.twitter.search.earlybird_root.filters.QueryLangStatFilter; -import com.twitter.search.earlybird_root.filters.QueryOperatorStatFilter; -import com.twitter.search.earlybird_root.filters.RequestResultStatsFilter; -import com.twitter.search.earlybird_root.filters.RequestSuccessStatsFilter; -import com.twitter.search.earlybird_root.filters.ResponseCodeStatFilter; -import com.twitter.search.earlybird_root.filters.ResultTierCountFilter; -import com.twitter.search.earlybird_root.filters.SearchPayloadSizeLocalContextFilter; -import com.twitter.search.earlybird_root.filters.RejectRequestsByQuerySourceFilter; -import com.twitter.search.earlybird_root.filters.StratoAttributionClientIdFilter; -import com.twitter.search.earlybird_root.filters.TopLevelExceptionHandlingFilter; -import com.twitter.util.Future; - -@Singleton -public class FullArchiveRootService implements EarlybirdService.ServiceIface { - - private final Service allFiltersAndService; - - @Inject - public FullArchiveRootService( - TopLevelExceptionHandlingFilter topLevelExceptionHandlingFilter, - ResponseCodeStatFilter responseCodeStatFilter, - LoggingFilter loggingFilter, - RequestValidationFilter validationFilter, - MtlsServerSessionTrackerFilter mtlsFilter, - FinagleClientStatsFilter finagleStatsFilter, - InitializeFilter initializeFilter, - InitializeRequestContextFilter initializeRequestContextFilter, - QueryLangStatFilter queryLangStatFilter, - FullArchiveProtectedOperatorFilter protectedOperatorFilter, - QueryOperatorStatFilter queryOperatorStatFilter, - ClientIdQueryOperatorStatsFilter clientIdQueryOperatorStatsFilter, - IsUserProtectedMetadataTrackingFilter isUserProtectedMetadataTrackingFilter, - RequestResultStatsFilter requestResultStatsFilter, - PreCacheRequestTypeCountFilter preCacheCountFilter, - RecencyCacheFilter recencyCacheFilter, - RelevanceCacheFilter relevanceCacheFilter, - RelevanceZeroResultsCacheFilter relevanceZeroResultsCacheFilter, - StrictRecencyCacheFilter strictRecencyCacheFilter, - TermStatsCacheFilter termStatsCacheFilter, - TopTweetsCacheFilter topTweetsCacheFilter, - PostCacheRequestTypeCountFilter postCacheCountFilter, - ClientIdTrackingFilter clientIdTrackingFilter, - ClientIdQuotaFilter quotaFilter, - RejectRequestsByQuerySourceFilter rejectRequestsByQuerySourceFilter, - MetadataTrackingFilter metadataTrackingFilter, - MultiTierResultsMergeFilter multiTierResultsMergeFilter, - RequestSuccessStatsFilter requestSuccessStatsFilter, - NullcastTrackingFilter nullcastTrackingFilter, - ClientRequestTimeFilter clientRequestTimeFilter, - DeadlineTimeoutStatsFilter deadlineTimeoutStatsFilter, - EarlybirdFeatureSchemaAnnotateFilter featureSchemaAnnotateFilter, - SearchPayloadSizeLocalContextFilter searchPayloadSizeLocalContextFilter, - EarlybirdQueryRewriteFilter queryRewriteFilter, - ResultTierCountFilter resultTierCountFilter, - StratoAttributionClientIdFilter stratoAttributionClientIdFilter, - Service>> chainedScatterGatherService - ) { - - this.allFiltersAndService = - loggingFilter - .andThen(topLevelExceptionHandlingFilter) - .andThen(stratoAttributionClientIdFilter) - .andThen(clientRequestTimeFilter) - .andThen(searchPayloadSizeLocalContextFilter) - .andThen(requestSuccessStatsFilter) - .andThen(requestResultStatsFilter) - .andThen(responseCodeStatFilter) - .andThen(validationFilter) - .andThen(mtlsFilter) - .andThen(finagleStatsFilter) - .andThen(clientIdTrackingFilter) - .andThen(quotaFilter) - .andThen(rejectRequestsByQuerySourceFilter) - .andThen(metadataTrackingFilter) - .andThen(initializeFilter) - .andThen(initializeRequestContextFilter) - .andThen(deadlineTimeoutStatsFilter) - .andThen(queryLangStatFilter) - .andThen(protectedOperatorFilter) - .andThen(queryOperatorStatFilter) - .andThen(clientIdQueryOperatorStatsFilter) - .andThen(isUserProtectedMetadataTrackingFilter) - .andThen(preCacheCountFilter) - .andThen(nullcastTrackingFilter) - .andThen(recencyCacheFilter) - .andThen(relevanceCacheFilter) - .andThen(relevanceZeroResultsCacheFilter) - .andThen(strictRecencyCacheFilter) - .andThen(termStatsCacheFilter) - .andThen(topTweetsCacheFilter) - .andThen(postCacheCountFilter) - .andThen(queryRewriteFilter) - .andThen(featureSchemaAnnotateFilter) - .andThen(resultTierCountFilter) - .andThen(multiTierResultsMergeFilter) - .andThen(chainedScatterGatherService); - } - - @Override - public Future getName() { - return Future.value("fullarchive"); - } - - @Override - public Future getStatus() { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public Future search(EarlybirdRequest request) { - return allFiltersAndService.apply(request); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/InitializeFilter.docx b/src/java/com/twitter/search/earlybird_root/InitializeFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..ced6b4250a1119e7d3964d2c7ca0471bcd74610c GIT binary patch literal 37123 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 sjYHg90 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 PTqVem2+STmJs=(c?dE9D literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/InitializeFilter.java b/src/java/com/twitter/search/earlybird_root/InitializeFilter.java deleted file mode 100644 index 5d5659965..000000000 --- a/src/java/com/twitter/search/earlybird_root/InitializeFilter.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.twitter.search.earlybird_root; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.relevance.ranking.ActionChainManager; -import com.twitter.search.common.runtime.ActionChainDebugManager; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.util.Future; -import com.twitter.util.FutureEventListener; - -/** - * Initialize request-scope state and clean them at the end. - */ -public class InitializeFilter extends SimpleFilter { - @Override - public Future apply(EarlybirdRequest request, - Service service) { - ActionChainDebugManager.update(new ActionChainManager(request.getDebugMode()), "EarlybirdRoot"); - return service.apply(request).addEventListener(new FutureEventListener() { - @Override - public void onSuccess(EarlybirdResponse response) { - cleanup(); - } - - @Override - public void onFailure(Throwable cause) { - cleanup(); - } - }); - } - - private void cleanup() { - ActionChainDebugManager.clearLocals(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.docx b/src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..699ce7f20f2f365ee21e06d71398d05c416ba239 GIT binary patch literal 37362 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#2@Z`1cXxMp2<~pd-2x;K-2LB~nRCv}x%a;B zm)%cS)%wX=yQ^yNE@e4LC@e5AFgUQgG#>3L)uOm0a4@hj7%(tQP^+E$S+omK1r8QBsFJ~{<$t=R8UJ|I-<+~2F4vca5k~JAOygJJ)C-M*vcN6?! z8nenFFwAk8X?H%vYxP21-p$l{5|Sqd2ANs~QgLLmOEP;z^Mf$8 zt(o5Mrn$jc_iFq3jWB}G#B+56lC&SdqG_sPG%-kqg5gw!#-KxM3TAooIw%~}RgXq! z_830xk14ypO!&HyKS=mVWxp&lQ)_0~WFUO?=S>YWKG%@`V%!)%;9TcA$gcJ2pcw$_`yK<@FHCc~!= zU7cukAFHE48GO$>36#v^o&Y+U1~P+0m~{4zm@4m}yZ*a7x}q3L;fLi=!@K!81-l6i zzY)|gTpA*Es_kMi$)g;6Ja3Li668KNxj}j>e3FVj9g;>uwEm(4UiTL$PX`~NSMlzV z{HyO|o;!>8UDg8fP30Mr>GWQbhzilW<32ulJtCG=ypt5}eO@Zr*cTbQBhP=rQZNKl z{znx(sO3cOLDk!Y00Tn=eHuBL+d8u_|GrkmPkw-8L-RWmmKvcdv2WIpEL<^^{Gm`N z+><(ST5J!LDPHaBRFO2$#_1(KJliw1Sj;FOSY{};4b(ExSqR8m>eb$&yJ&1TT8B%9 z@9-ycSKkfNu}zP-p+FHer@rI1&?FUR*u)&vqiZ;w6{{APG@`eYK`9L?OF+Ly{7kFm z;=?otfB{I$H*?e8@>wvD7rf9~7%Ug&d>xg+RA$vF-T^`$( ziSzZbUHOw<#Rc<^KnW!^LwCw+n8^-|0ba{S!IIh5z4r%9loXR%o>LYsn}I664%5WH zSnE>Gbem$9ec(oC^|;UenV`@wh-y}#+k6(3AaqcI%mAj!P5=jI7E^$e`R|)ND}G$D zpA}8&&Rc3;K{Mxfh9{4CfWe7F5Tmc{Gv||h9ieIg(wEJUIj}3pV8F}qvFxe zhIrbv!XZ8GH`6f)!K2iw{^7o0ZtWuZ_=anI9wn z5C_%9whQ!m2*u|6!g3QP&>-;CIQFz8W&zu%_(=nM{2_lt*>MA*sV02*U~Te{+!?AI zx(r)$5Z%DhXnL$_0fq_wbDEZN^_UlVgUQ4NF|32L62tW8RTR<9Mz7*_MF;PhXLC`h zU#@lc1LsM~P0O39Dy&N36_77ApDH{`r-iuQ@7)~fBqt%GNJD&l;eZ?eAzrJWwG;2eeMF)^dVa*l;c%7vzfsZRF@TiX`igfZl8L9Buz~$Jo}}hBARz z6uDazs7C?u@ru92~`i#P$m;SnUD}Ln9`kU9Ue+7=^7~NMPcV~;iJ1!?F0kc z!1n<((1|uec*^fxb$3bbKHcw)Yiu zQ%n&5`Ga)>IGM44ezh)kpvCF;ow2W@r?$t91w5;n`TkJ?ua+oR2VbTcNv?UKC(+-0 zjYqo9T+djpoRX$6>-CO!G$lw5f($R!%EIK>bE?F-rSol{TVW;r5lyoEknj?0wU8v+H(?KWs>D3=XQ9*?@8xFs*{N(RJV=4nn-$9py|SF`QlM}6|KY6S*tgER_AQ!Wox8u(apM6iT!4bhE-IN|#0`k8wD;83-+uaKS#mw^C(3 zh*&%jjnHe85Qa7D+P5KdLYz*b1nOJ9~%EMp;fY?eCCc8D_S4Kg5DLS?N%)VD_YNDKB3(yHHBhkP(gp z6=41en?GGBT^D&mDiWGk`N%DXVu*^E+7FI0I#P=J5iRSBU}|c6Z3>5#{gN=g+k4)h zTwe$yH%`vl7cx74boIOq4NL3HDU}s|d3KFGt23|Q0#n&uFNW7cNq8AWm+_ryy=0RzWhA)8 zG)i1e`4UNK08QL5cveC;d;T?Y?8(D|1W{**@dwr|x;Uz6NRkinNMrbh z1b74-uR2Te|@n;_XwIGX@@7^Ru~ zb^kuCX_^{fy3rLxrL;4xx4C~xB@@HIV!8B1(92OO{ULf+saD_zT$6{pg0%573UVrB znHQKVNpDf@P_ueXXTtWw?{22=%vjf|1X6LP;SedF>s2)NIgf8CWx-Gw+W6Y05bByT z(ZXBQ7#GJ7#^Lk8=lBeRxtY}Um=ZI%mAN*on_iWwwGOgMp2=~wCaE8S-X~hR<>KB_XV?K)sQKx=Vh0k9G^C0AB58ou}Dai+a5$NLr}0# zGv1r^-zBDQGtE*_n(ucy&nMvJ7^Uh2ThoSpjGsb$@0%V;NPdrKlg))VoHImcwf$55&D7?u!`*? z-u=p_Zl{;7De?}MUX8z%*x%CIFk_V1_20YW_Q|2Ko145pvliJEfU(;%ZEW>ZB9&tKci-MK6%t}uI2m-MOf@I#`)GeTV()j&N0WmBHLXd8BQ zRN)V4wfHafJh~7%lC$xtA477oKYO;5UrbiFUUpX6Y>RB9JNIrYHfRR)p+nUzFBlt8 za8ViWo*mBI+?x^lzQ7tHSTrsWN)+$=KP%`*VHiPa-ep4ebKDzSjqO=1nu1BXbxWj3 zuou;4s_j5tmT*Lf@lw^Ns|DEvzniq-wZ5KB9Pm_x|Lg?|A+jeNSwgtWN2G0|GOqRh zSg7wj6~mvD#tz4MwN&%KcwLTn^?J4jiti!t8_Pd)9aVuN5WxZlW~c!ThWf8uJAd}D zHFy5KEP+rnGICa-O%}!o>v41(u5Lp@qygtOdJv=R)MVE-Q9Pb(2KWtpIr!2HT9nSr{ zX%7k6JMws`7kssQ`??v-0$e3AOfET}?mrAk+20voJ8r3X89%;k^jNp$DG?#5?Ct4P z`ob3)S^suz)u8M3w6Her=@u^X=AaGeN55;|yE?dWe|J(b^2z8fq-3cd*d$EcZwXw< z9`@3)cU}7UMe$>9%H&b4$f-!yD~_^8n<-SB|-0U6ePCCIch=OjAg z={)J?(mkDsXZ$(>=)~mt!skhGl~A!q=i<@jvAQlIDIVh+%<|f`-qqexIi57g=4;o! z?$f2Och>cCBk^dVnnK*~xV6E8x&=&?BJq~VJ|TM>sCno%>8%-GpiXXh{;V4UL{F!} z|J)AWdA^C?o+1MDh){3$7C6Bqs|ky}u0@3|3OU8#pAKn24XLRXd8sw>(Gl_C4QAfRd%50t`JAr*Tnk+3*b)?~ayvT>N#Qxo=21F+^D#UF3RUOWFTG(7 zbR|c&u6Ca&9G7<_9F zC8WMJk@YZSDZuL{&_qbzg{x29`+)qh0(GYpl}(kTPlLpyQg}epCzQ@RbPnj^+I2mA zVl_yEV5t5O7BHs{%-^O+%AswQ+^0bxRt7coGKi?u0zlsm7+(gg-@O^!Psl983fn8L zxtK%X(-(iGJlT5b5M&e~Nv@f8n_bt9Rb}rBX&Fvfu0mO`zv=&3yX8}jWvXLs@|?1C zxbNs(iBnkm7=wP^_O$fzN}bMnAkFeV@U6q3dU5*cWbV=7&hcef_V!BTVUbqUTmON3IdSF{twtc?%FO;fmG3#pl2S%XN`y7kOsEY* zcx|~9uPAyPxFqq%LiVnnm-e0u3WA9BH*Iro|EHYNNPt!hOO{nfY)g3Xk~Y69?$gQZ z`A<8BOyZ$$=-$|5w{YLYyoroxWh09ycoT%rEGjfc)+L|S$zndpsK}IJs3vk$1TpSo zF_6hIEq#ECSNz&t>AOY9a<4hoF^siX*};}k0Ip(tk<;>0hM%e%&iMMYVbv*6eKt_I z5?;&3u_e2#ZMU0%R>%$c0ZugofeNbkP|}g?D4`&Tu}Mc&Ja+Xn9T}YECRUFT+*Pq3 zR*;99D8gz79Vw#SW@T1^44f(j14e*De2X7x=63^um^ie;?2d}yZ7Kk`4)3U*D4OCW z4q8w`2lNP&_$5wkKx_weVeaqFPoPeme|19bPy)ck{u*E1gipl`#o~cD(kHtK@h|KX z&UjELDQFzsAECM+v|teKKSKYcf-0jqvnF%@FM=}_3Q!BeA1abNpw06Bhs6It#d=;= z;{>FDM*UrwD*;H4DjLWuR^xXjQbeZzlE_2~N8^DA_lN5F1h*!%j^CsH-Bjo-(KzMW z-i2wH%`d6DK-xvD>Ed(t0Pd^ft4p%jp49UJLCQacCNZ|Owb{LE%eM_vZ`sb7P*QvT zz_ER0c-;1tF;a+GFZuawaO3I5rOm*8&`a#Oe`&%s@6)pTmEQf(Tu#l7d(F=UVWq?U zgVFq*`=~7ugO(dfl4$!~<`vN-{pd5UIQ+LK2P6q5k7;8x#`Q9y%&oz7(%Vy@>vE3JDzryl;guV zoayoJraXxHn`{cM#Acm=dH7pIiU(oV@tvk6`+IB;Z~HzfV+dz#&sQ$K-fm~D36!Ws zo6e!Ni#JSaYebY|Un8}a6L8wC>nSGNUVAshWSd!eyqHm@oh8AV<{EAt<$F7;t;_*_B_ya0v{)AKT^&WW~ z-FuvSMYHZn8`yMo$+)+BYEk>nEb`pdiSR){esE}a-&c+s=RJ!P500g<$C@^wL6;pP zQ1H#o5ty$LM8o1{)m~tX-)`|di)ZuYl{j!>Z68kYJqJ)Zb(T7Xp)6_)b3uoBzGd)+ z5^*kp5nRc{tm-k7Va3v5UtfYEa~z(!zirsLx`Uw&Ny`acfArvMeALem&3V;kF8xVZ zSpz%#VSzs>qx}-rWipzDO^=T_GOm2r&U4Y10;N-lIgh@;@;$mM56LkOqfBi{!)@m| z`fc+tF9G!ByB*ticqn|Hiz$~l&!kMNaiiEeKdmFPI7OY4TcW)jbpF6P+C7jU;Zb>C z!1o1Fp_Q4l_j8^skN&617(_aUYVbg3WHfK9v6~{gVitw=9XU)NZ+JGMk9@ktg<}t% zAv&0o?W84`=)*o=Oiuf|&(!99O1@|BoeCCh$!!b*%F1^%1@3=3W?;>cv}~P`zrCi< zw@7^fc3xlKWli6r>ip?;dJ+9nqWn5kZPddBST z_Ezz`;L?58kbGz)eLx00Vb|g?+{D8)e?Yb+d$)X)?oUvWESEmV%vBO)rr7Rw5G4NV z>L|NIXiAH%)Tr9qJSR`QzJ!2(Qz<+?R53Qa%&bG|@JYeJ6(RSSmhfB}jYZkqzi5)T`{ zat!18vy(GtF-HY;vbyBCkM?w_ySCL(K<<95Qs!IT3Qo7X zlHojsSgH51hC}jBsUH_1%p#ip7;QQtyXNdX^r9}8-Eji0 zrP3ODY^*AC0l(bMf&G|LcXXyf5_P4QdQ_n;k(YNZ5>q08>%KM>r-g!IgIjjOvCFX) z+aC%Ym+?I_V~qN0F~24-9g_0#SGAh7euS2wm8L};&)dhScdAC+K<&$Yt5xuk8X7Gh z;y)Hyp<$dQNai?~gW~d#a4cInDJ#d#s3Xqv*3gOa_su%C=NO1pamFKGBCMY_$X8$_ z*;yi@_lD9Dd!|d|bA~vO!v@GIW!!q0_g^{P@$nZQ3G3*^2t-LwYfn_kBHrTXY&5SM z^V0?+MG1PbB@9d(W=S4--R>BFo9Un4YF^`7J3EVCO4sO5LiqA_|N6K{h+8R#n#s!B zz3k3etMQSm06|fmviuW2?{azVvF4!C#a*VY0%gt5+z=HG&uz)!he6MR{`9Z6^O(xP zYmxN4vvH;Qi$Bmb2V3nm82c``+gnU#*%k+H7A#zPA=jjgHO9R?J**Wg^$qO>bqD5E z<2ue6(rlpjgtF<*gT!KLhty~|*PbfjO8-2rEx zGHaPP3BL4?YZ0uwMY0%$oNs!$lFf+aPd5kZNwtkDYl7{ z!BM7&kE&lyDS3@BQ;V~maW%{AQIu7qSws?7 zGrAi$W-=eY%9}-7`&}Rmw00OWhab7N(3n~)Ev%_hZ!=87Ntxf09=N#ZOz)9a9Xhu5 zrb#NgG8JVTwFzavt&JRr%Q8fNsNxl`-z`Pdtn{@>E<9ORU2BtRc5XLrFXma1)pgRh z9%YNC8YXI?e3j;r_GT7IibTpV*fsclVoR9s9f?fI5XEjJV#F1*8QGuYC)ORz-+!^OsGU;Oys@G?^} zx#Nxy@&Uw?++mP-m)Wf6*>;p@DM5CHKpPU-Z zQ|op^;>&aD=c_pj0?f`Ich)zgU8z}A1vZDP5k>vSo)aujg843y{GUTT}5)igc3g zgfm0J=aSBqFhAHVsC6;#SCQhsN{#siEjMPYL3e=Lx#Gr3l}0hjjZETw+Fdc+e&YKS zpTqGKxuJ|*7`mygw~hBBsuNSu`I_6scFEO!3)=;*6W*H+Ms_=?AH#FbF&g(ArjgH3 z6eo|To-vQdv?q)t==?jkKyk0^t+mlCL3seyEP+jlFl1*P&o7(k&7srzdfZ=7W^VAE z3Wrw@pT@kD9Uy85lV>ubojd$^awjh!>ft)$%;7uJAQknu?xf`%Of0K!aXLTJ%b<5+ zPcK{K^W6Hcr5CiQY|9UGxI%nQ`p)mSNe#J_rqclnO>;i>5x(;$?=Ye}90SA7V<2leP(E5XX4NE_e)j%+l*b;#1upg5x8-spo zUhVruD7h`hf-Xdg#V$MW9ZuTf0RE{9h)qB4VZ;&gYw2XFYYQY^c)_iUO9J{UXN#QQ zDJq;LINTnVAz9xekuuiZhhMt)aryjSLsj7E#tuexbvpzStj)kFLO3BFPK4gN2*?DjvG>J zIXs*0f-hnWSq*Nk{8nhD-3npkunb!cx6W>=d_@z&N4f>;TpV19Hst_KNWa{$QLb5{ zJ`3S!|0Z3wz|g(m9rcmH1Z?&3HTKPi+lZO=6{L~lvS0;V6#yt42gyge^N;Y-zryGL z9sc8Ycp$NOXSomewf#59OHb>UIjQ-K2J2=QsT>s+=nmx`%%dVcNz{~b+?)85Slf~S zPmj*1Z>6}K%c06O*1i~>83g_v*}Bv&=r;$I>2?pZmh*DpELi73o>nNc{Y6Joon``* zYh}5HhDxQJN5MQn3!8Gi&YkC zG8y?JZ;EWvW^ct+tK8yKQk;sY&)p*i6ys27)HsAyIrrVxOW6B@ShfAud9`}G4B2@t z+`u1q{Ptfl?H_eHh^9s<ZI$^71m%0SKv$&uk@f0LKk(Qzpk~7xj-0sq@|bt znbG?xV&vGaa;vr&?*fhTlDg>ytw)NSxq-tYT8PWl>5>S)^V=(RD8}W?)oFxC1bPUB z7>0L6^UOKn#MJM3THs3M+$%JMj($lhN{RA&`S+0ti2Tr%EFdR^HcIFfrHT9mq6&y4 zac>?z%}(nqw?dEoHxCr$zjze)WO2cFN-mVqYmJ?chFDnXOW|limJ+}H6jQ%u<@?$u zC2G*8S9PRv*vqI6rOpU(golcSq7F5G{`$oB&I-qS6$gCOHNH84ZltyAEUKEq5;a=h zXrU2KrfZgdVQ%^Ghyfyg+G^L?1q<9G1hW|Asvo`#PP>+mNRjeCY#+n_i;d6a|C5b& z#ND6gf@UeM;qX&QjkPWm<<_U9BdcG|H`w5#hnyE}{Na8b4e4`IqW3zJpd{LZmo(s4 zybr#C!XnagofFPtQjkIoEXdfxR8Bb8v<=YQtLp?2p1_xW6jbI_Mpy2CIvX}C)H%1( zgQ8rMT~#b5HGOCxT?;$mc6cl=mJ+>;(k#m!64o+R620UT@~)01&t*`C>L3KlONj=N zlM)#){o5P@QImpHPc*L3M3lWfx^l|7W`!qQFby{N8r}byP1+Ht>@)YkTd6`AP%Gm zFiTsWjDR`d!h6E1(I!uU42>=~VG7KN^nDKaKu@$o3XUXWF$3cl@`kLD%9_|Tz9m+# zUGp3rB)+fU(Ta@HTaXC^AB@w9Rw}3>=&}jNP1(+`Ov47T>UY)+8L2ZB{kd1MAmSj> z#7UjN)ZiqMLI+0>$#LeeaU|ka6wMZ)A)H`2%wv8XaYT^4=joXZ8~ow5YpTX5UBdy} zWX3jFaOTbk0|X51?hVnFcl0?iV>>5w~AU$q<^baBWVPw?1%lW5(>O7)nvHsr#I_? znFOvKg1-#7%M;{?f8!fus6UY@DO0Gnyp}eSl!ZW?4ldlt&FzG%&&huf*El=Mpo+ED ztgE!;_p5>T7QmA3!eB4m+5KDp5Tc^&?4EiRW1Sv~Z!_EJSc&VDJYt9J$W0BC?Xp8` zs%Pc!BCgBVZKeDfU3lv5Bb8;PUG$aC)DqE)&9;M$a#~mnF8T?;^mFQ2fUKrWHwO5O z%k{g@DEVtIr;F(Ns{9wl9OvSSjz%@%rjy%HC#%#c`N*|QH!#Zs++lVYYrk|q#Ov6a z8)BO5W@r!5bXjGN&g>=OSu&MVP0409tdR!tmH@wM9b_&T*_O93(102fcrBMy;|I*_ zjK@FiW`csI{tV*%pFv5J`%E_nmjirZ&KQTksZuMEZO;`lF~{!*_@X%8d3InNR!TMf z?sp|HLpz*Tx*N-ExTFP>d!Yr}&HSUCiAq*}5vJLcW-83wdpC0^4N1r_%y}_i_ji9g zGJB}=QHhuNl#Yi(U=h#((oyk`_T+doZnm@~!5m(ie!k*OVn;m%J4AeBa0wr@9T2Nuvhh7n zwaWEluK^z;IC{T-Xl!shveas1mT*5hq;wE#*=q8)gKK-~dAim9_~lBYM3<%SYLax;aa2libZ&W6)N-LC8zZ>el+H7V1WG z!5F?}!vZI{$IA|bu{W5i4QP<2-MB+$$j8`=(f={*H?`a!)EFRYSh?T3?}@g}MdW1T zKd4>J#zE8q+<#Jkqr!|p`9G*Hx(47o!g7o@z1!Y*8p9t|mG@%U&t)?*`n&xi(+=op zrffeJ!Hl4A57k1Es~vFACO6x$?~ms;Et#$z5bfOS#rVC;E_&DEHIMWc`K`+ch+GZ! z5Aqf^PRt1A|ATziSa$m%I%R9!=`Zp=W7!8)t$PHm78R^-eV@O<{!nX+W9c+9-0Jji z6S{BY_==E4^!D|~*oXX^`=#B~&SI#N!Y4*;l<=QXfV#vXpXFRJ`c*#7xdLB>&aA4V z3%BNjSVqh8%{ee#m6IlUB_bEM{xz+pPE@1%^ck+3!mmPQ4ivT}!pR$&!J`B2OtJp( zH{!MPUSw!g$6!>L%M*+u$4yNV_)xBo8w`D<*3>q@y^m^H-{sj)!?LX;r=e^u%MS=> zK7CWucyF-j5WWaB!kCoReL)~khsn3XHcBnK`$Cq!2%b(ovn~cawW%7VR*CYontC>ICUsS2viveG9&TJAO z__;ixSawKgmNV*8y5EWXg7+S$f@k?r={SMn-0In08J|Lhk(lJ1C}&kiN_o+yT+%09 z*iY%A9Fjc&Z^`_OeXgF@UzaNX+rUAd{HIR&V^a*{wvx1-RJw0?`>C&8Zy; zL2s1n!`Ak9S56MWTi0orAg`s88nI-swRL5fLlzhgT095w#%|57DnD!)eRO(o2U^dl z@IgrQ>dd0e=}qwI!9l_ycrBZuy&!llw+;rnp#iYqpv%*RbIANX=PdhRg8fLQEd!xj zf+=zMLA#D^$WTHsalcUTk5H|ovWcWDr8K-^RX1iKaS#)xa15-Sw%pmU*{vx}VK~YF z4P+LF_85x`h>j=PonRA|24g`IXYNtGiCS0}dC1?(B-DsM=Nx1x_zpA(t>ZVEyI2*h zZpg)NG!}y960mRal@-MipcIWl(;F~Zp=i+3)4sT7^c7823rhP>1MMR@R z>i~;`>_J3hBkcggr3}OU4t)d7Ld&)Hlhx4A18E2Pw#6X(a1y7_aFNQL?f;Ut?MwtEB z0d|GghbYgI0eeMe*+e=1A8}D)zs2DNor_=CjEtIW^ZlwNVe2Pu1cH-7|GvQ1gDx=5 zKyXGG*O!3C+^%itqLWdgAw<>~vW^}@EY?eD;U_(owkE5KkPI9=B3V zL)uffj44=C#pQNT@=nS@$vc6A9r3qqh5Bdm>~i$~N?vWJZCC2#asumL3K9Ad_m2s8 z#tCR9dmyci)o60d+-c!F%Lp+bH0WWWx8ujy#7HF_)MW=$PP~2maH9b2>L0*s-}So{ z81-5bDi)PABOnFc4FrUa_KnC3+1Jj6BQJQ}-~pg;Si7vBUrnOcvFqi?iiSn<={AzN z)hxNqEa&yYPLEU{kCcId=uo@(j6?dU;RM!XC?L*Jt4Dv3f5JOVCxuH$NA`?4?C>g zak%%k#?$i0Ozhpa8Oh}wA{vPh#JImmZ~mmhSyTlef|39^F`YJzgP1~;M?rgqiHFrV zUE`@eBHVqX^6}|eayV(@P>ajnDAnkS$zpBg@DN6Ar-bsr60DW#U`dJs?Mk99g6Ha` z2S@4H?)1v0^M$idSVZbKQP*^hYgNY7^B94*-Vt&aC>~bRV#vc4 zA;H(UHN@D9iu#}RS59{{_HKh7nr0X~qRyV5dv+3gbpE?k(>b2MRB<_~T1K8%MPx+( z%AW&lnZa=}d-vsw&$*q?oJDB1N+X@k`aq}iBD4xkoxj+%tnDYbU<`tH$+>1j$qK6E zrguS#O%A+$)UaQ;_s?bKb;F?s24Y(XB}}qI@X^f!{H0KUB@|#;YR5kx%k3rSh}wWI zO!*pHHIq_u&oW$<_$Hep4@yQPptsQ5x=O?3i1}p|<#Zd+2E|H(<%)$1aopc^syN&e z>zV?jLWxl-f52xgnpWg2N>B-ZKvUm6b`Psb;&A*d_ILm*g#Cb4e7!!3xq_F=p3}7n z7)x9tI4lv*DGL_9CM>PNRW3taSXTeV;qs{BLNTexL9u0>HR)Ef9&)s24c&byv1)rG zv0A$Qo-P0ZNW^mAy&$x%aGo&e60Tk_~xt z13`bEho6A}ELId5BTBvIABgv^aN*wS3?M0wsla}wzdbF_nUsYV`GBr|e(c#>6NSm@ z();vV@G~0q%{remNN~V^1PA1lL5ut;xc9f<^WTE2365P{*&Z~HZM(dnMbt^O819ou zMr|udM&X3@BlLtxm?*Ec}5;*L#T5$tDqru)1@QJ+pf1Yqe< zF^Fg`rkuda)lBFgz)=GTz?6j9vhDZKBFJh`*w1)1ZZ92P2IpN5VoJ~=k=zz5YDEof zqR=8fom+`?H9S+GRy9Q64?blhmRykQy0UG{qw9k8e!%xAZ`X~~L88*_C9$m|PmrJC z1q5KVcJFji00~H%0w^V>9h=6zEa%=KSI98Ot6EZKjh<{?rQl3cV6VC^%=4g zFid|(UW5_Q-hMYA!Uro%!d|66Di)}}6k$&17@CHe@kKwtBDRWEv_w+F00B=4wNx+v z?z#zedc1@SF5iq6AoQ_kk+NE>iE~(glhEoYYz$HZ+ZN~mRtdiUnere*jtBVcp&98aA4zXu`0^QQw@t=VI4C9-0?LSU!H+J!iZ1{DB>67(Ut!JzAhk zpmAB@)=pEAhS#t`?DxBVsc1(s-c9WP25?mR4R93p2Y|z!TfiRFa68=aNe^-K@|HV) zWu~G-heco{ge8A=7(vi>>&5L4R6@Xqv`)Xh)-iRzy}^Dw1P4NIG|1iy;aYDL^~$wh9Px!C3O@2j@O~Y2JeV1tl^STCDmV#PWIR>+FXvuONB>bT#94oD20H<#KY<7 zgOa8qF6KbJf?zN{15i;*%U2f2Pw4VSu(hkfIdW^t-Hajsu+CwA{TufkwRurwbWDi+j)IRkvCoPg4#2CbJ#qxs5>Dq%@h6Jr5k zXAd3Bt%DPam66&yu-Yr`woHt-_;?m?k|yRDKeDv>r1lC|HlGmPI6GExX@fCf;w5RPO;y@rU9!7&GOa1sI#JfFumvQpwBL1zan`Y$X(k^( zCa3x7(=v>^xK1JQn-m!~ekAj%Eq_m?SWZf@K@@fAm}(9N%YX6T#1`Q+l)cdN9+l8?$=&!cEr>^l39YLaeJ(A_;Lcgl4++P zHx}yH8PwPr@AtX^@KBg=)M)at&83!J;3X7(_M*KRPX)%bzzP@f;P~ovt5PsPnXGai zu5w;5cNi2l96g#kX(_31j}2M?^sN>~rTzl7IvgY5baD{Tq*$u_?T85(d)sFdj{X{w zo^z|c0-#J5iRVjRch=xq8rzbTyexKf=3u^2pe0}<&s2Jt&t@ZY$qP| zuCTyd2r+1b+yLx2mmU3uBi-P%GuY<)szrG053V^Sc@W;md}6_dqQN-Ln0LtZ%Togx zb;rdMI5huOfr$F2ir}6rBEv7qmu(rL( z;OWp*OEKw6PjIYJ>Fx_2%!F~e&J;<5A9Hjl3Ryw_ja&4SA1rDV#ECaCDIyW#$orwz#o>AP81~<`zd5TTD98 zdp~kj+75Ue8+MO~4?KYUElIV;k#>h zP(a#<5E)Ddu4BiEk4lels`>$fC<{ep@)Qemn>9*>Kym0Lk7R#3Fh-@BN_=U;bLI%2 zl>ud9P_IP!DXi0zn7J|(>%*;BaU6s<2_+e{ID!i~bW@i22`DaRV-DotZ33SRddn4; zorpP78Ub05ao0b^C5OE1&_9Kz(BWa}g5(YLpXc_CJp$(VxWK@iYhb|e|9Ng-%j)wd zDGLj8)6ah%;rB5}DUhx|d3wNZIvP~UP6i_z9ru~SfEY3y-@8b=y%(;im^VnTjz9W9 z-vTig>M(e>ohwo%1>e7A-4#(jTa-v(S3 ztX|C7^1V7U+5^yRt)JXR-0baoG#GZh9Zc_^X1qO|y*<7jyS2aMOpk9ETt3~Lw%634 zo}J~~f{ylYcCHBtG8y5tcXw72H)m`d%)J6oGg90#lyWpt$K8y0)`s1tjCpyVyO&N5 zKDMn<4IM<>oJDNBl(nTG8`-c#gj~J3zy!)(-dX!t?cGLm*NnS3UCvoN)i2Zd+KbS1 zF9SWiUbwBUTXxNo+msji}49chtl*UyjQhGMj_d& zxgl$VOW%E~kuTR@_b%SEOb-jx*gNuW`tgl8)1D4}qG;Yux}I zK+V#krghaz>#LI$gAR=3Du0y9?X0Uc&()6AMY?=$O2`@Txnt87mn0`a;DhHgv()z& z-?ya=gL*+Bd*Z(RlEJkrU^fL-qCdE0dQ8Z>P4`+bxp%yEMLQHnxXXVBO1Y|F6})yEFC;hewJfl`wxT&8<$H zNBg_4?%G85W*1i7@{7%8_i7c>63^E3794Ga69 zogXU>uW8yN>m&#O6~|0Os95qOD6ek~8#`?UWAZ{wxIe3Xcq*H?sTvPh32*_!RMx{3 z)|Qg<(Mt1Esij%)DgtVQuD2N>6siq&t!mjh8=}!?mOOBKPb|q!1!dskR6~n_^iHx)R;C9%2#8 zO%Et1xmN8b7Vx6ggWoI7XdLD6{$SfjU4T7=uAC^XAL}G~;$y7qd;6gfj9Te!d3bG# zbqL-{bbIj0dmV_y&}KhRxdA<}5V1Zczkd83oSu(S4v5?5V`a@?C~E4U4!TuP2k8l@ zBNo(AE8Pn1@NWphMYtBQmvn+|s@>m%{uTXuko%+^IAL+=ZEHF-nOT=5bU zVOIIt#@xAca~b3FbM$cGas1)?%Js8V-K4$~QRr2$TH7ga=9D*j+VhQhoA(P}Ten-V zsYuo0xWVoAP5)@jxKf7QH=oV#ep7R9i78yC4mSsOIY7yWxwGjMfwpz=Q;M|N`oy`KS#d-^qfJ@uWRYVQ@(5I(Wa*{9;X*1-(I$#8LLIYOJJc$Rt0`xpPk`` zDC~OjZs5)Fy*rFF6VA!PQZy6J&NA~lo|ix{b}jGy^$Dth0_x!T(GqM#DF@a$z|;dK~${k6O>g6Ahy`QL8xF3`OR9pO6Mi;Y{b+&w@O{;d6w)+zIC(7HVM1YtT!9TmJm)B&F*%HWj4A zT7mAB=mYkpW81cES8Ut1om5n@ZQHhO+o{-2#Z^fKZ`V2Z-gnRUzxV#O zTUJ_H+v%hCKG&Li%(3=da6;ox; zVQ?zbFN%pVl`!2RPPgg;3;c2es&{N*XmU>trCmdAD-ZJS2iF4pr})#+qe~3FYEgc?r&RV9Nof^F(sHV?@irj5l_P}^^7>_u3D!{DxJOYogHe} zb8KeqP2HeWkXYrvnBzH5bA1_={f#Un6x{v<*R-YPjS~_YHn|`3)ZYj-^1+MS5I#`-#r8m z>_KR>%jE`79lkt|m^*u2gwY|V#xFary04=0+p8Yu?cF54&IxUpbURnsX?a{FuqWdS zt%mx*`uq)N>XQe2H5t;Y)k*l^$lmz9M=|CkC(i0a);{)KzCxuB=_n4(ic-c;(;h!A z*Hbd0X7uhX4Ok6QGfBC)|lHB+2D4y z@8QQ9eE4qG%V^PL#0CB0)>ts)6_;cFZSsqSo5CW!Vp_rB&H6opYJmI%?!_7cgLM&Bd;#n<4?C=L1oFW zQxa=VR7H#T8C>uMauM1)ZLgYF&B$#|3#LR z!&o}|{jOu~mGXytoD^+ddw93ArxXXT&L6xx2wuE9^q)YIxTju`hBMb#_)k8VNSeZl zc*LL1uo8+)mJwaqG7kkEx87f!eol;S{}^k>P5LQ}gnH;D8$H3y3_+18LrM%4F7<_o z;>bV!5fmxZ%nV6%w3z@~#o1K$cL1Ds5?($2&C5ajOJ+=J*pd`US=L?Sk8%i1uSR!W zGt~yf9&F8OXO?7*1fv&;5s{I&$huvStG2Ahx;uqaQw``)*1QDM_muUR}Rb=wPpzJKjH>SWnzA7b)7J?@XRoft z*o%ruFtKKhpZ9WFxPx{w$KJ|S0pDt}R6?#U)m*>bEIz$3Y}n?ZUKs2YJPcUwrMOyt zBwe%(`bxswX72RTn~Sb*fA64qQB?J1sI$mk?373Mlw>i>gOV7vb1aG2Fcz1qwy%2zvX4r~B+AKasTKZ5(#Kw16H#)7PMCg&b?}%e0#mioO z=1vIkeYT7>KH7F)e}e(OOo%Wpn>fhE9cA=#wc+DZ%48GyP$~%RAhq9hz{bm`gOH6F za`KGGX}AKjmR0k$$E%mS4t^fIJ9$UYh?2hVs4Ym3ozZV;%@sw95g7_N9)$j4=F`m$mUdkM_ra&2D;mQ&yIDB4xjtevXuv+ zJ*iKxcY`C49|=uoCZB>^%bFj{uS%2x<cZs1RKm=?R3e&}#GI_&Kzim2nZpml*x zm6LDb8rIvv4fdR~*Tn)Jk7b~xm8x+XH`vqQiUqZmwI~||_p_8_-;i@Ft3kkRi`$#i z(fevgHi!sIZt7KRyJz2)@CJSh*LmE!DAo9@A$Ci!Hz-_dj8Hr0`^kzgS_mmcox6*~ z{*EROfLjdZ-i|42ocm%A_Q;MapUDr1wS4){t*nXupXTyfedS%8+1Eoo0p21AT6W8S zNlkTh_)F@~(zR}$=piXKqkC({uV^m;0(e z!JtJ)LfZuE(u(*K;s&1Ev<2{79Nzk9?ZF;kh|N)=tt|bA3$Ezy`tMnd^! zMxkoEce0E-TjQrmqt$A()GzzCw1K?14!)-DfsR~Yej`dB?H<4G zJ-a+*T64TP!uGZT+tVIEzBgJirL@iE^1{buwZ*NS-&EC*d#wp=(-y3@AlZi!+l!k} zj|O~`Tc>pQ0D{s1BEI&zGp&}dE0WcKH=y&@I-DpTq0A+&s5GM_U@;n^v{|I2-J{Rz zLDknn)z9!rwZ!Mn$DL)7>p2_bZCd0V!eeqpXud81#-axmS<$JI?az5yrD}9Y^R{^~ z1gv+_kZ)JdTuh=A1VmUIrsThnJ%_ff7PqPQ>+oY!cehYsZ*Y zF=MphbLsf?$V$f8d9^I^-Oa;B&dUa{cS>bsP{(FaCrLr7mUQ1^hY$VNJNJkDTf;WHXjlL07Va*d+0;A;vfgEeZHqcSce&D2Y8qMdG7hv zHVDIJI5=vD>mQpdCMjv|Ty;0uW~fR1+#)<5sY`c+IE<>N^Gk0IIGJHGR=F}AF`Sq0 z40hf>>$TrA5q5t6P8;##*d#QEMp_(AgVxKwR*$-xICG`@@|mnZ{&qZMpT~_?O`tJC zY_(-{q3nBBumN4D6@@NAUGSWws#C!JXm?OJ34T%|o-z`9E?RlFemB1UdaWaL_C$;p zcTPZb6FeySAoTjfm|91W&U<>jFuPx`OSM!e*BH1S9|*UfVt244#V7Yd{@g8jC5PzR zf>FecQlyf%q1!DbFdozgy}S{c;t*Wu zBjP!sYyW6Vu?jH|kO(W&Fxt{Q{2^86`s7;848gTL6A;w0unW#Hle&NROh1sIy}-Cz z7!-|6q`3$f8o3xU$+&)KVqs`9n%T>FCma+50aawC&MzdAdOg(ovPwOx@c!&ZcWv-d z_eus5(fI>3@fH1P!(b>R5+M9~C;D^MaG?HqI5_4fwn!09Q%u(h!fW~P{|<=+{O^#L z>lT2JZdZSWZceap(vGfMp45# zv{5*FBM4Ga!#mO-g!QgeR~k_uLraLze6I@$B`$#4$};;K%df&N>}@x zO1-8@8)T@A`3_qvbgY*(j$kMrmJn_mWKGr(<{+K)0Vrh6xAA&>4MiB~iaJT$Zdj1&m4eSn^VX<@i z4a3U7*gcAk5uF5ylc?Rp5$AvMkrn|nrf_A@(FPa)Xn`jVjFmO&MGE+$g2mb%f*p+% zFcJsHWB5aRu>uL$zW^J{_`(WLT%W7`&w%;rk}_!`E4&>mR#y^*T;zPG1>I}I4cheJ%_Cc(f@W+g?SPUA0jA;mF%&T5pErO^_(6;Cdu(JVZEkZ$XE5v`bM_R`V(fgS0N#j^F z`he^@jrO^Sa7;&aZ*+dviPVih4|(?EBza|uMB{zUe)dY!4Fag|0R z>r0(%9D3%vSK&Zs!1({di~ zHQw(^*&fyM6M<=8VCr_e^@G>)p6h8(o-Dq&d%TZ&ya({+DM(+)w5Q-EFPGMt%9~GV zuuwJZ({3c)znakxUWTphhOaRSkmDGbYHONj8dydbI4luCiEErv$?WR7l|t0z4PE{% zY;Cu9?FZlrrqQ}>l-PgDS_3d$B6uF|{-~BgsN2P=^TSav7mA>}RdJ)$e;tw)9D`GRm;>Enp7qMW?|zm9ZMSbQt_kl+HE6(S5Sa zWIB(HqTAP*OEHi4F&1HA{m+sMq;B7&?vFcDeyA_c5bTv(`NbUH$X%2PpDM7DUy2n* za<{&|Ct~bB0q}+|)ACSa7+L7)SZ5g7M(5jv69#?UWIf&iuBB)7WMtjGZvK3&sq?fO zY&G&zGK=c@NL=hO(-#l}Ht=}gn6iZVB_A}DapL!hpuw_VF;V&=Aw9lR%%UxpgtsTDM=zbenV z?+FbCkv$Q0+kP2BM-`^}qO{7JKVd6lsYt6SPwFT9~N`vlMBX zD1D>j%?(I7C*JWfmQ9q^WtcqN{0Rs&Bh(TC4U0U}saIQEiwL7o>zO6o9BGCq^T{Oy z)5QNvHQk8q?_>I0`DTy%rtTuQRWILoGDHrwxVIO<*0_iMnQEQ z+yb39wkYc#jMt9ADCT|w^u`cNb4FR>Od+-=mzPVRVjklCGkmLX^OJBHq?rp~2p0GS zI4UM-wnJKl8^u)0FiU`l!oM*7CE`L*gzb+A0IUDEh?rr~CYc`nzXdSoLodM5b`zLy z7O`9)&0K|0|Dom1;D_(8N=b&-Lkhnzjpqc&F~0N*mJ(+IgNsL)_oiFAQ-1~U`4b<4 zjX2XNWUW{{x~zBXnfwi8nm9A!0Id)k`)@JM|5q`V8f?FLlf0mBIA6Vc#;I8!bP!_@HneGHt+r^_(#@aN)EPnO6>PK8#B*Vx;Wc z5Zb_rA69MQh_e%f?!8f|q>5&6zbPVe!!0NX2O>qNO;qLiTDRARPe|>3wYK8*`LPo- z^HsFvOFT&4F%7uiQA@Jho{%FfW~R6!tQ(iYH%FCl6|aEvGClBN9{iz#uGWK2QJ;CpeWL8Oh1;d_bef^Hl_shoTDG@~gM{YV_!{O%A~ zxuWh69IOtr5%T=*?CYTWz{LBg$2E8B16=~XdRS^wK#R-mT;vEo_z-w@B` z04q@cA6ASS9fgb>L7av)Cf!^6ka*|}`{()vNz46Yz+aS*&d7_qR$&-u2=KySNEpPPhxrbdV9b~Iy+CPkBVuy3? zuKbD1GG`+ZL!kbSO3Zq^ zP;r1{5xC|%mRpknGZP$=4HwaJqUO-UJ)GIBML0W> zjpV&tlncH{qt;ZS4cSzv<{#7saXR`s^ybD(<3Fg?0h<3p9l=Q{zW58ZAv9rNF_Z5x z2g61i3nH8y56N1pdcRzKPf?xLUlX(;v{*TiYmK=WA&9O+JOeVEJsXN1-DVhNQb&lk zi(xe!9(x!koL$?0B~FP`r&@^`GO$9Q=M2dPiza{_UA2>bl}+G3T$L=w3aXnx8z79~ zrD6!3YE2};iM5<#K*RuIkhN)6!&8JC0@dC1s*!P7{wQh&sv<11Z`CYP9*0rsah)e# zW$Nu~D1Fu_8_C271vZ9<4Aw@m;i4JlPDVci+;5n4RKVJ5#KeOJzBr5bjSIBlf^-^`RLXAqOK7jT}MRy!Dg?Qb)H?g55MSV zt9I&h%k?#g3zDhAFt(eyB2DFJW?~rQxCUMQKJ@B+HMobr@(bcii-e2b$Y3Qy4aYaS z$1R^R^^{~+Xsx17(HP>FtHcctF`qZ{&>E+rM1F*yN11Soe%VPjTe)rXAE4Crg0-3X z5*(6RsA$bh-q_Iecz=?;W>qw9W>pqS5qLlb7B52Xt^63@Uq~dB+yWI@-j|CiX$&D? zN~UBK8$f|0g=%p~gz!R{4lk;7NLryXauI3jSt+TM0H@0AjV*^?=Ybb3<4nl25|yv2 z2Z!#WoYJcbH<@g$)IceQ4owH6ET$EeANg7( z$a@z!)dk5)F5Hl!@b^$io4^f0bawtk9<}OO(X_Hiw2U)B^rp0hBZn-AAg2kEGYtS` zKrMJ$%FF{mIjKLk@~Jm2?E{G3?2d)cZ3Eql_@-aU{3442o~tLokuhI7e-2KMtt<%f8)CBYxgF z18d;RjJv7BPf3H^pkC#rpy@6E0Tba83dkta(4MipWt`(pPP-ym6D=oGF2_&~<+FJw zSE`aOcB(p?1w5NIQp2(_rtxd7`&;&!@`EDT@g%&@N^Vd@=cKOyA@_Y%+`%wkj6ryw$6Fl?~32!#4DajS@ zIQfu{AP!n*s^kO{Ekv?XBY3HtVF&&_P0EyZzFT)k+X%GK%K8OPaPVAIT^p4=+XE#; zX?)ut-jQfuH+08w3=ah%9t67V$DY$55!|mAe{hu8FP;NZIgG0*6;=6AEy{Z9NJ9)^d$p=mt1Z|ib2DSu$A}-BPd8xl-^qONcUfW?EGgjjdoa98DguBv($kmvvzBDg>5Tk=&-DR#RW>Ai8DSW$BV_|LaT5n%~-mo;@Do|zCYuh;iK>| zZ9x!%RrU(YhsT}~nGfDlrZp3FZ8+uxc`u@6Z`Ux>^&F8Z0#_>9KBmkllcTe0iOM`o z$XMv9mGZ*mQP*@M(R74sVqFERsBvLUMLM-p(Bh#@ZwQ^%gjrZzrQRHNtpwuPA2bZS zFYz`wrjeGGsodEmdPZ{(`Sk`2hkASF(8*ANT4p+AE-8@a$ zfB!M|ES_}U(O2T}wULAbA)Jfoz&~81jRc_pca*$h9oYqlS7drX&|0m0GbgVpoQLRQ zUM~&C1;Z%}gF@Bs0O9p#YVIIf0;CL64-5nWX(N?br?%00a{FI}l$)>g*k) zsje{Ky;R617#2i|of_;#)CB$QSTSgoDff&wu`T z_k77O5v;Hz%R$}pFQdXSzd(OsA0W~vRRL~;NJsj4zVTH`lMZGB=)0`ua{m>NV-M|* z7qVki2Z;G---+>t2bl020iOMr6w-iSLr{M^CiqrRbq7hAIr5V1aT>z&sRs79V^~79 z-G&@_O#%$~cMs(>F;FfTcaYOs-Y0Z_h^_mp{E@_jUj&e?d{+0#1S5gW8$9|?Ej|Ii zg5v(8WZ{g=#zejeKS@7rb%-NktA)LXOh$2xp5JIf|S7+_#DtnbRO*6{mG&(2Eu zf`R#FsDI z2v`DKQXFNT{8;dOtxH#?VW{$~+2&j`-_|3(josn3nTq)@Z84U4UUc+c-UR{6yL`<# z0l<{~fhqeNMo+%%MR^MU&;RLUpI9M*6;ZqFbZqPg1E8_xT?pNc8Sldox&|AjzDMk{ zeO@_e{d&9ORWI1S*_kX4fTKTL3uMj2@08*UU3qaru&u zCZs?QzAQN`^`-^Cf$P^^>1~tQ(p`>O6NcN3o#O07?tulG4qZwn_ zEuROo8W&e)mqnE}{Q>9|+`8&w3FX))_YM+HXKfRh{6Lx^?e+IZ!lfUx1iY&-c=E){ z^Nixp_5Oose1RoC5Q~!Rg=&q*!KQW|Q$-_`T0$+8c5ob=IhApAG9J_jHAW&95W51xh4Va|Gx8lH#hvANki@S9*oQ0Ll5GJMe2Xm<@NouC3 zDF1|{1cc;1Pjg05C}g6kvhe7F7Um9c200dmb13*BxEOv~ zh&v%jmlquJj}^yckEEP?6?~R)&Mb(4IsQ|UWD+_?Tv1uML6$VXyc#Md-?6|6Cm@%-|zkHH?u!2}s2h~Qjf%V-BA+9uAFHwS6NoF&0M)F?y>bzq3q zSc11ox_=GBx>HM4QKeOyt(d$P?5x~A&vjg^s7)$?^R{)*kg`B(aLuyzS`J7T#SsDN zB8wLk8{%=X!K4)0sPFX7+Cxizel`>>tZOD=6$HD7@sPDJzwf zqY0Q?W1=qtaF%Ft@9QUD6|^eK zcNS)YeT);kz+)sXrf#;Ohm9cNx+n~RE3Jkx@bxlk1O1rU}*xc%SP50)^BS*_PJlR zJVNn~d!-6Be1NWd&CeAdRufuso#pV-Mdfc&e+$H5Bz|Pw3NJq_aEy#lMV&W`Xn1vC7vs9=PR{Pk_M~@UPxZ~90 z6^TmmD)>jsafObdqIFF~2VAtPL0^?j9*x1ZNoMN>hMK6895K z_tMfi4IF5=<5u^QONoK5(-PMH*&pA!ysC*y!eo{^%3&EY`{LuH8Ywbwwq_~eNUojV zyVIr@7Jyh&3wYlM8Sw#gt!<=i_%fX`Uq;@Oo~8Dp{!K1Tw3?Pe4wau^KL*?syN#p5 zxqK%NcJU{d1+f#MA8eNvBd(! zSGIQ48nd`R-xTI!g@0>E>0O*5`l~|H#JJH<%+8Mj992Eln{1YVwvpCP0>BV^4iS^K z=&a8X6E8AEiS8i8qg#xZZ%!4H|FZUVBRVUirfQC^F$RD`GUUOL+t5c~HiM3{nP(T+|EXfCk zq1BE=*T_hx%rg;mO~-OOR8N+L_a8#VyxATq&t0U`x{A)1c^Lke zI_$td>O_$Kw>n!mfI2Ry9{=|X^#6dF9=*CGxR(75WRHOj`LGc!*YR&sEOhtxen~lR zpZ}vLVUd8iK_4g(&?)qPb?|aAb9J?{xA<$HRg3zz^LH+^-rX|8_I-2cRwvm*>T|OC z9XSeHz(WFn8ovSAJ#r?(6)5bIZbnX|nx|i1q2IsE_Vv09k0~%_!@K9hrx^3YFa|CF ziBi+ja6BxmmD#=-u`#8FM>0_x^7Hs(f9w3XKICUNq_@rh_ClgKKK5yEQ7=h~pl<7r z=!k~_3$&@=ZunKfi7Nl-QZrg|6sf7LD1L2(0xraIwKe`yze;kg8_iAM!scw3BSo`j zqb>aNkp7X|Nhhg<&IVzS1DO&B>x3v|L)omG^TVKrxcy1q{Reu(;q>M8&|b9jPi2id zjML&%xa3rFtRT$c42Aeee#f_<^b5t!`7UD8kFD{8))U?Ofbw_o-=67VV86&&&JcY+9wtrC(uvCupi!6pq3<$a0h?I6~2bA53I3MiY;@lFG`n=xK*fB;yY;jXJWG1zBVpvd|FtOR|}r6)gkCgm1aH-(5E8eoI1EX ztWgH&y;U<34G}za*7fBhnTX1r#!6khkB#F~v5%$t9M@(IX(K&Xi&G5VS_ftkNp?;=t;9q#!;guGsOznPJ$ID)_VCo&`evApdIFl<-H` zw#g_J6faZ^M&=bv^7Ur1ekJ%Tf^c}uFo|&mOQX~&65vtE6WG!Dc=+p@cni45#ut?K z!2&tk@`X+$<@#3WwQsdl1dB0uZB$&b(u1s%O~AOTo;N}g$n-Ol3vsPmh4g2Tr%E77 z-D77Cb5Le}8TTKArpb?zT%mjfO?J)7PTh2?<7dg(T0Qa@J!kA}R>6xLMs&W4mN8SC zcOech{t|FG?fs~3PVn%MCBzsuAE%pk_u&6@>^FD5iwU3|>2DYyAe4VQW)A4St7>Fy z`&UoW?bHGL?@V~3KfXm$rDaRoCbgg;(~O2TPa)uX1EJ#8V{9f|3wA92p5?WTW4f-F z>Uy+`_qwK?CIb$H!gdvr1SRJFoO?0;e0;~(Zu?5tNFho?)Bd9$$B}Ljl)2dFh?nrS zXDZZ$I_3pQA`o>q1NnHXl~H@ioT^6$6V=TjOo}0_v{*r8Aq}}wA{v=^(9i7)`b`BJY1}GB=95)850GO*dM7l&Zni(@vut>r2XfyxFr0a5H082*f(Tjt|lGvOrvxY3& zQVGeVGU!e^%TOw&D6RF74G4^JN`vKfX4%v??J@;NbMG+Z13s&6_lG-4}4v1g)S#w`_N@+q=pwX zYo3Xx8#8XYn7Whp{R9`iXTgIbNcs4Lj(WG-alfuvwteo%`T73l(h%b1-9ySErADdJH4PJ)q}$soMoJkXk14D=@$(w8>oF0MifD>b3Zl9=$t z@f=FadOFJ-d#QN@%ke&#@5Uc4%%3goeFoEgdHnXWa1n2F_Y^2n5!I8pOrE^)+gA6f z0)iFQj7p2x0Ryn{YQR&n+~UJ=NaC9Yej4{X-z z^x9$SpfEk5B-`ie`dg1-kaek3+UdiH`$R#HraF+#2+-~mVq_44AQM+fORPJ#=sb~r zW84;meP7*PfZBwDLo0E+1_5&UAV?tW-Ls~{Yk}Tu8OlkLq|HRs;POs+QTa7p)-8jz z9#(8O@s97sBp5ab0_IFi`CXm+tx1|$LW(p2O_Z)scK&HdAcsK+Nm_H|eBA@>sNMbV~RrX>z`ra8ad=e<{xeX$jVrEcJRj}HoZ z%emkZ5eie`kvX%BOk=b1LS50aWVX8#No+YIhG`)rq4H|lW%D*P+B&2$PCjxoc`Yn7 z0gDfrP&>@PaN=_I%)@E2rvD}!WTD+RJV7nv*wx-|FNd3Ha|2ZpjQU?*k5>-I>ImL- z!TO-zolrhbelvdfzEc0XeEI5->(c@>p47kV_j=W4(5LHTp<5} zH;W38T5>;zQduzMx3xmVW3 z*L4B)z6aATnN8c2clp+YwO#)AexB{nW+S7p(N{}X{V?@fi@foB=-OUzo6~XK#5EFjA4$&N)OGOJ%^W?S+9+DEyGiiH3oK0>M4-o*e{EQ?OtGL&x9I9x=Oue*~+|Bc3={IT=w9W6B# z0h9glrvwinn$B{>>dNFvNI~JlHgh%67lPMs|uwEECtCp>BDrdqhHqs z=g2X|gR(iVM;QvKlGJidI98NRC@4qeOmg5aeA#o((HhR#1jwE9LStHK^}Z$UtwrTb z6>0N7n+t2YslE>eI+Slmu5x0y9s~uow(OL1&>0Tp+r=E=OZYy4bP#IPASX8Lw%QIX zE?8fIkNr%r|Lx{dSO!{StDS1|oL!5$2oW76H@+RtrJK^qa0g#n$#F4BUe%&zwW7VO zo$^yH>TCjO-;zzZl}X&wn5M;z&4i}Ql>}+iEeDi|47C-s#O*?fhbMgsRLkw7-!!0N zjzx{}_5>u=_lHBd%f7HA2<9w|JZ;~OsOv^___2cbK>q!Lhc`UF>u4eklU>UP6SY6wn8Qn|is>$j=jp@{&K*I000wTXFM!C}{ z59VxTj?`qY_LvPdIgIvMf?G$XcRuacq*pxhpNG79AR?5+XlvCh?^s9u z{6S)^IC@st^pZ+~Y{UI?*S0z*n1nXGC6ss>?&Vvzq>4$YFS5RT&+wEad;E)8Iu9^B zp)@q-0+hVu!KpD{yhuduaFCt4G#_FG>xu+aoR^k!v;~6I@U9T4e~yR)yVBz-h_V1VS!;i@8^C79kg>C*L$7bFUWu9V!8f2 zYh{2BJP1JciVFB`;^yM&V5ezk%V_0lX7|^}UQKiZ%pemQ&`)2niNuLgo^Z4!Wh6@E z0+?E<*Y6OC-HFA0zK0pZBc;wr}q+A?fysyRO34cDE2tFW%T!sii zX4fKFs#r*9xwU(M6DxpX(o9UC9qKY;EQ6^BgIG9Lz@OEGL%)wZVl@Y%R*nQl*=nSE zQ?#(*NHCsQk@s!*spDfQBEK@!LU0*f*U;x~lZVu`!(^E{2d`}W4_*9|$16PmJ(K`l z1pm0;-HSk*2>5w}oYTAAX1=J@EuabdCUXP-jU>eNgt&U67>{CZRLWx%?_ z)bcJuREPw-gQ?7+W`Z7xPA#1%bt;%!lffj{t?|a#Vm_<$WAUYrxQkK+Pn`6@$hH`Z z0D7mvDYH8WzthHloROxv3&n&h>?ys0Epp%ldtGu4=|f#kO}3&-UEqD~9ps+_+R`N} zw+|3(3=od>58;0#D>^$ky8Jb&Iq?nlK}=|3Uwa4d4Ms`saEk8gl2d5v9pnm^VIV2TY+Ell12+Z`m?nYtIY%`!F zn>b-nRO@xi_>M!9{=fk2Ds_HS<8;b2Qxd*(S)6CtxH*$aS7)<3(9_COP->y?b3!I+ zmVdqW3E8PVim2Hc3I9asj=Us$H2lT4!|cu0ST+gy>milo*Z)|h#m|RD*Z^uW5rFLO zKWh$qH#=i9XFyfvPj)w>xov;Ih1IiLCYT_u+Y*t)2FBK0D5$O%BTm}#07QXRe~~xN z%(QhQb8Rw1Tb(0N9?2?;;yx9F>bJ}N;UoVB{_E{FC~*fN0?mcvCP=4jSA_0FW_tDT z<7e6##nn$`=nWK<+4*)qL95UGkGQ$t$eWAcC^U6tRGK{BDeu<5OJ+pd^2Tt64?d9NsUwWh-u*s5^Dn zg;R!C>_x)Dlysuogdo*z9*H|qC?0@QXcDk#C@x%$uBz874LGT+6fl#j^;=3vWlUc> zKL|$^h=$8VP7|{dI8Yn2(9U6mmj`moaB^{9tR~BWbCOG4hbnM%DfsWsK4$oPv*STC zQu}2DQBBa+S%A%g$67|hI7vY}tkKbOfBW@3Q_PM2bz6Q@0DPB1f@3T8I-*Biw-WUY zL1Ta6e09-%gwMgS5CJJhLcwMfTo*|#LAkpuPx4Z~g|c0;#J}OKv!sXftHM;nu_-m( zhz$Cs5KC*}6>GY7YwSFI!Y|nG#P`mUiWxU|*F+_yabrKk5KGa4pFn&X2OjVU&Nz?xzv+dXc60tnDiYZo&HKX-zmHFZ zX2J;LaIT~Zb@rHsSByKKd{}vwGf}Hoa}d^wyasgDNIoHI!mE&!{>X9 z(+`Dt6O1prGd%Y#dYr$ZdLbwbdQNJbAWoFnF3$ureZK5scipw9S-e5jBFNT;#^~j6 zC-r}u{=JTF;GyBOi~o)1v@+KHvlmuQ91a(E9|00rQD66`hu)oQ%l*Cpj~*RsQqG6H z*P(4kU46cZg<&l=#&SO&>s2kp^Uc^Z^2u8N&2+sGJRQ?eH_m!LoQsWN0XBrSp$O|V zcgP0iXTi=V>_2C$!tqs$9&jL_U?LzOOu&obxxsDNph%}6h>c{Qsr|JUV)y% z_Fwp_$-7%{+u2n|r71TWTG-s-&;bIb4Cx+BydJfowo5;U){4mW{PL zZ9AlPVdBSqA4Li}*8DDVO{MyT1QOyxG|9=dK+ zBh3r<@zZQo{B3$9AckWd6|Vqp80I;WsI4})vw2aa708F$F~+!QWBj~osArbKlXh(j zMejJu_Io=K-5cUCA@3gg8HSw@fls(0<{9<{%b=JJBab#Mv(oO4tA^jE1SbqtqjM5} zyeXj$Rb-Zi-J(_nDw${H*Vaz`RrqoL6C`K~y0xq^5?P7(2*Ypd$>k2y)M!Sf9GO(_ zck<`-UV1#mXOa`~)<|RvJ6V@`^6%0sTt|UO)iEPS5?;C^&26mlb3r4~uwYO^`25>Q z!Bd7Hl*xhM%y1-L-Fsm`+F*|`mUpaQ1wp?>cIW4P5XLt;+!K@ zZy#~(|9xQc^L4Xicj=`o&hsx~cR0j%Wa{O~ukT;~_V0vCkKCow{|~>^<_45*{`V>U zN8LX5`FsDIY-zGTIRD6M@h*ey4U+k=pff+QHWIc2`;_m4vT-!MpCf zUqyy`%hsvWwHDS!9m=xH`gikA^1YmUS^qxH(&N9SnkT%y`FF$ZlW!l{u?ugX{rZ{R zlW)M<`@QPk)za_#8_U;UkzPNoitY7Q2FB*22Dc0j2INR&&q!I}al|-9vWPdeP4k7M z?T34lu6wUL%76NUu>(w$T4brBJ|sI_qK+2Pj@(_ zUlx7cbzsTtRoYjczB;AZ|9tuErhQH|x7OV%eJ35Fpt5q(>pAP*SnUdb`9|%idL!_j zVk6s(wF^IFU5tM}*|#$7b55{e-71#JwlC%xo_)f_;?w1A)Y+uc;oFqXcH#YkDwp^Y zt^4L`pB)aV>9frE%{?!YU3lA5!G`Oq4Qpm{M)S?27{Xi zF5j#;pX|o}K}e0Azu;74!`3L{FW8fwwD+FYy~G>;GzTLhgEv;8(s%_?{ zDRXu&JGZC$+MA|B)oYG!n{>&jy0X;w?IYD6Rd?kMM!)~Oe##S%;NsJ-uC>e6J-N8` zwOn=0<7La|)jhlUd|v&+;?vir$JM3YUcG+r&uh1>?^SNke!i~X?%wB<_iBIJ|9x}% zaQs&p%c?csEAGF{KUeen?)Sgx^%nIHAFbaX`|EGN{r^R!h6i}3*k#1tU};lrQLc&- zKWrA=7!4Z?-MwGo-0;YhshiSkQ=-_;1|t?T~$dHzSh>GiZ36 zgW>y3^N6)UOD9eRwop$2$J{{O4j5hb(;i)8M;mu=CQ!*mphiIyjn9E1@VX~CzX&`MjjsL6 z?c3t7f!cFe7#IXlwATYg;Mx-l3b47_y*B6IKcKoZz%B`@2F|sX@jB}?RZIabI|8W5#~e{!OTILL_yb%KJkLk?okHSjy4U0ZUXv5 z1j2->a;OO?(-P?V(MOFD`gyCM`q9Ub(Tzawehbyql+-$9*P0jy1nRT zq4ymTW?gSWcMPH@iEavdR|{dvyJl#ppme;@^`o~35&ApZk+K+S>oCBZ6_|rSxk`{B L5tu!ydqF$^K3?IV literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.java b/src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.java deleted file mode 100644 index d862e5047..000000000 --- a/src/java/com/twitter/search/earlybird_root/MultiTierResultsMergeFilter.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.List; - -import javax.inject.Inject; - -import com.twitter.finagle.Filter; -import com.twitter.finagle.Service; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.mergers.EarlybirdResponseMerger; -import com.twitter.search.earlybird_root.mergers.TierResponseAccumulator; -import com.twitter.util.Function; -import com.twitter.util.Future; - -/** - * Filter used to merge results from multiple tiers - */ -public class MultiTierResultsMergeFilter extends - Filter>> { - - private final EarlybirdFeatureSchemaMerger featureSchemaMerger; - - @Inject - public MultiTierResultsMergeFilter(EarlybirdFeatureSchemaMerger featureSchemaMerger) { - this.featureSchemaMerger = featureSchemaMerger; - } - - @Override - public Future apply( - final EarlybirdRequestContext request, - Service>> service) { - return service.apply(request).flatMap(Function.func(responses -> merge(request, responses))); - } - - private Future merge( - EarlybirdRequestContext requestContext, - List> responses) { - - // For multi-tier response merging, the number of partitions do not have meaning because - // the response is not uniformly partitioned anymore. We pass Integer.MAX_VALUE for stats - // counting purpose. - EarlybirdResponseMerger merger = EarlybirdResponseMerger.getResponseMerger( - requestContext, - responses, - new TierResponseAccumulator(), - EarlybirdCluster.FULL_ARCHIVE, - featureSchemaMerger, - Integer.MAX_VALUE); - return merger.merge(); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/PartitionAccessController.docx b/src/java/com/twitter/search/earlybird_root/PartitionAccessController.docx new file mode 100644 index 0000000000000000000000000000000000000000..722025511f34203542724ee7678db63781543a6e GIT binary patch literal 37444 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#cN!1w!QI{6-7N%n3y?r?_kU+*&N(yZ-uu2^ zc0XNJ>nCgNuByGel;t3yu)x5;;K1(Ec(kiji{g{O!NA60z`!s;t$Gpwdlz$i7bA5~ z2XkiwW)C~trX&TWHBq$BXD`^vEW)JT5~$eayAHGtjPdxAH5oU&I?F64@(>Sqll@no_~GJ8bxLol_i znLh7kxWQTXY6tj@Fhb76b9Dogv>(7?XsTj0F-V3(;8caip~GqlW_j{DDIC;Qk49^`BzaRgIe7Im$ryNO{P^8Ey06HHw@_X9Fp>&;#u_jpZ{;Zvus zPK>&*)lrZPzSo@uO6GBIARSEunZXyBboS2JDxcuHfxA1pqF74dhvhKCyZJcIVlN9cIUMktx7a6}J&ws*FFa%Tn zM-@G(u+~Y!8$vUhVEuku=c8=_5Wo+cULT%qSpOW+=7|(lXIm2+UjR)83-HXzVarhf9X< z3?TDR-woEWO^>{xKoK>kzT>vgBo$`Z#2nJ2YdD=1s}`3uqPLSlDGe@5M88IKq1AHr zWts!P0Ho!cxgtuc+P>SmN8F1vyT};(iyp-}psS@Rnz7;X7NW>HVqQzg9?ry+$F*hR zv_Ezzf6}YCVEz##p`>Q$L3s@`)rm34YuPARGTXZM{(y;+VoJ+v+QM}+NX5@#hWHn2 zUCNnmQ|z)Y+}Nxh_t`%a6!sZW%?fmz&w>(!4oZ+2z*N}@;NZ++3UD(2eUoP;OehYp zqDkHPNX;u~hF_t zkY5brrx>i~;++3HO_tTFTAcSoTn$}e<+G+}0&P15GU+}R-Oqpk;_yU@ga-7omSSSC zO!U$`@bKipkMh%oP;<)_@Ig*Hwoq>P)w)W%KQ{H)@YkA=*Ia7bA5AaW{D4Hd$ictf z4;iZ-WSY~~!mtybxII84p@MUWs-&s9w`#I)N1Ql2Id09kK^jybwS*#}B)`j>Jt?ge z4a|dE*K^wh3>MXm%+K$xGdWZFi@2Dza@1nJG*9r-qc^!e@QCyS}hu z%lIOTRU(!NCEG6Zjj?+w|3`!0+xypd%Y+Q~JQq-SN0umtbaUIDjLRyD=w_pLafhOV&(~*jQK?^U zb@zkkNy<&jo2e?SN)Z*1FEyVkJWFSUxZdyG9O)z{A)`n`e0<@6n((Z!qFo7-##JCC zU^DJIpZo-6jp*%iQ*ZVYJ=fAs4_9!GLiCuJ(cy9q>3$I5JFaQrwkYuHjkH5W)+y~8 z7;Z%4aRaGZeVJC+W%Nm0kG9xIE*}@yLoGYxErLfOW^X*4u_MfjAVo zTNJ2A0rBN$97+0B30PgCxWwi(OuxEuz|}7vUZljTOGs_-h|BL!2U)e4Uqr14SK84j zeWz!IrRpYXD?aQpSCR=;57SU46Fr%b5HOh1ooXE(N-XIbDC$LH=WyYpyHV|g0NcR# z0W{EGY=rQX-@EDVlH7g5e?eouuwy&iesC2+JaUKO1-3T86Q`WO+rErNO%MmP+HR#J z2~TNlQ3`}+;%a!?D#fP^uE~lNDZTIN%wTzDAwGxCc(@{XTe$f}^3NNi2v0>*85#_1 zlIqVNtUJKTj0N`PMvxE2f)S^#){FSp-t)wBP;saHv1AcSmyC4`v~6#Vpma>TslC z9QYwN(yHTeX=*6LUE}L#xL7FFS~u4|mm7)0l)I~B8Y@Efk6=u28|m*G4KAX?b*n4N zX2kQe;?$^`GVwykza}NZmrQ2K?YE8GNDI+PeNZjtYCpzcqi9b^L)`aT6c@kRb?kaY zIo4;i^NE#_mfxNVS0`iB)=(qNv)}uHyc!j@V@mAMP}`g?$I;+MrJ0|!;?XepaikGV z)CLE})AB)o3+t2H*!xmf(P9ZNol#7WY7=mXWbr3K-Jz4B#q;7E0#CR8kg@54;hz?f zn`&k;DM@{<+ulEOS!Loy0Cg%xrc#yR`(du6>vw4sboSj36XI$}r!Ec4Kvnh_&Bc3* z#m8MYE5wlP_qOIX>Y3@ANRwY_&@pHWt6tS*q=v!C`@@1Z;*(Iy=d`^Ly`vLyY|L4V zXeaeJFd7+5!!tHcI^9$55=iF4;ku~QV8Z&?ob8d+Vk{(8w)(b=*$&1D=;)?M+$v=m zOXsIiJ)MnMsij5-WauG{Mx)mG^nE_g^S*qqCo3$OGK!D$?8rW+Ux zQkE^I)14h06Jyu%A{8WMP4Xd5H4e?6y=2#TpDDfvT5V&J8t;LvrZ{c~SoA|C4T}cF zi>9%sqLY%3pHr$0q<%UGz;bK6Sb^|iH)XYu_wQpI>SXULDDC$E=QH}?vTtunB7MQT zjrB>i@$<3ZXUq8m|7tAhF;ZiMS7rb)8l5o3=e}S>j9#=c=3+S7#a6^hdix-N%_DP! zUUzVZ$%NO5@SWNxAN?%0Mh!)(jTQ|kBrRf!GP>S^W~?}D9&mE5PpPv;L;Q=`p< zg7xMxZV~5?whnVWKmEG#Z>Bq5HXpXP`=)iRH5MI|>3hJW;%rLLh(Gn<^ssNeOZs{? zP?qxZIY-FUzRU`f^$ux{FzsL>G(4gA%ZxUeN^)e;2xpE-byM{Sl1Ua$&v51@4B}U5 z>FvFsSaW8bfc|GI=VlYpa}rbvk0Us)ZHffc^)IQ49|hoVL^xd;&3nVZKCo*TMA)w6 zr-v8rq=`e|T43K+@Cxewq_yn7?xOJcmB+EA*4$ZVZ`Ors}P>R?D-8b6T0xzh4tYXA5Hb1mznD#v18pW#;p=N-(+hc4i( z-7C;ZWh|pQ$*z*;cq-9;lXp-|_IS*yVOG8yHmrC6;NiYm%^4G`blhALyT7&haYaEu zALDpr6mCt40Dx)gbCjWhornLf`UpG&>+~@ym#~Qe5Q}+*NvDvv~HPl)tt!mY&qmfnUL zqr`5&-W|7Z4vpR1)UDd$rT`v88+)U{C!)+10h<=Kn2VOK{N{*YEn_*~DU3!x)9n~?f3G$-4| ztAqSvs=D>EtI}p$WFy_VZ(FfJGq4{Ws&09~*nonI%6Rwe@axUJ8KK_`tRaF$;{u^X z@qWOwf_^lH5tQa#CgcFey|LB!p2eamn527;M2ZA^QEjH$4&-GCN2C}pReiczuuaIj zDH~qv>)9`ZUW)K8-mnlNd%{sAgu8r1+BPZ^TJMjA`p;7_0!V4>aGY05H4lu}<#<=G zXKSGN9)iBH{4>|l6*vNsEMQ=U8qi><|H`$qi>Ix*^B)VHfkEP~biHp+Pkw>X^LM+r zV6c&Cd$0sI!jIlv*>z_e3LJC4zJA616nkRiM@1$|qM@px`Jp_aUZ6i4N11M4D=Sgm z{N*LbuhaGnXhaf|@p8JsGth(F-KKY@`BXA>des2{zTo)?JRF>Q=$>XLuf5p6oMwnD zjR0OBV&5K~md;{IL|Tsb4DKH`E;>>cI-U;ae%^G1hVC7CzSIl8+P$@JhOhuvNeq)q z&SwS=LsRy5Cf1HyDqbdzFB?7AZFx#WNGkh!yOcijg+#-7S+Ldz>lks$(baUyEPQ){D9SL+|@_OO(qPR+| z*rRjx?Dkw;7m*Z?^$THn?OyNhXsMh?8e;Ra>sa^g*4I1hez}o&v`|eU9&p^+U_spi zrb?0c$Yh_8y$#kp^qBP3Oe|0*H$1!Oh62&ksqkGo;JeN@@jFsPfS!@+9X8!s;D`p>n% zmCh|ep(^*Y)6f*2(`+84<2PT!GoVm)j{VXb=3sYnRO@QbiQ?f}EMWKk`&*rEk90Oc zce|c6_XFKyFSpkn8x_s#{n~*W&mkgT*~QRXM;IaXt%fQ(B zj}@pprKoJGB>fsBCY8d2lD=VdK4Eh}SGVr#krS&S8U#c2hw#8TbzuHBMN$rJtK>cn z0DX#MWZ;C@nO8CKX{an02n0-wIPo$_SsrBjemge19U#(j2O zH%^tkKeS~eak&a*!Tx68XYH16HI}K4waIhJ(&4_Nb0tn;>0>PVdE3*{$18O@>%lb3 z`=GZ@gX+bZr<1uyhdalY5!u@-k&`pwOcm)SgN6C?frG27pQi)PnVbwEZG=Ty(Qg9> z9_7TDSF{>Ih$~=($&L~Wf*G51RK?>~UFgW*EH|-wjo_||{jq{Q)kG0iJLyOf?KUg33S{6^DHt#U z9THmnNi)A22*k#t6=ru>Lz?DW+)a<#L<4)O^APCpKvCCLP7=R1)+t2aQ_kdClyo~ z&6zcs$A1x=sZfAg5dKh++zD-#_dg{52P)3%vKl8a1vKjK!rTZzdQ{OsUa=a#Gm#=P z{g*^0QaBn_Tq_3x%aXNksXw~lU1!)$&@-38KaVog`yvj=cL9Y0-? z#g3%j4+v5LDKuZ=N?V&fy0`q=F!h%0oCzhh=MNk^Rz@alUm2r>nDvsM&xSUhZd}_8 z?1#L?o(GmD-SR#ydtB+=56|V)?0D4tTo6_|+&>u0-?@+85;17GktB(+-(_AAP127! zp{Thq_)a(XS z$D)L>ooU`NUU`aVXjK`Uo_-@LBsK3dk;6`lL6_kg+MWlET zZk^C&TC%^#_VBjvt1^yo#`b*W>gVHr)|yC(TD0jLR=aq^q_##xIo=+nwVa64VO>u# z)%M!A5kIVQORqlQl(fEibmFnvGZ>S6m;2@0B{gr4i@VyVX_PUXu;cPZ4@jsHdJUYN zGNZ+ez?av-^J1mL3HD7F;_yz{@eI`u6B*mj3FSP{bP|ha3bOnp>^`5(CMvKQwIpPnfp!pL{!Ov&(acu8#?iJ0tH*Ij!(KX}V?x{uXJG01h zcNfA30r{cf-F-hfZk+clPCPi4!k%l|ga+Mqj6lIRcSm5pMlcPFyH!VlF@A@|^DLgt z=U3vO$+dkr#rGUQ<VdWq=ju*|HY6=4bp5e|_Jru4ADZ*3&0GhPu(Aes_``#KQpWfvuFGUJ3!5Gvab#Ti zt)1thF9k`b5_2AXhUI(oP#%_J96_1hl7`#PbM)WlVO|30%l9~T?C?C$~gG4tVzu?k+){uN?Bz-^zJYm=3Fx(`- zG=D(0C40Aglpa7(kt~-!$IMj{ZKl}aeh@7F>*^@GQ)pU?t=3gg^<6D73YhcE@$=8P zKIjX*g5sGm)uJA9LLc|+!hC>^X;V%Tb^iFoeF)z)aoD6&e5FCK`Bw6p*}(!#qUE|Z zFA7ayAalMzOKW1U22~4&?w|pR7H*pY$`TJ7zj7?&`m>WWXE8?wb+WqTxv%z2qe=SE zO8C)g3m0JX7!mL15xch4aA59!oKogn-3m^Rhmzqug;=T2v4%tPPN_c^AR{&B6WHQV(>dArf_^ zmwHs8Es>XZEfUirfb0G?6{m%QVuM?D!tu-T726*QotFu{U&k5s)nb25Vmc({Xb;KFohCvO>c+OOVWQE(gWsDdAYQa#B`~ zn^8xc=cAz$9pIOBY|k+mr{au9zC>6*W00@FNV2m;MDGKoBlb-9h0ht{Kn@!qtCVr; zX+Ch}bjQbEd?c)+7b_4gJ)=EYC5w2ApR>`tZp=>`f)p+2&6YSgW0)m*XhZ5_<5JhYmYUD zlrHWvZ51eMe&&X%aCmJ?jyw!`6%3@e-_Bzyhpa`>^UlVX<}dz0(;RBG*I?|w;O=NK znPpoXx>>Mr?SovCGS-;z@$$4*tkgHO7t|e`SCvbnuEJ4V*I)SN@;$7K>a*z&uLs9A z{$FV~6)8WG$Ya}qU?HXKjeW~tgmk3s#~y&QPnosMn*^T+CbS6F-J@8HLeD{uW{@Sj zM3}?O-zNoZE!7=M6nQ(SA19m;<5}eAF6o8 z>vu~LH7osWk_%7PRoB{Nnw>k0JBoQ$WObeNt;g6Bs78odC|{*{WH}T+O!11b?-e3i z*jhHE6$+IU-DZ-nIIlu`Tet2+D#YQ8dER+eR3{uOCk$$9bDFFwxgKs;RZ_I>9US55 z;335Jl9{58qSeEGZ?-*iS>|YFp-R~&kLs&t1fx=5Kz!6*iYa`6?dZ;Z{-kR2;~gai zzO<~Is#_bG_cWvQ3K>&%<)iUZQ%SGbhFb6DvW)`X%}N>3-H+%yzU;Sh6gwe2i$04Y z`+WX13&Q$-fx^HZ6;}%!cEHj)RKi(ZW%~QiqZ%D!#tDp9rRi5m4$(J>>TsF=IyeJry_Z%rVX>F5Lr{8f9E%y1U>28>^vK|tiLOO zutQP(bk#h?`7;Cjv66P$-0$(5BjokY6m#R?W7q14Uy$!}UM?_k?F$wpov=AAUtMq= z7L{v02508_hvz6v#n6d#=Dr#p7F>=sEt2ZJ!U7Hp`kr4s(cD9(1mw+ZH8J}cL}zrV7S;=?Ta5D9A3VbOzn6eM0?M;3?crUzWoMqPgTMBWqo-C zT5~K(qbfTt8^SHa&h9i`?mmr1A)d5rDYO;+ zA10qTkaONN^)|Gp3iU8468pdsAJM2L&o`$A^VGV-kofYP`uS?kf&jDY$DQ>JX?JQC zRe{anY9x`qxop|t%j>z;*#cyU#nyC!lOmmD2jSOY;d4pnN|+yP7Sy_!_p3+=?Na0Z z!OM*qYtWtGc5b+FQl-(1a-&mtpLSOax1abvCFF2CMQtc!7lv(W>uuxxi0;BvbiU?x zwOw-a*ur*&>w@>8gOS}%8o=4g?We12F!sM?RG0vU-Jh@XB z5cP0f@#gSdX^@KgTX)j(4knh>w>VuN>1EKnuxFMn@_B9p*3t`FRJP?uINTuGlfLu& zZ&E`prRj9SLerd&e}wP)$vcAR0l7-ZLK^v%KnH})wmpd087}fM5R=Baspbc=hFHW8 zJIc?S($x7p-n@>*&LEtCLzG+|OJO}m{mr02OppEA;7ymzJy4DSuIf#U;s7%palnB; z=0pzk3bg(ZU&GQ5WHk`X6t)DQI{e2}%f^tuns>*35lU{0v7jrFVzKKEe5aGPIDmip z0%FsjdjxTm{8~Dh>e>Q{7hZ7d;*x;=%Go04cZv#U2@bbMWJuQcNTiH)_u-fBeO+DN zYp4o5-PpmXu5O3oM{%M&J5f@F`CX<1^{cymgnw=I%a7$!rMb{$wmNYu0FqJ^b}anM zOJ3IYrWOnkoMlq)@G@tk@_E|xRF|0mXOu1v2v}e z(7bhdP$`e)f^EeY;Q~Vhk34^xc{%4WVrGr2cEft2m=kqnmYNhz{F{CPEA%6clh6Wp z4yL#zwa9Ab{LM^_1}2NgC@;G05QuDLmMJo?R`ssZ6x&cU0jv3^nt_AxAh*4gT++Mx z{xnf$E?V?=97|WIuJc>U@2Ns~)PUrQg*XpN{HUHV)#%3_s;nM_6f$eSjcve{d4(<-<4loYQb>U;Ny z0mV368a)AFRnC34^%DNRAWm(+bzZIBE<<)+3peP;9lw1$rv0NX2hsExg?z64>SLM| za8W@-qH00oS}%Gte-n@t;XV&QW~VO=qY=kL`7a*DJy~4v zostV>^jc%*qhS_S`cgPrkfkr*eu}AIv+}jKNr@Wt>s1}89QHA)L#Z=D9O0p2p{PU6 zpT9n_y|cpcS;YY#b4zGWq#JGRK8voVutbfKH(F?flj)wNUzl4yJYs-In6cV*cEtks z48<%4xf*~kgVV0%BT}UN58KCx|6=2F{r_a69rXy{xu98!Z#eu^Qe&+PMY;7U>B#Dr z^9?rm*dgad8-Ij#JU{pri|57~G2!E049Bu#$Np_0T4iQc)jBt-n zN@ukL^SSvMSJIn3)t1H4IWdh`h(D?kvAjx3{HNQin8~sEu${V$%VLuK8YcmaKfR(;W zYl|x&*#0qSj4$$Jz=Kk-5`L#!pSs(3EQkXs0?g8uCnI1EyzrT{YP88yAVZ_eO`HaE zB7L6&KG+-Mkb)!0Sj@oqnYQfUQrOTaB00_+HjYI6ilW&f zG=vi@hk5L;BaTS2_dLC`;X^;XcTLq8rE54~o6OjT3eG$jVSr%7b*bXqnJ|efnQC*6 zUyISgu)YQ)g7L*+(t?|aGD;hw)umR~;zdllkvA}-#R=$;dmqUBO(R7`x~@v`Ql9K@ z-z!4DefNcG%RBm>n6aG`x^WZ!>04?H1PQvZ)%vo13k(}_2^ms0YsO4#I*A->9-ih_ zIQyH*1L@x?)kqpaDhFVHtAqltOEnp3`{~1aU?zcUhY%nG?)n5d8qoL#85TffO3D`l|dF#T@72ijGD# z5vEhyP$#R@Df!5?OgAvggWTbE7;C?DKP2ebnj2!8>}F^W({x*9j(y!r!n0&5r<#_{ zY*-@=;w=HTYaL`R7}=J$FwlS+6L~F{R1*fx?2IQq?Ph|4rvD7${hvWeQ~OLe2bY6< z;m#O`zo}9yk!{ZvGBGFa2l=8o-g$Lm99Bv-{qA=oFhe_>SGpU|Y`CNalY5~B+s*u= zory|Tei5eGlx8~I+-Em)I1Ne2Fx+`DU-x%^2Qqt@^HGVn`LvFwLr@XW0n$`k$^f114h;-(JsNl)!hoV`ztuxNCJdQQ}xHB*a9~vsWnoj#!dgStL}85U-qBhAu}?9<%mPq8XP>e9 zRy8*qthTC<9+X;t@f#*SGPr~f-VTh@FWLB>r&{IqvCn{y5gdIWAS^DV16gV{Doc0( z9r7jyMpkeQ(I-b|VIKKQ?q)eYbU%g%g?S)VYc1tc6dPtFj^H3eD3!JeFC%)r zL(50mjJi2XZIj&1S!2*vyg|rY&Fa?rsTS%+bHNzCWy1m|x!2ncgRw7!stst6rro$h zX2{3bhcWOm{5Q4SAJiBiYFN47yYI=i%|+y7<3Fg~%qBq80^EO6f1|>TMEO6cFS-Ze zJHvB~HhtROcNxPURh9Q)*w1A%G6uN+BGV4+Y^Llu7Qu|9@CegFk*gha&?YzAu^&j_ zHZ7T{9Te@_>%;iH%PxA?;ysV_7x}I0D2QAQ_7CzFHcre)=Kq6y)>wA?Atq&O-RUp# zeq-4ORjqpjtriumZ~ZRcV1KB!#j|u78E$n2vY*G$N96Yynq?NuVB*!$U5b$a)U-!fShf-+zd$e zIup&eBFeRbnCkg{*xk$@5g@A6n&piCldSso+(9 zR60SRIJbJXSH`DMVI(FwC(2pXnNnV~DVOv~7xq)SD2HTk;9D|3W51i%b^B7~zdY*R z6^{-54eZK$&g>79KRK&zx`*568dv{iQcmxvt0??Wlc7n!P4XiCHrZwO|7Vg{!KP=X zFA$UQ(VW_m5cEd5K74I|cje>|ymg(13G!MhsS!&C zTU%F#Idp;Hpv7wlZ~WHms`A5@(MP8T51{o|6+Q@wKAl;#IlW0fJvc}>1n*@tv=;=g z<<_AfcQgPN9CUfQa1L33*PLZPOo%_pjAamXO9&+nKWNvn4H-rVChi{w{t>E`RQ3xg zODPSnSk;YLXgtKEDI5c9mo0ZTY<6o(Q#g(?Km(b@p(EDf0;2PYb|=JyrNLN`#F=|c zZ?YEFRUY#9G6^*rz&QsQ2EGFgLhJmE<{?%Es~dXp8;!-`7G`RgLu+|rbr7+%rTjB) ztKE6M2lysT?72AEuftmtww+&#jcFfI`w-FS&^p25A$t+g*ho9Ua4ExazeC?Zv(R$w z{bV)t_e9!(zHKqcKAghoH(aDP6z$UB>g+uk`7(rf4wMhZjZnA`9J8IygGb@`C06wc zrYdS@4ems0KnmJscz`p@V6coL9>E(bA0y0u>;${Q>qnGl$$-5gvuvWA_>Z_~vESnG zg3rY-Y(~dSw)uY5lCTXBHv+*)p?_as>p>ToW*|7DjN40KV{Z30bkWHe(J&%wELmr- zAr|YUwD6N2OL9t6I}rRzbKxAqJ=6<_rPsX_(~$PmJ!2ZyRB^cjl)RI2Q1VXTU`GRN zTcQ4$Ji8qIzmiwmW!s%PwVcTMmqLUA#QkH!oe2V(sa{BHV>O!GG7nlfuQEam2n~8z z=Hb?kaMvZ4`@e7cQfZZ%78Gs}6s2zk(-!|)F3wWjk`XSW2W zU_Udzy1C2wb_iT_pqvZPq#_-z`!4rMRbdMY_jLS zs<;T-l<>p@}d88YT{;6=9Tezf zfS7q%OD_4r68Hg6*32Qrw4ocp_%jp?bW>|7G0wNyd@prvNW@u3^Cu1U=r!DfB_Dwb z?$j;X@4#OOG{wTh>0PORD_0H0XzBvQu4QdM!G&NDyi3kC8%|bGB{#hbR%~+M?WczQ%)NguGp`!~H8>d8 zLMUO99g2@`9vC2n0xY2b%Thc3`B-i*IY-n6bY;rd*s7V5l6#ins>C{;cLRu8eHWv)P-gB zUmUKFDy|e$iX0SM)>%{THS3{Ad)ClBmlCVCHxjF*+wbWD5r9N2_f1Y%>C7Hm&$%Um zB>jci0uHnUkm~1iOHT@EmtK3%>gOCy+o9QzH#ZRU_j&jk2*6@Rk#VBbYyQCmp9)v* zt*$_l^4JROXZqXI@|-DIXps-->gUH^eKpaTtgd}ezXd;|QQxfdIfDcT{zq_NP8qbw zpMv{-3qJoXxSHVD)s5{z^VqiA8(Ku2M2q1*iDb;Sf@DnoFJOpNte*i}hA^=koXUn$V zLyI7*L191R)wsWOdK;W~KZq$oi$rl-tf&<=u!%y8_;zi5p{wDU2DPdo0)Ox+8?oeq zT-TLtTOM5(tPcRbNBg*Kqz)04ZZC;#9eIKLj4U7ktF`-PiULVM(iA``G40$m?qfOk z3B5vwIc{~PzyFDSt$r?%Iv;c~@4EavQWTgo{I6pEueot6crY2(p&j2v0p&Lr;M%nf zswg|O2*C6H5_A-XUi~2-_jFgwKcwp-H?7~0oq%EHJMtoofcEygK@mP!VG{N#{V}m1 z{iR5AI>)dy%#6?affjL9tfD278U_e>N~ooJ`FGb%s528KTyXhjv;d)xy^EC9VojVQ z`kRDSN8#g;8rZf#2e3-;{m)0UvkDpzrOG`T@M7y@cgGUKm)$-sKzO^rZKyuB=}{^) zMbgel(sid_z2+?Jq+KyP$Td$?&vWB-2#ov3b%HeiZr~24Pw9F^-IM#lJRb0 z|2Kf6(rX? z?_`#Qck>IoH~5HSQW@AtWK{y91K~P#+Mo1?oPW`mm|6;MLxap8?6d+pBEdTjhB*H_ zoDOni@BZZ)2bGZ89|FIp6X@;_6X_Zzo?%G5 z6i54@pUrl8uaw9|Vw6gqCYWzoLimyG5JJ33#dSNQ_JI>>Q;Ku$Xu_z5P(qRK&#`s8ks&NjH7CyXD;~ri-RD&p42hQJ zL&L>_nlNX850#Tpn$)26GHEPdxltuN$!c;uF#PPHleu+hQn4~hTL)Hq#lx0~@fIJ? z;!V=T9OEZf$-2I=0rS$tI6fa#qMt8DEpkvtZ3|>8<;lAazGP%zFsB@wnxe1%&sJa^QhKGtU@9k8a*v&MPj~|oM{Pk%WCS2X7k@!uD3>!a^dDoV| zr_wBDW4P+-MP5!+ZpOAe)J_xqg~4!4%g``(ametwVc0D#@AWieVKR8(0Ew{-iln+IcB!%iI94+lwz8`5;sI!igPutXJ~zL$U=UHu2F`loJL#jV`_ z| zoBKhz;w-u1h*<=WFxU__wy4V`Us$z9mr$^sc+|VYgK{Cnpbc^ZvEyBL^cRkFL(_#E?zg&2y4;51|2A=58U4`$RI7f<5Q{96Sg>Ypk?dasBSD^xVA ztzD}E50&_k_0w7+P_SQJmjy4##GmQ0-Yo|sji-N`UlQ6UV=2#wlQcg=gNys3V86?N zu}9L^0b?tklCirFAvHr&-9r|7UT`o!<~W zd%CSBR&+Ezk&4r4P^HlXx?wK z3n-KKYPkqU7qwAl9w}&x8}|o-U`w>As5H}GUYhWnIU;6dK$#fQD^Y$5@A4vMt_;Kaa4S|E z58*>XNd_&B;7ShNlqG%wii_Qt137q`#3zH^a>HdOVvdqVKo(@&4M=g#Aul@&NZ~1T zcv!k1c|-l@xqV~Lz&SoHFfivD7%=>Qp4->5a`_}>VPS6S^5+qLUxSna>H3qW2kfS! zA*JkOFtV`;-)RhpVZ({Ni?rK&;fjiRgY@czqYv~gpi}&!IsO=HS{+r!!0A;)6Ho|O%3YVSS0!TEz&J+ZxsILFCO@c+v>`-&d66^sOHwM*zO_4 z0_f-W)@-;aOQsNK`tMrYGUOsx>kS&0ft7T^m~Z?pKX`x&FF$@t$R7M4-mr zk#`#}zA=1)#lxNqaOFdzbMBjToNjvv)I4760q_87mKHUwt6o}PovaviU?f-hqg8Ha z-K=@8cC0Sa<#SU)&w$UJo3^+lIf()vyq=k*zQ6drEo~Uo3kum2_wSbstz7|Ai1`TD zUh9R31c>=b1m9er1vV@1Iy!2$nA}h+7HY;`sH%D@F(gDL7dsYwoh;gxPb@nY$i3P5 ziR5NPig4Ne9%|PtQD7@Z7G63sZ#Im^GTeP-?e*a6WNzo)li04IA9!dD4jKkdAiR?#9S(cUp0&a2Z8j8a?mpeV%KT6gzuF zw3Sd^pGJ(DE2g-0*0;8lN=kxAl36N9G-G2YZl0cY9{O+QjvOD}vXhVf&XQx7_TC6c z4&KU!LZ{Ze{CsldV1>?z3q**MYkuZu>em|<4m>+QRvcc_bVSuj5CAHUnTSxaW6msj;P#$YkaO>WZb2m7IUBtppr#+&pe8&}6UXh1h_^Q3Yxl#B3=&sQ z_3g~W>W!UDU1s)eT89zN+R)+2?#)l;eQ2KIqx6UKTgMsqIf=lG*V-+6)muH&2}d|v zDV7?g$PH^PK(q-jP(f#NW2>cNMAy3@;iYQ0pJgU8bbsyubX2hG$@O8xuslA8$DJgG zuoTz}@3mjDa9HwU&>u?T$@oYG*=PQ}WWnADkoP^WmC*sY+6ZC;AMs6FxO&rYT4<;* z-Y2C$Mh!5cR+or^Ff$PKCE7tSyvBr*$S0fT9RtCRM?!c#ddp_mIz2XXv(f#*uC{&i z49`r)NlA<4sfIZt&moK3J+ZX?s!^0f6_aTjUyfeznFT6pxWqW5`ND#B@0X)`M&k$z zUmRAM24zG%O6@x6$}y&mH{I9n)hzgy`_?n|&X!x8jRX{Q6ZW^K=9Q&HvrzH&d&e%L zYWE2N;Y4O=@2QhQh#;lfA_Q%UWj*LhblZA}MJ#tcpq%7dwZB;4i&igwpERR!w8Q&@ zZC`Z(_E5TVqO<|5lbFemac=MJheI)HrMKnbwJFvicq`HE!KdzZAQr=#{k`M{^}s^K z`kDL(@ON-}KSnzsZl8~rHG`q3se?M`RzV%4C!mfvP)DtFE40JEAqW@YTEJe?33{k@ ze-HXs^zT6)Q+D8l#ihSd8h^w8f%5kOe@FS>Rp4>8Ks%)7uR`$3&)S0%!dSI{p#%kk zz_|XQ^)E@Q5Jybt0MIaa&@h|7hV=sM5w}^TnttPKK=2}c`;GJW0e|ycE8Pe^uSdQK z8ioNH_S+hYjZ=l}Bg*a7Wz18^KH0t=^>dAEVka2TXWoxVgsElX26E(>2}^TkhTb@N z7x~(_;lXL-PS#&9kdV#0B6g-?YNx1F1b`G}vt|5t_cA0o-)s zb$dMJZ}WLOwE1>qbIVmVvd4p1;y!_j`+D#30C(c#{qto#s~cM|t7G%&Cv!DybB9?( zb~Q25Zkvef-Z3(9)cn@UzM-NJtJ&7n4MB6oOKhZB&3f)H^=wxFv?6gCkso_OgKBs z%=>s=0>Rj=yzkd1s0IqCgXc#}uu-KPSm!{WWwJQ$3p2c6b5fRoMk5rf9Gq|VT!jYF zac)mgR{xK%w*ZQ3+q#8ucXxMp5AM>qySqbz1$TFMcXxLuxCM77cmhFQ=bU@*yXX7g zdw+GYDXN+=#~5qx)pO0=YtJ&r_|kwfO+-aSa)D2z9tJYjmLwP75!cnPk=b_zDnsw3 z$+M-thBa9VX1mtA32+NWE)raN5G;Z%*Fja*p_cpZ1n{vDmv7qIR*?{C26ZyZx zR3S;D_#5dc;#p~>6USEKO$@AdM2rmyGay4XwqmO6DGWh%`dKM4rV_4O%=tz`XkJiZ zK<$^rm1-;htjFZ7MM87^C=ODbKw30)j(ICE^jIheV_sG_g~K3NdBO!Isi zmH&+@A`;yG2;)3~x(`OW45REe6@PJWhN3xL8Zch?>#AwK8Nk0{y~67f^PP zGPro#T;t5UrWTm$P+}?{1l$MKwB`;aba}+M99xSknc+lhMtWp;=0LjZWk$bzPC{Lp zY4~zGm0vHie8-m23&$1bM})S(-bMS#ds=gLM{J$f&7nsSXYl^Jc`vhNlQ9qMvwLH~ zkXKxe#n;JCmhOrRj7n(*2iI$NNNNFq3H};oLW8mfIDLZ6191kAV31`1< z){Od6o045z3dLnk2Qtm6u5XVz%SK*Yb;ciWzJSY9UZo_~9IJ^J?=iU&3gsfTciLSx zub5NXo)k=pr_Pji+3}<|uUHOj+}}5vxNPSzu~hwZaF0D4k4xK0gD0GEvs~W%WMI6B zQG2Fbc0^Q@`Mr#Y(>`?dp?pIp?%l`3yrfV}5nF3Hrzo|n$!3zc&dPU^Uv(!Z6+I`D z=u!82zLM7Oe15d7TPH47_hR02;lbuj0}Ybb?d%Axsk3>~-E848)MK%utMd5m8SlWN zSE-Dv_?rcPi_N(q-*WQ=^HK%$X7yIz`oW!Yr?pAstf-;=B$|iXH&O+7{PQoYoc#4xyWV(dx#*uj-?6mpz z;{0=BZ0pBZJATqnQ55t8FZt*RR#qsgOgVB=m~fd-Bvgm~=?~y2q2}f&;-k$(xT-E@ z^1lNRypss(39p~`fSs&-*Z)=V&dmKqTo ziHoe;0lRF=YOK3eJTcRR4Q0=ZQ7Mn0p(LzZ!%u?)nSO82ro2Q=VW#YOKpKJER|D1o z()l$p=BVb(9SbzdTyAZ|?z6<(o9|_33C&jeGHIn{$P!nR-W*v}4V62RU?MgzudZRChl{jOSyu-x zx*pi)@qmWW8CW3D#7ava3W-?%4)4yOos5jI4OctIxt239-+PxyDDw{>yI&;Fk%J z#^n1s8f+YnDATy^L8^6sXV00P9dg0(MtsJCjuaWVe& z%#!QZReJA@qP}ay6J3^tE|wpADs&i!`0?28dXPF45WRcdcrix0>xhI)6~j6Lr2LJ#i9 zwwr+I52)3Az{h6RME_3k``T$=0sP6q$zAF9$+pLUo#4;^e|7+lsQbJxn=YK~ z+*ruq0p17j?cD2d$~kV1WUG0|vW48M3Wa{x3Ie$=1`|x$3}p08@UE@MKcTJ>dCgjs zlwwWt=`Ep-fYdErj6Ds(K5dr z+R_H{;yMJHx(7OP9m_b-WPUDlcBT;R5BZHKzqfn*y7TPvlxxlL<_g>03~W!k2m9V= z&63hKo6C=xdUjn^L+Q0DvPEC8(t_d;O6nkKN;?|xRbh?#vj+%_E(qzB*R5GK zpsq+>6VZ^tTl-+5c!WBaw4&0SnuyJKh}w36ntqotuLs>g8{HtoC)J9OHy{5Sn?ld& zAb-;W{}2I-8&dOC2`CODxY)98m3)8B;|fiqW16?^y%BJ|i-CHxa_VXtr6?rE<~RlT zMDY~bwo=@t(XT6rOWWN-)y?@_yvnDd!=25ML}>%4>8=V6~wO&Y}YqTG^(N zp(t=sqfCJw)|T2+eXF*!zc?E&zTc>d>^Zqt!+BPNd6PO@1Ls%+>!=_Y))tGfg?Iu| zX5hA0qkUFmjD*7n{rzbLBsw*q;Jik?RBG1C7NcW+ug09&R=~C6*8@8RbLZuf*mrji zTLmv$;NB_KkwIPCLER)pnOgEak0IKb3T%B3TMaMUbnwt`0j)ipAVuaz)TD+ zcoLOgJZ#se@DzucZpj*Pt+&m~h#JR-bZsBHS_HQ5G8};v_i83AwN?{^diD^mmZF%t zIq7>ir$NO|gg3VF{O8$N)OuPb4b`^-~! zoo$Yu)Xyu%_nx|VON_^?b~3m4>WG&aCTE>1*Ac^g@y2BD{j*-@EfZ<`_wTe3Kdud8 z3s{te(KJ~7>?@6^%ZXDrhEE^K2IH?sLk@Yo1l2^EBc#@w#^)-&rv>Yj^>d`>A#YOHzDt&jDxd$;&w;SC-6T?$lzH{0-fX`cM#QNK0jt zj6U(t_CFu5XjxR~9U$mSR;>5D+nTmSK#= zIm82+&b7(ani--i01F7rlBg@*5sQX@_e?*Cu!GRJdl(FzT%?5<1O}x9D%rR}XkuY# zGKTr{StkMv6A?{hrtU8kvU+{=`m#!W>+t^U#?LyCqn|68$i(ONF(j7_rj3GOP{=?C z>zx_T)WSjf=MWHBA2}k$xXrNLCWx;9;r|^H1@zw`FV-x9A>A+k3d#2ry3}C#uaMbL zC}hIn{YVP^xhj(-q+qT#w6>Ty8?=uxC?Zj+>CECrvlycY4#rUA;zqaRK}c&|scv-Q zAVyYDq4{3tQp!9)wUuQK*H&LdA%yd>G8bvW8o&o!r>sKVEi1Q*SJOABbEA1leVZZ8FL+W)|fcYt6ae_ zd~6}Swy0X{A*?~V=>ssRTCd~z;7_%bIdG^TIGF*Y<+*(G4Bx2D`Z6bhXTyIF&9V*z zNXH||Dk0g8rx=8wCM1tPuaO6>{p0eT&9K2=~pakLzB-@9L$(xDBL9N9!_}w zlaH(zgb9@!ldcY=q1U{o5Itvvjp#BB8I40-T z1d;|k?SBT$_y0U#079}~V|UJvPj|q&Z~EpdFe~6OaQ)JGdQBEU4*}hnf`CGh|LkiN z|4zSe)AvfQ>igE73h6vx93KufiJt_AIGL3cfj+65^!rJ8l4ua*I0TeV;KxwFkbm9) zD)Bo#((kd6p|shJ8QsCK`_v8ZCPf!Mj_ziT-gb_jZt2Oe5ILCg``sJE06yX$h8g7e zm}o5O$z#!%uhC1i<85RSi})#Oj2&qm&m?bSddH1p(U=4BYjiqiVxlo6ITJO_K=#GS?j5|r=;Pc%Nh_g<(5e&2^; z(^vD}q>&B!SPeb|h@cM=P1FEKP?Rla^chL(cPR+6cE4nwio1Qaqi$aI9=Z1)rxYVb zu`{qzGmf$GOiwp_SnxdT>UNYZZEjw8yM3o;wx<<5-fFzxl(Rjm0TY2~pWy0tx($L? z^PcMIj~^{RefD@8^>_>5&r_5=mupYKPhKjmGXq#mX|mBY?9s0$-MyGI4qk+>A3Y46V#TY0Ud+~ zsno7f2CqR4KOyn?eX!y~>z^Fdb)=b1E-iO ztSp%2Ni#(_np~eRK#KWD_f83|!!3@(l-XC^;Fe>G|f zf*x|j`Dp@YV2<&rU$~Ss6BJT1!lF0b>ND*ZAfG?+p*To0jYC$8C8NuF$DSx(!KO(w zBla;0adH0^P z?swi7e^WNv79{;z`80Z_tqqT+?H>!g4c=Ncz6xCrZ*NokLRnYHO=iwAj@B70AL|Y+ z+!ON$Np@DPf<;c8pM2lg3MloX*mxj;=Zo;r?ODDYTAWZM|N@X<+ z!@CVJv1?voVFWN4VjYqy&zHL0HbP=r@5|L?uaEcbn3*r)EuZ4S@{Z^r{SI4_-FHQt z;IT6$o#5Sh6u&yDhO2rF?AsAjU{kcA<_8?pu@PMRw%SpMxPt~uo;sX{I%BYc8?>Ss z#KaW?JgeY4j%k@CFg2C72SZAgw?#2)HXHX*lnlN-iFk^5;)CMR)R8UjU0Y5`q9tPs zTLs@qIuD|(uMgizT@`fW5zFM?I+6UA2gP9e&bP^?jVD$$l=Dpcza zYJ(&LV;yF563Da4T8tFL&>@)t9nP5z!-#1+j5et&Lf^%-5{`&Fj2F(SpY^Lz@!9?;Y6htyE^=tqDpDDTQ|)n^BVA$X?Q1A~(kvUv#0mv9L4*$0 zL9^wd8|F>M+$UKPt|qMjP~T3p;kNuRo8Xka5UJi1xAOdkS3qWd8 zW%OveG=pWUCd*<{nTEtSj29|vq_8~c5XCuz3_gs91k*yX;Wd z0!O7qJyoxWhG7^F5S$vxX>vqelb@oGZ95!_V1hV|$Jl>9R-VPUQjUQV#{7S0)M z&{n$b^1sRAVc5R+>VMME43MoOp?&9Y(9b%{F5E+0@Uv4t@wwso62t?|QehO^&03MB zdN?yNjCE9lsc{#2`L+_=BUt$f`ME{PRexl#lBtI4E5pO4&zMF^vKy>+QKxte>GNgc zx`%|%t3_yyb5Wuo($B+8gayCsB-_p0wz+q3+Ir#I%zP;>X>D|jW)^Q;SVn?B$zHP> z1~01`8?_iBFawJhqx4pJi0>~X5lL==i7fBSMVB^#5;CJuHjWLT!jnO_JRm`OrcOr` zS3V%GP#rmsH1n*KR!%@rWA(;WAguEsh?a99=39=+SJOwpbX7^|RYRCewoz`NmcWE% zfK!psj>?aGsgm)hv$zqH#Kb(tDKAV=V~w^v$e8^!V3!~HXa1toSQVR4m5B7B$&Xy0 zk}fyd{dSU+I4$S!NJb-unKC`0BtaR3rlvfRi=j?YPa}|G19}8x>B9op;9@e6E%e_#O zy)>0avX{Cd>7dNF)zuoPf7TXuO3Z)3r2LET0puU#t**#BR|K_r=}I2_kfQLnP-xr0 zbzw|S!9+gw>Tlv{Wsw*er^1*`Y4eAUSx`aF6J)2FK+3>c@U)D%2as}7q16ANOa}H( z$~@__7Ip?BnMPbn5;1WUikQ5DmIc2e%@_FC#bZrOd6}e$voo=%n_umx>NVe2D9h>m z4ph3;nmt9(CYJ?pETLVlq#12oqLmLJ=MRZ39TCgU4@F`=aj%8!7jG!*3OisqP$+Bk zXB0*mW6j}7Z*CeE-?WEdqhN54+Sb1B)B2Zvy_rV-xOD;5B$OL>*Fc<-1-nMS%uB)0 zn+E|U!6z1yQ=y|jWqZvyBbc0aL$M)QN~T_lp&rWT@J_B&BVXuLb1@HiGH;}X=U`3~ z)L!$q>NOJtN3rKic>5;3P8FS#{?-5$j1R;8B0vYjEh>D`@B?uVYB!+{gHXIEk$c)c z#o=;7NS1EfDaqOMIW+G_6?jvK@?}i$(0wGL`KXpOPrTFQeL9jPc%7NDGhDO?*>a8W zg-V7!qH&VwWfzn=Xe(PBS&4#-dvIIuA>@7>&g1+#B>{wrp}#8$!dArdS!8o+a59JtV+ zq`jVPsSS zS}ghqD?iTgIrAT67=MN3%Q&d`k-|Xd8^9`^tb%E!U+GdQ{F^OA z1u`?ODvHidxEX;i4^)~br`*e?Fc@8`K@+XS?EmXCzsH~zUZWU>yr5A)u&LsfwF+!l z*1zI{q|d~eoKOrFn zi@P-(af7`T(Q~$In(KLv$P_^;7i}F;XOt;0ShqxF9wcPU_teUGVe@Hdxsz!*AvCeC zKvdMYvZtb)*eh!D(Wf_rPHVxTi-8=lchLz=1E-<*eYRiPIo zlG(*Q`<+ZceDbFbdLS-qvd>3CR>P0A>9Ig4TmNp6ChEWU5PKR=KIh~s_3+Y2Murs5 zL$dE5F4jhdRDeH9S+R!d3c@coJs@nOUcQl&*A&i2az3Y@2Iq?99EL@u=C_aZ@-sDe z5F-IvjwNypoF?Qm%SwG%K+`(f6x6)pq}B=mP6fr!*^x6o#KqQLit@edPs;`!Ya(M)UV z^Dr+xFOY@{`R9?o8$onrLW!`LScXtagGBuT-$zbw`aGlkhg&^pS-23%yAhuxsvk(n z9I+_;kkcrW-mps-@b6kwKNeHpiZNn=fL~%Xm;Q6^;1? z{tI^>nK7vfcpF4E($Di%pi-86FdInUbtRYguXtR$7=OHwAEVhv&d2ypN-#XYLf{1S z?7yUt2mBg>`P(t!*Mh2BXzI+7=VXtQ5WWv}h`$}f5vlDq;>v3hVj{e~FQ zA+gs17#GaAKTEj2uf9a;C8)-KMuXRO_K%!fXnZH&XzU}GngZo0!M&j%9XBN^dT2Rt z?<4nf?ju`FGXnwJ*L~exvB8nl z?)&wivRywaB-j`K#hr1NW=OepSovvxg2hO)IyvkyQ!4Jk znziNnqttD34g|!t%k1V6S3O8rha5O;+Int)np-9zplm&05qL>)m3a!{APTfDUYdoW z1K6`IcxJw?MSLB*C1^8~@L$|yF7rI^=)JfN0tL8!$vFnXl>LDz`x{0dQ1+}cMfm6c zbhD4GQ6P$FUAH^d_kw}YxByq;&nC=wVMtwr4O8DE_Bg(*Srh$M9m~1@KZAV&l<{87 z4_b#V+J!7mt14mti_Ut))*4~#+7BPk>Kq(^Ygo>)@}^>yvyCKT2##}{jo zJ&q0b_(*`OOu;>VSw{Xi?;k0Mev8w}kVyXl${DcQkCW4Y;F)=I$=uo-&VqV10*cfx z>p)}xqAdsyTDMw~VCEbro@a9d*hS0%JTp$2S?-yhvT6N5VhCj&%>1`*mod=h^kCV? zzPvLD7qifpT2SZ+PMKX79Bl!RJTv-u(mXRy2*u@#K3dR1J%sX<@U$D2f`)EidS$mv zzm@KAeKTdcIaxGtR*fH5Gt7Vl+$JuCG;5auXbxvg9<}6fi zJPJ0m_n0agq1F~@nY2gX;?AjzW03QpMXE6tvxM5w+}WFj#x2TVx0b&mgzIK)ChVVC ziW$iiwSN8nv?l~GIQlJ)Ou^(0<3p4Ae&9m_SK`|vPs{xC^~lBfj)~=?#>f6u14AO= ze9}b1Ik>SOM=fzMLr?5H8e7@%X4 zr?WrZ^PHYDkL?vZyMDCj4+S!l8Vb)26uE>fGL_)P~S++mp_efk7-mVLb_ zYZ^F7OK!$N91SBJ6&H8wWw?kcn<#A9Qj^t8(NO;hNev9idzR*crdY^AS7qtZ z1uM!M-~x6ej^JoPM}5%1{$=e4BD*cA2yaI=mpU&kg0*oEFR_C%uQj-<65x6+k14D9TH#XO-=uLc<Nd2vUQ!U+Y(S4RR|$f~oQm}Q@obZMyd zl>w6T9*0;vZM8JvkVl6u-_?$aS&BoxzWcOG92Fx@i|{4{>G4BC|FPnT;(?rdw?e=w z&V>ybILCiTlTE_LNGhqQG{}?Zmsi8YH+asQ8d#c3lU@@AopS+k^ghZ;r5VfKx18cPUP$oH<`*tctGDyp@g$tc1i$?A}5RnNTwBX5nfg?URv5(9U!G8t&qPdiHj4UXadCDaB+{s zi@(AG51usCZz_O&nkOXj+f^Z~i*wK!9{UrA^c zVcB)2^OT@cX$#ygr%(@>RelEi0^TC&$Z1!jq<8n_^!*k0GeGYhTE(~^I|N}-j{zeMK-|_`>@%GbljTwJ~uEsvIE!j3yWzi z#r>4!U!*GUk^Qp+v*~ald6z{1Icipi+e&sMWqS;fCTV{gvX1bFPYMv>FGEUG!GU~a zRa%Vq&1%w3Lm1 z_WRc^uWHhgFuA3Ua(Jf9zWDg4Mykx~&2Q8QWLGY4-D%VF^C0Z01^lnX%!I(X)-F;$ ze2GCtAS3Tl-%4k};5wHsT3uT)hsIC19}8iM)7DAx4A9AkTl~Re2`k~NvL&v(0bVgD z{;e2rR+21}(~l329mxF@!YxZZSD(WRmGmrNVmS}>g`*w4#ysxNH-!b*5nmfpdKYF$ z{;H5PF|YTNatfk>MpaMsCYvWR1sK`nw~Nw zTIYdCW+>1@iL;hkt|L%b6}Jg6T4wtD1q@Ne(gF}z+U+O|jm!)xd=o)e3~V<;^%PkI z{~=V&pY5Ug)I~n62lCY-!TurT=_i@g9*s$whtYqj!wvkSP7LLLtFuD@s^fv_@qatV z{12Gf;frg6TiM@04p_L*_v_IL9sef9#&CD%mz4AR@jtp8770lj_JMo>A0qD^S@19})o4_!Y$dfjbeQKyinB zBXT0uBK_(T^X~auU$5)%m?CpF;^%zC6ca%>=D>LnaawvhuKW4bGP_q}4wlsLNETWn zK|X)nubuB#2ZEeNj5ZmdUMN&YM?UQ>8YM{)v~B$n9r17wfwmRA4ZkY5(E$&xHKQem zky<)Rl2^uPkRoiCo8!;*D`Z!C(Y%Z;94_`bGIXo9I-)-h7$10@b(2aMY>@`JP^s~7 zj!8n+Rm{7&-wk_6+aCd+e_%EoOkZ3L?MA!&RMD)%Iw?LuNKU213Bn%EP>hchbb1Xc zT3y4&>7s9N4mmcS%YK@Q8_ip`s+dTqG1Z zfyBvD=FjE_6k^I&1y}srtuRt! ztCaM1EG!>ZuxW#1d0!%CJD82aY+qb~BHG3ifFwe-#u`$wcB11G%Xs~0wr>!=^4998 z%EKB$KeO450T_wi;jDC2Sx_KC_(jHZULYrSDr=>Nnr+1o@sOnFssXC8)hPN#w)Yze z*$efcU9Q}jQo;s;@8kmK|qdJ+Q@JEGtjgDJg zgw5H3`XJ9WLq$DuvUf*C)TS=%rjwKsW92OW)&p?YuV9OGp9KQ3^w5?h_V6#;>u~7d zHGHuNpI^whJ3^n`Ecw1vhhQpKn)@`so`^|u>*DjVM;T)FR?SE?MDQ`#)R&KBBCB+o zD0lHcG>%WjK9m}8U70tejr3eDOfh+D@0&*?**m{-)?Qj>i}|_TwV26Y7ra!B`JuQ^ zZ7Td!urD#3*n;A^ve-t0ocg>&PHawpN(92bR&ry~FoP*b4PIn5G68R3gEEtS56I&5 z{vA_0l-=lcQ9zdZ>+NQ=JtM;JXnz}6r|`Q6XMQ<3DrAgO4vLcBlQS!M0;ZN&qgrmB zVMSqOl0+jSXpl0$;Mzp4dDixYD@>J(Y6$IFVsulS2r(f+~ zEvUYjo2dTR1s^jvU^B#m05a#@J9wC=dSDjKDw@cKL)eup(u(XvK*`zy+zd7I@{?Vg z3#aRWiu8=MV%raIhG|!(;Lm=0HYkn#{L3XX;vZpKrlT}4{4gn(2pcB+%Z6sU?cP#w=#%~wLa#b(W^n0`*PRjc+ z`)u;@@J6W9_JyI5N}P_a{YO8Z6T=`lYq8HEKk-Y?RH!L!%rlBqAo@-Q>d|H^v(BOg zO}j>FM@|(LypMOa`=*;dW;ENye646&K_USP6`EEY+w~@%<`nYSNMk7xG{r-a59^&h4S$j%aJYq=@kwu zo^*kDxvd5JbEFErD?h|pxJ2tn;BgizHX1V7{>JFIgQ1qjw{MwTycVVJzN1iNvL$NK ztk{vlMT$;`8~KN(T^H*EIC2sXUR-omq!t{RH5A!a$|$ClLASD5Mlxwt45yK?(V69- zYt;ka=;qq?K0{tjS2$`0E|oRt2ZZpR1?f7BmLjO;u@zRgnc4K9Biz4r$3Ghc@Ogj= z+>2Qps^5T>?LL0LgmL%kL9DB-(Bl?pAG#=w)bxU7&olLOXT?vK&~Vndo8V#eEVy?9 zD<7ZG)#!FV>en;RcE}w$JKNh>974Xhy)PSMHvCY==6YI8wD#bp!|r58U&tFVLmrCX zPB3;i9YhqK16ehXf&G9$`P9bR#ZyRStuAs=5)-~KowuRjtWgCqIwda#gjjN%la-=sMTOs&B*C+AoX4_RduYoe%}!i zjCrQv$I;h_Z|<*Yy;K)vUJA96m0xfFM}OC35wiACU~B0vIuH=df1i?WR_6BR%zqtO z|8C`};JCqs)B95srSovP-t9}UX zvURAwMi~Bb;VsjFuodal5Qla>l1AC(ctqhlCG;5Cvw%;Zp~}tjMHmt2?{H`NwNyv8xvEp!bm#yj`#tB#I@es}|aQ+toV#cDOniY)=^J_Sw4r)+0DnJ=&CZ z#xT-8aqz>b4peg@jJt#wIiw)y#1--qn~qHePn6$SHw9teSGMM1Hee7iO5Cr&KwRI6 z5{P?uZ5RkzU^iNZa+0L!Gm$lUyi=Z4e@&Nl%i*kr728j|5qhx*hYf;3xR6qR*Wi6^ zl4X^WAy2>%XDF1PdmIwVVG==+)mlDV^T4@Re|dbI%Cfeu%;bQ)F{oR;QeWtz-kWPJ zk)VIZc=WAWkdcW88{vRVbeoEC*^*95DNR*u+CFo`yP(R{2`$Z4T%_Z^z*k3C_$0PS zQ?FoIv|*oVg@>DIA*k?i=hfs;Y)xgQ7x>oWgNE61CcH?3#!`4_!73-$*sL;NSF|LZ z{n?o;wwxKutPq-5WhL#Rc?%X}4cY`RAGMjX79N&}&4)sy9d2MaaVdM|{v=t;e**!! z(Ecldu(nC;O7GX_gN?M=fhs9xgHJC<%Lik1L~nW!eXwuNXz$0rncsb1Xn$Qie{sz9 zX#p8e>fiBuxok7+)AL7>8NR5?d%N9Vzi<@%xDTV2Xh(z!li39E4iDl#1-VpGq%&-$ z#A~E10LR{^a2q0aJr#pw3VaN%8n~7x4Uq6hS|D`Fn=sK0Z)f!^r){}tjF28n4Q)U2 z!ZV3dStzJp18Gafk=amqy#?!7qkvrtaOzX4cAyLPN)kTCW7;gfAX7-OCo6)BO^Aa~ za&<#4AbSOm=KQcT&Qb6pzhVei!>`D5IDa(d#E3w5{ z#LPaSqD(Bk-#a9JBYuIxEa}=^{}gh>%Xmj2P;lRyO_gM=v`|a1@}%A?H8$jZKfE(8 zL90=8Yshq!Alk-a5Y81-xhGV90;X{Ib0w*TSJwHLH6e|@d$TUN4ZD;#Kx@M4j^JBA z-&Sa|v2kPB?+sDm&MJ3W*PF2UC9b{U9Z9x;S?}+jiu^yUEz8Rot7WTxn0c*6Ui;m5 zZOyyS>bh;<8;gD(NzUKUbM)8C96g&_FPgU!IE-R04506``JNoD6+ys`g9IiyLao)_ z#e`5Sk4fJ$ly2KNTtt$ux1GoMmCmsIq4V?&BQ+HXoAcqP6dy5$?o!0c^5k(yLE-&Z z)&11u?hd-8r4{ND$*Vi-3grkKMd>)%gLJRMUsr}_s4>NZ@;NVu8H%aWv;&SEZ>S;;l^^? z4+?5+*)Hc|FdE9Yk2xfi@_hvBAl9rwO>Ed{wHsKNx4DEI`wJ>3szu#;S!YQn<)?bo=>*E26^Cdmi=?LsU5h)1 zDP5Nv8Onxx4mb-1dMkK|`?)e7U-}fdw)=a(SwO`sn>zE&F<7ea565!XJyB^e>~C-Y z`o3*(xAo}oBSr6l{JVLlNy(~4{VT%nOl6JP8`lr^+*O3*Qk>MLFuDc+9EeJuX2!{2 zIrA=fJ-eS7-HYjJ$r>Py>9pV=qHi}sV!ta!dDE!(XYJ$;)#WdDS&g)~jQ7}rTSun1 zKO9zNmp$@f;MeSuFoKbXz80{7Jr}LDGz2w`}@gXIy`-qOgY4q|14?W@7vq<5h3@_5fdXTE;N2xthhWfJCSZ&n`5=L=Uu@K+Y`oR*Gw~w z)ppA`s-Uw#+M!@JqK3*Kk2RyAKp@JIFkudDHSADKYn}(oOVvDHq%^$=_Mt;cyRp6; zxp~c-Feo`FFskSO*vnvmb&2D7tJD7l{m)!1*Pm~-4ETWu1MQpiM%?)d|k~N)kZ)^Zr=)9wp==LbPLL(T=(y0RRv?d((ZQKc`IS{>aBrwWOGu4}_g#%BD`PiDWZ{1IW5Jw61g{c;b z$M~v-F?WkHq^=z<%giNsdHsLr5}Z6*?g8qd2I?aEhpxZ7!~RFzU#($dW*dO{ISSNn zk0NQaRi(KlO@Y=E8rZt16KPfaY-@N4dZ(Q9c5k67I4;{Z;m1!`dq3o=b`h$$`SQ}r z6#rAF2WPHx%QZiT6p~iwW_n4MbI{_K>!MEsHXUYGw-MqZWVjtHWsWryj3^B1=_ILB z!Ms{brn&Bo*Cv*8S)K0-&wZp_)T#uMw)${~XYkE_sDLpkNcAaGZY#|07w+#nH+2uTjm3 zZ*T}=!I1dUJ9xK0!I}?Yg%K_dLTkG$t54|RPiaTKAs$ot?ybPbX*%|$*6n(kpFrp+ z*ukiJj*fbsiULNhioYNa*T|}?emWFSj{376B5N8(NV_C z?dfK><#a2#v;(&n)X|Uu{zQ(@OuySs6c*hU6I!yVGY(a?ez%acI{zA&Gtz62U2(B1;vBW zFM(}VZ;r;YN$6kqsbs(Y$0{v;E-bgriS64=(#rK{1cI~@#MzkG&40rh8L+ZZPO>*6#{dC2QCOrYU_w2~RXTn`G z&4^uAS=ABt5Ibnqs{Eo?HZHh>y9M`br7cqp=kB_2>hOx)NO-uCPE6Ynl)8;WNoOjh zeMl-TA`VTZ`ODE2je6w)XVv8bR&w=zD=C?b=?j;8(WnCPaJk57Qg$LoS`#+!^Wndjw z8R&Vx{(71z=EeN71=tXR+@X@<+Kj!5=+V%tM1Mun+?zjJS@=96;Am8cgc2jAXgdn2 zhoYXK(p{D(ePPf--7a0?-|*U5(!>2lajN0SjFw?U4s%0wr6Ottju$4ztGLRDLszvPsn#S6l?skBFS|@a+g%n3Ph^iA!j0*^}sA zygPb|WaQp%tlzDB6rM1TKv6YV#*F0t2JpD)eTYR}{cbV2aQbP|Mb&T;GZIS_fRE54 zBV|H8dna6((zmOYR@*D%vHCCwYuhuocinR%Zy+Aib0fL~J)p0tKYAGAEx`=skb}wh zy$8K_AOeNsGZ;d@*|~yFbN)yw3dJnl+x-u}_Yb6I;s}#)o}>y5&X|T5tXrRacmUg} zxb=$#7<)xt1EyLeFxw4r{z7%Id3-gUrC7M`^F7A-hvJ+m)~B5rzPlEE?%y!IP*jFJ z$2HDS$I2WRr^1;&pLTG&Zd=qXUtwyI(Dd0M{K|Jy8T+hw>T*Zua&Y?0%3h0?s#$Ogw0XYdTAdg`JJ|7JjYHr!iO7nqyDiXp{&?xX2 zIHP1Xx10hPhTylGTg9+S!3l=nF1Oa-db97hTxWT`PaF!z3Jr(m?$EqpSrEX@JwzUw zd#4;)YMpqhWG^wf+(1s-ItKSZY{9G$CJUREOmsT!I%Ia>8KMI@#zQ&Mbm6dh2{8SG zZ1y^x&tO4%&37YSI_u1(mahcvpU6n8>Go`8qC1J(=S<8%mgOm7sxO& zXWPSHql#EjBI>xIez;W>c!8QA)of9x@|t!JT{Wtc=Y{+DX|*c-HairOz_W>pSA;YQ z^BhUkQJ>x3IIq$U6hQA7W8Sbed0H{jH&5Y9yRw5}bQQxN1v8iX@AR8BWPQK7ly9cIY~I)lu(B*_Kl9yvQ`x)nQ!^m=63yM z_)-5OGRMgpZLvSZ2CNK{LEdDl70 z@3PB0hk+>7F(ZdkUV0(2XCWT>}nojP4>VQti*EW50K zH}53h%ej~J@8c{z{#&Yf!rPmFH{3q?_K_XC@b=lSpV>Y62CTi`tL|Mb{l34keEk*a z_0y`@UT%Z%UL^CH=W zw>=eXxUSl;W+rDe-@H!cIF=W)p7wS4ZZw{sxQ}7No}ZPk)|YV4^Ig8^Vs}N{OLL}} zdjh@x?n?H?-D~>j&-8}R<+sDOtv~iMaEo6GmJez$xOw36&5HBMZu}pF)Y$n8PDM6s zty3_pPR)6{=|;ZjO+K@A3G-e&cr+(;$wlFWrT^vfvM(rXmu~KS$Ck|1ty$C~7@>Sv za^?#;iSC`BRw?{TOpWOKU{!l+!W9#dHxgVrhYNKcR?JJtJj48gJ?Tk%?`hpjyzx&i z^~X=0xIOLgvnia@-riN7(|*qP%zEM5?Mu?qdS#~CW`3G7XZNymd#bO!X*yKB=IFLb zmyD__OMTxyQvFeNSMFf+`_JpAJn;xFKK<%iyIkFqi(6mIRo6UTwtQaQvzyQ7)h{eQ zeQkPNUFz-C>-YY=cH8=1<@W67>-z2PeLi`w_P71tH>VHBf0ePUTJyc){>%JxHNWqE z|C?TKQUCDK`u(xL{`TAdUsP&%fOm>rM(hoiHq{p8swnZpX2FdUKRhlfJ=`VsGIn)a z|M}?2lM-)ksI2}zf%E6NV&zvyoL9~iPXFd>&kZxc+1~dZF z#s@d;(KU9oaR+Atm0SdB6hzVZ94G>>dy?~uz$4M<+P~bsE&dv)J%@#XK>$U2Jx~O$ zJ+Ytwo2!>f1cn6wtGY9)=$6j_1_XHK0BA&MF3|7TwC6QQ3mE||KMk}>2E}r59;kMR z&yfwm8VbFu#jLya85rV1SsD0IOlszZnp9j;nUe~hu0#(5^aCYf`WqOnZBaC%9WRM) z4*EPP!kjflFmsS5QP8!cPrM+s&nkmzN1KL0HvxSj0%5|La;OO?(-P?V(MOFD`s1sh z`q9Ub(Tzawehbyql+-Wpb6OkY~5aTv(WpF2(vVsk}t)Hy5yQ=o?YGpY{C@e5AFgUQg6dvsg)q>bWa4@h@7%(tQP^+E$S+lE91rBzY1FJ~{Qn6&Ri!!@Ja|1Bd z&FS9nrntdbcdPsOjWB}G#Itn+615+|qG&3jH8DsAgW*(#MxjHi@@9B)+9@2=RgZ>g zb{RhHk1D&qjQhHgKS=mVWxgyiQ)_0}q#?BW^L`66KG%@`Vq72B?_A?L!BFR9so_|= z+EakyK8OfF`@Uz_&FnU&#c>2vTM}`trn`Y*9lUn}unD5Bp8Wxtsr6`)4@mR6})>S z|H?a==Z?aCm(_q=Q+dWDI=z=fqI~qO*pE+MkBCKO?<9qLo)?SO_eDnU$a9~t6b!+X z|4~H`YB|w+Q1vz-z`zhee~p~XZJk+|e_t!&CO$y2q4}K&OAS*M**9uP<}Vvc{!qvl z?*2A@T4)cHDO~C7P?0py#_1tGJli$3SV+qwSYjx&4b(ExnGeWW?9tw&yQpt7T7yf1 zZ}%s2SKkTJu}uxXp+FHer@rI1&?FUR*uWgnqpLfe5vvrJG@`eYK`9O@iATRi{7kFm z;=?oxfB{I$H*$R~s%Y7>b^CfR()d}%*iZB*#sOU|MbV56mp30p))DhsLiTVfsx+o0 z9jEoNP5F~v*#+~DKnW!^LwCw+n2C0beqPIZ!J?Vw-S-DfloS(Mo|6_X8-Xgm4pYRx zSZk8cbQ_|VeBefA^tjLdnV`@wh-y}#+k6I;AaqcI%mAj!P5=jI7E^$e`R|)NBW_Hw zj}=Yo&Rc3uK{Mu_(%xVnUJz+ zYzFcRq5Ks6wOpKYUna>inpF#Peu%4~D=dG}6pf>8r9dX#$D;e`?@t^SPZ3v#UeZ)Z z43>^woC6+~)c;X_(hzEPsSG~QY1effoOEzC1kuGx3 zulEDSst4)jwAC=|geR^K&`7A@9HJ^Is&37i>|0+?oShsur(7Wo%8;5ukWiA|<;BM(W4<(w@zNxJ1g5X&pbWVQS%$!8B-~wJ zSh1xg$YK?Vr9;WK%6w<+oXGuA=lk~l_1zL7!#&Rh6yA{~iXq*so5bsL?vFxi zihB&Ii!Brw7~0?K^3lQJkFuzb*{`yqwLdXH8GQa~1uLe47Zb(lv6dk;$pUp+3 ze!14%_n#*!H!N*@Q(;y5S_b)2^{LFGcuI)t{qD_?PEsN=iZsN>7Y?W~k1{LTY1TiWU23eHl99uqS(8im$kY)CT{0x%YICQH_}(YDKu* zicaY>IU_7pGge*pVTZY#OsH~@hBArh$%KS}!IbV)>+n!wQP)6GFA_V83m@H;YC9O% z0=^HRfljay!c%_ls=GsS_X+<6jrqck?QrYCMF{c84TcxkTnA5_d;)L#G7>RH?B8s= znVcv*p|wdV5R#6o;bp57o7}%DD^j5JzN0;j<(Y-}96s&gir{Vj<`>C7Zw$vW?Vw9Y zFfcltKR>W;04FmR(5KeL4zxJ^zB5j=RRF8pXu!=X(r0CX9`X^{0}I7pjLylVeF5)W z?l_Sk6=pCnKTt;1YXFvfH)CsUd909lqT(P{!zGD5NJKV>&S*0-e8(wM99hNpJ1hi3 zQ-coW2gsE?CpLxkiPJg5YB-}y)cMZ14%axRo;K65*R^Y`2A$>5$avPp>kKIxG~N29 zs}n5epi+#pBT|?AN*LAS!;A$PvHG_^&P9341)8kk>D!B5z2l06)-P<77^5vq4N>_V z;1kQjM$E37ddSPG5~C7sAfpURGEP~nYmql*9AGa6wioUS* z-HQkg1dom-2_tb27X7aE!S4zCRZR&HvMP1hbWl5YtO|8_>}%8PszeoT5EOoWan0Cd zs$oUMVuT}hP% zD^1hA`zp^+y_YokiM2r-1{dtJz3bi;+^wkWNQxYLRfo}GjAV)ArRZMMFkQ3Ch5BWc z|6+%zm`dSgx0EdFW$xWl`}8BsY@hR^m0Ao8H?)7q&!P{kJFI;aH`ce`XKSz`SY;#0 zB$RP{hIhHf&|YUQ1-bY9CpKif9>cz@B8KpU2~qiq1PU2w9^nfJ7G%-U1OI(kE^y~bB;Yx8Ruy9DnRI)jB48vxkg#7hSBB7%BNAQ@z{w~2~?4u zzP1I0!UZ?nF*YjX54b1}&h5OKzYqd9K8B~G2AdCG7Gp9Ysq6OfjCIj$AJG8bjQ%-6 z*!vM+u!B~PG0@6E2wFM*m>~Y#_xydD_;U}GAf^<^iudL06`?mc9;?tk{N1ly>Na}m zssis|>6N%!iTzEzbu&hZ9sk`sZl5d~yV;3bwS^4%j_=vP^RK~R49}D%Kf5Y%6 zrLn_tUMbc*FkX}6UAdmAg5rA!{Lb>vTt}AS2!ykMff;H*gQ5N_*Uq0kY|Wkjn2HSy z;&-HLeY(1G^NgPN>|%nzh9>R7;#>(odUa&hoN*{{%>J65#{Cq1V&qFjCQ72As-gLz zG_F>lHxoyhZeJ@SUfulVCCj(n_6%r55|#FHy3W(rh1}Vqcc%GNG;w;>1^~X`c?&!o zoVx3tW+tt^*uR{ni7XBQULT_09-bD@qKZVCj&}|2AJ#A0lIPo=4rhPfw1tH19(laf z3clLCwQdBn09Qy1lZwu#`VK>q_qWGZkDJO~#*Q!RJ=Sb_ibP1td%8Q6zVL-c)V^I? z)#-XY&99Dmx_uRSbI=C#q2IObULD-HzdI=#{$z9)Qnc6yY!D{yvji?@4teR=yDonG zqWCd8dE%&AHUTB_E1RRy%Edm6G)WXrtiiH>e$f97Gi& zGj<&gbYk*+;q#=piZ9!xbMff(SXmR16p!`|W_j&g>uhT(A4?oy^R;VR^Xb&rJL`P8 zk$ALFO(yPh++1ft-2{G8Tozp9-l%4XLUWd8sz?(Gl_C4Q6R?i#89&^?i9g z?6dHNd%0eJ`JAf%Tn$`q-xL(8a63B+cP2$NuXLR# z9g-t?)&GS#s*c}`wD+;?;?$H^~# zj7C3id0PBBNKI z(Y>+BZsER*c@r7Y%0?7W@Wu6Ia<4hsK7_SU-p-bm2d-j!k=684g8xnTE92|ax>bijB!(LH?X>m;I0b&u!20)L=jfn z=|~anHp(;dWZ+aO7%&1H;+p(O)AtMnqGQqWGuz98x2OQ%I=mx#qG*bjIA}rf?a;$a z;+Hrv0Ws~+`PsiaKY==N{?!S!O$h)O`)hn<13ncq6pIJqaIfqJ#J{jlIO9N}q@Zzh ze}w9S(1Jm@{|Nn)3aW(W%$m&ozX;A$C_pU;f2c@mhc?Uk9}@oq72|nXi4%|v8ufQ! zt^^=Gs%RjuSoM2Mq=-!aC6S2~j>ZEK?hn;-@oo)h?Y~F;yD8sUqJGk~trOEQlV4JI zp0tx#)5YiP0o+%|SC?d=EwTFpf|P$UO+rj@bEA9brf&jB6!C>6-&_IKGH-u8V|MiI`~p08Ydz1_~5<0(-KHk?DN7jBr; zR*5J_TO+iV;&IxnYbhpLUVGMK2UTwA)%%X=Sfbp?f^WJch8AVv+_G7%$BvoN!tr93_ya0v{)AKT^&Wm4*?pXSMYHZs z>ECd4NxQduYEs){7J2UMK=>daKQOqn?<>cR^Pa_t2gg#_V^y2bpwo^KDEQ{)2+Y+8 zqG55fYRfamZ?kxw!L#}DN*p-8x(}!Lo&%`-ZH79Tp(Jt?b6$seu4&+g5^*-35nRc{ ztl}}9VcF7PUtfYEeGHzuuVu)&vYnv?Ny`acf8?MwF7oGx#+*tsm%c=-jQ(x@u)v>` zQGW4jGHH#%rpHGdX;;3h=h^6sfzscIIgh@;@;$mM56UqPp-gT{!)@g_`fc$rF9P)C zyByoLc_@6I3n>>l&!kK%aU?$M*$Mp_!Sp z=W~uMkN&6fXhb@PO7K8uWHfK9(VGIgLKcO#Z8=OIZ+JGMk9@j?`J)e>Av%~7ZKOq* z=tDkVOiuf{&eZ07iuN*hPX!A$<<QYACLi0*wr`;H*qkHACPUy-Yp%a`V*8T$)(ORa}`CJDYm&C1d0E;I?8Mpn$%*e zb`ey4S51rp<~()${4=Hp`a&kd;WCJ34kB%r{9KI_?x( zZV+U?nY3zlFb@-Nxn|9aLK6_coGZ}O9N(=$)r6tjZ-AnO+oFK7$iv339L>1)?BvW@ z$Wca}q%L{xqdiq`k~**)cC^yO1=u)7#QS-~u5C3Kki8$Hl>Sz;jML?=WH?75R_uMO z;gGal?8ik2vw)^QN}GzvuDSORZY@3hNVKVNEsub&mqPT0UeM{XGe*F*SX@Pqja6YT z;FrD8zaL%fj?OedqOSB(iz>7!^75`pVp0Tf-P@w#G@n;!aLZ0OdO5mm`$M7qGOl}i zlu=(T`qwz7Lt-xeidKWxkI*8t;*{{?Is0h!4%NsTsC~Kb)e1gRgCnJb{Kq28G>kI@ zNgU^LP+T4ojwQ<{C8fA&HN-jI8ak2wz8S~%9Q`pW&UoaDgtb!!xeAOV+lxf>-cUMX z&vXfV&JYK3*Z^6jv|A7JzAL9YKK{ZZVI93_fk^2o?ePj(#9REV^~N=0e%fH9NI@^Q z`2H!w49O#}+im0T(|uE$jjLR%XJ>JXsTzHW2w&drUmq6;am(dU(^+}DmfSh3H9m6X zAtYApxIu7vG;>&=RUIrawF%99#H*rQDPy|41Z{ZUuq`7qi#*EP)Zyk+vSY1I|9BS2J%AeCZq0 zB3N^aU@;0g-}tx;S+qlhImo;>E?{e^?pUPA+eZCx@jQoZ#3I=twtCs$WSd zd5th#jkA^La97T-_d)~2E?988QlUG_yshA#A3LE7$)GP%x_5#TwHXfc1bG^9h-YnBo$qm3Nnpa zgfib&hY!SM8KOQ^@QT;&6eDVu``RSspRB2_w#YO(w;8t;@+`~hI_X=Fu*Fdg5j9c1 zO7qBaD1MmW6=UDcN3^iDtV_ukDk`{5Ctr46f%dX)-VRrY!5Q(m^C+u~J64YC*Vg7V zSy6I1+^Q(2Xx=?I!qdS+i0&pcMIA<~h23kkJ^Q@G(a1uTyiXp{Q^^QMrNDsrsJ$4K z{{Y+8nf?4p)#k@LN(_8ySvghL7Ba6%M(JfTrpoe1?u{iI1-zT(5~8~w zk#~HVZ>1=9LUuQ0bMFC7C7vH#Wkq7vzqeM_g{uJ+D44y7_W*` zuf!tg&rJ1&ustOhX!J{%z*1XgD||VJvg`rM^YO?tvuxupt7zG5oOO5+FevXil5bL4 z#w$)Wy?w9+oERA7vGa>dqdS&iRZ3Kp9B&Kz)SDd5xmJd)%}Su#_b)fY<@zq$5x!51 z>+lcTzfUG5yQycP<0eTdbPN;a2~ShaWtd5UlFE>*>L0>p)rhnA?(uk3*}tR5V?y5J zHysB(>D+8T8+=}Smj_{oqWbBoaf0(_8u(*5?WDQy<9A2M>+K2V`u@j`l_B3ipXZ!x zVEk$V79^dpIW1pJPz@H9OD+ay`r3!*2u#J0u~g=sDjpVGj#Vv^%H8}t4h#COUtN>Q zZAGYQU6qgT40kzz?|B8^i15&bw|Q*_nwobAHmP8^*jVigA0HfEri&)F-4P|P|=|SOhN#}By zA8Z!Xx|sJXNO7%Fqkch4^=Yfn?cjEFJG%;7QZ z4kHOV-{Tf2?2)~-Hku(Q4ZxZquqhIT?5N@SWfQeAcsf^$`wPm<4ZcI+@ao~ysF$(> zL=|DubXt^iyB|;X#05kxTt}=qd`AkTqWWkZ@em&c3OvCtWW<9~>f&0{I7$Ed#%7=Y=%UmdjZIeizD zBY=x~1EV;=Oh+7W;D;HT!*wqJmf-DE82 zLZn#evJKzvq%98MpS*zB@Z%mr945b(PNKTDK;nfL+`PCXpucjq$oie4{27A7tsxnb zwOtY^W8HoD#d{x@&+j!<1)gr~U{qJOLhvIvQJ$SBsX~1(Q-S)Go!-K~HhbkqvZ+!& z)1@~%aVr24lNGit{7Q>nR(B`n4G^4VzTM%a&qU+|GstdB)#}W0Ly9eZ&7`~F3m-*R zgPSeA6`F3dLKr?Q!Is0Vv70Pi)`akpZo)bj2Uns^K0p)FFEy-}Ym}(XKsegJNtMkr zbkBQ7ePl2WTX}qqee>Zqe7bEJY52G#SOHfB01C%J@{#WNBfR*p@VS47|M(pqNG#q_ z>cf3){~hwu)B0srYA&tLy3s`{ON9lxUAY_csDMurHMtb`ChjE0wkW{Uqa*TrG494v zsB)FHFGfcifq#3ZF0~8#%|Usp-NTIKoE$g{)_IVp70OIs!I4ylnE>T#Nw%S(QZeUI zFi#NqT-nN^)LEf&wTsZ4b!lKRkLA2=S%Pq$A%c63AI+Scb0{&h##O6fEm72ox-v^u zvL^mbFM$>Mk;X|#o*M^K%%WO&C3EgZx<(z7#bbmg-BvI}rZUR}nP;Df zsLMe#IYJ?yZNKuEA_ZJf5Rs^u*SOY;+{oPkBz|?910b{07l+aaR+>eq`fAgE{6@IG zW|GOgU7rZ*T=4Cp3uW|bW9Oqm7FPOVI9iaUgzrDa)UR3jT3e(<4SMw|j#LhN z7}cTF86l4FP_aX-8kHu%UP=S2(uSHJeU)LALfdz}eT679i@>hR0n2j4(p5ox*3 z3TH4WNTCMirEOv=$DeE3259cqbbts?;EO*BD)TC%EB8H}4VmTZoLlKZQLf6aC>D~M zKGcz}hMjObJeC$piC#u(mSheJYndvEUh)ZfS4NR%Gblr~69VO>M1#mli42(jZ4QB` zK|!iJ3Rh@6(%v3jIr&_(%o8q{1{-{p?*Ggt?J!j4nS0>z@XvsVw3h#+c&uOjL@Kkm z0W2h$$x7QqIMFb|UEay%3 zwxwY|4ghO0^{<1KzDsF|$s^eM(Qk||@?^k+lD8aor(64Nr{`D@2T}x>p)F5Fz#MSl zJ#JNRlcPX}MwcBw3FbulJ`23RJIWy$N0PCSf$U2ea?iDPEScnvHQYSDqI7y_? zfnh{)oLOufiP&XDvju1fCs+>i=wC-1;biZ5x@W=$et7MesxeAealkg1u?^&%xii85 z!H8?ViF2pJ#4o3-%{opOqJ?5j`^SUv#bDBcn}{+>8=}>GtE|TRI_^qd$BY&uphNC; zAoDkk6lJNpDus(VvcG*V3;p)p6QV8e=yPJmc24NZP57s8sSyw)=)zX*!}dKObl`LF zfU;R5W=g|J_(2`&{zRsvOrhHHTG~ib76P$4xNyTax8trpC;vfQuLRy( z0E@cvgS~WT_HX?|hzc?@yK7a9b-F3OPj97SC9F~Mh#j&cH`GnE$qurqo|VFjxGr6{ z6!WKb;;Fk2mzNZG(w93^OGGU++78sqX<;$A=*I(7ksvYIko7~s<`*Y7@~o>DA9{aSD4how5 zGl=(p1|?4HGu<3q_Va}~V;ugb`c{r?d#;dI?vmN8GT&m%Bzbk65FpZ`(lVRrGJL!WdNJ55T&I`G^zx&&e*+ZR=ioDDx zbvzsb3xE!gj*5S@C&ig@v!yHwX7SP_U4%K~Te4rfQ%&lGTmPYidzf^xBZkBUvVROBU@vTjyJu6rRPgXw!&B}F+ zahBzAq~XWS;g861rOK$Hx&4O&tGoycn_3puqM~I(E>A+3$O8LLl4W8J|@vkK`!v2}v)An}pGC4A6UK#YFT`d*G|h3m&213pG@ z^gjR4nBX>Ksg;Nf;XZW8nES>o|>vQhdhkTh+;440j6i0IKF{%Ebsa z%y1mReufY#Z4+Kb^je3ekFsesvzFQ>*&8#)psjeFke8a(t@Tqi)Q#r6F?`dy1x`}8 zmmLOUPcT&r&>%&-ew)mYkFf`%?_=0+YPmnCF+kL?a=&-q<1HHt$VtY3P`jFqfv5$z z|D^s-g&B_We^6g^_QSV_Wf^UFx4iE#hCiw(?ZL30&17Wscl$-A9njuL*>)^~8BXCI zs)Zs~-S41HZnkaT7sqW{G*#U%+OgY%@q3qD@UF>g4(TuQTbE%Fxf<*rdAqjFzPv zvtYU^Ck^sSL@sW9t6B{ms7AG^(_Ab485e*)HcA~k7^lv^6aN!nO2fhP_~w(2Lv>qzN=}xH`s9a zx&So7n2^NyQ)UVUcYWRF7A3~1u<$%6QN(YR zYPN={FdJG3zci^n!J{~vUsM{^+P=+M@gl5{I$QsUEy;;2IXmiQu5;8;8(Qe%R|wD9 z7Mu07a+D1TA@p)eWr3y;&((D?U80yu{q9b3mNVB1qLD-6Dsq~Yyu$oxir2|c2H=B zGxAfa---OZ_b#V`XX#P#7=hyK%GquSpF)|DnB=S|XGME*X~BkE;wN3$PpP6DlHCDs zN&JkxuAbMei{=0FsC!p9GVnLBE3a9zKTQ7QthnhMY@MxN`IkvKy`zqTus=pzZ zi}>4Qhu#05NnQn;uBo;I&I%yNBxa%28^3L4GZAqfE;hbERN6;#YDYrQ8|B)t)%~62 zlSA<4H5w+!YpKL~EE#NVT^Z((d4_`~&jGyATeGY351U3GogUnQ*3&9{5E4B)GibAV z<9vE>kZ=fIOJ-;<2%byL1A%U604zA@(p2FrGJnrm%U+mZKawfSK6q*vAC)93vRRBd96G622Aw1IN7hmTNAeJUkmjqA5nV{(df|H!D1o15z*L4 z+re-t!*KVYZ=hLdxpsfD8v1!4ZA0HS8Dt(#;Pe_UP#cPNXmGW6pA01oAf5x|gK)np z+y{)%gaT%_1t`iSd+;H1#MFR-q*>dmfU8Rb9!Ip zL0=BTJE&Ki&Q+Y<5}bnlOrLgjlk;g4xM)K;7ohoubhzfzDEftlm9|(&>83gcC^(&(#jxsFWWAQ@(1Fu9+0=8}-i@$?co}+zzDdzp6p0>sma{aF_CzuHm3$q~=*f<2 zjxUS;19&u|Ys_PVJ^xkNy|_|`BRpFd3TxMZF{cABy0utJR(E!`H2r*^_+z1ZG=fb$ zIe(?CRzj(xSMRg#r-1JeSBTV|hhDu(vg1==4szpF;nJiBA*Q%vX5hZK{Bt^}jcP%zL9&Beqx-)C|?)wLlJ zXB^F+G}I$kaSs-~1619Wv(ZXXS(Vl@CD43wnS@LNo?K z*khjPOoe_ zUO0P&MWlWcbxu{eR-{cnj}mz69U*sua^Uv>y<2kZKt31DF5)jHhCEaj5`2wYMU1_m zsQ+1i`E*-j_crLEVVbc$^6dG!dpn_9=f6uemF4+M6_=x;Y4~|XL`L+l{5imu7#tU} zcU`{toZI=#T7+h*)YI9l^>;WgK&#Ny_={c3+J1ry#vpi?lx;Scq@YS}dKaYF;K18U z4f}LCJ^&^cH$cS80eGF}I|wlx`i`pioJ$R55=(mU~a9g2O$brXfHolo+M_ z2YkkYX<62S1eNdyH1(Zh_pqu&4#&@8j|Z?q*biuh*J~q~%Xr!BS)Chz(S${U!y@sl zl3?L$!s04iiad zL@f6WPFShT?wilqMFAwe`I!O^v;>gq=d+7X3MrSKyU*(991U9`nUFU(5cKys_-P2h zLPe2LqHovy{c+x9F5H_P0VJi-W!TU3x2L696SB}EAJEm$k3D;;A~9KAdY*m@enz9d zS>tmC2@d#=;DD?WXpuh!_xu)o{#$S*!Lf@g+k@t@ZKoHsh&qWD!+j#jh;13ki2Pr` z?mbnBfzkg0R&M=l7KJ-82!{Q9eFIc0Y~SD&!G4x!y3aWj_37|K02U7xf{13LO9`x8 z&4m5|9NCWmOpc!^*?JExf~*FG{ft-T_R{WUaNhYKrUWe#!ELduR#3+#3N7N(v6(Q8 zkbtBqfKp=GzG2+Ma_${+g$#4t>`Z_E6Z=~IT;khY;KiKF((_P3K-S>Diuu3h#x?K3 zWKf58bO!~L-)w+O#}=rf?9d_rkNZo|Q5bslhg{s#9WB4$j*IM+UPE>QhN(T|1sDPC zt#|z*e6YeK>=pVWVuAXL;pTLXp(&VYU-SbkVk%fgizGD+5b%^xi}iBvt{YIN#)`P$ za?NM~LLa*qC@aMpIEVB%2(6C7Mj32Yj%H>QG$4wVyENd%)<*7*C4?_K zy_T-|0axUt8{&SP#?h~$7ljGS zh^$d%^3c47g0-z+Lp?(pn1pATgt)>zQCqw{7tFnmi?xJf2T))=7dVq@4xl&w{m9}D zYwljxuu(h(+Teyxx{0HfHr@Hl(-j@sEdnDT zEcr9T2!ghnFK&OJ5&}M?bolKykE;9a4)oz6I1qZHLH1k-_c(5El>enbFL0)x$Qi4+OqE8vz(DsbD##xA9QU$G@7SLk{Etzbe~1>e^>HHSX(Mfp5j(TQs_5}1NT z=5w;v?83_x*;&$W+qOPbC+yjXSZ2f$)Xla!!GNm(7NPubo&)1qq)_y|)gt43I>Pf9 zQvWEvXWvA+iiu|s5--`&KJaIwUCt{da)B77Qo9M}8=PVw^Z9cK1_V{jCGR74yNalR zRa2A$^kNG%czaBK6_<=Ess372lE+TL#!?*KH+Uq*#aMQZVhC7FJe=-cC}}FUFquhUR^m)dc-4eiQrVwgZ z%g*vG((;$oQn?B6cod4?Q?8^q4HokB|zNFun~LZ)Nz0^^kJlfj=`(8AD}b z2lWh-bAw#={1`X>y$fh4`4ty3$%dyRt%Ou4fHbJHt;RhO(K7*a8w)+V9%MIBVF=G?R`WlT!TjX&J^` zTqlwEO$rR_KazP>m%gXcEM#N2>gYyZidSyLwmj5M5&eb1a7@ckH+X70UOCK8Fbyh? zOcme$L1EC?e(Ig^Jiyq*98^dEYSOWXu$LOUjkv7~>cTL=gKh0ttA>gBWqJ7$Y5LIU zmQQb3B3T_fxFY$~DAX4D-zy3s;^2K7l=1>o0m^LS2eI;UfpXi^s5Ni`PqrsC%)c>u z>gYhiP-_;(b4_dOu->KfwQ<0J7~>P6uLdHV75R@f!xF=)Ykx>m3uA{H1%Iy^o3zh0 z$`H;jxhULhP!uc};?b$dZYlvx+1`HcUHjgqJr|Ma%#$D{7;JF3*rp;mslTr^)Jh!` z1Rbj*i5@zbEpc;bn>IlDh&`^({o2FLj`*#YWQL$&%pU72d?^85(Uen=8w+*JG-}MW z_j}y{cqmLbYBc$n#$rn^@FEI7d(ob>r#xd?V3~_}a9m}oRWTT#L{>QmS2-t`I}8dN zjvh^&w3yVl+XgKF`c@00Tz{Tg9gY!jIxzrfP%Kvde#C@~z2&n3M}G}T&$-!F22du8 z!1E=qIjeImj%mw5Qm3_5pe`0w7Q-#xdhF!EnAETnhxWxm65@t5-LTG3&dD!Q#i#Ek zphs8#0jvJ0Q&w>^yLTyznJ|pntwADq4cR1YKCxg!(O{fL%sXWIrOE!Zn&ZN89GZWt zKt%mhMR4~Okz$#OW~H@DMZlpFAF_T*(^nMiSC=Kh3o`L%daQR#K}e&i-{%&E_Q_aE z(_$pe&(Ppv5)|xr7%+B8dfH%Y#go%^_93LEXeztNLeBFJ=0?2cpx7t&X);&5)P7tQ ze~Kib4*a1t{RY;7HQf!i6Dgh}dSfyC!{8{544wduyBL$8*bdhkm1rC^Jx$rG&gyt8 zzj4?Eq1n1&$x9K|A>!ruhe%1l*Ifuw?)DlkQ7eL;QKj;gYjN2lv9`R(;OWp*i!ten zPjIYJ>F)C$%!F||&lE|6AG35Q@>xOOja&4QA1r9(#fn3shP&B*W+j+fLM+z-0jd54 zg#8;x@83Xnzk%j_$2)*BIj@!raC8ytCFbFRwzx5WAPAO$<`zd5TTD98dp~kj+GY3@ zX@v8Pm>?`Ty1B1d3AYFhAy`Kuin=2CfB3+X_U9m~bIW7((#MO$!gtqhr+~B(Au^Z> zT*HnPACVsBRP_S{QRa)vlC!o0K^;wXEw{d(j=uKB#b|U5oX#`|J z#vT7;mn`y|L3`VEvwI;q%17VO+Wv6 zgx|*?IZwLw2lWMsdkCR*ItCCYYFJ#^}=m+ zsx5|kZb|;^?hqJ@O87^T^;ku?|NWv@jnCldI%e}m$crx=M}y2y_t+T z#}8!%rG+#l?|b?-cet(YJ3IBI-JDw8c%JYqFT}+w9ZJ)a@Lp9L8HHr7WQVK{EbjSM zB44h(?q0lSnHmzPvUlX&!i%jB8)I>|Cj(r0)99T0Bp#>Q9s)IwSGxc_fU3m>P3wx6 z=2s^x1|1m575+$-+Zk7Do~v!Ei&XjS1+$oN9r zypNMb%hHKu+dR1!J3o=!lt=+CyYEBwswE0++0gt;Tl&qq(TGMDOXlXLz~n^9L*@0} zmC4J4w^PgO?Iua>T?*ed8{5Mxu;%5q@7GH2-5LA3!z0C_N|?Wv=4J=Zqy1g0yEc)% z*@ab?{6eGIy;|8+85ZZ{lE~XdRnzBj9Ke&pE3;vpTP#lsF&)y;cFWxe`R#TyE)_1L z$V*~0$jilmGuyXwWZ`-l+xVf zx8e+V6#=yY*W0uZ3e`HhX0^<$brHMVkNCsUK2d7IK^gtIzuc(QZzlX)MSr|>BC;r!Nd%57F6 zAnmn!(_Zyf&veWY&Q^-0N-2EZS_=?q!V6T;*;wCfDjU-E%8Prc80=-43J=+zJpdgQ z?09l{7&0u4&Ejz*i6SfpcEfw_7tJ3Qy%_X{ka#dYQbG2Z?-kA48v%0ma+(<(kSmQK z*6|VFw1q1-3@3#KdSbnkd!y6e`t(oTw+EKfDe8F>y_Tg>=S1bL* z0$#Mb@q45hjUyf2A8h%k3$TaKl@g`&VVy*ce~fW`Z$B7zoLH+a-XmRCoC-fjZ*&`{tuMD5BNLE|E>a$s|niSTkZ-3 zul$TXI3bKx6BtTh5D1LxA6oyCv;uL&gbn}=g9i<>`D<7=z#egnRjT1P&N>7y()Zsu ze;@ES&(+fP&~tj^8=zqrpkcqQq1ZT;$v&doUR_2#1@DvX>rp>f$;P*X0lnvZnM9bH z#%>^oj+wADr>5wQlXj4=jq4tqhVEqj^a2Rkyvm}d$|kl8ibViO5jLB~Z->vPA^ZCo zqrG>S5d^X#?qk3WS6e-y6+^o`h(&H=sJO59?hkM$PF_D>)-pP= z1vA<D@5rj%y)-DhLZZ*tZxA(`vc;pV_D3n=+8dp4CU(6T0eN-?^&Sh1Pxv)X#EG|*J> zbL2Zf&l&Xmx|&Kn>ARX5WqKOzae6`W{blQ!u~Ot~5iAtRioh@IvoqWfg&j}cb-Y== zcZU&X!dV$uie|!@8D?I`a}o%~uBAP{K0(z{Kpi|kT7nHLWx+ZJcrTH~cwLy`1(}nw z_}3euSY_dSx97??h>UT4g0dobFuxS&&Eg>n!0fcfwhS`6`&wD)eIDrawPBN%5MEO&KY%R-k)1djD=` z;L;gdXouKi72J-`_ed?cx7H6=lFgn8#7ksT5Ms{&p_I`MNj+PQm z+Xr6hzRd29);`yZ7;+QJmoh&$FQ4(S5Hi`L0&eFxQ=&93I+cdpw_1Q+56x?tCb0#M zeG>LbaW#U}_Bq7TDHVH%6MTo7%N3bZSChC6(9hI}M<45z_>?=wNSgSRIgYElcP`Hx z(f=P|ZvouavULfYnVFfHIc5f#nVA`4ikX?&F*7qWQ_K`Ivtv%|7)H7Gy*KZE z|IGZQ(ov~OT6?Y4=d^bBQTN7{V!^&M^Z15*5^yAIO6_NKVvd^7F4|F-(s%ZI^l7s(TM5EkQN zsliKEAkQ=Q)xwK%w9OIcz+_a1@Sob1lA1ezJ5|Twqj6FF3efyF*e71We$cuTo=qN##BU5d0|M z2G5JecYpCKBrV|FL3YnoK(5EzlNTD4HNfc;Y#ygSsHQ&jWbCeij1nQN?K-R1E5tuf zKE3PF;O2PntWG@pb+cyFm)4Zx;!-Fsb2^Y^PIY~I)LAz2;;J+Lc=H)tp7JU+speQs zym*hvl~Cv_QhTS}W%G(TrR_<Y8rJGv^5-=6UfEP9p7xQf47@VD5U8}cnTPcSc4Ku_)n*S(wG)^DXmZ!@2rp~3Fo zsS*Y$D;Qp56Myb-=iqgEcm5uD#@_4TG0`gY%}zB{6DfS%$@Q`1z;3+rPGyYHvpXHo zC}!YQaS`iDJSFF;>ZjZBlq;>qJwy4_s!s^nAl7{4O;LxeuLt&}?pYJY#Y>G%917dJ(L>K%tpT|Q zSF75EEk!fY_*rU1Y$QIaZU^kLExWPqR`JA46E=)JFIJ^Il7^D7ZVf*j4rKbhJ%{oV zHI_QRb@q^02h{>x`D)Jb|4y{!M;MEHqBcBk90! zvMO^gX#!FDyg_y>&?PwpKNsU7msKqJcl)K6c25FURrg#?*$|f5%Y>1OcUNQFdBr4z zM6>44I|Xh0L3_C)AC;=WFE!b!p_doxZeOk!9-o=k?efsi4Yv#K2ds8e-K^e|&)Ww5 zq~UI|wtE>Z#MidIchEg6srfP0S>`Ns0x-R#+064`q(%_cjwI8&#DPENd4r~Rg} zis`PTCE1vj{kwA+vf9p=%GUjkyt&VkZg0Mqoh3F~>C2>-mLW@AP5N+TQ#DlXNP>yj zyu7-GhaE1`LSt7Yj@{R`MG{4e(`tbo_i(YK(f=UoM` zuhVfFt^EW9xBm9MP{5I9__AU8H$trRjG@rT_3!ZR4BE*_up_tMk;ll2m%RHdoRJXw z?3inOb?iU?h5-JV5NTXKX^?|A+W7f$-Pg60#Ww1`R2bG#X0L0XgI_=w3AjDM@e?w) z(K6g>cFpG=?_SEemak<+g)a_%iK8)$o><^8|c@T@V+6i z41u{%pbW!GJMHuFu;4iFt((_BWR&!vo6`cE^w_>KG2HBVb*y1^_}-nAE#Hgm%6#Z2 z5E3IDuWNf>(vWsJ8;_;-Zy2Nat=WAHlAIDlVD21ktji44{xrUhOV>y}xDI0{&#ddY zzecdk*Y^IvgfSZ`36v9q)3z^GxkO?pN_Dag7-(gMSuI_y=5rh3iGr){9ADnu)Dl2| zxK^=Vm zOX|-zVFi19pNx z|Nq$mIHK?KK5x2kwsT`4g9rK?z_)X+!zt&wIg+jBAZFeKD9|(qzmir|no|?884pq0E>P3&GUoN58)%~& zWcsFA5%T8ae`8bVIUVG0THqfdU~xlgzA6F5VFVXj)~%B7&wX5>X>?5YvAs6}j(0Io zZ&prSO`{cs#Mm6C0G}wH!rE4f+cf%h1#xM+Td2A@pNm)dRCKs=II_LxL)$D$+QN8^ zP6@0wbirA4pu#HKG%^(hE^3r1(8Jr(da7^LcJ>!%6U6r$Rgt|W_i8xLYA|ooW^3Ra zYhWD}1jF0n5VjCcK*|i<_G+}xYK)O^_@KW(t$@U&1s0swsFzC3dfQ@j%ivcLsyHy_FbkUkm6p= zgr(MMqEOEs!qrkVQ#U7l59c(f*opAQHeSFy8;e>`%jDsswqq=r>!bZlU*$Stxi8+B?0tUL z>%3(lZU6qAKH|@{L2LnwvM`zstDkeF5q&vv>c;TtBgJ6+^=QZ;kC&jDNOOeLdeit^ z#qYFW9kx(A8dHk4;3-*6w}A7(e!p-M^0-DabtLXgyz+MKc6{ySN>}9ckrX5TjELkq zWKjBE5d40soxze+->>I@GxwC`T#_qGW-)ha zu}c1iZbyA6h;*c-vPnkYglGGok5{xTDs+$8s>b3~c547o0+@G3fH8*B5JK1k@)@yP z|7c6GDk%tv7(2@_#^M~}0Zr%H%^4&zW z+&+fnvca@b2n-4t2w}Z5 z?a9v-ZW4Wudhe35SgS!ufxy&5Q7-0P40fV2}9H`G~5+D=?1YxEh zMOAT#Cr3Ovx~AIu{3ycEnQw)N98)X276bxMq!hj`v zR?bEv9?maFoQ^ecr35V!wwXCuQa<0SLkD6IO1vrM7FRd|gcOXQ1N0iV$Y-QdziHAI z6()18!_FEL=XsSY1cr|-l-Cwji#?PzST|z;236~IJRkh2mNFL(6$B?MkhJ_O-#o)N zYO}tqN#NP=-%Ycu0|Cz5b%i7Sy zBbtL5lMIEMq}|gA?|<@<6@xILa%0lffs}l2K_m@|lQ-@~3H+pr!`>c>8-o%!5|6-V z^h0N%0tGan02jyP+?qhrfT#UWgZcfR8w@~5_G|3U`SIxvIPaUW`3lSmcnn-Wcb;C8 z1=2%6H>M(>5ad7m86~{a@7wgflB@c?wWmQk4;UvzKuzK&!y!&)Cr6@B>L&kw5}qU) z1UU``r4#ru6gU)+H-Jj~PLK3^Y-A{Xc4J0&F#JAk!>38ng^#1VnWMLzqo-SXGCWic zru=^Q#xRhN_=jO8IX)&Di+ajf%;js$676^!S>z&qsv2WQddD-#+nC;Q<5&#lfczSr z&Y75KY)S4!&GB%a!P9};@oe4eKo$2w6)|+vKzFfA2~?lKM9#EEotctJm1ZOL(bkks zh(Gd2FY1SZpDai3cys+UN8cQd*mk!k8$xY-0%GF8qT}e|*yiQTX2{r1=NNIPF@Xdn zyulNVuiw2ls)7Iap}36Iyf%Nc!U^7>sWf~?&y*{9-e zKkew7m%T^s{l_WA$WiP}thCHyY&_G`4PO>KPrJGuWlNiz7v65a>6z_m1<$t{pEu%TFGjZ=;@Xf&6)jvgdN`srV^NrFCWiiz!Vunub04 z_2j!3bH>4o@YS7&Rc0YdJVP@bEsHEetC#}EMG_cE%@Z2A9X8jD{2W!(nx1 zijx=VEiiS&2L9v*eXl82zKPbxnbv*Cjs2C) zqkGJ>S-+tl)kDf(P2og74_LX(|*9Cvw!jAYlfx9r3AMPGEwjHUD4q zoFg5<8w~tYkE1`X9C<6^#RY}V>EpfmZISeL`s4oIAw2K%P$MF(qNdGfm2V!qB7?yc zk0c$pK4OB}ax|cW@F11iHOk;Ms1YY5zP}Gvd}#wxg1e41bI7ITuye3BG10MQR-{2S zW10L2LDUFMyoJ6cZTpw~=Fchqpj)}P%v^%kEA6vZXk~ftSeaTH$Opx-YBtz&eQV*- zNR@B?@)ZPwCSO>A5WUjrOi80XL@%ue!3Fn_ZQT4#Z*K(0C|(v;l%)x~6lIzuW4+_m z9YiHJ!RaB6L!8}pm@>lR5d=Il%nAwvhce5#S4UEt1glW{i7mncWrif{(KQs?G~iR^ zFzo!aL53(tu$9Hh-72WGyXfFN{{qU)G-^6Y)-pJP8D1f-l2MA)sHWk1L3JI%JcAFe zIQt)rmyW?`)_x+)#!xE@W_i*q5soI;=L?WxKGMBYLhA^N;|MvFnR8GmHpF=Z8WvfO z1A4`4r8MerE1-zNzcBtK;#^pa|U9eg^XS6Ca9$G|M=2 zwOBHytat2*@)c~FG%Io+qYxMOZ!s?aS20$a9KWqws%SGa4MbF^*njKj@SkfDHS*qI zSL)>T=h55dg7?hm=;D6oeF-pSqisRbua!@yXWH8EY})>@z}w)XRpY17_3-vKwJ(%? zh1_K3EaPaM$?~!8&@%ot1~9g8uXq+ZZ76v8lsPnT?z|k8SB_{gjL#@$tm4uT*1$~| zUTx`ww;hb>vtFsJhGBTOAtrXsD=drvCPS=4Qswnhx7$WYOzU&Gx(wW)Z##D8vv|v= z1hBj#I!OP+mK6705hr-;EJ-JLcOJzrPO1^A-UIt~#1z;RZK(Ny$8>B2*M6;b6e8}R zA(E#Kr(w<*tl$Q%Xa=$I#Q?7=_>N;*W(iD9rR~AcQsr$?%$m){eH0~wZ%-m#B3}5Q zcrWQFwOw-J$RbMctuz zI34CAl=Dtj`6u^he7-rO#8^IwNGi z-l?c5fgUmHS>YWqn$>?}q$dJBILk1|`Oe0d!fSHsb{%hI)uz`Nq3x3&h(}Gr8$-6uT-LM=uWU@Sy?qBn zSKqg-9~g$y>u;Pp4FE3bWA!8}zOQ%!j-WO+0OL2WUEEsPU^`{A{$UhTd%QCbl@ENj zSzD=CB8@j3*D$H|@q`P&k8o=PzQgf(|BZ{*LvadaX;zq$^)p&^q$_kUYUkhkAW14y z7;ZT4)0s%-$MP`jC>GL<9#KsMVlF|GNjAj^iSDUBCsv1(Xx+3&lOe+zH zxWjl6oH_x^@ygt~)ylNcK@|pkrzo~Kbb*|hYMqQL976x$s%$w{P~8OH0A+$G6HDw| zYbp&%s_haBCIJ+KszbLDkt*5{q~W1ojf&6qM^Q6K6>*V6t5%W9IGk#a+Z^c%OK)F8 z>62#JNETKYs0ku;hz^=958W_t3g$k^if}b)1%Uc?q7Ap@huH+D?1f16p176QH@pHe z1C6=K+GtJ_F(_d0SS+JQ)1?_KTQyl0lge}?zG1vDStEtzNr!088D#KbJS3PFiWR3N zE_WK+Y*CYDsieQev|Fa#6CVLZnE^Re=5 z#+7mmpbk)O|iD9gx8cdD5u*Yd|xfXYMhIb1d)CoW+5#2=Oo*1er=n32dAwUuFcAq;*!=z z$7p8p!G&cc_>=54t6}i6sLK2ab7MQ5=zOU%gCQw3V6w1bN zfmC=h=#~d0NYB(6h~mlzr>L@CcEEGl9Q(893IJN#4uB*CzK>8gVEHKC%$5+Q`FN)W12Gt z(VfqlBUWY%Amgg5WtiqiNve!^;e<8u{)A`>qyzQ@?v+}(v7Zz%X&W1Y=`5IwXnC;z zWNLkv>dZkZka}vdqBG zZC<*P2S2nZ;w=o?HfUWKlT$E>Prdq^czRhBM&_w7W>fn7p<^~wu=51jsV0yza4vXS z#@rJ~Ik`~ke^4d^`zK|dj9CjigOMyFE+vWBcnU>KUO~%(Us2`@eC*jIuR`neT0=CXZW1?k5f!yj_syE`qF_Ri>^1~MJ#b^U)hq8wMh2X zRHdTT2KT5A?$D5gb~K?a;EUGqVZ)2=GR3r?5zvq*a_-D%|4ihrM^Bdb<50Nl!89|a z!b|0U$<*Tko0&QqMCBsMf)Aesp~wNKX|gL1Mh>pUmu8leKaEtU=Xodu*%L+%CZ20i>m?=4)SKmAmY{32BVaY1Qv=cG@3d@&yQ1K&`fzB_G zRXRll(@MY6rBe7eTc`?TR(e%5otSQET8Y{J*JpmuK`XpQ zF${S@qrebT#VubWrI-<@jQ(&-eiOxDm%$)D3 zmGQ>r)6jA!({e&+Vqbx%sBvXaLpiZm)aIklXb79uf}3Ahq1_mEs|4ZO8#D^KEAcTr zqm_mHdUu=3n*ham4BR8)pf{)~UPCp&a z70Wpsi%QLZAL-?1+SfshL})pds5Nk!P!E{dQ4xZ>uB`|`kktsm4A#D-1LQd2*FBYC z+*{~jVif;;j-X$`pts>PNLvYSq=Z%F0{h6jmJveD^0mjo^Zlm3caVhQD;FYIEK&XY zb6PCFk-Z1}3P$9Scm=(MUSy5>1&s2(xpr$OV4D8JtYa%e2pCA{??3{PY2R+4&GbZp zpAF|9Cho-ZzbT@b*3{==UV2_2jSvdRBYii5=*WT+VKK1`rIZGV{sq2|oYCYlqy2|l zJ!n~k5Xrj{pCqb3NXZOBe8cEvi3@sb9qyu|VK2F)p5fKi~ZG>A8|$ zVmRT+R)c!wpGHMve}VtP-A86jt^(c$k&W{AdKIXYB_GTI(sy0?%KKM5u3d~jUdWHp z>?7x6d?zIs9$+DG0($meQpf{;4Z-~FnDA>s)h#r2*2r^;=Se8vhdRXHj^T*Zb{lc! zH3=~h-rkqf#lpB^-9k@m`y4a;A+{Ev`bQEAVG&Ta%4yvP3!D@xf5_-RwfF}93XcDe zlKEd^z)3Hee4g1GpkN`f*8vz8%=kY;xV|rbMCv7|#(!Fa*LL=goLgvoCtz#rBbS;2 zIpnu3we*1LwRk9dYW6L_}(Ii!kd zhgO<#Zn#)o0iHS8=D|b$q1vs6?+vqvr535}lu6(C3|lf0IIpNmlODY7$~zJv`>jaW zLddD02y6+PqF85%e%~~E>MbPbq}`a0KhzOQ*jqIr!-0Zg;Cxqsw?W)vd2&(C7Y-7H zEDKZz9V$1h?`N^Wk<{+{^`Np{KPn{Hm+;x0ahGODxpi3iX@7#nNV7Vu3PBUMwvoZ9 zdMli8HulStPr6eY?!lV1<@%%4ZAvZ##I?)p<`GvtNO*@FIBfd**FZJ5EJ8rpdf+1P zlHw}!62w6iXkENC3r7dA=UDK}d|8Y9GImSQW+oA^xXE1Rb>7i?aT^Q@aQ&Qn41_8B z15@@lj6R_3S!Igw&-Zk5j;&E3ifCQ8JJ$C?fY7)AS7Hwn=DTpDuEB<>?~!{PpVzF3 zeyfh<-v6J$J^{*jFXjiW!xrsA7pGN~u>VD8J#uS}FmCOKuUB<04!|`$_gMK-VT|36 zrQiCxc5xF5YnS7*HOU^w275vjz*VN;9=|Lzf1LM^6h!~UX=O;H{{ZCX&sOG62yQga@r#ElDtQkCV=GxB=`U<^Y}t!EEHBygejqV~ zvJPhcTer(tXmfh7oMS)UnZ%1(=u0gqbOfiYt_zN~KuDe$eLQKNnJ0we@>L3BepYi|$4i$A^*@vp!U07#eSm?fX; z0|qe!f=Ya$7Nj`~)fE8`jDJZX_?jKwUWb~JbPW}$J5 zGTE)=uL$9~S(^#_XO?0|vP7+4zd!8>0Su0Qiz8Do`M~(nWW68wlE9Vt^~lpQ|9m}i zalT_>`Ka-=f7QT{NIai3k#G)a?8i|{8VvoUDg*b}>r$h7N>>z35EDQ?z3vL#gEI=LSXO4^1<|=;E z0f}%}rpTB+L7in^FUp<Q5vN6X6NB~m zA))_RaYXSz&b?b9U={Deh79cEKcvYfVPhqgR8$(|$@9yrVPf;03Y_r*Bk&n&Q6p$j z*zf{@H(`K>`#BizQdAygf~L^B*RGT~m=I2|Yl#UWH0aoTdb~jH&)|L4o^@1wNU^)G zb2=PBg9%tq&-Z&+oIzYH(6PcuE;V+{_8{VIk}P?%(8jFUQoKWrBIGdpMmUWn1S{lw zS8(jxwKNq~+NC*4DXSqaD(!PTN5x7yeK>x8&#Nz|d1~Mkjq*!kU!POhLE2oE^P{!EJ&eNJ*ZuR!vR*7bh-u z@8$qr8fupWTk0Yyc#!$8^Fzo(5xMNKBlUJl0E;3gj0Q-i6>`&}pR(&15e%AI3BRJ}n zDb(}@x$3nzQ@USCY!zYIb*A%@pi*fI+AgP151mzh2K)lvBI(F&SEHnN_v7^Y75_6( z?;TpjxF9DKVNs5@3MVKHiwT19%2b^fMfLB8zNCmeC(55&m`N##ttyKw5t6qFABkC% zW$rD7jfW|PN*LqTd!h-8f>_s}ypVrAmd!B^)xddU_d~um8iE?x({Lp$uE7Sg?D`j5 zOjzsl#xd}gl#hVA=(M98HpjQ13Iil0*|f0>BZa@wpifxu;kq0?P`Tod(~egpDJQ5B z9xlZfIt}*}tO)~(v;`2>!I19%BH*>#beKX0EATG@R7X&}n79+p9JxMV5{mK^Wucbi ziHq3_VkBiGWwMeY0QZo`11FUvnedhZEfIi}v0jpRz_avB(qgAtm$r*+q9yiWvlHpK zHSzt|pq!`xDNO?h@{w814q^8Yh|Qc^6L--8wi9oU3_X$yoJ*w{&?Tw636?uq+1v&$ z4E%BHJL$!wAh&5Ln}D46FJ0c%q$S~UOC9C#Oj&&i3DJ#IS=XE2s1eAnT;96Vr|0KE z*wYI5Ux}FsfqkuAlzhYzgNi_A-lM*i&Vs@9SGpK=ZN*#~f8l;Cgegv2C&e>BCm(L{ z2ahGJgrCZmxbg;g#hm!JV!&BRicD@lK0J01_fsghEcIM{E-zH_vw(@^Jk)27cJvza z_&@&?7GOtwZAk51m?8OVhNOvky`Pj*5DhfCda5_YJP~6(y`Kz-A@LL{A#2%LpDQ6* zWP}#eK}^7~kN{{-lK^~L{k$HNomo>g%g`7L#338<*)*3#5E zQ)E)WY49dh1eWBcr%Z{~c_5M*3iMFYtfiLg2ozSuZ6b`8nf`tOLv*pU00fqHI|@T1 zGlL4>MDP^@+s#ltMK-~I2o>|^c&a{ikx%P^e6dKhe@K1$NhY;NW0LM^^k3?5gZ`)! zL;2t8>=1zJcwl-0-p(=q17>#k;+p7I_BW6N7B2MtdW=HHze%w%+}-&n=e~aYk2-us zLXw7kz^YXzu>V!H%GKP>&Dz28uXR=}8e1;kc`$l+%8c6gEMQxmpDE9$ee@dk&l>aA_&JEG!G(9OHapj zKfhXL_iD_+k`@ugLTe<*7l8Yv^Zn{Tkkg3KCKJ>fh3e?Yx4lK9Bsr3{tv|9O0S+R_ zwt~0eR|PjZ;K8+KwB#^KOGioa$`}n&gza*3{JDOG>`E_&m$8Mz#XeVtZq-&t^ydNN z1Fy4gatVVi(jXTqH6G3}N$9$Yc{lgFVGn8hBf#SaX2Zes#nsSmjLT0I%{r`;;uD0F zG)kOc?BPtsgeXC$*WjYnHEf(N`UdCFW8=A;muW

    )N#NI}Qfpu&|^Y@AN|dZ&;hquH#NDMWticr35H5ULl) zEJ)^s&X~9i41^=GDRYmQ=oczV;)?}Bkz+`lOlAHo9+0T`^9?k37<|ZRUN0m$D2VLK zg%~P=^h3%R1xOne_TS=>8?uL+-wX0WCK>07n(|yEWFK1M2CT=s^eI15z63BVtqv^@ z#1RTuuPUz!&Cf66=|~|aZVb2f9lFZL_D8KOlZDZcS89yHg+IND-0pLtJ>U~0Kx{JhX4t8@f zr!U~{-Uf)}Chb|b`8}$WDGGm-n^o($)<#&L?yC>*Trrf_At!mamq%^r!frT9DKS>e z@NYf15K9kkN@5TFvbhR}9$Lj08~6EzjJqxL#npn(y($D#xx&n+9`;yF zl3N#_k3Gr&v!`-esy>2`!Md(&I0IRw!&teK|Dj=Q^4mj+KG&sLed=)c#r!0bxAvY{ zM53M3D`(AxMV6SK>s_;{{8j!-<)|Nu+vJAAPX)VTgYiu$u1oVRG|0&>+vLP%^e03h z?5o8$#`V*fg4E!Jmc!%l`qn7ZS@(cUPVe6_HG^3VUg!B_DZk!sM%vON{0{fFfOQJL zdvNBLKRrTRw_v}EP@6p^9!z3RLX5eP1>6f4E+FUrD4^*V5q~%+Fc+*TfGWmb@+p|Gw?B!i7 zni5}!ZJLbG!0^MwU}apuC0(u;=~qC$Ac=;@43Qa^vo**ZqW~Y3JdPWkM?ko$MKFht zYJ5g*A1su;2`F$PE7P~ata+`WA)1f5ZKdJ)COg1B(Flsa?0F?3g~~WRF&EpiQNVZt zeXI)M(eF;?%{kJa&?VtKAL2>OSG*unL~%GGg#m zvW%HrzYTGC_LoA)ZtFvLb3#OfE+)mYc|TsayMz3vW50RxTugv%GJnH?fS~=`F>_#7 zST!SK+rN5cZl?6x|6m~)x&9hSlbR)Ko7jwjN;eYPG>L@o4T4TkhqWGmDcnB)`#ZmF zEX!q`Oy`4LoYy7&6a{D?46dt~G&m{m$IP?w$HN<;POCdZ1C=-(UE6gZo+HBmIBSv5 z0YC9e_hhIEZOk)@R3Q3xI_lv@3$xCGIZc~JN_%!C6}*pkmD`5vXUu5W!3rwlffyXP z@j9+l=L0qdA*x$560K-X!rAb%^eB+F1{ZwK@F*BDyf{rVX`EfY?(Jj>wr_!ztT9Uy zc3$D@YGXzW62eJry5`D9qb!Fu_$QY*ta#G-;$=4G?9Y)Z^e+4mr{NMU!+}ScsMu)8 zWP9r)WA+AG8sEQXaPgX#y!(zok;xXTMYCc@3KuFm9<1jbm~@`6_2bA%Ja}=@S(2J_ zWK>gRSt_HLR0Q41W*W+*Rx+GKev8g116{4^|4ujCy88w4a;n@xGjOrA{&PSG?`e>( z{YVLdYA#zrRja9WH#)-oTUXq(egK~bsKC9L`GNWkSn1B=j|&(#uWrQJnsPmEfwsZ( zl1NQ2SoT~KPd8TlGzkqSox5=!M$i0vN3gQ7ab1lrx5GX?vn>0Z;nUOI^@Ty?^V|E< zQD%b=Wo)jeg#;@PZaVA^X7u^oVN>M6xUG02H#q;LMtpaBP3@sNFZEKWk*xT7`#-vb zCW(->jQ|@IchZ4?VE+4*bhR|IGh_bi$of}@GaX<f1}O1LAZ;S!MbW;_>1|s412;Bq!R-i+ObaYCpHZ)xuzV!brEx)b_O;!lCNXCbuz$k@kv%A56BRnh{~##mC4Y1wkh)lNVdJ zZ!mbG{KmS;5BssaIR~>2gMd-&b_oXJ@=g>_+_PiNK+p`k-aMF{C{3S%tjXh@{H*$G zs_pinlG2#T!M(&?%P z&b|7}E&=~ zf3%k9O%I|M_RR_H{pdIIyYCC_uk&Yjha8_~kg>$RZNHa`R)bzWe-xRa^V;0E+r71O z2f>f~Flvc5M5r*C4G{0}ApR4O3nfK5gC^%zCL1LE^F-WGs$KcBTD|ylY z34f${LdV>3W8LsJR?jlp=JSRK>Cu$XwnHyG<0zH+{Hj%u)+8L6b%obku=Z67*wp~X zUZpB~x?rzF;UhezjiPfhg=9OjLbz}7u@FiwuE_ahui(*~AGSuB$^a=afxbL&r+QLo z51Ofy%+$4vAZjo2M{MymI?|0y*qu zw5<>*xaZBLO0rr~pe0ywT<4YYE#!SKydySVt3h;g&}4-m+S+^o&IMDsJ5+ugreNqx z1*y4L=9&AdkVfylX{X$}ZSotSC4OaF@U4$;GqlObsG;=tx~OnRr5mlwP1xKb*Y41^ zBwN6Y_YY4+{%b3XvQow>*~)8Eua(Fvzx&S3Iky>I*L8d&(J#YEdFy%({(2cBr;}@i zbCv=JQOpGa^u5+UlA^UD2-tCuz$AyMwc0wF5Q^k6>6-`BY#N3NN%Hizav8tU8I(PA zoV;PAq#$8)KKzv8BgW8Oj96ZpI10%xxc{oUmy*=gPPe$YOkFH_d1qCw9D$=K9V@$^ z=5_Gv(%=*|rf5Ju`{f{AF-4kIp%KrDx)BZSpo~QU@>w8j#yMKkIg1FjV^(BTJGIWY z_)AM+8B2NU?9Zlx>Moie1Az`@n~}@hSgw0PK`qT&Wn2t~gL!r_2ZU0-k6`V@n$@TY z_1i7B{qu9y7m%YrvSbUS$E3@XQ4oE0WWqtQ|9AKn*`T( zd+#$1D4$_dXTCWCOYyySD0A5rl?KE94hNv`-4b_Qiw-|j^zP5Qn{%9ytZevvN%(`Q zv>|K#>cNh?l5k9lliCDES08`_QNh#1I1wyo)(Nj?`!l_3Ax$kw1Ee91792$M?M6uK zclii!D)rust=xgS{KXEdp%$0XE?aQR@YL3a{fg|8M;;9Ps%@ft$kY!}Z5oy|i|{8@ z+%n@WHTwpCeh0u>N9C>y7#C;N%JOd8M{hUU^7di5l4`zhLfDSioI0Hoimni&o#Nh9 zu2PYge5*P>q{LM((GfU}UY_8ACmeew34LJ?UoG;cuVVsGrwl)=DEM1&z-sWT-a0KeuhGvV+O!!<$1%7ZIMnc1f$6l=!0R1GWl5s77Cx#wU2(tF3o0&!vyIYU8q8nOb&CBO~DVPnZq0-5}nbJ@o5M@gk zGl#Yqv@51I&4J~nXdW$4n%o5Y&>^MXSX~U?yylMU7w_jA*71MrrZd1g$MU?@e*Ojh z&s;3WpKqlU_<;un%wExfzfIg+TpjGR>};8>T+QtM`q-0rhUcwiS zv7mxNjhYWvBlGeDDxoW($oOL`ym!aL-Es8DPT?Jln1c_{Dk03J+Xk0u>KweZ_CIt9P8=?E z1NBe?brJnT*WcY?|D*1&*03=%^}zfb1!|{Tk+jLO!pwpuU+W1CY)#aWv@&j{CA=8D zLr!|Dr$7}Pmu-viD!ZyE{mxaa%p>RFQ~&oef;rkq3J%??I?Z-hQ9>1SiLzKN++Oy-KUWK`X8&bxY@7>8(>W) z0+`+XXU$>nW@l{X46Mrh$?m4LHtqL#aJsikh2tglnj;c9AUK)|gf%|LNRl_-gHYkr zo#l?PvTR(*U7AeOS7i&8MY7AIeVL3w_uJ-u_W`^@{(8L$O4ve*z;NNZ3eqjz7GpS) zn_Av~|CxG1b@5XLb`1^f`)r$^u+_)zd+f|_)b)8tG`iYS8ZEvb)VHfYq|>8q`D3`l z2Od)Pv~H4W5A3GOr#0yb$h~KV=f4o{m}*Asu*#|qvxnG1t5)U}zOr$_?cdG2Whrf% zXgGD%hEs=^??l4G6?b6TgrL-}A4ob;DeXa0X%TT~D$QMtENj#$_dBUB<+GBj_gPBG zq)(kY--|}&i-*faPLZ+`InWxj(a&Iomj&|5ar5w=Ehi~Ja#PA&hAMJ(D*A7Ke@OTD z<|Ke+ru9n?q8X>JwSf2z`OPvC&PfK=VTFO7_v^2x=^|cC_f5dM5ac$M6xYVL%ZP3b zy$bYKB+cEq)8+Xu!vYS51xP3{Qi?Vska{TU@hV-VxzgwQ&D3qu#s2lL9mU<;?uwK3 zho-a)!*ZDGB5W-M7wl;|E#GDtG#%lNVM&x+M}bK>nwA2yAO1yoSTJDS`n?vo1J{!B{`4So3{K@Y!w8#H zwNd$bF#WK|2@l`4pt*4g<*c}b)}|ea?)kfer$~Cv?fTl?nn%Gg^Dq=uy+zD$&TjyZ ztKNrL)aCDH<8#NK#+_94$1%g-hyw5tx@Dw{sb}tlE0TM6)KY7DWIR?L24HQvXLql< zZ{+pGW4dodx1sw#YknR%2=SI+hO*Db=RwrU#13p!=xW3F=6hYy2UF@4U&9K zXw2tq-o(DIQ@>X+4Lme`wh6!T9ant&^3emYAc=sFzl#J7s-&;?)8q54YxCW%5Z`A8 z_QdRWd#`=l_S(8U6AQx{T&%@D0rra;sHdyZC)A^rzN@J^5kv--!7jYjJ_HvV!+cyQ zYeO;iDc+DZ>W}=b5BPu1SOsIt7Tu5_Ai*RcAlSee3)r~(uW1Un@&aC;_C{8=OxBKO z7MB_}j_B$bf}P&nw06@dG>jO~1D$MrMU0~KU|d!|N|LyW7;BwEWfB$8GpLN*7g7M( z@h>2cVFErM^%!cdSx!oGfqW_w!cx#E@EABFWY)Kw0vHD1w;P*9uu8%42H!6>*WP-v z?l)a#c)gG93q}hJ250ZkykS`oz|A~F9-4Y4?VD>Hc`9WuFu7boPFmXsc0p{wED+x|I)=Xu9Y-b zBh|E4anBlQVvGheF!01Z(~_CMcd zoGq8){YLqe*274k^h9t7|6=LB0@wDs&N29@pZt zhP*EK;Cg@eB_7vg5Oy$Gkme{lLkkZe4J9umo^P)_y^o1U6V1DQ>^^+8Q*vv3zq9z| z+XJ23{W=~TDAb=jREZtQ((0d}OupqyiA+lybb!}!o6;XLBe)on;Hp`Df><*H@UWx~ zZca|6%m1n~U@d6x&xTLF>y=_H4B`T!0>K2nY?B9J0nA)+Nk)@!-*%&?Ogz6PEs$%ger?uwA;j^Br3t1MBYen=^QT9c~~(oA@dCL3-+WZ?Y*aUFY(4d zxzry&b>jB4!_TI0PJ4S-c~1K|-!tolZ?`W=OY4=HYMc3K%ADQH&h4qb_NM7j^_rvG zCS5YBt}OL^`$+Xi)m^!R(eFR6pYp^bxcKy|YwdD%PcCkKEmvLhc-iuKbpRen;yZ8Czz1rXQf8U%w9RF3uvTDuuiu*6~&(-|C z`~7cvy+!@QN9*^;{`%W*|9?@b;Q`($b{VlZSlU!ul&hk|51R!yPWQYOzr zIlbj)!Ba23k`4UJn%JZ=7Bpfd{u_6EJ7gc=&B!Fe3>qHiVE8uEJYsFo(uq@nE!0!M zF*i`R0|pv^Vhjw?&cMOo)Vz}TkjjG8;#g4Y4BdcAHE)L>K&AJ9Yg&DD-M6Xh2D2Wn3dm%Y!+%y z65SN^t`@?SwkBw(pme;@^`o~35&9L|kg^zR>oCBZ6_|rSxk`{B5tu!Mdq6w@V9Ge? literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.java deleted file mode 100644 index b62adf579..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdFullArchiveScatterGatherSupport.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; - -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; - -/** - * The EarlybirdServiceScatterGatherSupport implementation used to fan out requests to the earlybird - * partitions in the full archive tiers. - */ -public class EarlybirdFullArchiveScatterGatherSupport extends EarlybirdServiceScatterGatherSupport { - /** Creates a new EarlybirdFullArchiveScatterGatherSupport instance. */ - @Inject - EarlybirdFullArchiveScatterGatherSupport( - PartitionMappingManager partitionMappingManager, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(partitionMappingManager, EarlybirdCluster.FULL_ARCHIVE, featureSchemaMerger); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..8902388ce59c7858259c589774392226f61fd825 GIT binary patch literal 37078 zcmagEWmp}_wm*!!dvJGmcL)S`m!Ls6?rc1`TX1)G2<{FcxH}{e-2J~ZGv}O{bMJlM zFU><$t)HybT~*z?l;t3yu)x5;;J|Lvc(kiji{g{P!NA5~z`!s;t$Gpwdlz$i7bA5~ z2XkiwW)C~trep=BRZ+ChXD`?(EW)JT5~$eaI}WrCjPdxAH5oU&I!i1k@(>Sq6a3*C zGs>Yb%<-9NcfQ1{^+H`f&D44lk|zcRnOX(pkR?6^>-o&57Cie>@no`#GP^``gD|zN znLh8Pxxra?Yy0_)Fhb76b9DogwI9G@XsTj0F-V3&;8caipu=hkW_a>CC>+#Pk49*A z89wcgDZ9N)__>omNcc--zbr9RYi8MGAbbtr{St0`t|9%|xG`bCxz25pp~1;g!?Av~ zw+O{!2oZqxeb26k*?nA#;|Qj{Eb3ZKcLT#ZWbXuE6HHw@`vWpt>&;#u_jpy4;ZujM zPK>&*)lrZPzSo@uO6GA-ARSEunL!dvI(tWKl~3?p|J@y3Q7onK!%~>x-Q28#-Gqk! z2TN)Pfgyta8abKUIHVqQzg9!|%U$F*hR ze0^+J{-jrN!TcjgLP^cggYp_?vIAp)*RoNtWTtiZ{Q(mt#iW+kl!fa?kcywfH1RLi zy3{k>rr0H4xX~Fs?z4X;DC{$$nic3ap8+KZ9h4w5fT^+*z`>ct6yRk3`zFsy7+36P zMU%Sok(yJ`48KBylai$eKZ^JugB7sUcFW17U^|}8J-NACXs4UY;6}VDFnr}8yw20q z0%;nO5JD0fe->aCfvAK1x@v;6_LMC}&sUWk+;`UVID1KL$!|K=6RCoagixCeDVxD& zAiogCPccx>#X0wRiY%*DwK(sGxEi{`@@Gxa1lq3@$fWyNbUyp5*pCUT8fFm zGSN%(z{67pKFUuSLd`B!zy~>P+d{eFSL-V6{MgWA!(VMiUUjMc`e=H|<_9FwMGpS; ze$ZI;Ak&<-7KWYh#O(nZ2^E|}R3%N-y;YNaE8@i2$#HYq4bq?jsU;K%CFNb-%t>jb zXkZ@Pnx5MRV4$dOcy4ZIjmeqHU&O_%m7^B(rFoo}CiNpQb3G4b*j>mn6h15I?)t)t zEh9-5t3)glO7^SFcgC*C{2vW|Z|`5j+IX5yJ`NStEYea9Cn|iaK=((15dbonK6r#t(j1HHxNcRH>d$^{BTcW^kH_{FjS*NtC zV7L*D#|@-v^<`RNm(eG2-P&TqxqMuZFA}s-qu(i#tv>>KuhDa~1J)elT5lW51maNS zZc(5f1;m%0aU|(iBw%%k;u4$FF#YPr09U_wc##sTE+MtSBQE!z4zg-7lSHium%pM@ z`cBOVOVy3nR(#lDt|Swx9-^U4A$l?)Az(12JJmWolvva?P}GaY&f&sGcca=40k(nf z18AU=Y=rQX-@EDVklcO3e?eouuwy&idT2BMj!W zh!B0G_RUio8e9Vt#$>k1q`m&r^o-NP8J5%vu}bZDXDfJe84hhL?q7uqM`C#RDVLe) zq_{{)D&fdq#w3y{11}tkNKupu4EOZ#v37@Y+u4%ktoaFA^-n&hsA+O375spB5?{a* zVOLF;^GTx}DH~*Fbbt}Wd4yu)YBFJF|G0=!VbsqUngy|E9OS5a<=_k>V_ZAYU|s8F zV=L=&Rcg`0OgT=cMKCJViRSS+IGMBTTeSU|RDY@!^yNWd3r_p@&a0O|Ahb(JEQ|y0 zqaz>P^oIig#ce(j`3~vPyLM%d(*~3JET4)y*#@Rl6A?RrDE3z|%%{Bdv0;2fp1_>m zm4Q#*Ru&@c4N2CFxtYlJxT@e;mLqW3G|UtN6l+-r^oH#vw<2l|v9QvbK~$5Uv)cO1 zP~WG1e3^P%iZA{Z&&(@^5?}yt!w2BycCnwtE}v*Ho%zyxvodp?EWY ze9vz_#s!XCU9rH+5M`G&bR}P|Jx@uUxdL%N(a^D5+s%B2YUknN0>-4jjEb~?qge)H z&&%j(DH${3J0{zC`Yyfhhh-Fho&CAs4l6^W7W&{st3c&*_z0`u{8~!Dtho5#r9GnRnv_}PepK%mLkvaii325a;ggLJyw{jzjSxRr*svS%yu-U+ zal*yGh@{;1Z}C#ZP;Q%6Z-EEoGuK+HTCY;kVVo^Iz3&sXugNqmV`N(+HdSP+_O27!9QW|{c25>y<+ee zap(K#d#UEo)}#*U+Z>5ZD(^sB168ErYb*ywJaj)IxBO4+ zr+)kyF7&flnQTYzUm6_EGq))LLIP)ZkFOM>EEay-de8aCS=rg|?ad-iHkoUQQXo%D zuS~Il9=B88Btl=b3!8tEYgAko=UkW_+l^UG#7_>Zq2_Fb*jKdER-W0fu_eE2w1?Ol z@^G$PLJnK{h&Wo($8P4i5X%jbY<+L>pn=K#=JW0a@t+fdy*~j4J7}dC2dxx@|C$i~ z+~@p#TKIF%lO(1T#ESR%>=mIeBoV9FKJwkKeCl?3>6#*+5b2eKTZ#Qmy>&B2iJgGm zJ8s_`8oSxaTeXD^0X&Ar4}rW<5U5zQA`bE-O{|V0R=Uiv?3KN%wAvR0;N?+Dx@=$jcIrNHJcj`gFBmn~-;tHoVr? zGf4wpitsMpun;1CY_|dyFyY7rbfn)a9w{N(gVo!|xsK`V~G*mS-Ka?lb3-o2 z(A53y@zvv&ikI=@%SO*NTb>dTlFHtmPNmO$VNvyO*H#U>-cR$Z<6iC&B5w}bfPVD5 z_T8(48;^G<6(gUF?m|lz`+-fu#Qm1Q_)ry>oWWC}D%R9Zl zP~IL64Z1gCS$zVDa^LjZI6)mBK6zaC<^A>|B0ec}qO}3q4%&J1OZyQ6g(>~0{RZC< zZ`)@tPLJKkcdZ*9@ID~JdMpQu5i zP?h`HX=p0XX*Q42@td#V8BnM?$A0k*bD%3Fs&%FNMDcJn7O-=__g1IdEuBr!^;J)r z`+@GUhuiCpjf&>=e)YhO=Ma&v>|*e(J&ch0)ptK>cn0r!Tp5H60ESj;;O4T1U`N7SIU#kmkvQj5t5XeY4@2m-8fbD zzR;H8#HA{fdHb9GpS7F5)mWxF)+W!Xi--G;&XqWYrH`@b=WS1mAFtHutOwF8?}Oet z45}BVpH5~U9qt@ohGlQBL{83xGgYLU4Cd#~`wyBq;r5LJ792LQg`&bNQa!iXK;1U$Sc31js60+QDj&%%UEmU@} zWfXv`*k0tcyp-X8(T!kyeOkBb6sSHMC|r)HW#ibCUDCGONkl8;hWr4hnt?zC)q5!E zNOqK15X{)5qbeS^;zCCTXSspZV+40q?2i@fsV0iB(m_XxXtz>Lz?DW+)a<#F0MP4TyhXpKvCCLP7=R1)+t2aQ_kdClyo~&6zcs z$A1x=sZfAg5dKh+(gAIj_dg{52P)3%vKl8a6*TJa!rTZzdQ{OsUa=bYm`D+s{!1bg zDIAR_BHSOU=MvqU&^msP`gc>Ivqa;RTYDF#VK%>{?mTH1v8Jo<*#o$rj-M{cLVI%0 z2L!2rRGOr?($;2=u1&u-OuZ#LXF^HsxdX@c<>7JLSH>tIX1$c>v%&SJ8`m}i`$2E9 z=l;bBx4chF9#?wzL$f(G+a5JP=Y^FH_YX$%x9_7jMGRVQBuQfIcbJz&ll5cHxZ?5O zo*a-Qm^`PA(HPgth%z?^*GO+qfo@Bg?#P3yUCe&NIWl&~P6>x?zXl=zH9G;-v1nzs zzO;gUR}W5%M~?4S&Nl@XX6<;|SyGP=<8h|P_e^;Z^*7iQ+=$IOgYxhdpJl8UKLy0(>$Ox`vVpjE-$*^o`u&*yckvR@e-QPCs zT;0LYhNR_$u0MM4H6i-vhvvL$GuQrPtgL};{_vomlrjE^Ycd(l!luVZ92r-BtLM4s zi$T&~h&hiw!}2|PC=bao4x>zMO2cjCIr?w$FfRi1<+~l*w|OXhpNlCMInSg_t8t^* zIzO!;vp7YclUt&_9CZG`I@&pqAmLGYU%>YnQK6NYv)3h0mPh|nWh^3{Lp6AiGcuZw z)!0oDT``M7`?egWuMa#M(MLYr;=-{9uTUM#$#&8bO!Q&j&nBn+-DhfZz9oCvyQhLh zn{w-efU@#!O@aHLju}|9BrTg~BwvTj+Pr-z}vUcpe8Gdx>`p^P@$TT+K_$R1SVpSX|h=y(Q?h27lkG; zkU3wVr8TifgQ^8XcfbHe3%5-HWs!%CUpba>?b*qhvzViTIz?Ub+*fP@yVReH5M}{Qe~dOAkzI4| zA<|lU*%Ak)4YMSVyl=OSzklnW-fUjw zT0J{USWMUGPe%Cs26|;$AjGYdL(OF6?OyWWtkw9)Re+$VPFenmpLeOe_E>XJ>EbTa zR)MnSXKttphu43UY^#9mHLMEg1Q59s&Z-6RXB=k`t#pi_QJ}jKAZmVdT?yx|CM%A zk@_Q&1_b3*l(DRLt%aA2IM3_U& zdlLe-mgwN7=Vk-1DO-9al5Vo<&(Tnnfh>HKRN6VwR-~LptZx0IpWBzg~rrc zX?|6edW&HaPRjh2^uX0sXL^^k>d>*ZH%(H}jj1Txs7)yQZFS^8T$Ul`Llv)h{Z1*O zW~HA^O5w?x>S~)zvva#~doj(=c^g*cp1&pXeG>V#wEgaK`BPLmZS*Tb!wMw0hXRX4^BDC5~nms?>e*sNQNuFe(KG#7FJLn8F9x_O9ILPpURQ-ce%UOUufs zy0wvcPccd_lQC6SJ{m7JmGp?MtMzOw*(l)MESC}8{fNHf%YG|Iu@l0x=(Q-a&*x9G zAgu2bC=BdYakao<2Q02ZC7jh&roaC@qR~EToWOWhntmk~MSo_hFNEzS!9b&5#srq$ zHe2P#Ih3`X=uPKl``N%{?Og$c9g6Cw ztL910pBdnfm9$glevjWBA+NV5nHvWlJ6DGNf_$Iza)F7fNm!6{!sfJmb-{I5RId3L zoSADMo}(}oL&wvZduw=Da5+}BNUC=W3pgz3yMJ|0rM8!#W^`9SzBAnA0KVrHd?Ug` z7vAQz8Ek3YA=spX;bLR8FMfP*c==W`x$S`v?LF->i1>5r_B+HqRRw3#+R`$#=4i4; zRd!r9gj;p@DM5CHK-<%rEQ|op^;>&aD=c`!@0?f`Ich)zgU0<@O3TzHn zB8l|PWy=mxu7ELJr4M)VeZuVc3SY-WJ}E=uS*U=WA|P+eJ5z zO>9@VPIw4lehjZ!#~9pmm_|NBQJg%Udd55+)1GjW;PX9hf#P1-TWg~kg7QGD z83LOUVaU!po?kXG8$+ja^|-&F%-rES6%MZ+K8<-RJ3!PBrhLnYaqjTv$(_7_sE6x} zH;3;`gH+Vtypxu9FtMz@#p(P=FN5BRJ-uX+&vP5FnqJVNvL!#v;Rf+Fd5_e3hOcIZv+KmdhFK*Z@6Ucf^r0KRc~Sx2bk%I0}lK#$8(^U zq4fv(8Ww*btASu9u_XZ2;Xfu@)(8F7yxaGSP;y(01zm|0i(R+jJDjw|0sK=J5F7s7 z!-yl~*U~9e*A_^;@PeBcmjv`z&K5bpQ&c!ZaJV%rL$bC@B4w<*55IWt>+14eLsj7E z#tuexWh)dviWBA8iIOVJ?=l^zU)|*+{A;sMel(XV&4n(r)rngHkesTpZQ);D^0K-+ zId6dAEc4|KFLNd;FN8sMTdH1XmK#!RDI%Nhf-iCmSq*Ns{8s2&yA{I7VHvg@Zk^p! z`LZU2uXGF6xj48IZR!De%;%rL-y*xXkzn9`}EQKl8So>jgW)K8)Wb0D9qTd`; zrrSNtSkB3TvtXSEds(5(^cNjTb(#rKu9oE*8Y-1?9)<7(lh0MGEJ~dfE7!UT%~_WR zmGW55+g2nA7Z@UVzkO-^kQxV6u3O@}k=cfyh>7nI!XSRqrfKwGA~Bu$p_S=|2b$a@$SKCB3WfOA}@0 zqD6nlv3P~*I=89(o{E$imKL=a=*}-4M5vW9IV@9jc50OJwobA!Eq*0gP$?0`CSafP z6Zd6L_xjQKTKa%SYgp~*(&wsC7OO1GWHRbU-W1uS&F-?BR=LHe9qb$7x&Wzqq5hKTSm0PvN`V?rCm()$qYduor%nlqL z(L!9VOqWFZpWj}oLoqI8u1q6DA<#o0#4@}qnq$t1Af|rL(*jp2=TV^{bo5J7QA(8G zJD`tDK;(z6WC1xTv{7QOC{5HS5LI9liAVGBX?9v?xfOcczj>f2|HY%YD~k)hU2>s} zUTf@pG{nM6UkXPHvXu1wr&ezZVAnabR(@@XVKLZmZ&lEM)QquGF>zD^Rr8bM+^`N(^fmqu2|rnp_s)W zSN-s1aN4zeM2eLEVfz^IUu=A?|DSBMBOU=f7c`6U4TqmfYOHmkC^tVPA6fl!zQG0` zJ>s6c&+|+pKUFlY$g#P(j8frgGxBrfs0+ zZe1sc@C3f}qo6XcGP-jA)7h|Dq0YIL9u(!O?22MBsp&%l>1y~1x5Hz3v6Sd#v}RfM zkg%4ilISI$kWY0Cc`k!8R0knYUP?5WoRr9b>EGrMh?*3ndSY;eCZg@_(UnurH7mT} zLTIqTSLy!GY|@TEWuJKj9gqABjLK;HUy8>X;V)91!wp~|$xc<;Cc=q@5$^U$?WlHO zJ~uz(N`AAa+7!FaXmPv!bncAs1$JxYYa^0!nSm}s;UzN@R5MUn6-ncHkDkz~E0Ola zB$xDcwBpsV?eX%V)(`RHoNp&06)iDA^m{``iZ+xXt)P3F(3+_`D#XHcx<{@?xY#v4 zqdU#&PO_BVTnP;gv0z9KwlH8CcxKlE5*2{fitA#cFR2zq>2qR&nWs1xUmK$;X-eRT z>d@7)aj#G%hRu$@On^KQ8lV3tBst80<{mV<(N6@Uyb)U(_TxaXHq(FxSn0d8wzvX< ztseu%_##gRJSYXr;di?AUv_$r1#uunfLYq|WCYBC7d{hKjW&4-WN37`iBn)sr0;XU z2YO;0QgI|1iy0U{lQ(3IRMy0$@h!4?@0jQ4An|<#k5Ocl-h@mf_+Xq)v|K?INtaDH zZpwCkWg0$+RlmJv$Vi>37{I-P1rZOCCQj-ErUoa86gD`5NRBg$jUy4itZ23X4dDdK zVIKSIh$E8hJx|X}_}~xk9aA+%=^75$CNs9df-?_B7$6vN-4}80Oqj&wOto3ZZ^dX~ zSlb_Lh;zdljkvA}-#R=$;dmqUBO(R7`x~@v`VxH`8-^)V3 zefNfH%RBm>n6aG`x^WZ!>04?P1PQvZ)%vo14-6Z02^my2YsO4#I*A-@9-87-IQyH* z1L@x?)kqpaD*Iu7tAqlt`(iTO_S1*;z)S+y4k17W-1P}^B%tvPGAw||l$0q||&U(R5j5j(*!s#cd_Rw#GQi@;KV`{^*4r~iG7j@W(I)rIs1&&x2n0} zV5L=s^q|x_$#01G$lww_cq=eYzhr$cPqoVJW3K@pBRG10Kv-NzJF?VDRF-f*I^<0Z zjI7`)qEC*_{2X#p?nXI2XB3G5Qrg&DjD!h0d(1qYL-ugE&UZ@{L(AU6qq2c_kuO_x@F_rcP9& z`t)yHH-%q?${Z+cON3L_HA6-RJecAF;BUlh=e)_#sE)y?FqbA6MUI=AB=Di!9@iQA zNUf=DfV&^nvi9WJPs6jVB&VTlEz1uGXg+;c(|B*N;SjL^G{Tsa)qO!APlw63!Z!L+ zcK4YqeE~e3`rDcq@YJTl6bkP8y4^iSj8kFZc}Sv!-zwc~4O3w@tQdZ2N_~(rjhyYQgZf^#B$yu{WfS^lxVzKOy&qtbB# z#o3j!-7-Ff3L`PeSy9faj@0s^4Y}k`y0D+pML8sU0^d^j8T;J4uD>o;{>!88UGeDP z-@vZCXU+aF`IEEirfcZyY~#wmOv>pUbryyHX)-kVw@F^a-zGcl{{Kw!D%f;Sw;ym; z0YN4)i>==HZL?d6hzoGB@daWsKAKZI5`w-c*N3m}?<}7jg14^GFhO2RB{yQpU~B8j zFo(`F9JF{1;*H&!T~&VAH2UcD-~qJ$rosmy(W^6qHmf(mrw0cKhv2eIJB0=R|XJETgpGpWy+IZ!?rH$ve)aMX4x4<3c%msr&+n5w9q zHMkS00V!yk;Q`JpgTXR_cm!{#e2g&ju>(Iv1A=RhFGkZ z(!x)AEGel?UxDCPn)Bxn?x9{dEIsa}n1-~c?io|Crix4LpyZvDgOYaw2RjmA+Y0s1 zW}*gi0>JK&HD^C7AIz_O07_o)13VIIfsZw5(F{sFVdSo zsc;rl0f?X^Ku%1jP2(V@66I0QUSZ;4HBQ%fX^#kZAE|tNdX^kcUO&|0vN!r-bj4(` zx_o#Dqqbc_d0+|FN_DU(MS*rDQ5VT`_0of*bZmEeWz+e>*(WR_^_!?`y2h<4W9oT~ zz(?;0xeJs7{|D&ZvSSDGxe#`d05LJ-;fm0ZYup-Q>;*-A7yaeaZH?XA;D@Gfj2+Qu z&(A&ENj*CMU8?CEuV1RT991nN&nqG_qJQPj0k+KGxR|~B^2PVu&Ue-#EL)|K&Sq_( z(|G|}g{Ce*>{{0L6I=)e!Ml`Pv!N6PRdUn2V8tc}-acyB&)oaxGIP2SPy+*TErb## z*`fI8=79lHD8Ld5uq?IXpO5AClCwl@Kv$-Gjm?@#DY<7Eu1b89jgbc>BNEV8=q+8P zVRFR$vWjxLb!dZPCBbsV!ufdaJ)J5JkEFV$K&dcdl*%9QSqr8WISUe0!XMDocaA;6 zYmzw}UBn&_V1=+B(2B3uMlqN1a@ljbHUMKuiv))y;yGm@!qc2)z3MawnDQZZ*Cyy@AL385P-#sB4b2fuK5QNd@5YIH#-AK z%3~|ApXqN;%X21Wp+!ERtDhfx_0~jVvby#@{TBR;Mt!r!=L`}Y_#eT6Ic3lye+usX zE%^Mm;A(5l*`9V!M9&Bm4!Sh<-A{R23900EeqI8(Ou9$Exh z4GQ}iug3kQ!`tAz>p@HjS|p0wVp*-IflU-z#J6)ZiLQoc3e>8G2>ijPY{Zfaa$Q%p zWqEX6u+|UQi}rC_|1wBay0s{_dE^E1Gdzy~tk&+GE(#<8NmBr&#I$3>xR>SJC-e## z=D5|F{{AQSwfeclm${&eIoGA<;iABtp??+gf6a|s!Gp<=4(-?u3Mjw10N2hfP(|6H zMF5`nm!P9C^y&}!xTiZ>{vn+gxoLfd>;w$cd&mng0@_>e21NK^g-O_}^hd>l^cN$| z=^Vq-Ff%^u2U^5cv5J;RY8W8kDWR6?<=u(TR z9fglUYGB&}9l$EV_dg%a%qVC;lqz>?z>BSo-W^K_Uv~Ml0O9Qdx1f62rbejH6iGWG zN!Ofy^_a7;lj3c_AhoQku$lv|$VoTE{W*)#V=CmKc?|{Yzk&_-4r^c% zo?#N=3irlr@%COY_c<=s6OJE1f%RVCOsP45zW5Iyi#x1&cwfWD@DxoL_BiUB)AwBL z1SCN7q6o_;Yk7= zzuP*d?!P&e)M4RDIOiO-T9=Kk|-IEy- z-i;)7Z}4Hq1M}oH>408T=I348h z?)}R(4k{tFKLmbv2hiOU5-ZXuP8LyH5LPB3DOsA5DbJzk^sKEjVN|V%TP~%@eIpmU zoc?{)mY7_z*ZG&CNo5s$Kj-v3`sf$s^GHP}uFYs*8Wx%F$y%!`FIRL|*??{P`f!7= zS2JRT5le6n+v+3(t^!z;^22!^j8}<5$@i}oS?AxPypAFDj}m+LO{8m>c!nVHQXTDs zem2|Xy;33FI-#rXnupK)r%sFg^oNQA^8L7RXQN@$c z)Py+$e5jm&(xe8hm&v2~%8e@F$yO6%f#GKl9n7tR6N;5l+B&e>%O18&jJNoB7H^U! z<`_S@O4js^4VV|l$M9KM>)5j@1BS+)XMET#0i0$EVRrTGEMKB6e@QJ>>QQM@Pme{s z*m+hWZ5*U%zhh?@zo{OR7ez@*-hZ66fN9bx!?n`}W5C2q)=rzMw8gq)ck5(YRjzfe zlqYoyPj*d8j()xvvB*Iku`Q6Tlqc^zNXp2-U`{6)lKu5f^4#X@nj|O zvNaj`s_|$jo1Kg;AaSMru0xEoj@?W%<@hlr&0n9EVcgYi3W?vO$guGvnRjjZdn(Oh zHioOt9^|D&vIrbFxR%5pjw{=Bb7$JDDtsnoYVPbw+S-C`-IXt%I+ZUcp*1!&~NIpFVwMG8- zib9Au_}m7ky}(p~GTZz?tg=#|()KiF4V=J>?FkL@Z;W0#I*>5bn#GA+-?VjD?=tz? zIbcAHiOJAcgHg_k{KuN%$>Fv2KP0Jzu_KK_zSoRT+2u3Kk9X=v3vl zlmVt~Z(aJ1q0?d4`i{L)7qNH2JvZQcG{} z5(IWL4e910tb9!;IJl+>@s1}zZ!Rtuw2 zf1X+$juCJ=IS6P{ELHw~#Dt8!<+}k#e+@~`x!GO;P$rAQ^CPc2Yj7)#YtKVcr?pj} zE)`W4!!6xD=bmPr|%)4M_2y=tNy7=R&g`8Zz+eF zFr3=GNg`wo**sS~50yd;IuIdU6q@CnIy1`&B!XTY&lB8I1o}$zI2eH{TKKy%_{M%v zt~g7sIARvTBMdf#jVodAa=a#w*LH)Zb;f0Z1a89 z0zCEyx15qZ2%lpyqFFnfNn3*1M%(q_OnxbBjXzWGv+wagyd|XmD{!3idk;7`r6B z?J&0DsTn)_5K_}L)!k&F=LH9Iquz5+?34R6*(=^^KdwqYMUzkm{m}aM2G)u7tp{u; zT0Bqm#$x1$!BGYoJOLVaDJDUw9j-Mh(FACEnzmP+)$vh&&5-4{HV3FCB~DUyaf z=IBrqvVwjax9BH7SkNel7l%ZRbhmY3C7519tkeMkss06o{ToQ{-#~W1f#&=sI)O5I zua*mNbW!VN=8=N7xN(0V2v&gR7DpCaOghkaKXO&tW%x8{g!8PpU@SPgxd^PJTZE=i ztRoRcU6H~+d|*ija1b@P7qEKk<3(fPduVr1K-!298B7PQVaJP)N{?`=`U8R~3q@t} z6bo~kHA;m*ap)zFWPds^Mx~ibdTGLQ=7^Y)0cB!PuSEGNywi)AxiSpv!>w3xJcJJk zB^k6hf-5<6Q~184cTz`&eqV8HPId2V0J%H@-kg@w7P%b!R1eGO6zr0Y+f9f? zz{p0&eWx%Wh78AdFVb%Bg)1uN4AQF;jy}-0fKKs?=J;cb#LA2Wp8&tmiN1?#<8U5E z3A=ywd-d?_dh%^sui`$w+eCWfzCW;U1120%$hZPHrP_c6U4*47=VA zruR=X-X6~09$$~$+h1~~$JY%mpKeauYidx>&T?)+NBcKASA_(bjBwh!J1dEsGu97g zUje8YsqPs{Ihv^B?nXST!|qeYyu8odizf#k+g7QD4kB;PBG+Ha+ES5?Y*->guiji? zf@Cl6tbMI^Z)3P?#$BB*XDy!UmuUR#MQFO0fS%qj+*Vhvbwz=V6Q1RTghZu7X?hagt6C$Y(Cn4m(AB}kJ-=$?%eB|ti}x(k!vZz-j=WoV z@r~i*EFSh`fGZywopayh<8<3Ypyu&vH-HCFv$&vXUG>uX>SV>B10%V@AFXmb<7Uls zwQY5gE}xqkdIo&%*s#SV$w?IW;PuQbwfExpwzzIkFDPVB+_zscxOxRlCFUbseXSQF z5+LR$5qxuf7TBn~Yj3aFWO75Tn6DXqp{nYx#E=k~SZJU3b+Tw%IE)XG3sri|osb6nc*#GSOSaEnw(;ihPK>(;YW+Fnxk|#lVeQQ|X zZYvm*7h=NwS?$YH*~CrNc)&`43mB%d9;UFil$?uEnw$Dkngy>Spf>1sn-NN(+F;kJ zmYuUM8gpjJ1GoFMjGTK9bPFQs%31FT0X6;D0yW`*nmBH6M7*^LU%MW*WstbKt8b^r zS8nWN>N2x$)7p)2RtFDHc5Z$$??dwxAEiH>-#Sja&q@Slyw+~otKRCFjyuBHO0m=^ zMXpzgeV!@AxD2`^PceJsrFI>3;nHG`q3se?M`RzMx3C!mfvP)DtFE40JEAqW@XTEJe?3A(9veh>Or z^zT6)lXl>Q#ihSd8h^w8f%5kOe@FS>Rp4>8Ks$WNUxDD2pRorggt2M?LkS87fpPsq z>tB*qAdZ;O0ia>-PLF&8Gzb4{N0i&E%b2H-eX@N$>gO8S#11f^&zv8V2vf`W4dn1K6PD)mG`(@k4)V2e z!-LcCovgoJAR(J~MeKCN-Koc z-{$jnX!HHZ=9a5!c$WvU#C;qU_x0Z60q(@f`{&DARu{HlR{O@&Pv&aa=617)>}q19 zoi-8I-D70psJYGMeM3bdRY&|npi$s*bLXoTp{K7sv!wpr~@#0;_o8^0V7-c4$lZB;dCY+sR=6yUT zfne-b-uvqlR09Rn!Skaf*oaaNtaG5x5?P%0g&AJ3IVnp(qY;W#4$gObu0n(8IJYM# zs}ew5aX^U{vXT;opb(jdp{$i9>G2Bkvc@SY$ChCE=PMbC%=f;b4VJ>0&b2OrJi-yP zgugrpXCdZmV9IOIOM#mK{Oly9Yc@6&q{Lc59+l_=yIny`XJ}!aVvjX&JHFqewcy^q zez=l^9)QbMr|`%}?@jEY@URsQoDcadwk;|B3GbV@r!Mk-nKZ4^6Uu)0gYv>xJR7MO z35e=J33e3hfHbw3vhkAJP$ad92jzt5a)b^E$8$}Q8DWK9^$X5WEQOo8;`V;m`71@Y zof8q^!`zJLmtFoWPa~z?uH8hz*SZm8SEps4hv(;5DdCKL;Fa#n?Cx0obEAkMH=%qv z^KS5Ti z!ABm(U(FLm|BtY@0E%ndx`lCfcXxLW?$WrsyF-EncXxMpcXuba1$QTS0zqEqoO|#4 z&i&tee|51bs+uv!7;EpLKnvx&K%os4rcB!swnJ$PZk6&(>$L><$t4! zhy=Gk!Z=T$?t_so!zjB=#n!2^LO*)Q1_^z(YG1*{x7fK?-N-i#8WULTQfeCdu}E-V z_GR*2wx_u3AT_r)*%jxTY2W>~)i0jj48FTa9=L0b45`XYJi&zAg!E*bLj3*=cz^CGf}N^Q}e(pay~sry7&{0yP=3E7eJakf`2- zy@xRtWXCQVLpDARUA`iv_vvVk%}O#RkJBDMF4j^qqGt4Otqj?XK)>+N1(Y463@+X_ z*EsX8sRgDwl$go~0r!D5t+_)9T^=zm$JXLXW;oHBkscYIIgsvpnb9wwlTept8ou04 z<=2ZW-?3%%!g0m<5uq)xchP?Gp4Ob*5nJbVbLbJo8NB~)-pg#+WXuEm?A}-~H(Y(4edVPM=`&IQ>C2^`Qr2cMW8u2w`p4S-oB%{&~{rU5^Gg$Ad?8!r8BzHKV@N zreqhFLUEbXflPC%>)WHwvXK{8o$<$;FW~Z&S1E}#$7NTI5LH(PiN^;qoasyu#s#yha+RVw2u z{$|17VsmcDx7<9zyi@@_xg%WnZhBk4l^nIre0GKgyML!j7^tjZc#Tc`rNf7bRNL388G>?hot^mdv0|SS4-6-(GWHTD5T(x>WXA$rl7jJb zFfMXf#gcxvUwUfy#A8);&()L-VVS*57`b?LHO8J-OhQOBYyP}b(8eFMmpk%SsS5a7 zlcgGRd7OJYaZO~U5?k01)m(fCeZR>jn-LsOK zFH@am_ChBB(^HzwJP$@{)ZWo-vQvvQWlHGe#7lMBcN(jh?n+vcjak{RJBJ~&?To2x z-S^0g`z-PH=6l&$LbH{=Oj>Cfvc%P-H%As#L*a%c0LhQ3+uJO^a|MD9G_+>(*arwkS z4&Er^=gV~;*HRYS$oo=ZSVx(?u6+)E0bQhQ@-^%VlD?+4JmJ!|L$4J1JYf7ul8h(2pl1Mmk>C_PV4Y?Q%9AOX=S* zM)6&<`xqoSC5FJxynk#cYy%1)k9*K>c3V41J&^??avHdGQICkCf& zU#xP8#88ytWa~fB$_leux?0WWHpCMNSKT?jyt}C-fBaCh^T#SD`v*h}9 zmEL=!sP7u_M3-fui{*zdmy_e}wvw0zehWqy_*6ONCcaUxt+W(x8;LKa1^FqB({3??1--sH}PG@ zZHiJ&z8K-Q1bc%cw8n_EbH5!g`(lKUQ`LQTmD=0Z;sbJvq2Ap#V~_j1(1Sa&?IvLQ z18OxN@UfXS(f`u|pxsyA#hraM)Dz$>hNNx3^q16BC&#~}{w!VX=8GPZ;V{0lVg7<~ z9aAzSyt^F@v6*GZwFv0szINJI0Dp3Da##9&vh6WoC;0RKpB;cB>OSwwrVD2~Hx@E@ zfcF7>JNG)Aa*mrL*=ioLY$5lmLZRQaf;VF!3qpG3b!%1)s4J4! zL^NdZ);^dh9-+=9t*A7oCSo%lqPAV2rr%}E>p?frMmNatNwp&6&By=7rqFXb$ltWU zKSaRdhSYpj0*b>3F1D;&CEuU(xI)wDnC5MJZv=Z(ss8{b#p!!ukxwraA$L5dCiBkS(LPe@*15ISZ(Nnv*zmC<U8GFV4n`?>DLBjNBte}7s5iB1hDIImGJm74Xk#psydt1)M`6>#nN^}tTS+8{_ zxOYl*WKh?3P&Y|Yrj~rqV~BR90$bn1R>R9S9X#|~Kx+>tNRhcwxtDFq`gYScouvKgqQ>zdUE7DQ7J==%3`Zcvy_yM2tMk86Y20v2Uq zG!0fi`${9~a^lpD;nPR5!T9UZkV76XK{b))2&wg^@wtlcX~8;dp>`Ce6m7v%lA3M- z=Y#!z;Uwg7jbzG5?3sAw?b_}5+RK%$$mt^~M%)<@$#w9c^u5T-4-;BlVFvH%wZiOv z{Vugqkz5nddO{HVeyW|pk`$lZbHJH<@^TKzl_j&7JGEFPe?zyUJ`_Y6(o)$Zqfh*^ z{m;iMS{4<$$1GK2@hZDD04M>>J0rjtLum*h^a1&d*sXuGrC5~|1VoITWf)^|4)K7d zb8T|9W`^hrzyboZBKfJ<|^&>>xDm9tJ}v7il2|fk7#ON;Yl~nphZ`jA8zK z)`okkAMXzy{sg6g6!d~FIzCg!v zS7#4{>ShLa9|CikF_=EU_{ReVU$Z$-@6|*=2n-0qOh1aM;t)@^cv4hNwb%Jk>}P6m z5D1$B-WV4gdf{!0a1fF<;=@ic2=Z-|0T@y+bTJ46maJJh8;v+P-#~FX)_|1~vM1tPuaO6>{p0eT&9K2=~pakLzB-@9L$(xDBL9N9!_}w%|})Y z!i36=NmmC_^1TI-G%!})xECehlPV5-dkAhcO29}Q0-w3bzt^?hqkg>)V;jt_^L#7}}loXkp!K%dl2`u!w4Ni+y@90E!w@M9=o$UkoYmH3?= z>G#;kP}=OqjP79Aed>mHlcEbBM|U$vZ#zd%xAbIKh#XA${qBun03Y!W!whnKOf(kt z*XSkM@iwxEMf?;s#*Va(XOg!uz2nBQXv_imH9DO$G0~WkoQay_;XH$<1GnSZ zy4Qg!?u9C1=%#`0VwV!AK7)zuX^lEFC6g-6M(U%jDV<oJ(Z#XN%bCsKv7OE_;!a}%2}*c_CmJ8$doNT2zwbk_>8p8f z(#QsVtOg$fM9>F`CTf5qD9V;I`i!LYyA%XjyI-?q19p2QR`_cfwbhg(&e1 z&2+RZG7YVw3mg|oU?eq9XykVE+)JVA@`f({7Ph+6yZQro1=DHYG)nC~W~~C5E)qQr zcfVK5A=T~R)cN5lT8Kn2T&X)Ksbuvg@@6m^PUH`V)|n|zUZl0a)Dau_ksI{ACR_O= zSQ}?p`xdZ<_F~fEoyb`aT{sT@Cralk@#r2!W-^1vdeP0x%!P!<+ZdausKH0cIZC&0 zQuq6q6vdO?(!aQK-bcUR5fEs$dtxs9O z{Q?9Hw3`Lp(R0&OC>Ty;t9?bn3}QRtQ@fnN1Wj%JzvwwfI)XPC_@^F6KU_KTR>X@7 z3Z2u(d-K~O>Fu<~{k=nY-sho4L|R2nn=dNgKJSVQ22nhcbliH232MvHfDXcgRBG2K zgV&&jpOEE4930|+X&sw3C<-KENYH1)J6vwLBV9)ifg-0VrzWHk|2nJ2QumT}^rPG;` zMtiVcY7c@7?jhT_`J3L}2#!&lEUYL?6Lu-eG)ek;$E!PtN>04fLoA0lyX!DzxWyv~ zct)rd6b24urgN{3q&5jwq4pD7xCP1#N#>(#2)3#Jr^;d2`Duf6QH~%hi<7%mP-%D3 z!Fm1#l$mMNG?L6^a0D~FLR=-IWUEn4!}WsdI)r%!Z(MQqKNv3^gHf#gM3{{sRu;_i zq?sZdO|H)uAjN#7d#8lf;TFf?aws$Bpipdx^9VF7vK$BWiq}f1)L~XY5ruzY{7b~S zuo%Z55kOY|ZxJ!W;!Scr27e1+&4-;wpzkKK*eGHTE|)`myZ_KyYL25+qzUxluRx3{T%p{y(9CNpOlN9zohk9CKZ@!V*@ z*uuTyS;(}Z;N?@s(7?I#a%5gPqQx*iqnNRZOG9V_H(^+{r4!zE5T^HfrLr1^;oXLq z*fp=PFanqiu?|U<=S$sg8zC{R_vPxc*T?&I%*+?@mQV3uc}H}Reupi|?z zPVnwLieH^n!&SWo_U(u%uqoP5^8=3Q*a)tDTkR-B+(CmSPaRG}oiSL!4O-C*V&aMc zo>lN2$F$56n3_u4gCV8L+oG5?n~nP@N(SGaL_9@2@j>xu>c|%Nt}Uk|(UP%+t%C0) zod;3Y*N5+aG*Xqf%y5RM*;Xb4!J3vB6+mVZj0C%1Km%jVvxs40OSG3r_29Wk2Ke`BO4 z0zEpiBTmLn{-ffKj*akd6`r8M76x|VLo#Zw?{}|CpH=>)LpA>dsN>!B-#XqWHXGT< z{vRaV3$?TTMjl_3QdJDT{$&Mv`X4KvRQ?U|R1UNP{r_RbsPSRQ$RX58SYy(ijSq$A zA=a(arYu9S~i8-?n~W7*4Ohaqct#xTKHO z6Rr4i@dO+}ZEOI>Z=SojwX#8W%4Yq;D5my!XP;F*@Y!Z0t zY$6bI37kx{DJBRJ9*US#36NyyD8Ni^yg-Xtix(*lkS>DMdc$#VGRI3c^2}i^o#tY}v@n4Qp=GLuNriBiy zFyK2yvBjYa;KWqxWL)78`VUuS%dvv$Ch!I*6GWL9V&_^@X-HCSml!Y!pcqsgx|Q%0 z(S|^c&-&G<_-ua^HG@oLyh*a;1TX}xNDE~f4!h&CRlI>=0+uS=iZM|@9X1)}cv^F|MGmAGaEF;06WUpBbgO^o} zjam#5n1RKMQF^O9#P=7Hh$OebM3(pEqDz}V37JtS8^;Dv;mM#|9*`hCQ>P<}D<6eRv3lbw5Y~ARM9aAl^DRf^tLYz^O=R zN99MpRLS_$S=@+8VqzZSlouwbu|``SWXygVu*;A9Gk?)(tcp#jN<@0mS_(tKWhs+CFZ|iQvSvF0P+v=R#)VmD}vg*bR`ddNKyD(D70`W}`=2!cvdd>G0%5plt1C?&I zW=|2c$z=f?OK6uXX+|5DXyrr5`9oq$N5r!8Ly?$I+-o8G#T&}H!VXvt6v`U?8HG{C zSaW#No12EkH|-(VC>Y$Mwzcp3wEksZZ>EtyZe2h%3FXG!H4vv{!LHFS^HMPM=0QM7 z@QH=wROskW*bzcoMwf1>O{*d>IowbRUUmKB^_n6Yn&6pN=F6UT3E43>Pgzwp=58p^{+_ z`8`d>jDD_LZ(GM0ywKX_89{jPOk6_;oif`4Ekt>I%P`)FWKS=2+i8pd4JjTBw(Q5Q z^B@VruV;TqwAfFc12U8Z4s1-!dpGxA!R#BJ|B9I~u~jgAhy)9b2Jl=M2QD-yX&*Mh zOykGt>E=4s@Ra{34TS?LrBDMZ1t#U#F6rg4;+GHN%K4{U67jpDLNplj{NlS1N|DG1_B%Ya;=roK7Bg>NwMY88s7#Wp-7K=W@ z%8xUA&iuzICNal$Qy_imfZ#>f8}TBR*tJ}?BxEg;y){*-D7C>os)IW;B%vKmXbbqF zHGJ5xqPq++?PmluB#P`iGul6e-1Vr*@_rl&mpzzfrWAOo{I3~$JYX|ZM}w$bB$@DG zvmg}N05wf^<-v%-wYaj)H%Opa-^@=Dzf6V|FK84HY^u0rtpXdC^{==f z=`(RACzJ%S1UwiOj-?rkS2SE(i@bNIyfXq+K4vXQBJe6+Vfl!-Gh%bWn=16?;%*H` z++c4-^qlRQ=6aqZGDVQeMO#PI8D$C#)-6$)2MHPTJ+(4k*nApV?qpg{2uNAR_hKEwq`QDDb^u{KLeZcz!oUG}D^;Jj_ea z3#8#f{&}SDMi3pDP$DcQmLZhVAW^@-_mR_^KF?_X;Z_e?7A{2cZp0^v>IYIXM=T0I z(?qqrq!C`$x_#G`j++t{J+vIS_mTTK z_mM58nSp@qYrfCcEgMZiNN4L^L)J$;Lmu(GTYzj*#neM9%~&^FtS*0#>@4%3A-@pq zR>Sv(S;SI{ly=I*Z+wO=83>$LRHcazUUuaj36T9(By7RtR8R!AgiVpGvqZmdnmzOu z;&oDQ%*P+<2qo;Tnvmf@K{0T?tH9eJ?y)?%DCY|Y3PP3zsDlob8`k%;*x*QN_x*ZM z*{&ZI66}lr;?B5BGo;))to*b;!D6IY9a@E;iCf#q;8eX8MmQVu^~pQUDHZo%&DwJP zQR+512Lj^SWp?w3s~#k*Lk=7^Z9O+Y%`KA%6Kp42dzUF z?Lro(Rh6*+MQ1%?YmG2=?T3$Nbq)@|H7w^?`BGtw-It}``nq;;6AEjW)fI zd?dhCrr;jGEF*uM_m31rzr|@~NTmM&>}m>o*AdiEcZ-L*|dHjF@&-XX8v2Z%NS^Lda&$cU*4I7 zi&^MPEhuyZr_8PkjBNZWEV6nzhRSG>0=L@|!;Q<~6QvtgZ{HZ3Y9d%lLKG#ZoG< zkDoipxLtHi;qn9NhIH269*7rzd?Vstfg=ErF3mAZKGpjVVh9A5_&_a4a~7&M9tE4( zdrTFLP-}~{Oxh!GapzRVG01t)BGnj+Swih-?(EG%;}&JGTgzV&!gaGY6ZX$6#f)T% zTEBjO+7kj89Q_tYreN}h@uA6lKky-eEAj1-r)B>6dgS7K$Hekc<75A-fgzD_K4~K1 z9NgHCqn0=r@<~+&?y=XUM)j0}>`IP?l59qd{wzZSZ4@vKpoVG*cGM7K4A3#j)7hWy zc}~xn$M%Y_Mq=1O(#BaB6!a6^EHqhwI?m4+7pcur{H6mE?yyXeK7E2Z%f4QeH4U7k zB{$S5gtsG`OP!Y%!P>Zom)Jp>*Baba32;cVI{CB!CG18| zJx`MkaS0*L5NaOef;QT88~x@GWv&wc+p<$0FM>KHo zOj8EHrF^*5bcL*#C!;4kQ34Og1=$bsytpGt;e>+Yt0Ms}WYyVD%(72Px-``K$^glE zk3+1TwpyBS$fHA-?`lWIEX5&T-+kI8j*1bdMR*f}^!Op6|5$NE@j%YKTOnW-=fZ{z zoZ~;F$tGcAB$ZTD8sy3I%d25x@|_Bt@dCo}8ER3(X;9ek0)RJRfQS1z7_U-P9%X{2 zkh|BeQtXWdLLyaQjF#AS0jU@yt3Hc(0pxOeyo^hF5H>FXg~=Q4$%LF0y&Sa3CKQ8&1k#jQUP*uim%h=V!yv zQ*TBkep%@Y}y=0slv@GQ~d-7`qOENE2%bQWeqypI#t!+vT)Bl#x_tdu06Ge_e8 zamED=x&XW0wV)9v6>(CAVA_(s)n(9&f`;0jmRhLh^KZP4L#K#N@kE7exQJj4vVbWY znF>|YHSv@#J~xD0;nD|a-X9CE*CdxR1k^~w}#`hZ;ZTAV4}uOzgJucf`DnA2$0dJ9XXh8KCzLtzuk|9fGhZM_Yvxn2N;& z!FXk=&Wob@_e)<=M4l7n&n?Wv8=$yfOR1xs8UPM)ovZ@r!G)K`gs|#TFCR`n<6Wyd~u$pe{P?D2L5) zEvUi(2}w3>?7|4)Z#3u=)_b@vhYwV)_~W$W6^Y96s)UD2afMF9Jq2sRfFf-Hgmo~a z`@aZy?lv7Jlfer7ivZOT6fY+3gfmBuH<*N?JVjZE<#@tk)`A#G8A+L}qzJ%0`0>C= zB~d1t#&yvrhh95t)MZ6!OBvOR`KleE7LSx5N8Ck2S`mm#I8;6Oeyt69P9 zp9Nwv=GMerbb#Z;+ap7dTZJNPF6OjfeQnF-1<&>F)`3>TFS;h`~7Q| zS2bx#nA}oFIXqKlUwnL2BUR@0<~M2tvMZOj?zHLoc@Xy00{&NGW6(faGgsRt*)(@L*pmhkA*PBY3rnT2I%C&E&kxKgq84B*%DXY0I!%6|5gk* zD@m5g>Boo14&;6c;g+SItIy$uN_rMBv7Cqc!qJXiV;=YCo5BL@h_4MPy$drWe^p4D znAiJBIR()`qpGKRlg$$_*3r9bJ0n6Y`st7DeO-~sTt@A)6 zGZg5d#92!%*AXbJirWMjEi?W70*0t!X#ofLQ=k1Nmx^VE>Tv^pi|#kH#d;!{~pg!wvkSP7LLLtFuD@s^fv_@qatV{12Gf z;frg6TiM@04p_L*_v_IL9sef9#&CD%mz4AR@n3!Sii9K$`+!}lPGJ8>mnv6tH#chs z%fI$nwPn4>j*dh&bp;F`F9Fv5s ztC)9lzZ>?Dwm$+s|G;cGn7+6g+KqPksiIkjby9qSkeo`16NEjSp%@=2==2&?w7Q0k z(?#Fl9CBZ$1X{*BiTRd`8_Gs%{VSdOI<9u;* zzN>`nLu>q?%|y2W zyIi?5rGyOx-^m9!0E34Vi4YTR&Tz2ILE1jva1phMXUlgOY%z(K=Vnmc+!d#tq0()U%?jXJ_`h5>7gx2?BQRw*Wu8^YxrUl zKEIH0cZ5E>S@M0U4#8BeH1}zMJrR@S*2U*zk21vUt(uW)h~Q(esV^VNL{{lEQSRb@ zXdIu4eJC~Hx-xG_8|k@Rm}2tQ-Zzg(vUh&vti80%7V~qvYcZ3*E_kUL^Fwi;+Enng}VFpu>8obDAWCGs624yDu9+1W9{X3?1 zD7(??qJS***W1l#dq#xc(f&5DPT_YC&irz6RLB^m926zLCudgj1WYZlMz!2L!-~Sn zB#A~u&>&@g!L^B8^Q`x)%o{l4L2UWI^jWR$fc|rP<*Ck*DhRLzRV(o4PY2b%deVI{ zH&Oi`7ktdzfXxsK0?3?q@8Dsg>Va7_t7sw{4q;caNGq}v0VQh-a5L1*%TIP~E}X6h zD$+C3ifuo<8KzyCfxkPycUr{Wt^Fuk89m5WITmFQ3g})9y@iMg)#TbxO*oyOMZ~%2^An}vTs&# z?q*mSKTXEf?g3!+oN{tl2QP3LGx#c5#Y}D7hB!X^OCjX6_oKTzBO*eVkYd@spKRFQ zLH^UR-@N&*rofh)zu`bY(Ejb11+c@cnz4!9Uwt>XQU@Hqvk;8__!>!*mMv?S)PjLZ zHyYYJg@o@7f=*D6wUKZo+_CWc8^2u~%T>Kh*Moh$*A@LV1!y1)uA7)NI4SSP?6b+o z!yBPa+ZTpLDseix_8Ix z9XVB0@IKzv?wfA*l5UP`x~R<4u)D9-@avX@miF=`;J19$(E=^vtmaI z7b!X&ZsZ@Dc3rFw;K)flcyZBLky>zM)=*?yDWjNH2HnbL8OfwoF`P!mMrW3Tu2m0w zqnm5n`wV$CUE!!1xK!4l9}vQO7NqMiT8f~W$5vR~W@giaj&T3h9sg_)z~=!fa4%+Y zsD1-hw)^<~62{%D2eGcULXTUZedwYzQqv2TJ|-Zi0u=v*6wdtbBYz zSEJkgs9(=K+aY)4>}+piaR~Y1_P%V4+3-Udo9k&Y(b|KX4!e^XeIake40$MiJHgo9 zbP!Q^4rJ9l2KEC2WT(XC+SN)aB3heRT(h{Y9gQ-{8AUJRm2PAoF>**j(1|PLB{m(K44x>zv2F^&zOQV}!)(AHV3fFDfq}Tb6D1J$ z?%FUAw7_n(4CN$A(`O=U@_45_tNxlU>z2b=3oEvtcq8;;5e^#!gK#0G{;t9M+9b;= zB}1NoAU75)Nd1FwwdZoV5MZGuIS|UOJ zjPdAOwICxC4>rO9ndmkZ7BSmj4CWJR-Ao^h6oYCHoe>1=PzR>=dy;>(c@< zp47kN_j1{0*r(@@A~SqZm-lwNzkcB;_;DXbEzyn$6(+L@;vF8ue+qJ`q)2DjOo`V> zSpbf`PvJI1?0PB&$rSh)Ts3elPZ}WMkF-GOls93b8{W?9Sx(z>(HJ2;mKxfA0ON!0Knq(4_Z8}}~I#*EaG^Eg6CuY_u zs?rWimWl1qAK`D%pfN`-Gj30_DJt=~Yy7VAzxN7gLrE-Bx0Yvxu2} zLPeQadcSu_{6_o&g;~LZINjH=8QST4|w{VC6}@S88m?`+j(5T!L1k z=+=?efMTvavOFjZ-CZ>)g8gNe!i{H zW@F>Vvfmq`!kty_w5~T{^GjTN!#k2}0khuUJr((XSX-8tF;>e~{V?-djlA}|@7kJo zpVf8Sz&95CJd&Khq37tYmpOViwO%xDC2$zUTo^##XY)NdS}THp9R~?aa)er|y^9H< zSRRwUWhmXYakz*iUvE2)@hhES`9tUF8%Am>5;o_q!>U~Q-w-%MNRHV)QY%Z+nrujY?=vclLxx$U*wjUJK z+Ol2F#b7j)Zy$3=DCPSI)APRdX9sM86QJu42;Ru)N56S@|64pX`= zH!_qB_Z)B*3iMX+68CduKECuRaBcVZezSmzSvGa%n`5w4-ye?Uu6v@=VA$W_0Q7y^ z;%@8F;YW(z1NnFJPLq;Vjrv!F-bH)3NhL%?oa0_6?@6IspCURT=x+jgVX5c3m$sHv1gIc7xnVh zA)m%h^P?E5`&Uz8>ozSAAtRN<=xEn0ZQDfs{6S`;G50IpW%xRSO566!Wn)W#77=1|g0T>I+jX6p!&$ z4P)*WWk_8+T$Y(j@bdb9=@OhgTJ8brp$6(A`iHK+yTkrR-CwO?V`dwG`8f*IZjT~q zvsIb{A_D@33{iT^mcEdDmX6NHsQxlS9?F?s&)~oxcTzZ$`t=o zrw3=QbIUb9hZK@l=Vp3ImUGbJm+PWW12!FIR<{x2B4oH7EM<;06O1Sf>ggn@Q^CAi zOs2W+jn^iYb6K753(tL|UDT=slH~WscEvbEu-gsJncYEzowokt%yi9NXr?@2kLe8@ zkpsuLYtpkQ?-~l~@)cbgLT{^YVE-J@mM(dPJ)mF{pm3aj2>&DbulDwTjcQJOgF_Gt zhQycN!Mptl)_e#njBsfXTH9q=eL@d^N;~om@tDeYZv{S1)3GnLZr98F1VTr_4o1~; zbky@y6fkO4`~{)e-F=)Kl`rUS-u;{j!(2`A^aj2^GyXAbxVab1B0e6+UysC3MXPPUE zUbrsIv8`X9%B5>?*zfCW=P4?;F!nj4k~9Neu6#naYY!u8wnxH0kh&u;C?1S{32d`^ zb2OGsLjSr?CHwVXtF-vJun1dVO(p`E-Ti0H;oxp>V(tR0%KXXhX0)~(_IYr6cFKek zB=uS%k~knZnhS+B^kXE+Tkb)qaO%(V##vc5ujQ^xXXvYQgvuk?<hW2f)-A~y1WA8m~_BZOr z0wfw;T^WrQ-*@WUweQjy(RTbX+~I={sryOOo>NXA~ovD=eA*r;8 zI5d^!FGp82>XiqaRhJ7`$<_OuIK#7xT*&U_%IUhf0cTGxjQ?M?oQ63Qt z*syu81Ma}JqP#yl%o>MN`OPrOCRJlxaS=>EB67;Zw8D8-Rl`ZlNGwqRK0=R-lnM3h zop5DJ->zC(ZLf^S>cb$cZO`1^bMjpz>afWD^w=wXPr1T&OF4kq9C9`xRU z2o#RbU=k(pm}-&0Y&XRD3)R8q@zr#eV&S^a_Za6NigTt|pLS;W?ppM@f5Y@bQ5p6e*EmBR zD|1|&3TOI!+QIF*ZBe&;g{ei7uMLgS&*4q#|2qA94b#v=(`Se9E8j_F?B|bOcm+uW zeEdBmXiy~sy`LWXw{9(WdqRBr4D3lc?+#uEb{%!~`KFdewYXSI{Q~TlwNOvjV^65Z ztNqv0^&*H2EJNLRYyAkWwnhcGP&P(l?9;p<>(n0w+aLec!@F>N#j*zy1SFUQ1Oyv6 zV*wj?|20hkS6;yD)4|x*Q!-117p)(Kr5L$J%6o7R2?g@zFWda#SFznD>!9*oQS zducLPF=L%`s7#UqdM1_em&H^-PQnYwW0-)?M+1hMTeh>(d?25Sgs>De3OokRD4ESI zrvQc_`0eIaF|1N>g5kHzt@XFw?E5X(SzhlGhr+Q!!=br5G;dfI1aNZ?k%#8qDTkI? zC!Q+VOH3{|kkht~!95ULFe`+~!loq?old(BnH_kB=s=F~P>wWRIBZ@5O#dL8y-w#d z7#0jyzfGcfSRZWRSype9H)Thyt%rrkqVjq2oi;XZy^txCVm4uvG}Y@*^7A&tU3M-p|^ zXSX-btF!|J&^yMMH*8IwR*dw`Q~1)Z>|hw3Mmc_OC1QF*9VF!4!9Kxp5+ezSHpD!^ zKjRn{GhpS>r)5^!-}2N5+Lqvjp=)+d5{@?|)S-)gqvN!!RfS3BTmH4VU4I#V)c*(# zo`Pv3Z-PQmB00kJ+h%g9!z?wLSvf~8)%%U|DZQ7GKSh6(|)zV(xb&m48>@v?` zAWC)2$f1;%-biyBd;DzBNHjbIj0mCN7E17x5g2uHAS5dSnOFC27>EwU1Dw?@`xjyG z?@+6}7{FGjkzVGXg>qu55Nee*dGHs5rLkC(e7aBK;n>nJ;zd~!o(~1t;xLL@;-_)b zFQj$yYTZARe4`6DQmfQONPS#S$R75(+K21=-Jf()n@QNoWJ#K<=mIS~h%}tCm~^qT z`t&|79!<31{;~J))n3WH>HW^~mv1k0UeD`9aG=mY-f$ImBukrrqB8lmFC{W9ZO|cJ z=WXgh$gJQ}NTQo&%_(B-EWpExI=CezjjrIU&Y+E;&HMVM>9*ar&HHU86Y_UT2lTd} z-~JmDSNnp{=xtdS$AX7XE{;w=D0`~#f5ZiRsawLYOZ9@fXaNBY8e#d)GN5FKW1DVP zEPY!+OTFOXEfiuPUSe37qg!Bb@*;H zo}ajnVZxrDm9N&9aL@ByzUX3iMchksrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST z>RP*8-II%3U&~e3JYKeZUfr{s&*#-IEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X( zd9U`j{ogmI566F%v8-D2z2g4M{Bt$G?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR z4VE_57Uila@xx}pjT1jSE-F3TCH69QbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n z=4<8e9jvu`>!Dl!gHxGXRbN^0y_CtbP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRa zcr!AIFoTB2IT*gpG>=#tv~=QBU<>sWaLf(V?SO#>pcn%~v@>upI5n>%KBTfBwKx{k zIzu<0Qq9}p2TK^X9AU61ZosS(fAxF0|?yTqr98KZ;4B zJW!L0ODc0x!PAxKVSs+1Busw;<5_DI&1lCn=B^!_)(h*$Mkd*kQ^pm%f; z1{`WYHUL|<7u_uMz9Yh{-Hpg*q4p%vO+oK!Axyc{1Pv9Gju*Oq^!6Y^e{LI67DH_v W26(dqa}X$32{I%CvqyXnhz9^Hq*Fow literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.java b/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.java deleted file mode 100644 index 97bcdd620..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedScatterGatherSupport.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.twitter.search.earlybird_root; - -import javax.inject.Inject; - -import com.twitter.search.common.partitioning.base.PartitionMappingManager; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.earlybird_root.common.EarlybirdFeatureSchemaMerger; - -/** - * The EarlybirdServiceScatterGatherSupport implementation used to fan out requests to the earlybird - * partitions in the protected cluster. - */ -public class EarlybirdProtectedScatterGatherSupport extends EarlybirdServiceScatterGatherSupport { - /** - * Construct a EarlybirdProtectedScatterGatherSupport to do minUserFanOut, - * used only by protected. The main difference from the base class is that - * if the from user ID is not set, exception is thrown. - */ - @Inject - EarlybirdProtectedScatterGatherSupport( - PartitionMappingManager partitionMappingManager, - EarlybirdFeatureSchemaMerger featureSchemaMerger) { - super(partitionMappingManager, EarlybirdCluster.PROTECTED, featureSchemaMerger); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedValidationBehavior.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedValidationBehavior.docx new file mode 100644 index 0000000000000000000000000000000000000000..02abe4993b8270460f6910e874f3995973735da3 GIT binary patch literal 37187 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedWarmup.java b/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedWarmup.java deleted file mode 100644 index c1b022d66..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdProtectedWarmup.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.twitter.search.earlybird_root; - -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.root.WarmupConfig; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; - -public class EarlybirdProtectedWarmup extends EarlybirdWarmup { - - public EarlybirdProtectedWarmup(Clock clock, WarmupConfig config) { - super(clock, config); - } - - /** - * The protected cluster requires all queries to specify a fromUserIdFilter and a searcherId. - */ - @Override - protected EarlybirdRequest createRequest(int requestId) { - EarlybirdRequest request = super.createRequest(requestId); - - Preconditions.checkState(request.isSetSearchQuery()); - request.getSearchQuery().addToFromUserIDFilter64(requestId); - request.getSearchQuery().setSearcherId(0L); - - return request; - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..371ca2da080a93263dc3625c9ab91582660db22f GIT binary patch literal 38746 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.java b/src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.java deleted file mode 100644 index 07e07cb2d..000000000 --- a/src/java/com/twitter/search/earlybird_root/EarlybirdQueryRewriteFilter.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.twitter.search.earlybird_root; - -import java.util.List; -import java.util.Map; - -import javax.inject.Inject; -import javax.inject.Named; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Predicate; -import com.google.common.collect.Maps; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.Service; -import com.twitter.finagle.SimpleFilter; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.root.SearchRootModule; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird_root.common.EarlybirdRequestContext; -import com.twitter.search.earlybird_root.common.EarlybirdRequestType; -import com.twitter.search.queryparser.query.Query; -import com.twitter.search.queryparser.query.QueryParserException; -import com.twitter.search.queryparser.query.Term; -import com.twitter.search.queryparser.query.annotation.Annotation; -import com.twitter.search.queryparser.rewriter.PredicateQueryNodeDropper; -import com.twitter.search.queryparser.visitors.TermExtractorVisitor; -import com.twitter.util.Future; - -/** - * Filter that rewrites the serialized query on EarlybirdRequest. - * As of now, this filter performs the following rewrites: - * - Drop ":v annotated variants based on decider, if the query has enough term nodes. - */ -public class EarlybirdQueryRewriteFilter extends - SimpleFilter { - - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdQueryRewriteFilter.class); - - private static final String DROP_PHRASE_VARIANT_FROM_QUERY_DECIDER_KEY_PATTERN = - "drop_variants_from_%s_%s_queries"; - - // only drop variants from queries with more than this number of terms. - private static final String MIN_TERM_COUNT_FOR_VARIANT_DROPPING_DECIDER_KEY_PATTERN = - "drop_variants_from_%s_%s_queries_term_count_threshold"; - - private static final SearchCounter QUERY_PARSER_FAILURE_COUNT = - SearchCounter.export("query_rewrite_filter_query_parser_failure_count"); - - // We currently add variants only to RECENCY and RELEVANCE requests, but it doesn't hurt to export - // stats for all request types. - @VisibleForTesting - static final Map DROP_VARIANTS_QUERY_COUNTS = - Maps.newEnumMap(EarlybirdRequestType.class); - static { - for (EarlybirdRequestType requestType : EarlybirdRequestType.values()) { - DROP_VARIANTS_QUERY_COUNTS.put( - requestType, - SearchCounter.export(String.format("drop_%s_variants_query_count", - requestType.getNormalizedName()))); - } - } - - private static final Predicate DROP_VARIANTS_PREDICATE = - q -> q.hasAnnotationType(Annotation.Type.VARIANT); - - private static final PredicateQueryNodeDropper DROP_VARIANTS_VISITOR = - new PredicateQueryNodeDropper(DROP_VARIANTS_PREDICATE); - - private final SearchDecider decider; - private final String normalizedSearchRootName; - - @Inject - public EarlybirdQueryRewriteFilter( - SearchDecider decider, - @Named(SearchRootModule.NAMED_NORMALIZED_SEARCH_ROOT_NAME) String normalizedSearchRootName) { - this.decider = decider; - this.normalizedSearchRootName = normalizedSearchRootName; - } - - @Override - public Future apply( - EarlybirdRequestContext requestContext, - Service service) { - - Query query = requestContext.getParsedQuery(); - // If there's no serialized query, no rewrite is necessary. - if (query == null) { - return service.apply(requestContext); - } else { - try { - Query variantsRemoved = maybeRemoveVariants(requestContext, query); - - if (query == variantsRemoved) { - return service.apply(requestContext); - } else { - EarlybirdRequestContext clonedRequestContext = - EarlybirdRequestContext.copyRequestContext(requestContext, variantsRemoved); - - return service.apply(clonedRequestContext); - } - } catch (QueryParserException e) { - // It is not clear here that the QueryParserException is the client's fault, or our fault. - // At this point it is most likely not the client's since we have a legitimate parsed Query - // from the client's request, and it's the rewriting that failed. - // In this case we choose to send the query as is (without the rewrite), instead of - // failing the entire request. - QUERY_PARSER_FAILURE_COUNT.increment(); - LOG.warn("Failed to rewrite serialized query: " + query.serialize(), e); - return service.apply(requestContext); - } - } - } - - private Query maybeRemoveVariants(EarlybirdRequestContext requestContext, Query query) - throws QueryParserException { - - if (shouldDropVariants(requestContext, query)) { - Query rewrittenQuery = DROP_VARIANTS_VISITOR.apply(query); - if (!query.equals(rewrittenQuery)) { - DROP_VARIANTS_QUERY_COUNTS.get(requestContext.getEarlybirdRequestType()).increment(); - return rewrittenQuery; - } - } - return query; - } - - private boolean shouldDropVariants(EarlybirdRequestContext requestContext, Query query) - throws QueryParserException { - TermExtractorVisitor termExtractorVisitor = new TermExtractorVisitor(false); - List terms = query.accept(termExtractorVisitor); - - EarlybirdRequestType requestType = requestContext.getEarlybirdRequestType(); - - boolean shouldDropVariants = decider.isAvailable(getDropPhaseVariantDeciderKey(requestType)); - - return terms != null - && terms.size() >= decider.getAvailability( - getMinTermCountForVariantDroppingDeciderKey(requestType)) - && shouldDropVariants; - } - - private String getDropPhaseVariantDeciderKey(EarlybirdRequestType requestType) { - return String.format(DROP_PHRASE_VARIANT_FROM_QUERY_DECIDER_KEY_PATTERN, - normalizedSearchRootName, - requestType.getNormalizedName()); - } - - private String getMinTermCountForVariantDroppingDeciderKey(EarlybirdRequestType requestType) { - return String.format(MIN_TERM_COUNT_FOR_VARIANT_DROPPING_DECIDER_KEY_PATTERN, - normalizedSearchRootName, - requestType.getNormalizedName()); - } -} diff --git a/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.docx b/src/java/com/twitter/search/earlybird_root/EarlybirdRealtimeCgScatterGatherSupport.docx new file mode 100644 index 0000000000000000000000000000000000000000..f84973ebffee115ac4f06be6e9a274be9acb8345 GIT binary patch literal 36996 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