From dedacccd1fcab86102bd4f915cbf270a7bce8431 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:19:52 +0200 Subject: [PATCH] [docx] split commit for file 5800 Signed-off-by: Ari Archer --- .../storage/GetDeletedTweetsHandler.docx | Bin 0 -> 38045 bytes .../storage/GetDeletedTweetsHandler.scala | 150 -- .../storage/GetStoredTweetHandler.docx | Bin 0 -> 38138 bytes .../storage/GetStoredTweetHandler.scala | 126 - .../tweetypie/storage/GetTweetHandler.docx | Bin 0 -> 39031 bytes .../tweetypie/storage/GetTweetHandler.scala | 167 -- .../storage/HardDeleteTweetHandler.docx | Bin 0 -> 38717 bytes .../storage/HardDeleteTweetHandler.scala | 153 -- .../tweetypie/storage/InspectFields.docx | Bin 0 -> 39280 bytes .../tweetypie/storage/InspectFields.scala | 228 -- .../com/twitter/tweetypie/storage/Json.docx | Bin 0 -> 36930 bytes .../com/twitter/tweetypie/storage/Json.scala | 17 - .../storage/ManhattanOperations.docx | Bin 0 -> 38054 bytes .../storage/ManhattanOperations.scala | 103 - .../storage/ManhattanTweetStorageClient.docx | Bin 0 -> 41251 bytes .../storage/ManhattanTweetStorageClient.scala | 451 ---- .../twitter/tweetypie/storage/Response.docx | Bin 0 -> 36959 bytes .../twitter/tweetypie/storage/Response.scala | 30 - .../com/twitter/tweetypie/storage/Scribe.docx | Bin 0 -> 37986 bytes .../twitter/tweetypie/storage/Scribe.scala | 85 - .../tweetypie/storage/ScrubHandler.docx | Bin 0 -> 37683 bytes .../tweetypie/storage/ScrubHandler.scala | 71 - .../tweetypie/storage/SoftDeleteHandler.docx | Bin 0 -> 36925 bytes .../tweetypie/storage/SoftDeleteHandler.scala | 20 - .../com/twitter/tweetypie/storage/Stats.docx | Bin 0 -> 37164 bytes .../com/twitter/tweetypie/storage/Stats.scala | 33 - .../tweetypie/storage/StatusConversions.docx | Bin 0 -> 37819 bytes .../tweetypie/storage/StatusConversions.scala | 129 - .../tweetypie/storage/StorageConversions.docx | Bin 0 -> 40050 bytes .../storage/StorageConversions.scala | 346 --- .../tweetypie/storage/TimestampDecoder.docx | Bin 0 -> 38093 bytes .../tweetypie/storage/TimestampDecoder.scala | 92 - .../twitter/tweetypie/storage/TweetKey.docx | Bin 0 -> 38904 bytes .../twitter/tweetypie/storage/TweetKey.scala | 164 -- .../tweetypie/storage/TweetStateRecord.docx | Bin 0 -> 37949 bytes .../tweetypie/storage/TweetStateRecord.scala | 90 - .../tweetypie/storage/TweetStorageClient.docx | Bin 0 -> 38552 bytes .../storage/TweetStorageClient.scala | 201 -- .../storage/TweetStorageException.docx | Bin 0 -> 37039 bytes .../storage/TweetStorageException.scala | 34 - .../twitter/tweetypie/storage/TweetUtils.docx | Bin 0 -> 40302 bytes .../tweetypie/storage/TweetUtils.scala | 265 -- .../tweetypie/storage/UndeleteHandler.docx | Bin 0 -> 38129 bytes .../tweetypie/storage/UndeleteHandler.scala | 106 - .../tweetypie/storage/UpdateTweetHandler.docx | Bin 0 -> 37642 bytes .../storage/UpdateTweetHandler.scala | 64 - .../twitter/tweetypie/storage/package.docx | Bin 0 -> 36786 bytes .../twitter/tweetypie/storage/package.scala | 11 - .../scala/com/twitter/tweetypie/tflock/BUILD | 20 - .../com/twitter/tweetypie/tflock/BUILD.docx | Bin 0 -> 36913 bytes .../tweetypie/tflock/TFlockIndexer.docx | Bin 0 -> 42856 bytes .../tweetypie/tflock/TFlockIndexer.scala | 532 ---- .../tweetypie/tflock/TweetIndexer.docx | Bin 0 -> 37015 bytes .../tweetypie/tflock/TweetIndexer.scala | 30 - .../com/twitter/tweetypie/thriftscala/BUILD | 13 - .../twitter/tweetypie/thriftscala/BUILD.docx | Bin 0 -> 36846 bytes .../NotImplementedTweetService.docx | Bin 0 -> 36787 bytes .../NotImplementedTweetService.scala | 8 - .../thriftscala/TweetServiceProxy.docx | Bin 0 -> 37412 bytes .../thriftscala/TweetServiceProxy.scala | 79 - .../tweetypie/thriftscala/entities/BUILD | 15 - .../tweetypie/thriftscala/entities/BUILD.docx | Bin 0 -> 36857 bytes .../entities/CashtagTextEntity.docx | Bin 0 -> 36835 bytes .../entities/CashtagTextEntity.scala | 11 - .../thriftscala/entities/EntityExtractor.docx | Bin 0 -> 38157 bytes .../entities/EntityExtractor.scala | 118 - .../entities/HashtagTextEntity.docx | Bin 0 -> 36835 bytes .../entities/HashtagTextEntity.scala | 11 - .../thriftscala/entities/Implicits.docx | Bin 0 -> 36813 bytes .../thriftscala/entities/Implicits.scala | 10 - .../thriftscala/entities/MediaTextEntity.docx | Bin 0 -> 36833 bytes .../entities/MediaTextEntity.scala | 11 - .../entities/MentionTextEntity.docx | Bin 0 -> 36834 bytes .../entities/MentionTextEntity.scala | 11 - .../entities/TextRangeEntityAdapter.docx | Bin 0 -> 36840 bytes .../entities/TextRangeEntityAdapter.scala | 11 - .../thriftscala/entities/UrlTextEntity.docx | Bin 0 -> 36830 bytes .../thriftscala/entities/UrlTextEntity.scala | 11 - .../com/twitter/tweetypie/tweettext/BUILD | 16 - .../twitter/tweetypie/tweettext/BUILD.docx | Bin 0 -> 36884 bytes .../tweettext/GraphemeIndexIterator.docx | Bin 0 -> 37286 bytes .../tweettext/GraphemeIndexIterator.scala | 44 - .../tweetypie/tweettext/IndexConverter.docx | Bin 0 -> 37606 bytes .../tweetypie/tweettext/IndexConverter.scala | 85 - .../twitter/tweetypie/tweettext/Offset.docx | Bin 0 -> 39973 bytes .../twitter/tweetypie/tweettext/Offset.scala | 253 -- .../tweettext/PartialHtmlEncoding.docx | Bin 0 -> 37342 bytes .../tweettext/PartialHtmlEncoding.scala | 55 - .../tweetypie/tweettext/Preprocessor.docx | Bin 0 -> 40549 bytes .../tweetypie/tweettext/Preprocessor.scala | 251 -- .../tweetypie/tweettext/TextEntity.docx | Bin 0 -> 36918 bytes .../tweetypie/tweettext/TextEntity.scala | 24 - .../tweetypie/tweettext/TextModification.docx | Bin 0 -> 39473 bytes .../tweettext/TextModification.scala | 232 -- .../tweetypie/tweettext/Truncator.docx | Bin 0 -> 39020 bytes .../tweetypie/tweettext/Truncator.scala | 159 -- .../tweetypie/tweettext/TweetText.docx | Bin 0 -> 37397 bytes .../tweetypie/tweettext/TweetText.scala | 62 - .../scala/com/twitter/tweetypie/util/BUILD | 76 - .../com/twitter/tweetypie/util/BUILD.docx | Bin 0 -> 37270 bytes .../tweetypie/util/CommunityAnnotation.docx | Bin 0 -> 37076 bytes .../tweetypie/util/CommunityAnnotation.scala | 29 - .../twitter/tweetypie/util/CommunityUtil.docx | Bin 0 -> 36865 bytes .../tweetypie/util/CommunityUtil.scala | 19 - .../tweetypie/util/ConversationControls.docx | Bin 0 -> 37353 bytes .../tweetypie/util/ConversationControls.scala | 112 - .../tweetypie/util/EditControlUtil.docx | Bin 0 -> 38569 bytes .../tweetypie/util/EditControlUtil.scala | 174 -- .../tweetypie/util/RetryPolicyBuilder.docx | Bin 0 -> 37010 bytes .../tweetypie/util/RetryPolicyBuilder.scala | 45 - .../twitter/tweetypie/util/StitchUtils.docx | Bin 0 -> 37222 bytes .../twitter/tweetypie/util/StitchUtils.scala | 54 - .../twitter/tweetypie/util/StringLiteral.docx | Bin 0 -> 37154 bytes .../tweetypie/util/StringLiteral.scala | 31 - .../com/twitter/tweetypie/util/Takedowns.docx | Bin 0 -> 37332 bytes .../twitter/tweetypie/util/Takedowns.scala | 49 - .../tweetypie/util/TransientContextUtil.docx | Bin 0 -> 36899 bytes .../tweetypie/util/TransientContextUtil.scala | 17 - .../tweetypie/util/TweetCreationLock.docx | Bin 0 -> 39399 bytes .../tweetypie/util/TweetCreationLock.scala | 203 -- .../twitter/tweetypie/util/TweetLenses.docx | Bin 0 -> 39822 bytes .../twitter/tweetypie/util/TweetLenses.scala | 506 ---- .../tweetypie/util/TweetPermalinkUtil.docx | Bin 0 -> 36916 bytes .../tweetypie/util/TweetPermalinkUtil.scala | 18 - .../tweetypie/util/TweetTransformer.docx | Bin 0 -> 37972 bytes .../tweetypie/util/TweetTransformer.scala | 128 - .../AlertableExceptionLoggingFilter.docx | Bin 0 -> 37461 bytes .../AlertableExceptionLoggingFilter.scala | 41 - .../com/twitter/tweetypie/util/logging/BUILD | 17 - .../twitter/tweetypie/util/logging/BUILD.docx | Bin 0 -> 36926 bytes .../OnlyImportantLogsLoggingFilter.docx | Bin 0 -> 37283 bytes .../OnlyImportantLogsLoggingFilter.scala | 30 - .../com/twitter/tweetypie/util/package.docx | Bin 0 -> 36732 bytes .../com/twitter/tweetypie/util/package.scala | 9 - .../src/thrift/com/twitter/tweetypie/BUILD | 353 --- .../thrift/com/twitter/tweetypie/BUILD.docx | Bin 0 -> 38174 bytes .../com/twitter/tweetypie/api_fields.docx | Bin 0 -> 36959 bytes .../com/twitter/tweetypie/api_fields.thrift | 18 - .../creative_entity_enrichments.docx | Bin 0 -> 37036 bytes .../creative_entity_enrichments.thrift | 21 - .../tweetypie/delete_location_data.docx | Bin 0 -> 37198 bytes .../tweetypie/delete_location_data.thrift | 32 - .../com/twitter/tweetypie/deleted_tweet.docx | Bin 0 -> 37620 bytes .../twitter/tweetypie/deleted_tweet.thrift | 86 - .../com/twitter/tweetypie/deprecated.docx | Bin 0 -> 38120 bytes .../com/twitter/tweetypie/deprecated.thrift | 99 - .../com/twitter/tweetypie/edit_control.docx | Bin 0 -> 37860 bytes .../com/twitter/tweetypie/edit_control.thrift | 71 - .../tweetypie/geo/tweet_location_info.docx | Bin 0 -> 38025 bytes .../tweetypie/geo/tweet_location_info.thrift | 72 - .../twitter/tweetypie/media/media_ref.docx | Bin 0 -> 37016 bytes .../twitter/tweetypie/media/media_ref.thrift | 20 - .../com/twitter/tweetypie/media_entity.docx | Bin 0 -> 38588 bytes .../com/twitter/tweetypie/media_entity.thrift | 135 - .../com/twitter/tweetypie/note_tweet.docx | Bin 0 -> 36954 bytes .../com/twitter/tweetypie/note_tweet.thrift | 13 - .../tweetypie/retweet_archival_event.docx | Bin 0 -> 37376 bytes .../tweetypie/retweet_archival_event.thrift | 30 - .../twitter/tweetypie/storage_internal/BUILD | 11 - .../tweetypie/storage_internal/BUILD.docx | Bin 0 -> 36782 bytes .../storage_internal/storage_internal.docx | Bin 0 -> 37540 bytes .../storage_internal/storage_internal.thrift | 79 - .../twitter/tweetypie/stored_tweet_info.docx | Bin 0 -> 37111 bytes .../tweetypie/stored_tweet_info.thrift | 52 - .../twitter/tweetypie/transient_context.docx | Bin 0 -> 37642 bytes .../tweetypie/transient_context.thrift | 64 - .../thrift/com/twitter/tweetypie/tweet.docx | Bin 0 -> 54406 bytes .../thrift/com/twitter/tweetypie/tweet.thrift | 1652 ------------ .../com/twitter/tweetypie/tweet_audit.docx | Bin 0 -> 37198 bytes .../com/twitter/tweetypie/tweet_audit.thrift | 32 - .../tweetypie/tweet_comparison_service.docx | Bin 0 -> 36883 bytes .../tweetypie/tweet_comparison_service.thrift | 28 - .../com/twitter/tweetypie/tweet_events.docx | Bin 0 -> 39487 bytes .../com/twitter/tweetypie/tweet_events.thrift | 277 -- .../com/twitter/tweetypie/tweet_service.docx | Bin 0 -> 61986 bytes .../twitter/tweetypie/tweet_service.thrift | 2320 ----------------- .../tweetypie/tweet_service_federated.docx | Bin 0 -> 36994 bytes .../tweetypie/tweet_service_federated.thrift | 32 - .../tweetypie/tweet_service_graphql.docx | Bin 0 -> 41991 bytes .../tweetypie/tweet_service_graphql.thrift | 391 --- .../tweetypie/unmentions/unmentions.docx | Bin 0 -> 36840 bytes .../tweetypie/unmentions/unmentions.thrift | 9 - tweetypie/server/BUILD | 16 - tweetypie/server/BUILD.docx | Bin 0 -> 36792 bytes tweetypie/server/README.docx | Bin 0 -> 38444 bytes tweetypie/server/README.md | 45 - tweetypie/server/config/BUILD | 7 - tweetypie/server/config/BUILD.docx | Bin 0 -> 36698 bytes tweetypie/server/config/decider.docx | Bin 0 -> 40560 bytes tweetypie/server/config/decider.yml | 313 --- tweetypie/server/config/decider_staging.docx | Bin 0 -> 36611 bytes tweetypie/server/config/decider_staging.yml | 0 .../config/logging/logback-all-include.docx | Bin 0 -> 36987 bytes .../config/logging/logback-all-include.xml | 23 - .../logging/logback-without-loglens.docx | Bin 0 -> 36846 bytes .../logging/logback-without-loglens.xml | 12 - tweetypie/server/config/logging/logback.docx | Bin 0 -> 38844 bytes tweetypie/server/config/logging/logback.xml | 146 -- tweetypie/server/config/partner_media.docx | Bin 0 -> 37369 bytes tweetypie/server/config/partner_media.yml | 30 - .../main/scala/com/twitter/tweetypie/BUILD | 19 - .../scala/com/twitter/tweetypie/BUILD.docx | Bin 0 -> 36913 bytes .../com/twitter/tweetypie/backends/BUILD | 48 - .../com/twitter/tweetypie/backends/BUILD.docx | Bin 0 -> 37293 bytes .../twitter/tweetypie/backends/Backend.docx | Bin 0 -> 38935 bytes .../twitter/tweetypie/backends/Backend.scala | 172 -- .../twitter/tweetypie/backends/ConfigBus.docx | Bin 0 -> 37266 bytes .../tweetypie/backends/ConfigBus.scala | 50 - .../backends/CreativesContainerService.docx | Bin 0 -> 37511 bytes .../backends/CreativesContainerService.scala | 71 - .../tweetypie/backends/Escherbird.docx | Bin 0 -> 37175 bytes .../tweetypie/backends/Escherbird.scala | 43 - .../twitter/tweetypie/backends/Expandodo.docx | Bin 0 -> 37629 bytes .../tweetypie/backends/Expandodo.scala | 83 - .../backends/GeoScrubEventStore.docx | Bin 0 -> 37868 bytes .../backends/GeoScrubEventStore.scala | 84 - .../twitter/tweetypie/backends/Gizmoduck.docx | Bin 0 -> 37794 bytes .../tweetypie/backends/Gizmoduck.scala | 93 - .../tweetypie/backends/GnipEnricherator.docx | Bin 0 -> 37137 bytes .../tweetypie/backends/GnipEnricherator.scala | 42 - .../tweetypie/backends/LimiterBackend.docx | Bin 0 -> 37307 bytes .../tweetypie/backends/LimiterBackend.scala | 55 - .../tweetypie/backends/LimiterService.docx | Bin 0 -> 38916 bytes .../tweetypie/backends/LimiterService.scala | 193 -- .../twitter/tweetypie/backends/Manhattan.docx | Bin 0 -> 37297 bytes .../tweetypie/backends/Manhattan.scala | 46 - .../tweetypie/backends/MediaInfoService.docx | Bin 0 -> 37193 bytes .../tweetypie/backends/MediaInfoService.scala | 43 - .../twitter/tweetypie/backends/Scarecrow.docx | Bin 0 -> 37577 bytes .../tweetypie/backends/Scarecrow.scala | 73 - .../backends/SocialGraphService.docx | Bin 0 -> 37318 bytes .../backends/SocialGraphService.scala | 52 - .../twitter/tweetypie/backends/TFlock.docx | Bin 0 -> 37887 bytes .../twitter/tweetypie/backends/TFlock.scala | 98 - .../com/twitter/tweetypie/backends/Talon.docx | Bin 0 -> 37767 bytes .../twitter/tweetypie/backends/Talon.scala | 94 - .../tweetypie/backends/TimelineService.docx | Bin 0 -> 37749 bytes .../tweetypie/backends/TimelineService.scala | 84 - .../tweetypie/backends/UserImageService.docx | Bin 0 -> 37450 bytes .../tweetypie/backends/UserImageService.scala | 71 - .../twitter/tweetypie/backends/Warmup.docx | Bin 0 -> 40350 bytes .../twitter/tweetypie/backends/Warmup.scala | 266 -- .../scala/com/twitter/tweetypie/config/BUILD | 135 - .../com/twitter/tweetypie/config/BUILD.docx | Bin 0 -> 38097 bytes .../tweetypie/config/BackendClients.docx | Bin 0 -> 45099 bytes .../tweetypie/config/BackendClients.scala | 796 ------ .../com/twitter/tweetypie/config/Caches.docx | Bin 0 -> 39392 bytes .../com/twitter/tweetypie/config/Caches.scala | 281 -- .../tweetypie/config/ClientsParser.docx | Bin 0 -> 38202 bytes .../tweetypie/config/ClientsParser.scala | 126 - .../tweetypie/config/DynamicConfig.docx | Bin 0 -> 38179 bytes .../tweetypie/config/DynamicConfig.scala | 100 - .../tweetypie/config/DynamicConfigLoader.docx | Bin 0 -> 37403 bytes .../config/DynamicConfigLoader.scala | 69 - .../config/ExternalRepositories.docx | Bin 0 -> 38519 bytes .../config/ExternalRepositories.scala | 182 -- .../tweetypie/config/LogicalRepositories.docx | Bin 0 -> 44843 bytes .../config/LogicalRepositories.scala | 807 ------ .../com/twitter/tweetypie/config/Main.docx | Bin 0 -> 40936 bytes .../com/twitter/tweetypie/config/Main.scala | 314 --- .../MemcacheExceptionLoggingFilter.docx | Bin 0 -> 37403 bytes .../MemcacheExceptionLoggingFilter.scala | 62 - .../twitter/tweetypie/config/Resources.docx | Bin 0 -> 36907 bytes .../twitter/tweetypie/config/Resources.scala | 15 - .../config/ScribeTweetCacheWrites.docx | Bin 0 -> 38312 bytes .../config/ScribeTweetCacheWrites.scala | 102 - .../tweetypie/config/TweetBuilders.docx | Bin 0 -> 39563 bytes .../tweetypie/config/TweetBuilders.scala | 300 --- .../tweetypie/config/TweetHydrators.docx | Bin 0 -> 40878 bytes .../tweetypie/config/TweetHydrators.scala | 341 --- .../tweetypie/config/TweetServerBuilder.docx | Bin 0 -> 39802 bytes .../tweetypie/config/TweetServerBuilder.scala | 300 --- .../config/TweetServiceAuthorizers.docx | Bin 0 -> 41219 bytes .../config/TweetServiceAuthorizers.scala | 399 --- .../tweetypie/config/TweetServiceBuilder.docx | Bin 0 -> 42207 bytes .../config/TweetServiceBuilder.scala | 683 ----- .../config/TweetServiceInvocationBuilder.docx | Bin 0 -> 37121 bytes .../TweetServiceInvocationBuilder.scala | 34 - .../config/TweetServiceSettings.docx | Bin 0 -> 42767 bytes .../config/TweetServiceSettings.scala | 475 ---- .../twitter/tweetypie/config/TweetStores.docx | Bin 0 -> 40837 bytes .../tweetypie/config/TweetStores.scala | 577 ---- .../config/TweetypieDeciderGates.docx | Bin 0 -> 38237 bytes .../config/TweetypieDeciderGates.scala | 91 - .../tweetypie/config/WritePathHydration.docx | Bin 0 -> 39230 bytes .../tweetypie/config/WritePathHydration.scala | 223 -- .../com/twitter/tweetypie/config/package.docx | Bin 0 -> 36843 bytes .../twitter/tweetypie/config/package.scala | 11 - .../scala/com/twitter/tweetypie/core/BUILD | 19 - .../com/twitter/tweetypie/core/BUILD.docx | Bin 0 -> 36925 bytes .../core/CardReferenceUriExtractor.docx | Bin 0 -> 37225 bytes .../core/CardReferenceUriExtractor.scala | 32 - .../com/twitter/tweetypie/core/EditState.docx | Bin 0 -> 37353 bytes .../twitter/tweetypie/core/EditState.scala | 48 - .../twitter/tweetypie/core/Exceptions.docx | Bin 0 -> 36839 bytes .../twitter/tweetypie/core/Exceptions.scala | 14 - .../twitter/tweetypie/core/FilteredState.docx | Bin 0 -> 37872 bytes .../tweetypie/core/FilteredState.scala | 96 - .../tweetypie/core/GeoSearchRequestId.docx | Bin 0 -> 36683 bytes .../tweetypie/core/GeoSearchRequestId.scala | 3 - .../tweetypie/core/HydrationState.docx | Bin 0 -> 37987 bytes .../tweetypie/core/HydrationState.scala | 122 - .../tweetypie/core/QuotedTweetResult.docx | Bin 0 -> 37189 bytes .../tweetypie/core/QuotedTweetResult.scala | 46 - .../twitter/tweetypie/core/Serializer.docx | Bin 0 -> 37007 bytes .../twitter/tweetypie/core/Serializer.scala | 31 - .../tweetypie/core/StoredTweetResult.docx | Bin 0 -> 36998 bytes .../tweetypie/core/StoredTweetResult.scala | 42 - .../tweetypie/core/TweetCreateFailure.docx | Bin 0 -> 37074 bytes .../tweetypie/core/TweetCreateFailure.scala | 39 - .../com/twitter/tweetypie/core/TweetData.docx | Bin 0 -> 37718 bytes .../twitter/tweetypie/core/TweetData.scala | 86 - .../twitter/tweetypie/core/TweetResult.docx | Bin 0 -> 37219 bytes .../twitter/tweetypie/core/TweetResult.scala | 39 - .../tweetypie/core/UpstreamFailure.docx | Bin 0 -> 37127 bytes .../tweetypie/core/UpstreamFailure.scala | 37 - .../twitter/tweetypie/core/ValueState.docx | Bin 0 -> 38476 bytes .../twitter/tweetypie/core/ValueState.scala | 452 ---- .../com/twitter/tweetypie/core/package.docx | Bin 0 -> 36712 bytes .../com/twitter/tweetypie/core/package.scala | 5 - .../com/twitter/tweetypie/federated/BUILD | 35 - .../twitter/tweetypie/federated/BUILD.docx | Bin 0 -> 37103 bytes .../federated/StratoCatalogBuilder.docx | Bin 0 -> 38037 bytes .../federated/StratoCatalogBuilder.scala | 128 - .../federated/columns/AccessPolicy.docx | Bin 0 -> 37188 bytes .../federated/columns/AccessPolicy.scala | 41 - .../federated/columns/ApiErrors.docx | Bin 0 -> 38303 bytes .../federated/columns/ApiErrors.scala | 110 - .../twitter/tweetypie/federated/columns/BUILD | 43 - .../tweetypie/federated/columns/BUILD.docx | Bin 0 -> 37276 bytes .../columns/CreateRetweetColumn.docx | Bin 0 -> 39296 bytes .../columns/CreateRetweetColumn.scala | 184 -- .../federated/columns/CreateTweetColumn.docx | Bin 0 -> 42710 bytes .../federated/columns/CreateTweetColumn.scala | 546 ---- .../federated/columns/DeleteTweetColumn.docx | Bin 0 -> 37921 bytes .../federated/columns/DeleteTweetColumn.scala | 81 - .../columns/FederatedFieldColumn.docx | Bin 0 -> 38631 bytes .../columns/FederatedFieldColumn.scala | 141 - .../columns/FederatedFieldGroup.docx | Bin 0 -> 37817 bytes .../columns/FederatedFieldGroup.scala | 88 - .../federated/columns/FederatedFieldReq.docx | Bin 0 -> 36759 bytes .../federated/columns/FederatedFieldReq.scala | 7 - .../columns/GetStoredTweetsByUserColumn.docx | Bin 0 -> 37688 bytes .../columns/GetStoredTweetsByUserColumn.scala | 83 - .../columns/GetStoredTweetsColumn.docx | Bin 0 -> 37891 bytes .../columns/GetStoredTweetsColumn.scala | 99 - .../columns/GetTweetFieldsColumn.docx | Bin 0 -> 38963 bytes .../columns/GetTweetFieldsColumn.scala | 172 -- .../federated/columns/HydrationOptions.docx | Bin 0 -> 37121 bytes .../federated/columns/HydrationOptions.scala | 22 - .../federated/columns/TrackingId.docx | Bin 0 -> 37095 bytes .../federated/columns/TrackingId.scala | 29 - .../columns/TweetypieContactInfo.docx | Bin 0 -> 36780 bytes .../columns/TweetypieContactInfo.scala | 11 - .../federated/columns/UnretweetColumn.docx | Bin 0 -> 37684 bytes .../federated/columns/UnretweetColumn.scala | 69 - .../twitter/tweetypie/federated/context/BUILD | 27 - .../tweetypie/federated/context/BUILD.docx | Bin 0 -> 37010 bytes .../federated/context/RequestContext.docx | Bin 0 -> 38664 bytes .../federated/context/RequestContext.scala | 131 - .../tweetypie/federated/prefetcheddata/BUILD | 32 - .../federated/prefetcheddata/BUILD.docx | Bin 0 -> 37090 bytes .../PrefetchedDataRepository.docx | Bin 0 -> 38717 bytes .../PrefetchedDataRepository.scala | 166 -- .../tweetypie/federated/promotedcontent/BUILD | 18 - .../federated/promotedcontent/BUILD.docx | Bin 0 -> 36968 bytes .../TweetPromotedContentLogger.docx | Bin 0 -> 37228 bytes .../TweetPromotedContentLogger.scala | 40 - .../twitter/tweetypie/federated/warmups/BUILD | 43 - .../tweetypie/federated/warmups/BUILD.docx | Bin 0 -> 37228 bytes .../warmups/StratoCatalogWarmups.docx | Bin 0 -> 38139 bytes .../warmups/StratoCatalogWarmups.scala | 140 - .../tweetypie/handler/AttachmentBuilder.docx | Bin 0 -> 38817 bytes .../tweetypie/handler/AttachmentBuilder.scala | 185 -- .../scala/com/twitter/tweetypie/handler/BUILD | 88 - .../com/twitter/tweetypie/handler/BUILD.docx | Bin 0 -> 37745 bytes .../CardReferenceValidationHandler.docx | Bin 0 -> 37821 bytes .../CardReferenceValidationHandler.scala | 74 - .../tweetypie/handler/CardUsersFinder.docx | Bin 0 -> 37556 bytes .../tweetypie/handler/CardUsersFinder.scala | 52 - .../handler/CollabControlBuilder.docx | Bin 0 -> 37624 bytes .../handler/CollabControlBuilder.scala | 109 - .../handler/CommunitiesValidator.docx | Bin 0 -> 37304 bytes .../handler/CommunitiesValidator.scala | 40 - .../handler/ConversationControlBuilder.docx | Bin 0 -> 39909 bytes .../handler/ConversationControlBuilder.scala | 272 -- .../DeleteAdditionalFieldsBuilder.docx | Bin 0 -> 37359 bytes .../DeleteAdditionalFieldsBuilder.scala | 66 - .../handler/DeleteLocationDataHandler.docx | Bin 0 -> 37733 bytes .../handler/DeleteLocationDataHandler.scala | 62 - .../handler/DuplicateTweetFinder.docx | Bin 0 -> 39881 bytes .../handler/DuplicateTweetFinder.scala | 254 -- .../tweetypie/handler/EditControlBuilder.docx | Bin 0 -> 41005 bytes .../handler/EditControlBuilder.scala | 361 --- .../tweetypie/handler/EditValidator.docx | Bin 0 -> 38673 bytes .../tweetypie/handler/EditValidator.scala | 137 - .../handler/EraseUserTweetsHandler.docx | Bin 0 -> 37983 bytes .../handler/EraseUserTweetsHandler.scala | 102 - .../twitter/tweetypie/handler/GeoBuilder.docx | Bin 0 -> 38653 bytes .../tweetypie/handler/GeoBuilder.scala | 137 - 400 files changed, 26994 deletions(-) create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/InspectFields.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/InspectFields.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Stats.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Stats.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageClient.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageClient.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageException.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageException.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetUtils.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetUtils.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/UndeleteHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/UndeleteHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/package.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/package.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/TweetServiceProxy.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/TweetServiceProxy.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/CashtagTextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/CashtagTextEntity.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/GraphemeIndexIterator.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/GraphemeIndexIterator.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/IndexConverter.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/IndexConverter.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Offset.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Offset.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TweetText.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TweetText.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityAnnotation.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityAnnotation.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityUtil.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityUtil.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/RetryPolicyBuilder.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/RetryPolicyBuilder.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/StitchUtils.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/StitchUtils.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/StringLiteral.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/StringLiteral.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TransientContextUtil.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TransientContextUtil.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetTransformer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetTransformer.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/AlertableExceptionLoggingFilter.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/AlertableExceptionLoggingFilter.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/package.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/util/package.scala delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD.docx create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/api_fields.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/api_fields.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/creative-entity-enrichments/creative_entity_enrichments.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/creative-entity-enrichments/creative_entity_enrichments.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/media_entity.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/media_entity.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/note_tweet.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/note_tweet.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/retweet_archival_event.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/retweet_archival_event.thrift delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD.docx create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/storage_internal.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/storage_internal.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/stored_tweet_info.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/stored_tweet_info.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_graphql.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_graphql.thrift create mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.docx delete mode 100644 tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.thrift delete mode 100644 tweetypie/server/BUILD create mode 100644 tweetypie/server/BUILD.docx create mode 100644 tweetypie/server/README.docx delete mode 100644 tweetypie/server/README.md delete mode 100644 tweetypie/server/config/BUILD create mode 100644 tweetypie/server/config/BUILD.docx create mode 100644 tweetypie/server/config/decider.docx delete mode 100644 tweetypie/server/config/decider.yml create mode 100644 tweetypie/server/config/decider_staging.docx delete mode 100644 tweetypie/server/config/decider_staging.yml create mode 100644 tweetypie/server/config/logging/logback-all-include.docx delete mode 100644 tweetypie/server/config/logging/logback-all-include.xml create mode 100644 tweetypie/server/config/logging/logback-without-loglens.docx delete mode 100644 tweetypie/server/config/logging/logback-without-loglens.xml create mode 100644 tweetypie/server/config/logging/logback.docx delete mode 100644 tweetypie/server/config/logging/logback.xml create mode 100644 tweetypie/server/config/partner_media.docx delete mode 100644 tweetypie/server/config/partner_media.yml delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Backend.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Backend.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/CreativesContainerService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/CreativesContainerService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Escherbird.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Escherbird.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Gizmoduck.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Gizmoduck.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GnipEnricherator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GnipEnricherator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterBackend.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterBackend.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Scarecrow.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Scarecrow.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/SocialGraphService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/SocialGraphService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Warmup.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Warmup.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfig.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfig.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/MemcacheExceptionLoggingFilter.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/MemcacheExceptionLoggingFilter.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServerBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServerBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceAuthorizers.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceAuthorizers.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceInvocationBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceInvocationBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/config/package.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/EditState.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/EditState.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Exceptions.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Exceptions.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/FilteredState.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/FilteredState.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/GeoSearchRequestId.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/GeoSearchRequestId.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/HydrationState.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/HydrationState.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/StoredTweetResult.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/StoredTweetResult.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetCreateFailure.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetCreateFailure.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetData.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetData.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetResult.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetResult.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/ValueState.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/ValueState.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/StratoCatalogBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/StratoCatalogBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/AccessPolicy.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/AccessPolicy.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/ApiErrors.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/ApiErrors.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateRetweetColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateRetweetColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsByUserColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsByUserColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetTweetFieldsColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetTweetFieldsColumn.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/HydrationOptions.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/HydrationOptions.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/TrackingId.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/TrackingId.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/TweetypieContactInfo.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/TweetypieContactInfo.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/UnretweetColumn.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/UnretweetColumn.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context/RequestContext.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context/RequestContext.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata/PrefetchedDataRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata/PrefetchedDataRepository.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent/TweetPromotedContentLogger.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent/TweetPromotedContentLogger.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/warmups/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/warmups/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/warmups/StratoCatalogWarmups.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/warmups/StratoCatalogWarmups.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/AttachmentBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/AttachmentBuilder.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CardReferenceValidationHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CardReferenceValidationHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CardUsersFinder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CardUsersFinder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CollabControlBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CollabControlBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CommunitiesValidator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/CommunitiesValidator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ConversationControlBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ConversationControlBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DeleteAdditionalFieldsBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DeleteAdditionalFieldsBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DeleteLocationDataHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DeleteLocationDataHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DuplicateTweetFinder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/DuplicateTweetFinder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EditControlBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EditControlBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EditValidator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EditValidator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EraseUserTweetsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/EraseUserTweetsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GeoBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GeoBuilder.scala diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..26f7627c6ebddd135d76cea251313bcffbefa118 GIT binary patch literal 38045 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Ð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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.scala deleted file mode 100644 index dfacaa4a6..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetDeletedTweetsHandler.scala +++ /dev/null @@ -1,150 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.kv.DeniedManhattanException -import com.twitter.tweetypie.storage.Response.TweetResponseCode -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.tweetypie.storage_internal.thriftscala.StoredTweet -import com.twitter.tweetypie.thriftscala.DeletedTweet -import scala.util.control.NonFatal - -sealed trait DeleteState -object DeleteState { - - /** - * This tweet is deleted but has not been permanently deleted from Manhattan. Tweets in this state - * may be undeleted. - */ - case object SoftDeleted extends DeleteState - - /** - * This tweet is deleted after being bounced for violating the Twitter Rules but has not been - * permanently deleted from Manhattan. Tweets in this state may NOT be undeleted. - */ - case object BounceDeleted extends DeleteState - - /** - * This tweet has been permanently deleted from Manhattan. - */ - case object HardDeleted extends DeleteState - - /** - * There is no data in Manhattan to distinguish this tweet id from one that never existed. - */ - case object NotFound extends DeleteState - - /** - * This tweet exists and is not in a deleted state. - */ - case object NotDeleted extends DeleteState -} - -case class DeletedTweetResponse( - tweetId: TweetId, - overallResponse: TweetResponseCode, - deleteState: DeleteState, - tweet: Option[DeletedTweet]) - -object GetDeletedTweetsHandler { - def apply( - read: ManhattanOperations.Read, - stats: StatsReceiver - ): TweetStorageClient.GetDeletedTweets = - (unfilteredTweetIds: Seq[TweetId]) => { - val tweetIds = unfilteredTweetIds.filter(_ > 0) - - Stats.addWidthStat("getDeletedTweets", "tweetIds", tweetIds.size, stats) - - val stitches = tweetIds.map { tweetId => - read(tweetId) - .map { mhRecords => - val storedTweet = buildStoredTweet(tweetId, mhRecords) - - TweetStateRecord.mostRecent(mhRecords) match { - case Some(m: TweetStateRecord.SoftDeleted) => softDeleted(m, storedTweet) - case Some(m: TweetStateRecord.BounceDeleted) => bounceDeleted(m, storedTweet) - case Some(m: TweetStateRecord.HardDeleted) => hardDeleted(m, storedTweet) - case _ if storedTweet.getFieldBlobs(expectedFields).isEmpty => notFound(tweetId) - case _ => notDeleted(tweetId, storedTweet) - } - } - .handle { - case _: DeniedManhattanException => - DeletedTweetResponse( - tweetId, - TweetResponseCode.OverCapacity, - DeleteState.NotFound, - None - ) - - case NonFatal(ex) => - TweetUtils.log.warning( - ex, - s"Unhandled exception in GetDeletedTweetsHandler for tweetId: $tweetId" - ) - DeletedTweetResponse(tweetId, TweetResponseCode.Failure, DeleteState.NotFound, None) - } - } - - Stitch.collect(stitches) - } - - private def notFound(tweetId: TweetId) = - DeletedTweetResponse( - tweetId = tweetId, - overallResponse = TweetResponseCode.Success, - deleteState = DeleteState.NotFound, - tweet = None - ) - - private def softDeleted(record: TweetStateRecord.SoftDeleted, storedTweet: StoredTweet) = - DeletedTweetResponse( - record.tweetId, - TweetResponseCode.Success, - DeleteState.SoftDeleted, - Some( - StorageConversions - .toDeletedTweet(storedTweet) - .copy(deletedAtMsec = Some(record.createdAt)) - ) - ) - - private def bounceDeleted(record: TweetStateRecord.BounceDeleted, storedTweet: StoredTweet) = - DeletedTweetResponse( - record.tweetId, - TweetResponseCode.Success, - DeleteState.BounceDeleted, - Some( - StorageConversions - .toDeletedTweet(storedTweet) - .copy(deletedAtMsec = Some(record.createdAt)) - ) - ) - - private def hardDeleted(record: TweetStateRecord.HardDeleted, storedTweet: StoredTweet) = - DeletedTweetResponse( - record.tweetId, - TweetResponseCode.Success, - DeleteState.HardDeleted, - Some( - StorageConversions - .toDeletedTweet(storedTweet) - .copy( - hardDeletedAtMsec = Some(record.createdAt), - deletedAtMsec = Some(record.deletedAt) - ) - ) - ) - - /** - * notDeleted returns a tweet to simplify tweetypie.handler.UndeleteTweetHandler - */ - private def notDeleted(tweetId: TweetId, storedTweet: StoredTweet) = - DeletedTweetResponse( - tweetId = tweetId, - overallResponse = TweetResponseCode.Success, - deleteState = DeleteState.NotDeleted, - tweet = Some(StorageConversions.toDeletedTweet(storedTweet)) - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a25cc18068b6e802efdb3240c469d63fc781cf2 GIT binary patch literal 38138 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.scala deleted file mode 100644 index eafdda5e9..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetStoredTweetHandler.scala +++ /dev/null @@ -1,126 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.stitch.Stitch -import com.twitter.stitch.StitchSeqGroup -import com.twitter.tweetypie.storage.TweetStorageClient.GetStoredTweet -import com.twitter.tweetypie.storage.TweetStorageClient.GetStoredTweet.Error -import com.twitter.tweetypie.storage.TweetStorageClient.GetStoredTweet.Response._ -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.util.Time -import com.twitter.util.Try -import scala.collection.mutable - -object GetStoredTweetHandler { - private[this] object DeletedState { - def unapply(stateRecord: Option[TweetStateRecord]): Option[TweetStateRecord] = - stateRecord match { - case state @ (Some(_: TweetStateRecord.SoftDeleted) | Some( - _: TweetStateRecord.HardDeleted) | Some(_: TweetStateRecord.BounceDeleted)) => - state - case _ => None - } - } - - private[this] def deletedAtMs(stateRecord: Option[TweetStateRecord]): Option[Long] = - stateRecord match { - case Some(d: TweetStateRecord.SoftDeleted) => Some(d.createdAt) - case Some(d: TweetStateRecord.BounceDeleted) => Some(d.createdAt) - case Some(d: TweetStateRecord.HardDeleted) => Some(d.deletedAt) - case _ => None - } - - private[this] def tweetResponseFromRecords( - tweetId: TweetId, - mhRecords: Seq[TweetManhattanRecord], - statsReceiver: StatsReceiver, - ): GetStoredTweet.Response = { - val errs = - mutable.Buffer[Error]() - - val hasStoredTweetFields: Boolean = mhRecords.exists { - case TweetManhattanRecord(TweetKey(_, _: TweetKey.LKey.FieldKey), _) => true - case _ => false - } - - val storedTweet = if (hasStoredTweetFields) { - Try(buildStoredTweet(tweetId, mhRecords, includeScrubbed = true)) - .onFailure(_ => errs.append(Error.TweetIsCorrupt)) - .toOption - } else { - None - } - - val scrubbedFields: Set[FieldId] = extractScrubbedFields(mhRecords) - val tweet: Option[Tweet] = storedTweet.map(StorageConversions.fromStoredTweetAllowInvalid) - val stateRecords: Seq[TweetStateRecord] = TweetStateRecord.fromTweetMhRecords(mhRecords) - val tweetState: Option[TweetStateRecord] = TweetStateRecord.mostRecent(mhRecords) - - storedTweet.foreach { storedTweet => - val storedExpectedFields = storedTweet.getFieldBlobs(expectedFields) - val missingExpectedFields = expectedFields.filterNot(storedExpectedFields.contains) - if (missingExpectedFields.nonEmpty || !isValid(storedTweet)) { - errs.append(Error.TweetFieldsMissingOrInvalid) - } - - val invalidScrubbedFields = storedTweet.getFieldBlobs(scrubbedFields).keys - if (invalidScrubbedFields.nonEmpty) { - errs.append(Error.ScrubbedFieldsPresent) - } - - if (deletedAtMs(tweetState).exists(_ < Time.now.inMilliseconds - 14.days.inMilliseconds)) { - errs.append(Error.TweetShouldBeHardDeleted) - } - } - - val err = Option(errs.toList).filter(_.nonEmpty) - - (tweet, tweetState, err) match { - case (None, None, None) => - statsReceiver.counter("not_found").incr() - NotFound(tweetId) - - case (None, Some(tweetState: TweetStateRecord.HardDeleted), None) => - statsReceiver.counter("hard_deleted").incr() - HardDeleted(tweetId, Some(tweetState), stateRecords, scrubbedFields) - - case (None, _, Some(errs)) => - statsReceiver.counter("failed").incr() - Failed(tweetId, tweetState, stateRecords, scrubbedFields, errs) - - case (Some(tweet), _, Some(errs)) => - statsReceiver.counter("found_invalid").incr() - FoundWithErrors(tweet, tweetState, stateRecords, scrubbedFields, errs) - - case (Some(tweet), DeletedState(state), None) => - statsReceiver.counter("deleted").incr() - FoundDeleted(tweet, Some(state), stateRecords, scrubbedFields) - - case (Some(tweet), _, None) => - statsReceiver.counter("found").incr() - Found(tweet, tweetState, stateRecords, scrubbedFields) - } - } - - def apply(read: ManhattanOperations.Read, statsReceiver: StatsReceiver): GetStoredTweet = { - - object mhGroup extends StitchSeqGroup[TweetId, Seq[TweetManhattanRecord]] { - override def run(tweetIds: Seq[TweetId]): Stitch[Seq[Seq[TweetManhattanRecord]]] = { - Stats.addWidthStat("getStoredTweet", "tweetIds", tweetIds.size, statsReceiver) - Stitch.traverse(tweetIds)(read(_)) - } - } - - tweetId => - if (tweetId <= 0) { - Stitch.NotFound - } else { - Stitch - .call(tweetId, mhGroup) - .map(mhRecords => - tweetResponseFromRecords(tweetId, mhRecords, statsReceiver.scope("getStoredTweet"))) - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..2db3d15c69443bd2238cf72e2f9778b947f363b1 GIT binary patch literal 39031 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.scala deleted file mode 100644 index f68025e2d..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/GetTweetHandler.scala +++ /dev/null @@ -1,167 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.stats.Counter -import com.twitter.finagle.stats.NullStatsReceiver -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.logging.Logger -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.stitch.Stitch -import com.twitter.stitch.StitchSeqGroup -import com.twitter.storage.client.manhattan.kv.DeniedManhattanException -import com.twitter.storage.client.manhattan.kv.ManhattanException -import com.twitter.tweetypie.storage.TweetStateRecord.BounceDeleted -import com.twitter.tweetypie.storage.TweetStateRecord.HardDeleted -import com.twitter.tweetypie.storage.TweetStateRecord.SoftDeleted -import com.twitter.tweetypie.storage.TweetStorageClient.GetTweet -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.util.Duration -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Time - -object GetTweetHandler { - private[this] val logger = Logger(getClass) - - ////////////////////////////////////////////////// - // Logging racy reads for later validation. - - val RacyTweetWindow: Duration = 10.seconds - - /** - * If this read is soon after the tweet was created, then we would usually - * expect it to be served from cache. This early read indicates that this - * tweet is prone to consistency issues, so we log what's present in - * Manhattan at the time of the read for later analysis. - */ - private[this] def logRacyRead(tweetId: TweetId, records: Seq[TweetManhattanRecord]): Unit = - if (SnowflakeId.isSnowflakeId(tweetId)) { - val tweetAge = Time.now.since(SnowflakeId(tweetId).time) - if (tweetAge <= RacyTweetWindow) { - val sb = new StringBuilder - sb.append("racy_tweet_read\t") - .append(tweetId) - .append('\t') - .append(tweetAge.inMilliseconds) // Log the age for analysis purposes - records.foreach { rec => - sb.append('\t') - .append(rec.lkey) - rec.value.timestamp.foreach { ts => - // If there is a timestamp for this key, log it so that we can tell - // later on whether a value should have been present. We expect - // keys written in a single write to have the same timestamp, and - // generally, keys written in separate writes will have different - // timestamps. The timestamp value is optional in Manhattan, but - // we expect there to always be a value for the timestamp. - sb.append(':') - .append(ts.inMilliseconds) - } - } - logger.info(sb.toString) - } - } - - /** - * Convert a set of records from Manhattan into a GetTweet.Response. - */ - def tweetResponseFromRecords( - tweetId: TweetId, - mhRecords: Seq[TweetManhattanRecord], - statsReceiver: StatsReceiver = NullStatsReceiver - ): GetTweet.Response = - if (mhRecords.isEmpty) { - GetTweet.Response.NotFound - } else { - // If no internal fields are present or no required fields present, we consider the tweet - // as not returnable (even if some additional fields are present) - def tweetFromRecords(tweetId: TweetId, mhRecords: Seq[TweetManhattanRecord]) = { - val storedTweet = buildStoredTweet(tweetId, mhRecords) - if (storedTweet.getFieldBlobs(expectedFields).nonEmpty) { - if (isValid(storedTweet)) { - statsReceiver.counter("valid").incr() - Some(StorageConversions.fromStoredTweet(storedTweet)) - } else { - log.info(s"Invalid Tweet Id: $tweetId") - statsReceiver.counter("invalid").incr() - None - } - } else { - // The Tweet contained none of the fields defined in `expectedFields` - log.info(s"Expected Fields Not Present Tweet Id: $tweetId") - statsReceiver.counter("expected_fields_not_present").incr() - None - } - } - - val stateRecord = TweetStateRecord.mostRecent(mhRecords) - stateRecord match { - // some other cases don't require an attempt to construct a Tweet - case Some(_: SoftDeleted) | Some(_: HardDeleted) => GetTweet.Response.Deleted - - // all other cases require an attempt to construct a Tweet, which may not be successful - case _ => - logRacyRead(tweetId, mhRecords) - (stateRecord, tweetFromRecords(tweetId, mhRecords)) match { - // BounceDeleted contains the Tweet data so that callers can access data on the the - // tweet (e.g. hard delete daemon requires conversationId and userId. There are no - // plans for Tweetypie server to make use of the returned tweet at this time. - case (Some(_: BounceDeleted), Some(tweet)) => GetTweet.Response.BounceDeleted(tweet) - case (Some(_: BounceDeleted), None) => GetTweet.Response.Deleted - case (_, Some(tweet)) => GetTweet.Response.Found(tweet) - case _ => GetTweet.Response.NotFound - } - } - } - - def apply(read: ManhattanOperations.Read, statsReceiver: StatsReceiver): GetTweet = { - - object stats { - val getTweetScope = statsReceiver.scope("getTweet") - val deniedCounter: Counter = getTweetScope.counter("mh_denied") - val mhExceptionCounter: Counter = getTweetScope.counter("mh_exception") - val nonFatalExceptionCounter: Counter = getTweetScope.counter("non_fatal_exception") - val notFoundCounter: Counter = getTweetScope.counter("not_found") - } - - object mhGroup extends StitchSeqGroup[TweetId, Seq[TweetManhattanRecord]] { - override def run(tweetIds: Seq[TweetId]): Stitch[Seq[Seq[TweetManhattanRecord]]] = { - Stats.addWidthStat("getTweet", "tweetIds", tweetIds.size, statsReceiver) - Stitch.traverse(tweetIds)(read(_)) - } - } - - tweetId => - if (tweetId <= 0) { - Stitch.NotFound - } else { - Stitch - .call(tweetId, mhGroup) - .map(mhRecords => tweetResponseFromRecords(tweetId, mhRecords, stats.getTweetScope)) - .liftToTry - .map { - case Throw(mhException: DeniedManhattanException) => - stats.deniedCounter.incr() - Throw(RateLimited("", mhException)) - - // Encountered some other Manhattan error - case t @ Throw(_: ManhattanException) => - stats.mhExceptionCounter.incr() - t - - // Something else happened - case t @ Throw(ex) => - stats.nonFatalExceptionCounter.incr() - TweetUtils.log - .warning(ex, s"Unhandled exception in GetTweetHandler for tweetId: $tweetId") - t - - case r @ Return(GetTweet.Response.NotFound) => - stats.notFoundCounter.incr() - r - - case r @ Return(_) => r - } - .lowerFromTry - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..c32feefb19a8cc974e8284dd946841ce125107d7 GIT binary patch literal 38717 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.scala deleted file mode 100644 index 8483926f4..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/HardDeleteTweetHandler.scala +++ /dev/null @@ -1,153 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.storage.TweetKey.LKey.ForceAddedStateKey -import com.twitter.tweetypie.storage.TweetStorageClient.HardDeleteTweet -import com.twitter.tweetypie.storage.TweetStorageClient.HardDeleteTweet.Response._ -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Time -import com.twitter.util.Try - -object HardDeleteTweetHandler { - - /** - * When a tweet is removed lkeys with these prefixes will be deleted permanently. - */ - private[storage] def isKeyToBeDeleted(key: TweetKey): Boolean = - key.lKey match { - case (TweetKey.LKey.CoreFieldsKey | TweetKey.LKey.InternalFieldsKey(_) | - TweetKey.LKey.AdditionalFieldsKey(_) | TweetKey.LKey.SoftDeletionStateKey | - TweetKey.LKey.BounceDeletionStateKey | TweetKey.LKey.UnDeletionStateKey | - TweetKey.LKey.ForceAddedStateKey) => - true - case _ => false - } - - /** - * When hard deleting, there are two actions, writing the record and - * removing the tweet data. If we are performing any action, we will - * always try to remove the tweet data. If the tweet does not yet have a - * hard deletion record, then we will need to write one. This method - * returns the HardDeleted record if it needs to be written, and None - * if it has already been written. - * - * If the tweet is not in a deleted state we signal this with a - * Throw(NotDeleted). - */ - private[storage] def getHardDeleteStateRecord( - tweetId: TweetId, - records: Seq[TweetManhattanRecord], - mhTimestamp: Time, - stats: StatsReceiver - ): Try[Option[TweetStateRecord.HardDeleted]] = { - val mostRecent = TweetStateRecord.mostRecent(records) - val currentStateStr = mostRecent.map(_.name).getOrElse("no_tweet_state_record") - stats.counter(currentStateStr).incr() - - mostRecent match { - case Some( - record @ (TweetStateRecord.SoftDeleted(_, _) | TweetStateRecord.BounceDeleted(_, _))) => - Return( - Some( - TweetStateRecord.HardDeleted( - tweetId = tweetId, - // createdAt is the hard deletion timestamp when dealing with hard deletes in Manhattan - createdAt = mhTimestamp.inMillis, - // deletedAt is the soft deletion timestamp when dealing with hard deletes in Manhattan - deletedAt = record.createdAt - ) - ) - ) - - case Some(_: TweetStateRecord.HardDeleted) => - Return(None) - - case Some(_: TweetStateRecord.ForceAdded) => - Throw(NotDeleted(tweetId, Some(ForceAddedStateKey))) - - case Some(_: TweetStateRecord.Undeleted) => - Throw(NotDeleted(tweetId, Some(TweetKey.LKey.UnDeletionStateKey))) - - case None => - Throw(NotDeleted(tweetId, None)) - } - } - - /** - * This handler returns HardDeleteTweet.Response.Deleted if data associated with the tweet is deleted, - * either as a result of this request or a previous one. - * - * The most recently added record determines the tweet's state. This method will only delete data - * for tweets in the soft-delete or hard-delete state. (Calling hardDeleteTweet for tweets that have - * already been hard-deleted will remove any lkeys that may not have been deleted previously). - */ - def apply( - read: ManhattanOperations.Read, - insert: ManhattanOperations.Insert, - delete: ManhattanOperations.Delete, - scribe: Scribe, - stats: StatsReceiver - ): TweetId => Stitch[HardDeleteTweet.Response] = { - val hardDeleteStats = stats.scope("hardDeleteTweet") - val hardDeleteTweetCancelled = hardDeleteStats.counter("cancelled") - val beforeStateStats = hardDeleteStats.scope("before_state") - - def removeRecords(keys: Seq[TweetKey], mhTimestamp: Time): Stitch[Unit] = - Stitch - .collect(keys.map(key => delete(key, Some(mhTimestamp)).liftToTry)) - .map(collectWithRateLimitCheck) - .lowerFromTry - - def writeRecord(record: Option[TweetStateRecord.HardDeleted]): Stitch[Unit] = - record match { - case Some(r) => - insert(r.toTweetMhRecord).onSuccess { _ => - scribe.logRemoved( - r.tweetId, - Time.fromMilliseconds(r.createdAt), - isSoftDeleted = false - ) - } - case None => Stitch.Unit - } - - tweetId => - read(tweetId) - .flatMap { records => - val hardDeletionTimestamp = Time.now - - val keysToBeDeleted: Seq[TweetKey] = records.map(_.key).filter(isKeyToBeDeleted) - - getHardDeleteStateRecord( - tweetId, - records, - hardDeletionTimestamp, - beforeStateStats) match { - case Return(record) => - Stitch - .join( - writeRecord(record), - removeRecords(keysToBeDeleted, hardDeletionTimestamp) - ).map(_ => - // If the tweetId is non-snowflake and has previously been hard deleted - // there will be no coreData record to fall back on to get the tweet - // creation time and createdAtMillis will be None. - Deleted( - // deletedAtMillis: when the tweet was hard deleted - deletedAtMillis = Some(hardDeletionTimestamp.inMillis), - // createdAtMillis: when the tweet itself was created - // (as opposed to when the deletion record was created) - createdAtMillis = - TweetUtils.creationTimeFromTweetIdOrMHRecords(tweetId, records) - )) - case Throw(notDeleted: NotDeleted) => - hardDeleteTweetCancelled.incr() - Stitch.value(notDeleted) - case Throw(e) => Stitch.exception(e) // this should never happen - } - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/InspectFields.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/InspectFields.docx new file mode 100644 index 0000000000000000000000000000000000000000..0a05669841c0c431deff29f1e0c2234ec3c72d4c GIT binary patch literal 39280 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 h4<6vD6aScEhoeJ%ElOYp{g_qEARAzM?4 TweetypieTweet} -import com.twitter.util.Duration -import com.twitter.util.Future -import com.twitter.util.Return -import com.twitter.util.Throw -import diffshow.Container -import diffshow.DiffShow -import diffshow.Expr -import org.apache.commons.codec.binary.Base64 -import scala.util.Try -import shapeless.Cached -import shapeless.Strict - -// This class is used by the Tweetypie Console to inspect tweet field content in Manhattan -class InspectFields(svcIdentifier: ServiceIdentifier) { - val mhApplicationId = "tbird_mh" - val mhDatasetName = "tbird_mh" - val mhDestinationName = "/s/manhattan/cylon.native-thrift" - val mhTimeout: Duration = 5000.milliseconds - - val localMhEndpoint: ManhattanKVEndpoint = - ManhattanKVEndpointBuilder( - ManhattanKVClient( - mhApplicationId, - mhDestinationName, - ManhattanKVClientMtlsParams(svcIdentifier))) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(mhTimeout) - .build() - - val readOperation: Read = (new ManhattanOperations(mhDatasetName, localMhEndpoint)).read - - def lookup(tweetId: Long): Future[String] = { - val result = readOperation(tweetId).liftToTry.map { - case Return(mhRecords) => - prettyPrintManhattanRecords(tweetId, TweetKey.padTweetIdStr(tweetId), mhRecords) - case Throw(e) => e.toString - } - - Stitch.run(result) - } - - def storedTweet(tweetId: Long): Future[StoredTweet] = { - val result = readOperation(tweetId).liftToTry.map { - case Return(mhRecords) => - buildStoredTweet(tweetId, mhRecords) - case Throw(e) => - throw e - } - - Stitch.run(result) - } - - private[this] def prettyPrintManhattanRecords( - tweetId: Long, - pkey: String, - mhRecords: Seq[TweetManhattanRecord] - ): String = { - if (mhRecords.isEmpty) { - "Not Found" - } else { - val formattedRecords = getFormattedManhattanRecords(tweetId, mhRecords) - val keyFieldWidth = formattedRecords.map(_.key.length).max + 2 - val fieldNameFieldWidth = formattedRecords.map(_.fieldName.length).max + 2 - - val formatString = s" %-${keyFieldWidth}s %-${fieldNameFieldWidth}s %s" - - val recordsString = - formattedRecords - .map { record => - val content = record.content.replaceAll("\n", "\n" + formatString.format("", "", "")) - formatString.format(record.key, record.fieldName, content) - } - .mkString("\n") - - "/tbird_mh/" + pkey + "/" + "\n" + recordsString - } - } - - private[this] def getFormattedManhattanRecords( - tweetId: Long, - mhRecords: Seq[TweetManhattanRecord] - ): Seq[FormattedManhattanRecord] = { - val storedTweet = buildStoredTweet(tweetId, mhRecords).copy(updatedAt = None) - val tweetypieTweet: Option[TweetypieTweet] = - Try(StorageConversions.fromStoredTweet(storedTweet)).toOption - - val blobMap: Map[String, TFieldBlob] = getStoredTweetBlobs(mhRecords).map { blob => - getFieldName(blob.field.id) -> blob - }.toMap - - mhRecords - .map { - case TweetManhattanRecord(fullKey, mhValue) => - FormattedManhattanRecord( - key = fullKey.lKey.toString, - fieldName = getFieldName(fullKey.lKey), - content = prettyPrintManhattanValue( - fullKey.lKey, - mhValue, - storedTweet, - tweetypieTweet, - tweetId, - blobMap - ) - ) - } - .sortBy(_.key.replace("external", "xternal")) // sort by key, with internal first - } - - private[this] def getFieldNameFromThrift( - fieldId: Short, - fieldInfos: List[ThriftStructFieldInfo] - ): String = - fieldInfos - .find(info => info.tfield.id == fieldId) - .map(_.tfield.name) - .getOrElse("") - - private[this] def isLkeyScrubbedField(lkey: String): Boolean = - lkey.split("/")(1) == "scrubbed_fields" - - private[this] def getFieldName(lkey: TweetKey.LKey): String = - lkey match { - case fieldKey: TweetKey.LKey.FieldKey => getFieldName(fieldKey.fieldId) - case _ => "" - } - - private[this] def getFieldName(fieldId: Short): String = - if (fieldId == 1) { - "core_fields" - } else if (AdditionalFields.isAdditionalFieldId(fieldId)) { - getFieldNameFromThrift(fieldId, TweetypieTweet.fieldInfos) - } else { - getFieldNameFromThrift(fieldId, StoredTweet.fieldInfos) - } - - private[this] def prettyPrintManhattanValue( - lkey: TweetKey.LKey, - mhValue: TweetManhattanValue, - storedTweet: StoredTweet, - tweetypieTweet: Option[TweetypieTweet], - tweetId: Long, - tfieldBlobs: Map[String, TFieldBlob] - ): String = { - val decoded = lkey match { - case _: TweetKey.LKey.MetadataKey => - decodeMetadata(mhValue) - - case fieldKey: TweetKey.LKey.FieldKey => - tfieldBlobs - .get(getFieldName(fieldKey.fieldId)) - .map(blob => decodeField(tweetId, blob, storedTweet, tweetypieTweet)) - - case _ => - None - } - - decoded.getOrElse { // If all else fails, encode the data as a base64 string - val contents = mhValue.contents.array - if (contents.isEmpty) { - "" - } else { - Base64.encodeBase64String(contents) - } - } - } - - private[this] def decodeMetadata(mhValue: TweetManhattanValue): Option[String] = { - val byteArray = ByteArrayCodec.fromByteBuffer(mhValue.contents) - Try(Json.decode(byteArray).toString).toOption - } - - private[this] def decodeField( - tweetId: Long, - blob: TFieldBlob, - storedTweet: StoredTweet, - tweetypieTweet: Option[TweetypieTweet] - ): String = { - val fieldId = blob.field.id - - if (fieldId == 1) { - coreFields(storedTweet) - } else if (AdditionalFields.isAdditionalFieldId(fieldId)) { - decodeTweetWithOneField(TweetypieTweet(tweetId).setField(blob)) - } else { - decodeTweetWithOneField(StoredTweet(tweetId).setField(blob)) - } - } - - // Takes a Tweet or StoredTweet with a single field set and returns the value of that field - private[this] def decodeTweetWithOneField[T]( - tweetWithOneField: T - )( - implicit ev: Cached[Strict[DiffShow[T]]] - ): String = { - val config = diffshow.Config(hideFieldWithEmptyVal = true) - val tree: Expr = config.transform(DiffShow.show(tweetWithOneField)) - - // matches a Tweet or StoredTweet with two values, the first being the id - val value = tree.transform { - case Container(_, List(diffshow.Field("id", _), diffshow.Field(_, value))) => value - } - - config.exprPrinter.apply(value, width = 80).render - } - - private[this] def coreFields(storedTweet: StoredTweet): String = - diffshow.show(CoreFieldsCodec.fromTweet(storedTweet), hideFieldWithEmptyVal = true) - - private[this] def toCamelCase(s: String): String = - CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, s) -} - -case class FormattedManhattanRecord(key: String, fieldName: String, content: String) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.docx new file mode 100644 index 0000000000000000000000000000000000000000..69962ed819acc8600b9f367d09b2377571874ba9 GIT binary patch literal 36930 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 TD=-Iva+M%MA~1WL?gsGyn*0n6 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.scala deleted file mode 100644 index e5f087a34..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Json.scala +++ /dev/null @@ -1,17 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.module.scala.DefaultScalaModule - -object Json { - val TimestampKey = "timestamp" - val SoftDeleteTimestampKey = "softdelete_timestamp" - - private val mapper = new ObjectMapper - mapper.registerModule(DefaultScalaModule) - - def encode(m: Map[String, Any]): Array[Byte] = mapper.writeValueAsBytes(m) - - def decode(arr: Array[Byte]): Map[String, Any] = - mapper.readValue[Map[String, Any]](arr, classOf[Map[String, Any]]) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.docx new file mode 100644 index 0000000000000000000000000000000000000000..81b424f387f5a6cef8ece6d682731a7ef48d60ea GIT binary patch literal 38054 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.scala deleted file mode 100644 index fed0af6c7..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanOperations.scala +++ /dev/null @@ -1,103 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.bijection.Injection -import com.twitter.io.Buf -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.bijections.Bijections.BufInjection -import com.twitter.storage.client.manhattan.kv.ManhattanKVEndpoint -import com.twitter.storage.client.manhattan.kv.impl.DescriptorP1L1 -import com.twitter.storage.client.manhattan.kv.impl.Component -import com.twitter.storage.client.manhattan.kv.{impl => mh} -import com.twitter.storage.client.manhattan.bijections.Bijections.StringInjection -import com.twitter.util.Time -import java.nio.ByteBuffer -import scala.util.control.NonFatal - -case class TweetManhattanRecord(key: TweetKey, value: TweetManhattanValue) { - def pkey: TweetId = key.tweetId - def lkey: TweetKey.LKey = key.lKey - - /** - * Produces a representation that is human-readable, but contains - * all of the information from the record. It is not intended for - * producing machine-readable values. - * - * This conversion is relatively expensive, so beware of using it in - * hot code paths. - */ - override def toString: String = { - val valueString = - try { - key.lKey match { - case _: TweetKey.LKey.MetadataKey => - StringCodec.fromByteBuffer(value.contents) - - case _: TweetKey.LKey.FieldKey => - val tFieldBlob = TFieldBlobCodec.fromByteBuffer(value.contents) - s"TFieldBlob(${tFieldBlob.field}, 0x${Buf.slowHexString(tFieldBlob.content)})" - - case TweetKey.LKey.Unknown(_) => - "0x" + Buf.slowHexString(Buf.ByteBuffer.Shared(value.contents)) - } - } catch { - case NonFatal(e) => - val hexValue = Buf.slowHexString(Buf.ByteBuffer.Shared(value.contents)) - s"0x$hexValue (failed to decode due to $e)" - } - - s"$key => ${value.copy(contents = valueString)}" - } -} - -object ManhattanOperations { - type Read = TweetId => Stitch[Seq[TweetManhattanRecord]] - type Insert = TweetManhattanRecord => Stitch[Unit] - type Delete = (TweetKey, Option[Time]) => Stitch[Unit] - type DeleteRange = TweetId => Stitch[Unit] - - object PkeyInjection extends Injection[TweetId, String] { - override def apply(tweetId: TweetId): String = TweetKey.padTweetIdStr(tweetId) - override def invert(str: String): scala.util.Try[TweetId] = scala.util.Try(str.toLong) - } - - case class InvalidLkey(lkeyStr: String) extends Exception - - object LkeyInjection extends Injection[TweetKey.LKey, String] { - override def apply(lkey: TweetKey.LKey): String = lkey.toString - override def invert(str: String): scala.util.Try[TweetKey.LKey] = - scala.util.Success(TweetKey.LKey.fromString(str)) - } - - val KeyDescriptor: DescriptorP1L1.EmptyKey[TweetId, TweetKey.LKey] = - mh.KeyDescriptor( - Component(PkeyInjection.andThen(StringInjection)), - Component(LkeyInjection.andThen(StringInjection)) - ) - - val ValueDescriptor: mh.ValueDescriptor.EmptyValue[ByteBuffer] = mh.ValueDescriptor(BufInjection) -} - -class ManhattanOperations(dataset: String, mhEndpoint: ManhattanKVEndpoint) { - import ManhattanOperations._ - - private[this] def pkey(tweetId: TweetId) = KeyDescriptor.withDataset(dataset).withPkey(tweetId) - - def read: Read = { tweetId => - mhEndpoint.slice(pkey(tweetId).under(), ValueDescriptor).map { mhData => - mhData.map { - case (key, value) => TweetManhattanRecord(TweetKey(key.pkey, key.lkey), value) - } - } - } - - def insert: Insert = - record => { - val mhKey = pkey(record.key.tweetId).withLkey(record.key.lKey) - mhEndpoint.insert(mhKey, ValueDescriptor.withValue(record.value)) - } - - def delete: Delete = (key, time) => mhEndpoint.delete(pkey(key.tweetId).withLkey(key.lKey), time) - - def deleteRange: DeleteRange = - tweetId => mhEndpoint.deleteRange(KeyDescriptor.withDataset(dataset).withPkey(tweetId).under()) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.docx new file mode 100644 index 0000000000000000000000000000000000000000..d33ebb40d12956c073e12ef0802676a903f157da GIT binary patch literal 41251 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.scala deleted file mode 100644 index daf6a3076..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ManhattanTweetStorageClient.scala +++ /dev/null @@ -1,451 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.mtls.authentication.EmptyServiceIdentifier -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.ssl.OpportunisticTls -import com.twitter.finagle.stats.NullStatsReceiver -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.logging.BareFormatter -import com.twitter.logging.Level -import com.twitter.logging.ScribeHandler -import com.twitter.logging._ -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.bijections.Bijections._ -import com.twitter.storage.client.manhattan.kv._ -import com.twitter.storage.client.manhattan.kv.impl.ValueDescriptor -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.storage.Scribe.ScribeHandlerFactory -import com.twitter.tweetypie.storage.TweetStorageClient.BounceDelete -import com.twitter.tweetypie.storage.TweetStorageClient.GetTweet -import com.twitter.tweetypie.storage.TweetStorageClient.HardDeleteTweet -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.tweetypie.util.StitchUtils -import com.twitter.util.Duration -import com.twitter.util.Return -import com.twitter.util.Throw -import scala.util.Random - -object ManhattanTweetStorageClient { - object Config { - - /** - * The Manhattan dataset where tweets are stored is not externally - * configurable because writing tweets to a non-production dataset - * requires great care. Staging instances using a different dataset will - * write tweets to a non-production store, but will publish events, log to - * HDFS, and cache data referencing tweets in that store which are not - * accessible by the rest of the production cluster. - * - * In a completely isolated environment it should be safe to write to - * other datasets for testing purposes. - */ - val Dataset = "tbird_mh" - - /** - * Once a tweet has been deleted it can only be undeleted within this time - * window, after which [[UndeleteHandler]] will return an error on - * undelete attempts. - */ - val UndeleteWindowHours = 240 - - /** - * Default label used for underlying Manhattan Thrift client metrics - * - * The finagle client metrics will be exported at clnt/:label. - */ - val ThriftClientLabel = "mh_cylon" - - /** - * Return the corresponding Wily path for the Cylon cluster in the "other" DC - */ - def remoteDestination(zone: String): String = - s"/srv#/prod/${remoteZone(zone)}/manhattan/cylon.native-thrift" - - private def remoteZone(zone: String) = zone match { - case "pdxa" => "atla" - case "atla" | "localhost" => "pdxa" - case _ => - throw new IllegalArgumentException(s"Cannot configure remote DC for unknown zone '$zone'") - } - } - - /** - * @param applicationId Manhattan application id used for quota accounting - * @param localDestination Wily path to local Manhattan cluster - * @param localTimeout Overall timeout (including retries) for all reads/writes to local cluster - * @param remoteDestination Wily path to remote Manhattan cluster, used for undelete and force add - * @param remoteTimeout Overall timeout (including retries) for all reads/writes to remote cluster - * @param undeleteWindowHours Amount of time during which a deleted tweet can be undeleted - * @param thriftClientLabel Label used to scope stats for Manhattan Thrift client - * @param maxRequestsPerBatch Configure the Stitch RequestGroup.Generator batch size - * @param serviceIdentifier The ServiceIdentifier to use when making connections to a Manhattan cluster - * @param opportunisticTlsLevel The level to use for opportunistic TLS for connections to the Manhattan cluster - */ - case class Config( - applicationId: String, - localDestination: String, - localTimeout: Duration, - remoteDestination: String, - remoteTimeout: Duration, - undeleteWindowHours: Int = Config.UndeleteWindowHours, - thriftClientLabel: String = Config.ThriftClientLabel, - maxRequestsPerBatch: Int = Int.MaxValue, - serviceIdentifier: ServiceIdentifier, - opportunisticTlsLevel: OpportunisticTls.Level) - - /** - * Sanitizes the input for APIs which take in a (Tweet, Seq[Field]) as input. - * - * NOTE: This function only applies sanity checks which are common to - * all APIs which take in a (Tweet, Seq[Field]) as input. API specific - * checks are not covered here. - * - * @param apiStitch the backing API call - * @tparam T the output type of the backing API call - * @return a stitch function which does some basic input sanity checking - */ - private[storage] def sanitizeTweetFields[T]( - apiStitch: (Tweet, Seq[Field]) => Stitch[T] - ): (Tweet, Seq[Field]) => Stitch[T] = - (tweet, fields) => { - require(fields.forall(_.id > 0), s"Field ids ${fields} are not positive numbers") - apiStitch(tweet, fields) - } - - // Returns a handler that asynchronously logs messages to Scribe using the BareFormatter which - // logs just the message without any additional metadata - def scribeHandler(categoryName: String): HandlerFactory = - ScribeHandler( - formatter = BareFormatter, - maxMessagesPerTransaction = 100, - category = categoryName, - level = Some(Level.TRACE) - ) - - /** - * A Config appropriate for interactive sessions and scripts. - */ - def develConfig(): Config = - Config( - applicationId = Option(System.getenv("USER")).getOrElse("") + ".devel", - localDestination = "/s/manhattan/cylon.native-thrift", - localTimeout = 10.seconds, - remoteDestination = "/s/manhattan/cylon.native-thrift", - remoteTimeout = 10.seconds, - undeleteWindowHours = Config.UndeleteWindowHours, - thriftClientLabel = Config.ThriftClientLabel, - maxRequestsPerBatch = Int.MaxValue, - serviceIdentifier = ServiceIdentifier(System.getenv("USER"), "tweetypie", "devel", "local"), - opportunisticTlsLevel = OpportunisticTls.Required - ) - - /** - * Build a Manhattan tweet storage client for use in interactive - * sessions and scripts. - */ - def devel(): TweetStorageClient = - new ManhattanTweetStorageClient( - develConfig(), - NullStatsReceiver, - ClientIdHelper.default, - ) -} - -class ManhattanTweetStorageClient( - config: ManhattanTweetStorageClient.Config, - statsReceiver: StatsReceiver, - private val clientIdHelper: ClientIdHelper) - extends TweetStorageClient { - import ManhattanTweetStorageClient._ - - lazy val scribeHandlerFactory: ScribeHandlerFactory = scribeHandler _ - val scribe: Scribe = new Scribe(scribeHandlerFactory, statsReceiver) - - def mkClient( - dest: String, - label: String - ): ManhattanKVClient = { - val mhMtlsParams = - if (config.serviceIdentifier == EmptyServiceIdentifier) NoMtlsParams - else - ManhattanKVClientMtlsParams( - serviceIdentifier = config.serviceIdentifier, - opportunisticTls = config.opportunisticTlsLevel - ) - - new ManhattanKVClient( - config.applicationId, - dest, - mhMtlsParams, - label, - Seq(Experiments.ApertureLoadBalancer)) - } - - val localClient: ManhattanKVClient = mkClient(config.localDestination, config.thriftClientLabel) - - val localMhEndpoint: ManhattanKVEndpoint = ManhattanKVEndpointBuilder(localClient) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(config.localTimeout) - .maxRequestsPerBatch(config.maxRequestsPerBatch) - .build() - - val localManhattanOperations = new ManhattanOperations(Config.Dataset, localMhEndpoint) - - val remoteClient: ManhattanKVClient = - mkClient(config.remoteDestination, s"${config.thriftClientLabel}_remote") - - val remoteMhEndpoint: ManhattanKVEndpoint = ManhattanKVEndpointBuilder(remoteClient) - .defaultGuarantee(Guarantee.SoftDcReadMyWrites) - .defaultMaxTimeout(config.remoteTimeout) - .build() - - val remoteManhattanOperations = new ManhattanOperations(Config.Dataset, remoteMhEndpoint) - - /** - * Note: This translation is only useful for non-batch endpoints. Batch endpoints currently - * represent failure without propagating an exception - * (e.g. [[com.twitter.tweetypie.storage.Response.TweetResponseCode.Failure]]). - */ - private[this] def translateExceptions( - apiName: String, - statsReceiver: StatsReceiver - ): PartialFunction[Throwable, Throwable] = { - case e: IllegalArgumentException => ClientError(e.getMessage, e) - case e: DeniedManhattanException => RateLimited(e.getMessage, e) - case e: VersionMismatchError => - statsReceiver.scope(apiName).counter("mh_version_mismatches").incr() - e - case e: InternalError => - TweetUtils.log.error(e, s"Error processing $apiName request: ${e.getMessage}") - e - } - - /** - * Count requests per client id producing metrics of the form - * .../clients/:root_client_id/requests - */ - def observeClientId[A, B]( - apiStitch: A => Stitch[B], - statsReceiver: StatsReceiver, - clientIdHelper: ClientIdHelper, - ): A => Stitch[B] = { - val clients = statsReceiver.scope("clients") - - val incrementClientRequests = { args: A => - val clientId = clientIdHelper.effectiveClientIdRoot.getOrElse(ClientIdHelper.UnknownClientId) - clients.counter(clientId, "requests").incr - } - - a => { - incrementClientRequests(a) - apiStitch(a) - } - } - - /** - * Increment counters based on the overall response status of the returned [[GetTweet.Response]]. - */ - def observeGetTweetResponseCode[A]( - apiStitch: A => Stitch[GetTweet.Response], - statsReceiver: StatsReceiver - ): A => Stitch[GetTweet.Response] = { - val scope = statsReceiver.scope("response_code") - - val success = scope.counter("success") - val notFound = scope.counter("not_found") - val failure = scope.counter("failure") - val overCapacity = scope.counter("over_capacity") - val deleted = scope.counter("deleted") - val bounceDeleted = scope.counter("bounce_deleted") - - a => - apiStitch(a).respond { - case Return(_: GetTweet.Response.Found) => success.incr() - case Return(GetTweet.Response.NotFound) => notFound.incr() - case Return(_: GetTweet.Response.BounceDeleted) => bounceDeleted.incr() - case Return(GetTweet.Response.Deleted) => deleted.incr() - case Throw(_: RateLimited) => overCapacity.incr() - case Throw(_) => failure.incr() - } - } - - /** - * We do 3 things here: - * - * - Bookkeeping for overall requests - * - Bookkeeping for per api requests - * - Translate exceptions - * - * @param apiName the API being called - * @param apiStitch the implementation of the API - * @tparam A template for input type of API - * @tparam B template for output type of API - * @return Function which executes the given API call - */ - private[storage] def endpoint[A, B]( - apiName: String, - apiStitch: A => Stitch[B] - ): A => Stitch[B] = { - val translateException = translateExceptions(apiName, statsReceiver) - val observe = StitchUtils.observe[B](statsReceiver, apiName) - - a => - StitchUtils.translateExceptions( - observe(apiStitch(a)), - translateException - ) - } - - private[storage] def endpoint2[A, B, C]( - apiName: String, - apiStitch: (A, B) => Stitch[C], - clientIdHelper: ClientIdHelper, - ): (A, B) => Stitch[C] = - Function.untupled(endpoint(apiName, apiStitch.tupled)) - - val getTweet: TweetStorageClient.GetTweet = { - val stats = statsReceiver.scope("getTweet") - - observeClientId( - observeGetTweetResponseCode( - endpoint( - "getTweet", - GetTweetHandler( - read = localManhattanOperations.read, - statsReceiver = stats, - ) - ), - stats, - ), - stats, - clientIdHelper, - ) - } - - val getStoredTweet: TweetStorageClient.GetStoredTweet = { - val stats = statsReceiver.scope("getStoredTweet") - - observeClientId( - endpoint( - "getStoredTweet", - GetStoredTweetHandler( - read = localManhattanOperations.read, - statsReceiver = stats, - ) - ), - stats, - clientIdHelper, - ) - } - - val addTweet: TweetStorageClient.AddTweet = - endpoint( - "addTweet", - AddTweetHandler( - insert = localManhattanOperations.insert, - scribe = scribe, - stats = statsReceiver - ) - ) - - val updateTweet: TweetStorageClient.UpdateTweet = - endpoint2( - "updateTweet", - ManhattanTweetStorageClient.sanitizeTweetFields( - UpdateTweetHandler( - insert = localManhattanOperations.insert, - stats = statsReceiver, - ) - ), - clientIdHelper, - ) - - val softDelete: TweetStorageClient.SoftDelete = - endpoint( - "softDelete", - SoftDeleteHandler( - insert = localManhattanOperations.insert, - scribe = scribe - ) - ) - - val bounceDelete: BounceDelete = - endpoint( - "bounceDelete", - BounceDeleteHandler( - insert = localManhattanOperations.insert, - scribe = scribe - ) - ) - - val undelete: TweetStorageClient.Undelete = - endpoint( - "undelete", - UndeleteHandler( - read = localManhattanOperations.read, - localInsert = localManhattanOperations.insert, - remoteInsert = remoteManhattanOperations.insert, - delete = localManhattanOperations.delete, - undeleteWindowHours = config.undeleteWindowHours, - stats = statsReceiver - ) - ) - - val getDeletedTweets: TweetStorageClient.GetDeletedTweets = - endpoint( - "getDeletedTweets", - GetDeletedTweetsHandler( - read = localManhattanOperations.read, - stats = statsReceiver - ) - ) - - val deleteAdditionalFields: TweetStorageClient.DeleteAdditionalFields = - endpoint2( - "deleteAdditionalFields", - DeleteAdditionalFieldsHandler( - delete = localManhattanOperations.delete, - stats = statsReceiver, - ), - clientIdHelper, - ) - - val scrub: TweetStorageClient.Scrub = - endpoint2( - "scrub", - ScrubHandler( - insert = localManhattanOperations.insert, - delete = localManhattanOperations.delete, - scribe = scribe, - stats = statsReceiver, - ), - clientIdHelper, - ) - - val hardDeleteTweet: HardDeleteTweet = - endpoint( - "hardDeleteTweet", - HardDeleteTweetHandler( - read = localManhattanOperations.read, - insert = localManhattanOperations.insert, - delete = localManhattanOperations.delete, - scribe = scribe, - stats = statsReceiver - ) - ) - - val ping: TweetStorageClient.Ping = - () => - Stitch - .run( - localMhEndpoint - .get( - ManhattanOperations.KeyDescriptor - .withDataset(Config.Dataset) - .withPkey(Random.nextLong().abs) - .withLkey(TweetKey.LKey.CoreFieldsKey), // could be any lkey - ValueDescriptor(BufInjection) - ).unit - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.docx new file mode 100644 index 0000000000000000000000000000000000000000..94d19f56e73f26fa01fb4a1f1ccbcb197d1b9321 GIT binary patch literal 36959 zcmagFWmp{9wm*z(a1AcO-Q6V++}$l`<4)tj-QC?Cg1bWq?hXkAcmH>0=A1Kg?!E8( zrFhtTt)Hw_wQF~EwW16p6ebuL7#x^GI+tdZa#36oI2hO%3>X*&XjDfGVCQUR=WL+r zVQ=Q7$LMZr)08BququrDA)VZh|*V zZALK!hA}QP?aqg2wO*jhyO~l)O#DPoFH@s{46?+#U_GDl)SPQyB92sgQEHcPZV;xn zHPie3G$%OoZf!rW0ebM6Xs&iZlI8)JIoa$UB=^7j@)Ew$p zdyA0WhY$g%-}h{L7~RG-*p6W8%ObB;v^UVLg7;1U)F+$BQEdLA#NZ*?Jqpwb$@~UbYKL%f_wkY zzxqzfQzf7#JexuYsePjS~~&?_*W`7X>|Ub7vt1MOg^U9HCAwmpKn-K9`GCB|Ud>IKi^g_?HMnH> z4u4X2)tw+MoAihqa%5pM$~#VTbrM0k4U9n@nugOEk!n$K16o@t zABI@~3_w!0nIpWUs%_84E&N`n*;&faPxvU-9!(`p-joH0yAWC00pnUs`fxhBJhm+p z`|D%7;%A+T3&tOTVhSqy?jNpUCOgmvxGfs_OJ-VkKOQiAAfMFmoHBRW2vqX5pC7-RIvn|<};uIp@9ly3NTT01lT(S0%?a1zqA;78$~q%i%L+HTo70F66`G&9T1=qQn zS|Ck=N|bcWd4r^-?xvi@0SSZ?zt|YaE~mI^=W3^#9p8KF7f}_m+RG4 zoMTX5Y@oovQ2*W+BYXQl+M+scx5|v#@k9ru=NxVcE24xOAFv=YBesrL8=u)SH%9g; z4yui12k7$}gTN9JW#Zvl`a;L;i@O!#YA!P5AJ^>f|Ar6I3~L z8J7AWnx2Ef^jOtA3}i~C(d)g`1Rc=+Ys(?M1(MxwAK!SYwM z4?a^ff)aJ(wH2Rs7%NEys)wjPBojUv6XVmF(41-<9*Qk$>&fdxVdZe(p}A6Q2Ls!{ z_W@MUiPi$RiXUCIcZlyk}Pf1AJgMf}eb!(ws?(HasA z>>2&f3)T(bXvze-YF%tWH>clc#=NEs0G|uB>rMmpD>bz7$tPDV3nLoXHiUP3q^fp| zBFLCLD`pcETJdy)43C?9Yav7&#?;ACE{tS6d)`-*v240WJCiNC@mQKvjd(6kovkv$ zER(^XKCTPZlu#Y&?eME*eyTE@>x5qPVSC*-&a$5jCrG3U&DE{vw3!?2;F8AVNfwdU zW5SuRDoN=Yb|(6{ugn~}uyXks^=`M`qSAbeAU#8|DZg5!fB%uWF|)pyFLc+50I{jJ zbzBNxk-Ke-ravR2+;|Noof@5g(%g1lhvBLFZW(}H~ zEzM-wTv1;Hf=r7XwL&@yakOHkH0e^{8=_XlX6#w5g->1FhnJgv<`B00Oi8Y;TZSMK z&C&SOR++jPvlN4}6bDu}!yVMuHTh-qbX!M=p1r+SE+*ncrvkA-0%JH&uPg%z8#{ow zxBTw&B8MA6nujD3rQ%e4g{q|t4*Gke0cq~IEEe^W;DeStj{WJ0F9&qw$EFhdr48TQ zmkKT<8q?@}pO+L}#Z*W}@(vgKylR&q?sdp>5BXOnb93RBZz=<1kjzlk9 z%XA|MoM#;Qfi3E*>eK{U95TNyc9Zl&W>U3utqFW+mjm*BhY);h?t08X88V*}~H{4A>)_h`)GY9gC zm+K#{)&=cP*}x=1)_ZVJZ>MNKWf^JTJ8EW_X!9m6;G-@i8dopt(7E?uBbfKGnR@U> z9)qdPP`A$qGOxS>I9^fyd1c!9;iI#Hmh5rRl1%_wvj4a;|J-o={rdcK^N}c`5Xg-C zGzuYAgOTFIIs?_kN5_*=34O`Ua9da)h<-8)X794gz{$y=3$4L)4D z#!msHaDaSnxQfeaBRV47dwY{93OZ=j8GbeRPpDPbPCCWV`)U{Cz z)FXUo%Ci%0!>W!d{2{3l|D~Qw8$wHbCO*|DBq!V1vz_c>vby!Mv(kD?Xg%GjcT2uO zJ)jQ_s%~lCP>-C0!f@y8@Y~J3DS__`tUiKy<2->_@xK4FoNg4l0hIb(CS*U`y`kmU zuK9uqn7CWFSc({HQEjHmHsoaqTZ9NVMSZ$Tkah6;No#Ja>zTv>PkDG}FIWhnUBSo_ zf*l@0O>3objgQ9yednp@{v=ek*iI{@>Ia5vGTbZIGc`~=4}ssA{#om&3T(azCNMC4 zHE1xDf7RN_*~7-n>Gv84+E^#-NY?vwcjp%vJnz}Y27wJv*@4Bo5*T@PX4jpu$+6A; z`t}XybIgf>F9oSEv6`})`ls^vdcMAFY(<)VjjRM!vzM0~-wvBIpaF4o#>?qCSAREB zSDVh6`cui|=~X)b_=4-r_i%9Pu6>%Fy!vAIa+)EuI1G4whT0Dy`5o$T!)w_RK zzi3aHZ+|+R{dvb@lwzKYWwzeBbW)eLad)$az5RE7?QHTJ-&L}Qt>i=eA(!+ zX2Vq?L|ob1)2Z-poaO3{|q+;Z=!Cgqn zVn47+kf`4RxST!grDf;3X!J$iC^u#Ds8;AyDC-qlP}cF|h2r*bNZ`Ez)9MpQl-s87 z#tF*!@X6!45BIkhA<;>J6O9efzRcE(SJIaVDEPsb(s%F;@wR>T;`G>UeAlYs0rwLU ztow41NoUSUbjH(p(#@rNIw9Bibp+6n!SjX3ll&^7Vwc9nqswDuO-Nic#y6PhwQH@b zy`^$IX^_R&wtdZ~OIPQt>*Yr5(Ofx&sNZ38oe5^X>ydL(O`@+3kufI5_>ps^4mpeB31*+W6PD4_-PP4fbj^BLr z&wv8eId+S07z16&k*zD;C-R4@F@T->y|+5;Zpm!?uCF?hoDVdQJ)E9*EEH6)_p1l4 zT!)A}Wfy~Q?V$vex5m;Q`b-75-T3MV={s=ssk@($j4DvJOHo*qiTl)ujVlEQ#C<|( zyhCS!F0NhI!zY%5R0#U24`Bhbs=)j$@}wNCMlb_a9tc{XFe=%4DYtZX+nth3q$f%IDtLLS?=YkwRV(m@S%-jDdr!*3v5yO;a*%8|k z9=xc@>x%Pq@_PQ$mM)WM=sTJ>7U?bAcM)$w18V8WB698o!87v;wUIUPXI0XePf|)! zrRd6uY!yND`w1~WE6la*<9qbyp-XkYKPOm zKCN4J@>QP=6fTF?vaoGRFKOEDB%l^@LVki%&Oo4m>OB;9AU#Sb2%>M&QWlL}ai$@K zv)I7wF@U=&_QMSFP!UF0>7XG&wB4x8Dv*LxCZ|IWu#a!?Bgx#;IkFCUt*&MC3HZKFo<4a#|Ff9Ko{ozp8O1&#QxVL)ba?g(@+&w6)p2Yty$4 zLubj>i9lR)?!cjad3fCBl|E8{Q78HNY;gVQ#-&ZqZqQ5QxqorOHShD1`<2f9&}>f4 zwtLObc|nE4{e#i`?fa-rA-$FxapGvZ9mZwhB;DvUjySxxC;N9|3?9>lsPt=PgqfRz zYb3X)K-Z;AH>APUE=J$s94Xsl$N0mxUjyNQnjQb@7}PQwA8P)-s|QE=BZv1Z=bL;B zv$kCAOex2QaoE%2dnR0nx*IHVu0*Dtfq8hFgz^VrR`H!CCHuQ94{!TEN@ECTEYDXi zzTR$UtqC7ciZ+}=YZq=9R8|Q;jD3yNSW3Wdx2h+fYnYs0LEwMdf8$%1dDIJ(A%;<;thdXF7bgN5V89MK09 z(E14{=j%Q4IJ)~d`-*DSlQyv7;F57~`_!Vc$0+pN)rs(lPj+xkIN7DUD5X4zg~h}UlZJcDcf<&`LKVs#%*{v#VuF?EJAg{~}W z3}ar4ajs?X<^$qv0zJ5bv1!#~Cf%}y-oCCFdFD7gWq;eSQ*{Sj+dBXH*jIxGIw7HYTaMin(G)YuwQtK{_;|y! z5E}7l7Z;8_c!p?UOtzDhV4w~Ad@(-l?>UeDx%DQEGo*stw zd<8>U&hTgzgfiG{Z%G-xA$?Ged*U!$3o0l*b#g+MkQ=8Q&$&%OmWssx+M#-yt=uLP z2>4b#|MZN}-R-U9cfq0ktS0`@Nb-OLc*3g1rn`xUY5s&{L;8N{DBT~wB3UMVmXV_* z%2dAH?I1|>*VR#WhrpBuORWpP^7~pMWH6`cSEa?NUDu0+Xa%S}e>eGd{oEje-4`Qg<|lL1I;fmwFU|O`(_fEn-tbfa|_CCCB-K zV!c~dg0ai7Wt$&z9hdPv-^S>5RbqZkVAv<+~kY5WK+K`l*-IG(eMQSDTYx`Eo4 z`CcpMBQZ2uKE!)0v`j@mgP+WHE(68kA?8rFd{S19lTk;M=dGp{-*ZFzdf^yyM|5J`&W@iQ$WqoYtJE zl19A6%UN$;GvuWXeiy~>#gZ^Et)C@+uw>Uxs63bTA@Hm(QPK#veOE*msRU_ zgj_84sK=d0MRokKV*G%nCcE*9g3IAnRV8`r?!ghR7A`_e52*>t2x>j-UbD@a^AcM# z6Gh5CS!8cDJs5=?9pa$2N46EfHSaYqvdia9GbgC;<0}m4R&p`NW(6#+ zLB*fdRi=OZGNRT#Y8X#{RhoV!5=nbzqAP&qDMm-7TgCvE-Zoq1%RZcA2T+_(K$@9l znRr=6&1GS4z>S1K{>YYclh!s-b*k>|gT?1aM<c(jKqL1n85_&GxgN^V<6Y2wP<3&sWWp>_0QWA1kS+%zPie zJ3wAbmX!X$~wW{pcYzWs3Tieq(nFkG} zHr?#@SDn*GF-c++90q|xq*0b*S84T=Y_(lOq_d;0KA3!>0QNbP)Z38mDwM;d2&@AO zJVb+A9q$aBweXl6b06YD-ndcX3}McFR$ksXY-K3 z=9^RTj`B3(?F8S31kc5tDq()Gm{V$F+^@Wg|0*%&7qrxvu?pP*ZtIE@D^VInFEcWU z`*~+sf9r|ob9@flQ{=iLR$=Idrp^}bkEl)zd8cbm7n?;__f0GpxK4O)8W`!Vq<(bI zS%+wxbC^aRePQf8u6p`BE|Z=x;-K?APQKz^>02v<8T|49%o%*^5<$q$I<8;V(Hldj zbM-jCpiJH1JLL|q9zKtGDcVES5F~%gh<57m^0w{7lMUh=ZKJ2|h1;3SoLhnqPQnHNka zy)99%HOmPpvJ{?8bHNiahNJ>FTYf9>t=$q~? zRY12~zfq=HtUe3jX#XZ%xh0mC|ID6;GXA4 zH7DZ~O2nvk^;N%~F#1GQk*Ov{9q*4 zqf76rMrq8lP~*wSA9+)xlh(V-t{Ua$pOfO0gnjNF(V^&vN~6XhEXz6XHebR%7R0LT zx6Y~5+h$15Y2XC@xZ}0^iedMt%|?7w-SKKzSEepea?e7odA5v|tH>1c?FnYI*;8e}Q) z`%e+oYi6FWZ4$zIeL7V~N{7Als!*!*5J$Kun8>P7bLX#5EblF`y;rcoM_uEa6KFd}Vs7KuWxh|*{;~EY>m(*BkLw(r%oOERQ%jpISeDsk0qK!A)ucIM-Rzmn* zYZ6pMJMfYQyo!&(H&B>_8m_Z~SqyR#D1ikTn;41-=jt{A>brHFAi@*)QX_svZbdZ3 z{-?8H(?YFtOC6{WtI{j-#Uv&V4J4~!C!F?=<;4=hmr?3v*+YUFCJMrrJObX;(PX)F ziclQ{Kv@alATkm{J%)dqLm+IDljw=Y5txXwvqMu%IajangbSv^0$-*1KdVVS0+oH{ z9(X+RGaxdf?SE+=bGV;Sbq*(hi8wn&VVe*;21c;kJEf!Ap7Gr5j3epIj$%{fI-|w) z_Vc+DLMrUm%Gbtsie-A*2!)r73{cHLMdf#D&wI24mR$+dFUGkfucH;O4sDN@54FCC zMsq%$h!oUB_)#DA9mv~|hcp83sX}U|?kEro(`g<#8sTErbPVp)t2;@PdvnFq)I@?H z-C06`Y2cY%3-2fZ)Rr6<6Mc!b$O>N);!Qn7Ie6OWl}VBVMwExHmJNFaD$%WX{G|M4 z2~m0cMj^>y2GsYU(F}ef803xEP_Z5dfVG+UH^55XrM1Nt;BWmHFvJsj(&IudSPr|> zu20?RJ?6)T6ar>x%97$U23&YgSTnU5gt&;Y!xPh#JeMMdo!N^*4>=73tba#fy2;zkM$Y{Px`&qABa(b7IPJPT=iNZKY!-u6^JV zIb=m@YM5-79%4~GD~A_yUAk^7<<02ARdpY!EGzAzt#qOki(Y898Ell%z@&50O#r5! zQ_cXS)up=8!N0j&zjsE?Uwt`UK+{#`y(nfo7nOG~s0lZj+=4n;p-jm~s%5x=SsLIB zvqfM1rTr;h%f?I}!+0k{bBLVo^DMz|_`o{PRvGC~4}?B<}y2lr*`|aC2}uz!T<#e)yXzwGzqZTrLx1{C9MAPqiSA0{{!#Rb!vCM``YA~4>YOtNmKgJm-q-7UinoX#t!pyvPGKbRM z3FwD8E#zzeo^MBD4Rtyy@iLpz@~{sq0@_15$p0~(9B<0WlD5d7!%dZZ5$1$v!FugZ zF{Kq@^@kG95t6C0oYN#8i+vXS068xB@ll}HXstrC5Qh>r9w z;e)mUVs%T__wtmhT#b75c<8~=`u#&=gWHiLRwA_y41i5>t2C_`;fW0P}>9$>eJf}&?bnSp}=WZ|h?_GA$`xdXc zcYl%Jx{QFxRbc-hZ((7_h+zCb$Y%_tw;rNXHrE{gBJVSleo)r9N6=_d!u;On{2lg( zN?ROLr-A-vr+=HkeIwgfge=0huRq2<<=@;d?xc1WLzNUh(Q6`y|BM3EB@X#4<%-a* z@Tkug_{w!=RUKWpH6O&%Ta<6if@v$AG|4Iuy14bPYBY7C7}TeKkoe;T07@Oib`<|MuD+3K`(UN)Fg%n<@&fz*GFPSX${;pQpwtrWjzhc zwiKU+vau*Xz^D5BT}ADq-iCen0?+_`Qd;{3fh-*+-xA9pwe0Q-Y5D?qI_0-D5#XtH zg$Weg^>w>jv{YJNXmXGrwg-*_XNBp^V0XZdR~8Bto)Zp?YrX9!M}lBdCi*sVe%(?)lJvX z*V)FEf0>lgIqED5`_p7d(r=U8h`&vC+W!BUNL7ml^;L(ADghTLJGDUqs@LXyg40J;UV8TI{rwitg`g_h= z^uYxC5l>qLLbn8ez~%+*I<_D~3BW}CLcxuoT1li6NtjBhxJ9aNOhe)zCQRVym^*Da zvthGaQ<}oC6#;5UO!n*yq-)Qb4Rj}G27r)V%>~CQvhuAch##aUqOIymn;I!JF*Smvnz{H%3lKwipHD=lV zwa}Pmgwl(MN`u+~76;jbh{{6J0fzG-3}+Ae2AYYQWA`VszMsdtZRpz;z3jtD>^}Vk zN`2u@HI9y+li|cc#B-o*5Kg$oHp3m9Q3{=D z1n~%7U-1}W#;61A3bzkYmMH`FiqxX%!}x#1MTz_thZ}S*dSN{>YP`kstCpChpQsTC zP6GY=09y|_z%&EF>7`s>0vdC>wxEknMhS-ynPW&hdh{`wFC_(^beNJ;n!W2Ydv6*_@N-^}QPu()6U`^zg+CjxTDF+qr1P*q@-=-DnpT)Dy(fzA}R%_Yzo!HG&ExorLJqSyPm!W59o8(<3 zQD~uOc}s&CPvleKWb3#FPqrL$JUO(Vz+(_yV;`IBc&{q%MHM<7;90tnnY#xK+3mT} ztVGgsdUA6mY3KVzAB$CE5Udl(c&lwR63ZRD`ku8v2YiRPLZs|E^y*WPo|p!+mzk)E zkR&+>F~J$n@N&9n+#tKM?iPvXy;6~&*>cz}@?ZJQLkAEsD{ILmJ6Hri;L4glB%jiE z#UFcyf`M*oEhWPKK9ldMstJiW<6!orrW&=1bFk>mSHYRONxcXBg+O&o6ZVh>W*7G0 z@(pg_S@9S84eI$)5u>>_Anu`Q^GH7Hp)4Qsy!Bk7r^$NV`9Nbs_M0+*Qfi_Gast3= zpEYMUD;vbCcmOJ1&;$HCL_;7%K|pHGd29ScjpJH2b2l~~Msx2oy%5|Imi&SW`V|}4 z8v507K3eF*Hgk6z&b^J{wCphhYxiwNaygrjS|S7y&M%UiKdG=6lmUpKB0x?|r%huc zrV!?lQ(s}=Vm40KcxsLab{{DjJw1yLC#@f9aM&578eB1$uPz@R!l-PQd^oTGYo$0? zlpsgF603{gx_arsRyejjy|V6nVeb9*SLZO}v0H~NmKv*+iY?Zh6f|8CWEj^{6B z9JZ>Kk>?d5DdE5BXAfJZcU;Wcefi>ZZtF8^9-6JxNMpS=(CM@QtwdGlFLEty^BFD} z9shlDuIW&+oHCioU66c}J$D}^>=(}cbE!G)aHxTS*cJjYya& zeBpc?=bly-n|oqiQ-DM$5pv}Z_^bt!ikt;83c*jPsyoN-VKqr?4$dNv2e1NI52(f0 zYoi#;xVfx3T^oS0#6|qW649KpV8LsG(i$AaGL-ox)n9Bbk4i4&lk#ljn^swqZZ&Hm zN4r+g-Iro3HaB7`rCT3q0uX?NO!rNWnCXn}o6or=0mOZU*?jiY_>ijSvx`r1X_ub6 z&#LEaOc<%}q&dtsM;_{dZtY_NW)AF22X=tHO zXsYMOp1n0u7|brcPrn5}qf*|i@i>752mD8HKu#I7(4T^Pe+xeUEw~#0*u|CQLH*dK z%L`gal~{xBK8bkLrh<4>_Ag-f-kPMqn12B)eswmD#+e)f!+O5H0jd;tY;X%G0A!?|KkX zfEJ46G+$OJYG4tD7V_!bOr)vdngWfgAOe5zC>k*3f?U^?ZCM;$7p(OI_M*I9*HZ@x zOScw9Hjg|(eun1}fYqA4(?tQqAZc=-l9+UC81^!qdxu;h!5p_b(cb^Wx>h|GOPve6 zm~&Zr9xe*V8TwZ<|JT~M7CaaaX;F{uAcN|g3vlV&0(F!XS_t5Ae+haOhF0|zTm_U;o&3A&CY0&%5)Qb0Q)+;KQP0AMYLO=PVciV^%cHO{NHr`QpgmY6`2Lrp znHf1Xh*HIFHF%M=(Ys?Y!OJf179hNBz!p?5%hU)3sys9M|Q9pLWm{;M8;>2Y{=I9DpXl{M}`mbQay~Ao41ZNloID);=Tim@DjC~G^ z^#tPwP++|m*i$O@peOzVNTT*@?q1ih(Og9n`aKT1X0$yQJO1&|+{l8m@muaWTdn60 ztWd-7(Qatbd|iBvOLDii>he_F`VAt#pY=;bJCJg3VEs3MgTilsqp&{!?C;zHcA_TwVh6L_OS z_Ff3~I&5!L{-r=CaAtte3Bqs79npF?1jB+ChYPOPVfSQ)n0q6U)eC&sA*l>(IHD>Z z(Vk$9GVM?LL-xPuOH3^Ix1d4h54KwY?GfPZ2ZQYYolXNeynFw0jg3M;=?8(=-2rs- zfW(Y2h?PdvsHObb8j-89%C0#3_?p*z-KKXi`xL z&(|qEk2dN>@jOD_kz+Fon1)H}bF$Xz!p#xYRW@MLzCPR_=-G@|VZapB!?HR_ha(3T zsrYc72jf{HSMvRwd9NRkibOsrbQoj2 z!N~_Qo2b;a;!OVs$X^|a_>5?LZ?fxFdG~y=2wR~1AMBSfKsOf-7k|y z^A#JF!jdc}#sb359y%CX2Pfn!BQ>>PHJ9CO80c^DaLwPujm^-1a+Iv;8tO4Fj*sCn zGuN?ZRr(K&JmYYx+-Rfc1$2}Xy3o1~dGRcV8H$?Dq4u&P+=R4Gg18kXdem=yJVF=C#B zGGbF8T`5b}d61ZqfzFt6Y-Wapo2r>6zaVU4mVLbH6o=e?(oi3K=)rcO!(d@{^saab zJ$2Y{E6YEumxK)${F!mu5GofdsCR^n6Xde@$AsbUT|iUWulSHD7F;b!g?Gh#?}oIN zoKhA!2w|0PQhN9PMa2xF!j1e*#T+qcyj3^NWdgFvn(Dz!>}g{>@>T6oUphMpi%;xI z^L>X1dmXE(dh+pOa+;qmHQl(2>(o15<0Ab=BT}#0@{bhi#VmAJojpiP35v~F7KfT? z!oSezj;ZMyhE8oJsz+Gyzk%8#Rl~D?P#iSApMGaJ4=^+~12qzWl6>qT=%vDHEo$R} zvM_@GU{gQ-Rn6G!va)iCBy)Id%cn0aiL`+gT%K%t3~Gz)?;V8@viH6XN_&B+0#&y8 zlSpMHU!~1y^cpz6C(9Em#@`q{wX`5%DAkJ-IKF9WG2dnKw6np07!#79uLdKXk>wkz-3SvbV1b?p?pR&t0$P&ygyC~jllIJfP=F+OlZ7Bmx+uS<$t$lCToQq6y z;z|_Z57s+eY*!MW(%sh>{z@4X1RbX(jutwUD|T~elQBs0h&7?g`P$3LikR9*JcHjf zZig8TUyhGkGVK`T#zYzW4JG!Q_ebpjcqj}wN>tg{=28nU@Dg%AJK^4prvgK2V1v$GYkp~juuswq?E+B#~L*N`c?zIQg@zG6^;F|V*h8IQIHpB7E^2dwJnE@}DA+`gq8MuIR(wVAH5Y{#* zOC^cS8Y7FySdLt(U15Q_5F*fexdB*lF59~EN7}(@XRyupRSWP~pImcF@*upAc|?Ns zg@du1G47CPm!<|X>W+&iu&Ms70ukj;6~R4Mgz^eW^*RRMcz)gJPZBr^;UOQu%RJ`ZPj(%x^tlJ5i!}!Z+q4KlF|=Na68O zIZH9{OKowiPzWbL%hR--@~oD(;v1WF5UPzErmO@(10rsoe~5$_e8UC*huuE?B}#eF zXHHHhW_BYU+??fk1D(}@|0gfhez053v-v%f4 z4+Q=S(Awg_WP?EidhSQ2OuY=BCW&yK6&r*JM>7|WnRtuP6oPpqB(E)0_=gWnNq;uN z2DbucFJ0UyOgwkZ4su9qAws?Bz%{Hm(NW0}c4a?6(1$`{sXY0@+-9{>0Z<-V$s_5X z4h&JKrV?M8aGlt~XQV)t7}P0Idx^aPX_ zvpx%Q@HT-*3ccxy!%D~)DT#o@Pru`z;*vvFcIcnNRcQaPctQO3U%!zs^az;c;Q#}3 zs(}H+`{#T68kWwVCCtsuOq~CGh2KXnr9iU&1a?PI~k00blhhO9b!m-eD@;l z_Fk}}Vooo;I{xSrZ42lve&HNH^pO~;k)RV`Dvj{_*fut&VdT*JSKn86kFF=5w)HB` zxI+u%B9Z0M^~Wc*0-*NM=j&#*yE^Vu*!{rR z=6?qC^$;}ZDEoTrUQqJJ^JYBmlrWqVlo8UBvhV5J+Ud5s@8sB@adT>U<9WihybzzD za41Pj%zagBU=WhMk{hx*xVYzAjdZ#8x_j}FX?mEi#?FCz3pcJYY@Es6judd^O{I12 zlXRSJa|l#FUhM{O0csW()UB#sT3;P4>9kFVbamQ$o&w&m9{! zIK(*#e4jj@871~!eBTz=_3HTr?1=jIO9of3fGI>g1go$00)%`-yu|!(F3)@$m3Qs! zHJc2sC>8THqc0Ry-IeHKLK6$^^FEH|ZA&K>?ek<_th|IW(?Uf!tiBJms}{(x6~pr{ z?U^_02BT`-Oxc^8d{dKU57pOuSH>?7-i~drx0}TEcWFG=EG!SNz`B>){$DG7cW12Y z_K)O?N@4yQ>YJU|k9K!o-8BjAOfM|EWfz)F?^PaVT);gx`i|qkYAsM4Vo(^Ikna{Hx)`s z0*RBEDu~r%V#aTtp0*$QZf1`h9^SH(kA2UQV-|Pc@QDxJ$_7IwS3P~bb7f!!&WH+x zh>~l5=4a~G>lgMvJ3Uq$UQ@M4)`{T*DvlWlQ7~nRkzd~$*0G72tTdBIt?Ax?<1MJno z!;_txpN#v^T*XJ}59hZI({8h30U58gn|8{#Iws=|a5fT5H3|{yRvLgPV{V|F*2el~ zOU1CZS3&$s)leVPbVSJh>;dRi!Oka_hhhElxEwAw;%I_WU=O_Ke#!h{$%|fJ2(btK zBL!ry*ms(h>=H06Y8{g@}w6GpMF zAMJ)h&}${PWZ^Z**C4nn(d@t{@3kNnLYw_OWd?M>LPYu){QB{>v3rc7>=C!l$I6<) zkX2Mc6ErKJ36c}gL@a2cRxlYW@lYx9p4^I01}h3m9@>5D1LpA6oyCv;uL&fCd1C!GprA z{|f5?*dcB)OEmq)S%=_$_x(4{-vj>UxmL0fdQOLI0~Cf13j1vh+1jx}`Vsl|>N5H% zc%O7%hw`~bI-vs$=soAlAjHrzegipt%z&vrJxyzvyn}RY*zn*ud?)Rv6F|V?RS`2? zF}Yn-Dg<~JX}xLqcKCc6vcI1-)^~>yi7zeWJ`UV)<#v5MyPY;6m)&C|qR6?;<$Zm5 z0cO+9$s7FUikFxO)5_O2#?I}V%NU=Zqlfd4;}3hw*Uy%9le&(Cp;y5wZKvFsQ{HH4 z&o^dm-Y-0D-EP4qLRAandbe9Q{i8AC3K_QFeKz*|re@s|Q#elTZw_p8fZ`9cXVWQs zZEK>ZM&XQ&2psDtN6 z3$PJ|99X9S?yqskFF#2n7mg=PfhdQ~sjLonrT>WbU@UFNUkU3X4|1P^mFo?mu(vpftG zdb@TL_+RTrkX#&>y&s;RVucfT^^BSTGig+B+sGxa#i;9)f7$>^fM*m zkx`=pk7DOIaSM+k+i`8r&gFTtjJ-=J8qP;%oJ&*JDU`#|V?84-`d`fxMdglOgpPnJ zjx6gbJ5v`p6;w8P0doS!32uQQ*(Wp+k)YNaIEPWR9SG8SI3?%t=o%Fk*cn3>%@SOdxQ)Gj>MU&EP0sF0bi$o7>Asp;bo20{2W}y| zzwd*`{C|YK1yEewwk?diySux4aF@p2-5nAvxVyW%ySqEVEx0?u6A1D;`OZD>p8LP| z{_0{=R5fFcG1lIz=bF3Mo)=3Ep1J~g9x=BLdPt)~&W)e8-Sl3>0b45`XYJi&zAg!E z*bLj3*=cz^CGf}N^Q}e(pay~sry7&{0yP=3E7eJakf`2-y@xRtWXCQVLpDARUA`iv z_vvVk%}O#RkJBDMF4j^qqGt4Otqj?XK)>+N1(Y463@+X_*EsX8sRgDwl$go~0r!D5 zt+_)9T^=zm$JXLXW;oHBkscYIIgsvpnb9wwlTept8ou04<=2ZW-?3%%!g0m<5uq)x zchP?Gp4Ob*5nJbVbLbJo8NB~)-pg#+WXuEm?A}-~H(Y(4edVPM=`&IQ>C2 z^`Qr2cMW8u2w`p4S-oB%{&~{rU5^Gg$Ad?8!r8BzHKV@NreqhFLUEbXflPC%>)WHw zvXK{8o$<$;FW~Z&S1E}#$7NTI5LH(PiN^;qoasyu#s#yha+RVw2u{$|17VsmcDx7<9zyi@@_ zxg%WnZhBk4l^nIre0GKgyML!j7^tjZc#Tc`rNf z7bRNL388G>?hot^mdv0|SS4-6-(GWHTD5T(x>WXA$rl7jJbFfMXf#gcxvUwUfy#A8); z&()L-VVS*57`b?LHO8J-OhQOBYyP}b(8eFMmpk%SsS5a7lcgGRd7OJYaZO~U5?k01)m(fCeZR>jn-LsOKFH@am_ChBB(^HzwJP$@{ z)ZWo-vQvvQWlHGe#7lMBcN(jh?n+vcjak{RJBJ~&?To2x-S^0g`z-PH=6l&$LbH{= zOj>Cfvc%P-H%As#L*a%c0LhQ3+uJO^a|MD9G_+>(*arwkS4&Er^=gV~;*HRYS$oo=Z zSVx(?u6+)E0bQhQ@-^%VlD? z+4JmJ!|L$4J1JYf7ul8h(2pl1Mmk>C_PV4Y?Q%9AOX=S*M)6&<`xqoSC5FJxynk#cYy%1)k9*K>c3V41J&^??avHdGQICkCf&U#xP8#88ytWa~fB$_leu zx?0WWHpCMNSKT?jyt}C-fBaCh^T#SD`v*h}9mEL=!sP7u_M3-fui{*zd zmy_e}wvw0zehWqy_*6ONCcaUxt+W(x8;LKa1^FqB({3??1--sH}PG@ZHiJ&z8K-Q1bc%cw8n_E zbH5!g`(lKUQ`LQTmD=0Z;sbJvq2Ap#V~_j1(1Sa&?IvLQ18OxN@UfXS(f`u|pxsyA z#hraM)Dz$>hNNx3^jB)CljC2hKTB7;`J#tpIE?RXn7?3L$CL~S?`}s!Y-ZVUEdn~Z zubuW4z@HqP+?9TxY5X9wVjy3hNv>B8C0jfD&z;C%q!&b!e7o>8pY>YXg(&DQ*B+GxEJE%VEvEo~q#u0x=yd!QrNv5W&v=I1hJ zXA05&kl%>%d%MT4JI^jpxz-$SuCU$B!1lCzuWbtw5e*r313Pde9BD(G4fZ{NMi!JL` z$@k|xuFy0(rg_`m8v)n57^pWZr>>?^ib7&+j#Ge76i=aTE5&UZ{knptBVaE>*wjtYWdZLtVjh$kRr25x&b+GjP!NH~1Z-=9`MqEiD3 z&TG_5rDnZsF*@e=YRs8!1zbCRJ+M@zTLEqCsFyu!*+cNPjQ&(maGxidfU8= zsBwHq*Y=^SMPU0b!x2bvuV%thYc)ZrXAj|ODT=9^lfH*@8dU5=cw-ySf1Zs+t*2%3 z@KM__hRpR-cgv-D%t;D%o^PmGO&z`_z zA-v;^tRtdp{~YgJYa5hNGXeswyKkIegGLg1_|4tk6n8AB`tuVV^ze}xDB-aGAo)84TpK52Y zB*iE99B}5IyqrUFWyvh&PAyi+-_Y%-4+W8iv{W|9=o9~J|MT&RmPLi`F-z50yvlA3 z07?M!&ImBZP#QuAeLy}VcIzK)DOM!~0TE+o8OB(gLp-4AT$^02nIXCYuzi$9@tJg=b zFRRqI4)4!y{Hy~x`ni&cOnh!1Lvq<*+9((Xg$#tS-kI@CEgYnO4grDnkt0%!+YH-n zg7^v${@+8Qfc{s=i#1DNNcYRXA^Dy{ml`bp6*3zNg-kfSA4#DXd0t13D(~qL6IK-1Jo)lG6?R9<>`vcRI z{Hc~Q2M!ekCo_PwJeO~t;TyGCU*;t6Z20d(v#bLF((y>LN=SC&DFz`Z3PBYLvwyqv zQ+DnM`xW9AmuaDM`W4IC(ByLz2Qwxa3O7l+hZEla)+-fusRX`=0^x{XY*FfROCh*q!s^ z(;cwxo4)x9%nEo6T)%XlUXumTLqIpCAfOQBKl>WRztivA^u3a+`o6WNLOKr^$A?2r z;wQl&PG%)Vpik;1{eBXjBpL)c4gsYT_%RePTY54qL=L9>e)q;OfRFfxVFo!qCK`)+@>ulcYxENBcpF*7B7TY* zV@F!YGs)YS-f`ntH0FT(8lBFWm}pE%&P2`eaGt@_f!pzH-RnRV_d*phbkjh0u}cY5 zpTR`-v__qol1Y_jBlXeNluoc8@<%V~hk>swNAGxZ{WM449FEv_w+9}yr+8l<44O+pFQ42J>CNN^Au&z z<=Rv5lb1^C%m5Zsnrt);d-Ur`cQ59QgBM||JK?L$LX>!hW;$9HnTA%;1&)g(Fp`=l zG;%w7?xj$5c|#Zf2wUChUHt*Pg6Xtx8m0CgvsQsj7m1#RyWgwjkm`1D>iqB&Ekq(1 zuGAfrRI+*#c{3OdC-R3w>&z4WB^e$PM~lldXIbtc^3QeG6Dadok(oPUNhI zE*uB{9i?-Xcyx~QY{X@73Z2u(d-K~O>Fu<~{k=nY z-sho4L|R2nn=dNgKJSVQ22nhcbliH232MvHfDXcgRBG2KgV&&jpOEE4930|+X&sw3C z<-KENYH1)J6vwLBV9)ifg-0VrzWHk|2nJ2QumT}^rPG;`MtiVcY7c@7?jhT_`J3L} z2#!&lEUYL?6Lu-eG)ek;$E!PtN>04fLoA0lyX!DzxWyv~ct)rd6b24urgN{3q&5jw zq4pD7xCP1#N#>(#2)3#Jr^;d2`Duf6QH~%hi<7%mP-%D3!Fm1#l$mMNG?L6^a0D~F zLR=-IWUEn4!}WsdI)r%!Z(MQqKNv3^gHf#gM3{{sRu;_iq?sZdO|H)uAjN#7d#8lf z;TFf?aws$Bpipdx^9VF7vK$BWiq}f1)L~XY5ruy-{w3mESd8P32q3Hfw}_Zw@g}(* zgMS3D=EKe-(03DAY!tDbqs&}}(Eg$InaPjPUyYiApobiBewx4;m}7kE7cM2u1cj80 zu;@*<`b_%;$mdUdC=Sw0_4)u_ww`uxZlFh<%JgT-<-excpzmSZQ+nwr;7S z&B!niQK4f0t)s(#u0_a|Z<_<&Goz!6`DfYr~^y z`^N%rgSS?VuR_P}UW4lbN%Oqjd($$GStycy2UcY~fz*IYpX6B1{%cpp-ydyeDzr&Vf_gxVuc z*c5H3`2ojtYy{W7t#%Y5?x4Yvrw*r~&KRuV2CZlYF>%EJ&noziV_IejOiiWj!H`nr zZBfjc&BlEcC4+BIBAz0i_@H<+b!3Zs*OpU~Xvx^ZR>60Y&VwlH>%(_aR|Va8#4r&Y5~V|1v#Bu@G|c{U2uF`a zGz6^A1-A4@%Ri;hliNDOWpnRT)RaJv81=01ju_4AzcJDifgT;%5hr6O|50&A$42;% z3Qy2r3j@3GAsMyT_q$i6&no}Yp_+dJ)bZ~6Upn3=HXGT<{vRaV3$?TTMjl_3QdJDT z{A=a(arYu9S~i8-?n~W7*4Ohaqct#xTKHO6Rr4i@dO+}ZEOI>Z=Soj zwX#8W%4Yq;D5my!XP;F*@Y!Z0tY$6bI37kx{DJBRJ9*US# z36NyyD8Ni^yg-Xtix(*lkS>DMdc$#VGRI3fk_ya}uD~$W-r@YwRj%(EDqFH-r|e1oEu179#~QbVz1E zhjV7bFk;#cqfP3H(04Jdgd^e(nae6~M|nn9|F ziyT_Did4qoRD0a!NLN^T`x;80G|NUZu|h#j5TS#0&}@0=hIx}Q_eoZSt4S*W)VC9D zxGg`-COBm;M5_11tvtWs6_6Qd%uUutahixh0fWb289kaV&0yK8$+DPKrXleS>@0G4`L2m1i-olw%-|sxcF~g>yz5w3TkV{BN>&7`E@d`kyp317zz+ zXx}*;^s~;g3-=Hg{Or_Ed~SHY1o1$#R2ao}vsR?39?nb*V;$9CYTSihzO4lJ2v&YV zer}O+)gKwGWUAr%%J8u1Gp3P}>;|h{)F~cA`h1zV?jhmxY7tuFT$Ct?^z$$iVZkpu z$#yfhZSEbMwqCe4Ghd2JS{ogsnZ+9ymXY93ve&GJ!ON<~MlFU2%)sKsD7{r4;`<9p zM3P%zBFp=7(WOnGgv=}4@i)nsnZd~l@G`(R7cJu%{(iml@k!uSiNx- z2EN;XkF)@#E z$_o?JSfecuGG;#w*yTt5nZM{XR>dY%B_h3O@*~%$q{~fqznvr{PRltwlF^7^rc6&L zNl*r%sVPt7VyIKp(@0~QGX~O~&zd7vrVk+Fs;i}&=0{4ZjCkUNHu3(1XbPYM&IIn2 zS~)SF6ftQV8-nO8n2Tt6u>WLgeV6LYfhv%CYSS_)#j30{s;bf>|A|@*`=6*JNTHO( zOZ8Ogh-&|`K(8KXK>|G19}8x>B9op;9@e6E%e_#Oy)>0avX{Cd>7dNF)zuoPf7TXu zO3Z)3r2NbG0P+v=R#)VmD}vg*bR`ddNKyD(D70NVe2D9h>m4ph3;nmt9(CYJ?pETLVlq#12o zqLmLJ=MRZ39TCgU4@F`=aj%8!7jG!*3OisqP$+BkXB0*mW6j}7Z*CeE-?WEdqhN54 z+Sb1B)B2Zvy_rV-xOD;5B$OL>*Fc<-1-nMS%uB)0n+E|U!6z1yQ=y|jWqZvyBbc0a zL$M)QN~T_lp&rWT@J_B&BVXuLb1@HiGH;}X=U`3~)L!$q>NOJtN3rKic>5;3P8FS# z{?-5$j1R;8B0vYjEh>D`@B?uVYB!+{gHXIEk$c)c#o=;7NS1EfDaqOMIW+G_6?jvK z@?}i$(0wGL`KXpOPrTFQeL9jPc%7NDGhDO?*>a8Wg-V7!qH&VwWfzn=Xe(PBS&4#-dv zIIuA>@7>&g1+#B>{u?u4Vyj^K5D69<4dA&j4qRwZ(mrg0nZ}RP)6I3N;VJ)78VUzg zN}&c+3Q!URk9XorVBD65wZu@A-PSRA#HJvS=1D8y-ee661}_Fu;`LZyh$H0}A2xvMEG>FUj_1`Uj|3ZV|4&%5 z3Nh^jjK5*|G7c(!q%hF=2Czyet6*B`SGrUR|7HtOfy_*+ilVaV|FK84HY^u0rtpXdC^{==f=`(RACzJ%S1UwiOj-?rk zS2SE(i@bNIyfXq+K4vXQBJe6+Vfl!-Gh%bWn=16?;%*H`++c4-^qlRQ=6aqZGDVQe zMO#PI8D$C#)-6$)2MHPTJ+(4k*nApV?qpg{2uIYIXM=T0IJ87`550x35Ew)2%LbP{WmG(0l$V|{&7tBwV>)2nmTjj zIoabRgzrNg;vdIwL~6T@xbm8WmNiG{ETC|l*U z?t=wR3Y9;2^gp%u1pEq$`?r$$Ut++bmrOp->(?q zqrq!C`$x_#G`j++t{J+vIS_mTTK_mM58nSp@qYrfCcEgMZi zNN4L^L)J$;Lmu(GTYzj*#neM9%~&^FtS*0#>@4%3A-@pqR>Sv(S;SI{ly=I*Z+wO= z83>$LRHcazUUuaj36T9(By7RtR8R!AgiVpGvqZmdnmzOu;&oDQ%*P+<2qo;Tnvmf@ zK{0T?tH9eJ?y)?%DCY|Y3PP3zsDlob8`k%;*x*QN_x*ZM*{&ZI66}lr;?B5BGo;)) zto*b;!D6IY9a@E;iCf#q;8eX8MmQVu^~pQUDHZo%&DwJPQR+512Lj^SWp?w3s~#k* zLk=7^Z9O+Y%`KA%6Kp42dzUF?Lro(Rh6*+MQ1%?YmG2= z?T3$Nbq)@|H7w^?`BGtw-It}``nq;;6AEjW)fId?dhCrr;jGEF*uM_m31r zzr|@~NTh!Q>}m>o*AdiEcZ-L*|dHjF@&-XX8v2Z%NS^Lda&$cU*4I7i&^MPEhuyZr_8PkjBN zZWEV6nzhRSG>0=L@|!;Q<~6QvtgZ{HZ3Y9d%lLKG#ZoG6dgS7K$Hekc<75A-fgzD_K4~K19NgHCqn0=r@<~+&?y=XU zM)j0}>`IP?l59qd{wzZSZ4@vKpoVG*cGM7K4A3#j)7hWyc}~xn$M%Y_Mq=1O(#BaB z6!a6^EHqhwI?m4+7pcur{H6mE?yyXeK7E2Z%f4QeH4U7kB{$S5gtsG`OP!Y%!P>Zom)Jp>*Baba32;cVI{CB!CG18|Jx`MkaS0*L5NaOef;QT8 z8~x@GWv&wc+p<$0FM>KHoOj8EHrF^*5bcL*#C!;4k zQ34Og1=$bsytpGt;e>+Yt0Ms}WYyVD%(72Px-``K$^glEk3+1TwpyBS$fHA-?`lWI zEX5&T-+kI8j*1bdMR*f}^!Op6|5$NE@j%YKTOnW-=fZ{zoZ~;F$tGcAB$ZTD8sy3I z%d25x@|_Bt@dCo}8ER3(X;9ek0)RJRfQS1z7_U-P9%X{2kh|BeQ ztXWdLLyaQjF#AS0jU@yt3Hc(0pxOeyo^ zhF5H>FXg~=Q4$%LF0y&Sa3CKQ8&1k#jQUP*uim%h=V!yvQ*TBkep(h;#Kj3vGy&pnxVT5+#b0582TvO6Hx%@Y}y=0slv z@GQ~d-7`qOENE2%bQWeqypI#t!+vT)Bl%AjSSd+BXO6`G?TiZ=bOCm~Ye6GUD&nLJ z!L%iNtIMDl1r4=5Ewxb1=ihi8hfWcl;)x2`a1p^8WC2q)G8L+(YvL(gd~OK0!leoP zuIpK!*uSp&IOKlO_6Q|7>Xj+f^Z~i*wK!9{UrA^cVcB)2^OT@cX$#ygr%(@>RelEi z0^TC&$Z1!jq<8n_^!*k0GeGYhTE(~^I|N}-j8=$yfOR1 zxs8UPM)ovZ@r!G)K`gs|#TFCR`n<6Wyd~u$pe{P?D2L5)EvUi(2}w3>?7|4)Z#3u= z)_b@vhYwV)_~W$W6^Y96s)UD2afMF9Jq2sRfFf-Hgmo~a`@aM{cbg8A$zTQkMS$uE ziWd`i!kHt-8%#n`o}w(oay(%%Ye9^pjHFCfQUu^0{CMD`k|-0_QlKRQkTTXw6!(9Y zo=IHnRO`}qkxj6~K5TX(9k(XF&kf9u?7%hs!eSaraX)4GmsI6FvVV49HXSY`@3IIW zN6qSRTgi^3Y>y$*B<&wV))D^jNdY4KHKa5Z9LPszH7l6?vp`J7+?u$H4se`!dt~U5 zT;NvHcIEQcoi;r`55k^W!2e3jObDE7?IPvFml#w8GV&hvt#lR)u5;<4)wLCK zX#9lxu@I&>ZJiX)0G)ie#UDJDuoAv1TjI(a;1zS?---ceCCM^5{rK?Mf!t3a+_Kbj z^*OvyNzVc%mh(_wINH%`%;WxiQ&@l<@wFkPcVUL)Z-u0ZdA*;MQxFX_s(Pw7**pPb zJ*}S%h#~P5A|Y$pS)U^zS!9G3-9b#iun-SuPL%+BTK%#fot05jHOtT#1H>U4^5DvC z=p!C@pEfcQmbEms&J>vxungX$iolZ8^pqjdIuArLLxCPjoVC<)9f88CxJ`i3 zGSlBLV2CP~7J$IgZbxBgWM)v|n+UpMV7nQrr^q7sH=$zwY!B6^F7jzTkgpaA_75pf zKgp!_XiU;PjQ*QC+`vET#8CdXIy(fQIv$uF|F?6@e}kDFzPKj1mHh+cfQ1WvzaFj7 z@n59a81C-;l5$=@{zn76A|Xk`K48136WIUOF3Q#1&CS}u^6x&Y7L6^J?>rd2J7q@g zdls;*&hiJeXB73@3RHH$hXjB$eg(0A;7&v+P~0Kkh@42ZNWZ$oynFuE*XuewrpTO) z_&Faj#Y7N}IdC3CoR*%B>wbQ<%V=eJYu3>s3?gq7YRj9AaSyk`LlUIq7p7P(coe5A)|S{ zkmR5sa;_F*s0cESC}R{LZB^KRi$`wC9&LRq%nzAjoG)(9ca@NRXpJAVndmm4{7C&A zz_7eFyfPS1C}6Xuye71;u!5%}g_yEc!4>~@D~#0GDkZ%g3(JQUY}(*h-j|5k4rZe; z+ZR`$h_>+rAc;_|v4&Kvo#^<)GG0HL?Hh!zytO*2^00=`&un&M07jyBI4d1h78HmO zev$E<7s!d7%37(RW?S(?JS6G4YJh5NHHyBG?fphV_Ch^qmn(Osl(2!|JNWd+?Bz2}T? zP_^whQHv07CZdOJ14;K>GJ=K!KOkGOAkVSl#sjpSc^7BmVle2y86F3KGv%cB38nci z60arL-PMA=kh^CGAeNWBZ`1Dgs7|IR{83?EqvKW=VRLq%KFD*;P*IPZ?A=ijwW$lc z=_IAZSUJnT^#I)UE7&64XMsR0J+vi>J^ah|Ivjd<4PR`+=NB^Wj?iZ}OTI7FA(+aQ z<~|LuCt{M^y7+wTQHGekRWniz5qu0b_2na($SR#C%3b^qjpI|X52XfNSLO|ABR!W3 zQ%v64`{ofz_Rg=IwU?IJVt#ISEoSo91us=&ekkr!n+iV_>`M$MwxGDKEVj`gr#|nH z6PweY5`nO`xWh%Nt@KC9Io(En_UbgFZt3Ic3F)e8Li)5`R33#u>XCaVAKf{&RSuo+@O0Gadd z9Xw1_Jur)A6-{KrA?!*PX+?G-pk!?UZibq9`N^)$h12ywMS4bBvF(R9!?Y_?@Mph0 z8c!aHI1H z2-ma-=J8QY&Z!-Og>tq4h0bK<2G*FhueCHp3o*BCG(54ggY1({p!h4E*CJA=j5Cw- zajlz$jHl2i%3#XfW2cU@Fy?+4ckjez$q&*zp#nrr_RT8J-3%+^r^&e5JpinpQ%(-+ z-~}#Y245wsn5m815XWbKDTJK%esp(dL`3KkQY_o|lMVYj$p3WgH*dbHDX{nDZ#WPT zU`M@w9J2tndQ~$vvHRNqb1QYg;X4b#=#Q_FG-=tgc1bN5sC1*D%~MGD-XQ1%^;jDT zSHc|&zrXR@#j#w~%XB^1$9rATPg8&f!r;1zNrRK}e#}0bd_24n>a=}fXrvOSqig@s zkLScN2+msUbI4Ep(lZrmN*nWxA{B_flYx4)*~+Z5XhGAik=l_{MFsEUUG2W#Tv6bY3~)jp*C*JAR(O0rfZ>mJjQZli+_5B!-^+eAYN{3!TubnLhs5CaTYGo zIudxCg^G=aOt!xAUYJ6q#&^S~M$mq;Qd<)8R(`p=sB}`T&lc z#Df6OH(G^ zkEBs{IUZ5?P6<6m_AKDjXQ*Z*ly-*&Z5za6d)2HO)xx_!2;zx4Nj1u=NFc8;wq6FgJT^k017TArJp`0XX`b=a^ z9`BTA)nC(P-EufFGDZw%^IuhbX1sQ2btOC;!@F&=%Z7Gz}N!A3YB6Wyj_ zT(+c>Qc6=5o3_u~@Ght_bwW#X6&LBaFYwjT6+VeA($p(h7H!yPTH)blS_mq9+<7%Q z6kAhS=>@*^_@H67oCzEXMc7ki!EoyGAo28R#{2AXx@Uw zSc5jf%SUadtc8aqV)LO8X@?saPF%{Kxj#wP^4~y!F0}tjAgpZ?yVCph`Cub$cA!d% z+2GU5(elAq9nqT}L?7&%Gur#{Z{~O37usJJ&tDvKeOf@qllpi3UM|}V`}F)#WQH&5 z^4@Ou*Do9eKkmb*CE5|8!ellur&l3_d$411FPV#>0i+e&P47BRC=s3;Rl@AnRg--utJFiX02 z*FS|E@iN{~2o&7+W>Y0uD=pL#tURgrN{tP9-w*GMOVDZ*-5N4oC5X1M7=&}hRPG6t zpMWVG{#;3F;gxm%Wlcz<@7}CSZo@9+4bYmfx+D13&$kuYY;4?E_IpEAxUO7#%kHBA7);wk=K6rU0d_+v$}2@_{O52N0Re5^c?;5 zGDpv*){Ew?1P-H^3j^r;Y`!N)Yef*S;~;@aj!uu*T zex)-kf9O1Y!$?gH3q)}nHjinO_(&4o4HG~WjU9m}^OSGcj<_Je|2Tei!&7>tJU?PCrJrF4f$|C7$Lf7KXVM^EKMuxKCo&(N8f!+#U;(o5o z$Co|@uI>KbZx&E7%cjnJa}1X1`@^x^bx%|p4Eq}#fWB{A+-*HN{7BJzApdUOX;QMP zQU8kYJ5yO>_Qv&tJ$Du1xD+R~DU7ZG00*Lyr&H3 zi0Ipmkl62vQQkD_{aHJ?Lv{JfT~;G4F5^A6;MS4p?GJ}l*=3J>82B~2B>9l(@1oi? zEa{fvPpG)%CfjNbjsEpr4ma2maQ!9!0t_AC|7t31-KGU1 zWTcW99qpQ>ZJVf{Kgev9Mo$Zyo>R$CZFzt0*j48QlhKE_gpw{HJb&$$Ry8g4MKu8Q z3{OdO#y^{<^MN7~%ffQc!vLiBPfP^j#UgTtgX}eA1&}M)m!)9hytG}SEs?B;cSOkj zbHv2RiVKaO7Ar1~%ub{m*XCGl?Ri&l!}f%6*)`KlW3}BfjwAS_b^Ug92u+=)m8m?yhc*_FDFK%+_w^_J2S2YN8w923asbe)>vG zBu|>Vm`K}>|6KKAjDBZePODF;xWFeVa(m445@2}%QABbUS9tn zx&$YWmV1DDsDZkO{zKP4-C_T&?r&?@nArwkevSgQ+oMR@Y*lG)NmHQpga)=Q>O@)< zKie8!g5D`7z1>@=3XaRRP5ANC)!q-es$GOCZoa&A{)n+;Yv&A%&#XxtU&) zBCuT`>+3>~@25W_J)_r>*}uGhK5Rnki4%V|oKe&DbZ=dgr0&QIiU*@#0^6+K9F1j@(7*0e$$tHhRa*R9 zSj3+e-Vwm;?%!(;2X}iDa~EJ$=1+DvqqXI*&x6ymQzo1ssn-&b!~wz4TqvxeA0tWL zat}gpDoc zY)6dYSZ;dd;QeRXDb?jq71(t&v~P3me!|utd+%|xzfm_9AkpaR%4oFszEj_>eV5LN zw&RcC4j+6--PgKFt~<1!u9(rJCm{Ep9a;EHxND{vvCAr}I>H`e2d!F_U-Zhx1$S__ z;GV6tWvb!aT^CLrUa=bq4_DHOX&Zu4w{a-xOr^9BNu@=^p{X=~Il7`zuRP$ax?I3Y zuHJ7YC6h6I;c_n;RUjTN7dcJJPUJ{y!bU%f6$JwsF(&+i|4w@6BCV8BgiS@0^=*+tK^iyPt3N~W zD|cLc4w4aPa#RHsommFL9mBFHxsC#pax^Uk<^cSQ@`zx-hRu5&a0jjx<^9=V);OHX zZ-!AesT$*oi(vW@ky9SN9YG6|Qp!1T39T)A65We;M^BNA+}n-yyLFGk6Xp>pss_uL zk=)+^9yh%Yv8b!xEhZOEKTW!*8ct$HVu=Fq5qe~#OsHq?gez0}cGc2qdu2RU9|mD< zd*=48dv4?n#AAAHM0cPE^fmQI4@0~qn4uhUF!{dsp!W_$pm2N!L+Cdyr-;U^^AJez5>!ugGh_REq>=yCKeBs17!d zucosU3)g+V$2k8`oHNDxv@^qZ*P_q;8>SbE%CP6S#u@5Znd9PAIMe6T4sO?Ni@N12 zOf8apZD@>s4sTNb*XiGDn1&vjK0Ab8`A#ZhKY#SXD@Y>X!_>GH?=gX#l>3c7hu1vg?hRkdqO>4?Z2L`7eQoT8S2Jc>ql_4 zH7dY`vM~~4pXLo&r~W9|{(%3_8LM!7#j*zy1SFUQ1Oyv6V*wj?|DC3QD=*;n>0oSa z$7JJVZh56)>x8b3A=u^3O=~}cLc@pwJ=n$8U(6^<55{Hvy)>Dtn6b_|R3=FQJ(J4# z%VH`ZC*cL;F-*YcqX9$BE!$aXK9EmELRbnK1s(%ul+5OqQvkyd{C0Dz7*;7b!SLJV z*7{p-_WhRYEU)*8L*ZDV;n3V2nl~&90=T({$U}4QltW9c6Hk@wB_@{}$Z1>0;2wxA zm=(fgVbhX{PN!Xm%nm$5bRfrgC`Xzu95ycjrhkylUZ?XJ3=0ObBJt)&9r+A!76hS! z^c*Mez)xrcxdHv6l?>`;IcG4(5SDQ9Lp+z%ByfBtd9|uL{f;k%S)GFuK<|r?_u}G&xR#85nr_CCiGLz-0Ua8Aj%8d-!Wq5i3eW9XHeuw~7KUP!pt@ zE$UQW)9#_GMs@PMa34RdR;Ax&he8r~Hc|14kVaviBZ)fdv)dczRoa09=pAFs8@47- zD@OX}DST;Hb})=iqa44t5;47@4ifV2V4vVPiID_E8)BZ|pK%O}8L;x`(=sdVZ+U72 zZAd?i$(Q#VVs=_4mE&tlwuD=XF>VJd=PritIfl-|oop!7s`EZG`~YH2U;I!F0kcA4ie5T!b1Z=|`6J$^Q5 zBpMz9Mubps3nh5U2#h*85Rw&v%&U7h3`7Uw0nX}{{fjX8cc@if3}7qNNH6oxLOC&2 z2(`+ZJot;j(paoXKHVqraBOK9@uDmV&xe9+aTrA{@zc2J7t%U;weFuuzR`snsa5JC zq&}`EWDk2??Zfr`?oT?Y%_Qt(vLww_bb%HgL>f+6OuE=veR>}kk0x4h|JZx@YOmzp z^nPdg%eNOgujh3lI8bOHZ@3COlBLZ*QJH+(mlBzlHs}zq^EP!LWL9t~B+*T?<`l7Z z7T{q;9o&+VMpy7vXV6B_=6!wBblYy*=KVI43Hdvv1A1G~Z~u*nt9?Oe^tP;vW5L5G z7e}Wbls#4WKjH$u)GguHrFubKw19vHjj()Y8Bnsru}wECmmX#}!*xM452ZcD{dBXP zxGGmWf;@GD`{R7qwxSc*_^Lp=LRf{5Ab5H8@?*`8E%XrWH)mI?|MgM3sO2K&MPz?* zRwez?(fK58+(}thV6Ujp_uB97*Z68A6cvdV*|nE^otkHtR3p>@z&^!npR8&MZfxca zeIqWV@sBz-!~Wt};MgOHDuV~Yr+2v-QSgqr)2?NMz_OFbuTV(VTk8}It5b8{Zn}{#dXvv=UBbK<4<5}4U2;)4Vd;OlyzC1K+ohX3-?1fgb!!&& z2u3I$mYn%QPNI9~r&S975>q4kK3LVBnsCKL#6w6}Ma=d_>mJ+of;cKedFv|gF1wwa%%%-Ox{+@9)dZ<-EO zuQ|GH(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)LC5 zy^LMm)_*>F@}$I@8!D^6PvHD{u2}ii5$BaNh10+JTKRhiYwg~8=+^(>ROVLIS5|y4 zW%4YP(_4NPJoVx$*}%W7iA^eFK_gb;zj4R6L-qmQj7%cTpy6>2hQe9q5o?2%PMivC zp`HScxq-SJFwg)LV_=AO1`YUR2HNb$AVgC=mu1(c{}_7D!m6BN9Km<2GR|T z$ACsa+W6q6J-Wt@Htyg|ppuI~je;l|p94kUbx(4B5qKmTUHg~Yx5Zxrwdb%fFbJS% zuLp|2wI>!7U~_f)*&E!TR_GsK6BO0*8Nh%5&l~`aD9r`>9h>&N25BK9pyj85R>`1P zZUh`k2WyA;9N7@8q0qZp%(`2jfgvuGm4P3{q1M~wWVfq^w z!>my>qa81aZVvi9DZ-rN1u%1vCQ;C}qffjbv~MkeYDb%fK{o+?A_8H;^HQh@DAN+? z`q4*?5&Ektp!(6rkkO4m?|&nVD6Yra8%H+)y`zgTz`Ft20Bqe}bhFU=jtH|{8j;OH z?Mb4Wg5K3am=fIt4HcA*7rK7*_8>z4w^pPqhT1v|@MZ<(AW*InWJm;Nj~Cq_9srIR B5`zE$ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.scala deleted file mode 100644 index 8444a7d96..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Response.scala +++ /dev/null @@ -1,30 +0,0 @@ -package com.twitter.tweetypie.storage - -object Response { - case class TweetResponse( - tweetId: Long, - overallResponse: TweetResponseCode, - additionalFieldResponses: Option[Map[Short, FieldResponse]] = None) - - sealed trait TweetResponseCode - - object TweetResponseCode { - object Success extends TweetResponseCode - object Partial extends TweetResponseCode - object Failure extends TweetResponseCode - object OverCapacity extends TweetResponseCode - object Deleted extends TweetResponseCode - } - - case class FieldResponse(code: FieldResponseCode, message: Option[String] = None) - - sealed trait FieldResponseCode - - object FieldResponseCode { - object Success extends FieldResponseCode - object InvalidRequest extends FieldResponseCode - object ValueNotFound extends FieldResponseCode - object Timeout extends FieldResponseCode - object Error extends FieldResponseCode - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.docx new file mode 100644 index 0000000000000000000000000000000000000000..a81afd996c33abdeb7e27f01d1259195770e0510 GIT binary patch literal 37986 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.scala deleted file mode 100644 index 89b3e8efc..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Scribe.scala +++ /dev/null @@ -1,85 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.servo.util.FutureEffect -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.logging._ -import com.twitter.scrooge.BinaryThriftStructSerializer -import com.twitter.servo.util.{Scribe => ServoScribe} -import com.twitter.tweetypie.storage_internal.thriftscala._ -import com.twitter.tbird.thriftscala.Added -import com.twitter.tbird.thriftscala.Removed -import com.twitter.tbird.thriftscala.Scrubbed -import com.twitter.util.Time - -/** - * Scribe is used to log tweet writes which are used to generate /tables/statuses in HDFS. - * - * Write Scribe Category Message - * ----- --------------- ------- - * add tbird_add_status [[com.twitter.tbird.thriftscala.Added]] - * remove tbird_remove_status [[com.twitter.tbird.thriftscala.Removed]] - * scrub tbird_scrub_status [[com.twitter.tbird.thriftscala.Scrubbed]] - * - * The thrift representation is encoded using binary thrift protocol format, followed by base64 - * encoding and converted to string using default character set (utf8). The logger uses BareFormatter. - * - * The thrift ops are scribed only after the write API call has succeeded. - * - * The class is thread safe except initial configuration and registration routines, - * and no exception is expected unless java heap is out of memory. - * - * If exception does get thrown, add/remove/scrub operations will fail and - * client will have to retry - */ -class Scribe(factory: Scribe.ScribeHandlerFactory, statsReceiver: StatsReceiver) { - import Scribe._ - - private val AddedSerializer = BinaryThriftStructSerializer(Added) - private val RemovedSerializer = BinaryThriftStructSerializer(Removed) - private val ScrubbedSerializer = BinaryThriftStructSerializer(Scrubbed) - - private val addCounter = statsReceiver.counter("scribe/add/count") - private val removeCounter = statsReceiver.counter("scribe/remove/count") - private val scrubCounter = statsReceiver.counter("scribe/scrub/count") - - val addHandler: FutureEffect[String] = ServoScribe(factory(scribeAddedCategory)()) - val removeHandler: FutureEffect[String] = ServoScribe(factory(scribeRemovedCategory)()) - val scrubHandler: FutureEffect[String] = ServoScribe(factory(scribeScrubbedCategory)()) - - private def addedToString(tweet: StoredTweet): String = - AddedSerializer.toString( - Added(StatusConversions.toTBirdStatus(tweet), Time.now.inMilliseconds, Some(false)) - ) - - private def removedToString(id: Long, at: Time, isSoftDeleted: Boolean): String = - RemovedSerializer.toString(Removed(id, at.inMilliseconds, Some(isSoftDeleted))) - - private def scrubbedToString(id: Long, cols: Seq[Int], at: Time): String = - ScrubbedSerializer.toString(Scrubbed(id, cols, at.inMilliseconds)) - - def logAdded(tweet: StoredTweet): Unit = { - addHandler(addedToString(tweet)) - addCounter.incr() - } - - def logRemoved(id: Long, at: Time, isSoftDeleted: Boolean): Unit = { - removeHandler(removedToString(id, at, isSoftDeleted)) - removeCounter.incr() - } - - def logScrubbed(id: Long, cols: Seq[Int], at: Time): Unit = { - scrubHandler(scrubbedToString(id, cols, at)) - scrubCounter.incr() - } -} - -object Scribe { - type ScribeHandlerFactory = (String) => HandlerFactory - - /** WARNING: These categories are white-listed. If you are changing them, the new categories should be white-listed. - * You should followup with CoreWorkflows team (CW) for that. - */ - private val scribeAddedCategory = "tbird_add_status" - private val scribeRemovedCategory = "tbird_remove_status" - private val scribeScrubbedCategory = "tbird_scrub_status" -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..75358d910198ef04550e8b74a27b3707207a6818 GIT binary patch literal 37683 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.scala deleted file mode 100644 index 7bbae6251..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/ScrubHandler.scala +++ /dev/null @@ -1,71 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.kv.ManhattanValue -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.util.Time - -/** - * Deletes data for the scrubbed field and writes a metadata record. - * Provides scrub functionality. Right now, we only allow the scrubbing of the geo field. - * It should be simple to add more fields to the allowlist if needed. - */ -object ScrubHandler { - - val scrubFieldsAllowlist: Set[Field] = Set(Field.Geo) - - def apply( - insert: ManhattanOperations.Insert, - delete: ManhattanOperations.Delete, - scribe: Scribe, - stats: StatsReceiver - ): TweetStorageClient.Scrub = - (unfilteredTweetIds: Seq[TweetId], columns: Seq[Field]) => { - val tweetIds = unfilteredTweetIds.filter(_ > 0) - - require(columns.nonEmpty, "Must specify fields to scrub") - require( - columns.toSet.size == columns.size, - s"Duplicate fields to scrub specified: $columns" - ) - require( - columns.forall(scrubFieldsAllowlist.contains(_)), - s"Cannot scrub $columns; scrubbable fields are restricted to $scrubFieldsAllowlist" - ) - - Stats.addWidthStat("scrub", "ids", tweetIds.size, stats) - val mhTimestamp = Time.now - - val stitches = tweetIds.map { tweetId => - val deletionStitches = columns.map { field => - val mhKeyToDelete = TweetKey.fieldKey(tweetId, field.id) - delete(mhKeyToDelete, Some(mhTimestamp)).liftToTry - } - - val collectedStitch = - Stitch.collect(deletionStitches).map(collectWithRateLimitCheck).lowerFromTry - - collectedStitch - .flatMap { _ => - val scrubbedStitches = columns.map { column => - val scrubbedKey = TweetKey.scrubbedFieldKey(tweetId, column.id) - val record = - TweetManhattanRecord( - scrubbedKey, - ManhattanValue(StringCodec.toByteBuffer(""), Some(mhTimestamp)) - ) - - insert(record).liftToTry - } - - Stitch.collect(scrubbedStitches) - } - .map(collectWithRateLimitCheck) - } - - Stitch.collect(stitches).map(collectWithRateLimitCheck).lowerFromTry.onSuccess { _ => - tweetIds.foreach { id => scribe.logScrubbed(id, columns.map(_.id.toInt), mhTimestamp) } - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..663dedd4c085bb9922008e00e36df86eed2d9bd5 GIT binary patch literal 36925 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 L5tu!Wb%S^S3L6HJ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.scala deleted file mode 100644 index ea350ccb9..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/SoftDeleteHandler.scala +++ /dev/null @@ -1,20 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.util.Time - -object SoftDeleteHandler { - def apply( - insert: ManhattanOperations.Insert, - scribe: Scribe - ): TweetStorageClient.SoftDelete = - tweetId => { - val mhTimestamp = Time.now - val softDeleteRecord = TweetStateRecord - .SoftDeleted(tweetId, mhTimestamp.inMillis) - .toTweetMhRecord - - insert(softDeleteRecord).onSuccess { _ => - scribe.logRemoved(tweetId, mhTimestamp, isSoftDeleted = true) - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Stats.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/Stats.docx new file mode 100644 index 0000000000000000000000000000000000000000..36a7fb116f8180fcd609ce8a65b64f7c2ec60087 GIT binary patch literal 37164 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 getCounter(rpcName, fieldId, stats).incr(count) } - } - - private def getCounter(rpcName: String, fieldId: FieldId, stats: StatsReceiver) = - stats.scope(rpcName, "fields", fieldId.toString).counter("count") - - private def getStat(rpcName: String, paramName: String, stats: StatsReceiver) = - stats.scope(rpcName, paramName).stat("width") -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.docx new file mode 100644 index 0000000000000000000000000000000000000000..f078cebce4e8bbc98a6351fe71c3785fdd24961b GIT binary patch literal 37819 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 Qzp9iV?!fY}Oq&1pKRA@a{Qv*} literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.scala deleted file mode 100644 index 77dfed9ba..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StatusConversions.scala +++ /dev/null @@ -1,129 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.tweetypie.storage_internal.thriftscala._ -import com.twitter.tbird.{thriftscala => tbird} - -object StatusConversions { - - /** - * This is used only in Scribe.scala, when scribing to tbird_add_status - * Once we remove that, we can also remove this. - */ - def toTBirdStatus(tweet: StoredTweet): tbird.Status = - tbird.Status( - id = tweet.id, - userId = tweet.userId.get, - text = tweet.text.get, - createdVia = tweet.createdVia.get, - createdAtSec = tweet.createdAtSec.get, - reply = tweet.reply.map(toTBirdReply), - share = tweet.share.map(toTBirdShare), - contributorId = tweet.contributorId, - geo = tweet.geo.map(toTBirdGeo), - hasTakedown = tweet.hasTakedown.getOrElse(false), - nsfwUser = tweet.nsfwUser.getOrElse(false), - nsfwAdmin = tweet.nsfwAdmin.getOrElse(false), - media = tweet.media.map(_.map(toTBirdMedia)).getOrElse(Seq()), - narrowcast = tweet.narrowcast.map(toTBirdNarrowcast), - nullcast = tweet.nullcast.getOrElse(false), - trackingId = tweet.trackingId - ) - - /** - * This is only used in a test, to verify that the above method `toTBirdStatus` - * works, so we can't remove it as long as the above method exists. - */ - def fromTBirdStatus(status: tbird.Status): StoredTweet = { - StoredTweet( - id = status.id, - userId = Some(status.userId), - text = Some(status.text), - createdVia = Some(status.createdVia), - createdAtSec = Some(status.createdAtSec), - reply = status.reply.map(fromTBirdReply), - share = status.share.map(fromTBirdShare), - contributorId = status.contributorId, - geo = status.geo.map(fromTBirdGeo), - hasTakedown = Some(status.hasTakedown), - nsfwUser = Some(status.nsfwUser), - nsfwAdmin = Some(status.nsfwAdmin), - media = Some(status.media.map(fromTBirdMedia)), - narrowcast = status.narrowcast.map(fromTBirdNarrowcast), - nullcast = Some(status.nullcast), - trackingId = status.trackingId - ) - } - - private def fromTBirdReply(reply: tbird.Reply): StoredReply = - StoredReply( - inReplyToStatusId = reply.inReplyToStatusId, - inReplyToUserId = reply.inReplyToUserId - ) - - private def fromTBirdShare(share: tbird.Share): StoredShare = - StoredShare( - sourceStatusId = share.sourceStatusId, - sourceUserId = share.sourceUserId, - parentStatusId = share.parentStatusId - ) - - private def fromTBirdGeo(geo: tbird.Geo): StoredGeo = - StoredGeo( - latitude = geo.latitude, - longitude = geo.longitude, - geoPrecision = geo.geoPrecision, - entityId = geo.entityId - ) - - private def fromTBirdMedia(media: tbird.MediaEntity): StoredMediaEntity = - StoredMediaEntity( - id = media.id, - mediaType = media.mediaType, - width = media.width, - height = media.height - ) - - private def fromTBirdNarrowcast(narrowcast: tbird.Narrowcast): StoredNarrowcast = - StoredNarrowcast( - language = Some(narrowcast.language), - location = Some(narrowcast.location), - ids = Some(narrowcast.ids) - ) - - private def toTBirdReply(reply: StoredReply): tbird.Reply = - tbird.Reply( - inReplyToStatusId = reply.inReplyToStatusId, - inReplyToUserId = reply.inReplyToUserId - ) - - private def toTBirdShare(share: StoredShare): tbird.Share = - tbird.Share( - sourceStatusId = share.sourceStatusId, - sourceUserId = share.sourceUserId, - parentStatusId = share.parentStatusId - ) - - private def toTBirdGeo(geo: StoredGeo): tbird.Geo = - tbird.Geo( - latitude = geo.latitude, - longitude = geo.longitude, - geoPrecision = geo.geoPrecision, - entityId = geo.entityId, - name = geo.name - ) - - private def toTBirdMedia(media: StoredMediaEntity): tbird.MediaEntity = - tbird.MediaEntity( - id = media.id, - mediaType = media.mediaType, - width = media.width, - height = media.height - ) - - private def toTBirdNarrowcast(narrowcast: StoredNarrowcast): tbird.Narrowcast = - tbird.Narrowcast( - language = narrowcast.language.getOrElse(Nil), - location = narrowcast.location.getOrElse(Nil), - ids = narrowcast.ids.getOrElse(Nil) - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0d853b6e2c8b1e1da5eb5356dd2c527c4be8d60 GIT binary patch literal 40050 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%0A4;dcp37`R=5SlRooMq^wyGyZrC!BZE3gbVN1o*L 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.scala deleted file mode 100644 index d424a8817..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/StorageConversions.scala +++ /dev/null @@ -1,346 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.mediaservices.commons.tweetmedia.thriftscala._ -import com.twitter.scrooge.TFieldBlob -import com.twitter.tweetypie.additionalfields.AdditionalFields -import com.twitter.tweetypie.storage_internal.thriftscala._ -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.util.TweetLenses - -object StorageConversions { - private val tbTweetCompiledAdditionalFieldIds = - StoredTweet.metaData.fields.map(_.id).filter(AdditionalFields.isAdditionalFieldId) - - def toStoredReply(reply: Reply, conversationId: Option[TweetId]): StoredReply = - StoredReply( - inReplyToStatusId = reply.inReplyToStatusId.getOrElse(0), - inReplyToUserId = reply.inReplyToUserId, - conversationId = conversationId - ) - - def toStoredShare(share: Share): StoredShare = - StoredShare( - share.sourceStatusId, - share.sourceUserId, - share.parentStatusId - ) - - def toStoredQuotedTweet(qt: QuotedTweet, text: String): Option[StoredQuotedTweet] = - qt.permalink - .filterNot { p => - text.contains(p.shortUrl) - } // omit StoredQuotedTweet when url already in text - .map { p => - StoredQuotedTweet( - qt.tweetId, - qt.userId, - p.shortUrl - ) - } - - def toStoredGeo(tweet: Tweet): Option[StoredGeo] = - TweetLenses.geoCoordinates.get(tweet) match { - case None => - TweetLenses.placeId.get(tweet) match { - case None => None - case Some(placeId) => - Some( - StoredGeo( - latitude = 0.0, - longitude = 0.0, - geoPrecision = 0, - entityId = 0, - name = Some(placeId) - ) - ) - } - case Some(coords) => - Some( - StoredGeo( - latitude = coords.latitude, - longitude = coords.longitude, - geoPrecision = coords.geoPrecision, - entityId = if (coords.display) 2 else 0, - name = TweetLenses.placeId.get(tweet) - ) - ) - } - - def toStoredMedia(mediaList: Seq[MediaEntity]): Seq[StoredMediaEntity] = - mediaList.filter(_.sourceStatusId.isEmpty).flatMap(toStoredMediaEntity) - - def toStoredMediaEntity(media: MediaEntity): Option[StoredMediaEntity] = - media.sizes.find(_.sizeType == MediaSizeType.Orig).map { origSize => - StoredMediaEntity( - id = media.mediaId, - mediaType = origSize.deprecatedContentType.value.toByte, - width = origSize.width.toShort, - height = origSize.height.toShort - ) - } - - // The language and ids fields are for compatibility with existing tweets stored in manhattan. - def toStoredNarrowcast(narrowcast: Narrowcast): StoredNarrowcast = - StoredNarrowcast( - language = Some(Seq.empty), - location = Some(narrowcast.location), - ids = Some(Seq.empty) - ) - - def toStoredAdditionalFields(from: Seq[TFieldBlob], to: StoredTweet): StoredTweet = - from.foldLeft(to) { case (t, f) => t.setField(f) } - - def toStoredAdditionalFields(from: Tweet, to: StoredTweet): StoredTweet = - toStoredAdditionalFields(AdditionalFields.additionalFields(from), to) - - def toStoredTweet(tweet: Tweet): StoredTweet = { - val storedTweet = - StoredTweet( - id = tweet.id, - userId = Some(TweetLenses.userId(tweet)), - text = Some(TweetLenses.text(tweet)), - createdVia = Some(TweetLenses.createdVia(tweet)), - createdAtSec = Some(TweetLenses.createdAt(tweet)), - reply = - TweetLenses.reply(tweet).map { r => toStoredReply(r, TweetLenses.conversationId(tweet)) }, - share = TweetLenses.share(tweet).map(toStoredShare), - contributorId = tweet.contributor.map(_.userId), - geo = toStoredGeo(tweet), - hasTakedown = Some(TweetLenses.hasTakedown(tweet)), - nsfwUser = Some(TweetLenses.nsfwUser(tweet)), - nsfwAdmin = Some(TweetLenses.nsfwAdmin(tweet)), - media = tweet.media.map(toStoredMedia), - narrowcast = TweetLenses.narrowcast(tweet).map(toStoredNarrowcast), - nullcast = Some(TweetLenses.nullcast(tweet)), - trackingId = TweetLenses.trackingId(tweet), - quotedTweet = TweetLenses.quotedTweet(tweet).flatMap { qt => - toStoredQuotedTweet(qt, TweetLenses.text(tweet)) - } - ) - toStoredAdditionalFields(tweet, storedTweet) - } - - /** - * Does not need core data to be set. Constructs on disk tweet by avoiding the TweetLenses object - * and only extracting the specified fields. - * - * NOTE: Assumes that specified fields are set in the tweet. - * - * @param tpTweet Tweetypie Tweet to be converted - * @param fields the fields to be populated in the on disk Tweet - * - * @return an on disk Tweet which has only the specified fields set - */ - def toStoredTweetForFields(tpTweet: Tweet, fields: Set[Field]): StoredTweet = { - - // Make sure all the passed in fields are known or additional fields - require( - (fields -- Field.AllUpdatableCompiledFields) - .forall(field => AdditionalFields.isAdditionalFieldId(field.id)) - ) - - val storedTweet = - StoredTweet( - id = tpTweet.id, - geo = if (fields.contains(Field.Geo)) { - tpTweet.coreData.get.coordinates match { - case None => - tpTweet.coreData.get.placeId match { - case None => None - case Some(placeId) => - Some( - StoredGeo( - latitude = 0.0, - longitude = 0.0, - geoPrecision = 0, - entityId = 0, - name = Some(placeId) - ) - ) - } - case Some(coords) => - Some( - StoredGeo( - latitude = coords.latitude, - longitude = coords.longitude, - geoPrecision = coords.geoPrecision, - entityId = if (coords.display) 2 else 0, - name = tpTweet.coreData.get.placeId - ) - ) - } - } else { - None - }, - hasTakedown = - if (fields.contains(Field.HasTakedown)) - Some(tpTweet.coreData.get.hasTakedown) - else - None, - nsfwUser = - if (fields.contains(Field.NsfwUser)) - Some(tpTweet.coreData.get.nsfwUser) - else - None, - nsfwAdmin = - if (fields.contains(Field.NsfwAdmin)) - Some(tpTweet.coreData.get.nsfwAdmin) - else - None - ) - - if (fields.map(_.id).exists(AdditionalFields.isAdditionalFieldId)) - toStoredAdditionalFields(tpTweet, storedTweet) - else - storedTweet - } - - def fromStoredReply(reply: StoredReply): Reply = - Reply( - Some(reply.inReplyToStatusId).filter(_ > 0), - reply.inReplyToUserId - ) - - def fromStoredShare(share: StoredShare): Share = - Share( - share.sourceStatusId, - share.sourceUserId, - share.parentStatusId - ) - - def fromStoredQuotedTweet(qt: StoredQuotedTweet): QuotedTweet = - QuotedTweet( - qt.tweetId, - qt.userId, - Some( - ShortenedUrl( - shortUrl = qt.shortUrl, - longUrl = "", // will be hydrated later via tweetypie's QuotedTweetRefUrlsHydrator - displayText = "" //will be hydrated later via tweetypie's QuotedTweetRefUrlsHydrator - ) - ) - ) - - def fromStoredGeo(geo: StoredGeo): GeoCoordinates = - GeoCoordinates( - latitude = geo.latitude, - longitude = geo.longitude, - geoPrecision = geo.geoPrecision, - display = geo.entityId == 2 - ) - - def fromStoredMediaEntity(media: StoredMediaEntity): MediaEntity = - MediaEntity( - fromIndex = -1, // will get filled in later - toIndex = -1, // will get filled in later - url = null, // will get filled in later - mediaPath = "", // field is obsolete - mediaUrl = null, // will get filled in later - mediaUrlHttps = null, // will get filled in later - displayUrl = null, // will get filled in later - expandedUrl = null, // will get filled in later - mediaId = media.id, - nsfw = false, - sizes = Set( - MediaSize( - sizeType = MediaSizeType.Orig, - resizeMethod = MediaResizeMethod.Fit, - deprecatedContentType = MediaContentType(media.mediaType), - width = media.width, - height = media.height - ) - ) - ) - - def fromStoredNarrowcast(narrowcast: StoredNarrowcast): Narrowcast = - Narrowcast( - location = narrowcast.location.getOrElse(Seq()) - ) - - def fromStoredTweet(storedTweet: StoredTweet): Tweet = { - val coreData = - TweetCoreData( - userId = storedTweet.userId.get, - text = storedTweet.text.get, - createdVia = storedTweet.createdVia.get, - createdAtSecs = storedTweet.createdAtSec.get, - reply = storedTweet.reply.map(fromStoredReply), - share = storedTweet.share.map(fromStoredShare), - hasTakedown = storedTweet.hasTakedown.getOrElse(false), - nsfwUser = storedTweet.nsfwUser.getOrElse(false), - nsfwAdmin = storedTweet.nsfwAdmin.getOrElse(false), - narrowcast = storedTweet.narrowcast.map(fromStoredNarrowcast), - nullcast = storedTweet.nullcast.getOrElse(false), - trackingId = storedTweet.trackingId, - conversationId = storedTweet.reply.flatMap(_.conversationId), - placeId = storedTweet.geo.flatMap(_.name), - coordinates = storedTweet.geo.map(fromStoredGeo), - hasMedia = if (storedTweet.media.exists(_.nonEmpty)) Some(true) else None - ) - - // retweets should never have their media, but some tweets incorrectly do. - val storedMedia = if (coreData.share.isDefined) Nil else storedTweet.media.toSeq - - val tpTweet = - Tweet( - id = storedTweet.id, - coreData = Some(coreData), - contributor = storedTweet.contributorId.map(Contributor(_)), - media = Some(storedMedia.flatten.map(fromStoredMediaEntity)), - mentions = Some(Seq.empty), - urls = Some(Seq.empty), - cashtags = Some(Seq.empty), - hashtags = Some(Seq.empty), - quotedTweet = storedTweet.quotedTweet.map(fromStoredQuotedTweet) - ) - fromStoredAdditionalFields(storedTweet, tpTweet) - } - - def fromStoredTweetAllowInvalid(storedTweet: StoredTweet): Tweet = { - fromStoredTweet( - storedTweet.copy( - userId = storedTweet.userId.orElse(Some(-1L)), - text = storedTweet.text.orElse(Some("")), - createdVia = storedTweet.createdVia.orElse(Some("")), - createdAtSec = storedTweet.createdAtSec.orElse(Some(-1L)) - )) - } - - def fromStoredAdditionalFields(from: StoredTweet, to: Tweet): Tweet = { - val passThroughAdditionalFields = - from._passthroughFields.filterKeys(AdditionalFields.isAdditionalFieldId) - val allAdditionalFields = - from.getFieldBlobs(tbTweetCompiledAdditionalFieldIds) ++ passThroughAdditionalFields - allAdditionalFields.values.foldLeft(to) { case (t, f) => t.setField(f) } - } - - def toDeletedTweet(storedTweet: StoredTweet): DeletedTweet = { - val noteTweetBlob = storedTweet.getFieldBlob(Tweet.NoteTweetField.id) - val noteTweetOption = noteTweetBlob.map(blob => NoteTweet.decode(blob.read)) - DeletedTweet( - id = storedTweet.id, - userId = storedTweet.userId, - text = storedTweet.text, - createdAtSecs = storedTweet.createdAtSec, - share = storedTweet.share.map(toDeletedShare), - media = storedTweet.media.map(_.map(toDeletedMediaEntity)), - noteTweetId = noteTweetOption.map(_.id), - isExpandable = noteTweetOption.flatMap(_.isExpandable) - ) - } - - def toDeletedShare(storedShare: StoredShare): DeletedTweetShare = - DeletedTweetShare( - sourceStatusId = storedShare.sourceStatusId, - sourceUserId = storedShare.sourceUserId, - parentStatusId = storedShare.parentStatusId - ) - - def toDeletedMediaEntity(storedMediaEntity: StoredMediaEntity): DeletedTweetMediaEntity = - DeletedTweetMediaEntity( - id = storedMediaEntity.id, - mediaType = storedMediaEntity.mediaType, - width = storedMediaEntity.width, - height = storedMediaEntity.height - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.docx new file mode 100644 index 0000000000000000000000000000000000000000..a145a7cbab71c09af143b0d011d7512f7c116282 GIT binary patch literal 38093 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.scala deleted file mode 100644 index 52e907594..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TimestampDecoder.scala +++ /dev/null @@ -1,92 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Time -import com.twitter.util.Try -import java.util.Arrays -import scala.util.control.NoStackTrace -import scala.util.control.NonFatal - -sealed abstract class TimestampType(val keyName: String) -object TimestampType { - object Default extends TimestampType("timestamp") - object SoftDelete extends TimestampType("softdelete_timestamp") -} - -/** - * TimestampDecoder gets the timestamps associated with state records. The Manhattan timestamp is - * used for legacy records (with value "1"), otherwise the timestamp is extracted from the - * JSON value. - * - * See "Metadata" in README.md for further information about state records. - */ -object TimestampDecoder { - case class UnparsableJson(msg: String, t: Throwable) extends Exception(msg, t) with NoStackTrace - case class MissingJsonTimestamp(msg: String) extends Exception(msg) with NoStackTrace - case class UnexpectedJsonValue(msg: String) extends Exception(msg) with NoStackTrace - case class MissingManhattanTimestamp(msg: String) extends Exception(msg) with NoStackTrace - - private[storage] val LegacyValue: Array[Byte] = Array('1') - - /** - * The first backfill of tweet data to Manhattan supplied timestamps in milliseconds where - * nanoseconds were expected. The result is that some values have an incorrect Manhattan - * timestamp. For these bad timestamps, time.inNanoseconds is actually milliseconds. - * - * For example, the deletion record for tweet 22225781 has Manhattan timestamp 1970-01-01 00:23:24 +0000. - * Contrast with the deletion record for tweet 435404491999813632 with Manhattan timestamp 2014-11-09 14:24:04 +0000 - * - * This threshold value comes from the last time in milliseconds that was interpreted - * as nanoseconds, e.g. Time.fromNanoseconds(1438387200000L) == 1970-01-01 00:23:58 +0000 - */ - private[storage] val BadTimestampThreshold = Time.at("1970-01-01 00:23:58 +0000") - - def decode(record: TweetManhattanRecord, tsType: TimestampType): Try[Long] = - decode(record.value, tsType) - - def decode(mhValue: TweetManhattanValue, tsType: TimestampType): Try[Long] = { - val value = ByteArrayCodec.fromByteBuffer(mhValue.contents) - if (isLegacyRecord(value)) { - nativeManhattanTimestamp(mhValue) - } else { - jsonTimestamp(value, tsType) - } - } - - private def isLegacyRecord(value: Array[Byte]) = Arrays.equals(value, LegacyValue) - - private def nativeManhattanTimestamp(mhValue: TweetManhattanValue): Try[Long] = - mhValue.timestamp match { - case Some(ts) => Return(correctedTimestamp(ts)) - case None => - Throw(MissingManhattanTimestamp(s"Manhattan timestamp missing in value $mhValue")) - } - - private def jsonTimestamp(value: Array[Byte], tsType: TimestampType): Try[Long] = - Try { Json.decode(value) } - .rescue { case NonFatal(e) => Throw(UnparsableJson(e.getMessage, e)) } - .flatMap { m => - m.get(tsType.keyName) match { - case Some(v) => - v match { - case l: Long => Return(l) - case i: Integer => Return(i.toLong) - case _ => - Throw( - UnexpectedJsonValue(s"Unexpected value for ${tsType.keyName} in record data $m") - ) - } - case None => - Throw(MissingJsonTimestamp(s"Missing key ${tsType.keyName} in record data $m")) - } - } - - def correctedTime(t: Time): Time = - if (t < BadTimestampThreshold) Time.fromMilliseconds(t.inNanoseconds) else t - - def correctedTime(t: Long): Time = correctedTime(Time.fromNanoseconds(t)) - - def correctedTimestamp(t: Time): Long = - if (t < BadTimestampThreshold) t.inNanoseconds else t.inMilliseconds -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.docx new file mode 100644 index 0000000000000000000000000000000000000000..1cee29c2c185b6067b00f82c5835c2f4e5a143f4 GIT binary patch literal 38904 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 PxFB}G^Z>R^1CIX#W-{L| literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.scala deleted file mode 100644 index ed5d01141..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetKey.scala +++ /dev/null @@ -1,164 +0,0 @@ -package com.twitter.tweetypie.storage - -/** - * Responsible for encoding/decoding Tweet records to/from Manhattan keys - * - * K/V Scheme: - * ----------- - * [TweetId] - * /metadata - * /delete_state (a.k.a. hard delete) - * /soft_delete_state - * /bounce_delete_state - * /undelete_state - * /force_added_state - * /scrubbed_fields/ - * /[ScrubbedFieldId_1] - * .. - * /[ScrubbedFieldId_M] - * /fields - * /internal - * /1 - * /9 - * .. - * /99 - * /external - * /100 - * .. - * - * IMPORTANT NOTE: - * 1) Field Ids 2 to 8 in Tweet thrift struct are considered "core fields" are 'packed' together - * into a TFieldBlob and stored under field id 1 (i.e [DatasetName]/[TweetId]/fields/internal/1). - * This is why we do not see keys from [DatasetName]/[TweetId]/fields/internal/2 to [DatasetName]/ - * [TweetId]/fields/internal/8) - * - * 2) Also, the tweet id (which is the field id 1 in Tweet thrift structure) is not explicitly stored - * in Manhattan. There is no need to explicitly store it since it is a part of the Pkey - */ -case class TweetKey(tweetId: TweetId, lKey: TweetKey.LKey) { - override def toString: String = - s"/${ManhattanOperations.PkeyInjection(tweetId)}/${ManhattanOperations.LkeyInjection(lKey)}" -} - -object TweetKey { - // Manhattan uses lexicographical order for keys. To make sure lexicographical order matches the - // numerical order, we should pad both tweet id and field ids with leading zeros. - // Since tweet id is long and field id is a short, the max width of each can be obtained by doing - // Long.MaxValue.toString.length and Short.MaxValue.toString.length respectively - private val TweetIdFormatStr = s"%0${Long.MaxValue.toString.length}d" - private val FieldIdFormatStr = s"%0${Short.MaxValue.toString.length}d" - private[storage] def padTweetIdStr(tweetId: Long): String = TweetIdFormatStr.format(tweetId) - private[storage] def padFieldIdStr(fieldId: Short): String = FieldIdFormatStr.format(fieldId) - - def coreFieldsKey(tweetId: TweetId): TweetKey = TweetKey(tweetId, LKey.CoreFieldsKey) - def hardDeletionStateKey(tweetId: TweetId): TweetKey = - TweetKey(tweetId, LKey.HardDeletionStateKey) - def softDeletionStateKey(tweetId: TweetId): TweetKey = - TweetKey(tweetId, LKey.SoftDeletionStateKey) - def bounceDeletionStateKey(tweetId: TweetId): TweetKey = - TweetKey(tweetId, LKey.BounceDeletionStateKey) - def unDeletionStateKey(tweetId: TweetId): TweetKey = TweetKey(tweetId, LKey.UnDeletionStateKey) - def forceAddedStateKey(tweetId: TweetId): TweetKey = TweetKey(tweetId, LKey.ForceAddedStateKey) - def scrubbedGeoFieldKey(tweetId: TweetId): TweetKey = TweetKey(tweetId, LKey.ScrubbedGeoFieldKey) - def fieldKey(tweetId: TweetId, fieldId: FieldId): TweetKey = - TweetKey(tweetId, LKey.FieldKey(fieldId)) - def internalFieldsKey(tweetId: TweetId, fieldId: FieldId): TweetKey = - TweetKey(tweetId, LKey.InternalFieldsKey(fieldId)) - def additionalFieldsKey(tweetId: TweetId, fieldId: FieldId): TweetKey = - TweetKey(tweetId, LKey.AdditionalFieldsKey(fieldId)) - def scrubbedFieldKey(tweetId: TweetId, fieldId: FieldId): TweetKey = - TweetKey(tweetId, LKey.ScrubbedFieldKey(fieldId)) - - // AllFieldsKeyPrefix: fields - // CoreFieldsKey: fields/internal/1 (Stores subset of StoredTweet fields which are - // "packed" into a single CoreFields record) - // HardDeletionStateKey: metadata/delete_state - // SoftDeletionStateKey: metadata/soft_delete_state - // BounceDeletionStateKey: metadata/bounce_delete_state - // UnDeletionStateKey: metadata/undelete_state - // ForceAddedStateKey: metadata/force_added_state - // FieldKey: fields// (where - // is 'internal' for field ids < 100 and 'external' for all other - // fields ids) - // InternalFieldsKeyPrefix: fields/internal - // PKey: - // ScrubbedFieldKey: metadata/scrubbed_fields/ - // ScrubbedFieldKeyPrefix: metadata/scrubbed_fields - sealed abstract class LKey(override val toString: String) - object LKey { - private val HardDeletionRecordLiteral = "delete_state" - private val SoftDeletionRecordLiteral = "soft_delete_state" - private val BounceDeletionRecordLiteral = "bounce_delete_state" - private val UnDeletionRecordLiteral = "undelete_state" - private val ForceAddRecordLiteral = "force_added_state" - private val ScrubbedFieldsGroup = "scrubbed_fields" - private val InternalFieldsGroup = "internal" - private val ExternalFieldsGroup = "external" - private val MetadataCategory = "metadata" - private val FieldsCategory = "fields" - private val InternalFieldsKeyPrefix = s"$FieldsCategory/$InternalFieldsGroup/" - private val ExternalFieldsKeyPrefix = s"$FieldsCategory/$ExternalFieldsGroup/" - private val ScrubbedFieldsKeyPrefix = s"$MetadataCategory/$ScrubbedFieldsGroup/" - - sealed abstract class MetadataKey(metadataType: String) - extends LKey(s"$MetadataCategory/$metadataType") - sealed abstract class StateKey(stateType: String) extends MetadataKey(stateType) - case object HardDeletionStateKey extends StateKey(s"$HardDeletionRecordLiteral") - case object SoftDeletionStateKey extends StateKey(s"$SoftDeletionRecordLiteral") - case object BounceDeletionStateKey extends StateKey(s"$BounceDeletionRecordLiteral") - case object UnDeletionStateKey extends StateKey(s"$UnDeletionRecordLiteral") - case object ForceAddedStateKey extends StateKey(s"$ForceAddRecordLiteral") - - case class ScrubbedFieldKey(fieldId: FieldId) - extends MetadataKey(s"$ScrubbedFieldsGroup/${padFieldIdStr(fieldId)}") - val ScrubbedGeoFieldKey: LKey.ScrubbedFieldKey = ScrubbedFieldKey(TweetFields.geoFieldId) - - /** - * LKey that has one of many possible fields id. This generalize over - * internal and additional fields key. - */ - sealed abstract class FieldKey(prefix: String) extends LKey(toString) { - def fieldId: FieldId - override val toString: String = prefix + padFieldIdStr(fieldId) - } - object FieldKey { - def apply(fieldId: FieldId): FieldKey = - fieldId match { - case id if id < TweetFields.firstAdditionalFieldId => InternalFieldsKey(fieldId) - case _ => AdditionalFieldsKey(fieldId) - } - } - - case class InternalFieldsKey(fieldId: FieldId) extends FieldKey(InternalFieldsKeyPrefix) { - assert(fieldId < TweetFields.firstAdditionalFieldId) - } - case class AdditionalFieldsKey(fieldId: FieldId) extends FieldKey(ExternalFieldsKeyPrefix) { - assert(fieldId >= TweetFields.firstAdditionalFieldId) - } - val CoreFieldsKey: LKey.InternalFieldsKey = InternalFieldsKey(TweetFields.rootCoreFieldId) - - case class Unknown private (str: String) extends LKey(str) - - def fromString(str: String): LKey = { - def extractFieldId(prefix: String): FieldId = - str.slice(prefix.length, str.length).toShort - - str match { - case CoreFieldsKey.toString => CoreFieldsKey - case HardDeletionStateKey.toString => HardDeletionStateKey - case SoftDeletionStateKey.toString => SoftDeletionStateKey - case BounceDeletionStateKey.toString => BounceDeletionStateKey - case UnDeletionStateKey.toString => UnDeletionStateKey - case ForceAddedStateKey.toString => ForceAddedStateKey - case ScrubbedGeoFieldKey.toString => ScrubbedGeoFieldKey - case _ if str.startsWith(InternalFieldsKeyPrefix) => - InternalFieldsKey(extractFieldId(InternalFieldsKeyPrefix)) - case _ if str.startsWith(ExternalFieldsKeyPrefix) => - AdditionalFieldsKey(extractFieldId(ExternalFieldsKeyPrefix)) - case _ if str.startsWith(ScrubbedFieldsKeyPrefix) => - ScrubbedFieldKey(extractFieldId(ScrubbedFieldsKeyPrefix)) - case _ => Unknown(str) - } - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.docx new file mode 100644 index 0000000000000000000000000000000000000000..50601ae0b64f5f00cde1eb4fe5700ad51d5bfd42 GIT binary patch literal 37949 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.scala deleted file mode 100644 index a5d31a62d..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStateRecord.scala +++ /dev/null @@ -1,90 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.storage.client.manhattan.kv.ManhattanValue -import com.twitter.util.Time - -/** - * A [[TweetStateRecord]] represents an action taken on a tweet and can be used to determine a tweet's state. - * - * The state is determined by the record with the most recent timestamp. In the absence of any - * record a tweet is considered found, which is to say the tweet has not been through the - * deletion process. - * - * The [[TweetStateRecord]] type is determined by the lkey of a tweet manhattan record: - * metadata/delete_state -> HardDeleted - * metadata/soft_delete_state -> SoftDeleted - * metadata/undelete_state -> Undeleted - * metadata/force_added_state -> ForceAdded - * - * See the README in this directory for more details about the state of a tweet. - */ -sealed trait TweetStateRecord { - def tweetId: TweetId - def createdAt: Long - def stateKey: TweetKey.LKey.StateKey - def values: Map[String, Long] = Map("timestamp" -> createdAt) - def name: String - - def toTweetMhRecord: TweetManhattanRecord = { - val valByteBuffer = ByteArrayCodec.toByteBuffer(Json.encode(values)) - val value = ManhattanValue(valByteBuffer, Some(Time.fromMilliseconds(createdAt))) - TweetManhattanRecord(TweetKey(tweetId, stateKey), value) - } -} - -object TweetStateRecord { - - /** When a soft-deleted or bounce deleted tweet is ultimately hard-deleted by an offline job. */ - case class HardDeleted(tweetId: TweetId, createdAt: Long, deletedAt: Long) - extends TweetStateRecord { - // timestamp in the mh backend is the hard deletion timestamp - override def values = Map("timestamp" -> createdAt, "softdelete_timestamp" -> deletedAt) - def stateKey = TweetKey.LKey.HardDeletionStateKey - def name = "hard_deleted" - } - - /** When a tweet is deleted by the user. It can still be undeleted while in the soft deleted state. */ - case class SoftDeleted(tweetId: TweetId, createdAt: Long) extends TweetStateRecord { - def stateKey = TweetKey.LKey.SoftDeletionStateKey - def name = "soft_deleted" - } - - /** When a tweet is deleted by go/bouncer for violating Twitter Rules. It MAY NOT be undeleted. */ - case class BounceDeleted(tweetId: TweetId, createdAt: Long) extends TweetStateRecord { - def stateKey = TweetKey.LKey.BounceDeletionStateKey - def name = "bounce_deleted" - } - - /** When a tweet is undeleted by an internal system. */ - case class Undeleted(tweetId: TweetId, createdAt: Long) extends TweetStateRecord { - def stateKey = TweetKey.LKey.UnDeletionStateKey - def name = "undeleted" - } - - /** When a tweet is created using the forceAdd endpoint. */ - case class ForceAdded(tweetId: TweetId, createdAt: Long) extends TweetStateRecord { - def stateKey = TweetKey.LKey.ForceAddedStateKey - def name = "force_added" - } - - def fromTweetMhRecord(record: TweetManhattanRecord): Option[TweetStateRecord] = { - def ts = TimestampDecoder.decode(record, TimestampType.Default).getOrElse(0L) - def sdts = TimestampDecoder.decode(record, TimestampType.SoftDelete).getOrElse(0L) - def tweetId = record.pkey - - record.lkey match { - case TweetKey.LKey.HardDeletionStateKey => Some(HardDeleted(tweetId, ts, sdts)) - case TweetKey.LKey.SoftDeletionStateKey => Some(SoftDeleted(tweetId, ts)) - case TweetKey.LKey.BounceDeletionStateKey => Some(BounceDeleted(tweetId, ts)) - case TweetKey.LKey.UnDeletionStateKey => Some(Undeleted(tweetId, ts)) - case TweetKey.LKey.ForceAddedStateKey => Some(ForceAdded(tweetId, ts)) - case _ => None - } - } - - def fromTweetMhRecords(records: Seq[TweetManhattanRecord]): Seq[TweetStateRecord] = - records.flatMap(fromTweetMhRecord) - - def mostRecent(records: Seq[TweetManhattanRecord]): Option[TweetStateRecord] = - fromTweetMhRecords(records).sortBy(_.createdAt).lastOption -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageClient.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageClient.docx new file mode 100644 index 0000000000000000000000000000000000000000..32143db05057494d9515f1730e6709d37c7d5bb0 GIT binary patch literal 38552 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%0D??F^VVgkC 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

}jJY71}{ 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 Stitch[GetTweet.Response] - - object GetTweet { - sealed trait Response - object Response { - case class Found(tweet: Tweet) extends Response - object NotFound extends Response - object Deleted extends Response - // On BounceDeleted, provide the full Tweet so that implementations - // (i.e. ManhattanTweetStorageClient) don't not need to be aware of the specific tweet - // fields required by callers for proper processing of bounced deleted tweets. - case class BounceDeleted(tweet: Tweet) extends Response - } - } - - type GetStoredTweet = TweetId => Stitch[GetStoredTweet.Response] - - object GetStoredTweet { - sealed abstract class Error(val message: String) { - override def toString: String = message - } - object Error { - case object TweetIsCorrupt extends Error("stored tweet data is corrupt and cannot be decoded") - - case object ScrubbedFieldsPresent - extends Error("stored tweet fields that should be scrubbed are still present") - - case object TweetFieldsMissingOrInvalid - extends Error("expected tweet fields are missing or contain invalid values") - - case object TweetShouldBeHardDeleted - extends Error("stored tweet that should be hard deleted is still present") - } - - sealed trait Response - object Response { - sealed trait StoredTweetMetadata { - def state: Option[TweetStateRecord] - def allStates: Seq[TweetStateRecord] - def scrubbedFields: Set[FieldId] - } - - sealed trait StoredTweetErrors { - def errs: Seq[Error] - } - - /** - * Tweet data was found, possibly state records and/or scrubbed field records. - */ - sealed trait FoundAny extends Response with StoredTweetMetadata { - def tweet: Tweet - } - - object FoundAny { - def unapply( - response: Response - ): Option[ - (Tweet, Option[TweetStateRecord], Seq[TweetStateRecord], Set[FieldId], Seq[Error]) - ] = - response match { - case f: FoundWithErrors => - Some((f.tweet, f.state, f.allStates, f.scrubbedFields, f.errs)) - case f: FoundAny => Some((f.tweet, f.state, f.allStates, f.scrubbedFields, Seq.empty)) - case _ => None - } - } - - /** - * No records for this tweet id were found in storage - */ - case class NotFound(id: TweetId) extends Response - - /** - * Data related to the Tweet id was found but could not be loaded successfully. The - * errs array contains details of the problems. - */ - case class Failed( - id: TweetId, - state: Option[TweetStateRecord], - allStates: Seq[TweetStateRecord], - scrubbedFields: Set[FieldId], - errs: Seq[Error], - ) extends Response - with StoredTweetMetadata - with StoredTweetErrors - - /** - * No Tweet data was found, and the most recent state record found is HardDeleted - */ - case class HardDeleted( - id: TweetId, - state: Option[TweetStateRecord.HardDeleted], - allStates: Seq[TweetStateRecord], - scrubbedFields: Set[FieldId], - ) extends Response - with StoredTweetMetadata - - /** - * Tweet data was found, and the most recent state record found, if any, is not - * any form of deletion record. - */ - case class Found( - tweet: Tweet, - state: Option[TweetStateRecord], - allStates: Seq[TweetStateRecord], - scrubbedFields: Set[FieldId], - ) extends FoundAny - - /** - * Tweet data was found, and the most recent state record found indicates deletion. - */ - case class FoundDeleted( - tweet: Tweet, - state: Option[TweetStateRecord], - allStates: Seq[TweetStateRecord], - scrubbedFields: Set[FieldId], - ) extends FoundAny - - /** - * Tweet data was found, however errors were detected in the stored data. Required - * fields may be missing from the Tweet struct (e.g. CoreData), stored fields that - * should be scrubbed remain present, or Tweets that should be hard-deleted remain - * in storage. The errs array contains details of the problems. - */ - case class FoundWithErrors( - tweet: Tweet, - state: Option[TweetStateRecord], - allStates: Seq[TweetStateRecord], - scrubbedFields: Set[FieldId], - errs: Seq[Error], - ) extends FoundAny - with StoredTweetErrors - } - } - - type HardDeleteTweet = TweetId => Stitch[HardDeleteTweet.Response] - type SoftDelete = TweetId => Stitch[Unit] - type BounceDelete = TweetId => Stitch[Unit] - - object HardDeleteTweet { - sealed trait Response - object Response { - case class Deleted(deletedAtMillis: Option[Long], createdAtMillis: Option[Long]) - extends Response - case class NotDeleted(id: TweetId, ineligibleLKey: Option[TweetKey.LKey]) - extends Throwable - with Response - } - } - - type Undelete = TweetId => Stitch[Undelete.Response] - object Undelete { - case class Response( - code: UndeleteResponseCode, - tweet: Option[Tweet] = None, - createdAtMillis: Option[Long] = None, - archivedAtMillis: Option[Long] = None) - - sealed trait UndeleteResponseCode - - object UndeleteResponseCode { - object Success extends UndeleteResponseCode - object BackupNotFound extends UndeleteResponseCode - object NotCreated extends UndeleteResponseCode - } - } - - type AddTweet = Tweet => Stitch[Unit] - type UpdateTweet = (Tweet, Seq[Field]) => Stitch[TweetResponse] - type GetDeletedTweets = Seq[TweetId] => Stitch[Seq[DeletedTweetResponse]] - type DeleteAdditionalFields = (Seq[TweetId], Seq[Field]) => Stitch[Seq[TweetResponse]] - type Scrub = (Seq[TweetId], Seq[Field]) => Stitch[Unit] - type Ping = () => Future[Unit] -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageException.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetStorageException.docx new file mode 100644 index 0000000000000000000000000000000000000000..7eb51669931cbb32d8fc6b639daff9a634caa402 GIT binary patch literal 37039 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 VHDX`|{ajTvAWL9*>}UM^^*?!CmG=Mu literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetUtils.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetUtils.scala deleted file mode 100644 index b10ef107d..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/TweetUtils.scala +++ /dev/null @@ -1,265 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.logging.Logger -import com.twitter.scrooge.TFieldBlob -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.storage.client.manhattan.kv.DeniedManhattanException -import com.twitter.storage.client.manhattan.kv.ManhattanException -import com.twitter.tweetypie.storage.Response._ -import com.twitter.tweetypie.storage_internal.thriftscala.StoredTweet -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Try - -object TweetUtils { - val log: Logger = Logger("com.twitter.tweetypie.storage.TweetStorageLibrary") - import FieldResponseCodec.ValueNotFoundException - - /** - * It's rare, but we have seen tweets with userId=0, which is likely the result of a - * failed/partial delete. Treat these as invalid tweets, which are returned to callers - * as not found. - */ - def isValid(tweet: StoredTweet): Boolean = - tweet.userId.exists(_ != 0) && tweet.text.nonEmpty && - tweet.createdVia.nonEmpty && tweet.createdAtSec.nonEmpty - - /** - * Helper function to extract Scrubbed field Ids from the result returned by reading entire tweet prefix - * function. - * - * @param records The sequence of MH records for the given tweetId - * - * @return The set of scrubbed field ids - */ - private[tweetypie] def extractScrubbedFields(records: Seq[TweetManhattanRecord]): Set[Short] = - records - .map(r => r.lkey) - .collect { case TweetKey.LKey.ScrubbedFieldKey(fieldId) => fieldId } - .toSet - - private[tweetypie] val expectedFields = - TweetFields.requiredFieldIds.toSet - TweetFields.tweetIdField - - /** - * Find the timestamp from a tweetId and a list of MH records. This is used when - * you need a timestamp and you aren't sure that tweetId is a snowflake id. - * - * @param tweetId A tweetId you want the timestamp for. - * @param records Tbird_mh records keyed on tweetId, one of which should be the - * core fields record. - * @return A milliseconds timestamp if one could be found. - */ - private[tweetypie] def creationTimeFromTweetIdOrMHRecords( - tweetId: Long, - records: Seq[TweetManhattanRecord] - ): Option[Long] = - SnowflakeId - .unixTimeMillisOptFromId(tweetId).orElse({ - records - .find(_.lkey == TweetKey.LKey.CoreFieldsKey) - .flatMap { coreFields => - CoreFieldsCodec - .fromTFieldBlob( - TFieldBlobCodec.fromByteBuffer(coreFields.value.contents) - ).createdAtSec.map(seconds => seconds * 1000) - } - }) - - /** - * Helper function used to parse manhattan results for fields in a tweet (given in the form of - * Sequence of (FieldKey, Try[Unit]) pairs) and build a TweetResponse object. - * - * @param callerName The name of the caller function. Used for error messages - * @param tweetId Id of the Tweet for which TweetResponse is being built - * @param fieldResults Sequence of (FieldKey, Try[Unit]). - * - * @return TweetResponse object - */ - private[tweetypie] def buildTweetResponse( - callerName: String, - tweetId: Long, - fieldResults: Map[FieldId, Try[Unit]] - ): TweetResponse = { - // Count Found/Not Found - val successCount = - fieldResults.foldLeft(0) { - case (count, (_, Return(_))) => count + 1 - case (count, (_, Throw(_: ValueNotFoundException))) => count + 1 - case (count, _) => count - } - - val fieldResponsesMap = getFieldResponses(callerName, tweetId, fieldResults) - - val overallCode = if (successCount > 0 && successCount == fieldResults.size) { - TweetResponseCode.Success - } else { - - // If any field was rate limited, then we consider the entire tweet to be rate limited. So first we scan - // the field results to check such an occurrence. - val wasRateLimited = fieldResults.exists { fieldResult => - fieldResult._2 match { - case Throw(e: DeniedManhattanException) => true - case _ => false - } - } - - // Were we rate limited for any of the additional fields? - if (wasRateLimited) { - TweetResponseCode.OverCapacity - } else if (successCount == 0) { - // successCount is < fieldResults.size at this point. So if allOrNone is true or - // if successCount == 0 (i.e failed on all Fields), the overall code should be 'Failure' - TweetResponseCode.Failure - } else { - // allOrNone == false AND successCount > 0 at this point. Clearly the overallCode should be Partial - TweetResponseCode.Partial - } - } - - TweetResponse(tweetId, overallCode, Some(fieldResponsesMap)) - - } - - /** - * Helper function to convert manhattan results into a Map[FieldId, FieldResponse] - * - * @param fieldResults Sequence of (TweetKey, TFieldBlob). - */ - private[tweetypie] def getFieldResponses( - callerName: String, - tweetId: TweetId, - fieldResults: Map[FieldId, Try[_]] - ): Map[FieldId, FieldResponse] = - fieldResults.map { - case (fieldId, resp) => - def keyStr = TweetKey.fieldKey(tweetId, fieldId).toString - resp match { - case Return(_) => - fieldId -> FieldResponse(FieldResponseCode.Success, None) - case Throw(mhException: ManhattanException) => - val errMsg = s"Exception in $callerName. Key: $keyStr. Error: $mhException" - mhException match { - case _: ValueNotFoundException => // ValueNotFound is not an error - case _ => log.error(errMsg) - } - fieldId -> FieldResponseCodec.fromThrowable(mhException, Some(errMsg)) - case Throw(e) => - val errMsg = s"Exception in $callerName. Key: $keyStr. Error: $e" - log.error(errMsg) - fieldId -> FieldResponse(FieldResponseCode.Error, Some(errMsg)) - } - } - - /** - * Helper function to build a TweetResponse object when being rate limited. Its possible that only some of the fields - * got rate limited, so we indicate which fields got processed successfully, and which encountered some sort of error. - * - * @param tweetId Tweet id - * @param callerName name of API calling this function - * @param fieldResponses field responses for the case where - * - * @return The TweetResponse object - */ - private[tweetypie] def buildTweetOverCapacityResponse( - callerName: String, - tweetId: Long, - fieldResponses: Map[FieldId, Try[Unit]] - ) = { - val fieldResponsesMap = getFieldResponses(callerName, tweetId, fieldResponses) - TweetResponse(tweetId, TweetResponseCode.OverCapacity, Some(fieldResponsesMap)) - } - - /** - * Build a StoredTweet from a Seq of records. Core fields are handled specially. - */ - private[tweetypie] def buildStoredTweet( - tweetId: TweetId, - records: Seq[TweetManhattanRecord], - includeScrubbed: Boolean = false, - ): StoredTweet = { - getStoredTweetBlobs(records, includeScrubbed) - .flatMap { fieldBlob => - // When fieldId == TweetFields.rootCoreFieldId, we have further work to do since the - // 'value' is really serialized/packed version of all core fields. In this case we'll have - // to unpack it into many TFieldBlobs. - if (fieldBlob.id == TweetFields.rootCoreFieldId) { - // We won't throw any error in this function and instead let the caller function handle this - // condition (i.e If the caller function does not find any values for the core-fields in - // the returned map, it should assume that the tweet is not found) - CoreFieldsCodec.unpackFields(fieldBlob).values.toSeq - } else { - Seq(fieldBlob) - } - }.foldLeft(StoredTweet(tweetId))(_.setField(_)) - } - - private[tweetypie] def buildValidStoredTweet( - tweetId: TweetId, - records: Seq[TweetManhattanRecord] - ): Option[StoredTweet] = { - val storedTweet = buildStoredTweet(tweetId, records) - if (storedTweet.getFieldBlobs(expectedFields).nonEmpty && isValid(storedTweet)) { - Some(storedTweet) - } else { - None - } - } - - /** - * Return a TFieldBlob for each StoredTweet field defined in this set of records. - * @param includeScrubbed when false, result will not include scrubbed fields even - * if the data is present in the set of records. - */ - private[tweetypie] def getStoredTweetBlobs( - records: Seq[TweetManhattanRecord], - includeScrubbed: Boolean = false, - ): Seq[TFieldBlob] = { - val scrubbed = extractScrubbedFields(records) - - records - .flatMap { r => - // extract LKey.FieldKey records if they are not scrubbed and get their TFieldBlobs - r.key match { - case fullKey @ TweetKey(_, key: TweetKey.LKey.FieldKey) - if includeScrubbed || !scrubbed.contains(key.fieldId) => - try { - val fieldBlob = TFieldBlobCodec.fromByteBuffer(r.value.contents) - if (fieldBlob.field.id != key.fieldId) { - throw new AssertionError( - s"Blob stored for $fullKey has unexpected id ${fieldBlob.field.id}" - ) - } - Some(fieldBlob) - } catch { - case e: VersionMismatchError => - log.error( - s"Failed to decode bytebuffer for $fullKey: ${e.getMessage}" - ) - throw e - } - case _ => None - } - } - } - - /** - * Its important to bubble up rate limiting exceptions as they would likely be the root cause for other issues - * (timeouts etc.), so we scan for this particular exception, and if found, we bubble that up specifically - * - * @param seqOfTries The sequence of tries which may contain within it a rate limit exception - * - * @return if a rate limiting exn was detected, this will be a Throw(e: DeniedManhattanException) - * otherwise it will be a Return(_) only if all individual tries succeeded - */ - private[tweetypie] def collectWithRateLimitCheck(seqOfTries: Seq[Try[Unit]]): Try[Unit] = { - val rateLimitThrowOpt = seqOfTries.find { - case Throw(e: DeniedManhattanException) => true - case _ => false - } - - rateLimitThrowOpt.getOrElse( - Try.collect(seqOfTries).map(_ => ()) - ) // Operation is considered successful only if all the deletions are successful - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UndeleteHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UndeleteHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..db55e2f56080b71cc01cf3e95486e690b77a3cf4 GIT binary patch literal 38129 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 z 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 - if (createdAt > 0) { - if (withinUndeleteWindow(createdAt)) { - ( - mkSuccessfulUndeleteResponse(tweetId, records, Some(createdAt)), - undeleteRecord - ) - } else { - (Undelete.Response(Undelete.UndeleteResponseCode.BackupNotFound), None) - } - } else { - throw InternalError(s"Timestamp unavailable for $tweetId") - } - - // BounceDeleted tweets may not be undeleted. see go/bouncedtweet - case Some(_: TweetStateRecord.HardDeleted | _: TweetStateRecord.BounceDeleted) => - (Undelete.Response(Undelete.UndeleteResponseCode.BackupNotFound), None) - - case Some(_: TweetStateRecord.Undeleted) => - // We still want to write the undelete record, because at this point, we only know that the local DC's - // winning record is not a soft/hard deletion record, while its possible that the remote DC's winning - // record might still be a soft deletion record. Having said that, we don't want to set it to true - // if the winning record is forceAdd, as the forceAdd call should have ensured that both DCs had the - // forceAdd record. - (mkSuccessfulUndeleteResponse(tweetId, records), undeleteRecord) - - case Some(_: TweetStateRecord.ForceAdded) => - (mkSuccessfulUndeleteResponse(tweetId, records), None) - - // lets write the undeletion record just in case there is a softdeletion record in flight - case None => (mkSuccessfulUndeleteResponse(tweetId, records), undeleteRecord) - } - } - - // Write the undelete record both locally and remotely to protect - // against races with hard delete replication. We only need this - // protection for the insertion of the undelete record. - def multiInsert(record: TweetManhattanRecord): Stitch[Unit] = - Stitch - .collect( - Seq( - localInsert(record).liftToTry, - remoteInsert(record).liftToTry - ) - ) - .map(collectWithRateLimitCheck) - .lowerFromTry - - def deleteSoftDeleteRecord(tweetId: TweetId): Stitch[Unit] = { - val mhKey = TweetKey.softDeletionStateKey(tweetId) - delete(mhKey, None) - } - - tweetId => - for { - records <- read(tweetId) - (response, undeleteRecord) = prepareUndelete(tweetId, records) - _ <- Stitch.collect(undeleteRecord.map(multiInsert)).unit - _ <- deleteSoftDeleteRecord(tweetId) - } yield { - response - } - } - - private[storage] def mkSuccessfulUndeleteResponse( - tweetId: TweetId, - records: Seq[TweetManhattanRecord], - timestampOpt: Option[Long] = None - ) = - Undelete.Response( - Undelete.UndeleteResponseCode.Success, - Some( - StorageConversions.fromStoredTweet(buildStoredTweet(tweetId, records)) - ), - archivedAtMillis = timestampOpt - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..97bd16e6e617c2a33744f07298b9320544644e2a GIT binary patch literal 37642 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.scala deleted file mode 100644 index 7bf68f6ef..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/UpdateTweetHandler.scala +++ /dev/null @@ -1,64 +0,0 @@ -package com.twitter.tweetypie.storage - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.kv.DeniedManhattanException -import com.twitter.storage.client.manhattan.kv.ManhattanValue -import com.twitter.tweetypie.storage.TweetUtils._ -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.util.Throw -import com.twitter.util.Time - -object UpdateTweetHandler { - def apply( - insert: ManhattanOperations.Insert, - stats: StatsReceiver - ): TweetStorageClient.UpdateTweet = { (tpTweet: Tweet, fields: Seq[Field]) => - require( - fields.forall(!TweetFields.coreFieldIds.contains(_)), - "Core fields cannot be modified by calling updateTweet; use addTweet instead." - ) - require( - areAllFieldsDefined(tpTweet, fields), - s"Input tweet $tpTweet does not have specified fields $fields set" - ) - - val now = Time.now - val storedTweet = StorageConversions.toStoredTweetForFields(tpTweet, fields.toSet) - val tweetId = storedTweet.id - Stats.updatePerFieldQpsCounters("updateTweet", fields.map(_.id), 1, stats) - - val (fieldIds, stitchesPerTweet) = - fields.map { field => - val fieldId = field.id - val tweetKey = TweetKey.fieldKey(tweetId, fieldId) - val blob = storedTweet.getFieldBlob(fieldId).get - val value = ManhattanValue(TFieldBlobCodec.toByteBuffer(blob), Some(now)) - val record = TweetManhattanRecord(tweetKey, value) - - (fieldId, insert(record).liftToTry) - }.unzip - - Stitch.collect(stitchesPerTweet).map { seqOfTries => - val fieldkeyAndMhResults = fieldIds.zip(seqOfTries).toMap - // If even a single field was rate limited, we will send an overall OverCapacity TweetResponse - val wasRateLimited = fieldkeyAndMhResults.exists { keyAndResult => - keyAndResult._2 match { - case Throw(e: DeniedManhattanException) => true - case _ => false - } - } - - if (wasRateLimited) { - buildTweetOverCapacityResponse("updateTweets", tweetId, fieldkeyAndMhResults) - } else { - buildTweetResponse("updateTweets", tweetId, fieldkeyAndMhResults) - } - } - } - - private def areAllFieldsDefined(tpTweet: Tweet, fields: Seq[Field]) = { - val storedTweet = StorageConversions.toStoredTweetForFields(tpTweet, fields.toSet) - fields.map(_.id).forall(storedTweet.getFieldBlob(_).isDefined) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/storage/package.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/storage/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..6dfaf816a1f479397426f2129b03b98af90449c2 GIT binary patch literal 36786 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%0DVnG`1BWD9#%$ly@okmqBS#ocVxVpM% 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.docx new file mode 100644 index 0000000000000000000000000000000000000000..86f4742e732f8ef34e730ab1295b4a03d2a454db GIT binary patch literal 42856 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.scala deleted file mode 100644 index 046ff226a..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TFlockIndexer.scala +++ /dev/null @@ -1,532 +0,0 @@ -/** Copyright 2010 Twitter, Inc. */ -package com.twitter.tweetypie -package tflock - -import com.twitter.finagle.stats.Counter -import com.twitter.flockdb.client._ -import com.twitter.flockdb.client.thriftscala.Priority -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.tweetypie.serverutil.StoredCard -import com.twitter.tweetypie.thriftscala._ -import com.twitter.util.Future -import scala.collection.mutable.ListBuffer - -object TFlockIndexer { - - /** - * Printable names for some edge types currently defined in [[com.twitter.flockdb.client]]. - * Used to defined stats counters for adding edges. - */ - val graphNames: Map[Int, String] = - Map( - CardTweetsGraph.id -> "card_tweets", - ConversationGraph.id -> "conversation", - DirectedAtUserIdGraph.id -> "directed_at_user_id", - InvitedUsersGraph.id -> "invited_users", - MediaTimelineGraph.id -> "media_timeline", - MentionsGraph.id -> "mentions", - NarrowcastSentTweetsGraph.id -> "narrowcast_sent_tweets", - NullcastedTweetsGraph.id -> "nullcasted_tweets", - QuotersGraph.id -> "quoters", - QuotesGraph.id -> "quotes", - QuoteTweetsIndexGraph.id -> "quote_tweets_index", - RepliesToTweetsGraph.id -> "replies_to_tweets", - RetweetsByMeGraph.id -> "retweets_by_me", - RetweetsGraph.id -> "retweets", - RetweetsOfMeGraph.id -> "retweets_of_me", - RetweetSourceGraph.id -> "retweet_source", - TweetsRetweetedGraph.id -> "tweets_retweeted", - UserTimelineGraph.id -> "user_timeline", - CreatorSubscriptionTimelineGraph.id -> "creator_subscription_timeline", - CreatorSubscriptionMediaTimelineGraph.id -> "creator_subscription_image_timeline", - ) - - /** - * On edge deletion, edges are either archived permanently or retained for 3 months, based on - * the retention policy in the above confluence page. - * - * These two retention policies correspond to the two deletion techniques: archive and remove. - * We call removeEdges for edges with a short retention policy and archiveEdges for edges with - * a permanent retention policy. - */ - val graphsWithRemovedEdges: Seq[Int] = - Seq( - CardTweetsGraph.id, - CuratedTimelineGraph.id, - CuratedTweetsGraph.id, - DirectedAtUserIdGraph.id, - MediaTimelineGraph.id, - MutedConversationsGraph.id, - QuotersGraph.id, - QuotesGraph.id, - QuoteTweetsIndexGraph.id, - ReportedTweetsGraph.id, - RetweetsOfMeGraph.id, - RetweetSourceGraph.id, - SoftLikesGraph.id, - TweetsRetweetedGraph.id, - CreatorSubscriptionTimelineGraph.id, - CreatorSubscriptionMediaTimelineGraph.id, - ) - - /** - * These edges should be left in place when bounced tweets are deleted. - * These edges are removed during hard deletion. - * - * This is done so external teams (timelines) can execute on these edges for - * tombstone feature. - */ - val bounceDeleteGraphIds: Set[Int] = - Set( - UserTimelineGraph.id, - ConversationGraph.id - ) - - def makeCounters(stats: StatsReceiver, operation: String): Map[Int, Counter] = { - TFlockIndexer.graphNames - .mapValues(stats.scope(_).counter(operation)) - .withDefaultValue(stats.scope("unknown").counter(operation)) - } -} - -/** - * @param backgroundIndexingPriority specifies the queue to use for - * background indexing operations. This is useful for making the - * effects of background indexing operations (such as deleting edges - * for deleted Tweets) available sooner in testing scenarios - * (end-to-end tests or development instances). It is set to - * Priority.Low in production to reduce the load on high priority - * queues that we use for prominently user-visible operations. - */ -class TFlockIndexer( - tflock: TFlockClient, - hasMedia: Tweet => Boolean, - backgroundIndexingPriority: Priority, - stats: StatsReceiver) - extends TweetIndexer { - private[this] val FutureNil = Future.Nil - - private[this] val archiveCounters = TFlockIndexer.makeCounters(stats, "archive") - private[this] val removeCounters = TFlockIndexer.makeCounters(stats, "remove") - private[this] val insertCounters = TFlockIndexer.makeCounters(stats, "insert") - private[this] val negateCounters = TFlockIndexer.makeCounters(stats, "negate") - - private[this] val foregroundIndexingPriority: Priority = Priority.High - - override def createIndex(tweet: Tweet): Future[Unit] = - createEdges(tweet, isUndelete = false) - - override def undeleteIndex(tweet: Tweet): Future[Unit] = - createEdges(tweet, isUndelete = true) - - private[this] case class PartitionedEdges( - longRetention: Seq[ExecuteEdge[StatusGraph]] = Nil, - shortRetention: Seq[ExecuteEdge[StatusGraph]] = Nil, - negate: Seq[ExecuteEdge[StatusGraph]] = Nil, - ignore: Seq[ExecuteEdge[StatusGraph]] = Nil) - - private[this] def partitionEdgesForDelete( - edges: Seq[ExecuteEdge[StatusGraph]], - isBounceDelete: Boolean - ) = - edges.foldLeft(PartitionedEdges()) { - // Two dependees of UserTimelineGraph edge states to satisfy: timelines & safety tools. - // Timelines show bounce-deleted tweets as tombstones; regular deletes are not shown. - // - i.e. timelineIds = UserTimelineGraph(Normal || Negative) - // Safety tools show deleted tweets to authorized internal review agents - // - i.e. deletedIds = UserTimelineGraph(Removed || Negative) - case (partitionedEdges, edge) if isBounceDelete && edge.graphId == UserTimelineGraph.id => - partitionedEdges.copy(negate = edge +: partitionedEdges.negate) - - case (partitionedEdges, edge) if isBounceDelete && edge.graphId == ConversationGraph.id => - // Bounce-deleted tweets remain rendered as tombstones in conversations, so do not modify - // the ConversationGraph edge state - partitionedEdges.copy(ignore = edge +: partitionedEdges.ignore) - - case (partitionedEdges, edge) - if TFlockIndexer.graphsWithRemovedEdges.contains(edge.graphId) => - partitionedEdges.copy(shortRetention = edge +: partitionedEdges.shortRetention) - - case (partitionedEdges, edge) => - partitionedEdges.copy(longRetention = edge +: partitionedEdges.longRetention) - } - - override def deleteIndex(tweet: Tweet, isBounceDelete: Boolean): Future[Unit] = - for { - edges <- getEdges(tweet, isCreate = false, isDelete = true, isUndelete = false) - partitionedEdges = partitionEdgesForDelete(edges, isBounceDelete) - () <- - Future - .join( - tflock - .archiveEdges(partitionedEdges.longRetention, backgroundIndexingPriority) - .onSuccess(_ => - partitionedEdges.longRetention.foreach(e => archiveCounters(e.graphId).incr())), - tflock - .removeEdges(partitionedEdges.shortRetention, backgroundIndexingPriority) - .onSuccess(_ => - partitionedEdges.shortRetention.foreach(e => removeCounters(e.graphId).incr())), - tflock - .negateEdges(partitionedEdges.negate, backgroundIndexingPriority) - .onSuccess(_ => - partitionedEdges.negate.foreach(e => negateCounters(e.graphId).incr())) - ) - .unit - } yield () - - /** - * This operation is called when a user is put into or taken out of - * a state in which their retweets should no longer be visible - * (e.g. suspended or ROPO). - */ - override def setRetweetVisibility(retweetId: TweetId, setVisible: Boolean): Future[Unit] = { - val retweetEdge = Seq(ExecuteEdge(retweetId, RetweetsGraph, None, Reverse)) - - if (setVisible) { - tflock - .insertEdges(retweetEdge, backgroundIndexingPriority) - .onSuccess(_ => insertCounters(RetweetsGraph.id).incr()) - } else { - tflock - .archiveEdges(retweetEdge, backgroundIndexingPriority) - .onSuccess(_ => archiveCounters(RetweetsGraph.id).incr()) - } - } - - private[this] def createEdges(tweet: Tweet, isUndelete: Boolean): Future[Unit] = - for { - edges <- getEdges(tweet = tweet, isCreate = true, isDelete = false, isUndelete = isUndelete) - () <- tflock.insertEdges(edges, foregroundIndexingPriority) - } yield { - // Count all the edges we've successfully added: - edges.foreach(e => insertCounters(e.graphId).incr()) - } - - private[this] def addRTEdges( - tweet: Tweet, - share: Share, - isCreate: Boolean, - edges: ListBuffer[ExecuteEdge[StatusGraph]], - futureEdges: ListBuffer[Future[Seq[ExecuteEdge[StatusGraph]]]] - ): Unit = { - - edges += RetweetsOfMeGraph.edge(share.sourceUserId, tweet.id) - edges += RetweetsByMeGraph.edge(getUserId(tweet), tweet.id) - edges += RetweetsGraph.edge(share.sourceStatusId, tweet.id) - - if (isCreate) { - edges += ExecuteEdge( - sourceId = getUserId(tweet), - graph = RetweetSourceGraph, - destinationIds = Some(Seq(share.sourceStatusId)), - direction = Forward, - position = Some(SnowflakeId(tweet.id).time.inMillis) - ) - edges.append(TweetsRetweetedGraph.edge(share.sourceUserId, share.sourceStatusId)) - } else { - edges += RetweetSourceGraph.edge(getUserId(tweet), share.sourceStatusId) - - // if this is the last retweet we need to remove it from the source user's - // tweets retweeted graph - futureEdges.append( - tflock.count(RetweetsGraph.from(share.sourceStatusId)).flatMap { count => - if (count <= 1) { - tflock.selectAll(RetweetsGraph.from(share.sourceStatusId)).map { tweets => - if (tweets.size <= 1) - Seq(TweetsRetweetedGraph.edge(share.sourceUserId, share.sourceStatusId)) - else - Nil - } - } else { - FutureNil - } - } - ) - } - } - - private[this] def addReplyEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - getReply(tweet).foreach { reply => - reply.inReplyToStatusId.flatMap { inReplyToStatusId => - edges += RepliesToTweetsGraph.edge(inReplyToStatusId, tweet.id) - - // only index conversationId if this is a reply to another tweet - TweetLenses.conversationId.get(tweet).map { conversationId => - edges += ConversationGraph.edge(conversationId, tweet.id) - } - } - } - } - - private[this] def addDirectedAtEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - TweetLenses.directedAtUser.get(tweet).foreach { directedAtUser => - edges += DirectedAtUserIdGraph.edge(directedAtUser.userId, tweet.id) - } - } - - private[this] def addMentionEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - getMentions(tweet) - .flatMap(_.userId).foreach { mention => - edges += MentionsGraph.edge(mention, tweet.id) - } - } - - private[this] def addQTEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]], - futureEdges: ListBuffer[Future[Seq[ExecuteEdge[StatusGraph]]]], - isCreate: Boolean - ): Unit = { - val userId = getUserId(tweet) - - tweet.quotedTweet.foreach { quotedTweet => - // Regardless of tweet creates/deletes, we add the corresponding edges to the - // following two graphs. Note that we're handling the case for - // the QuotersGraph slightly differently in the tweet delete case. - edges.append(QuotesGraph.edge(quotedTweet.userId, tweet.id)) - edges.append(QuoteTweetsIndexGraph.edge(quotedTweet.tweetId, tweet.id)) - if (isCreate) { - // As mentioned above, for tweet creates we go ahead and add an edge - // to the QuotersGraph without any additional checks. - edges.append(QuotersGraph.edge(quotedTweet.tweetId, userId)) - } else { - // For tweet deletes, we only add an edge to be deleted from the - // QuotersGraph if the tweeting user isn't quoting the tweet anymore - // i.e. if a user has quoted a tweet multiple times, we only delete - // an edge from the QuotersGraph if they've deleted all the quotes, - // otherwise an edge should exist by definition of what the QuotersGraph - // represents. - - // Note: There can be a potential edge case here due to a race condition - // in the following scenario. - // i) A quotes a tweet T twice resulting in tweets T1 and T2. - // ii) There should exist edges in the QuotersGraph from T -> A and T1 <-> T, T2 <-> T in - // the QuoteTweetsIndexGraph, but one of the edges haven't been written - // to the QuoteTweetsIndex graph in TFlock yet. - // iii) In this scenario, we shouldn't really be deleting an edge as we're doing below. - // The approach that we're taking below is a "best effort" approach similar to what we - // currently do for RTs. - - // Find all the quotes of the quoted tweet from the quoting user - val quotesFromQuotingUser = QuoteTweetsIndexGraph - .from(quotedTweet.tweetId) - .intersect(UserTimelineGraph.from(userId)) - futureEdges.append( - tflock - .count(quotesFromQuotingUser).flatMap { count => - // If this is the last quote of the quoted tweet from the quoting user, - // we go ahead and delete the edge from the QuotersGraph. - if (count <= 1) { - tflock.selectAll(quotesFromQuotingUser).map { tweets => - if (tweets.size <= 1) { - Seq(QuotersGraph.edge(quotedTweet.tweetId, userId)) - } else { - Nil - } - } - } else { - FutureNil - } - } - ) - } - } - } - - private[this] def addCardEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - // Note that we are indexing only the TOO "stored" cards - // (cardUri=card://). Rest of the cards are ignored here. - tweet.cardReference - .collect { - case StoredCard(id) => - edges.append(CardTweetsGraph.edge(id, tweet.id)) - }.getOrElse(()) - } - - // Note: on undelete, this method restores all archived edges, including those that may have - // been archived prior to the delete. This is incorrect behavior but in practice rarely - // causes problems, as undeletes are so rare. - private[this] def addEdgesForDeleteOrUndelete( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - edges.appendAll( - Seq( - MentionsGraph.edges(tweet.id, None, Reverse), - RepliesToTweetsGraph.edges(tweet.id, None) - ) - ) - - // When we delete or undelete a conversation control root Tweet we want to archive or restore - // all the edges in InvitedUsersGraph from the Tweet id. - if (hasConversationControl(tweet) && isConversationRoot(tweet)) { - edges.append(InvitedUsersGraph.edges(tweet.id, None)) - } - } - - private[this] def addSimpleEdges( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - if (TweetLenses.nullcast.get(tweet)) { - edges.append(NullcastedTweetsGraph.edge(getUserId(tweet), tweet.id)) - } else if (TweetLenses.narrowcast.get(tweet).isDefined) { - edges.append(NarrowcastSentTweetsGraph.edge(getUserId(tweet), tweet.id)) - } else { - edges.append(UserTimelineGraph.edge(getUserId(tweet), tweet.id)) - - if (hasMedia(tweet)) - edges.append(MediaTimelineGraph.edge(getUserId(tweet), tweet.id)) - - // Index root creator subscription tweets. - // Ignore replies because those are not necessarily visible to a user who subscribes to tweet author - val isRootTweet: Boolean = tweet.coreData match { - case Some(c) => c.reply.isEmpty && c.share.isEmpty - case None => true - } - - if (tweet.exclusiveTweetControl.isDefined && isRootTweet) { - edges.append(CreatorSubscriptionTimelineGraph.edge(getUserId(tweet), tweet.id)) - - if (hasMedia(tweet)) - edges.append(CreatorSubscriptionMediaTimelineGraph.edge(getUserId(tweet), tweet.id)) - } - } - } - - /** - * Issues edges for each mention of user in a conversation-controlled tweet. This way InvitedUsers - * graph accumulates complete set of ids for @mention-invited users, by conversation id. - */ - private def invitedUsersEdgesForCreate( - tweet: Tweet, - edges: ListBuffer[ExecuteEdge[StatusGraph]] - ): Unit = { - val conversationId: Long = getConversationId(tweet).getOrElse(tweet.id) - val mentions: Seq[UserId] = getMentions(tweet).flatMap(_.userId) - edges.appendAll(mentions.map(userId => InvitedUsersGraph.edge(conversationId, userId))) - } - - /** - * Issues edges of InviteUsersGraph that ought to be deleted for a conversation controlled reply. - * These are mentions of users in the given tweet, only if the user was not mentioned elsewhere - * in the conversation. This way for a conversation, InvitedUsersGraph would always hold a set - * of all users invited to the conversation, and an edge is removed only after the last mention of - * a user is deleted. - */ - private def invitedUsersEdgesForDelete( - tweet: Tweet, - futureEdges: ListBuffer[Future[Seq[ExecuteEdge[StatusGraph]]]] - ): Unit = { - getConversationId(tweet).foreach { conversationId: Long => - val mentions: Seq[UserId] = getMentions(tweet).flatMap(_.userId) - mentions.foreach { userId => - val tweetIdsWithinConversation = ConversationGraph.from(conversationId) - val tweetIdsThatMentionUser = MentionsGraph.from(userId) - futureEdges.append( - tflock - .selectAll( - query = tweetIdsThatMentionUser.intersect(tweetIdsWithinConversation), - limit = Some(2), // Just need to know if it is >1 or <=1, so 2 are enough. - pageSize = None // Provide default, otherwise Mockito complains - ).map { tweetIds: Seq[Long] => - if (tweetIds.size <= 1) { - Seq(InvitedUsersGraph.edge(conversationId, userId)) - } else { - Nil - } - } - ) - } - } - } - - private def hasInviteViaMention(tweet: Tweet): Boolean = { - tweet.conversationControl match { - case Some(ConversationControl.ByInvitation(controls)) => - controls.inviteViaMention.getOrElse(false) - case Some(ConversationControl.Community(controls)) => - controls.inviteViaMention.getOrElse(false) - case Some(ConversationControl.Followers(followers)) => - followers.inviteViaMention.getOrElse(false) - case _ => - false - } - } - - private def hasConversationControl(tweet: Tweet): Boolean = - tweet.conversationControl.isDefined - - // If a Tweet has a ConversationControl, it must have a ConversationId associated with it so we - // can compare the ConversationId with the current Tweet ID to determine if it's the root of the - // conversation. See ConversationIdHydrator for more details - private def isConversationRoot(tweet: Tweet): Boolean = - getConversationId(tweet).get == tweet.id - - private def addInvitedUsersEdges( - tweet: Tweet, - isCreate: Boolean, - isUndelete: Boolean, - edges: ListBuffer[ExecuteEdge[StatusGraph]], - futureEdges: ListBuffer[Future[Seq[ExecuteEdge[StatusGraph]]]] - ): Unit = { - if (hasConversationControl(tweet)) { - if (isCreate) { - if (isConversationRoot(tweet) && !isUndelete) { - // For root Tweets, only add edges for original creates, not for undeletes. - // Undeletes are handled by addEdgesForDeleteOrUndelete. - invitedUsersEdgesForCreate(tweet, edges) - } - if (!isConversationRoot(tweet) && hasInviteViaMention(tweet)) { - // For replies, only add edges when the conversation control is in inviteViaMention mode. - invitedUsersEdgesForCreate(tweet, edges) - } - } else { - if (!isConversationRoot(tweet)) { - invitedUsersEdgesForDelete(tweet, futureEdges) - } - } - } - } - - private[this] def getEdges( - tweet: Tweet, - isCreate: Boolean, - isDelete: Boolean, - isUndelete: Boolean - ): Future[Seq[ExecuteEdge[StatusGraph]]] = { - val edges = ListBuffer[ExecuteEdge[StatusGraph]]() - val futureEdges = ListBuffer[Future[Seq[ExecuteEdge[StatusGraph]]]]() - - addSimpleEdges(tweet, edges) - getShare(tweet) match { - case Some(share) => addRTEdges(tweet, share, isCreate, edges, futureEdges) - case _ => - addInvitedUsersEdges(tweet, isCreate, isUndelete, edges, futureEdges) - addReplyEdges(tweet, edges) - addDirectedAtEdges(tweet, edges) - addMentionEdges(tweet, edges) - addQTEdges(tweet, edges, futureEdges, isCreate) - addCardEdges(tweet, edges) - if (isDelete || isUndelete) { - addEdgesForDeleteOrUndelete(tweet, edges) - } - } - - Future - .collect(futureEdges) - .map { moreEdges => (edges ++= moreEdges.flatten).toList } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.docx new file mode 100644 index 0000000000000000000000000000000000000000..256a3d82f7ee4e45d9b8c422c58c4f83b85a9556 GIT binary patch literal 37015 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 M5`o!6p$EhR048)c=Kufz literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.scala deleted file mode 100644 index 9145a4362..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tflock/TweetIndexer.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** Copyright 2010 Twitter, Inc. */ -package com.twitter.tweetypie -package tflock - -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.util.Future - -trait TweetIndexer { - - /** - * Called at tweet-creation time, this method should set up all relevant indices on the tweet. - */ - def createIndex(tweet: Tweet): Future[Unit] = Future.Unit - - /** - * Called at tweet-undelete time (which isn't yet handled), this method should - * restore all relevant indices on the tweet. - */ - def undeleteIndex(tweet: Tweet): Future[Unit] = Future.Unit - - /** - * Called at tweet-delete time, this method should archive all relevant indices on the tweet. - */ - def deleteIndex(tweet: Tweet, isBounceDelete: Boolean): Future[Unit] = Future.Unit - - /** - * This method should archive or unarchive the retweet edge in TFlock RetweetsGraph. - */ - def setRetweetVisibility(retweetId: TweetId, visible: Boolean): Future[Unit] = Future.Unit -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD deleted file mode 100644 index c7ad2b832..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD +++ /dev/null @@ -1,13 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "finagle/finagle-core/src/main", - "scrooge/scrooge-core/src/main/scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "util/util-core:scala", - ], -) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..5fd77b2de87b77eda6e363fb1186c07f639d269e GIT binary patch literal 36846 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.docx new file mode 100644 index 0000000000000000000000000000000000000000..288e152faddaa524141afca3788ae2eae7c89e96 GIT binary patch literal 36787 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.scala deleted file mode 100644 index f450abd15..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/NotImplementedTweetService.scala +++ /dev/null @@ -1,8 +0,0 @@ -package com.twitter.tweetypie.thriftscala - -import com.twitter.finagle.service.FailedService - -class NotImplementedTweetService - extends TweetService$FinagleClient( - new FailedService(new UnsupportedOperationException("not implemented")) - ) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/TweetServiceProxy.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/TweetServiceProxy.docx new file mode 100644 index 0000000000000000000000000000000000000000..717e6bf5895772519312233ff155ede98af77a89 GIT binary patch literal 37412 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 Future[A]): Future[A] = - f - - override def getTweets(request: GetTweetsRequest): Future[Seq[GetTweetResult]] = - wrap(underlying.getTweets(request)) - - override def getTweetFields(request: GetTweetFieldsRequest): Future[Seq[GetTweetFieldsResult]] = - wrap(underlying.getTweetFields(request)) - - override def getTweetCounts(request: GetTweetCountsRequest): Future[Seq[GetTweetCountsResult]] = - wrap(underlying.getTweetCounts(request)) - - override def setAdditionalFields(request: SetAdditionalFieldsRequest): Future[Unit] = - wrap(underlying.setAdditionalFields(request)) - - override def deleteAdditionalFields(request: DeleteAdditionalFieldsRequest): Future[Unit] = - wrap(underlying.deleteAdditionalFields(request)) - - override def postTweet(request: PostTweetRequest): Future[PostTweetResult] = - wrap(underlying.postTweet(request)) - - override def postRetweet(request: RetweetRequest): Future[PostTweetResult] = - wrap(underlying.postRetweet(request)) - - override def unretweet(request: UnretweetRequest): Future[UnretweetResult] = - wrap(underlying.unretweet(request)) - - override def getDeletedTweets( - request: GetDeletedTweetsRequest - ): Future[Seq[GetDeletedTweetResult]] = - wrap(underlying.getDeletedTweets(request)) - - override def deleteTweets(request: DeleteTweetsRequest): Future[Seq[DeleteTweetResult]] = - wrap(underlying.deleteTweets(request)) - - override def updatePossiblySensitiveTweet( - request: UpdatePossiblySensitiveTweetRequest - ): Future[Unit] = - wrap(underlying.updatePossiblySensitiveTweet(request)) - - override def undeleteTweet(request: UndeleteTweetRequest): Future[UndeleteTweetResponse] = - wrap(underlying.undeleteTweet(request)) - - override def eraseUserTweets(request: EraseUserTweetsRequest): Future[Unit] = - wrap(underlying.eraseUserTweets(request)) - - override def incrTweetFavCount(request: IncrTweetFavCountRequest): Future[Unit] = - wrap(underlying.incrTweetFavCount(request)) - - override def deleteLocationData(request: DeleteLocationDataRequest): Future[Unit] = - wrap(underlying.deleteLocationData(request)) - - override def scrubGeo(request: GeoScrub): Future[Unit] = - wrap(underlying.scrubGeo(request)) - - override def takedown(request: TakedownRequest): Future[Unit] = - wrap(underlying.takedown(request)) - - override def flush(request: FlushRequest): Future[Unit] = - wrap(underlying.flush(request)) - - override def incrTweetBookmarkCount(request: IncrTweetBookmarkCountRequest): Future[Unit] = - wrap(underlying.incrTweetBookmarkCount(request)) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD deleted file mode 100644 index ff66fe5b2..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "tweetypie/servo/util", - "tweetypie/common/src/thrift/com/twitter/tweetypie:media-entity-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-scala", - "tco-util", - "tweetypie/common/src/scala/com/twitter/tweetypie/tweettext", - "tweetypie/common/src/scala/com/twitter/tweetypie/util", - "twitter-text/lib/java/src/main/java/com/twitter/twittertext", - ], -) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..b703806a2771b39b71f6e6a8a04b3a875ceccbcb GIT binary patch literal 36857 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 aWiiy&VSqO)Fb9Ehl^{bRFni>5gLnYt;k+LJ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/CashtagTextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/CashtagTextEntity.scala deleted file mode 100644 index 09c0941ec..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/CashtagTextEntity.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.CashtagEntity -import com.twitter.tweetypie.tweettext.TextEntity - -object CashtagTextEntity extends TextEntity[CashtagEntity] { - override def fromIndex(entity: CashtagEntity): Short = entity.fromIndex - override def toIndex(entity: CashtagEntity): Short = entity.toIndex - override def move(entity: CashtagEntity, fromIndex: Short, toIndex: Short): CashtagEntity = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.docx new file mode 100644 index 0000000000000000000000000000000000000000..9aca26a5b6c71c6b0384366988198c234e9189ef GIT binary patch literal 38157 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.scala deleted file mode 100644 index c9d7b30bc..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/EntityExtractor.scala +++ /dev/null @@ -1,118 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.servo.data.Mutation -import com.twitter.tco_util.TcoUrl -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.thriftscala.entities.Implicits._ -import com.twitter.tweetypie.tweettext.PartialHtmlEncoding -import com.twitter.tweetypie.tweettext.TextEntity -import com.twitter.tweetypie.tweettext.TextModification -import com.twitter.tweetypie.util.TweetLenses -import com.twitter.twittertext.Extractor -import scala.collection.JavaConverters._ - -/** - * Contains functions to collect urls, mentions, hashtags, and cashtags from the text of tweets and messages - */ -object EntityExtractor { - // We only use one configuration of com.twitter.twittertext.Extractor, so it's - // OK to share one global reference. The only available - // configuration option is whether to extract URLs without protocols - // (defaults to true) - private[this] val extractor = new Extractor - - // The twitter-text library operates on unencoded text, but we store - // and process HTML-encoded text. The TextModification returned - // from this function contains the decoded text which we will operate on, - // but also provides us with the ability to map the indices on - // the twitter-text entities back to the entities on the encoded text. - private val htmlEncodedTextToEncodeModification: String => TextModification = - text => - PartialHtmlEncoding - .decodeWithModification(text) - .getOrElse(TextModification.identity(text)) - .inverse - - private[this] val extractAllUrlsFromTextMod: TextModification => Seq[UrlEntity] = - extractUrls(false) - - val extractAllUrls: String => Seq[UrlEntity] = - htmlEncodedTextToEncodeModification.andThen(extractAllUrlsFromTextMod) - - private[this] val extractTcoUrls: TextModification => Seq[UrlEntity] = - extractUrls(true) - - private[this] def extractUrls(tcoOnly: Boolean): TextModification => Seq[UrlEntity] = - mkEntityExtractor[UrlEntity]( - extractor.extractURLsWithIndices(_).asScala.filter { e => - if (tcoOnly) TcoUrl.isTcoUrl(e.getValue) else true - }, - UrlEntity(_, _, _) - ) - - private[this] val extractMentionsFromTextMod: TextModification => Seq[MentionEntity] = - mkEntityExtractor[MentionEntity]( - extractor.extractMentionedScreennamesWithIndices(_).asScala, - MentionEntity(_, _, _) - ) - - val extractMentions: String => Seq[MentionEntity] = - htmlEncodedTextToEncodeModification.andThen(extractMentionsFromTextMod) - - private[this] val extractHashtagsFromTextMod: TextModification => Seq[HashtagEntity] = - mkEntityExtractor[HashtagEntity]( - extractor.extractHashtagsWithIndices(_).asScala, - HashtagEntity(_, _, _) - ) - - val extractHashtags: String => Seq[HashtagEntity] = - htmlEncodedTextToEncodeModification.andThen(extractHashtagsFromTextMod) - - private[this] val extractCashtagsFromTextMod: TextModification => Seq[CashtagEntity] = - mkEntityExtractor[CashtagEntity]( - extractor.extractCashtagsWithIndices(_).asScala, - CashtagEntity(_, _, _) - ) - - val extractCashtags: String => Seq[CashtagEntity] = - htmlEncodedTextToEncodeModification.andThen(extractCashtagsFromTextMod) - - private[this] def mkEntityExtractor[E: TextEntity]( - extract: String => Seq[Extractor.Entity], - construct: (Short, Short, String) => E - ): TextModification => Seq[E] = - htmlEncodedMod => { - val convert: Extractor.Entity => Option[E] = - e => - for { - start <- asShort(e.getStart.intValue) - end <- asShort(e.getEnd.intValue) - if e.getValue != null - res <- htmlEncodedMod.reindexEntity(construct(start, end, e.getValue)) - } yield res - - val entities = extract(htmlEncodedMod.original) - extractor.modifyIndicesFromUTF16ToUnicode(htmlEncodedMod.original, entities.asJava) - entities.map(convert).flatten - } - - private[this] def asShort(i: Int): Option[Short] = - if (i.isValidShort) Some(i.toShort) else None - - private[this] def mutation(extractUrls: Boolean): Mutation[Tweet] = - Mutation { tweet => - val htmlEncodedMod = htmlEncodedTextToEncodeModification(TweetLenses.text.get(tweet)) - - Some( - tweet.copy( - urls = if (extractUrls) Some(extractTcoUrls(htmlEncodedMod)) else tweet.urls, - mentions = Some(extractMentionsFromTextMod(htmlEncodedMod)), - hashtags = Some(extractHashtagsFromTextMod(htmlEncodedMod)), - cashtags = Some(extractCashtagsFromTextMod(htmlEncodedMod)) - ) - ) - } - - val mutationWithoutUrls: Mutation[Tweet] = mutation(false) - val mutationAll: Mutation[Tweet] = mutation(true) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.docx new file mode 100644 index 0000000000000000000000000000000000000000..003499b4de5de90b941176efca449d22ff4420b7 GIT binary patch literal 36835 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 bl*Le6hXLNKz#Ih1Re}tO!0eIJ4dMX+0Y$<< literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.scala deleted file mode 100644 index 4ba86ebc8..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/HashtagTextEntity.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.HashtagEntity -import com.twitter.tweetypie.tweettext.TextEntity - -object HashtagTextEntity extends TextEntity[HashtagEntity] { - override def fromIndex(entity: HashtagEntity): Short = entity.fromIndex - override def toIndex(entity: HashtagEntity): Short = entity.toIndex - override def move(entity: HashtagEntity, fromIndex: Short, toIndex: Short): HashtagEntity = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.docx new file mode 100644 index 0000000000000000000000000000000000000000..1bfa2cc32fefe50ba0034c478eada12bb3aaf2bd GIT binary patch literal 36813 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 E02XPu2LJ#7 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.scala deleted file mode 100644 index a68595dee..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/Implicits.scala +++ /dev/null @@ -1,10 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -object Implicits { - implicit val hashtagTextEntity: HashtagTextEntity.type = HashtagTextEntity - implicit val cashtagTextEntity: CashtagTextEntity.type = CashtagTextEntity - implicit val mentionTextEntity: MentionTextEntity.type = MentionTextEntity - implicit val urlTextEntity: UrlTextEntity.type = UrlTextEntity - implicit val mediaTextEntity: MediaTextEntity.type = MediaTextEntity - implicit val textRangeTextEntity: TextRangeEntityAdapter.type = TextRangeEntityAdapter -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.docx new file mode 100644 index 0000000000000000000000000000000000000000..e42e58415721bee56bfd6d30a49a11c001e5632d GIT binary patch literal 36833 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%0AfNDxtt@z8Md-{PbekHxy~1^v`$<# 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 YTZaMOtiT)u%2k34iNNfU)eYhS0Eywj{r~^~ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.scala deleted file mode 100644 index 45c145399..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MediaTextEntity.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.MediaEntity -import com.twitter.tweetypie.tweettext.TextEntity - -object MediaTextEntity extends TextEntity[MediaEntity] { - override def fromIndex(entity: MediaEntity): Short = entity.fromIndex - override def toIndex(entity: MediaEntity): Short = entity.toIndex - override def move(entity: MediaEntity, fromIndex: Short, toIndex: Short): MediaEntity = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.docx new file mode 100644 index 0000000000000000000000000000000000000000..bdc1376769d333a67f465f164066a70aa692ac7a GIT binary patch literal 36834 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�%VBg)>OQ+5}jl_;mnZmxui=4%nvq8 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.scala deleted file mode 100644 index f4ce11a43..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/MentionTextEntity.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.MentionEntity -import com.twitter.tweetypie.tweettext.TextEntity - -object MentionTextEntity extends TextEntity[MentionEntity] { - override def fromIndex(entity: MentionEntity): Short = entity.fromIndex - override def toIndex(entity: MentionEntity): Short = entity.toIndex - override def move(entity: MentionEntity, fromIndex: Short, toIndex: Short): MentionEntity = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.docx new file mode 100644 index 0000000000000000000000000000000000000000..41248a0b80e3cf7457b286387d422b57961305b7 GIT binary patch literal 36840 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.scala deleted file mode 100644 index a0dd5be79..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/TextRangeEntityAdapter.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.TextRange -import com.twitter.tweetypie.tweettext.TextEntity - -object TextRangeEntityAdapter extends TextEntity[TextRange] { - override def fromIndex(entity: TextRange): Short = entity.fromIndex.toShort - override def toIndex(entity: TextRange): Short = entity.toIndex.toShort - override def move(entity: TextRange, fromIndex: Short, toIndex: Short): TextRange = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.docx new file mode 100644 index 0000000000000000000000000000000000000000..28f7cbc8eb8d1ba3c41429fc556b23b6342afb96 GIT binary patch literal 36830 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 T1?C`7t`cNO1ZI!)ZV(Ru0EfWw literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.scala deleted file mode 100644 index 8ab52747a..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities/UrlTextEntity.scala +++ /dev/null @@ -1,11 +0,0 @@ -package com.twitter.tweetypie.thriftscala.entities - -import com.twitter.tweetypie.thriftscala.UrlEntity -import com.twitter.tweetypie.tweettext.TextEntity - -object UrlTextEntity extends TextEntity[UrlEntity] { - override def fromIndex(entity: UrlEntity): Short = entity.fromIndex - override def toIndex(entity: UrlEntity): Short = entity.toIndex - override def move(entity: UrlEntity, fromIndex: Short, toIndex: Short): UrlEntity = - entity.copy(fromIndex = fromIndex, toIndex = toIndex) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD deleted file mode 100644 index 0fb3b965a..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - platform = "java8", - provides = scala_artifact( - org = "com.twitter", - name = "tweetypie-tweettext", - repo = artifactory, - ), - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/ibm/icu:icu4j", - "twitter-text/lib/java/src/main/java/com/twitter/twittertext", - ], -) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a668cfdc7bb466f6e3875dbc2cc3e71d56f6d53 GIT binary patch literal 36884 zcmagEWmp~Awl<1ua1HM6?hb+A?ruRB?kqgGTX1)G2<{FcxLbe#!QH==?%sQM?{m(* ze~O1W$9QFos#&vYm69wZ6ebuL7#x^WI=5DpN>O|=I2hO%3>X*&XjE4mVDDmX?_#Lt z>0s`x&*Wie+mtM?xGIAB`RoNNg;|KiTO0+ee8+*tfgv7Gq9)^pM|+9+L=NKNZh|jd zeMTu1hABQX?ar5IwO+8xr|H%*Xk%p8qe!a969s2Cy8 zfa*Kx=g#6i*VVv$Q#pndTHTjq!a}s}c;hGUN5qnf_Yy+A&xjk3YQHee##dL z^?aE)Ew%?r7q4`6Dof~VVfPXpob8%gEMyemFVPp<25FjT&j;o$_G)d?UNp8FuEC|i zcLb1nsORc$|P-6QUWn_Z-h{6&u99MDwL6wFw0cnXna95JrNWe%oe%H!HH zvA;gHD}BGueSYz+>4cP%_iH`(dAvf_zfbYs$iPBS_iLVVdX{ zOI_-jPE+iXFWl&iF4x&V3l#PlQPm1`n$Lg=ga#^*8NgJ@3E<$&YzlBP|9z5YC5$Wd zv!F`e`AE*mYlL5+!b!@|fgeSDl*SBLYP;p&l(!wv=9=8xEwt0grFSFRbad7QnZvg9)z>xopxdxub)4Jnhs zsxP+?#z#I-&&e_Od5ScvRi!xZrK;@+ykwiR*W?BuvP?FOk|@vbHG9dgS1yqS~I zN|C@kxHVn34ZuKA-SFJp&KjdLrN6L?Su1-j#!K@!4|S?BFmpW*dDvahG88^5>F)Z% ziZvri2D3yo6H4Z*^mm4?$^4%Ues3RM-!Bo+-*aC;;T~Bc8_>?Wi@!eiUE=? zJX9O&4$$`@42$9MML7)E%PG)<-IF>kU4lZgu=SO;fC`e~OHWRZL^xNa@c;apx$$QN;%sL}7_$=1ez-fOfRt$;PhxYpZ-GX6MZ z*;{0&M}D!TXKV?&6>(S{!nnldGz`DGF~HR?Zk~6ERhN)j;1QQUp7yh9F_J{A2$sL1 zQTR^H2uaqB*H(PoVX7n*tRAAKNFjVOA;zaSr9IU=I1pdd(O1xo#>(NuLvy3t4gt1- z?*XWxlWYWWl|H!X>=565!h1nwy0BwC*m`gkL_Bhb;Q_Wbz!RmOz}vozMvW5%wAyZ_ zCJRk!Zc^}vX5y%O+bYJV4y?)u7b$+|?8sn#W+pm^&v>}Pf1AJgMf}ebLsU|SjRX=5 zObzMJ3)UUrWX24-YF+I>H>clcMyKXFAcFQZlMGOa?sLG$K7FAw4x?hQnf`KAtcV7cE-6wlr3{YXNz74OBro9_TW2 z6Dc+9Y&mp=G)YH7`V4sac9cR2=N3zE5?P|fJp27r|84lZ z;!XHwlzoI_N*JISo&CF@Y~Q9>66gjE`N1#CbW@*QCu^y%kQV}I!x!3dWtVPkt||>Z z?EF<5BGT%Q4~V!b4ZS}XPG;*RTBe-EQ1TvoYvzZ_4S3w|%Bvjt=CxwT9k$9fZ-{Gq za2;Q9cDZ2e@cVj%79BNvJAG>T9ICz9a5yq6a%|{1TR))FR_zm-b!|xH?dXOV*0MMg zl}?$TW1O8{DD|G1p~+$H?|qWW{kkR+-Y#De?z>=mIeBoVXNKJxvqe5!UjshT365UG`f zTk*Y3-E}ht@tuI(J1*ZGYP;FVTh)aPeq8#-kAXZ<5Ga_lAxh@x0+uML$2|?w>Y_GP zB=CH-y8lu}LjT+giop)E0! z@WnVZC)>rVo$O+=y7jWN(q>C|J>9u?OQAs{un!HYZfV{~pPZA@Xy@$U+s(Zhf!_

nRNT}_womWaV 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 0 && Character.isSupplementaryCodePoint(text.codePointAt(charIndex - 1))) { - this.charIndex -= 1 - this.codePointIndex -= 1 - } - - this.codePointIndex - } - - /** - * @param offset Index into the string measured in code points. - * @return the corresponding code unit index - */ - def toCodeUnits(offset: Offset.CodePoint): Offset.CodeUnit = { - this.charIndex = text.offsetByCodePoints(charIndex, offset.toInt - this.codePointIndex) - this.codePointIndex = offset.toInt - Offset.CodeUnit(this.charIndex) - } - - /** - * @param codePointIndex Index into the string measured in code points. - * @return the corresponding code unit index - */ - def codePointsToCodeUnits(codePointIndex: Int): Int = - toCodeUnits(Offset.CodePoint(codePointIndex)).toInt - - /** - * Returns a substring which begins at the specified code point `from` and extends to the - * code point `to`. Since String.substring only works with character, the method first - * converts code point offset to code unit offset. - */ - def substring(from: Offset.CodePoint, to: Offset.CodePoint): String = - text.substring(toCodeUnits(from).toInt, toCodeUnits(to).toInt) - - /** - * Returns a substring which begins at the specified code point `from` and extends to the - * code point `to`. Since String.substring only works with character, the method first - * converts code point offset to code unit offset. - */ - def substringByCodePoints(from: Int, to: Int): String = - substring(Offset.CodePoint(from), Offset.CodePoint(to)) - - /** - * Returns a substring which begins at the specified code point `from` and extends to the - * end of the string. Since String.substring only works with character, the method first - * converts code point offset to code unit offset. - */ - def substringByCodePoints(from: Int): String = { - val charFrom = codePointsToCodeUnits(from) - text.substring(charFrom) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Offset.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Offset.docx new file mode 100644 index 0000000000000000000000000000000000000000..557cd8e43dab5fd7f74673a3ef1f2c6e10fb11c8 GIT binary patch literal 39973 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 other.toInt) this else other - def incr: CodeUnit = CodeUnit(toInt + 1) - def decr: CodeUnit = CodeUnit(toInt - 1) - def until(end: CodeUnit): immutable.IndexedSeq[CodeUnit] = - toInt.until(end.toInt).map(CodeUnit(_)) - - /** - * Converts this `CodeUnit` to the equivalent `CodePoint` within the - * given text. - */ - def toCodePoint(text: String): CodePoint = - CodePoint(text.codePointCount(0, toInt)) - - def offsetByCodePoints(text: String, codePoints: CodePoint): CodeUnit = - CodeUnit(text.offsetByCodePoints(toInt, codePoints.toInt)) - } - - implicit object CodeUnit extends Offset[CodeUnit] { - def toInt(u: CodeUnit): Int = u.toInt - override def length(text: String): CodeUnit = CodeUnit(text.length) - def count(text: String, start: CodeUnit, end: CodeUnit): CodeUnit = end - start - } - - /** - * Offsets in whole Unicode code points. Any CodePoint is a valid - * offset into the String as long as it is >= 0 and less than the - * number of code points in the string. - */ - case class CodePoint(toInt: Int) extends AnyVal with Ordered[CodePoint] { - def toShort: Short = toInt.toShort - def compare(other: CodePoint): Int = toInt.compare(other.toInt) - def +(other: CodePoint) = CodePoint(toInt + other.toInt) - def -(other: CodePoint) = CodePoint(toInt - other.toInt) - def min(other: CodePoint): CodePoint = if (toInt < other.toInt) this else other - def max(other: CodePoint): CodePoint = if (toInt > other.toInt) this else other - def until(end: CodePoint): immutable.IndexedSeq[CodePoint] = - toInt.until(end.toInt).map(CodePoint(_)) - - def toCodeUnit(text: String): CodeUnit = - CodeUnit(text.offsetByCodePoints(0, toInt)) - } - - implicit object CodePoint extends Offset[CodePoint] { - def toInt(p: CodePoint): Int = p.toInt - - def count(text: String, start: CodeUnit, end: CodeUnit): CodePoint = - CodePoint(text.codePointCount(start.toInt, end.toInt)) - } - - /** - * Offsets into the String as if the String were encoded as UTF-8. You - * cannot use a [[Utf8]] offset to index a String, because not all - * Utf8 indices are valid indices into the String. - */ - case class Utf8(toInt: Int) extends AnyVal with Ordered[Utf8] { - def compare(other: Utf8): Int = toInt.compare(other.toInt) - def +(other: Utf8) = Utf8(toInt + other.toInt) - def -(other: Utf8) = Utf8(toInt - other.toInt) - def min(other: Utf8): Utf8 = if (toInt < other.toInt) this else other - def max(other: Utf8): Utf8 = if (toInt > other.toInt) this else other - } - - implicit object Utf8 extends Offset[Utf8] { - def toInt(u: Utf8): Int = u.toInt - - /** - * Count how many bytes this section of text would be when encoded as - * UTF-8. - */ - def count(s: String, start: CodeUnit, end: CodeUnit): Utf8 = { - def go(i: CodeUnit, byteLength: Utf8): Utf8 = - if (i < end) { - val cp = s.codePointAt(i.toInt) - go(i + CodeUnit(Character.charCount(cp)), byteLength + forCodePoint(cp)) - } else { - byteLength - } - - go(start, Utf8(0)) - } - - /** - * Unfortunately, there is no convenient API for finding out how many - * bytes a unicode code point would take in UTF-8, so we have to - * explicitly calculate it. - * - * @see http://en.wikipedia.org/wiki/UTF-8#Description - */ - def forCodePoint(cp: Int): Utf8 = - Utf8 { - // if the code point is an unpaired surrogate, it will be converted - // into a 1 byte replacement character - if (Character.getType(cp) == Character.SURROGATE) 1 - else { - cp match { - case _ if cp < 0x80 => 1 - case _ if cp < 0x800 => 2 - case _ if cp < 0x10000 => 3 - case _ => 4 - } - } - } - } - - /** - * Display units count what we consider a "character" in a - * Tweet. [[DisplayUnit]] offsets are only valid for text that is - * NFC-normalized (See: http://www.unicode.org/reports/tr15) and - * HTML-encoded, though this interface cannot enforce that. - * - * Currently, a [[DisplayUnit]] is equivalent to a single Unicode code - * point combined with treating "<", ">", and "&" each as a - * single character (since they are displayed as '<', '>', and '&' - * respectively). This implementation is not directly exposed. - * - * It should be possible to change this definition without breaking - * code that uses the [[DisplayUnit]] interface e.g. to count - * user-perceived characters (graphemes) rather than code points, - * though any change has to be made in concert with changing the - * mobile client and Web implementations so that the user experience - * of character counting remains consistent. - */ - case class DisplayUnit(toInt: Int) extends AnyVal with Ordered[DisplayUnit] { - def compare(other: DisplayUnit): Int = toInt.compare(other.toInt) - def +(other: DisplayUnit) = DisplayUnit(toInt + other.toInt) - def -(other: DisplayUnit) = DisplayUnit(toInt - other.toInt) - def min(other: DisplayUnit): DisplayUnit = if (toInt < other.toInt) this else other - def max(other: DisplayUnit): DisplayUnit = if (toInt > other.toInt) this else other - } - - implicit object DisplayUnit extends Offset[DisplayUnit] { - def toInt(d: DisplayUnit): Int = d.toInt - - /** - * Returns the number of display units in the specified range of the - * given text. See [[DisplayUnit]] for a descrption of what we - * consider a display unit. - * - * The input string should already be NFC normalized to get - * consistent results. If partially html encoded, it will correctly - * count html entities as a single display unit. - * - * @param text the string containing the characters to count. - * @param the index to the first char of the text range - * @param the index after the last char of the text range. - */ - def count(text: String, start: CodeUnit, end: CodeUnit): DisplayUnit = { - val stop = end.min(CodeUnit.length(text)) - - @annotation.tailrec - def go(offset: CodeUnit, total: DisplayUnit): DisplayUnit = - if (offset >= stop) total - else go(offset + at(text, offset), total + DisplayUnit(1)) - - go(start, DisplayUnit(0)) - } - - /** - * Return the length of the display unit at the specified offset in - * the (NFC-normalized, HTML-encoded) text. - */ - def at(text: String, offset: CodeUnit): CodeUnit = - CodeUnit { - text.codePointAt(offset.toInt) match { - case '&' => - if (text.regionMatches(offset.toInt, "&", 0, 5)) 5 - else if (text.regionMatches(offset.toInt, "<", 0, 4)) 4 - else if (text.regionMatches(offset.toInt, ">", 0, 4)) 4 - else 1 - - case cp => Character.charCount(cp) - } - } - } - - /** - * Ranges of offsets, useful for avoiding slicing entities. - */ - sealed trait Ranges[T] { - def contains(t: T): Boolean - } - - object Ranges { - private[this] case class Impl[T](toSeq: Seq[(T, T)])(implicit off: Offset[T]) - extends Ranges[T] { - def contains(t: T): Boolean = toSeq.exists { case (lo, hi) => off.gt(t, lo) && off.lt(t, hi) } - } - - /** - * Non-inclusive range of offsets (matches values that are strictly - * between `hi` and `lo`) - */ - def between[T](lo: T, hi: T)(implicit off: Offset[T]): Ranges[T] = - if (off.toInt(hi) > off.toInt(lo) + 1 && off.toInt(lo) < Int.MaxValue) Impl(Seq((lo, hi))) - else Impl(Nil) - - /** - * The union of all of the specified ranges. - */ - def all[T](ranges: Seq[Ranges[T]])(implicit off: Offset[T]): Ranges[T] = - Impl( - // Preprocess the ranges so that each contains check is as cheap - // as possible. - ranges - .flatMap { case r: Impl[T] => r.toSeq } - .sortBy(_._1) - .foldLeft(Nil: List[(T, T)]) { - case ((a, b) :: out, (c, d)) if off.lt(c, b) => (a, d) :: out - case (out, r) => r :: out - } - ) - - def Empty[T: Offset]: Ranges[T] = Impl[T](Nil) - - private[this] val HtmlEscapes = """&(?:amp|lt|gt);""".r - - /** - * Match [[CodeUnit]]s that would split a HTML entity. - */ - def htmlEntities(s: String): Ranges[CodeUnit] = { - val it = HtmlEscapes.findAllIn(s) - all(it.map(_ => between(CodeUnit(it.start), CodeUnit(it.end))).toSeq) - } - - def fromCodePointPairs(pairs: Seq[(Int, Int)]): Ranges[CodePoint] = - all(pairs.map { case (lo, hi) => between(CodePoint(lo), CodePoint(hi)) }) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.docx new file mode 100644 index 0000000000000000000000000000000000000000..1899ef9b15cf55e1c9ddde07e4a6972c45586176 GIT binary patch literal 37342 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.scala deleted file mode 100644 index 7f1f338c3..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/PartialHtmlEncoding.scala +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.tweetypie.tweettext - -/** - * Code used to convert raw user-provided text into an allowable form. - */ -object PartialHtmlEncoding { - - /** - * Replaces all `<`, `>`, and '&' chars with "<", ">", and "&", respectively. - * - * Tweet text is HTML-encoded at tweet creation time, and is stored and processed in encoded form. - */ - def encode(text: String): String = { - val buf = new StringBuilder - - text.foreach { - case '<' => buf.append("<") - case '>' => buf.append(">") - case '&' => buf.append("&") - case c => buf.append(c) - } - - buf.toString - } - - private val AmpLtRegex = "<".r - private val AmpGtRegex = ">".r - private val AmpAmpRegex = "&".r - - private val partialHtmlDecoder: (String => String) = - ((s: String) => AmpLtRegex.replaceAllIn(s, "<")) - .andThen(s => AmpGtRegex.replaceAllIn(s, ">")) - .andThen(s => AmpAmpRegex.replaceAllIn(s, "&")) - - /** - * The opposite of encode, it replaces all "<", ">", and "&" with - * `<`, `>`, and '&', respectively. - */ - def decode(text: String): String = - decodeWithModification(text) match { - case Some(mod) => mod.updated - case None => text - } - - /** - * Decodes encoded entities, and returns a `TextModification` if the text was modified. - */ - def decodeWithModification(text: String): Option[TextModification] = - TextModification.replaceAll( - text, - AmpLtRegex -> "<", - AmpGtRegex -> ">", - AmpAmpRegex -> "&" - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.docx new file mode 100644 index 0000000000000000000000000000000000000000..cb3720bcce38f70e0c3adb715b517f0d3fcbedc6 GIT binary patch literal 40549 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 D1p^FZ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.scala deleted file mode 100644 index 0e5c06915..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Preprocessor.scala +++ /dev/null @@ -1,251 +0,0 @@ -package com.twitter.tweetypie.tweettext -import scala.util.matching.Regex - -/** - * Code used to convert raw user-provided text into an allowable form. - */ -object Preprocessor { - import TweetText._ - import TextModification.replaceAll - - /** - * Regex for dos-style line endings. - */ - val DosLineEndingRegex: Regex = """\r\n""".r - - /** - * Converts \r\n to just \n. - */ - def normalizeNewlines(text: String): String = - DosLineEndingRegex.replaceAllIn(text, "\n") - - /** - * Characters to strip out of tweet text at write-time. - */ - val unicodeCharsToStrip: Seq[Char] = - Seq( - '\uFFFE', '\uFEFF', // BOM - '\uFFFF', // Special - '\u200E', '\u200F', // ltr, rtl - '\u202A', '\u202B', '\u202C', '\u202D', '\u202E', // Directional change - '\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', '\u0006', '\u0007', '\u0008', - '\u0009', '\u000B', '\u000C', '\u000E', '\u000F', '\u0010', '\u0011', '\u0012', '\u0013', - '\u0014', '\u0015', '\u0016', '\u0017', '\u0018', '\u0019', '\u001A', '\u001B', '\u001C', - '\u001D', '\u001E', '\u001F', '\u007F', - '\u2065', - ) - - val UnicodeCharsToStripRegex: Regex = unicodeCharsToStrip.mkString("[", "", "]").r - - /** - * Strips out control characters and other non-textual unicode chars that can break xml and/or - * json rendering, or be used for exploits. - */ - def stripControlCharacters(text: String): String = - UnicodeCharsToStripRegex.replaceAllIn(text, "") - - val Tweetypie674UnicodeSequence: String = - "\u0633\u0645\u064e\u0640\u064e\u0651\u0648\u064f\u0648\u064f\u062d\u062e " + - "\u0337\u0334\u0310\u062e \u0337\u0334\u0310\u062e \u0337\u0334\u0310\u062e " + - "\u0627\u0645\u0627\u0631\u062a\u064a\u062e \u0337\u0334\u0310\u062e" - - val Tweetypie674UnicodeRegex: Regex = Tweetypie674UnicodeSequence.r - - /** - * Replace each `Tweetypie674UnicodeSequence` of this string to REPLACEMENT - * CHARACTER. - * - * Apple has a bug in its CoreText library. This aims to prevent - * ios clients from being crashed when a tweet contains the specific - * unicode sequence. - */ - def avoidCoreTextBug(text: String): String = - Tweetypie674UnicodeRegex.replaceAllIn(text, "\ufffd") - - /** - * Replace each `Tweetypie674UnicodeSequence` of this string to a REPLACEMENT - * CHARACTER, returns a TextModification object that provides information - * to also update entity indices. - */ - def replaceCoreTextBugModification(text: String): Option[TextModification] = - replaceAll(text, Tweetypie674UnicodeRegex, "\ufffd") - - private val preprocessor: String => String = - ((s: String) => nfcNormalize(s)) - .andThen(stripControlCharacters _) - .andThen(trimBlankCharacters _) - .andThen(normalizeNewlines _) - .andThen(collapseBlankLines _) - .andThen(avoidCoreTextBug _) - - /** - * Performs the text modifications that are necessary in the write-path before extracting URLs. - */ - def preprocessText(text: String): String = - preprocessor(text) - - /** - * Replaces all `<`, `>`, and '&' chars with "<", ">", and "&", respectively. - * - * The original purpose of this was presumably to prevent script injections when - * displaying tweets without proper escaping. Currently, tweets are encoded before - * they are stored in the database. - * - * Note that the pre-escaping of & < and > also happens in the rich text editor in javascript - */ - def partialHtmlEncode(text: String): String = - PartialHtmlEncoding.encode(text) - - /** - * The opposite of partialHtmlEncode, it replaces all "<", ">", and "&" with - * `<`, `>`, and '&', respectively. - */ - def partialHtmlDecode(text: String): String = - PartialHtmlEncoding.decode(text) - - /** - * - * Detects all forms of whitespace, considering as whitespace the following: - * This regex detects characters that always or often are rendered as blank space. We use - * this to prevent users from inserting excess blank lines and from tweeting effectively - * blank tweets. - * - * Note that these are not all semantically "whitespace", so this regex should not be used - * to process non-blank text, e.g. to separate words. - * - * Codepoints below and the `\p{Z}` regex character property alias are defined in the Unicode - * Character Database (UCD) at https://unicode.org/ucd/ and https://unicode.org/reports/tr44/ - * - * The `\p{Z}` regex character property alias is defined specifically in UCD as: - * - * Zs | Space_Separator | a space character (of various non-zero widths) - * Zl | Line_Separator | U+2028 LINE SEPARATOR only - * Zp | Paragraph_Separator | U+2029 PARAGRAPH SEPARATOR only - * Z | Separator | Zs | Zl | Zp - * ref: https://unicode.org/reports/tr44/#GC_Values_Table - * - * U+0009 Horizontal Tab (included in \s) - * U+000B Vertical Tab (included in \s) - * U+000C Form feed (included in \s) - * U+000D Carriage return (included in \s) - * U+0020 space (included in \s) - * U+0085 Next line (included in \u0085) - * U+061C arabic letter mark (included in \u061C) - * U+00A0 no-break space (included in \p{Z}) - * U+00AD soft-hyphen marker (included in \u00AD) - * U+1680 ogham space mark (included in \p{Z}) - * U+180E mongolian vowel separator (included in \p{Z} on jdk8 and included in \u180E on jdk11) - * U+2000 en quad (included in \p{Z}) - * U+2001 em quad (included in \p{Z}) - * U+2002 en space (included in \p{Z}) - * U+2003 em space (included in \p{Z}) - * U+2004 three-per-em space (included in \p{Z}) - * U+2005 four-per-em space (included in \p{Z}) - * U+2006 six-per-em space (included in \p{Z}) - * U+2007 figure space (included in \p{Z}) - * U+2008 punctuation space (included in \p{Z}) - * U+2009 thin space (included in \p{Z}) - * U+200A hair space (included in \p{Z}) - * U+200B zero-width (included in \u200B-\u200D) - * U+200C zero-width non-joiner (included in \u200B-\u200D) - * U+200D zero-width joiner (included in \u200B-\u200D) - * U+2028 line separator (included in \p{Z}) - * U+2029 paragraph separator (included in \p{Z}) - * U+202F narrow no-break space (included in \p{Z}) - * U+205F medium mathematical space (included in \p{Z}) - * U+2061 function application (included in \u2061-\u2064) - * U+2062 invisible times (included in \u2061-\u2064) - * U+2063 invisible separator (included in \u2061-\u2064) - * U+2064 invisible plus (included in \u2061-\u2064) - * U+2066 left-to-right isolate (included in \u2066-\u2069) - * U+2067 right-to-left isolate (included in \u2066-\u2069) - * U+2068 first strong isolate (included in \u2066-\u2069) - * U+2069 pop directional isolate (included in \u2066-\u2069) - * U+206A inhibit symmetric swapping (included in \u206A-\u206F) - * U+206B activate symmetric swapping (included in \u206A-\u206F) - * U+206C inhibit arabic form shaping (included in \u206A-\u206F) - * U+206D activate arabic form shaping (included in \u206A-\u206F) - * U+206E national digit shapes (included in \u206A-\u206F) - * U+206F nominal digit shapes (included in \u206A-\u206F) - * U+2800 braille pattern blank (included in \u2800) - * U+3164 hongul filler (see UCD Ignorable_Code_Point) - * U+FFA0 halfwidth hongul filler (see UCD Ignorable_Code_Point) - * U+3000 ideographic space (included in \p{Z}) - * U+FEFF zero-width no-break space (explicitly included in \uFEFF) - */ - val BlankTextRegex: Regex = - """[\s\p{Z}\u180E\u0085\u00AD\u061C\u200B-\u200D\u2061-\u2064\u2066-\u2069\u206A-\u206F\u2800\u3164\uFEFF\uFFA0]*""".r - - /** - * Some of the above blank characters are valid at the start of a Tweet (and irrelevant at the end) - * such as characters that change the direction of text. When trimming from the start - * or end of text we use a smaller set of characters - */ - val BlankWhenLeadingOrTrailingRegex: Regex = """[\s\p{Z}\u180E\u0085\u200B\uFEFF]*""".r - - /** - * Matches consecutive blanks, starting at a newline. - */ - val ConsecutiveBlankLinesRegex: Regex = ("""\n(""" + BlankTextRegex + """\n){2,}""").r - - val LeadingBlankCharactersRegex: Regex = ("^" + BlankWhenLeadingOrTrailingRegex).r - val TrailingBlankCharactersRegex: Regex = (BlankWhenLeadingOrTrailingRegex + "$").r - - /** - * Is the given text empty or contains nothing but whitespace? - */ - def isBlank(text: String): Boolean = - BlankTextRegex.pattern.matcher(text).matches() - - /** - * See http://confluence.local.twitter.com/display/PROD/Displaying+line+breaks+in+Tweets - * - * Collapses consecutive blanks lines down to a single blank line. We can assume that - * all newlines have already been normalized to just \n, so we don't have to worry about - * \r\n. - */ - def collapseBlankLinesModification(text: String): Option[TextModification] = - replaceAll(text, ConsecutiveBlankLinesRegex, "\n\n") - - def collapseBlankLines(text: String): String = - ConsecutiveBlankLinesRegex.replaceAllIn(text, "\n\n") - - def trimBlankCharacters(text: String): String = - TrailingBlankCharactersRegex.replaceFirstIn( - LeadingBlankCharactersRegex.replaceFirstIn(text, ""), - "" - ) - - /** Characters that are not visible on their own. Some of these are used in combination with - * other visible characters, and therefore cannot be always stripped from tweets. - */ - private[tweettext] val InvisibleCharacters: Seq[Char] = - Seq( - '\u2060', '\u2061', '\u2062', '\u2063', '\u2064', '\u206A', '\u206B', '\u206C', '\u206D', - '\u206D', '\u206E', '\u206F', '\u200C', - '\u200D', // non-printing chars with valid use in Arabic - '\u2009', '\u200A', '\u200B', // include very skinny spaces too - '\ufe00', '\ufe01', '\ufe02', '\ufe03', '\ufe04', '\ufe05', '\ufe06', '\ufe07', '\ufe08', - '\ufe09', '\ufe0A', '\ufe0B', '\ufe0C', '\ufe0D', '\ufe0E', '\ufe0F', - ) - - private[tweetypie] val InvisibleUnicodePattern: Regex = - ("^[" + InvisibleCharacters.mkString + "]+$").r - - def isInvisibleChar(input: Char): Boolean = { - InvisibleCharacters contains input - } - - /** If string is only "invisible characters", replace full string with whitespace. - * The purpose of this method is to remove invisible characters when ONLY invisible characters - * appear between two urls, which can be a security vulnerability due to misleading behavior. These - * characters cannot be removed as a rule applied to the tweet, because they are used in - * conjuction with other characters. - */ - def replaceInvisiblesWithWhitespace(text: String): String = { - text match { - case invisible @ InvisibleUnicodePattern() => " " * TweetText.codePointLength(invisible) - case other => other - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.docx new file mode 100644 index 0000000000000000000000000000000000000000..d2ee1e007d6b3dbbf8687d4f62529bea4130c6a1 GIT binary patch literal 36918 zcmagEWmsLwwl<2pdvJGmcL)S`m!Lrx5*!vD+%34fySsY`?iM5v-2GeW?!9;SKIh!~ zXYx=r#w%k?sX13E%Rxe6fq{X+fjOn|XjiHh#wCG+fsMg{fnkD1^&|lHpUv$*8>xFZ zm^&LVyW80|CMhVbilTivd%;d-5hnGLK*cWGaiDczjKi0#PQT&RSz|~B^C4cX6YBDAqSlj;JTWlH(8?!=EcVV{&tpEd;MtRkBa>Z}*(I7AgsExC z@P0SV4bHk-)6Z{&5qu_|qZ^Q<{QwqCQyHU)K{6B!rz$iC9a^0~!;{-V;h?U1G(xk> z@M&*M+4W_@*Nyx^!cQveWr>+uGt(v=q0OK7Ynbu5hV&QXhWG*JTGvU2dM8T_$GX+t zLKOEQL;%|NA9g*=ZsS@UM=*7zk=JUv8yMEXKTZHPLDV&~hmcuXZ}tK?$E%tQpE`7P zqSbw@jsj)yJ?|t?GLCx!=xFN63=(0|*gIk>y@T%h@9yXdV5h=4KV_CN%s; zP`_|#h}5dKi^U|5a`5rIIUY%n``qLN=`Hg~D*ALt8VS+*iw=0*U!Xkge}rDayGQb` zx|4bCEZTEf4ahTedv3Pw?WbBSS?+Hu65KQ?W zUG$)q6TJs@Zvz4h3=#C#$jRK+nT7fHu`+)010)-o-`_fq=7b0FY&?IuBpXBdOpDtLy>KumWj@MK<;9%_9op$L%Y!$Trzxz zKbgDwPLPgmTEq{9;VTE>b)Lp% zNYmi>V3LryGk>#iL>=tcRTG@Grz|OYzRIMazO$ak*-L6me$%m@2o-!Jgqkc!*>pAo z`Grt^ih(*V&bcpBWSK3hMY)IKYUm2fUo=JIY1=4}N%yeme){_phb2(N*Q1v<7ZHPH zpqJ!=hb0eul%Fz$nq4Y~4|LkLg>uEO(pB0y+|XmgUu{BO{an-bXnM)!3nbD-4*KO0p%12leE{I_roRt`+Kd+#OZZvomwJSP!e|t6;mHOpc zdp~fVq};f)@l}OYDZCu=rTSC3N6EAh*ZbX@Bc0?VWE5$Lk1rfh;~wQ!w9BE=xC*2M zY{s4E6Q7{05xqX&)S3N6&#|=A!xfyR5IrVlbhw;Fx*tIJfooc@B?|m@BkfS0c}lwq zh8x~+Tu-W2SE?0y8Fdodtt~d3!^Z{rB0(ED`kf-l`XiwC8a-Rvf6Xzr<+i?5AQnaL z76s~2Kz!*LN0NR;0#=tOHlZmM)3gvH{PM@ser643qNo+&avM6O z&(w^tRPA_8`G+0m3NoRpAsWhLq9+p)0tQpMQ>}voiA7xlMZGBOY%Y9sSE}t`U@Q0@ zfCf6zMhH*&y{qmH$=xUX7c}MzJGO(Z2Nxm4BR3dcU`stbamoq2?aOH7II(|=?Pf}n z@TArzr9emqu7;PbQe4Wws;o$%()-Sibe3lp;&b@)hbw}&`I}!P|2#2rE_XhQLxO?H zgU*WI7pxn=$&3Yb)wh7y@sG=b2{d-@78vAy@=Y2E$?I__tojCTNYjUT?teagQndN z8+{d-qZLm)jyD-Vcg;Hy~U`Q7z zlYb*3$B=^pr*D(-L0*Z~3yyo=N zR-z|(`{*c@#n;MX5yOhvSRn@E!bTR*6pKsGaf{@yvg0@hnZ!~BhHDqo5a3*G+^w00 zFG+;t*;@O_qGGu%X1(l?T4HxP-XmD7Y4r&`E8)A|(zld#D7($GE2wj>KCRYZERtxH#EPu7k zgeUl~+~luToZw}f6J92FtoActvkYo)Dw0ees zSt0zW8S~CR$cuq5MmRb0mMn1`Y{?62uH3l^>$R{O1_9+RE~xcf{MOf_?gpt8idZj8NN3HBg5@*_dlD+KOEjRd6V+7XPJ=M;Agzawh)k$B^u-&z|k%7n4;jmz@yW|nEmzb8}6r=6C+pvib^!1N&s*SO|I}UgG%I=a#s1|qU1V_>@cIz*_VBcL z7F{gTe7tLL|FC}1o-*J5bTIq#radHN_sHX=PVm+4t!*Qi1-L?Dm|T25-G300vbR0H zdfZ(8GJbs7;IU@QQ!GMK(c9Ch^o1`pvhMBLs$SRYX?}Iw(=A-&%|RQ`kABy_d$oV# z{_doF4|Ut*vzr7yMb;2Yv?`|QQ( zvD^5rb^Qb02V_|H#dy*no3CB_nopO$-dWenjl`pcY6@|`L&236p6P?)(P3$ zK=nhnNpJP|JauyY^Jm=4 z|8z(_YDjgJ$V-ipkB*2BZ!k+odyIK7uJ6n1LBEAB+{^X)%jY!x=NjO0$EKiArQ6wQ zND9ws7LU^Ln~&icP^c=~e(?=+pes4DWu^N>@nAIuuyg<8tyZ^NI*XvIO;4Kpf$p(~ z+w+c%istoxb>Efe0FkfsV(_g!l#u$?MApNQB_FSwKocQt2d?hx?g!+L<*3^wsBEev zeHtVt6~Y6OKB08pp|e02*RJc~6RSZQ1Vi0VBQu*QZ{XizH#~AeU)~CgfSL$@u1F4qxfo~lKRSVNk zC$o239o-w7>=y33m^YCTt!!i=1#g1znMJwA z$eQG{I$6vI85Nll4An%A@*u`NECw<;ro|6%@rrHT6~3E+n)~z}Ps?G)qmcwherXz#1+`#HFg1aj6!wT|H6Gd3*pd&@J+o;IQmw{8IV894)h;Q~I&G=y; z5EF-1kkwHhyhQ~7*Wn%26Gc zO=4_GOOt!orf(~z-jba&p``ZQzGM6H@VMRe%*&!l`q5`xarkdf4oDJA z9@EBXjBBMt8JmM^q_?L)*QE?MnJ8$UwhZ%hE#6p z)%%^2);5k#+*i5>qLc4(62D(k^LBrBQ~NZ9GKv#=T-M+Y2{lZwfwNs|w2&U~@;Y!{ zq;xROzVVqjtV4DzUG>9w`qp!N84om_#KM_^EI$c*{j7(LSd!eyf^UW-h8AVf+_G7n z$BvoN!tr9Z_ya2F{t2hx>pk)~y8Af$ie}xDI(B^6XAn^{NT{e zp06A?&U+Ro9vn+yk5z3#gDyKppx~REBQQ@Rh=#?@sy*Krzun?_2G8cpD{K>fp zdk&!T*BR;*hSI1p%y}K=x#qzeO2pX&MsOt)v&zQ|hGk2GJ$(s^jB$AC{?=jVst$%$ zBrPX&{n7ol_^6*BnsTemT>6u+G6%N#!vcR&M*AhK$)q<4n;su=q+j{2p68%121>j?{;k8=ArO;E}~rIJd-l5!i{3<{IrJ5 z;uLjGZi)7?-+732w6iZk!lUv&pYIEzLJKoz@8?`u9{o=hF^F^yRp5cn$Y|bHV>g9# zMJx*K+j5vb-tcThANh2P3dSBhLv%1F+ewQt(T9D$n4I=^pQ+9H6#vNDJryk6lv^JJ zl$LF43f%v6OvjofY2G{|e|t@vYoB&|ydJ)My&M|!Y=3d|0N%YOy)B$P&i;Hpa$x<~ z@!BGidCT%VJq+#n3WmCz?$II)WwhDeoHBev_MjT~#AUn|lwWe{?2IC%Fit(5eVc+J z6G_n4p?;dB+A0?a_*OOl^o-fv?XBW>!KM4GA^Ffi`hX00!mhz#xQT~p`haXp_HOAY z&7Yt=SuSmsnX5R;OtIZo>L#_S~Oys`27V7@8h&*uQ#n3^V0?+MG1PbB@9d(W=bA;-EJFy|JFaf*|f^FdUh7S zn5NO6gz)9<{`GNz5Vt}OHG`G6d&!-%M&lz_K7yh;W!Wcw-lejdW6eROi@OY41o?DW`4}+fh{b_BtbC}A(tC94)GjSz(3x{Z$gDv(NjC~i}?ad}LYzu=o^A;|> zkgHP08spxc9@dH#`iAy`x&w2na;emnIErif^WQ)J2rZ@hVtVNL;MmIlEA^&4`Tj#5Q@RQ)PS$!mmfH8@*I4tEs{KVE2n*o6yjS1NQz zS+|wk^P?yoS2N5Wg_+fwg(Pv+qdRe9CUfyCyqUB$KLo-+&kjT8@FUk|8dGbf`Bhcw zErv-rDf3&>eHRy<>0Q#w1IL!$R7piwrot?vR-vr7)scO1S%&BjmAvA0J0*yk6}~pf z1t)8&tF1Ck&h5tSMLf&0x=#Amqipe1!$i%LuhKlS9Eu+%dBxaw3lJ@AE$dSYgo+Dq zGsu^nSD?MDTec$R^8~*`9q~;%H)_O4%ci?5$!1qf%f%eAHfyE_i@#@5*`pq-t~cjuHc3T2@ZgwUx|k zicxx*jH#;P(Ri`3xJPVVt!HD&Mgi|;xs>ScFzSvk>#YpMP6*GU*P_rqk3ZFdu&z&_ zAfQ{t#R7*Nu($>le^y(O_WsL=M*FC7JmXbK+Lc%&{h6u05VofT1C4$u6Ifd7Y^5*f zaJD@_c|HMoW|nQ@Wfd)ljk6vv5(ecxN6JlV>qOhDP*Rza)dR!WtQzt5-n|}=DtmYIcudGY_)RB3Z#p;I&jz2@-sMBsp{RbkYMSKy znGXI~K|5vc`}o}v@_Kucxnbb3b7j~!(C0Zf2bi#$hy_U}Y);Ep8&r!$<&uZNnX&fa zITBMbWIT9#$s-QnoHPA; z8`52gdXN->y>E$+XjGl+lU&n;#p&QzITX=_2otTQw*W50)i>~gQ*e-CL z@ZNMVvRg_07@o6^(YWU@4Sa^8IJrD^jJZ6fJz*q4=Rddwih5;lt&L^~$^x)v2yBXl zAvD@0q;4}QN5YRJV@oeo%N zn)9)b@SQ(-hY{T&R|r{1Bfb&nfUw!N1`s>KL_P*!(l|F(A0lgrg&*2ce%X+w&g1do zbu4lQ;rJh*oMwY1O{Nb@6`lte9qVf)d=9C-pD8pFw+qS?E7JkXG1ST>ksnP zFCHSRfnX-FB>+`nhm+0ggMMmW?R$kNInBm`E<}n&F5B=OPTJxC{;3Oy4L|N-#1Zmq z>13*F3nX56!Oe?H0{Sawi|pSeDwrWS*cz50S=%L%GS=OLU%dBm`TSl(Rp9By4n}ol zD+E816Xn^7k}A~qG7YF-)#WYxYqL*&G>0nnGhIfD6So2&DMex1!mq6OWp#IQ-T=W_ z=Ib3^#!O^xFoW#2RGrQ&H>B87coy9SU&I))8r*Ezt1M2Rad0KtlzlWI{W8M_xh9FaOoXGon>5*cL-+i5)JFyruvN#`*f$?;BfhmSBaIxF z1}osI06^(DNIue?f25cEl|J|H^uyojfyCmSWj@^3_TM2dJ*{76rRLJ>t(#n=vQ=21 zJCu7cj|%xDQB%rrZ{km4ZHoguJvyVlm*8$Jg(_ED`(kva6Zm&z=~BC(-|SbU**(ly z&dGtZV4VkfTA|GJ7amDH_}t2ESPGV(BYifqzmciB~|%;Hm0oQkN=-6IAR<4{S|ID}Oh z_ub}8*!%ogwY`=(wK}_W**PuTz{5L!`!-DbM_mr0sZk2~9Q&2WR4L$sf`~-ryvDU& z)JEP0ASv8!4uH%~UlK|qSY;Ne>Z?uv@hjo_nn@P(cBSTcN&O9V(sju)Yp{eX@LMCV z^q>$z7j>Y&uCZ-A5OnxUVcT{<{ofQX;A+HrQl0`~~PECRXehcAWG zuHhq6r2G%t$MFAR<8%4{WTPE%_vg8wS&XYc_*7hNtqVoD`6=nh>X-8kHu&fP=S3@j zxL-$o+N_l5z0M@4i1y&c_4wuQgKwa)h_qa1g)^BHq)-F%(>F1d6V5el12lJQJ3)je z@FgDwm3fuXmHVI0hRq6e&aL#IC|6}y6pKhrAL>b0!%nyz9?OcPL@%Q>OS6WAwM>;n zFZqPLtD?zs7?hzp2!ZlaqCw=OL_s+`59Nz zn?2R0*mZid>+Pp=XN0e?TPtl1NXn%Kx(EfA%uG;CKxI`VjprZqgjQV%v@a$(q_3mp zua2#cmk%|*h#%*CIuWU8i3y_K8#+?7q6}#T-qVCsPu)==7NpTVay7uktmzruX;yWT zCHLk?XlRH9LAtYr0#m^=x)zYA0JK(I7ZZJnH7H7765`D~#JTud8C6M>14dMbu9l5^ zg(@&?cKl@g<%!Vv{6-%7v87=@4ghO4^{LMBK8X*#b0#6D)^$%&#Mk z2(tG)Ju_j0hh96TYK+p=9I%aMY=ik{?u;-%Fyh*;;@lZ93CkI3vyR`2&_c1k`6qz! z#bVNen}{+>8=}>It*XHbpKv9wXGV(^&>{EQm-(AUit;pFm7>L5+26jGg?{_)4bhf& z^f@tOJ12DICj8U4)F=oNbYQFTVf!8sI`}zwP}!^rGqv#~Vzg;!id*6AZz}htf2&j@ zX#lD0hyAS*3cU8K$#CmWZ`OS?30yk_e;II>C&&^1hBwGieUa>3BE<76Kh09Too=PmVX^W=mZZ%;u#@ zz6f*1w`9L|r<&4L~{_Xz1!Y4&LnpXDAKLGmLT!G9Fy673VYh-P3;{;AOQe=5Ap zxC)t!+pOUBRLK=PDS78K>Qtf+dpVH%ooQsYs^A^Ro`?FNL@!Ej*@8N(j;+bFM9pSq zblfJ88LLlaQ~mx*iwfy} ziFKmy5b=@0C4A6UK&*c8`j1@IO4pCQ27HX*=>7hovBB-gQY(>}!u{xwH_DGlIfBR0~C}X23z4+-%#vKc3sPc)Dglv~#x? zuMAdsiQNyQ*H_ccYWRN7A?l9u<$%2QOs|ZX10c@FdJF~zci&j$)h-1P+S(>*0If5 z`68^4Hrw!sEy;;2IXmWMu5;8`7h2@vR|L=59+&;Ja+CuJA@p)eWr3!Uz}0>6tyD3M z`rV!6EN7k-L=%U`Rn#o!&(gAdW&po}O(!7pl(W(m8eIW$rr~nKKiTt4G|!4C#|mPy z`^Q076MwkBs8Y8V1HR;}*(5;lb6G->?2yn5XVj-OzZ3a+?_Ev>&$6SEaRSBJm9yPa zK8124G09m`&dQFIvce6yq))oApVCA*BzpqhlKC0?Ts^Pb7AyYcQTMKBbntIrS6;Jb zf0+EqS$Wen)Hd6&@-LHedPkjwVSkzoN&0P)7xA~rPP_jf&tjwjmfU=x;lV?h#U?oqvo8dw*3$ls4i zs1bk8S;$cEZDW5XF!Qkk>88zAB z`&C22)=%631Sf_5eSob49blS(;EXb^F98iXU0cwFC!<6|h^#SW9X*Cvte4WlPkJoL zDUEGF@GH&va|pK(PaKvWw-QW4+EcgmDOgj*rFKy9PRc;VJAs28@waV(`e*U%vi1Ke zUQMTM*VoCV1lGS4BJ?Bf9TRSk6VOcdKw2BC(d3l6)53X{5@JAT(8EG+#gDOxkxDwK z%MPfVc>DO_MgiK@KY-V~>vzjH>a`?PEG%w9Knl7W2nZeR8<7{XubB-;p7*-J13=-h zc3D5annbN(*U6C;4vXZ`ttWG%B{&89neollP0puX z;G!MnT!7{)(!rWfljs*3R@xFFrJI^qpx}IdAO3l0G{dT6vGrP(LnlttRCDibM-Rdh z;$`R=`X)tJaTI#!S?sM|iew z6xQxRV@?NNbZfEH?4Fz)Y5Mto@y84=AP#T?xjXp#tqu}QX#X2E+Foqaq~zq^Pw~k>%8S$s;ALr{qw%ohWs~G z0JY3SHRJ?<-63<%epWt+UwI!?yr2hoBt&B%M1H{6?DLlRiE5{{EY@xue9WfaXGRgY zC2Yk7HH<3`ur-XU<2>}xhi%sGINW<%<7xS0Cid>z^yD%Q5sgF$V%%S(H-A#$ET{qy zK}CR^m`K};darJ%jS#KUTsuJ+U(5$--x`S|oKIh?e9pv7fx^wsE!$zpZ+-~dK# zyO?s{60C)4e^H78?Mk9Hg6Ha`2S@4H?)1v0^M$idSVZbKQP*^}Yi0V>^B94*-Vt&a zs0Mxy(7UC_4&-ye>>~bRV#vegA;H(U)x_8fiu#}Rmru7fc5j0o8ox1iM4df9_iQKj z==^u9rn5bNsp4`}Hjg~7h{%ZkRX+#VQiJ0n_U_9UpL08(S&Pstl?FPSwSi9O1!xtT zT7R)?S=&!=!59SZl5@<4k`+|RP49vf8y$H2sA0cw@14uc>4rlM48%4QN|%d z_)DPxiz&b|)sBBYmf1_r614(dnDR6>t0$%8o@KZy@J%*G9+ZqoKwqJ^bd`q55%WsR z%jnjj4T_Wm%M=Ud?p53(p7)x9vI4Bm+E)5pGCM>DORW3!HUsC_Y;qs{BLNTex zL9uC_Iq6ot7IL&}4c&byv0{58u~M@2o-P0ZNW^mA=!BKV?7sP&Qyf6jSCA#(KuZ9r zem=YSq>y^)x%;es&e6CPk_CBl13`bEi=U1FEK(F1Bl>#HKM?O-?!vv<89-7NQ;z*i ze|uV%Jt+$<@&R4_{MfU%Itr83rT6K#;Ab@In>9XXkl=v-2oA_Dg%Q-mG2ADSjM|oyjLQE7?A}|Q6d3a_VCA;YX3@BlLtxm?*Ec}5 zqK*w-5$tDqru*CjQJ+pf1YpTf5r}9uri{SK)lBFgz)=GTz?6iU(yjN zKj24{x9j@XL86kaMX}8zPmrJCc?4jUcJFjy00~H%0;nXW9UI2IEa%=KSI98OEzb1! zKe4aX&n3Rj1zya#EIkhw24oNYtC|06ZCvvoOonu5$97Oa_00jebZ&t<$__08@VLJO zZH1v%f5^i<-O=(3?!3rJ?K5O2V3_`ayZ|Ghz4dNDgb!AjguPOKR4h<`F~XeAF*Fr3 z{fmBpMQkOjXtAV*0Ro;9YKdOn-E|}C^ms8BT%H*%KRG2BFna*chY+ zwk^;BtO9)R%hAk?f(As1a<>M&*xKmbv4rqtmv=J|-Y#GZs+VnQgbGcOv?GFa&FNQ< zISV@}-UbX(^STPFIpB(%bVJ;a(>Uf;^r9$n8Id)*TppU&P_V8IY`Aw=1C#I!lMq+9 zH+qY=_ky|4aj}kYd>;y|_X1~1%>neqe*jtBVa?s^8aA4zaKf<1QQw@t=VHe{9-0?L zSU!HsJ$tL={DB>67(Ut!JzAhkpkYbj)=pEAhS#uO?Dw~Rsc1(s-VN;k25?mR4R93p z2Y|z!Tfi>Va68=aNe^-K(xy9qMTVk7heco{ge8Ag7(vih%f;;>Dk0!QYNy|B%b2>~ z?qEM2f&-y98f5QnfSycX-cMChr-jd*3S4*wL)&W zaz&o!UkfLdRq%bC({kyfUX;%x6rH#>qkyScWIiWrEiSxVQC+12w(aY~^}?P_h~-8s zK|O4%lMJ{DV3EoX=eaPR#R|pW+blBAzeRc;L+T$T^zNBRS2OVpLE@!2+6Vq@vdev? zL@pGgRO&Fne1lUAWIlfm!GNHuz2tqw?obgmuxgHWfL?5c2JeV1sOFMUCDmVxPWIR- z+*pdo`wEZ5xEROIQ33&riHFnE2PI8KT*QHT1;Jo^2B4yrmaoW{pU~xvU~5-{b!5|E zPFAzG|Ingel@i5eY`kO2uLBtsH%Su_%;Hpi;#{}vPVC-wUWvhwU}-)$R3xYga|ZZO zF#)AX4SHTCjpivgsDve1O^gMEojr6gw+v1wRzzy+z-lkM+cGiU;^SGoNt&2r{NyTL z(>FF?UK}68XJxHr&#dqt8hf7cX14@znkj_Z)v>dDjk5eDwN#-;rAa+K7XD)AQGv9v zpRE0konic@YD``fB{6C5an=H+QKuBwP8*B?6E8_Sb*jP^>yq8IlWA4C#<@bC)HN*0 zB{3=L`C`N(8+F7sU$#P?ymLP>JspEN<=EUD8Skrhs^WsEsd?7%s&gDl`$>IW@PP-% zg&vco`4Ljl62{kI2puwGIQJn(1cX=A7y?4aHea&C~z-opvw->ZPe(qHi*pnb|Z z(n?500!TwTOU@~aTtu*{Hz~b8{zb(KqQZ;(O~o29XtGs1&0`9($^O-YmBiE5WTZ{w z(NH!k30pwoO8Z@h7-ucJnP&3wV{)pWJ}twzi|Z5;ze%BC!$&f&nzHv)nni33SDih` zO9{$N*p>&{siMCy7>;Qf>W5BkC#pu+3BG~aBU8<{w_g-AzL$1qJP$B7F$XmgfSP>l zA?&5bZX<5%g1Rt5@L*dv-lkz4fAh|o;o^^Fw~kw30&W_by)8*_}V#OK#U1V z&{u06Y{X95tGJY*UG)7kDv+pS@^r z`cu9!EwJ20JUG58&8h?pP%5jOi>sU)%pC@W4M&frPFh0h+hcG%A)Te?MYE#@_PTfTO>Lr03jhF9#@-MdJCA*Phk8mc+K_BB|5bDo~e*DvRNk zY&~}IU`%P)i9`G1API3pnr>KUD(4mytK!r55YVHmAHu4C>XKF5%;{UoW+n`yc59Rf zUPCs|5zj@X5Q7dtNE3x-Ij7FZbOMQ>SI6@Jw-kZC(mW1Apo$Xyt_;4h7nmc?k|U0o zN$?1R4Pj%8x>TIVsx`8Rg6+hk-W3*@10e=&kQ0C%=d!Iof213ndIsBcU%3E}{lPW6 zI2XeEm`^O&P&62)3G)t_erakTz4o|h0*B_`DiBfsR1w^BMWk4+qFH6_QWk5}S$eFb`578qY@&kw4gcB&-Z*O3oSl@cUcA~^{MQ0glxJxhzO6+j0QHdr%x2I`))ma^H`JE~NHavd&v6xNm(89W`DY6&J?$q9}%D&2klgPAZ+*O?+|@ME?PMFA`5 zw{eSp^8E#k{5Ww))Cf1*&#VN~ONbRZARyJhfUti9>HQnX?l;h!??fk1Cim5H0gf(m zz0^EH&=xoL4+Oz-(7nZx#TJte^xcnKm3A3ERT|+uGd2hdj&3d-EAbYgF$C*KL{V3y z;13^I(*7Jo^=|pBUix@ZSorSR9Tbo@B18t$fos@t;-k_doT`3+Aj$$!nOwz!oFf{gWhz-WhY{eltw@nWZdyjamgkxJ@8NADR6jLydZf){pY@Y zV~>DYJ}xjY=V}-*{D1D-*RuNjNy@^)-1PIGTljqpQu3wiPM#jH8;=H+vXa5bM#p`o zFd&8u$9FGMZ|{Z6%jXQzs^X76&^Lp2@r!2rVT{Dcj0BwkztV}mi*4m_9!3ehfAxKJ z_vm`^XWPSf8W z&fXqhkKNi|vZu$_4KANnkx@w2N>0e?;NlP8D&)(x*WHWvEYrgR)%K3OTX=B|VdE_B z_GEx7ZyKF*pQPh7+XJBH@oG1K2T;AZplMzC((>wL#h?Qtxxyc%ay#Q{&2zPFb&)2Y zlM-?UeD2t=#U;s35cuHv%q;ce#rJJ--JniT$ey@wuXu3v3YbF7N4WZ0CqyJb%ugct z=JG7CQE}JaUcJfWidsHjJ^Dgb*&k_?k<(@nvLz@6|U*Wx*UshYDwhnqPqF> z1PBzP1(yn!QRJn;1q3+?`HPM@!>5i`Pla?Ic9P9jeunTt#mMCa@Et< zJ4X&y=!`gDggCkSXI_SWonb-$v-4y5!8J{LWUT}Np!}GL2o+171m*Rueto+&e@tG8 z3HN7}4^KrSH&w$vD*-NGn96#X!rD@DE?Q}B>T5|Ryo!L@pzCdV2!(3BU5i>)_PS{F znI#Y0?$a`I&OOjIkfbYny(btnbhrf?!UGL)+}?mU}e-1LBQlB-pIVgWB&J@~!SjK)z8@AtQS)CJf>=*oyv z`>{@C8xSF9IzUHk!@XF8FgA>A7HG`o927$o1{-O0RNh=UX zOy~em7(6J<=C80GfIZ?Ct5oA}oOK9Zr0>6R{vPl*&o$Bw&~tj^8=x=@P}py4C^k;z zvX3aYSC`RG!FyzTdeqO=vI!kvK<_zUCK0CQ@f*nDV1lf7y zkKVzJveD(>sO`vcsGlh@CewahMT!OZrJr=QGKuubh|;aOG0NIR_}F1yFb z#F2BG%X@~3Lab(+lQ#rSooIr<%-=L~v(T}>mN@?A}fHa(5;IK3eG z{<8JVSS1o(3=2iFBJd0Q>3cQKIP7Fl4d?-j^mo1oy+qkIR}?eblmr>xR++GQ>X`_#|9sH7=JZQ z6qY%85jg=WxiW30?9E)@)X+E-g)9i2CU}L0#q|aEpDi8aK&QB7T*i%G z87bMk|BtYDfRb$4x`oTOZQJg$ZQFKrm%41*wr$(hW!tVUcb8xGIrrXo&-cIg{*fbh zjvOO%t~qDy9l0WQMyz7k$w*dD%@${}+os;dsy(<3f_syzdZ%Sj5vvYx{)Mhhwp+JE^ev)2~%zG3|If{Om^EO+b8}KYO zjWaHmLr&}n)_$1W)@>z4ZZn>pp+N87so)1F$r)T@5`JrUW8-%Ga9a02W9_m3I^H7i z!&W6(10i(H(dDuDz;>+TPI(mHy(?9|K}6r9{36<&a8kxy#Yd<8DO*yNbDI3AMGqgm zUZm;DldKj|PZ#8S?Xw1yvxh2+(D$|=E+D6Di3HD0_+2>yxF>Drs{7H)y94Tv$Fx`S z2$8{N*to(3D;fc$&D;I{J%OiCmX1E(tLQtWyg_d#MVpsy-mR=j#evJSd#`qaXRmhs zN03DB$rq%dj1?CC;}0g1#xNot@yAoF_(GFKL|3+q13|~l_ZO#M@Kx7LwH~n>TeHfUB}pUR=viV|WH>gWb_e9LHM61iR^h}{ z13H8?H(I$YoQfR3b`>`j259P|EsOjTIhm2X{Q+SZd|wqX50J*Ifi_DqYvz!zUh1Or z^02t@`;3~`ERK~r_FZ;MBsfOoYr=uSL}mJ3!Z^I-dA;|`z?2qT`fNn&szt4Bw=ncwtMK!MOU}h+i9K^Recz0Ewbi2w?ytd6rvl&X`Lc(B)x5Jj)vO6Gr1e>XL{?D=WtGqq9fTh{7DGphBJ zV^OkL_X4sD``ax8!|!cm4I7(8q=-F%TgaF@b%UJELZTIaJ4De?{gfZEK0XFVPqvy*tZTlhiJ>0eMv*2Ax+k!@v^u33z2{H(M zG+(c7cNsk{vuD-8`%b`bAm5rpdj~<%_-4NV(+w%^w9UmrgJONOY+nDAQq+ZPO7U~l zWyxWnyV>(-U&UzmzB?&hx)<7&`qYcVCqy`2)AGEeBJOlD8cpuoFhcTKwf!6*Iwb@{ z-#OY?lj^VeWpo{rs-Aps9l}bQUfX?t4QG+3<@t#YWja{wFCzk@Wmlwpi9lDF>}ccH z-@**FQnFIT<2uL{0aMj6wzRvc$p;5^EobF}8seoAe_VunJ-z7ieTCL*qpoST{T0&bh!UYw3zm)o*|L|Af@FJfEWd$xqv@SC{KW7dT!#@`IFn}fVS z;aZ}F+Bn~jmweEINhxZ-x=8G8Yw`fNMN{r>o3h4!o$tmT-gf0P`3bR-C;z#bIo|in zTwbfUtdleAYOveiO9Vm7Zt*XvDUJ?*N&Qu_(!~=sD8*)UXU+Hx?K--6P;hrU3T!je zmSaJ_gY(*PUk>!i-qB6*^<>+<-!P#=x`81!Mu;{u z_3zKQqPptR>M8*(u?=VmQtm8`UnUJ!%TZFl?ORj(b7R~28oT=2a~w+9 zP^5k>v3DdB><{`5D}A)N|Gx9+^pI)E_TmWL-3(|;y$4xuuwqJXoyp;akIih2T{*k1 ztS0wd5!#~7Uv5US4TuzJntYLlPf~gRWUFY zJ*dc%PNi&L_Tw^DgF~v9&AlODyo-i>vwZ4e5~&~{!s0L~|Ap)+q;aIZp8Fv6bUCJ;yN$Z1O&Vy(5C4{KcA!Et!!l2s{GxZCxRQ>IDT_1 zOsd_@6Nisl4$&koU%Hwv&7x0|F>`%FOsi9~JtZR$9jc`qs{LBMNeloK-EHom58R3Z z9k}-R9t&U{rllR=UHWFZXIok!44dHKs2#3;ZY-H3r+($Cz0NX2P3+?q;rU2exFy74 zR6UtpcyqwX2$iwQk!g?Sym)7@^ZHe%{hooa{rZ|Z?8~u1Xbz1uKavWqmvyBcc{zUS zO84b6Nq_9^XwW{F8?TB$W0=@#)975;=QMu}x(;5Vjv(9R;D4eg<1Fms*cr(mFj7ND|sd$ zs6}BHoFgW6zpm*%AVGV9F}F}C8kq=l5im4zF=Uc4{g8x$kR&v-=d%ttC=}#F3K_QU<;nz9QpQ(lc_07V;F+Z|J zh;W)>x{ecG$%p-SNF?BYhrC#|0EBeA{3|5SQ^;by#lJ#kK_HO`hV>!H_2no}6cdBE zSX0}eV{K4BMk5JDs-!WB8qT1Nz}Xu?kct}Kk_IBIcBZ(}hyoc}LWJabo=Yfk0n}EM z+Fx6K69yB^!^l{m3atk@v&#z8*u+{-~x~^7!>kqKD6Tu))uY$RfZZ42@-3*%i25*(_O6{6tb%+%zZG_ zW%@u`Km8vM=zL6PfxT7|ZJ8U zA#1*k<$*rckY~dn17T(O6PM-i%+dXzH0{lp0Gti~-84(uU_kAUL@W3tHy$Ej{K8-q zAyE6bi@&62k1*fBZm}8WJEq<+tPG65MzS%YlOS;twYfXu{7*j8B4EZ8t_(Wb;Nl<6 z@WcTzvPL~f{$EtESlfcJqmcZEW8ruVe`?Q{BLVy6V`CYgTj7c8bG7|xFrWW(gUREQ z{2sk?dVIPA%=@Noz5%iVE`6789jDhM{4E%Wre;TBd;-aH4sU?j@UA{#vQjfKg zgfHMGtJ1fpwm%cSkLn&bj7FjN%dXOBpNR-Z7iW)G9}nf~KOMLp&(yy4S8~o*5<)ii zcNIAoL-gv8XHBWsnkpJsYBW$DZB1$i`67PyAb;xnNVD~fHPubA_0D36YP6IE*ZeZeC7r2954?j1qPj;fayM>OWC=``mjX>-(+`#-y#}zDpwN_cH5$@)1BD zBp9p8A3=~epV6i#uH7ZWN!$LGek$tn(Tcoz*?Z*Nf1FeZAHht=NJ&4$PD@Mgks zx2@e#var5+;qLO8n%n?L~ZWi#oxkKc6wHR03^zq*8wor0A z^>Kgi5SIISumPT0LBsl+@{g~(LIZ(hk3{XaULyQjGE~3=us{`B)k>h%$YCc$-meGC z-qe0cft^PhS)`IOm{}N`=%|=d%aXtv(F{KLK&tr0o&rA-wtY)qd9#W>X_hZ8(-&cN zOM0#3T9`iCmnRqd^MJ7|oAmcw-kZ79lVzK}=K!Hm85nUIb$EP zjG4Xb?hRuZ#!5pAGc{tCAWadat+l_o0V!w4IX=X&iL$y3k%yT-0)eK7SVEv-k!Lvd zXp3tRVH9XRv4oi;O%r82x&&jI_K943P_eGUx40zU^w#U#ykK&x=Am_iw92@p~67skItoC}Ju{Sg6R_5T(T zJtW#F)2;uv0OmaCIXK!b0`rYRmUE=(%V6q1w7xR<;`^ymlHqle!p}|NIRSEvFMWa~ z#2LWg;^F2!X_jB9zXACCi4Va>oM9BaQY0Q#+B5n@{suBdoDsf{R)CHDw;1RDs~AfS zwpXj>O6v4mz9-g8ZY2JRco3hms!Tw0rK(C%q%9qe`P7e5mg>ShGJ8rf7@ zhOG_v#_gZ;-1T0X)jo2a5AW}j`vRF)h>fOBQVv$>OrLA^&0{%H@}u+j3TMGn2K<*# z>4W{}PD>HFW$@-hxbz}M%Fgv6^_=*jRThpo+kxm_YZXeWXa;v1A|lt^f`V`$QiR$> zl^!p(yRGOP-$}+tJhCM4P|Ff#e?1fcqXcC%NqkIl^LQh&#f%aVdOvR0&h@ z?BBN~B*P?YMb7g-reVRm_Gz&t6LJF%5MCvlbE zg+nNneW#vkG^wH=fn%H36$~p^*cFU})owOSp4XLi6?hkL#{t5os4rGBxHXd!O-9A& zHw$<4SV)D({G4w?d$jaR@;s@vBTPEyPFYnE_=sND66c8CwC)EzEdlV+ku6~oX3`%O zcQh>cf2;5S4l>ub4I7kFefzk3Q~av@FC8j*CjcEEF8|i?F}~TrLh}D0;Z~rPC=f!~t`60I*RqSity!1;= zOmIjxTttfrnuGUuaArR&!q|~)B=6)RUGPO3v?dd5$R5yUUSy1%oHbW>AIzqIa49j8g*h4sB?Am@yu}YjeRZ7&50p16;0?=V*=PKQ_DFTL<}GXS(|1#ELpfdK>e#;6*4Z% zA4N?-m4t=%Et-YOV=yY+uCv6;Og+8zB~Kcq!x9LE0!bTr@-6N$C4T%Ys$J z?WlWO2}JK6>=N zsB8F3*Ah{Gu-WTno@Ev6!O#2Js-1Y>aD5Bpf@CT;jOk)7PgOab9v{Luszz783%Pt> z4(jHw_=5P{Ea9RzJW#<<&GDV?Vbgn5Jvqr0TC1=_G@AJNGGWbK%=^teq}r)4fgj=5 zVFuj1Z&sqsW=`wu2Pk!&U`KZRVawsyy5mL3I1})l-V0L({=1i)lsXMZ8o>`O%o) zh=`-3A7hmj#H%t#SsbL#eCfB%i}=%j(WtM8jH`%6cv9s>tW8Rm8Snl$NlciMv413? z5_tNn5k4$B!~ZrS_J)1 zR3d~Ba>B(riZpoDe_5bg2e2R>7UPcv)148C&qNQak-KG{$Vr|WO2b);oe?w;X4`72 z^_0JA3OdB*zM+%<#rFXG5As%L#GMPA>YQW+7jAH2*n0@1O~9HUIy-*?k6P6a(bUoi zwDeO!^v2Y=Lx)U=K&Nq%Qw;!Rz+CW@l$kq#a$?Z3pK9P> zov$S6t(~Kk4#DRR2`wDpOV1C5qQ7vi2JaVbDCr2=W7v}^srRK9L>ght;z(|88Wi2M z1!E$iagNy3eC$*Em43gOLj1gS2G+or8FN#IpOgl}J zOFzS#m~ut3CR$9QT#Tk1%wzLPs!%1J?@)C%^M5jHpoV2*Oy$>F^|S0TTXB z_h%(&W3bX?bkN{^1iaaZrX*LKs+1}1Y?tn~ zwh?H7mGv{6;J}%vx;83#mODzY(%6{zz90+vj&t0bhBDmkre&8rE zUp)Gy$nor17#R0%?!SZB)j$6gGk$z4f9enc8WKg`V}1-U&>*LN*aR_&8>6L}?NG&0 z`lB=i2B4Ho6`)jJksmb9ktd#hTN2s=O+k8F+xQWa3{R3PHJ@{nIW!2g2tbM3eV#6s zm{+v_5EMg_>uK?VDA}=Xysax}aOM|u&xMT-niuJwqpGG86>XK^fPaw6`GEpNPpTAn zvW{vOhzU}vqo{UjyrbxPYMi5JMrwlN5ImGLR~7`(o@+rwWIRd?>M%1e*3dcQAEy{Z z9NJ6(^d=gdn6!9Jqb)2IoLXIN_V9W6tNV+)3%W?;)OxV!Ws7V>FH}6~` zO!@o2!;+MXXvL%b6_zLcp!{bt9gUAavt*Jox}{!)bA{k5ORzF{Mrvgwjjdo498E5; zBv*Esr*%OPszkj8O0ntx*Job$0ZW_)5j0tTL;oNXg)J*(=+Ml6#RW>6jx|0Z$BV(^ zLMwMDNng04;@Dc?zB}cf=A-a7ZAK7+RrUBtDXsuSZk)7KZ#zS;ItCtGng5ea3L80oqkMQye!vy?ti9Za% z+A|=8n2arg$t8gze}nELrZs+@*80P(4!AT-fat@JM;zG~sCbr87%@3N{Y-d{0MGtQ3aS6^L8!kS6MW0B zyoIF97=BK2KMCgfR0I3lF)X2)E<=voMga!=+xs$_XebwqTgWLbuVcDD#8&-O{zziN zF9gU|KCS&^f{{Sx4I25U7H|LGfwBKlGWS~qFzF?g$2D^U5G)|_)(_>39{Xnq*ZbXv zK&=?r=uc~K+syota|?;<2xyIc#1a#L97ULSB!uI}1O<0Zd(M5tKK6Y?^C?CEVB4zC zvsLp(V<5uWTIZnE5!ax59QT%d7O_Igp`}KQD>g=_pLT{=uvUw~NBs17J%3z?A+CqbFbbtUQVT=X*L?$5u#Sh14$F?Q45M z0BCG^7s9W`jCY|3odflg>*0HB-&U;%UR6f3@BhzWU*t=Xv zK2A8#;*@6-2ehBTuE$vXDoo{qnmfxOg&K!tP6 z=)7QS^#|vg*29tHntp;SDqHZ@gcRt;mnDa#-mu^|aQ)UJy=C&FWQXI23B%3Fg1(bV z+?c9CI=K98!eVffR;fJI;k2>rruV&BwTmmW%e+dfen0dQZf#YOgmTQ|*LD(4XKfRh zya1X(?bY`O!iAqd2zZxa@Z^aXXBowx>ih=K_yUT(A?7973)C8pf=un)CkuxuwS<}{ z?BF;!vnyihWZbC{s*OY}Aa*o%_GTcl3)5MxWUugHx|o~r`=%G8hckq&-qxS?1myLP zUPTef7`&josWLteyoq3neY$0-8GpSUIXm4kFnv~g+r6oyiN&8!7>hXtHS}SrCJY3B zQIUdq>~XGEIVB^xlA$6enHHfvOIJr3k)M*MglGxRPp$!yfzeJWcb%H#@x>lGu1?Z&3H)Fw$hTx8h zin?^uorRUm5GJJd26Ct=NvbEQDF1|{1cc;1OLaz3C}5(gv~cf)7UuSM200Rib1fM9tB0euGEk7%15sOYmo=O^Cn44PHGRs++iZzZDUflzvjwp`z4Nk{6$IKg8H+t)U77 zKRR??S3N3XDhmGo;oT;7R0KaI#2p`~%L@+q$BHAe2U5=6az4vgXBI?2AO9&yG65Ye zuBfbBFH4$NRs|KE=a}z=;~$1gSA!fzg~Wp654Z^fINZ-dd6pn^Dd9B+-@SDv%|ZpS zgItS^6QDpw=h5Q$bAAKut#YrW;6aGqeVf&03mAyQczV9y!(b2KV1kSmL~yRQWwZkl zZ53zAoq;rB&XnLDY!D)a+Bd{%D8^eR-MfNe-L9c3uhc5ZQcPM2a#n7eQ&ZPy11K$O2LDY-R1^9S_w^puaSt5dD({Msgy+nIqBvIOB{0nU7iL zlHY)p0zV;zH)X-v;ymCWi9gy>-QCJ`{X z`=KW;B+HKU=N4u{QhbZ@0#lgyZQN&k26?Glb3wylQh_4cnAM(e+yXzwH83~$Uymg- zv_n-;?&$rXoCX76Lpv&txP?{dK&D;aBJ*)8J?w|x z%z|*iA5^I0R(sgahYu7kxMS2~d zc?l!k1W~_d$?1fJ4%JRAXX$tg%)=%};xQ}2`<#HRh<0p~Z%igJWcQO6f03%VNA$}I z$fCgp=Ux($&sMcO+*Y(DD&3=tFi!p3kTtkJe3AhOe;HDe0t(N2+lCh6{Y}}B<{wU?xdx&>p9SH$E@xo7ZL(orzEWXvOd0ddR7q^hsrFr zm%%b*^v1)6|WW)#bwYCwmVT*LieCfH5dY0Pr z`qw!$QEFNW*;KxQeHd_)>^6=HXYw69*hQaQ7SLio%3GpJ8=&R0qCbk{&x(_zvioph zF#|ZCf;purXX~=LArhbYj4kFMzOl8TR-48C`KK@+EBsr1a?kuU(O)wpjf`u3#O(Yi zz>!sxJxONqXlto`BmfMtr(iK@i;lW%G4Vn}l&E$>Ji7Tf`KA;x`7bNq)}k`gt1D;d z8lnL>B!li8IrY5+X4B}nnnfcLB!=;BRtXJs2_$kTnx=cgbz?nsl4nV1EsbNdv73JH z#bqBdHGtGPT33I_gSE%O>3T8DgagV>+C_5NajX%G+$t<)K+NfPQiY=1Gp z*&KNZADJ|bZ^Rp!HFFY}pwX*^h=5@wNvSe7i*aVAekaT4kpZ4 zXu1qTV3gm+Lus1o?dQ`)7D@7fVQ94>(KRsADf5g6UeU4K4Azll;{AtE5pR~e%2Oxl zlrGSB^LV?5g|EL*B1N$+iER6bs$moo{0H+voqNYgZ^BZqN&;0(AoYUsa%7%v@cq>@EIUXVt8} z<-E>?*0WP;*tTa5-QpyBKz&A5w=G9u3)mz8sNp-1-2-O=T)x5%=|;qOih0`ACHmd- zkKP`ap-~0KEcmZ^@X5yfFpL3nK%&&NG#vMHE2Xw?Mr=$eVG&H!hWtE!*xx%ot`7Lw z4e71ZfjyBZj*h(Bn$?RF!>L>Q!rS9uzyfT_x$A$IbE3*WxKxi6A4X_uD~ewkp@0jq zTyBm%*DaG==|*wWH?uk0WlPbl*k}v?I-q~xcG5{Krn5m9;6SFt!8#@iUQ;&f;`}h^ zCT@F_|N0ZX{$T3jYH&Bo`IoXrEyhXF30zVNIaVO%P`W}~1i#~3VByLtCRQhHy;Jb9 z(QMYs6g)3wJcegpFvW{w7C7TVXLMW!8r-qSl(~C!)C&bU;pGCp&#JzQru5O)kAl45N&2~>raTuh>4%oM z0qgNDee%zgul{sPt3%5Jark`Jt4gZ^^YhC%+7j@|Tjd;a@3(>o4J{Iq+cD5Q7(piW z4rRRw=xrd@ax=ZL`3fi-Px3_JD%Dot3N_>HUzo<~MzVYYah0}KMwA~`;rbX&Z}dTk zbPs1FBTEAV;KDA_pK}A)F;kc;)KzWDe~JbtK3DcrjIKn|Hn4o$h)G|l1@3a>Oqbx- zV83Lx{JVR4svrbr!C;@-jNr{P1?6^^L=imtqr$6J5U?ox~40y zLrn5&FOS^Rf!=hKP^7Pz;oW)wtor3|mh3f$Ba|H662~0+ZF3z4Ikbu^GVc8w5qn4A ztE&aix2j-tr3y3edgv1oaZVjv9@a<$^q$ITiTZFJI_tW!;S5CO4r8TG-iL;<$(V-{ zeU2-$`qbg>%lSzLFRgvE@I*VOH};xKi!2de*Sls@+3Wn5%28h=x5-VpUvhTE2IE^0 z99QPsDBzP{cSs4%Xio`%SXYa0jO(Y-`6)pQEr-Wp^{tVnv+m_H*}Yz)YX-9#JTLM| zQhvYRjI^bP`yTCY1Li4w??D+~PL2xbBb5RpW%p!Ei=P0gCB}%Rt4C;IXsI~Cun-Ek z)Nhzpp=++SKIJ)mCmgUXzn5Oil^x)JF0VY*K2iY!l%Q$>JpWWE{j28NH#1|E|GMC# zXZx)Onc#qCy?O=?6I2dNqnL#gSg`OrlZ09j9r4JSn*ocVreA)sYH?t7K2Q*!5tncK z;!HE_O6C7qZ_fguzMprwXiE4qbjxIf3W^sh8YANpCh2OUNWTL71wlA0dWgihoTWkP z1PQQJ@;G)>9v=RxCf*z_vhg{keUL!*mVAK|NtwPCdd*u66~TP;Z7UU5jPwBOL?bZn zvd6WM1Ty{f#9VC4W&!;vW9EPguBt}Hwtv;N+)C-UUuVJ_`T0G9Dm6>mHnABEnPw!UX%Yd~ z3kVgj4r3$!O0a$Y^#`wQEYnq;ROf?ToaYto6d7;;6t=5~Bq%ZW=ghP5=fgX`cI!8~ z1`1Icnzo;PIF57!pv*BvW$EsWX==2UI!Dec*n6tLc2 zRc@QEdgxKmgB29U1JPJ8<8>UV&W9{?0u;AqM4D0T__JZ>>5)Kf4KBDIVUbWGIB^;z zl305@-8;!-EHMF<%+X5|cAjAys$)iUVuDF5I_65pqfAFOxTjZG%s7(yqGdMbtj`h3 zv@X10XJKM3!vV*c$e1XIB>Nj9WA+A`>OX#DaB!QKeE5t&kVqG+MloYX2o@?h9&Y3v znsi>Q^<&A1J$Q1^SQ4AFWmJ=8St=o!R0Q5iXBtYSR??kD#6)G30k2l||Dc&|-TMlD zHC67Q5wKWVuje1keHN%=KT-mxlFL$1)oNQo8%N zehKB~*$rP?Q?AR&*EV=j5~1M<&6;cC;l_-cCZ_JBeK*cU?~#A+2vRmSuA|=NcGRb9 zmSvwae0H|Cu`q~uaeH4n%4qPZgvs%=kYMG`NrTzJh&rD;Y>GG-w;gZfW-k( zsXY`IrJiy%;uYU-|3^j7Bq5Tv5kN8FP8uK}^nag{u9jwYW{iIwng6PArY+~N!GYED zO9QFnaPeisEuus0a`kGt1RkYTB(_OZ$CgTo=!~of{>rJ(&uFV|5azOFu&!DV_HzC` z!ydl{;nV<&dM$!V$@zF#Zk-%*l;oMuyVpSZX6Yi70Qfb`N%s9o`$*XXo@l28;c4`$ z*(>m4co}CG^XsX_pMvYG{$&_&dHQlVIoo2$(Z5<+?ieTcb3ygcNB!nkZd? z?Cj&9KsJLAlCF$;%9YxDC*|I3OR*U3Guoq1<-C+s z9LO*mc!KL>wDXo^Vsc4}LgV(CE6xQ)hIU9vj=};B=LN1Bs@xZm1*$qZi^2`N3`-pB z40C?D&pXdX`ywj}OWlC?Zf_Ly<}<+sA{3^ALvv;snT96ix!S@-$*iwVBr#=-7^Ve~ zgv!gQ7foBxXseLMIC;oTpnQh7eVY89w8 z2}^22?(G(&eU%J))!(sKvC5t%$TLy!7>8lA=z>Hp*^ZOwq*^F`wiOG>ZMx z)+kd+UIK)#FAvnIo*2@dYU(s|H8Ca!V}e0My76@R`)q!Z!drtTD|k`X z<^wP;=t|uovg1$%LtiV1%{?>EzpV|JSPGJ{(g$gthrh23&XA*v24u5e4$~DZajYmCQBV%cnB>5p`Lbr5 zqcohe2#`Bwg+{ef>wJp8wiK2zm8Z`BYAUGiqFNsaa46e~SmwlV-46_GY2Gg5pfeoI zvx`2&m+*N6X(!aEMoy^TX|e5}pR>LMAN>_?|LW#aPzqXYtDR!=lvRT|4-pk9H?|eV zrJLNsa0_2j!Eru8UfHZ>wWPhMo%~BJ@^l<&&yr2Jg-P7Qn5Nl{&4i}Yl>}+SEgO`H z47CNc*zH`2hbL_kRLkw7&(yzshDD9><`^W!=chxN%bu_#2<8tMdD`A>QP;Jouphc`UFBt|t14AQ`hxSY6v+>0JwH zs!8fV4QbS%K*H}g0wS;FBiyN!`!lvOhibByyUd1~97cOAK`p~m+n@F;(o61nP_V1E ziL${{>%v-8OlcNjPsrG1#@nj)4Su{1@@pNHdoCax>{Tnvdu^Y+-6+dDN9Bqt`92Au zyPk7uG)_o50`ztY`%}4!MV_*)YPjHH*S!SCpj5hf{D&SeteHf#g*`mAh^H}AyhsLW zepM8hI*s!LhzP~e+FI3%+t!i4ev()#j+_=WKBtf%+i?Hdv8~DuBB2dy4k2EId;Z=f zsbW&%gRC##Jv1rF9`|gP#sdsbC=Jay2PH4Le`3rRCla1B6lkX|&4*adx+DP=>#5}& zWr1Kdv?E07mn|YfQdD5{v`~I|WO^dmusX|ZW5>OW9l9ro&8m@V5~JmsepF6lj<7?< zXh;c>P8wrMMFvNZEoRIZ(qhoAklHi{lAEG&yg+Vp6XZ>Uka}ZvIehb$JFZ`RkZ)MW z`?;4+2kjio^@@9c8LeE+?Ed=MtB$IN z8DK&K`sE`wo-kg*6Na{+j6{i?4^t!cvJR2Zl~82-xgFNK>;BDg^w>`B1B8%`N4`}| z%Eb}J>q=an@YnsZ;5}0CMX(TLRt=J+iiL!hTbnyLu>vS2&G9$?cv36;N!JZT!z)E_S|%m2E;4v2$f570G_5jt@>8=N7BJ z_Q^yoPEEApOy|HwFV}@%`mNhdEpNj`g-Ed5nMxh1$LW#i)Y6DjCWE*&8BB8A8m^5k zW-~iJ=AV0sJ1JH0#7XasY>Ti6pttLtGP(lsJ8b;M7-^b1QB1f(AJgjDBKnW9S0!hV zKGfyZWXn6%1>RTQLH^mG&7HDxdjP@40O45w5dKH7>g! zdGkZEx_a5!NXK|;c=)Zrx!VKDM@hI`zwS7VRxdy>AduY=9Hmd+o^EzoOtp|o+H-nB z91ZH@j%N!@_qpywV$f_cpd^_%VNq1+b;o$icvVpNR z6$q;9MT?U*-vd!#)t%>#F*9vm%UqdE(^h2*ltr-0qI{i%8%JLUqP$Sy^q+LSLBU(a1@%_QYuZJ zb;{e-b;qx!kSdjV zg>NhzFb8+@Zdr<3ChAUIwPBQD<+~BEFvT6{Ho-`>8;9af6pH)c6q*EV8j5q5Bg^V_ zO8rhMOZm*CYJHXxQt49{&iBHR`J!Pm5mUsh1P;{3EVMHiVPyf_GMrr8=gUcQ;GE=A zS0M@oA{#VF3bCw1k4q2)HhiTD)>sX|Cjjelum8 zWU*iUTSsv>=QoAP`Xf_nx?vgg4I!46f=kvk?UtBX`uN|l>%@1?l8Whtm=si*KNiU3 zB(bwR`_dJ@bH>JHBN(zLMV3?0n5M(s(Jcv+YRfSwMNyNX_rty@4fFeNSbx+4R^VEa z-=7_3j=?Cu(v7f4R2!9F1knx)opSN)@S7W#kk5*WX>QpO>0Ep`cnGEE+-|Jht+^MR zFb+dd)LTRk=e){ux$1t3L|(l%8(%p7GVY|PKZzcWA@IkA>z0x*rkuGGtVr(NRZXqw zk#b*o7=X6vp543dzLC`zjqbh?-hu4b)6g3^4E7RZgs{&>=UMMY?dcCkV*3gL*JpYz zr`?n{oPtC)L-T(B)A!>Op@}fuIE*W?T%A3-{srUKI}cW#Yl87*XPW1(S&#D-st1C?p!>Mm3F26Z?c!80!~4q) zcIR!gn#CJb4T5Y19uJY9sKV+ClxVYKYL*1#Nlvp_Yfd~74>z0 zx$E7!Hs9?D@aWO8CT4%wdmh-f*Vg5kSQyq|V=VUZv0m0dJYA1IAs?^wT~E~s!P7Af zcHyk{!MWHN=3_%x8;Y<_aR;wae&%m~!v3?zDi~X~=mrM@3L*jm!UXhKfWqB>byI+m z7vTD|H?p#2uy!=FxKg)qL{&rM@ATrNwwp$xqDO-q=w#_Dq8FwG;jmgSN#ZD?uXPHM zN|Zy*pfLKjkRqQQ{{r+F%IE!AkEZIH<)kQs+v~)>V6?zsaP|(x3z`WI)XZJzp{ZxmzPZMct5W(Box>IA zw6%R;56A|@5^kcPanV@2!?s;&2bL}>fNd;OsB z>zonUf92v4*GinLo@!dFuy2hpF-C=rdDP)R&Xzc;t*F2j!c9w9-K(XC~Tk;sb0 zhZ$b2Cl=dHQ=%A^vSm`d-pQZRdg$>KpGc0yTOyDx>||YL$=9WqxDEr5s-lMvB|LS9 zn_5}pW&($!V8Nh-@cFlpf+h_?D3b!fnc+x0yLLl?w80)=EN@xA34*RetZ<_NN})!0 zntc_>j;@5OQPSYTT?mrIU{3VzI*Ef}NkxkjW{Q74 z@8P?hqFdv~oyBjT9?0D8xAC9=f&Sc~O3VnRR=)%#(rq7dL~825L!6G=l>Xou{>9(~ zSB>gZ_?j7ccT38k=HyhG{O{TW*8J8VYnvw9w%gVpw;2qG>*V&Rt%0w88{=2|{E(=v znHR_WhfmH9jz7t}D{+6u`hTlk#H~&7gt%x10uCHzT4(B4w8gSXGcA)GVl~BfhBphL zKE?iWvz@RaQ!|V>d4v7)eAlMD15o%XU#nbDnFlXuY31^B)s`jX5apG;Jij*$IU$o;C)p>+^)!b$bPPBV^T!sO~%bB%g{;<}za&TCy^bL2`3 z<|5to&p1JJw~?Yhwy>l1w*zh!KrRtPUjl@Muoxl8eF#OaIH|WnWO(F5TSujxCw1 zTeGM~FhcpTSXd!K(JugexW@ZzQ;M4j1Y?teBUOd4~A~d(xBk z-qX65c;la3>W`l~aeLa~XHz(*y}heEr~RDonf1cA+n1!J^~y}O&HOZF&hBOB_EcYc z({!kM&CzX>E*Vuzet29| zdbmsMW$fy<{`1k3Cnet8P+9$b0_V?j#mcXaIIo;3oc_(%%HKO!YxmYexBdsGGPkO} zvf_IwlV_ov-tx2HsTW_#2L5GDY*HBu8nF`pjXS;_vJdcPWD;Qp4UYqNp3X9lSR1r- z;#6P@^%QW-4b<&`fd-%$14Fbka4& zkZxc+1~dZF#s@d;(KU9oaR+Atm0SdB6hzVZ94G>>dy?~uz$4M<+P~bsE&dv)J%@#X zK>$U2Jx~O$J+Ytwo2wUmdQ{>BY=!y&wW3-+0~iqCnFF8^rMW=AW7D43AT4ABwEQ&C zDj5{ZIe|mzVC@i}BO8J>6na;SS$FF*FvNwjGVr6AR0<4Dut~)wl{u;4=}Po4KtE6t zroVwv*BV7L+VPU;=Ah4$BFvdr05b<^5(Qm5`os%Ddrt{eJK8i1x(VnL5eO6Zl|oHG znU+A;k3MRQ&>vU<)sH@gjBW&a{~KY1S3TC=IJyDo9bJS0N)5;cVC(jxn}yzYM3^Pr zh-?;WPZHe}^sW}d6r(0+sGxMb(DkFY2NC+uwjyOQ)Yf5uH!Cm)fpV1~Ln1JH?C%Eg E02%r4z5oCK literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.scala deleted file mode 100644 index e24eb7061..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextEntity.scala +++ /dev/null @@ -1,24 +0,0 @@ -package com.twitter.tweetypie.tweettext - -/** - * A type class for entities found within a piece of tweet text. - */ -trait TextEntity[T] { - def fromIndex(entity: T): Short - def toIndex(entity: T): Short - def move(entity: T, fromIndex: Short, toIndex: Short): T -} - -object TextEntity { - def fromIndex[T: TextEntity](entity: T): Short = - implicitly[TextEntity[T]].fromIndex(entity) - - def toIndex[T: TextEntity](entity: T): Short = - implicitly[TextEntity[T]].toIndex(entity) - - def move[T: TextEntity](entity: T, fromIndex: Short, toIndex: Short): T = - implicitly[TextEntity[T]].move(entity, fromIndex, toIndex) - - def shift[T: TextEntity](entity: T, offset: Short): T = - move(entity, (fromIndex(entity) + offset).toShort, (toIndex(entity) + offset).toShort) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.docx new file mode 100644 index 0000000000000000000000000000000000000000..30964e52288d9cd8c68c1c72cb973ab2f5d125e9 GIT binary patch literal 39473 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 S(9cyx53&K4M}6AQqrU<53HT2H literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.scala deleted file mode 100644 index 053a4e115..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TextModification.scala +++ /dev/null @@ -1,232 +0,0 @@ -package com.twitter.tweetypie.tweettext - -import scala.util.matching.Regex - -object TextModification { - - /** - * Lift a text into a TextModification where `original` and `updated` text are the same - * and `replacements` is empty. - */ - def identity(text: String): TextModification = - TextModification(original = text, updated = text, replacements = Nil) - - /** - * Replace each substring that matches the regex with the substitution string, returns a - * TextModification object that contains the updated text and enough information to also - * update entity indices. - * - * This method should correctly be taking into account surrogate-pairs. The returned - * TextModification object has code-point offsets, instead of code-unit offsets. - */ - def replaceAll(text: String, regex: Regex, substitution: String): Option[TextModification] = - replaceAll(text, regex -> substitution) - - /** - * Replaces substrings that match the given `Regex` with the corresonding substitution - * string. Returns a `TextModification` that can be used to reindex entities. - */ - def replaceAll( - text: String, - regexAndSubstitutions: (Regex, String)* - ): Option[TextModification] = { - val matches = - (for { - (r, s) <- regexAndSubstitutions - m <- r.findAllIn(text).matchData - } yield (m, s)).sortBy { case (m, _) => m.start } - - if (matches.isEmpty) { - // no match found, return None to indicate no modifications made - None - } else { - val replacements = List.newBuilder[TextReplacement] - val indexConverter = new IndexConverter(text) - // contains the retained text, built up as we walk through the regex matches - val buf = new StringBuilder(text.length) - // the number of code-points copied into buf - var codePointsCopied = Offset.CodePoint(0) - // always holds the start code-unit offset to copy to buf when we encounter - // either a regex match or end-of-string. - var anchor = 0 - - import indexConverter.toCodePoints - - for ((m, sub) <- matches) { - val unchangedText = text.substring(anchor, m.start) - val unchangedLen = Offset.CodePoint.length(unchangedText) - val subLen = Offset.CodePoint.length(sub) - - // copies the text upto the regex match run, plus the replacement string - buf.append(unchangedText).append(sub) - codePointsCopied += unchangedLen + subLen - - // the offsets indicate the indices of the matched string in the original - // text, and the indices of the replacement string in the updated string - replacements += - TextReplacement( - originalFrom = toCodePoints(Offset.CodeUnit(m.start)), - originalTo = toCodePoints(Offset.CodeUnit(m.end)), - updatedFrom = codePointsCopied - subLen, - updatedTo = codePointsCopied - ) - - anchor = m.end - } - - buf.append(text.substring(anchor)) - - Some(TextModification(text, buf.toString, replacements.result())) - } - } - - /** - * Inserts a string at a specified code point offset. - * Returns a `TextModification` that can be used to reindex entities. - */ - def insertAt( - originalText: String, - insertAt: Offset.CodePoint, - textToInsert: String - ): TextModification = { - val insertAtCodeUnit = insertAt.toCodeUnit(originalText).toInt - val (before, after) = originalText.splitAt(insertAtCodeUnit) - val updatedText = s"$before$textToInsert$after" - val textToInsertLength = TweetText.codePointLength(textToInsert) - - TextModification( - original = originalText, - updated = updatedText, - replacements = List( - TextReplacement.fromCodePoints( - originalFrom = insertAt.toInt, - originalTo = insertAt.toInt, - updatedFrom = insertAt.toInt, - updatedTo = insertAt.toInt + textToInsertLength - )) - ) - } -} - -/** - * Encodes information about insertions/deletions/replacements made to a string, providing - * the original string, the updated string, and a list of TextReplacement objects - * that encode the indices of the segments that were changed. Using this information, - * it is possible to map an offset into the original string to an offset into the updated - * string, assuming the text at the offset was not within one of the modified segments. - * - * All offsets are code-points, not UTF6 code-units. - */ -case class TextModification( - original: String, - updated: String, - replacements: List[TextReplacement]) { - private val originalLen = Offset.CodePoint.length(original) - - /** - * Using an offset into the original String, computes the equivalent offset into the updated - * string. If the offset falls within a segment that was removed/replaced, None is returned. - */ - def reindex(index: Offset.CodePoint): Option[Offset.CodePoint] = - reindex(index, Offset.CodePoint(0), replacements) - - /** - * Reindexes an entity of type T. Returns the updated entity, or None if either the `fromIndex` - * or `toIndex` value is now out of range. - */ - def reindexEntity[T: TextEntity](e: T): Option[T] = - for { - from <- reindex(Offset.CodePoint(TextEntity.fromIndex(e))) - to <- reindex(Offset.CodePoint(TextEntity.toIndex(e) - 1)) - } yield TextEntity.move(e, from.toShort, (to.toShort + 1).toShort) - - /** - * Reindexes a sequence of entities of type T. Some entities could be filtered - * out if they span a region of text that has been removed. - */ - def reindexEntities[T: TextEntity](es: Seq[T]): Seq[T] = - for (e <- es; e2 <- reindexEntity(e)) yield e2 - - /** - * Swaps `original` and `updated` text and inverts all `TextReplacement` instances. - */ - def inverse: TextModification = - TextModification(updated, original, replacements.map(_.inverse)) - - // recursively walks through the list of TextReplacement objects computing - // offsets to add/substract from 'shift', which accumulates all changes and - // then gets added to index at the end. - private def reindex( - index: Offset.CodePoint, - shift: Offset.CodePoint, - reps: List[TextReplacement] - ): Option[Offset.CodePoint] = - reps match { - case Nil => - if (index.toInt >= 0 && index <= originalLen) - Some(index + shift) - else - None - case (r @ TextReplacement(fr, to, _, _)) :: tail => - if (index < fr) Some(index + shift) - else if (index < to) None - else reindex(index, shift + r.lengthDelta, tail) - } -} - -object TextReplacement { - def fromCodePoints( - originalFrom: Int, - originalTo: Int, - updatedFrom: Int, - updatedTo: Int - ): TextReplacement = - TextReplacement( - Offset.CodePoint(originalFrom), - Offset.CodePoint(originalTo), - Offset.CodePoint(updatedFrom), - Offset.CodePoint(updatedTo) - ) -} - -/** - * Encodes the indices of a segment of text in one string that maps to a replacement - * segment in an updated version of the text. The replacement segment could be empty - * (updatedTo == updatedFrom), indicating the segment was removed. - * - * All offsets are code-points, not UTF16 code-units. - * - * `originalFrom` and `updatedFrom` are inclusive. - * `originalTo` and `updatedTo` are exclusive. - */ -case class TextReplacement( - originalFrom: Offset.CodePoint, - originalTo: Offset.CodePoint, - updatedFrom: Offset.CodePoint, - updatedTo: Offset.CodePoint) { - def originalLength: Offset.CodePoint = originalTo - originalFrom - def updatedLength: Offset.CodePoint = updatedTo - updatedFrom - def lengthDelta: Offset.CodePoint = updatedLength - originalLength - - def shiftOriginal(offset: Offset.CodePoint): TextReplacement = - copy(originalFrom = originalFrom + offset, originalTo = originalTo + offset) - - def shiftUpdated(offset: Offset.CodePoint): TextReplacement = - copy(updatedFrom = updatedFrom + offset, updatedTo = updatedTo + offset) - - def shift(offset: Offset.CodePoint): TextReplacement = - TextReplacement( - originalFrom + offset, - originalTo + offset, - updatedFrom + offset, - updatedTo + offset - ) - - def inverse: TextReplacement = - TextReplacement( - originalFrom = updatedFrom, - originalTo = updatedTo, - updatedFrom = originalFrom, - updatedTo = originalTo - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.docx new file mode 100644 index 0000000000000000000000000000000000000000..063c26fc69ef4d2e26ca223349298e3f1ab9a457 GIT binary patch literal 39020 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.scala deleted file mode 100644 index c9f6e28cc..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/Truncator.scala +++ /dev/null @@ -1,159 +0,0 @@ -package com.twitter.tweetypie.tweettext - -import com.twitter.tweetypie.tweettext.TweetText._ -import com.twitter.twittertext.Extractor -import java.lang.Character -import scala.annotation.tailrec -import scala.collection.JavaConverters._ - -object Truncator { - val Ellipsis = "\u2026" - - /** - * Truncate tweet text for a retweet. If the text is longer than - * either of the length limits, code points are cut off from the end - * of the text and replaced with an ellipsis. We keep as much of the - * leading text as possible, subject to these constraints: - * - * - There are no more than `MaxDisplayLength` characters. - * - * - When converted to UTF-8, the result does not exceed `MaxByteLength`. - * - * - We do not break within a single grapheme cluster. - * - * The input is assumed to be partial HTML-encoded and may or may - * not be NFC normalized. The result will be partial HTML-encoded - * and will be NFC normalized. - */ - def truncateForRetweet(input: String): String = truncateWithEllipsis(input, Ellipsis) - - /** - * Truncate to [[com.twitter.tweetypie.tweettext.TweetText#OrginalMaxDisplayLength]] display - * units, using "..." as an ellipsis. The resulting text is guaranteed to pass our tweet length - * check, but it is not guaranteed to fit in a SMS message. - */ - def truncateForSms(input: String): String = truncateWithEllipsis(input, "...") - - /** - * Check the length of the given text, and truncate it if it is longer - * than the allowed length for a Tweet. The result of this method will - * always have: - * - * - Display length <= OriginalMaxDisplayLength. - * - Length when encoded as UTF-8 <= OriginalMaxUtf8Length. - * - * If the input would violate this, then the text will be - * truncated. When the text is truncated, it will be truncated such - * that: - * - * - Grapheme clusters will not be split. - * - The last character before the ellipsis will not be a whitespace - * character. - * - The ellipsis text will be appended to the end. - */ - private[this] def truncateWithEllipsis(input: String, ellipsis: String): String = { - val text = nfcNormalize(input) - val truncateAt = - truncationPoint(text, OriginalMaxDisplayLength, OriginalMaxUtf8Length, Some(ellipsis)) - if (truncateAt.codeUnitOffset.toInt == text.length) text - else text.take(truncateAt.codeUnitOffset.toInt) + ellipsis - } - - /** - * Indicates a potential TruncationPoint in piece of text. - * - * @param charOffset the utf-16 character offset of the truncation point - * @param codePointOffset the offset in code points - */ - case class TruncationPoint(codeUnitOffset: Offset.CodeUnit, codePointOffset: Offset.CodePoint) - - /** - * Computes a TruncationPoint for the given text and length constraints. If `truncated` on - * the result is `false`, it means the text will fit within the given constraints without - * truncation. Otherwise, the result indicates both the character and code-point offsets - * at which to perform the truncation, and the resulting display length and byte length of - * the truncated string. - * - * Text should be NFC normalized first for best results. - * - * @param withEllipsis if true, then the truncation point will be computed so that there is space - * to append an ellipsis and to still remain within the limits. The ellipsis is not counted - * in the returned display and byte lengths. - * - * @param atomicUnits may contain a list of ranges that should be treated as atomic unit and - * not split. each tuple is half-open range in code points. - */ - def truncationPoint( - text: String, - maxDisplayLength: Int = OriginalMaxDisplayLength, - maxByteLength: Int = OriginalMaxUtf8Length, - withEllipsis: Option[String] = None, - atomicUnits: Offset.Ranges[Offset.CodePoint] = Offset.Ranges.Empty - ): TruncationPoint = { - val breakPoints = - GraphemeIndexIterator - .ends(text) - .filterNot(Offset.Ranges.htmlEntities(text).contains) - - val ellipsisDisplayUnits = - withEllipsis.map(Offset.DisplayUnit.length).getOrElse(Offset.DisplayUnit(0)) - val maxTruncatedDisplayLength = Offset.DisplayUnit(maxDisplayLength) - ellipsisDisplayUnits - - val ellipsisByteLength = withEllipsis.map(Offset.Utf8.length).getOrElse(Offset.Utf8(0)) - val maxTruncatedByteLength = Offset.Utf8(maxByteLength) - ellipsisByteLength - - var codeUnit = Offset.CodeUnit(0) - var codePoint = Offset.CodePoint(0) - var displayLength = Offset.DisplayUnit(0) - var byteLength = Offset.Utf8(0) - var truncateCodeUnit = codeUnit - var truncateCodePoint = codePoint - - @tailrec def go(): TruncationPoint = - if (displayLength.toInt > maxDisplayLength || byteLength.toInt > maxByteLength) { - TruncationPoint(truncateCodeUnit, truncateCodePoint) - } else if (codeUnit != truncateCodeUnit && - displayLength <= maxTruncatedDisplayLength && - byteLength <= maxTruncatedByteLength && - (codeUnit.toInt == 0 || !Character.isWhitespace(text.codePointBefore(codeUnit.toInt))) && - !atomicUnits.contains(codePoint)) { - // we can advance the truncation point - truncateCodeUnit = codeUnit - truncateCodePoint = codePoint - go() - } else if (breakPoints.hasNext) { - // there are further truncation points to consider - val nextCodeUnit = breakPoints.next - codePoint += Offset.CodePoint.count(text, codeUnit, nextCodeUnit) - displayLength += Offset.DisplayUnit.count(text, codeUnit, nextCodeUnit) - byteLength += Offset.Utf8.count(text, codeUnit, nextCodeUnit) - codeUnit = nextCodeUnit - go() - } else { - TruncationPoint(codeUnit, codePoint) - } - - go() - } - - /** - * Truncate the given text, avoiding chopping HTML entities and tweet - * entities. This should only be used for testing because it performs - * entity extraction, and so is very inefficient. - */ - def truncateForTests( - input: String, - maxDisplayLength: Int = OriginalMaxDisplayLength, - maxByteLength: Int = OriginalMaxUtf8Length - ): String = { - val text = nfcNormalize(input) - val extractor = new Extractor - val entities = extractor.extractEntitiesWithIndices(text) - extractor.modifyIndicesFromUTF16ToUnicode(text, entities) - val avoid = Offset.Ranges.fromCodePointPairs( - entities.asScala.map(e => (e.getStart().intValue, e.getEnd().intValue)) - ) - val truncateAt = truncationPoint(text, maxDisplayLength, maxByteLength, None, avoid) - text.take(truncateAt.codeUnitOffset.toInt) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TweetText.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/tweettext/TweetText.docx new file mode 100644 index 0000000000000000000000000000000000000000..9e262504ce3c2eea4713fcd36cbe9c07943eb4a0 GIT binary patch literal 37397 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 Some(entityId) - case _ => None - } - - // Returns None instead of Some(Seq()) when there are non-community annotations present - def additionalFieldsToCommunityIDs(additionalFields: Tweet): Option[Seq[Long]] = { - additionalFields.escherbirdEntityAnnotations - .map { - case EscherbirdEntityAnnotations(entityAnnotations) => - entityAnnotations.flatMap(CommunityAnnotation.unapply) - }.filter(_.nonEmpty) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityUtil.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/CommunityUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..ad84decf75724dbee2a16f412948dd58ee62c488 GIT binary patch literal 36865 zcmagEWmp~Awl<1ua1HM6?he7--3hvo;IQxj!9BRUySsY`?iM5v-2GeW?!9;SKIh!~ zr+Aoij912}nl-CdDa%1ZVS<5y!GXD?acftq7RDukgMp2~fPrCvM)kx24xcO>J{hTd zI$F3GFnQS9H6|%2t%{(2K6}ARW)>px7DvG<+i|3EWQfC)s7}A((OF_Xk%xG=o8SxA zm{AUeVT#L0z4IkntrP6>X`<2-mpCyn$k56sgDm#RU(aJYwdCHDj3bp~Y~Thq^HgdTDxmZKY(r2POEOt%_FN;A_o9ic6N=WDp}xrWqdOzz`a>_;$lrIFWax*O;=AwNz4w!u_2vxksbT5k^gImfG-^dCEP zb)waMt&f7F@x1QDku#2a0%@u1NevQV(%3p;Dt&_Q`tR;&3u7pR9+tuk@8)I|>?bt* zM^HXmXmiL6IUVGCAIYL?N(4-+zuxu!Cs8Ar( z^L661$N?x_w9?h7B4MD7-Ai(R2A2%q z5kTspz7wotmlknDjx1t9b;o6?Ng_nQfib8@TYowuS|ui7L}xFJToPQGfOd`eiAKxS zmvI&V1CWw$;`~xv+4{rI{mZ>@(MrmMRQgho&sbUCyZ-xnS<%*ve?!P z?6${t<&S#h7fgpi;!0|U9u(IwlO5;-JXQ??#WO9tANCn3$S1YDrYv1If>it*r-^>C z)TW&2HpVRZ!i~=8ah?6MKw+N|)vQ6M`3$H)XrKa_1I(120gf)rW&mf4-zRxy{J3I2 z3##OukK~+!X808{rv1-tPquF1{a0(;#YdN-m?{^2V}p>^)Y zW=OM;_z>dIxU&HBFNiu=udAlmYfo8{bi9>G!F^{vkF%FlR(xh-JrOE+?+|LTAZ5~7 z4dfTX_{az9I63A%PmyM}s21fOim9O~EPvJ%iKl5JMiQ5D8I}~ts5tUR`_ZCgItuH4o&Q6=tZjc7$@0vs3At%4jojEC~ z5DCnMThnvf01On?4$sZ)tTDP!`U`(DZ(*;&cxf8vp-wRYW~}ET54#Img~Deh-d$f< zv!*A?U>1vJK*_X8e`n~L%sZ_2d;9SEeu;qop8Em{_s9y_kapHx{Pnr-691olxn5nx zIR^E`4hjqm_3wQ#adiBnE$ZVAt1PG;PxMd*pT1bbimKqo2QG-th_B<-#Ah_mjgiU5 zLAA2(0DT|Auy{W+--Pqm^FK9=JuQk_!Zs*=)W8~l$Qx01T1RNC{xZD3I(b0m0#ycG zilsS-X5eHrJytmn!wCN=RZF>Q%$uyt*3m_Ye)`i2vdBh*cTu~dqtCZz3lYg* zZngIV=Sj+qOB-KRSd_k$L%vjhEcYy#7UcY}dvm0doP>ld1!3~S4mIvsZcVcsCWWIw zg3oH)c|P$G$_CN<(@mZEPqZ8>dp#V1S#ptMA_m9H*?0E?2tRPl3bsUm-)^KF%QH`D zR>5$-G#uBHsMVEfgzZPqHxq^j@Q7YX_`3#kSnmm-5FV z%iSVFJ@Sh!J!4DIt%$?w62>MprDFKijsdQIar3-OsJw*K2LE#T<7q#$1|w0#nqavN zjly?oMo6-Dyrx`shpB>8uxf~!BAM{Xlo+4hjP_LP;6Qv)*FaG(3M-ov56z8oI|SGY zz6YR&PP7%oRsP_nyF+~U5$^?+>B64%VC%tE5b?+zh6mVE4^NbG0&n*+8aYlB&|#wMoGrnt`L?ZKo8MGO#KmT&VP+vm>4PnVIMuKK^Rt6$Q;1mGBy|>xnDJwx_NQ1=knsB1uNws2P%FB`wR##bhNR zM^3#!8Sm}PW)ke>QfgLx0t=i`(?z#=_Z8omwSTB|t7Q#2%B=2JlkXeckbDKpt2qT0 z77K4&ni-;arvK-z^fJgE^`$!2@vjCyv^%jT7@UiAgRzEszkH~|fCz9Ls^2qhwYHaO zut~=A!jCT;v);Q5%qq5q2`*%zRkQ6D#73f;r5qVTTIAx_5_NCR$+i&)wM1$`dTCML z(HZq&H{AlD#Sxem)*^)%*)yfiB>-M|7Uwe4f9_J}BrcoP9*XGD7_=(6+E32$5lKnWz9@XF z=`uKci$&$mlMBbw;x<)Lh^H%iBF1{8$T;pysQ2+m^-WZ>3;IiGY!+UI;_sSCttn6I5ul;aMSbOK}tY)XVXK|eHq&XI8 zdhz36q3~`(d-i!}0Wq4sz+*Vcpy73MDe2~UlhQxH+oZ&V@!4@8n{4=Q8m4nGlii9I z?@0gf?%B|)1~XcuG}f)HGe=ARjPAW}kd8+=^oiTzv{unKKUXNZU zC!q-0N;cwVe?BAy$pSFfFFSWC{mLJO!T)*fIQZkEvw;@XanPbl09sW4xOV>B68!xN z`g41bD5@01g8TXG6`?OA0kg;<;{C5Ys&+c5>O!9osg?L!@x4vGb#n&soq*jtF5hfw z``O7`wS^6ST>1vtK%Phl6wKKWWeaoxE0mPuo_c8wQQJxqc)prmuFfR^F@>3v+N6&a z2eOF@&j_`xlmm4L6pgtKBCS|eQ3Z!mYVn`zxOE|PBxd5jnuKO&ee!B2yO^wMx$La4 z-4b3;bLrhutk(?eLxZYanm0Be=cF{=IXn1vb8k-I_X2B(VA(KFAYQZ=@T{O8g>D3; zd6xm%&wg)gJ+^DPUgz&CVWHG@GFQK-r%DC2tW5K@jujm0J)b`jeD!@;U{s?9;FhdP!FqD7Q+U1j{orTNqRSLBAP1upD^X=}=%Qt%dVILa|Haz737Vk!2 z;@z25d&aK7KKtw2H=K_#Cq{mhq$0!`sv4TIW$|_VeOcJbw0l~a3F;OvFWG(_c4t5% z;^_33({=9tZltbOy)(_H;>pvib^!1N*N6XM|I|bGG%I=a#o^^NU3hUA@cIz*_VBcL z7F{gde7tLL|FC}1o-*J5bTIq#rad%t_sH|5PT+0F%xw0lK zAr|8o!u;B`*45rzF`hKY>Sy1+=G&#Och>cCBmQWqnnKj?w7JfVvI+buN$ew?bwc_! zQ2o$t+FLz7PnBH%{7E+yh?Yi)_o*Ge^LzuZJw+Jk8KK_p!+(N7S{)vHU4sH$73((^ zn!*F;F$fvfwvD~n`Oj$)C3u^yyGFjRjC51ds8=53KDWz)1s>`@~SDT9W3>4jBl z0HFW&8D0i#-oF{#Pe?Dp3OOjQx>`Ws(G|5(oNT^y2rvi}Cs$9q&#dXjskTbM2Vmzpw39uc%Sa0w!l0=BN6m-e0ua{P$3H*E`_fT!$| zNPt!hbEb7iZ1b0pMQuJeoTro5^Pl$g8ALGHfnG}2lNP|*d=ysU~C6;LC){VkDy8He@#MdQvkq4 z|BA0_#G_<_V)jHF>66)j_!ssGM?5H%1QbX6N2)FeEd+%7kJLY@ph~IFY)C!+i{MO! z95jOPhl=D5X!G3vA@M&@v0j%|*nugasJ{zy!w2b6MFn}qZ1}-Qg2?z^5*bP0s67$k z{!l%a;NFPZ@jL3@Lj^A44O4FIT^NR0d=k3zBwa+BuD)jv;C?!Oy2K0ZNjrXeXtp*N*-lEU_ixY0S zAD29?^zMgdv#Yl~s(;Q4DIM(XkLGRPM{NolG~Y-NM?35=EsG@SN1t)V;k`XMz7uEk zoHj;fSSuyW*c@CVxjhBCEoHbP4X$=E`3+}F+aEi}AGH1&_yVZj38;!eEw%Hd5$L;m zaAr7idcShM$-gjb&)v?Pa(obnJw5)zj2lsZgH^$e$hO_4B?FR`O4ML$Nj7&fdZv)!zHX{;f7Idm5^erEmCVK0lVF%j(oE9wRb&kNadDJ zz27-$ZR6;~W2Ji_I{7Xq@%tqePxmKxwU1NCqu61`WepyXP{VW@*xRK>3+aI`uLI{r zN(bX?8=r{6J7mVvRb|K1x1Qt6xS?sq7tR!9_=wr+XFY92ljKeo{4ylawJ3__md)!t zcg&3zju*4V9#BB*C!B(x&&cEG?&It$s!dPoz=o4+`n~;Av)T_P;peVS1X+Ih!J(Z! zKRGV!56sTo*j7TGtJ(wxUG@w>fj4(2V4g-WHM6^Qd%iJVyXEr?uI=YnqM(V@JvhY= z>_FwOGgK+`rBP!T^Eym(&4V`-h_eX{;7X?Em5&+p%T@+^`r_mn&p}%ZlKM)- zar7CM_t8UnNRD9`d1_M%ZY$Txe~X)G5uh*M?bN=_P44?#M6t+mCTUiM6UEy3aSe&t zIqICu3iV~b^APiBXJ4F{TjfJO?`K4X7AB6~Pq{MO`X4J|5NRE&z=K?nP<^b&ZVG9O zm=)T$hW2^|Ls?GuY!QMo+H7x58NMNXP>p-yG+qnNFFAE_L6%e)ry9?`O+l89 z#Bb|RKh08Yl?wuVtD1j$#^~<$QSrav)P2^FcxWJbKmt5r)nL=##KSbnBH59?Uph() zz%NghOPgilERHf)Y9wxzR&4ve=IxvtakH5Jk zp+|$V8C`e409gyCRRMXCo0U&FhGFg5*@dHsy__mpUEir}X3%ll^W zDPh2MU#p7qe14I^EgQku<=C>_p+d)He9yNr27R@dUlSOPNqKlHT8&zVVa2E=sS(F> z4l(MTs!=ykdvf1v6nrIzM$3lyj)j-08D{X4+0W&mI6cLkN|#Sc%W%?biE@23bfNZT3y6c~uN7YXTnpmao^X%l%}Aok_305VGHx1JXLSI&35d__k> zI(jkuQBu>|6O}TEw|Lp>O>4${G$HSz1iV=j2Br-&C62srw~fDl>!03iTIF0lJBwdT z)96n^`22SN`nW)VQz3_v!NSwMTHEa$hH}ViBpuI8TuI)-A*$wJi-QJ3-vw8Dv*`@$!r;xkrE4$b zs-&^TxQ~~ojbeqqp@V?#z?`aFDpe)6;+p>a_fJ2K=ur>59ff3M>v>kf@&OT<;Fm2#}?jP5}UvrOSHVQr8Fjs)&c8UqvBtjqt4odn?KDu7du@3pEg{aKZgbh4v`x zwvuap6uIMShRL%qvs$x|IIenhCvMDiE`Eh4lcweee>mvgVaW95$gP>$%tmQ`Rh4Rs zeiBa7;+ACJ)m3MDm!$H*siiknLeY(}Fw3Y_Fzan~WM52%K3cYtN33qA1W~iX&o;T> zWKDIoRl3Qg-MGDods#-;S>I-qHJ);qu$kgjid%+VQFf9?lx?>F(bCSUKD9uwxbQZE zY}sW6+S{gOJ3=8Ad(`vJv%D()SUG+`TbsjlMalJGtFnT;Wq1DwR|gj%riauFWdyYj z_D7T5*{3D;CT7Z%J+jE&Dh4o01$x9s?ZxPV2iW$moac|KwukR2(D9^Xi-3mx+KQY{JU`uGb1 zyH#8*vDpBNYf$lLwH0X}K96X$j~d4_T$Q9z6WurM1ph`f&_r zI{=jD6Od+RStnjrQFB;1>Tx4skUy}e+@!WnRGw=3_+s%p)6>gi6_k|4bS}fHl&UB> z-4^w$H#=Eyu8i22mqK^!U2aCm^-ng%cSncIi1dTcYy$M8bF=+y@M-ORK7>88>c^|5NsgcC z;ExqFQx<-Y-<=?@wc3eX-vJ<+{`%at6IcWy9N2|mUP{}x~Edwi&4_Ms~+DQ?y>_v@CdvS;-U#{^VkkH zx9s3=Qo?YuvN#kyJ~+O7E1ul;K#205{xpdAbL#dx#64v>N8;MjGPLGsl161#Y!-xD zy1o5roZN$!N~?ZW`>WpRqqr0?3J#-S0n#Yzv73zMNtVX0G1A#lS079sQ6R^h+1K09 z?n;z{qzJ5iD?CJ_>RjLKYK&8xc0;1ebE@a7SxbD3&ci#K8!HR}|Oa}LwMYbb)9%U#Ei%Wc*ZP8@vxgNwhYSLW8nXa>J55OW6Kwpa+V zvzGgpZS=;_>0BMoFDP?&_)dj`tA~$c-pY;;)db1k(xY8E{JC=`FCgmRI^!(hJ5wPQ z^*8UN zkD0)C{^S`(^nhF;U?z$9hOYy{X5AV<>hSUAb6h|1MF%4F18^ur%@7F0rJs?jHQ&y|3%14;rfcPdD~3sw-Qe zc##~)&(0K-VSblsK>eyNAE95Hee$C@l&PO+Gg_Rv6aYyn3fq?cWyLS6yOZ+<2rklJ z?{G6_B6CCNWws^jbY{6AMVG#0(O&RIj3KGP&6eE?ervZz7&$1#lEbOBpDJ6{gz%MW z#yl4TSE5PTM-|jBGi;D+60gfdING~OlgT&q$bV0DWH13+b$pF=BYPY1t$q33$Z=_i z0*(p*l#cz*SE}=m^pd~Q=l-33_&Ys_NUXEWm+RW$JLIL8&C9IhTzb7tldEL53Nv(v zau3E)A+H2VN*T^g{7I}`aiEuHXVmu+oQNz==Fd`<6t2VO}v{vd~38Ljg!!PcXr0uMYV`3ro4>| zje17Q$4D>Qtq_PTW#&mzuNL*rk`%j8bAIc&r|SOw@F2I{lpK<~y1rBqCQcf(_w0*T zD6Vsx${#36m|$s8dV%hIQb7b->663Kg=eQm$#3h#8`EM}68RP4k*xd<$v<&ke&}95 zx?D@`Q)>;Y9bNidHOOF=hM7)A9_CJwPTKA+yJ?kKeoTr}5%IlyM2BJ+Dv270urA}e z+k6TCkRPkI*D|M8XP+)Jr-c)Ac*p0^hT-t2%T72oN-m${u=1EH30zPR7O$MwxYmo> z$lCxUeQ}=yAhFSvgi#ArnMbPnY15f}C0JiG&0^ZF)EqCVzoAOHE?H&?5qATAYvhp{ z6h!Ev3JTD*v9;h2CyTW54mdOVFhztE+f`=W8sn3%QC3_#J+Jjho;^Eoa6|)fxiVcG z;eUR6r4Gfgl(9065Q#tsfe=IgzHp8y`wJ1(2kvIL5;>1@4Z)*d5{i-{eBJ?lr2N8% zx)S+hB+y0)y&}|+A3;=sk;EQN!>3uPon_W&vH#|QqWBk&;;sx1_;&GyGFpwX%h3=s z3tb5u4aidB_n)Hb*DSnkt&$=JeR`EgDhIs`>QL$o5J$Kun8@l-bLX#5tnaO{eO9o+ zN8RF^5@<(Sy3V4i$gNPK<&EYW;H0}|=;mja4vy#{;-{^5TwF21Jwq{yK(6}XOX0L@ zcnK9L{=;VS<-gc?UH?DXXhu8&xG$&|_T5hvKnT!gOC_(w@n;6Oo=bCnbn!B}~Ai@*) z5)%Ps9%VG;{-?8H^8%f7Ydt86RhbpVA`-KQdXm-f6E4TcvLZ>5%P7s#tRW#SGbNEr zUO}I#XtEr7WvC7UpuD6=Fc}G<0pq{TArLkyNcKeI2u?&fIG`z~oNJbQ!G%y`fv?j3 zpVg!pfyz4b2s$4585o(~`oA=f<%_>?RW=uZnK&y&X`2u`21cmcC#9pxk?Gvxj5F!Y zfpSyyI=$KL_T#w=!dKX>m9~a=%B2Rn2nCl+j8IKLWz}~Y&p+r0th*9uUQBaHUPsGc zomw9+A8Py%P3C+%5h-bi@S{E$I+3>`4`~J6Q-@Yh-BBVIq|rWdHo(QK=^5Q=R&|ml z_vVOeXov;WJr%=14_#Y%1>}i}#L2w$3}=Ht=Xg2B}TR1bkWJG{WU_$_Uylf^jp}^DDFP zLCm`CHA4of48;Jh6-Tam$M43(yeGu_HEN7_AI(;ib4a58vkO0OT zi$Mc!D#9RTh+6x#ss{JVgd15s6KX8K4w?79^xrg+m#68f6fNe;{Pw*p_}h1HsJ6V5 z?}<6h>-WI0!A~KB%H~ZNsf{NQqfJ9oTncA@Q@JnoTcsLt z14v~*>~ED&;I&^(hg*O8u78yg`Nq5So!NhH1-dX}^=SS9A(?kCK z+g2K8;u;0F=m8s2WBp{i%n+;USsA>r+tPJw314~_uDZuaMQKSFU4;vkc=SS(-C%>9 z7AC!`egZJ9`#+&`i0p4&I^n>42Un`L8 z&J{8+#_tDsquAejb)X+qNH+eScf&VFJ(yFv8_TG_qydwAp#j^;_+y-rQbv9Orpb(Y zD%`?nCu1n}ouFa3%R-*+@A-BlwlJ5YVsDEn9Z$!gLZBn0lj0xa$?@h~tf`9v**w(A z7vU~=R&3WElv6qpHh(DL8X=h~%|1=ywc2CFPkv;@|Bu34!hJ$lkqnHscxxB#$PQ7#mC+AHwRT%$m}Pz(Z9Kd=IEE?zd|^df+n`t+;zw7*a0v`sRK7q;%k5VWvQGQ!LNkUwXgvG`Ut)$gygsF3WJ z*d+Q55gi#^!Ut~!#_AWZ|HxIXbTjES;AH?u>kkNv4QWS`T#3vS>PLgTiH4C8SVi>7 z)|sC}O3c|P!(-UKRh{ZX_aL_jq-?37Sd3)Fh`<&Ypbw?gHsxVJt8;8Nkx8$ewbC}t z*_bf~ZN=*az16I5ZJuhNZZzkO;hWbjv6Fke?a>)}LnvE;2C3Q&+oXoP487?6CgH!S z<^G^X2T{Yy{oZ{~v~DaQB^&=i?Pfj>qUPuNllnU)Mg;QzL4DCR0N)XwZM5Oj`k~Vp z{;0C77u{hti-94){THcrU`G>0`>`-a1i43;7P4H;fTK2<`L;uUJeOJVbj^TB=WZ|h z?_GA``)2RCcYl%Jx{iRz)nNZ1Z)WAdh+z6Z$Y+dYwjQEWHrJg0BJVSnc~I55N6>0k z!TjF$={xM9T5BA0r;*`iXF#jqeFJ+NLMGu`+u@jO-p&2u&ezT&sN#Yr25saoKcfJ( zi9^0iIihqcyqdH5ehQtLl}8uuP5ZG7R%IKrV7e+Njq*x_uI~M-T8*73Ms;c5IByEt z1WO&s?TUqx*EK^%2Rs;K1K@AOYUaF2Q7MnXC^42M7=(`-8^!UU+#c8I`$%l4Y=OHb zYMDRe*-pc=tR<$Q?5xW6@u@$4SJU`lu;KV+0ceCiDWm&>K$ZrRXN_g_we;>YY1#sK z8r8QoQQ)aw>@v?zzd!t;=LF`sps`5K18Y*-Qe(v~bi0l^vCg<15atob8tK zDwG?EO3aFIRCc746>i8Sebj~hm?pw5(G&QV%*W8@=5^h+Sn)59x_3pRgMS0N@}4#S z!{kqn%A2mCw%LZ2f0>liJL)V9|I=h>(r=SIh`&vC+W-HV_#sNO^ktgAfa@7pBQ zNC3wyWEl81GzhKZH=2iNC9H1f#cwob$6J`mA$F~$@s$C@lIF6{I4$<)bspdwFfr$1 zq`wYsOp!6c5(xP^N#XMQYVZG5#NMQKG-a;Rc_JUD%F{nr`v_ zsv&0WCu#tKlR*DIz}A5dFik*k25GmKz=oWzE$G6NQNkfamKf5G9z#r)ODUlzJ?7+; z#x@}MmFE08gnOtLHgk`A35FrfseAeqteN6cJE(XkWuW4nz`>3L*tJ0Yvv~H|`hOL# zrqizL>*P`b%U=o+`Vsez3AV@asV93NZH(2Zb4opE;Jiu+&>=MFV4=6-$5=&4BplUc z22@UbeEo5v0PX6s;5G02-Sdrltq2qgi<=PM1>X$>hK=@($O}5u%zi3xw0{WuKos9s|>S9x}ee+u?9o>T8XXRh$H>l@Jg-n*ZfVhXo%_GIkhtfRE^OkeTo<`gCPy1RM^50Ye zRMHdGkP`ql$ILm0S@~c-<$X}`f*;`DAsPcA@&mtSpSQ$MR6DO_v2i zVJR-Cp*JSEDON%hlzB0~odK zVv2n$uolYwMM-khEAiS0?yHv`Y^7uS(<|G~7mhw5VaeY_UDMTWmFZK@WB5LLM@U_u z8u&jz@0K1rlFfy%2?vOZA`O>^hFs%R6JaeV>VMK-KHb*Xy$yb7{Kn7`b@u$+vz^$Z z^WUwS&i4AHio;&nJo3CEEG_a^{TyLS4UUW0x-VaR&+UC@EyJ=@8fb0T20C39pjD`A z14OT7>^{PUpyR(!&M_ZKR!}7~y9-uqbmZxyg8j_3cP>4r`vq!XAhwx6+%zi`56vPl zKoS{POb(W*cKq|P%t2z7uodXan5VH>Jt-;oEX`SgXSy-+pkzc0dJDa!t29i8m{(d} zM!ODeP^2VKrdTi^$Mr*}lHDV*wlPpLj0m~n5I%FktUP-`oKi>@Rek5!BfL6^-RYC) z<36k))&pwM_1Y-LGHwoAcGm`AEO8P4pja%sG(_l{prjf{xfEr7N&OeQ>!XS*`J^H{ z`KC?gqNKtr<@ar|-K)g@6E7xXcAaPktIo31X z?P*!|qztsMESmcHu~%<(6b6fH@6&I=&!|*4YrHNX!GZq~9GG1SE&Qk8-rs`He+#a{ zKX!Fveb79%>+*&cRwve?zfU3_wJRqcmH!LaqqjOKDCS?l%59&_qj4sOz_6aLZ-8n= z9UDBtSkLl|_qhimzMcLEz>=XN5YcQ*8NRifx!^y5qXrOwDG4*BTOXi>k<_5Do^h+) zUpl-E&buB&m7s+qxh$8}3hP-#poM)qHxp^Axu-y*YKXu?US%WZ9FXhU(k-i_>-@ET zz>g>&xAm`sge6;xqMJuvAV0(N2*4`s-s!?XVvsZiP)W=>HjI0j&wWC#kYJ8mTZiYn1Yj$!=`0_&sjF-Q$8 zJD?+21^C|QqnQ~64TuuuZVhUFYD9@C8{DxM+C{5^RFHY zW;PPs4VZV$>nbc3fGaYR4KaTXl5?5&pb2R5i-_-J>uX#Ot#h9!ktdrd`Z9>aRk-|zY*qn${3Hn9F1z)9&hz)|=g z0FHO=fxA${?Qp{8H$b_mO+saR(x6E_`zE(7q^Ef1OVC8PXFDOF?Ijl z!G2r>M*<&I$leQ~UZ?GiioX=-1n{Dz`-C zioDLh7EUUw;Q6_v<2VamB9$M`b78!S6^g&NS!SMpi}X5%)IUn--7}S{X5=1%#7%K>2>RJ%pZiLI zR47WJ)M1M82B#Rrbp9NQ4nbLa$@7TSp(0{n-5l)*z1Rv3-Vs|+%_*%)qQ4fM?7368 zu@sN{75*K=VjLTL2?Q(#E_P2JloTaV5j)Bi1ikSYfRai|z9L_KLYF6kwOtL?iB*Fs zSqCu`z#*vic>tRG~+yNi{w8<;C8!;@!r6 zvi5s6`th5pF?kW>#H78)SxcBkol+coZ7_Na+$8PPsR}#HOE$Mo##QASmkN0jx9}v_ z#H6U_ixJCglo7jpnF@Kb&i%ynbabYaV+#u;+^^cHiVGrU7FoxuE^)~1C-rq92cGN~ zdW=>UNAHT3(7z5FZ)FCA_mZ&Vfw zQhHa!|87WU$t7ixlMq(*CZ+eszo=M1RJf79saPTgO}A>Nxy?W}*}i(R5PR8~joPVeyM!X}|9f<)~#d*GxWsOiuOJr=cHrb(?y}XIg03U_$C$Q}%&Uvxt@cs5 zg}l|+Y{l$cQ5Htz{@zgtVMm|a z;M5nGN>F8+WJN0~_$%yAqu0Rky;z@6G5*HrrK1B0L#0`i!1+yEhvhDVx1AjZ#F&r- zeKi>AqR4lw8J-kgQ+FsqC4?1W6!N`#e99ruC{rk>^rC39QBk09m|LeZr@0g`ZFl>r zZ|!@#_FQC=3wNTZK#0M?V!MjOl>VO9a2r){Fm#-b1X|coj`+=iUHTx&Bi4jE*K02q z8{*eK;u-wLaRMU&EA;27)ZrKa zr;~$#M#U24??;SCSX;guaCFy@bR3)QUNL)X%+OvAMlGyg#cj`2D3REQ`%Aza32B@*BHtFshw9ro1FUJtA&yK&YfReEo$0 z#crSB5|tw88C9}CxekXd3UkYw6rL7UwFHB<r9a(taCBzCH5RmF$Kv=(l^!^QG{~Kt|Z=w?@o%?FF07o0S zUTP5`V22a?2ZBI3Xl-#~w!@$Wz4s$irCEkgl|nerj19(wqn-PLnRtuP7>ao$tf(to z@P`jfsQ`AudiQ)5Z++Y-OgsuHa2gWGWQ;9E)xGwBpW~4!t7}P6PehTmOB4Vlt!<4-hEsBHiA*LXO7DI3) zgKo?eI|1dztj~fRyiMSdLT|d^un{svN+BQ#Fzf`RxMq`;9t5Ot7dSpFUJ$>b{PVkg zW6!`@UQRGDmueU=ynlYTuVww|qok#!h1sV+KjHT^NXeI~J9&D*YCIZL%1Q-cW--5b~azC$Z;NuX*Wd(-dg%xD)ty}5RB8*#I{<5_Rm^|n8~cbfk8 zaQ622dhFi*l07}XZgBZ@bJ|{AjdFIDeGB@uf1`6%P=L`0yS=-!f~YBdeSh{9fRdi# zp01Rwi8AhP#JxJ~K4r|q^W437vTxG5N;$M2adQ^2{!-eSf@EaN91(i;<_Z%eb9rau zYrT6L%~d__>U=qC`Bb+=?dKp&-Ms|#^nT&8zH+TK^3@ltzV$1ze@L+e`uV*z8Th%| z?5>Xc7IZ%_wFaC4{XB(?I!fDaJ@Sj+c;8INT@r?~gVRHsQ}(?4S~}fV_gtL&({E0# zZ@f;pmlxs_ln$imhx(q` zoRrWr;B&`@9S(7J0>7-+Gn3?x7r(c~b%QzqK?kC~z2d>uD_{x{FTv_-ogg7U5g)O@ zo9i?GM#Wuwd-W!x8%p_n_2>&_Wp@R-xbVb6`@FBSW$V(3Rr@@dHya_>;YHV2getsU_jJi|Xc2 z6WD+!g;yrSdiOZ)R3h4UN87D;qhz<+EjW}o48kuBp7(V=&oxSl9o@p(O31HI!$wWz zlUzD$o103-#X-c$%;m(IF)`yePfyzqeK)g5P7iNc$;W58wldE2S zJ~?u*f@ehe!bHi{Kl3v5>kJF}pIsiy53Z@(BWuO+0p-VxgeaKu#K^C2_3PWM`D5~e zj5t55e7P$cxhNapdZ$p~EfE5H4tl{q{!KTbtmu>tS2^9cOpd?ezG{jlFbj zM%Ha=yAk&4;K9kx%}=I1Xzrq;w1@Lsr)l?D@xb)gnoS4QTRpRJCpbGv=4z#gbsH@} zlqnBTL1$xqv$=d&*E>J{rE;i`c{(C=Z+0K_sbJ@m>%*{NSzI=^J8?8Y39tv=Yp;0z zp!mh0FO=Am;gJ%u*WyRwe0UvN^G4Vj9TroQ(f$68wnNi2_jLM6akJH_ zh6Mxn0khjZk(9%VQKVxfqgg9&wqEd=B??No_!y+c{JeHg;!z!g@fS;9Y!>NyWkg&G z?ON!HQO5N*-Pf*_O!(&emNT}F=3DIbcw{tFwzsFI<;4W^P_edqr%t0P_i=uq1SV+j z$&&(zAf=i@1a0yqJ?IKFyE=#kOm{t?oWyFCzi8l#Ru5jU6oYY;(EUUCC^V4t^_UbbFDP)gyPmk)kS|*_b4CpiG$0*F$JbnW?e9VZcIXz8hoVRlc)T|T*8SRxE~7iqg`{C4ns8oIZaIo5ZF5s5D&>@g19aN}`%JmqWkc{{NE zeq?*gSvkDRjackHj)L=g@9_Y4;_UtNWi7J{OCYm-L+x`IoFJqIWy3!mhi= zNJNoyo6CEKih?ZWo0B*AP312!5#|-ItxTQUHr9R(SwEDd8wsyORmUgtn zpAD3Fm_3_L;cs0NJ0%}mTddqn@m+1ZR~l@t{5kp^pyvX5eqBu?n(|vsi#9ur@jSgC z{{FJ{%upr#r5F~9c!mEL*4Y_OsKSmH&pPfb@B4#DbD``^Oht2{tW0z7<2i8zW4E&2 zUmv0B$)Wb2AFaSfl(J!60)3W9W4$lTaf2;Lm;)M&kgc<^zdLXi7(~UoJwaI)17eE; zinWlGl*k1HNj(f@tgT3nSCE!9PEpvm1j;^NNt0)M@C~iE63TF?`6R$C^ktUdmj}Tt z#C$bOSv6V-a5I39jksjZ*0!94NGr&r0&QToD`@EqHLO$gu^Mj2_j{BU+*_OMl?3zv zT$VbyM;=;lLKnG*olxL>$Y;@Q38{~`-^4t1k@iZZXq29i_rf2P7us-bC11oLss_c` zkg)<%)uKzsi*G~UsZBg6$48YRbcj2hYYNW@DfFseaD-wi+|(Ae_q)ztDZ1^P2n!wL zq(8sx@@0A&DfM>kCJ4ONjv%=@FZ(<^KgUQ4rSAc+bYEt7$LgLNgbld}&N|VQ4rXSa2@Q-KJ0u!j270xEX#m zO%#?ndlNbXDmgQ4ryR^(;nYys6$LE`oF{k$hvc8oL`8#JZs43o(RLt6=iyX7jYn6j zvBKVX$OZ|!eQa5Hk8inorM8-56f`U_+pb*Se>O{SRqQ_YD%)AmzMGuYmFR*yW!8N) zwdn5Y%>dj&_ITe1k9j;->!~M@?Gbh1ppQJ%?^Gwa@k#$tLUDb;<7Z0;8PGYd8HZux zS4K)UPa)#|$V`*5A-JJX?V;w_jzDFq>_SBXAvBsdVb_l+OR{}u&3+pnhjyT7(bZRU zK!fuCBkUcZE9LH zoj!W+bFI0@9Ba=tq>LY@+<#uICZ|VE>)l!!uo?n?K%frzx+7v`3fb5heY1?!~Ags0Ync!8~$xcDd&LDWyxt^<__C22)DecmZ zjnTQ7^O%3Iepg2U=XO0iLTT)1ns76ne++S7Xz#2zet*U}Fz-<;jeTep=Ixy^WXh625Rr-C1#Bxi7qN%*bZjg8y!!)e|BjJ3!9>v)U6 z4_lRF4TR7&N0-Oq1KY8VJLOS)_pVg=1`&Oa@{4G9!bur-6(61Ur))`8&S~JzbFRwa*$*&K{~PLf_khxPY9pB@#S0;dkW-;GVRdtL{fH?+&Ox9@AdQ zBSZ$9VdDxDtY`#~HgEU)_XM6oSvvZBucGgi@&>(~6m4F*dAG7A6$dWQ?!DRxp1s=j zA3+kiCtr|;GFDjlk3X158pDWq#2-(w;tNd{5nb6b4g?)H-(Q@5jgM~q9Bso*{3VQp zdf+J=HO|ZoL6IRtN(>by^@WJy&@b%)6e+~a3`umPi2z&0*;Mw`AI>WguMYqEc|Yzs zBRVB?L5id_^S0q<83d+h!&hB1)q2EkY|ScXmL!dMqi2a>k>S{g+8vO~*35?5TZI!- z4d@Wo+-T*pa4K^A+Ev_C7@(<-wk+~XSsW{M?7QriNN|kE*MtLuiOTf7gmHMu^Lpt~f9J#?+-$UqY-W+f*S1R! zt?oFC%C6b!(m@Q|19mb;UdomJ->WlKf-f)BT)$t> zKRz?8+2*328*Jy__gn5JyIOuEp0^J8NW$D?Z1>Qci>_|1x6?c;s`@b0T4c?4$fJ8m zvY6#UNsQPzm`-$PvL{apoSb;7O!-V<6wzEsinA~(`F3T~Wwf3#l&<+4d2*g5+}^C0 zp2as=>Pe-Rlp=~Q|PGL1g#uZSRH4TC{-sf@nEkXA&OqTmCXO3{%&e?+4IxPXKJI|x2)BRW>o7b z$D(Ah?geBQ_P1LGhTq%B$a}!#^R667&Qy$gOCKKIt*>1V1Yo5Zx@3_010N$bZ7?`| zZ5`H)PAf41diZu7ag?NJ(X-dw2?4&>ma*Df+wR*d7~so<2xGDd18m%pM$eaP-Yz9f zHWBwFg3u09d!74iynH$cS%|^MPl%j`OE4>$)!({3d$?=iXTiIYwgrtS>3a`b6J!wj zXue+E?lO8@X3wgF_nm;>K)yAH_6~xi@y&h#rW;b+X`73M2F3bl*}VQKrKk(pl;Y>8 z%aX%DceCfwzKYTAeRop2bT70k^{E$!Pl#~5rsa7_McnCRG@9JEVT9zfYWq1rbV>+@ zzH_v(Ce>f_%jh~LRXzFOI)s%py|(-Q8qOk5%kvW*%5<>UUq%E*%dSZI5`nHT+0n+Y zzl9lUrDUaw$90e^0;Z~CY-x8>lMfE;TF%M`HN;CL{ixYU6xAUh+W;CZ(wT>LRhXt;qx67EQUkZOR(^b-o*Wc-xiFRp8V%#=6K&P zb9t@avQEydtHEx6FA)SSyT!j!Qyd-sO8r%`(!~=sD8*)UXU+Hx?K--6P;hrU3T!je zmSaJ_gY(*PUk>!i-qB6*^<>+<-!P#=x`81!Mu;{u z_3zKQqPptR>M8*vu?-jrQtm8`UnUJ!%TZFl?ORj(b7R~28oT=2a~w+9 zP^5k>v3DdB><{`5D}A)N|Gx9+^pI)E_TmWL-3(|;y$4xuuwqJXoyp;akIih2T{*k1 ztS0wd5!#~7Uv5US4TuzJntYLlPf~gRWUFY zJ*dc%PNi&L_Tw^DgF~v9&AlODy^Dr?vwZ4e5~&~{!s0L~|Ap)+q;aIZp8Fv6bUCJ;yN$Z1O&Vy(5C4{KcA!Et!!l2s{GxZCxRQ>IDT_1 zOsd_@6Nisl4$&koU%Hwv&7x0|F>`%FOsi9~JtZR$9jc`qs{LBMNeloK-EHom58R3Z z9k}-R9t&U{rllR=UHWFZXIok!44dHKs2#3;ZY-H3r+($Cz0NX2P3+?q;rU2exFy74 zR6UtpcyqwX2$iwQk!g?Sym)7@^ZHe%{hooa{rZ|Z?8~u1Xbz1uKavWqmvyBcc{zUS zO84b6Nq_9^XwW{F8?TB$W0=@#)975;=QMu}x(;5Vjv(9R;D4eg<1Fms*cr(mFj7ND|sd$ zs6}BHoFgW6zpm*%AVGV9F}F}C8kq=l5im4zF=Uc4{g8x$kR&v-=d%ttC=}#F3K_QU<;nz9QpQ(lc_07V;F+Z|J zh;W)>x{ecG$%p;-kVwG)74l-$0ua*e@^46Zi+_d8f4C_OX>&sD|C?*DR zv8J{`$J(HNj7AcQR7qnLHJm{kfwMP)AQd&dB@IMa?M!i{5d|`|gb2y=JeN@70;sJh zwZFFfCJZK+hmo;B6&#z8*u+{-~x~^7!>kqKD6Tu))uY$RfZZ42@-3*%i25*(_O6{6tb%+%zZG_ zW%@u`Km8vM=zL6PfxT7|ZJ8U zA#1*k<$*rckY~dn17T(O6PM-i%+dXzH0{lp0Gti~eQ1`n!GPKyiB|AQZahT5_=UkJ zLZJ3<7k^359$~(L-C{G$cTBxuSQ!|9jbvj)Cqd#QYIAqQ`Ja5GMZkiU_Srn0h7lk z`8|5)^!RiKsQadEz5%iVE`6789jDhM{4E%Wre;TBd;-aH4sU?j@UA{#vQjfKg zgfHMGtJ1fpwm%cSkLn&bj7FjN%dXOBpNR-Z7iW)G9}nf~KOMLp&(yy4S8~o*5<)ii zcNIAoL-gv8XHBWsnkpJsYBW$DZB1$i`67PyAb;xnNVD~fHPubA_0D36YP6IE*ZeZeC7r2954?j1qPj;fayM>OWC=``mjX>-(+`#-y#}zDpwN_cH5$@)1BD zBp9p8A3=~epV6i#uH7ZWN!$LGek$tn(Tcoz*?Z*Nf1FeZAHht=NJ&4$PD@Mgks zx2@e#var5+;qLO8n%n?L~ZWi#XrJUc6wHR0EpfGZK33L z>f`?2AuRXvU;{k0f`;`sQ7A`dfv1OiPDv4lXwBF}K@ z(H7St!YI&sVhJ-xnkLG4bP2{Z@%vIS1U)yUpC-%}XlZ_Ow*oBbCOk05JC8Iyg`7&1 zu>=Zdic^5CXqaRUsVe?N9Tnt%K8W6rF|fhxsL$7A=uKKQIoM9BaQY0Q#+B5n@{suBdoDsf{R)CHDj~M6ws~AfS zwpXj>O6v4mz9-g8ZY2JRco3hms!Tw0rK(C%q%9qe`P7e5mg>ShGJ8rf7@ zhOG_v#_gZ;-1T0X)jo2a5AW}j`vRF)h>fOBQVv$>OrLA^&0{%H@}u+j3TMGn2K<*# z>4W{}PD>HFW$@-hxbz}M%Fgv6^_=*jRThpo+kxm_YZXeWXa;v1A|lt^f`V`$QiR$> zl^!p(yRGOP-$}+tJhCM4P|Ff#e?1fcqXcC%NqkIl^LQh&#f%aVdOvR0&h@ z?BBN~B*P?YMb7g-reVRm_Gz&t6LJF%5MCvlbE zg+nNneW#vkG^wH=fn%H36$~p^*cFU})owOSp4XLi6?hkL#{t5os4rGBxHXd!O-9A& zHw$<4SV)D({G4w?d$jaR@;s@vBTPEyPFYnE_=sND66c8CwC)EzEdlV+ku6~oX3`%O zcQh>c|ETZ)4l>ub4I7kFefzk3Q~av@FC8j*CjcEEF8`(DV|=rLh2;N1!mU6n%Xj$k zMKMKL|NCDnP}BZc@ud7;5KmB1F*HV zywSVIE_RJ{pskW=-w=|C9nRTTDu$rlNv5iqF3XDiu@%D!8PBp+#1brk{6rO&Wi&P@5yUUSy1%oHbW>AIzqIa49j8g*h4sB?Am@yu}YjeRZ7&50p16;0?=V zkD?}^O2R_>7R^HCF&LF@*ID9ark>vVk|&MQ;S7urU}Jd5AZ-*IE}9|kB=mivWx*=q za(T+z@mB2SpQhvN(icKid!m*eKXCF%^wno4Y9iT;)S7E;j-;m8N2 zM6eqlQC8tWgqg}@oZ58=@FosX7f(l3{xA&#gr;=6{iN9nhgY&-vNvN&iqA3b_s z)HVF2Yl)~o*zEN(&$0^k;OBj9)lR%`xV{B)K{Aya#&j{4r>Y!Ij}KuSRimrlgo0j zFavJhH!IO*GpBX-1C+W>uqGo9GPtja3 zlpo^y3W$V~nxP`fdUH@EjUfa~$&`#@{3&pxP%RFK5S}U1;6;@VNXu1*&m&AdDkPQS z;Z&Kuu;uV;-SMJioC$fBBJ))B;Lu%^lY3O*CX%d`>M6z0q3K|h#k3;xB3>$`{AkQ? zM8wh2kFm-M;#HZWEDq9VzVzGXMf{n+Xw+9k##O{3JgM>`)+Qy(jCX&WBqmJB*guj` ziJ&J>jVp?g2coDdjpv}Lk=0R2qMOkN(45bh!B?d9BVwzmrkUhLh$|0!V1+bt{{n0D zrvc0aZWWr@(O(qMsT=A8Y0Mc5skt!!WNN*aYK#HO;JT_)QprUs%v35WlEeRrS_J){ zs6+@MnVTL6m*EqeM2Yz%l82M5As%L#GMPA>YQW+7jAH2*n0@1O~9HUIy-*?k6P6a(bUoi zwDeO!^v2Y=Lx)U=K&Nq%Qw;!RKrMJm%FG==Ik7?Z3pK9P> zov$S6t(~Kk4#DRR2`wDpOV1C5qQ7vi2JaVbDCr2=W7v}^srRK9L>ght;z(|88Wi2M z1!E$iagNy3eC$*Em43gOLj1gS2G+or8FN#IpOgl}J zOFzS#m~ut3CR$9QT#Tk1%wzLPs!%1J?@)C%^M5jHpoV2*Oy$>F^|S0TTXB z_h%(&W3bX?bkN{^1iaaZrX*LKs+1}1Y?tn~ zwh?H7mGv{6;J}%vx;83#mODzY(%6{zz90+vj&t0bhBDmkre&8rE zUp)Gy$nor17#R0%?!SZB)j$7@89%<2KXr%z4T&P}F+T=aXpmDsY=W4?jnUG~cBtYg z{ZSeM15iq)3Q#Jq$PXIl$P-V$EeUObrXanoZTyHyh9}9Dn$Nk(92x{#1faz2K2H}* z%q!Y|2#O)e^|W|FlTG9D!cb(onKYv`Quk5ddH z4s9j?`jY-Z3obXJg-kK4IV_2YnnZi6DiV>Z1A7z)cPIz~I~tJYu!XC*(4mEQ=^|Rs za3~05S$C$?e+s#4krQQoSY*z7P)!WUuo8LS({;H(rYDaEkU5AlU_)ns$g<>BHCUAf z!UtAkOE=%a0cQO$JB9x?MZ5<@9p~tYkmHB}czXB@Bwd{2Wx0b?CTwVG)T9j8n|Ce| zru_XsVM)qGwBphJhUG~=DF2yEN8{tqESaQ?ZmCz{Tp{?%608iKky;r^V=LGMN0SRI z$(3E^XmNV~tP9@nZ0} z(8?W3(ig6%IJOqJ?@qa=`6#?in-PRyl|4iA;IXGgW`j1BY0X4k>yJ1=-V15j+ceB{ zJ%*(U!IcWPjwsVh<>;)MBQp--)91Qtq&zWs)HU5mG#%j@S(m}et6f-AkWTCrw0LOK z>O-b9VdmzSsW*mPD}Z?R1`Gr4ioFcZs3pNo)$DH0!#FBY^AkvHW1oFb#=*Y$Q3gH` zmNweuAt0*a##nco!ZQWCU^sK8SOujD{t7iS zB7}F>xfR9_v=YXj#@xGjfEXkAwx>LVeG556h~%5c7VtX|_%@UZVJq&P7{9WNZy#~j zB21u3w&pl+uFvFk2SFgVVm^$?0@=4OtJ&fQ$%o(XKzJ^(H{e^y1?Gs~fG8iEtGBj% zCaFJ7+qc350D%Pl3B(tk^5YiLR96`A-ca5l!VVnYn?kB74LvT##pikAFaf_@;txZx z_6!IiCS!|Wa!H`b-=O=5X^mf}wf=Cc11=2{Ao?)m5l8j~DxM`2h8=VqVbC3N?gac@ zgY3&>;!{3K$mjoCgoDfP&wu`T_iXWR5v39{Xnr*ZbXv zK&=?r=+9_y+syota|?;<2pElh#1a#L97ULSB!uI}1O<0Zd(M5tKK6Y?^C?CEVB4zC zvsLp(V<5uWTIZnE5!ax59QT%d7O_Igp`}KQD>g=_pLT{=uvUw~NBs17J%3z?A+2qbFbbtUQVT=l^uFj;)Zu3aMST+t>Dj z0MOX-E`(o=8Sg?7ItS_}*TeVNzO7mjysC_5-~XS%zQ~tyU(5|yg)G|>=%xlvXhrar6dnuSdWj9s>GRz!Pj8?12=@-9;O_qe6$ zd1Ksvq`>{2sQm?cfo(_OEFF0V;VnKwS zeVlNf#VOA!WG2rw?U<42mf<0t+6N#8SK7|Vd+T}`4QWOTl6CCEJsp2B19_JQE}t%oDYHT?uvRJP!)2`SKxFG~(fyy$o+Ns&&N7NW)%gve@dXrnL(EIE7pOHH1)18pPZkbSY6&$@ z*uimdW>>`0$+%M^R2zv{KZ(RFkdnLmMc}eu*q?>I8X)b*(US3NT5FZ^nWh4Z$51 z6?N&RI}0nBAxuc^4dhT$l2lJpQT_=@2?)u3mgA(RyuQ6hs**fR@~3lk zXYjIF5^DStIpA=dpYkP>i=sx_1S`x?Mw6Ua3`*rI@r5V^Nh_7)#D8((VD)VBWPFyW4t#UaF%Ft@98I9=C>%ycNAoSeT)&-L4RpPA^J}i7|DqMXO2Yw?Tj-DWIkq{ zOMU}Z3jBl=-joGvi}Qdd85N}+HKjoH*H@hOL&xwA(FD0HnD8KV68}kSsd5#QRng>5 z9#^?Q_0qxrg8#^+*+HcmrMan4c-$FUPkCG3`3hc!*Ibw+3vN zk*NjGC_T&n2HYZP&u&vCr*-pT_xTDvkSsgWpIev-N%1Yp3ru0+w{f5G8RVsI%>@mINd<~%V^({@aSQwy*TCH1e_u;x zXosqx+|m0%ISmHDhIUjOaSN-^flRx;MdssHdfYK|+{Id zc?l!k1W~_d$?1fJ4%JRAXX$tg%)=%};xQ}2`<#HRh<0p~Z%igJWcQO6e@Ru`Bl=|p zWYJ)Qb1wj!fp)!l@ zWv~nxy>W4o4HOyIn?ESwNUogUyHcm-=73mJ@_F9~8Sw#gt!;#C*dm=WUwZDNo~8D@ z{&fybl$w@8HkGen9|qhcyN#p5nS2KicF`x71+^@vr z%mB`(U`}bu*}80Qh{R_;V~aV6Z)|O-)n>7OzA4Pd3jbE0+%rE-^tVFN$hg)=%+8Mj z99cEllVlc;wwBsQ0>BV^3Ko;L=%~vU6E8GGiE1arqnnSDZ%Pr9|FZIJEh;m;x^jlD zAsT=~GU(2cQ{PKqHjR#}Su`R+Vi@mcmC!(!Kq7~tX}Tv|H`Y@pd6tCM(l|C7yXp6C zOncGaPXd1?YNK_yn#;qWVBjy-GOy90b;t)di2bQs?=J=@gMeUYrOr@Il2G4a`-=h2 z=EzI<$fRj}Bi_iYnUlZ-jb1H81Pm)lO6^G!2|yXVQ3Z}EvGFNgtYr>>WQqhim@s3Z z=`sv~QGOc_rD>|SpHCNAB*_Pcq1A>&*T6`p%rhQ%MaOb8SVxwL_isW)yjkulPo1Pw zx`@t~x*PsCb=U!a)QKSdZ*{hC0CikY-G1-q=>G;YJ$!MAcP;$~ z$Q}b5@_sE!uKmAAvC!S!`6gz+eg2OYb%g@r2EBlWPAAa+t)Y{PnX9Xny~W>sR?X^L z&g)!gJv*g_ZF}a>El#or)MsRM+j11PfQJMCHGBuMd*Dof%U9ST-G~@ZF;Ba?M8A9f z(c9xPG^)Uu1^+ba;FEP{#Jke|m7`+LX7)d4@d zA-#1vuqP75(UEssvwCr2ICX1ZczYZSSb$AAcm3~jPE`2^m+Fz?!w5}nMe!>m6mTJy z%gwRpx@D3p-6(GQW;SQLY$=)*8*SlV2lNlzPCALjbT$YB9LSV7SjR-cYszL_oF4|= z#BGoAUw@+4A52|b4emxc|5Dbd#W*QCflEpu#|p$8N>_-B;CFlrEL>T|#OkE2cM3i> zn$3Edg6E}-$MDPxrg(A80%u(4jE>7dgF6FO zU_IWYPyU(m)t_!@b!d4Y4xi6@RcTdVetsE8TLM0LtDGb5{ZNyp=P}O3)5KLNS03^uF}@Zi1NcKTpy$9jXnsG z?%|ANWNBakT-ZhWb8Y}TW(sqKx~fh2PtoAS=gNMH(UnNr29}Q-G3g7nz+H}<=@R^U zymiukHu-@=vIMYkS0@-~#y~A^FPQL}gtMhPG?wUu%X3o*PR_l%L8;7Ki|#h~1Ty|$ z)5t^X47ctxo&lBCSAu2%?hJT$n|h+I*(5l1dtUi0@%&te@*8*HHpX47@r!}L11DH4 zd8|oC-7iQ@cM&+vL2fSQv;~~qJMtpAN&D7qzK?1o3WA^IX4TrRwc*xh2WkUc*L3A| zh)G`U<&m2@(3_4Diu4sTyju@|UBCRzlD+0|gpz|>;+R9fZLY&0hgNY##=U|!d!7GMIqHk#Hn}PHOU|y?V0;UL zuT|has4zpKP70PWimnq#S0aUk#Px=bhS~WUjhDtARHDwL}Fad(jaw$ z1b9^PICfMX9{#E(-W)En@j0b^kU;j9e1Q{5nZ6Zz&07r>!F=>>D-~Ca^Z@HbBQWl= z$F-0IGX3<#Tx`o`0sSfDi4urX*XXIk43wE~`rQYiY0`rvR|p?Lqg|7-Qy1Ox*l7~B zR<}Gx_bEG@RnR<#5uJ~sW%T66ZLq_$p9EZXTOX>M6FfX*F)@bC$H|7>9r%B4NPXqb zb1?yQr+kG00z&yO$IJoESXGUTZU45Y+)C-UUuVJ_`T0G9Dm6>mHnABEnPw!UX%Yd~ z3kVgj4r3$!O0a$Y^#`wQEYnq;ROf?ToaYto6d7;;6t=5~Bq%ZW=ghP5=fgX`cI!8~ z1`1Icnzo;PIF57!pv*BvW$EsWX==2UI!Dec*n6tLc2 zRc@QEdgxKmgB29U1JPJ8<8>UV&W9{?0u;AqM4D0T__JZ>>5)Kf4KBDIVUbWGIB^;z zl305@-8;!-EHMF<%+X5|cAjAys$)iUVuDF5I_65pqfAFOxTjZG%s7(yqGdMbtj`h3 zv@X10XJKM3!vV*c$e1XIB>Nj9WA+A`>OX#DaB!QKeE5t&kVqG+MloYX2o@?h9&Y3v znsi>Q^<&A1J$Q1^SQ4AFWmJ=8St=o!R0Q5iXBtYSR??kD#6)G30k2l||Dc&|-TMlD zHC67Q5wKWVuje1keHN%=KT-mxlFL$1)oNQo8%N zehKB~*$rP?Q?AR&*EV=j5~1M<&6;cC;l_-cCZ_JBeK*cU?~#A+2vRmSuA|=NcGRb9 zmSvwae0H|Cu`q~uaeH4n%4qPZgvs%=kYMG`NrTzJh&rD;Y>GG-w;gZfW-k( zsXY`IrJiy%;uYU-|3`DqBq5Tv5kOzyP8uK}^#3{~T`kS*%ozV3ng4b;)0T7C;K1tn zrGeCOxcIW+7SSPgxq7u+0*}%v65AxIV@st(bVk+#f92HYXS7u}2y@voSXV6wdpZA} zVUOQ}aB6@>y%s^GVoPeWdIGPqb5l@HBeW z>=pPiyo|F8@`6CNC~?(Hy>GKptJelo3x(+cCD}Gp+t+dggRD!P+(sWt+$#!tIN6SD zMu2t~A1#9r2$`@UhU=aaWd1&sv?68{6@cag}n73YE?Lp!7-M`3}6^8!~5Rql((0#%)yMd5~Bh9wSm zhB?37=bdMxeUTM~rEb7`w>JuU^O@iR5eiemp*gdROhc3MTy5c^WY$+Fl9)0^4ATNg zLgnSui>57Tv{guBoIKHCu;O}`B|$O60Xc!FBSG0Q#Q zpAR-tXZkB881=ur94#G;))Ktyg7rebJE43WzcPOKyiotXc>d;)hIXASY=NW5bU`AQY)4WE6B8c`rs(2|m{0Ns8pZx; zYm})ZF9E{Wmj~)pPYmf!HFcV~ni!LVF~J}r-FUkEeKxZVJSh)?FBm>jF zFWgVRUVWBSYRrymQ&{Y4>C`gbXfRv}GYQ%Q-jE0JZ-z{3nyrLpCm~b2`0`Sbv_7xk zxQ)1ZGSkFsH@#EvVNatSxd8rsFBTP|)sg~D{)&@2&y<+pkNvQY*m%tb;jKZF6}%{G z^8pwabfxYP*>R|Xp|2Ih=AN17-&O_Gd+$v&7 zI-HcZq3htMn=x`WxmGx5$#)pZSm00FYrUQnr5TRLiiH3oK1`|E*2w@@B#TblJeX$F zFjPpCr@Ng?|DDF5?4jfI9W5mV0h9gVmjn+Xn$BYQ^3ud{aDKu4ca{B=q^@?F#l>aH zV)3gxt8%4qECtC}>4P-S!{1j1XUNe-1G3pKhv^C_lGJjII98O6C@60Tq z*+n1XOZYs3v=eGnBPZ1FwAl8~&skrBkN%3ce|2*yCpN;5eTkuWVMcTGC$BPX479c{+}?XUQhq!X)ltOw;VfW~^li!;>}%s^#|4XX;-*!=lD`a}1K=^V6ZsWlvZV1oH=sJZ185$;sV{TW-CLp9mUU1mc~4x>GmpqAmO?N9p^=_U6(DA-lo zMA_h}bzv?HC%A9>t2FmP%7O#{zDHK)=VPW!XBPl#M785UL*rG zzbXn$oyK_rM1LDrY=9-5S7k9#&t;{k>zl!oS{4f&tBSdJghN-5w24+4;BDg^w>`B1B8%`N4`}| z%Eb}J>q=an@YnsZ;5}0CMX(TLRt=J+iiL!hTbnyLu>vS2&G9$?cv36;N!JZT!z)E_S|%m2E;4v2$f570G_5jt@>8=N7BJ z_Q^yoPEEApOy|HwFV}@%`mNhdEpNj`g-Ed5nMxh1$LW#i)Y6DjCWE*&8BB8A8m^5k zW-~iJ=AV0sJ1JH0#7XasY>Ti6pttLtGP(lsJ8b;M7-^b1QB1f(AJgjDBKnW9S0!hV zKGfyZWXn6%1>RTQLH=_%IY_5gy70m8BVL--%be>=hd9o6i(diy{oG_h|z19$u5 z%z0pzXkn5-)HX}fdid^s7>g! zdGkZEx_a5!NXK|;c=)Zrx!VKDM@hI`zwS7VRxdy>AduY=9Hmd+o^EzoOtp|o+H-nB z91ZH@j%N!@_qpywV$f_cpd^_%VNq1+b;4$!RpxJ(ZOtwFeJ-r-ol?Pgaoy(dL^d$C zrUF5Ay=ZaL=6fItth)2uF=nRCYndyPY1*o6fwBlzS(LAn(Wt&V+#lZZZ{WY*ZUPgw z5yH`2IIaVAN_Rx)j%B8n4?cdSo>E-?QifhbLHRM;<|}CRx%Uw}^NPGN4~{}pTS}$L zvrc)tx-OX>Wy>4Q88+~cvaflQRC{PQRX(jji%04;Gd%wlf7etae3w~TWtcVC7E+}$ zukek91Lojv-YrXU%S7F&t2T@>tb8{D7N)oZ-6j~RcH>aoi9&H7oI;a;O+#_+a%5S( zPO0BXWhtMTRISfaLMnag!ueh}GG8=ICSr=1mB4}8n1yx*BdjcdTZWU1`+PY`4xE!* z>MBHmqf^0e=f^|3pBFnGG$XZddLY#}ZLI~^5AYbv2pA_RXonR#TJG<^pQekr(Z6lU zZwP?zP)KlW#$1JWtLs*vz9DGr&7CdJe;wv?Ff2eoik48Y83ETtQj1saD$SL=&~K(} zlPvbDf9ojj=KQ8GS$||oO*brqz9GcYQgF$drri=VOCSFmcAfanSyC~*5R-x`^Tz_2 zoFsOZXJ5L)ch1`e3AHS2M{LiIpU7<3<3J3$;Pv0a=BW_W+u z!S1|mRt_$FoH!gV?j8apu%f>1 zFL%9L*XFxD0UkX%*2L@&d(Q*g_S(8U6AQx{Y>dS|KGw?`h^On(C*(NwQvz!#?0(g|g1SKGmV9~HfNUU$!`OpkNZ#TD! zpcRAS4Srm1t-beT-EX;c(;Si(&dG%gxzci6T|?ZDDS1+a~Uu%+t2U~=Q3`vqF>bvT_tF`*$U5N>|f zl1>9=K_Cink1^7A-1t_Y8{lu6Nx-fav--1iq45_#MRSOa1IDJ4Rw}#F?s$?J)!5kO zX`M47`>$L);#!Gw)l*Gt751$WCdR1H0|HLJWm+=g8IN5cLP?!%4}Fg;WJU_F<%Ia@ zTAuF-Y>ZI7MVZ2F(lvP1phlV-=IyK5qWEfhC?JMo9T}$pZW!t@oS>~Xv%PU%sTIJ7 z+CIv-VPpKXY^Z0J%#(U$3q|iZ!uGnAfbIox5TAPo{RG2Kh`=XYAN>UTjAc+nhmlL0 zno(hQ%T>*9Q;ZXes?jllKh_vuiz@PihTWn@1uBVW>G$S#-DTKO-y_F%ns^ z_%Oq(^~7SkX-X8MQnpNr*E{)BS`R&*;uFcScuNGbg`KR+Ecv?h64zk>QdRWup@gUI za8oO5+)Utb6f78&5I+AFQqZI!2xU?LI5QlHXV-2hkT%!@jO8usH$l*Kh!t)$Kr7S; zPqVKA+0m77HA)&>xC=p&7|e;@T_+mxU=}}(*v2?{WcyHAkd#XREZhE)asX@M7r%mjz~=%c!<++o6;XV!@n4u z;Hpu53SToL?`}yM)SR43lmA_Nz?$FsV{Ox9+jiUf<2HiAwKee7Z)5ywpC1yn zHS^+_|M1D#!SN?~cO~x6SpRRei@3EZo)8z!K)`{+OzTYjindrbX{Ke8L#(FQ&hTa- z)Th{AZnhIvWNL;HCvUKSp6}X}cK{k+2z#&Bth-&~suGcvCtPIJT=H~ioLy23Q~Cq?6tjG> ztj@o&o-_EFDCc2*Z>xgrQvsIvr%M z!Ca)f{uw8T?lw~N#};<9{&v8v0>~wT=&N8$^Y3mTSj>49LS;XuwZ4Tl_Zbs$#2XX} zNJPg8Ex%?TB4#f$+pC6E2lO=rjvB+9)7||nwW2vx!{Sc@dz)FJR@}hwYl#1~WUg+_ zq8`Br<-?LQU&u*x@BFk%;a_5EMBfLi+EWv*n25ZQ;L<`?WqPuhD= z>t5oGe{!ime(J>SX@{Rp;hgsNuJWArbG~QR3*T;El9tvhGu1Zp)08>8mz~>FeeF%t zq3Sh9w@tcaR9#u>`}UFQkE*+J2czGAUO(lDM{x1!SJ&F*>YiNO`dY5K=JB%S^Xi`6 zd_J#!Ve#o})8pz=Z?9gz_vf|S*7qv6XFp%pZ+GwW$$PcG?fc>hmY3pkNx$x-~RuiQo{qhQ|vNgZ?LqfwkTIci61r#Zk+hxaZ%~v zF0q%ftK0g|M^B!VcymK#_4f&!KhG5_zdGW)a;9+lH(x7%?_jOnTMym(ADqhEs`|=` z@1;zhg>rh!&w{63d?g$Bmo>3TWh`jKO8htO_;$!Xz?+dtgc&qE&cRST%RFLj(9(%h zfi2Wiz%e&aw*v+mfMN^`(aylZ;MBa5_>jti)Z$oB>kQq1N;PkXA3&w|faA#AFx^19 zf$ - Nil - case Some(Communities(seq)) => - seq - } - } - - def hasCommunity(maybeCommunities: Option[Communities]): Boolean = { - maybeCommunities.exists(_.communityIds.nonEmpty) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ca52dcbe78e5bef615ffc4a7d199af6e6267422 GIT binary patch literal 37353 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.scala deleted file mode 100644 index cb0ea84fb..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/ConversationControls.scala +++ /dev/null @@ -1,112 +0,0 @@ -package com.twitter.tweetypie -package util - -import com.twitter.tweetypie.thriftscala._ - -object ConversationControls { - object Create { - def byInvitation( - inviteViaMention: Option[Boolean] = None - ): TweetCreateConversationControl.ByInvitation = TweetCreateConversationControl.ByInvitation( - TweetCreateConversationControlByInvitation(inviteViaMention = inviteViaMention) - ) - - def community( - inviteViaMention: Option[Boolean] = None - ): TweetCreateConversationControl.Community = TweetCreateConversationControl.Community( - TweetCreateConversationControlCommunity(inviteViaMention = inviteViaMention) - ) - - def followers( - inviteViaMention: Option[Boolean] = None - ): TweetCreateConversationControl.Followers = TweetCreateConversationControl.Followers( - TweetCreateConversationControlFollowers(inviteViaMention = inviteViaMention) - ) - } - - object Scenario { - case class CommonScenario( - createConversationControl: TweetCreateConversationControl, - descriptionSuffix: String, - expectedConversationControl: (UserId, Seq[UserId]) => ConversationControl, - inviteViaMention: Option[Boolean]) - - def mkCommunityScenario(inviteViaMention: Option[Boolean]): CommonScenario = - CommonScenario( - Create.community(inviteViaMention = inviteViaMention), - "community", - expectedConversationControl = (authorId, userIds) => { - community(userIds, authorId, inviteViaMention) - }, - inviteViaMention - ) - - def mkByInvitationScenario(inviteViaMention: Option[Boolean]): CommonScenario = - CommonScenario( - Create.byInvitation(inviteViaMention = inviteViaMention), - "invited users", - expectedConversationControl = (authorId, userIds) => { - byInvitation(userIds, authorId, inviteViaMention) - }, - inviteViaMention - ) - - def mkFollowersScenario(inviteViaMention: Option[Boolean]): CommonScenario = - CommonScenario( - Create.followers(inviteViaMention = inviteViaMention), - "followers", - expectedConversationControl = (authorId, userIds) => { - followers(userIds, authorId, inviteViaMention) - }, - inviteViaMention - ) - - val communityScenario = mkCommunityScenario(None) - val communityInviteViaMentionScenario = mkCommunityScenario(Some(true)) - - val byInvitationScenario = mkByInvitationScenario(None) - val byInvitationInviteViaMentionScenario = mkByInvitationScenario(Some(true)) - - val followersScenario = mkFollowersScenario(None) - val followersInviteViaMentionScenario = mkFollowersScenario(Some(true)) - } - - def byInvitation( - invitedUserIds: Seq[UserId], - conversationTweetAuthorId: UserId, - inviteViaMention: Option[Boolean] = None - ): ConversationControl = - ConversationControl.ByInvitation( - ConversationControlByInvitation( - conversationTweetAuthorId = conversationTweetAuthorId, - invitedUserIds = invitedUserIds, - inviteViaMention = inviteViaMention - ) - ) - - def community( - invitedUserIds: Seq[UserId], - conversationTweetAuthorId: UserId, - inviteViaMention: Option[Boolean] = None - ): ConversationControl = - ConversationControl.Community( - ConversationControlCommunity( - conversationTweetAuthorId = conversationTweetAuthorId, - invitedUserIds = invitedUserIds, - inviteViaMention = inviteViaMention - ) - ) - - def followers( - invitedUserIds: Seq[UserId], - conversationTweetAuthorId: UserId, - inviteViaMention: Option[Boolean] = None - ): ConversationControl = - ConversationControl.Followers( - ConversationControlFollowers( - conversationTweetAuthorId = conversationTweetAuthorId, - invitedUserIds = invitedUserIds, - inviteViaMention = inviteViaMention - ) - ) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..6883825a9f6288e796e504ac522d67ef99e6a1d4 GIT binary patch literal 38569 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 GXa5He^Etf$ literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.scala deleted file mode 100644 index 7135e9538..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/EditControlUtil.scala +++ /dev/null @@ -1,174 +0,0 @@ -package com.twitter.tweetypie.util - -import com.twitter.servo.util.Gate -import com.twitter.tweetypie.util.TweetEditFailure.TweetEditInvalidEditControlException -import com.twitter.tweetypie.util.TweetEditFailure.TweetEditUpdateEditControlException -import com.twitter.tweetypie.thriftscala.EditControl -import com.twitter.tweetypie.thriftscala.EditControlEdit -import com.twitter.tweetypie.thriftscala.EditControlInitial -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.util.Try -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Time -import com.twitter.util.Duration - -object EditControlUtil { - - val maxTweetEditsAllowed = 5 - val oldEditTimeWindow = Duration.fromMinutes(30) - val editTimeWindow = Duration.fromMinutes(60) - - def editControlEdit( - initialTweetId: TweetId, - editControlInitial: Option[EditControlInitial] = None - ): EditControl.Edit = - EditControl.Edit( - EditControlEdit(initialTweetId = initialTweetId, editControlInitial = editControlInitial)) - - // EditControl for the tweet that is not an edit, that is, any regular tweet we create - // that can, potentially, be edited later. - def makeEditControlInitial( - tweetId: TweetId, - createdAt: Time, - setEditWindowToSixtyMinutes: Gate[Unit] = Gate(_ => false) - ): EditControl.Initial = { - val editWindow = if (setEditWindowToSixtyMinutes()) editTimeWindow else oldEditTimeWindow - val initial = EditControlInitial( - editTweetIds = Seq(tweetId), - editableUntilMsecs = Some(createdAt.plus(editWindow).inMilliseconds), - editsRemaining = Some(maxTweetEditsAllowed), - isEditEligible = defaultIsEditEligible, - ) - EditControl.Initial(initial) - } - - // Returns if a given latestTweetId is the latest edit in the EditControl - def isLatestEdit( - tweetEditControl: Option[EditControl], - latestTweetId: TweetId - ): Try[Boolean] = { - tweetEditControl match { - case Some(EditControl.Initial(initial)) => - isLatestEditFromEditControlInitial(Some(initial), latestTweetId) - case Some(EditControl.Edit(edit)) => - isLatestEditFromEditControlInitial( - edit.editControlInitial, - latestTweetId - ) - case _ => Throw(TweetEditInvalidEditControlException) - } - } - - // Returns if a given latestTweetId is the latest edit in the EditControlInitial - private def isLatestEditFromEditControlInitial( - initialTweetEditControl: Option[EditControlInitial], - latestTweetId: TweetId - ): Try[Boolean] = { - initialTweetEditControl match { - case Some(initial) => - Return(latestTweetId == initial.editTweetIds.last) - case _ => Throw(TweetEditInvalidEditControlException) - } - } - - /* Create an updated edit control for an initialTweet given the id of the new edit */ - def editControlForInitialTweet( - initialTweet: Tweet, - newEditId: TweetId - ): Try[EditControl.Initial] = { - initialTweet.editControl match { - case Some(EditControl.Initial(initial)) => - Return(EditControl.Initial(plusEdit(initial, newEditId))) - - case Some(EditControl.Edit(_)) => Throw(TweetEditUpdateEditControlException) - - case _ => - initialTweet.coreData match { - case Some(coreData) => - Return( - makeEditControlInitial( - tweetId = initialTweet.id, - createdAt = Time.fromMilliseconds(coreData.createdAtSecs * 1000), - setEditWindowToSixtyMinutes = Gate(_ => true) - ) - ) - case None => Throw(new Exception("Tweet Missing Required CoreData")) - } - } - } - - def updateEditControl(tweet: Tweet, newEditId: TweetId): Try[Tweet] = - editControlForInitialTweet(tweet, newEditId).map { editControl => - tweet.copy(editControl = Some(editControl)) - } - - def plusEdit(initial: EditControlInitial, newEditId: TweetId): EditControlInitial = { - val newEditTweetIds = (initial.editTweetIds :+ newEditId).distinct.sorted - val editsCount = newEditTweetIds.size - 1 // as there is the original tweet ID there too. - initial.copy( - editTweetIds = newEditTweetIds, - editsRemaining = Some(maxTweetEditsAllowed - editsCount), - ) - } - - // The ID of the initial Tweet if this is an edit - def getInitialTweetIdIfEdit(tweet: Tweet): Option[TweetId] = tweet.editControl match { - case Some(EditControl.Edit(edit)) => Some(edit.initialTweetId) - case _ => None - } - - // If this is the first tweet in an edit chain, return the same tweet id - // otherwise return the result of getInitialTweetId - def getInitialTweetId(tweet: Tweet): TweetId = - getInitialTweetIdIfEdit(tweet).getOrElse(tweet.id) - - def isInitialTweet(tweet: Tweet): Boolean = - getInitialTweetId(tweet) == tweet.id - - // Extracted just so that we can easily track where the values of isEditEligible is coming from. - private def defaultIsEditEligible: Option[Boolean] = Some(true) - - // returns true if it's an edit of a Tweet or an initial Tweet that's been edited - def isEditTweet(tweet: Tweet): Boolean = - tweet.editControl match { - case Some(eci: EditControl.Initial) if eci.initial.editTweetIds.size <= 1 => false - case Some(_: EditControl.Initial) | Some(_: EditControl.Edit) | Some( - EditControl.UnknownUnionField(_)) => - true - case None => false - } - - // returns true if editControl is from an edit of a Tweet - // returns false for any other state, including edit intial. - def isEditControlEdit(editControl: EditControl): Boolean = { - editControl match { - case _: EditControl.Edit | EditControl.UnknownUnionField(_) => true - case _ => false - } - } - - def getEditTweetIds(editControl: Option[EditControl]): Try[Seq[TweetId]] = { - editControl match { - case Some(EditControl.Edit(EditControlEdit(_, Some(eci)))) => - Return(eci.editTweetIds) - case Some(EditControl.Initial(initial)) => - Return(initial.editTweetIds) - case _ => - Throw(new Exception(s"EditControlInitial not found in $editControl")) - } - } -} - -object TweetEditFailure { - abstract class TweetEditException(msg: String) extends Exception(msg) - - case object TweetEditGetInitialEditControlException - extends TweetEditException("Initial EditControl not found") - - case object TweetEditInvalidEditControlException - extends TweetEditException("Invalid EditControl for initial_tweet") - - case object TweetEditUpdateEditControlException - extends TweetEditException("Invalid Edit Control Update") -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/RetryPolicyBuilder.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/RetryPolicyBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..a0411e8caa05231e9403154007c46a3ae8255271 GIT binary patch literal 37010 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 true - } - - /** - * Retry on com.twitter.util.TimeoutException - */ - def timeouts[A](backoffs: Stream[Duration]): RetryPolicy[Try[A]] = - RetryPolicy.backoff[Try[A]](Backoff.fromStream(backoffs)) { - case Throw(_: TimeoutException) => true - } - - /** - * Retry on com.twitter.finagle.service.RetryableWriteExceptions - */ - def writes[A](backoffs: Stream[Duration]): RetryPolicy[Try[A]] = - RetryPolicy.backoff[Try[A]](Backoff.fromStream(backoffs)) { - case Throw(RetryableWriteException(_)) => true - } - - /** - * Retry on com.twitter.servo.exception.thriftscala.ServerError - */ - def servoServerError[A](backoffs: Stream[Duration]): RetryPolicy[Try[A]] = - RetryPolicy.backoff[Try[A]](Backoff.fromStream(backoffs)) { - case Throw(ServerError(_)) => true - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/StitchUtils.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/StitchUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c2da950d97a550b9f23b53f1f57f6b405d4c1a6 GIT binary patch literal 37222 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 Stitch[T]): Stitch[T] = { - Stitch - .time(s) - .map { - case (res, duration) => - latencyStat.add(duration.inMillis) - res - } - .lowerFromTry - } - - def observe[T](statsReceiver: StatsReceiver, apiName: String): Stitch[T] => Stitch[T] = { - val stats = statsReceiver.scope(apiName) - - val requests = stats.counter("requests") - val success = stats.counter("success") - val latencyStat = stats.stat("latency_ms") - - val exceptionCounter = - new servo.util.ExceptionCounter(stats, "failures") - - stitch => - trackLatency(latencyStat, stitch) - .respond { - case Return(_) => - requests.incr() - success.incr() - - case Throw(e) => - exceptionCounter(e) - requests.incr() - } - } - - def translateExceptions[T]( - stitch: Stitch[T], - translateException: PartialFunction[Throwable, Throwable] - ): Stitch[T] = - stitch.rescue { - case t if translateException.isDefinedAt(t) => - Stitch.exception(translateException(t)) - case t => Stitch.exception(t) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/StringLiteral.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/StringLiteral.docx new file mode 100644 index 0000000000000000000000000000000000000000..7db5f1626269c5408298ccfb69ee777f930267b9 GIT binary patch literal 37154 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 String) { - private[this] val ControlLimit = ' ' - private[this] val PrintableLimit = '\u007e' - private[this] val Specials = - Map('\n' -> 'n', '\r' -> 'r', '\t' -> 't', '"' -> '"', '\'' -> '\'', '\\' -> '\\') - - def apply(str: String): String = { - val s = new StringBuilder(str.length) - s.append('"') - var i = 0 - while (i < str.length) { - val c = str(i) - Specials.get(c) match { - case None => - if (c >= ControlLimit && c <= PrintableLimit) s.append(c) - else s.append("\\u%04x".format(c.toInt)) - case Some(special) => s.append('\\').append(special) - } - i += 1 - } - s.append('"').result - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.docx new file mode 100644 index 0000000000000000000000000000000000000000..3b07e09b6e9366f831a847322fa2a5ff6632ef49 GIT binary patch literal 37332 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.scala deleted file mode 100644 index 643971969..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/Takedowns.scala +++ /dev/null @@ -1,49 +0,0 @@ -package com.twitter.tweetypie.util - -import com.twitter.takedown.util.TakedownReasons -import com.twitter.takedown.util.TakedownReasons.CountryCode -import com.twitter.tseng.withholding.thriftscala.TakedownReason -import com.twitter.tseng.withholding.thriftscala.UnspecifiedReason -import com.twitter.tweetypie.thriftscala.Tweet - -/** - * Contains tweetypie-specific utils for working with TakedownReasons. - */ -object Takedowns { - - type CountryCode = String - - /** - * Take a list of [[TakedownReason]] and return values to be saved on the [[Tweet]] in fields - * tweetypieOnlyTakedownCountryCode and tweetypieOnlyTakedownReason. - * - * - tweetypieOnlyTakedownCountryCode contains the country_code of all UnspecifiedReasons - * - tweetypieOnlyTakedownReason contains all other reasons - */ - def partitionReasons(reasons: Seq[TakedownReason]): (Seq[String], Seq[TakedownReason]) = { - val (unspecifiedReasons, specifiedReasons) = reasons.partition { - case TakedownReason.UnspecifiedReason(UnspecifiedReason(_)) => true - case _ => false - } - val unspecifiedCountryCodes = unspecifiedReasons.collect(TakedownReasons.reasonToCountryCode) - (unspecifiedCountryCodes, specifiedReasons) - } - - def fromTweet(t: Tweet): Takedowns = - Takedowns( - Seq - .concat( - t.tweetypieOnlyTakedownCountryCodes - .getOrElse(Nil).map(TakedownReasons.countryCodeToReason), - t.tweetypieOnlyTakedownReasons.getOrElse(Nil) - ).toSet - ) -} - -/** - * This class is used to ensure the caller has access to both the full list of reasons as well - * as the backwards-compatible list of country codes. - */ -case class Takedowns(reasons: Set[TakedownReason]) { - def countryCodes: Set[CountryCode] = reasons.collect(TakedownReasons.reasonToCountryCode) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TransientContextUtil.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TransientContextUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..f318dd080c237147caf8b9e9a17c4bfc8c73575f GIT binary patch literal 36899 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 m9WQkK= _.toString), // "true" or "false" - context.periscopeCreatorId.map(PeriscopeCreatorId -> _.toString) // userId - ) - .toMap -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.docx new file mode 100644 index 0000000000000000000000000000000000000000..c4944a416b88c99443db8ef21fc723b26f37155b GIT binary patch literal 39399 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.scala deleted file mode 100644 index 06295fa25..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetCreationLock.scala +++ /dev/null @@ -1,203 +0,0 @@ -package com.twitter.tweetypie.util - -import com.twitter.conversions.DurationOps._ -import com.twitter.logging.Logger -import com.twitter.mediaservices.commons.mediainformation.thriftscala.UserDefinedProductMetadata -import com.twitter.scrooge.BinaryThriftStructSerializer -import com.twitter.servo.cache.ScopedCacheKey -import com.twitter.servo.util.Transformer -import com.twitter.tweetypie.thriftscala.PostTweetRequest -import com.twitter.util.Base64Long -import com.twitter.util.Time -import java.nio.ByteBuffer -import java.security.MessageDigest -import org.apache.commons.codec.binary.Base64 -import scala.collection.immutable.SortedMap - -object TweetCreationLock { - case class Key private (userId: UserId, typeCode: String, idOrMd5: String) - extends ScopedCacheKey("t", "locker", 2, Base64Long.toBase64(userId), typeCode, idOrMd5) { - def uniquenessId: Option[String] = - if (typeCode == Key.TypeCode.UniquenessId) Some(idOrMd5) else None - } - - object Key { - private[this] val log = Logger(getClass) - - object TypeCode { - val SourceTweetId = "r" - val UniquenessId = "u" - val PostTweetRequest = "p" - } - - private[this] val serializer = BinaryThriftStructSerializer(PostTweetRequest) - - // normalize the representation of no media ids. - private[util] def sanitizeMediaUploadIds(mediaUploadIds: Option[Seq[Long]]) = - mediaUploadIds.filter(_.nonEmpty) - - /** - * Request deduplication depends on the hash of a serialized Thrift value. - * - * In order to guarantee that a Map has a reproducible serialized form, - * it's necessary to fix the ordering of its keys. - */ - private[util] def sanitizeMediaMetadata( - mediaMetadata: Option[scala.collection.Map[MediaId, UserDefinedProductMetadata]] - ): Option[scala.collection.Map[MediaId, UserDefinedProductMetadata]] = - mediaMetadata.map(m => SortedMap(m.toSeq: _*)) - - /** - * Make sure to sanitize request fields with map/set since serialized - * bytes ordering is not guaranteed for same thrift values. - */ - private[util] def sanitizeRequest(request: PostTweetRequest): PostTweetRequest = - PostTweetRequest( - userId = request.userId, - text = request.text, - createdVia = "", - inReplyToTweetId = request.inReplyToTweetId, - geo = request.geo, - mediaUploadIds = sanitizeMediaUploadIds(request.mediaUploadIds), - narrowcast = request.narrowcast, - nullcast = request.nullcast, - additionalFields = request.additionalFields, - attachmentUrl = request.attachmentUrl, - mediaMetadata = sanitizeMediaMetadata(request.mediaMetadata), - conversationControl = request.conversationControl, - underlyingCreativesContainerId = request.underlyingCreativesContainerId, - editOptions = request.editOptions, - noteTweetOptions = request.noteTweetOptions - ) - - def bySourceTweetId(userId: UserId, sourceTweetId: TweetId): Key = - Key(userId, TypeCode.SourceTweetId, Base64Long.toBase64(sourceTweetId)) - - def byRequest(request: PostTweetRequest): Key = - request.uniquenessId match { - case Some(uqid) => - byUniquenessId(request.userId, uqid) - case None => - val sanitized = sanitizeRequest(request) - val sanitizedBytes = serializer.toBytes(sanitized) - val digested = MessageDigest.getInstance("SHA-256").digest(sanitizedBytes) - val base64Digest = Base64.encodeBase64String(digested) - val key = Key(request.userId, TypeCode.PostTweetRequest, base64Digest) - log.ifDebug(s"Generated key $key from request:\n${sanitized}") - key - } - - /** - * Key for tweets that have a uniqueness id set. There is only one - * namespace of uniqueness ids, across all clients. They are - * expected to be Snowflake ids, in order to avoid cache - * collisions. - */ - def byUniquenessId(userId: UserId, uniquenessId: Long): Key = - Key(userId, TypeCode.UniquenessId, Base64Long.toBase64(uniquenessId)) - } - - /** - * The state of tweet creation for a given Key (request). - */ - sealed trait State - - object State { - - /** - * There is no tweet creation currently in progress. (This can - * either be represented by no entry in the cache, or this special - * marker. This lets us use checkAndSet for deletion to avoid - * accidentally overwriting other process' values.) - */ - case object Unlocked extends State - - /** - * Some process is attempting to create the tweet. - */ - case class InProgress(token: Long, timestamp: Time) extends State - - /** - * The tweet has already been successfully created, and has the - * specified id. - */ - case class AlreadyCreated(tweetId: TweetId, timestamp: Time) extends State - - /** - * When stored in cache, each state is prefixed by a byte - * indicating the type of the entry. - */ - object TypeCode { - val Unlocked: Byte = 0.toByte - val InProgress: Byte = 1.toByte // + random long + timestamp - val AlreadyCreated: Byte = 2.toByte // + tweet id + timestamp - } - - private[this] val BufferSize = 17 // type byte + 64-bit value + 64-bit timestamp - - // Constant buffer to use for storing the serialized form on - // Unlocked. - private[this] val UnlockedBuf = Array[Byte](TypeCode.Unlocked) - - // Store the serialization function in a ThreadLocal so that we can - // reuse the buffer between invocations. - private[this] val threadLocalSerialize = new ThreadLocal[State => Array[Byte]] { - override def initialValue(): State => Array[Byte] = { - // Allocate the thread-local state - val ary = new Array[Byte](BufferSize) - val buf = ByteBuffer.wrap(ary) - - { - case Unlocked => UnlockedBuf - case InProgress(token, timestamp) => - buf.clear() - buf - .put(TypeCode.InProgress) - .putLong(token) - .putLong(timestamp.sinceEpoch.inNanoseconds) - ary - case AlreadyCreated(tweetId, timestamp) => - buf.clear() - buf - .put(TypeCode.AlreadyCreated) - .putLong(tweetId) - .putLong(timestamp.sinceEpoch.inNanoseconds) - ary - } - } - } - - /** - * Convert this State to the cache representation. - */ - private[this] def toBytes(state: State): Array[Byte] = - threadLocalSerialize.get()(state) - - /** - * Convert this byte array into a LockState. - * - * @throws RuntimeException if the buffer is not of the right size - * and format - */ - private[this] def fromBytes(bytes: Array[Byte]): State = { - val buf = ByteBuffer.wrap(bytes) - val result = buf.get() match { - case TypeCode.Unlocked => Unlocked - case TypeCode.InProgress => InProgress(buf.getLong(), buf.getLong().nanoseconds.afterEpoch) - case TypeCode.AlreadyCreated => - AlreadyCreated(buf.getLong(), buf.getLong().nanoseconds.afterEpoch) - case other => throw new RuntimeException("Invalid type code: " + other) - } - if (buf.remaining != 0) { - throw new RuntimeException("Extra data in buffer: " + bytes) - } - result - } - - /** - * How to serialize the State for storage in cache. - */ - val Serializer: Transformer[State, Array[Byte]] = - Transformer[State, Array[Byte]](tTo = toBytes _, tFrom = fromBytes _) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.docx new file mode 100644 index 0000000000000000000000000000000000000000..f2e4e97b7b0e4e7cb17320ca4f2471cf56f43a7a GIT binary patch literal 39822 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

  • *$_1F}t21{*db=Dkf=Any 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.scala deleted file mode 100644 index 6334c5d43..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetLenses.scala +++ /dev/null @@ -1,506 +0,0 @@ -package com.twitter.tweetypie.util - -import com.twitter.dataproducts.enrichments.thriftscala.ProfileGeoEnrichment -import com.twitter.expandodo.thriftscala._ -import com.twitter.mediaservices.commons.thriftscala.MediaKey -import com.twitter.mediaservices.commons.tweetmedia.thriftscala._ -import com.twitter.servo.data.Lens -import com.twitter.spam.rtf.thriftscala.SafetyLabel -import com.twitter.tseng.withholding.thriftscala.TakedownReason -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.unmentions.thriftscala.UnmentionData - -object TweetLenses { - import Lens.checkEq - - def requireSome[A, B](l: Lens[A, Option[B]]): Lens[A, B] = - checkEq[A, B]( - a => l.get(a).get, - (a, b) => l.set(a, Some(b)) - ) - - def tweetLens[A](get: Tweet => A, set: (Tweet, A) => Tweet): Lens[Tweet, A] = - checkEq[Tweet, A](get, set) - - val id: Lens[Tweet, TweetId] = - tweetLens[TweetId](_.id, (t, id) => t.copy(id = id)) - - val coreData: Lens[Tweet, Option[TweetCoreData]] = - tweetLens[Option[TweetCoreData]](_.coreData, (t, coreData) => t.copy(coreData = coreData)) - - val requiredCoreData: Lens[Tweet, TweetCoreData] = - requireSome(coreData) - - val optUrls: Lens[Tweet, Option[Seq[UrlEntity]]] = - tweetLens[Option[Seq[UrlEntity]]](_.urls, (t, urls) => t.copy(urls = urls)) - - val urls: Lens[Tweet, Seq[UrlEntity]] = - tweetLens[Seq[UrlEntity]](_.urls.toSeq.flatten, (t, urls) => t.copy(urls = Some(urls))) - - val optMentions: Lens[Tweet, Option[Seq[MentionEntity]]] = - tweetLens[Option[Seq[MentionEntity]]](_.mentions, (t, v) => t.copy(mentions = v)) - - val mentions: Lens[Tweet, Seq[MentionEntity]] = - tweetLens[Seq[MentionEntity]](_.mentions.toSeq.flatten, (t, v) => t.copy(mentions = Some(v))) - - val unmentionData: Lens[Tweet, Option[UnmentionData]] = - tweetLens[Option[UnmentionData]](_.unmentionData, (t, v) => t.copy(unmentionData = v)) - - val optHashtags: Lens[Tweet, Option[Seq[HashtagEntity]]] = - tweetLens[Option[Seq[HashtagEntity]]](_.hashtags, (t, v) => t.copy(hashtags = v)) - - val hashtags: Lens[Tweet, Seq[HashtagEntity]] = - tweetLens[Seq[HashtagEntity]](_.hashtags.toSeq.flatten, (t, v) => t.copy(hashtags = Some(v))) - - val optCashtags: Lens[Tweet, Option[Seq[CashtagEntity]]] = - tweetLens[Option[Seq[CashtagEntity]]](_.cashtags, (t, v) => t.copy(cashtags = v)) - - val cashtags: Lens[Tweet, Seq[CashtagEntity]] = - tweetLens[Seq[CashtagEntity]](_.cashtags.toSeq.flatten, (t, v) => t.copy(cashtags = Some(v))) - - val optMedia: Lens[Tweet, Option[Seq[MediaEntity]]] = - tweetLens[Option[Seq[MediaEntity]]](_.media, (t, v) => t.copy(media = v)) - - val media: Lens[Tweet, Seq[MediaEntity]] = - tweetLens[Seq[MediaEntity]](_.media.toSeq.flatten, (t, v) => t.copy(media = Some(v))) - - val mediaKeys: Lens[Tweet, Seq[MediaKey]] = - tweetLens[Seq[MediaKey]]( - _.mediaKeys.toSeq.flatten, - { - case (t, v) => t.copy(mediaKeys = Some(v)) - }) - - val place: Lens[Tweet, Option[Place]] = - tweetLens[Option[Place]]( - _.place, - { - case (t, v) => t.copy(place = v) - }) - - val quotedTweet: Lens[Tweet, Option[QuotedTweet]] = - tweetLens[Option[QuotedTweet]]( - _.quotedTweet, - { - case (t, v) => t.copy(quotedTweet = v) - }) - - val selfThreadMetadata: Lens[Tweet, Option[SelfThreadMetadata]] = - tweetLens[Option[SelfThreadMetadata]]( - _.selfThreadMetadata, - { - case (t, v) => t.copy(selfThreadMetadata = v) - }) - - val composerSource: Lens[Tweet, Option[ComposerSource]] = - tweetLens[Option[ComposerSource]]( - _.composerSource, - { - case (t, v) => t.copy(composerSource = v) - }) - - val deviceSource: Lens[Tweet, Option[DeviceSource]] = - tweetLens[Option[DeviceSource]]( - _.deviceSource, - { - case (t, v) => t.copy(deviceSource = v) - }) - - val perspective: Lens[Tweet, Option[StatusPerspective]] = - tweetLens[Option[StatusPerspective]]( - _.perspective, - { - case (t, v) => t.copy(perspective = v) - }) - - val cards: Lens[Tweet, Option[Seq[Card]]] = - tweetLens[Option[Seq[Card]]]( - _.cards, - { - case (t, v) => t.copy(cards = v) - }) - - val card2: Lens[Tweet, Option[Card2]] = - tweetLens[Option[Card2]]( - _.card2, - { - case (t, v) => t.copy(card2 = v) - }) - - val cardReference: Lens[Tweet, Option[CardReference]] = - tweetLens[Option[CardReference]]( - _.cardReference, - { - case (t, v) => t.copy(cardReference = v) - }) - - val spamLabel: Lens[Tweet, Option[SafetyLabel]] = - tweetLens[Option[SafetyLabel]]( - _.spamLabel, - { - case (t, v) => t.copy(spamLabel = v) - }) - - val lowQualityLabel: Lens[Tweet, Option[SafetyLabel]] = - tweetLens[Option[SafetyLabel]]( - _.lowQualityLabel, - { - case (t, v) => t.copy(lowQualityLabel = v) - }) - - val nsfwHighPrecisionLabel: Lens[Tweet, Option[SafetyLabel]] = - tweetLens[Option[SafetyLabel]]( - _.nsfwHighPrecisionLabel, - { - case (t, v) => t.copy(nsfwHighPrecisionLabel = v) - }) - - val bounceLabel: Lens[Tweet, Option[SafetyLabel]] = - tweetLens[Option[SafetyLabel]]( - _.bounceLabel, - { - case (t, v) => t.copy(bounceLabel = v) - }) - - val takedownCountryCodes: Lens[Tweet, Option[Seq[String]]] = - tweetLens[Option[Seq[String]]]( - _.takedownCountryCodes, - { - case (t, v) => t.copy(takedownCountryCodes = v) - }) - - val takedownReasons: Lens[Tweet, Option[Seq[TakedownReason]]] = - tweetLens[Option[Seq[TakedownReason]]]( - _.takedownReasons, - { - case (t, v) => t.copy(takedownReasons = v) - }) - - val contributor: Lens[Tweet, Option[Contributor]] = - tweetLens[Option[Contributor]]( - _.contributor, - { - case (t, v) => t.copy(contributor = v) - }) - - val mediaTags: Lens[Tweet, Option[TweetMediaTags]] = - tweetLens[Option[TweetMediaTags]]( - _.mediaTags, - { - case (t, v) => t.copy(mediaTags = v) - }) - - val mediaTagMap: Lens[Tweet, Map[MediaId, Seq[MediaTag]]] = - tweetLens[Map[MediaId, Seq[MediaTag]]]( - _.mediaTags.map { case TweetMediaTags(tagMap) => tagMap.toMap }.getOrElse(Map.empty), - (t, v) => { - val cleanMap = v.filter { case (_, tags) => tags.nonEmpty } - t.copy(mediaTags = if (cleanMap.nonEmpty) Some(TweetMediaTags(cleanMap)) else None) - } - ) - - val escherbirdEntityAnnotations: Lens[Tweet, Option[EscherbirdEntityAnnotations]] = - tweetLens[Option[EscherbirdEntityAnnotations]]( - _.escherbirdEntityAnnotations, - { - case (t, v) => t.copy(escherbirdEntityAnnotations = v) - }) - - val communities: Lens[Tweet, Option[Communities]] = - tweetLens[Option[Communities]]( - _.communities, - { - case (t, v) => t.copy(communities = v) - }) - - val tweetypieOnlyTakedownCountryCodes: Lens[Tweet, Option[Seq[String]]] = - tweetLens[Option[Seq[String]]]( - _.tweetypieOnlyTakedownCountryCodes, - { - case (t, v) => t.copy(tweetypieOnlyTakedownCountryCodes = v) - }) - - val tweetypieOnlyTakedownReasons: Lens[Tweet, Option[Seq[TakedownReason]]] = - tweetLens[Option[Seq[TakedownReason]]]( - _.tweetypieOnlyTakedownReasons, - { - case (t, v) => t.copy(tweetypieOnlyTakedownReasons = v) - }) - - val profileGeo: Lens[Tweet, Option[ProfileGeoEnrichment]] = - tweetLens[Option[ProfileGeoEnrichment]]( - _.profileGeoEnrichment, - (t, v) => t.copy(profileGeoEnrichment = v) - ) - - val visibleTextRange: Lens[Tweet, Option[TextRange]] = - tweetLens[Option[TextRange]]( - _.visibleTextRange, - { - case (t, v) => t.copy(visibleTextRange = v) - }) - - val selfPermalink: Lens[Tweet, Option[ShortenedUrl]] = - tweetLens[Option[ShortenedUrl]]( - _.selfPermalink, - { - case (t, v) => t.copy(selfPermalink = v) - }) - - val extendedTweetMetadata: Lens[Tweet, Option[ExtendedTweetMetadata]] = - tweetLens[Option[ExtendedTweetMetadata]]( - _.extendedTweetMetadata, - { - case (t, v) => t.copy(extendedTweetMetadata = v) - }) - - object TweetCoreData { - val userId: Lens[TweetCoreData, UserId] = checkEq[TweetCoreData, UserId]( - _.userId, - { (c, v) => - // Pleases the compiler: https://github.com/scala/bug/issues/9171 - val userId = v - c.copy(userId = userId) - }) - val text: Lens[TweetCoreData, String] = checkEq[TweetCoreData, String]( - _.text, - { (c, v) => - // Pleases the compiler: https://github.com/scala/bug/issues/9171 - val text = v - c.copy(text = text) - }) - val createdAt: Lens[TweetCoreData, TweetId] = - checkEq[TweetCoreData, Long](_.createdAtSecs, (c, v) => c.copy(createdAtSecs = v)) - val createdVia: Lens[TweetCoreData, String] = - checkEq[TweetCoreData, String]( - _.createdVia, - { - case (c, v) => c.copy(createdVia = v) - }) - val hasTakedown: Lens[TweetCoreData, Boolean] = - checkEq[TweetCoreData, Boolean]( - _.hasTakedown, - { - case (c, v) => c.copy(hasTakedown = v) - }) - val nullcast: Lens[TweetCoreData, Boolean] = - checkEq[TweetCoreData, Boolean]( - _.nullcast, - { - case (c, v) => c.copy(nullcast = v) - }) - val nsfwUser: Lens[TweetCoreData, Boolean] = - checkEq[TweetCoreData, Boolean]( - _.nsfwUser, - { - case (c, v) => c.copy(nsfwUser = v) - }) - val nsfwAdmin: Lens[TweetCoreData, Boolean] = - checkEq[TweetCoreData, Boolean]( - _.nsfwAdmin, - { - case (c, v) => c.copy(nsfwAdmin = v) - }) - val reply: Lens[TweetCoreData, Option[Reply]] = - checkEq[TweetCoreData, Option[Reply]]( - _.reply, - { - case (c, v) => c.copy(reply = v) - }) - val share: Lens[TweetCoreData, Option[Share]] = - checkEq[TweetCoreData, Option[Share]]( - _.share, - { - case (c, v) => c.copy(share = v) - }) - val narrowcast: Lens[TweetCoreData, Option[Narrowcast]] = - checkEq[TweetCoreData, Option[Narrowcast]]( - _.narrowcast, - { - case (c, v) => c.copy(narrowcast = v) - }) - val directedAtUser: Lens[TweetCoreData, Option[DirectedAtUser]] = - checkEq[TweetCoreData, Option[DirectedAtUser]]( - _.directedAtUser, - { - case (c, v) => c.copy(directedAtUser = v) - }) - val conversationId: Lens[TweetCoreData, Option[ConversationId]] = - checkEq[TweetCoreData, Option[ConversationId]]( - _.conversationId, - { - case (c, v) => c.copy(conversationId = v) - }) - val placeId: Lens[TweetCoreData, Option[String]] = - checkEq[TweetCoreData, Option[String]]( - _.placeId, - { - case (c, v) => c.copy(placeId = v) - }) - val geoCoordinates: Lens[TweetCoreData, Option[GeoCoordinates]] = - checkEq[TweetCoreData, Option[GeoCoordinates]]( - _.coordinates, - (c, v) => c.copy(coordinates = v) - ) - val trackingId: Lens[TweetCoreData, Option[TweetId]] = - checkEq[TweetCoreData, Option[Long]]( - _.trackingId, - { - case (c, v) => c.copy(trackingId = v) - }) - val hasMedia: Lens[TweetCoreData, Option[Boolean]] = - checkEq[TweetCoreData, Option[Boolean]]( - _.hasMedia, - { - case (c, v) => c.copy(hasMedia = v) - }) - } - - val counts: Lens[Tweet, Option[StatusCounts]] = - tweetLens[Option[StatusCounts]]( - _.counts, - { - case (t, v) => t.copy(counts = v) - }) - - object StatusCounts { - val retweetCount: Lens[StatusCounts, Option[TweetId]] = - checkEq[StatusCounts, Option[Long]]( - _.retweetCount, - (c, retweetCount) => c.copy(retweetCount = retweetCount) - ) - - val replyCount: Lens[StatusCounts, Option[TweetId]] = - checkEq[StatusCounts, Option[Long]]( - _.replyCount, - (c, replyCount) => c.copy(replyCount = replyCount) - ) - - val favoriteCount: Lens[StatusCounts, Option[TweetId]] = - checkEq[StatusCounts, Option[Long]]( - _.favoriteCount, - { - case (c, v) => c.copy(favoriteCount = v) - }) - - val quoteCount: Lens[StatusCounts, Option[TweetId]] = - checkEq[StatusCounts, Option[Long]]( - _.quoteCount, - { - case (c, v) => c.copy(quoteCount = v) - }) - } - - val userId: Lens[Tweet, UserId] = requiredCoreData andThen TweetCoreData.userId - val text: Lens[Tweet, String] = requiredCoreData andThen TweetCoreData.text - val createdVia: Lens[Tweet, String] = requiredCoreData andThen TweetCoreData.createdVia - val createdAt: Lens[Tweet, ConversationId] = requiredCoreData andThen TweetCoreData.createdAt - val reply: Lens[Tweet, Option[Reply]] = requiredCoreData andThen TweetCoreData.reply - val share: Lens[Tweet, Option[Share]] = requiredCoreData andThen TweetCoreData.share - val narrowcast: Lens[Tweet, Option[Narrowcast]] = - requiredCoreData andThen TweetCoreData.narrowcast - val directedAtUser: Lens[Tweet, Option[DirectedAtUser]] = - requiredCoreData andThen TweetCoreData.directedAtUser - val conversationId: Lens[Tweet, Option[ConversationId]] = - requiredCoreData andThen TweetCoreData.conversationId - val placeId: Lens[Tweet, Option[String]] = requiredCoreData andThen TweetCoreData.placeId - val geoCoordinates: Lens[Tweet, Option[GeoCoordinates]] = - requiredCoreData andThen TweetCoreData.geoCoordinates - val hasTakedown: Lens[Tweet, Boolean] = requiredCoreData andThen TweetCoreData.hasTakedown - val nsfwAdmin: Lens[Tweet, Boolean] = requiredCoreData andThen TweetCoreData.nsfwAdmin - val nsfwUser: Lens[Tweet, Boolean] = requiredCoreData andThen TweetCoreData.nsfwUser - val nullcast: Lens[Tweet, Boolean] = requiredCoreData andThen TweetCoreData.nullcast - val trackingId: Lens[Tweet, Option[ConversationId]] = - requiredCoreData andThen TweetCoreData.trackingId - val hasMedia: Lens[Tweet, Option[Boolean]] = requiredCoreData andThen TweetCoreData.hasMedia - - object CashtagEntity { - val indices: Lens[CashtagEntity, (Short, Short)] = - checkEq[CashtagEntity, (Short, Short)]( - t => (t.fromIndex, t.toIndex), - (t, v) => t.copy(fromIndex = v._1, toIndex = v._2) - ) - val text: Lens[CashtagEntity, String] = - checkEq[CashtagEntity, String](_.text, (t, text) => t.copy(text = text)) - } - - object HashtagEntity { - val indices: Lens[HashtagEntity, (Short, Short)] = - checkEq[HashtagEntity, (Short, Short)]( - t => (t.fromIndex, t.toIndex), - (t, v) => t.copy(fromIndex = v._1, toIndex = v._2) - ) - val text: Lens[HashtagEntity, String] = - checkEq[HashtagEntity, String](_.text, (t, text) => t.copy(text = text)) - } - - object MediaEntity { - val indices: Lens[MediaEntity, (Short, Short)] = - checkEq[MediaEntity, (Short, Short)]( - t => (t.fromIndex, t.toIndex), - (t, v) => t.copy(fromIndex = v._1, toIndex = v._2) - ) - val mediaSizes: Lens[MediaEntity, collection.Set[MediaSize]] = - checkEq[MediaEntity, scala.collection.Set[MediaSize]]( - _.sizes, - (m, sizes) => m.copy(sizes = sizes) - ) - val url: Lens[MediaEntity, String] = - checkEq[MediaEntity, String]( - _.url, - { - case (t, v) => t.copy(url = v) - }) - val mediaInfo: Lens[MediaEntity, Option[MediaInfo]] = - checkEq[MediaEntity, Option[MediaInfo]]( - _.mediaInfo, - { - case (t, v) => t.copy(mediaInfo = v) - }) - } - - object MentionEntity { - val indices: Lens[MentionEntity, (Short, Short)] = - checkEq[MentionEntity, (Short, Short)]( - t => (t.fromIndex, t.toIndex), - (t, v) => t.copy(fromIndex = v._1, toIndex = v._2) - ) - val screenName: Lens[MentionEntity, String] = - checkEq[MentionEntity, String]( - _.screenName, - (t, screenName) => t.copy(screenName = screenName) - ) - } - - object UrlEntity { - val indices: Lens[UrlEntity, (Short, Short)] = - checkEq[UrlEntity, (Short, Short)]( - t => (t.fromIndex, t.toIndex), - (t, v) => t.copy(fromIndex = v._1, toIndex = v._2) - ) - val url: Lens[UrlEntity, String] = - checkEq[UrlEntity, String](_.url, (t, url) => t.copy(url = url)) - } - - object Contributor { - val screenName: Lens[Contributor, Option[String]] = - checkEq[Contributor, Option[String]]( - _.screenName, - (c, screenName) => c.copy(screenName = screenName) - ) - } - - object Reply { - val inReplyToScreenName: Lens[Reply, Option[String]] = - checkEq[Reply, Option[String]]( - _.inReplyToScreenName, - (c, inReplyToScreenName) => c.copy(inReplyToScreenName = inReplyToScreenName) - ) - - val inReplyToStatusId: Lens[Reply, Option[TweetId]] = - checkEq[Reply, Option[TweetId]]( - _.inReplyToStatusId, - (c, inReplyToStatusId) => c.copy(inReplyToStatusId = inReplyToStatusId) - ) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..a9d84676709ffa758d21e1e5c17eec2f0fb530f5 GIT binary patch literal 36916 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 z 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 D=c4-D literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.scala deleted file mode 100644 index 5a0bbcb2d..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetPermalinkUtil.scala +++ /dev/null @@ -1,18 +0,0 @@ -package com.twitter.tweetypie.util - -import com.twitter.tweetutil.TweetPermalink -import com.twitter.tweetypie.thriftscala._ - -object TweetPermalinkUtil { - def lastQuotedTweetPermalink(tweet: Tweet): Option[(UrlEntity, TweetPermalink)] = - lastQuotedTweetPermalink(TweetLenses.urls.get(tweet)) - - def lastQuotedTweetPermalink(urls: Seq[UrlEntity]): Option[(UrlEntity, TweetPermalink)] = - urls.flatMap(matchQuotedTweetPermalink).lastOption - - def matchQuotedTweetPermalink(entity: UrlEntity): Option[(UrlEntity, TweetPermalink)] = - for { - expanded <- entity.expanded - permalink <- TweetPermalink.parse(expanded) - } yield (entity, permalink) -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetTransformer.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/TweetTransformer.docx new file mode 100644 index 0000000000000000000000000000000000000000..5297f319c7ce7f4d47dc94b95d213a0508422b02 GIT binary patch literal 37972 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 - Some( - Geo( - latitude = coords.latitude, - longitude = coords.longitude, - geoPrecision = coords.geoPrecision, - entityId = if (coords.display) 2 else 0, - name = coreData.placeId, - place = tweet.place, - placeId = coreData.placeId, - coordinates = Some(coords) - ) - ) - case _ => - coreData.placeId match { - case None => None - case Some(_) => - Some(Geo(name = coreData.placeId, place = tweet.place, placeId = coreData.placeId)) - } - } - - Status( - id = tweet.id, - userId = coreData.userId, - text = coreData.text, - createdVia = coreData.createdVia, - createdAt = coreData.createdAtSecs, - urls = tweet.urls.getOrElse(Seq.empty), - mentions = tweet.mentions.getOrElse(Seq.empty), - hashtags = tweet.hashtags.getOrElse(Seq.empty), - cashtags = tweet.cashtags.getOrElse(Seq.empty), - media = tweet.media.getOrElse(Seq.empty), - reply = tweet.coreData.flatMap(_.reply), - directedAtUser = tweet.coreData.flatMap(_.directedAtUser), - share = tweet.coreData.flatMap(_.share), - quotedTweet = tweet.quotedTweet, - geo = toGeo, - hasTakedown = coreData.hasTakedown, - nsfwUser = coreData.nsfwUser, - nsfwAdmin = coreData.nsfwAdmin, - counts = tweet.counts, - deviceSource = tweet.deviceSource, - narrowcast = coreData.narrowcast, - takedownCountryCodes = tweet.takedownCountryCodes, - perspective = tweet.perspective, - cards = tweet.cards, - card2 = tweet.card2, - nullcast = coreData.nullcast, - conversationId = coreData.conversationId, - language = tweet.language, - trackingId = coreData.trackingId, - spamLabels = tweet.spamLabels, - hasMedia = coreData.hasMedia, - contributor = tweet.contributor, - mediaTags = tweet.mediaTags - ) - } - - def toTweet(status: Status): Tweet = { - val coreData = - TweetCoreData( - userId = status.userId, - text = status.text, - createdVia = status.createdVia, - createdAtSecs = status.createdAt, - reply = status.reply, - directedAtUser = status.directedAtUser, - share = status.share, - hasTakedown = status.hasTakedown, - nsfwUser = status.nsfwUser, - nsfwAdmin = status.nsfwAdmin, - nullcast = status.nullcast, - narrowcast = status.narrowcast, - trackingId = status.trackingId, - conversationId = status.conversationId, - hasMedia = status.hasMedia, - coordinates = toCoords(status), - placeId = status.geo.flatMap(_.placeId) - ) - - Tweet( - id = status.id, - coreData = Some(coreData), - urls = Some(status.urls), - mentions = Some(status.mentions), - hashtags = Some(status.hashtags), - cashtags = Some(status.cashtags), - media = Some(status.media), - place = status.geo.flatMap(_.place), - quotedTweet = status.quotedTweet, - takedownCountryCodes = status.takedownCountryCodes, - counts = status.counts, - deviceSource = status.deviceSource, - perspective = status.perspective, - cards = status.cards, - card2 = status.card2, - language = status.language, - spamLabels = status.spamLabels, - contributor = status.contributor, - mediaTags = status.mediaTags - ) - } - - private def toCoords(status: Status): Option[GeoCoordinates] = - status.geo.map { geo => - if (geo.coordinates.nonEmpty) geo.coordinates.get - // Status from monorail have the coordinates as the top level fields in Geo, - // while the nested struct is empty. So we need to copy from the flat fields. - else - GeoCoordinates( - latitude = geo.latitude, - longitude = geo.longitude, - geoPrecision = geo.geoPrecision, - display = geo.entityId == 2 - ) - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/AlertableExceptionLoggingFilter.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/AlertableExceptionLoggingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..d643e9507f9b21d0525830ffd764442ae846cd9c GIT binary patch literal 37461 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 - FilterReply.NEUTRAL - case _ => - FilterReply.DENY - } - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD b/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD deleted file mode 100644 index 68702d3cf..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = [ - "bazel-compatible", - "logging_impl_check_whitelisted_target", - ], - dependencies = [ - "3rdparty/jvm/ch/qos/logback:logback-classic", - "3rdparty/jvm/com/google/guava", - "finagle/finagle-memcached/src/main/scala", - "src/thrift/com/twitter/servo:servo-exception-java", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil", - "util/util-stats/src/main/scala/com/twitter/finagle/stats", - ], -) diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..d6e670d7d5e3d96fb59319721e037b8d800e2113 GIT binary patch literal 36926 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 MkO<5k$Gbs10QQXk3;+NC literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..c125af7182f21360f4fe2b1860a452ef051b7cbe GIT binary patch literal 37283 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.scala deleted file mode 100644 index fe035bddf..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/logging/OnlyImportantLogsLoggingFilter.scala +++ /dev/null @@ -1,30 +0,0 @@ -package com.twitter.tweetypie.util.logging - -import ch.qos.logback.classic.Level -import ch.qos.logback.classic.spi.ILoggingEvent -import ch.qos.logback.core.filter.Filter -import ch.qos.logback.core.spi.FilterReply - -/** - * This class is currently being used by logback to log statements from tweetypie at one level and - * log statements from other packages at another. - * - * Filters do not change the log levels of individual loggers. Filters filter out specific messages - * for specific appenders. This allows us to have a log file with lots of information you will - * mostly not need and a log file with only important information. This type of filtering cannot be - * accomplished by changing the log levels of loggers, because the logger levels are global. We want - * to change the semantics for specific destinations (appenders). - */ -class OnlyImportantLogsLoggingFilter extends Filter[ILoggingEvent] { - private[this] def notImportant(loggerName: String): Boolean = - !loggerName.startsWith("com.twitter.tweetypie") - - override def decide(event: ILoggingEvent): FilterReply = - if (!isStarted || event.getLevel.isGreaterOrEqual(Level.WARN)) { - FilterReply.NEUTRAL - } else if (notImportant(event.getLoggerName())) { - FilterReply.DENY - } else { - FilterReply.NEUTRAL - } -} diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/package.docx b/tweetypie/common/src/scala/com/twitter/tweetypie/util/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..9c2c1f0cac8de8fe2141d1af335aaad313d38769 GIT binary patch literal 36732 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/scala/com/twitter/tweetypie/util/package.scala b/tweetypie/common/src/scala/com/twitter/tweetypie/util/package.scala deleted file mode 100644 index c99d3afa7..000000000 --- a/tweetypie/common/src/scala/com/twitter/tweetypie/util/package.scala +++ /dev/null @@ -1,9 +0,0 @@ -package com.twitter.tweetypie - -package object util { - type TweetId = Long - type UserId = Long - type MediaId = Long - type ConversationId = Long - type PlaceId = String -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD b/tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD deleted file mode 100644 index 1ccf63deb..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD +++ /dev/null @@ -1,353 +0,0 @@ -create_thrift_libraries( - base_name = "media-entity", - sources = ["media_entity.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - "mediaservices/commons/src/main/thrift", - ], - export_roots = [ - "mediaservices/commons/src/main/thrift:thrift", - ], - generate_languages = [ - "go", - "java", - "lua", - "python", - "ruby", - "scala", - "strato", - ], - provides_java_name = "tweetypie-media-entity-thrift-java", - provides_scala_name = "tweetypie-media-entity-thrift-scala", -) - -create_thrift_libraries( - base_name = "edit-control", - sources = ["edit_control.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - generate_languages = [ - "go", - "java", - "lua", - "python", - "ruby", - "scala", - "strato", - ], - provides_java_name = "tweetypie-edit-control-thrift-java", - provides_scala_name = "tweetypie-edit-control-thrift-scala", -) - -create_thrift_libraries( - base_name = "api-fields", - sources = ["api_fields.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - generate_languages = [ - "go", - "java", - "lua", - "python", - "ruby", - "scala", - "strato", - ], - provides_java_name = "tweetypie-api-fields-thrift-java", - provides_scala_name = "tweetypie-api-fields-thrift-scala", -) - -create_thrift_libraries( - base_name = "note-tweet", - sources = ["note_tweet.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - generate_languages = [ - "go", - "java", - "lua", - "python", - "ruby", - "scala", - "strato", - ], - provides_java_name = "tweetypie-note-tweet-thrift-java", - provides_scala_name = "tweetypie-note-tweet-thrift-scala", -) - -create_thrift_libraries( - base_name = "tweet", - sources = [ - "creative-entity-enrichments/creative_entity_enrichments.thrift", - "geo/tweet_location_info.thrift", - "media/media_ref.thrift", - "tweet.thrift", - "unmentions/unmentions.thrift", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":api-fields", - ":edit-control", - ":media-entity", - ":note-tweet", - "mediaservices/commons/src/main/thrift", - "src/thrift/com/twitter/content-health/toxicreplyfilter", - "src/thrift/com/twitter/dataproducts:enrichments_profilegeo", - "src/thrift/com/twitter/escherbird:tweet-annotation", - "src/thrift/com/twitter/expandodo:cards", - "src/thrift/com/twitter/geoduck", - "src/thrift/com/twitter/service/scarecrow/gen:tiered-actions", - "src/thrift/com/twitter/spam/rtf:safety-label", - "src/thrift/com/twitter/timelines/self_thread:thrift", - "src/thrift/com/twitter/tseng/withholding:thrift", - "src/thrift/com/twitter/tweet_pivots:tweet-pivots", - "strato/config/src/thrift/com/twitter/strato/columns/creative_entity_enrichments", - "unified-cards/thrift/src/main/thrift:thrift-contract", - ], - export_roots = [ - ":api-fields", - ":edit-control", - ":media-entity", - ":note-tweet", - "mediaservices/commons/src/main/thrift:thrift", - "src/thrift/com/twitter/content-health/toxicreplyfilter", - "src/thrift/com/twitter/dataproducts:enrichments_profilegeo", - "src/thrift/com/twitter/escherbird:tweet-annotation", - "src/thrift/com/twitter/expandodo:cards", - "src/thrift/com/twitter/geoduck:geoduck", - "src/thrift/com/twitter/service/scarecrow/gen:tiered-actions", - "src/thrift/com/twitter/spam/rtf:safety-label", - "src/thrift/com/twitter/timelines/self_thread:thrift", - "src/thrift/com/twitter/tseng/withholding:thrift", - "src/thrift/com/twitter/tweet_pivots:tweet-pivots", - "strato/config/src/thrift/com/twitter/strato/columns/creative_entity_enrichments", - ], - generate_languages = [ - "go", - "java", - "lua", - "python", - "scala", - "strato", - ], - provides_java_name = "tweetypie-tweet-thrift-java", - provides_python_name = "tweetypie-tweet-thrift-python", - provides_scala_name = "tweetypie-tweet-thrift-scala", -) - -create_thrift_libraries( - base_name = "service", - sources = [ - "deleted_tweet.thrift", - "tweet_service.thrift", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":audit", - ":transient_context", - ":tweet", - "carousel/service/thrift:service", - "incentives/jiminy/src/main/thrift/com/twitter/incentives/jiminy:thrift", - "mediaservices/commons/src/main/thrift", - "src/thrift/com/twitter/bouncer:bounce-action-thrift", - "src/thrift/com/twitter/context:feature-context", - "src/thrift/com/twitter/servo:servo-exception", - "src/thrift/com/twitter/spam/features:safety-meta-data", - "src/thrift/com/twitter/spam/rtf:safety-label", - "src/thrift/com/twitter/spam/rtf:safety-level", - "src/thrift/com/twitter/spam/rtf:safety-result", - "src/thrift/com/twitter/tseng/withholding:thrift", - ], - export_roots = [ - ":transient_context", - ":tweet", - "carousel/service/thrift:service", - "incentives/jiminy/src/main/thrift/com/twitter/incentives/jiminy:thrift", - "src/thrift/com/twitter/bouncer:bounce-action-thrift", - "src/thrift/com/twitter/context:feature-context", - "src/thrift/com/twitter/spam/features:safety-meta-data", - "src/thrift/com/twitter/spam/rtf:safety-level", - "src/thrift/com/twitter/spam/rtf:safety-result", - ], - generate_languages = [ - "go", - "java", - "python", - "scala", - "strato", - ], - provides_java_name = "tweetypie-service-thrift-java", - provides_python_name = "tweetypie-service-thrift-python", - provides_scala_name = "tweetypie-service-thrift-scala", -) - -create_thrift_libraries( - base_name = "events", - sources = [ - "retweet_archival_event.thrift", - "tweet_events.thrift", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":audit", - ":transient_context", - ":tweet", - "src/thrift/com/twitter/gizmoduck:user-thrift", - ], - export_roots = [ - ":audit", - ":transient_context", - ":tweet", - "src/thrift/com/twitter/gizmoduck:user-thrift", - ], - generate_languages = [ - "java", - "python", - "scala", - "strato", - ], - provides_java_name = "tweetypie-events-thrift-java", - provides_scala_name = "tweetypie-events-thrift-scala", -) - -create_thrift_libraries( - base_name = "audit", - sources = ["tweet_audit.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - generate_languages = [ - "go", - "java", - "lua", - "python", - "scala", - "strato", - ], - provides_java_name = "tweetypie-audit-thrift-java", - provides_scala_name = "tweetypie-audit-thrift-scala", -) - -create_thrift_libraries( - base_name = "deprecated", - sources = ["deprecated.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":service", - ":tweet", - "mediaservices/commons/src/main/thrift", - "src/thrift/com/twitter/expandodo:cards", - "src/thrift/com/twitter/gizmoduck:user-thrift", - "tweetypie/common/src/thrift/com/twitter/tweetypie:media-entity", - ], - generate_languages = [ - "java", - "python", - "scala", - "strato", - ], - provides_java_name = "tweetypie-deprecated-thrift-java", - provides_scala_name = "tweetypie-deprecated-thrift-scala", -) - -create_thrift_libraries( - base_name = "delete_location_data", - sources = ["delete_location_data.thrift"], - tags = ["bazel-compatible"], - provides_java_name = "delete-location-data-java", - provides_scala_name = "delete-location-data-scala", -) - -create_thrift_libraries( - base_name = "transient_context", - sources = ["transient_context.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":tweet", - ], - generate_languages = [ - "go", - "java", - "lua", - "python", - "scala", - "strato", - ], - provides_java_name = "transient-context-java", - provides_scala_name = "transient-context-scala", -) - -create_thrift_libraries( - base_name = "tweet_comparison_service", - sources = ["tweet_comparison_service.thrift"], - tags = ["bazel-compatible"], - dependency_roots = [ - ":service", - "src/thrift/com/twitter/context:twitter-context", - ], - generate_languages = [ - "java", - "scala", - ], - provides_java_name = "tweet-comparison-service-thrift-java", - provides_scala_name = "tweet-comparison-service-thrift-scala", -) - -create_thrift_libraries( - base_name = "tweet_service_graphql", - sources = ["tweet_service_graphql.thrift"], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - "src/thrift/com/twitter/ads/callback:engagement_request", - "strato/config/src/thrift/com/twitter/strato/graphql", - ], - generate_languages = [ - "scala", - "strato", - ], - provides_scala_name = "tweet-service-graphql-scala", -) - -create_thrift_libraries( - base_name = "stored-tweet-info", - sources = [ - "stored_tweet_info.thrift", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":tweet", - ], - generate_languages = [ - "java", - "scala", - "strato", - ], - provides_java_name = "tweetypie-stored-tweet-info-thrift-java", - provides_scala_name = "tweetypie-stored-tweet-info-thrift-scala", -) - -create_thrift_libraries( - base_name = "tweet-service-federated", - sources = [ - "tweet_service_federated.thrift", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependency_roots = [ - ":stored-tweet-info", - ], - generate_languages = [ - "java", - "scala", - "strato", - ], - provides_java_name = "tweetypie-service-federated-thrift-java", - provides_scala_name = "tweetypie-service-federated-thrift-scala", -) diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..225a980cc68e097824d4ce1478c8c9ad672ee87d GIT binary patch literal 38174 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/api_fields.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/api_fields.thrift deleted file mode 100644 index d48cbf171..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/api_fields.thrift +++ /dev/null @@ -1,18 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.api_fields -namespace rb TweetyPie -// Specific namespace to avoid golang circular import -namespace go tweetypie.tweet - -// Structs used specifically for rendering through graphql. - -/** - * Perspective of a Tweet from the point of view of a User. - */ -struct TweetPerspective { - 1: bool favorited - 2: bool retweeted - 3: optional bool bookmarked -}(persisted='true', hasPersonalData = 'false', strato.graphql.typename='TweetPerspective') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/creative-entity-enrichments/creative_entity_enrichments.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/creative-entity-enrichments/creative_entity_enrichments.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ce072d1b94e787f93fece421df89f9e35da55b9 GIT binary patch literal 37036 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 enrichment_type_to_ref -}(persisted='true', hasPersonalData='false') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.docx new file mode 100644 index 0000000000000000000000000000000000000000..a105982ec2cf3b03d13b5a48798a6b877649eb74 GIT binary patch literal 37198 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.thrift deleted file mode 100644 index 35f68dd10..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/delete_location_data.thrift +++ /dev/null @@ -1,32 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -namespace py gen.twitter.tweetypie -namespace rb TweetyPie -namespace go tweetypie - -/** - * Event that triggers deletion of the geo information on tweets created - * at timestamp_ms or earlier. - */ -struct DeleteLocationData { - /** - * The id of the user whose tweets should have their geo information - * removed. - */ - 1: required i64 user_id (personalDataType='UserId') - - /** - * The time at which this request was initiated. Tweets by this user - * whose snowflake ids contain timestamps less than or equal to this - * value will no longer be returned with geo information. - */ - 2: required i64 timestamp_ms - - /** - * The last time this user requested deletion of location data prior - * to this request. This value may be omitted, but should be included - * if available for implementation efficiency, since it eliminates the - * need to scan tweets older than this value for geo information. - */ - 3: optional i64 last_timestamp_ms -}(persisted='true', hasPersonalData='true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..20fdb07717361c39f0f4922d2c2309f9c61cc799 GIT binary patch literal 37620 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 T1?C`7t`cNO1ZI!gJ`fK84qHe2 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.thrift deleted file mode 100644 index cedf451d5..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/deleted_tweet.thrift +++ /dev/null @@ -1,86 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.deletedtweet -namespace rb TweetyPie -namespace go tweetypie - -// Structs used for response from getDeletedTweets - -struct DeletedTweetMediaEntity { - 1: required i64 id - 2: required i8 mediaType - 3: required i16 width - 4: required i16 height -} (persisted = 'true') - -struct DeletedTweetShare { - 1: required i64 sourceStatusId - 2: required i64 sourceUserId - 3: required i64 parentStatusId -} (persisted = 'true') - -/** - * A tweet that has been soft- or hard-deleted. - * - * Originally DeletedTweet used the same field ids as tbird.Status. - * This is no longer the case. - */ -struct DeletedTweet { - // Uses the same field ids as tbird.thrift so we can easily map and add fields later - 1: required i64 id - - /** - * User who created the tweet. Only available for soft-deleted tweets. - */ - 2: optional i64 userId - - /** - * Content of the tweet. Only available for soft-deleted tweets. - */ - 3: optional string text - - /** - * When the tweet was created. Only available for soft-deleted tweets. - */ - 5: optional i64 createdAtSecs - - /** - * Retweet information if the deleted tweet was a retweet. Only available - * for soft-deleted tweets. - */ - 7: optional DeletedTweetShare share - - /** - * Media metadata if the deleted tweet included media. Only available for - * soft-deleted tweets. - */ - 14: optional list media - - /** - * The time when this tweet was deleted by a user, in epoch milliseconds, either normally (aka - * "softDelete") or via a bouncer flow (aka "bounceDelete"). - * - * This data is not available for all deleted tweets. - */ - 18: optional i64 deletedAtMsec - - /** - * The time when this tweet was permanently deleted, in epoch milliseconds. - * - * This data is not available for all deleted tweets. - */ - 19: optional i64 hardDeletedAtMsec - - /** - * The ID of the NoteTweet associated with this Tweet if one exists. This is used by safety tools - * to fetch the NoteTweet content when viewing soft deleted Tweets. - */ - 20: optional i64 noteTweetId - - /** - * Specifies if the Tweet can be expanded into the NoteTweet, or if they have the same text. Can - * be used to distinguish between Longer Tweets and RichText Tweets. - */ - 21: optional bool isExpandable -} (persisted = 'true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.docx new file mode 100644 index 0000000000000000000000000000000000000000..7575bd8c4f439006ae5dc1a6224558e3c34cde48 GIT binary patch literal 38120 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%0DL~2`*jNp3)?&Pe61IFvwLsf3}yCPB{oPd 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⩔!I=fU@k40NWH6LWJU+*GYJg+&ol^X!u~ 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 PRdRqkXddU2zW)0cH+o$3 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.thrift deleted file mode 100644 index 55cdde2d7..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/deprecated.thrift +++ /dev/null @@ -1,99 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.deprecated -namespace rb TweetyPie - -include "com/twitter/expandodo/cards.thrift" -include "com/twitter/gizmoduck/user.thrift" -include "com/twitter/tweetypie/media_entity.thrift" -include "com/twitter/tweetypie/tweet.thrift" -include "com/twitter/tweetypie/tweet_service.thrift" - -/** - * @deprecated Use Place - */ -struct Geo { - /** - * @deprecated Use coordinates.latitude - */ - 1: double latitude = 0.0 (personalDataType = 'GpsCoordinates') - - /** - * @deprecated Use coordinates.longitude - */ - 2: double longitude = 0.0 (personalDataType = 'GpsCoordinates') - - /** - * @deprecated Use coordinates.geo_precision - */ - 3: i32 geo_precision = 0 - - /** - * 0: don't show lat/long - * 2: show - * - * @deprecated - */ - 4: i64 entity_id = 0 - - /** - * @deprecated Use place_id - */ - 5: optional string name (personalDataType = 'PublishedCoarseLocationTweet') - - 6: optional tweet.Place place // provided if StatusRequestOptions.load_places is set - 7: optional string place_id // ex: ad2f50942562790b - 8: optional tweet.GeoCoordinates coordinates -}(persisted = 'true', hasPersonalData = 'true') - -/** - * @deprecated Use Tweet and APIs that accept or return Tweet. - */ -struct Status { - 1: i64 id (personalDataType = 'TweetId') - 2: i64 user_id (personalDataType = 'UserId') - 3: string text (personalDataType = 'PrivateTweets, PublicTweets') - 4: string created_via (personalDataType = 'ClientType') - 5: i64 created_at // in seconds - 6: list urls = [] - 7: list mentions = [] - 8: list hashtags = [] - 29: list cashtags = [] - 9: list media = [] - 10: optional tweet.Reply reply - 31: optional tweet.DirectedAtUser directed_at_user - 11: optional tweet.Share share - 32: optional tweet.QuotedTweet quoted_tweet - 12: optional tweet.Contributor contributor - 13: optional Geo geo - // has_takedown indicates if there is a takedown specifically on this tweet. - // takedown_country_codes contains takedown countries for both the tweet and the user, - // so has_takedown might be false while takedown_country_codes is non-empty. - 14: bool has_takedown = 0 - 15: bool nsfw_user = 0 - 16: bool nsfw_admin = 0 - 17: optional tweet.StatusCounts counts - // 18: obsoleted - 19: optional tweet.DeviceSource device_source // not set on DB failure - 20: optional tweet.Narrowcast narrowcast - 21: optional list takedown_country_codes (personalDataType = 'ContentRestrictionStatus') - 22: optional tweet.StatusPerspective perspective // not set if no user ID or on TLS failure - 23: optional list cards // only included if StatusRequestOptions.include_cards == true - // only included when StatusRequestOptions.include_cards == true - // and StatusRequestOptions.cards_platform_key is set to valid value - 30: optional cards.Card2 card2 - 24: bool nullcast = 0 - 25: optional i64 conversation_id (personalDataType = 'TweetId') - 26: optional tweet.Language language - 27: optional i64 tracking_id (personalDataType = 'ImpressionId') - 28: optional map spam_labels - 33: optional bool has_media - // obsolete 34: optional list topic_labels - // Additional fields for flexible schema - 101: optional tweet.TweetMediaTags media_tags - 103: optional tweet.CardBindingValues binding_values - 104: optional tweet.ReplyAddresses reply_addresses - 105: optional tweet.TwitterSuggestInfo twitter_suggest_info -}(persisted = 'true', hasPersonalData = 'true') - diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.docx new file mode 100644 index 0000000000000000000000000000000000000000..355adb72d2af2e50dedb2ee2b269b5116a937e74 GIT binary patch literal 37860 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 QK)FhgArY88a{EC%0QTR^@&Et; literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.thrift deleted file mode 100644 index d1eb83a33..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/edit_control.thrift +++ /dev/null @@ -1,71 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.edit_control -namespace rb TweetyPie -// Specific namespace to avoid golang circular import -namespace go tweetypie.tweet - -/** - * EditControlInitial is present on all new Tweets. Initially, edit_tweet_ids will only contain the id of the new Tweet. - * Subsequent edits will append the edited Tweet ids to edit_tweet_ids. -**/ -struct EditControlInitial { - /** - * A list of all edits of this initial Tweet, including the initial Tweet id, - * and in ascending time order (the oldest revision first). - */ - 1: required list edit_tweet_ids = [] (personalDataType = 'TweetId', strato.json.numbers.type = 'string') - /** - * Epoch timestamp in milli-seconds (UTC) after which the tweet will no longer be editable. - */ - 2: optional i64 editable_until_msecs (strato.json.numbers.type = 'string') - /** - * Number of edits that are available for this Tweet. This starts at 5 and decrements with each edit. - */ - 3: optional i64 edits_remaining (strato.json.numbers.type = 'string') - - /** - * Specifies whether the Tweet has any intrinsic properties that mean it can't be edited - * (for example, we have a business rule that poll Tweets can't be edited). - * - * If a Tweet edit expires due to time frame or number of edits, this field still is set - * to true for Tweets that could have been edited. - */ - 4: optional bool is_edit_eligible -}(persisted='true', hasPersonalData = 'true', strato.graphql.typename='EditControlInitial') - -/** - * EditControlEdit is present for any Tweets that are an edit of another Tweet. The full list of edits can be retrieved - * from the edit_control_initial field, which will always be hydrated. -**/ -struct EditControlEdit { - /** - * The id of the initial Tweet in an edit chain - */ - 1: required i64 initial_tweet_id (personalDataType = 'TweetId', strato.json.numbers.type = 'string') - /** - * This field is only used during hydration to return the EditControl of the initial Tweet for - * a subsequently edited version. - */ - 2: optional EditControlInitial edit_control_initial -}(persisted='true', hasPersonalData = 'true', strato.graphql.typename='EditControlEdit') - - -/** - * Tweet metadata about edits of a Tweet. A list of edits to a Tweet are represented as a chain of - * Tweets linked to each other using the EditControl field. - * - * EditControl can be either EditControlInitial which means that the Tweet is unedited or the first Tweet in - * an edit chain, or EditControlEdit which means it is a Tweet in the edit chain after the first - * Tweet. - */ -union EditControl { - 1: EditControlInitial initial - 2: EditControlEdit edit -}(persisted='true', hasPersonalData = 'true', strato.graphql.typename='EditControl') - - -service FederatedServiceBase { - EditControl getEditControl(1: required i64 tweetId) -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.docx new file mode 100644 index 0000000000000000000000000000000000000000..00885ce6b32521f575488f3b73f9f38a3a8cd855 GIT binary patch literal 38025 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

    Ut%@AK2&P*R*Y^n(26d~sS>bU47S~`B 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%0DEWvb1{HzKyhnX2odtvIuXHi$+KRa} z{=)rO2veN4PKsxMPCne?4<1Wc2|txBapev0iaGIb#elPt6q($9e0c02?x#?0S?am^ zTwbW;X8{w-d8p4E?dUb;@qfN4EWnQV+K}42FhlZJg`|mjy`Pj*5DhfCda5_YJP~6( zy`Kz-A@LL{A#2%LpDQ6*WP}#eK}^7~kN{{-lK^~L{k$HNomo>g%g`7L#338<6E$%%H+I5q!nKb~98@kxlR)LdEpDE9$ee@d zk&l>aA_&JEG!G(9OHapjKfhXL_iD_+k`@ugLTe<*7l8Yv^Zn{Tkkg3KCKJ>fh3e?Y zx4lK9Bsr3{tv|9O0S+R_wt~0eR|PjZ;K8+KwB#^KOGioa$`}n&gza*3{JDOG>`E_& zm$8Mz#XeVtZq-&t^ydNN1Fy4gatVVi(jXTqH6G3}N$9$Yc{lgFVGn8hBf#SaX2Zes z#nsSmjLT0I%{r`;;uD0FG)kOc?BPtsgeXC$*WjYnHEf(N`UdCFW8=A;muW

    O?H> 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 errors = [] -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.docx new file mode 100644 index 0000000000000000000000000000000000000000..f3b65efc2767df55c1342bcee465080fb65771e2 GIT binary patch literal 37642 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 qLPG_m literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.thrift deleted file mode 100644 index 942e42d35..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/transient_context.thrift +++ /dev/null @@ -1,64 +0,0 @@ -/** - * This file contains definitions for transient, passthrough structured data. - * - * If you need to add structured data that Tweetypie accepts in a request - * and passes the data through to one or more backends (eg. EventBus), this - * is the place to put it. Tweetypie may or may not inspect the data and - * alter the behavior based on it, but it won't change it. - */ - -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.transient_context -namespace rb TweetyPie -namespace go tweetypie - -include "com/twitter/tweetypie/tweet.thrift" - -enum BatchComposeMode { - /** - * This is the first Tweet in a batch. - */ - BATCH_FIRST = 1 - - /** - * This is any of the subsequent Tweets in a batch. - */ - BATCH_SUBSEQUENT = 2 -} - -/** - * Data supplied at Tweet creation time that is not served by Tweetypie, but - * is passed through to consumers of the tweet_events eventbus stream as part - * of TweetCreateEvent. - * This is different from additional_context in that Tweetypie - * inspects this data as well, and we prefer structs over strings. - * If adding a new field that will be passed through to eventbus, prefer this - * over additional_context. - */ -struct TransientCreateContext { - /** - * Indicates whether a Tweet was created using a batch composer, and if so - * position of a Tweet within the batch. - * - * A value of 'None' indicates that the tweet was not created in a batch. - * - * More info: https://docs.google.com/document/d/1dJ9K0KzXPzhk0V-Nsekt0CAdOvyVI8sH9ESEiA2eDW4/edit - */ - 1: optional BatchComposeMode batch_compose - - /** - * Indicates if the tweet contains a live Periscope streaming video. - * - * This enables Periscope LiveFollow. - */ - 2: optional bool periscope_is_live - - /** - * Indicates the userId of the live Periscope streaming video. - * - * This enables Periscope LiveFollow. - */ - 3: optional i64 periscope_creator_id (personalDataType='UserId') -}(persisted='true', hasPersonalData='true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..a828388cd7d69c39dd1880865c249d278210428b GIT binary patch literal 54406 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∓oj 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.thrift deleted file mode 100644 index bffca50c5..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet.thrift +++ /dev/null @@ -1,1652 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace py gen.twitter.tweetypie.tweet -namespace rb TweetyPie -// Specific namespace to avoid golang circular import -namespace go tweetypie.tweet - -include "com/twitter/escherbird/tweet_annotation.thrift" -include "com/twitter/expandodo/cards.thrift" -include "com/twitter/content-health/toxicreplyfilter/filtered_reply_details.thrift" -include "com/twitter/dataproducts/enrichments_profilegeo.thrift" -include "com/twitter/geoduck/public/thriftv1/geoduck_common.thrift" -include "com/twitter/mediaservices/commons/MediaCommon.thrift" -include "com/twitter/mediaservices/commons/MediaInformation.thrift" -include "com/twitter/tweetypie/api_fields.thrift" -include "com/twitter/tweetypie/edit_control.thrift" -include "com/twitter/tweetypie/media_entity.thrift" -include "com/twitter/tweetypie/note_tweet.thrift" -include "com/twitter/service/scarecrow/gen/tiered_actions.thrift" -include "com/twitter/spam/rtf/safety_label.thrift" -include "com/twitter/timelines/self_thread/self_thread.thrift" -include "com/twitter/tseng/withholding/withholding.thrift" -include "com/twitter/tweet_pivots/tweet_pivots.thrift" -include "com/twitter/tweetypie/geo/tweet_location_info.thrift" -include "com/twitter/tweetypie/media/media_ref.thrift" -include "unified_cards_contract.thrift" -include "com/twitter/tweetypie/creative-entity-enrichments/creative_entity_enrichments.thrift" -include "com/twitter/tweetypie/unmentions/unmentions.thrift" - -/** - * IDs are annotated with their corresponding space for Strato. - */ - -/** - * A Reply is data about a tweet in response to another tweet or a - * user. - * - * This struct will be present if: - * 1. This tweet is a reply to another tweet, or - * 2. This tweet is directed at a user (the tweet's text begins with - * an @mention). - */ -struct Reply { - /** - * The id of the tweet that this tweet is replying to. - * - * This field will be missing for directed-at tweets (tweets whose - * text begins with an @mention) that are not replying to another - * tweet. - */ - 1: optional i64 in_reply_to_status_id (strato.space = "Tweet", strato.name = "inReplyToStatus", personalDataType = 'TweetId', tweetEditAllowed='false') - - /** - * The user to whom this tweet is directed. - * - * If in_reply_to_status_id is set, this field is the author of that tweet. - * If in_reply_to_status_id is not set, this field is the user mentioned at - * the beginning of the tweet. - */ - 2: i64 in_reply_to_user_id (strato.space = "User", strato.name = "inReplyToUser", personalDataType = 'UserId') - - /** - * The current username of in_reply_to_user_id. - * - * This field is not set when Gizmoduck returns a failure to Tweetypie. - */ - 3: optional string in_reply_to_screen_name (personalDataType = 'Username') -}(persisted='true', hasPersonalData = 'true') - -/** - * Includes information about the user a tweet is directed at (when a tweet - * begins with @mention). - * - * Tweets with a DirectedAtUser are delivered to users who follow both the - * author and the DirectedAtUser. Normally the DirectedAtUser will be the same - * as Reply.in_reply_to_user_id, but will be different if the tweet's author - * rearranges the @mentions in a reply. - */ -struct DirectedAtUser { - 1: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - 2: string screen_name (personalDataType = 'Username') -}(persisted='true', hasPersonalData = 'true') - -/** - * A Share is data about the source tweet of a retweet. - * - * Share was the internal name for the retweet feature. - */ -struct Share { - /** - * The id of the original tweet that was retweeted. - * - * This is always a tweet and never a retweet (unlike parent_status_id). - */ - 1: i64 source_status_id (strato.space = "Tweet", strato.name = "sourceStatus", personalDataType = 'TweetId') - - /* - * The user id of the original tweet's author. - */ - 2: i64 source_user_id (strato.space = "User", strato.name = "sourceUser", personalDataType = 'UserId') - - /** - * The id of the tweet that the user retweeted. - * - * Often this is the same as source_status_id, but it is different when a - * user retweets via another retweet. For example, user A posts tweet id 1, - * user B retweets it, creating tweet 2. If user user C sees B's retweet and - * retweets it, the result is another retweet of tweet id 1, with the parent - * status id of tweet 2. - */ - 3: i64 parent_status_id (strato.space = "Tweet", strato.name = "parentStatus", personalDataType = 'TweetId') -}(persisted='true', hasPersonalData = 'true') - -/** - * A record mapping a shortened URL (usually t.co) to a long url, and a prettified - * display text. This is similar to data found in UrlEntity, and may replace that - * data in the future. - */ -struct ShortenedUrl { - /** - * Shortened t.co URL. - */ - 1: string short_url (personalDataType = 'ShortUrl') - - /** - * Original, full-length URL. - */ - 2: string long_url (personalDataType = 'LongUrl') - - /** - * Truncated version of expanded URL that does not include protocol and is - * limited to 27 characters. - */ - 3: string display_text (personalDataType = 'LongUrl') -}(persisted='true', hasPersonalData = 'true') - -/** - * A QuotedTweet is data about a tweet referenced within another tweet. - * - * QuotedTweet is included if Tweet.QuotedTweetField is requested, and the - * linked-to tweet is public and visible at the time that the linking tweet - * is hydrated, which can be during write-time or later after a cache-miss - * read. Since linked-to tweets can be deleted, and users can become - * suspended, deactivated, or protected, the presence of this value is not a - * guarantee that the quoted tweet is still public and visible. - * - * Because a tweet quoting another tweet may not require a permalink URL in - * the tweet's text, the URLs in ShortenedUrl may be useful to clients that - * require maintaining a legacy-rendering of the tweet's text with the permalink. - * See ShortenedUrl for details. Clients should avoid reading permalink whenever - * possible and prefer the QuotedTweet's tweet_id and user_id instead. - * - * we always populate the permalink on tweet hydration unless there are partial - * hydration errors or inner quoted tweet is filtered due to visibility rules. - * - */ -struct QuotedTweet { - 1: i64 tweet_id (strato.space = "Tweet", strato.name = "tweet", personalDataType = 'TweetId') - 2: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - 3: optional ShortenedUrl permalink // URLs to access the quoted-tweet -}(persisted='true', hasPersonalData = 'true') - -/** - * A Contributor is a user who has access to another user's account. - */ -struct Contributor { - 1: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - 2: optional string screen_name (personalDataType = 'Username')// not set on Gizmoduck failure -}(persisted='true', hasPersonalData = 'true') - -struct GeoCoordinates { - 1: double latitude (personalDataType = 'GpsCoordinates') - 2: double longitude (personalDataType = 'GpsCoordinates') - 3: i32 geo_precision = 0 (personalDataType = 'GpsCoordinates') - - /** - * Whether or not make the coordinates public. - * - * This parameter is needed because coordinates are not typically published - * by the author. If false: A tweet has geo coordinates shared but not make - * it public. - */ - 4: bool display = 1 -}(persisted='true', hasPersonalData = 'true') - -enum PlaceType { - UNKNOWN = 0 - COUNTRY = 1 - ADMIN = 2 - CITY = 3 - NEIGHBORHOOD = 4 - POI = 5 -} - -enum PlaceNameType { - NORMAL = 0 - ABBREVIATION = 1 - SYNONYM = 2 -} - -struct PlaceName { - 1: string name - 2: string language = "" - 3: PlaceNameType type - 4: bool preferred -}(persisted='true', hasPersonalData='false') - -/** - * A Place is the physical and political properties of a location on Earth. - */ -struct Place { - /** - * Geo service identifier. - */ - 1: string id (personalDataType = 'PublishedPreciseLocationTweet, PublishedCoarseLocationTweet') - - /** - * Granularity of place. - */ - 2: PlaceType type - - /** - * The name of this place composed with its parent locations. - * - * For example, the full name for "Brooklyn" would be "Brooklyn, NY". This - * name is returned in the language specified by - * GetTweetOptions.language_tag. - */ - 3: string full_name (personalDataType = 'InferredLocation') - - /** - * The best name for this place as determined by geoduck heuristics. - * - * This name is returned in the language specified by - * GetTweetOptions.language_tag. - * - * @see com.twitter.geoduck.util.primitives.bestPlaceNameMatchingFilter - */ - 4: string name (personalDataType = 'PublishedPreciseLocationTweet, PublishedCoarseLocationTweet') - - /** - * Arbitrary key/value data from the geoduck PlaceAttributes for this place. - */ - 5: map attributes (personalDataTypeKey = 'PostalCode') - - 7: set names - - /** - * The ISO 3166-1 alpha-2 code for the country containing this place. - */ - 9: optional string country_code (personalDataType = 'PublishedCoarseLocationTweet') - - /** - * The best name for the country containing this place as determined by - * geoduck heuristics. - * - * This name is returned in the language specified by - * GetTweetOptions.language_tag. - */ - 10: optional string country_name (personalDataType = 'PublishedCoarseLocationTweet') - - /** - * A simplified polygon that encompasses the place's geometry. - */ - 11: optional list bounding_box - - /** - * An unordered list of geo service identifiers for places that contain this - * one from the most immediate parent up to the country. - */ - 12: optional set containers (personalDataType = 'PublishedCoarseLocationTweet') - - /** - * A centroid-like coordinate that is within the geometry of the place. - */ - 13: optional GeoCoordinates centroid - - /** - * Reason this place is being suppressed from display. - * - * This field is present when we previously had a place for this ID, but are - * now choosing not to hydrate it and instead providing fake place metadata - * along with a reason for not including place information. - */ - 14: optional geoduck_common.WithheldReason withheldReason -}(persisted='true', hasPersonalData='true') - -/** - * A UrlEntity is the position and content of a t.co shortened URL in the - * tweet's text. - * - * If Talon returns an error to Tweetypie during tweet hydration, the - * UrlEntity will be omitted from the response. UrlEntities are not included - * for non-t.co-wrapped URLs found in older tweets, for spam and user safety - * reasons. -*/ -struct UrlEntity { - /** - * The position of this entity's first character, in zero-indexed Unicode - * code points. - */ - 1: i16 from_index - - /** - * The position after this entity's last character, in zero-indexed Unicode - * code points. - */ - 2: i16 to_index - - /** - * Shortened t.co URL. - */ - 3: string url (personalDataType = 'ShortUrl') - - /** - * Original, full-length URL. - * - * This field will always be present on URL entities returned by - * Tweetypie; it is optional as an implementation artifact. - */ - 4: optional string expanded (personalDataType = 'LongUrl') - - /** - * Truncated version of expanded URL that does not include protocol and is - * limited to 27 characters. - * - * This field will always be present on URL entities returned by - * Tweetypie; it is optional as an implementation artifact. - */ - 5: optional string display (personalDataType = 'LongUrl') - - 6: optional i64 click_count (personalDataType = 'CountOfTweetEntitiesClicked') -}(persisted = 'true', hasPersonalData = 'true') - -/** - * A MentionEntity is the position and content of a mention, (the "@" - * character followed by the name of another valid user) in a tweet's text. - * - * If Gizmoduck returns an error to Tweetypie during tweet hydration that - * MentionEntity will be omitted from the response. - */ -struct MentionEntity { - /** - * The position of this entity's first character ("@"), in zero-indexed - * Unicode code points. - */ - 1: i16 from_index - - /** - * The position after this entity's last character, in zero-indexed Unicode - * code points. - */ - 2: i16 to_index - - /** - * Contents of the mention without the leading "@". - */ - 3: string screen_name (personalDataType = 'Username') - - /** - * User id of the current user with the mentioned screen name. - * - * In the current implementation user id does not necessarily identify the - * user who was originally mentioned when the tweet was created, only the - * user who owns the mentioned screen name at the time of hydration. If a - * mentioned user changes their screen name and a second user takes the old - * name, this field identifies the second user. - * - * This field will always be present on mention entities returned by - * Tweetypie; it is optional as an implementation artifact. - */ - 4: optional i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - - /** - * Display name of the current user with the mentioned screen name. - * - * See user_id for caveats about which user's name is used here. This field - * will always be present on mention entities returned by Tweetypie; it is - * optional as an implementation artifact. - */ - 5: optional string name (personalDataType = 'DisplayName') - - /** - * Indicates if the user referred to by this MentionEntity has been unmentioned - * from the conversation. If this field is set to true, the fromIndex and toIndex - * fields will have a value of 0. - * - * @deprecated isUnmentioned is no longer being populated - */ - 6: optional bool isUnmentioned (personalDataType = 'ContentPrivacySettings') -}(persisted = 'true', hasPersonalData = 'true') - -/** - * A list of users that are mentioned in the tweet and have a blocking - * relationship with the tweet author. Mentions for these users will be unlinked - * in the tweet. - */ -struct BlockingUnmentions { - 1: optional list unmentioned_user_ids (strato.space = 'User', strato.name = 'users', personalDataType = 'UserId') -}(persisted = 'true', hasPersonalData = 'true', strato.graphql.typename = 'BlockingUnmentions') - -/** - * A list of users that are mentioned in the tweet and have indicated they do not want - * to be mentioned via their mention settings. Mentions for these users will be unlinked - * in the tweet by Twitter owned and operated clients. - */ -struct SettingsUnmentions { - 1: optional list unmentioned_user_ids (strato.space = 'User', strato.name = 'users', personalDataType = 'UserId') -}(persisted = 'true', hasPersonalData = 'true', strato.graphql.typename = 'SettingsUnmentions') - -/** - * A HashtagEntity is the position and content of a hashtag (a term starting - * with "#") in a tweet's text. - */ -struct HashtagEntity { - /** - * The position of this entity's first character ("#"), in zero-indexed - * Unicode code points. - */ - 1: i16 from_index - - /** - * The position after this entity's last character, in zero-indexed Unicode - * code points. - */ - 2: i16 to_index - - /** - * Contents of the hashtag without the leading "#". - */ - 3: string text (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') -}(persisted = 'true', hasPersonalData = 'true') - -/** - * A CashtagEntity is the position and content of a cashtag (a term starting - * with "$") in a tweet's text. - */ -struct CashtagEntity { - /** - * The position of this entity's first character, in zero-indexed Unicode - * code points. - */ - 1: i16 from_index - - /** - * The position after this entity's last character, in zero-indexed Unicode - * code points. - */ - 2: i16 to_index - - /** - * Contents of the cashtag without the leading "$" - */ - 3: string text (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') -}(persisted = 'true', hasPersonalData = 'true') - -enum MediaTagType { - USER = 0 - RESERVED_1 = 1 - RESERVED_2 = 2 - RESERVED_3 = 3 - RESERVED_4 = 4 -} - -struct MediaTag { - 1: MediaTagType tag_type - 2: optional i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - 3: optional string screen_name (personalDataType = 'Username') - 4: optional string name (personalDataType = 'DisplayName') -}(persisted='true', hasPersonalData = 'true') - -struct TweetMediaTags { - 1: map> tag_map -}(persisted='true', hasPersonalData = 'true') - -/** - * A UserMention is a user reference not stored in the tweet text. - * - * @deprecated Was used only in ReplyAddresses - */ -struct UserMention { - 1: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - 2: optional string screen_name (personalDataType = 'Username') - 3: optional string name (personalDataType = 'DisplayName') -}(persisted='true', hasPersonalData = 'true') - -/** - * ReplyAddresses is a list of reply entities which are stored outside of the - * text. - * - * @deprecated - */ -struct ReplyAddresses { - 1: list users = [] -}(persisted='true', hasPersonalData = 'true') - -/** - * SchedulingInfo is metadata about tweets created by the tweet scheduling - * service. - */ -// -struct SchedulingInfo { - /** - * Id of the corresponding scheduled tweet before it was created as a real - * tweet. - */ - 1: i64 scheduled_tweet_id (personalDataType = 'TweetId') -}(persisted='true', hasPersonalData = 'true') - -/** - * @deprecated - */ -enum SuggestType { - WTF_CARD = 0 - WORLD_CUP = 1 - WTD_CARD = 2 - NEWS_CARD = 3 - RESERVED_4 = 4 - RESERVED_5 = 5 - RESERVED_6 = 6 - RESERVED_7 = 7 - RESERVED_8 = 8 - RESERVED_9 = 9 - RESERVED_10 = 10 - RESERVED_11 = 11 -} - -/** - * @deprecated - */ -enum TwitterSuggestsVisibilityType { - /** - * Always public to everyone - */ - PUBLIC = 1 - - /** - * Inherits visibility rules of personalized_for_user_id. - */ - RESTRICTED = 2 - - /** - * Only visible to personalized_for_user_id (and author). - */ - PRIVATE = 3 -} - -/** - * TwitterSuggestInfo is details about a synthetic tweet generated by an early - * version of Twitter Suggests. - * - * @deprecated - */ -struct TwitterSuggestInfo { - 1: SuggestType suggest_type - 2: TwitterSuggestsVisibilityType visibility_type - 3: optional i64 personalized_for_user_id (strato.space = "User", strato.name = "personalizedForUser", personalDataType = 'UserId') - 4: optional i64 display_timestamp_secs (personalDataType = 'PublicTimestamp') -}(persisted='true', hasPersonalData = 'true') - -/** - * A DeviceSource contains information about the client application from which - * a tweet was sent. - * - * This information is stored in Passbird. The developer that owns a client - * application provides this information on https://apps.twitter.com. - */ -struct DeviceSource { - - /** - * The id of the client in the now deprecated device_sources MySQL table. - * - * Today this value will always be 0. - * - * @deprecated Use client_app_id - */ - 1: required i64 id (personalDataType = 'AppId') - - /** - * Identifier for the client in the format "oauth:" - */ - 2: string parameter - - /** - * Identifier for the client in the format "oauth:" - */ - 3: string internal_name - - /** - * Developer-provided name of the client application. - */ - 4: string name - - /** - * Developer-provided publicly accessible home page for the client - * application. - */ - 5: string url - - /** - * HTML fragment with a link to the client-provided URL - */ - 6: string display - - /** - * This field is marked optional for backwards compatibility but will always - * be populated by Tweetypie. - */ - 7: optional i64 client_app_id (personalDataType = 'AppId') -}(persisted='true', hasPersonalData = 'true') - -/** - * A Narrowcast restricts delivery of a tweet geographically. - * - * Narrowcasts allow multi-national advertisers to create geo-relevant content - * from a central handle that is only delivered to to followers in a - * particular country or set of countries. - */ -struct Narrowcast { - 2: list location = [] (personalDataType = 'PublishedCoarseLocationTweet') -}(persisted='true', hasPersonalData = 'true') - -/** - * StatusCounts is a summary of engagement metrics for a tweet. - * - * These metrics are loaded from TFlock. - */ -struct StatusCounts { - - /** - * Number of times this tweet has been retweeted. - * - * This number may not match the list of users who have retweeted because it - * includes retweets from protected and suspended users who are not listed. - */ - 1: optional i64 retweet_count (personalDataType = 'CountOfPrivateRetweets, CountOfPublicRetweets', strato.json.numbers.type = 'int53') - - /** - * Number of direct replies to this tweet. - * - * This number does not include replies to replies. - */ - 2: optional i64 reply_count (personalDataType = 'CountOfPrivateReplies, CountOfPublicReplies', strato.json.numbers.type = 'int53') - - /** - * Number of favorites this tweet has received. - * - * This number may not match the list of users who have favorited a tweet - * because it includes favorites from protected and suspended users who are - * not listed. - */ - 3: optional i64 favorite_count (personalDataType = 'CountOfPrivateLikes, CountOfPublicLikes', strato.json.numbers.type = 'int53') - - /** - * @deprecated - */ - 4: optional i64 unique_users_impressed_count (strato.json.numbers.type = 'int53') - - /** - * Number of replies to this tweet including replies to replies. - * - * @deprecated - */ - 5: optional i64 descendent_reply_count (personalDataType = 'CountOfPrivateReplies, CountOfPublicReplies', strato.json.numbers.type = 'int53') - - /** - * Number of times this tweet has been quote tweeted. - * - * This number may not match the list of users who have quote tweeted because it - * includes quote tweets from protected and suspended users who are not listed. - */ - 6: optional i64 quote_count (personalDataType = 'CountOfPrivateRetweets, CountOfPublicRetweets', strato.json.numbers.type = 'int53') - - /** - * Number of bookmarks this tweet has received. - */ - 7: optional i64 bookmark_count (personalDataType = 'CountOfPrivateLikes', strato.json.numbers.type = 'int53') - -}(persisted='true', hasPersonalData = 'true', strato.graphql.typename='StatusCounts') - -/** - * A is a tweet's properties from one user's point of view. - */ -struct StatusPerspective { - 1: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId') - - /** - * Whether user_id has favorited this tweet. - */ - 2: bool favorited - - /** - * Whether user_id has retweeted this tweet. - */ - 3: bool retweeted - - /** - * If user_id has retweeted this tweet, retweet_id identifies that tweet. - */ - 4: optional i64 retweet_id (strato.space = "Tweet", strato.name = "retweet", personalDataType = 'TweetId') - - /** - * Whether user_id has reported this tweet as spam, offensive, or otherwise - * objectionable. - */ - 5: bool reported - - /** - * Whether user_id has bookmarked this tweet. - */ - 6: optional bool bookmarked -}(persisted='true', hasPersonalData = 'true') - -/** - * A Language is a guess about the human language of a tweet's text. - * - * Language is determined by TwitterLanguageIdentifier from the - * com.twitter.common.text package (commonly called "Penguin"). - */ -struct Language { - /** - * Language code in BCP-47 format. - */ - 1: required string language (personalDataType = 'InferredLanguage') - - /** - * Language direction. - */ - 2: bool right_to_left - - /** - * Confidence level of the detected language. - */ - 3: double confidence = 1.0 - - /** - * Other possible languages and their confidence levels. - */ - 4: optional map other_candidates -}(persisted='true', hasPersonalData = 'true') - -/** - * A SupplementalLanguage is a guess about the human language of a tweet's - * text. - * - * SupplementalLanguage is typically determined by a third-party translation - * service. It is only stored when the service detects a different language - * than TwitterLanguageIdentifier. - * - * @deprecated 2020-07-08 no longer populated. - */ -struct SupplementalLanguage { - /** - * Language code in BCP-47 format. - */ - 1: required string language (personalDataType = 'InferredLanguage') -}(persisted='true', hasPersonalData = 'true') - -/** - * A SpamLabel is a collection of spam actions for a tweet. - * - * Absence of a SpamLabel indicates that no action needs to be taken - */ -struct SpamLabel { - /** - * Filter this content at render-time - * - * @deprecated 2014-05-19 Use filter_renders - */ - 1: bool spam = 0 - - 2: optional set actions; -}(persisted='true') - - -/** - * The available types of spam signal - * - * @deprecated - */ -enum SpamSignalType { - MENTION = 1 - SEARCH = 2 - STREAMING = 4 - # OBSOLETE HOME_TIMELINE = 3 - # OBSOLETE NOTIFICATION = 5 - # OBSOLETE CONVERSATION = 6 - # OBSOLETE CREATION = 7 - RESERVED_VALUE_8 = 8 - RESERVED_VALUE_9 = 9 - RESERVED_VALUE_10 = 10 -} - -/** - * @deprecated - * CardBindingValues is a collection of key-value pairs used to render a card. - */ -struct CardBindingValues { - 1: list pairs = [] -}(persisted='true') - -/** - * A CardReference is a mechanism for explicitly associating a card with a - * tweet. - */ -struct CardReference { - /** - * Link to the card to associate with a tweet. - * - * This URI may reference either a card stored in the card service, or - * another resource, such as a crawled web page URL. This value supercedes - * any URL present in tweet text. - */ - 1: string card_uri -}(persisted='true') - -/** - * A TweetPivot is a semantic entity related to a tweet. - * - * TweetPivots are used to direct to the user to another related location. For - * example, a "See more about " UI element that takes the user to - * when clicked. - */ -struct TweetPivot { - 1: required tweet_annotation.TweetEntityAnnotation annotation - 2: required tweet_pivots.TweetPivotData data -}(persisted='true') - -struct TweetPivots { - 1: required list tweet_pivots -}(persisted='true') - -struct EscherbirdEntityAnnotations { - 1: list entity_annotations -}(persisted='true') - -struct TextRange { - /** - * The inclusive index of the start of the range, in zero-indexed Unicode - * code points. - */ - 1: required i32 from_index - - /** - * The exclusive index of the end of the range, in zero-indexed Unicode - * code points. - */ - 2: required i32 to_index -}(persisted='true') - -struct TweetCoreData { - 1: i64 user_id (strato.space = "User", strato.name = "user", personalDataType = 'UserId', tweetEditAllowed='false') - - /** - * The body of the tweet consisting of the user-supplied displayable message - * and: - * - an optional prefix list of @mentions - * - an optional suffix attachment url. - * - * The indices from visible_text_range specify the substring of text indended - * to be displayed, whose length is limited to 140 display characters. Note - * that the visible substring may be longer than 140 characters due to HTML - * entity encoding of &, <, and > . - - * For retweets the text is that of the original tweet, prepended with "RT - * @username: " and truncated to 140 characters. - */ - 2: string text (personalDataType = 'PrivateTweets, PublicTweets') - - /** - * The client from which this tweet was created - * - * The format of this value is oauth:. - */ - 3: string created_via (personalDataType = 'ClientType') - - /** - * Time this tweet was created. - * - * This value is seconds since the Unix epoch. For tweets with Snowflake IDs - * this value is redundant, since a millisecond-precision timestamp is part - * of the id. - */ - 4: i64 created_at_secs - - /** - * Present when this tweet is a reply to another tweet or another user. - */ - 5: optional Reply reply - - /** - * Present when a tweet begins with an @mention or has metadata indicating the directed-at user. - */ - 6: optional DirectedAtUser directed_at_user - - /** - * Present when this tweet is a retweet. - */ - 7: optional Share share - - /** - * Whether there is a takedown country code or takedown reason set for this specific tweet. - * - * See takedown_country_codes for the countries where the takedown is active. (deprecated) - * See takedown_reasons for a list of reasons why the tweet is taken down. - * - * has_takedown will be set to true if either this specific tweet or the author has a - * takedown active. - */ - 8: bool has_takedown = 0 - - /** - * Whether this tweet might be not-safe-for-work, judged by the tweet author. - * - * Users can flag their own accounts as not-safe-for-work in account - * preferences by selecting "Mark media I tweet as containing material that - * may be sensitive" and each tweet created after that point will have - * this flag set. - * - * The value can also be updated after tweet create time via the - * update_possibly_sensitive_tweet method. - */ - 9: bool nsfw_user = 0 - - /** - * Whether this tweet might be not-safe-for-work, judged by an internal Twitter - * support agent. - * - * This tweet value originates from the user's nsfw_admin flag at - * tweet create time but can be updated afterwards using the - * update_possibly_sensitive_tweet method. - */ - 10: bool nsfw_admin = 0 - - /** - * When nullcast is true a tweet is not delivered to a user's followers, not - * shown in the user's timeline, and does not appear in search results. - * - * This is primarily used to create tweets that can be used as ads without - * broadcasting them to an advertiser's followers. - */ - 11: bool nullcast = 0 (tweetEditAllowed='false') - - /** - * Narrowcast limits delivery of a tweet to followers in specific geographic - * regions. - */ - 12: optional Narrowcast narrowcast (tweetEditAllowed='false') - - /** - * The impression id of the ad from which this tweet was created. - * - * This is set when a user retweets or replies to a promoted tweet. It is - * used to attribute the "earned" exposure of an advertisement. - */ - 13: optional i64 tracking_id (personalDataType = 'ImpressionId', tweetEditAllowed='false') - - /** - * A shared identifier among all the tweets in the reply chain for a single - * tweet. - * - * The conversation id is the id of the tweet that started the conversation. - */ - 14: optional i64 conversation_id (strato.space = "Tweet", strato.name = "conversation", personalDataType = 'TweetId') - - /** - * Whether this tweet has media of any type. - * - * Media can be in the form of media entities, media cards, or URLs in the - * tweet text that link to media partners. - * - * @see MediaIndexHelper - */ - 15: optional bool has_media - - /** - * Supported for legacy clients to associate a location with a Tweet. - * - * Twitter owned clients must use place_id REST API param for geo-tagging. - * - * @deprecated Use place_id REST API param - */ - 16: optional GeoCoordinates coordinates (personalDataType = 'GpsCoordinates', tweetEditAllowed='false') - - /** - * The location where a tweet was sent from. - * - * Place is either published in API request explicitly or implicitly reverse - * geocoded from API lat/lon coordinates params. - * - * Tweetypie implementation notes: - * - Currently, if both place_id and coordinates are specified, coordinates - * takes precedence in geo-tagging. I.e.: Place returned rgc(coordinates) - * sets the place_id field. - * - place_id is reverse geocoded on write-path. - */ - 17: optional string place_id (personalDataType = 'PublishedPreciseLocationTweet, PublishedCoarseLocationTweet') -}(persisted='true', hasPersonalData = 'true', tweetEditAllowed='false') - -/** - * List of community ID's the tweet belongs to. - */ -struct Communities { - 1: required list community_ids (personalDataType = 'EngagementId') -}(persisted='true') - -/** - * Tweet metadata that is present on extended tweets, a tweet whose total text length is greater - * than the classic limit of 140 characters. - */ -struct ExtendedTweetMetadata { - /** - * @deprecated was display_count - */ - 1: i32 unused1 = 0 - - /** - * The index, in unicode code points, at which the tweet text should be truncated - * for rendering in a public API backwards-compatible mode. Once truncated to this - * point, the text should be appended with an ellipsis, a space, and the short_url - * from self_permalink. The resulting text must conform to the 140 display glyph - * limit. - */ - 2: required i32 api_compatible_truncation_index - - /** - * @deprecated was default_display_truncation_index - */ - 3: i32 unused3 = 0 - - /** - * @deprecated was is_long_form - */ - 4: bool unused4 = 0 - - /** - * @deprecated was preview_range - */ - 5: optional TextRange unused5 - - /** - * @deprecated was extended_preview_range - */ - 6: optional TextRange unused6 -}(persisted='true') - -/** - * @deprecated use TransientCreateContext instead - */ -enum TweetCreateContextKey { - PERISCOPE_IS_LIVE = 0, - PERISCOPE_CREATOR_ID = 1 -} - -/** - * DirectedAtUserMetadata is a tweetypie-internal structure that can be used to store metadata about - * a directed-at user on the tweet. - * - * Note: absence of this field does not imply the tweet does not have a DirectedAtUser, see - * tweet.directedAtUserMetadata for more information. - */ -struct DirectedAtUserMetadata { - /** - * ID of the user a tweet is directed-at. - */ - 1: optional i64 user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -/** - * Tweet metadata that may be present on tweets in a self-thread (tweetstorm). - * - * A self-thread is a tree of self-replies that may either: - * 1. begin as a reply to another user's tweet (called a non-root self-thread) or - * 2. stand alone (called root self-thread). - * - * Note that not all self-threads have SelfThreadMetadata. - */ -struct SelfThreadMetadata { - /** - * A shared identifier among all the tweets in the self-thread (tweetstorm). - * - * The tweetstorm id is the id of the tweet that started the self thread. - * - * If the id matches the tweet's conversation_id then it is a root self-thread, otherwise it is - * a non-root self-thread. - */ - 1: required i64 id (personalDataType = 'TweetId') - - /** - * Indicates if the tweet with this SelfThreadMetadata is a leaf in the self-thread tree. - * This flag might be used to encourage the author to extend their tweetstorm at the end. - */ - 2: bool isLeaf = 0 -}(persisted='true', hasPersonalData = 'true') - -/** - * Composer flow used to create this tweet. Unless using the News Camera (go/newscamera) - * flow, this should be `STANDARD`. - * - * When set to `CAMERA`, clients are expected to display the tweet with a different UI - * to emphasize attached media. - */ -enum ComposerSource { - STANDARD = 1 - CAMERA = 2 -} - - -/** - * The conversation owner and users in invited_user_ids can reply - **/ -struct ConversationControlByInvitation { - 1: required list invited_user_ids (personalDataType = 'UserId') - 2: required i64 conversation_tweet_author_id (personalDataType = 'UserId') - 3: optional bool invite_via_mention -}(persisted='true', hasPersonalData = 'true') - -/** - * The conversation owner, users in invited_user_ids, and users who the conversation owner follows can reply - **/ -struct ConversationControlCommunity { - 1: required list invited_user_ids (personalDataType = 'UserId') - 2: required i64 conversation_tweet_author_id (personalDataType = 'UserId') - 3: optional bool invite_via_mention -}(persisted='true', hasPersonalData = 'true') - -/** - * The conversation owner, users in invited_user_ids, and users who follows the conversation owner can reply - **/ -struct ConversationControlFollowers { - 1: required list invited_user_ids (personalDataType = 'UserId') - 2: required i64 conversation_tweet_author_id (personalDataType = 'UserId') - 3: optional bool invite_via_mention -}(persisted='true', hasPersonalData = 'true') - -/** -* This tweet metadata captures restrictions on who is allowed to reply in a conversation. -*/ -union ConversationControl { - - 1: ConversationControlCommunity community - - 2: ConversationControlByInvitation byInvitation - - 3: ConversationControlFollowers followers -}(persisted='true', hasPersonalData = 'true') - -// This tweet metadata shows the exclusivity of a tweet and is used to determine -// whether replies / visibility of a tweet is limited -struct ExclusiveTweetControl { - 1: required i64 conversation_author_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -/** - * Tweet metadata for a Trusted Friends tweet. - * - * A Trusted Friends tweet is a tweet whose visibility is restricted to members - * of an author-specified list. - * - * Replies to a Trusted Friends tweet will inherit a copy of this metadata from - * the root tweet. - */ -struct TrustedFriendsControl { - /** - * The ID of the Trusted Friends List whose members can view this tweet. - */ - 1: required i64 trusted_friends_list_id (personalDataType = 'TrustedFriendsListMetadata') -}(persisted='true', hasPersonalData = 'true') - -enum CollabInvitationStatus { - PENDING = 0 - ACCEPTED = 1 - REJECTED = 2 -} - -/** - * Represents a user who has been invited to collaborate on a CollabTweet, associated with whether - * they have accepted or rejected collaboration - */ -struct InvitedCollaborator { - 1: required i64 collaborator_user_id (personalDataType = 'UserId') - 2: required CollabInvitationStatus collab_invitation_status -}(persisted='true', hasPersonalData='true') - -/** - * Present if Tweet is a CollabInvitation awaiting publishing, stores list of invited Collaborators - */ -struct CollabInvitation { - 1: required list invited_collaborators -}(persisted='true', hasPersonalData='true') - -/** - * Present if Tweet is a published CollabTweet, stores list of Collaborators - */ -struct CollabTweet { - 1: required list collaborator_user_ids (personalDataType = 'UserId') -}(persisted='true', hasPersonalData='true') - -/** - * CollabTweets treat multiple users as co-authors or "Collaborators" of a single "Collab Tweet". - * - * When creating a Collab Tweet, the original author will begin by creating a CollabInvitation which - * is sent to another Collaborator to accept or reject collaboration. If and when other - * Collaborators have accepted, the CollabInvitation is replaced by a CollabTweet which is published - * publicly and fanned out to followers of all Collaborators. A CollabInvitation will be hidden from - * anyone except the list of Collaborators using VF. The CollabTweet will then be fanned out like - * a regular Tweet to the profiles and combined audiences of all Collaborators. - * - * A Tweet representing a CollabTweet or CollabInvitation is denoted by the presence of a - * CollabControl field on a Tweet. - */ -union CollabControl { - 1: CollabInvitation collab_invitation - 2: CollabTweet collab_tweet -}(persisted='true', hasPersonalData='true') - -/** - * A Tweet is a message that belongs to a Twitter user. - * - * The Tweet struct replaces the deprecated Status struct. All fields except - * id are optional. - * - * This struct supports the additional fields flexible schema. Additional fields are - * defined starting from field 101. - * - * The guidelines for adding a new Additional field: - * 1. It's required to define the additional field as an optional struct. - * Inside the struct, define optional or non-optional field(s) according - * to your needs. - * 2. If you have several immutable piece of data that are always accessed - * together, you should define them in the same struct for better storage - * locality. - * 3. If your data model has several mutable pieces, and different piece can - * be updated in a close succession, you should group them into - * separate structs and each struct contains one mutable piece. - */ -struct Tweet { - /** - * The primary key for a tweet. - * - * A tweet's id is assigned by the tweet service at creation time. Since - * 2010-11-04 tweet ids have been generated using Snowflake. Prior to this - * ids were assigned sequentially by MySQL AUTOINCREMENT. - */ - 1: i64 id (personalDataType = 'TweetId') - - /** - * The essential properties of a tweet. - * - * This field will always be present on tweets returned by Tweetypie. It is - * marked optional so an empty tweet can be provided to write additional - * fields. - */ - 2: optional TweetCoreData core_data - - /** - * URLs extracted from the tweet's text. - */ - 3: optional list urls - - /** - * Mentions extracted from the tweet's text. - */ - 4: optional list mentions - - /** - * Hashtags extracted from the tweet's text. - */ - 5: optional list hashtags - - /** - * Cashtags extracted from the tweet's text - */ - 6: optional list cashtags - - 7: optional list media - - /** - * Place identified by Tweet.core_data.place_id. - */ - 10: optional Place place - - 11: optional QuotedTweet quoted_tweet - - /** - * The list of countries where this tweet will not be shown. - * - * This field contains countries for both the tweet and the user, so it may - * contain values even if has_takedown is false. - * - * @deprecated, use field 30 takedown_reasons which includes the same information and more - */ - 12: optional list takedown_country_codes (personalDataType = 'ContentRestrictionStatus') - - /** - * Interaction metrics for this tweet. - * - * Included when one of GetTweetOptions.load_retweet_count, - * GetTweetOptions.load_reply_count, or GetTweetOptions.load_favorite_count - * is set. This can be missing in a PARTIAL response if the TFlock request - * fails. - */ - 13: optional StatusCounts counts - - /** - * Properties of the client from which the tweet was sent. - * - * This can be missing in a PARTIAL response if the Passbird request fails. - */ - 14: optional DeviceSource device_source - - /** - * Properties of this tweet from the point of view of - * GetTweetOptions.for_user_id. - * - * This field is included only when for_user_id is provided and - * include_perspective == true This can be missing in a PARTIAL response if - * the timeline service request fails. - */ - 15: optional StatusPerspective perspective - - /** - * Version 1 cards. - * - * This field is included only when GetTweetOptions.include_cards == true. - */ - 16: optional list cards - - /** - * Version 2 cards. - * - * This field is included only included when GetTweetOptions.include_cards - * == true and GetTweetOptions.cards_platform_key is set to valid value. - */ - 17: optional cards.Card2 card2 - - /** - * Human language of tweet text as determined by TwitterLanguageIdentifier. - */ - 18: optional Language language - - /** - * @deprecated - */ - 19: optional map spam_labels - - /** - * User responsible for creating this tweet when it is not the same as the - * core_data.user_id. - * - * This is sensitive information and must not be shared externally (via UI, - * API, or streaming) except to the the owner of the tweet - * (core_data.user_id) or a contributor to the owner's account. - */ - 20: optional Contributor contributor - - // obsolete 21: optional list topic_labels - - 22: optional enrichments_profilegeo.ProfileGeoEnrichment profile_geo_enrichment - - // Maps extension name to value; only populated if the request contained an extension on tweets. - // obsolete 24: optional map extensions - - /** - * Deprecated. - * Semantic entities that are related to this tweet. - */ - 25: optional TweetPivots tweet_pivots - - /** - * @deprecated - * Strato Tweet Extensions support has moved to birdherd. - * - * Internal thrift clients should query strato columns directly and - * not rely upon ext/*.Tweet columns which are designed to serve - * client APIs. - */ - 26: optional binary extensions_reply - - /** - * Has the requesting user muted the conversation referred to by - * `conversation_id`? When this field is absent, the conversation may - * or may not be muted. Use the `include_conversation_muted` field in - * GetTweetOptions to request this field. - * - * If this field has a value, the value applies to the user in the - * `for_user_id` field of the requesting `GetTweetOptions`. - */ - 27: optional bool conversation_muted - - /** - * The user id of the tweet referenced by conversation_id - * - * @deprecated Was conversation_owner_id. This was never implemented. - */ - 28: optional i64 unused28 - - /** - * Has this tweet been removed from its conversation by the conversation owner? - * - * @deprecated Was is_removed_from_conversation. This was never implemented. - */ - 29: optional bool unused29 - - /** - * A list of takedown reasons indicating which country and reason this tweet was taken down. - */ - 30: optional list takedown_reasons - - /** - * @obsolete, self-thread metadata is now stored in field 151, self_thread_metadata - */ - 31: optional self_thread.SelfThreadInfo self_thread_info - - // field 32 to 99 are reserved - // field 100 is used for flexible schema proof of concept - // additional fields - // these fields are stored in Manhattan flexible schema - 101: optional TweetMediaTags media_tags - 102: optional SchedulingInfo scheduling_info - - /** - * @deprecated - */ - 103: optional CardBindingValues binding_values - - /** - * @deprecated - */ - 104: optional ReplyAddresses reply_addresses - - /** - * OBSOLETE, but originally contained information about synthetic tweets created by the first - * version of Twitter Suggests. - * - * @deprecated - */ - 105: optional TwitterSuggestInfo obsolete_twitter_suggest_info - - 106: optional EscherbirdEntityAnnotations escherbird_entity_annotations (personalDataType = 'AnnotationValue') - - // @deprecated 2021-07-19 - 107: optional safety_label.SafetyLabel spam_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 108: optional safety_label.SafetyLabel abusive_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 109: optional safety_label.SafetyLabel low_quality_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 110: optional safety_label.SafetyLabel nsfw_high_precision_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 111: optional safety_label.SafetyLabel nsfw_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 112: optional safety_label.SafetyLabel abusive_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 113: optional safety_label.SafetyLabel low_quality_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 114: optional safety_label.SafetyLabel persona_non_grata_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 115: optional safety_label.SafetyLabel recommendations_low_quality_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 116: optional safety_label.SafetyLabel experimentation_label (personalDataType = 'TweetSafetyLabels') - - 117: optional tweet_location_info.TweetLocationInfo tweet_location_info - 118: optional CardReference card_reference - - /** - * @deprecated 2020-07-08 no longer populated. - */ - 119: optional SupplementalLanguage supplemental_language - - // field 120, additional_media_metadata, is deprecated. - // field 121, media_metadatas, is deprecated - - // under certain circumstances, including long form tweets, we create and store a self-permalink - // to this tweet. in the case of a long-form tweet, this will be used in a truncated version - // of the tweet text. - 122: optional ShortenedUrl self_permalink - - // metadata that is present on extended tweets. - 123: optional ExtendedTweetMetadata extended_tweet_metadata - - // obsolete 124: crosspost_destinations.CrosspostDestinations crosspost_destinations - - // Communities associated with a tweet - 125: optional Communities communities (personalDataType = 'PrivateTweetEntitiesAndMetadata', tweetEditAllowed='false') - - // If some text at the beginning or end of the tweet should be hidden, then this - // field indicates the range of text that should be shown in clients. - 126: optional TextRange visible_text_range - - // @deprecated 2021-07-19 - 127: optional safety_label.SafetyLabel spam_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 128: optional safety_label.SafetyLabel duplicate_content_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 129: optional safety_label.SafetyLabel live_low_quality_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 130: optional safety_label.SafetyLabel nsfa_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 131: optional safety_label.SafetyLabel pdna_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 132: optional safety_label.SafetyLabel search_blacklist_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 133: optional safety_label.SafetyLabel low_quality_mention_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 134: optional safety_label.SafetyLabel bystander_abusive_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 135: optional safety_label.SafetyLabel automation_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 136: optional safety_label.SafetyLabel gore_and_violence_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 137: optional safety_label.SafetyLabel untrusted_url_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 138: optional safety_label.SafetyLabel gore_and_violence_high_recall_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 139: optional safety_label.SafetyLabel nsfw_video_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 140: optional safety_label.SafetyLabel nsfw_near_perfect_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 141: optional safety_label.SafetyLabel automation_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 142: optional safety_label.SafetyLabel nsfw_card_image_label (personalDataType = 'TweetSafetyLabels') - // @deprecated 2021-07-19 - 143: optional safety_label.SafetyLabel duplicate_mention_label (personalDataType = 'TweetSafetyLabels') - - // @deprecated 2021-07-19 - 144: optional safety_label.SafetyLabel bounce_label (personalDataType = 'TweetSafetyLabels') - // field 145 to 150 is reserved for safety labels - - /** - * If this tweet is part of a self_thread (tweetstorm) then this value may be set. - * See SelfThreadMetadata for details. - */ - 151: optional SelfThreadMetadata self_thread_metadata - // field 152 has been deprecated - - // The composer used to create this tweet. Either via the standard tweet creator or the - // Camera flow (go/newscamera). - // - // NOTE: this field is only set if a client passed an explicit ComposerSource in the PostTweetRequest. - // News Camera is deprecated and we no longer set ComposerSource in the PostTweetRequest so no new Tweets will - // have this field. - 153: optional ComposerSource composer_source - - // Present if replies are restricted, see ConversationControl for more details - 154: optional ConversationControl conversation_control - - // Determines the super follows requirements for being able to view a tweet. - 155: optional ExclusiveTweetControl exclusive_tweet_control (tweetEditAllowed='false') - - // Present for a Trusted Friends tweet, see TrustedFriendsControl for more details. - 156: optional TrustedFriendsControl trusted_friends_control (tweetEditAllowed='false') - - // Data about edits and editability. See EditControl for more details. - 157: optional edit_control.EditControl edit_control - - // Present for a CollabTweet or CollabInvitation, see CollabControl for more details. - 158: optional CollabControl collab_control (tweetEditAllowed='false') - - // Present for a 3rd-party developer-built card. See http://go/developer-built-cards-prd - 159: optional i64 developer_built_card_id (personalDataType = 'CardId') - - // Data about enrichments attached to a tweet. - 160: optional creative_entity_enrichments.CreativeEntityEnrichments creative_entity_enrichments_for_tweet - - // This field includes summed engagements from the previous tweets in the edit chain. - 161: optional StatusCounts previous_counts - - // A list of media references, including information about the source Tweet for pasted media. - // Prefer this field to media_keys, as media_keys is not present for old Tweets or pasted media Tweets. - 162: optional list media_refs - - // Whether this tweet is a 'backend tweet' to be referenced only by the creatives containers service - // go/cea-cc-integration for more details - 163: optional bool is_creatives_container_backend_tweet - - /** - * Aggregated perspective of this tweet and all other versions from the point of view of the - * user specified in for_user_id. - * - * This field is included only when for_user_id is provided and can be missing in a PARTIAL response - * if the timeline service request fails. - */ - 164: optional api_fields.TweetPerspective edit_perspective - - // Visibility controls related to Toxic Reply Filtering - // go/toxrf for more details - 165: optional filtered_reply_details.FilteredReplyDetails filtered_reply_details - - // The list of mentions that have unmentioned from the tweet's associated conversation - 166: optional unmentions.UnmentionData unmention_data - - /** - * A list of users that were mentioned in the tweet and have a blocking - * relationship with the author. - */ - 167: optional BlockingUnmentions blocking_unmentions - - /** - * A list of users that were mentioned in the tweet and should be unmentioned - * based on their mention setttings - */ - 168: optional SettingsUnmentions settings_unmentions - - /** - * A Note associated with this Tweet. - */ - 169: optional note_tweet.NoteTweet note_tweet - - // For additional fields, the next available field id is 169. - // NOTE: when adding a new additional field, please also update UnrequestedFieldScrubber.scrubKnownFields - - /** - * INTERNAL FIELDS - * - * These fields are used by tweetypie only and should not be accessed externally. - * The field ids are in descending order, starting with `32767`. - */ - - /** - * Present if tweet data is provided creatives container service instead of tweetypie storage, - * with encapsulated tweets or customized data. - */ - 32763: optional i64 underlying_creatives_container_id - - /** - * Stores tweetypie-internal metadata about a DirectedAtUser. - * - * A tweet's DirectedAtUser is hydrated as follows: - * 1. if this field is present, then DirectedAtUserMetadata.userId is the directed-at user - * 2. if this field is absent, then if the tweet has a reply and has a mention starting at text - * index 0 then that user is the directed-at user. - * - * Note: External clients should use CoreData.directed_at_user. - */ - 32764: optional DirectedAtUserMetadata directed_at_user_metadata - - // list of takedowns that are applied directly to the tweet - 32765: optional list tweetypie_only_takedown_reasons - - // Stores the media keys used to interact with the media platform systems. - // Prefer `media_refs` which will always have media data, unlike this field which is empty for - // older Tweets and Tweets with pasted media. - 32766: optional list media_keys - - // field 32767 is the list of takedowns that are applied directly to the tweet - 32767: optional list tweetypie_only_takedown_country_codes (personalDataType = 'ContentRestrictionStatus') - - - // for internal fields, the next available field id is 32765 (counting down) -}(persisted='true', hasPersonalData = 'true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.docx new file mode 100644 index 0000000000000000000000000000000000000000..f704dc6d37eda678ace7c1385aa2f808f6a36c37 GIT binary patch literal 37198 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.thrift deleted file mode 100644 index db8361805..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_audit.thrift +++ /dev/null @@ -1,32 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -namespace py gen.twitter.tweetypie.tweet_audit -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace rb TweetyPie -namespace go tweetypie - -// Copied from UserActionReason in guano.thrift - this should be kept in sync (though upper cased) -enum AuditUserActionReason { - SPAM - CHURNING - OTHER - PHISHING - BOUNCING - - RESERVED_1 - RESERVED_2 -} - -// This struct contains all fields of DestroyStatus in guano.thrift that can be set per remove/deleteTweets invocation -// Values are passed through TweetyPie as-is to guano scribe and not used by TweetyPie. -struct AuditDeleteTweet { - 1: optional string host (personalDataType = 'IpAddress') - 2: optional string bulk_id - 3: optional AuditUserActionReason reason - 4: optional string note - 5: optional bool done - 6: optional string run_id - // OBSOLETE 7: optional i64 id - 8: optional i64 client_application_id (personalDataType = 'AppId') - 9: optional string user_agent (personalDataType = 'UserAgent') -}(persisted = 'true', hasPersonalData = 'true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.docx new file mode 100644 index 0000000000000000000000000000000000000000..06c8138a96d3975fa994cd5ff27aabff42e886d3 GIT binary patch literal 36883 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 TU=9N1DnW)sVD^~P4dMX+x<=UU literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.thrift deleted file mode 100644 index 4ad96e564..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_comparison_service.thrift +++ /dev/null @@ -1,28 +0,0 @@ -namespace java com.twitter.tweetypiecomparison.thriftjava -#@namespace scala com.twitter.tweetypiecomparison.thriftscala -#@namespace strato com.twitter.tweetypiecomparison - -include "com/twitter/tweetypie/tweet_service.thrift" -include "com/twitter/context/viewer.thrift" - -service TweetComparisonService { - void compare_retweet( - 1: tweet_service.RetweetRequest request, - 2: optional viewer.Viewer viewer - ) - - void compare_post_tweet( - 1: tweet_service.PostTweetRequest request, - 2: optional viewer.Viewer viewer - ) - - void compare_unretweet( - 1: tweet_service.UnretweetRequest request, - 2: optional viewer.Viewer viewer - ) - - void compare_delete_tweets( - 1: tweet_service.DeleteTweetsRequest request, - 2: optional viewer.Viewer viewer - ) -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.docx new file mode 100644 index 0000000000000000000000000000000000000000..ec3f5988df62bf536004d402e80eb76f81287ec7 GIT binary patch literal 39487 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.thrift deleted file mode 100644 index a80a74bf9..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_events.thrift +++ /dev/null @@ -1,277 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -namespace py gen.twitter.tweetypie.tweet_events -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace rb TweetyPie -namespace go tweetypie - -include "com/twitter/tseng/withholding/withholding.thrift" -include "com/twitter/tweetypie/transient_context.thrift" -include "com/twitter/tweetypie/tweet.thrift" -include "com/twitter/tweetypie/tweet_audit.thrift" -include "com/twitter/gizmoduck/user.thrift" - -/** - * SafetyType encodes the event user's safety state in an enum so downstream - * event processors can filter events without having to load the user. - */ -enum SafetyType { - PRIVATE = 0 // user.safety.isProtected - RESTRICTED = 1 // !PRIVATE && user.safety.suspended - PUBLIC = 2 // !(PRIVATE || RESTRICTED) - RESERVED0 = 3 - RESERVED1 = 4 - RESERVED2 = 5 - RESERVED3 = 6 -} - -struct TweetCreateEvent { - /** - * The tweet that has been created. - */ - 1: tweet.Tweet tweet - - /** - * The user who owns the created tweet. - */ - 2: user.User user - - /** - * The tweet being retweeted. - */ - 3: optional tweet.Tweet source_tweet - - /** - * The user who owns source_tweet. - */ - 4: optional user.User source_user - - /** - * The user whose tweet or retweet is being retweeted. - * - * This is the id of the user who owns - * tweet.core_data.share.parent_status_id. In many cases this will be the - * same as source_user.id; it is different when the tweet is created via - * another retweet. See the explanation of source_user_id and parent_user_id - * in Share for examples. - */ - 5: optional i64 retweet_parent_user_id (personalDataType = 'UserId') - - /** - * The tweet quoted in the created tweet. - */ - 6: optional tweet.Tweet quoted_tweet - - /** - * The user who owns quoted_tweet. - */ - 7: optional user.User quoted_user - - /** - * Arbitrary passthrough metadata about tweet creation. - * - * See TweetCreateContextKey for more details about the data that may be - * present here. - */ - 8: optional map additional_context (personalDataTypeValue='UserId') - - /** - * Additional request arguments passed through to consumers. - */ - 9: optional transient_context.TransientCreateContext transient_context - - /** - * Flag exposing if a quoted tweet has been quoted by the user previously. - **/ - 10: optional bool quoter_has_already_quoted_tweet -}(persisted='true', hasPersonalData = 'true') - -struct TweetDeleteEvent { - /** - * The tweet being deleted. - */ - 1: tweet.Tweet tweet - - /** - * The user who owns the deleted tweet. - */ - 2: optional user.User user - - /** - * Whether this tweet was deleted as part of user erasure (the process of deleting tweets - * belonging to deactivated accounts). - * - * These deletions occur in high volume spikes and the tweets have already been made invisible - * externally. You may wish to process them in batches or offline. - */ - 3: optional bool is_user_erasure - - /** - * Audit information from the DeleteTweetRequest that caused this deletion. - * - * This field is used to track the reason for deletion in non-user-initiated - * tweet deletions, like Twitter support agents deleting tweets or spam - * cleanup. - */ - 4: optional tweet_audit.AuditDeleteTweet audit - - /** - * Id of the user initiating this request. - * It could be either the owner of the tweet or an admin. - * It is used for scrubbing. - */ - 5: optional i64 by_user_id (personalDataType = 'UserId') - - /** - * Whether this tweet was deleted by an admin user or not - * - * It is used for scrubbing. - */ - 6: optional bool is_admin_delete -}(persisted='true', hasPersonalData = 'true') - -struct TweetUndeleteEvent { - 1: tweet.Tweet tweet - 2: optional user.User user - 3: optional tweet.Tweet source_tweet - 4: optional user.User source_user - 5: optional i64 retweet_parent_user_id (personalDataType = 'UserId') - 6: optional tweet.Tweet quoted_tweet - 7: optional user.User quoted_user - // timestamp of the deletion that this undelete is reversing - 8: optional i64 deleted_at_msec -}(persisted='true', hasPersonalData = 'true') - -/** - * When a user deletes the location information for their tweets, we send one - * TweetScrubGeoEvent for every tweet from which the location is removed. - * - * Users cause this by selecting "Delete location information" in Settings -> - * Privacy. - */ -struct TweetScrubGeoEvent { - 1: i64 tweet_id (personalDataType = 'TweetId') - 2: i64 user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -/** - * When a user deletes the location information for their tweets, we send one - * UserScrubGeoEvent with the max tweet ID that was scrubbed (in addition to - * sending multiple TweetScrubGeoEvents as described above). - * - * Users cause this by selecting "Delete location information" in Settings -> - * Privacy. This additional event is sent to maintain backwards compatibility - * with Hosebird. - */ -struct UserScrubGeoEvent { - 1: i64 user_id (personalDataType = 'UserId') - 2: i64 max_tweet_id (personalDataType = 'TweetId') -}(persisted='true', hasPersonalData = 'true') - -struct TweetTakedownEvent { - 1: i64 tweet_id (personalDataType = 'TweetId') - 2: i64 user_id (personalDataType = 'UserId') - // This is the complete list of takedown country codes for the tweet, - // including whatever modifications were made to trigger this event. - // @deprecated Prefer takedown_reasons once TWEETYPIE-4329 deployed - 3: list takedown_country_codes = [] - // This is the complete list of takedown reasons for the tweet, - // including whatever modifications were made to trigger this event. - 4: list takedown_reasons = [] -}(persisted='true', hasPersonalData = 'true') - -struct AdditionalFieldUpdateEvent { - // Only contains the tweet id and modified or newly added fields on that tweet. - // Unchanged fields and tweet core data are omitted. - 1: tweet.Tweet updated_fields - 2: optional i64 user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -struct AdditionalFieldDeleteEvent { - // a map from tweet id to deleted field ids - // Each event will only contain one tweet. - 1: map> deleted_fields (personalDataTypeKey='TweetId') - 2: optional i64 user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -// This event is only logged to scribe not sent to EventBus -struct TweetMediaTagEvent { - 1: i64 tweet_id (personalDataType = 'TweetId') - 2: i64 user_id (personalDataType = 'UserId') - 3: set tagged_user_ids (personalDataType = 'UserId') - 4: optional i64 timestamp_ms -}(persisted='true', hasPersonalData = 'true') - -struct TweetPossiblySensitiveUpdateEvent { - 1: i64 tweet_id (personalDataType = 'TweetId') - 2: i64 user_id (personalDataType = 'UserId') - // The below two fields contain the results of the update. - 3: bool nsfw_admin - 4: bool nsfw_user -}(persisted='true', hasPersonalData = 'true') - -struct QuotedTweetDeleteEvent { - 1: i64 quoting_tweet_id (personalDataType = 'TweetId') - 2: i64 quoting_user_id (personalDataType = 'UserId') - 3: i64 quoted_tweet_id (personalDataType = 'TweetId') - 4: i64 quoted_user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData = 'true') - -struct QuotedTweetTakedownEvent { - 1: i64 quoting_tweet_id (personalDataType = 'TweetId') - 2: i64 quoting_user_id (personalDataType = 'UserId') - 3: i64 quoted_tweet_id (personalDataType = 'TweetId') - 4: i64 quoted_user_id (personalDataType = 'UserId') - // This is the complete list of takedown country codes for the tweet, - // including whatever modifications were made to trigger this event. - // @deprecated Prefer takedown_reasons - 5: list takedown_country_codes = [] - // This is the complete list of takedown reasons for the tweet, - // including whatever modifications were made to trigger this event. - 6: list takedown_reasons = [] -}(persisted='true', hasPersonalData = 'true') - -union TweetEventData { - 1: TweetCreateEvent tweet_create_event - 2: TweetDeleteEvent tweet_delete_event - 3: AdditionalFieldUpdateEvent additional_field_update_event - 4: AdditionalFieldDeleteEvent additional_field_delete_event - 5: TweetUndeleteEvent tweet_undelete_event - 6: TweetScrubGeoEvent tweet_scrub_geo_event - 7: TweetTakedownEvent tweet_takedown_event - 8: UserScrubGeoEvent user_scrub_geo_event - 9: TweetPossiblySensitiveUpdateEvent tweet_possibly_sensitive_update_event - 10: QuotedTweetDeleteEvent quoted_tweet_delete_event - 11: QuotedTweetTakedownEvent quoted_tweet_takedown_event -}(persisted='true', hasPersonalData = 'true') - -/** - * @deprecated - */ -struct Checksum { - 1: i32 checksum -}(persisted='true') - -struct TweetEventFlags { - /** - * @deprecated Was dark_for_service. - */ - 1: list unused1 = [] - - 2: i64 timestamp_ms - - 3: optional SafetyType safety_type - - /** - * @deprecated Was checksum. - */ - 4: optional Checksum unused4 -}(persisted='true') - -/** - * A TweetEvent is a notification published to the tweet_events stream. - */ -struct TweetEvent { - 1: TweetEventData data - 2: TweetEventFlags flags -}(persisted='true', hasPersonalData = 'true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service.docx new file mode 100644 index 0000000000000000000000000000000000000000..2bdf338d9a518755505a120229666c5cba2b4743 GIT binary patch literal 61986 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 place_metadata (personalDataTypeKey = 'InferredLocation', personalDataTypeValue = 'InferredLocation') - 4: bool auto_create_place = 1 - // deprecated; use tweet.GeoCoordinates.display - 5: bool display_coordinates = 1 - 6: bool override_user_geo_setting = 0 - 7: optional TweetGeoSearchRequestID geo_search_request_id -}(hasPersonalData = 'true') - -enum StatusState { - /** - * The tweet was found and successfully hydrated. - */ - FOUND = 0 - - /** - * The tweet was not found. It may have been deleted, or could just be an invalid or - * unused tweet id. - */ - NOT_FOUND = 1 - - /** - * The tweet was found, but there was at least one error hydrating some data on the tweet. - * GetTweetResult.missing_fields indicates which fields may have not been hydrated completely. - */ - PARTIAL = 2 - - /** - * @deprecated All failures, including time outs, are indicated by `Failed`. - */ - TIMED_OUT = 3 - - /** - * There was an upstream or internal failure reading this tweet. Usually indicates a - * transient issue that is safe to retry immediately. - */ - FAILED = 4 - - /** - * @deprecated tweets from deactivated users will soon be indicated via `Drop` with - * a `FilteredReason` of `authorAccountIsInactive`. - */ - DEACTIVATED_USER = 5 - - /** - * @deprecated tweets from suspended users will soon be indicated via `Drop` with - * a `FilteredReason` of `authorAccountIsInactive`. - */ - SUSPENDED_USER = 6 - - /** - * @deprecated tweets from protected users that the viewer can't see will soon be - * indicated via `Drop` with a `FilteredReason` of `authorIsProtected`. - */ - PROTECTED_USER = 7 - /** - * @deprecated tweets that have been reported by the viewer will soon be indicated - * via `Drop` or `Suppress` with a `FilteredReason` of `reportedTweet`. - */ - REPORTED_TWEET = 8 - - // PrivateTweet was originally used for TwitterSuggest v1 but has since been removed - // obsolete: PRIVATE_TWEET = 9 - - /** - * Could not return this tweet because of backpressure, should - * not be retried immediately; try again later - */ - OVER_CAPACITY = 10 - - /** - * Returned when the requesting client is considered to not be - * able to render the tweet properly - */ - UNSUPPORTED_CLIENT = 11 - - /** - * The tweet exists, but was not returned because it should not be seen by the - * viewer. The reason for the tweet being filtered is indicated via - * GetTweetResult.filtered_reason. - */ - DROP = 12 - - /** - * The tweet exists and was returned, but should not be directly shown to the - * user without additional user intent to see the tweet, as it may be offensive. - * The reason for the suppression is indicated via GetTweetResult.filtered_reason. - */ - SUPPRESS = 13 - - /** - * The tweet once existed and has been deleted. - * When GetTweetOptions.enable_deleted_state is true, deleted tweets - * will be returned as DELETED - * When GetTweetOptions.enable_deleted_state is false, deleted tweets - * will be returned as NOT_FOUND. - */ - DELETED = 14 - - /** - * The tweet once existed, had violated Twitter Rules, and has been deleted. - * When GetTweetOptions.enable_deleted_state is true, bounce-deleted tweets - * will be returned as BOUNCE_DELETED - * When GetTweetOptions.enable_deleted_state is false, bounce-deleted tweets - * will be returned as NOT_FOUND. - */ - BOUNCE_DELETED = 15 - - RESERVED_1 = 16 - RESERVED_2 = 17 - RESERVED_3 = 18 - RESERVED_4 = 19 -} - -enum TweetCreateState { - /** - * Tweet was created successfully. - */ - OK = 0, - - /** - * The user_id field from the creation request does not correspond to a user. - */ - USER_NOT_FOUND = 1, - - SOURCE_TWEET_NOT_FOUND = 2, - SOURCE_USER_NOT_FOUND = 3, - - /** - * @deprecated Users can now retweet their own tweets. - */ - CANNOT_RETWEET_OWN_TWEET = 4, - - CANNOT_RETWEET_PROTECTED_TWEET = 5, - CANNOT_RETWEET_SUSPENDED_USER = 6, - CANNOT_RETWEET_DEACTIVATED_USER = 7, - CANNOT_RETWEET_BLOCKING_USER = 8, - - ALREADY_RETWEETED = 9, - CONTRIBUTOR_NOT_SUPPORTED = 10, - - /** - * The created_via field from the creation request does not correspond to a - * known client application. - */ - DEVICE_SOURCE_NOT_FOUND = 11, - - MALWARE_URL = 12, - INVALID_URL = 13, - USER_DEACTIVATED = 14, - USER_SUSPENDED = 15, - TEXT_TOO_LONG = 16, - TEXT_CANNOT_BE_BLANK = 17, - DUPLICATE = 18, - - /** - * PostTweetRequest.in_reply_to_tweet_id was set to a tweet that cannot be found. - * - * This usually means that the tweet was recently deleted, but could also - * mean that the tweet isn't visible to the reply author. (This is the - * case for replies by blocked users.) - */ - IN_REPLY_TO_TWEET_NOT_FOUND = 19, - - INVALID_IMAGE = 20, - INVALID_ADDITIONAL_FIELD = 21, - RATE_LIMIT_EXCEEDED = 22, - INVALID_NARROWCAST = 23, - - /** - * Antispam systems (Scarecrow) denied the request. - * - * This happens for tweets that are probably spam, but there is some - * uncertainty. Tweets that Scarecrow is certain are spammy will appear to - * succeed, but will not be added to backends. - */ - SPAM = 24, - SPAM_CAPTCHA = 25, - - /** - * A provided media upload ID can't be resolved. - */ - MEDIA_NOT_FOUND = 26, - - /** - * Catch-all for when uploaded media violate some condition. - * - * For example, too many photos in a multi-photo-set, or including an - * animated gif or video in a multi-photo-set. - */ - INVALID_MEDIA = 27, - - /** - * Returned when Scarecrow tell us to rate limit a tweet request. - * - * Non verified users (i.e., phone verified, email verified) have more - * strict rate limit. - */ - SAFETY_RATE_LIMIT_EXCEEDED = 28, - - /** - * Scarecrow has rejected the creation request until the user completes the - * bounce assignment. - * - * This flag indicates that PostTweetResult.bounce will contain a Bounce - * struct to be propagated to the client. - */ - BOUNCE = 29, - - /** - * Tweet creation was denied because the user is in ReadOnly mode. - * - * As with SPAM, tweets will appear to succeed but will not be actually - * created. - */ - USER_READONLY = 30, - - /** - * Maximum number of mentions allowed in a tweet was exceeded. - */ - MENTION_LIMIT_EXCEEDED = 31, - - /** - * Maximum number of URLs allowed in a tweet was exceeded. - */ - URL_LIMIT_EXCEEDED = 32, - - /** - * Maximum number of hashtags allowed in a tweet was exceeded. - */ - HASHTAG_LIMIT_EXCEEDED = 33, - - /** - * Maximum number of cashtags allowed in a tweet was exceeded. - */ - CASHTAG_LIMIT_EXCEEDED = 34, - - /** - * Maximum length of a hashtag was exceeded. - */ - HASHTAG_LENGTH_LIMIT_EXCEEDED = 35, - - /** - * Returned if a request contains more than one attachment type, which - * includes media, attachment_url, and card_reference. - */ - TOO_MANY_ATTACHMENT_TYPES = 36, - - /** - * Returned if the request contained an attachment URL that isn't allowed. - */ - INVALID_ATTACHMENT_URL = 37, - - /** - * We don't allow users without screen names to be retweeted. - */ - CANNOT_RETWEET_USER_WITHOUT_SCREEN_NAME = 38, - - /** - * Tweets may not be allowed if replying or retweeting IPI'd tweets - * See go/tp-ipi-tdd for more details - */ - DISABLED_BY_IPI_POLICY = 39, - - /** - * This state expands our transparency around which URLs are blacklisted or limited - */ - URL_SPAM = 40, - - // Conversation controls are only valid when present on a root - // conversation tweet and quoted tweets. - INVALID_CONVERSATION_CONTROL = 41, - - // Reply Tweet is limited due to conversation controls state set on - // root conversation Tweet. - REPLY_TWEET_NOT_ALLOWED = 42, - - // Nudge is returned when the client provides nudgeOptions and tweetypie receives a nudge - // from the Jiminy strato column. - NUDGE = 43, - - // ApiError BadRequest (400) "Reply to a community tweet must also be a community tweet" - // -- Triggered when a user tries replying to a community tweet with a non community tweet. - COMMUNITY_REPLY_TWEET_NOT_ALLOWED = 44, - // ApiError Forbidden (403) "User is not authorized to post to this community" - // -- Triggered when a user tries posting to a public/closed community that they are not part of. - COMMUNITY_USER_NOT_AUTHORIZED = 45, - // ApiError NotFound (404) "Community does not exist" -- Triggered when: - // a) A user tries posting to a private community they are not a part of. - // b) A user tries posting to a non existent community - COMMUNITY_NOT_FOUND = 46, - // ApiError BadRequest (400) "Cannot retweet a community tweet" - // -- Triggered when a user tries to retweet a community tweet. Community tweets can not be retweeted. - COMMUNITY_RETWEET_NOT_ALLOWED = 47, - - // Attempt to tweet with Conversation Controls was rejected, e.g. due to feature switch authorization. - CONVERSATION_CONTROL_NOT_ALLOWED = 48, - - // Super follow tweets require a special permission to create. - SUPER_FOLLOWS_CREATE_NOT_AUTHORIZED = 49, - - // Not all params can go together. E.g. super follow tweets can not be community tweets. - SUPER_FOLLOWS_INVALID_PARAMS = 50, - - // ApiError Forbidden (403) "Protected user can not post to communities" - // -- Triggered when a protected user tries tweeting or replying - // to a community tweet. They are not allowed to create community tweets. - COMMUNITY_PROTECTED_USER_CANNOT_TWEET = 51, - - // ApiError Forbidden (451) "User is not permitted to engage with this exclusive tweet." - // -- Triggered when a user tries to reply to an exclusive tweet without being - // a superfollower of the tweet author. Could be used for other engagements in the future (e.g. favorite) - EXCLUSIVE_TWEET_ENGAGEMENT_NOT_ALLOWED = 52 - - /** - * ApiError BadRequest (400) "Invalid parameters on Trusted Friends tweet creation" - * - * Returned when either of the following occur: - * a) A user tries setting Trusted Friends Control on a reply - * b) A user tries setting Trusted Friends Control on a tweet with any of the following set: - * i) Conversation Control - * ii) Community - * iii) Exclusive Tweet Control - */ - TRUSTED_FRIENDS_INVALID_PARAMS = 53, - - /** - * ApiError Forbidden (403) - * - * Returned when a user tries to retweet a Trusted Friends tweet. - */ - TRUSTED_FRIENDS_RETWEET_NOT_ALLOWED = 54, - - /** - * ApiError Forbidden (457) - * - * Returned when a user tries to reply to a Trusted Friends tweet - * and they are not a trusted friend. - */ - TRUSTED_FRIENDS_ENGAGEMENT_NOT_ALLOWED = 55, - - /** - * ApiError BadRequest (400) "Invalid parameters for creating a CollabTweet or CollabInvitation" - * - * Returned when any of the following are true: - * a) A user tries setting Collab Control on a reply - * b) A user tries setting Collab Control on a tweet with any of the following set: - * i) Conversation Control - * ii) Community - * iii) Exclusive Tweet Control - * iv) Trusted Friends Control - **/ - COLLAB_TWEET_INVALID_PARAMS = 56, - - /** - * ApiError Forbidden (457) - * - * Returned when a user tries to create a Trusted Friends tweet but they are not allowed to tweet - * to the requested Trusted Friends list. - */ - TRUSTED_FRIENDS_CREATE_NOT_ALLOWED = 57, - - /** - * Returned when the current user is not allowed to edit in general, this might be due to missing - * roles during development, or a missing subscription. - */ - EDIT_TWEET_USER_NOT_AUTHORIZED = 58, - - /** - * Returned when a user tries to edit a Tweet which they didn't author. - */ - EDIT_TWEET_USER_NOT_AUTHOR = 59, - - /** - * Returned when a user tries edit a stale tweet, meaning a tweet which has already been edited. - */ - EDIT_TWEET_NOT_LATEST_VERSION = 60, - - /** - * ApiError Forbidden (460) - * - * Returned when a user tries to create a Trusted Friends tweet that quotes tweets a Trusted - * Friends tweet. - */ - TRUSTED_FRIENDS_QUOTE_TWEET_NOT_ALLOWED = 61, - - /** - * Returned when a user tries edit a tweet for which the editing time has already expired. - */ - EDIT_TIME_LIMIT_REACHED = 62, - - /** - * Returned when a user tries edit a tweet which has been already edited maximum number of times. - */ - EDIT_COUNT_LIMIT_REACHED = 63, - - /* Returned when a user tries to edit a field that is not allowed to be edited */ - FIELD_EDIT_NOT_ALLOWED = 64, - - /* Returned when the initial Tweet could not be found when trying to validate an edit */ - INITIAL_TWEET_NOT_FOUND = 65, - - /** - * ApiError Forbidden (457) - * - * Returned when a user tries to reply to a stale tweet - */ - STALE_TWEET_ENGAGEMENT_NOT_ALLOWED = 66, - - /** - * ApiError Forbidden (460) - * - * Returned when a user tries to create a tweet that quotes tweets a stale tweet - */ - STALE_TWEET_QUOTE_TWEET_NOT_ALLOWED = 67, - - /* Tweet cannot be edited because the initial tweet is - * marked as not edit eligible */ - NOT_ELIGIBLE_FOR_EDIT = 68, - - /* A stale version of an edit tweet cannot be retweeted - * Only latest version of an edit chain should be allowed to be retweeted. */ - STALE_TWEET_RETWEET_NOT_ALLOWED = 69, - - RESERVED_32 = 70, - RESERVED_33 = 71, - RESERVED_34 = 72, - RESERVED_35 = 73, - RESERVED_36 = 74, - RESERVED_37 = 75, -} - -enum UndeleteTweetState { - /** - * The Tweet was successfully undeleted. - */ - SUCCESS = 0, - - /** - * The Tweet was deleted and is still deleted. It cannot be undeleted - * because the tweet is no longer in the soft delete archive. - */ - SOFT_DELETE_EXPIRED = 1, - - /** - * The Tweet likely has never existed, and therefore cannot be undeleted. - */ - TWEET_NOT_FOUND = 2, - - /** - * The Tweet could not be undeleted because it was not deleted in - * the first place. - */ - TWEET_ALREADY_EXISTS = 3, - - /** - * The user who created the Tweet being undeleted could not be found. - */ - USER_NOT_FOUND = 4, - - /** - * The Tweet could not be undeleted because it is a retweet and the original - * tweet is gone. - */ - SOURCE_TWEET_NOT_FOUND = 5, - - /** - * The Tweet could not be undeleted because it is a retweet and the author - * of the original tweet is gone. - */ - SOURCE_USER_NOT_FOUND = 6, - - /** - * The Tweet was deleted and is still deleted. It cannot be undeleted - * because the tweet has been bounce deleted. Bounce deleted tweet - * has been found to violate Twitter Rules. go/bouncer go/bounced-tweet - */ - TWEET_IS_BOUNCE_DELETED = 7, - - /** - * This tweet cannot be undeleted because the tweet was created by a - * user when they were under 13. - **/ - TWEET_IS_U13_TWEET = 8, - - RESERVED_2 = 9, - RESERVED_3 = 10 -} - -enum TweetDeleteState { - /** - * Tweet was deleted successfully. - */ - OK = 0, - - /** - * Tweet was not deleted because of the associated user. - * - * The DeleteTweetsRequest.by_user_id must match the tweet owner or be an - * admin user. - */ - PERMISSION_ERROR = 1, - - /** - * The expected_user_id provided in DeleteTweetsRequest does not match the - * user_id of the tweet owner. - */ - EXPECTED_USER_ID_MISMATCH = 2, - - /** - * @deprecated. - * - * is_user_erasure was set in DeleteTweetsRequest but the user was not in - * the erased state. - */ - USER_NOT_IN_ERASED_STATE = 3, - - /** - * Failed to Load the source Tweet while unretweeting stale revisions in an edit chain. - */ - SOURCE_TWEET_NOT_FOUND = 4, - - RESERVED_4 = 5, - RESERVED_5 = 6, - RESERVED_6 = 7, - RESERVED_7 = 8 -} - -enum DeletedTweetState { - /** - * The tweet has been marked as deleted but has not been permanently deleted. - */ - SOFT_DELETED = 1 - - /** - * The tweet has never existed. - */ - NOT_FOUND = 2 - - /** - * The tweet has been permanently deleted. - */ - HARD_DELETED = 3 - - /** - * The tweet exists and is not currently deleted. - */ - NOT_DELETED = 4 - - RESERVED1 = 5 - RESERVED2 = 6 - RESERVED3 = 7 -} - -/** - * Hydrations to perform on the Tweet returned by post_tweet and post_retweet. - */ -struct WritePathHydrationOptions { - /** - * Return cards for tweets with cards in Tweet.cards or Tweet.card2 - * - * card2 also requires setting a valid cards_platform_key - */ - 1: bool include_cards = 0 - - /** - * The card format version supported by the requesting client - */ - 2: optional string cards_platform_key - - # 3: obsolete - # 4: obsolete - - /** - * The argument passed to the Stratostore extension points mechanism. - */ - 5: optional binary extensions_args - - /** - * When returning a tweet that quotes another tweet, do not include - * the URL to the quoted tweet in the tweet text and url entities. - * This is intended for clients that use the quoted_tweet field of - * the tweet to display quoted tweets. Also see simple_quoted_tweet - * field in GetTweetOptions and GetTweetFieldsOptions - */ - 6: bool simple_quoted_tweet = 0 -} - -struct RetweetRequest { - /** - * Id of the tweet being retweeted. - */ - 1: required i64 source_status_id (personalDataType = 'TweetId') - - /** - * User creating the retweet. - */ - 2: required i64 user_id (personalDataType = 'UserId') - - /** - * @see PostTweetRequest.created_via - */ - 3: required string created_via (personalDataType = 'ClientType') - 4: optional i64 contributor_user_id (personalDataType = 'UserId') // no longer supported - - /** - * @see PostTweetRequest.tracking_id - */ - 5: optional i64 tracking_id (personalDataType = 'ImpressionId') - 6: optional tweet.Narrowcast narrowcast - - /** - * @see PostTweetRequest.nullcast - */ - 7: bool nullcast = 0 - - /** - * @see PostTweetRequest.dark - */ - 8: bool dark = 0 - - // OBSOLETE 9: bool send_retweet_sms_push = 0 - - 10: optional WritePathHydrationOptions hydration_options - - /** - * @see PostTweetRequest.additional_fields - */ - 11: optional tweet.Tweet additional_fields - - /** - * @see PostTweetRequest.uniqueness_id - */ - 12: optional i64 uniqueness_id (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') - - 13: optional feature_context.FeatureContext feature_context - - 14: bool return_success_on_duplicate = 0 - - /** - * Passthrough data for Scarecrow that is used for safety checks. - */ - 15: optional safety_meta_data.SafetyMetaData safety_meta_data - - /** - * This is a unique identifier used in both the REST and GraphQL-dark - * requests that will be used to correlate the GraphQL mutation requests to the REST requests - * during a transition period when clients will be moving toward tweet creation via GraphQL. - * See also, the "Comparison Testing" section at go/tweet-create-on-graphql-tdd for additional - * context. - */ - 16: optional string comparison_id (personalDataType = 'UniversallyUniqueIdentifierUuid') -}(hasPersonalData = 'true') - -/** - * A request to set or unset nsfw_admin and/or nsfw_user. - */ -struct UpdatePossiblySensitiveTweetRequest { - /** - * Id of tweet being updated - */ - 1: required i64 tweet_id (personalDataType = 'TweetId') - - /** - * Id of the user initiating this request. - * - * It could be either the owner of the tweet or an admin. It is used when - * auditing the request in Guano. - */ - 2: required i64 by_user_id (personalDataType = 'UserId') - - /** - * New value for tweet.core_data.nsfw_admin. - */ - 3: optional bool nsfw_admin - - /** - * New value for tweet.core_data.nsfw_user. - */ - 4: optional bool nsfw_user - - /** - * Host or remote IP where the request originated. - * - * This data is used when auditing the request in Guano. If unset, it will - * be logged as "". - */ - 5: optional string host (personalDataType = 'IpAddress') - - /** - * Pass-through message sent to the audit service. - */ - 6: optional string note -}(hasPersonalData = 'true') - -struct UpdateTweetMediaRequest { - /** - * The tweet id that's being updated - */ - 1: required i64 tweet_id (personalDataType = 'TweetId') - - /** - * A mapping from old (existing) media ids on the tweet to new media ids. - * - * Existing tweet media not in this map will remain unchanged. - */ - 2: required map old_to_new_media_ids (personalDataTypeKey = 'MediaId', personalDataTypeValue = 'MediaId') -}(hasPersonalData = 'true') - -struct TakedownRequest { - 1: required i64 tweet_id (personalDataType = 'TweetId') - - /** - * The list of takedown country codes to add to the tweet. - * - * DEPRECATED, reasons_to_add should be used instead. - */ - 2: list countries_to_add = [] (personalDataType = 'ContentRestrictionStatus') - - /** - * This field is the list of takedown country codes to remove from the tweet. - * - * DEPRECATED, reasons_to_remove should be used instead. - */ - 3: list countries_to_remove = [] (personalDataType = 'ContentRestrictionStatus') - - /** - * This field is the list of takedown reasons to add to the tweet. - */ - 11: list reasons_to_add = [] - - /** - * This field is the list of takedown reasons to remove from the tweet. - */ - 12: list reasons_to_remove = [] - - /** - * Motivation for the takedown which is written to the audit service. - * - * This data is not persisted with the takedown itself. - */ - 4: optional string audit_note (personalDataType = 'AuditMessage') - - /** - * Whether to send this request to the audit service. - */ - 5: bool scribe_for_audit = 1 - - // DEPRECATED, this field is no longer used. - 6: bool set_has_takedown = 1 - - // DEPRECATED, this field is no longer used. - 7: optional list previous_takedown_country_codes (personalDataType = 'ContentRestrictionStatus') - - /** - * Whether this request should enqueue a TweetTakedownEvent to EventBus and - * Hosebird. - */ - 8: bool eventbus_enqueue = 1 - - /** - * ID of the user who initiated the takedown. - * - * This is used when writing the takedown to the audit service. If unset, it - * will be logged as -1. - */ - 9: optional i64 by_user_id (personalDataType = 'UserId') - - /** - * Host or remote IP where the request originated. - * - * This data is used when auditing the request in Guano. If unset, it will - * be logged as "". - */ - 10: optional string host (personalDataType = 'IpAddress') -}(hasPersonalData = 'true') - -// Arguments to delete_location_data -struct DeleteLocationDataRequest { - 1: i64 user_id (personalDataType = 'UserId') -}(hasPersonalData = 'true') - -// structs for API V2 (flexible schema) - -struct GetTweetOptions { - /** - * Return the original tweet in GetTweetResult.source_tweet for retweets. - */ - 1: bool include_source_tweet = 1 - - /** - * Return the hydrated Place object in Tweet.place for tweets with geolocation. - */ - 2: bool include_places = 0 - - /** - * Language used for place names when include_places is true. Also passed to - * the cards service, if cards are hydrated for the request. - */ - 3: string language_tag = "en" - - /** - * Return cards for tweets with cards in Tweet.cards or Tweet.card2 - * - * card2 also requires setting a valid cards_platform_key - */ - 4: bool include_cards = 0 - - /** - * Return the number of times a tweet has been retweeted in - * Tweet.counts.retweet_count. - */ - 5: bool include_retweet_count = 0 - - /** - * Return the number of direct replies to a tweet in - * Tweet.counts.reply_count. - */ - 6: bool include_reply_count = 0 - - /** - * Return the number of favorites a tweet has received in - * Tweet.counts.favorite_count. - */ - 7: bool include_favorite_count = 0 - - # OBSOLETE 8: bool include_unique_users_impressed_count = 0 - # OBSOLETE 9: bool include_click_count = 0 - # OBSOLETE 10: bool include_descendent_reply_count = 0 - - /** - * @deprecated Use safety_level for spam filtering. - */ - 11: optional tweet.SpamSignalType spam_signal_type - - /** - * If the requested tweet is not already in cache, do not add it. - * - * You should set do_not_cache to true if you are requesting old tweets - * (older than 30 days) and they are unlikely to be requested again. - */ - 12: bool do_not_cache = 0 - - /** - * The card format version supported by the requesting client - */ - 13: optional string cards_platform_key (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') - - /** - * The user for whose perspective this request should be processed. - * - * If you are requesting tweets on behalf of a user, set this to their user - * id. The effect of setting this option is: - * - * - Tweetypie will return protected tweets that the user is allowed to - * access, rather than filtering out protected tweets. - * - * - If this field is set *and* `include_perspectivals` is set, then the - * tweets will have the `perspective` field set to a struct with flags - * that indicate whether the user has favorited, retweeted, or reported - * the tweet in question. - * - * If you have a specific need to access all protected tweets (not - * just tweets that should be accessible to the current user), see the - * documentation for `include_protected`. - */ - 14: optional i64 for_user_id (personalDataType = 'UserId') - - /** - * Do not enforce normal filtering for protected tweets, blocked quote tweets, - * contributor data, etc. This does not affect Visibility Library (http://go/vf) - * based filtering which executes when safety_level is specified, see request - * field 24 safety_level below - * - * If `bypass_visibility_filtering` is true, Tweetypie will not enforce filtering - * for protected tweets, blocked quote tweets, contributor data, etc. and your client - * will receive all tweets regardless of follow relationship. You will also be able - * to access tweets from deactivated and suspended users. This is only necessary - * for special cases, such as indexing or analyzing tweets, or administrator access. - * Since this elevated access is usually unnecessary, and is a security risk, you will - * need to get your client id whitelisted to access this feature. - * - * If you are accessing tweets on behalf of a user, set - * `bypass_visibility_filtering` to false and set `for_user_id`. This will - * allow access to exactly the set of tweets that that user is authorized to - * access, and filter out tweets the user should not be authorized to access - * (returned with a StatusState of PROTECTED_USER). - */ - 15: bool bypass_visibility_filtering = 0 - - /** - * Return the user-specific view of a tweet in Tweet.perspective - * - * for_user_id must also be set. - */ - 16: bool include_perspectivals = 0 - - // OBSOLETE media faces are always included - 17: bool include_media_faces = 0 - - /** - * The flexible schema fields of the tweet to return. - * - * Fields of tweets in the 100+ range will only be returned if they are - * explicitly requested. - */ - 18: list additional_field_ids = [] - - // OBSOLETE 19: bool include_topic_labels = 0 - - /** - * Exclude user-reported tweets from this request. Only applicable if - * forUserId is set. - * - * Users can report individual tweets in the UI as uninteresting, spam, - * sensitive, or abusive. - */ - 20: bool exclude_reported = 0 - - // if set to true, disables suggested tweet visibility checks - // OBSOLETE (TwitterSuggestInfo version of suggested tweets has been removed) - 21: bool obsolete_skip_twitter_suggests_visibility_check = 0 - // OBSOLETE 22: optional set spam_signal_types - - /** - * Return the quoted tweet in GetTweetResult.quoted_tweet - */ - 23: bool include_quoted_tweet = 0 - - /** - * Content filtering policy that will be used to drop or suppress tweets - * from response. The filtering is based on the result of Visibility Library - * and does not affect filtering of tweets from blocked or non-followed protected users, see - * request field 15 bypass_visibility_filtering above - * - * If not specified SafetyLevel.FilterDefault will be used. - */ - 24: optional safety_level.SafetyLevel safety_level - - // obsolete 25: bool include_animated_gif_media_entities = 0 - 26: bool include_profile_geo_enrichment = 0 - // obsolete 27: optional set extensions - 28: bool include_tweet_pivots = 0 - - /** - * The argument passed to the Stratostore extension points mechanism. - */ - 29: optional binary extensions_args - - /** - * Return the number of times a tweet has been quoted in Tweet.counts.quote_count - */ - 30: bool include_quote_count = 0 - - /** - * Return media metadata from MediaInfoService in MediaEntity.additional_metadata - */ - 31: bool include_media_additional_metadata = 0 - - /** - * Populate the conversation_muted field of the Tweet for the requesting - * user. - * - * Setting this to true will have no effect unless for_user_id is set. - */ - 32: bool include_conversation_muted = 0 - - /** - * @deprecated go/sunsetting-carousels - */ - 33: bool include_carousels = 0 - - /** - * When enable_deleted_state is true and we have evidence that the - * tweet once existed and was deleted, Tweetypie returns - * StatusState.DELETED or StatusState.BOUNCE_DELETED. (See comments - * on StatusState for details on these two states.) - * - * When enable_deleted_state is false, deleted tweets are - * returned as StatusState.NOT_FOUND. - * - * Note: even when enable_deleted_state is true, a deleted tweet may - * still be returned as StatusState.NOT_FOUND due to eventual - * consistency. - * - * This option is false by default for compatibility with clients - * expecting StatusState.NOT_FOUND. - */ - 34: bool enable_deleted_state = 0 - - /** - * Populate the conversation_owner_id field of the Tweet for the requesting - * user. Which translate into is_conversation_owner in birdherd - * - */ - // obsolete 35: bool include_conversation_owner_id = 0 - - /** - * Populate the is_removed_from_conversation field of the Tweet for the requesting - * user. - * - */ - // obsolete 36: bool include_is_removed_from_conversation = 0 - - // To retrieve self-thread metadata request field Tweet.SelfThreadMetadataField - // obsolete 37: bool include_self_thread_info = 0 - - /** - * This option surfaces CardReference field (118) in Tweet thrift object. - * We use card_uri present in card reference, to get access to stored card information. - */ - 37: bool include_card_uri = 0 - - /** - * When returning a tweet that quotes another tweet, do not include - * the URL to the quoted tweet in the tweet text and url entities. - * This is intended for clients that use the quoted_tweet field of - * the tweet to display quoted tweets. - */ - 38: bool simple_quoted_tweet = 0 - - /** - * This flag is used and only take affect if the requested tweet is creatives container backed - * tweet. This will suprress the tweet materialization and return tweet not found. - * - * go/creatives-containers-tdd - **/ - 39: bool disable_tweet_materialization = 0 - - - /** - * Used for load shedding. If set to true, Tweetypie service might shed the request, if the service - * is struggling. - **/ - 40: optional bool is_request_sheddable - -}(hasPersonalData = 'true') - -struct GetTweetsRequest { - 1: required list tweet_ids (personalDataType = 'TweetId') - // @deprecated unused - 2: optional list source_tweet_id_hints (personalDataType = 'TweetId') - 3: optional GetTweetOptions options - // @deprecated unused - 4: optional list quoted_tweet_id_hints (personalDataType = 'TweetId') -}(hasPersonalData = 'true') - -/** - * Can be used to reference an arbitrary nested field of some struct via - * a list of field IDs describing the path of fields to reach the referenced - * field. - */ -struct FieldByPath { - 1: required list field_id_path -} - -struct GetTweetResult { - 1: required i64 tweet_id (personalDataType = 'TweetId') - - /** - * Indicates what happened when the tweet was loaded. - */ - 2: required StatusState tweet_state - - /** - * The requested tweet when tweet_state is `FOUND`, `PARTIAL`, or `SUPPRESS`. - * - * This field will be set if the tweet exists, access is authorized, - * and enough data about the tweet is available to materialize a - * tweet. When this field is set, you should look at the tweet_state - * field to determine how to treat this tweet. - * - * If tweet_state is FOUND, then this tweet is complete and passes the - * authorization checks requested in GetTweetOptions. (See - * GetTweetOptions.for_user_id for more information about authorization.) - * - * If tweet_state is PARTIAL, then enough data was available to return - * a tweet, but there was an error when loading the tweet that prevented - * some data from being returned (for example, if a request to the cards - * service times out when cards were requested, then the tweet will be - * marked PARTIAL). `missing_fields` indicates which parts of the tweet - * failed to load. When you receive a PARTIAL tweet, it is up to you - * whether to proceed with the degraded tweet data or to consider it a - * failure. For example, a mobile client might choose to display a - * PARTIAL tweet to the user, but not store it in an internal cache. - * - * If tweet_state is SUPPRESS, then the tweet is complete, but soft - * filtering is enabled. This state is intended to hide potentially - * harmful tweets from user's view while not taking away the option for - * the user to override our filtering decision. See http://go/rtf - * (render-time filtering) for more information about how to treat these - * tweets. - */ - 3: optional tweet.Tweet tweet - - /** - * The tweet fields that could not be loaded when tweet_state is `PARTIAL` - * or `SUPPRESS`. - * - * This field will be set when the `tweet_state` is `PARTIAL`, and may - * be set when `tweet_state` is SUPPRESS. It indicates degraded data in - * the `tweet`. Each entry in `missing_fields` indicates a traversal of - * the `Tweet` thrift object terminating at the field that is - * missing. For most non-core fields, the path will just be the field id - * of the field that is missing. - * - * For example, if card2 failed to load for a tweet, the `tweet_state` - * will be `PARTIAL`, the `tweet` field will be set, the Tweet's `card2` - * field will be empty, and this field will be set to: - * - * Set(FieldByPath(Seq(17))) - */ - 4: optional set missing_fields - - /** - * The original tweet when `tweet` is a retweet and - * GetTweetOptions.include_source_tweet is true. - */ - 5: optional tweet.Tweet source_tweet - - /** - * The retweet fields that could not be loaded when tweet_state is `PARTIAL`. - */ - 6: optional set source_tweet_missing_fields - - /** - * The quoted tweet when `tweet` is a quote tweet and - * GetTweetOptions.include_quoted_tweet is true. - */ - 7: optional tweet.Tweet quoted_tweet - - /** - * The quoted tweet fields that could not be loaded when tweet_state is `PARTIAL`. - */ - 8: optional set quoted_tweet_missing_fields - - /** - * The reason that a tweet should not be displayed when tweet_state is - * `SUPPRESS` or `DROP`. - */ - 9: optional safety_result.FilteredReason filtered_reason - - /** - * Hydrated carousel if the tweet contains a carousel URL and the - * GetTweetOptions.include_carousel is true. - * - * In this case Carousel Service is requested to hydrate the carousel, and - * the result stored in this field. - * - * @deprecated go/sunsetting-carousels - */ - 10: optional carousel_service.GetCarouselResult carousel_result - - /** - * If a quoted tweet would be present, but it was filtered out, then - * this field will be set to the reason that it was filtered. - */ - 11: optional safety_result.FilteredReason quoted_tweet_filtered_reason -}(hasPersonalData = 'true') - -union TweetInclude { - /** - * Field ID within the `Tweet` struct to include. All fields may be optionally included - * except for the `id` field. - */ - 1: FieldId tweetFieldId - - /** - * Field ID within the `StatusCounts` struct to include. Only specifically requested - * count fields will be included. Including any `countsFieldIds` values automatically - * implies including `Tweet.counts`. - * - */ - 2: FieldId countsFieldId - - /** - * Field ID within the `MediaEntity` struct to include. Currently, only `MediaEntity.additionalMetadata` - * may be optionally included (i.e., it will not be included by default if you include - * `tweetFieldId` = `Tweet.media` without also including `mediaEntityFieldId` = - * `MediaEntity.additionalMetadata`. Including any `mediaEntityFieldId` values automatically - * implies include `Tweet.media`. - */ - 3: FieldId mediaEntityFieldId -} - -/** - * An enumeration of policy options indicating how tweets should be filtered (protected tweets, blocked quote tweets, - * contributor data, etc.). This does not affect Visibility Library (http://go/vf) based filtering. - * This is equivalent to `bypass_visibility_filtering` in get_tweets() call. This means that - * `TweetVisibilityPolicy.NO_FILTERING` is equivalent to `bypass_visibility_filtering` = true - */ -enum TweetVisibilityPolicy { - /** - * only return tweets that should be visible to either the `forUserId` user, if specified, - * or from the perspective of a logged-out user if `forUserId` is not specified. This option - * should always be used if requesting data to be returned via the public API. - */ - USER_VISIBLE = 1, - - /** - * returns all tweets that can be found, regardless of user visibility. This option should - * never be used when gather data to be return in an API, and should only be used for internal - * processing. because this option allows access to potentially sensitive data, clients - * must be whitelisted to use it. - */ - NO_FILTERING = 2 -} - -struct GetTweetFieldsOptions { - /** - * Identifies which `Tweet` or nested fields to include in the response. - */ - 1: required set tweet_includes - - /** - * If true and the requested tweet is a retweet, then a `Tweet` - * containing the requested fields for the retweeted tweet will be - * included in the response. - */ - 2: bool includeRetweetedTweet = 0 - - /** - * If true and the requested tweet is a quote-tweet, then the quoted - * tweet will also be queried and the result for the quoted tweet - * included in `GetTweetFieldsResult.quotedTweetResult`. - */ - 3: bool includeQuotedTweet = 0 - - /** - * If true and the requested tweet contains a carousel URL, then the - * carousel will also be queried and the result for the carousel - * included in `GetTweetFieldsResult.carouselResult`. - * - * @deprecated go/sunsetting-carousels - */ - 4: bool includeCarousel = 0 - - /** - * If you are requesting tweets on behalf of a user, set this to their - * user id. The effect of setting this option is: - * - * - Tweetypie will return protected tweets that the user is allowed - * to access, rather than filtering out protected tweets, when `visibility_policy` - * is set to `USER_VISIBLE`. - * - * - If this field is set *and* `Tweet.perspective` is requested, then - * the tweets will have the `perspective` field set to a struct with - * flags that indicate whether the user has favorited, retweeted, or - * reported the tweet in question. - */ - 10: optional i64 forUserId (personalDataType = 'UserId') - - /** - * language_tag is used when hydrating a `Place` object, to get localized names. - * Also passed to the cards service, if cards are hydrated for the request. - */ - 11: optional string languageTag (personalDataType = 'InferredLanguage') - - /** - * if requesting card2 cards, you must specify the platform key - */ - 12: optional string cardsPlatformKey (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') - - /** - * The argument passed to the Stratostore extension points mechanism. - */ - 13: optional binary extensionsArgs - - /** - * the policy to use when filtering tweets for basic visibility. - */ - 20: TweetVisibilityPolicy visibilityPolicy = TweetVisibilityPolicy.USER_VISIBLE - - /** - * Content filtering policy that will be used to drop or suppress tweets from response. - * The filtering is based on the result of Visibility Library (http://go/vf) - * and does not affect filtering of tweets from blocked or non-followed protected users, see - * request field 20 visibilityPolicy above - * - * If not specified SafetyLevel.FilterNone will be used. - */ - 21: optional safety_level.SafetyLevel safetyLevel - - /** - * The tweet result won't be cached by Tweetypie if doNotCache is true. - * You should set it as true if old tweets (older than 30 days) are requested, - * and they are unlikely to be requested again. - */ - 30: bool doNotCache = 0 - - /** - * When returning a tweet that quotes another tweet, do not include - * the URL to the quoted tweet in the tweet text and url entities. - * This is intended for clients that use the quoted_tweet field of - * the tweet to display quoted tweets. - * - */ - 31: bool simple_quoted_tweet = 0 - - /** - * This flag is used and only take affect if the requested tweet is creatives container backed - * tweet. This will suprress the tweet materialization and return tweet not found. - * - * go/creatives-containers-tdd - **/ - 32: bool disable_tweet_materialization = 0 - - /** - * Used for load shedding. If set to true, Tweetypie service might shed the request, if the service - * is struggling. - **/ - 33: optional bool is_request_sheddable -}(hasPersonalData = 'true') - -struct GetTweetFieldsRequest { - 1: required list tweetIds (personalDataType = 'TweetId') - 2: required GetTweetFieldsOptions options -} (hasPersonalData = 'true') - -/** - * Used in `TweetFieldsResultState` when the requested tweet is found. - */ -struct TweetFieldsResultFound { - 1: required tweet.Tweet tweet - - /** - * If `tweet` is a retweet, `retweetedTweet` will be the retweeted tweet. - * Just like with the requested tweet, only the requested fields will be - * hydrated and set on the retweeted tweet. - */ - 2: optional tweet.Tweet retweetedTweet - - /** - * If specified, then the tweet should be soft filtered. - */ - 3: optional safety_result.FilteredReason suppressReason -} - -/** - * Used in `TweetFieldsResultState` when the requested tweet is not found. - */ -struct TweetFieldsResultNotFound { - // If this field is true, then we know that the tweet once existed and - // has since been deleted. - 1: bool deleted = 0 - - // This tweet is deleted after being bounced for violating the Twitter - // Rules and should never be rendered or undeleted. see go/bounced-tweet - // In certain timelines we render a tombstone in its place. - 2: bool bounceDeleted = 0 - - // The reason that a tweet should not be displayed. See go/vf-tombstones-in-tweetypie - // Tweets that are not found do not going through Visibility Filtering rule evaluation and thus - // are not `TweetFieldsResultFiltered`, but may still have a filtered_reason that distinguishes - // whether the unavailable tweet should be tombstoned or hard-filtered based on the Safety Level. - 3: optional safety_result.FilteredReason filtered_reason -} - -struct TweetFieldsPartial { - 1: required TweetFieldsResultFound found - - /** - * The tweet fields that could not be loaded when hydration fails - * and a backend fails with an exception. This field is populated - * when a tweet is "partially" hydrated, i.e. some fields were - * successfully fetched while others were not. - * - * It indicates degraded data in the `tweet`. Each entry in `missing_fields` - * indicates a traversal of the `Tweet` thrift object terminating at - * the field that is missing. For most non-core fields, the path will - * just be the field id of the field that is missing. - * - * For example, if card2 failed to load for a tweet, the tweet is marked "partial", - * the `tweet` field will be set, the Tweet's `card2` - * field will be empty, and this field will be set to: - * - * Set(FieldByPath(Seq(17))) - */ - 2: required set missingFields - - /** - * Same as `missing_fields` but for the source tweet in case the requested tweet - * was a retweet. - */ - 3: required set sourceTweetMissingFields -} -/** - * Used in `TweetFieldsResultState` when there was a failure loading the requested tweet. - */ -struct TweetFieldsResultFailed { - /** - * If true, the failure was the result of backpressure, which means the request - * should not be immediately retried. It is safe to retry again later. - * - * If false, the failure is probably transient and safe to retry immediately. - */ - 1: required bool overCapacity - - /** - * An optional message about the cause of the failure. - */ - 2: optional string message - - /** - * This field is populated when some tweet fields fail to load and the - * tweet is marked "partial" in tweetypie. It contains the tweet/RT - * information along with the set of tweet fields that failed to - * get populated. - */ - 3: optional TweetFieldsPartial partial -} - -/** - * Used in `TweetFieldsResultState` when the requested tweet has been filtered out. - */ -struct TweetFieldsResultFiltered { - 1: required safety_result.FilteredReason reason -} - -/** - * A union of the different possible outcomes of a fetching a single tweet. - */ -union TweetFieldsResultState { - 1: TweetFieldsResultFound found - 2: TweetFieldsResultNotFound notFound - 3: TweetFieldsResultFailed failed - 4: TweetFieldsResultFiltered filtered -} - -/** - * The response to get_tweet_fields will include a TweetFieldsResultRow for each - * requested tweet id. - */ -struct GetTweetFieldsResult { - /** - * The id of the requested tweet. - */ - 1: required i64 tweetId (personalDataType = 'TweetId') - - /** - * the result for the requested tweet - */ - 2: required TweetFieldsResultState tweetResult - - /** - * If quoted-tweets were requested and the primary tweet was found, - * this field will contain the result state for the quoted tweeted. - */ - 3: optional TweetFieldsResultState quotedTweetResult - - /** - * If the primary tweet was found, carousels were requested and there - * was a carousel URL in the primary tweet, this field will contain the - * result for the carousel. - * - * @deprecated - */ - 4: optional carousel_service.GetCarouselResult carouselResult -} - -struct TweetCreateConversationControlByInvitation { - 1: optional bool invite_via_mention -} - -struct TweetCreateConversationControlCommunity { - 1: optional bool invite_via_mention -} - -struct TweetCreateConversationControlFollowers { - 1: optional bool invite_via_mention -} - -/** - * Specify limits on user participation in a conversation. - * - * This is a union rather than a struct to support adding conversation - * controls that require carrying metadata along with them, such as a list id. - * - * See also: - * Tweet.conversation_control - * PostTweetRequest.conversation_control - */ -union TweetCreateConversationControl { - 1: TweetCreateConversationControlCommunity community - 2: TweetCreateConversationControlByInvitation byInvitation - 3: TweetCreateConversationControlFollowers followers -} - -/* - * Specifies the exclusivity of a tweet - * This limits the audience of the tweet to the author - * and the author's super followers - * While empty now, we are expecting to add additional fields in v1+ - */ -struct ExclusiveTweetControlOptions {} - -struct TrustedFriendsControlOptions { - 1: i64 trusted_friends_list_id = 0 (personalDataType = 'TrustedFriendsListMetadata') -}(hasPersonalData = 'true') - -struct CollabInvitationOptions { - 1: required list collaborator_user_ids (personalDataType = 'UserId') - // Note: status not sent here, will be added in TweetBuilder to set all but author as PENDING -} - -struct CollabTweetOptions { - 1: required list collaborator_user_ids (personalDataType = 'UserId') -} - -union CollabControlOptions { - 1: CollabInvitationOptions collabInvitation - 2: CollabTweetOptions collabTweet -} - -/** - * When this struct is supplied, this PostTweetRequest is interpreted as - * an edit of the Tweet whose latest version is represented by previous_tweet_id. - * If this is the first edit of a Tweet, this will be the same as the initial_tweet_id. - **/ -struct EditOptions { - /** - * The ID of the previous latest version of the Tweet that is being edited. - * If this is the first edit, this will be the same as the initial_tweet_id. - **/ - 1: required i64 previous_tweet_id (personalDataType = 'TweetId') -} - -struct NoteTweetOptions { - /** - * The ID of the NoteTweet to be associated with this Tweet. - **/ - 1: required i64 note_tweet_id (personalDataType = 'TwitterArticleID') - // Deprecated - 2: optional list mentioned_screen_names (personalDataType = 'Username') - /** - * The user IDs of the mentioned users - **/ - 3: optional list mentioned_user_ids (personalDataType = 'UserId') - /** - * Specifies if the Tweet can be expanded into the NoteTweet, or if they have the same text - **/ - 4: optional bool is_expandable -} - -struct PostTweetRequest { - /** - * Id of the user creating the tweet. - */ - 1: required i64 user_id (personalDataType = 'UserId') - - /** - * The user-supplied text of the tweet. - */ - 2: required string text (personalDataType = 'PrivateTweets, PublicTweets') - - /** - * The OAuth client application from which the creation request originated. - * - * This must be in the format "oauth:". For requests - * from a user this is the application id of their client; for internal - * services this is the id of an associated application registered at - * https://apps.twitter.com. - */ - 3: required string created_via (personalDataType = 'ClientType') - - 4: optional i64 in_reply_to_tweet_id (personalDataType = 'TweetId') - 5: optional TweetCreateGeo geo - 6: optional list media_upload_ids (personalDataType = 'MediaId') - 7: optional tweet.Narrowcast narrowcast - - /** - * Do not deliver this tweet to a user's followers. - * - * When true this tweet will not be fanned out, appear in the user's - * timeline, or appear in search results. It will be distributed via the - * firehose and available in the public API. - * - * This is primarily used to create tweets that can be used as ads without - * broadcasting them to an advertiser's followers. - * - */ - 8: bool nullcast = 0 - - /** - * The impression id of the ad from which this tweet was created. - * - * This is set when a user retweets or replies to a promoted tweet. It is - * used to attribute the "earned" exposure of an advertisement. - */ - 9: optional i64 tracking_id (personalDataType = 'ImpressionId') - - /** - * @deprecated. - * TOO clients don't actively use this input param, and the v2 API does not plan - * to expose this parameter. The value associated with this field that's - * stored with a tweet is obtained from the user's account preferences stored in - * `User.safety.nsfw_user`. (See go/user.thrift for more details on this field) - * - * Field indicates whether a individual tweet may contain objectionable content. - * - * If specified, tweet.core_data.nsfw_user will equal this value (otherwise, - * tweet.core_data.nsfw_user will be set to user.nsfw_user). - */ - 10: optional bool possibly_sensitive - - /** - * Do not save, index, fanout, or otherwise persist this tweet. - * - * When true, the tweet is validated, created, and returned but is not - * persisted. This can be used for dark testing or pre-validating a tweet - * scheduled for later creation. - */ - 11: bool dark = 0 - - /** - * IP address of the user making the request. - * - * This is used for logging certain kinds of actions, like attempting to - * tweet malware urls. - */ - 12: optional string remote_host (personalDataType = 'IpAddress') - - /** - * Additional fields to write with this tweet. - * - * This Tweet object should contain only additional fields to write with - * this tweet. Additional fields are tweet fields with id > 100. Set - * tweet.id to be 0; the id will be generated by Tweetypie. Any other non- - * additional fields set on this tweet will be considered an invalid - * request. - * - */ - 14: optional tweet.Tweet additional_fields - - 15: optional WritePathHydrationOptions hydration_options - - // OBSOLETE 16: optional bool bypass_rate_limit_for_xfactor - - /** - * ID to explicitly identify a creation request for the purpose of rejecting - * duplicates. - * - * If two requests are received with the same uniqueness_id, then they will - * be considered duplicates of each other. This only applies for tweets - * created within the same datacenter. This id should be a snowflake id so - * that it's globally unique. - */ - 17: optional i64 uniqueness_id (personalDataType = 'PrivateTweetEntitiesAndMetadata, PublicTweetEntitiesAndMetadata') - - 18: optional feature_context.FeatureContext feature_context - - /** - * Passthrough data for Scarecrow that is used for safety checks. - */ - 19: optional safety_meta_data.SafetyMetaData safety_meta_data - - // OBSOLETE 20: bool community_narrowcast = 0 - - /** - * Toggle narrowcasting behavior for leading @mentions. - * - * If in_reply_to_tweet_id is not set: - * - When this flag is true and the tweet text starts with a leading mention then the tweet - * will be narrowcasted. - * - * If in_reply_to_tweet_id is set: - * - If auto_populate_reply_metadata is true - * - Setting this flag to true will use the default narrowcast determination logic where - * most replies will be narrowcast but some special-cases of self-replies will not. - * - Setting this flag to false will disable narrowcasting and the tweet will be fanned out - * to all the author's followers. Previously users prefixed their reply text with "." to - * achieve this effect. - * - If auto_populate_reply_metadata is false, this flag will control whether a leading - * mention in the tweet text will be narrowcast (true) or broadcast (false). - */ - 21: bool enable_tweet_to_narrowcasting = 1 - - /** - * Automatically populate replies with leading mentions from tweet text. - */ - 22: bool auto_populate_reply_metadata = 0 - - /** - * Metadata at the tweet-asset relationship level. - */ - 23: optional map media_metadata - - /** - * An optional URL that identifies a resource that is treated as an attachment of the - * the tweet, such as a quote-tweet permalink. - * - * When provided, it is appended to the end of the tweet text, but is not - * included in the visible_text_range. - */ - 24: optional string attachment_url (personalDataType = 'CardId, ShortUrl') - - /** - * Pass-through information to be published in `TweetCreateEvent`. - * - * This data is not persisted by Tweetypie. - * - * @deprecated prefer transient_context (see field 27) over this. - */ - 25: optional map additional_context - - /** - * Users to exclude from the automatic reply population behavior. - * - * When auto_populate_reply_metadata is true, screen names appearing in the - * mention prefix can be excluded by specifying a corresponding user id in - * exclude_reply_user_ids. Because the mention prefix must always include - * the leading mention to preserve directed-at addressing for the in-reply- - * to tweet author, attempting to exclude that user id will have no effect. - * Specifying a user id not in the prefix will be silently ignored. - */ - 26: optional list exclude_reply_user_ids (personalDataType = 'UserId') - - /** - * Used to pass structured data to Tweetypie and tweet_events eventbus - * stream consumers. This data is not persisted by Tweetypie. - * - * If adding a new passthrough field, prefer this over additional_context, - * as this is structured data, while additional_context is text data. - */ - 27: optional transient_context.TransientCreateContext transient_context - - /** - * Composer flow used to create this tweet. Unless using the News Camera (go/newscamera) - * flow, this should be `STANDARD`. - * - * When set to `CAMERA`, clients are expected to display the tweet with a different UI - * to emphasize attached media. - */ - 28: optional tweet.ComposerSource composer_source - - /** - * present if we want to restrict replies to this tweet (go/dont-at-me-api) - * - This gets converted to Tweet.conversation_control and changes type - * - This is only valid for conversation root tweets - * - This applies to all replies to this tweet - */ - 29: optional TweetCreateConversationControl conversation_control - - // OBSOLETE 30: optional jiminy.CreateNudgeOptions nudge_options - - /** - * Provided if the client wants to have the tweet create evaluated for a nudge (e.g. to notify - * the user that they are about to create a toxic tweet). Reference: go/docbird/jiminy - */ - 31: optional jiminy.CreateTweetNudgeOptions nudge_options - - /** - * Provided for correlating requests originating from REST endpoints and GraphQL endpoints. - * Its presence or absence does not affect Tweet mutation. It used for validation - * and debugging. The expected format is a 36 ASCII UUIDv4. - * Please see API specification at go/graphql-tweet-mutations for more information. - */ - 32: optional string comparison_id (personalDataType = 'UniversallyUniqueIdentifierUuid') - - /** - * Options that determine the shape of an exclusive tweet's restrictions. - * The existence of this object indicates that the tweet is intended to be an exclusive tweet - * While this is an empty structure for now, it will have fields added to it later in later versions. - */ - 33: optional ExclusiveTweetControlOptions exclusiveTweetControlOptions - - 34: optional TrustedFriendsControlOptions trustedFriendsControlOptions - - /** - * Provided if tweet data is backed up by a creative container, that at tweet hydration - * time, tweetypie would delegate to creative container service. - * - * go/creatives-containers-tdd - * Please note that this id is never publically shared with clients, its only used for - * internal purposes. - */ - 35: optional i64 underlying_creatives_container_id (personalDataType = 'TweetId') - - /** - * Provided if tweet is a CollabTweet or a CollabInvitation, along with a list of Collaborators - * which includes the original author. - * - * go/collab-tweets - **/ - 36: optional CollabControlOptions collabControlOptions - - /** - * When supplied, this PostTweetRequest is an edit. See [[EditOptions]] for more details. - **/ - 37: optional EditOptions editOptions - - /** - * When supplied, the NoteTweet specified is associated with the created Tweet. - **/ - 38: optional NoteTweetOptions noteTweetOptions -} (hasPersonalData = 'true') - -struct SetAdditionalFieldsRequest { - 1: required tweet.Tweet additional_fields -} - -struct DeleteAdditionalFieldsRequest { - 1: required list tweet_ids (personalDataType = 'TweetId') - 2: required list field_ids -}(hasPersonalData = 'true') - -struct DeleteTweetsRequest { - 1: required list tweet_ids (personalDataType = 'TweetId') - // DEPRECATED and moved to tweetypie_internal.thrift's CascadedDeleteTweetsRequest - 2: optional i64 cascaded_from_tweet_id (personalDataType = 'TweetId') - 3: optional tweet_audit.AuditDeleteTweet audit_passthrough - - /** - * The id of the user initiating this request. - * - * It could be either the owner of the tweet or an admin. If not specified - * we will use TwitterContext.userId. - */ - 4: optional i64 by_user_id (personalDataType = 'UserId') - - - /** - * Where these tweets are being deleted as part of a user erasure, the process - * of deleting tweets belonging to deactivated accounts. - * - * This lets backends optimize processing of mass deletes of tweets from the - * same user. Talk to the Tweetypie team before setting this flag. - */ - 5: bool is_user_erasure = 0 - - /** - * Id to compare with the user id of the tweets being deleted. - * - * This provides extra protection against accidental deletion of tweets. - * This is required when is_user_erasure is true. If any of the tweets - * specified in tweet_ids do not match expected_user_id a - * EXPECTED_USER_ID_MISMATCH state will be returned. - */ - 6: optional i64 expected_user_id (personalDataType = 'UserId') - - /** - * A bounced tweet is a tweet that has been found to violate Twitter Rules. - * This is represented as a tweet with its bounce_label field set. - * - * When the Tweet owner deletes their offending bounced tweet in the Bounced workflow, Bouncer - * will submit a delete request with `is_bounce_delete` set to true. If the tweet(s) being deleted - * have a bounce_label set, this request results in the tweet transitioning into the - * BounceDeleted state which means the tweet is partially deleted. - * - * Most of the normal tweet deletion side-effects occur but the tweet remains in a - * few tflock graphs, tweet cache, and a Manhattan marker is added. Other than timelines services, - * bounce deleted tweets are considered deleted and will return a StatusState.BounceDelete. - * - * After a defined grace period, tweets in this state will be fully deleted. - * - * If the tweet(s) being deleted do not have the bounce_label set, they will be deleted as usual. - * - * Other than Bouncer, no service should use `is_bounce_delete` flag. - */ - 7: bool is_bounce_delete = 0 - - /** - * This is a unique identifier used in both the REST and GraphQL-dark - * requests that will be used to correlate the GraphQL mutation requests to the REST requests - * during a transition period when clients will be moving toward tweet creation via GraphQL. - * See also, the "Comparison Testing" section at go/tweet-create-on-graphql-tdd for additional - * context. - */ - 8: optional string comparison_id (personalDataType = 'UniversallyUniqueIdentifierUuid') - - /** - * When an edited tweet is deleted via daemons, we take a different action - * than if it was deleted normally. If deleted normally, we delete the - * initial tweet in the chain. When deleted via daemons, we delete the actual tweet. - */ - 9: optional bool cascaded_edited_tweet_deletion -}(hasPersonalData = 'true') - -struct DeleteTweetResult { - 1: required i64 tweet_id (personalDataType = 'TweetId') - 2: required TweetDeleteState state -}(hasPersonalData = 'true') - -struct UnretweetResult { - /** - * Id of the retweet that was deleted if a retweet could be found. - */ - 1: optional i64 tweet_id (personalDataType = 'TweetId') - - 2: required TweetDeleteState state -}(hasPersonalData = 'true') - -struct PostTweetResult { - 1: required TweetCreateState state - - /** - * The created tweet when state is OK. - */ - 2: optional tweet.Tweet tweet - - /** - * The original tweet when state is OK and tweet is a retweet. - */ - 3: optional tweet.Tweet source_tweet - - /** - * The quoted tweet when state is OK and tweet is a quote tweet. - */ - 4: optional tweet.Tweet quoted_tweet - - /** - * The required user remediation from Scarecrow when state is BOUNCE. - */ - 5: optional bounce.Bounce bounce - - /** - * Additional information when TweetCreateState is not OK. - * - * Not all failures provide a reason. - */ - 6: optional string failure_reason - - // OBSOLETE 7: optional jiminy.Nudge nudge - - /** - * Returned when the state is NUDGE to indicate that the tweet has not been created, and that - * the client should instead display the nudge to the user. Reference: go/docbird/jiminy - */ - 8: optional jiminy.TweetNudge nudge -} (persisted = "true", hasPersonalData = "true") - -/** - * Specifies the cause of an AccessDenied error. - */ -enum AccessDeniedCause { - // obsolete: INVALID_CLIENT_ID = 0, - // obsolete: DEPRECATED = 1, - USER_DEACTIVATED = 2, - USER_SUSPENDED = 3, - - RESERVED_4 = 4, - RESERVED_5 = 5, - RESERVED_6 = 6 -} - -/** - * AccessDenied error is returned by delete_tweets endpoint when - * by_user_id is suspended or deactivated. - */ -exception AccessDenied { - 1: required string message - 2: optional AccessDeniedCause errorCause -} - -struct UndeleteTweetRequest { - 1: required i64 tweet_id (personalDataType = 'TweetId') - 2: optional WritePathHydrationOptions hydration_options - - /** - * Perform the side effects of undeletion even if the tweet is not deleted. - * - * This flag is useful if you know that the tweet is present in Manhattan - * but is not undeleted with respect to other services. - */ - 3: optional bool force -}(hasPersonalData = 'true') - -struct UndeleteTweetResponse { - 1: required UndeleteTweetState state - 2: optional tweet.Tweet tweet -} - -struct EraseUserTweetsRequest { - 1: required i64 user_id (personalDataType = 'UserId') -}(hasPersonalData = 'true') - -struct UnretweetRequest { - /** - * The id of the user who owns the retweet. - */ - 1: required i64 user_id (personalDataType = 'UserId') - - /** - * The source tweet that should be unretweeted. - */ - 2: required i64 source_tweet_id (personalDataType = 'TweetId') - - /** - * This is a unique identifier used in both the REST and GraphQL-dark - * requests that will be used to correlate the GraphQL mutation requests to the REST requests - * during a transition period when clients will be moving toward tweet creation via GraphQL. - * See also, the "Comparison Testing" section at go/tweet-create-on-graphql-tdd for additional - * context. - */ - 3: optional string comparison_id (personalDataType = 'UniversallyUniqueIdentifierUuid') -}(hasPersonalData = 'true') - -struct GetDeletedTweetsRequest { - 1: required list tweetIds (personalDataType = 'TweetId') -}(hasPersonalData = 'true') - -struct GetDeletedTweetResult { - 1: required i64 tweetId (personalDataType = 'TweetId') - 2: required DeletedTweetState state - 4: optional deleted_tweet.DeletedTweet tweet -}(hasPersonalData = 'true') - -/** - * Flushes tweets and/or their counts from cache. - * - * Typically will be used manually for testing or when a particular problem is - * found that needs to be fixed by hand. Defaults to flushing both tweet - * struct and associated counts. - */ -struct FlushRequest { - 1: required list tweet_ids (personalDataType = 'TweetId') - 2: bool flushTweets = 1 - 3: bool flushCounts = 1 -}(hasPersonalData = 'true') - -/** - * A request to retrieve counts for one or more tweets. - */ -struct GetTweetCountsRequest { - 1: required list tweet_ids (personalDataType = 'TweetId') - 2: bool include_retweet_count = 0 - 3: bool include_reply_count = 0 - 4: bool include_favorite_count = 0 - 5: bool include_quote_count = 0 - 6: bool include_bookmark_count = 0 -}(hasPersonalData = 'true') - -/** - * A response optionally indicating one or more counts for a tweet. - */ -struct GetTweetCountsResult { - 1: required i64 tweet_id (personalDataType = 'TweetId') - 2: optional i64 retweet_count (personalDataType = 'CountOfPrivateRetweets, CountOfPublicRetweets') - 3: optional i64 reply_count (personalDataType = 'CountOfPrivateReplies, CountOfPublicReplies') - 4: optional i64 favorite_count (personalDataType = 'CountOfPrivateLikes, CountOfPublicLikes') - 5: optional i64 quote_count (personalDataType = 'CountOfPrivateRetweets, CountOfPublicRetweets') - 6: optional i64 bookmark_count (personalDataType = 'CountOfPrivateLikes') -}(hasPersonalData = 'true') - -/** - * A request to increment the cached favorites count for a tweet. - * - * Negative values decrement the count. This request is automatically - * replicated to other data centers. - */ -struct IncrTweetFavCountRequest { - 1: required i64 tweet_id (personalDataType = 'TweetId') - 2: required i32 delta (personalDataType = 'CountOfPrivateLikes, CountOfPublicLikes') -}(hasPersonalData = 'true') - -/** - * A request to increment the cached bookmarks count for a tweet. - * - * Negative values decrement the count. This request is automatically - * replicated to other data centers. - */ -struct IncrTweetBookmarkCountRequest { - 1: required i64 tweet_id (personalDataType = 'TweetId') - 2: required i32 delta (personalDataType = 'CountOfPrivateLikes') -}(hasPersonalData = 'true') - -/** - * Request to scrub geolocation from 1 or more tweets, and replicates to other - * data centers. - */ -struct GeoScrub { - 1: required list status_ids (personalDataType = 'TweetId') - // OBSOLETE 2: bool write_through = 1 - 3: bool hosebird_enqueue = 0 - 4: i64 user_id = 0 (personalDataType = 'UserId') // should always be set for hosebird enqueue -}(hasPersonalData = 'true') - -/** - * Contains different indicators of a tweets "nsfw" status. - */ -struct NsfwState { - 1: required bool nsfw_user - 2: required bool nsfw_admin - 3: optional safety_label.SafetyLabel nsfw_high_precision_label - 4: optional safety_label.SafetyLabel nsfw_high_recall_label -} - -/** - * Interface to Tweetypie - */ -service TweetService { - /** - * Performs a multi-get of tweets. This endpoint is geared towards fetching - * tweets for the API, with many fields returned by default. - * - * The response list is ordered the same as the requested ids list. - */ - list get_tweets(1: GetTweetsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Performs a multi-get of tweets. This endpoint is geared towards internal - * processing that needs only specific subsets of the data. - * - * The response list is ordered the same as the requested ids list. - */ - list get_tweet_fields(1: GetTweetFieldsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Execute a {@link GetTweetCountsRequest} and return one or more {@link GetTweetCountsResult} - */ - list get_tweet_counts(1: GetTweetCountsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Set/Update additional fields on an existing tweet - */ - void set_additional_fields(1: SetAdditionalFieldsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Delete additional fields on a tweet - */ - void delete_additional_fields(1: DeleteAdditionalFieldsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Creates and saves a tweet. - * - * URLs contained in the text will be shortened via Talon. Validations that are - * handled by this endpoint include: - * - * - tweet length not greater than 140 display characters, after URL shortening; - * - tweet is not a duplicate of a recently created tweet by the same user; - * - user is not suspended or deactivated; - * - text does not contain malware urls, as determined by talon; - * - * Checks that are not handled here that should be handled by the web API: - * - oauth authentication; - * - client application has narrowcasting/nullcasting privileges; - */ - PostTweetResult post_tweet(1: PostTweetRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Creates and saves a retweet. - * - * Validations that are handled by this endpoint include: - * - * - source tweet exists; - * - source-tweet user exists and is not suspended or deactivated; - * - source-tweet user is not blocking retweeter; - * - user has not already retweeted the source tweet; - * - * Checks that are not handled here that should be handled by the web API: - * - oauth authentication; - * - client application has narrowcasting/nullcasting privileges; - */ - PostTweetResult post_retweet(1: RetweetRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Remove tweets. It removes all associated fields of the tweets in - * cache and the persistent storage. - */ - list delete_tweets(1: DeleteTweetsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error, - 3: AccessDenied access_denied) - - /** - * Restore a deleted Tweet. - * - * Tweets exist in a soft-deleted state for N days during which they can be - * restored by support agents following the internal restoration guidelines. - * If the undelete succeeds, the Tweet is given similar treatment to a new - * tweet e.g inserted into cache, sent to the timeline service, reindexed by - * TFlock etc. - */ - UndeleteTweetResponse undelete_tweet(1: UndeleteTweetRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Add or remove takedown countries associated with a Tweet. - */ - void takedown(1: TakedownRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Set or unset the nsfw_admin and/or nsfw_user bit of tweet.core_data. - **/ - void update_possibly_sensitive_tweet(1: UpdatePossiblySensitiveTweetRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error - ) - - /** - * Delete all tweets for a given user. Currently only called by Test User Service, but we - * can also use it ad-hoc. - * - * Note: regular user erasure is handled by the EraseUserTweets daemon. - */ - void erase_user_tweets(1: EraseUserTweetsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Unretweet a given tweet. - * - * There are two ways to unretweet: - * - call deleteTweets() with the retweetId - * - call unretweet() with the retweeter userId and sourceTweetId - * - * This is useful if you want to be able to undo a retweet without having to - * keep track of a retweetId. - */ - UnretweetResult unretweet(1: UnretweetRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Get tweet content and deletion times for soft-deleted tweets. - * - * The response list is ordered the same as the requested ids list. - */ - list get_deleted_tweets(1: GetDeletedTweetsRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Execute a {@link FlushRequest} - */ - void flush(1: FlushRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Execute an {@link IncrTweetFavCountRequest} - */ - void incr_tweet_fav_count(1: IncrTweetFavCountRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Execute an {@link IncrTweetBookmarkCountRequest} - */ - void incr_tweet_bookmark_count(1: IncrTweetBookmarkCountRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Delete location data from all of a user's tweets. - * - * This endpoint initiates the process of deleting the user's location data - * from all of their tweets, as well as clearing the has_geotagged_statuses - * flag of the user. This method returns as soon as the event is enqueued, - * but the location data won't be scrubbed until the event is processed. - * Usually the latency for the whole process to complete is small, but it - * could take up to a couple of minutes if the user has a very large number - * of tweets, or if the request gets backed up behind other requests that - * need to scrub a large number of tweets. - * - * The event is processed by the Tweetypie geoscrub daemon. - * - */ - void delete_location_data(1: DeleteLocationDataRequest request) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) - - /** - * Execute a {@link GeoScrub} request. - * - */ - void scrub_geo(1: GeoScrub geo_scrub) throws ( - 1: exceptions.ClientError client_error, - 2: exceptions.ServerError server_error) -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.docx new file mode 100644 index 0000000000000000000000000000000000000000..8175adc281c969e5931c5c611d278621600ae0b5 GIT binary patch literal 36994 zcmagEWmp}_wm*!!dvJGmcL)S`m!Ls6?rc1`TX1)G2<{FcxLc4waQFYt%$##(&b{}2 zzcde3wSKZzcXf5`QkH{+!U6*Wg9CF(=h3cGEs9SD2Ll^}0RzJXwdzR#>|M<5U5wN{ z9n75#m_6)lo01ijRz=Z1pS@tGun3cSOQ2$x?>NvpFvjCc)@0o9>MXIG$U{8bP4I_n z%qWM#Fvn-6-T4x))(ds{G*jzINS+uNWNHi#goY{%Ip%&4Z_s6 zX8OFF<_2fot?lPG!U#DN&(#e~)_wqsp{a`1#2^_8fm0P4gAS`HnBmFmpm0!EJsP3e zW%#r=rtJ1I;pa~NAmJ~S{j$VNt(j$$f$%ke_e;3(xrX#-?Sn) zM^Ha=X^7ORwu{B4jB@btyg438ko(@`2J0>JNh z&zFhQVtb%W@k&>xill)yPA~Dn*{-R@LPi0>5<{_Vkd}$gd|=*Uul6S0MPs|s8e9r| zM*x|J`cANpZF=Ml1&XLS^&Pi`CaEyP2Iin1UBl^&ShcvM5xt!ZN@;LeBKkF=3$2!` zFVidl1|Tip%oR~m)%L^IJ>p)Z*+s_KU-T%>0bMOk(Tok3w-80v5%XF?_Fy`uJgzMh z=j&s;@+ZBD3+BTh2_-c{56Wwp$qtMGUdu+ol9|@s_xntg6q8zBQx>ipK`MR@)5O16 z>r&5jn_`!I;YMflxX=EXps>$~YF41zd#7OP+Eca^JzrIFaNk+aj7w6pPDYC3q)#AKEaW!;><jb zXkZ@Pnx5MRV4$dOcy4ZIjmeqHU&O_%m7^B(rFoo}CiNpQb3G4b*j>mn6h15I?)t)t zEh9-5t3)glO7^SFcgC*C{KE#nxA(8_mIxW{c`l&vjx13O>1N#}UZ49e3I17^>(y1< zV^Cdep}@e<{$7`l4i0~mMSa|Ul@+byi2=&MCBh0;Oa(6?a6xQFVjaIWA+u#}jQm49 zR2$n4(Dxw>o9{ErO}IdVz*FPc)1sIKY@^~Q4earU{1Iixb%dsxh~fR!$pdm{sB-8s zY|TM*14pCjv8s6(CU}=LE#>MlZ}J9{i3?&_2WKUQX_plg(Tzs$;&w#`pKs6RqEf%y z>h1^5la-s6HomB^Dn(R4zSMlG@GPAc;(EV(bEK1!jEo`;@$rQNYTUEJigr0n8drgo zfX%q`eBu+7HKMo6O}*Jq^ju3jJzT+A3ejU?Mu*E;r27GcAGoH4TcW^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+MtSBQAeD?Pt|uCW%@RE`LR* z^qra!mZ}@Ct@yCRTuCNWJw!v9LiA)pLcm~3cdB)8AhD=xpr{v(ox_EX?nbp80&D}{ z1JFPx*$Ck&zjxE!A-Vg6|ANMRVaIl`_24Rmc;pVl3v6wGCr&+qw|yCn8Yd2DwcSij z7M|4Fq!b9v#MSV&RfJ~-Ot(x^$>Qg38S=xuoMsp zWl`hi>|Rg%mp^PJql(xI#ARiqZCDFZug<12c-1PI#dHJVz7Hr2V${?&NBC~mLVU0u zqO#O|m%PfRR#bDD$#G6l#Nme#9FU=*%f<>bX`tMeKXknPp@~FScG-d-K9ED-xoz-1 zA--I6$D-OrmWlZWL+KFJ)iv-7c9TypbjvXg!%ANzM$H2IDVt)m;0gyDMwnL75^cqk zi$MNMEnnUp*)oymeEZtW6&D<3Wg(qM)77fPj6=hc|C;x9uXzT2rV#UC4X2&M68Ncv z$T3QCz9~?|1n(DmJdTOC2?;{Z>Kf}iYNIRGMWn2DpG-haV|fJ;z8~RA({t@$pY*wV z?IRv?jRo=h{pMV39OcoS<0AERW+-;?*hFrMPCmDikgIUI-jQ@2O@$G1dE&y{h>!QvxPkcSM)=7|a#+ z32b-st(60Shkdu|j{lz07+uphq&J}Q5!GUh3ey#4z$UTi-~jOOFhq~6a|A_~+IHl- z@5|67gJ_U~Ni6*%A!ww!JMEaYmaE|h!mp~U?->iS`$VCipB?=vt>pyW=#o5=VIaMr zH!|Z`sS%5ybSfFF<-hI}zf~(ZGqZYW&r_21qQ8?j$uGY}Oho7_c-ITeUTDp@l)#!^ ztW-25Z>^gS_ML%!UH;xh$~o>a41E@BLizFhwfosCjQ{m2Ct0tiu4ro-i`Nb4t8)X1 zv)KA7ziV`On6m(wA$f~dbwfge@lqao-^|}RD|&8FXlLySZ)N3AG;{eY#yoC0amg1r z%v{l=@)!nFpkSP3<6JeS9*z_xq12FdrucG=J$oinl3zHY7rk*FC77@| z4Cb)o=637#Ji|$>v?m4Mk9Zx6my(BwW0&;%kXw*+6bo|Ql@E}4PBwtAr!3_UH2-{f z?fnTb*g>=UIA~TU1kLJyJiLFdN&fx_|G7R%5>pCd#ru5riqIF5h*fMK`R-RfbvwOu zO_5KC^h(05#NMXfx*4OyPQdORw{H%O-R$J8+QNna9z)}YK;9?_RIJ$$WpfNcOVrfk zo(35WF`Ftda6?#?AaafO+ay5vul2Op9Yo)PNWs0Qj0D4X)^Mcc5eqYDqE)e=6} z^XNk8NX{gD`52m$?c&u=elc0ydf8cNvn8^g?%cbj*q|BMhYnS@G;eG`!9``fb9V6U z=H86Z?*-Nn!J=`VP@;G*;8{UG8p8-m^DYyzpX1)xYHZhH!4yo=y;~wxg1x9VQ*9ga zvV*xv`fk+lGFhdP!Fw}qL+S$d^*4+7zY0|(T zaYwq|x4S#P!07phU0g8O@RU7Rf*avS@6PPHGY$og*QjiOG05UFYfVM(%3UJJWnBnLNE}2LNC2d;}i$ zPd#)`vr|@I>|ahZL>7kuuMe?r4^N9{F(o1`$GZmi59=50sq^hm2eUtK+CxKkk33)M z1z+vnzHWrD09Qy1Q%cUK`wv1>_qNAZk6S8U#*Z%>J=bh`N<>I1dwV*SKJ$e|)xTX^ zHRyUj&99Doxkre+IcNj=(eK)Kul8>|-kns8d@{NVEm`abHVG5=TLPD}hrM;|-4;K7 zR{WToI(bwpaw?MbiX$xV^!`G5dpI=c-iT%O2_(vW({JMhb$s~baov~q+lz?!q|k}h z259MK=glweM+_9E^rQA0d_%l#pS?Ieb|2rhZg{}^fDG%g9BkT|a}tyBbe?>3>5)#v zGkzTjbYk*);q#)nO03wWbM@@uPVQ98Vr(^RsJT^X<~tJL`J6 zk$ALFO(pJk++1ft-2{G-BJq*QJ|TM>sCno%>8%-`r%q{jcF_$5qNh{gyR^f1o^Rl{ zr-}eQBh}k|1Wqu?YQp2LYf+(#LQgUHr$ZZ1Lu;xu9T?OmF^S8 zgVk8T&i#+KI^AyRY=W+@deYnvbdNpUUUzI%G_Uuo`))i3h5IQo zo@~B!2r`P0q|{8i&#dXjsj~NlwhSjORiVt=-}L{i-Sn--GS#s*c}`tC*mHEQ#3?L& zj72|hds_T>rA}u(kY;%w^wwcey)gZBGW+Oo=lC)#dwV5vaweRqBHd&#KX=~0e|7cq zwBI?ClOd#yut+QVt$*L6oH+A}RwD>;`P<$-mESqZqEbdnYNR#Pw=f%qh}v=~UQzUT za7p5ih3s8DFYP@S6aFVjz=aTKoW) zp!l`B(r=THct@_1Qq-azrf~$ENI( zw%tx5S|K;&2RPLX1S+WB14&1+qr`$>#wHzA@wgQiIx;xR4Xhp`xT|7+tYA+yQG}Ha zI#NWtjmoS788}r628=+5gcg6&%pV2Z!a?hn;-iSA8k9luBYyQ$DwqH)Tty$jPYn_p6Q zp0tZt)7AIv0o+f=PnTq&J-O!tf>b~%O;TKGYqLk!re7PT-jba&p``ZQzGM6H@VM?;QG^zYny@nptsm_|KfyO-lrvxE4}-n*_@hfkD8zJ!b%5w`=j~W_tBdo z1}!&|Br*0o%*&$5`Y~r*@%V2~4oDJAp3}x?jB8~?nVW-aq_?L)x1~&XeKRC3r=O@RF^Pa_t2gg#_b5)zrpv#UCDEQ{?2+Y?A zreSfnYA-OxZ?|}!!L#}NN*pw?x(BEDo&%`-WrjMHp)7g~b6$seu4V9s5^*+>5nRc{ ztm-k7VcF7PPhWx}a~z(!zirsLx`Uw&Ny`ace{}zALiEoM&3V;kuKmeaSp(br;Xyws zWBe1>WHOqCO^=T_GOqkq&vVfigQUL@a~^$$<$Lr{9+G1mMw!}_hTF<>^xxuPUIggN zcRRLk^HBIc7gH{Bo=KTj<3_V}ep*9jaf&`Cw?uo{?>xjh+S!*N;Zb>C!1ozZp_Q4l z*CkJuNB>i0EFzslHF%ISGMbOo*i8{#F^fX`wj8Ff4?G*uM?T%+!m$UhP#w(4cG40| z^kLu6Ca3+~XKHi4B|oxvPX&uM<<PZ zJ*dV%aT%`#7nGhlJEKS`j8l*2+@_+)L=k-LP(RI9ZIcTEe5;;+ddBST_EGV_;L?58 zkbGz)eLx00Vb|g?+$6v>e?Yb+d$)9y9zal$B9}hP%vBO?rr7SjA1was>L|NIXiAH% z)>TmTT`e&RnDg}U^Ut_m=nK7q;^|Sg<(f4w3Qb@jbG|@JYhsTERSSmhfB}jYZkqziA`ctCaxCN8vy(Gt zF-HY;in`>vul97KN&4V&_|ZxW7hvNU5%1>_ySCL(VD4U=Qs!ITGETRLlHnYMSgFsk zhC|ABsXrGX%mSMJ7;QQtyXKFFNNeelN1{!IYk35Gy)>dX^r9};opA!L#nKvjY^*AC z0sq{MfxXyL4|JwM5_P4QdQ_oJk(YNZ5>q08>%KM>r}=_ngIjjOvCFY#+e3wp%Y>e9 zV~qN0vA-rT9g_3$SG1b64#P^&O4A~b=j>zEJ5{4^p!Vdx*DCl*4ULu$@gIvU(=g5u zq;QD+l$GOV)Dh?TXy`--_+=g2a}30(IOCBo64p-}&kt`1p&Dgmv^{1)`;=wI`}%5pVHx)|=Oi`DsItq6NL# z5(lOYvm}qaZ?}!Vf9s##Y+mJBJv&QSOxNg7M)>@8|N6Kphe5A`{`9Z6bC}8@t5Nj4Gx4SQ z3x{Z$gRS-&jC~i}?JXuVYzu=o^A@hXkgHP08sk1*p4N($`iAy`x&w2na%t36IErif z^WR;5gq2Z!Ha+xuaBSoMm3C8+dYDWe`xOWlQp(=gy97o^NBZ^H190{!vzB>-;B)`D z7Qvc(6pK;l`Nqd($dVl*%pv9<69TrD>W(FfyzSHv7teFpMl6z@VjCzK9A%35sQT5E zlGg~|YH_xb9quX_e!S2Cv5OYmuTw7!)4QZq2ac`1X_AU=Ohws7 zZ9>^^t0Vj3vJ5dFs(8igcS;d8EB$Oz3QyKlSKDNoo!gDui+Pr1b)EFBN7)jnhKX7z zU!{3uITSxk@`|zV79v{MS~jE=3Y8SyW|A*EuRwcSw{Ax&#Nmv3-g#D3Cmbs$3}|a} znye_f9&A-rQnc>wAK~fXA;k8OnWB!M)x-X1wmoxM;%H`}O5G!m>aAu3qf%f%eAHfy zDSUu!@5+7tq-t~cjuHc3T2@Zgt&Plkicxx*jH$Zv(Ri_`q(^LBt!HD&Mgi|;xs2%U zF#3)!`>h%m9C^q@6PNd;IPQdA&W!+&J*qxiah*y2qr3X?o#8GA@I9~K8xbD5@HVf_U`y)`!6p?97aOa6@#BNT%eRurZ4ZQK?`fAo z#Gg~Q-y!a)DmatYmX@J4N0T+Gvg5KL+%oL!PUGbsv{c&kv)f9wbL%?_1&{8r9_a=G0)GTDKb#U!GGx zU(H$&V0IqfS>KR$eaWIKusK+XB+@sREjxI5J=Z#$hYYdUoJw#~q?2qX{5B+fF6mqe zbI4{vt&4fTf|T%8YRo@)sWD>}x&z$K4L44zG@4OvWD@Vw&a&aw6W^zV9FC``b!F_r zunld!Exg0%PE1ATYi?KDMK_O4Y*)BWcpo|#*{$S$46j+o7~FH1Mm|GPoIIX-#ylR= zo^X=j^B>#-#l5n()v>R|r{1Bfk;ofUw!N1`s>K zMLq^%(l|HO93pFoMI72ue%_F#&gbz4?eI8*Z~_ica(OI;^%(Uxf&wu;_G*JSTrzh- zIRdz%yh&7`~H~YInc|{`h$E8i-*W+Aec#P2|#uD;bhDDpud`T`(6=BZi}&? zE0JQc>o$CcleRd3f9e8a!=HN?afJL@I)&=m0*M!1aP#7lfd0zaBIkFC3TFrowuWU$ z)^&tUEXV`3OwD|!Kkimh2lqXqC7iMQib_lrUUh>yL^OyZT88J=2E4( z&}FtdaVr3lQx&!?{L4#TR(B`o4G^4VzTDwu&P3&fFvxC8)$7c1Ly9d$WYb;nMUEk> z!OfQ63Vmz0LKrzH!Zq@>}~d(#UaHhytz(02GdceK|n{gF10KA&3T#S+1d>QYq(A z2v0EiT*bC zR89PwJ_0NBBaM^L0(TCkxJ9+dYUccnOpOL6i^nK0x~&k1Y-N^7GOt$k&eBxdP%{Cm zxu=@`{qP{S-PBytyZXK~QD!b$^miPKSE#OYo67I0NSR@2QG0>z{L(>$S{akWGDT;n zMk#OWBpcJ>SCR#l5>add_9;JcUw-IbKRRDa@6%`vs~uhXTs6vKm4%s1Mjhr&kxkm{ zF1u-!TYO56R}uBSd&GcZ94d_-hp;N=zT12We_s%%w%0nRR&SRfJEw&kba=;a{}t2z zQI~^gYLr4g*M8+OO$xZ6AR@R+~ks`f1aD{6e_C zW|GakU8Ol*+Hgaid|kTC8Y1Ba{MN)PJt&0GMI98NYi(mL5KbOt=^b!p^nQvMIj*bR zsx8*1K%=~*ZhBtpks@by;NXZB;&NrWB+~!<_DUU!aVc|U8X*dS9s(hj;a$-jb4~;? z^?RNcxKcTf3Jsy7Uy_PaqWsiM^sUQJ+9mfl(wL&BLeJX`SU( z=yCt%fuj5ukK(Q@F8FrIg)(}rvGdUo3oCso94*LF()XWY>esA%U)!Wa4f^z|j#LhM z8P%cG86l4FP_agAZH^Rwu&Ct)! zE*%^(KqO3C?Krz)fqRBx7K2>%!4@wxtgveAxs1n^wYEXFq+ zd@8B2)`g@9l&i8Uip8X+ z4-KTN;V0Yn?oRK zQjqG2!4;Z_wzo%DPCeJG@PZ4W!3JNY`#-ZuI|7w`<`Hx}@-r|hqwRkw9&3cZNOcZ3 zfQ2MGRcV_DCl*Gy+b6Z7+JX7p{ERF4&7Nvg>^h^x?e^2TGr||xt(C8hNXlgfx(J1r z%uG%5 zv87=@4g_m64QPOszDsM1DP*D|?iDPEc!)G{QYSDqI7y_i z!4X7qoLOufiTGtjvju1fCs+>i*k4B+k!0_AdS=20550Fx)flB~IAEL1*ai#EJQ!hs zV8nG_#JMwJ5|=a8W*xs3qlIC83rGaxi^HS^HxXr&HbkrYQeBG|G2uquz>F3rphNDx zFY`Bz6cy>ZD#eR=vcG*V3;p)p8>%hu=zC(uc24NVP57s8sZkIl=)zX(%l17mY|tfS zP}!^*Gp*?)aF_pS82=dRRixW zfF<39A>O((d$$3hL`B)zJ@qQaIz1HMzip*sC9P5Nh#jyaH#JPQ%MP)ro|VIkxGi0` zmGWnF;i-F!RF;)?(N{WCOT;WR+YUC$X<;$A>L&uzksvYIm87~tPruiv?#R|m#HrBu`Jem4R$w1YXN zyRpoMOIk3w7h15L%s<+hsAT0AV46*7rozpAb~1<3kc14wofq3BK>6#*R}9Top*Pf0N2W=mTX%;BX;xd?a0w`9NepqkQ&wEja0_Xz1!Sl^JQppoLDShWO>Qt%^dpVHzooQsY zy6_#xo~QbtL@!Ej`GPvEj;+bFMD1o)O#CL%?>F?}!{&N7<6FB(M^11Ny)Mymlq+-l*_NW)BZl$)2~v|e6aO5 zhMasgPukFptcvzFQ>xf?Uaprv?&khhxEt@Tqa)Q#r6F?`Fq1x`wj zw;cv!ZwOTz&>&5_ahuGLkFgh{|6}-XYPmnCF+kL?a=%yK6Kxv{$SKBuP`jCpgQx|# z|D^s-g&B$Re^6g^4ZwGV=NN7Hw7u^%hCiw*@5Qj6&1Pf_aQ{W79oW%K*?ug78A;(0 zriCI`JK&&AZnkaTpTKQeGF>|$+PT|{@q3kB^sdEw4(TuQTh|c~xf<*rgJl$U*vtpvJa|S_Xt`oDp=q9T)x8|sN3ZLd|fuBNWR@Kpkd-HxAqh)G6t*S8DeIacqXQmHaRKl*;S7_X%h|eOJ?XZ?NGI zu>dr}n3UChK_E|u$+yBb`ciiHnJj$)Je~U6ni%lZrot2o?)tjjJw}XEVc~g5qJ-Zn z-E0k0VK%H7erZa5l1Fj2u%tZZYsWTc)r+t~`fTGPwj?LAUVdNvz+->5X~GKSJAVaKg-Gsm;w9>Hl2X1 zQ_dW|IIxm-577*&(4B z&gf6+{wMPDKD(R>Ugbxn;{=McD`&f9doK+pEv-c3jfn&X!389 zyokR|cG~^_ndDWl>7H)i=d1#POkx&Wz46;-w-ON-;9}zo#AJLlr*&h^P&NJ+{cn#u>-I`rhe%Lhn==9(LwEm{T2O-g`GlMp( zH^HX|2MLGZy<~>=g5b5(IvC`R2Ec-YE>9QEAq()Dwd{il@h6$K41#V6p~T?_tva?K z!wA8|{lmaNLba00CXup~((sB^-I#^OLrj>$F|c;pa%aP4x286Q<0u0(kXansV=XQq zI-Y2^Lrhp2j0H)YxkvRTYGGaFA%DLnp+*8YXCcGDx1m939ly~$#HwI*Loa@#u{hkq zOb&5qEsd`XAeOe2f5vUKJFoWu-++ld7bp95aBIT0{cE8y?IUV0A{rf92Ut904KlQ?~b3)F_9of=#nJtxCSgNWxq`C!}# zh5Nu!+o?Qw6pmkFRj**GqITBcPNW8;pk;;!II|1}%Lw8TyrJ?j!pz4Guq(ViM0u7B z*ef#2Cd%>uh>I5cEeQdjWYlDf?^i7eTR(9l5S$eH_XV~dbb)CGf-}mvy#zMq zc5Oiyos1F0H&>Ex{?+&&+Rb?sC5E0vGKl=K?fekPg;-n?*mBFNYAjGpYc z=J;~xKY+&~y2U*<+4Emj+>0x9I>NJcqp)@l8gn}EqFall<@Ds{O4HBxi$4~t$0FDy zlJi&FY9*CBdiOo+ehT~!afL|Tb>Q8nBs(z;<{&pw6Ddu)A8Lv_p5g6$(YQf=Wz#K| zz<;GCMYrX+T@p);4cK4W4iE%G%)+{2iI?K1JBC8FmBM!mx`DzbOG@X zO`AuGSr29TSm&+hQaw#J>n{6R8}i>&0n{=RHINekc89Dv`&s#5e&u~o@`4}Wkr0i6 z5Cwr>a?V>5CTg74vRS)v@G+ZvpBY8qmar8U)G)3%z}7IXj`PvO9=2J#<8kk8ji=?0 znb^B;Gg8VqL^P5hh;e_B-uy|0v!Dt<1SJ7-VmfUa2Qif>kAn6J6A!C#y2eX;M7aA% z<>S+{>g9vr1(yVEP1 z&KJ%;VG*g{L|xN0ZdDmm&tn8WdPm4zpd9!=K<}0vJCM(Xu!{tUi6IYHgoa$>)(~Sa zDC)cDFQ0B}?A``HG<{?2h(3FM?%7W2(fRLEP3L(1QpM${Y8iQ65s?x7D}N5KWd_H^ z?A@0yzUOwnvle05DvfkDYXhCm3(zVwbpc}6vbLY#LNEy4rR16or6{P9o8AR0HaYP2 zQNw=b-aD6>(~W={7>H{jlrYH-#YZ;}43I(rmQa9YsU81(EVq}OC29k@GUaP*)=Wyt zJQlWm{#O0NKgrXKvUm2_6V;@=5TZod)$W=!hS$2zFr%}T*k{~&*|C#j3q4+9F&OX zl!XXi6PDKCDwm7by_Sk&REeRy)E6f&fpe2A*Kc8KEQb@b>+I?0(=V;mr&4#?WfuO(7!_Pnf z7AuO35q-JlA4u@2aOK|Y3?wO!t-yY!zdbF_nUsYV`GBr|e(cp-6OGC0+WYid@G~0q z%^IIGNO0hP1PA7nL5ut;xc9f<^WTE2365Re*d8>GZM(doMbt^O819ovMr|udM&l>h2amNO)2==o)(|z87sBfn~0}R|h_m>WDgY&KjF(qh`C~k{owW0<#QD_n0&dnsc z8lEXos~RHkkWbl&B^Ttnu58Ql=(=F7AMhjE$8G(~AW`YoqS)q<7s$`>JOZ#>9I{N@5&JGVd;Wrr34c-~)vj>6EZKjh<{?r8akbYA49^%=4gFiihIUVstM z-g-A6!Uro%!d|66Di)-_7->%D7?y^a@mW96BCd*6v_w+F00B=4wNx+v?z#zedc1@S zF5iq6AoQ_kfwEexiE~(ggV5?Id<;?p+ZN~mRtdiM`DkWFK?9;xxmyEXY;E-JSVH)+ z%clhhZx^@))yp;y|_X1~1%>lIIKY%Rm zu;$@?4I9H#G-24|sBcc+bFmYU0L_acET6FDk+ao${=g133?Ji;9wX2t(72>&84})&BzAA`VaMb$u;Iw61VjhIHR`lK=?^&nqAxME6x@Oa zncv@T1++(kx9<;f{&zSX4Z-4hZk(kMNQ6e`wXOPL1X=Hr_Gi*MW?VpQMQlVR5QC zajswXAol1wufkwRv@{e*SoL|gunTB_8e(xjdqi+Hi~tVG(_PtktI&Ms%>M>K2~tnv@*sfg)I9rm)j1xe{iLBj3nP$rIV@jI8J}twz ztJ@S3ze$l{<3}>@+Vb~Qn#F7kSDih`ONq+O*p>&{X`;U{7>;Qf8ir17C#px-3BG~K zBU8h-w_hAQzL$PyJP$B7F$WbAfSPjbDeSGrZX<5%in=gD@L*d%{#C=o{Iargi8OO~ zY|FPVJejP49bA!odJJld{O=Wo5OMIi4NiN3sRCuT`GZ(xr9h?aY0Mfpffw5o8s^^^ zy>xUSVW>5W6S=-=>#*Ks^0jlofEW{#p|1v`oE70duG;WU-0bfplS2FDs?9M_R_YF1f zo6mdQKzJxjIBGQcxaLwzZ}1Wde|yp1jHd!)T405%ct}EZx>YF{piEXd4_7%aggYDx z8;%}LowStHug3;05c*aNqf&pKS{;rNa5^~%Xi_Xy{(i)SjJ@T%0Y`rgNzb|2UI9=h zi^B6GuRCjSD~)TC086Vi{KFk8^XpGb*UtYRcmAs1>1>7y(>H@7eWl$ zAU6;@-gR4l{zx|@?F_d0zG?v;`-59fNgjmHF`rn7p=bzBGv*yK{nFGxM%{7o1P;x= zRUo4NsUoE3ib%0SMYG!4wJPvHi4R#nttA2l`_*+x@PbVInI7xiQZUk3`uDj-p*=E| z@{Bl1^D{KKxFiMp9R`eDlHPV0Tk+J4ojnMtX`1S8ve5H_{kc)^IVkqYJ(}zlZ?(g# z(ofMO)Io<@-`>DFvA*?y?L>>`iQZU@92y*Dkiiq6ahGBel-l81qY_Pkrl)Cp)ma@M z`H>y;jay>44G}e|k89W`DYAGgN z=?RWCD&2j-gPAZ+*O?+|$YYKUMIkHbw{eSp^8E#kf_QOA)JS(*7gmDlCB#Y{5RmF$ zK-j;5^!^QG_Zw)=Z=w?@llN-507n6vDC&w7{^0{lI)H$4ySZxi@r(3@_!>_p5_(g?_c zj5`6Tt~umo2LY)(g$@sk7bI_}|2(&E>=`)A#{~xFTmu7!|Ic&#T2?Nfq%17VOoc zXcs`Uxps0Jd9%CY*q2y#)01e&M#d za;-D+)fcL{^((e}NVNd^`Mot8__JcW%q%D&!u6qLO2y_t+V zCl2QXXN0z-?s@sOcDk?bIXm@d+?-n7c%ASpFC-)?9Z1uY@Lts#8HHxA zt*=g23_389EBw(aw=-_mJXhOR7wPi3si9}U=Z+0qT#}qbfe&8K%u+vI{N5JV4eAAj z?1}sKN(NW2fT_fMgsZRhLPP?@{3L>JuFnD+m3Qs!HJeOss1@@yqc2od-IW*;A`=Vk z^S(|NZA&MX?epZ`?EFM>(;`K!v-~gT!UYQLW+~axDi0P1yw%hJT$#1t?aj9?_ zMP3>`@9TY@Yn2o`x<#~=P+p&gjhZVaxpmeyHDi)Q#J0h65s-csjP=7tSu$yVwC2l zzLaLcs|ctKy4_}kQm8iAwW?+3tc%8+S@OW`J}o2X-UHo&NV;;?dqO}>hg+Z~JWvzI z?Tv`HHsNd6!?p|(S9kU8^!Un+olIS3_HA0b5zgx1!O70ePv$*np5mkQhx1#L@0O?%Z_J=1YVI9n-}8l}i}Yb`*u2`^AVXJdV{rD9muyCC7EYN(H8Ix=)`b{}+9 zu=C0FVc4)dK8MGhB!;jQ*aPpiS2BN4@?y{zO5(}*NCnwz{-b2x-UyKQBd?Xw0lC@; zVjUmxOXzImEwI^(3I#qw0coRQ~%#qFM0+J40-%AtzMw2d!EFZj#?6*XL9 z4AOjlUb`phsGiX{!onAaRi;515sy;44!UxbY5h(2wQD5{zU994jJ>1f7H2&H1>J=G z?WuWrG0`kk{Oi4Ar%|>0xPWjXGqm^QNg+g#Qf(1}HpP-2bS1iNJ;VZ*yB<(Za<$rD zEbv9E2ftUE(Ky=S{r;A(x&V79T{%%&Kh{ai#K$1)M;xf5R=O41 z;olI13vex9FX;r`R6D;1{VV$SAdg8qaKhr!-zbg0;r~GS`+&cr{O>C8xLTkczT~e! z@XF8FgA>A7wSb`n1%tr2{-O0RNh=UXOy~g6FnG`~o4Q^+3Ko*wmcjcj5E7|>_Vk4c27 zW&8$m_?QVxb9$QIIAsU<+PLAtY4}doUoVi5&ATFYx?*y>s8j@i6lJq%{C4ns8oIZa zHP&~B8ATu~;xP`~aN~7*Jmqimc{{NAeq?jYRW-cJgIMA|j*9zw@9_Y4;^h7FWi6`< zTQIAA)_8*}IO z&1J0b&(VYV$MJ_B%h%6Vb(8u|L}6DUYHg>ynNvRKY0o$2Z9Xr2ZQbr6rXp1f;|8}| zH~pir<4PHJ-+ecJ_)pEcC#7eOJHUD-E_( z{T%%c&~pZTzpkbePx-B;$C#eRdY)d8e1F+`W~>&8D1n6{SrPb!eRhT$s<7k5yN)-@ z_wFFdOgJYCOVLa?JIl=bcuoSr*sZ+x*C(h33aI_(M@z5~r5sr2K%XVDIPVKHykK)u zmVibh6ssJZ@Ah1U2GMbDPf%7RfVkp-5-nsUB?>_yG7m#pD@)Sj735`&Q&f&E!Sc^n zG8CEbeM1{8g)^ONT?BcABW4MIc@WM*%-6t_*PxdIHv{y(KQu-6#H*rs0 zO+g|B!vQZEt^)q@i3DA)mMYB6QwCAXnSY7-C23DM;U9TJY`nj$m8 z3cczVoS|3>H+9AB{jT#@if%h6BEko`8P6}f{8^qxO1)jXiGr_nBgn2!%RUd!&#_X% z8GFDh-Iv+jvHIsm5kqc5`Eusx*5xxE7D6U_RKV>VXIhNLMVHdB$5tEA`=NC$+a$io zv0uVIC817`+CGn1I<4x*!6e^-=5kf`^wkt@6ZA7R;?c)OB|hcOagr83Wsc+8o}J6{ zW;qAfFm&AathkqEZd0fSVaEm^c^H2+PZX6qc@sGSs<^UjrtHmJ;ndJL6oo7ZohEpN zhUA~n#l(VJZ{Qq9(RU!o=HXOa#$#&K*kErwJ_L!leQI5JM_{perM8-D6f`V2+pgTu ze>VI72zv|QIJTupSj^1K%*+-ujF_33C0k@MGcz+YGqWsaMvE=BB@1?Z@B7}q`~Kbi zV?wP^#3(B>PxqNR)pNQC?#sSRzRUI$cO9nY_9naHd^7F4|F-(Y)0@F}56J^}5EkQN zsliiMAkQP_)xwKj9xgdI6oq^1@+;oOKnPaaVZp+IUUF}r@Fp9?kpR5an%`ry!iqyPkEJ+SaYH# zUcArbN+^_z)ZS@#*}P&-Y5TokN<4L@w9Aesy?MoQVDtXI(ZppZhl!=?r-OU!(Rf_i zZW=t{jGN{1)+YnwEsWYT<+5X-kDrzw`OgvTmKYSlx?x&xHq@Hw`pMUbnMjw5HDHNq4h_ z$54;Oj;_j+w`aUVi(aKNuHtVN{4F-;hJ4G-6U<8$(388ub?>IP_1no&JIrTiXs`!& zs)T{c3WnF%#9unxIe4Akoi_r`*n1s5PqYesvr|pcL<(DXa(yg0v>WfdQyC-l=uQJP ziWzuTT*P<~Psw?x`s#K(&rm+K>JvgXh&5k%QPd&p>w$f(d)9<;@l<0I`Pv@L z1LB+`mFTsFxTipb@TB8XeLr@2cS!sGnEsnGQf#ONKE5c?nobC1>-Jz^U+5`}t+U_n zD&|f(f5^vK$@Zm(e>;0hY4Gyw-n)b7*}KEw5iE&!>IG#ubCpf-%6 zQ9{klQN%}^iEve2%;bLuAb2Mc)DvDmAH+Xr#-xTV%8-?1-8TLxhr;%1{H$lL)_~lD zt5xm7maLgz{46yhHWC+Ew+nXJmep8ytN7ha6E>7RFGi(2f`*c?ZVf*T4rKbhJ)80p zHHDe7;{j;|@<0t(2T14F#F(R+Gj}Y|D09_)d01Nfbwz$GadKL_I?hgB@;cl)KMc27K3Rrg#?*$|f5%Y>1OS65@~dBr4z zM6>44I|Xh0L3_DlZC2>*mLW@AO?q==Q8iTVN`i^l zyu7-Gg&r-^LSUlRYgxKf{{prL|I0lS%l~zB^eu4ec~1c> zcRE(1wV#0C*3Z5d3b@h?TQ*GlMu?S`J`@tMz5(yfpq-QmJ94{$JVsW$l*?~ z7nu75$}p_7+ddx$3y$;Nx^?|SMoAC4Io01uk1dyp;bz~nV-2gr=k9yi^1aBO%!htF zAu-a)y0+IP4QZFN@mNa#rZI}|n%&1B$tf`e=I-(4y39cBPvh&@G>w$Q>ri&`jJlrt zYXr-DZLbeZ7_*_0068%@ZTn)COC*M(6enB%fmT+S)zZ~!KDQyBNVw|G@#VcOEdd0G zYXxgx^iXfrgp*?Y>zO6judDRln?-%sh~ITt7P?q|=yEwZ?(HavY2deDbb(KmQ*PlK z)!QQs_MCCn#R4DKWT>s3s`))`u&2Qd2WBg4K|ToKXDQjf5%*SBgOK|cuQ#`o_vMa! z5DAXL)QiM+&%Pb;HR2Y&%eYNZs>v54+?HT(aD>(vk#_F4lVx9w5OS)z&#qGYJ6e1| zZZXt*J7(;0pBH*?M|Ru2MXX%4o>b$zrXKz4A=?& z{QqYM;E1}<`?BT2+0KoH3?ATp2;a`V4yT;s=18`hhb&vjy{b^?cda0h`(iM`q|HD^ z-vsa4iu@Dm8j;tmMOm(azdl-Lum==sbChH&%i#W;C%U^ny}k-K5<9?=P`RE_tlI9K zEaT1A{At=~y%H_+%b_i8ATO>%ps9PHBiFHv15M`VGG}KB(ZP`4i1K^8$FDojE>F4E z9B;0$y{*9Zw0p3PMr)Row%J^M#JH@sxYe`ksv1hKRgrD_f|V8&hfq=nNmJU-V01x9ue@%}ssVLH@|uW-4Bpy@6U8Icxug}9=F~)N#zWM$3)J*`jCnoi2HNNb z89u32guMCq-`Es-P6zp$7Wjts<`g zo0U^n(zujx4YFkT#2wwoqQ9 zQv$0^U2qm1sL;wbjSNMBiyCDL^su(np6Xk*-Gjy1c=3ZqRbZMY%UbYw=^ZPaC%(eoq z9lsvfDVRGim&7*QJ!}=cY=L{HR7VDNZ3lIe6lH43_dSMaXDYDuJ#00+Y}3I*zXi1R zaDo(>8gJ^H;hY8)`!2k>gXcfb#-i5KGI{imV~u~C51Ap5qKEAr?4f&ckR#8&z+)l2xG&zA?7e^1 z>%3(m?fm|oHsZ&%No)a&vM`zktDk+P5p_9n>c;TtBiUg5^?1l3kC&jDNOOeLddv7+ z#rL#e9kx(A3R8-<;3-K>w}A7({-AIY@}x#GWhC}Yyz+MKc6{ySN>}9ckrX5DjELkq zcu@LY+fg41A`NM&Y?9F@{@MQL;}tE73f*ItszW z+yRE?a9v-ZW4Wudhe35SgS!ubxy%?$A7K3B0fVpE9H{qdA|M0?1YxEh zMOAT#CtExzs;1iO{5bYAwKxcbO#yF=3l6>Tjzu^KNgMG|rx*nJ4$1%wDHysKgaJ#| ztelNT9Gq{UI2~)iN(ov7Y%_C`qz5b%i7T7 za})c(8;ue$5{JNN z^h0N%0tM8+02jyP+?qhrfT#V>fcgHP2Mj<+_G|3U`SIxvSocledIe?$JO-{`I!~|3 z0_Y*28&eQa2=bqOjpED{F0!pG6w%+cG<(bFwG85SZ3 zQ+~g9V;I0k{KGJV93K;nMLl^e`tmh;iFUk=EMgHqMUAl|t>c;GZA|Z^aV#2hKz@x* z=S)mArX**g=43d};OWrqWVY^gpo)8;iWs_Spu5UqO0$vrcza4G z*bn)m7xlxySC*r9yt#gwqi+sJY^U3U4WTwJ9x-8H(Q$NfZ0mAnD|l?TbBwstm_ULO z-r$MG$M@a~)xd9KC^mgH?@b!nppVtyLx2eSFwsN}a12G+az>w#w0@U@AZzza_Nlnr zS3BzFW&e@;;BiVZViY?AD>dT;8_)D~(}xAm!>(>u+0y3bg}2*xdS+)@!Q-vQ`%O99 zqZ%*~nDz;-ZnxVYcs1{-p8n*~^3!LJw^5I`0RB8h*>kz}6#V3+(mFGM#grx+O~XF@ zdeYsCIpg3(*y?WhDzgwJo}rnJmPMwaRdj*lA_i9tf9S_ba>z8tcNZf2mc+VbCq~>pCU7v!DGGX z=4IwW!sBg>O;pt2qvRZ=+c&BE{nktn=F<}tXXRFYG1pg0R~6#N3Y_HUV#Sf%tuJqh zSo@Dayy1(qJhT{QHbw^a8D@^rxi-;+K_7Q{k2j!e=~+D)SvN16KVNFJ>J%*tl)kDf(F{ng6`8w~tYkE0*19C<6^#RY}V>EpfmZISd&+T+3g5j^knP$MF(qNdFkm2aQ-L z9!WZGy~PBz7qiYDZssE?S zVc7X;gLF}jAS;XScdMY%?xKV9{0k^E)2L}Anakh^W_X3TN=C_6qnd{61=V#3^9V&*0%u^3@u^?9lr$3*QZmA#H{I$p?H3@QKk=bBNHdK? zR*NO0%X-J2C||**Ni!o3FbZ*T{}$u&e-&e;$?@B|rHVEq!$3rZiv72a4*$6pQ6ujS zcBM{Ue;&PU4tURujxO#7?~A`F8*K}ceyw~OJ=6B4N7K%a1>Od4tr}m2u7|g`sRN;` zE953KXBkK943>{|hnDf&Xu#OQz2aHOw4vbTQ^wH1x$|;lUOA%0Fg~N0v5HGWXahH4 zShb}S-cAsv_j;wW8iwKBrkL0@udpxzm<+KFNtNeI-Ci3ZF|GII>ay3z`%cWv7x9)) z@nCt!bdY{WEy?bCB2MtwnUYTM?mUWLom9hBy#@~Kh$*ls+EDWYPUzSOu6^m^E9C2PjGg-=0J~MLh9A z@o4JE7Wc0$rzFvmv4yRI?Ga za5~IKDD%6suY&FZ@3_D?lnf+Fhqh-^V<>2t{pS#lAB$)RSf2}Q>5rFxN}ngUb%x94 z-l?c5fgUsJS>YWsn$>?}q$dJBKDHxH#!mjD;*O4u@NX5KpurXfcHu)ZYOn8iuS%a) z{-r}T|2t5}yX*hxc%Rs6WFz~3kZ>>5&h{I5d{IhOG5GqI73k@ItawuSABd-NpcUx< z4=YBEk3vR{puUGSCf(WiPM^!gj;ZUcZz`b0g^iZ2&Wz!B8O24MW=xrbXT8)T*$t zZPr#QhDhTL$2C-HeLVgG@FUFHfbVF0-f#1w^+=pTS(+85Wc`d*9q9_)liKUX9 zB1o+_9QP)3yp*Np^z)J+q=L}f&T7teAAZK=W)=h#TON|7M6IFwI|TD@mf@Tzw$gVB zQLcnyjoMR*wiHvLT7OU*BpDd%Fq<1MO#Yx&2Wb5Zbp$V^`1~)_hR}q8g-n5m94uQM z9H?+k0u&pW>iu$!JtYl#e=YEa&|;N9o>kUjq#%Y4$qeXl&TJS)Oxt0!NnH{8E~b@m zMBHJ#a84cnr|gAD^}e{3=Qq3p zG6Rjd$=WDR6EP@Y@E9zkN7JPlEL$~M7L&>}B)(z1P+22|e&}KDlO`%dPOu0!+3z;)JRT~W9pjx6n$*l;ZOt<#9=(f{`0Z& zEXI{`4CGNYW(GpKH`F(o%(m5 z8=fygJkTr^MzP(j6=|wRGZVvD$2FK5ccGVWE5SX2m7kEGTclj|M+PgIYPh~KJZ$-l zX{02(!D<(EipP*XUnZ`5Ncg;3gw{A0B?=<_Jjz5^@XJoJ-O6p7dk3ej7p~3Bm*SGv zM#pGo@y3N^B>0o;HLGFpvZ}FBiy;Ctuy`>_Z-7izMXrt(PkQdcA$l=+UjS_AdZ+QLqW`7fB1fAKwp{DZvR6?x~1 zpf)dE$%7wK6#fU*4D#&?)>{Js-8CVOR zmNEALQcfzA`Y+04VE?4dlRj%S~oX+o1rCY7pQv_{tSpdfp+T}``(Z(fO`3Q3Uh}hB*vF!XvB<2(M zTF621rn0WE1C|4YvPOSKVU#h}9G>*nmSOQtdk8iP2KT6K?fU_(f7#cYY2=Sv7f?+? zxp8+5#3@;@YxK*!6b!w25Kt0)Vj(#dI{H(#*NiiQ$!Rwf8ZKU!p?nVS66!Dr#fuWTr|nZ5E+>R!>2{owoIRgI^L|u;H-#u)#sm-DMxJ$(jS-+B#e>0?{n&FJBtiJ~><@_+`^j@ahLXU6jfr{x=Kd>~eZ%u#F%u@X z3#N~dV4=|fo(to^g$5<5g zQmzvg@bTrd&rBOQrB{wh$G_%(SW~Iy>QJ1iCy>X`Y;NFPp+(bg2eSv=X!buh0A*gI0Kr zVi@v*MghU5irdyIuwhyMiVKoH6KC?Bk|36V2cyEVG-L6KhHHC~_wJN;Mu5u4tOZE~ zUd1ac9}#y(Y%X|9h2C7;t>Ks(?5&8Nvt83%&vQhk2vWId`ljPPeaR{Ov?$OiG2m4qQ;dy73I6VqBb9WdPC^67To;83hm~wTO|nJ{-9CdU5U5h z8Lc#=nY#VWc{o=UdO;$YUEH(Z_X&tk{?tJa#AQwP`AEoW_^~!U76@hQ8y0Dz{`(KH zr}5--PQFqPFO6hmNZ~vr2maw=ZDdFV_@k5+YpAXu{9@As!ZzyVn>l$+;d~_LbNXp; zu2{}tSX63$2S_hJQ*#F~5}@T+BG4FmWfI-%SzCw5C1}^V0JIX}FMo9_hOgL`No+2#bkj2&FVg)GzP@TXO284dwdV!`%s7Y+c6xG+HNDR zye1(g!rS|Dx)>N&tXt@5ZSNC?Kg8DjRsTq0AuIyQRynQvV1biD*890SXopdmVsr!HoN}gzNk2OQc?cYW!z3cx`9@$hn2acLI*a0dlD+ zP>vGZ8w%1%Q=+1WmILxPTf3RS256wT%o; z)!Si&voT+vywjXgaSzw5E!Q8VZj*B$Ag*0zw~o2$LBcxZz+uzYa|6`eG6?}?>j8_v zONy(^QxFGHpmp)mEDRmMo^8Q1^K~ua>)0(po0)|F;udq6=Xpo(#cdEM!1YVc2@t02 z4@}wLF#3S9XO$_!KmVtjePWFQQAF#y)3LrE41~r7xDtOhVZIAP>KbgA+KAZa__AhA z^jmc-=l=f;_6bnNdoe#~9lB^2vN)}(g#9l%>k->)gt2Qsd_1djZ~(4hIVZ}O3S;cP zEdAEkwToL&SbH2_tV#AcHreAN0j@Fy_xNQQ`QyBQq#*h&PAfwq{TnD}!0I4QP6L8x z=FKH@dw)0!>eUD+QopPNkpYOdAUtT@YDt2bbCP(T%?)4|F$eI>IAvzJXL`z}^#h3^ zlyxxk-@0AKK%3KpWuN%+&LmvSLSJe@p(8kDc3p6^1wiu5=;KNA%se3!moNHgK@0T| z%2UGAZdwW&x_#-D-8TJJy36&=l&DZ*5WwL0w>UBdlQ)bHP3HTd4+&g}Z;w1J^Uv2~ z7w0=BmX8`A`&SJNiG=e>6A9+ZI0qM z9guK`Ws3Ca@2Iov>qS}9z)4ziD-Pm#7~#0MxLYs7MO4`wX;Nl?Fqf8^tY(Ua`cFt| zU`XDxG#50*LKeCzOOGyCQQiO-uw!uqM+-XY!v^**Yd;X#ZAnFVJF>add1(=>jeB^B z9h7;k!CjRAM=0PrKqfNKbZ=N(43HjOS1=-0=zf!31-HT}w<5p+U#w)8hqje*y2S_Nb%cLyFmZ zozvk69E`_$dcNPs;tb?sfsPSIa;dRnwg(Y!lVr)8g*Il*lHwg|6d{K>Fv4jpAy^^b zzk*}msimo?(k{(bN?r|iQE8v!IWAVxA(z5?-MV8+nI|{AVq1MF2d0aX$iQ@w%?pMD z`MB6{QU+txcY0^_z9m0D8-|{GD=P8R64s=QW-_|v(onm^+fo-v!Gp}_&JQ6Eh3BxxjMUpH0W6A~Fd874R>(zoS;cs1X=`4HJr*zi3JW}V(onyt01jxL$hb5o`XYd5i5Bm^LGooms}i8IFdO21 zoVXtLQxh7=KUrXT4MRbZMDrCb&1Z$85Oxeg(sG6>cr*!eTA>0a=Ch)tiXMJM-y6WSQ`$gL$l;F5m zrcl!d8VJ0Rgw5lw!giGGWe9HYL06`6$VI1vT0)%MhJhSL7%YR$8|Y+pmN0@ryZ|IRE}3A zJX(q?bQmX$v5%gCX7jMZj~f=_r{DR^VR*sE(m{F>xoHIdZ(gBoyT-%0ev1 z6Be@;#7N3W%48))0Pew$hfXSqGGQ$RS|R``W4%Oi|7Yo$#KlgvE^Qat1WW9rW+&2d zYvTLd!0gBlT+=Tsrm+t*^!j(GenxC{cXrP z!XG{xDNO|j@{w813TFQ-5R);tChnpG94Fo$8G0laIG0K@pi5GB6D)VKvN;W0 z82IDXchZZAfo{`MHvZY~U%R}jNlU`ymO9GenKJw0GOxG3Q6rFDxx96!P0!DR zu%{OAzY;SO0_R%0Ncr$31{HyfyhnX2odtvIT)Jp=ZN(fKKjD5Xgegv2C&e>BCm(L{ z2ahGJgs;lBxbh}=#hm!JV!&BRvP@1tK0J0H_frVBEcIM{4lh*Fvw(@^Jk%GCcJvza zxIf<%7GOtwZAj@|m?8PALej*%-cQOYhz1%}J=L3Ro`A8Q)=vh+ka!A_khScr&ykQU zGD3^)ASPf~hzB&MN&r5sep!#s%BZQDWoV26;*bq_aOF1i5t+|m;%gO;N|6~QxLYSS zG9;2IplO-yi`I|#)=QryW3)Dn&&6%|znRcq3=EJVo{8IPAFbu_F)11bNVG0!c4{99 zAPnJt=rsgL0Lvg?SlVf`G*e`>cenu(z_U5(5-}=yhR~QlDtq>OP@-m^HZl^HwKTQP z6qyvT4Bn)Qz>?JTlp)bN4@5FUfgVbnwbXJQfx@b|O@Prd(?2L+h$@yAfWXpjM`37W zW>Ddq2)bfmyBVsd$RhYRp<@1Q57nnG@@YMguNDdR4=GPS$)xsaOwv4z{zDyZ;2(8j zDF0iX9Rg4t4@{5$+d1aH!OV_cToc^N{swZu!iBzHk5=gTA5v@#cXxhCIj?YVPJ{?O^%WKC2duZI=xmjNaWcqxO9Z*j8uxL)tTn`W*!-JK#eC zKpMY-*gtS5A`~d@l5a*%q*|n3U1Hunf9vaY9UfC;&PM#4kCX~1JnzJ>iF2Fy+xxWDT21GKcXWZ4kFOD zg16yU1vfh2!L??zYBj^4jpqU_7CK&6@I>(89tB zo{kh^%60`;{M)TCQe&%>^iC`+A6BqwgJXGLB4#_7jlyhST!A9m<`aMZr=Y8bUv_*^L1hiQdtybW~YTAVT;>#&cdECw3}prG}bq#Sih2 zr01#us_65k(@zgqt%QEOU^yk2hRIZQ|MT z9R^!W;^ny+6gT(&-H=RHo@GxvVj_iLh*{K;O{RO#8Q-94+i#*4A>K?x58DQk?zv`;A>=bE9S9y!^&qatcc7k0}@N{O*@mVf&Jxa(K2MY_)d zfmnKITM~Qtm+f^p^za(K*o4n7WZYe$&u*4{U#deel`GAC8eqSRNpkDr^RY)6V)j8d9TrNy8d21h-Mo;7^NH( zCBH9cR`LW)EwM(m+&sgI!pbCxMnupcWq!f6iCpun_p8hsIO9QV`@i&At?q*Ub9?2f z&ao;8umx2s@aIpr)4y6!eK9vt{f`SiW^TY{hy?*;&bxQ;C{gv$ESgm`kqw8iD_Nu! z*@=LXwFS5tYUbr9yEYe2*8>&l8EM6iAKnbpo=m}?{q}578VC88OJ>AB!nRFEX<+za zVz4qV;gYX5iw!CvUyww@V}{90D%cujzM}vil{|qPoliixrbRH1k7{yG?GP-KvkfS8 zCM!3v#;kppKJofU-7&akwRshnVgSn-6~`}h5oJ#rrbSt>NpEy z?w4`*PHdL^Ak7mhK-6U4tm53wurhv{jH}%P!0I{WMeD;?@ z$Z79KcXviagf1b)vVH%)X@3X#Pse`q=DV5#+hhKQ0|5ax-TT`y3t%@`HDeRIzj|bD zrw%x5un>&?_!>!*mMv?S)PjLZHyYYJg@o@7f=*D6wV7}w+_CWc8^2u~%T>Kh*Moh$ z*A@LV1!y1)uA7)NI4SSP?6b+o!yBPa+ZTpLDseix_8Ix9XVB0@IKzv?ptp9n9;C9l~g8!F*tA&^;~H#M{Ep2 zRJZ0NTG5<@bK&P1Q6TM&uK1qeQ7~e7@tS1PIQx7(yD1cGv4K^rG0T(oUg4W+zM)=*?yDWjNH z2HnbL8OfwoF`P!mMrW3Tu2m0wqnm5n{|tFGUE!!1xK!4l9}vQO7NqMiT8f~W$5vR~ zW@giaj&T3h9sg_)z~=!fa4%+Yq<#Zdw)ePk3FGe7gIHHvp~o%IK6FtUsp$pFo@eUm z&WfKdq2a7^H^IZ`S#a+JRz5zVtI_R#+^=Vz?T|ZicDBE{ID~w0dtWxjZ1|y!&GodH zXzjsGhuz7HzK}O!hCCF%lVI#_I*2Gd2eN7&1N#Ai@~Mrri>HvvT3zI#Bqn@eJcrt< zp1~@|L1qrgYP=6_!{ptS^`oV|&v3dgPtZXgA>wuRjtWgCqIwda#gjjN+xjk5sMTOk z&B*C!AoX4_RduYo{=g9ujCrQv$MM&QZ|<*Yy;K)vUJA96m0xfFt2=122wD3murYBL z9S8{K|D2L;R_6BR%zqtO|LSn2qX29KiPQU26Q%QL>1ESBvQy%6?P{eI5v@%uu322y zjz*c}jG`Cu%DLa)c)NZG?y_~LzD5}Sa^Wr0fv^?n)DVYuJ(5P*{-C4 z&rs!N`67%6^mn+k{M(bxv5F@m$!;mq)7VvuchLLD3f>;r3lhbW)Kv@Zf$eIYemh(p z47MkXbo*>wf9o+Esvd1hJ7XAWpE&r@R0pa#5yo9Yj2u!Bbm9tmiA~2AgD1*wteb+c zjg{?rm`xZ2j1u=NFc8;wq6FgJJsSps7TC>}p`0XX`b=a^9`BTA)nC(P-EufMxIvQ(4y5 zm6;rnHwJa9SLzF0)cbR-B@*<{7>~YH3opI7x?Pv3ZKLlY3da$i#F{ut?+O&Ed&)l?!1~Dimj=v^a9^{e9$mk&V(09 z&{ztOELi2_8k<$->x!17vp+kN#g;Q;nH544tE{A5G;hOVtU;UL<)b!J*22RQvH4Jl zw8ISyCoW~r+<#Bj^4~;&F0}tjAgpZ?yVCph`EWCBcA!d%+2GU5@$%tV9nqT}L?7&% zGur#fZ{~O37usJJ&tDvKeOf@qllpi4UM|}V`}F)#WQH&5^4@L_)-N0dKkmb*CE5|8 z!eq8Uyu*X|PeCq~6zL3`De)R93&61tDBOmKT~EaznF1e!s|K#+NdqMOkroJ@@+M4l z!`oRs%V}FK8Y85~QbXI1z3@z;R2B-V*Ff5mabz|XUT?uV)+k`t0-XAksvYQpy^@4a z@R+uWFUS;9?8%DYViV#Zlw94A3&>ur& zl3_d$411FPV#>0i+fHn87BRC=s3;Rl@AnRg-;7_NFiX02*FS|E@iN|32oyZY0u zD=pL#to&Z@l^PrJeh}Unm!Q=sx;O7#%kHBA7);wk=K6rUEA~Sv$}4Z_{O52N0Re5^&I{6GDpv*){Ew?1dgJZ3j^r; zY&MdkwIT@Eage|yN2s;hyO*?YztS0&KXjhHVWg%aVRJtG zl;R`C&|QjHS)M!zDJZ=Es(O%`+}%O9w6sE9B6)RZU7;L-qbMCGdzkKZ^y|v-3^k^B zP(J77C_^z-npU9+&ziak4eh9$MFH|zAbZv&TGJ()2(@!gWK27)-nZm)Yf(8%McUlY z=E9n8nvKCg$MWsS6>coIgP@?+mYs4g2BV>T`xy~mkt6J2pmvxqOQhusO zolcH%b9n<>)HLx=w3`$OV$8sOs5405q-N668l{-%9}=gFl#4w zq%MEC$7-a-WxUT8+&VJ7^Wm^6yX=t<1HWdMBp))pA*xNol5QFPgo;~kvZLnE=+Ey6 zSnsUbcLn3(tX^H&Z~y4)L0j29u251f@J$Tc^O{$ub4Jk>VzgI0n9frw_L6T?$A^@- z?jt$@r_sw7Jo1EN&my5O>gB6LK8>B`M=@0QucpG*ZCW5gMk~y2 zwK-N>d)^h?uzg`%cFi=?SZ%kA;|e+pq+JSTBWkD&@>nw(3Iw7Y2@~efR>Ka(wB~uR zyj0DTMM~3~U>`c9v>WTok(<}N34@Zu0;78VkNpe=SeH1Sw>te_(ErTEa{c*M%YYwv zP{8aJ9r)YS-PO&}Ud!H&+1kzA{;!X{n&<|&K^6>NY**yoH&(hPXH@(J0g zJ&LH=843SD>W;jicrf}Uu*2%j(O5PK{p&uJ?AL#-(&FdBB5Z**nFwHZ_wO}_gS)+n zxeKr=^C!ET(b{%6;KAwHEfY?V)N6@I;(*|2E)>?#kC7yAxd)-bsXxyfXJy&Cmb)^Y zp|8#nDvxBBNBcY#gYLJ>`|bmHh5Yq;6O_1v6oKK&bseNzwkyVPA~(Hq`2I8Pl+PArOKVj>S{r9-p->91lkZ5#uWi(oR8`QUJ8`2rkcKk8i;e!vU2U<7Dbw~Eo z6*HRj1mxbcBMYAi_sldS_E=?AN7zH`pjE5#i(c8d;12H=+_ROoO*Ndm>%ytSEA}Gc z;YvC&Z9`D%HjgBosgw>NskDeVG?nHrM^`lJl?R+vmkU_Q)%&faWHP2NT<%4q3dFLx)l9)zddC5dvg-NGSm8H1kp^; z*I7b*gN(I`gmadGbzEhj=l%NYX{MML^UF41QwVaGN{VYM_9~)BL$4D36-je{{%mF8 z^N4_>Q6UmajFh77D5M^WdV)%KS)TNTK?`-ebcuh%YiCIh_ZP*fhGR2Yh7mc;O%b-% z!b|paoz~bn#)Mz+8>DwG(n=Xc*ivEzAQ^EcM^#YKnPni{ zF)WLc>nJcON7GVZ4#2-Cj|c{A+Pv2Rci>u4-k%+1jl-$@W*B9Ysxhv(2&NwqIpyKo z6|^uZrJNI&(Au^q(Y<(g^c2a+z1>{DTlXmZ&O8D|)nFMjlKUILoW~3OddCBdI79vvhCwKm6W5keZ1jOu~7R zDl|A_8eXt&ee&S}Y^UPZFBV|z6?qMqYLUQfH^li1)#293)pV9(;kwU8jPno0Ia91p zyEA-uE&ANQVS1sc40}#$oS{yXIWA6xGkreo;&$D(s9V0m)FR2(hQ{dU@Fw+to&LRs zY3QNpvrG7u?|WtJ=Z{`^1xW;a{Cy;7P$dJspC0`6KA4qk_L9d-5j zrj|yvxL8a50_>NyP*2xmPpBuW{nyj=B8UtuL*005{RpnMMg_P~Hb!FX)4U<;)E@;q zAMpR2u?ojmEPEh9K!Qm?K(K)`7O-*mU(*zDat48L7&ufO$X-*3Cl@_K)FC>$#^ z9GbgB^M++X05|s#d1&sPa%ib_;;E9o#N=`VIc@70+y}7*vqG3GY+5qW>9p&R*@b6_ z4&)dQl_z7(wH=tj%l0n@p z=M3f;!V)fii06`;1dh)nuU2)Z-|?j|t8;Jy=v^|S2CiH^gg)i;O4u;Wbl;ihy zBBnRgVM5*=>=PU(F_M62L(CKWGmc>~16Ce=T4tsFEl-W0Z3$i&x@PAj;doO*9lF>z zI!?=4RhVSH1$z27LG(t8;R zl%B{=BwHgHZ!M z$Cic>FUpeed?d&ghf&lLKaHDyA+3{F>;9SK8(p}OTBR;R>f?Gs_ORF00bJkj{-p1< znS`B8mZZ6gF3`e*NW&?MNf*1TPw(U6(L@XGANvnq?Ume{-tR1b`SwER^}J352MP`3 z4Od}Dvb6apDwFT{QXx^f0>_t_z}hDD5fkr<RSns^yxI0 zb>;{TLOxQCEh3O2Tp`dBYVJqAm$;!D-7YuPz3?CvGer7t_*`vh^wwik|5Zx=>I_)j z|24jOoyu`6FJ?XM>+s!ZJU?+C!-PFQD_^ZI;hyKae9^`3iny2NOfmNadjH*(?2WtE z^wFQ`4WG+zhizMb>}B8y?F3wPUw=0!U;?N%jIQXP}nZr-1&|znX6l~s7EkD`LN{77jhEaJ3p;b z_?MU((f7fs_SA$cCL(VnxO5H|>O8ENmymge`2~B@llI=zx|ew4pIqvXpE_}S+TmwY zIH$e6t30RuobQ?S!nfO(q^0%BOtsDYG-b~2W#{%(UwhMZsCv!OZIdn;Rach!zI~+n zqw22Q!RYs&*H3xk5nO!w)wOoHx+fR6zLu-5dAw}-yt-#MpUbCy#(UT`7-rP`G z{e1%G&vV7fuZ}pcoGG0C&DYA`J6LP?)sWaLf(V?SO#>pcn%~ zv@>upI5n>%KBTfBwKx{kIzu<0Qq9}p2TK^ zX9AU61ZosS(fAxF0$2~<1UGz_{4=o1kL6S&HtCZJ49pzB8;HAd*4TLIONK8B2L z1bY7)VZ^k0ti5q`1JFCV2m|sOkPX1r?L{{Wz3+%HE4>lfEYzMPx+&;gErcm`P0&z5 m>3E^*M{f@z^h>rOWiiy&VSqO)Fb9Ehl^{bRFne(KfOr7!SSaKG literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.thrift deleted file mode 100644 index dd69a3299..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_federated.thrift +++ /dev/null @@ -1,32 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava.federated -#@namespace scala com.twitter.tweetypie.thriftscala.federated -#@namespace strato com.twitter.tweetypie.federated - -include "com/twitter/tweetypie/stored_tweet_info.thrift" - -typedef i16 FieldId - -struct GetStoredTweetsView { - 1: bool bypass_visibility_filtering = 0 - 2: optional i64 for_user_id - 3: list additional_field_ids = [] -} - -struct GetStoredTweetsResponse { - 1: stored_tweet_info.StoredTweetInfo stored_tweet -} - -struct GetStoredTweetsByUserView { - 1: bool bypass_visibility_filtering = 0 - 2: bool set_for_user_id = 0 - 3: optional i64 start_time_msec - 4: optional i64 end_time_msec - 5: optional i64 cursor - 6: bool start_from_oldest = 0 - 7: list additional_field_ids = [] -} - -struct GetStoredTweetsByUserResponse { - 1: required list stored_tweets - 2: optional i64 cursor -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_graphql.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/tweet_service_graphql.docx new file mode 100644 index 0000000000000000000000000000000000000000..a0edf449d5f5c8f62dfbf0e1291715cc87017b40 GIT binary patch literal 41991 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�A=$dMcKxIaF1*>5PoP^|AhN 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 qTDcQ=-N)be2mj!6GyZRi-SrOD6p`UG=&xCY2QY exclude_reply_user_ids = [] ( - strato.json.numbers.type='string', - strato.description='Screen names appearing in the mention prefix can be excluded. Because the mention prefix must always include the leading mention to preserve directed-at addressing for the in-reply-to tweet author, attempting to exclude that user id will have no effect. Specifying a user id not in the prefix will be silently ignored.' - ) -} (strato.graphql.typename='TweetReply') - -struct TweetMediaEntity { - // @see com.twitter.tweetypie.thriftscala.PostTweetRequest.media_upload_ids - 1: i64 media_id ( - strato.json.numbers.type='string', - strato.description='Media id as obtained from the User Image Service when uploaded.' - ) - - // @see com.twitter.tweetypie.thriftscala.Tweet.media_tags - 2: list tagged_users = [] ( - strato.json.numbers.type='string', - strato.description='List of user_ids to tag in this media entity. Requires Client App Privelege MEDIA_TAGS. Contributors (http://go/teams) are not supported. Tags are silently dropped when unauthorized.' - ) -} (strato.graphql.typename='TweetMediaEntity') - -struct TweetMedia { - 1: list media_entities = [] ( - strato.description='You may include up to 4 photos or 1 animated GIF or 1 video in a Tweet.' - ) - - /** - * @deprecated @see com.twitter.tweetypie.thriftscala.PostTweetRequest.possibly_sensitive for - * more details on why this field is ignored. - */ - 2: bool possibly_sensitive = 0 ( - strato.description='Mark this tweet as possibly containing objectionable media.' - ) -} (strato.graphql.typename='TweetMedia') - -//This is similar to the APITweetAnnotation struct except that here all the id fields are required. -struct TweetAnnotation { - 1: i64 group_id (strato.json.numbers.type='string') - 2: i64 domain_id (strato.json.numbers.type='string') - 3: i64 entity_id (strato.json.numbers.type='string') -} (strato.graphql.typename='TweetAnnotation', strato.case.format='preserve') - -struct TweetGeoCoordinates { - 1: double latitude (strato.description='The latitude of the location this Tweet refers to. The valid range for latitude is -90.0 to +90.0 (North is positive) inclusive.') - 2: double longitude (strato.description='The longitude of the location this Tweet refers to. The valid range for longitude is -180.0 to +180.0 (East is positive) inclusive.') - 3: bool display_coordinates = 1 (strato.description='Whether or not make the coordinates public. When false, geo coordinates are persisted with the Tweet but are not shared publicly.') -} (strato.graphql.typename='TweetGeoCoordinates') - -struct TweetGeo { - 1: optional TweetGeoCoordinates coordinates ( - strato.description='The geo coordinates of the location this Tweet refers to.' - ) - 2: optional string place_id ( - strato.description='A place in the world. See also https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/geo#place' - ) - 3: optional string geo_search_request_id ( - strato.description='See https://confluence.twitter.biz/display/GEO/Passing+the+geo+search+request+ID' - ) -} ( - strato.graphql.typename='TweetGeo', - strato.description='Tweet geo location metadata. See https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/geo' -) - -enum BatchComposeMode { - BATCH_FIRST = 1 (strato.description='This is the first Tweet in a batch.') - BATCH_SUBSEQUENT = 2 (strato.description='This is any of the subsequent Tweets in a batch.') -}( - strato.graphql.typename='BatchComposeMode', - strato.description='Indicates whether a Tweet was created using a batch composer, and if so position of a Tweet within the batch. A value of None, indicates that the tweet was not created in a batch. More info: go/batchcompose.' -) - -/** - * Conversation Controls - * See also: - * tweet.thrift/Tweet.conversation_control - * tweet_service.thrift/TweetCreateConversationControl - * tweet_service.thrift/PostTweetRequest.conversation_control - * - * These types are isomorphic/equivalent to tweet_service.thrift/TweetCreateConversationControl* to - * avoid exposing internal service thrift types. - */ -enum ConversationControlMode { - BY_INVITATION = 1 (strato.description='Users that the conversation owner mentions by @screenname in the tweet text are invited.') - COMMUNITY = 2 (strato.description='The conversation owner, invited users, and users who the conversation owner follows can reply.') -} ( - strato.graphql.typename='ConversationControlMode' -) - -struct TweetConversationControl { - 1: ConversationControlMode mode -} ( - strato.graphql.typename='TweetConversationControl', - strato.description='Specifies limits on user participation in a conversation. See also http://go/dont-at-me. Up to one value may be provided. (Conceptually this is a union, however graphql doesn\'t support union types as inputs.)' -) - -// empty for now, but intended to be populated in later iterations of the super follows project. -struct ExclusiveTweetControlOptions {} ( - strato.description='Marks a tweet as exclusive. See go/superfollows.', - strato.graphql.typename='ExclusiveTweetControlOptions', -) - -struct EditOptions { - 1: optional i64 previous_tweet_id (strato.json.numbers.type='string', strato.description='previous Tweet id') -} ( - strato.description='Edit options for a Tweet.', - strato.graphql.typename='EditOptions', -) - -struct TweetPeriscopeContext { - 1: bool is_live = 0 ( - strato.description='Indicates if the tweet contains live streaming video. A value of false is equivalent to this struct being undefined in the CreateTweetRequest.' - ) - - // Note that the REST API also defines a context_periscope_creator_id param. The GraphQL - // API infers this value from the TwitterContext Viewer.userId since it should always be - // the same as the Tweet.coreData.userId which is also inferred from Viewer.userId. -} ( - strato.description='Specifies information about live video streaming. Note that the Periscope product was shut down in March 2021, however some live video streaming features remain in the Twitter app. This struct keeps the Periscope naming convention to retain parity and traceability to other areas of the codebase that also retain the Periscope name.', - strato.graphql.typename='TweetPeriscopeContext', -) - -struct TrustedFriendsControlOptions { - 1: required i64 trusted_friends_list_id ( - strato.json.numbers.type='string', - strato.description='The ID of the Trusted Friends List whose members can view this tweet.' - ) -} ( - strato.description='Specifies information for a Trusted Friends tweet. See go/trusted-friends', - strato.graphql.typename='TrustedFriendsControlOptions', -) - -enum CollabControlType { - COLLAB_INVITATION = 1 (strato.description='This represents a CollabInvitation.') - // Note that a CollabTweet cannot be created through external graphql request, - // rather a user can create a CollabInvitation (which is automatically nullcasted) and a - // public CollabTweet will be created when all Collaborators have accepted the CollabInvitation, - // triggering a strato column to instantiate the CollabTweet directly -}( - strato.graphql.typename='CollabControlType', -) - -struct CollabControlOptions { - 1: required CollabControlType collabControlType - 2: required list collaborator_user_ids ( - strato.json.numbers.type='string', - strato.description='A list of user ids representing all Collaborators on a CollabTweet or CollabInvitation') -}( - strato.graphql.typename='CollabControlOptions', - strato.description='Specifies information about a CollabTweet or CollabInvitation (a union is used to ensure CollabControl defines one or the other). See more at go/collab-tweets.' -) - -struct NoteTweetOptions { - 1: required i64 note_tweet_id ( - strato.json.numbers.type='string', - strato.description='The ID of the Note Tweet that has to be associated with the created Tweet.') - // Deprecated - 2: optional list mentioned_screen_names ( - strato.description = 'Screen names of the users mentioned in the NoteTweet. This is used to set conversation control on the Tweet.') - - 3: optional list mentioned_user_ids ( - strato.description = 'User ids of mentioned users in the NoteTweet. This is used to set conversation control on the Tweet, send mentioned user ids to TLS' - ) - 4: optional bool is_expandable ( - strato.description = 'Specifies if the Tweet can be expanded into the NoteTweet, or if they have the same text' - ) -} ( - strato.graphql.typename='NoteTweetOptions', - strato.description='Note Tweet options for a Tweet.' -) - -// NOTE: Some clients were using the dark_request directive in GraphQL to signal that a Tweet should not be persisted -// but this is not recommended, since the dark_request directive is not meant to be used for business logic. -struct UndoOptions { - 1: required bool is_undo ( - strato.description='Set to true if the Tweet is undo-able. Tweetypie will process the Tweet but will not persist it.' - ) -} ( - strato.graphql.typename='UndoOptions' -) - -struct CreateTweetRequest { - 1: string tweet_text = "" ( - strato.description='The user-supplied text of the tweet. Defaults to empty string. Leading & trailing whitespace are trimmed, remaining value may be empty if and only if one or more media entity ids are also provided.' - ) - - // @see com.twitter.tweetypie.thriftscala.PostTweetRequest.nullcast - 2: bool nullcast = 0 ( - strato.description='Do not deliver this tweet to a user\'s followers. http://go/nullcast' - ) - - // @see com.twitter.tweetypie.thriftscala.PostTweetRequest.PostTweetRequest.comparison_id - 3: optional string comparison_id ( - strato.description='Correlates requests originating from REST endpoints and GraphQL endpoints. UUID v4 (random) 36 character string.' - ) - - // @see com.twitter.ads.callback.thriftscala.EngagementRequest - 4: optional engagement_request.EngagementRequest engagement_request ( - strato.description='The ad engagement from which this tweet was created.' - ) - - // @see com.twitter.tweetypie.thriftscala.PostTweetRequest.attachment_url - 5: optional string attachment_url ( - strato.description='Tweet permalink (i.e. Quoted Tweet) or Direct Message deep link. This URL is not included in the visible_text_range.' - ) - - // @see com.twitter.tweetypie.thriftscala.Tweet.card_reference - 6: optional string card_uri ( - strato.description='Link to the card to associate with a tweet.' - ) - - 7: optional TweetReply reply ( - strato.description='Reply parameters.' - ) - - 8: optional TweetMedia media ( - strato.description='Media parameters.' - ) - - 9: optional list semantic_annotation_ids ( - strato.description='Escherbird Annotations.' - ) - - 10: optional TweetGeo geo ( - strato.description='Tweet geo location metadata. See https://developer.twitter.com/en/docs/twitter-api/v1/data-dictionary/object-model/geo' - ) - - 11: optional BatchComposeMode batch_compose ( - strato.description='Batch Compose Mode. See go/batchcompose' - ) - - 12: optional ExclusiveTweetControlOptions exclusive_tweet_control_options ( - strato.description='When defined, this tweet will be marked as exclusive. Leave undefined to signify a regular, non-exclusive tweet. See go/superfollows.' - ) - - 13: optional TweetConversationControl conversation_control ( - strato.description='Restrict replies to this tweet. See http://go/dont-at-me-api. Only valid for conversation root tweets. Applies to all replies to this tweet.' - ) - - 14: optional TweetPeriscopeContext periscope ( - strato.description='Specifies information about live video streaming. Note that the Periscope product was shut down in March 2021, however some live video streaming features remain in the Twitter app. This struct keeps the Periscope naming convention to retain parity and traceability to other areas of the codebase that also retain the Periscope name. Note: A value of periscope.isLive=false is equivalent to this struct being left undefined.' - ) - - 15: optional TrustedFriendsControlOptions trusted_friends_control_options ( - strato.description='Trusted Friends parameters.' - ) - - 16: optional CollabControlOptions collab_control_options ( - strato.description='Collab Tweet & Collab Invitation parameters.' - ) - - 17: optional EditOptions edit_options ( - strato.description='when defined, this tweet will be marked as an edit of the tweet represented by previous_tweet_id in edit_options.' - ) - - 18: optional NoteTweetOptions note_tweet_options ( - strato.description='The Note Tweet that is to be associated with the created Tweet.', - strato.graphql.skip='true' - ) - - 19: optional UndoOptions undo_options ( - strato.description='If the user has Undo Tweets enabled, the Tweet is created so that it can be previewed by the client but is not persisted.', - ) -} (strato.graphql.typename='CreateTweetRequest') - -struct CreateTweetResponse { - 1: optional i64 tweet_id ( - strato.space='Tweet', - strato.graphql.fieldname='tweet', - strato.description='The created tweet.' - ) -} (strato.graphql.typename='CreateTweetResponse') - -struct CreateTweetResponseWithSubqueryPrefetchItems { - 1: optional CreateTweetResponse data - 2: optional existsAndPrefetch.PrefetchedData subqueryPrefetchItems -} - -// Request struct, ResponseStruct, ResponseWithPrefetchStruct -struct DeleteTweetRequest { - 1: required i64 tweet_id (strato.json.numbers.type='string') - - // @see com.twitter.tweetypie.thriftscala.PostTweetRequest.PostTweetRequest.comparison_id - 2: optional string comparison_id ( - strato.description='Correlates requests originating from REST endpoints and GraphQL endpoints. UUID v4 (random) 36 character string.' - ) -} (strato.graphql.typename='DeleteTweetRequest') - -struct DeleteTweetResponse { - 1: optional i64 tweet_id ( - strato.space='Tweet', - strato.graphql.fieldname='tweet', - strato.description='The deleted Tweet. Since the Tweet will always be not found after deletion, the TweetResult will always be empty.' - ) -} (strato.graphql.typename='DeleteTweetResponse') - -struct DeleteTweetResponseWithSubqueryPrefetchItems { - 1: optional DeleteTweetResponse data - 2: optional existsAndPrefetch.PrefetchedData subqueryPrefetchItems -} diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.docx new file mode 100644 index 0000000000000000000000000000000000000000..2e658e689dd3275eb01f5073694ec887ca5cf948 GIT binary patch literal 36840 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 ZhT1v|@MZ<(AW*InWJm;NkHT&c4*&;g;JW|- literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.thrift deleted file mode 100644 index b01ac21d3..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/unmentions/unmentions.thrift +++ /dev/null @@ -1,9 +0,0 @@ -namespace java com.twitter.tweetypie.unmentions.thriftjava -#@ namespace scala com.twitter.tweetypie.unmentions.thriftscala -#@ namespace strato com.twitter.tweetypie.unmentions -namespace py gen.twitter.tweetypie.unmentions - -struct UnmentionData { - 1: optional i64 conversationId (personalDataType = 'TweetConversationId') - 2: optional list mentionedUsers (personalDataType = 'UserId') -} (strato.space = "Unmentions", persisted='true', hasPersonalData = 'true') \ No newline at end of file diff --git a/tweetypie/server/BUILD b/tweetypie/server/BUILD deleted file mode 100644 index 2b17d8a49..000000000 --- a/tweetypie/server/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -target( - tags = ["bazel-compatible"], - dependencies = [ - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/backends", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/config", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/core", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/handler", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/media", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/repository", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/service", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/store", - ], -) \ No newline at end of file diff --git a/tweetypie/server/BUILD.docx b/tweetypie/server/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f8aa5e22cb0983634773e9ef87a796227d9fbba0 GIT binary patch literal 36792 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/README.docx b/tweetypie/server/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..956006aa95a8af70be5225d2984ae7e75c7f413d GIT binary patch literal 38444 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�F_n#_iUvxKZ!xp{u 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/README.md b/tweetypie/server/README.md deleted file mode 100644 index 49d3c7ef7..000000000 --- a/tweetypie/server/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Tweetypie - -## Overview - -Tweetypie is the core Tweet service that handles the reading and writing of Tweet data. It is called by the Twitter clients (through GraphQL), as well as various internal Twitter services, to fetch, create, delete, and edit Tweets. Tweetypie calls several backends to hydrate Tweet related data to return to callers. - -## How It Works - -The next sections describe the layers involved in the read and create paths for Tweets. - -### Read Path - -In the read path, Tweetypie fetches the Tweet data from [Manhattan](https://blog.twitter.com/engineering/en_us/a/2014/manhattan-our-real-time-multi-tenant-distributed-database-for-twitter-scale) or [Twemcache](https://blog.twitter.com/engineering/en_us/a/2012/caching-with-twemcache), and hydrates data about the Tweet from various other backend services. - -#### Relevant Packages - -- [backends](src/main/scala/com/twitter/tweetypie/backends/): A "backend" is a wrapper around a thrift service that Tweetypie calls. For example [Talon.scala](src/main/scala/com/twitter/tweetypie/backends/Talon.scala) is the backend for Talon, the URL shortener. -- [repository](src/main/scala/com/twitter/tweetypie/repository/): A "repository" wraps a backend and provides a structured interface for retrieving data from the backend. [UrlRepository.scala](src/main/scala/com/twitter/tweetypie/repository/UrlRepository.scala) is the repository for the Talon backend. -- [hydrator](src/main/scala/com/twitter/tweetypie/hydrator/): Tweetypie doesn't store all the data associated with Tweets. For example, it doesn't store User objects, but it stores screennames in the Tweet text (as mentions). It stores media IDs, but it doesn't store the media metadata. Hydrators take the raw Tweet data from Manhattan or Cache and return it with some additional information, along with hydration metadata that says whether the hydration took place. This information is usually fetched using a repository. For example, during the hydration process, the [UrlEntityHydrator](src/main/scala/com/twitter/tweetypie/hydrator/UrlEntityHydrator.scala) calls Talon using the [UrlRepository](src/main/scala/com/twitter/tweetypie/repository/UrlRepository.scala) and fetches the expanded URLs for the t.co links in the Tweet. -- [handler](src/main/scala/com/twitter/tweetypie/handler/): A handler is a function that handles requests to one of the Tweetypie endpoints. The [GetTweetsHandler](src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala) handles requests to `get_tweets`, one of the endpoints used to fetch Tweets. - -#### Through the Read Path - -At a high level, the path a `get_tweets` request takes is as follows. - -- The request is handled by [GetTweetsHandler](src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala). -- GetTweetsHandler uses the TweetResultRepository (defined in [LogicalRepositories.scala](src/main/scala/com/twitter/tweetypie/config/LogicalRepositories#L301)). The TweetResultRepository has at its core a [ManhattanTweetRespository](src/main/scala/com/twitter/tweetypie/repository/ManhattanTweetRepository.scala) (that fetches the Tweet data from Manhattan), wrapped in a [CachingTweetRepository](src/main/scala/com/twitter/tweetypie/repository/ManhattanTweetRepository.scala) (that applies caching using Twemcache). Finally, the caching repository is wrapped in a hydration layer (provided by [TweetHydration.hydrateRepo](src/main/scala/com/twitter/tweetypie/hydrator/TweetHydration.scala#L789)). Essentially, the TweetResultRepository fetches the Tweet data from cache or Manhattan, and passes it through the hydration pipeline. -- The hydration pipeline is described in [TweetHydration.scala](src/main/scala/com/twitter/tweetypie/hydrator/TweetHydration.scala), where all the hydrators are combined together. - -### Write Path - -The write path follows different patterns to the read path, but reuses some of the code. - -#### Relevant Packages - -- [store](src/main/scala/com/twitter/tweetypie/store/): The store package includes the code for updating backends on write, and the coordination code for describing which backends need to be updated for which endpoints. There are two types of file in this package: stores and store modules. Files that end in Store are stores and define the logic for updating a backend, for example [ManhattanTweetStore](src/main/scala/com/twitter/tweetypie/store/ManhattanTweetStore.scala) writes Tweets to Manhattan. Most of the files that don't end in Store are store modules and define the logic for handling a write endpoint, and describe which stores are called, for example [InsertTweet](src/main/scala/com/twitter/tweetypie/store/InsertTweet.scala) which handles the `post_tweet` endpoint. Modules define which stores they call, and stores define which modules they handle. - -#### Through the Write Path - -The path a `post_tweet` request takes is as follows. - -- The request is handled in [PostTweet.scala](src/main/scala/com/twitter/tweetypie/handler/PostTweet.scala#L338). -- [TweetBuilder](src/main/scala/com/twitter/tweetypie/handler/TweetBuilder.scala) creates a Tweet from the request, after performing text processing, validation, URL shortening, media processing, checking for duplicates etc. -- [WritePathHydration.hydrateInsertTweet](src/main/scala/com/twitter/tweetypie/config/WritePathHydration.scala#L54) passes the Tweet through the hydration pipeline to return the caller. -- The Tweet data is written to various stores as described in [InsertTweet.scala](src/main/scala/com/twitter/tweetypie/store/InsertTweet.scala#L84). diff --git a/tweetypie/server/config/BUILD b/tweetypie/server/config/BUILD deleted file mode 100644 index 45a90181c..000000000 --- a/tweetypie/server/config/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -resources( - sources = [ - "!**/*.pyc", - "!BUILD*", - "**/*", - ], -) diff --git a/tweetypie/server/config/BUILD.docx b/tweetypie/server/config/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..25d80c950adc174535d220425fc9f9cc95bed559 GIT binary patch literal 36698 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 z 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/config/decider.docx b/tweetypie/server/config/decider.docx new file mode 100644 index 0000000000000000000000000000000000000000..8761e3aeda3e98aa584d0f555fb2e6c843179021 GIT binary patch literal 40560 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 maxSize will be rejected. - default_availability: 0 - -tweetypie_media_refs_hydrator_include_pasted_media: - comment: - For debugging MediaRefsHydrator - determine if extra calls to pasted media are causing the GC issues. - default_availability: 0 - -tweetypie_prefer_forwarded_service_identifier_for_client_id: - comment: Effective client ID logic prefers forwarded service identifier to service identifier if available. - default_availability: 0 - -tweetypie_rate_limit_by_limiter_service: - comment: - Controls whether we will consult limiter service to see whether a - user is allowed to create more tweets. - default_availability: 10000 - -tweetypie_rate_limit_tweet_creation_failure: - comment: - Controls whether we rate limit tweet creation based on failed - attempts to create tweets via limiter service. This is separate - from the limit of created tweets. It is intended to prevent - unforeseen abuse by failing tweet creation attempts immediately if - the user has had too many recent tweet creation - failures. Disabling this decider will reduce traffic to limiter - service, but will remove the per-user abuse protection. - default_availability: 10000 - -tweetypie_replicate_reads_to_atla: - comment: Send reads to deferredrpc for replication to atla. We can use this to warm caches in atla. - default_availability: 0 - -tweetypie_replicate_reads_to_pdxa: - comment: Send reads to deferredrpc for replication to pdxa. We can use this to warm caches in pdxa. - default_availability: 0 - -tweetypie_disable_invite_via_mention: - comment: - Disables invite via mention field in the conversation control struct of - root tweets + reply tweets. - default_availability: 0 - -tweetypie_shed_read_traffic_voluntarily: - comment: - Preferred way to reject read requests during an incident from a subset of clients that have - volunteered to shed load. These clients have load_shed_envs set in clients.yml, often for - staging environments. Although this decider is available and clients have volunteered, should - still only be used in an emergency. - default_availability: 0 - -tweetypie_validate_card_ref_attachment_android: - comment: - When enabled tweet creates from Android consider CardReference for the TooManyAttachmentTypes error when creating tweets with more than one attachment type. - default_availability: 0 - -tweetypie_validate_card_ref_attachment_non_android: - comment: - When enabled tweet creates from non-Android consider CardReference for the TooManyAttachmentTypes error when creating tweets with more than one attachment type - default_availability: 0 - -# Additional Fields - -tweetypie_short_circuit_likely_partial_tweet_reads_ms: - comment: - Specifies a number of milliseconds before which, we short circuit likely - partial reads from MH and return NotFound tweet response state. - After experimenting decided to go with 1500 ms. - default_availability: 0 - -tweetypie_populate_quoted_tweet_results_as_contextual_tweet_ref: - comment: - CreateTweet and CreateReTweet column to return the 'quoted_tweet_results' PrefetchedItem as - ContextualTweetRef type instead of just tweetId. - This will be used during the quotedTweet.Tweet column migration (see http://go/qt-col-migration) - Post-migration, this will be removed. - default_availability: 0 -tweetypie_enable_unmentions_timeline_warmup: - comment: - When enabled, read-path calls execute an async call to the getUnmentionedUsersFromConverstion - strato column to warm the unmentioned NH/haplolite cache. - http://go/unmention-me-onepager - default_availability: 0 - -tweetypie_tweet_visibility_library_enable_parity_test: - comment: measure TVL parity against VF federated service, for a fraction of traffic - default_availability: 0 - -tweetypie_enable_vf_feature_hydration_in_quoted_tweet_visibility_library_shim: - comment: when enabled, all features are hydrated in QuotedTweetVisibilityLibrary shim - default_availability: 0 - -tweetypie_enable_remove_unmentioned_implicit_mentions: - comment: - When enabled, implicit mentions are filtered based on users that have unmentioned themselves - from the tweet's conversation. http://go/unmention-me-onepager - default_availability: 0 - -tweetypie_enable_stale_tweet_validation: - comment: Controls whether we will enforce stale tweet policy on replies and QT - default_availability: 0 - -tweetypie_disable_promoted_tweet_edit: - comment: - Controls whether we will disable edits on promoted tweets - default_availability: 0 - -tweetypie_should_materialize_containers: - comment: - When enabled, Creatives Container Service will be called to materialize container-backed tweets. - Otherwise, TP will not call CCS and return a StatusState of NotFound. - default_availability: 0 - -tweetypie_check_twitter_blue_subscription_for_edit: - comment: - Controls whether we check if the User is subscribed to Twitter Blue when editing a Tweet. - default_availability: 0 - -tweetypie_hydrate_bookmarks_count: - comment: - Controls whether we hydrate bookmarks count for a Tweet - default_availability: 0 - -tweetypie_hydrate_bookmarks_perspective: - comment: - Controls whether we request the Bookmarked perspective from TLS - default_availability: 0 - -tweetypie_set_edit_time_window_to_sixty_minutes: - comment: - Set time window in which Tweets are editable to 60 minutes - default_availability: 0 - -tweetypie_enable_federated_column_dark_traffic: - comment: - Enable dark traffic for federated column. - default_availability: 0 diff --git a/tweetypie/server/config/decider_staging.docx b/tweetypie/server/config/decider_staging.docx new file mode 100644 index 0000000000000000000000000000000000000000..9846b6db43b1424fdc51a60fbf56d407cbf5c72b GIT binary patch literal 36611 zcmagFWmsIxwl<2pdvJGmcL*f7I|L2dxYKxWx8UyX?(QMDTaZ9-_ph^L@3r?i=iWb) zhpHN{j8St|_3Ub;kC0GUU|?WyU@mDqT9qn=aY^7{U}G>~V3?p*T?v4lvzeWq1E{_Jh>ed_G&6eBQ(1V zpZCU;Twf-9-N+v#{G_s8mYAtEGOg1Q+WdLHh8dl!OMfwHh#zpOb)96WceGGg(h4k%N!($%Rfsjr38OMGy)Yhu2To=>pEP-GLRX{x*pB`#@5Z!3dR5>%RievRl%tLfsy zGz)+MNXs>Gg%?-0{;+WizZYq8mND`ZJ&LtQS4~wgWy9qyK#_I8yq1tXn2s)sZOy=G zdu&(wtXqD;d>AO9sA}L&c?~n!fib{q(I8kn)3W=1pNW!UQqyzF++`zB+1GxW_!nz! z%9&1M%#sh>=!`D+*?%S|^b4Y@C1{$@fD(ibN{}hQM9C3g@5EvPa5Vcp$ur}}75Z7x zr0%?>=HxZPuF&A5Wa+_=!avAh`7gEJa&pPrjAwCAZtfP?>f|uE5^o9&U)c+<^E5U? zngquOlZ3>b`J09#YGc2y8sn@zWl7QVRVD@Xo%KA`;->{2;=pyRd;lq-Ifj^fVYhAtcaY7_FRb4}Z$$t9aFkVpqP=-2x} zBbEIOGuj#$cES_a2WTWza1K%BR28=t4fd_@6DLQ9&1qLi{c@z{5G0i3ceyhsB^9Cp zxo~T`t{Z@X!rI}vxt%p8Cn`S?XVVsr8qAlbabB8~Pr!`zT$EuqA&U_B%*4Cv3rn{2 zL|Lq2u?#5LHkt2?U6Xl-^}cWKU*9beGTifAK;a!(pcv52x=Fk~_gxbFXI-vWS8V&Zy?>y0Nah+*xW6d9(SS5QPZ8oY|y73{sgJ)4P2{c^3n zA2?4^YFyg*s?4ewUJm(E{khzuWLk*p{qD_?c5)IjiZsNh7Y?X#k8(@e9lz+m~ma(yoHx zhBqA7ld9I0YKC4$oy2x)i4EuQaY4RF&_<4ar%1B;1n9j+&(`u^bBJxZtuGabMfrG( z0`({$zVwVENxvcit3wo<(3FblTRR50`o+VGlu&sIsRbT>`QvFnvj#I!)RJ(y4V}_w zYDQS9cD$zi!wz!=nNZab4P`RXlQ9Vag9+WK=D~r)qK>|TZWMMl7e2Zx)pjtj6?_js z1D$9sgs1f0RcD9f?lb-i8uNuM+rid@ixA?G8w@Y7r5>I*5H%QFk{IehxV6~Wv5%`cMwoEY|X)|jZEn^hFF zF8#h?-2jfJETFsA#TK+U{hk?xiIdSQtZ2h$KH;<}8KfxR7^C34j0UYxlawq;dUzFf z>~?BxBtB$!C7h`xq3JVUOt|kKbPq@KOm~m+}$#=@lzZp55DEw4C5 z7P99;%Mg2M+I1Y96w6~%^-NKvEQkegDi><~+FvLexkDcJke%$nk_+^on|hZhTu^GX zRxL{N8UR&Ln+P)$)w}1aW>DfFpa*|9^I^=>No)k)hYWV8J6zNuEP?JYUdP$x3-;qn zh53luTzCR)Q0GF0eUF~;U4_{kn|WY#8?`w2Od;c=X-m>7!pWB|@lA?4CXb&w8zWa- zEK00035Z;`C;6Ni6J8^e$co&$rA9YPx!s?2wpk(0;<6j0%x37j<&j2+XjCY^gnLmw zcbZq5dOnoJG@7rh{i@yQvf?d|qbAPp9KG`oM(us8Y2!$DYWZ(HE8i+S|z0oMvJ{XA*m zSgXg2q#~dghPrMon)yScQZ%r4cGPCdvQK$(Hm|oB%yq}yVzp)65eXqsIiGgdRsnM; zkHnR}jO^Y!GvW{;g80R}thu`&*NtPuV^d;VM$|2c>L zTp$z06a!iDzMQ=x^aUqi71>3+`;|xCPA^?u=p8J*5`QbPx2d~s$|$kpzkA2+lTBkg zJ9(?RupxlQ(C{IEHxdFBYc^QP3`5WYHRZUcUPfKax{?&0zowVFb4gHKe&(b$>2t-w zheY{jgxXfBfjR`r##}qmR_v;%fKDYXtP6L)9+L8|hPUQ5o%=9elgFHzo9afi*xdZ$ z%Yf|XxHqyK+cjS>0h4s=mPnCcFRaN>-G;m@=7;(%UvMU@}Ot`~Gq-CuzQgOzK6i?EdP0@ zMwR0TM6iH?8K^^pq5hp~Cua{EGpFD8DQNSTup?dP)7_nyZ}|MfHZ}-sc*+he-j(o^ zS7%o38HYT_?5}U%a6iYK82VC?iIS+RsB3&Ei?0*t%feBj+tbWUP&0dZ$@cBAIRhG! zM5n);uJiPFBX_mxo@qQ4Po7@21As4h-U1K%r|vqZS;?y}b}y&tB8$U-*N2$5ho{A} z=wgxP<6ZsxhxLp0l==3jgV~=q?I9t%M;fViA&x-kwgyFMOeqb#K>}^*UZp^Q+^YZs8(t_F8~`^t<-mtNk1I zcPHf|pAGLqiWmEVjl#tJ7Qp4KVJ~ev*Tqj?6h7soOdi#UoQh<=;t0z*zQ0h~9u5h- zH)L6T0*P|l^xZf?9UneL2hvAj7&Z2bpwcpG2oWohRK~x~CEGj9*6p9hp2|_&h1D63Tb!Ts*owR@Ou$ z#bbPfSzf!=y4ss7#*+rwd~Ms;e7f{>&$?c2Bp%IGQi%H=NtI#DI!3R2(@-^ffG!!>af`B8dT`QkW&o) z>5zKVkm@Rtml{JKZ4n>dV3v;d7_(qp-Am+SQx=QO?N8sKurrl3%z+u3PI z3eRa4kK*y0kHHyGs4ClT@eOmJD><@drTawTU^ND?bN}P5R;OD!i=eAbSDO2Q?y-m4 z^Nx**=JkGc-<9V8k+1Y(@U1LkV$!UK{%p>*D%vp^TuuIu3w%Rw3h1GR^+fLS$Q-WEktHf@XK9t{Gq5~!({K}5L* z0QzsA@nyj3-JAaXgv=7Gu${uHix~tyeNh|b$>vLkAfpILa`m*^%$iQD3VUBj^Kima zCCa?rP5;lDO`j?(6KyNw=aj{RJqM=>oPv_a81(bjr^QcKYIIfusTTKvZyowo3)4?0 zvyb+74ll#9w^t%3XTllE(vAA_bLaj0S64qz`<*g48G>603pJzO`uE+-h%>He)dLZi zzwO;q`JR(3DyBE5L|8$63$vj-fKy3Fpn~c>kaQqBO2`jl zY}8f}k6m%5BZITp!0IuCyDIX-3i41DMOf*eBSo~`sL0Hhfm5MizzDF9Z}ub2_@OTl z6Ngri)lnY2MFjxY<{i})MN_!MK?_RgfF5BIzr=|Ri0yzb$obv*8PtjMcPG>~B>-IP zuklrl_*BeLEFOp>eX<)6e`B9;#)CphLF4HD2-N|h1%q(^BlJ%ys8X6UD>C>0A~;i~ z0JR|ep(42h+BElnNc=ZctmkDFPCyE1)IWu}5`grmpn<$%HT+;AMP&LfiA zf2f{IaBD>C_&w@hO$AO84O6b|U6=-0{E|BJq+P@sED~{`W>;^!SO1(BRy^3-AI;mokJ=Q`Z@!TviMHEeUKUN#i$3Fu!+(3SN0MOj zm^MOVTq`BY*c@CVy*&lGE@ikO53Y7G`wnNz*d9B^AGH1&2nST}_*ccCmD>2w3ie$+ zI5HkNyjwZn6j+$G-)U03x6AhM zw&$ZfhH%FAeC6Wn?RM6ZK#5wo;S^f4aKog!N<=x<7OA%e)D z;=wrkhBI+khwNCo%7^jvt>^eM9%wp=g)@0seiHWjSr2Qmq>m>Hz8R7jnv_Lz%cgZ6 zJEn#U$BWtG52&E$C!D;m_sHYu?&It$npIEgz=nfM`n~N_v+56Kk>{>XgbxC8gF`!e zz8|@9-m^IJ;8+NItZEVJciA!m1>f8pfO+acG%RkG?fFLd?dH!jc-CKDi32BA_uv%X za{!gT&QPZ?ltztV&TBKzH4olUBF-i-f-4%ERz7AhEL-UB=}AyzjKfp+w+=g1buhFd zX*#0ojqbO_NB#WJlv`!$(w~HtIk3$i7Wk7g+Am>ECcR16qImowOJeec0!V@o9hend+QR@sF(CQ^CT`kL!bg z(z0z0f%~5h=~%NQ&6{WBZ?9={?bB|L*Ta{umqUY|?Jo`e zURy*mZ&{wFhoL=R!BCgeJz9jJ3^&`GQ-*KI9#rC|$)K0ThT0aH?zE#aXJ!5uvdn@~0aOpg&OFlG^J|F|0uxoG_ZsK8@J|NqWy<0j; z^Cu`z{+Kq)%vBs^s?hGXA0+L{y2XiAf<#zj!&T@5h`nA7y}^Uv5`=nLKaqUlkU z!ftXxZ?~+1Jb<=IV|EgC-q`qkFy9n$=!9cjg?^CPX7Z}({ya>A#hMi_3Qa%&bDltR zOG1x2RWpXpfIf;QZmT@XA`ctCQViqTv!fGd5l1<7vYO<%kJfa9aoXT=*wIQe7hvNU z5%1>_yO!lpK+ayQV#ZtTGETRq08>%LZH$NBss{abdzvCFY#n?w1I%lMveV~l#LF~24-?UVBGS2PU?^ z=j>wCI#r@>p!Pm~uaWnW8X7Gd;y)HyreT~RNai^I2*u?g;ZVAKQd)+aUQ3+ot*#yA z@0)pS$1xDA?1V?YNLV+mpC`{qvb{(|?+v9b_Dq+^=LE6;5gQ<@n11VF)_>)A$H!lE zB&@9)BM>D$tu;|8i+GElz23BD#7`TH6eZ}zmM}1FkSTfOb-Qi!{agR^X45Ly>e*TR zVw!q?62h0a``5<>Lfndvs2Qxh-AnGAHR_+Z@(~o&D9b+c^DdRu9BT|JUfgBa$WvDT z%n4EE@Z6Fdei-!3?@w#Hox@ZLUX7&Zorx>STR2417;LdqXY9M+Zf`c8VOtoynKyUo zg~QXlvB^srK>&@-?T)ESsl`It&wiKDQlH~-!FM`$V47n4KJ2ZvVvU#U0cDThhq zF>OGw;1c$R-X$GoFiI;mxG2`5_PnT00Dw!;f5>X-upX=T}vz zw-_ejq|9zf_g!4Hr*}y!4;)&0QzaE#nF_NETZOXTR!8>5Wf`JBRPu_~?UW#DRQOsa z7o4oAthUNDIkg+L7x661>Nx6Ijk3j44HGp}zDo1RawvS5h;m9j@3*;~a3MkUXH_^7oQUGMBvHthX{0TOmC2Uh_h`JpNR3!n!_z zf`D#i7jqnTz~UNI{8?>9+WRjf>g}UO@r+j`X;)&A^k*h|LfD=X3^aPBOkioPvz5M_ z!`XHKrTGNpnOU}pmsPYJHqLsyNEnp&94R-ctrL}}8s0wG0*(v}a@YkWWig%0u*#*% ziVn9${c6n)W?U;HR;H!U9ebCX5g+?6I}pB4PH6Lw*u767CA(>0q2ne=EpiAG<%vjF z$zzyFg_6pYtR5J~W>t^3^X~O{RNlLz$74eN!EZ7F`lNHS{jBf2_AVd77DeUrRnsKr z&vfv|3fd_%-^cF`kk{Lj%nbvNoh!q>fj-Z(Pxz12J{xE!mRBvrcw`5fl--M_l0Qre4A)4Qu4-x=(30N?Wpz7gS}3vcsU z4>q^#5NuMxaIvx46+J%KzkDm6+;&HZ@|t!YMEp5*`yJw*s+==%ZD|==V>C&%6Z;>&aD=c`$B0?f|CJF6SguCJL?`PK(35kz`s zvZV(vujiU)^N_*jn^WLsdX^#SCHb{q{jS$mKxGmp*z5B zU2$WjN}?D)j!fcx-dQ%-dgA*WpUv?Uxvqp=5W1nIyM=cc)rqO#bj|Hzv*_x+iR}W{ z3GYn@BfFKfk!#%-}my zArO3AV zUWXzl5RU%=N)C^Our8zCMqmJ@`(91ZhI7U)C`SMnwMIs9fT^}PVBZgOJR5o$T5piA ze(?}l6$CShEdi(sJDhA@AM{i8YTqkF$!RtcbRkkGa@mIOaMTh9@K0SpZ1`~xBaVk_QNaws!Pc-0$=WW7l#$LJ{NlZji}QPR6@jN4TNss< ztq}Z3PLyXyN~%!b%QT=~RhPH$ugyNW(HyE&XS$3QM{apQQi}YxxnEiF%j)jrygq`H z%-1`-jG4&XUFYi*~>mNg)J zq?@tM#laP6Q})q>^vVnxJ~m0zWg;By-K5Fp8@T7cqdwA~fUP>d#=iM*8}Y4u8ENFW zG*}*282}2$LGqFA{3E>Nukg8lg&+P741p*cD>av1Z`I@?m95MI z-J#Tjc~rWYf~KH>CqYWy##k-DO9Q2$`_+Eoxr~%ONZJ8{bs)+&Guo& zV(ue23)Xp%rzOfvf8mi-r>OwtYH5yvfno{gQ7}&s`CR$RqSRTDQjLqyoK;z136I6R zO?jelz5#-Jt{=_ZN2gF?X7#H!gF2$<6E!84>J$z9n?3?d^dt3?kbE}|rr1T*h$`m1 zjSTgACiBNgPr9vOh%6m(b~;#ZRS6%vtb0(QwiabJGu zTt7NpOYhTY4yztrdS5ljVwHv(PevZ*PLWMo?=HJ)mYIJ}ic=Q#xqHNbVjL=o8i%kf zgmt(i`m?{NakQb4toL9fr zjoQfD03?OG%>j_v=}SUs1glIVReZJRKYb-!Uo*~P-mcUbFR8zwPP#5xW(}5b1%7Mf zl^zsA=%Nnv*RirT69^-ZwD9sjGkiZqj2zolX4x9!ov&V2Tsu9l`ACsHJ8*DB3vszJ zT^!+eetV?`#kiEQGK~<4Ko5Zs!|<+fjyXG=nEE|WGhE3>_i}ZiqhFE=Qlk7`{(WQu zB8NJX`Q)U~h6%l*G?AY{Q~{AB?oGp|S*e|6mguqn;(?<4n@3?+78iWG_(BQ2#>nYt zh=rBD1dbMDDe?PHF|}(}zP45=QT;yM$|L22UPd)2HAaXdJX9NpKP=v?*2R%G>dWd2cL_pt#qI$H$NvGS^jdm!3G~a;Jj$% z5BKY+Pn(qzz1N-uCD9JNxE{a!eeeww7LlgwtZ*iiycB9+e)=Y+Qo^~0O@PL3Z6}EE z1is{xpc1bVx>Ens*|2GW_PM1l6y>Vyib4^o$wNKqYS;<4{bN~?l;~xYMrqcNu%?Nk z=p~LqU`L@l~T?%%01zNX|Tap z>Hg1b(vCo7ow)}dkNgaXOmF>PipLu6CsLKo4PYV3N>SV zdb6Y26uVAucD?<4?u76ac59`r0ZFM;Uk9P!l9>sr38Zv;_#DX-sN3I6Am^EF)JB_MN zvgFtdoWu?9u)OG3P!-V>G$*17UzXmmLVQ(%sy@3X-NdZO)9 za3mRv7#P2h*JqAYRL7?BEwXy;m}P4t@wI_RD=wZq|Q+A=U%~rh=WKKCv^lNyc^4?zoZ5G_(BV|lkrD86P2vo0!)($ z%~Y6~_fE!8Dw2>vnA1X@&hP$qWcE;}qhc?!DQyq?z(Sxsq=UjA?aA?`+-#|fg4w(@ z$roWx_!jKf?o?CS5mtXF;T|EKD$PDk;tR`n^IQK5VXcGrqNpbYurB0%G-w*MH=yRJwlZ)#qabNALF!jSX%`mRgC-6z)fdyorX96{oQ_%X$5pNQMMn8U`9~5hiamHtQoM^A~)T(>yPI)DW0ww5bfOU z#rVC;E_~PQHHY*U`K`+ch+Gx+5AtR;^SUL?2Haq=Wh3*?T+7L2{-r5ewKIGlpFYbKpEP^U7cw*E-3I7=d zs7)O5S;`TkU*Xf3&G(h>%&a`RaBJF+Wwa>Um<7{OK53LwByw@0PJUZac6zdOvBVIG-MTSOo3`T{yG{Gox+}J3A59Ru}&d^6{MQsh- z{iK@tLyrA4EXz`I8p_6^Y@dMU^LJJC_xc<5;R`@Rj7eFY7X^@xU&zuH zz|*L|t%(6ot;>q3iM{EFZ?+vBpIR*rHYA%tE|sm#&j6S%rBzLhGZ zQNO#BoaM~3glOVWzlxgW{8?I-&kW#~x9$XFo^n>YLZiz=&NN(Z_$PawiRM`nhkfh%xc@ck`?6m#=Gs!D&-96pD&shlsnZzuz zeB-ytY9S)d$Hm4Mh)(}xM(scddZSzywz{{od~yKZvPQ!Mc`cRHfF*;ir6a=}GS9Hz z>^X=xc58Z7@nO^OljDOs(CV8qAB04&_6*vr?gXDM93&iq*ODpP3xelT%V3}z8UPCp zx-3mNo6O&H)}jw4*pFn|A`rScm=cE{wCmV{3?&2;_X`F81l2++n@Gx1Lc=Rod1D$9 z2Qgs+$H3ZY!<_}2)soT}hNA>fM`p2ak1@Z1=y;;t4mM_~HxeXq;vUtVsDX8ngZ#Zr zLXG%y&O(NQZ$pF7I)08CA;MSOJ``1E4>L=7*L^L|I4zM`L9z--Y(he|O$}rp?&^OR5v|PJCSq=O=khY<3 zoAt8}CUN=<7N`wGJJq>5dQOHD2NBPKazVJ^^7jFtGZ?w>C>+1UDqq1=L~X6W9ZB^` zLE8*>aAp|{mJ!4wcmt(lgqcqrU{`p3h;l6HuvcUjjg;g678fP(`HwtnIUAUG-X?+a`l=mOIO1ZR|SeFDq!WJQ*b#LS&60>*z7SV!f0We$r)0 zPHAidf?sLOpF_BXc;c}1xRqcU(4M-bPr;ffEVYA@cTxsQ-U%G+h`&t>)PE+=He2tn zA_z7aVgyPDZ>b7Y!TaSJvHP@%&e+QgmAm+lBrszj+t{VrHeyIpq6` z;QKt8(+3n&2Cf8S&rmSXjV&d_INxXTJk_)y5oa9Cp48Q%R&nm-zi!h00RBRt zIi?GHNCmSCdvN&%H}I_V3*!due5sJxTn7;M(71V|koi!Whjrd^F4fa$z3#lPxgqyW z1wbt`Q4Ki(V7JelvzwI*;#b-SB`@d!9tqJ12$3J~HT%3JexllOEsM1q2OqPk_nA=y zZV6jqK^5bQ18fcB>NpQQ^kJK|I}Z2W#%NmZn2EjnHa)qFLqt6hf*AJ~>CK;1I14HO zL{JhSC#F-UaS&68aw%x9F!8V&rmH=*MufYMls`Q^OAaTkA82yf8GbdqVlrP{J~)6; z-7coww*YIQ+Fz8SK)aHtjo`U@>A_JvwmrSF?tJ0w6Bd#BP1H4A?OK^W^*l!4t$T#r z1BYKc}VazZZ$FXf`Xp2-ty_T`tEJeL*qBbj;OQe=br7v z9_{}w)pWM!FBM#l%I1;h6%iTHzw&1fTdIFt#NK`R;&X26Gix52rQASgy*AM4v;eJ4 zQ|m8wEo<``E*OL0U2=};P_n!VxyfCSLZdxzA2sY3?!9xFIh}B*fq~d&LJ8xn5PWpA z0DmbIU@-+)rt0y}$1*#~S)x{;3sau@X7!}h$7dO?3Vh>@kq1RX63|=dEgi*Sa>TsS z@-n)0X#FBZ!7_z{`8e($+LavciM5RZQlZ2s6^HPd3nt~+3ldbqAJEixj@`qmlQk4*Mue2xJsp{^Gj;KI9wi;T_`3M zI4Cx)GAG@t*FuhVt)ROvC01;1Bvwkc-qQsj0Et-c8y&IInB6y@bBY5<`U}d%g z)y`)ZpX5_7J$Ikg&N&*lLb4!lZXoFIbMey=fJF)-V?2FWVvL|JsMLwXbogaJlR!3p7y7WH%7W|AxeY3{r1QHzZZ@~fCrO+aO3hwG2Q1Li28K;AplE;iaQSIsj8YE?x99`Y#}vgCkV*OqQs99`$H z^#guHdAqKE9V9B*S`^zn@&x%Ao<{&yY4uJQ29SWH$%9g2(y?LG%X01=a)k_Y+~P!k z{}cOK?OfvPT;Ro=%hL03VL5isfaOXu%YM%i+0mJkU0k5$%wsEAMT;fX^%3wCQA>35?yehAr^k!A;POmq0Yaa87AUL48aapcHV7?`!p0!g zv2B3%U=`qdUyf#GY;Aq#NRXoJKLPq8CMp%ZRMe<#N!x27+~MV8gw`>X?LQn1r~( zz0q5|y%)@V4vTe!5==+OdQ0u4*@x3(GzG`t4&V!z+@OGP`7@or%MH-LlUZ-Aq) zKLG6S+yZu?hTGwWPkM->mp0w`D>4-9JIn(kAuRZ_!U%%4S}tx6Q3(MbQak;2TgKG< zb_e_M5bO!P(I9&-gnJ#fH!A*8pc^%W*Xyu*GDE_38INdBxJI4&C;b8EU-ZQ$7J^&QAoKg%Er9k2@b>*d&i@XlgB;$yf4Rm% zC8YL)!0+w=x_LliMHt4)B5Dc3%ETuoNmDZA+83UlwRXmjsups8OfGcW$iXh7e_y#J z_OZzG{A=N)k}|%pQ(7*4)Qi%2gn}d2W)v_Li_GU_t;L0xE2^t>z@~kDxL(+^39;Oe zC8&pOb&>&B9xPJn;XD_{vsk|Pdz*RY`L{^VV@SQDgx)=4>1rmPAxOLw2fM(ZO}4qO zl*ol*l!_h3m~U_jfz0R6As7%;wU@k)*d5BE`j*Yn_Rx#1(BK`h1=U7#HK%IZ7a4G4XJE`kJK-uOJwV&Hz-@(sC8~auYhd5p3Db{|^ws#2o3jEr_n__ZOU;wEV#f>|7^Pn_zO-HF}1&MPq(5-iLHhl&I>V9o#^ zDkh*bs6p#x(rBJigK}7s<-}M(*x5q|bIag_LPeyOHmugNyA2cLEk2(4o20QB#!s%| zH9aGJ=EdT6XZ5=zy*C>l$QcD%OR2tONW8p8h9u-I% z`^j4G*crxes>b9*Q4*8(9%s#A8nsJtZMDD{F!7SKQl~0xurAqMJDFCMYMd(MNL|B{ zToRL_o-ansvr$KE@?|UJ$UFBF)6+4SQ;yBdknz51r7A3lnwVuBuR6t{w4c=11s`~D zT<9`cm>nS%En$2eHrmSc59=l6zyp6~o;HHY!4B#jA?F6U>^+Bt<8a|PE)s(%b(kNnMxa#ad zUP@4E!nQcjN)`Qu!Ej8=P(O5PGf_3dPVfy>9+_&sz5Sw~@x8P=qj`Xlu^Fh40Mz7T z4`DA=c587P7u1Cjf(M(r@iuj1v&)K#CDM%Hu`Qpzuq3j2c5nsq=`pA+@_$woLd4$t zHYoK4rV^CdrVnBj6#^ADr_pQR1fFb9Xqf+C^widdgrU|bO5pmYrOkSm!Pm|K17b`_ zg1#DzbW-3y)(A@qtEoGbq!z}GFbw`)Jw9cZXP7CRQ+iRf*{C2`ILxD6nbTYfn6|lf z?pyobt~D2#g8fgisZ;v%v0Q9XUMupxywHh2F z;B;~j(5O(N^!PfhtP)yAt@uUSN(mOO7~V zCcz^NHiWee>QZqctLDfe3brGUT31+L4ulxAeog>(oXfV}{E<#@>KSa)edPi?_6OJO z;#>&tV?ME91JPidCd@lz`lYFX^xEU12^^Y#sX#>iQ$=vk6_G-@vPPAaOJ%@;A|J9| zYI8UW_N&X1;02lZGdSZ zIn+N&Cxa(I<1WD@D6z%0LM562J)WlRRA#lkmEJh4gV1c;u;io&>k;vC{X?WA;Oj30 zDR=t}mZ%j#pHZa>lb_cr28)*+uuNQz7w55ncP>41vt9M z^-{A4K^xrIKM(}VLC+Qk78^`D(0e~}720L^RB43s%-A3-IJ&uTti)S{#t^I{5d|HQ zf5cn-->wz7Bv`eOz3F>(X1EKW*<3rhjkwv}@u)ZGdfT7gJ57Ik zID311J$7q<$(|lx*S~zaIc=}5Mm;;rz6Bla-{@Qw5@a&OY47f=AZ|)u-=BR2pr)s| zr7LD@ppLs4@~jTKO&Rg>K6fvk?0;%qr5f6gxH*ehe<^KEK{m8zi3quRbAbtzy}YyX zvE03l=B^%halD*0f2v!e@wF47>0SbQc)f62Ub)m7`sfK&-})BWKBSlfeSP1W^nKl| zc2~!J3c4SdTm8>~z8=Dc9i?rz?)k-Ud~e3%P6@-=LFpmQDSMv2EuC(wdrpr1={KjA zH=ZXv%M0-diU-p4B)nHOhK3)&ngNr|WtB^0(UUx6vvrG>QRNFc5ZsEl>gpISf z+mQjTylJ%0eUgsTYz}}L$E)1{9zgZtf`(P)OUtXHC4)AM7vHzVb^SU)Av@x}z2d>uD_{ySAK~h2oe+@#F+Yjm zo6EDnM#Wuwd-W!hD{A?C_2>&#Wp@RJgvi7~`@D~%dF#@NMf*It7dt=E$7zv5Tz21w znpF!F*z)1|m-dXCb;D8hZkDXgO@XP&(ub<+A6LdN58jTgueX~db$6+J*KBMLufW=u z+x}lGeRpT<>-LWni^^gCni`v(IFELBZSGn`cBU7W-Es>}ruVAl)8$y4Q%fRm7uC(q z6F7h;`B!Fxdbc>9RAM@$qwUtaQS#gE7F;S^Mv<2WkNZ0B=Nd(Yj&2bxMU>a4VZ)~K zNp9`6%}vGP;y{vQmU0q}n3(aKr>E_QzMI)2hljVUI@3{pPe4d53Xt2BWooH0OiL_M5tJDBq*pj7sro$~z6CS9EtS04iL1Nnc6xl}##W{_ zBkMM`-4JJW@Zer7MIQAMiNa}0_=hJ+$)|x zD1OoJ3nB4fe58WxHTzLKZ)XU|{gKm}#e2cRlkAiN@{`SIc*@NFJ&1e*5|9*eVM@@h|gszMz zwIAywdg4>8>wCMQ5R4k>Ejf5CiZuw{3UoX0$$M>xh0rEH&yNGTU?F0COn&|N+c-U+ zqU;g3&c{ldz))1xKpk`|pbpX#P)97Nqei*~+WubAb90w?7#_OEStel0)s$cT>qi1DOJjPP-Y9to`P!)d!EyLb z)=xKpkj<++X1aWGyRbwAfD~!HY4mpRd>XR1mpRsVhZ#vAE8;#5+;HV}eLUrF^?p0B z{(fYA%T+nN%Y#_#Hjaw>dhh-KcjD;v^JOiw3tKR=edFmTa}{h;yJ>h<6*1CItBA|) zF*0%F+~)G0fr1dL>E`4OK~wolOoVC0Yb$f-_RVFC&(G0=`N#2xAIsOzmbH_5jzpnX z!K$sNyctv8=&8>)X06^Ye68JX!6qV=3*-8?TQ~iqG2@Eqw%>g=e)vtzx+SJ?o!Z~* z+hzkLA7;;{Qv_Pq#7`;4))p%_Q+!t2?iB}{D}RoD2k1J1KEJM}5l{K9rbU~a#(11w zkbHmHdS%lGae(o{G*6HCEVI4jfC>v&EA!N|3& z_t$5rdJ3rh=SK^$5yfm+rvUFIvRJPRQ@kKEQWpOPLlnzwobPsA1^Q93u1`>w#emo% z|6)yKMMVlhAu@LZSxXDj;}zs(^;1-iEy1!cS27eC?|nk*Erc_iYMcdmgu`bEf4LLR zLd;jglvSgb05|>l*-1*)tgXvQi8TY=E6@jay8@Ta&_X-K9;@MYe7;9%!o9V9xRQh( zfXh;&aL+^UP3WRZi3)z?Fh1qI8ODH<-dsf^_Q`affgV1CBPdtpj znkEX%9KDDf0hL^t)>C$-E^w-79123_gpL!uLPK&-=wf0)EjMruqv$&jWb<&!&g0S5 zs%)?~?jHh0TtBxgydyB*yi#4wF$^3QoNZUC??0O*yef7Zd;QQ^(7v0T)s^UkH)Ya& zHMQvG;l&8tLUDiB2ak0;SL>lGnC%{QVW)>O)bCIywBfAxD5*Nn@! z@hc-Go3{{ge`Kb~$N=0xxb{$EY)7y%^}|9%0ueO27g5)bD0A|CM~!|fZ@YG&Skcv2 z3_ydDtntl+``PhQQfkDc{>5iQ4kK_kUV8uH-K4(Ri-t-Ez9qGQWV=EWxj@kG!0MM= zU_^fHG0jI;y^~J0r!ytnGyG{sw&iKcFn>f!QQ1gtbac##)6SS}`NHImw?CO_?s~ zwB<@`TCwQgxW8{OcHYirV5t>#Rr^oXE3<3}k0 zyIsiYL)nIQ?1#6zS#g1g0;cA2c410qqxA$~t))8=XV@K13o9V)1i2GuDXT|aRGtPl|k76lD(Tq87v-P}6$)8&E z@WJavnyx&_Y7zBxLB7{MYd|@BsImxsZwulAa>|xS@Z5yol_P+A(sr)8AHBRgp#FGF zdnJz$8El4)D@?GW5kT6!-S6KMcnW3d=<~gbzEjE@^mbCTdFkfe%9>OhxIDY}YA1O1 zYS(`RN#vemU?OP@BjOQ%JjIGHG+9D)Wy?4abliM@ar!kry7hCk4L9+Z zFcRv4r)<%LvJp+w)LZ(=2=nIhoROYYoS9P z-9wVaEEh^*#LmHVqC=BCc~aoy#8YL;X9}Z;=1NkWg;B}3E1NE(^^Bo(-RH=Y^DN=^ z=11vSe3PY~RBA~nqS)1h7h5JpeZ`JAh>-Qmn@ecO;UYCe=GB3-jyvXgoP7PrG`8tx zmiK-psSrPfj;c-2>QRN&aaM^^b@DO~_Kzb((W|$Tg&FGarbd@NKh1omHp+d=TD@pS zwVrY;N|x$gKz3n&yJcYby^V~#2TVTi%7Nre#i+OR;o;r-+VwyHR+^#92B|an7^!K4 z!QtyaVBP4n5)+_@Z+{?;k`yg@_L@5(!1vlRR(osPeR~B1{Fo47Og3SFjXTol`EuRc zrG&{Q;=V)>+CgfsbDxcuPX{3jG5Giik<)M)W;L_=TeoKqcP;!JcvsT4pb;f~?_q0# z3_>5x*Q?uIMvu$vId$;96Yv|zx8~5^L69`Qxi7$ULy9|X^RdvNSRXB$*FU8cbs?Kl z{2X;zav11t_B`6xFxtKEPD+>Wg?6Pr_2Tde5sufjJTIw;JDrS1llwM|kbKr`KL?0T z3Bk~JjyBe%`fGj}UB{%VCm&pgu#%?NcHdvaS>$PXexgH}4i@{%h`?ys6)9gL&=n>- z+W7UiFhi}DtXA>34su1nRCSCk?`~@H!GT@NS^1!bc&Wr67vWw{FS&eQrS;kf zX6AxyAl$DKl08Gt&CGfMw@q#@PDiiHZP`E~EV;=Sv90bsTf%GjO%tV{Z-&^- zL0+J6Ezv@4obSiWK4`(D6t!PnB=)v7c>vs^DR;L`S!2I0bYl;1yYiX*gjmg!|J=+R z@B3vguhm=D$(eOE*zNBnf}mx$^q15WM~ApDGxdPv7Ili11{c#2@IuhDOSeF*WUl7;u+@{S+GWEQ5QQ8CDzz`cF zM4OrV_vc(uU3F=7m4K1h28@LA^|V6eR?kE!cb3L4lLo7mD5>A}t*QOFvF&_~UH$Dj z4y9};QookjJCX_Z2YrW?KHA)W-+6R;$h2g8afI$}2DGK#gZyZ)VoGkE&EbWQ&1{Wb zJ-e=~Cih$w+M>;0X-2XSA+{Gcp&s%7F1JSc)g1^*2Z;E}^VYOVzP3l6IFqw;NSo3spbeJH-;8I}dk;MXvjFfVXjhcMy-s6`|>> z7#NElRAgDFQnoMqafPbEA=S&~-Vm_fMMJ(>Idw6KR1gqhahR0D4t-lxNl zP2JT@(Z&8;w92Eb&6&lP={Xj=4dYM^?I6b=+8P751%Coms_(j2t#wvygn-2Z z`QvE?C@RH2|GZkQL}J#{2CaR5uiA{!hR>z__X8^#W5?x^$PYJn8#zxKz}_j9;Q<|+ z0i8qzsT$Hf_d)9Ea!fsU8+A{cG|-S4|CVlcph7dlGEbZ2_3g%O9I=XT?l$X_I0{1y zwnyc{w-Ft9XOOXs+?6lqNQ@|o8f*ad7 ze)B9$s@=^KhmTqg(IhTkx|%P|qEC`BbA3Wgt5dT*B_j|Ws-+yN{aU?A3;-0}ZSJ5C z+=>Dnxc2xS3t%0lr5)g1`sTRjT3R6to8aK69j<U`AAv3 zCB$J=J(*j4bHK?6m9ff^X^-Z-cxSNl`co`JCa`kFfI%dtUd4vn-hk_xStb)_D8 zIezL&_vJH5f9&mO&_0(NuZlopnAmF5=v>+7G=CksKr0emf;#^xQB^0O{lRX(U;_NO zT0D6;=1jEWcI|d-?d3{G==6~oE%uCn=sIXX@?PlWr!lpTAf4CLT0vHyUZ-k_P>wNh z9X=3lAH~iL7EZ+(}89t2n_!cyr3y?5NR-LJS=;2 zc_tvJC1DqwBPMmfuIWA?L3@EQw@@e=nFw;!+?ld2@g9&z(}`|`k{zHP({G>nKEZ(tkq*-d;&yinEh9ZQNp2{7!$>1^E}$M z!3H2i89cvynDZICrtgP8+$ z()yv0HQ&baK%Z*Jvtf{durmCK%W`<;>1HTRdov~gXTyIF&9XKaQ2Qg%Dn7}LhX@$I zFc?J$)c)<#FX_1>%r~%GY=(u7sW%KO1LLoeY>en6NSs7%?v6PBlaI6rm@$PbgN`=1 z_(wB5aX^f$Q4f;;7ZohlwqWciB>&-9I3B~F+6(1Kz<&AISjOj8c;fn8ZGQ&L=l?ul z^7tgbNAH{-pY8y4-?Ys)Kvuw|@A9qV^qRz<77Vf>84d|A@7c#N?t^yUy7!G##pk^( z1>C9MC@u_Q0yhx`ej+n59Cbn`@%2e?f?xpXI2f3Q@8_WZpkHo3GT{d;!t3bpVCw9~ zw9Y{2eaePcqk=OJTUQfXPa9izm*hlfunbh${qBu{KM&zggLG0{bQC7Fq|vC$x2PrR zu~w4sMcian`u5cJXQKB}-Q$MQDD-~WH5%+Y_Cn|5BdrxG2-yef9X{)*Kl8E}f%=({v z1ds;_#;Wp15ai8gwCRcKcgb+lw!fvHin@HXB5z*y9y#|PCl$g+Fw-$o(vLB5Oinkv znQ+`~Yj>0^tZ!bpyL_gmx2NRX->bdem9pHco2wvwF4LBbo3vC?YbtL(slh^3zel^Cc=uvPKX4Jcx)Zj_C_s*5V5+TYo?&1a zmG7`f1SPIsA6$n>%>%x3JZnp4Fd#E0{*>ra@xwF>@8bbdlg`sOzIj2BCHb ztJW7s!CWYu?n=#GQ8}|GfjgbvU_5Uqq}Ehn;v%&fs+LgSmsG#^Ey>b5-pVN5$|s*W zqz9b_=S0S8@WNr>KT$eX2}kzGGLq=r*9&i6rZ2?Y-$z-5h4nv+&yl)(61zTbP5Gg| zJVCHmY~~eld?$BNCVVW%N_s9*7|z-J_MU*T_Xxlnx=77MiDqP>r(>OFWE+`l6^Phz^L1BfAdu{lsQuPUgkMXB3U~k(s6wk+3A7qH?1aes z^E4Z z30AkH*GjI1>7#vRa;ZNL7|XIrf6wK;nM*xcw&{Bg5E@mUpd3DGh2xo`dRvfgN;jM{ z_94rd*}LxEFqUDgG_){NBW4NG6j9oG`|i`6>N0VYWa^^OL((U`aROfqC8qr0FT- zRHBS!P&iYZ0&GRYB+C&EgZ2EXTDW;SFKkiPKNv6V1Ch*q1n3RHmgbDI#2G?tjV{j@ zKt(*nd#CtTVdlqSGDy?szz{6(^Kev5(rgE`3fGD$l%bXY5e0u?{7b~Spa|O^5dc>I zZxPW$qKz`$`hN>x&V!zZqwOLv-za1`N1DD2rv5|gD}yh-pDHC8UN*w}xIasI!G zvD9FDwQ8=UPEXetQl?;i)z;=c*Cc4*zQL@}&h5*kwaEtUp4QgE{=xm?XTn0=jG$K| zn@Y>Dwc*~l{d0l4-b=IEN3QeX{e5y@AoB{b(bP%G!782UbKSmqEGJ5Sbm3m%EO^R* z|MDq)u>ag?IU=_V-h2p`Uc^Y*xjv+x6F;=d!VzaX5Z!CNLP-_P;BG@ivDD3^YddnditAa^Orb~+#?!r-^1o4w_PDeSj-G@M_4y5h3}3k zVJe>e`?iE+m}ITUdH%;VEO^&GEw*GrZoom}r}n2IPH4=a`YkB>(XmDH9+j}|$JC5s z=o*UK1HmOq+rsG8n+^L&iuyB8LLNdMxWG76wIqvs*A|oFC`p)tmO*#oP6J5m>qB=E zSNUBygi_ge>ZwMPD*6#Pws~E_uyTc6!8lm$X2axpU0GLwcL8@CAZ&{IVkLuHvnkPJ zRE&Oea7T}YRCvtK`8Kpi%fBSglUh5%q;u|+RTY7c=yfe|j_6J6X6R`NfRB!B36n6B z{;0U4VZr}fg$HnuxxQ`Kpp@#{$K9LaSLJ`{P{}(1==gB?w~mkT%?1{d{|5=T0w|k{eM_7Vsschd?M>z}F?qX=GrVfu zV+7aw#RuqXb=*5$ruAILlr^_>RFj=uJ6LD$%+^mdgQ@j*_MLip4#{J+1WTSA96kqN zYioIg$L4)E zE?N#n$&@6Sp^DefsMQdzP(3J}UiX0#lqb<#u|B5K5zLNdp;(d3B^$m*G~$Uk2TUYb z7vTj94u;Pu`-{`H=c6YzT%bg+#R(PpOBRA_zGJyHn&BibHKm;w2O{K$+;&v4uY2>- zFE=s4A=z*dEhT6U-rvEQ%~*u7BiTsa$wj*0i!^9WCfJZohG_mltrw@GuSIWaxG?^M zTIH|#FVtb2qCl^1GrY1 zix2|o+Qri$!`QQ+=+SM4P$qPQXge8J!r-xoaKhNN{gz{uICZL&s38N&^?6Q_Y_Mqj z+0j)y=vUYT{=-$tVl=<15wsq{7+xxx(5c2m5}a7eIT}O^AO=~RW+g0HxIRGrt6mi{ zF3TT9O+b}|h4w9)h00?vD&4Mg#4Aiaz4awe8l}S-7$LyM@Q^{;C^lR)L)=N|`$Q{( zRmA1;l(*xp*v&sp$JwPXgsS#LEj?y%@=5g7=O$_**^NaY0Kua%3?EIFrZH?(rJ0N? zQW1EDa6+UF<(4PxBiW}BL5FYmSxhfl%XMxs50WahOtNKx0Y->|8KH5Xf_`` zdSBEv{H1G&s6W{3^)k=03ijX^d~MZEyl=R^1#&?$l^e!%F_)*R98Ql9VH{PXtKWrO zzOMvz^H+R9d~TL-(HkD9V5sK!PWQ0sJ*u9ZtJCCiL=XHF6mrey3N zNvK57lc&ZN#mECuRF%ea(A3E4s3g(N=mTiZXU*U%()tmx)l}0=@*>2Qhdr=D8o7Ug zHTu&4W&*bg&Ftte3h2}g^?@|zjD^%(n13?0-b*#c0A+Ap)hVguA{AyT6&1BSnJ03Rr-ssS)>3B#4TRaY znrc1eubP4mvH5T4VaTB< z79C5bfX>Ztk^eiwY=MVWG{)G3n?ZswD+7bF>CJAkPUB;Ryo|>8K)Fk`$wLTbVwn%i z0@C?PlHS@mO6d@M{*chZ0lxJ7P$>Ef=UVW7(T0+apgo2?nUZ>6dO@TS#vG31=B7c> zOQ4TW4Sme3>yfb@)kXkZaV-++;M}c_3gSTtWdEWg6O3 zmbdgXyoo7SBx|CjB+8{|%E3G~ucQi9(uEFHXEXmNvj%EdHpWzbtu;T(9#ei$Bs-q? z_Zi7`im2?g_j-sRTqw>LJ{l-aVZn>~pYVGSyYaPX_@adgoKtqm_Lt)V(lpzSiB2BR zA-O**K^udWE~A46?<3&NMl>b4;v6UL(-6c#YfY7$V4{Rbma7FXl+*3Nf22y8($011 zZfhHX7Fbz7!wC+YiK=U(l4rT21S^eg8N@jf?dgVWJC5R^AjE+{m;T&!8X$uE{p<&h z67$8QUy2;ho`r#N@8W57blejTjnz;^D z9Hl=>Ltp?($y5PK9-}JEzlICx3!HQG0E^Gxl;2vH+h=`0wi9sD^=EWL1XZ+(7 zgNQ?$34p$&f6$`Kjc6fL%vughBBCbI-kOR;r0T#P#lam4g20Xjq&aNi8ZLBb;a$3j z)-xOm0$J9bDfOR1?t0`zSsxae^BzK7fT-gfJrQyoF#ylco`s}~bG$5fkjjJ&O^uqA;d=AV zCBl@y|2r&6xrkOg+FxOL(htgiCezXQ_%ll;DWhBJRXA4&zOn=>gJ+~xM$*^{Ho?*4 z0!wmbmw8$j1ffdQYoHXH{(pVubswYEY1!K} z%yd15r3%573b&3Z(@W*(tePV;4&u}2yKAI8F?rNA-AFVY;Tl<2z{;y#SW}Qr>=d+k zXw&LLrZi#Z7gne@hFmLvc=iSi1MZ5w49=(}!A;fdZqCCvDpB(jNNi)DeNV>0zW7lF zJ`k2R+T|f2s^Z32cbmhNuKzGk753YEh&hcTopbb&cz9_bAwdY^BHH&06KN$u$j2Qa zFJD7;0pb;z>KC+DE8EDk`f3dNvM_1#B!`IVA0fEEua!xXUwN)`MS zYIZ~j@2+zzj2~zC>6q1+&eLTWf|W- z;;u!QK$C3Eao~KP$?Fb+Ky1ZA7?TCEZ(mlk#SF=Z-|s+pF0nV@TgXM`h~I!HADe5p zwtOb3KTX@W!UO<;1pW@h7oIY63u&q=40vxS?+{@Jj_*w&)s%)F7vs|N0&$ptUoP>7 zAy|6`gbmWeZ;iJuhUw8xYYrdh6xaT81jfC`vMiu5emZ&I*u^t4mo!M z{;xsyWis(8A0_1T|1HA7<@e{4f8IS;{96PoG|_TEx9rP^aP)7`-`M+z^of;#+aS^r zz8-IU71E>wSpfPjD>>YM#pBpT`{RY|DAhh<9@-CLyrF(3JV$_M|0RXg|Mwu&-;N2s zpAJKe@5dhe> z=JRaTywMnlaJJq#Xm!Lj=pM(tC7(sCkaB3L5#x%D(dp-&m1!0@=o_rnV(?Kv3twWM z+(w=-!(-5#4#$2)QIhcBXOYnNrVRu=1z61Pd&U|`qI zvztd8bwHu*GN90@>pA|at{M39rR)BSfJ=&_)Po-jp08!`(liuRo;AyyYx?_I`1jFU zyjD{&zr{_)QjhcYo{QT+V0o8s*~b8w(mybzf5Yg>mp&^`;{W-aPS&v%5?CR%%Xa(v zUJw8pTi%86t1;tUC_?8z{p64EJ+^OaRs^pqquKZWXRt5wrQ8?u16Co6w!w>2DvFr@ zqO%^pwT2(F_S4&=DjQ4QB{ch3=~8Z#)rYCi>bhoe69QwG?VA$^kCjmeDzh{2V%GxFZLUPeQj(Sl?h`*2UkU(7;YYC@pG zIc9WTu(kSwb4}~vNODa-!4;J)dTT-obmPmC!%}Zp@Ef>(>yh3vnJL-fm@#3vIa$-AWWp-ImY1QwCUdFAhDw0r+dHmW=!s)DS z0+Sa&GpN1x{y@0+bB2I-1qM%^cxjGN{He}w0F5u8*c)O&lD$B!;V8(|&V90Qm{Loq zdBP5kgEPA#mQKc<8ll=q!~$YRV`py`61y;+)k^jXAEt}B3BPZ8DS9|V*y`=a)1H95 z{?V%_A{m1hls8qz$ALEyOtDY5EH&e=wpX;UZ2v#jfdnNxsCT6{AW>}Uw? zsHmt*H{DrS$qZpaYHuKinv$e?l8W+ANJ>CR?z2>96ompNno0}zPH16ne`k;*Q8)*4 z8p?xu)^BS+;aP2ng}B?ZIMleQ;jE0hxe4u+xUE246y*Els4n93veNRil9sUOROG3o;f1-WbuF`;m8n?cNa6MEJyMnAVUj8SBh~2$Ev0aQp!`VE~8wIVjH(WG*GV#^AfR&ZIf0 zAa;;zv2g+v$ml#;9DmMlpuJV@wG=!E(YtSR+H3&>aTrg}_j?%Z0US(_(Siuh)wYaw zK%%YUOu4g=M$DNK+=C55q)_{YSPjK^E2Mi@Fs$1(ROOXgC0U9|t3l4nZF5{lMT**_ z5;$+0cMQq%qy|?kt1o4MbWt1;kS?-#La`wp6&XxOp^f-VZLi)p=jCNV(Nb1N}RM(NlyG1Ck|H6CO>W}O6NEm%0dZPp!uBnLBzqZY}V-E zI$K3~^Fl|odT@pnQXy_;5pHVg8f^fjCC%W!DT#{WA!*2qx?*D=i57i_1{^%7DBqRk z_o<#pI5ft4!vSZBCik9x(q(>&qI^d|7TCuaVIB0BMiiodvcO1A1UPdf`X6VUQ6Td% z>s<01uu|YBr0}LJSX-P2Jjtji?WidQs=vPCv>!T#cZep)Wx<38sgw9mT1%Cyn5>B= zck;Nx-3pe(^SZ2OeqsH->TRF%P0Kw5@2E$rK*Jm8s>l3H@qQ(~MTlwFiN-^WLb)|y zyNpaNcvk6I{x{$jNqcsiDmks254+Fr*kAs-ACSsM`B}kmi!#)eSOF;*3}EzECTiSB zDu2K9#D!$pk^bDmOh}4vQC?&U6Tgl7jL#r1b!#qYI7})~L>sf(6OLQt$G8UO2LJ1| zY=(BI3d$Y5AC%Kz0BmSS#Syo-1|7(>>sw?#Zl%W^L&sfQHVo{n-G+476x)m}C@&_? zqJ>!yE;vJlI&QUx?R@w^;etCxJyxEe6sLlJxD;F9IMkiLCMaL1#Rsk)N+=Nx4=AXawHzJBD~KD$ckvkHu=V65<_-BY4I1SihD%A ztbi;UY;f*nA^B`o%foF&TcXlEx(MUczYST3`@<(0fbf?gB`Kf)K2ochL9Ac-qSNQr zM4hz(00Tx0`9#`We5B^=3>^Ltn7)ciaUYf3)v8zCb;V6L@|kPTa+Q|3$0eblqm zUeLeJp@~w{Qpl$A73{-+n`F0fR5+9G;K45XlFIJG zg~bfudCVP_1;?dSq`$zy7Vo$+h(iR+mV)9>BzpY1QrdLLkyS&{`VD=3+Pf z-i>K5`uj=X&qQss4%c#d7!(Zr#ab3LIjc>#onKgS7n4r zEi_$*Au!5s6CfK1Fz^#e%RkTKCTY< z*$wHf(}6vaD2|T2+nUvj6T_)n`@-AfV88-w%DL-*mvf@ZKe$wn6dy)tYAcFg8KHm+ zv0QGBJ=d*}TJp@+ht49tlDS`|2m+5;C9kUET*$T7~nvr#KAfy3SL(>>*D+{ z=q7G^l>hn@z5Zb8;%aa=%K4YFMlHrk(Ft5q3OQCF=1{sqTm--4TVUbp8YWgJZM{?Q zvC&-C%M?5>WjuywUNFUrV-`5$VrO(*1{&P4$dtKzbkqw4IpO6ZzR(FcR;Chf78g)t z{KX~;EEFzy6t^dW3dpNGV7~o#HRGo)=WWO@Fe|wQB$6anDj$S z+<^6Xmp=Jt%2$87<+Y)efjE3V>ouh{frW(?9Bm2s0dQd#>Cd?V?3gLc73!)s+yb&_Or}*=2~>O!6%UM z2b)G7T4%U*pYaT+w7wEF3vg$^yW7+gbCl=8xea) z;H#?z&$p^zbfpS2?|SGH5phl(Tprd)1N5HCX^Hx99y;r~vf&Iw;xnFX2#RlVB z5FA(L+bH0ZUw23e&1g>vfLPaxZ;b1w(fKJs3oVDoVfC$%rnBzlGugdfqiY7U8ayxZ zNm72l-;A`Shx;DwZv*NSzW1PvFDFL@^pQ$|k+OR-ro~Ty)DmMv)72xiFtk*hU|0wR zT`LYT*>BGRp}wDYxnxTCGjz*jgbIomDjFl>5+>I4b!sN`|%s60IUHBG#ETx8>OO8X#z>@E2MCz3LKEA*PT8Y+T?=-XB*t{CY7)`>=7 z+!c>&Aqiyq>52K+mdyhCQ^*q~5T&lsQ-@h7GvD;P4?@$V2T86FK7vNOCS|8Cx|Olh zBy6p2d5rE;b~dY^1r8%RA4SXP$&K4!hi5+txa_t*R5vGhc*tU644aRW4ZAz=e>(Qc zo#$c#X!-UE0|bQfZ^z65?MPLPjBWpF(zun7j&1lFpBOy(b2)JHA zsCac48}V0y?F+9nytc7SS9MaI4|Z{$SF}@PzyVO$t|F44#N3~=&&Hn*@A%rS-{=}B zL}_T+e)i!w(hYzz7kMA@625d#hL})CKO;#5pzfq2A8ocUYA>2owW+7HXIE0ddV5v5 zZMy2AM?nu(P#6zHW5JBqailsQvd{@o+?o+-MzQ11g`KBI0<|@`;Ch5bLW$tSX^==_ z?eTQ)B$Khk1XMCdFHhKchHa>h8PSOeCb8(4D;dA(>PJ-b!a0N~KoPokqk&Wt0K0RrSx%%(d=)1;3gq zchCq}Dy`S^59U4#)Uh8afm6w4DX3~SweCiRyMOPBd)D{oaR=tR7coCny8$WPef)6= z<>uK9Ut3eI%gNU^cu^9e;R(%}YvSR?jGHE=?xcM;&PDH$fA0uVHa4!K-sN`Gr)!pF zpEG=Rwzsi3hvq2pnH$~}LI%4k*Hz5_T2<8=McqwnD}Zf~hQ z6c?qQay8-=-*5j%d&(pslC}{*2f|JoARzRApOUVYW_D(be;t|s>Tsql=di(n)$>aO zspD|zWy39^L+oD(f=bExcv$WSIpiqGGoN>_f%47rMJNIAYnYSl`;+#OvIjiTP6@)(=vA{< z;K%R^&MwFc0@;$pRWtRz&1$V)8%!+}rU#T{+iY!L%MlE+E_HGneJF9SDCps2JF*!8 z+Fg9K3_>7e!U}1zb^9ir2huCXO@8Q)m92TG4JbIYVz(<0AeRq_kc03`7ksujFTy-&3VsGFWS&MRw!w_?}FHp#vab&cu{I)VbdprI{t9NaN8&=?Y}$ z9tQ=o8HA9eHJ8uU+_CP}ULGGOGp(#DGT6Xx^lMkI)D}7^_vTuP#b}?=9(^hoq@?0N zhS|UqTqmQQwBFY!<8_TpgrIXc@Y0*$h4-}N@#WxGPR2@FBM7a^9qjJ zh+7~tO}uu~I|U#1G}@61;NSORQ6X9@DbVDvIH~hYi3$GL59^4H*K82p8Z=qOi?TK! zfN?=r>JE_|hbkEQT0v~?nR)(gO+dZ(-n3I@!#4R{z9oKjhyT5gXDg)1$f%+8bwgON zqtcDqty|s8(v7Px055!ZN1v)VW_x1=U?tKL!FE%C;g_I5AxJ0|Q%{x63%_3%pC2{o#b6Y6(bZ2K4HtuMhxf5qFsy15jTf>zsVr`SAY)u1jwL`BMtZG~~^ zCbux$!k1KVoKKKfHmg}JYcFXh|5A%Q9Y@-;WD{;-68A8sX?9~Xq3LubLE3Q324x~c zZ2>KIJ6Gc2Nt*=Ka{K5r^)H`gQDeM021)Vx=}_jfCoBnqIRhh4+q*65x*ipFq~O(` zcQ@}iAzs;_cZL6hp|l}u*J7G# zk~&aB8Z{`8@cWH`$ZPoscPi!ntgXzUn(XB+v!N!3(H=`s%kb3pr~Rt*vU?sB?3!(& zZ1B_%VJ#}AG>fn&Wb88IZB_dQKVAp<^^VFt7Z48is@0Xfw$I*fl$D*Maz&MVpM=m| z&v`W(CnOyKdOL;vsa(Y(PuW&ATyU}LUV>v#D&0K(Lk}3%Od{IC9-dmn)0in&Ra}Nvst|P74~JQ%I0)xPR@~R%Hi~(1taK5HG~6R z+)Jl}c8=wGuhshv`OjP|$B$>V6!3)y0mxqew1qcub8&UB)3mc?v~o4G`|E43I;tLK zfC&xgmyg(Z!gvW!7}}yT5+!mzOpVmb4~T@Wgd*e5?Xccm_iv7)$98fbAcSl@@~vW0 zE{-r>SK{)7zwVC(?~#Hpf`uTnYLF~dEF`qt+T6j36+kg*#>dePbeS=hz|@04EF8<> zPpiYA-^U!WngUQOh65sPHB!7Nn%Qt97>}*Ud)Ix{@v#(2tQogKOJh zGEJR>me>D>F8+z5rpCdu+b}JA!Syq@?P~~er zp@6IlI}%sM&9;OUqjtzhZubNvVP-PI_--TZBabyrm{!jg(SMA+COM1r zp)RK;Ti&TI@V@#E^3MTn?v$0=0|+(-2*>(|@IR9O>V^K-sAk92+XphCiGAxCxZ59R z&I7YV3zGz*wpo_e!*};1wuAO!*2!7-5y9jO2Xy(b;oJ6dJ%#Ff$WapD1G|&bhFE1s)bb2p3@WJ zXiy(_JX>J8&vhpfgJz2XCCS7Ii=s-eOU7pmn)D|IU{|U0n;NH6hMAJ^h0DSm%lh@H zOqx2I-M*eyu7XlCeXkQTQIq`3m3Q!V&0%=;_HfuILRZ8E*@NM4zHMeNwuaIP$lv!V zB)|X1DlKjhojGJmqWY0WMBeJ-r-ol?Pgaoy(dL^d$C zrUF5Ay=ZaL=6fItth)2uF=nRCYndyPY1*o6fwBlzS(LAn(Wt&V+#lZZZ{WY*ZUPgw z5yH`2IIaVAN_Rx)j%B7+4nBURo>E-?QifhfL7ACr^A)uE-1~@~eMR0_07s#zEv3@r z`9XQR_Cqo~%9b~pGi=}?Wnc3qsrJxrs(f057LU|xc6i|{{;sJ;_%5@w$}nrNEu>0i zUf~-H2h73Uf?Jm2mWjGkS8W(&Sov-QEKG3+x=k=r?Z%cg zNf!InzjYLMbAD5ptUofPrW=+)-wxNa#4W6Ie(!HVSGUDec@ z9x35Kq^mPsqoseb-ZULhy7< zgIzdleQ+)|hWXeK)`lXiQ{2Jpl%M(ApRoU&u?ogkEV{vgfP#pCfG`0w7NBwWU(*y| z6S?TTGG9j(-7q4CV9wtVdII&2mzl58zQ26O@2NfsQQH<-EHT7U1!y5Dk{<@P$UFBmN_7@WI9@q%W812uCOdT8pIv~R9)u@@QVnRbyAl&?{ zC7lM$fiBF_FuVp#I+LVs;8RPD(qV$OpH;X2Lzmc%d}*~GakD@gpxYj9{L_x$cz+T%L(z* zwLISw*chRDi!z1Vq-*f1L5(yw%-dJ9Me)`2P(TdFIxInJ4wi7K+|+gza@J0o@DYAU^jF`U!@e5P?s)KKcpv8OxxE4kMQ~ zHKW4rmaCfIrWhv_Rik49f2=XS7FA@1hTWn@1uBVW`S<2_-DTKO-y_F%ns^ z_%Oq(^~6%UX-X8MQnpNr*E{)BS`R&*;uFcScuNGbg`KR+9QhCFWv;^jq^juQLkUma z;igvBxY@wrC|EEkA$ zp$Riotd0dar8uGl_hv|LoOFXH`!0%wNAkI;6h7=q?7)oADyx3WN`WO?9B3N+y z+6CjYzkfHlAM$NHwpw(Yj{$881!;tz6r)YiaPzm4&$eSS#P z*364z{=+9{2gje}-IcgMWBtF?F5%XuctTt>0|5sPGyP!dSG2{lNi!{z9AY)ac7`_# zp+3d_a2MpJJ9T zmeu(;*7F8G6XiV2?`>6(eJa2bzntbUPand7$wtVqga?p?$pu(I%>B&s6g6Zzc)xD_dbjZ9^4;67 z?bUmEj}`bVaAWR+PvW=KTLTLr4UO|D15k{C zA=()@7@V3{5+71okXjrIYMr4QP^sqa@B^sy9&j9)8>SmbH!vOp8UbnJgPZo~8avv! zgEN6jE&??QqG)^$6oJ=0$@xX#k!W=7UvA$Pe+|^0!@|HIfTFz~C<51>SWtk?)dicf zh53QjH~_tkYWWPH2zcfIXhdl)(C^r^=QT(R838Rn4YW!I#qw($Q0)+(BO8J>6na;S zS$FF*FvNwjGVr6AXpbz0YDb%fK{o+?A_8GTcL~%4lxYcc{ph2{2>o*9Q2pp*$mm9( z_rDQFh}U85jiVcY-qA%E@E*kgY~5aTv(WpF2(w<)qdNxClSDTKy{m;V<$nV-R8Trz k==#yyg9!bzT9C3BYU?n-n-!RYK)FhgArY88db&V70CkCS2mk;8 literal 0 HcmV?d00001 diff --git a/tweetypie/server/config/decider_staging.yml b/tweetypie/server/config/decider_staging.yml deleted file mode 100644 index e69de29bb..000000000 diff --git a/tweetypie/server/config/logging/logback-all-include.docx b/tweetypie/server/config/logging/logback-all-include.docx new file mode 100644 index 0000000000000000000000000000000000000000..3337f9bbae8ecfc71c4a9d3b58b188210493feb4 GIT binary patch literal 36987 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

    1bx_&24{@2B#(S< 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 e`i0t%vKVUXFu - - tweetypie-all.log - true - - tweetypie-all-%i.log - 1 - 20 - - - 800MB - - - - %date [%thread] %-5level %logger{36} - %msg%n - - - - - - - - diff --git a/tweetypie/server/config/logging/logback-without-loglens.docx b/tweetypie/server/config/logging/logback-without-loglens.docx new file mode 100644 index 0000000000000000000000000000000000000000..8090246248feca7a99f52af1864adf2db5153c1e GIT binary patch literal 36846 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 kq3cI)4 - - - true - - - - - - - - diff --git a/tweetypie/server/config/logging/logback.docx b/tweetypie/server/config/logging/logback.docx new file mode 100644 index 0000000000000000000000000000000000000000..12ad98bd55ac7ea2cf30ea06c86bd3587d0321cd GIT binary patch literal 38844 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 - - - - true - - - - - - - - tweetypie-important.log - true - - tweetypie-important-%i.log - 1 - 20 - - - 800MB - - - - - %date [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - true - ${log.lens.tag} - ${log.lens.index} - loglens - - %msg - - - - - - - - - alertable-exception.log - true - - alertable-exception-%i.log - 1 - 17 - - - 100MB - - - - - %date [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - true - ${log.lens.tag} - ${log.lens.index} - loglens - - ${ALERTABLE_MESSAGE_FORMAT} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tweetypie/server/config/partner_media.docx b/tweetypie/server/config/partner_media.docx new file mode 100644 index 0000000000000000000000000000000000000000..6e0a9649ae455270b5cc40e794bee896d869554f GIT binary patch literal 37369 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 R2Z3^xAVVTBdo=ZecmPD6+e!cc literal 0 HcmV?d00001 diff --git a/tweetypie/server/config/partner_media.yml b/tweetypie/server/config/partner_media.yml deleted file mode 100644 index f737dd7c1..000000000 --- a/tweetypie/server/config/partner_media.yml +++ /dev/null @@ -1,30 +0,0 @@ -http_or_https: - - 'vine\.co/v/[a-zA-Z0-9]+' - - 'amp\.twimg\.com/' - - '(www\.)?dailymotion.com/video/[a-zA-Z0-9_\-/]+' - - '(www\.)?dai.ly/[a-zA-Z0-9_\-/]+' - - '(www\.)?youtu\.be/[a-zA-Z0-9_\-\?\&\=/]+' - - '(www\.)?youtube\.com/watch[a-zA-Z0-9_\-\?\&\=/]+' - - '(www\.)?ustream\.tv/recorded/\d+' - - '(www\.)?vevo\.com/watch/[\w-]+/[\w-]+/[a-zA-Z0-9_]+' - - '(www\.)?flickr\.com/photos/[\w\@\-]+/\d+/?' - - '(www\.)?flic\.kr/p/[A-Z0-9a-z\-]+' - - '([\w\-]+\.)deviantart\.com/(art|deviation|view)/[\w\@-]+' - - '(www\.)?vimeo\.com/\d+' - - '(www\.)?photozou\.(com|jp)/photo/show/\d+/\d+' - - '(www\.)?twitpic\.com/(?!(place|photos|events)/)([a-zA-Z0-9\?\=\-]+)' - - '(www\.)?mtv\.com/videos/([a-z0-9\-\_]+/)+[0-9]+/[a-z0-9\-\_]+\.jhtml(#[a-z0-9\=\&]+)?' - - '([\w\-\_]+\.)?washingtonpost\.com/wp-dyn/content/video/\d{4}/\d{2}/\d{2}/VI\d+\.html([a-zA-Z0-9_#\.\-\?\&\=/]+)?' - - '([\w\-\_]+\.)?msnbc\.msn\.com/id/\d{1,8}/vp/\d{1,8}([a-zA-Z0-9_#\.\-\?\&\=/]+)?' - - '((www|edition|us)\.)?cnn\.com/video/[\?|#]/[a-zA-Z0-9_#\.\-\?\&\=/]+' - - 'itunes\.apple\.com(/[a-z][a-z])?/(music-)?video/' - - '(www\.)?blip\.tv/((file/[\w-]+)|(([\w-]+/)?[\w-]+-\d+))/?' - - 'online\.wsj\.com/video/[A-Z0-9a-z\-]+/[A-Z0-9a-z\-]+\.html' - - '(www\.)?hulu\.com/w(atch)?/[a-zA-Z0-9]+' - - 'video\.([a-z]{4,11}\.)?nhl\.com/videocenter/console\?(((catid=-?\d+&)?id=\d+)|(hlg=\d{8},\d,\d{1,4}(&event=[A-Z0-9]{4,6})?)|(hlp=\d{5,10}(&event=[A-Z0-9]{4,6})?))' - - '([a-zA-Z0-9\-]+\.)*grabyo\.com/((g/v/[a-zA-Z0-9]{11})|((studio/)?studiotimeline\.jsp\?shareId=[a-zA-Z0-9]{11}))[a-zA-Z0-9_?&=#:%/\.\-]*' - -http_only: - - 'on\.nba\.com/[a-zA-Z0-9]+' - - 'on\.nfl\.com/[a-zA-Z0-9]+' - - 'snpy\.tv/[a-zA-Z0-9]+' diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD deleted file mode 100644 index 261fcb099..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "mediaservices/commons/src/main/thrift:thrift-scala", - "tweetypie/servo/util", - "snowflake:id", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/gizmoduck:user-thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:media-entity-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-scala", - "tweetypie/server/src/main/thrift:compiled-scala", - "tweetypie/common/src/scala/com/twitter/tweetypie/util", - "util/util-slf4j-api", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..e50b216a770f2361d3117910cb619751cfe79ae5 GIT binary patch literal 36913 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 z%0A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 z z#4 ztCgs=6UxFc{)2VxSgWd$>1BEO5=r{d=$2P+NCIgcE4Uol)F{*z+21P)A!O%y8<6q> zQvu3s<0p~wa=vow)5tY&e0P>7RE)ndx@&4e!ceLe#&Jw*XfofW^R%(SfEeQvpsxnP z9p!kB)j|?Ns%sC$DFv~@^aHSqXMms}KXHpuZ83~^~zWH*%nrmSzj_O5+z z)0hiSaO8>?;Sbb3SZq@ipVZk?A8Mrx2!M{!6h{jl%oe*juudBwdBhr5;e74kWJOHw zC7!`=7_-F;g)ha&Et+x&aABg1o<@nD_WY>j2M>h-M~NyE-B@hy0bWGzV=LT~_LOHp z4J>mK4UDZ!wI~Jylt?S&;3(t-a)v-*!O^0skQ9@6cUz(QLEoyQm+Q<^s=(0$PA3Kc z4RXZ_-;WrOu(rH5;ApQQY1ud1$^Z(a;ke#pHD`6s#nEj!?^LL*Whsk=6-01~w;nsW z&?i-GM4`R0-wAL+8gE!;DCFc9DdEv}6Dh+%6|h>!vQ3MRt47$+*}CyO6@oRfg(ciy8`&eo`1F|Q?@8#2L2-q z7KD{G%2H80v-Mi)+gtzq8td% zV;+$}J>fv?MvOZo+NH_acru8t3X8gQ$=9+6`@?2qFSY;Q-$AwJP(piN>eB@ z)~nMJ{{^Y&GcD%(rGR&%so&=o1@=gpO4FjnP0vu_qT^+4cj(Y}iF?{$tVNU3cJ?47 zrl=~rNQ2Jv_UA@C=Ac+7_NX#fJd_WwioZk&?2;Z0uAL<^Z zk;3Dnau#FY7u(=iq7aUQrl%=erCCi+g*P^<090!iOc@D+Iz-$Y-yjJw___=J54*j3 zOO$e;&!`gl3bi<_5tv&Zr0_JTO2rs7#V6R7C^YwZ4<>@xoo8|+fsa|5b(Yr2TIoo8Lfl-s2rWshn5y1vr}U^%B!C zerufQKM?rKKy!;dlQjknXy1=aiFz46MH1mWBRT*Rj%F?tGyWE#AqewGNKQ*A{|_IS zlD=$&buM|#9y+)Yn0T%l?c|VFLWH_g{%cq`Fd>fDie?QaN(@*^R2j0-!jw zqDRs{9T=ccO~$`8;5xE}&PahWF`!+f@D$SFPQ+LqjQQzSq%a1;llTKEv?ziT8FWL2 z=m{t;YJC>u;B6d_6nfJchn0{qToM6^pMJ+T$tjDhnQ{%6H9^v=WP0Ew3J$ZV-YB(B@&rAd(9U1eQM28sE z8{54|xxE)GE1T0zt&BbTMB4;9#V?%YgFYN3H5_mPOr{ZjAKk*{ID{O0|LXnf>el(> z)v{i}d3?9|?v3+)-?jy~#9z6Pwds9zroRiI+FU!i4ZGRhajVnoeA}PeJ576gID311 zJ$7k($(kBl*S&nYIc=+|LODCjx&>IYMQVi~g-JFH3zm&8jA?aH&g#}%`Il=f#U*1`IS?u0M za#oEwIb6<~J=HEzdD{w6bu9tiJYG00uAFN0y>tYsZoLa_9+J#}-rjGGy5269yQ^bf z`CSi;ExuV(zPIef^-!mF%F^fyE!*l}MLsue%o?nWl#Ls%-7Kw{TZFWUJ1vk)(1efQ;v!WhJ1OW4 z_}so>jYFIj$M?zonNi}$i}%~&x^6AMfGtt)UeUnn6)=g2hhX)!R)CO?h?kiE&FPtM zqx`O|t!k6O8KrE#YUG8YqN^NTOlW+eZQjeltYzuMyltM$gO!)?^OR5l4y*S=^{P2C zY}wHKOI!NQy8ei27gOfuCg0>l$wTG!k1L~>2TzBV*V|3v+Pf5_^+XR#y!|TaycmE}4Z!lY8Z|sWMFV$t9t;i>jutF z*;hurI+qx(6e5~;N82rTBV@PR%{UY|^g=K7ZuhmG&(-pB?Oj3|^2o1GL;8(n6P%iB zo15}QMgGKzOl8DsQBh+zPfyzqy*IN*_788FiO1e&iBXHYZ}`OfZzTgk6RYmtp4p#a z1>64>ejbg@)nB%ro$~z6E3KU?e<2TXXs*Je)Q9t1`ze=MF~79e>P=gvTW#YpdpK(erYiZcbxU0wB(G$xD7g*cL+7}yQ(zE?DVQ1qhP z8$|3z|40GZWBQ|L-c}!w^CPF3-VUi!A7UL3@l8Xpazk%YV4x?)GpRRH88D<=6Nij2 z)fXNgVaFd*W%Pm2Gn48)9sag!Y)CCy(?;+bEf!;={{8-rhHc{%*Hqd`QIq+pswq9! z0h9ARk)-X4ez;u)gK-N_mUh6I845~>*eImw{JchY{825vL8zG*HnUWn0wV4QjT-3k z5r*|Qt=G<#4EUz|<}=pzrd#awSY$LK*0-m|<;6IYAko%)`wsm|moYxUI7VoXiIaQ? zfBEVH1P$^fZRm0|>sp8fOc!n7XYtia9}&M7^=`Z#NqU0_yN~-@UMhU7K{Ta=DSenH zk>iHZ&L3?DgV3ubw`AZo$k!ma%h7DXC+;;N7J?gn+&}kgg9VB7GWhi2ZDV&EM%W>4 zosX6@f*~ubfI4VaKpi9}ppIxzN3~=#wB5fU2o~U)z+O`EyC`;k5BgX1??J8;HsAz> z#lKPNf5ZQQ^7jFMNBQ4X;BquU+a>3&Kyb^<*n$(lSTunl`v-u)IR2saFG(v9M+|5H z&@gz=Fsr|Ybpvb>x0odwe&eh|aKHQh8|Uu>{^q$_vL1R)n`{F#3>`G=w>4xdhcf9$ zidz^ zEl0)BE*D~v%NPpI>%Hp(+=+w7&zH4~PAvY6wvDHsjFqsBZ6=|al|=7$T7;Z-kCBMN z=Qfx3^yCDXO*SWP@EglsqQXqdUt1VEwr?(@ync=x%s-Aj{8+wzwy2rVaUcx73RG@6 zUdD;c4k|2{aa}SQyj2-MZ-;i5innv-$3|@xy0w)+IiP6!8k*FRZgOoFLg9ckXrES)TU?;U;TH2nNojJ-@y{ z)saK(KR=p-4a;Z2I{JAokw$x5nBWGOk}&z!>myraVSl&f$k&aCc7B4gC;~(m`WC4p z$;*@T3y`|%Nn4nc9IqfPtDd5;ZSj|WyOJVL|L7G|XD*oTSpAisOE7en;Fl}GEW~^j zOlcKbF>uqDmzB79&C05bgh<`rwH&Q~x6^;=3^lkz&jez;5( za@Sn6p14kOS8GAP`M_@?+v1X6aHmDxw2<~nB&p?}koQ6!6c$=>tt4K=ASwsMSdp=O zQC5+Y?#A)I)(j&#IV^iVJU>TC2&U};ue4rfcSmcV>xJ|<31mtcpPQG@xR?kS zY*7HWbL=URsu!K|L#|sbK#zy!wM?U!0{cEO+r-!!eoEUMBFU7B9|sdW2Wra|nNwGj zI1SLxl!!-$_3}Il9b?2zJPK^b)!jRn=Z&B3oPyDCJ~HE6nmA9Q90VWh8gkM9Y8)>p zb?_i`090^fSWViRIKe5SvdIaU5jc!<3k=FUp^1nDG~dA4kD%>9kj}#?ejSUfQf7g@ zasA{k{iHsvCsBMf;q1u@3`px^_3}53 z(H>M$9=g+aRf9(e;n#GY)#(=Co+qB(b*po-J-AoJpZ&gBHSA4kOmcQE5S2RZ&oHC7 zzCG$F9e#1q9(%m`1}aN_m7Gw0tSVZx$KZl5kb}_HVSCxMY({Q#l0PY$GF{SX%azu& zY|+1Qf8Sv2yq(R!RQb!^E#`16HgzWz7Ju5+Vrlb>zR@OH&6!f^5kYmvdMN?BUC7Eq z*@kxPhqt>~ae;^ersh(1VM=GC^#oz9rOyPf%1(9)YIX*}qt5kQ1-0+_+(>Dcc5IB! z#hl0dgY~;Q3OKjx*%3-(N7ICx>HK4e`$BtX#qs+y&VhN4Vkt+_4|CpT>vIF1rKWMl z#d64r9l_cUliRwjq{wZ?vojRv{W}%>03|ttYfQp#?QU$`jvr3z{%5Q`_Fu9yAw{zxU2Z+v_EA_s&Y<~Keg!LgV&2R zU3rq#BI@aae6M}hfO7UwWfA(`7Q_YQlr53qxe323M*#Pv?Ob&~dUr<6D7?WAb)(#^Y-HK{mod3NvBPVns2uKx&< z$UXUjG?cNz!hih1MA8^W#3TNAiWOgIvWV!)mT@5HxcUC#^lN-{>*r`2ZsIRtB-8^> z*{E@5W(bN58B$`XFsUy@6o-Ck51>dPW@bpDBTWR@D$b^|ul{geiFkGR*U$TL&l%Av zp$k$ZrJ1)4Kg%F6JsZC2nyJZGKQOUO}n=YgEjG=VR=g5=uEaCQMz4R=; z$x=@$wWJhL>}tY`Et8_YVn-ZA$ol2YB{bx4ff^$7>cCmY9rHX+zJ6pH+jKL_dq0y@ zh@V17)h1}=sKV+vt3;_fd5H&m{RmO?>aAq{2laPTqsyM3WKPCZBiZKys#H)LZ)S@NRwWdLRHR&Cn%-)F1d5scD13;cM%# zZgg6S3DCp0>xiQyMT?%j=1vIky|#?i-r9EGUcmrgCPWyMO&DO~jx>6{T=RA*VX}$1 zFA;=xklO3qXXEA5LC8W3K7K;vG+csN$*lg??b*X!3qK3qm9#BrL`mO!*qR`N&`0z2 z>UNjW<1%|z9lY-Z{08!^Ika~WB#m$O3ozY~;!fLKEHo(AN6Y5*Pbo!R$fguOM_ra2 z2D+O)kM>oJcJI5B(xrQ$U8zsKIDA5c<25bMODf_{C!^8iz6~QJpH0ishvF!Y_H zjWwzMnqNlOF{$dw2iGC2r0KQY_t$V1d0L*I=uoDE#r`rPFj{s+%9jXqg~^UKe*G=X zP%9-XRXnbPToEu;9b-$oo0@!ZVApb1KBysHD)GlfxYyH*F5g#Zy*3Jaui;O0nC3f~ ze(G>II_z#Mim2l@qjiE#mXUAb8rIpt4RoKe*Tw*zu4JI4m7;MHJJ4P4iUqZqIWHRs z_p5|t&yaI7vtGb$liQ2a(d%+sHjoHQZt_KJt9#Fu@EU#-*LlpkFva+rA$D_+7bsjy zv``!8`|*+wS}-X^?N=9xy=_e%0Jmt$-EC9W*st^5*u&edd?r63R`TROH#5ikewoW_ z^_F#VW?c<-`+JEXXxT0Pm73z{@K@@ul9eu=s6i<zyAN($+Jb?=YHFCW^d!fKm_&oI)H8CT!T@{c6A_G z$wibd;9QX_@V%Df%X!fsXV9V}p>2e9X+iu2aShLH+N>l~&s!IzJFmsVE^7>RAbNGM-VD^zavOq6nGY5X#2uv(6i`fcBu+MgTS&ez!0-=5=8%7!BK zYl*!hnP7j=cUbA8&HeYCN2iBOOSTtB={Ha_dYEFMMofYwXI|b!9cV z=Zer4ZT@mIl6?rVy|@YWi2rxFRm!jKKu|hB#8;lTrd9H_g|Zs(26SFp2jfM7S9WT>I7Dcx1Ksyq7& zGjXE(4JwEp6MNO{XVvI8DKphD4%N^Oa{QsKF>qV(CqSk8u6xy5XVpdsSUiyHPs>12 zDgOEA)oLXYGoChR?Q?t8W{fs`F73Y`SjiYWE*C}C-P~>DJZ%7br&NXqbZiE65*4Is zNcY?asi(^^_1taLJ#ErJLw@+Tbh85$ni-aP+9a=SH*VvIReW=|S)0UB7-G03X~4GH zHY+7)7#q~FdFX8B+rCS808rek9=Fh3i5KYJgS%RcWawh2?Pi|>7C8~z*v9djV_{P5 zZk{-N)N+U>arx5Kd}$Val8l+_6JlDOn(ZkWf#^^zP=z*py+OM2YujH6zIUU z$M;wO>o6_t0PoT_%RSrD3Srm;2S@F2^>bs%BsujfSM7C{8ERr5w+PQi%EB!n4x{SH z?82J^PDZGVRgO%1H0Q-TgPqr}I_>uigzeYY)L~za4MKBhr1_ClXuYf}^~lTdQ&+k# zpGo>-Z%2dnx!ibF1RBG{R+~oW%08$0YtRK+k?0cC`A>S2{wckHl!PX9PsoK?9QaLN7m!sdWVDyrxzQvikHoRZE0&jDhR$fpGgM zb_R-*y>rgx&)kxhvWc!N7)9JDMJjmfyBzc&z)}$wODE{P&t5RstrE!wSs{}bao$2d`W-GFbE2X1PH&*iT+GA45)7w4vzVeEkcCT z6w`H_@Jc@HzlTHu{;!Z1s}_KeZkK;U@;rqs)?555WEKPxiC|bCf?QvY@JC~ z4La5a^3%K$M2rf4LYX9J+}yQCv39qg@+p07A4e z=@wfs42T$nmkszDyU=U6La%Yc1{o@Sw%yhW9qW08BM6FzC79a=S(7!GIZ!999|~FX zZ7dJ;sfIio1{nw|!=Jb;hi8uN2c>Cm#suJO`0qorqzwkt{z$ZfPjcfS0>&>4MiBzF zf4lfgdiDtO4eS=1VZLMP4a3U7_-iB^BRUBZCsCWbBhLTiBP{}EOySC)qYWfJ7$MC22d^r-ZUp_XL@wpYAxIS0gp8@mvKM$BZKFROV zJEzB|J3!qxZSxI~6>#aheCs&9Ch?~QgKS8KL&D2@_A!k6pxw9beIr%zd2dSrcj`Ba z3xk-zO@x7;$V?1JozO{qeG;4?7yvpB2BzWrIp{y=m)nm__(6;CIyyX8 zvfIT0Ex166jvdt>0wL-^AmofH=xg-I=GH0ts#YLR-Zl_Y!t zH(8awJ+=Lr=zUc8xM4I3y`hSz1CFGxKg8m@@Q*PJIELDvj_Q8-$$CQXRN7iimi7ROJuvtodvEYHV!_% zf5Bm7VRZ9ydNXKrr(=|`!w64|99I8{%G>AO6ItJPeK00%CHGwtQNNd2|C5gZ@*u%j zRsINqy!nhaJ#p4rBGj=OE` zj*^A-%?o#z&(!qxl$`r}wb#2+mV1@_ctGkGnA)8#{h*cHr#jl>M~g3C-QP#t-~D-W z6{OE)+LCdT7E5YP<;^EGSg7jvXx9?&Ud-qRE<#s!!d4gs$Z-rzwKdH%3@oGa9Tte7 z#5GQ+WOj7jN+4=;2QU5+wzAW+@)K|c(`el^NbEgkt^k-W5IhZaeN@RH)b3!_`r;^< z3x(5Nso5(kXZ9p;r_&pZ=M9C_nkr0Oq&7p<66*Vs>i51SS$fA?8KqnK5p+nMHPgB+Pf4=?jPf8@Ru(O<)kW? zGZ@cO{f>Yh$a2J^dO3~`oYM4v(Q}S)1gqcwpL!g8v1LeG;4d!7v`-)J&29@Nw^JYY z_YPsXp9dS@sTDM=zbXItx+^pgNcKq7e(NQ|uO&kTJOB$+p;fH}T8$ibLgf8=u)7`DTA4Xv5Ag~DYYyKtP#!NgAb&NZ|o`XBVpUO^p!WO=#yso;xc^^R=1?r zO0I?JqkVaDu|E$O%d$y-&*i3a?k8daX496oA=K)%MlHOwfw4DxH&p6Y*E%f7%%Muk<5Jr=ncV^=8Uq$8A5E0F3%T0MLfiN zr}$Q3=Eq?&NYm%Q5G?R>a8yjvYzMRo*NQ2Wp_Tv<1%EOACE{FAgzb+A0IUDEi0C2F zMwxE?e*`e+LC?X_b`h9w6tbKnO?0>{K|6j#eYOuXp zHCIxnr|SzTQ?R~jYxACK5;Sn%U{+}7_T|#rWP^53YwKXIbHDhRuuwN6=+(%k(lTsq zxHoS9oae6h(yaE8>wI{BpWGM7yh3a=b&_(hN@x09vu_^DiIN|kzgIX5o-*LSd`che zKX+P+$Ss36AHt;~W2C2adKHKQ21hT`@> zaEa2kFnaZ7!#vGil7+o%i%D^mBuqiepgVD=0i?CHp*xAI{4N|q zsq8!TRHI21{RkY}ysltaxx%hs9ISS;Ve-7LtgFDgfIAKlHbs50lEJN+lxQ+4M!#9O zqsKxjJm%+o8``6#Uy|oZtsP;~Id{scioi$ox|TRc^rm$`=xGUnkB)2!lQ5J1sJNqH z!T(2v2XK(NzHQi`l)DJcYi{YNCOf-!u+H8eTR+hZrqum0 zJ$A8cqyuf0O#6nAOzd#ZzAAs>vdq{>L=&jLW4VM#tc}H8$o~wr(&srGoAcecXgL%m zQ<7wcDqcIIRztW#^`LZm-3LlgobFguooVns5SZ1@_{h$rG4Fp*$ggcmG0 z7(T1)FHYB#z0+fl{7=FLmL)Wigb zWWz%yMDq`7y*M3xEqYVKh4CNMDu2y? zp$_9D7oGn_tq+OspU>cX$i}eI#)1fA$3wD~s@f}4-&Itn_0t5c4=GX(;96lWLI|X5 z7f*)_W6y%3N4FV5na~lU?POREgU24i31ipxTZ&cU)TvUUh72gz=Q%~P!J_eJM_28j zUuF~dH&-Q#(fq1L(0T}Cc&TVYry3JUaAGazXb>@g7-Vgl<*;Po`T+H>dR54{EPoU= z0aX$f+P7#HDv!aabi2+HFEjP@)|WhKln!TLga8}ELk4N1*l^JdaVMeg6D|um?ZyYpZtReZ%!FkPDKj+%Tq#xja?naC&?Q4{VwG4eL1L` zzv2txbF+kt-ta&LLp8^Dx`$2gQT5~`S7@!m4$)}h=gWjOcQNlb^N?z%!UTSVUxyiR z^S)V$Hk&!Evmc<;b%He+c@i9wTBvAEOkUW~^mu=gy(U#OZe~>$N)dQK1{Nnm?xp+? z*H=I!l++9rQP!J-DrpQMU`nQB6yr~UBZX>lK!os2nFcSabU<3JGJGCk>QN!76c4A$ z?1e3dU+az+CF4xUvlN-9st1SeqMY2L3OA8ttyE7bh7L^!qb#NsnHTX=Ddk6Fej_4| zj(&_)RuHes9A$BkKJ%sDHZS7O{6(X_A~LQb7U4;i7qK=eS!TTZ<0LU*O2+q8{Oi8^jy&%#EV-`npbJL*crY#r~ z35|2arsiXx+OPEc%@pG2tuwF&zRZ}LI{c(G$TjL^ZZewg91t)OE}?*oG7ar1%Uk*x z-o%tEk~Ps{66Inv3oN(vzh;sSpzjJ8)GWJ)~cUnk10PWk{wU{`wz)A zim2?g_j-sRTqw>LJ{l-aVZn>~pYVGSyYaPX_@adgoKtqm_Lt)V(lpzSiB2BRA-O** zK^udWE~A46?<3&NMl>b4;v6UL(-6c#YfY7$V4{RbmZ}9Wl+*3N*HfiTX=l51x3!Hx z3#_c4;RFZHMAfxX$+O&1f|bU$4B{M#_H;wG9Y^s{5aK|fOMmV<4G_Woe)a=LiTUEu zFGY@L&%(gCcXR(8#IFANZ_N1dt^BD&1ZYSUd5`%qz(RwZ`e75qByNnBX0}5WN9m8! z5Ey_`GF5<5c}0HEI7gm%`fW*Q3p54kZEfR6Ofo!4uGD{dOZufb*SYlq$ z{zFg0RD(43Z5Iw0<;K@3w zT_7e%sg9!Bsqv1Y>#1>$q8X_PjzjQJ(p*^(M0>6U5s~pIF{s1LyjVl$jDMVB5OHWT z0nnH94_a`!5iMkjS0u*#f1(nyh|6+dWJ(m zAj`TlrT$aMU5lJ3>%$^*-h*mlNQRZj`<|}L1u{K(G=R)OlmQz$14Nc3ud2bSG!Q

    Ti7@5w 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 E0IKZny8r+H literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD deleted file mode 100644 index ab03f48f3..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD +++ /dev/null @@ -1,48 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/bijection:thrift", - "3rdparty/jvm/org/apache/thrift:libthrift", - "configbus/client/src/main/scala/com/twitter/configbus/client", - "creatives-container/thrift/src/main/thrift:creatives-container-service-scala", - "finagle/finagle-core/src/main", - "finagle/finagle-thriftmux/src/main/scala", - # "finatra-internal/kafka/src/main/scala/com/twitter/finatra/kafka/producers", - "finatra-internal/messaging/kafka/src/main/scala", - "finatra-internal/thrift/src/main/thrift:thrift-scala", - "flock-client/src/main/scala", - "flock-client/src/main/thrift:thrift-scala", - # "kafka/finagle-kafka/finatra-kafka/src/main/scala", - "limiter/thrift-only/src/main/thrift:thrift-scala", - "mediaservices/mediainfo-server/thrift/src/main/thrift:thrift-scala", - "tweetypie/servo/util", - "src/thrift/com/twitter/dataproducts:service-scala", - "src/thrift/com/twitter/escherbird:annotation-service-scala", - "src/thrift/com/twitter/escherbird:tweet-annotation-scala", - "src/thrift/com/twitter/escherbird/metadata:metadata-service-scala", - "src/thrift/com/twitter/expandodo:only-scala", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/gizmoduck:user-thrift-scala", - "src/thrift/com/twitter/service/scarecrow/gen:scarecrow-scala", - "src/thrift/com/twitter/service/scarecrow/gen:tiered-actions-scala", - "src/thrift/com/twitter/service/talon/gen:thrift-scala", - "src/thrift/com/twitter/servo:servo-exception-scala", - "src/thrift/com/twitter/socialgraph:thrift-scala", - "src/thrift/com/twitter/timelineservice:thrift-scala", - "src/thrift/com/twitter/timelineservice/server/internal:thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-scala", - "stitch/stitch-core", - "storage/clients/manhattan/client/src/main/scala", - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/core", - "tweetypie/common/src/scala/com/twitter/tweetypie/storage", - "tweetypie/common/src/scala/com/twitter/tweetypie/util", - "user-image-service/thrift/src/main/thrift:thrift-scala", - "util/util-stats/src/main/scala", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..34c8c60de898cde762cddc00727fcb6ff0e501a2 GIT binary patch literal 37293 zcmagEWmsIvwm*z(a1HM6?hb+A?ruRF2@Z`1cXxMpclQw7EkFXn-T$4LIp@rrd++;x z+5L1?t)Hy5yQ=o?Qj&#)!UO{Yg9CF(=hmuHDT+%12Ll_20RzJTwd#rk>_3~^e>PO} za4>h)XL7f*ZAy|?ToXb4a`u9i%q&FWC60nszUx5azz~NgQIm1QqrJ?0A_wtsH^~>K zKC2W0!xWd9cIQL1RxjA?-Att`E^(r-pQ%|u23g`=u#wMnYQeoP8AmF!B)vyCKLk_T zn(6(1h6|i!uXcdX5Iy)zELSHWN$UYDnz|}R1D$v{7*0iS96Ge7V3s?tliWc~_;&5Ws%paI-BU$!QW2+HbGRib3Y)nHQ(&{bC1_F=s$Jp zXh*C0SRDmQ<9XhRBWE7>2GCMBkm@JGq_cI#RCx#84cy()7R68qJuHVB+|AF)+fAzb zjiP+vR2QyO=@5-c9%JX_eseq$C-b?<4bolVl~C~MlrR*e@fR8Ny1zhvIxvP_#l3&$ zUwtS2+*Q2qvKEkUD#wsatNW5fScujWXZ+;#h*(nbUP7qvd8uS$UwHhEEdL2p-T+ML zA64|Ak`=iJRc{jl3=9$UY3O8b>&(pb`&t!0^%0U4)$dG5a+I>fzFA$OaK%94hkT(> zZ|dY}u{}__c(uDrSwde6yN~GbY|qqUF{1!~nZDRIP}4+vAs}z5Piu?zqOrqp9WEKZ z)1TB`Z8u2UHa+5o99hJi>W<4ogG7ja6Jto1w&8SEv|3EUkj_pTxiqLO0qq*`GmWN; z591sF1|TKZ%o$!%)%M-iE&N`%`LncUr7a-ID%L7`s|Rjoj``79_wXrKg{0Zf&g01nQ~rT{1N-#2+y{Di^) z3##Oux8%IMM%Wc9oTLmL_)+*rX-xm+wp$KPdE1F>uBolPLOY#YdRL+?{*fyOp$+b) z7D&_J_+a9YxHEsVa71ma*EJLD^`~q}I^L?Jp#HPo$GJ-?OFq-_-Uwy9cL=rFkTMyp z`f`h*eB^`moE-CCrb)9}Rf_X|h^eB2Fa zmWfuH2OgF@Xe>8v05!K<0UzkJV+-YqSFNMC`(sm=6>qH>Y3*}u`=jY4t1pmH2Px>+ zhan@CgG_UpS{OEh6W0gmcPQZOBFbqhZmk+@+u{J5 z6bZe`}X1W{W1alJ@*9^?vW+30qvZd`0I23CH_C_a=o^O za}27BEfg3S>fh^P?BMW6S=1)%*H}eT5kUy&AxPj1A6FzdVHg!nm3{?(Y zhNUrtrtfGtGhVd-!wCO5O;f3Q+>5NiWb%Rt*1=hke&+KkvdCtmS8<1egZI~Ga}mj3 zu66f==SfOU%bTgnEQ;Y3kS{f#Dm+SO1UWzK-5hBrCm|tAK^VWVLrr*8SkbJ6O5w

    kz8I*$QN;%$gywaN!G@IzH77`E&p}L*w)*IGX7X( z*;{0&M}D#8XKV?&RdHAy!q|l7Gz{Omalq9tZk~4uRhN)j;Nh3wpANEWF%m_r2v*wB zD14@8g(T}HYAZhOGF6faRu5BCBojWF5aZLE(w=G_9*QsN=qu<(VdZe*p}A7-1OwZ^ z_W{(GZUS|XFOctzb)MSBL3%%0c$!k-UhlU zHc9^c!MXvQ%$PyHS{FOe;`IB@n9?x>tZ||GZk4b!!U6^`$7K#I#C{1CO3#LX_k9yY z5*JZT984vHkFVeLek797c3q{APuET+p7b5*AU=zBqd2*`bHgI8D&>+3UvYOzjQpU6 zn#QU;IsE3`9XT^hZdy0Wk`gdIY-2rqb|{?1ZAB%cuWbCGS2VRz*$g{ru^f|B{G*Ps zvl?rDQCyoKS-lwB%=^63I6m=_F^UV$BFemBzg9#Bjb#bOj*s1uy1`?`o|zPuUoGXYg$-~aSH5n8u-2fea6tNoG{n&{v~i22~+nA zvwu#o3>M00&LNMCff3qBe#Qkl9E!Pp>@PmUE7S57b^8mh4d8sehOYfDyLF*3^ASXd zJ{$KYu2ubX5B$_)boylxEE!=eG3(B4KR6B{C!+ULq0leKiwt001Z@a@)CExsSZwNNRRSQ_a{XVLS--JtDp?ODEaxz$Q z;J@I%xPFKJ@b=QJ8OJots&Esf#^kV$YaRGZpgRe`tAwUm`i1``pmm=MBQ)Cn0wG88 zDao?ZVsO(;t!)9g$hlD?5D}5P2;E)MIl+*5s#{kpM#na~#c;o15ZtEt8KMK-Mmn{n z0--I+2H%2l;ZvVIt)oKns!GH9>B`_%fTJ=Vq?L@aNNj)gDGFj7ndMMESE$25eC6!m zA?$azM@W4i`87l#`95mRc|R`%#8$8mU#GFHDq22Bn~oqud?x7EKyi1ba_FPAmi5cG z3b{rF3veobJf)ww_1i!68@4832S=u0`5>FgeBrFHIQtE2qtS8)woi^Hav3|h}zMJkOeW#Ofn>~{a zCb{7v&73-|!VuK>8nETt{365$m~_Y4Gpg-_sa@9Q-cb8e(90hzNyVPl-sOG8!~_i1ydX_emH%!-q;>kx@>c((k%-P+ECCquNc%Tx zu=jKPVhbewX>mcu2A?X&^JvEF!<|}Rnvw}<80LvQxu~BYiJZaAp}Su(Pm%QBLSmN0 z-~H?sR@JqT2@~5ndwh{j!oz9w3HA@M0;(V3|*$Bz8GJ z^lK_6rfBXym3bWr6Y5A_ZqoSdpnfeksW{Ym6f;ThErS#yI{=kT*-A_!WmuU2kjP6MF>J$Vf?80Yl#F z$oqL^l6ypcUJbe*!dabHlUmBFb{M%j+IDN12mA$;L+_zE&Y}gM^gedXF<2jGRPm6t z`EM@5L=U@J#(U2*ICqkc8MXznL?{%?ROIF&86pWkV z>28=Yi0}IE-EsNkP}|K--Ks8b^5fDsehlD=gh0WZ3sy2m7qCQ0Iqq$cRu{FYB7x_t z?c?fN77&x4J*i9jRC)L@QT`dBu8nfA9)Y4M&t9Yrt2(Oihm>mkmwIj;2yKbk_*CPN zob1n@9b^|%)vcFZl{VYL8|lt{+X@XD0sUxDb;}Dz`sAFHM!RQ+UvKWs2z*~)4G=6E z7YM|Q_x+#c^`g)Xp)~F?AqUv+jjYD^EEY|{B;0z$Q^eVdYBN=LATLYUBSd*9>(f<( zY=YlU+3;9j&n6CfD!_mCf`t&?6N)S$*ySbEvQeJU{BSJTf1Zl&PeN^n?Yvs5abUDA z%d>htTLZ=W5crMxpKD4~1vY;KGZ>hGIy4x{zjE#T*~8Y{`S*$fdQ3^!m8$pY>B%oJ zeEx118w55oZ4VajN?`2Om0fqnF3&#q>+4sXPcbKkzLcaQ#Of;Q8XwE!>-qb$v6X1| zHM0`b%wJw|d^>H=fQH1;884?B+ygyG-EF#O8c!utr&k>S;0vxd|HHwlyUuBL^4g32 z%V~!2(g@)7A?EGjY3VGwM7ZU6Pyha58~p%6I4u@wQ{`;`G>UV$Zta0rw*ktourkX;;okbjH(p(#@rNIwAMObp+6f(es7Z zll&^7Vvp9vquXP3U06aa#y6PxwR^q0qor~pX^7R=u4CP&TTl0_`{hRb(LyDKXuxr6 zgBfKDm?}x^EuDQr`Ziee&|}h9GqFIG-0=KaCj^L=PKo!q1HS8g6R#sh80Zn9*5S>6 zfLyLa0V2t&aq#5!x-#Nj%;1+IZ-%VivjH3e}Ajf z>5j)*Fx;2sUFkmjg?ZMYTNZ*C4 zPu=^7WL$x=Q;Nc>Lfo%TY*HySDB%-I>m51=baCyz9yzfZqDC-Kdk71dQv>F2lPBfS zv`Xw#BM>Qpn)>L4m1_Z@ZwCx7gVyig^zSF7mtlqM71mtLA@Jym+bK@AUOELBgo%@D zX541ibz)W6`a@bq5|*ow7wm5ae%5aJRAZWITbn$mEFJDUI#*&BmOjRyowq$L8DFW< zS`VgK-Uq&Q>Q^t$Je|xvI@~$FjL6(x37?z^WhzTG=`YNm4;)-w{X89T&g7sEZX+nt zjCvb5a4#pyyrNMLL|pm0e^2RqPQ0X;(UKBj4fQqDhCaNuT#`owEe>3Q$heTLyZ5D| z_ktWhV*O3a+}r;tr!*3v8N-}q)fw9o9=xQ*=Zf=m@_PQ$jy{uU_#2ux7U?bAH&Jgw zLmHXLB66Mtp)-pL_0e^SXEoB8kJ8H0rRXY&>=i)_`=}|!idBtq} z&PamD_+JtkN#LkG5aIq%J)hv#gxdLg)W4ewoy8lcT|2rl46^wobQVaui8Ne%&K|&h zwS9Gn7dw)AKO#u_r%)%xmbNy#cW?Q&VdyT~ITJ`|%^x^+tc*<9zA{7#GU+BipABt1 z-MF;r+Yfn(J`XHSy5@aacE8fSAD+vp*>SJ=xgex?xPLH~zjGh8C9L0aBS9Q(zss~D zlB5@X#u4r44*3INQk|S+*>=b|4_G>U4 zP_ye_9fMkC>q8^ZfA!$RaOC)Y^?Zwean6prgE{5+Fb;cW;=3s~qTVK}yepAeS709A z7NNpHn00)YY03T`>%-f=kMcOe8SC?vi?6raS!)6XO3|isXzk(+qv{$V#dv$9=5hjd zhjl&qRNHIcM%=LSEuGqcQ_}k8(TV$N&tP=&U2fvHODdk8&u*%prjf_6LyyZF-65ey z=+v=y$_y7X0$yGR&x;igC)hSW6NPokjAy8PoXFUIjxXnirWId2lb7KmW^0)9un|p? zJz4b4lt9;{D4t(2tM}M7Gh94g$`N}&0nMLq^1j}qk7Ij}bFZk@y=jA+jxHJZc26y; z-hJ4` zlV?uAQw_9@I9GSlx4qMJLem>NXpfKj`LQ{#+RSAj2{UVOhc7JfCq=Yh!n$-uvykcW z5qrj!@7j4T+ESoYDiO!g7g*j$cco!jh7siHEh)I|JV(E6Zl)!Go?MS(#|}5S&vP-w z633aOX*Et1YuBfBBxa|mb23ZRmxHb!m`A$@;>6s_9}0NCAj-EgarAx8li}9;R2hRv z>rf3I=!}HwZ8d&VL|e=(-?1Z$;o}X@N@&chQ(QRy;2ENgG1Wm*f`K;T^Tp(Jpyy0= z-lyby_TH&L(U$DS5TLAlM}zqX+Qr zHR)~fN`^ zsk1Y(r2GWcM9ysrvUDVVd#BoIwo039AmD5D!qYQGPmi~<-vy`6v%17XBgq32;0dc1 zoBk#qruie1E$RE^qjZ1#ie%aJIVR4MC^Ll)w}T+DUsp%jor2SvthFuzD(`EFkind1 zj-P+V_Ca6h78K8nsTB2)5qP_07v=-BO`CF(sPe}r?t^)!i9#ox;wtrn%(s%)%nlY{ z5-iuPd620C0+{moTUrx()hS!hbq4j3HF4VHk(anx`IKT9)}Ni6If~gUsFKwr&V96I z8couNR>F=}TQ~um$B4K;kJz-Vh68fQ=CO+!YPx$wf=OkJTNLcS`*@31Ajc z^~Pz^5!p1pKSWqdjXn}?$zRJM;OV9jzM&O$yX;Qjb1s$E&|zU#ne+SQZVv9pl)9ra z4iT#BivL%B08U1{D2I8G1LOO3KZP91iL|$iz16eG9 zjAF*Ehxx#j(;Y8g@sW_WZVZ2v)Qr|-l?>u7Ud~4Ix)C2u@Vh7hFV=*?8G|f|Bd^;X zqie3;+N9Z2a*uJyxqS(E)w8W%A#bl@boOZbJVIEa~2>ds8N)E;^SE^ zuRYcnQoOj!w3Vl*`I#G{%7>sYv;eL>AKy1Pd-@YwTMFBcLT|KXwP4eaft5+Qk1dFrkUR?iR^x7;?U8 zyaHLWONcSd^nH@w)>6%}M1iM+>fz#f9?OtfqDyoWIfK1S0S`s5nnL0l;cG4Sc9O$g zCH?moY9Ln8qT7`+?NRn^71zQTa_7}7lSffjjYbi1T+P^S+_=en{3=ftP3?F7Fwojz zz!ZMu+Cpt=t+=qJLbXjl1t)2KOLE}iqCK-mQg!Iq+LtDw;L2E(ZP+H5{kArGASOc} z{jrKitbVr?QKQn=Cb{rrU1hCJy4ktIsH2#BMMlR-&w7kCo^ph+h2m9;TZUcX;}nl5 z+g>4}g{@^nTA^S`(QPK#it{S8mv!q-gnTUan8%$*MRokKQv9Hn7Kh2IqRZiSRV8`r z-oX*BHZDR;FR3ZYC~7_I_h#F(&&%x1%#WS`HMWQuwq2aDf{ zo?Z^Cu(Uj;YXw%hOj*(Kws=6T#nGH|b=2Cd47zjwaw|f1;Ib3p+tj2s->ChE6cW;# zMrK+r;$1SO-V`tiNN z9y{;@kH8xtE}GB|kIhg^>n{ElB@8Dki+%CqgTu?$lBpecgeb3>&qIhmr*FSO+*4L? zB(5*7Kx>R8saIvkW<$7U*x8-N$v$W*x9Mefyy~7lic1lr;4lgnB8{;gyUJ*sWUKEP zA)Os{_rv591#rxprrw71RG}OuMPMCR;vpK=(V4PZa7!X~aQ$1hJS>R)I{kXHf zA?Z%dqAajET#X>qGnXkle0e?BJX?Saw%D4EcT%90=pgtyEOaj6TnY1o)q+X~<9_vB ze7oehU(j-6#u{`dxScCbtYm2vgY4)O?x)=qgY75YPw_eIPmvo+ScRdRTDse~Kcc!Y z6r8WQTx^$I-M6q@;JVxa%46xJ`S*h=b0*bMY7V z$=q5S&f=E`V9w&(ln6m~)p7r_iQXJOov+9F1!d+2-z9%|_3&xjOUVJEh9LQCMznLM zA9wE51w=huSDZO~R~n>(-qxLzoP&vF^(}UnF`YD87uL+OMLzef|5|!Mi}JSI2)ipp zd(wA4zfCI0r8MnMSZM0=abx(dpFAUo?vSel%p?(C@wGwNtlNW#ongYp0T|TIO*KD| z)J4O8*in4hl%mS#_Tq6Yb_U`2A0p>+TMFqi=xqiDV7Tws25o-M+ymtZ;G)*VAO6OvwQLOesd{zn7a`}i7zwx#Dipiyz;`-n zi2?YgFCaGkxJD31$*!f6DX%Tw@xTjgU0mYRT{&Ci{7zBfEdJs4h&1u~9tK)vd2Z=qjX{c>Zulxd%7Gh3aw+H+ixqRZjgv=_V)<4CG-bLF>!UpuT2 zMi0xdWO3^3rps3}Abg}+Fwe!n6=_lqPzCkM4H{*e#p|;Wj`nZTWeN=33*J*5=}*E| zA75kLe7ueL+OhI(^tdco9!D7f3deruBh~dscehwIw@8|0;@ z^~;>(d`5$Hvx{VoGBb3iQZL3)5w8SFN;%F={7I~BNr0zESJbysoXzD>r5bBr^sWqi z|ITb3Di^eygUWQfhgr*cS#V~|^B_+vUmk`P$DMvt9FBW!srtYmqowC_man&rh_>>f< zEaG$bhz`XtTpBe2VO7p`xAhYCp&(Xuzja=<-Y!FCUK1zq#~q)2JBIzE4m;uW7`a@o z{pw?yBydq)SiEXM{aQC_Gk+716z(<;Kw_gS4W$;SHj7m8)uJ;_CD>Ru$!6NA(wHc1 zxS>kAE?r>>7Iy`HZQ_v{5=7{x3iQ{pwlU`qBa5{3@;@{DFinIM+g)ze7UNx@US3i+ zv!MA%o-;RictitnxjIu4;dg#}r3S^YoVhxK5Q#tsfe=IgzG$8)C!C1t19uBtsjPd2 zy5P|-2?a?JJ}>`%QhwndIuZqBB+!NleInG6pFmUrk;LxJBd6JEUFBA2vH#|QqWBk& z!k!Ec_)f`%5?Za1^U*Lf3tcH34aidBx1XYF*DSp4ZIUAT{km00%7=XnYEWtn5J$Ku zn8<2S^XIQmtnaO`y;rfp$6Vu^6KF?UyU(Jk$t_W$ugA$lN7nvo&qJ&9=xOhui``S4HPD!rt6$g7Nfi*N?<|8 z7KT#7xrS|k#$H_)i0}ly)L1}?M+r@7;OT6{tWf*hN*9V^O=eZ0n8fsAZEt+1RHmlBY7M0ux8*rbx6(h9VKF6 zI_)E8BV5e7uHl_Vbr)%JU#_^ix@ZujJ8LK~4Lq}Z@f{_A#)|V|vOlpFS@BCkyqSj> zCvO{r3Q2OnsLJrwicz0nCA!V7pR~UmAu6xm7$h0YpvHG-G{c_=hIym5)NIEAU~Q)U z4X{#oX>G9u_}f1Qjqrq@^tq7>R>JOd>Qi_7js>tGg@IXGa-{f70Tel`zK}I!jaJsgrtvPZcAGiU|=1ktRms1f~in@h)^|6p;*j4hvg6 zZbiXt5gNh?mfbw&*AaUJ=?CuK*|4D>Uc08M3{o}huuW#HLj`B<3@|`2qPkQuu1uJO zl}yz+$FIexp_pI&6To<5F=)U|L>QzDQ0r2wYjMLTUCA1lP-FSE$-EAv|E7_=B3(zh zcqvcjx9=6f-@f}owB#IpPRv-(30%1d{`4(527&}#SZjS)zXgO2eGVQ{GHb?2YdVP- zYaX8Fl0W;K$^)t2DpiRaK`IAef2)K7uS+!lECghiphq4O1O5!>lT2P%iYVM3odWwlz1vFxkz}8m8{H${hQ;mxOD{ zSWY=Dli9FF639~mY}Y)+f1x^1M#PdIclBV_< zZw@X8dBdF14}VjoRwCJ+%V%Ot+z;|bvA_51L_e&QZ2H~rif@K`IInm&p4o6o119@I z1Gby_M>`{>jNBqjvnlm-n7Q|E=5X3OL4z>o#eALL{T)bbq0UDoUgp!<9u9#;KnF-i zg+JPp4(5Gh9G$B!e9yk`p*AGm zhul}bs0OQTYw|2!yOk9kw?+7Sh5qrdwb8@y)*;-P6ReCYqZfi|<+{!=$NV_f^yB96 zN7STZb#%%6{=nYE8lrcO_QE_;V(w-+9>dP9%5*=vJGprPWos?PQY0%z1h&8+eF&wN z2@eBWy+ez!Oh(Wl6{_|C8#!%gqD4_!v^M^)v0==O8j3=IBmzeu$LI-4mvj)gHI$lXIVk!5QK9kj^I zcI*e@xlBuDY6nHS_WIC&@3M>Dw|LFJ`-}Y6WfVlN3i}6n3o8dk1k?XPK5Hbi{Sck9 zweIv6dB2g&gNo)of@X^{=C}UO-(Y{Jw#6}b85(SL`L_w)H?p@QWD&l#{}}(6e{;XI zo7zb#&p@d=SfES-v?3rlWk)B&SH| z;x@3R+0=z%SfBot^QN#}u*`wnwnQj-LnC->(48^XAO1$HcHWB=mGT&j5@UIiLHM|- zNgNN#^>Kr~pTwHV2DoRen)O|d?KCXgN@51e*0THnpZe1`RrL@0n-1ZNKtuE?8J!md zvUHeyD=fp*vb!&&>5Jg$RA1Lcfu}YVrciL#*Bx%rq8##z&%@#+d{*gZ>lpHLp~dja z(`r-P3Uh@e<P#sw+LTTDqyzgYU4&htH{dOqkD=ey^SXVh z@?Rcx?uy5T{swmCHD~sR$)6lmH{HYSbB(M2GAXNj)KwJrr^%3{-zIqwf1B*G`~Ne^ zBX83)({aF21q7MID7Jdzv(0WLBr3qc!sCz5FgB-hBmlipt`A$=-(5L51aDoZW`w+! zOlriG#?sP}W(rxLKWOnB!X3XgyQ=)SWoYd5;10C@s>}-^-lsi_I;T6ys|yDShv2nr zhWdiwx!gJw=!Ocwgo7?m7s?^^_nforhY9v0p0NysZV9Hq<^%0Iwjo0az{LDQ!HuC> zNn{d9m`ka7M5}JhLgFAMP2uQSx@@_!VY6FPn!>P^0P0B04jnNT7Z9CKG&{j2%ne2Y z#Liq}x|6lAE^?5+mr1Bme~vlGQ1BgS5L)MNGA+XJ_xpNa7IUIZ!SLCtUtMV9a(p4<4EQ zmuS^1n2Ly;SSCujm|uZcm!{tbc`@-+zEDt+m9&6oB?}9YS~0F@gH$f zqQAxA2Azvt*o=;uZ1euAC1xEUY6OClK>xnL)`KoE%|LJlY1fy4#@z00=%SM`!eK;~ z7}CyO15B1nDWNA_=H!&7b|Cnb#=<#-TZkt%bFW(|h5^l~TgEi3slsvxD0wI4pyZvv z!H)XdwnF_gd3HH^egp!z)4_kyfqc$So%-%@-KSaP3pEQ(si5LbZ7fh=p`ah{JT#hq&9TIK zJ=>uRyLq~$@3ylSVHxo<^bBo_yt^a{E%YpJc_`zFd^((L1K04$j&q(jhwdYI45Dl7 zW0O7KRmHuSVwWR4YY#F@&yW#^0}qms^< z%~o!twOJqRa$ba1rmpiBy_T{41Q(2s|2{d_Y&cn7h0OFWNTJDrr=JS;3)lX+^t?_u z)Zk!j3xT*vb_gDtd4RtpGO&akEKBwH=VQ6O#2jH8(1kHyeXC|lQubMzvl7o_bM!&c zkQnq9dRs?vgbXpitfHKD16sdWQJ`F*a3PNCyLJ`3dtzNvfMh5Ua^(;BtVPp`oJDa; zp^vC)yT|TfHA(D_pG6-JUZkE$1qlKbJ=pbHv!{`OZbN+VmW2OLe~VPH8@IT zC=1JKzt~+Km0ifE6xhkPth1)vYSu%J_N<|MF2z@EZ^Tziw?EJZAOH!O@0*-3)0y12 zo^wkAi2Dn(`5kERA=S?3mY(F(EbU# zoHA(PKLz*w7JU9&a5et1i!1Ac#<6X;7qqY%u_pa}67iUA1@V~NU%>8tHA#Un{{mKO z|7;eGGc^o`^?ZE;R4wk@h6tz69n{{b8|hyYAU zm@V7>047{?({UE9cEgZ>Zv7%bkz$yYQ?9;WCNL#}_4Qf?I1peSv zGGxvLxvneQwmiBnSRVj}89dd;PbKL4ocmEUXTJ2msbw2Q7-eviDq$nU~_+Q2RUvuMH@L)2mO*6iW49agV zz@=*&R8cl)VSvZ|CFm#&o!Ub_&grhEUvSq&Zd$(q8$SKacceuaey#2IgTlP9Ld0xU zdSjx2dP@=Jw2q-^7#Uym0xV*ySVT%B)b$Z?6;Voc^Y5;kP-Z4dIN|cmXaIu7y^9pp zqD>qldYc4RM`7cT>R7fw2e3-;{Vzwev-0W?rAj^O@S^KucgNyFm)+hiKzO@=ZKyuh z=}}5l1(MDPl69wFz2?kpB)FR}?^-sLSw z?O-E)BkC9gXBY%HLVeNOJbf2T{fUe~bE+(nZH zy^eb3biEh5{_)T}$U<`Q+wM8rt>+JHP$TfsZfMc`-TaNq^0#&x3e-FX4Whr_^-D%O zlJaa~{WpN4;%|VXus;AC?%V?Qphi02MoxN(qL;Va`6@FN96BumBOxsLvcvF$wp%Z5 zf1nTmKBjf~?X`}p`Rxr2;37B>c%wr0T?q9#?rc{6r9d}uc975+!f)Fh(PktB!;%k& z8?MiB?_`#kXETw_3w*>esSIo+qADKIfnc2~?N9ncj=$(jOf3brp+V*kc3J@)5#SvM zLmdAdP767*cmHyYjY2@>2Z7hq33T&-#EdYEl|j@JfR&CBt%yTF@J!|WVA5$&j zl1(mh+swr(r~6Q~Eh<~=d7fG{rKF7K>ztlP7xkia9--jGxfKOW!zA@NS#NdW;f(4o z8?^1%7-07 zdl(Wo#nC?SXR}@2D+N-KD1~CD3C0_oLLk%ma|k*FW!)vuBUY!fh`v=zv;*`~8#H)l zY+((jvudJBFn=Huh2oSPWe3-hL=4N}^(Rlq(2&qcZ>{m6Tj% zf!w4HPXud+Dy$=`I#aT$z5T~lz3P-GP9vjTQ$B6TsJJQWh+t-?niJ>x6?Y={?(-^i z`UFe!q2Xcy4VW{)$I3}44Jy!jnKYKK)TkVmWHmV+5O(&^$<#VDsZbfIr46gK;%>{x zaEpg)@g`wnj{cLgWL?ilpJ{1g9FK*ijxDRwe|Y?P)|<@|z+omIYFE$3oEl~MOLDnV zmr{djW<31G&ZF|(=0UR7dp7!so9b~n5#+?A{l_^Am?rHq96K#AdJNnot+eS%Tg*!~ z*Dl62rCR4oITF{fB$vdbsOO7OiyV|u+X9(NIkK*U#EcAdrj%oIb0pkUtu%#25mWQ* z<2C0vW>C8*-2RZ;#XSlJ4HF_*vvGNj~|oM{Pbw(CtO^o-|?9g88jM` zdexSHpwuX4rN8RxMOsc!YR0lW)JhZig-(A=L*FobYCBmy%7*_HR37OX-u;8(po#tT zJEH}Fk%>8|kN}kAV-F!ORW=(jTNjkYQTzwn`iXXR6Z6Z;%4L$wk@0Px{;(v{1~za7 zvYBzHZL+^t6hhd+`!*=;1*Qs=+2)U;m6iOJwx`kS;P{@bPpBAwWAxP4hJ>NgC{Ez~ zs-?|xm&x0~4g+FLNP@l^igZ@sJJtwG3ahREAweaC6=4|st!84{KHo4)D7WmQc&kZ4 zplF0!yDGP(3@~GR`?-JpTZh(sWRf#?qNqTy{^3%Gvc$CBzUD|fRZtLgoVEm7=y0z1 z&7p0^5XmFfq#D<29~T>9YCrKTe$#|KW;lE~K5og3Q;-`oRqR)k*stCnbOPX^FyN?A z{C@eTSR5g-P65n1M z)BxyPP4r5=1u8W-2Eggm5THq+RO#ChBNEoO&n6t*H6$I!R!0Rui8K<|m#prr!L>BD zBk!FWjjcRYsfdy&PU-ezH#hpUx}6xbFZMe@E=bc&>nx?b!V(ocx?X%bG_@bFYM;7g z6t;5vmvfj1!l>Mu#Dmw7%yY%^P{>800}#?hpqbC9GP9gOBIwj`J-{u6p|3QKgAgdA zguW?(Z|(=?iZSPkA!gw}!eBwz*rF_#B(i9ZE+Jz%ajSKQ1?EDCLhI)SV8yxY=q()S z1gD+BHs4n*!ef1O%_+%)@IK}h4K@%7#%{*AL!w)r9?YmaE}q1u{7})VBV)a~EDKzaiapa|zF!V{H=h1&eo1hjl({@3R>J%Y6)rYW z-hP)JeUG@W1IAV?C1ZCVLUM+>x`#C6yx?Gd%xfNsZEBx7d(}(z$5rX4C}OI>ADUm^ zz`8KM_JZw3iRFphSd9MAKguA5$4BKV#lSDM!?8vooCHlzGxjQT+TKcU>^4EDwr-em zk^~KixOx5|lH%|U7XlP}{RYca3ZQ3H$wH-i9JVOTZ7))IT2z%%4BFBYY-<$S`+^5E zA?)rm1(M*$9BuMK7SMm=76W7li|Pe&Vvr~iZnmFU@Mo40E44vDDt`fC{RYzgH;~7NdaP^hO9Uz%{8*~4e0L75oREm3+3>+&RGstm>a zcq>{Q2jNXjK?*H~;6eu7lqGfoii_Ep137q`#3O~?a>ZdIWQvqRKoVfs^-pohAuBud zPvI_fcv!k1ena`^xqTy#fH_`HFfivD7%;qlp4->7`us`K!ouA2^Pflfee_cbr0P$e z9C_od8p5 zMc&7@u{)0-hu**XzPfvKKl!w6RB;{OZM}Qrx<9aQ11<|xFXn9dUY!~40jRguPi`Y_ z_I5oQ47%SAX7*1r-X6~09$$~$I$m;SCN}ghpKeY&YHCo<&T?)+NBcLs)&vC@4Y50V zx+;m9Gd2$9UI8c>DQ+2xIT|PvZid`zBW}}1JUq`mOD6}$ZEKXn2N5@C5gRXMZ7E2G zHp~$rS8pybfijnO);?Byx6xcR6E04da~4na%hbO1!qh#>Ko74ME~_h-Izt~l!J1p& zV!MYF3!ty>TeH5eoAut>gim4515=y-8PL~5$gs1l{novp$DZEfG#X&~d~)au6bgnMN%K0)zNijJ7)s@BjjBzrYCWNm2ayKgnp<@)R1#Ruk@ z5&jx`N1komxW=#vW_Np1z?C<(_PI~eak}jxP~&*52fz)eSz6Svu6k*Gb+V$@hLKq1 zi&DOwb+zWc+OfJwm&;8FIRid-Zrb7y=Opld^n7NL{QlzmwzQ#NFCb`7)W2Ucv~~qd zA>t)id#x8F*%Q2Vsu5RSg09$p{(kuL>CvHTwc3Ao#T=C7%-)rI|Nf7kA=MQCq!VbvqI*lc#M zS}{|B$uYew{B}{(@_7;)@Ff4rWYFLi$DKw*`|fC`?QV?hcBd7G5{E(frP1TQ-ut;$ zQK7R(SW6N4^=ZVgxnhb-dwpw5v7{uBIGMSESR*E8;^ygT=b`^*?#S`sEj#(x_bfSP zY3~i6_~5N$UIPLL7jXSEM^WfK==;{gjk4q$}RdW78CQer+@aeg|rGz(stUvwrNORMH9KcRB>K#f8*cAu1u6F)=o(1eowLy!3~KtZ4Qj##HL>5`2zzM}ymmkA zNWbIkslJ_=SiP~6uFK56P3thkUK=_**}eJ6v=7Z)e3brhe(N~nHYXmC@mjlOuX3wv zI^hUsE6H4=7_nik35YV`0m^G{ZfvzwjOch3#J^Mx_cPB#gzV29fQ|}wJ-IxL7?j85 zaJvyl6O;mb;XU_D77j~Z^!r1IJs2J-A^Xg~mn_&D0`k7+wK6y$RU1NV;32+g2~}?z zObZV6#d)XnN2>xxRO=Fu5oQJ=6Qdji!fH$?2)(nZ-_zsoxW|XpqqS^?uG3*LH5=X^ z>}uIJ&v4IVoRqX!o~oNOa33wb++7MZ^R>`nXtV*HLolsn1zV7 z-#d00R=Z8`3nef?drh4bLIf(-79nVnFY7{AqS@9%EMmIp0%axEs{KR*UNn30`lJ|) zq8vUPZ2PG3vxU%>6Q&Jdo?Pv5Gz}vy@HI8yX+&&*KYX(DBRReXtB*qA&wZ)0H9&;pkX$D4eJHiBW|-uHvPugfZ%!e?KjTf2mH-*tyClQ zye`=$Xc#(Z*l%mdHck~XkI1)Im(fqb`=tB2RL?as37ud-?|ENFVaAq;8_1DkMof*F z89JlnU8HNHh6ksSI~hOS00LI8ikO*-shy%yVZggcn=PZa!{^hG{r#-*{yU6Fd>LW) z3E-wHkL%+pUz_*aq0P4=n_JGRkv(q261NEyoY#Bz2e=a_ub(gLS>0FySsj~CKbfjw zn>)>VQ!Mb2-n>>DTuvY2g6-QYJ@yu?J9Rlc?{b?w|-#`ydkJ6w32 zc=*0@{cKe?rRPK#dKIkNcFL1E?Twc9d}H3`{leSU;}&cxT(vl%f4hA%FcveRm|^$L zXY;$?^qgB_3g@ZA&4FDGP~u_kY$k=jZC&h?e0+VWYAeNOt^HncsHN)X*f)T#GwAts zEuCoEcP%~I^fbof^n&=?%l0!vwQzU|EEMr7|1YewGn^3lT~D43+&SL&hmmGNIa!zr zWa0J9+fLkbhj^LL&!5qXw4NQ3rS}AbLpO1~Wblt|Lf`mvj(7h6EaIZUX`3yC*OZ2e@ zZrA5qlqTF;`^PH@=s~z_HFEcSw7!IHa(7#yfQ8^MqB{~&pK!m5dFUYRmr2nmJ|XXi zJt!@<Mty0UHS7LIM(wp~HR+OcgL6;*88wr$&~SQXo;xGJgO?KxV-1o191W)p_Uf&M*ay$(b26_*Y1l}9Q5#5~EeV$)m z~{EiKeun@ z8Yh%E4T;*PCN>CA*%uH=WYip<%AJFHn;q zvr?Tz2#M-V*n1dbPIm09K4k4<-{mV(dY_Kw(5xtJ{5b9L<61a%?TGM1~`+Dd~~HnLX*Qmnr@7 zISF-XroqeYRDQk4@*P`7FC15#9}(IDdl&5|?`e(M9np1OSNk48oWc9=X1&Z7O-4Mh z&u)zcLtb$?=3gg2S-2@IFe;`M99*y6A*lucCh*T!sj)mIa~}N(eiU$n=SAVWz4#WA z7I5w$yXD9u*W>NU2@T5VyvO81D3puT z-f4T;ykbUab5bxRmO4|~Wy_P^ykar1aev=v?7W@B#8UOs-YxcUJT7e~4W4ku)na+` zlfKa=M(vqW*%47q=JzrpPP@?6hw=^WxOX29vywtl1#HdboTAjOChJM!I!oV4ewCe^ zRP>xoqDP(U`AS;9^ZC)TZtb{Oor`(Tg$L_5bu>s`*RvzErq1R`H`9g3P>;oquFB)L zXS@URUd1x5;&0~sE!O7-e9O%f%u5x}lRLt7?%(2G`ic zUpm}4cpcxJz6YGK_u9KpvU&mP#CQ-- z$$F^x>U2EiNU3tqP(HQl5kfYIHeY#B)FJEXf_<%f)_`&LRAm$S+8)dU;*=wq=(UNs zD^G;*r0raNKX!R{K>Plf{+lvVbf^VBz9`X(P6%c5c7I?`=qZe?v)}J3=1wVp$j3?1 z=B0;!D|pGEQxpO1!XvMl}+&YorSC^oP& z*m3ji#p&n7*w&A+cKoEDpHa{cyyT)MSXrT{GG)n0VZx<9kx(7_r$2zBgqoS5h>bQA z;i@>B%KZ*N@J=GAC%k^%kAKdLNex?+CM(OjZTwLVh3(bou4|^+fZT(tS?$c0tdU^! zEIA@N5*Jyw19sV#)mV3{aAK+f8_J#+qg)AZ|?z6<(o9|_33C)&z(rKk-$l_O%-W*v}4V60*U?SEpuP$Mshl{jO zSyuD?B#7ava3W-?%4)4aGm6QlOa{C>5jI4OctIymC39-+XxyDD^?#pio z;Fk%J#^n+RIe4Rto-fyZTuNDNBJWFuVI8FRy7oEv1$2hGw_mdnI&v*+2dhSlM7cT%=|FS0BBp%+g`jC8!N<#kCz z+T~<4meRjrgyOqq`!PszN(_OybF{H8Jy848=sGq{J>}p!l$|`IuIK(5!6IMF>jM+U zbf_diRuoRlu2}gJiJ>UP(Z+wEl@(^SbhVn#b%-YtuDWx4d3RG&00H7!-pUs})LSLt zxETL>X36F2D!uncQQtMu3HAm@XpIqR=YBh0_QePxr>b*zk=)zX!B0kxVB_}I*v=>KUB(CRDi;?BMr>Iv``Mbffc`b%o6qr+cPf0nLx^FSlULf~He}YMifsDQh-lY}!C)70} zuW5^tYy*FNwDw>RDAdL%$!3=R{W(u`cYS(&6>ucBfg_=OJ)=;y)jL_no2~KFq|s_6 zTKboLTiQTgT!%nY_drLkLm3B}^v`9^&J?2kA-@r&_jZq8cb;9IvaLDZTw%MLf$eGc zVBZ_9SW?<%bNLbDvfAQS&#tR#D7{uiw&)91T2SmmN$n*}Xh#FS%CAwodw{^`fRJ8! z-I`Vd>Wbtv5Dgf-wGJkVN2qg2D=N*XiP(&WsBIRg>313PdeHT?(DgHXQY{I2^YOp2 z$@iQN@;5E;4-v4qA~j!?fZ{NMi!SR_$@S+vuFy0(qRyoRR)mK!?YEZR_^ zm2K)73IZ23N)+f}ZK*xgx2ik)i?i`!`;98do|AhuoM$zdH>tBVa1J%F4)TIwZLtVj zh$kRr`mTF5T4yyzNH~1Z-=9`MqEiD3&TG_4C1<^CFgoVZIY%}zveqK?&_teE(VmxNmlexuL2fWNMS*u*xju`HXHzqsppY_^rnMm8ef2WQ3 zacvNr!=fyVrorlEU#Ul3PMo?jeELY%AAda>vd`lss3y`FA+_2xI#>2REm(&w)QZBC zq%C+#Qq?Koe6ZUuoP<2Ckw_VdJrk?EUArA$d%4mPIejF>h&v-9xegwbx)*u*VN9zd z%-}t}R+!zd*QHu2l4}fFPY8nFPqi~xlH!wl4mfj5Ud|!8vS1ce040EVX9O5wC=MZnJ|LeFyY`Q^6swSefQYiQ z3}Yij|>tJg!XFRRqE3h&Qubk~L)b+2S16Pw$|kXY8AHVlSA zAp;?-cVawK4F~C;LqK4CV>g1K1J+F;^r&_2eXh(xKRGm9C{VvHi#8$pqa8QziyA+2?# zy3&b(7+OMw=6jt>D)9i-R+iacTYmWrA)JquxkwY%0Cs2>3IpQ&Tcnm>Z1*-4rt#&| zXNb{Ym|synQ`3$KD`v-SQoqrfbc#JIPy*UP2S$PxK|Vvkpsp3bI?m#3(W_r&s^O8L zuot+jFVL~v)!D(Ix|+h>hrnEB45kk-{_%jp*K`ildo>Xd0t13D(~qK}FvOEBmK0S} z?R9<>>rO2O0%2Xi8{>>aFT8CY4nopKeAp=pLB5SL07D9fE()Q~k~J%9tsV#G8z@G{ z8n9A=76IGLoFpNa@7bXZF$g8rlzfXT91cPX#?JwIja%eBQmNN8X@d%rG1p;hg^BaL z$`uU5#}>kCgR03M!WyKLJ^+KN`8u8t{!~ku1BVKNlNmr-p367S@QvEEFLM%jHvIR{ zENer6bUc!*5|Z6`ib4o}hM)?C*}q--DKmG3{R(l5%e2rr{fcE}VC){n!Hh|U!cEfd z;fVJ?`N)Vu7*n}2>1abrytg2d2FA)6^`ZoPQo&(w55bK_2^fh(;4}Q8y-R*71 zV|;E!AfeCG{%62^|IY&kASC-WcIWi?bO)^arfSehdW+ z`R5Iw62H?U{T>?`N}Ju7(HRW8Pu=itQgG(u=x*ldZRhCemYNI;k%cM0-@P#i;3NKF zkU@@*iN>OqJQjWV8ofk2-bNO&h@Ya$*pb%pO!79Sd)zn{jX5Br6taFFtNw=o5%fW#u`1vQin8U5J|k)UE(Jlx_Lt04aksBl)XmG@BlrH} zltRQPb_P~z#xXXY$?1j<3!aB<-Hwul_00=!x9{}K_O!gmTaEXdQnp7mU?MQ>6I|U+ zw|?+y-cvpO@uS5jcaOJGkGBB+JO!C^+4dCtQ# zPWURb5G9_0skWwhrh#R2fx{vRjD*GsjqHxDTPajs-q6M0!d7>BSAPJnU^=avM#;U$ ztW_Y>MWUzS?)Pe0q`DoPIzK!GbCC#!D>ZvX<*eRB-V8>AiTvTvI#Y$oi?kM)I%0i4 za{a#7WJ{j}E29i6-vZXqUQ9Z?6IrXF3x~n~MCn{59^IqJOlI&{FS>b|xe)hw8)N(Y zS^uNt9HrYgsr&ubR1oIV6BK9VW_~f(S4tOU;>QY{X@73hmR!d$ZdjsqM7K{k=nY-sho4L|O$6>o3aR+;>F=gD4(JI&Qs11+`>p zKnLMLDz$2qz-v&$Pe^=zAFTM$`X>i<9cg5fOUYtqV{KxhV@t0{fojAs`4WPt5*m96 zeM{W-EBno#UHn0}a&eil1g~4#XC>dt^4_sBwKR|qieuTVzvuGS!lRxd*ZegX1cN4D zSe_8Q((z1Dy**erwFki&_mFMe>`ixX1jjH=2KF;c6Lu-eG)ek;$EzENa!$PCLoA0F zyUQ?TxcMUpct)rt6b24urcyxH-xUN#>(V2)2p;r^;d2`Dy+1&m2LP z<|lWnpi*w12j}@0P-do4(?~Lx!4XXH3UL(;lPyOz4Au*(>k#G{ym7_Y|6sgy3`Vi` z6Ja)nSei4-k!Ff;G`T!qfE4qQ?wt}^g_|FT%c9JjgF>+(&LhyU$Z#CcD_kq4QioXr zMHK#p@h=hQ!lE31L;zX+zeU6hi#5si=>IK%H6L~!fxer_e4~i%9A)M*g!T_DcP2kV ze^qJF-X;gU zXGU8G_dD;4zX=;{3zA-~TpB&o)`myZ_KyYL25-$8U-_lN2$F$7im>P=PgCV6#+n+IOHXHX*6!pJ7iFk^5;)CMR)R8UjU0X~^ zpe17qTL#}rI1Qq#uMgizUKMoX5liRXsizrDspv=I+2(hLz{?kPhv4CKn2k{8cV}M( z-38upfpIA6iz` z-#XqWHXGT<{vRaV3bnHRMjl@jQZI!R1UNP{r_RbsL^4_$RX58 zSYy(iwGV~o^+4v4P4Z(Bbw45ruL zICmNVTvEqsiI#l1cmfWf*46-{H_u(%TA3hQCDZ<46canVGk4_=e70E|$rvK_HyoEx z$@TI03&4*sD}BDh@p-?Ei`GLi3MDC4n3DA~S~a9AbWduh-}@km%2ODwIPcRLNM^@! zFzhJiQjPABO$4IOfs={W#RMV3LlJYz0TK)y1(?Z=7ickS@gl_mQbmxOZ#ZsEW_T$} z&FSYQK}ZFmx1H6T>puL9%grnZC^kGKONp98_jd?p-z>s8QEa5{?#i+Bi_*oCGM=($#zA z>br{S^!}RQ4WY%#fjq0M#YjO69TFMP;hfnpjF>jVXp=f3^j%CV;fT1yc;TGd{>yPn z+&a}tw9tVS`h2G-HaK(voS3Sej4K>M|KX}+F;-CB1l|B;j3^yL>{M$a1xc#q90Mi} z6oaZww-TQ6xgk*9U9TDypY4yLW{@i4BKua&BIR*7l^)kQ(iN88zJ}5#jk1wUtWZ#6 zMCf2`G#eheVculSeUcU7YSIb-_3cC(Zp#nT2~L>{k?K7$OV4k31!Vf_bCb1EoW`P1 zz~C`hhL0voGgvmNGAzcGX-Is-c%d?e^2?LR?ojgP2n@>BG%ZH7Y;j1hxwKetG_=#30kGSzT>Wq8>18BJ*D1 zeZEXw_Yn7aH4m+EDoPYY`gxd%u;7=SWV4yuHunxrTQ6LjnJ>vDrG<{s%;Jp;%SiAi z*=ttC;AK^1qZUO3W?=E6l-|k@@%@D)BFQZ!24=u*Z|LZ%c-MzH}@c+%(=2P8<( z)ai&~N(bZ>DkJBSrk<5jN(l(6tlqftgmoSS(X!6Oe9KY!s(J{RF3KsrstA+G)=CZ3 z;+U`uaLVFZQTdTCRnq=+<~O1en3%^n<%J2VtkD(+8MB`TZ1W@k%wKfstD+Ms;*nl7 z`H|~WQsu_G-%gSer)BLQ$!J6|Q>G^r#VLc(RFx)jG1MsPX{0dC7z63fXUz~R(+7}o z)l}0>@*^dbM?7&tn|OahGzHKBX9BlM&77D|3YfHw4MB9~%tf?3*ncv$zDqUcKxIf> z)oJOJVii^z6&0zGf1(z{{u7l1DU_0Ush%nwQT1OI=+*-*NPx%sW5G;UWYROq!&=mC zxfg1(mxj_v_EJ|Q9hBL&nrZ{}&)ULH@%b;9lz;I(fc%5J)fIW?f}lDtRmp=NQWX9c z3T+d(E{w@3n8>GA{Y@;bED|H*R2Z`8r* z$-w?enJ0bL+*W@i(~wJ1JSL7p0h3qIqTpAg*#aNCSgf%LFOwv3b|w~e^Q+xdy~g_r zWjUSSfpWKMv!@8!(6r;6sw9+Bu{2{T017g|vp-9Xp?zNEp;teGoVS6ll z3MKXajKU}*tT{ZX%}s;ioAwZF6b$ZBo7(q%TK}@IH`B-;x6Ys%gtFsq>WEV^VAtrE zc_|pW^B|xk_{2i8%5?OnY_Az-1e4RQDApuP$<#|R)I<3k-pQ4!)UlA+snOmgyk4$b>f1>O{*bQu#obRUUmHmWJb6Yn^ApN=E}UT3Q01Q#tr zwp=58p`2j{`8`eAlzy&TcU#*CywJ+}89{jPOiW!Hoif`4EktR2%OKv7WKTDA+i{El z4JjTBw(Q5Q(;x}LuV;TqwAfFc1JaZP_H0bddpGxA!R#8I|B9I~u~jgAhy)9b2Jl=M z2QD-yX&*MhOybAs>E=3B@s$234TS?LrBDSb1t#U#F6rg4IF}FN%1@_U67?FKVJNplp_PD^kU`<@o>D3+O)=s1iBBg2yoMY88w z7#Wp-7K=W@%8xUA&iuzICQ*lW6Ci!5fZ#=!8?hpm*tJ}?BxFsJy)_ldDAmC|s)IW; zB%vJ*Xmj|YHGJ5xqPq-Ht!D%@B#P`iQ`$d;-1Vr*@_rl&=RKHarWAO|{I40hJYX|Z zM}w$bB$@DGvmg}N096fkrNM~7wYaj)H%Opa-^@-Czf6ilVa>ZbqQX1C`>*DfhB23`Uo1&_F9O{r~#R?=fhJ*C>i1CukTDY@)Db zr3@RE^{==f=`(T0CzJ%S1UwiO4y753S2SE(i@bNIyfXq+KBg^5BJj#yVfl!-Goo|B zo67WNVy+EG++c4-^qlP)X1bmu(nXL;MO#PI8D;VeRxMGP2MHPTJ+;za*nH}mZe*H{ z2u*Mee0zh2fp;a|24}QVkfv&OH|OD8 zRp-v-%M!T;P7~q|Gdn6maM!gJE(o$3E||{Rw{(CUEBv~rJdAq_Jxq+^m(LOS zD+u&9j0R~d{*9Eds$5_ndDkLbs9CP|IB34#NAR_hKEwribXW)Co_=kx*@%(Oz zXr?vvc$k--7f8c}{PRfP4Iw%*p+s1WEkY=zK%#zu?<1!-xzA|*;Z_e?7A{2cZpbHr z>IYIXNBkLn$Z?cOci6cL_;)R;AB%}^#TcnK7vfcpF3}($Di%pi+i>FdInUWhIyQuXtR$7=OHw8>87r&d2ypN-#XY zLf{DW?7yUt2mBg>`P(t!*Mh2BXzI+7=VXtQ5WWvJh`$}f5vlDqA<@?X7-!75KTEj2uf9ZTC8$P!MuXR8_K%!fXnaTDXzU}GngHb}!o8s&9XBN^ zcxc*l?<4nf?jxH|GXnwJ*L~I+6of1bPy-z*H>mGt zvBr_m>ihMeyj?#kB-j`K#f@>7W=N@ZSm|khg2hmyIyvky zV=C^!nw7=+qvUOJ4g|!t^X%pkS3O8rhb%a3+Int)s%s`8plm&05qL>)m3a!{APTfD zUYdrX1K6|8d1k(@MSLB*C1^7h_g~y(F7rI^=)JfN0tL8y$vFnXl>LDz`x{0NQ1+}m zMfm6cbh3}FP#}tEUA8;c_kw}YxBwSocVp(eFr==*hN z%6Kp42dzREZ9^8PRTQ!RMQ1%?YmG2=?T3$Nbq)@|B`oJy=~8}--It}`>biDu6AEjW z)fId?dg{y5JtaEF*uM_m31rzr|@KNTmM&>_3Wo*Bo?EVoQgnY4Z&F@&-XX8v2(%NS@g zda&$cU*4I7i&^MPO(=8($IPw^j zy)s)S-%5A5zL_xHoGj`)sl<<~8e~8MZWEV6nzhORG>0?Ba+^N)W;HIZtS$>GZTbVS z%lLKG#gfXgkM130+|Jr2aQT6BL)vR^55$Wq8t>mr<;ksFy z3HxW3Vn#AQTfKgN+7klkAN>|XreN}h@uA6lKky-eEAj1-qh`In~l59ql{wzZsZ4@vKpoVG*c2E~( z4A3^t)83!%c}~xn$M%Y_LSooK(!yC76!a6^EHqw#I?m4+7pcur_@)gKZof>CK7E2Z z%f4QeH4U7kB{t(Aj)oDAii^8-Gn_vwnITO|?+xbCQj^t8(NO;hNev9idzR*mrclU2 zS7qVR1^bydz!~gF48g&ij{2a1{ma@9M0Oie5#Ek$E;U|S1S_K+USfMCUMp}HMZh7+ z>g3Y`l&~v3^*l{F#3h6nL#SDhGumj=ZSCacbNWR`hS z)S;o)QvyiLdmLizwAIptLmnMEe^)&!W+@K&`tH*%epHM&Ey9}+q{|Np{l|(UiU)G; z-3kHAIA=Cw;2i%UMK%c=BcZ6Q+#pAuUtSFplkZsIgclHw&rpjRPJ_aR7XZ8o13cW% z!FZLT@+c8Bh1|V%CC|YGbAnxqPY|I&$K=!F1#o`>@2mExqvAt~*?pbU<_H{&$9j6c z-^1bzX@#W8bc&si@K_ z%~nia4R%&;pW`_yR@5e!#CzSmV@jDPH@IS3eJKZ~ixSAdbdk*qh6DMi*kDo`W7Kzg zd-c90KR+9Wo_aGX@zWC4q_jpdy2a(}=p_tp6AVFe(v+1-O47eLaj|H910XMpZIw6ak_b_l|v zENvA|U@8_91ml&78ZU~<-!DB05jjqjKesRwlM`B%7g@q3ZsR`^GAYa4S_&HvlM59w z#;x`~$1e(EU4!yM{`Fcm!#Gq0=Z)D9&TTXRHMFDQieFrV4Px2#D>k37(&LR~;4LX1 z0d>}HM>%YcYe5wTh)b|(VHZXSf1^R4u-e0QK762Z!5^m`uSisiS0OxHiYs&+?kQLk z1{7%tAgqHS-Ty_vbGPX*nG9CoUj(R*pm;HHC!9EPyurj3G?89b9(s3)|``p0n$PQeS zFDxdp6!%jWf03%ZNA}MS%%;PI{~J5tRz`Fryn04JCOS+gjrBfd7I z^e)Vh{8b@oVqWhjh;AP4_<6 zkN4I~oh4(mHjU54ZTi0%(_ah>kRhIl*=QZEC25?BUrQbAxz zYI@2LZ=DAsnW8`sCC*xCx{N?!Roo`PXqxKn7cfK>O9?<=X|*l@cl?_a8^hh5UsBHN$Ny+bQzRr|&<73zasvBb z&9_|4TwSf~E&keP)uO)T{GA7*cc;v-ea{@W)k*Gv_Kc!_Tb{}m_>cgQ#;+iD58R0e z1qwUl8<7*K=IK|Ln0L?L`g&c4#}t^e5#93iQ#Axa1xbEjy%WPkbI9O7{ zBUxw-1^N7OzjnS~9SCw7GFoSVdZADq9r?7ksFx%~(6;qQbi~6!1lm;aHvFpKMh85& z)QpxKMrvv+N?aMCL5i?lZjL|KuaI5oM)NYZa5&rLNYky_Xn+2B!1%!Hq?1&_V1qQs zg-VTwb4(Jlu58xL{cg}h+WrV||AEWaGQ(2=9>!kPuAvu*2CkT5uLm@s= z(D5~>Xmt%6r;EP9DdgB_F8gH~k)JvN%PT*G>cue|l6kQ!CO#7b;aGIq+#@FXg^H5+ za*3(xpiC%8yj{0EXqY;g!L7LILYFr8S|2g%vz)NyL<`3aR49;g1Tl z8g19Q2!d#tq0()U%?isK63)`XTM;T!DR?SE@MDQ_K*O!lE zA}e%WjK9uTnU70ncjr3eDOfh+D?VCj;**U#()?Qj#Dbo)O`9w7(6kQ~2G3Gryc16*5LC1x3m2$(oit0aHt? zQB7CRu%fUs38E1ZG)U=RaBU*jJnQ|+^ZHJB5L^B)eU_^`p#R)nd8&P+0s?G7)e8Li z(-`)z7F1u%j8*>Yf{&RSupVMT0Gadd9Xw1_IWUc8{hY{#L)eup(u(XzK*`zy+zd7I z@{?VQ3#aRWiu8=MV%raIhG|#2;Lm=0HYoM|{L3X%;vZpKCZjYk{4gUr)AY9WVn8!yoKBu-17RuQI6grWW>sw*gzShzZ zEyUcm(eT8|46;u)f#R=tUW-VgGR{oS$F*)2GM+-8D1j+;kDWTq!kGDG+`SW%lJG>xzDw0yGc?*Hu&s zoRs%t_SyL3;f+wc?F&OAl^7je`;UG+M}|Rg)?%MSe&Uy&sZbNzm}eBpK=hpq)T7N- zX6;3Dns)Wnj+`ngcpvX-w@p_)%xKu5N-E>Q7#z5Xdag9*LpBB>s#`M>&1g=-x$yIh zD3JC>7ktm~C>T+^cnvZsoISptofHbT*uW~*nB_@3uka1kaU%wC;bb-)bEV@kmLnVd z(<>ZSJgEY)avO8@=SXFG7k-GdaPiiWz~d}bY&2xD{f*Iadjn1NZ{ISxc+E@SeMh0l zWJ*+{S+OI9ixeCWH}Vfnx-QlSaAd_FytwErNzFMjYbdfUl~7D7gKlNA45ibm7)~Q& zqch7v*Qy7;(ap8(xkFw}S2$<{E|oRt1%&XP1?kw2mLjO+u@zRgnOgUtBiz4r$3N=_ z@Ogj=+>4qYs@;Hen^Pw$B|oJKNh>974Xhy)PSMHuzA&=6YI8wDRDl!|r58U&tFV zMIMUZPB3ya8AKGG16ehTf&G9$`P9bR#ZyRSr6zJw5)-~KowuRjtWgWqIwda#gjjN%jzyws8xSg)zI;9AoX4_Rb{NY ze%}ESjCrQv$I;h_Z*H$?y;K)vUh=gPm0xfFM1D$$vQzwW?P{eI5v@%$u31dSmPU!>jG`Cu%BkPq zXsdn*?y_~LzD5}Sa^Wr0p0E|^)BuNeJ(5Pr`FKSBJ0_@d7;H}%srK2r{?;Qn zR9)JXcE&K$J~8masSZ>#B8-&eNgVK!h8FiPC6 zz(8Eyi4ur=cdZ!+T3|O?hH{dm=rfTuc)U}dRenvEb<5(cg%#UPyb*e_2!{=VK{%6A ze^=*yZIWS?lqOHW5MwBmn|mA*%3%^gkA!&hU1;}}Kv>H-cBS|0^T9^i>_C+yv;L=-qveCKI-)mSh(6diC$#tD-^}m6FSNfd zp1(Nc`m}(IC-v|6y7BdnE}U<1uX(Uy#YC*pU^% z#U{i-D7v^J7m&SzM{|DI8f7T~B*6sw^TC}ONTEGwrcblhl45hQCYeNKnod`~&J`3p z4#_vyiJEqPR&IwS%fzXLc zeLuW2EGNrczI++yqSFuzMw`xmVWtmo*{vzI)Ry*$vy2H$ZE` z>W<)BKi^hpvyo9_+3$_d!ktxav@SPc^GjTN!#fge0khuUJr($WSXq>pF;>e|{V?@f zjlA}|@7kJoo7HjMz&HBrK9Zcjq3htUn>l(mwO%xDDR3CYTo^##XZ<}nS~G%x9R~?a zVuV_=y^9H5;o_z#~1+r(IqcxnfiBLP|M8>qz>U~SxTZ_tBD$?eDHW$`((|jKcbSU47 zT;axY-46l=OWB>mb&sK}~GfX|)|#n76)!9Q&DI|J%)_unfG$ zRy)<^DZ3VZ0V+C5etavOM>nOF=@zlHlIwhuvZ_VRYFT?pJLRWZ)aeAuo+ZcURu&0Q zW4abM4imaAS2C0hw;XU53iMX+61Q_DKECuRa4om@e$#-8SvEE1n`5w4-yaU;E_G(2pOp)Mq8_9Y1=yL=MOS##nIEkrsq^LR2$x( zJGRw1!DRH|Euo}K2+v=;rBqBxeNpuRJ;PH{obk_Q>3pDw#4@nl^DqFZ{S#w>c+rU5 z;UGJ883E)9_GL+!I4>>dXbU8(;T;ij{~S?Kvf@Icr^SlPBhwS9#IX6&?87#LdOk z!A{f8mf6bH%Ske|Nd6NwY0eBl_2$|%&R1#q>}FW;dOyAz9zKeogB zc0Im0jvd>{zk?BT@B!MyrCl81yssnx#6Rzkh3`>9E0;-HT-7c@ z6*pgATAAX1>iFQqb#AfdXP-jS>eNgx!Ez2-{Bm9NX~4R})bch$OoR-#gQd)&W`Yrg zK`osmbt;%wlgT94t?}B}VlJ!mec`!}w2NAWK!W_<$hH`V2zI-{DYH9>u+zqWoSCk< z3(bTl>@mH8BXZyvcTH**1#@58;0#D>^$k zy8Jb&Iq?nlK`a>JUwQ}c_9s~LAuKV%r9fzHmSyw^J^U$c$v4DeD&M{3`8Z9+zSO#2 zFY^-!9R=GPR?pE<&r?yrs8;b8gl2d5adME4^VRYRT0!!51W}HW@wmG0IE~dTLNOsx z+z}mR%-o)Cc3Vuhl1tfhdqEuy>Elo22+j1n?nGhHZ84!Gn>gW6RqJ)j`i{er|G)z7 zDs_HU<95n4Q~G@2vM|TCetjyNuFhe%ucwu#pwzpqq2*Z)|h#m|LB*Z^xX5y0&3KWh$qH#=i9XJA$4ua4-N zTlV`rI6XUM!U+<(EfGl^5FE{g!s>c4667uSAXGT@=Xv9-ESuM|S0*#`)j2}tk?eA4 z?o%=7emlJHK7d!qU#~YoiQ7mK7%p7bK{{nSq728f(<=w>KhsXBE`KV+uA`xSn``$I zw))t6kDL9Cy0HL>MpsuxqsjN3`gZNRR7SKde++l{;6v)Z=1p?lq1|-Fj0Qacx%ceI zf;-`^sYb*utBlGBdx$NxN>zT*D;pQw!QFyew&IqFx>I*uICXf%ZX`ThNhhXF2uj_? zp@b8a;yxsmCJ~2*;{4_4ih8}$fRoB{0V}y$zon#f#`J~r{pY9xv2fYQX;O9~2U=q` z`dO^-@<3i$ZXVwAm1KEHZc6E^PzA0o1^=CI4;lX6oCL7Uw0;>uG!yi777*VcV=W`$ zoTOnLRvGAdzy5lfDdxrevIW=>g505!CHd@o#wTEa~C?qA=BPWJ=30B8#~p!q!@N$)2v=8av0B z@C*Js>7BEbVnz`*6;0N+MGAQ-+-$G@427@Uaq&4whMdV!6;yPl83=a_%b&@$<(ZVC zX(=!V;9rzR1Oqm#-|K)oa4jkC&knQ3;go+fjIv4A7*$*Z(~pRp^6>2lnj4o=&WVX@ zZrPFOT)aDYie%*8Zmi#}dla59k3dm1Sj3Fv{s!>4>VAkuUHxt`zHt0$+(p%J5;GD@ z6o8M=BQ0r6J$olynbNnbnpWE@?XmhW2y4?bw|CuhBd0GG({uBA2YNtHLvQpj#9N#h z%035^?|Tn=??40!hdUTTzv;QWc60tnDhkCc-P`>SzxNNMX5t9raGs4(Cc3D&2b8NRy~J?`Hy zy--vJJ;yapP{&Ff7pKCRKA(1QyKY<5EM8%1k>qMaWAt)(lls3-|6ap1@X+wtA^ggB zQW@+1(F-pxfq;*{hXf6(sIU9eL+{qL%g|7u0G$y!mt(>YpGv= z{jwJ7>3Zx5^?0@adb(Z&k%48X8*i;2!Nta~02j*IP?UX|H)NgqqhR|3{+}~e;rNP0 z4F01dQ$y~*ZbxxtuN%H8KR7PJGQvo>%FCdR$0zMxN7^<$>PKxt^e9Gd& zlF%sd7&xP3*0-Dj7zW_Cn_I=Oiopp6-!8Y--+Hs}w_IjqD;LlBHqt!xG}AhTeQTu2aT?6Pz|${Tmdpgk z;}^&<(r4SlU!#gxQ6lQNp?`c`_-VE({x&@n634TS zidTR%4D%dG)K;6_-Z-z)3KT%^7-QbBF@9Px)H6%rOS`g#VRRhj_`Q{g=?!&|kaq|B z1jk8?B=ET*<_Z28$Do)2D~~=cv(oOCr$*4G1TPF-qjQpQyeXj$UGy6rr$wy_Ofui{ zug&fH%kZQAM`-XAOlvt~6p9jw5vJePlS>_@snN_zIkKtVZ_hgEN|Jr2!nrzTIIz6wnB~cGIJNoiK#-URnp+WUksMQVombtK8c58OT&o&%#!eY zD99FvQPdJYjhlWUrJYyn=1%gBF5FPHQU@XRaXle>*z0N^uJ3n$(n)P5VJDLXX|94Z zwD2I(aLQuR#m?%}`?y#%(SqB@-osZrMYpE+JBwewz0i3*uM@$6LIZijRoIa%|7+VD zCIu?rt5fCI)NFntwd>=wgRST7uCz`n319nycinlviVXFZty8CKEv$_?lx3Io@8+H4 zdpY;A{(YRK$A3#TPk4Lt?}pna-#)Tq7v4Vm^)tIC-+;CEd)2+GrQi2Amao4ey?$C1 z+v}|ijLk<4ZW$a5$dSmNk+Q<$h;fQ!5pQan<_k&N5BDZr_g;6D|MUmR_pcsguiOQ^ z_-bL~N{1jTnU<^9-~7LkW7PIU=(p+aZ4K|9?r=)KEc&|Zz>?Xkw68pUbxO1U`SRIK z`dU)%p_ddA`dRUF@!iduh%Tb5Ef6 z-(AVxxO+_>{h8kIx%_t6w)Mwe25#|7!SX>31~(5}zFBcT*^U2$kQzIG!KuiGt#t~9 z)u}meH{Hk=y~$^`E@9q_2ao22F1aY2u=KxNUiJlr?b6Mi@7R*Lx;2Y>1S6CWOU`^D zC(*t0(<+63iK!8NAFOImO}Jtr@()1i8ubqrT+M- z6St=wel~@3+S|LzbK1}Oo>?z^yM0MoTCdDh+ssc>=ImZ}Zcp{KH%*7C*Bsq8>5@@( zWvTDmN2))n?#dmEe*by>lqVj+#iw6gYnQ8ga&hZxx$2t7%a+fpdv^2ry!wU3r>{+q zt4qDTdi~y?*KS+itK6Rbd|kiYz0W7_)&92s`{wlF_^&dSRcpRi+<%#WuIBgM?|;+l zE$SaWTE9Q`*WZ5o|BFfu5AaU0%ZRpveo zc~aud4VBg3Cvg5eSFHT%i1W&s!s*|9t^B=%wRUekbnAa`Ds!vqD=WU2GIY~Wwk#3q%opb;za-?-!3A^QMtMkWzv(C|11L+LE@h_yjWCr$;nP)`BJ+(6w9 z7-#^BF)&0s0|$ds^Gf1FDhpDJV?nJmbOS2Yyd8c3mEHr6BXh%a1L+3FV?ZMyZG3Rk z9$jNc8+ULfP{~E0MnM#f&w(QFx+gim2s{#vuKmmH+v2Z*+H+VK7z9wX*8@f1+7k;3 zu(_H&`S_`wKy~*N&@G<<3<&Vd0nmujT%g~vY0qnr7BT`_ei~?m42tCqz%T%7hxi=X z5UiolyIRb;Tc3d;E|islAH}3MJW!L0ODc0x!PAxKVSs+1Busw;;}RPb&1lCn=B^!_)(h=UDSd*kQ^pm%f;2Fz?kHUL|<7u_uMz9Yh{NlnORq4p%vO+oK!Axv4> q3=I{Oju*Oq^!6Y^ze_t(7DH_v26(dqa}X$32{I%CvxiwPhz9`qZ>|{t literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Backend.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Backend.docx new file mode 100644 index 0000000000000000000000000000000000000000..f405ac3e08dc334d0a85ff88e7be073f53d302a0 GIT binary patch literal 38935 zcmagEV|Zj+*Df5}wr$($Bputf(XrKW$F^;EY^!729owgR?}zVu&iDOUb=6#J+!$lk zR857ipkQb~KtNDHF6o>aRZ2y1Nx(orV-P?qGgsaXfghDXHWu`s) z5UkbncX>BcXp4%S>*{8z7m$FKco%HsGhCQ)9*D;gOD#$6;m;33)V5}NV^4DcGws#( z^XQ|5T#Dps1tw`c1O1?^icv!$914L_;vWMKt0|b}%ajI2coKeV_1i zBY76}7telQW}r~Zvd)0{8NihqZg8b4@!g;?e!#iTb&|Hh$z0X3eyz6%!F>qU9_iP< zZ4ZOnxH{`8M15J*owC*@idD$|xxIBTMeW=%Xtw&N9dGX0ni{P|hnD6K6(7sfAW0n0 zM^S{#vz|a|$_8THM2K{jj+iR%;K%;QN9v*&GJ)siFulk5Ia%8YRsRvh@9e6AbxQ5R zG0CH>+?=0|r=lc2_qoB^E8JpoJ{@BE{8Rx#171(p2(O2R;Hy|qZ~@hil5d^G2QF)Y z`NlGI$<*5KN%)1x-EoGmUN5jE71&||y>Ck;8wY}8k0kl8XtH`h3jb9_4~nlsPk`!e zf&c-*0zUPfOl_PQ8U9?W;wPm+nUVZ21;j_lOYE9e#R^yS#ExYP1$t5^E{g4ZC5u

    GAGORc7uWgn=~ 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 FutureArrow[A, B] - - /** - * A Policy defines some behavior to apply to a FutureArrow that wraps an endpoint. - */ - trait Policy { - - /** - * Using an endpoint name and Context, returns a Builder that does the actual - * application of the policy to the FutureArrow. - */ - def apply[A, B](name: String, ctx: Context): Builder[A, B] - - /** - * Sequentially combines policies, first applying this policy and then applying - * the next policy. Order matters! For example, to retry on timeouts, the FailureRetryPolicy - * needs to be applied after the TimeoutPolicy: - * - * TimeoutPolicy(100.milliseconds) >>> FailureRetryPolicy(retryPolicy) - */ - def andThen(next: Policy): Policy = { - val first = this - new Policy { - def apply[A, B](name: String, ctx: Context): Builder[A, B] = - first(name, ctx).andThen(next(name, ctx)) - - override def toString = s"$first >>> $next" - } - } - - /** - * An alias for `andThen`. - */ - def >>>(next: Policy): Policy = andThen(next) - } - - /** - * Applies a timeout to the underlying FutureArrow. - */ - case class TimeoutPolicy(timeout: Duration) extends Policy { - def apply[A, B](name: String, ctx: Context): Builder[A, B] = { - val stats = ctx.stats.scope(name) - val ex = new TimeoutException(name + ": " + timeout) - (_: FutureArrow[A, B]).raiseWithin(ctx.timer, timeout, ex) - } - } - - /** - * Attaches a RetryHandler with the given RetryPolicy to retry failures. - */ - case class FailureRetryPolicy( - retryPolicy: RetryPolicy[Try[Nothing]], - retryBudget: RetryBudget = RetryBudget()) - extends Policy { - def apply[A, B](name: String, ctx: Context): Builder[A, B] = { - val stats = ctx.stats.scope(name) - (_: FutureArrow[A, B]) - .retry(RetryHandler.failuresOnly(retryPolicy, ctx.timer, stats, retryBudget)) - } - } - - /** - * This policy applies standardized endpoint metrics. This should be used with every endpoint. - */ - case object TrackPolicy extends Policy { - def apply[A, B](name: String, ctx: Context): Builder[A, B] = { - val stats = ctx.stats.scope(name) - (_: FutureArrow[A, B]) - .onFailure(countOverCapacityExceptions(stats)) - .trackOutcome(ctx.stats, (_: A) => name) - .trackLatency(ctx.stats, (_: A) => name) - } - } - - /** - * The default "policy" for timeouts, retries, exception counting, latency tracking, etc. to - * apply to each backend operation. This returns a Builder type (an endofunction on FutureArrow), - * which can be composed with other Builders via simple function composition. - */ - def defaultPolicy[A, B]( - name: String, - requestTimeout: Duration, - retryPolicy: RetryPolicy[Try[B]], - ctx: Context, - retryBudget: RetryBudget = RetryBudget(), - totalTimeout: Duration = Duration.Top, - exceptionCategorizer: Throwable => Option[String] = _ => None - ): Builder[A, B] = { - val scopedStats = ctx.stats.scope(name) - val requestTimeoutException = new TimeoutException( - s"$name: hit request timeout of $requestTimeout" - ) - val totalTimeoutException = new TimeoutException(s"$name: hit total timeout of $totalTimeout") - base => - base - .raiseWithin( - ctx.timer, - // We defer to a per-request deadline. When the deadline is missing or wasn't toggled, - // 'requestTimeout' is used instead. This mimics the behavior happening within a standard - // Finagle client stack and its 'TimeoutFilter'. - Deadline.currentToggled.fold(requestTimeout)(_.remaining), - requestTimeoutException - ) - .retry(RetryHandler(retryPolicy, ctx.timer, scopedStats, retryBudget)) - .raiseWithin(ctx.timer, totalTimeout, totalTimeoutException) - .onFailure(countOverCapacityExceptions(scopedStats)) - .trackOutcome(ctx.stats, (_: A) => name, exceptionCategorizer) - .trackLatency(ctx.stats, (_: A) => name) - } - - /** - * An onFailure FutureArrow callback that counts OverCapacity exceptions to a special counter. - * These will also be counted as failures and by exception class name, but having a special - * counter for this is easier to use in success rate computations where you want to factor out - * backpressure responses. - */ - def countOverCapacityExceptions[A](scopedStats: StatsReceiver): (A, Throwable) => Unit = { - val overCapacityCounter = scopedStats.counter("over_capacity") - - { - case (_, ex: OverCapacity) => overCapacityCounter.incr() - case _ => () - } - } - - /** - * Provides a simple mechanism for applying a Policy to an endpoint FutureArrow from - * an underlying service interface. - */ - class PolicyAdvocate[S](backendName: String, ctx: Backend.Context, svc: S) { - - /** - * Tacks on the TrackPolicy to the given base policy, and then applies the policy to - * a FutureArrow. This is more of a convenience method that every Backend can use to - * build the fully configured FutureArrow. - */ - def apply[A, B]( - endpointName: String, - policy: Policy, - endpoint: S => FutureArrow[A, B] - ): FutureArrow[A, B] = { - log.info(s"appling policy to $backendName.$endpointName: $policy") - policy.andThen(TrackPolicy)(endpointName, ctx)(endpoint(svc)) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.docx new file mode 100644 index 0000000000000000000000000000000000000000..da77aa9dd7952a912edb5d4f58882c1481cf72d8 GIT binary patch literal 37266 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.scala deleted file mode 100644 index f77ad3d77..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/ConfigBus.scala +++ /dev/null @@ -1,50 +0,0 @@ -package com.twitter.tweetypie.backends - -import com.twitter.configbus.client.ConfigbusClientException -import com.twitter.configbus.client.file.PollingConfigSourceBuilder -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.logging.Logger -import com.twitter.util.Activity -import com.twitter.util.Activity._ -import com.twitter.conversions.DurationOps._ -import com.twitter.io.Buf - -trait ConfigBus { - def file(path: String): Activity[String] -} - -object ConfigBus { - private[this] val basePath = "appservices/tweetypie" - private[this] val log = Logger(getClass) - - def apply(stats: StatsReceiver, instanceId: Int, instanceCount: Int): ConfigBus = { - - val client = PollingConfigSourceBuilder() - .statsReceiver(stats) - .pollPeriod(30.seconds) - .instanceId(instanceId) - .numberOfInstances(instanceCount) - .build() - - val validBuffer = stats.counter("valid_buffer") - - def subscribe(path: String) = - client.subscribe(s"$basePath/$path").map(_.configs).map { - case Buf.Utf8(string) => - validBuffer.incr() - string - } - - new ConfigBus { - def file(path: String): Activity[String] = { - val changes = subscribe(path).run.changes.dedupWith { - case (Failed(e1: ConfigbusClientException), Failed(e2: ConfigbusClientException)) => - e1.getMessage == e2.getMessage - case other => - false - } - Activity(changes) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/CreativesContainerService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/CreativesContainerService.docx new file mode 100644 index 0000000000000000000000000000000000000000..f76cfec67141c2d1ec77ec4329ddb3821bc25773 GIT binary patch literal 37511 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 ccs} -import com.twitter.finagle.Backoff -import com.twitter.finagle.service.RetryPolicy -import com.twitter.finatra.thrift.thriftscala.ServerError -import com.twitter.finatra.thrift.thriftscala.ServerErrorCause -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.Duration -import com.twitter.tweetypie.Future -import com.twitter.tweetypie.Try -import com.twitter.tweetypie.util.RetryPolicyBuilder -import com.twitter.tweetypie.{thriftscala => tp} -import com.twitter.util.Throw - -object CreativesContainerService { - import Backend._ - - type MaterializeAsTweet = FutureArrow[ccs.MaterializeAsTweetRequests, Seq[tp.GetTweetResult]] - type MaterializeAsTweetFields = - FutureArrow[ccs.MaterializeAsTweetFieldsRequests, Seq[tp.GetTweetFieldsResult]] - - def fromClient( - client: ccs.CreativesContainerService.MethodPerEndpoint - ): CreativesContainerService = - new CreativesContainerService { - val materializeAsTweet: MaterializeAsTweet = FutureArrow(client.materializeAsTweets) - val materializeAsTweetFields: MaterializeAsTweetFields = FutureArrow( - client.materializeAsTweetFields) - - def ping(): Future[Unit] = client.materializeAsTweets(ccs.MaterializeAsTweetRequests()).unit - } - - case class Config( - requestTimeout: Duration, - timeoutBackoffs: Stream[Duration], - serverErrorBackoffs: Stream[Duration]) { - def apply(svc: CreativesContainerService, ctx: Backend.Context): CreativesContainerService = - new CreativesContainerService { - override val materializeAsTweet: MaterializeAsTweet = - policy("materializeAsTweets", ctx)(svc.materializeAsTweet) - - override val materializeAsTweetFields: MaterializeAsTweetFields = - policy("materializeAsTweetFields", ctx)(svc.materializeAsTweetFields) - - override def ping(): Future[Unit] = svc.ping() - } - - private[this] def policy[A, B](name: String, ctx: Context): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicy.combine[Try[B]]( - RetryPolicyBuilder.timeouts[B](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(serverErrorBackoffs)) { - case Throw(ex: ServerError) if ex.errorCause != ServerErrorCause.NotImplemented => true - } - ) - - implicit val warmup: Warmup[CreativesContainerService] = - Warmup[CreativesContainerService]("creativesContainerService")(_.ping()) - } -} - -trait CreativesContainerService { - import CreativesContainerService._ - - val materializeAsTweet: MaterializeAsTweet - val materializeAsTweetFields: MaterializeAsTweetFields - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Escherbird.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Escherbird.docx new file mode 100644 index 0000000000000000000000000000000000000000..bb2e4c59e2d0d8ba848858aca6fe05fda1c37545 GIT binary patch literal 37175 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 escherbird} -import com.twitter.finagle.service.RetryPolicy -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object Escherbird { - import Backend._ - - type Annotate = FutureArrow[Tweet, Seq[TweetEntityAnnotation]] - - def fromClient(client: escherbird.TweetEntityAnnotationService.MethodPerEndpoint): Escherbird = - new Escherbird { - val annotate = FutureArrow(client.annotate) - } - - case class Config(requestTimeout: Duration, timeoutBackoffs: Stream[Duration]) { - - def apply(svc: Escherbird, ctx: Backend.Context): Escherbird = - new Escherbird { - val annotate: FutureArrow[Tweet, Seq[TweetEntityAnnotation]] = - policy("annotate", requestTimeout, ctx)(svc.annotate) - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - ctx: Context - ): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs) - } -} - -trait Escherbird { - import Escherbird._ - val annotate: Annotate -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.docx new file mode 100644 index 0000000000000000000000000000000000000000..d68076bd83a43fb00f70428acbbd2125ee7dc288 GIT binary patch literal 37629 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.scala deleted file mode 100644 index 10cdc28e1..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Expandodo.scala +++ /dev/null @@ -1,83 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.expandodo.thriftscala.AttachmentEligibilityRequest -import com.twitter.expandodo.thriftscala.AttachmentEligibilityResponses -import com.twitter.expandodo.thriftscala.Card2Request -import com.twitter.expandodo.thriftscala.Card2RequestOptions -import com.twitter.expandodo.thriftscala.Card2Responses -import com.twitter.expandodo.thriftscala.CardsResponse -import com.twitter.expandodo.thriftscala.GetCardUsersRequests -import com.twitter.expandodo.thriftscala.GetCardUsersResponses -import com.twitter.expandodo.{thriftscala => expandodo} -import com.twitter.finagle.Backoff -import com.twitter.finagle.service.RetryPolicy -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object Expandodo { - import Backend._ - - type GetCards = FutureArrow[Set[String], collection.Map[String, expandodo.CardsResponse]] - type GetCards2 = FutureArrow[ - (Seq[expandodo.Card2Request], expandodo.Card2RequestOptions), - expandodo.Card2Responses - ] - type GetCardUsers = FutureArrow[expandodo.GetCardUsersRequests, expandodo.GetCardUsersResponses] - type CheckAttachmentEligibility = - FutureArrow[Seq[ - expandodo.AttachmentEligibilityRequest - ], expandodo.AttachmentEligibilityResponses] - - def fromClient(client: expandodo.CardsService.MethodPerEndpoint): Expandodo = - new Expandodo { - val getCards = FutureArrow(client.getCards _) - val getCards2 = FutureArrow((client.getCards2 _).tupled) - val getCardUsers = FutureArrow(client.getCardUsers _) - val checkAttachmentEligibility = FutureArrow(client.checkAttachmentEligibility _) - } - - case class Config( - requestTimeout: Duration, - timeoutBackoffs: Stream[Duration], - serverErrorBackoffs: Stream[Duration]) { - def apply(svc: Expandodo, ctx: Backend.Context): Expandodo = - new Expandodo { - val getCards: FutureArrow[Set[String], collection.Map[String, CardsResponse]] = - policy("getCards", ctx)(svc.getCards) - val getCards2: FutureArrow[(Seq[Card2Request], Card2RequestOptions), Card2Responses] = - policy("getCards2", ctx)(svc.getCards2) - val getCardUsers: FutureArrow[GetCardUsersRequests, GetCardUsersResponses] = - policy("getCardUsers", ctx)(svc.getCardUsers) - val checkAttachmentEligibility: FutureArrow[Seq[ - AttachmentEligibilityRequest - ], AttachmentEligibilityResponses] = - policy("checkAttachmentEligibility", ctx)(svc.checkAttachmentEligibility) - } - - private[this] def policy[A, B](name: String, ctx: Context): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicy.combine[Try[B]]( - RetryPolicyBuilder.timeouts[B](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(serverErrorBackoffs)) { - case Throw(ex: expandodo.InternalServerError) => true - } - ) - } - - implicit val warmup: Warmup[Expandodo] = - Warmup[Expandodo]("expandodo")( - _.getCards2((Seq.empty, expandodo.Card2RequestOptions("iPhone-13"))) - ) -} - -trait Expandodo { - import Expandodo._ - - val getCards: GetCards - val getCards2: GetCards2 - val getCardUsers: GetCardUsers - val checkAttachmentEligibility: CheckAttachmentEligibility -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.docx new file mode 100644 index 0000000000000000000000000000000000000000..a0a43306739f019fcfca9f381b374a6441d04ea6 GIT binary patch literal 37868 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 UC2$9=?J8X$7~CF&oVBa}1Ixt3-2eap literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.scala deleted file mode 100644 index e05d9950e..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GeoScrubEventStore.scala +++ /dev/null @@ -1,84 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.servo.util.FutureArrow -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.bijections.Bijections._ -import com.twitter.storage.client.manhattan.kv._ -import com.twitter.storage.client.manhattan.kv.impl._ -import com.twitter.util.Time - -/** - * Read and write the timestamp of the last delete_location_data request - * for a user. This is used as a safeguard to prevent leaking geo data - * with tweets that have not yet been scrubbed or were missed during the - * geo scrubbing process. - */ -object GeoScrubEventStore { - type GetGeoScrubTimestamp = UserId => Stitch[Option[Time]] - type SetGeoScrubTimestamp = FutureArrow[(UserId, Time), Unit] - - private[this] val KeyDesc = - KeyDescriptor( - Component(LongInjection), - Component(LongInjection, StringInjection) - ).withDataset("geo_scrub") - - private[this] val ValDesc = ValueDescriptor(LongInjection) - - // This modulus determines how user ids get assigned to PKeys, and - // thus to shards within the MH cluster. The origin of the specific - // value has been lost to time, but it's important that we don't - // change it, or else the existing data will be inaccessible. - private[this] val PKeyModulus: Long = 25000L - - private[this] def toKey(userId: Long) = - KeyDesc - .withPkey(userId % PKeyModulus) - .withLkey(userId, "_last_scrub") - - def apply(client: ManhattanKVClient, config: Config, ctx: Backend.Context): GeoScrubEventStore = { - new GeoScrubEventStore { - val getGeoScrubTimestamp: UserId => Stitch[Option[Time]] = { - val endpoint = config.read.endpoint(client) - - (userId: UserId) => { - endpoint - .get(toKey(userId), ValDesc) - .map(_.map(value => Time.fromMilliseconds(value.contents))) - } - } - - val setGeoScrubTimestamp: SetGeoScrubTimestamp = { - val endpoint = config.write.endpoint(client) - - FutureArrow { - case (userId, timestamp) => - val key = toKey(userId) - - // Use the geo scrub timestamp as the MH entry timestamp. This - // ensures that whatever timestamp is highest will win any - // update races. - val value = ValDesc.withValue(timestamp.inMilliseconds, timestamp) - Stitch.run(endpoint.insert(key, value)) - } - } - } - } - - case class EndpointConfig(requestTimeout: Duration, maxRetryCount: Int) { - def endpoint(client: ManhattanKVClient): ManhattanKVEndpoint = - ManhattanKVEndpointBuilder(client) - .defaultMaxTimeout(requestTimeout) - .maxRetryCount(maxRetryCount) - .build() - } - - case class Config(read: EndpointConfig, write: EndpointConfig) -} - -trait GeoScrubEventStore { - import GeoScrubEventStore._ - val getGeoScrubTimestamp: GetGeoScrubTimestamp - val setGeoScrubTimestamp: SetGeoScrubTimestamp -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Gizmoduck.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Gizmoduck.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7f166ea4db185fae28e3303681065058190e3a4 GIT binary patch literal 37794 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 gd} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.core.OverCapacity -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object Gizmoduck { - import Backend._ - - type GetById = FutureArrow[(gd.LookupContext, Seq[UserId], Set[UserField]), Seq[gd.UserResult]] - type GetByScreenName = - FutureArrow[(gd.LookupContext, Seq[String], Set[UserField]), Seq[gd.UserResult]] - type IncrCount = FutureArrow[(UserId, gd.CountsUpdateField, Int), Unit] - type ModifyAndGet = FutureArrow[(gd.LookupContext, UserId, gd.ModifiedUser), gd.User] - - def fromClient(client: gd.UserService.MethodPerEndpoint): Gizmoduck = - new Gizmoduck { - val getById = FutureArrow((client.get _).tupled) - val getByScreenName = FutureArrow((client.getByScreenName _).tupled) - val incrCount = FutureArrow((client.incrCount _).tupled) - val modifyAndGet = FutureArrow((client.modifyAndGet _).tupled) - def ping(): Future[Unit] = client.get(gd.LookupContext(), Seq.empty, Set.empty).unit - } - - case class Config( - readTimeout: Duration, - writeTimeout: Duration, - modifyAndGetTimeout: Duration, - modifyAndGetTimeoutBackoffs: Stream[Duration], - defaultTimeoutBackoffs: Stream[Duration], - gizmoduckExceptionBackoffs: Stream[Duration]) { - - def apply(svc: Gizmoduck, ctx: Backend.Context): Gizmoduck = - new Gizmoduck { - val getById: FutureArrow[(LookupContext, Seq[UserId], Set[UserField]), Seq[UserResult]] = - policy("getById", readTimeout, ctx)(svc.getById) - val getByScreenName: FutureArrow[(LookupContext, Seq[String], Set[UserField]), Seq[ - UserResult - ]] = policy("getByScreenName", readTimeout, ctx)(svc.getByScreenName) - val incrCount: FutureArrow[(UserId, CountsUpdateField, Int), Unit] = - policy("incrCount", writeTimeout, ctx)(svc.incrCount) - val modifyAndGet: FutureArrow[(LookupContext, UserId, ModifiedUser), User] = policy( - "modifyAndGet", - modifyAndGetTimeout, - ctx, - timeoutBackoffs = modifyAndGetTimeoutBackoffs - )(svc.modifyAndGet) - def ping(): Future[Unit] = svc.ping() - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - ctx: Context, - timeoutBackoffs: Stream[Duration] = defaultTimeoutBackoffs - ): Builder[A, B] = - translateExceptions andThen - defaultPolicy(name, requestTimeout, retryPolicy(timeoutBackoffs), ctx) - - private[this] def translateExceptions[A, B]: Builder[A, B] = - _.translateExceptions { - case gd.OverCapacity(msg) => OverCapacity(s"gizmoduck: $msg") - } - - private[this] def retryPolicy[B](timeoutBackoffs: Stream[Duration]): RetryPolicy[Try[B]] = - RetryPolicy.combine[Try[B]]( - RetryPolicyBuilder.timeouts[B](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(gizmoduckExceptionBackoffs)) { - case Throw(ex: gd.InternalServerError) => true - } - ) - } - - implicit val warmup: Warmup[Gizmoduck] = - Warmup[Gizmoduck]("gizmoduck")(_.ping()) -} - -trait Gizmoduck { - import Gizmoduck._ - val getById: GetById - val getByScreenName: GetByScreenName - val incrCount: IncrCount - val modifyAndGet: ModifyAndGet - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GnipEnricherator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/GnipEnricherator.docx new file mode 100644 index 0000000000000000000000000000000000000000..f2c2177788f3dbc0e1de4dfaaeaabbedc2df2a44 GIT binary patch literal 37137 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 xe=??RC}2kIxkhwpKGU9%$ktumT@|9=Mi1SsXb zm>;kTS+osaoKjK5{uiC~@U1n%n6)3?9#z>m0GH70W2H;^QFb4eKCA1R#Z4%zU5>9- zBzqhi>~RqQ7wPN&PB_ov2C$2m0eGezGcw&WJY-V)fW#0=+nM=qT`!}d&FI0h zj(vEi<1c2RFEydi5gao*FF0ELA$g|t@T7RApAd@57QHp0g}MplDB)>0ECdZ)zxK#% znaq^zaLt%7-JC4yJE_EtsT!n10&WwQf}6BT0W^ox#&Vn9_h!{DuB+h zRYj7@F^^x`$+(@hP2lnZ=mxdd-X4e-f6Nf^ufP!iNSEfAC7$a11~3EyioKy0q&N%I z8jgZY?c65|hpDwhnkVcKxVW<`Vi{!JX_2apL@l6pGYe-*{$TR2;sU|n+W@+ zm!gL=K3lzhf7%lQ=pX$SL#ANzg7K!wct7wafh+dumZN3<`FiB+bjQT?iAF}hohP>5d29+8t$>jxmx9vg6v9`hLUVrl>RJT9c=_K1)zp%4suWzW%SoJ z&eh(Z>V8hkp2zkKw?bmrLDIrm7!dRo+$=C&fI7}g9}}s`R+!NS3A10ONSiuAon>Dy z%$x!a(h{4o5Jy7@M@2+cM9B!=K%PDg!E&;E7o2O_%-sR(a-7MB_?ErOL%H!rch60a4wiz48VWOd?c z0ZQ1Fo_d}p4dN0)j3LA<&>3x{@iywsgXSVWFDorSD`^RbK?Oh~gZP=3R@XAiS(%1C zjvP_n-Xm2B0GIsXT-_PGVwQv+|3nEq9Oq{}$noM1Cx#IUj;#*+JCjvqIWo&UDeBNr z>nQ;w=G_mmc3Nv_!XS?hoxiId6|ocre|z_C6F(|KoD$)U57gy{g#Kg25yb;J_inj> zWvnwBGH{IlkRqFajh0YUR<4&L&nv5fiOzG(cf#`z!)K^L4WmI}!}AB;gaIDz=U_Zb zP$Y =)>-|t~@ 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 ls} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object LimiterBackend { - import Backend._ - - type IncrementFeature = FutureArrow[(ls.FeatureRequest, Int), Unit] - type GetFeatureUsage = FutureArrow[ls.FeatureRequest, ls.Usage] - - def fromClient(client: ls.LimitService.MethodPerEndpoint): LimiterBackend = - new LimiterBackend { - val incrementFeature: IncrementFeature = - FutureArrow { - case (featureReq, amount) => client.incrementFeature(featureReq, amount).unit - } - - val getFeatureUsage: GetFeatureUsage = - FutureArrow(featureReq => client.getLimitUsage(None, Some(featureReq))) - } - - case class Config(requestTimeout: Duration, timeoutBackoffs: Stream[Duration]) { - - def apply(client: LimiterBackend, ctx: Backend.Context): LimiterBackend = - new LimiterBackend { - val incrementFeature: FutureArrow[(FeatureRequest, Int), Unit] = - policy("incrementFeature", requestTimeout, ctx)(client.incrementFeature) - val getFeatureUsage: FutureArrow[FeatureRequest, Usage] = - policy("getFeatureUsage", requestTimeout, ctx)(client.getFeatureUsage) - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - ctx: Context - ): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs) - } -} - -trait LimiterBackend { - import LimiterBackend._ - - val incrementFeature: IncrementFeature - val getFeatureUsage: GetFeatureUsage -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/LimiterService.docx new file mode 100644 index 0000000000000000000000000000000000000000..44b543b32ed69fb30fea419230d875dbb48bcab3 GIT binary patch literal 38916 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 g+}Gz}|1-r7Mu( Future[Int] - type HasRemaining = (UserId, Option[UserId]) => Future[Boolean] - type Increment = (UserId, Option[UserId], Int) => Future[Unit] - type IncrementByOne = (UserId, Option[UserId]) => Future[Unit] - - sealed abstract class Feature(val name: String, val hasPerApp: Boolean = false) { - def forUser(userId: UserId): FeatureRequest = FeatureRequest(name, userId = Some(userId)) - def forApp(appId: AppId): Option[FeatureRequest] = - if (hasPerApp) { - Some( - FeatureRequest( - s"${name}_per_app", - applicationId = Some(appId), - identifier = Some(appId.toString) - ) - ) - } else { - None - } - } - object Feature { - case object Updates extends Feature("updates", hasPerApp = true) - case object MediaTagCreate extends Feature("media_tag_create") - case object TweetCreateFailure extends Feature("tweet_creation_failure") - } - - def fromBackend( - incrementFeature: IncrementFeature, - getFeatureUsage: GetFeatureUsage, - getAppId: => Option[ - AppId - ], // the call-by-name here to invoke per request to get the current request's app id - stats: StatsReceiver = NullStatsReceiver - ): LimiterService = - new LimiterService { - def increment( - feature: Feature - )( - userId: UserId, - contributorUserId: Option[UserId], - amount: Int - ): Future[Unit] = { - Future.when(amount > 0) { - def increment(req: FeatureRequest): Future[Unit] = incrementFeature((req, amount)) - - val incrementUser: Option[Future[Unit]] = - Some(increment(feature.forUser(userId))) - - val incrementContributor: Option[Future[Unit]] = - for { - id <- contributorUserId - if id != userId - } yield increment(feature.forUser(id)) - - val incrementPerApp: Option[Future[Unit]] = - for { - appId <- getAppId - req <- feature.forApp(appId) - } yield increment(req) - - Future.collect(Seq(incrementUser, incrementContributor, incrementPerApp).flatten) - } - } - - def minRemaining( - feature: Feature - )( - userId: UserId, - contributorUserId: Option[UserId] - ): Future[Int] = { - def getRemaining(req: FeatureRequest): Future[Int] = getFeatureUsage(req).map(_.remaining) - - val getUserRemaining: Option[Future[Int]] = - Some(getRemaining(feature.forUser(userId))) - - val getContributorRemaining: Option[Future[Int]] = - contributorUserId.map(id => getRemaining(feature.forUser(id))) - - val getPerAppRemaining: Option[Future[Int]] = - for { - appId <- getAppId - req <- feature.forApp(appId) - } yield getRemaining(req) - - Future - .collect(Seq(getUserRemaining, getContributorRemaining, getPerAppRemaining).flatten) - .map(_.min) - } - } -} - -trait LimiterService { - - /** - * Increment the feature count for both the user and the contributor. If either increment fails, - * the resulting future will be the first exception encountered. - * - * @param feature The feature that is incremented - * @param userId The current user tied to the current request - * @param contributorUserId The contributor, if one exists, tied to the current request - * @param amount The amount that each feature should be incremented. - */ - def increment( - feature: Feature - )( - userId: UserId, - contributorUserId: Option[UserId], - amount: Int - ): Future[Unit] - - /** - * Increment the feature count, by one, for both the user and the contributor. If either - * increment fails, the resulting future will be the first exception encountered. - * - * @param feature The feature that is incremented - * @param userId The current user tied to the current request - * @param contributorUserId The contributor, if one exists, tied to the current request - * - * @see [[increment]] if you want to increment a feature by a specified amount - */ - def incrementByOne( - feature: Feature - )( - userId: UserId, - contributorUserId: Option[UserId] - ): Future[Unit] = - increment(feature)(userId, contributorUserId, 1) - - /** - * The minimum remaining limit between the user and contributor. If an exception occurs, then the - * resulting Future will be the first exception encountered. - * - * @param feature The feature that is queried - * @param userId The current user tied to the current request - * @param contributorUserId The contributor, if one exists, tied to the current request - * - * @return a `Future[Int]` with the minimum limit left between the user and contributor - */ - def minRemaining(feature: Feature)(userId: UserId, contributorUserId: Option[UserId]): Future[Int] - - /** - * Can the user and contributor increment the given feature. If the result cannot be determined - * because of an exception, then we assume they can increment. This will allow us to continue - * servicing requests even if the limiter service isn't responding. - * - * @param feature The feature that is queried - * @param userId The current user tied to the current request - * @param contributorUserId The contributor, if one exists, tied to the current request - * @return a `Future[Boolean]` with true if both the user and contributor have remaining limit - * cap. - * - * @see [[minRemaining]] if you would like to handle any exceptions that occur on your own - */ - def hasRemaining( - feature: Feature - )( - userId: UserId, - contributorUserId: Option[UserId] - ): Future[Boolean] = - minRemaining(feature)(userId, contributorUserId) - .map(_ > 0) - .handle { case _ => true } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.docx new file mode 100644 index 0000000000000000000000000000000000000000..78430977e46a15a0947b68d826c768149ce1cc27 GIT binary patch literal 37297 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.scala deleted file mode 100644 index ce4e0838e..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Manhattan.scala +++ /dev/null @@ -1,46 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.servo.exception.thriftscala -import com.twitter.servo.exception.thriftscala.ClientErrorCause -import com.twitter.stitch.Stitch -import com.twitter.storage.client.manhattan.kv.TimeoutManhattanException -import com.twitter.tweetypie.core.OverCapacity -import com.twitter.tweetypie.storage.TweetStorageClient.Ping -import com.twitter.tweetypie.storage.ClientError -import com.twitter.tweetypie.storage.RateLimited -import com.twitter.tweetypie.storage.TweetStorageClient -import com.twitter.tweetypie.util.StitchUtils -import com.twitter.util.TimeoutException - -object Manhattan { - def fromClient(underlying: TweetStorageClient): TweetStorageClient = - new TweetStorageClient { - val addTweet = translateExceptions(underlying.addTweet) - val deleteAdditionalFields = translateExceptions(underlying.deleteAdditionalFields) - val getDeletedTweets = translateExceptions(underlying.getDeletedTweets) - val getTweet = translateExceptions(underlying.getTweet) - val getStoredTweet = translateExceptions(underlying.getStoredTweet) - val scrub = translateExceptions(underlying.scrub) - val softDelete = translateExceptions(underlying.softDelete) - val undelete = translateExceptions(underlying.undelete) - val updateTweet = translateExceptions(underlying.updateTweet) - val hardDeleteTweet = translateExceptions(underlying.hardDeleteTweet) - val ping: Ping = underlying.ping - val bounceDelete = translateExceptions(underlying.bounceDelete) - } - - private[backends] object translateExceptions { - private[this] def pf: PartialFunction[Throwable, Throwable] = { - case e: RateLimited => OverCapacity(s"storage: ${e.getMessage}") - case e: TimeoutManhattanException => new TimeoutException(e.getMessage) - case e: ClientError => thriftscala.ClientError(ClientErrorCause.BadRequest, e.message) - } - - def apply[A, B](f: A => Stitch[B]): A => Stitch[B] = - a => StitchUtils.translateExceptions(f(a), pf) - - def apply[A, B, C](f: (A, B) => Stitch[C]): (A, B) => Stitch[C] = - (a, b) => StitchUtils.translateExceptions(f(a, b), pf) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.docx new file mode 100644 index 0000000000000000000000000000000000000000..95386e9619a408b6aaca2c9b38ab5e1b056f8af7 GIT binary patch literal 37193 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≈XDfF2_l~_ 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.scala deleted file mode 100644 index a355507cf..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/MediaInfoService.scala +++ /dev/null @@ -1,43 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.finagle.service.RetryPolicy -import com.twitter.mediainfo.server.thriftscala.GetTweetMediaInfoRequest -import com.twitter.mediainfo.server.thriftscala.GetTweetMediaInfoResponse -import com.twitter.mediainfo.server.{thriftscala => mis} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object MediaInfoService { - import Backend._ - - type GetTweetMediaInfo = FutureArrow[mis.GetTweetMediaInfoRequest, mis.GetTweetMediaInfoResponse] - - def fromClient(client: mis.MediaInfoService.MethodPerEndpoint): MediaInfoService = - new MediaInfoService { - val getTweetMediaInfo = FutureArrow(client.getTweetMediaInfo) - } - - case class Config( - requestTimeout: Duration, - totalTimeout: Duration, - timeoutBackoffs: Stream[Duration]) { - - def apply(svc: MediaInfoService, ctx: Backend.Context): MediaInfoService = - new MediaInfoService { - val getTweetMediaInfo: FutureArrow[GetTweetMediaInfoRequest, GetTweetMediaInfoResponse] = - policy("getTweetMediaInfo", ctx)(svc.getTweetMediaInfo) - } - - private[this] def policy[A, B](name: String, ctx: Context): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx, totalTimeout = totalTimeout) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs) - } -} - -trait MediaInfoService { - import MediaInfoService._ - val getTweetMediaInfo: GetTweetMediaInfo -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Scarecrow.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Scarecrow.docx new file mode 100644 index 0000000000000000000000000000000000000000..15f8bb737b63efd57fcc77b0edcdcf0694e19aed GIT binary patch literal 37577 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 scarecrow} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object Scarecrow { - import Backend._ - - type CheckTweet2 = - FutureArrow[(scarecrow.TweetNew, scarecrow.TweetContext), scarecrow.CheckTweetResponse] - type CheckRetweet = FutureArrow[scarecrow.Retweet, scarecrow.TieredAction] - - def fromClient(client: scarecrow.ScarecrowService.MethodPerEndpoint): Scarecrow = - new Scarecrow { - val checkTweet2 = FutureArrow((client.checkTweet2 _).tupled) - val checkRetweet = FutureArrow(client.checkRetweet _) - def ping(): Future[Unit] = client.ping() - } - - case class Config( - readTimeout: Duration, - writeTimeout: Duration, - timeoutBackoffs: Stream[Duration], - scarecrowExceptionBackoffs: Stream[Duration]) { - def apply(svc: Scarecrow, ctx: Backend.Context): Scarecrow = - new Scarecrow { - val checkTweet2: FutureArrow[(TweetNew, TweetContext), CheckTweetResponse] = - writePolicy("checkTweet2", ctx)(svc.checkTweet2) - val checkRetweet: FutureArrow[Retweet, TieredAction] = - writePolicy("checkRetweet", ctx)(svc.checkRetweet) - def ping(): Future[Unit] = svc.ping() - } - - private[this] def readPolicy[A, B](name: String, ctx: Context): Builder[A, B] = - defaultPolicy(name, readTimeout, readRetryPolicy, ctx) - - private[this] def writePolicy[A, B](name: String, ctx: Context): Builder[A, B] = - defaultPolicy(name, writeTimeout, nullRetryPolicy, ctx) - - private[this] def readRetryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicy.combine[Try[B]]( - RetryPolicyBuilder.timeouts[B](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(scarecrowExceptionBackoffs)) { - case Throw(ex: scarecrow.InternalServerError) => true - } - ) - - private[this] def nullRetryPolicy[B]: RetryPolicy[Try[B]] = - // retry policy that runs once, and will not retry on any exception - RetryPolicy.backoff(Backoff.fromStream(Stream(0.milliseconds))) { - case Throw(_) => false - } - } - - implicit val warmup: Warmup[Scarecrow] = Warmup[Scarecrow]("scarecrow")(_.ping()) -} - -trait Scarecrow { - import Scarecrow._ - val checkTweet2: CheckTweet2 - val checkRetweet: CheckRetweet - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/SocialGraphService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/SocialGraphService.docx new file mode 100644 index 0000000000000000000000000000000000000000..0b5954eedf1839547fdf4c3bd4d35259e3d5c967 GIT binary patch literal 37318 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 sg} -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object SocialGraphService { - import Backend._ - - type Exists = - FutureArrow[(Seq[sg.ExistsRequest], Option[sg.RequestContext]), Seq[sg.ExistsResult]] - - def fromClient(client: sg.SocialGraphService.MethodPerEndpoint): SocialGraphService = - new SocialGraphService { - val exists = FutureArrow((client.exists _).tupled) - def ping: Future[Unit] = client.ping().unit - } - - case class Config(socialGraphTimeout: Duration, timeoutBackoffs: Stream[Duration]) { - - def apply(svc: SocialGraphService, ctx: Backend.Context): SocialGraphService = - new SocialGraphService { - val exists: FutureArrow[(Seq[ExistsRequest], Option[RequestContext]), Seq[ExistsResult]] = - policy("exists", socialGraphTimeout, ctx)(svc.exists) - def ping(): Future[Unit] = svc.ping() - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - ctx: Context - ): Builder[A, B] = - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs) - } - - implicit val warmup: Warmup[SocialGraphService] = - Warmup[SocialGraphService]("socialgraphservice")(_.ping) -} - -trait SocialGraphService { - import SocialGraphService._ - val exists: Exists - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.docx new file mode 100644 index 0000000000000000000000000000000000000000..358e4ae86f7478cd92551557ab39547fea3c76b9 GIT binary patch literal 37887 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

    XnRu*_ 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.scala deleted file mode 100644 index e056db8c9..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TFlock.scala +++ /dev/null @@ -1,98 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.finagle.Backoff -import com.twitter.finagle.service.RetryPolicy -import com.twitter.flockdb.client.{thriftscala => flockdb, _} -import com.twitter.servo -import com.twitter.servo.util.RetryHandler -import com.twitter.tweetypie.core.OverCapacity -import com.twitter.tweetypie.util.RetryPolicyBuilder -import com.twitter.util.Future -import com.twitter.util.TimeoutException - -object TFlock { - val log = Logger(this.getClass) - - case class Config( - requestTimeout: Duration, - timeoutBackoffs: Stream[Duration], - flockExceptionBackoffs: Stream[Duration], - overCapacityBackoffs: Stream[Duration], - defaultPageSize: Int = 1000) { - def apply(svc: flockdb.FlockDB.MethodPerEndpoint, ctx: Backend.Context): TFlockClient = { - val retryHandler = - RetryHandler[Any]( - retryPolicy(timeoutBackoffs, flockExceptionBackoffs, overCapacityBackoffs), - ctx.timer, - ctx.stats - ) - val rescueHandler = translateExceptions.andThen(Future.exception) - val exceptionCounter = new servo.util.ExceptionCounter(ctx.stats, "failures") - val timeoutException = new TimeoutException(s"tflock: $requestTimeout") - val wrapper = - new WrappingFunction { - def apply[T](f: => Future[T]): Future[T] = - retryHandler { - exceptionCounter { - f.raiseWithin(ctx.timer, requestTimeout, timeoutException) - .onFailure(logFlockExceptions) - .rescue(rescueHandler) - } - } - } - - val wrappedClient = new WrappingFlockClient(svc, wrapper, wrapper) - val statsClient = new StatsCollectingFlockService(wrappedClient, ctx.stats) - new TFlockClient(statsClient, defaultPageSize) - } - } - - def isOverCapacity(ex: flockdb.FlockException): Boolean = - ex.errorCode match { - case Some(flockdb.Constants.READ_OVERCAPACITY_ERROR) => true - case Some(flockdb.Constants.WRITE_OVERCAPACITY_ERROR) => true - case _ => false - } - - /** - * Builds a RetryPolicy for tflock operations that will retry timeouts with the specified - * timeout backoffs, and will retry non-overcapacity FlockExceptions with the - * specified flockExceptionBackoffs backoffs, and will retry over-capacity exceptions with - * the specified overCapacityBackoffs. - */ - def retryPolicy( - timeoutBackoffs: Stream[Duration], - flockExceptionBackoffs: Stream[Duration], - overCapacityBackoffs: Stream[Duration] - ): RetryPolicy[Try[Any]] = - RetryPolicy.combine[Try[Any]]( - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(flockExceptionBackoffs)) { - case Throw(ex: flockdb.FlockException) if !isOverCapacity(ex) => true - case Throw(_: flockdb.FlockQuotaException) => false - }, - RetryPolicy.backoff(Backoff.fromStream(overCapacityBackoffs)) { - case Throw(ex: flockdb.FlockException) if isOverCapacity(ex) => true - case Throw(_: flockdb.FlockQuotaException) => true - case Throw(_: OverCapacity) => true - } - ) - - val logFlockExceptions: Throwable => Unit = { - case t: flockdb.FlockException => { - log.info("FlockException from TFlock", t) - } - case _ => - } - - /** - * Converts FlockExceptions with overcapacity codes into tweetypie's OverCapacity. - */ - val translateExceptions: PartialFunction[Throwable, Throwable] = { - case t: flockdb.FlockQuotaException => - OverCapacity(s"tflock: throttled ${t.description}") - case t: flockdb.FlockException if isOverCapacity(t) => - OverCapacity(s"tflock: ${t.description}") - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.docx new file mode 100644 index 0000000000000000000000000000000000000000..3ef195a9a28f0a33dff97a8e9615b3c0cc250250 GIT binary patch literal 37767 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

      WDe96jyv zQQHp|0v(1DMK-#z*xVhoh|I@ExF_v7&yd=y%uzHjwldYC7z9uvt(b$Ym=nku0)Yub zi=s+gOzhqL6~zzoP6Mr6cb-xeh8}P>F#u?gFIN0<%z%iw<+%Yvdjn3(zS&j=P$UV* z@g}V~uX8GnZp%SXrM8lzEEZN2!7ko<>f}P3RI?U^^u|IE-~>0`u*^`*$uCmIrR~O} zMO8h5R{hc`Ex(!FyOhOw(k6~c3{dmbmK$C0xaeyr>vqJFpm=+kwAUnK&(dedqmo$$^NvOlfrQjEq4-F8WiPXbeiH* zEK6jXhrCA4<Nm^70RrMs1qFip&vW}47T>-|n3v>lK_Q_nQdsoDT;!EnZ9fl?z#$-q+^_ zy8x=qwbQ$>+ua@4I{nV~gQ@+qwD-sJ_oufL=eF0Zsj+pvtLNLZwyG-R^Yg4b;L-k# zj#UAE1_P|Nu8wlT#X7rKAvgC+*W&5H=ayB9!Go~d z^RV^Tl9nVygRe|sLD%n&Q2x?a_m-X(yLXYCRb!6!SF>i%wM$gqHbPWgOJ1(-ubdXw zjx`3Jx&l>q-i6kWNoHQ&-tUci-p-c0t7D$|U5|_{zUN-vu7U>bC9QWZc}4F$??z(| zaYI=FX+cd%`)=ON9nP!!4)%R%w`Uf&Zl_$!3$bwuhmy2J+}G6x20@uC*+HuVi+kRc zh*xWGyO$rCriS>cZ0xwVaAN91#+Y1eNC4L!R9Y9F2`8ymhhFL@t6cytK-J=cx@E;{ z^P9Z|ofee%3U7qc-HekZ*Y&o=WvXm;QqZ~AOZ$cuHc?g_-zT>hMv1*w@At)Zy;^<& z8^YfGqJh7s!awbN+G@)>YE){Pd4|hE}8^3 zCYKgnvI~tS4=QC-Wf<&}OG59LRZZWj9+W290GCoLXy}n+iom{zQpPWkl*xQDe8y&)bi^x3kA~ zkMEg@C*J3YQH#6pcti*9B?Cbdt8U&N*)q@q=Y)Aego#x@bJKNe_4E5)9G=P!Z>ZYB zYsByXWhV>-$QZIjNN?|T>)S1Pqp|`F*gq>hxyl%x)e=3Fql&&!C}4_;3GM4egd-GRWNqb=YN4seL= z?pDZM6aTIAaa#(3qpR|6YHa1!TB;^J^Dd>$0Bd#N@O0<)C*wXOSK)E$TR7m3CUxWPYY*O3!u3ELEonk3+6m16e-8u>P+7*13`a+w{&R1(+s~*HpYNik;s^|MLEARj?{2wTPH~2fs|E>auqY2VBId=t& zTXx0<6d%f>2?WVM00_qM53PSmS^+y|Km`EJV1Z^||1#?a*uZZwOEmn(SqI}r`0*R( z?*@O1xmvOwa!!YI189Z@H2WPI(pUR3=_jPS>#NA;z9}?fFONBI1|f!~ zv0Lz=69x?RsVQ2+#2v&N!@5WNp?hf`9Y1^)_p+#|vWe}2Vj%!R_}5Lt_rsU7p#A-f z(cXLXa6D-tm;XoDJ3v>qZQa7LU9oLj6;!Mp+qO|r#kOtRwr!_kI~7+Y6}(;N+F&E-uql@?lH&ObB#%#Z8vVWmuud3?~fDfg>&mCj_T0^F8I=~lgL=_ zzucc;uAIEi-Zry)F!-}Ow|}28)`Xu6 zwN$>vMw(Q;w=;I{J>JEBI~zY)ewlneTz`1Ate@6#A_%(=R&KxM&YJN?O@DnfZTEiT zY480SY%Ey4GO7Et`#3lrJ1L)OyYOxM&~Ik(Yf>u5wZr4FZLW{#^Wu-$RKE7jFV|!f zo2%73soyp_e#sBFR-cV8*lRlj*RLBHgfqSy88OD!u^!jAL%~l z2Y9cM#ChGCUe4oeMvgK*S>cr91v2*m5mYMJ;NX&yGJYD^b~| zwRI&ip?aWu73$DIPvF`Ql(25$ms*(pZwt}tFdrS#_o9$PFgYq@?ggm*i9KZQHUa_5 z!6CwXqT&|Vb6-5P5Rb~mspWqo9fdzDtaM;oi@k|})eMWUB4PNaE60>imOh0dC{H~r zBt%!hb%{9Ms0q#s$n~q-vWKF}J=T|W4!SPi1Kjqn1O-m=GGE^gc(Xn9<@G8t2=%mV%BE*&W7X3@5SgJ-sL zue_0`A2`at*s0Js_+t_OzVz$FyL5L^=RrzNPm(kCjB)S%%<5MUFM6L{BzK$vSoDjf zdJk>>T=(c(I~}BvLC1#A+b%jUqJXUx_p`PxQXi-IRxJAM%dFH~?qc}kvH2DQJy1P? z`ct)ueg5in>6NNP0!UOZf}X=@Gty%xwLvRyyG|eBlKV6?`z8e`qsJ-t9~W!M>5Hyg?23(L1A+U%8rNK*1TT*mmSbvg#M2#UOh}IO z&+JHcJx%DA&xxr@GW1_=C-drrm+x59d*C=@eF@PP*g9!Gdrhg&?ue}OxY%_IU=Q4X zH|=3EZ#3kFeRgfgAM}jPHv2a5+1yorfk7cP|KNJ<4oSryFphV=N`>hmk^Sh0|0ACZ zJU0^0^~I-vB%fmk*)>}Zxej+vR&YRC54%^OX^ifmit5mvp{p7)LYSbY^Q=y%0Pj5U z^sZZti~Yg9D*o)(&6+`PN@J3fQ-P?|X@7<(<@N1RN9pj3v)0(-%~x<)imT*=>SGnr zqCG}u0>K=lwho)irWI2P>y!LR(Uj?uP8;sDrWN!4jr;osBd6_bM&`<&cCImpW3j0_ zsqh5TF6PUdpY;qk(QD2WOOFVvGrpG+a@dBfK9p@}#lCyHn-&*{$YW_NXBVb)Hd;*( z)mr#W@G0+Pr+muJAbixmp0A+sJ)a*b?b3>k(Y~1XSa`5{Q$vH~aXC9eYwT#6a5Y(Y z3~^s<@2og}d&WI5>rp7>ESfRnYqmPq=Ur|ZXId(Up4btpeK)?X+e(VuW;#1VgWbPV zCJ0cJ)4#?d`r7Ww&g1az_}%}Et;f!7yhU)vMmbp>DRkYz`LX!GW~}2*X_UadD;3Zn zqUTY55$#SiDdVo}quu_LEvdpaP4U#CO8{9f(sboXUW=@&1NN=z8i6t*l9ffy=XduXe&`uXephutc887nGrlRaSxHcV^PYFk)Wu$5ZV1 zLgOW57xs(;A&1Sk7ssFDqgy{l+wc;9enI(k;3*q5&cXsknIS_)0uv_nnV9m>FYN&w zCB)PeMRcTz5J%a`ME18of>$Db9l`bUe%y0LbV}%=6lrPZZNrZ;C@jwgHyu-zdgN{# zjVdSBB=va1XNh5v;n;}U9k9#R%!b-q`4ba$*buhdXr;1nY6^ndHM~?fkg4~!EQ(9i zWG0IC2c%)heHCCGAdOEQeU5U@)IMLW)LHxGVQKN#84aIl92-sSo9vcIaEyps!h!xo zW%^#iIHKfvz4WNRQ(_QaHu^<2i%8<{wo4Dq?l{cKuDR;cK}?gEaRVpM&W4!t@(BpB zCiS0pa+-JpwlYUvN|pZKsxy^?FE3PGzFjXoJ~OV{Lp0&^c!0?b{HO+;Q7_qfCnds2qNS+itIq_7U@|nUc zqP>z7XJu0K?aHRlXgy;rUH3WiJVCRW6e7;=wb}nJIj<_!og0+|0>)dDOvna!%j9vHJ*NiQcLI3>{n{MbI|!D> zKld4wen?@bZ9Wzj9Q(ax^ZJLBf(~?3il2iHYYrp*&7Md58fLrq-AU>4z3{Hohi)7J z5z_IxrspL!NvEUXXma0%A&SqM&Bp-oDG>z5&e6uYRDaD+!|Rw-wd8~A5H_;(+V1;n z1oJ#i&kqb3lfhzt84);5+aje)B>KW+2W!9n78aP*lGQ3+mqG3bxT=n^<=ssUegueX zIZK~UAzsSy$3=M8(@W0ZR_VMp3VW{+PqdjAI+=fHb2`}XZYzkW;WeXof=`xFY~mTz z*&+;dpK;X20H0Z=uc?`$eiA#-UGIVovzfUd8;J0;gmlku*b#(Ed(C&5=#Ac=q=OUnk>)K&o4*bc^!Bye+$+mmHjlj?U ze|7-&$ot%{n@${UT$sq<{$2<0ZCvYcirFsqq^r5e(gj?ras|HEa{M_jdgF|m^rUo+ z@XjsBKcTJ>c}$uWW$O9rqO=COL7_HAh&MC!?$5cSy6V#EDuE-h4IBxj>uLGQt)7We zo-FmB#toJ$QBuF`T2uRTW83)~yZYO6>`U3vq<$`QbR-k*5Bd%(zPGvmy7TDtkZH;G z;tbv03}{Qe2m9V&$(-Ceo5P0~o7oz>dUjn|P2ssJyhWG4(u`skLSiRwOf%yDO>T|K z%^d_r8-(P_^VXyaP+KUgj;K%XrFk%3G)$F4QeI(7MaXJ6NM*f1MYqe4+x zcZvl8PafV3t6cZ#0AJ$*-ylA-3sTcnF(@_zxX7}0rEFjJ;|g_yeX5uBy#a8&i;jA; za_VdxDK99(YCj41O#T$ox>D4t)~79iL(|nv*~Rf(w92cb#g)aL={X>Q-fEe{nWWbiY9v*<)g_n&Ye*<0fUc8qU5N z)?Q8^v^54{3-JV`RL^CvTJx;h5DA+X`uo!gNK}e{{&}@(iNvg@HG2E}UbQKcHNSKF zuLm}ArjE-ck?*eV)^eWKz`aw-!vosZ1KNr5QZ;0I?t?Vb`c zAcdv|WuDf_>)VanxMCGw-L2Orapi{?Z%G?)EVoTd2^+=+wXGjIoB6lz((Qp1_o~Ou zHCE#VyY~>TmLeIuIOw`Lra(nbgf_Nu{pMMjRl1ue4j(n`qe-1VcQs#{MxP{O<@$t} zRHtTpN=6{tS4-Jf`?Y$L>H{gdTi?MRxE2N4bMNs#7Qow2OWPwl_s#LlwX{MRG$A0+ z*kAqFST;^hb>ptR&NBU!*vBKn`<}9RON7g$ax%C0YLA-{Dr1==(;m%r@y2ND^|Mav zEdy!$_wUqUU(O98Ggy>`kyKdStShz1%kfhe`p+LpdSkCggLb(*_*I1J!z7lQhUZE? zr}^u!1)7l<5;XZwi7MLp91php1rw0R)#Ay+F=wI`w`;d!YcE&Y!l#cU=&@&n#MeOs zlJ~+dKa6O!h3LJe)(W!vbURf_gma8Q>j*&b`Y3k>ij%!_&H-nxNz2*9SLRG2u2dow zeDz)Sx=;|QNK2&?4Bm0iwm%=QXqc5~A2XE=MJsLA0HF9V?+gG#bcI2LkO$;5BA33A z<|1Vh5D*bI<{|XOIm83%jS@9&05b^8(idmkBW5+fuIWAyAv?h_*H9Q*nFuox z2y_ZDRMIiMkc5JeBy`i~vkn9pMndX{4DDYiq;PjngEyMb<8r-xXN8BnHNk!-O z(Z!ebrVN5$P)I=t>Kqx)RKh^|<`58A9@!&AxJ zTXbqy8LGIXC~W!8>kG8ZceS=Ks4gaO_rWli=>uu~41YYJ_c56R^;%5;1jB$JO!uKE z%MWsAi6%x?S9zWv#kf(4fxg@F*a5*>DkK#*;t^uv&VeG-AtW6qqF zu~LhL^9c~8W$|ArMhk~+VoDU3>s2f*61jZA`kw5efq#0pnu_y~Zi@8m`c7oUlfP zNuO)CvBbcBUgZpe;bjfxu}0Nk3uXz_PV0w3)p#At1AnTa$c94&!Orj}Da+xVr=OuR z>CKn`o(=y!G|O5LAnlLDs|2Js9wHC|Umz$$VD@j9eoD_BVZB1!;xI0BOub@S>KnO5 zvNK_jqHqznxjW$gPd?Hj5Jr?PjM`d|;_uCfBmpt9hCL|$pOvxM+JbSSQ2d8u5qJ%L zXf2eZfcoX*U>luV;*0BXxBVF~pa1iK0SHKcjovvvKHUN9zG<7Uz^s5<&-rV|={2c8 z9RzekG6D*I-m{NE+&kUARqrdAvd>#v3Z!GdVO$v01YRN>;zVX*_@@c&#NSUs6NCdG z$HAbq{67Z$2mNyUQHkE^kbaL252ns;OluE>-luGMHOf2jvUfGH_q4HhcS%l!2Ft*d z-S6J$`|}e0&`&4B!$4zJO&X25e2rS78EYjCU&KpRVQ5cneLHr0#7=F{&?O{NUe$d z#6@Z|Of8X~FPUENYm$X`yrp5frB6OfNDl@r?um@$;D!Cbf1-4(5{>MUXC%?PuNU6D zOkaq(zm2kf`J(qxe2&uPli2lsYa#&i`3Z`nVl%IZ^BaY;647HhcG7c^{BX|Z*S7@B zy+zDWeZ&z9OH=t{2nceA`H!mAMU#e?8YzJBleHBe3 zyWbNQx=r;2#X$Al-_|EB;C=xD``b(c@94Ow%jNXPvsAtzVFa=s@v2;oV}PbK{a^H) zBOSr(_5V|ky)TXoSqtLD1-aJgu8Mj^Gfk5&{ z;`UoF5dlpZYS00AkP6LeMeu6WuoGhM-v=w+G=52eok!|fWRfyiS(uv`pRlA>Btg}q z8GQ&qR0xbb1!oereM^7yWfgtUu3TKEFTv}S^jgZbFu%92OfL23fnr-U>FqhcHFK*a z%Qk(>0YRtE6OtqNRN-)@pw?{mcv z?EI8o+86df3$v5ERZvOSF9Y*@3niX;XRkaB7^j!(>pV&q1MB5$6%8nWfne z=;W^zQm8^LfFcV1!uXenb0HD-KO%sv{@)^^heR7?y7m4Rz>)_$k3iQ&Xtq(vdX6%E z8BFtsmK&olfu9N$Ies@8;`|i8BQVGK+$U5*k^u@S9&Xl?X5mKj70BmLd?mzLcdkL$z;lCD zp_SX0OJ|)8-aW0Qjq{!7#m|_PrWr}MMmCj>acjf9ar?&tPra8$wU1oq!`s{BzF_7R za-)f(l)Ys-^T)bf^H@$4V07VL{w#P(U*Pg7eX#%BaXBKl4AE=|k3qyx$*Df1o{J!~ z%G?2WI}pQby+Tn1UH@)FMC6)BNC*K;ib#vN(&MFex0Qg1#_Mu*+4JLlJ9_%7X!GYd zu-qeBNZ-TeB-dSG2Y9RuaR+!;ZuxHx%3;c${rfgV+3^z5?A?MxI|LfcWSAIlgfG#xHfrR!SHg0UBS56 z?WV&Nd0kmofp-CSoM7wg&-vDLN6SAY&y!j^!lZNV zlvETzj~H|;aE};F>Sh?|2tkjIY>1MulK!Z;qh%%dTZIQ`keQxM*r1fk>-*iSf}7I6 zbSUSY0Cl`O|69lV_+|qu>HmX-Yk_8#@9^V`LW+{!x4*3Tl=jDpC#8QwJe2{h`1Jp< zV#M$;c=!cwa^|KF%TXozUeWul1#*`J0bX1eAZ97C~ z@66T@bp5IIH;$cp0H@@!YJvrC4lchvsFfAK@Xccvr$#!^M$x2i2*ubI_smV{1CMpq zS|XZI?G4*GL}Gm`?gH>5)KZW4aBSXpXQeR%7r+|qBt0Mehp~3JuC4X`H_I!+_h6}XlwK(A-f5}2f zjW=x9MpNA6rKYs=;y|SQklT(bj&*N7hUF$^1Qcs-;-v(Q!TUP|(;4$H4isz2JGn?_ z0+9yI$pmZi$qn_P7M7ixV-eE&iQ|3fyWwH7v1 z7zaLzl~mPUncA*`8l9g8czsBbQULcVOA%5aeY_N2g3@x;D5L(nvdpJHGZ)8Nr~X&Td7MVi^DA{B{u2scF9KyG=$E|Oy!8GHyA38tBR#bJrl zmD)P<3(zzXC3V%T3v8uk)fAmVYWg8uKu}5qhtUyLbzZVAmi15wf)U~nE<@k>Xjvx1 zN*Oxxhzb*dOBhF#UTev=)Bh%mi*Ehiqx)G+-Cw$vnC6|`PB-%`t6&dt!PiFh#QTQ( zYall?bGboG7fX4n^5OLO5av-ehT2`o<=aY7w?M^b+WLSuVx|Dj)e&VNIwrV5Egv160J9LTIb%uY3hV(GV&xiB{e^x zH!*wRz%tGDC_xi)MZ*|> zN?fT=<_E+`&s1rMqKXG(<;uh75hflLl8W&NDlA?&as;*R_)#)WM7+z9c`CXH7|u$` zJt_zjNmh#WRALyg^l(aInvr=CFO^b$v}QLV;usjm*kuLrDlAdv2kEn)`)%?f{>)#r zYO5mS%3=|o)Oiu>laggdyE7+=2~#q5kEGNh7|B!P3Stz2Xex^1Iq0h7b<~m=rVIhJ z=d-4W6>0s*II1dX#(5FqO2Z!5A&opgAsYQ@fir?o&a*;9%wX(A0@IO(DVE>6qj1)pav{Xl#hN$u{3v}v$7R1A2{;^=X zGa~Vs_+c$_x6BhY$x~f%IBTghf)>hjTUDi=>Ss+shuHjA42r+_9zgy<-s+6Fb4E~^ zm#pB%3oZ%(&QnGHnGf)Z4T{pCCOmr6s33wIe$oGZjV@cekdIMnQJY0 zzi2~ITgVR6j$Bc#FTEhr5OWS!a&uF^=%y_g3k98P#Jc8vpT@8B+szd6$E_2nI)TiX zs~X~@G}!g0%iLsiop}&YVmu;286{e}Q`Xn?GyI7u7ZfYvr6j7QXsW?HcCVxg6|#j6 z6(>{wC({NRcy^{#0nIf(iyjjJa1>kK__rC!b;_vhw6}VwAUqhZ7k*k8t}j9t^*<2z zpmyVH(FsHg6S$^qlkG0Y1*K`X9TFWqoqGL+@~Rl zgV&lUI>JQ>lP*^aT_~m7LViz`GNGI6(%IHB1TV0(dPWc$I1^RV`b3fCjuxyqwxu8E zK)k0Dvh6U6kA@Tn23z`L*KvRt;n%YtBwEa8kA5i%d^=V~roEf{Z(z3d&ws^?AK%KK zIz)nnMgw>(i~$!K6f_T;V8(G{bhL9FD!7V&l!m|om6EFfl>!t5z~dZv;~BOkVa?Iy zrMI<=9h`O zgpuaXf+F5?DTs)SM~nG1%)*B~bk6k0DMk_dHe(=tN&lcl=Nr*N=9sk{)lSc!noWvRMp|c?5SpXGvHpPMPfwkDu%{NG(Su>`mh+n5j_CRRj96XV7 z958{;@SlaIk8`*zx0lL<4^54ll;M8$&LzeI-2WYxv|L0p9{sPdyy*w!Ka%Nbef(J@ zlaw$lbSs=HgnqLID?w(YRz}j=2sI(l=7LIcXP0?e6$E{fs8>fTHu?Yh%;!E}f!iR0 zE-PT*A7m`QWvK)kn)$D|AZgRFMkf^bG5Fl*<@P1%i&xZ~TZ=q*r##dAl-?%INW$<+ zo}qb&IMX6?L7Pf+rlKzOM_gcUg>)Qk>ZUp#!%~HiiiKN8ROzL1^p?$$83*y{^W8O4 zo>;tU8m^=o4hW5GD-h+?&TJ_tC${pMymV>xAyXP~^9w698$&J?AiR461_5`)UixP= zl8`2gl+Bk}OkKuU@f#!bBM7ben5ijI}jsGSx3+rCPR;o!c13OME`3n+oTQ z=@^Phsp7kj^zt($X8=7OT824d4V*gI4Q6&k82_$wD@*`nHB2ClrFZE7IY#JpPiY9} z7J7&X#W#;V;8!5%Z74O;R@@s2L1h{LKJu=4m|&A^&2iv-pYiVeYptsPAED^teQQkM#Zf*FDQ-7GWZ-og00}1{eh(A1K<`&vS=L_(? zp?pI`9k{+Xh165(y4*}l&kH1Bf_}Lq?*Ei_fe@N<&;Nigq+D#YK8VGGxE8F1z{ z3NjMh-j~rv!#HE!LQiRW9n=3Iw&th&M-nqZAyBr`Y3&CyoCGRg(8xcvc>DhfjQx+2 z`ClTyqL)-2_v{T&u%O6mKa3Mb?4KoE?>8Sp)nZh`Kcm58J^M$_Ei|43a5VOjON@bX z6yV-akd7M@P6`wFF|e7LCYoprGj3-<9C45cim$oD}nf0t6sS z{Z&B+%k=B|n60qIHG6+OC~en`2nzJZeRXBnr5;pl8B%=OA7?gDuL`L|P{*lhpm(U+ z3MH70{`TaR>X3qSux4q#{wQ&qlnnuK?KHc2#90Rt+AaeQo4TIkui}zH04QDeUj$xK zoTVND*ogcsiQB)3n+b7nk4x1f7)5cmM9Q~G|t=Y>w7^!XdHkuk(&|IT_{rLK>g(R@ICggYnFt+ zl}EGh|Ic8b0i`?_^8=P4i#EZFQ_2ch|Dv-VzO_aWv-ZQ=qbeI4;2fHLtavFm%I3q| zXL((-xCw>1%l_4pc#nO9EiMA!ER}zcSDKzT#`8xCqVM9AA|%p(fU^57_G4w#Ah@UB zoHDldhBBdE4S*tbOWP6YfoKat1C}l3#2DGf3Flc{05)M$0Qa;*My6|qhjeNmkQhQ~ zI}_in%VjjQDIHkWu@BF5{KYKvr3Ta|1c!{y3-(rjNbYG}TuJWfCxoK1MQ;sg!EORs z3V50ga{+yquRYRR#xo^5oHNFZHz$jFj>>UkD*EY=fZK$n;3myd0QKRtk?f}Ty=k?x z3ybrDa;siH>@r?$Rgr{J%%fX7DVLL$Filt@~u*FqNio^Mow|Cs%ewEWM074N|qCh&j}b`p(`gG)`eU zo2Bd(0bCbL6G7kfQuJ`f7t7c0PkVv@y`$fv$mEP(Fy7P|?+4z*aK%2|vNTLTUyqy| z?--dss=aMr)zHP_&nJw;9D^GAuvHQUfE-Op*+^H`qYmPqtFNSfFS0|LGRn*~M-P{(=cW5PAr@-tc> zVRp;pX;UYtvux{ynNz??T6{AW;%ErrsHmt*C*A3bqAAjZ)ZRc24HaqiBsJBakW|2s zJZGs+Xz~Tjw3X)Wov>ec{GGs#L=o)GXsHhB*}ks*KxDHf5$0*n;#B3KL9jIJ<{`3E z?4ouQd3fk0Ex{3htdG|xioz@!aFvz1rr|&99Ma)IP-`>63#Eyy(r-XUp19kWy zq5oKMME*d=wOh__5$nW?44mUXBuOV=qs0}JlCbM zas7ceVStDGIT+6pRBlE5#^Afx&ZIe*AP%r=v2j8)=;%B;Tz{^w;JsDuwUoR_(Yvp6 zTI>M>ahOlf_j{Ne0i4Xx(LzX0)izAFAfm0}%(=7BhAf#9JcA9wWH9>%*bT+_D`b0D zaBSN()a8|$C0Pndt3ggmZFAg5MG9JE61cCMcZ|vNWcpXEt1o51bWt1`m@cw zO@2JoR8Dc$RD}}oAoDr%gUEwn*=*6nbv6nBvqA^-dPv3@!Lz5AbeZ3x0O%;lf_NVz zs)PO9h(`QR7MRJ2Kxd9b|Kp4k8gxEZopXKzb_(Kz6#kSsTZ_|xCpk5hEe(}mwcBsp z_Cts84$%a;EV%F>HB$dcE2(m2<2BLbPF@#;TcMJ8KIiq!&urgTz3p_2*Ge=tjdF;{P#;&Tv(O^<Tf=y{6EhC!XQ+E5OgVw+Kg0Ak{-npg$lLNnB##x3`7oDLr-o$x{EnnIYtZ9?gHnQ2Xmh@XFhIgkCqdNjS#mmIu|uU((@8qs9P6;jfn>~* z=sqVPE2168_$#w<4Eg<}`Cp_e?veen0cd2s!cBg1Mxr=IXL}pc0??jm+nvzOuJ{sy2=N z^G#uXHpJKZ0ppjLRJxQkV=eENkrKvRks;PdL&^{CAB>dIOAhG-xT>7YAjPJJ(-=`;qOM$w1_sX@G}WkLge z0;wFDhRNQSy0M-*$+IN%md3HU*iFATBf5+Jep19UQESb^wOn3Cd3}GemId_=%|m{K zL7WerdVeus83YVdGj*1Fl9c8S$6pM1Hb-6}MkY-Y81hAC&7K4%sP}3jBVk%fQfW<+ zN&w5?jmikjiH%R`VlDGPBoh?q!Gu|J4d-Df%<|iK7!4EM{e1e!B1wJ-OwBeF`UWO? zCEoGCD|*(O!8-Cx{QnRt;>&VZe(EHf(gFEq7H|8I{PdGlVvpJ=)!pE~)ZqmDQ73}( zzt!0w0M&8Bbo;%XWBdoq8+6lI8mu^v5$#^*Og4WxZd@$?^%rQ`}k|QF>TI=wmXu(E}saIh>V@EDa1m2)jss&JEzeN@1x`Q?V}pAsU?c zT-i@Kx*AE>!1{h8CVinAxXYO{T|!Wg|DCL#9WZc6o&YiK;s^)J6sYO#1s7hEaJGDh z&KjL?d2Ry5#kF@gD3zIO-ra_nKrRq$5_xEq;o5!1JD}Y9o3L4sCj-&lx}LaeE(t-+ zjt`I}o}X)9e&Y_>#4YxWwP#xgDrZ2BUPV#CmkKELT-E@#pV5peo+j;=*`W0xF>@`Cm zk{sL;#~S)&eH{ipw1y`#?)?iHXGhS@#hmwRRWOEPg{gNv?1_jtmo^?RTckclPvx{k zeK;?@RbAO|2C`Czkzyy`L&Ml)%tMJD=ap%F>Tvhv!X%@Y=DuloqOIdAN6n>qmWZ#* zU9*Yob^c4`s4t4^!K?<)i+s|QUvD=fZRz2@NBi5rI)(2&IMd6?Q2|4wVqm1~ zo{UNH6EL;J9MN#`2rUdP6(<}PMuU|41=lKk&Ar~IG_U7~3$f+*(rdB01NzVHm8V)q z${@fNR4u@tKP`X%YC-kY)JXZiF8JuVeyc%d1duteo`J&zZkF^Z?sLBPiaA$F;BoD#P@|d~C~R0mCWui6WR{*XXJJER3md z`rSK`Nz#KPcL+aWqivItV;B9(*l7}uW;Xz{`;>#-GH8L*klshZB6@P;HrW2zPXZyk zt?!eoBO)SnF$t#i`^kpw9ppb9`^}T*Yz*uX`x_1f1nu9BnE_iOs~8&D{M9ISE2ZD= zJ2U>sk8cswsaeuCiOuM!v?C!+lSp`8AfNE-FgN0_gxVK=&+ysAGGEn6bw1d}d0x>? zk%I=n;JAoLf|Kxk%sv}^JiHNTwSJ{p(vM&Qj!k$Vc?jJsDz56a9=L z5%6gz9rb9lg-L7CjJi!Nr9Hcn65iXZ%5~F47b6OGu!7QPAQ~HPypA)~>5!FPkn+}) zSR;yqU@q)DJrbm?!5PmZED}ZpH%^^Y5_^xgdncKkH71~vC3<F(qAOBh$rZp7M}avd)Iw!w>%2z5_bwp?QmR~Ec9 zF*Qf6yK!y?kNkTFu(GjnZM81fqdpzeEW4cHv$MU8#X;nY+xyZ{CjAdZEY7FJ1WR`= zTC5JHPYb!jCdh+v+wq33#si2#b0Djx(Xby7D4$zdI=KrdEmegtilf68#gX-9 z?WE?AEXI1_z8k$evwSqS_3BUc<_g%!B80!r-ch1Sg;!1BF?;aEZCT!>2)5|$su(yN z_NUwnq$rP8)$Q9uf-z0k|2X;M2(vUh(brf3(O=5+-dM0d_*|qy+)N z`1dL4Vqt1)%JkQf<*yEBT5`Z{sMtL})loVQmtHnpBRa$`*REDd5YbviVw*&@ZKxHA z&&YcauN?dQ47chA;VxSS>#Bv|FBjf2>A)+4ADosNg)zEePtl0Nf$_v$O% zEMJ5Yg8mM3lzn^BI#TjLB;F}OdK$fI_6mF-Ucuc3dqE;!lDKN7*|%P;)op{Tg~9TG zk!+i-?Q1!LL)D>4Zes`~=@kV(oNPxmB}BiAkCs6Sgicr?E4FIir1wDijd_zF`h8_< z9%cgu0lnDu3Jk>goiLuLXV;1zzZrI;c`!Rsk}d;To!cwO*}2C-!E8oh6lsm+vo&|@d)1f6$H`1f%Zdzk z$Q!-d)hpG7PO81RmSQowXY@y($^|K@IIv-M$OM{q+lbfsgx8DzP?1s8Fd* z5U;R6zEhA(1$kQiCJNjJihOXaeR7vUBIi>PNXCH2pvwMhSrUISKcoc$hum=^?XWf$ zk20F(i-vH?(Ug$3BTrnTNTr4Rsx^?-By6b-xz}5;_BC?YHGhX*g(^GRAkRdhV_e3~ zq6<>FWLwfgxS04@2nA;sv1G4sqk|GFlq)_ZT# zDYIdd{03-=U)>RS>*L)DX)-iyDE+j1 zQidw&${!}4s}a|}_nlkwuCv-M8+e9a+=i3#HgxR$bTUTHCf5t+E%*;3nF{>rdab@E zMQMcNvtc8Fi4Rk0v~@Bf6v<-HH4mm)Hw+aL=jm+cGJK=eFMH@XeM3)4LBisA_$k3l zgs#05zOp=V9GqWp|4n&6C8?{Oc4=vas#yH$&azxF99v#8R{9{#^YGV|{uyd?(SU6B z%VD~FiX@F(Bd#S?BO2Oa8M7SZGk?~sQ79ncKobae-YMoE9TT5XXb9w6A&!&Rv zF6!?C0rq8E5i4AnF8hIjEzR3yob(2RdA8Aq1QI@vVC_We)u;*eJ1sW-3-eZ&kfT52 z?S8vD7nFim+i0a&KV{W?T7Zg*lpEU$+B)F#Qd!LDa`7Em{)6Fqh ziq8-GGUvT7l3-XfZ~(gAZBdu?sIVh>ul~Hdd4~z{$_Cvlg71u_4Otu454K#D1Y;5$ zRK_scdH`&Q3hpL`i69x%PIw)gpXptTX(~x-APs3W;2>Y#ZUjYsmyhtIQti*$$Q-K5 zUhc9OXmA?tu?DpaPi=qLtx7Mu=fS|Q*(AyaPksNQNzI&Q9`=NaQ)aZSV%OluXAfBK zsN8b~twlbKnc_pySM{r+#L{kDAVfwgj@HtwUfQ;b{P}~_N@3)* zpz%3{6xEvN=Z;NPb`U9DSaS%;62kMhE=gtM5+77OK=;t3BuCt{X&NsmB9SyK*E|eB za{t7LKTae(XDHBCO`0FMoNZYGCe~BaDastla%e}G%r9F+gtVx@@M*F9^2p>wvSDqG z#oCr<1t)Y*2!~BQ)i_4eCH<(J)(mNfoXLO+DxECGgqj?IFk8%sDWpZeT|TvG9xOLS z{dkeW_$J7k7Af_{@^bj*HFsRE_#oe)j_+eHogUUHmiw(%_ZRd(bFmyh-qljz2ObnK zd;J9bZS3moVsEQqYr|yeVru)>$6j?*J=_2@I>=8SvGIiQ65cTMMI{s})O@%ash96i z30(UayNShZxTr8G zPCIj{ef2m43cYF?amr*6j|QW0j%&lUk@;L^$NR!_FG(krGQK$3y`fDJHX-bGy<KoWU2ei3UR&Ea{*a#>b z`yaypNLFyNcX0k|RI}si?E;z6#lH3o-0hFEg8Z38{@6v6|jWlX%D0rCFOQ; z+i@JNUW8&qBEKU%N}s+x-Rv@-Y9W)fZ+q}^gfOEPxErmWKK zlJOaXCHsL1+*RuIs>|-{$TKnf1AaNy`gjh`qzC5>97B>N{gEd4Yvl?WWs^j-G9~`cCNNY zrcS`B%%ALTT4T#@pBuY-r&K6jT&FoaksX4)sX$0gH(H#m`5uH4yY4)9jD>mgTIR}l znyxBauq=X27R_xk`jhVt&$~C^74p~XO<=+{QaHLZ=XIcV>5d5fvCP!U!TZnDQ_9Pq zO0er_XftzdzCxBCd+)Kczfm_9Akk=ROQ|(@zf;|=eV0s+vf+#73LAJx+1I#9sy(!w zDxX%T!zc5a9bRxF*fmiP-(`_j9%c)+fmW`}D|}_;ggdxfaLrQKGFEf!stuzGE8mTP zhb!*DuntD4-8d9?q*U04q|_i}S67(799dDTQ|xzCUe0GBQ|+^mkV>DraJv5znJ*e9 z6EQ`?MrcoC#7Z}d8CDj+Bg4hbbH0)!2gyYtbrmAd*(vY0GxLz{=f!~!%S7Xw9!Nb- zS8EP20~uox0p}Znn|_2`M> zN5IUegknxqOk>NISo`AL-a|M&=XPWLZr#1$glQOxvfey;IOjKj+ePO?B=YKav(bga zPoqxC`jhD47(#zMgl;JbBdXaup^D_*U6s_D9x3(dh1*FFVlv zy6U-C)PBln0x~S5ukt1?%45qaA<9&lzKW z-kIjTYu4rZ4buZfso#BE?Fev)}2z#nF92O5ghF_r7UWelu3^O{iJkjPyE!i}176hS$^cW*+$BSJVP9x#%TEd<(pYG|kAb>p z3mYc!+c>j1BIUY~Y!ZEs7$>;62ruLbEg#a!-s@GU5hx5 z*>;_K0*;a4&ZU#}oPRmo*rITg}EE@-yvCAyz1abBPOxj((289y~F^@vxWIZDghSiJ+inQ9v( zZqW#BraaGNzwYBMv>dvq(H*k*_EUtvUC8}~S@c|Fop@pGe@|jb<_(3-rAo<$Rm6R zNwexx~iJ=z~F8nq2Xb9vHKM{#)Nh#avGK`gs0=?tYNX}OAy<&9iQw7F|i z=urnD*UaN4=)uxdo7>mAQo>xv_XwY1%BC(1sie9xNi(*>lh8vvi^__*T8Ok#xBaFQ zM8p32=lx+FUWZ}R8??n?fvt|jibzc(0tz#A@8x-ge&}wRJ9X^MaDl^(F1Y*6MU4Qz zPR%N{n4}M4UQ#K#K^NstYc;7{9@9`xc`#d|x!{31eQDY(qLtjUQ+`reO26q3{kLIM z_j6B0#>72Y38`({yJg&1-Dz%=^s2K>@3SPcr-rl&654H^(&2*%H_o0-Ri_*{H=9-P z@K$>bp?8whNGM}eW^@}9a3MBR!-zTjkVb5p9g{hDUJcrC=JUM36apiS!99XnRiNql$%%J1y0j65$ z*!jSbBhcVGuv;WCRiCTTYkn=7Byt{$5_fi?)l`5=%CMg;`Box}yAur5oxGq3=sZEZ0J+{y&<$kHn`@JkeW3@EI8^AH55QwY*9tE`gz&!#3*ZS8m znm#2H7&6od+<7k0`mJ&RC_?;!v9E;(5Y;vq1D&@4U8xIn?j*B}e;@g3$(pl}TB^7& z#Q*|vbyx?1378&3mrdAU90v8RTnU~7@CzkZc%o1wQUC_MUJ~p9*Gc&v4tB+}s)z!{ z!G#w-J`}o)gUT>q1Go^uH^6Yq27$5!miuJ zFTlpE7OWNaf?eR)k?+F9u67AVl3)us)Z$xW;+AJcAn*e7;Qb(<*GO8m!~}PTcGl~F R6|}Uf>VIf_odf^? literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.scala deleted file mode 100644 index 95385b510..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Talon.scala +++ /dev/null @@ -1,94 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.finagle.Backoff -import com.twitter.finagle.service.RetryPolicy -import com.twitter.service.talon.thriftscala.ExpandRequest -import com.twitter.service.talon.thriftscala.ExpandResponse -import com.twitter.service.talon.thriftscala.ResponseCode -import com.twitter.service.talon.thriftscala.ShortenRequest -import com.twitter.service.talon.thriftscala.ShortenResponse -import com.twitter.service.talon.{thriftscala => talon} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.core.OverCapacity -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object Talon { - import Backend._ - - type Expand = FutureArrow[talon.ExpandRequest, talon.ExpandResponse] - type Shorten = FutureArrow[talon.ShortenRequest, talon.ShortenResponse] - - case object TransientError extends Exception() - case object PermanentError extends Exception() - - def fromClient(client: talon.Talon.MethodPerEndpoint): Talon = - new Talon { - val shorten = FutureArrow(client.shorten _) - val expand = FutureArrow(client.expand _) - def ping(): Future[Unit] = client.serviceInfo().unit - } - - case class Config( - shortenTimeout: Duration, - expandTimeout: Duration, - timeoutBackoffs: Stream[Duration], - transientErrorBackoffs: Stream[Duration]) { - def apply(svc: Talon, ctx: Backend.Context): Talon = - new Talon { - val shorten: FutureArrow[ShortenRequest, ShortenResponse] = - policy("shorten", shortenTimeout, shortenResponseCode, ctx)(svc.shorten) - val expand: FutureArrow[ExpandRequest, ExpandResponse] = - policy("expand", expandTimeout, expandResponseCode, ctx)(svc.expand) - def ping(): Future[Unit] = svc.ping() - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - getResponseCode: B => talon.ResponseCode, - ctx: Context - ): Builder[A, B] = - handleResponseCodes(name, getResponseCode, ctx) andThen - defaultPolicy(name, requestTimeout, retryPolicy, ctx) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicy.combine[Try[B]]( - RetryPolicyBuilder.timeouts[B](timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(transientErrorBackoffs)) { - case Throw(TransientError) => true - } - ) - - private[this] def handleResponseCodes[A, B]( - name: String, - extract: B => talon.ResponseCode, - ctx: Context - ): Builder[A, B] = { - val scopedStats = ctx.stats.scope(name) - val responseCodeStats = scopedStats.scope("response_code") - _ andThen FutureArrow[B, B] { res => - val responseCode = extract(res) - responseCodeStats.counter(responseCode.toString).incr() - responseCode match { - case talon.ResponseCode.TransientError => Future.exception(TransientError) - case talon.ResponseCode.PermanentError => Future.exception(PermanentError) - case talon.ResponseCode.ServerOverloaded => Future.exception(OverCapacity("talon")) - case _ => Future.value(res) - } - } - } - } - - def shortenResponseCode(res: talon.ShortenResponse): ResponseCode = res.responseCode - def expandResponseCode(res: talon.ExpandResponse): ResponseCode = res.responseCode - - implicit val warmup: Warmup[Talon] = Warmup[Talon]("talon")(_.ping()) -} - -trait Talon { - import Talon._ - val shorten: Shorten - val expand: Expand - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.docx new file mode 100644 index 0000000000000000000000000000000000000000..7a79028b6bd14541721ff5c1b7fd7b5272b703d2 GIT binary patch literal 37749 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 BkDCAh literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.scala deleted file mode 100644 index a8c9b74db..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/TimelineService.scala +++ /dev/null @@ -1,84 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.finagle.Backoff -import com.twitter.finagle.service.RetryPolicy -import com.twitter.servo.util.FutureArrow -import com.twitter.timelineservice.thriftscala.Event -import com.twitter.timelineservice.thriftscala.PerspectiveQuery -import com.twitter.timelineservice.thriftscala.PerspectiveResult -import com.twitter.timelineservice.thriftscala.ProcessEventResult -import com.twitter.timelineservice.thriftscala.StatusTimelineResult -import com.twitter.timelineservice.thriftscala.TimelineQuery -import com.twitter.timelineservice.{thriftscala => tls} -import com.twitter.tweetypie.util.RetryPolicyBuilder - -object TimelineService { - import Backend._ - - type GetStatusTimeline = FutureArrow[Seq[tls.TimelineQuery], Seq[tls.StatusTimelineResult]] - type GetPerspectives = FutureArrow[Seq[tls.PerspectiveQuery], Seq[tls.PerspectiveResult]] - type ProcessEvent2 = FutureArrow[tls.Event, tls.ProcessEventResult] - - private val warmupQuery = - // we need a non-empty query, since tls treats empty queries as an error - tls.TimelineQuery( - timelineType = tls.TimelineType.User, - timelineId = 620530287L, // same user id that timelineservice-api uses for warmup - maxCount = 1 - ) - - def fromClient(client: tls.TimelineService.MethodPerEndpoint): TimelineService = - new TimelineService { - val processEvent2 = FutureArrow(client.processEvent2 _) - val getStatusTimeline = FutureArrow(client.getStatusTimeline _) - val getPerspectives = FutureArrow(client.getPerspectives _) - def ping(): Future[Unit] = - client.touchTimeline(Seq(warmupQuery)).handle { case _: tls.InternalServerError => } - } - - case class Config(writeRequestPolicy: Policy, readRequestPolicy: Policy) { - - def apply(svc: TimelineService, ctx: Backend.Context): TimelineService = { - val build = new PolicyAdvocate("TimelineService", ctx, svc) - new TimelineService { - val processEvent2: FutureArrow[Event, ProcessEventResult] = - build("processEvent2", writeRequestPolicy, _.processEvent2) - val getStatusTimeline: FutureArrow[Seq[TimelineQuery], Seq[StatusTimelineResult]] = - build("getStatusTimeline", readRequestPolicy, _.getStatusTimeline) - val getPerspectives: FutureArrow[Seq[PerspectiveQuery], Seq[PerspectiveResult]] = - build("getPerspectives", readRequestPolicy, _.getPerspectives) - def ping(): Future[Unit] = svc.ping() - } - } - } - - case class FailureBackoffsPolicy( - timeoutBackoffs: Stream[Duration] = Stream.empty, - tlsExceptionBackoffs: Stream[Duration] = Stream.empty) - extends Policy { - def toFailureRetryPolicy: FailureRetryPolicy = - FailureRetryPolicy( - RetryPolicy.combine( - RetryPolicyBuilder.timeouts(timeoutBackoffs), - RetryPolicy.backoff(Backoff.fromStream(tlsExceptionBackoffs)) { - case Throw(ex: tls.InternalServerError) => true - } - ) - ) - - def apply[A, B](name: String, ctx: Context): Builder[A, B] = - toFailureRetryPolicy(name, ctx) - } - - implicit val warmup: Warmup[TimelineService] = - Warmup[TimelineService]("timelineservice")(_.ping()) -} - -trait TimelineService { - import TimelineService._ - val processEvent2: ProcessEvent2 - val getStatusTimeline: GetStatusTimeline - val getPerspectives: GetPerspectives - def ping(): Future[Unit] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.docx new file mode 100644 index 0000000000000000000000000000000000000000..35a7188185e526ad19e0c81ddfdd9f18da4abeb7 GIT binary patch literal 37450 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.scala deleted file mode 100644 index e756d5202..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/UserImageService.scala +++ /dev/null @@ -1,71 +0,0 @@ -package com.twitter.tweetypie -package backends - -import com.twitter.finagle.service.RetryPolicy -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.util.RetryPolicyBuilder -import com.twitter.user_image_service.thriftscala.ProcessTweetMediaRequest -import com.twitter.user_image_service.thriftscala.ProcessTweetMediaResponse -import com.twitter.user_image_service.thriftscala.UpdateProductMetadataRequest -import com.twitter.user_image_service.thriftscala.UpdateTweetMediaRequest -import com.twitter.user_image_service.thriftscala.UpdateTweetMediaResponse -import com.twitter.user_image_service.{thriftscala => uis} - -object UserImageService { - import Backend._ - - type ProcessTweetMedia = FutureArrow[uis.ProcessTweetMediaRequest, uis.ProcessTweetMediaResponse] - type UpdateProductMetadata = FutureArrow[uis.UpdateProductMetadataRequest, Unit] - type UpdateTweetMedia = FutureArrow[uis.UpdateTweetMediaRequest, uis.UpdateTweetMediaResponse] - - def fromClient(client: uis.UserImageService.MethodPerEndpoint): UserImageService = - new UserImageService { - val processTweetMedia = FutureArrow(client.processTweetMedia) - val updateProductMetadata: FutureArrow[UpdateProductMetadataRequest, Unit] = FutureArrow( - client.updateProductMetadata).unit - val updateTweetMedia = FutureArrow(client.updateTweetMedia) - } - - case class Config( - processTweetMediaTimeout: Duration, - updateTweetMediaTimeout: Duration, - timeoutBackoffs: Stream[Duration]) { - - def apply(svc: UserImageService, ctx: Backend.Context): UserImageService = - new UserImageService { - val processTweetMedia: FutureArrow[ProcessTweetMediaRequest, ProcessTweetMediaResponse] = - policy("processTweetMedia", processTweetMediaTimeout, ctx)(svc.processTweetMedia) - val updateProductMetadata: FutureArrow[UpdateProductMetadataRequest, Unit] = - policy("updateProductMetadata", processTweetMediaTimeout, ctx)(svc.updateProductMetadata) - val updateTweetMedia: FutureArrow[UpdateTweetMediaRequest, UpdateTweetMediaResponse] = - policy("updateTweetMedia", updateTweetMediaTimeout, ctx)(svc.updateTweetMedia) - } - - private[this] def policy[A, B]( - name: String, - requestTimeout: Duration, - ctx: Context - ): Builder[A, B] = - defaultPolicy( - name = name, - requestTimeout = requestTimeout, - retryPolicy = retryPolicy, - ctx = ctx, - exceptionCategorizer = { - case _: uis.BadRequest => Some("success") - case _ => None - } - ) - - private[this] def retryPolicy[B]: RetryPolicy[Try[B]] = - RetryPolicyBuilder.timeouts[Any](timeoutBackoffs) - } -} - -trait UserImageService { - import UserImageService._ - - val processTweetMedia: ProcessTweetMedia - val updateProductMetadata: UpdateProductMetadata - val updateTweetMedia: UpdateTweetMedia -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Warmup.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/backends/Warmup.docx new file mode 100644 index 0000000000000000000000000000000000000000..7e3b76a577ed3d8c352463cd4704aae7a3e32f3e GIT binary patch literal 40350 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 Tm_a{h6&1)Fm>yi|KhORL$K } - } - - /** - * Strategy for running Warmup actions. - */ - trait Runner { self => - - /** - * Run one single warmup action. - */ - def runOne(name: String, action: => Future[Unit]): Future[Unit] - - /** - * Compose these two Runners by calling this Runner's runOne - * inside of other's runOne. - */ - final def within(other: Runner): Runner = - new Runner { - override def runOne(name: String, action: => Future[Unit]): Future[Unit] = - other.runOne(name, self.runOne(name, action)) - } - - /** - * Execute all of the warmup actions for the given value using - * this runner. - */ - final def run[T](t: T)(implicit w: Warmup[T]): Future[Unit] = - Future.join(w.actions.toSeq.map { case (name, f) => runOne(name, f(t).unit) }) - } - - /** - * Set a ceiling on the amount of time each kind of warmup action is - * allowed to take. - */ - class WithTimeouts(timeouts: Map[String, Duration], timer: Timer) extends Runner { - override def runOne(name: String, action: => Future[Unit]): Future[Unit] = - timeouts.get(name).map(action.raiseWithin(_)(timer)).getOrElse(action) - } - - /** - * Execute each action until its reliability is estimated to be - * above the given threshold. The reliability is initially assumed - * to be zero. The reliability is estimated as an exponential moving - * average, with the new data point given the appropriate weight so - * that a single data point will no longer be able to push the - * average below the threshold. - * - * The warmup action is considered successful if it does not throw - * an exception. No timeouts are applied. - * - * The threshold must be in the interval [0, 1). - * - * The concurrency level determines how many outstanding requests - * to maintain until the threshold is reached. This allows warmup - * to happen more rapidly when individual requests have high - * latency. - * - * maxAttempts limits the total number of tries that we are allowed - * to try to reach the reliability threshold. This is a safety - * measure to prevent overloading whatever subsystem we are - * attempting to warm up. - */ - case class Reliably(reliabilityThreshold: Double, concurrency: Int, maxAttempts: Int) - extends Runner { - require(reliabilityThreshold < 1) - require(reliabilityThreshold >= 0) - require(concurrency > 0) - require(maxAttempts > 0) - - // Find the weight at which one failure will not push us under the - // reliabilityThreshold. - val weight: Double = 1 - math.pow( - 1 - reliabilityThreshold, - (1 - reliabilityThreshold) / reliabilityThreshold - ) - - // Make sure that rounding error did not cause weight to become zero. - require(weight > 0) - require(weight <= 1) - - // On each iteration, we discount the current reliability by this - // factor before adding in the new reliability data point. - val decay: Double = 1 - weight - - // Make sure that rounding error did not cause decay to be zero. - require(decay < 1) - - override def runOne(name: String, action: => Future[Unit]): Future[Unit] = { - def go(attempts: Int, reliability: Double, outstanding: Seq[Future[Unit]]): Future[Unit] = - if (reliability >= reliabilityThreshold || (attempts == 0 && outstanding.isEmpty)) { - // We hit the threshold or ran out of tries. Don't cancel any - // outstanding requests, just wait for them all to complete. - Future.join(outstanding.map(_.handle { case _ => })) - } else if (attempts > 0 && outstanding.length < concurrency) { - // We have not yet hit the reliability threshold, and we - // still have available concurrency, so make a new request. - go(attempts - 1, reliability, action +: outstanding) - } else { - val sel = Future.select(outstanding) - - // We need this promise wrapper because if the select is - // interrupted, it relays the interrupt to the outstanding - // requests but does not itself return with a - // failure. Wrapping in a promise lets us differentiate - // between an interrupt coming from above and the created - // Future failing for another reason. - val p = new Promise[(Try[Unit], Seq[Future[Unit]])] - p.setInterruptHandler { - case e => - // Interrupt the outstanding requests. - sel.raise(e) - // Halt the computation with a failure. - p.updateIfEmpty(Throw(e)) - } - - // When the select finishes, update the promise with the value. - sel.respond(p.updateIfEmpty) - p.flatMap { - case (tryRes, remaining) => - val delta = if (tryRes.isReturn) weight else 0 - go(attempts, reliability * decay + delta, remaining) - } - } - - go(maxAttempts, 0, Seq.empty) - } - } - - /** - * Write a log message recording each invocation of each warmup - * action. The log message is comma-separated, with the following - * fields: - * - * name: - * The supplied name. - * - * start time: - * The number of milliseconds since the start of the Unix - * epoch. - * - * duration: - * How long this warmup action took, in milliseconds. - * - * result: - * "passed" or "failed" depending on whether the Future - * returned an exception. - * - * exception type: - * If the result "failed", then this will be the name of - * the exception that casued the failure. If it "passed", - * it will be the empty string. - * - * These messages should be sufficient to get a picture of how - * warmup proceeded, since they allow the messages to be ordered - * and sorted by type. You can use this information to tune the - * warmup parameters. - */ - class Logged(logger: Logger) extends Runner { - override def runOne(name: String, action: => Future[Unit]): Future[Unit] = { - val start = Time.now - val startStr = start.sinceEpoch.inMilliseconds.toString - - action.respond { - case Throw(WarmupComplete) => - // Don't log anything for computations that we abandoned - // because warmup is complete. - - case r => - val duration = (Time.now - start).inMilliseconds - val result = r match { - case Throw(e) => "failed," + e.toString.takeWhile(_ != '\n') - case _ => "passed," - } - logger.info(s"$name,${startStr}ms,${duration}ms,$result") - } - } - } - - /** - * Ensure that no more than the specified number of invocations of a - * warmup action are happening at one time. - */ - class LimitedConcurrency(limit: Int) extends Runner { - private[this] val sem = new AsyncSemaphore(limit) - override def runOne(name: String, action: => Future[Unit]): Future[Unit] = - sem.acquireAndRun(action) - } - - /** - * Create a new Warmup that performs this single action. - */ - def apply[A](name: String)(f: A => Future[_]): Warmup[A] = new Warmup(Map(name -> f)) - - /** - * Create a Warmup that does nothing. This is useful in concert with - * warmField. - */ - def empty[A]: Warmup[A] = new Warmup[A](Map.empty) -} - -/** - * A set of independent warmup actions. Each action should be the - * minimum work that can be done in order to exercise a code - * path. Runners can be used to e.g. run the actions repeatedly or - * with timeouts. - */ -class Warmup[A](val actions: Map[String, A => Future[_]]) { - def ++(other: Warmup[A]) = new Warmup[A](actions ++ other.actions) - - /** - * The names of the individual warmup actions that this warmup is - * composed of. - */ - def names: Set[String] = actions.keySet - - /** - * Create a new Warmup that does all of the actions of this warmup - * and additionally does warmup on the value specified by `f`. - */ - def warmField[B](f: A => B)(implicit w: Warmup[B]): Warmup[A] = - new Warmup[A](actions ++ (w.actions.mapValues(f.andThen))) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD deleted file mode 100644 index 7dc0a6379..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD +++ /dev/null @@ -1,135 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/fasterxml/jackson/dataformat:jackson-dataformat-yaml", - "3rdparty/jvm/com/fasterxml/jackson/module:jackson-module-scala", - "3rdparty/jvm/io/netty:netty4-tcnative-boringssl-static", - "3rdparty/jvm/org/apache/kafka:kafka-clients", - "3rdparty/jvm/org/apache/thrift:libthrift", - "ads-common/loggingclient/src/main/scala", - "core-app-services/failed_task/src/scala/com/twitter/coreservices/failed_task/writer", - "creatives-container/thrift/src/main/thrift:creatives-container-service-scala", - "decider", - "deferredrpc/client", - "deferredrpc/client/src/main/thrift:thrift-scala", - "eventbus/client", - "fanoutservice/thrift/src/main/thrift:thrift-scala", - "featureswitches/featureswitches-core:v2", - "featureswitches/featureswitches-core/src/main/scala", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authorization", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authorization/server", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/client", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/server", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/transport", - "finagle/finagle-core/src/main", - "finagle/finagle-http/src/main/scala", - "finagle/finagle-memcached/src/main/scala", - "finagle/finagle-mux/src/main/scala", - "finagle/finagle-stats", - "finagle/finagle-thrift", - "finagle/finagle-thrift/src/main/java", - "finagle/finagle-thriftmux", - "finatra-internal/kafka/src/main/scala/com/twitter/finatra/kafka/producers", - "finatra/inject/inject-slf4j/src/main/scala/com/twitter/inject", - "flock-client/src/main/scala", - "flock-client/src/main/thrift:thrift-scala", - "geoduck/service/src/main/scala/com/twitter/geoduck/service/common/clientmodules", - "geoduck/util/src/main/scala/com/twitter/geoduck/util/service", - "kafka/finagle-kafka/finatra-kafka/src/main/scala", - "limiter-client", - "limiter/thrift-only/src/main/thrift:thrift-scala", - "mediaservices/mediainfo-server/thrift/src/main/thrift:thrift-scala", - "passbird/thrift-only/src/main/thrift:thrift-scala", - "quill/capture", - "quill/core/src/main/thrift:thrift-scala", - "scrooge/scrooge-core", - "tweetypie/servo/repo/src/main/scala", - "tweetypie/servo/repo/src/main/thrift:thrift-scala", - "tweetypie/servo/request/src/main/scala", - "tweetypie/servo/util", - "snowflake:client", - "snowflake/src/main/scala/com/twitter/snowflake/id", - "snowflake/src/main/thrift:thrift-scala", - "src/scala/com/twitter/ads/internal/pcl/service", - "src/scala/com/twitter/search/blender/services/strato", - "src/thrift/com/twitter/ads/adserver:adserver_rpc-scala", - "src/thrift/com/twitter/context:twitter-context-scala", - "src/thrift/com/twitter/escherbird:annotation-service-scala", - "src/thrift/com/twitter/escherbird/metadata:metadata-service-scala", - "src/thrift/com/twitter/expandodo:cards-scala", - "src/thrift/com/twitter/expandodo:only-scala", - "src/thrift/com/twitter/geoduck:geoduck-scala", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/merlin:thrift-scala", - "src/thrift/com/twitter/service/scarecrow/gen:scarecrow-scala", - "src/thrift/com/twitter/service/talon/gen:thrift-scala", - "src/thrift/com/twitter/socialgraph:thrift-scala", - "src/thrift/com/twitter/spam/rtf:tweet-rtf-event-scala", - "src/thrift/com/twitter/timelineservice:thrift-scala", - "src/thrift/com/twitter/timelineservice/server/internal:thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:delete_location_data-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:events-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:stored-tweet-info-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet_comparison_service-scala", - "stitch/stitch-core", - "stitch/stitch-repo/src/main/scala", - "stitch/stitch-timelineservice/src/main/scala", - "storage/clients/manhattan/client/src/main/scala", - "strato/src/main/scala/com/twitter/strato/catalog", - "strato/src/main/scala/com/twitter/strato/client", - "strato/src/main/scala/com/twitter/strato/fed/server", - "strato/src/main/scala/com/twitter/strato/rpc", - "strato/src/main/scala/com/twitter/strato/server", - "strato/src/main/scala/com/twitter/strato/util", - "stringcenter/client/src/main/scala", - "tweetypie/server/config", - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/backends", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/core", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/warmups", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/handler", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/media", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/repository", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/service", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/store", - "tweetypie/server/src/main/thrift:compiled-scala", - "tweetypie/common/src/scala/com/twitter/tweetypie/caching", - "tweetypie/common/src/scala/com/twitter/tweetypie/client_id", - "tweetypie/common/src/scala/com/twitter/tweetypie/context", - "tweetypie/common/src/scala/com/twitter/tweetypie/decider", - "tweetypie/common/src/scala/com/twitter/tweetypie/jiminy/tweetypie", - "tweetypie/common/src/scala/com/twitter/tweetypie/matching", - "tweetypie/common/src/scala/com/twitter/tweetypie/media", - "tweetypie/common/src/scala/com/twitter/tweetypie/storage", - "tweetypie/common/src/scala/com/twitter/tweetypie/tflock", - "tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala", - "tweetypie/common/src/scala/com/twitter/tweetypie/thriftscala/entities", - "tweetypie/common/src/scala/com/twitter/tweetypie/tweettext", - "tweetypie/common/src/scala/com/twitter/tweetypie/util", - "twitter-config/yaml", - "twitter-context", - "twitter-server-internal", - "twitter-server/server/src/main/scala", - "user-image-service/thrift/src/main/thrift:thrift-scala", - "util/util-app", - "util/util-hashing/src/main/scala", - "util/util-slf4j-api/src/main/scala", - "util/util-stats/src/main/scala", - "visibility/common/src/main/scala/com/twitter/visibility/common", - "visibility/common/src/main/scala/com/twitter/visibility/common/tflock", - "visibility/lib:tweets", - "visibility/lib/src/main/scala/com/twitter/visibility/util", - "visibility/writer/src/main/scala/com/twitter/visibility/writer", - "visibility/writer/src/main/scala/com/twitter/visibility/writer/interfaces/tweets", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..67f62d0955335ac18c88351e1eb96e1792ce8116 GIT binary patch literal 38097 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.docx new file mode 100644 index 0000000000000000000000000000000000000000..705c1ae69e2d4f34b7700f34dd0bb8dd5232749e GIT binary patch literal 45099 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%0A*?x?J)AN!~?8cAk1bmmX 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.scala deleted file mode 100644 index 044177438..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/BackendClients.scala +++ /dev/null @@ -1,796 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.ads.internal.pcl.service.CallbackPromotedContentLogger -import com.twitter.ads.loggingclient.AdsLoggingClient -import com.twitter.adserver.thriftscala.AdCallbackEvent -import com.twitter.conversions.DurationOps._ -import com.twitter.conversions.PercentOps._ -import com.twitter.container.{thriftscala => ccs} -import com.twitter.deferredrpc.client.DeferredThriftService -import com.twitter.deferredrpc.thrift.Datacenter -import com.twitter.deferredrpc.thrift.DeferredRPC -import com.twitter.deferredrpc.thrift.Target -import com.twitter.escherbird.thriftscala.TweetEntityAnnotationService$FinagleClient -import com.twitter.escherbird.thriftscala.{ - TweetEntityAnnotationService => TweetEntityAnnotationScroogeIface -} -import com.twitter.eventbus.client.EventBusPublisher -import com.twitter.eventbus.client.EventBusPublisherBuilder -import com.twitter.expandodo.thriftscala.CardsService$FinagleClient -import com.twitter.expandodo.thriftscala.{CardsService => CardsScroogeIface} -import com.twitter.finagle._ -import com.twitter.finagle.builder.ClientBuilder -import com.twitter.finagle.client.Transporter -import com.twitter.finagle.factory.TimeoutFactory -import com.twitter.finagle.liveness.FailureAccrualFactory -import com.twitter.finagle.loadbalancer.Balancers -import com.twitter.finagle.mtls.authentication.EmptyServiceIdentifier -import com.twitter.finagle.mtls.client.MtlsClientBuilder._ -import com.twitter.finagle.mtls.client.MtlsStackClient._ -import com.twitter.finagle.partitioning.param -import com.twitter.finagle.service.TimeoutFilter.PropagateDeadlines -import com.twitter.finagle.service._ -import com.twitter.finagle.ssl.OpportunisticTls -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ThriftClientRequest -import com.twitter.finagle.thriftmux.MethodBuilder -import com.twitter.finagle.tracing.DefaultTracer -import com.twitter.flockdb.client.thriftscala.FlockDB -import com.twitter.flockdb.client.FlockResponse -import com.twitter.flockdb.client.TFlockClient -import com.twitter.flockdb.client.UserTimelineGraph -import com.twitter.geoduck.backend.hydration.thriftscala.{Hydration => GeoduckHydration} -import com.twitter.geoduck.backend.relevance.thriftscala.Relevance -import com.twitter.geoduck.backend.relevance.thriftscala.Relevance$FinagleClient -import com.twitter.geoduck.backend.relevance.thriftscala.RelevanceContext -import com.twitter.geoduck.service.common.clientmodules.GeoduckGeohashLocate -import com.twitter.geoduck.thriftscala.ReverseGeocoder -import com.twitter.geoduck.util.service.GeoduckLocate -import com.twitter.gizmoduck.thriftscala.UserService -import com.twitter.hashing.KeyHasher -import com.twitter.limiter.client.LimiterClientFactory -import com.twitter.mediainfo.server.thriftscala.MediaInfoService$FinagleClient -import com.twitter.mediainfo.server.thriftscala.{MediaInfoService => MediaInfoScroogeIface} -import com.twitter.merlin.thriftscala.UserRolesService -import com.twitter.passbird.thriftscala.PassbirdService -import com.twitter.passbird.thriftscala.PassbirdService$FinagleClient -import com.twitter.service.gen.scarecrow.thriftscala.ScarecrowService$FinagleClient -import com.twitter.service.gen.scarecrow.thriftscala.{ScarecrowService => ScarecrowScroogeIface} -import com.twitter.service.talon.thriftscala.Talon$FinagleClient -import com.twitter.service.talon.thriftscala.{Talon => TalonScroogeIface} -import com.twitter.snowflake.client.SnowflakeClient -import com.twitter.snowflake.thriftscala.Snowflake -import com.twitter.socialgraph.thriftscala.SocialGraphService$FinagleClient -import com.twitter.socialgraph.thriftscala.{SocialGraphService => SocialGraphScroogeIface} -import com.twitter.storage.client.manhattan.kv.Experiments -import com.twitter.storage.client.manhattan.kv.ManhattanKVClient -import com.twitter.storage.client.manhattan.kv.ManhattanKVClientMtlsParams -import com.twitter.storage.client.manhattan.kv.NoMtlsParams -import com.twitter.strato.client.Strato -import com.twitter.strato.client.{Client => StratoClient} -import com.twitter.timelineservice.fanout.thriftscala.FanoutService -import com.twitter.timelineservice.fanout.thriftscala.FanoutService$FinagleClient -import com.twitter.timelineservice.{thriftscala => tls} -import com.twitter.tweetypie.backends._ -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.media.MediaClient -import com.twitter.tweetypie.service.ReplicatingTweetService.GatedReplicationClient -import com.twitter.tweetypie.storage.ManhattanTweetStorageClient -import com.twitter.tweetypie.storage.TweetStorageClient -import com.twitter.tweetypie.store._ -import com.twitter.tweetypie.thriftscala.DeleteLocationData -import com.twitter.tweetypie.thriftscala.RetweetArchivalEvent -import com.twitter.tweetypie.thriftscala.TweetEvent -import com.twitter.tweetypie.thriftscala.TweetServiceInternal$FinagleClient -import com.twitter.user_image_service.thriftscala.UserImageService$FinagleClient -import com.twitter.user_image_service.thriftscala.{UserImageService => UserImageScroogeIface} -import com.twitter.util.Throw -import com.twitter.util.Timer -import com.twitter.util.{TimeoutException => UtilTimeoutException} -import scala.util.Random - -trait BackendClients { - - /** returns all the finagle.Names created while building clients */ - def referencedNames: Seq[Name] - - val asyncRetryTweetService: ThriftTweetService - val asyncTweetDeletionService: ThriftTweetService - val asyncTweetService: ThriftTweetService - val configBus: ConfigBus - val creativesContainerService: CreativesContainerService - val darkTrafficClient: Service[Array[Byte], Array[Byte]] - val deleteLocationDataPublisher: EventBusPublisher[DeleteLocationData] - val escherbird: Escherbird - val expandodo: Expandodo - val fanoutServiceClient: FanoutService.MethodPerEndpoint - val geoHydrationLocate: GeoduckLocate - val geoRelevance: Relevance.MethodPerEndpoint - val geoScrubEventStore: GeoScrubEventStore - val geoduckGeohashLocate: GeoduckGeohashLocate - val gizmoduck: Gizmoduck - val gnipEnricherator: GnipEnricherator - val guano: Guano - val limiterService: LimiterService - val lowQoSReplicationClients: Seq[GatedReplicationClient] - val mediaClient: MediaClient - val mediaInfoService: MediaInfoService - val memcacheClient: memcached.Client - val merlin: UserRolesService.MethodPerEndpoint - val passbirdClient: PassbirdService.MethodPerEndpoint - val replicationClient: ThriftTweetService - val retweetArchivalEventPublisher: EventBusPublisher[RetweetArchivalEvent] - val scarecrow: Scarecrow - val snowflakeClient: SnowflakeClient.SnowflakeClient - val socialGraphService: SocialGraphService - val stratoserverClient: StratoClient - val talon: Talon - val tflockReadClient: TFlockClient - val tflockWriteClient: TFlockClient - val timelineService: TimelineService - val tweetEventsPublisher: EventBusPublisher[TweetEvent] - val tweetStorageClient: TweetStorageClient - val userImageService: UserImageService - val callbackPromotedContentLogger: CallbackPromotedContentLogger -} - -/** - * default implementation of BackendClients that connects to real, remote - * backend services. - */ -object BackendClients { - // for most services, tweetypie typically maintains only a single connection to - // each host in the cluster, and that is enough for normal steady-state work. - // to prevent ddos'ing backends during unusual traffic influxes, we set the host - // connection limit to be 2-3x the steady-state daily peak, giving plenty of head - // room but without allowing an excessive number of connections. - private val defaultHostConnectionLimit = 3 - - // 100ms is greater than most gc pauses; smaller values cause more timeouts - private val defaultConnectTimeout = 100.milliseconds - // tcpConnect timeout is less than half of defaultConnectTimeout, to allow at least - // two tries (except when there is a GC pause) - private val defaultTcpConnectTimeout = 20.milliseconds - - private val WriteExceptionsOnly: PartialFunction[Try[Nothing], Boolean] = - RetryPolicy.WriteExceptionsOnly - - private val ClosedExceptionsOnly: PartialFunction[Try[Nothing], Boolean] = { - case Throw(_: ChannelClosedException) => true - } - - private val TimeoutExceptionsOnly: PartialFunction[Try[Nothing], Boolean] = { - case Throw(_: TimeoutException) => true - case Throw(_: UtilTimeoutException) => true - } - - private val NoBackoff = Backoff.const(0.second) - - private def retry(writeExceptions: Int = 100, closedExceptions: Int = 2, timeouts: Int = 0) = - RetryPolicy.combine( - RetryPolicy.backoff(NoBackoff.take(writeExceptions))(WriteExceptionsOnly), - RetryPolicy.backoff(NoBackoff.take(closedExceptions))(ClosedExceptionsOnly), - RetryPolicy.backoff(NoBackoff.take(timeouts))(TimeoutExceptionsOnly) - ) - - implicit val warmup: Warmup[BackendClients] = { - // Use a random string so that the keys are likely to hash to - // different memcache instances. Request multiple keys at a time so - // that we don't consider the backend warm just because we can get a - // bunch of successful responses to one cache. - val cacheGet = (_: memcached.Client).get(Seq.fill(20)(Random.nextLong.toString)) - - Warmup - .empty[BackendClients] - .warmField(_.expandodo) - .warmField(_.gizmoduck) - .warmField(_.memcacheClient)(Warmup("memcache")(cacheGet)) - .warmField(_.talon) - .warmField(_.tweetStorageClient)(Warmup("tweetstorage")(_.ping())) - .warmField(_.tflockReadClient)(Warmup("tflock")(_.contains(UserTimelineGraph, 0, 0))) - .warmField(_.scarecrow) - .warmField(_.socialGraphService) - .warmField(_.timelineService) - .warmField(_.geoRelevance)(Warmup("geo_relevance")(_.placeSearch(RelevanceContext()))) - } - - def apply( - settings: TweetServiceSettings, - deciderGates: TweetypieDeciderGates, - statsReceiver: StatsReceiver, - hostStatsReceiver: StatsReceiver, - timer: Timer, - clientIdHelper: ClientIdHelper, - ): BackendClients = { - val thriftClientId = settings.thriftClientId - val tracer = DefaultTracer - - val env = settings.env.toString - val zone = settings.zone - val log = Logger(getClass) - val backendsScope = statsReceiver.scope("backends") - - /** a Seq builder of finagle.Names loaded via getName */ - val referencedNamesBuilder = Seq.newBuilder[Name] - - /** the default set of exceptions we believe are safe for Tweetypie to retry */ - val defaultResponseClassifier: ResponseClassifier = - ResponseClassifier.RetryOnChannelClosed.orElse(ResponseClassifier.RetryOnTimeout) - - /** - * Resolve a string into a Finagle Name and record it - * in referencedNames. - */ - def eval(address: String): Name = { - val name = Resolver.eval(address) - referencedNamesBuilder += name - name - } - - def backendContext(name: String) = - Backend.Context(timer, backendsScope.scope(name)) - - // by default, retries on most exceptions (see defaultRetryExceptions). if an rpc is not - // idempotent, it should use a different retry policy. - def clientBuilder(name: String) = { - ClientBuilder() - .name(name) - .reportTo(statsReceiver) - .reportHostStats(hostStatsReceiver) - .tracer(tracer) - .daemon(true) - .tcpConnectTimeout(defaultTcpConnectTimeout) - .connectTimeout(defaultConnectTimeout) - .retryPolicy(retry()) - } - - def thriftMuxClientBuilder(name: String, address: String, clazz: Class[_]) = { - clientBuilder(name) - .stack( - ThriftMux.client - .withClientId(thriftClientId) - .withOpportunisticTls(OpportunisticTls.Required) - .withServiceClass(clazz)) - .loadBalancer(balancer()) - .dest(eval(address)) - .mutualTls(settings.serviceIdentifier) - } - - // Our base ThriftMux.Client - // Prefer using thriftMuxMethodBuilder below but - // can be used to build custom clients (re: darkTrafficClient) - def thriftMuxClient(name: String, propagateDeadlines: Boolean = true): ThriftMux.Client = { - ThriftMux.client - .withClientId(thriftClientId) - .withLabel(name) - .withStatsReceiver(statsReceiver) - .withTracer(tracer) - .withTransport.connectTimeout(defaultTcpConnectTimeout) - .withSession.acquisitionTimeout(defaultConnectTimeout) - .withMutualTls(settings.serviceIdentifier) - .withOpportunisticTls(OpportunisticTls.Required) - .configured(PropagateDeadlines(enabled = propagateDeadlines)) - } - - // If an endpoint is non-idempotent you should add .nonidempotent and - // leave off any ResponseClassifiers (it will remove any placed before but not after) - // If it is unequivocally idempotent you should add .idempotent and - // leave off any ResponseClassifiers (it will retry on all Throws). This will also - // enable backup requests - def thriftMuxMethodBuilder( - name: String, - dest: String, - ): MethodBuilder = { - thriftMuxClient(name) - .withLoadBalancer(balancer(minAperture = 2)) - .methodBuilder(dest) - .withRetryForClassifier(defaultResponseClassifier) - .withTimeoutTotal(2.seconds) // total timeout including 1st attempt and up to 2 retries - } - - def balancer(minAperture: Int = 2) = Balancers.aperture(minAperture = minAperture) - - val eventBusPublisherBuilder = - EventBusPublisherBuilder() - .dest(eval("/s/eventbus/provisioning")) - .clientId(settings.thriftClientId) - // eventbus stats are further scoped by stream, so put all - // publishers under the same stats namespace - .statsReceiver(backendsScope.scope("event_bus")) - // This makes the underlying kps-client to be resolved over WilyNs vs DNS - .serviceIdentifier(settings.serviceIdentifier) - - new BackendClients { - def referencedNames: Seq[Name] = referencedNamesBuilder.result() - - val memcacheClient: memcached.Client = - Memcached.client - .withMutualTls(settings.serviceIdentifier) - .connectionsPerEndpoint(2) - .configured(param.KeyHasher(KeyHasher.FNV1_32)) - .configured(Transporter.ConnectTimeout(100.milliseconds)) - .configured(TimeoutFilter.Param(200.milliseconds)) - .configured(TimeoutFactory.Param(200.milliseconds)) - .configured(param.EjectFailedHost(false)) - .configured(FailureAccrualFactory.Param(numFailures = 20, markDeadFor = 30.second)) - .configured( - PendingRequestFilter.Param(limit = Some(settings.cacheClientPendingRequestLimit)) - ) - .filtered(new MemcacheExceptionLoggingFilter) - .newRichClient(dest = eval(settings.twemcacheDest), label = "memcache") - - /* clients */ - val tweetStorageClient: TweetStorageClient = - Manhattan.fromClient( - new ManhattanTweetStorageClient( - settings.tweetStorageConfig, - statsReceiver = backendsScope.scope("tweet_storage"), - clientIdHelper = clientIdHelper, - ) - ) - - val socialGraphService: SocialGraphService = { - val finagleClient = - new SocialGraphService$FinagleClient( - thriftMuxClientBuilder( - "socialgraph", - "/s/socialgraph/socialgraph", - classOf[SocialGraphScroogeIface.MethodPerEndpoint] - ).loadBalancer(Balancers.aperturePeakEwma(minAperture = 16)) - .build() - ) - - settings.socialGraphSeviceConfig( - SocialGraphService.fromClient(finagleClient), - backendContext("socialgraph") - ) - } - - val tflockClient = - new FlockDB.FinagledClient( - thriftMuxClientBuilder("tflock", "/s/tflock/tflock", classOf[FlockDB.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 5)) - .responseClassifier(FlockResponse.classifier) - .build(), - serviceName = "tflock", - stats = statsReceiver - ) - - val tflockReadClient: TFlockClient = - settings.tflockReadConfig(tflockClient, backendContext("tflock")) - - val tflockWriteClient: TFlockClient = - settings.tflockWriteConfig(tflockClient, backendContext("tflock")) - - val gizmoduck: Gizmoduck = { - val clientBuilder = - thriftMuxClientBuilder( - "gizmoduck", - "/s/gizmoduck/gizmoduck", - classOf[UserService.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 63)) - val mb = MethodBuilder - .from(clientBuilder) - .idempotent(maxExtraLoad = 1.percent) - .servicePerEndpoint[UserService.ServicePerEndpoint] - - val gizmoduckClient = ThriftMux.Client.methodPerEndpoint(mb) - settings.gizmoduckConfig(Gizmoduck.fromClient(gizmoduckClient), backendContext("gizmoduck")) - } - - val merlin: UserRolesService.MethodPerEndpoint = { - val thriftClient = thriftMuxMethodBuilder("merlin", "/s/merlin/merlin") - .withTimeoutPerRequest(100.milliseconds) - .withTimeoutTotal(400.milliseconds) - .idempotent(0.01) - .servicePerEndpoint[UserRolesService.ServicePerEndpoint] - - ThriftMux.Client.methodPerEndpoint(thriftClient) - } - - val talon: Talon = { - val talonClient = - new Talon$FinagleClient( - thriftMuxClientBuilder( - "talon", - "/s/talon/backend", - classOf[TalonScroogeIface.MethodPerEndpoint]) - .build() - ) - - settings.talonConfig(Talon.fromClient(talonClient), backendContext("talon")) - } - - val guano = Guano() - - val mediaInfoService: MediaInfoService = { - val finagleClient = - new MediaInfoService$FinagleClient( - thriftMuxClientBuilder( - "mediainfo", - "/s/photurkey/mediainfo", - classOf[MediaInfoScroogeIface.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 75)) - .build() - ) - - settings.mediaInfoServiceConfig( - MediaInfoService.fromClient(finagleClient), - backendContext("mediainfo") - ) - } - - val userImageService: UserImageService = { - val finagleClient = - new UserImageService$FinagleClient( - thriftMuxClientBuilder( - "userImage", - "/s/user-image-service/uis", - classOf[UserImageScroogeIface.MethodPerEndpoint]) - .build() - ) - - settings.userImageServiceConfig( - UserImageService.fromClient(finagleClient), - backendContext("userImage") - ) - } - - val mediaClient: MediaClient = - MediaClient.fromBackends( - userImageService = userImageService, - mediaInfoService = mediaInfoService - ) - - val timelineService: TimelineService = { - val timelineServiceClient = - new tls.TimelineService$FinagleClient( - thriftMuxClientBuilder( - "timelineService", - "/s/timelineservice/timelineservice", - classOf[tls.TimelineService.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 13)) - .build() - ) - - settings.timelineServiceConfig( - TimelineService.fromClient(timelineServiceClient), - backendContext("timelineService") - ) - } - - val expandodo: Expandodo = { - val cardsServiceClient = - new CardsService$FinagleClient( - thriftMuxClientBuilder( - "expandodo", - "/s/expandodo/server", - classOf[CardsScroogeIface.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 6)) - .build() - ) - - settings.expandodoConfig( - Expandodo.fromClient(cardsServiceClient), - backendContext("expandodo") - ) - } - - val creativesContainerService: CreativesContainerService = { - val mb = thriftMuxMethodBuilder( - "creativesContainerService", - "/s/creatives-container/creatives-container", - ).withTimeoutTotal(300.milliseconds) - .idempotent(maxExtraLoad = 1.percent) - .servicePerEndpoint[ccs.CreativesContainerService.ServicePerEndpoint] - - settings.creativesContainerServiceConfig( - CreativesContainerService.fromClient(ccs.CreativesContainerService.MethodPerEndpoint(mb)), - backendContext("creativesContainerService") - ) - } - - val scarecrow: Scarecrow = { - val scarecrowClient = new ScarecrowService$FinagleClient( - thriftMuxClientBuilder( - "scarecrow", - "/s/abuse/scarecrow", - classOf[ScarecrowScroogeIface.MethodPerEndpoint]) - .loadBalancer(balancer(minAperture = 6)) - .build(), - serviceName = "scarecrow", - stats = statsReceiver - ) - - settings.scarecrowConfig(Scarecrow.fromClient(scarecrowClient), backendContext("scarecrow")) - } - - val snowflakeClient: Snowflake.MethodPerEndpoint = { - eval("/s/snowflake/snowflake") // eagerly resolve the serverset - val mb = thriftMuxMethodBuilder( - "snowflake", - "/s/snowflake/snowflake" - ).withTimeoutTotal(300.milliseconds) - .withTimeoutPerRequest(100.milliseconds) - .idempotent(maxExtraLoad = 1.percent) - - SnowflakeClient.snowflakeClient(mb) - } - - val deferredRpcClient = - new DeferredRPC.FinagledClient( - thriftMuxClientBuilder( - "deferredrpc", - "/s/kafka-shared/krpc-server-main", - classOf[DeferredRPC.MethodPerEndpoint]) - .requestTimeout(200.milliseconds) - .retryPolicy(retry(timeouts = 3)) - .build(), - serviceName = "deferredrpc", - stats = statsReceiver - ) - - def deferredTweetypie(target: Target): ThriftTweetService = { - // When deferring back to the local datacenter, preserve the finagle - // context and dtabs. This will ensure that developer dtabs are honored - // and that context is preserved in eventbus. (eventbus enqueues only - // happen in async requests within the same datacenter.) - // - // Effectively, this means we consider deferredrpc requests within the - // same datacenter to be part of the same request, but replicated - // requests are not. - val isLocal: Boolean = target.datacenter == Datacenter.Local - - val deferredThriftService: Service[ThriftClientRequest, Array[Byte]] = - new DeferredThriftService( - deferredRpcClient, - target, - serializeFinagleContexts = isLocal, - serializeFinagleDtabs = isLocal - ) - - new TweetServiceInternal$FinagleClient(deferredThriftService) - } - - val replicationClient: ThriftTweetService = - deferredTweetypie(Target(Datacenter.AllOthers, "tweetypie-replication")) - - // used for read endpoints replication - val lowQoSReplicationClients: Seq[GatedReplicationClient] = { - val rampUpGate = Gate.linearRampUp(Time.now, settings.forkingRampUp) - - // Gates to avoid sending replicated reads from a cluster to itself - val inATLA = if (settings.zone == "atla") Gate.True else Gate.False - val inPDXA = if (settings.zone == "pdxa") Gate.True else Gate.False - - Seq( - GatedReplicationClient( - client = deferredTweetypie(Target(Datacenter.Atla, "tweetypie-lowqos")), - gate = rampUpGate & deciderGates.replicateReadsToATLA & !inATLA - ), - GatedReplicationClient( - client = deferredTweetypie(Target(Datacenter.Pdxa, "tweetypie-lowqos")), - gate = rampUpGate & deciderGates.replicateReadsToPDXA & !inPDXA - ) - ) - } - - // used for async operations in the write path - val asyncTweetService: ThriftTweetService = - deferredTweetypie(Target(Datacenter.Local, "tweetypie")) - - // used to trigger asyncEraseUserTweetsRequest - val asyncTweetDeletionService: ThriftTweetService = - deferredTweetypie(Target(Datacenter.Local, "tweetypie-retweet-deletion")) - - // used for async retries - val asyncRetryTweetService: ThriftTweetService = - deferredTweetypie(Target(Datacenter.Local, "tweetypie-async-retry")) - - val darkTrafficClient: Service[Array[Byte], Array[Byte]] = { - val thriftService = - thriftMuxClient( - "tweetypie.dark", - propagateDeadlines = false - ).withRequestTimeout(100.milliseconds) - .newService("/s/tweetypie/proxy") - - val transformer = - new Filter[Array[Byte], Array[Byte], ThriftClientRequest, Array[Byte]] { - override def apply( - request: Array[Byte], - service: Service[ThriftClientRequest, Array[Byte]] - ): Future[Array[Byte]] = - service(new ThriftClientRequest(request, false)) - } - - transformer andThen thriftService - } - - val geoHydrationClient: GeoduckHydration.MethodPerEndpoint = { - val mb = thriftMuxMethodBuilder("geoduck_hydration", "/s/geo/hydration") - .withTimeoutPerRequest(100.millis) - .idempotent(maxExtraLoad = 1.percent) - ThriftMux.Client.methodPerEndpoint( - mb.servicePerEndpoint[GeoduckHydration.ServicePerEndpoint]) - } - - val geoHydrationLocate: GeoduckLocate = geoHydrationClient.locate - - val geoReverseGeocoderClient: ReverseGeocoder.MethodPerEndpoint = { - val mb = thriftMuxMethodBuilder("geoduck_reversegeocoder", "/s/geo/geoduck_reversegeocoder") - .withTimeoutPerRequest(100.millis) - .idempotent(maxExtraLoad = 1.percent) - ThriftMux.Client.methodPerEndpoint( - mb.servicePerEndpoint[ReverseGeocoder.ServicePerEndpoint]) - } - - val geoduckGeohashLocate: GeoduckGeohashLocate = { - new GeoduckGeohashLocate( - reverseGeocoderClient = geoReverseGeocoderClient, - hydrationClient = geoHydrationClient, - classScopedStatsReceiver = statsReceiver.scope("geo_geohash_locate")) - } - - val geoRelevance = - new Relevance$FinagleClient( - thriftMuxClientBuilder( - "geoduck_relevance", - "/s/geo/relevance", - classOf[Relevance.MethodPerEndpoint]) - .requestTimeout(100.milliseconds) - .retryPolicy(retry(timeouts = 1)) - .build(), - stats = statsReceiver - ) - - val fanoutServiceClient = - new FanoutService$FinagleClient( - new DeferredThriftService(deferredRpcClient, Target(Datacenter.Local, "fanoutservice")), - serviceName = "fanoutservice", - stats = statsReceiver - ) - - val limiterService: LimiterService = { - val limiterClient = - new LimiterClientFactory( - name = "limiter", - clientId = thriftClientId, - tracer = tracer, - statsReceiver = statsReceiver, - serviceIdentifier = settings.serviceIdentifier, - opportunisticTlsLevel = OpportunisticTls.Required, - daemonize = true - )(eval("/s/limiter/limiter")) - - val limiterBackend = settings.limiterBackendConfig( - LimiterBackend.fromClient(limiterClient), - backendContext("limiter") - ) - - LimiterService.fromBackend( - limiterBackend.incrementFeature, - limiterBackend.getFeatureUsage, - getAppId, - backendsScope.scope("limiter") - ) - } - - val passbirdClient = - new PassbirdService$FinagleClient( - thriftMuxClientBuilder( - "passbird", - "/s/passbird/passbird", - classOf[PassbirdService.MethodPerEndpoint]) - .requestTimeout(100.milliseconds) - .retryPolicy(retry(timeouts = 1)) - .build(), - serviceName = "passbird", - stats = statsReceiver - ) - - val escherbird: Escherbird = { - val escherbirdClient = - new TweetEntityAnnotationService$FinagleClient( - thriftMuxClientBuilder( - "escherbird", - "/s/escherbird/annotationservice", - classOf[TweetEntityAnnotationScroogeIface.MethodPerEndpoint]) - .build() - ) - settings.escherbirdConfig( - Escherbird.fromClient(escherbirdClient), - backendContext("escherbird") - ) - } - - val geoScrubEventStore: GeoScrubEventStore = { - val mhMtlsParams = - if (settings.serviceIdentifier == EmptyServiceIdentifier) NoMtlsParams - else - ManhattanKVClientMtlsParams( - serviceIdentifier = settings.serviceIdentifier, - opportunisticTls = OpportunisticTls.Required) - - val mhClient = - new ManhattanKVClient( - appId = "geoduck_scrub_datastore", - dest = "/s/manhattan/omega.native-thrift", - mtlsParams = mhMtlsParams, - label = "mh_omega", - Seq(Experiments.ApertureLoadBalancer) - ) - - GeoScrubEventStore( - mhClient, - settings.geoScrubEventStoreConfig, - backendContext("geoScrubEventStore") - ) - } - - val tweetEventsPublisher: EventBusPublisher[TweetEvent] = - eventBusPublisherBuilder - .streamName("tweet_events") - .thriftStruct(TweetEvent) - .publishTimeout(500.milliseconds) - .serializeFinagleDtabs(true) - .build() - - val deleteLocationDataPublisher: EventBusPublisher[DeleteLocationData] = - eventBusPublisherBuilder - .streamName("tweetypie_delete_location_data_prod") - .thriftStruct(DeleteLocationData) - // deleteLocationData is relatively rare, and publishing to - // eventbus is all that the endpoint does. This means that it - // is much more likely that we will have to make a connection, - // which has much greater latency, and also makes us more - // tolerant of slow requests, so we choose a long timeout. - .publishTimeout(2.seconds) - .build() - - val retweetArchivalEventPublisher: EventBusPublisher[RetweetArchivalEvent] = - eventBusPublisherBuilder - .streamName("retweet_archival_events") - .thriftStruct(RetweetArchivalEvent) - .publishTimeout(500.milliseconds) - .build() - - val gnipEnricherator: GnipEnricherator = { - val gnipEnricherator = - thriftMuxMethodBuilder( - "enricherator", - "/s/datadelivery-enrichments/enricherator" - ) - GnipEnricherator.fromMethod(gnipEnricherator) - } - - val stratoserverClient: StratoClient = Strato.client - .withMutualTls( - serviceIdentifier = settings.serviceIdentifier, - opportunisticLevel = OpportunisticTls.Required) - .withLabel("stratoserver") - .withRequestTimeout(100.milliseconds) - .build() - - val configBus: ConfigBus = - ConfigBus(backendsScope.scope("config_bus"), settings.instanceId, settings.instanceCount) - - val callbackPromotedContentLogger: CallbackPromotedContentLogger = { - val publisher = - eventBusPublisherBuilder - .streamName(settings.adsLoggingClientTopicName) - .thriftStruct(AdCallbackEvent) - .publishTimeout(500.milliseconds) - .serializeFinagleDtabs(true) - .maxQueuedEvents(1000) - .kafkaDest("/s/kafka/ads-callback:kafka-tls") - .build() - - val stats = backendsScope.scope("promoted_content") - val adsLoggingClient = AdsLoggingClient(publisher, stats, "Tweetypie") - new CallbackPromotedContentLogger(adsLoggingClient, stats) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.docx new file mode 100644 index 0000000000000000000000000000000000000000..a2bdb015d5ddfa5c3126d72a64cc6a30210b277e GIT binary patch literal 39392 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.scala deleted file mode 100644 index 4a670f4d2..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Caches.scala +++ /dev/null @@ -1,281 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.Backoff -import com.twitter.finagle.memcached -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.servo.cache.{Serializer => CacheSerializer, _} -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.handler.CacheBasedTweetCreationLock -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.serverutil._ -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.util._ -import com.twitter.util.Timer - -/** - * Provides configured caches (most backed by memcached) wrapped with appropriate metrics and locks. - * - * All memcached-backed caches share: - * - one Finagle memcached client from backends.memcacheClient - * - one in memory caffeine cache - * - one Twemcache pool - * - * Each memcached-backed cache specialization provides its own: - * - key prefix or "namespace" - * - value serializer/deserializer - * - stats scope - * - log name - */ -trait Caches { - val memcachedClientWithInProcessCaching: memcached.Client - val tweetCache: LockingCache[TweetKey, Cached[CachedTweet]] - val tweetResultCache: LockingCache[TweetId, Cached[TweetResult]] - val tweetDataCache: LockingCache[TweetId, Cached[TweetData]] - val tweetCreateLockerCache: Cache[TweetCreationLock.Key, TweetCreationLock.State] - val tweetCountsCache: LockingCache[TweetCountKey, Cached[Count]] - val deviceSourceInProcessCache: LockingCache[String, Cached[DeviceSource]] - val geoScrubCache: LockingCache[UserId, Cached[Time]] -} - -object Caches { - object NoCache extends Caches { - override val memcachedClientWithInProcessCaching: memcached.Client = new NullMemcacheClient() - private val toLockingCache: LockingCacheFactory = NonLockingCacheFactory - val tweetCache: LockingCache[TweetKey, Cached[CachedTweet]] = - toLockingCache(new NullCache) - val tweetResultCache: LockingCache[TweetId, Cached[TweetResult]] = - toLockingCache(new NullCache) - val tweetDataCache: LockingCache[TweetId, Cached[TweetData]] = - toLockingCache(new NullCache) - val tweetCreateLockerCache: Cache[TweetCreationLock.Key, TweetCreationLock.State] = - new NullCache - val tweetCountsCache: LockingCache[TweetCountKey, Cached[Count]] = - toLockingCache(new NullCache) - val deviceSourceInProcessCache: LockingCache[String, Cached[DeviceSource]] = - toLockingCache(new NullCache) - val geoScrubCache: LockingCache[UserId, Cached[Time]] = - toLockingCache(new NullCache) - } - - def apply( - settings: TweetServiceSettings, - stats: StatsReceiver, - timer: Timer, - clients: BackendClients, - tweetKeyFactory: TweetKeyFactory, - deciderGates: TweetypieDeciderGates, - clientIdHelper: ClientIdHelper, - ): Caches = { - val cachesStats = stats.scope("caches") - val cachesInprocessStats = cachesStats.scope("inprocess") - val cachesMemcacheStats = cachesStats.scope("memcache") - val cachesMemcacheObserver = new StatsReceiverCacheObserver(cachesStats, 10000, "memcache") - val cachesMemcacheTweetStats = cachesMemcacheStats.scope("tweet") - val cachesInprocessDeviceSourceStats = cachesInprocessStats.scope("device_source") - val cachesMemcacheCountStats = cachesMemcacheStats.scope("count") - val cachesMemcacheTweetCreateStats = cachesMemcacheStats.scope("tweet_create") - val cachesMemcacheGeoScrubStats = cachesMemcacheStats.scope("geo_scrub") - val memcacheClient = clients.memcacheClient - - val caffieneMemcachedClient = settings.inProcessCacheConfigOpt match { - case Some(inProcessCacheConfig) => - new CaffeineMemcacheClient( - proxyClient = memcacheClient, - inProcessCacheConfig.maximumSize, - inProcessCacheConfig.ttl, - cachesMemcacheStats.scope("caffeine") - ) - case None => - memcacheClient - } - - val observedMemcacheWithCaffeineClient = - new ObservableMemcache( - new FinagleMemcache( - caffieneMemcachedClient - ), - cachesMemcacheObserver - ) - - def observeCache[K, V]( - cache: Cache[K, V], - stats: StatsReceiver, - logName: String, - windowSize: Int = 10000 - ) = - ObservableCache( - cache, - stats, - windowSize, - // Need to use an old-school c.t.logging.Logger because that's what servo needs - com.twitter.logging.Logger(s"com.twitter.tweetypie.cache.$logName") - ) - - def mkCache[K, V]( - ttl: Duration, - serializer: CacheSerializer[V], - perCacheStats: StatsReceiver, - logName: String, - windowSize: Int = 10000 - ): Cache[K, V] = { - observeCache( - new MemcacheCache[K, V]( - observedMemcacheWithCaffeineClient, - ttl, - serializer - ), - perCacheStats, - logName, - windowSize - ) - } - - def toLockingCache[K, V]( - cache: Cache[K, V], - stats: StatsReceiver, - backoffs: Stream[Duration] = settings.lockingCacheBackoffs - ): LockingCache[K, V] = - new OptimisticLockingCache( - underlyingCache = cache, - backoffs = Backoff.fromStream(backoffs), - observer = new OptimisticLockingCacheObserver(stats), - timer = timer - ) - - def mkLockingCache[K, V]( - ttl: Duration, - serializer: CacheSerializer[V], - stats: StatsReceiver, - logName: String, - windowSize: Int = 10000, - backoffs: Stream[Duration] = settings.lockingCacheBackoffs - ): LockingCache[K, V] = - toLockingCache( - mkCache(ttl, serializer, stats, logName, windowSize), - stats, - backoffs - ) - - def trackTimeInCache[K, V]( - cache: Cache[K, Cached[V]], - stats: StatsReceiver - ): Cache[K, Cached[V]] = - new CacheWrapper[K, Cached[V]] { - val ageStat: Stat = stats.stat("time_in_cache_ms") - val underlyingCache: Cache[K, Cached[V]] = cache - - override def get(keys: Seq[K]): Future[KeyValueResult[K, Cached[V]]] = - underlyingCache.get(keys).onSuccess(record) - - private def record(res: KeyValueResult[K, Cached[V]]): Unit = { - val now = Time.now - for (c <- res.found.values) { - ageStat.add(c.cachedAt.until(now).inMilliseconds) - } - } - } - - new Caches { - override val memcachedClientWithInProcessCaching: memcached.Client = caffieneMemcachedClient - - private val observingTweetCache: Cache[TweetKey, Cached[CachedTweet]] = - trackTimeInCache( - mkCache( - ttl = settings.tweetMemcacheTtl, - serializer = Serializer.CachedTweet.CachedCompact, - perCacheStats = cachesMemcacheTweetStats, - logName = "MemcacheTweetCache" - ), - cachesMemcacheTweetStats - ) - - // Wrap the tweet cache with a wrapper that will scribe the cache writes - // that happen to a fraction of tweets. This was added as part of the - // investigation into missing place ids and cache inconsistencies that - // were discovered by the additional fields hydrator. - private[this] val writeLoggingTweetCache = - new ScribeTweetCacheWrites( - underlyingCache = observingTweetCache, - logYoungTweetCacheWrites = deciderGates.logYoungTweetCacheWrites, - logTweetCacheWrites = deciderGates.logTweetCacheWrites - ) - - val tweetCache: LockingCache[TweetKey, Cached[CachedTweet]] = - toLockingCache( - cache = writeLoggingTweetCache, - stats = cachesMemcacheTweetStats - ) - - val tweetDataCache: LockingCache[TweetId, Cached[TweetData]] = - toLockingCache( - cache = TweetDataCache(tweetCache, tweetKeyFactory.fromId), - stats = cachesMemcacheTweetStats - ) - - val tweetResultCache: LockingCache[TweetId, Cached[TweetResult]] = - toLockingCache( - cache = TweetResultCache(tweetDataCache), - stats = cachesMemcacheTweetStats - ) - - val tweetCountsCache: LockingCache[TweetCountKey, Cached[Count]] = - mkLockingCache( - ttl = settings.tweetCountsMemcacheTtl, - serializer = Serializers.CachedLong.Compact, - stats = cachesMemcacheCountStats, - logName = "MemcacheTweetCountCache", - windowSize = 1000, - backoffs = Backoff.linear(0.millis, 2.millis).take(2).toStream - ) - - val tweetCreateLockerCache: Cache[TweetCreationLock.Key, TweetCreationLock.State] = - observeCache( - new TtlCacheToCache( - underlyingCache = new KeyValueTransformingTtlCache( - underlyingCache = observedMemcacheWithCaffeineClient, - transformer = TweetCreationLock.State.Serializer, - underlyingKey = (_: TweetCreationLock.Key).toString - ), - ttl = CacheBasedTweetCreationLock.ttlChooser( - shortTtl = settings.tweetCreateLockingMemcacheTtl, - longTtl = settings.tweetCreateLockingMemcacheLongTtl - ) - ), - stats = cachesMemcacheTweetCreateStats, - logName = "MemcacheTweetCreateLockingCache", - windowSize = 1000 - ) - - val deviceSourceInProcessCache: LockingCache[String, Cached[DeviceSource]] = - toLockingCache( - observeCache( - new ExpiringLruCache( - ttl = settings.deviceSourceInProcessTtl, - maximumSize = settings.deviceSourceInProcessCacheMaxSize - ), - stats = cachesInprocessDeviceSourceStats, - logName = "InprocessDeviceSourceCache" - ), - stats = cachesInprocessDeviceSourceStats - ) - - val geoScrubCache: LockingCache[UserId, Cached[Time]] = - toLockingCache[UserId, Cached[Time]]( - new KeyTransformingCache( - mkCache[GeoScrubTimestampKey, Cached[Time]]( - ttl = settings.geoScrubMemcacheTtl, - serializer = Serializer.toCached(CacheSerializer.Time), - perCacheStats = cachesMemcacheGeoScrubStats, - logName = "MemcacheGeoScrubCache" - ), - (userId: UserId) => GeoScrubTimestampKey(userId) - ), - cachesMemcacheGeoScrubStats - ) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.docx new file mode 100644 index 0000000000000000000000000000000000000000..976442c68d438599b0cc3fd8b9381278009cdb9d GIT binary patch literal 38202 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%0D*t5($A!3}qfu?7>EssF=?ZmP0dgJFEzHsYcZ40r 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 DEY)pd literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.scala deleted file mode 100644 index 5ebca25c2..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ClientsParser.scala +++ /dev/null @@ -1,126 +0,0 @@ -package com.twitter.tweetypie.config - -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory -import com.fasterxml.jackson.module.scala.DefaultScalaModule -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.util.Try - -case object EmptyConfigException extends Exception - -case class ServiceIdentifierPattern( - role: Option[String], - service: Option[String], - environment: Option[String], -) { - // Service identifier matches if the fields of service identifier - // match all the defined fields of pattern. - def matches(id: ServiceIdentifier): Boolean = - Seq( - role.map(_ == id.role), - service.map(_ == id.service), - environment.map(_ == id.environment), - ) - .flatten - .forall(identity) - - // True if this is the kind of pattern that only specifies environment. - // This should be used in rare cases, for example letting all devel clients - // use permitted methods - like get_tweet_fields. - def onlyEnv: Boolean = - role.isEmpty && service.isEmpty && environment.isDefined -} - -case class Client( - clientId: String, - serviceIdentifiers: Seq[ServiceIdentifierPattern], - tpsLimit: Option[Int], - environments: Seq[String], - loadShedEnvs: Seq[String], - permittedMethods: Set[String], - accessAllMethods: Boolean, - bypassVisibilityFiltering: Boolean, - enforceRateLimit: Boolean) { - - // Client matches a service identifier if any of its patterns - // match. - def matches(id: ServiceIdentifier): Boolean = - serviceIdentifiers.exists(_.matches(id)) -} - -object ClientsParser { - - // Case classes for parsing yaml - should match the structure of clients.yml - private case class YamlServiceIdentifier( - role: Option[String], - service: Option[String], - environment: Option[String], - ) - private case class YamlClient( - client_id: String, - service_identifiers: Option[Seq[YamlServiceIdentifier]], - service_name: String, - tps_quota: String, - contact_email: String, - environments: Seq[String], - load_shed_envs: Option[ - Seq[String] - ], // list of environments we can rejects requests from if load shedding - comment: Option[String], - permitted_methods: Option[Seq[String]], - access_all_methods: Boolean, - bypass_visibility_filtering: Boolean, - bypass_visibility_filtering_reason: Option[String], - rate_limit: Boolean) { - def toClient: Client = { - - // we provision tps_quota for both DCs during white-listing, to account for full fail-over. - val tpsLimit: Option[Int] = Try(tps_quota.replaceAll("[^0-9]", "").toInt * 1000).toOption - - Client( - clientId = client_id, - serviceIdentifiers = service_identifiers.getOrElse(Nil).flatMap { id => - if (id.role.isDefined || id.service.isDefined || id.environment.isDefined) { - Seq(ServiceIdentifierPattern( - role = id.role, - service = id.service, - environment = id.environment, - )) - } else { - Seq() - } - }, - tpsLimit = tpsLimit, - environments = environments, - loadShedEnvs = load_shed_envs.getOrElse(Nil), - permittedMethods = permitted_methods.getOrElse(Nil).toSet, - accessAllMethods = access_all_methods, - bypassVisibilityFiltering = bypass_visibility_filtering, - enforceRateLimit = rate_limit - ) - } - } - - private val mapper: ObjectMapper = new ObjectMapper(new YAMLFactory()) - mapper.registerModule(DefaultScalaModule) - - private val yamlClientTypeFactory = - mapper - .getTypeFactory() - .constructCollectionLikeType( - classOf[Seq[YamlClient]], - classOf[YamlClient] - ) - - def apply(yamlString: String): Seq[Client] = { - val parsed = - mapper - .readValue[Seq[YamlClient]](yamlString, yamlClientTypeFactory) - .map(_.toClient) - - if (parsed.isEmpty) - throw EmptyConfigException - else - parsed - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfig.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..63413d85044ca7585e9ab9429082400fb8180694 GIT binary patch literal 38179 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

      r$6z-`int$0aX-AjXa~YVputce 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Ťq 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 Boolean = - clientsByFullyQualifiedId.map(clients => clients.contains _).getOrElse(_ => true) - - def byServiceIdentifier(serviceIdentifier: ServiceIdentifier): Set[Client] = - Iterable.concat( - get(clientsByRole, serviceIdentifier.role), - get(clientsByService, serviceIdentifier.service), - onlyEnvClients.getOrElse(Seq()), - ) - .filter(_.matches(serviceIdentifier)) - .toSet - - private def get(clientsByKey: Option[Map[String, Seq[Client]]], key: String): Seq[Client] = - clientsByKey match { - case Some(map) => map.getOrElse(key, Seq()) - case None => Seq() - } - - /** - * Take a fully qualified client id and says if the client has offered to shed reads if tweetypie - * is in an emergency - */ - val loadShedEligible: Gate[String] = Gate { (clientId: String) => - val env = ClientIdHelper.getClientIdEnv(clientId) - clientsByFullyQualifiedId.flatMap(clients => clients.get(clientId)).exists { c => - c.loadShedEnvs.contains(env) - } - } -} - -/** - * DynamicConfig uses ConfigBus to update Tweetypie with configuration changes - * dynamically. Every time the config changes, the Activity[DynamicConfig] is - * updated, and anything relying on that config will be reinitialized. - */ -object DynamicConfig { - def fullyQualifiedClientIds(client: Client): Seq[String] = { - val clientId = client.clientId - client.environments match { - case Nil => Seq(clientId) - case envs => envs.map(env => s"$clientId.$env") - } - } - - // Make a Map of fully qualified client id to Client - def byClientId(clients: Seq[Client]): Map[String, Client] = - clients.flatMap { client => - fullyQualifiedClientIds(client).map { fullClientId => fullClientId -> client } - }.toMap - - def by(get: ServiceIdentifierPattern => Option[String])(clients: Seq[Client]): Map[String, Seq[Client]] = - clients.flatMap { c => - c.serviceIdentifiers.collect { - case s if get(s).isDefined => (get(s).get, c) - } - }.groupBy(_._1).mapValues(_.map(_._2)) - - private[this] val clientsPath = "config/clients.yml" - - def apply( - stats: StatsReceiver, - configBus: ConfigBus, - settings: TweetServiceSettings - ): Activity[DynamicConfig] = - DynamicConfigLoader(configBus.file) - .apply(clientsPath, stats.scope("client_allowlist"), ClientsParser.apply) - .map(fromClients) - - def fromClients(clients: Option[Seq[Client]]): DynamicConfig = - DynamicConfig( - clientsByFullyQualifiedId = clients.map(byClientId), - clientsByRole = clients.map(by(_.role)), - clientsByService = clients.map(by(_.service)), - onlyEnvClients = clients.map(_.filter { client => - client.serviceIdentifiers.exists(_.onlyEnv) - }), - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.docx new file mode 100644 index 0000000000000000000000000000000000000000..5462deb8121dba955564934f53628a2cf528fb62 GIT binary patch literal 37403 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

      t;BARx(4Hl-?W6rKKjTnWCZo6OtMjlJ_jl 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 DJ`e9k literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.scala deleted file mode 100644 index 724f97644..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/DynamicConfigLoader.scala +++ /dev/null @@ -1,69 +0,0 @@ -package com.twitter.tweetypie.config - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.servo.util.ExceptionCounter -import com.twitter.tweetypie.serverutil.ActivityUtil -import com.twitter.util.{Activity, Return, Try} -import com.twitter.util.logging.Logger - -trait DynamicConfigLoader { - def apply[T](path: String, stats: StatsReceiver, parse: String => T): Activity[Option[T]] -} - -object DynamicConfigLoader { - - def apply(read: String => Activity[String]): DynamicConfigLoader = - new DynamicConfigLoader { - val logger = Logger(getClass) - - private def snoopState[T](stats: StatsReceiver)(a: Activity[T]): Activity[T] = { - val pending = stats.counter("pending") - val failure = stats.counter("failure") - val success = stats.counter("success") - - a.mapState { - case s @ Activity.Ok(_) => - success.incr() - s - case Activity.Pending => - pending.incr() - Activity.Pending - case s @ Activity.Failed(_) => - failure.incr() - s - } - } - - def apply[T](path: String, stats: StatsReceiver, parse: String => T): Activity[Option[T]] = { - val exceptionCounter = new ExceptionCounter(stats) - - val rawActivity: Activity[T] = - snoopState(stats.scope("raw"))( - ActivityUtil - .strict(read(path)) - .map(parse) - .handle { - case e => - exceptionCounter(e) - logger.error(s"Invalid config in $path", e) - throw e - } - ) - - val stableActivity = - snoopState(stats.scope("stabilized"))(rawActivity.stabilize).mapState[Option[T]] { - case Activity.Ok(t) => Activity.Ok(Some(t)) - case _ => Activity.Ok(None) - } - - stats.provideGauge("config_state") { - Try(stableActivity.sample()) match { - case Return(Some(c)) => c.hashCode.abs - case _ => 0 - } - } - - stableActivity - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.docx new file mode 100644 index 0000000000000000000000000000000000000000..981d6bf3f32d8566a1066f527d431973a94a7048 GIT binary patch literal 38519 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

      ?K2 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 M01OXE@{gnc19^8b8~^|S literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.scala deleted file mode 100644 index 0f8206ffa..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ExternalRepositories.scala +++ /dev/null @@ -1,182 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.flockdb.client.StatusGraph -import com.twitter.servo.util.FutureArrow -import com.twitter.stitch.timelineservice.TimelineService.GetPerspectives -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.repository.DeviceSourceRepository.Type -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.serverutil._ -import com.twitter.visibility.common.tflock.UserIsInvitedToConversationRepository - -/** - * Tweetypie's read path composes results from many data sources. This - * trait is a collection of repositories for external data access. - * These repositories should not have (within-Tweetypie) caches, - * deciders, etc. applied to them, since that is done when the - * repositories are composed together. They should be the minimal - * wrapping of the external clients in order to expose an Arrow-based - * interface. - */ -trait ExternalRepositories { - def card2Repo: Card2Repository.Type - def cardRepo: CardRepository.Type - def cardUsersRepo: CardUsersRepository.Type - def conversationIdRepo: ConversationIdRepository.Type - def containerAsTweetRepo: CreativesContainerMaterializationRepository.GetTweetType - def containerAsTweetFieldsRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType - def deviceSourceRepo: DeviceSourceRepository.Type - def escherbirdAnnotationRepo: EscherbirdAnnotationRepository.Type - def stratoSafetyLabelsRepo: StratoSafetyLabelsRepository.Type - def stratoCommunityMembershipRepo: StratoCommunityMembershipRepository.Type - def stratoCommunityAccessRepo: StratoCommunityAccessRepository.Type - def stratoPromotedTweetRepo: StratoPromotedTweetRepository.Type - def stratoSuperFollowEligibleRepo: StratoSuperFollowEligibleRepository.Type - def stratoSuperFollowRelationsRepo: StratoSuperFollowRelationsRepository.Type - def stratoSubscriptionVerificationRepo: StratoSubscriptionVerificationRepository.Type - def unmentionedEntitiesRepo: UnmentionedEntitiesRepository.Type - def geoScrubTimestampRepo: GeoScrubTimestampRepository.Type - def mediaMetadataRepo: MediaMetadataRepository.Type - def perspectiveRepo: PerspectiveRepository.Type - def placeRepo: PlaceRepository.Type - def profileGeoRepo: ProfileGeoRepository.Type - def quoterHasAlreadyQuotedRepo: QuoterHasAlreadyQuotedRepository.Type - def lastQuoteOfQuoterRepo: LastQuoteOfQuoterRepository.Type - def relationshipRepo: RelationshipRepository.Type - def retweetSpamCheckRepo: RetweetSpamCheckRepository.Type - def tweetCountsRepo: TweetCountsRepository.Type - def tweetResultRepo: TweetResultRepository.Type - def tweetSpamCheckRepo: TweetSpamCheckRepository.Type - def urlRepo: UrlRepository.Type - def userIsInvitedToConversationRepo: UserIsInvitedToConversationRepository.Type - def userRepo: UserRepository.Type -} - -class ExternalServiceRepositories( - clients: BackendClients, - statsReceiver: StatsReceiver, - settings: TweetServiceSettings, - clientIdHelper: ClientIdHelper) - extends ExternalRepositories { - - lazy val card2Repo: Card2Repository.Type = - Card2Repository(clients.expandodo.getCards2, maxRequestSize = 5) - - lazy val cardRepo: CardRepository.Type = - CardRepository(clients.expandodo.getCards, maxRequestSize = 5) - - lazy val cardUsersRepo: CardUsersRepository.Type = - CardUsersRepository(clients.expandodo.getCardUsers) - - lazy val conversationIdRepo: ConversationIdRepository.Type = - ConversationIdRepository(clients.tflockReadClient.multiSelectOne) - - lazy val containerAsTweetRepo: CreativesContainerMaterializationRepository.GetTweetType = - CreativesContainerMaterializationRepository( - clients.creativesContainerService.materializeAsTweet) - - lazy val containerAsTweetFieldsRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType = - CreativesContainerMaterializationRepository.materializeAsTweetFields( - clients.creativesContainerService.materializeAsTweetFields) - - lazy val deviceSourceRepo: Type = { - DeviceSourceRepository( - DeviceSourceParser.parseAppId, - FutureArrow(clients.passbirdClient.getClientApplications(_)) - ) - } - - lazy val escherbirdAnnotationRepo: EscherbirdAnnotationRepository.Type = - EscherbirdAnnotationRepository(clients.escherbird.annotate) - - lazy val quoterHasAlreadyQuotedRepo: QuoterHasAlreadyQuotedRepository.Type = - QuoterHasAlreadyQuotedRepository(clients.tflockReadClient) - - lazy val lastQuoteOfQuoterRepo: LastQuoteOfQuoterRepository.Type = - LastQuoteOfQuoterRepository(clients.tflockReadClient) - - lazy val stratoSafetyLabelsRepo: StratoSafetyLabelsRepository.Type = - StratoSafetyLabelsRepository(clients.stratoserverClient) - - lazy val stratoCommunityMembershipRepo: StratoCommunityMembershipRepository.Type = - StratoCommunityMembershipRepository(clients.stratoserverClient) - - lazy val stratoCommunityAccessRepo: StratoCommunityAccessRepository.Type = - StratoCommunityAccessRepository(clients.stratoserverClient) - - lazy val stratoSuperFollowEligibleRepo: StratoSuperFollowEligibleRepository.Type = - StratoSuperFollowEligibleRepository(clients.stratoserverClient) - - lazy val stratoSuperFollowRelationsRepo: StratoSuperFollowRelationsRepository.Type = - StratoSuperFollowRelationsRepository(clients.stratoserverClient) - - lazy val stratoPromotedTweetRepo: StratoPromotedTweetRepository.Type = - StratoPromotedTweetRepository(clients.stratoserverClient) - - lazy val stratoSubscriptionVerificationRepo: StratoSubscriptionVerificationRepository.Type = - StratoSubscriptionVerificationRepository(clients.stratoserverClient) - - lazy val geoScrubTimestampRepo: GeoScrubTimestampRepository.Type = - GeoScrubTimestampRepository(clients.geoScrubEventStore.getGeoScrubTimestamp) - - lazy val mediaMetadataRepo: MediaMetadataRepository.Type = - MediaMetadataRepository(clients.mediaClient.getMediaMetadata) - - lazy val perspectiveRepo: GetPerspectives = - GetPerspectives(clients.timelineService.getPerspectives) - - lazy val placeRepo: PlaceRepository.Type = - GeoduckPlaceRepository(clients.geoHydrationLocate) - - lazy val profileGeoRepo: ProfileGeoRepository.Type = - ProfileGeoRepository(clients.gnipEnricherator.hydrateProfileGeo) - - lazy val relationshipRepo: RelationshipRepository.Type = - RelationshipRepository(clients.socialGraphService.exists, maxRequestSize = 6) - - lazy val retweetSpamCheckRepo: RetweetSpamCheckRepository.Type = - RetweetSpamCheckRepository(clients.scarecrow.checkRetweet) - - lazy val tweetCountsRepo: TweetCountsRepository.Type = - TweetCountsRepository( - clients.tflockReadClient, - maxRequestSize = settings.tweetCountsRepoChunkSize - ) - - lazy val tweetResultRepo: TweetResultRepository.Type = - ManhattanTweetRepository( - clients.tweetStorageClient.getTweet, - clients.tweetStorageClient.getStoredTweet, - settings.shortCircuitLikelyPartialTweetReads, - statsReceiver.scope("manhattan_tweet_repo"), - clientIdHelper, - ) - - lazy val tweetSpamCheckRepo: TweetSpamCheckRepository.Type = - TweetSpamCheckRepository(clients.scarecrow.checkTweet2) - - lazy val unmentionedEntitiesRepo: UnmentionedEntitiesRepository.Type = - UnmentionedEntitiesRepository(clients.stratoserverClient) - - lazy val urlRepo: UrlRepository.Type = - UrlRepository( - clients.talon.expand, - settings.thriftClientId.name, - statsReceiver.scope("talon_url_repo"), - clientIdHelper, - ) - - lazy val userRepo: UserRepository.Type = - GizmoduckUserRepository( - clients.gizmoduck.getById, - clients.gizmoduck.getByScreenName, - maxRequestSize = 100 - ) - - lazy val userIsInvitedToConversationRepo: UserIsInvitedToConversationRepository.Type = - UserIsInvitedToConversationRepository( - FutureArrow(clients.tflockReadClient.multiSelectOne(_)), - FutureArrow((clients.tflockReadClient.contains(_: StatusGraph, _: Long, _: Long)).tupled)) - -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.docx new file mode 100644 index 0000000000000000000000000000000000000000..e9ab3e30b9dfd95a881f452a3fbed770bf54e24c GIT binary patch literal 44843 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 j&0Vv!j-HHsfRO6D& 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.scala deleted file mode 100644 index 2060e7bcc..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/LogicalRepositories.scala +++ /dev/null @@ -1,807 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.abdecider.ABDeciderFactory -import com.twitter.config.yaml.YamlConfig -import com.twitter.decider.Decider -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.finagle.memcached -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.servo.cache._ -import com.twitter.servo.cache.{KeyValueResult => _} -import com.twitter.servo.repository._ -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.stitch.repo.Repo -import com.twitter.stitch.timelineservice.TimelineService -import com.twitter.strato.client.{Client => StratoClient} -import com.twitter.stringcenter.client.ExternalStringRegistry -import com.twitter.stringcenter.client.MultiProjectStringCenter -import com.twitter.translation.Languages -import com.twitter.translation.YamlConfigLanguages -import com.twitter.tweetypie.caching.CacheOperations -import com.twitter.tweetypie.caching.Expiry -import com.twitter.tweetypie.caching.ServoCachedValueSerializer -import com.twitter.tweetypie.caching.StitchCaching -import com.twitter.tweetypie.caching.ValueSerializer -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core.TweetResult -import com.twitter.tweetypie.hydrator.TextRepairer -import com.twitter.tweetypie.hydrator.TweetHydration -import com.twitter.tweetypie.hydrator.TweetQueryOptionsExpander -import com.twitter.tweetypie.repository.TweetRepository -import com.twitter.tweetypie.repository.UserRepository -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.serverutil.BoringStackTrace -import com.twitter.tweetypie.serverutil.ExceptionCounter -import com.twitter.tweetypie.thriftscala.DeviceSource -import com.twitter.tweetypie.thriftscala.Place -import com.twitter.tweetypie.thriftscala.entities.EntityExtractor -import com.twitter.tweetypie.util.StitchUtils -import com.twitter.util.Duration -import com.twitter.util.FuturePool -import com.twitter.util.Timer -import com.twitter.visibility.VisibilityLibrary -import com.twitter.visibility.common.KeywordMatcher -import com.twitter.visibility.common.LocalizationSource -import com.twitter.visibility.common.TweetMediaMetadataSource -import com.twitter.visibility.common.TweetPerspectiveSource -import com.twitter.visibility.common.UserRelationshipSource -import com.twitter.visibility.common.UserSource -import com.twitter.visibility.common.tflock.UserIsInvitedToConversationRepository -import com.twitter.visibility.configapi.configs.VisibilityDeciderGates -import com.twitter.visibility.generators.CountryNameGenerator -import com.twitter.visibility.generators.LocalizedInterstitialGenerator -import com.twitter.visibility.generators.TombstoneGenerator -import com.twitter.visibility.interfaces.tweets.DeletedTweetVisibilityLibrary -import com.twitter.visibility.interfaces.tweets.QuotedTweetVisibilityLibrary -import com.twitter.visibility.interfaces.tweets.TweetVisibilityLibrary -import com.twitter.visibility.interfaces.tweets.UserUnavailableStateVisibilityLibrary -import com.twitter.visibility.util.DeciderUtil -import com.twitter.visibility.util.FeatureSwitchUtil -import java.util.concurrent.Executors - -/** - * LogicalRepositories is a layer above ExternalRepositories. These repos may have additional - * logic layered in, such as memcache-caching, hot-key caching, etc. There may - * also be multiple logical repositories mapped to an single external repository. - * - * These repositories are used in tweet hydration and tweet creation. - */ -trait LogicalRepositories { - - def card2Repo: Card2Repository.Type - def cardRepo: CardRepository.Type - def cardUsersRepo: CardUsersRepository.Type - def conversationIdRepo: ConversationIdRepository.Type - def conversationControlRepo: ConversationControlRepository.Type - def conversationMutedRepo: ConversationMutedRepository.Type - def containerAsGetTweetResultRepo: CreativesContainerMaterializationRepository.GetTweetType - def containerAsGetTweetFieldsResultRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType - def deviceSourceRepo: DeviceSourceRepository.Type - def escherbirdAnnotationRepo: EscherbirdAnnotationRepository.Type - def geoScrubTimestampRepo: GeoScrubTimestampRepository.Type - def languageRepo: LanguageRepository.Type - def mediaMetadataRepo: MediaMetadataRepository.Type - def pastedMediaRepo: PastedMediaRepository.Type - def perspectiveRepo: PerspectiveRepository.Type - def placeRepo: PlaceRepository.Type - def profileGeoRepo: ProfileGeoRepository.Type - def quoterHasAlreadyQuotedRepo: QuoterHasAlreadyQuotedRepository.Type - def lastQuoteOfQuoterRepo: LastQuoteOfQuoterRepository.Type - def relationshipRepo: RelationshipRepository.Type - def stratoSafetyLabelsRepo: StratoSafetyLabelsRepository.Type - def stratoCommunityMembershipRepo: StratoCommunityMembershipRepository.Type - def stratoCommunityAccessRepo: StratoCommunityAccessRepository.Type - def stratoSuperFollowEligibleRepo: StratoSuperFollowEligibleRepository.Type - def stratoSuperFollowRelationsRepo: StratoSuperFollowRelationsRepository.Type - def stratoPromotedTweetRepo: StratoPromotedTweetRepository.Type - def stratoSubscriptionVerificationRepo: StratoSubscriptionVerificationRepository.Type - def takedownRepo: UserTakedownRepository.Type - def tweetSpamCheckRepo: TweetSpamCheckRepository.Type - def retweetSpamCheckRepo: RetweetSpamCheckRepository.Type - def tweetCountsRepo: TweetCountsRepository.Type - def tweetVisibilityRepo: TweetVisibilityRepository.Type - def quotedTweetVisibilityRepo: QuotedTweetVisibilityRepository.Type - def deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type - def unmentionedEntitiesRepo: UnmentionedEntitiesRepository.Type - def urlRepo: UrlRepository.Type - def userRepo: UserRepository.Type - def optionalUserRepo: UserRepository.Optional - def userIdentityRepo: UserIdentityRepository.Type - def userIsInvitedToConversationRepo: UserIsInvitedToConversationRepository.Type - def userProtectionRepo: UserProtectionRepository.Type - def userViewRepo: UserViewRepository.Type - def userVisibilityRepo: UserVisibilityRepository.Type - - def tweetResultRepo: TweetResultRepository.Type - def tweetRepo: TweetRepository.Type - def optionalTweetRepo: TweetRepository.Optional - - /** - * Not actually repositories, but intimately intertwined. - */ - def tweetHydrators: TweetHydrators -} - -object LogicalRepositories { - - /** - * Middleware is a function that takes a stitch repo and returns a new stitch repo. - */ - type Middleware[K, V] = (K => Stitch[V]) => K => Stitch[V] - - // Middleware2 is a function that takes a two-arg stitch repo and returns a new two-arg stitch repo. - type Middleware2[K, C, V] = ((K, C) => Stitch[V]) => ((K, C) => Stitch[V]) - val exceptionLog: Logger = Logger(getClass) - - // Converts a Middleware2 to a Middleware for use with withMiddleware. - def tupledMiddleware[K, C, V](middleware2: Middleware2[K, C, V]): Middleware[(K, C), V] = - repo => middleware2(Function.untupled(repo)).tupled - - object ObserveStitch { - def apply[K, V]( - repo: K => Stitch[V], - repoName: String, - stats: StatsReceiver - ): K => Stitch[V] = { - val successCounter = stats.counter("success") - val notFoundCounter = stats.counter("not_found") - val latencyStat = stats.stat("latency_ms") - - val exceptionCounter = - ExceptionCounter( - stats, - // don't count FilteredState exceptions - FilteredState.ignoringCategorizer(ExceptionCounter.defaultCategorizer) - ) - - (key: K) => - StitchUtils.trackLatency(latencyStat, repo(key)).respond { - case Return(_) => successCounter.incr() - case Throw(NotFound) => notFoundCounter.incr() - case Throw(t) => - val message = s"$repoName: $key" - if (BoringStackTrace.isBoring(t)) { - exceptionLog.debug(message, t) - } else { - exceptionLog.warn(message, t) - } - - exceptionCounter(t) - } - } - } - - /** - * Add middleware to configure a repository. The stats receiver is - * scoped for the currently-configured repository. The `toRepo` field - * is the repository with some set of middleware applied. Each method - * adds a new middleware to the current repo, and returns it as a - * `RepoConfig`, allowing method chaining. - * - * Since each method call applies a new middleware, the final middleware is - * the outermost middleware, and thus the one that sees the arguments - * first. - */ - class RepoConfig[K, V]( - val toRepo: K => Stitch[V], - stats: StatsReceiver, - name: String, - memcachedClientWithInProcessCaching: memcached.Client) { - def withMiddleware(middleware: Middleware[K, V]): RepoConfig[K, V] = - new RepoConfig[K, V](middleware(toRepo), stats, name, memcachedClientWithInProcessCaching) - - /** - * Wraps a repo with success/failure/latency stats tracking and logs - * exceptions. This will be applied to every repository. - * - * @param repoName Used when logging exceptions thrown by the underlying repo. - */ - def observe(repoName: String = s"${name}_repo"): RepoConfig[K, V] = { - withMiddleware { repo => ObserveStitch[K, V](repo, repoName, stats) } - } - - /** - * Use the supplied cache to wrap the repository with a read-through - * caching layer. - */ - def caching( - cache: LockingCache[K, Cached[V]], - partialHandler: CachedResult.PartialHandler[K, V], - maxCacheRequestSize: Int = Int.MaxValue - ): RepoConfig[K, V] = { - val stitchLockingCache = StitchLockingCache( - underlying = cache, - picker = new PreferNewestCached[V], - maxRequestSize = maxCacheRequestSize - ) - - val handler: CachedResult.Handler[K, V] = - CachedResult.Handler( - CachedResult.PartialHandler.orElse( - partialHandler, - CachedResult.failuresAreDoNotCache - ) - ) - - withMiddleware { repo => - CacheStitch[K, K, V]( - repo = repo, - cache = stitchLockingCache, - identity, - handler = handler, - cacheable = CacheStitch.cacheFoundAndNotFound - ) - } - } - - def newCaching( - keySerializer: K => String, - valueSerializer: ValueSerializer[Try[V]] - ): RepoConfig[K, V] = - withMiddleware { repo => - val logger = Logger(s"com.twitter.tweetypie.config.LogicalRepositories.$name") - - val cacheOperations: CacheOperations[K, Try[V]] = - new CacheOperations( - keySerializer = keySerializer, - valueSerializer = valueSerializer, - memcachedClient = memcachedClientWithInProcessCaching, - statsReceiver = stats.scope("caching"), - logger = logger - ) - - val tryRepo: K => Stitch[Try[V]] = repo.andThen(_.liftToTry) - val cachingTryRepo: K => Stitch[Try[V]] = new StitchCaching(cacheOperations, tryRepo) - cachingTryRepo.andThen(_.lowerFromTry) - } - - def toRepo2[K1, C](implicit tupleToK: ((K1, C)) <:< K): (K1, C) => Stitch[V] = - (k1, c) => toRepo(tupleToK((k1, c))) - } - - def softTtlPartialHandler[K, V]( - softTtl: Option[V] => Duration, - softTtlPerturbationFactor: Float = 0.05f - ): CachedResult.PartialHandler[K, V] = - CachedResult - .softTtlExpiration[K, V](softTtl, CachedResult.randomExpiry(softTtlPerturbationFactor)) - - def apply( - settings: TweetServiceSettings, - stats: StatsReceiver, - timer: Timer, - deciderGates: TweetypieDeciderGates, - external: ExternalRepositories, - caches: Caches, - stratoClient: StratoClient, - hasMedia: Tweet => Boolean, - clientIdHelper: ClientIdHelper, - featureSwitchesWithoutExperiments: FeatureSwitches, - ): LogicalRepositories = { - val repoStats = stats.scope("repositories") - - def repoConfig[K, V](name: String, repo: K => Stitch[V]): RepoConfig[K, V] = - new RepoConfig[K, V]( - name = name, - toRepo = repo, - stats = repoStats.scope(name), - memcachedClientWithInProcessCaching = caches.memcachedClientWithInProcessCaching) - - def repo2Config[K, C, V](name: String, repo: (K, C) => Stitch[V]): RepoConfig[(K, C), V] = - repoConfig[(K, C), V](name, repo.tupled) - - new LogicalRepositories { - // the final tweetResultRepo has a circular dependency, where it depends on hydrators - // that in turn depend on the tweetResultRepo, so we create a `tweetResultRepo` function - // that proxies to `var finalTweetResultRepo`, which gets set at the end of this block. - var finalTweetResultRepo: TweetResultRepository.Type = null - val tweetResultRepo: TweetResultRepository.Type = - (tweetId, opts) => finalTweetResultRepo(tweetId, opts) - val tweetRepo: TweetRepository.Type = TweetRepository.fromTweetResult(tweetResultRepo) - - val optionalTweetRepo: TweetRepository.Optional = TweetRepository.optional(tweetRepo) - - val userRepo: UserRepository.Type = - repo2Config(repo = external.userRepo, name = "user") - .observe() - .toRepo2 - - val optionalUserRepo: UserRepository.Optional = UserRepository.optional(userRepo) - - private[this] val tweetVisibilityStatsReceiver: StatsReceiver = - repoStats.scope("tweet_visibility_library") - private[this] val userUnavailableVisibilityStatsReceiver: StatsReceiver = - repoStats.scope("user_unavailable_visibility_library") - private[this] val quotedTweetVisibilityStatsReceiver: StatsReceiver = - repoStats.scope("quoted_tweet_visibility_library") - private[this] val deletedTweetVisibilityStatsReceiver: StatsReceiver = - repoStats.scope("deleted_tweet_visibility_library") - // TweetVisibilityLibrary still uses the old c.t.logging.Logger - private[this] val tweetVisibilityLogger = - com.twitter.logging.Logger("com.twitter.tweetypie.TweetVisibility") - private[this] val visibilityDecider: Decider = DeciderUtil.mkDecider( - deciderOverlayPath = settings.vfDeciderOverlayFilename, - useLocalDeciderOverrides = true) - private[this] val visibilityDeciderGates = VisibilityDeciderGates(visibilityDecider) - - private[this] def visibilityLibrary(statsReceiver: StatsReceiver) = VisibilityLibrary - .Builder( - log = tweetVisibilityLogger, - statsReceiver = statsReceiver, - memoizeSafetyLevelParams = visibilityDeciderGates.enableMemoizeSafetyLevelParams - ) - .withDecider(visibilityDecider) - .withDefaultABDecider(isLocal = false) - .withCaptureDebugStats(Gate.True) - .withEnableComposableActions(Gate.True) - .withEnableFailClosed(Gate.True) - .withEnableShortCircuiting(visibilityDeciderGates.enableShortCircuitingTVL) - .withSpecialLogging(visibilityDeciderGates.enableSpecialLogging) - .build() - - def countryNameGenerator(statsReceiver: StatsReceiver) = { - // TweetVisibilityLibrary, DeletedTweetVisibilityLibrary, and - // UserUnavailableVisibilityLibrary do not evaluate any Rules - // that require the display of country names in copy - CountryNameGenerator.providesWithCustomMap(Map.empty, statsReceiver) - } - - def tombstoneGenerator( - countryNameGenerator: CountryNameGenerator, - statsReceiver: StatsReceiver - ) = - TombstoneGenerator( - visibilityLibrary(statsReceiver).visParams, - countryNameGenerator, - statsReceiver) - - private[this] val userUnavailableVisibilityLibrary = - UserUnavailableStateVisibilityLibrary( - visibilityLibrary(userUnavailableVisibilityStatsReceiver), - visibilityDecider, - tombstoneGenerator( - countryNameGenerator(userUnavailableVisibilityStatsReceiver), - userUnavailableVisibilityStatsReceiver - ), - LocalizedInterstitialGenerator(visibilityDecider, userUnavailableVisibilityStatsReceiver) - ) - - val userIdentityRepo: UserIdentityRepository.Type = - repoConfig(repo = UserIdentityRepository(userRepo), name = "user_identity") - .observe() - .toRepo - - val userProtectionRepo: UserProtectionRepository.Type = - repoConfig(repo = UserProtectionRepository(userRepo), name = "user_protection") - .observe() - .toRepo - - val userViewRepo: UserViewRepository.Type = - repoConfig(repo = UserViewRepository(userRepo), name = "user_view") - .observe() - .toRepo - - val userVisibilityRepo: UserVisibilityRepository.Type = - repoConfig( - repo = UserVisibilityRepository(userRepo, userUnavailableVisibilityLibrary), - name = "user_visibility" - ).observe().toRepo - - val urlRepo: UrlRepository.Type = - repoConfig(repo = external.urlRepo, name = "url") - .observe() - .toRepo - - val profileGeoRepo: ProfileGeoRepository.Type = - repoConfig(repo = external.profileGeoRepo, name = "profile_geo") - .observe() - .toRepo - - val quoterHasAlreadyQuotedRepo: QuoterHasAlreadyQuotedRepository.Type = - repo2Config(repo = external.quoterHasAlreadyQuotedRepo, name = "quoter_has_already_quoted") - .observe() - .toRepo2 - - val lastQuoteOfQuoterRepo: LastQuoteOfQuoterRepository.Type = - repo2Config(repo = external.lastQuoteOfQuoterRepo, name = "last_quote_of_quoter") - .observe() - .toRepo2 - - val mediaMetadataRepo: MediaMetadataRepository.Type = - repoConfig(repo = external.mediaMetadataRepo, name = "media_metadata") - .observe() - .toRepo - - val perspectiveRepo: PerspectiveRepository.Type = - repoConfig(repo = external.perspectiveRepo, name = "perspective") - .observe() - .toRepo - - val conversationMutedRepo: ConversationMutedRepository.Type = - TimelineService.GetPerspectives.getConversationMuted(perspectiveRepo) - - // Because observe is applied before caching, only cache misses - // (i.e. calls to the underlying repo) are observed. - // Note that `newCaching` has stats around cache hit/miss but `caching` does not. - val deviceSourceRepo: DeviceSourceRepository.Type = - repoConfig(repo = external.deviceSourceRepo, name = "device_source") - .observe() - .newCaching( - keySerializer = appIdStr => DeviceSourceKey(appIdStr).toString, - valueSerializer = ServoCachedValueSerializer( - codec = DeviceSource, - expiry = Expiry.byAge(settings.deviceSourceMemcacheTtl), - softTtl = settings.deviceSourceMemcacheSoftTtl - ) - ) - .caching( - cache = caches.deviceSourceInProcessCache, - partialHandler = softTtlPartialHandler(_ => settings.deviceSourceInProcessSoftTtl) - ) - .toRepo - - // Because observe is applied before caching, only cache misses - // (i.e. calls to the underlying repo) are observed - // Note that `newCaching` has stats around cache hit/miss but `caching` does not. - val placeRepo: PlaceRepository.Type = - repoConfig(repo = external.placeRepo, name = "place") - .observe() - .newCaching( - keySerializer = placeKey => placeKey.toString, - valueSerializer = ServoCachedValueSerializer( - codec = Place, - expiry = Expiry.byAge(settings.placeMemcacheTtl), - softTtl = settings.placeMemcacheSoftTtl - ) - ) - .toRepo - - val cardRepo: CardRepository.Type = - repoConfig(repo = external.cardRepo, name = "cards") - .observe() - .toRepo - - val card2Repo: Card2Repository.Type = - repo2Config(repo = external.card2Repo, name = "card2") - .observe() - .toRepo2 - - val cardUsersRepo: CardUsersRepository.Type = - repo2Config(repo = external.cardUsersRepo, name = "card_users") - .observe() - .toRepo2 - - val relationshipRepo: RelationshipRepository.Type = - repoConfig(repo = external.relationshipRepo, name = "relationship") - .observe() - .toRepo - - val conversationIdRepo: ConversationIdRepository.Type = - repoConfig(repo = external.conversationIdRepo, name = "conversation_id") - .observe() - .toRepo - - val conversationControlRepo: ConversationControlRepository.Type = - repo2Config( - repo = ConversationControlRepository(tweetRepo, stats.scope("conversation_control")), - name = "conversation_control" - ).observe().toRepo2 - - val containerAsGetTweetResultRepo: CreativesContainerMaterializationRepository.GetTweetType = - repo2Config( - repo = external.containerAsTweetRepo, - name = "container_as_tweet" - ).observe().toRepo2 - - val containerAsGetTweetFieldsResultRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType = - repo2Config( - repo = external.containerAsTweetFieldsRepo, - name = "container_as_tweet_fields" - ).observe().toRepo2 - - val languageRepo: LanguageRepository.Type = { - val pool = FuturePool(Executors.newFixedThreadPool(settings.numPenguinThreads)) - repoConfig(repo = PenguinLanguageRepository(pool), name = "language") - .observe() - .toRepo - } - - // Because observe is applied before caching, only cache misses - // (i.e. calls to the underlying repo) are observed - // Note that `newCaching` has stats around cache hit/miss but `caching` does not. - val tweetCountsRepo: TweetCountsRepository.Type = - repoConfig(repo = external.tweetCountsRepo, name = "counts") - .observe() - .caching( - cache = caches.tweetCountsCache, - partialHandler = softTtlPartialHandler { - case Some(0) => settings.tweetCountsMemcacheZeroSoftTtl - case _ => settings.tweetCountsMemcacheNonZeroSoftTtl - }, - maxCacheRequestSize = settings.tweetCountsCacheChunkSize - ) - .toRepo - - val pastedMediaRepo: PastedMediaRepository.Type = - repo2Config(repo = PastedMediaRepository(tweetRepo), name = "pasted_media") - .observe() - .toRepo2 - - val escherbirdAnnotationRepo: EscherbirdAnnotationRepository.Type = - repoConfig(repo = external.escherbirdAnnotationRepo, name = "escherbird_annotations") - .observe() - .toRepo - - val stratoSafetyLabelsRepo: StratoSafetyLabelsRepository.Type = - repo2Config(repo = external.stratoSafetyLabelsRepo, name = "strato_safety_labels") - .observe() - .toRepo2 - - val stratoCommunityMembershipRepo: StratoCommunityMembershipRepository.Type = - repoConfig( - repo = external.stratoCommunityMembershipRepo, - name = "strato_community_memberships") - .observe() - .toRepo - - val stratoCommunityAccessRepo: StratoCommunityAccessRepository.Type = - repoConfig(repo = external.stratoCommunityAccessRepo, name = "strato_community_access") - .observe() - .toRepo - - val stratoSuperFollowEligibleRepo: StratoSuperFollowEligibleRepository.Type = - repoConfig( - repo = external.stratoSuperFollowEligibleRepo, - name = "strato_super_follow_eligible") - .observe() - .toRepo - - val stratoSuperFollowRelationsRepo: StratoSuperFollowRelationsRepository.Type = - repo2Config( - repo = external.stratoSuperFollowRelationsRepo, - name = "strato_super_follow_relations") - .observe() - .toRepo2 - - val stratoPromotedTweetRepo: StratoPromotedTweetRepository.Type = - repoConfig(repo = external.stratoPromotedTweetRepo, name = "strato_promoted_tweet") - .observe() - .toRepo - - val stratoSubscriptionVerificationRepo: StratoSubscriptionVerificationRepository.Type = - repo2Config( - repo = external.stratoSubscriptionVerificationRepo, - name = "strato_subscription_verification") - .observe() - .toRepo2 - - val unmentionedEntitiesRepo: UnmentionedEntitiesRepository.Type = - repo2Config(repo = external.unmentionedEntitiesRepo, name = "unmentioned_entities") - .observe() - .toRepo2 - - private[this] val userSource = - UserSource.fromRepo( - Repo { (k, _) => - val opts = UserQueryOptions(k.fields, UserVisibility.All) - userRepo(UserKey(k.id), opts) - } - ) - - private[this] val userRelationshipSource = - UserRelationshipSource.fromRepo( - Repo[UserRelationshipSource.Key, Unit, Boolean] { (key, _) => - relationshipRepo( - RelationshipKey(key.subjectId, key.objectId, key.relationship) - ) - } - ) - - private[this] val tweetPerspectiveSource = - TweetPerspectiveSource.fromGetPerspectives(perspectiveRepo) - private[this] val tweetMediaMetadataSource = - TweetMediaMetadataSource.fromFunction(mediaMetadataRepo) - - val userIsInvitedToConversationRepo: UserIsInvitedToConversationRepository.Type = - repo2Config( - repo = external.userIsInvitedToConversationRepo, - name = "user_is_invited_to_conversation") - .observe() - .toRepo2 - - private[this] val stringCenterClient: MultiProjectStringCenter = { - val stringCenterProjects = settings.flags.stringCenterProjects().toList - - val languages: Languages = new YamlConfigLanguages( - new YamlConfig(settings.flags.languagesConfig())) - - val loggingAbDecider = ABDeciderFactory("/usr/local/config/abdecider/abdecider.yml") - .withEnvironment("production") - .buildWithLogging() - - MultiProjectStringCenter( - projects = stringCenterProjects, - defaultBundlePath = MultiProjectStringCenter.StandardDefaultBundlePath, - refreshingBundlePath = MultiProjectStringCenter.StandardRefreshingBundlePath, - refreshingInterval = MultiProjectStringCenter.StandardRefreshingInterval, - requireDefaultBundleExists = true, - languages = languages, - statsReceiver = tweetVisibilityStatsReceiver, - loggingABDecider = loggingAbDecider - ) - } - private[this] val stringRegistry: ExternalStringRegistry = new ExternalStringRegistry() - private[this] val localizationSource: LocalizationSource = - LocalizationSource.fromMultiProjectStringCenterClient(stringCenterClient, stringRegistry) - - val tweetVisibilityRepo: TweetVisibilityRepository.Type = { - val tweetVisibilityLibrary: TweetVisibilityLibrary.Type = - TweetVisibilityLibrary( - visibilityLibrary(tweetVisibilityStatsReceiver), - userSource = userSource, - userRelationshipSource = userRelationshipSource, - keywordMatcher = KeywordMatcher.defaultMatcher(stats), - stratoClient = stratoClient, - localizationSource = localizationSource, - decider = visibilityDecider, - invitedToConversationRepo = userIsInvitedToConversationRepo, - tweetPerspectiveSource = tweetPerspectiveSource, - tweetMediaMetadataSource = tweetMediaMetadataSource, - tombstoneGenerator = tombstoneGenerator( - countryNameGenerator(tweetVisibilityStatsReceiver), - tweetVisibilityStatsReceiver - ), - interstitialGenerator = - LocalizedInterstitialGenerator(visibilityDecider, tweetVisibilityStatsReceiver), - limitedActionsFeatureSwitches = - FeatureSwitchUtil.mkLimitedActionsFeatureSwitches(tweetVisibilityStatsReceiver), - enableParityTest = deciderGates.tweetVisibilityLibraryEnableParityTest - ) - - val underlying = - TweetVisibilityRepository( - tweetVisibilityLibrary, - visibilityDeciderGates, - tweetVisibilityLogger, - repoStats.scope("tweet_visibility_repo") - ) - - repoConfig(repo = underlying, name = "tweet_visibility") - .observe() - .toRepo - } - - val quotedTweetVisibilityRepo: QuotedTweetVisibilityRepository.Type = { - val quotedTweetVisibilityLibrary: QuotedTweetVisibilityLibrary.Type = - QuotedTweetVisibilityLibrary( - visibilityLibrary(quotedTweetVisibilityStatsReceiver), - userSource = userSource, - userRelationshipSource = userRelationshipSource, - visibilityDecider, - userStateVisibilityLibrary = userUnavailableVisibilityLibrary, - enableVfFeatureHydration = deciderGates.enableVfFeatureHydrationInQuotedTweetVLShim - ) - - val underlying = - QuotedTweetVisibilityRepository(quotedTweetVisibilityLibrary, visibilityDeciderGates) - - repoConfig(repo = underlying, name = "quoted_tweet_visibility") - .observe() - .toRepo - } - - val deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type = { - val deletedTweetVisibilityLibrary: DeletedTweetVisibilityLibrary.Type = - DeletedTweetVisibilityLibrary( - visibilityLibrary(deletedTweetVisibilityStatsReceiver), - visibilityDecider, - tombstoneGenerator( - countryNameGenerator(deletedTweetVisibilityStatsReceiver), - deletedTweetVisibilityStatsReceiver - ) - ) - - val underlying = DeletedTweetVisibilityRepository.apply( - deletedTweetVisibilityLibrary - ) - - repoConfig(repo = underlying, name = "deleted_tweet_visibility") - .observe() - .toRepo - } - - val takedownRepo: UserTakedownRepository.Type = - repoConfig(repo = UserTakedownRepository(userRepo), name = "takedowns") - .observe() - .toRepo - - val tweetSpamCheckRepo: TweetSpamCheckRepository.Type = - repo2Config(repo = external.tweetSpamCheckRepo, name = "tweet_spam_check") - .observe() - .toRepo2 - - val retweetSpamCheckRepo: RetweetSpamCheckRepository.Type = - repoConfig(repo = external.retweetSpamCheckRepo, name = "retweet_spam_check") - .observe() - .toRepo - - // Because observe is applied before caching, only cache misses - // (i.e. calls to the underlying repo) are observed - // Note that `newCaching` has stats around cache hit/miss but `caching` does not. - val geoScrubTimestampRepo: GeoScrubTimestampRepository.Type = - repoConfig(repo = external.geoScrubTimestampRepo, name = "geo_scrub") - .observe() - .caching( - cache = caches.geoScrubCache, - partialHandler = (_ => None) - ) - .toRepo - - val tweetHydrators: TweetHydrators = - TweetHydrators( - stats = stats, - deciderGates = deciderGates, - repos = this, - tweetDataCache = caches.tweetDataCache, - hasMedia = hasMedia, - featureSwitchesWithoutExperiments = featureSwitchesWithoutExperiments, - clientIdHelper = clientIdHelper, - ) - - val queryOptionsExpander: TweetQueryOptionsExpander.Type = - TweetQueryOptionsExpander.threadLocalMemoize( - TweetQueryOptionsExpander.expandDependencies - ) - - // mutations to tweets that we only need to apply when reading from the external - // repository, and not when reading from cache - val tweetMutation: Mutation[Tweet] = - Mutation - .all( - Seq( - EntityExtractor.mutationAll, - TextRepairer.BlankLineCollapser, - TextRepairer.CoreTextBugPatcher - ) - ).onlyIf(_.coreData.isDefined) - - val cachingTweetRepo: TweetResultRepository.Type = - repo2Config(repo = external.tweetResultRepo, name = "saved_tweet") - .observe() - .withMiddleware { repo => - // applies tweetMutation to the results of TweetResultRepository - val mutateResult = TweetResult.mutate(tweetMutation) - repo.andThen(stitchResult => stitchResult.map(mutateResult)) - } - .withMiddleware( - tupledMiddleware( - CachingTweetRepository( - caches.tweetResultCache, - settings.tweetTombstoneTtl, - stats.scope("saved_tweet", "cache"), - clientIdHelper, - deciderGates.logCacheExceptions, - ) - ) - ) - .toRepo2 - - finalTweetResultRepo = repo2Config(repo = cachingTweetRepo, name = "tweet") - .withMiddleware( - tupledMiddleware( - TweetHydration.hydrateRepo( - tweetHydrators.hydrator, - tweetHydrators.cacheChangesEffect, - queryOptionsExpander - ) - ) - ) - .observe() - .withMiddleware(tupledMiddleware(TweetResultRepository.shortCircuitInvalidIds)) - .toRepo2 - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.docx new file mode 100644 index 0000000000000000000000000000000000000000..8f6153c2364967cffa316870a4ac8636e98e460b GIT binary patch literal 40936 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.scala deleted file mode 100644 index 22623039b..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Main.scala +++ /dev/null @@ -1,314 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.app.Flag -import com.twitter.app.Flaggable -import com.twitter.app.Flags -import com.twitter.finagle.http.HttpMuxer -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.mtls.authorization.server.MtlsServerSessionTrackerFilter -import com.twitter.finagle.mtls.server.MtlsStackServer._ -import com.twitter.finagle.param.Reporter -import com.twitter.finagle.ssl.OpportunisticTls -import com.twitter.finagle.util.NullReporterFactory -import com.twitter.finagle.Thrift -import com.twitter.finagle.ThriftMux -import com.twitter.flockdb.client.thriftscala.Priority -import com.twitter.inject.Injector -import com.twitter.inject.annotations.{Flags => InjectFlags} -import com.twitter.scrooge.ThriftEnum -import com.twitter.scrooge.ThriftEnumObject -import com.twitter.server.handler.IndexHandler -import com.twitter.strato.catalog.Catalog -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.fed.server.StratoFedServer -import com.twitter.strato.util.Ref -import com.twitter.strato.warmup.Warmer -import com.twitter.tweetypie.federated.StratoCatalogBuilder -import com.twitter.tweetypie.federated.warmups.StratoCatalogWarmups -import com.twitter.tweetypie.serverutil.ActivityService -import java.net.InetSocketAddress -import scala.reflect.ClassTag - -object Env extends Enumeration { - val dev: Env.Value = Value - val staging: Env.Value = Value - val prod: Env.Value = Value -} - -class TweetServiceFlags(flag: Flags, injector: => Injector) { - implicit object EnvFlaggable extends Flaggable[Env.Value] { - def parse(s: String): Env.Value = - s match { - // Handle Aurora env names that are different from tweetypie's names - case "devel" => Env.dev - case "test" => Env.staging - // Handle Tweetypie env names - case other => Env.withName(other) - } - } - - val zone: Flag[String] = - flag("zone", "localhost", "One of: atla, pdxa, localhost, etc.") - - val env: Flag[Env.Value] = - flag("env", Env.dev, "One of: testbox, dev, staging, prod") - - val twemcacheDest: Flag[String] = - flag( - "twemcacheDest", - "/s/cache/tweetypie:twemcaches", - "The Name for the tweetypie cache cluster." - ) - - val deciderOverrides: Flag[Map[String, Boolean]] = - flag( - "deciderOverrides", - Map.empty[String, Boolean], - "Set deciders to constant values, overriding decider configuration files." - )( - // Unfortunately, the implicit Flaggable[Boolean] has a default - // value and Flaggable.ofMap[K, V] requires that the implicit - // Flaggable[V] not have a default. Even less fortunately, it - // doesn't say why. We're stuck with this. - Flaggable.ofMap(implicitly, Flaggable.mandatory(_.toBoolean)) - ) - - // "/decider.yml" comes from the resources included at - // "tweetypie/server/config", so you should not normally need to - // override this value. This flag is defined as a step toward making - // our command-line usage more similar to the standard - // twitter-server-internal flags. - def deciderBase(): String = - injector.instance[String](InjectFlags.named("decider.base")) - - // Omitting a value for decider overlay flag causes the server to use - // only the static decider. - def deciderOverlay(): String = - injector.instance[String](InjectFlags.named("decider.overlay")) - - // Omitting a value for the VF decider overlay flag causes the server - // to use only the static decider. - val vfDeciderOverlay: Flag[String] = - flag( - "vf.decider.overlay", - "The location of the overlay decider configuration for Visibility Filtering") - - /** - * Warmup Requests happen as part of the initialization process, before any real requests are - * processed. This prevents real requests from ever being served from a competely cold state - */ - val enableWarmupRequests: Flag[Boolean] = - flag( - "enableWarmupRequests", - true, - """| warms up Tweetypie service by generating random requests - | to Tweetypie that are processed prior to the actual client requests """.stripMargin - ) - - val grayListRateLimit: Flag[Double] = - flag("graylistRateLimit", 5.0, "rate-limit for non-allowlisted clients") - - val servicePort: Flag[InetSocketAddress] = - flag("service.port", "port for tweet-service thrift interface") - - val clientId: Flag[String] = - flag("clientId", "tweetypie.staging", "clientId to send in requests") - - val allowlist: Flag[Boolean] = - flag("allowlist", true, "enforce client allowlist") - - val clientHostStats: Flag[Boolean] = - flag("clientHostStats", false, "enable per client host stats") - - val withCache: Flag[Boolean] = - flag("withCache", true, "if set to false, Tweetypie will launch without memcache") - - /** - * Make any [[ThriftEnum]] value parseable as a [[Flag]] value. This - * will parse case-insensitive values that match the unqualified - * names of the values of the enumeration, in the manner of - * [[ThriftEnum]]'s `valueOf` method. - * - * Consider a [[ThriftEnum]] generated from the following Thrift IDL snippet: - * - * {{{ - * enum Priority { - * Low = 1 - * Throttled = 2 - * High = 3 - * } - * }}} - * - * To enable defining flags that specify one of these enum values: - * - * {{{ - * implicit val flaggablePriority: Flaggable[Priority] = flaggableThriftEnum(Priority) - * }}} - * - * In this example, the enumeration value `Priority.Low` can be - * represented as the string "Low", "low", or "LOW". - */ - def flaggableThriftEnum[T <: ThriftEnum: ClassTag](enum: ThriftEnumObject[T]): Flaggable[T] = - Flaggable.mandatory[T] { stringValue: String => - enum - .valueOf(stringValue) - .getOrElse { - val validValues = enum.list.map(_.name).mkString(", ") - throw new IllegalArgumentException( - s"Invalid value ${stringValue}. Valid values include: ${validValues}" - ) - } - } - - implicit val flaggablePriority: Flaggable[Priority] = flaggableThriftEnum(Priority) - - val backgroundIndexingPriority: Flag[Priority] = - flag( - "backgroundIndexingPriority", - Priority.Low, - "specifies the queue to use for \"background\" tflock operations, such as removing edges " + - "for deleted Tweets. This exists for testing scenarios, when it is useful to see the " + - "effects of background indexing operations sooner. In production, this should always be " + - "set to \"low\" (the default)." - ) - - val tflockPageSize: Flag[Int] = - flag("tflockPageSize", 1000, "Number of items to return in each page when querying tflock") - - val enableInProcessCache: Flag[Boolean] = - flag( - "enableInProcessCache", - true, - "if set to false, Tweetypie will not use the in-process cache" - ) - - val inProcessCacheSize: Flag[Int] = - flag("inProcessCacheSize", 1700, "maximum items in in-process cache") - - val inProcessCacheTtlMs: Flag[Int] = - flag("inProcessCacheTtlMs", 10000, "milliseconds that hot keys are stored in memory") - - val memcachePendingRequestLimit: Flag[Int] = - flag( - "memcachePendingRequestLimit", - 100, - "Number of requests that can be queued on a single memcache connection (4 per cache server)" - ) - - val instanceId: Flag[Int] = - flag( - "configbus.instanceId", - -1, - "InstanceId of the tweetypie service instance for staged configuration distribution" - ) - - val instanceCount: Flag[Int] = - flag( - "configbus.instanceCount", - -1, - "Total number of tweetypie service instances for staged configuration distribution" - ) - - def serviceIdentifier(): ServiceIdentifier = - injector.instance[ServiceIdentifier] - - val enableReplication: Flag[Boolean] = - flag( - "enableReplication", - true, - "Enable replication of reads (configurable via tweetypie_replicate_reads decider) and writes (100%) via DRPC" - ) - - val simulateDeferredrpcCallbacks: Flag[Boolean] = - flag( - "simulateDeferredrpcCallbacks", - false, - """|For async write path, call back into current instance instead of via DRPC. - |This is used for test and devel instances so we can ensure the test traffic - |is going to the test instance.""".stripMargin - ) - - val shortCircuitLikelyPartialTweetReadsMs: Flag[Int] = - flag( - "shortCircuitLikelyPartialTweetReadsMs", - 1500, - """|Specifies a number of milliseconds before which we will short-circuit likely - |partial reads from MH and return a NotFound tweet response state. After - |experimenting we went with 1500 ms.""".stripMargin - ) - - val stringCenterProjects: Flag[Seq[String]] = - flag( - "stringcenter.projects", - Seq.empty[String], - "String Center project names, comma separated")(Flaggable.ofSeq(Flaggable.ofString)) - - val languagesConfig: Flag[String] = - flag("international.languages", "Supported languages config file") -} - -class TweetypieMain extends StratoFedServer { - override def dest: String = "/s/tweetypie/tweetypie:federated" - - val tweetServiceFlags: TweetServiceFlags = new TweetServiceFlags(flag, injector) - - // display all the registered HttpMuxer handlers - HttpMuxer.addHandler("", new IndexHandler) - - private[this] lazy val serverBuilder = { - val settings = new TweetServiceSettings(tweetServiceFlags) - val serverBuilder = new TweetServerBuilder(settings) - - val mtlsSessionTrackerFilter = - new MtlsServerSessionTrackerFilter[Array[Byte], Array[Byte]](statsReceiver) - - val mtlsTrackedService = mtlsSessionTrackerFilter.andThen(ActivityService(serverBuilder.build)) - - val thriftMuxServer = ThriftMux.server - // by default, finagle logs exceptions to chickadee, which is deprecated and - // basically unused. to avoid wasted overhead, we explicitly disable the reporter. - .configured(Reporter(NullReporterFactory)) - .withLabel("tweetypie") - .withMutualTls(tweetServiceFlags.serviceIdentifier()) - .withOpportunisticTls(OpportunisticTls.Required) - .configured(Thrift.param.ServiceClass(Some(classOf[ThriftTweetService]))) - .serve(tweetServiceFlags.servicePort(), mtlsTrackedService) - - closeOnExit(thriftMuxServer) - await(thriftMuxServer) - - serverBuilder - } - - override def configureRefCatalog( - catalog: Ref[Catalog[StratoFed.Column]] - ): Ref[Catalog[StratoFed.Column]] = - catalog - .join { - Ref( - serverBuilder.stratoTweetService.flatMap { tweetService => - StratoCatalogBuilder.catalog( - tweetService, - serverBuilder.backendClients.stratoserverClient, - serverBuilder.backendClients.gizmoduck.getById, - serverBuilder.backendClients.callbackPromotedContentLogger, - statsReceiver, - serverBuilder.deciderGates.enableCommunityTweetCreates, - ) - } - ) - } - .map { case (l, r) => l ++ r } - - override def configureWarmer(warmer: Warmer): Unit = { - new TweetServiceSettings(tweetServiceFlags).warmupRequestsSettings.foreach { warmupSettings => - warmer.add( - "tweetypie strato catalog", - () => StratoCatalogWarmups.warmup(warmupSettings, composedOps) - ) - } - } -} - -object Main extends TweetypieMain diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/MemcacheExceptionLoggingFilter.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/MemcacheExceptionLoggingFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..e9505460d52a04f219a0ff764a79434353f8146c GIT binary patch literal 37403 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 - log(command, e) - case Return(ValuesAndErrors(_, errors)) if errors.nonEmpty => - errors.foreach { - case (Buf.Utf8(keyStr), e) => - log(command.name, keyStr, e) - } - case Throw(e) => - log(command, e) - - case _ => - } - } - - private def log(command: Command, e: Throwable): Unit = { - log(command.name, getKey(command), e) - } - - private def log(commandName: String, keyStr: String, e: Throwable): Unit = { - logger.debug( - s"CACHE_EXCEPTION command: ${commandName} key: ${keyStr} exception: ${e.getClass.getName}", - e, - ) - } - - private def getKey(command: Command): String = command match { - case Get(keys) => toKeyStr(keys) - case Gets(keys) => toKeyStr(keys) - - case Set(Buf.Utf8(key), _, _, _) => key - case Add(Buf.Utf8(key), _, _, _) => key - case Cas(Buf.Utf8(key), _, _, _, _) => key - case Delete(Buf.Utf8(key)) => key - case Replace(Buf.Utf8(key), _, _, _) => key - case Append(Buf.Utf8(key), _, _, _) => key - case Prepend(Buf.Utf8(key), _, _, _) => key - - case Incr(Buf.Utf8(key), _) => key - case Decr(Buf.Utf8(key), _) => key - case Stats(keys) => toKeyStr(keys) - case Quit() => "quit" - case Upsert(Buf.Utf8(key), _, _, _, _) => key - case Getv(keys) => toKeyStr(keys) - } - - private def toKeyStr(keys: Seq[Buf]): String = - keys.map { case Buf.Utf8(key) => key }.mkString(",") -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.docx new file mode 100644 index 0000000000000000000000000000000000000000..22acf1f4963676c50706a3b7e0915d5179b5ba52 GIT binary patch literal 36907 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.scala deleted file mode 100644 index d1f4721dc..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/Resources.scala +++ /dev/null @@ -1,15 +0,0 @@ -package com.twitter.tweetypie.config - -import com.twitter.config.yaml.YamlMap -import com.twitter.tweetypie.serverutil.PartnerMedia -import scala.util.matching.Regex - -/** - * Helpers for loading resources bundled with Tweetypie. We load them - * through this API in order to be able to unit test the resource - * loading code. - */ -object Resources { - def loadPartnerMediaRegexes(): Seq[Regex] = - PartnerMedia.load(YamlMap.load("/partner_media.yml")) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.docx new file mode 100644 index 0000000000000000000000000000000000000000..8f322bcadb2d939376b6f38de404bc2cb8133e7a GIT binary patch literal 38312 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.scala deleted file mode 100644 index 523c9be1c..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/ScribeTweetCacheWrites.scala +++ /dev/null @@ -1,102 +0,0 @@ -package com.twitter.tweetypie.config - -import com.twitter.servo.cache.{Cache, Cached, CachedValue, CachedValueStatus} -import com.twitter.servo.util.Scribe -import com.twitter.tweetypie.TweetId -import com.twitter.tweetypie.repository.TweetKey -import com.twitter.tweetypie.serverutil.logcachewrites.WriteLoggingCache -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.tweetypie.thriftscala.{CachedTweet, ComposerSource, TweetCacheWrite} -import com.twitter.util.Time - -class ScribeTweetCacheWrites( - val underlyingCache: Cache[TweetKey, Cached[CachedTweet]], - logYoungTweetCacheWrites: TweetId => Boolean, - logTweetCacheWrites: TweetId => Boolean) - extends WriteLoggingCache[TweetKey, Cached[CachedTweet]] { - private[this] lazy val scribe = Scribe(TweetCacheWrite, "tweetypie_tweet_cache_writes") - - private[this] def mkTweetCacheWrite( - id: Long, - action: String, - cachedValue: CachedValue, - cachedTweet: Option[CachedTweet] = None - ): TweetCacheWrite = { - /* - * If the Tweet id is a Snowflake id, calculate the offset since Tweet creation. - * If it is not a Snowflake id, then the offset should be 0. See [[TweetCacheWrite]]'s Thrift - * documentation for more details. - */ - val timestampOffset = - if (SnowflakeId.isSnowflakeId(id)) { - SnowflakeId(id).unixTimeMillis.asLong - } else { - 0 - } - - TweetCacheWrite( - tweetId = id, - timestamp = Time.now.inMilliseconds - timestampOffset, - action = action, - cachedValue = cachedValue, - cachedTweet = cachedTweet - ) - } - - /** - * Scribe a TweetCacheWrite record to tweetypie_tweet_cache_writes. We scribe the - * messages instead of writing them to the regular log file because the - * primary use of this logging is to get a record over time of the cache - * actions that affected a tweet, so we need a durable log that we can - * aggregate. - */ - override def log(action: String, k: TweetKey, v: Option[Cached[CachedTweet]]): Unit = - v match { - case Some(cachedTweet) => { - val cachedValue = CachedValue( - status = cachedTweet.status, - cachedAtMsec = cachedTweet.cachedAt.inMilliseconds, - readThroughAtMsec = cachedTweet.readThroughAt.map(_.inMilliseconds), - writtenThroughAtMsec = cachedTweet.writtenThroughAt.map(_.inMilliseconds), - doNotCacheUntilMsec = cachedTweet.doNotCacheUntil.map(_.inMilliseconds), - ) - scribe(mkTweetCacheWrite(k.id, action, cachedValue, cachedTweet.value)) - } - // `v` is only None if the action is a "delete" so set CachedValue with a status `Deleted` - case None => { - val cachedValue = - CachedValue(status = CachedValueStatus.Deleted, cachedAtMsec = Time.now.inMilliseconds) - scribe(mkTweetCacheWrite(k.id, action, cachedValue)) - } - } - - private[this] val YoungTweetThresholdMs = 3600 * 1000 - - private[this] def isYoungTweet(tweetId: TweetId): Boolean = - (SnowflakeId.isSnowflakeId(tweetId) && - ((Time.now.inMilliseconds - SnowflakeId(tweetId).unixTimeMillis.asLong) <= - YoungTweetThresholdMs)) - - /** - * Select all tweets for which the log_tweet_cache_writes decider returns - * true and "young" tweets for which the log_young_tweet_cache_writes decider - * returns true. - */ - override def selectKey(k: TweetKey): Boolean = - // When the tweet is young, we log it if it passes either decider. This is - // because the deciders will (by design) select a different subset of - // tweets. We do this so that we have a full record for all tweets for which - // log_tweet_cache_writes is on, but also cast a wider net for tweets that - // are more likely to be affected by replication lag, race conditions - // between different writes, or other consistency issues - logTweetCacheWrites(k.id) || (isYoungTweet(k.id) && logYoungTweetCacheWrites(k.id)) - - /** - * Log newscamera tweets as well as any tweets for which selectKey returns - * true. Note that for newscamera tweets, we will possibly miss "delete" - * actions since those do not have access to the value, and so do not call - * this method. - */ - override def select(k: TweetKey, v: Cached[CachedTweet]): Boolean = - v.value.exists(_.tweet.composerSource.contains(ComposerSource.Camera)) || selectKey(k) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.docx new file mode 100644 index 0000000000000000000000000000000000000000..17ed3c4fe52009990eb53f0ae322f7b3508c4219 GIT binary patch literal 39563 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.scala deleted file mode 100644 index eafd02eaa..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetBuilders.scala +++ /dev/null @@ -1,300 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.stitch.repo.Repo -import com.twitter.tweetypie.backends.LimiterService.Feature -import com.twitter.tweetypie.handler._ -import com.twitter.tweetypie.jiminy.tweetypie.NudgeBuilder -import com.twitter.tweetypie.repository.RelationshipKey -import com.twitter.tweetypie.store.TotalTweetStore -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.tweettext.TweetText -import com.twitter.visibility.common.TrustedFriendsSource -import com.twitter.visibility.common.UserRelationshipSource -import com.twitter.visibility.writer.interfaces.tweets.TweetWriteEnforcementLibrary - -trait TweetBuilders { - val retweetBuilder: RetweetBuilder.Type - val tweetBuilder: TweetBuilder.Type -} - -object TweetBuilders { - - def validateCardRefAttachmentByUserAgentGate( - android: Gate[Unit], - nonAndroid: Gate[Unit] - ): Gate[Option[String]] = - Gate[Option[String]] { (userAgent: Option[String]) => - if (userAgent.exists(_.startsWith("TwitterAndroid"))) { - android() - } else { - nonAndroid() - } - } - - def apply( - settings: TweetServiceSettings, - statsReceiver: StatsReceiver, - deciderGates: TweetypieDeciderGates, - featureSwitchesWithExperiments: FeatureSwitches, - clients: BackendClients, - caches: Caches, - repos: LogicalRepositories, - tweetStore: TotalTweetStore, - hasMedia: Tweet => Boolean, - unretweetEdits: TweetDeletePathHandler.UnretweetEdits, - ): TweetBuilders = { - val urlShortener = - UrlShortener.scribeMalware(clients.guano) { - UrlShortener.fromTalon(clients.talon.shorten) - } - - val urlEntityBuilder = UrlEntityBuilder.fromShortener(urlShortener) - - val geoBuilder = - GeoBuilder( - repos.placeRepo, - ReverseGeocoder.fromGeoduck(clients.geoduckGeohashLocate), - statsReceiver.scope("geo_builder") - ) - - val replyCardUsersFinder: CardUsersFinder.Type = CardUsersFinder(repos.cardUsersRepo) - - val selfThreadBuilder = SelfThreadBuilder(statsReceiver.scope("self_thread_builder")) - - val replyBuilder = - ReplyBuilder( - repos.userIdentityRepo, - repos.optionalTweetRepo, - replyCardUsersFinder, - selfThreadBuilder, - repos.relationshipRepo, - repos.unmentionedEntitiesRepo, - deciderGates.enableRemoveUnmentionedImplicitMentions, - statsReceiver.scope("reply_builder"), - TweetText.MaxMentions - ) - - val mediaBuilder = - MediaBuilder( - clients.mediaClient.processMedia, - CreateMediaTco(urlShortener), - statsReceiver.scope("media_builder") - ) - - val validateAttachments = - AttachmentBuilder.validateAttachments( - statsReceiver, - validateCardRefAttachmentByUserAgentGate( - android = deciderGates.validateCardRefAttachmentAndroid, - nonAndroid = deciderGates.validateCardRefAttachmentNonAndroid - ) - ) - - val attachmentBuilder = - AttachmentBuilder( - repos.optionalTweetRepo, - urlShortener, - validateAttachments, - statsReceiver.scope("attachment_builder"), - deciderGates.denyNonTweetPermalinks - ) - - val validatePostTweetRequest: FutureEffect[PostTweetRequest] = - TweetBuilder.validateAdditionalFields[PostTweetRequest] - - val validateRetweetRequest = - TweetBuilder.validateAdditionalFields[RetweetRequest] - - val tweetIdGenerator = - () => clients.snowflakeClient.get() - - val retweetSpamChecker = - Spam.gated(deciderGates.checkSpamOnRetweet) { - Spam.allowOnException( - ScarecrowRetweetSpamChecker( - statsReceiver.scope("retweet_builder").scope("spam"), - repos.retweetSpamCheckRepo - ) - ) - } - - val tweetSpamChecker = - Spam.gated(deciderGates.checkSpamOnTweet) { - Spam.allowOnException( - ScarecrowTweetSpamChecker.fromSpamCheckRepository( - statsReceiver.scope("tweet_builder").scope("spam"), - repos.tweetSpamCheckRepo - ) - ) - } - - val duplicateTweetFinder = - DuplicateTweetFinder( - settings = settings.duplicateTweetFinderSettings, - tweetSource = DuplicateTweetFinder.TweetSource.fromServices( - tweetRepo = repos.optionalTweetRepo, - getStatusTimeline = clients.timelineService.getStatusTimeline - ) - ) - - val validateUpdateRateLimit = - RateLimitChecker.validate( - clients.limiterService.hasRemaining(Feature.Updates), - statsReceiver.scope("rate_limits", Feature.Updates.name), - deciderGates.rateLimitByLimiterService - ) - - val tweetBuilderStats = statsReceiver.scope("tweet_builder") - - val updateUserCounts = - TweetBuilder.updateUserCounts(hasMedia) - - val filterInvalidData = - TweetBuilder.filterInvalidData( - validateTweetMediaTags = TweetBuilder.validateTweetMediaTags( - tweetBuilderStats.scope("media_tags_filter"), - RateLimitChecker.getMaxMediaTags( - clients.limiterService.minRemaining(Feature.MediaTagCreate), - TweetBuilder.MaxMediaTagCount - ), - repos.optionalUserRepo - ), - cardReferenceBuilder = TweetBuilder.cardReferenceBuilder( - CardReferenceValidationHandler(clients.expandodo.checkAttachmentEligibility), - urlShortener - ) - ) - - val rateLimitFailures = - PostTweet.RateLimitFailures( - validateLimit = RateLimitChecker.validate( - clients.limiterService.hasRemaining(Feature.TweetCreateFailure), - statsReceiver.scope("rate_limits", Feature.TweetCreateFailure.name), - deciderGates.rateLimitTweetCreationFailure - ), - clients.limiterService.incrementByOne(Feature.Updates), - clients.limiterService.incrementByOne(Feature.TweetCreateFailure) - ) - - val countFailures = - PostTweet.CountFailures[TweetBuilderResult](statsReceiver) - - val tweetBuilderFilter: PostTweet.Filter[TweetBuilderResult] = - rateLimitFailures.andThen(countFailures) - - val conversationControlBuilder = ConversationControlBuilder.fromUserIdentityRepo( - statsReceiver = statsReceiver.scope("conversation_control_builder"), - userIdentityRepo = repos.userIdentityRepo - ) - - val conversationControlValidator = ConversationControlBuilder.Validate( - useFeatureSwitchResults = deciderGates.useConversationControlFeatureSwitchResults, - statsReceiver = statsReceiver - ) - - val communitiesValidator: CommunitiesValidator.Type = CommunitiesValidator() - - val collabControlBuilder: CollabControlBuilder.Type = CollabControlBuilder() - - val userRelationshipSource = UserRelationshipSource.fromRepo( - Repo[UserRelationshipSource.Key, Unit, Boolean] { (key, _) => - repos.relationshipRepo( - RelationshipKey(key.subjectId, key.objectId, key.relationship) - ) - } - ) - - val trustedFriendsSource = - TrustedFriendsSource.fromStrato(clients.stratoserverClient, statsReceiver) - - val validateTweetWrite = TweetWriteValidator( - convoCtlRepo = repos.conversationControlRepo, - tweetWriteEnforcementLibrary = TweetWriteEnforcementLibrary( - userRelationshipSource, - trustedFriendsSource, - repos.userIsInvitedToConversationRepo, - repos.stratoSuperFollowEligibleRepo, - repos.tweetRepo, - statsReceiver.scope("tweet_write_enforcement_library") - ), - enableExclusiveTweetControlValidation = deciderGates.enableExclusiveTweetControlValidation, - enableTrustedFriendsControlValidation = deciderGates.enableTrustedFriendsControlValidation, - enableStaleTweetValidation = deciderGates.enableStaleTweetValidation - ) - - val nudgeBuilder = NudgeBuilder( - clients.stratoserverClient, - deciderGates.jiminyDarkRequests, - statsReceiver.scope("nudge_builder") - ) - - val editControlBuilder = EditControlBuilder( - tweetRepo = repos.tweetRepo, - card2Repo = repos.card2Repo, - promotedTweetRepo = repos.stratoPromotedTweetRepo, - subscriptionVerificationRepo = repos.stratoSubscriptionVerificationRepo, - disablePromotedTweetEdit = deciderGates.disablePromotedTweetEdit, - checkTwitterBlueSubscription = deciderGates.checkTwitterBlueSubscriptionForEdit, - setEditWindowToSixtyMinutes = deciderGates.setEditTimeWindowToSixtyMinutes, - stats = statsReceiver, - ) - - val validateEdit = EditValidator(repos.optionalTweetRepo) - - // TweetBuilders builds two distinct TweetBuilders (Tweet and Retweet builders). - new TweetBuilders { - val tweetBuilder: TweetBuilder.Type = - tweetBuilderFilter[PostTweetRequest]( - TweetBuilder( - stats = tweetBuilderStats, - validateRequest = validatePostTweetRequest, - validateEdit = validateEdit, - validateUpdateRateLimit = validateUpdateRateLimit, - tweetIdGenerator = tweetIdGenerator, - userRepo = repos.userRepo, - deviceSourceRepo = repos.deviceSourceRepo, - communityMembershipRepo = repos.stratoCommunityMembershipRepo, - communityAccessRepo = repos.stratoCommunityAccessRepo, - urlShortener = urlShortener, - urlEntityBuilder = urlEntityBuilder, - geoBuilder = geoBuilder, - replyBuilder = replyBuilder, - mediaBuilder = mediaBuilder, - attachmentBuilder = attachmentBuilder, - duplicateTweetFinder = duplicateTweetFinder, - spamChecker = tweetSpamChecker, - filterInvalidData = filterInvalidData, - updateUserCounts = updateUserCounts, - validateConversationControl = conversationControlValidator, - conversationControlBuilder = conversationControlBuilder, - validateTweetWrite = validateTweetWrite, - nudgeBuilder = nudgeBuilder, - communitiesValidator = communitiesValidator, - collabControlBuilder = collabControlBuilder, - editControlBuilder = editControlBuilder, - featureSwitches = featureSwitchesWithExperiments, - ) - ) - - val retweetBuilder: RetweetBuilder.Type = - tweetBuilderFilter[RetweetRequest]( - RetweetBuilder( - validateRequest = validateRetweetRequest, - tweetIdGenerator = tweetIdGenerator, - tweetRepo = repos.tweetRepo, - userRepo = repos.userRepo, - tflock = clients.tflockWriteClient, - deviceSourceRepo = repos.deviceSourceRepo, - validateUpdateRateLimit = validateUpdateRateLimit, - spamChecker = retweetSpamChecker, - updateUserCounts = updateUserCounts, - superFollowRelationsRepo = repos.stratoSuperFollowRelationsRepo, - unretweetEdits = unretweetEdits, - setEditWindowToSixtyMinutes = deciderGates.setEditTimeWindowToSixtyMinutes - ) - ) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.docx new file mode 100644 index 0000000000000000000000000000000000000000..7138511429e5c04795eb1b8746d0334508d68ae1 GIT binary patch literal 40878 zcmagEb9^P;)-4>{?$}1hHah9pwr$(CI<{@wwrzE6-}LjG^B%nSe&0W}e|xQ(V~jcG z+Er`MDj9KL5EK9a00;o*R92M=xq{e4KmdSIFaQALuTgbDYbyssD+g@_R~tinOc`2n!%=5&v5Q!Ier z_p19iw2=ZY1+vxr5>=i7qR1+um5}fT10m$NM?piX@@80b+KFrw?*?xuUTq%kK>D0&d+t)ZvP}SKPE85ns^%TIl3_@EY z%jkSGoFIgmPFjit8F5g1@50)n+K3q&m9A2Dt}sWW}mGoQJJ)>sYWSynx6WL zV!AyF!lj>e`%#e95ojiWr82ZfS9kKV8GU9_oUwVm!h4Rz8Zpbrc>r zuKDHaOHe0KsJ|!Tb|yQ`^qa!k&)y&#@wI;wLaYg3l$7@Gwb{RimO%{)(2+v1C3^_pkAbLMt!P z!qv_WSs_gov>x1}%RPOg#k4%EWvW68e`P(@1;3o79+fSM>-skBb%-R$c3%P)h1~#E zi`4LYA~-%n(nl5}C43&LP2>S}in@y#{z?HMZAwc~xZ;44c*Hws2XbXcPntPvFl!Ns zM&_`hik5u~=ddTVjI zN};z15W-@VfTv+UMNxd0TOOF0B`wA>Sthpj@-5Y}shn`PIEQX+cs5uYnt=5K;{x%5 zV=sLT!k|@AKi2fn)?YJ)DcLI$19~sJU*>K|jXCs3yTfHMVW6rrfyL73H6<29IEead znVIH;CJ8c{_MWSAvxI;>cTxVDS%7C{BERaYN&Y;_47fnhJ3N(h-Yu07H}d zbtNXXK<1XqApPxjEI^zvE7hcTk2lrnG1nSl*Bq)_U-WP2y}fYMU;}>t7|@YBOgAL2 z24lcJcX|eefd^#dlTDFxZdPL04m-EEv)!6<0@f^pX$ppcOZt{Gb6#A|=a&PquI{vH z-Cs~MG(W$)PGe8v!|Pzs%vg>5-Z;iamaOZQzL5hroo|*sWF@u#hkO?$6N0W)_>OJZfyk_{ac)gT~BI?+4?y!vQ22?{;*wEqH#1WxANGWIus?q?WrmgnW zXvG2;4WvVgvP|WuJ7JyP_%$xLjlDG0l*1|<-)6mgVVjhV$Ml;apYU&|ny3D&M45)= z&0n(LrNhdA->Xc@T#Ki;nSbovpQAo|9jJcMXlCOk_piAOo(d%?vjhld& zLAyKL*BYE4W*b|oqjSv>@txsP+uY2-JoQ8EqwD8y^Lb6*i`bN9T#&B;poi6;)#1z6 zmMDkZM4rcVsqhbFvoiy~3zA2S%n~J<>00;PA!e!guG_{mKh%|Q#=wa`z=6DQ3M{{& z2~n;Jf~(=g#5blOd)JIw-~MK0gNd)W0agJFyV-v|%&10A;4{TuX+*^wLi)ESJ;tGNymH~AdW;(a7y4A-~WVkTm?iFO(^DWlr!u@Z&|6CX#YzIlLNB{sWt$+VuovrN* z=)Qinj+S3Hr#~y>T+`fst$E>NQ``4ckjNTm)b_?m-Z?|+bXiq;Pm}e*h}VEYBLswG zp122;Z|t=3^PL-fTQSa%goVHfS(=ov2O1X_I~@zo=kmiTzJEVeY(UuU={U6MF{GLa zfk2upINGa~%k^y+Q8u-ZAX0b~4sRmG?XD@=`^m})Aq-zyr4+KAKoPu-nhjf`VG>S+ z2vtH=ATjxh4~m5F9F*`|DETfR)RzA^fCWm1jgIq~#xh?dc1?Ib;*Fv1Q~7%-X_)`0RqP+g%~$ zǍ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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.scala deleted file mode 100644 index af71bf89d..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetHydrators.scala +++ /dev/null @@ -1,341 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.servo.cache.Cached -import com.twitter.servo.cache.LockingCache -import com.twitter.servo.util.ExceptionCategorizer -import com.twitter.servo.util.ExceptionCounter -import com.twitter.servo.util.FutureEffect -import com.twitter.servo.util.Scribe -import com.twitter.stitch.NotFound -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core.TweetData -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.hydrator._ -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.serverutil.{ExceptionCounter => TpExceptionCounter} -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.client_id.ClientIdHelper - -trait TweetHydrators { - - /** - * Hydrator that has all the Tweet hydrators (entire "pipeline") configured - * and wired up. - * This hydrator is used both on the read and write path and is - * customized by different TweetQuery.Options. - * Modifications are not automatically written back to cache. - * `cacheChanges` must be used for that. - */ - def hydrator: TweetDataValueHydrator - - /** - * The `Effect` to use to write modified tweets back to cache. - */ - def cacheChangesEffect: Effect[ValueState[TweetData]] -} - -object TweetHydrators { - - /** - * Creates all the hydrators and calls TweetHydration to wire them up. - */ - def apply( - stats: StatsReceiver, - deciderGates: TweetypieDeciderGates, - repos: LogicalRepositories, - tweetDataCache: LockingCache[TweetId, Cached[TweetData]], - hasMedia: Tweet => Boolean, - featureSwitchesWithoutExperiments: FeatureSwitches, - clientIdHelper: ClientIdHelper - ): TweetHydrators = { - import repos._ - - val repairStats = stats.scope("repairs") - val hydratorStats = stats.scope("hydrators") - - def scoped[A](stats: StatsReceiver, name: String)(f: StatsReceiver => A): A = { - val scopedStats = stats.scope(name) - f(scopedStats) - } - - val isFailureException: Throwable => Boolean = { - case _: FilteredState => false - case NotFound => false - case _ => true - } - - def hydratorExceptionCategorizer(failureScope: String) = - ExceptionCategorizer.const("filtered").onlyIf(_.isInstanceOf[FilteredState]) ++ - ExceptionCategorizer.const("not_found").onlyIf(_ == NotFound) ++ - TpExceptionCounter.defaultCategorizer(failureScope).onlyIf(isFailureException) - - val hydratorExceptionCounter: (StatsReceiver, String) => ExceptionCounter = - (stats, scope) => TpExceptionCounter(stats, hydratorExceptionCategorizer(scope)) - - val tweetHydrator = - TweetHydration( - hydratorStats = hydratorStats, - hydrateFeatureSwitchResults = - FeatureSwitchResultsHydrator(featureSwitchesWithoutExperiments, clientIdHelper), - hydrateMentions = MentionEntitiesHydrator - .once(MentionEntityHydrator(userIdentityRepo)) - .observe(hydratorStats.scope("mentions"), hydratorExceptionCounter), - hydrateLanguage = LanguageHydrator(languageRepo) - .observe(hydratorStats.scope("language"), hydratorExceptionCounter), - hydrateUrls = scoped(hydratorStats, "url") { stats => - UrlEntitiesHydrator - .once(UrlEntityHydrator(urlRepo, stats)) - .observe(stats, hydratorExceptionCounter) - }, - hydrateQuotedTweetRef = QuotedTweetRefHydrator - .once( - QuotedTweetRefHydrator(tweetRepo) - ) - .observe(hydratorStats.scope("quoted_tweet_ref"), hydratorExceptionCounter), - hydrateQuotedTweetRefUrls = QuotedTweetRefUrlsHydrator(userIdentityRepo) - .observe(hydratorStats.scope("quoted_tweet_ref_urls"), hydratorExceptionCounter), - hydrateMediaCacheable = MediaEntitiesHydrator.Cacheable - .once( - MediaEntityHydrator.Cacheable( - hydrateMediaUrls = MediaUrlFieldsHydrator() - .observe(hydratorStats.scope("media_urls"), hydratorExceptionCounter), - hydrateMediaIsProtected = MediaIsProtectedHydrator(userProtectionRepo) - .observe(hydratorStats.scope("media_is_protected"), hydratorExceptionCounter) - ) - ) - .observe(hydratorStats.scope("media_cacheable"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateMedia), - hydrateReplyScreenName = ReplyScreenNameHydrator - .once(ReplyScreenNameHydrator(userIdentityRepo)) - .observe(hydratorStats.scope("in_reply_to_screen_name"), hydratorExceptionCounter), - hydrateConvoId = ConversationIdHydrator(conversationIdRepo) - .observe(hydratorStats.scope("conversation_id"), hydratorExceptionCounter), - hydratePerspective = // Don't cache with the tweet because it depends on the request - PerspectiveHydrator( - repo = perspectiveRepo, - shouldHydrateBookmarksPerspective = deciderGates.hydrateBookmarksPerspective, - stats = hydratorStats.scope("perspective_by_safety_label") - ).observe(hydratorStats.scope("perspective"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydratePerspectives), - hydrateEditPerspective = EditPerspectiveHydrator( - repo = perspectiveRepo, - timelinesGate = deciderGates.hydratePerspectivesEditsForTimelines, - tweetDetailsGate = deciderGates.hydratePerspectivesEditsForTweetDetail, - otherSafetyLevelsGate = deciderGates.hydratePerspectivesEditsForOtherSafetyLevels, - bookmarksGate = deciderGates.hydrateBookmarksPerspective, - stats = hydratorStats - ).observe(hydratorStats.scope("edit_perspective"), hydratorExceptionCounter), - hydrateConversationMuted = // Don't cache because it depends on the request. If - // possible, this hydrator should be in the same stage as - // PerspectiveHydrator, so that the calls can be batched - // together. - ConversationMutedHydrator(conversationMutedRepo) - .observe(hydratorStats.scope("conversation_muted"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateConversationMuted), - hydrateContributor = ContributorHydrator - .once(ContributorHydrator(userIdentityRepo)) - .observe(hydratorStats.scope("contributors"), hydratorExceptionCounter), - hydrateTakedowns = TakedownHydrator(takedownRepo) - .observe(hydratorStats.scope("takedowns"), hydratorExceptionCounter), - hydrateDirectedAt = scoped(hydratorStats, "directed_at") { stats => - DirectedAtHydrator - .once(DirectedAtHydrator(userIdentityRepo, stats)) - .observe(stats, hydratorExceptionCounter) - }, - hydrateGeoScrub = GeoScrubHydrator( - geoScrubTimestampRepo, - Scribe("test_tweetypie_read_time_geo_scrubs") - .contramap[TweetId](_.toString) - ).observe(hydratorStats.scope("geo_scrub"), hydratorExceptionCounter), - hydrateCacheableRepairs = ValueHydrator - .fromMutation[Tweet, TweetQuery.Options]( - RepairMutation( - repairStats.scope("on_read"), - "created_at" -> - new CreatedAtRepairer(Scribe("test_tweetypie_bad_created_at")), - "retweet_media" -> RetweetMediaRepairer, - "parent_status_id" -> RetweetParentStatusIdRepairer.tweetMutation, - "visible_text_range" -> NegativeVisibleTextRangeRepairer.tweetMutation - ) - ) - .lensed(TweetData.Lenses.tweet) - .onlyIf((td, opts) => opts.cause.reading(td.tweet.id)), - hydrateMediaUncacheable = MediaEntityHydrator - .Uncacheable( - hydrateMediaKey = MediaKeyHydrator() - .observe(hydratorStats.scope("media_key"), hydratorExceptionCounter), - hydrateMediaInfo = scoped(hydratorStats, "media_info") { stats => - MediaInfoHydrator(mediaMetadataRepo, stats) - .observe(stats, hydratorExceptionCounter) - } - ) - .observe(hydratorStats.scope("media_uncacheable"), hydratorExceptionCounter) - .liftSeq - .ifEnabled(deciderGates.hydrateMedia), - hydratePostCacheRepairs = - // clean-up partially hydrated entities before any of the hydrators that look at - // url and media entities run, so that they never see bad entities. - ValueHydrator.fromMutation[TweetData, TweetQuery.Options]( - RepairMutation( - repairStats.scope("on_read"), - "partial_entity_cleanup" -> PartialEntityCleaner(repairStats), - "strip_not_display_coords" -> StripHiddenGeoCoordinates - ).lensed(TweetData.Lenses.tweet) - ), - hydrateTweetLegacyFormat = scoped(hydratorStats, "tweet_legacy_formatter") { stats => - TweetLegacyFormatter(stats) - .observe(stats, hydratorExceptionCounter) - .onlyIf((td, opts) => opts.cause.reading(td.tweet.id)) - }, - hydrateQuoteTweetVisibility = QuoteTweetVisibilityHydrator(quotedTweetVisibilityRepo) - .observe(hydratorStats.scope("quote_tweet_visibility"), hydratorExceptionCounter), - hydrateQuotedTweet = QuotedTweetHydrator(tweetResultRepo) - .observe(hydratorStats.scope("quoted_tweet"), hydratorExceptionCounter), - hydratePastedMedia = - // Don't cache with the tweet because we want to automatically drop this media if - // the referenced tweet is deleted or becomes non-public. - PastedMediaHydrator(pastedMediaRepo) - .observe(hydratorStats.scope("pasted_media")) - .ifEnabled(deciderGates.hydratePastedMedia), - hydrateMediaRefs = MediaRefsHydrator( - optionalTweetRepo, - deciderGates.mediaRefsHydratorIncludePastedMedia - ).observe(hydratorStats.scope("media_refs")) - .ifEnabled(deciderGates.hydrateMediaRefs), - hydrateMediaTags = // depends on AdditionalFieldsHydrator - MediaTagsHydrator(userViewRepo) - .observe(hydratorStats.scope("media_tags"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateMediaTags), - hydrateClassicCards = CardHydrator(cardRepo) - .observe(hydratorStats.scope("cards"), hydratorExceptionCounter), - hydrateCard2 = Card2Hydrator(card2Repo) - .observe(hydratorStats.scope("card2")), - hydrateContributorVisibility = - // Filter out contributors field for all but the user who owns the tweet - ContributorVisibilityFilter() - .observe(hydratorStats.scope("contributor_visibility"), hydratorExceptionCounter), - hydrateHasMedia = - // Sets hasMedia. Comes after PastedMediaHydrator in order to include pasted - // pics as well as other media & urls. - HasMediaHydrator(hasMedia) - .observe(hydratorStats.scope("has_media"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateHasMedia), - hydrateTweetCounts = // Don't cache counts with the tweet because it has its own cache with - // a different TTL - TweetCountsHydrator(tweetCountsRepo, deciderGates.hydrateBookmarksCount) - .observe(hydratorStats.scope("tweet_counts"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateCounts), - hydratePreviousTweetCounts = // previous counts are not cached - scoped(hydratorStats, "previous_counts") { stats => - PreviousTweetCountsHydrator(tweetCountsRepo, deciderGates.hydrateBookmarksCount) - .observe(stats, hydratorExceptionCounter) - .ifEnabled(deciderGates.hydratePreviousCounts) - }, - hydratePlace = - // Don't cache with the tweet because Place has its own tweetypie cache keyspace - // with a different TTL, and it's more efficient to store separately. - // See com.twitter.tweetypie.repository.PlaceKey - PlaceHydrator(placeRepo) - .observe(hydratorStats.scope("place"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydratePlaces), - hydrateDeviceSource = // Don't cache with the tweet because it has its own cache, - // and it's more efficient to cache it separately - DeviceSourceHydrator(deviceSourceRepo) - .observe(hydratorStats.scope("device_source"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateDeviceSources), - hydrateProfileGeo = - // Don't cache gnip profile geo as read request volume is expected to be low - ProfileGeoHydrator(profileGeoRepo) - .observe(hydratorStats.scope("profile_geo"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateGnipProfileGeoEnrichment), - hydrateSourceTweet = scoped(hydratorStats, "source_tweet") { stats => - SourceTweetHydrator( - tweetResultRepo, - stats, - FutureEffect - .inParallel( - Scribe(DetachedRetweet, "tweetypie_detached_retweets"), - Scribe(DetachedRetweet, "test_tweetypie_detached_retweets"), - ) - ).observe(stats, hydratorExceptionCounter) - }, - hydrateIM1837State = IM1837FilterHydrator() - .observe(hydratorStats.scope("im1837_filter"), hydratorExceptionCounter) - .onlyIf { (_, ctx) => - ctx.opts.forExternalConsumption && ctx.opts.cause.reading(ctx.tweetId) - }, - hydrateIM2884State = scoped(hydratorStats, "im2884_filter") { stats => - IM2884FilterHydrator(stats) - .observe(stats, hydratorExceptionCounter) - .onlyIf { (_, ctx) => - ctx.opts.forExternalConsumption && ctx.opts.cause.reading(ctx.tweetId) - } - }, - hydrateIM3433State = scoped(hydratorStats, "im3433_filter") { stats => - IM3433FilterHydrator(stats) - .observe(stats, hydratorExceptionCounter) - .onlyIf { (_, ctx) => - ctx.opts.forExternalConsumption && ctx.opts.cause.reading(ctx.tweetId) - } - }, - hydrateTweetAuthorVisibility = TweetAuthorVisibilityHydrator(userVisibilityRepo) - .observe(hydratorStats.scope("tweet_author_visibility"), hydratorExceptionCounter) - .onlyIf((_, ctx) => ctx.opts.cause.reading(ctx.tweetId)), - hydrateReportedTweetVisibility = ReportedTweetFilter() - .observe(hydratorStats.scope("reported_tweet_filter"), hydratorExceptionCounter), - scrubSuperfluousUrlEntities = ValueHydrator - .fromMutation[Tweet, TweetQuery.Options](SuperfluousUrlEntityScrubber.mutation) - .lensed(TweetData.Lenses.tweet), - copyFromSourceTweet = CopyFromSourceTweet.hydrator - .observe(hydratorStats.scope("copy_from_source_tweet"), hydratorExceptionCounter), - hydrateTweetVisibility = scoped(hydratorStats, "tweet_visibility") { stats => - TweetVisibilityHydrator( - tweetVisibilityRepo, - deciderGates.failClosedInVF, - stats - ).observe(stats, hydratorExceptionCounter) - }, - hydrateEscherbirdAnnotations = EscherbirdAnnotationHydrator(escherbirdAnnotationRepo) - .observe(hydratorStats.scope("escherbird_annotations"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateEscherbirdAnnotations), - hydrateScrubEngagements = ScrubEngagementHydrator() - .observe(hydratorStats.scope("scrub_engagements"), hydratorExceptionCounter) - .ifEnabled(deciderGates.hydrateScrubEngagements), - hydrateConversationControl = scoped(hydratorStats, "tweet_conversation_control") { stats => - ConversationControlHydrator( - conversationControlRepo, - deciderGates.disableInviteViaMention, - stats - ).observe(stats, hydratorExceptionCounter) - }, - hydrateEditControl = scoped(hydratorStats, "tweet_edit_control") { stats => - EditControlHydrator( - tweetRepo, - deciderGates.setEditTimeWindowToSixtyMinutes, - stats - ).observe(stats, hydratorExceptionCounter) - }, - hydrateUnmentionData = UnmentionDataHydrator(), - hydrateNoteTweetSuffix = NoteTweetSuffixHydrator().observe(stats, hydratorExceptionCounter) - ) - - new TweetHydrators { - val hydrator: TweetDataValueHydrator = - tweetHydrator.onlyIf { (tweetData, opts) => - // When the caller requests fetchStoredTweets and Tweets are fetched from Manhattan - // irrespective of state, the stored data for some Tweets may be incomplete. - // We skip the hydration of those Tweets. - !opts.fetchStoredTweets || - tweetData.storedTweetResult.exists(_.canHydrate) - } - - val cacheChangesEffect: Effect[ValueState[TweetData]] = - TweetHydration.cacheChanges( - tweetDataCache, - hydratorStats.scope("tweet_caching") - ) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServerBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServerBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..06c87f08b3a0e9d665b0258fb13cf5d55cfd5fd0 GIT binary patch literal 39802 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 - log.info("Decider feature " + overrideName + " overridden to " + overrideValue) - if (deciderGates.unusedOverrides.contains(overrideName)) { - log.error("Unused decider override flag: " + overrideName) - } - } - - val scopedReceiver = statsReceiver.scope("decider_values") - - deciderGates.availabilityMap.foreach { - case (feature, value) => - scopedReceiver.provideGauge(feature) { - // Default value of -1 indicates error state. - value.getOrElse(-1).toFloat - } - } - - deciderGates - } - - val featureSwitchesWithExperiments = FeatureSwitchesBuilder - .createWithExperiments("/features/tweetypie/main") - .build() - - val featureSwitchesWithoutExperiments = FeatureSwitchesBuilder - .createWithNoExperiments("/features/tweetypie/main", Some(statsReceiver)) - .build() - - // ********* initializer ********** - - private[this] def warmupTextTokenization(logger: Logger): Unit = { - logger.info("Warming up text tokenization") - val watch = Stopwatch.start() - Tokenizer.warmUp() - logger.info(s"Warmed up text tokenization in ${watch()}") - } - - private[this] def runWarmup(tweetService: Activity[ThriftTweetService]): Unit = { - val tokenizationLogger = Logger("com.twitter.tweetypie.TweetServerBuilder.TokenizationWarmup") - warmupTextTokenization(tokenizationLogger) - - val warmupLogger = Logger("com.twitter.tweetypie.TweetServerBuilder.BackendWarmup") - // #1 warmup backends - Await.ready(settings.backendWarmupSettings(backendClients, warmupLogger, timer)) - - // #2 warmup Tweet Service - Await.ready { - tweetService.values.toFuture.map(_.get).map { service => - settings.warmupRequestsSettings.foreach(new TweetServiceWarmer(_)(service)) - } - } - } - - private[this] def waitForServerSets(): Unit = { - val names = backendClients.referencedNames - val startTime = Time.now - log.info("will wait for serversets: " + names.mkString("\n", "\t\n", "")) - - try { - Await.result(WaitForServerSets.ready(names, settings.waitForServerSetsTimeout, timer)) - val duration = Time.now.since(startTime) - log.info("resolved all serversets in " + duration) - } catch { - case NonFatal(ex) => log.warn("failed to resolve all serversets", ex) - } - } - - private[this] def initialize(tweetService: Activity[ThriftTweetService]): Unit = { - waitForServerSets() - runWarmup(tweetService) - - // try to force a GC before starting to serve requests; this may or may not do anything - System.gc() - } - - // ********* builders ********** - - val clientIdHelper = new ClientIdHelper( - new ConditionalServiceIdentifierStrategy( - condition = deciderGates.preferForwardedServiceIdentifierForClientId, - ifTrue = PreferForwardedServiceIdentifierForStrato, - ifFalse = UseTransportServiceIdentifier, - ), - ) - - val backendClients: BackendClients = - BackendClients( - settings = settings, - deciderGates = deciderGates, - statsReceiver = statsReceiver, - hostStatsReceiver = hostStatsReceiver, - timer = timer, - clientIdHelper = clientIdHelper, - ) - - val tweetService: Activity[ThriftTweetService] = - TweetServiceBuilder( - settings = settings, - statsReceiver = statsReceiver, - timer = timer, - deciderGates = deciderGates, - featureSwitchesWithExperiments = featureSwitchesWithExperiments, - featureSwitchesWithoutExperiments = featureSwitchesWithoutExperiments, - backendClients = backendClients, - clientIdHelper = clientIdHelper, - ) - - // Strato columns should use this tweetService - def stratoTweetService: Activity[ThriftTweetService] = - tweetService.map { service => - // Add quill functionality to the strato tweet service only - val quillCapture = QuillCaptureBuilder(settings, deciderGates) - new QuillTweetService(quillCapture, service) - } - - def build: Activity[Service[Array[Byte], Array[Byte]]] = { - - val quillCapture = QuillCaptureBuilder(settings, deciderGates) - - val darkTrafficFilter: SimpleFilter[Array[Byte], Array[Byte]] = - if (!settings.trafficForkingEnabled) { - Filter.identity - } else { - new DarkTrafficFilter( - backendClients.darkTrafficClient, - _ => deciderGates.forkDarkTraffic(), - statsReceiver - ) - } - - val serviceFilter = - quillCapture - .getServerFilter(ThriftProto.server) - .andThen(TweetypieContext.Local.filter[Array[Byte], Array[Byte]]) - .andThen(darkTrafficFilter) - - initialize(tweetService) - - // tweetService is an Activity[ThriftTweetService], so this callback - // is called every time that Activity updates (on ConfigBus changes). - tweetService.map { service => - val finagleService = - new TweetServiceInternal$FinagleService( - service, - protocolFactory = Protocols.binaryFactory(), - stats = NullStatsReceiver, - maxThriftBufferSize = settings.maxThriftBufferSize - ) - - serviceFilter andThen finagleService - } - } -} - -object QuillCaptureBuilder { - val tweetServiceWriteMethods: Set[String] = - Set( - "async_delete", - "async_delete_additional_fields", - "async_erase_user_tweets", - "async_incr_fav_count", - "async_insert", - "async_set_additional_fields", - "async_set_retweet_visibility", - "async_takedown", - "async_undelete_tweet", - "async_update_possibly_sensitive_tweet", - "cascaded_delete_tweet", - "delete_additional_fields", - "delete_retweets", - "delete_tweets", - "erase_user_tweets", - "flush", - "incr_fav_count", - "insert", - "post_retweet", - "post_tweet", - "remove", - "replicated_delete_additional_fields", - "replicated_delete_tweet", - "replicated_delete_tweet2", - "replicated_incr_fav_count", - "replicated_insert_tweet2", - "replicated_scrub_geo", - "replicated_set_additional_fields", - "replicated_set_has_safety_labels", - "replicated_set_retweet_visibility", - "replicated_takedown", - "replicated_undelete_tweet2", - "replicated_update_possibly_sensitive_tweet", - "scrub_geo", - "scrub_geo_update_user_timestamp", - "set_additional_fields", - "set_has_safety_labels", - "set_retweet_visibility", - "set_tweet_user_takedown", - "takedown", - "undelete_tweet" - ) - - val tweetServiceReadMethods: Set[String] = - Set( - "get_tweet_counts", - "get_tweet_fields", - "get_tweets", - "replicated_get_tweet_counts", - "replicated_get_tweet_fields", - "replicated_get_tweets" - ) - - def apply(settings: TweetServiceSettings, deciderGates: TweetypieDeciderGates): QuillCapture = { - val writesStore = SimpleScribeMessageStore("tweetypie_writes") - .enabledBy(deciderGates.logWrites) - - val readsStore = SimpleScribeMessageStore("tweetypie_reads") - .enabledBy(deciderGates.logReads) - - val messageStore = - MessageStore.selected { - case msg if tweetServiceWriteMethods.contains(msg.name) => writesStore - case msg if tweetServiceReadMethods.contains(msg.name) => readsStore - case _ => writesStore - } - - new QuillCapture(Store.legacyStore(messageStore), Some(settings.thriftClientId.name)) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceAuthorizers.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceAuthorizers.docx new file mode 100644 index 0000000000000000000000000000000000000000..6395fcccce633805bbb046bfdc7131319440447e GIT binary patch literal 41219 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 ServiceIdentifier = S2STransport.peerServiceIdentifier _ - ): ClientRequestAuthorizer = { - val authorizer = - if (settings.allowlistingRequired) { - val limitingGate = RateLimitingGate.uniform(settings.nonAllowListedClientRateLimitPerSec) - allowListedOrRateLimitedAuthorizer(dynamicConfig, limitingGate) - .andThen(rejectNonAllowListedProdAuthorizer(dynamicConfig)) - .andThen(permittedMethodsAuthorizer(dynamicConfig)) - .andThen(allowProductionAuthorizer(settings.allowProductionClients)) - } else { - ClientRequestAuthorizer.withClientId - } - - val alternativeClientIdHelper = new ClientIdHelper(PreferForwardedServiceIdentifierForStrato) - // pass the authorizer into an observed authorizer for stats tracking. - // (observed authorizers can't be composed with andThen) - ClientRequestAuthorizer.observed( - authorizer, - new ClientRequestObserver(statsReceiver) { - override def apply( - methodName: String, - clientIdScopesOpt: Option[Seq[String]] - ): Future[Unit] = { - // Monitor for the migration taking into account forwarded service identifier - // as effective client ID for strato. - val alternativeClientIdScopes = alternativeClientIdHelper.effectiveClientId.map(Seq(_)) - if (clientIdScopesOpt != alternativeClientIdScopes) { - scopedReceiver.scope(methodName) - .scope("before_migration") - .scope(clientIdScopesOpt.getOrElse(Seq(ClientIdHelper.UnknownClientId)): _*) - .scope("after_migration") - .counter(alternativeClientIdScopes.getOrElse(Seq(ClientIdHelper.UnknownClientId)): _*) - .incr() - } else { - scopedReceiver.scope(methodName).counter("migration_indifferent").incr() - } - super.apply(methodName, clientIdScopesOpt) - } - - override def authorized(methodName: String, clientIdStr: String): Unit = { - // Monitor for the migration of using service identifier - // as identity instead of client ID. - val serviceIdentifier = getServiceIdentifier() - scopedReceiver.counter( - "authorized_request", - clientIdStr, - serviceIdentifier.role, - serviceIdentifier.service, - serviceIdentifier.environment - ).incr() - val status = dynamicConfig.byServiceIdentifier(serviceIdentifier).toSeq match { - case Seq() => "none" - case Seq(client) if client.clientId == clientIdStr => "equal" - case Seq(_) => "other" - case _ => "ambiguous" - } - scopedReceiver.counter( - "service_id_match_client_id", - clientIdStr, - serviceIdentifier.role, - serviceIdentifier.service, - serviceIdentifier.environment, - status - ).incr() - } - } - ) - } - - /** - * @return A ClientRequestAuthorizer that allows unlimited requests for allowlisted client ids and - * rate-limited requests for unknown clients. - */ - def allowListedOrRateLimitedAuthorizer( - dynamicConfig: DynamicConfig, - nonAllowListedLimiter: Gate[Unit] - ): ClientRequestAuthorizer = - ClientRequestAuthorizer.filtered( - { (_, clientId) => - dynamicConfig.isAllowListedClient(clientId) || nonAllowListedLimiter() - }, - RateLimitExceeded) - - /** - * @return A ClientRequestAuthorizer that rejects requests from non-allowListed prod clients. - */ - def rejectNonAllowListedProdAuthorizer(dynamicConfig: DynamicConfig): ClientRequestAuthorizer = { - object UnallowlistedException - extends UnauthorizedException( - "Traffic is only allowed from allow-listed *.prod clients." + - " Please create a ticket to register your clientId to enable production traffic using http://go/tp-new-client." - ) - - def isProdClient(clientId: String): Boolean = - clientId.endsWith(".prod") || clientId.endsWith(".production") - - ClientRequestAuthorizer.filtered( - { (_, clientId) => - !isProdClient(clientId) || dynamicConfig.isAllowListedClient(clientId) - }, - UnallowlistedException) - } - - /** - * @return A ClientRequestAuthorizer that checks if a given client's - * permittedMethods field includes the method they are calling - */ - def permittedMethodsAuthorizer(dynamicConfig: DynamicConfig): ClientRequestAuthorizer = - dynamicConfig.clientsByFullyQualifiedId match { - case Some(clientsById) => permittedMethodsAuthorizer(dynamicConfig, clientsById) - case None => ClientRequestAuthorizer.permissive - } - - private def permittedMethodsAuthorizer( - dynamicConfig: DynamicConfig, - clientsByFullyQualifiedId: Map[String, Client] - ): ClientRequestAuthorizer = { - ClientRequestAuthorizer.filtered { (methodName, clientId) => - dynamicConfig.unprotectedEndpoints(methodName) || - (clientsByFullyQualifiedId.get(clientId) match { - case Some(client) => - client.accessAllMethods || - client.permittedMethods.contains(methodName) - case None => - false // If client id is unknown, don't allow access - }) - } - } - - /** - * @return A ClientRequestAuthorizer that fails the - * request if it is coming from a production client - * and allowProductionClients is false - */ - def allowProductionAuthorizer(allowProductionClients: Boolean): ClientRequestAuthorizer = - ClientRequestAuthorizer.filtered { (_, clientId) => - allowProductionClients || !(clientId.endsWith(".prod") || clientId.endsWith(".production")) - } -} - -/** - * Compose a MethodAuthorizer for the `getTweets` endpoint. - */ -object GetTweetsAuthorizer { - import ProtectedTweetsAuthorizer.IncludeProtected - - def apply( - config: DynamicConfig, - maxRequestSize: Int, - instanceCount: Int, - enforceRateLimitedClients: Gate[Unit], - maxRequestWidthEnabled: Gate[Unit], - statsReceiver: StatsReceiver, - ): MethodAuthorizer[GetTweetsRequest] = - MethodAuthorizer.all( - Seq( - ProtectedTweetsAuthorizer(config.clientsByFullyQualifiedId) - .contramap[GetTweetsRequest] { r => - IncludeProtected(r.options.exists(_.bypassVisibilityFiltering)) - }, - RequestSizeAuthorizer(maxRequestSize, maxRequestWidthEnabled) - .contramap[GetTweetsRequest](_.tweetIds.size), - RateLimiterAuthorizer(config, instanceCount, enforceRateLimitedClients, statsReceiver) - .contramap[GetTweetsRequest](_.tweetIds.size) - ) - ) -} - -/** - * Compose a MethodAuthorizer for the `getTweetFields` endpoint. - */ -object GetTweetFieldsAuthorizer { - import ProtectedTweetsAuthorizer.IncludeProtected - - def apply( - config: DynamicConfig, - maxRequestSize: Int, - instanceCount: Int, - enforceRateLimitedClients: Gate[Unit], - maxRequestWidthEnabled: Gate[Unit], - statsReceiver: StatsReceiver - ): MethodAuthorizer[GetTweetFieldsRequest] = - MethodAuthorizer.all( - Seq( - ProtectedTweetsAuthorizer(config.clientsByFullyQualifiedId) - .contramap[GetTweetFieldsRequest](r => - IncludeProtected(r.options.visibilityPolicy == TweetVisibilityPolicy.NoFiltering)), - RequestSizeAuthorizer(maxRequestSize, maxRequestWidthEnabled) - .contramap[GetTweetFieldsRequest](_.tweetIds.size), - RateLimiterAuthorizer(config, instanceCount, enforceRateLimitedClients, statsReceiver) - .contramap[GetTweetFieldsRequest](_.tweetIds.size) - ) - ) -} - -object ProtectedTweetsAuthorizer { - case class IncludeProtected(include: Boolean) extends AnyVal - - class BypassVisibilityFilteringNotAuthorizedException(message: String) - extends UnauthorizedException(message) - - def apply(optClientsById: Option[Map[String, Client]]): MethodAuthorizer[IncludeProtected] = { - optClientsById match { - case Some(clientsByFullyQualifiedId) => - val clientsWithBypassVisibilityFiltering = clientsByFullyQualifiedId.filter { - case (_, client) => client.bypassVisibilityFiltering - } - apply(clientId => clientsWithBypassVisibilityFiltering.contains(clientId)) - - case None => - apply((_: String) => true) - } - } - - /** - * A MethodAuthorizer that fails the request if a client requests to bypass visibility - * filtering but doesn't have BypassVisibilityFiltering - */ - def apply(protectedTweetsAllowlist: String => Boolean): MethodAuthorizer[IncludeProtected] = - MethodAuthorizer { (includeProtected, clientId) => - // There is only one unauthorized case, a client requesting - // protected tweets when they are not in the allowlist - Future.when(includeProtected.include && !protectedTweetsAllowlist(clientId)) { - Future.exception( - new BypassVisibilityFilteringNotAuthorizedException( - s"$clientId is not authorized to bypass visibility filtering" - ) - ) - } - } -} - -/** - * A MethodAuthorizer[Int] that fails large requests. - */ -object RequestSizeAuthorizer { - class ExceededMaxWidthException(message: String) extends UnauthorizedException(message) - - def apply( - maxRequestSize: Int, - maxWidthLimitEnabled: Gate[Unit] = Gate.False - ): MethodAuthorizer[Int] = - MethodAuthorizer { (requestSize, clientId) => - Future.when(requestSize > maxRequestSize && maxWidthLimitEnabled()) { - Future.exception( - new ExceededMaxWidthException( - s"$requestSize exceeds bulk request size limit. $clientId can request at most $maxRequestSize items per request" - ) - ) - } - } -} - -object RateLimiterAuthorizer { - - type ClientId = String - - /** - * @return client ID to weighted RateLimitingGate map - * - * We want to rate-limit based on requests per sec for every instance. - * When we allowlist new clients to Tweetypie, we assign tweets per sec quota. - * That's why, we compute perInstanceQuota [1] and create a weighted rate-limiting gate [2] - * which returns true if acquiring requestSize number of permits is successful. [3] - * - * [1] tps quota during allowlisting is for both DCs and instanceCount is for one DC. - * Therefore, we are over-compensating perInstanceQuota for all low-priority clients. - * this will act a fudge-factor to account for cluster-wide traffic imbalances. - * - * val perInstanceQuota : Double = math.max(1.0, math.ceil(tpsLimit.toFloat / instanceCount)) - * - * We have some clients like deferredRPC with 0K tps quota and rate limiter expects > 0 permits. - * - * [2] if a client has multiple environments - staging, devel, prod. We provision the - * same rate-limits for all envs instead of distributing the tps quota across envs. - * - * Example: - * - * val c = Client(..., limit = 10k, ...) - * Map("foo.prod" -> c, "foo.staging" -> c, "foo.devel" -> c) - * - * Above client config turns into 3 separate RateLimitingGate.weighted(), each with 10k - * - * [3] RateLimitingGate will always give permit to the initial request that exceeds - * the limit. ex: starting with rate-limit of 1 tps per instance. first request with - * 100 batch size is allowed. - * - * RateLimitFudgeFactor is a multiplier for per-instance quota to account for: - * - * a) High likelihood of concurrent batches hitting the same tweetypie shard due to - * non-uniform load distribution (this can be alleviated by using Deterministic Aperture) - * b) Clients with no retry backoffs and custom batching/concurrency. - * - * We are adding default stitch batch size to per instance quota, to give more headroom for low-tps clients. - * https://cgit.twitter.biz/source/tree/stitch/stitch-tweetypie/src/main/scala/com/twitter/stitch/tweetypie/TweetyPie.scala#n47 - * - */ - case class RateLimiterConfig(limitingGate: Gate[Int], enforceRateLimit: Boolean) - - def perClientRateLimiters( - dynamicConfig: DynamicConfig, - instanceCount: Int - ): Map[ClientId, RateLimiterConfig] = { - val RateLimitFudgeFactor: Double = 1.5 - val DefaultStitchBatchSize: Double = 25.0 - dynamicConfig.clientsByFullyQualifiedId match { - case Some(clients) => - clients.collect { - case (clientId, client) if client.tpsLimit.isDefined => - val perInstanceQuota: Double = - math.max( - 1.0, - math.ceil( - client.tpsLimit.get.toFloat / instanceCount)) * RateLimitFudgeFactor + DefaultStitchBatchSize - clientId -> RateLimiterConfig( - RateLimitingGate.weighted(perInstanceQuota), - client.enforceRateLimit - ) - } - case None => Map.empty - } - } - - /* - enforce rate-limiting on get_tweets and get_tweet_fields requests - given enable_rate_limited_clients decider is true and rate limiting gate - is not giving any more permits. - */ - def apply( - config: DynamicConfig, - limiters: Map[ClientId, RateLimiterConfig], - instanceCount: Int, - enforceRateLimitedClients: Gate[Unit], - statsReceiver: StatsReceiver - ): MethodAuthorizer[Int] = { - - val tpsExceededScope = statsReceiver.scope("tps_exceeded") - val tpsRejectedScope = statsReceiver.scope("tps_rejected") - val qpsExceededScope = statsReceiver.scope("qps_exceeded") - val qpsRejectedScope = statsReceiver.scope("qps_rejected") - - MethodAuthorizer { (requestSize, clientId) => - val positiveRequestSize = math.max(1, requestSize) - val shouldRateLimit: Boolean = limiters.get(clientId).exists { config => - val exceededLimit = !config.limitingGate(positiveRequestSize) - if (exceededLimit) { - qpsExceededScope.counter(clientId).incr() - tpsExceededScope.counter(clientId).incr(positiveRequestSize) - } - exceededLimit && config.enforceRateLimit - } - - Future.when(shouldRateLimit && enforceRateLimitedClients()) { - qpsRejectedScope.counter(clientId).incr() - tpsRejectedScope.counter(clientId).incr(positiveRequestSize) - Future.exception( - RateLimited(s"Your client ID $clientId has exceeded its reserved tps quota.") - ) - } - } - } - - def apply( - config: DynamicConfig, - instanceCount: Int, - enforceRateLimitedClients: Gate[Unit], - statsReceiver: StatsReceiver - ): MethodAuthorizer[Int] = { - val limiters = perClientRateLimiters(config, instanceCount) - apply(config, limiters, instanceCount, enforceRateLimitedClients, statsReceiver) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..927035a08ecf743cc2b7a9cd22171c9b841db095 GIT binary patch literal 42207 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%0DYQRzyKO9-!sw+LBWi~I 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�A2u;#O*Ri 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 - val clientHandlingTweetService = - new ClientHandlingTweetService( - observedTweetService, - tweetServiceScope, - dynamicConfig.loadShedEligible, - deciderGates.shedReadTrafficVoluntarily, - ClientHandlingTweetServiceAuthorizer( - settings = settings, - dynamicConfig = dynamicConfig, - statsReceiver = statsReceiver - ), - GetTweetsAuthorizer( - config = dynamicConfig, - maxRequestSize = settings.maxGetTweetsRequestSize, - instanceCount = settings.instanceCount, - enforceRateLimitedClients = deciderGates.enforceRateLimitedClients, - maxRequestWidthEnabled = deciderGates.maxRequestWidthEnabled, - statsReceiver = tweetServiceScope.scope("get_tweets"), - ), - GetTweetFieldsAuthorizer( - config = dynamicConfig, - maxRequestSize = settings.maxGetTweetsRequestSize, - instanceCount = settings.instanceCount, - enforceRateLimitedClients = deciderGates.enforceRateLimitedClients, - maxRequestWidthEnabled = deciderGates.maxRequestWidthEnabled, - statsReceiver = tweetServiceScope.scope("get_tweet_fields"), - ), - RequestSizeAuthorizer(settings.maxRequestSize, deciderGates.maxRequestWidthEnabled), - clientIdHelper, - ) - - syncTweetService.underlying = clientHandlingTweetService - - val replicatingService = - if (!settings.enableReplication) - clientHandlingTweetService - else { - new ReplicatingTweetService( - underlying = clientHandlingTweetService, - replicationTargets = backendClients.lowQoSReplicationClients, - executor = new forked.QueueExecutor( - 100, - statsReceiver.scope("replicating_tweet_service") - ), - ) - } - - replicatingService - } - } -} - -object DispatchingTweetServiceBuilder { - val hasMedia: Tweet => Boolean = MediaIndexHelper(Resources.loadPartnerMediaRegexes()) - - def apply( - settings: TweetServiceSettings, - statsReceiver: StatsReceiver, - tweetServiceScope: StatsReceiver, - syncTweetService: ThriftTweetService, - timer: Timer, - deciderGates: TweetypieDeciderGates, - featureSwitchesWithExperiments: FeatureSwitches, - featureSwitchesWithoutExperiments: FeatureSwitches, - backendClients: BackendClients, - clientIdHelper: ClientIdHelper, - ): ThriftTweetService = { - val (syncInvocationBuilder, asyncInvocationBuilder) = { - val b = - new ServiceInvocationBuilder(syncTweetService, settings.simulateDeferredrpcCallbacks) - (b.withClientId(settings.thriftClientId), b.withClientId(settings.deferredrpcClientId)) - } - - val tweetKeyFactory = TweetKeyFactory(settings.tweetKeyCacheVersion) - - val caches = - if (!settings.withCache) - Caches.NoCache - else - Caches( - settings = settings, - stats = statsReceiver, - timer = timer, - clients = backendClients, - tweetKeyFactory = tweetKeyFactory, - deciderGates = deciderGates, - clientIdHelper = clientIdHelper, - ) - - val logicalRepos = - LogicalRepositories( - settings = settings, - stats = statsReceiver, - timer = timer, - deciderGates = deciderGates, - external = new ExternalServiceRepositories( - clients = backendClients, - statsReceiver = statsReceiver, - settings = settings, - clientIdHelper = clientIdHelper, - ), - caches = caches, - stratoClient = backendClients.stratoserverClient, - hasMedia = hasMedia, - clientIdHelper = clientIdHelper, - featureSwitchesWithoutExperiments = featureSwitchesWithoutExperiments, - ) - - val tweetCreationLock = - new CacheBasedTweetCreationLock( - cache = caches.tweetCreateLockerCache, - maxTries = 3, - stats = statsReceiver.scope("tweet_save").scope("locker"), - logUniquenessId = - if (settings.scribeUniquenessIds) CacheBasedTweetCreationLock.ScribeUniquenessId - else CacheBasedTweetCreationLock.LogUniquenessId - ) - - val tweetStores = - TweetStores( - settings = settings, - statsReceiver = statsReceiver, - timer = timer, - deciderGates = deciderGates, - tweetKeyFactory = tweetKeyFactory, - clients = backendClients, - caches = caches, - asyncBuilder = asyncInvocationBuilder, - hasMedia = hasMedia, - clientIdHelper = clientIdHelper, - ) - - val tweetDeletePathHandler = - new DefaultTweetDeletePathHandler( - tweetServiceScope, - logicalRepos.tweetResultRepo, - logicalRepos.optionalUserRepo, - logicalRepos.stratoSafetyLabelsRepo, - logicalRepos.lastQuoteOfQuoterRepo, - tweetStores, - getPerspectives = backendClients.timelineService.getPerspectives, - ) - - val tweetBuilders = - TweetBuilders( - settings = settings, - statsReceiver = statsReceiver, - deciderGates = deciderGates, - featureSwitchesWithExperiments = featureSwitchesWithExperiments, - clients = backendClients, - caches = caches, - repos = logicalRepos, - tweetStore = tweetStores, - hasMedia = hasMedia, - unretweetEdits = tweetDeletePathHandler.unretweetEdits, - ) - - val hydrateTweetForInsert = - WritePathHydration.hydrateTweet( - logicalRepos.tweetHydrators.hydrator, - statsReceiver.scope("insert_tweet") - ) - - val defaultTweetQueryOptions = TweetQuery.Options(include = GetTweetsHandler.BaseInclude) - - val parentUserIdRepo: ParentUserIdRepository.Type = - ParentUserIdRepository( - tweetRepo = logicalRepos.tweetRepo - ) - - val undeleteTweetHandler = - UndeleteTweetHandlerBuilder( - backendClients.tweetStorageClient, - logicalRepos, - tweetStores, - parentUserIdRepo, - statsReceiver - ) - - val eraseUserTweetsHandler = - EraseUserTweetsHandlerBuilder( - backendClients, - asyncInvocationBuilder, - deciderGates, - settings, - timer, - tweetDeletePathHandler, - tweetServiceScope - ) - - val setRetweetVisibilityHandler = - SetRetweetVisibilityHandler( - tweetGetter = - TweetRepository.tweetGetter(logicalRepos.optionalTweetRepo, defaultTweetQueryOptions), - tweetStores.setRetweetVisibility - ) - - val takedownHandler = - TakedownHandlerBuilder( - logicalRepos = logicalRepos, - tweetStores = tweetStores - ) - - val updatePossiblySensitiveTweetHandler = - UpdatePossiblySensitiveTweetHandler( - HandlerError.getRequired( - TweetRepository.tweetGetter(logicalRepos.optionalTweetRepo, defaultTweetQueryOptions), - HandlerError.tweetNotFoundException - ), - HandlerError.getRequired( - FutureArrow( - UserRepository - .userGetter( - logicalRepos.optionalUserRepo, - UserQueryOptions(Set(UserField.Safety), UserVisibility.All) - ) - .compose(UserKey.byId) - ), - HandlerError.userNotFoundException - ), - tweetStores.updatePossiblySensitiveTweet - ) - - val userTakedownHandler = - UserTakedownHandlerBuilder( - logicalRepos = logicalRepos, - tweetStores = tweetStores, - stats = tweetServiceScope - ) - - val getDeletedTweetsHandler = - GetDeletedTweetsHandler( - getDeletedTweets = backendClients.tweetStorageClient.getDeletedTweets, - tweetsExist = - GetDeletedTweetsHandler.tweetsExist(backendClients.tweetStorageClient.getTweet), - stats = tweetServiceScope.scope("get_deleted_tweets_handler") - ) - - val hydrateQuotedTweet = - WritePathHydration.hydrateQuotedTweet( - logicalRepos.optionalTweetRepo, - logicalRepos.optionalUserRepo, - logicalRepos.quoterHasAlreadyQuotedRepo - ) - - val deleteLocationDataHandler = - DeleteLocationDataHandler( - backendClients.geoScrubEventStore.getGeoScrubTimestamp, - Scribe(DeleteLocationData, "tweetypie_delete_location_data"), - backendClients.deleteLocationDataPublisher - ) - - val getStoredTweetsHandler = GetStoredTweetsHandler(logicalRepos.tweetResultRepo) - - val getStoredTweetsByUserHandler = GetStoredTweetsByUserHandler( - getStoredTweetsHandler = getStoredTweetsHandler, - getStoredTweet = backendClients.tweetStorageClient.getStoredTweet, - selectPage = FutureArrow { select => - backendClients.tflockReadClient - .selectPage(select, Some(settings.getStoredTweetsByUserPageSize)) - }, - maxPages = settings.getStoredTweetsByUserMaxPages - ) - - val getTweetsHandler = - GetTweetsHandler( - logicalRepos.tweetResultRepo, - logicalRepos.containerAsGetTweetResultRepo, - logicalRepos.deletedTweetVisibilityRepo, - statsReceiver.scope("read_path"), - deciderGates.shouldMaterializeContainers - ) - - val getTweetFieldsHandler = - GetTweetFieldsHandler( - logicalRepos.tweetResultRepo, - logicalRepos.deletedTweetVisibilityRepo, - logicalRepos.containerAsGetTweetFieldsResultRepo, - statsReceiver.scope("read_path"), - deciderGates.shouldMaterializeContainers - ) - - val unretweetHandler = - UnretweetHandler( - tweetDeletePathHandler.deleteTweets, - backendClients.timelineService.getPerspectives, - tweetDeletePathHandler.unretweetEdits, - logicalRepos.tweetRepo, - ) - - val hydrateInsertEvent = - WritePathHydration.hydrateInsertTweetEvent( - hydrateTweet = hydrateTweetForInsert, - hydrateQuotedTweet = hydrateQuotedTweet - ) - - val scrubGeoUpdateUserTimestampBuilder = - ScrubGeoEventBuilder.UpdateUserTimestamp( - stats = tweetServiceScope.scope("scrub_geo_update_user_timestamp"), - userRepo = logicalRepos.optionalUserRepo - ) - - val scrubGeoScrubTweetsBuilder = - ScrubGeoEventBuilder.ScrubTweets( - stats = tweetServiceScope.scope("scrub_geo"), - userRepo = logicalRepos.optionalUserRepo - ) - - val handlerFilter = - PostTweet - .DuplicateHandler( - tweetCreationLock = tweetCreationLock, - getTweets = getTweetsHandler, - stats = statsReceiver.scope("duplicate") - ) - .andThen(PostTweet.RescueTweetCreateFailure) - .andThen(PostTweet.LogFailures) - - val postTweetHandler = - handlerFilter[PostTweetRequest]( - PostTweet.Handler( - tweetBuilder = tweetBuilders.tweetBuilder, - hydrateInsertEvent = hydrateInsertEvent, - tweetStore = tweetStores, - ) - ) - - val postRetweetHandler = - handlerFilter[RetweetRequest]( - PostTweet.Handler( - tweetBuilder = tweetBuilders.retweetBuilder, - hydrateInsertEvent = hydrateInsertEvent, - tweetStore = tweetStores, - ) - ) - - val quotedTweetDeleteBuilder: QuotedTweetDeleteEventBuilder.Type = - QuotedTweetDeleteEventBuilder(logicalRepos.optionalTweetRepo) - - val quotedTweetTakedownBuilder: QuotedTweetTakedownEventBuilder.Type = - QuotedTweetTakedownEventBuilder(logicalRepos.optionalTweetRepo) - - val setAdditionalFieldsBuilder: SetAdditionalFieldsBuilder.Type = - SetAdditionalFieldsBuilder( - tweetRepo = logicalRepos.tweetRepo - ) - - val asyncSetAdditionalFieldsBuilder: AsyncSetAdditionalFieldsBuilder.Type = - AsyncSetAdditionalFieldsBuilder( - userRepo = logicalRepos.userRepo - ) - - val deleteAdditionalFieldsBuilder: DeleteAdditionalFieldsBuilder.Type = - DeleteAdditionalFieldsBuilder( - tweetRepo = logicalRepos.tweetRepo - ) - - val asyncDeleteAdditionalFieldsBuilder: AsyncDeleteAdditionalFieldsBuilder.Type = - AsyncDeleteAdditionalFieldsBuilder( - userRepo = logicalRepos.userRepo - ) - - new DispatchingTweetService( - asyncDeleteAdditionalFieldsBuilder = asyncDeleteAdditionalFieldsBuilder, - asyncSetAdditionalFieldsBuilder = asyncSetAdditionalFieldsBuilder, - deleteAdditionalFieldsBuilder = deleteAdditionalFieldsBuilder, - deleteLocationDataHandler = deleteLocationDataHandler, - deletePathHandler = tweetDeletePathHandler, - eraseUserTweetsHandler = eraseUserTweetsHandler, - getDeletedTweetsHandler = getDeletedTweetsHandler, - getStoredTweetsHandler = getStoredTweetsHandler, - getStoredTweetsByUserHandler = getStoredTweetsByUserHandler, - getTweetsHandler = getTweetsHandler, - getTweetFieldsHandler = getTweetFieldsHandler, - getTweetCountsHandler = GetTweetCountsHandler(logicalRepos.tweetCountsRepo), - postTweetHandler = postTweetHandler, - postRetweetHandler = postRetweetHandler, - quotedTweetDeleteBuilder = quotedTweetDeleteBuilder, - quotedTweetTakedownBuilder = quotedTweetTakedownBuilder, - scrubGeoUpdateUserTimestampBuilder = scrubGeoUpdateUserTimestampBuilder, - scrubGeoScrubTweetsBuilder = scrubGeoScrubTweetsBuilder, - setAdditionalFieldsBuilder = setAdditionalFieldsBuilder, - setRetweetVisibilityHandler = setRetweetVisibilityHandler, - statsReceiver = statsReceiver, - takedownHandler = takedownHandler, - tweetStore = tweetStores, - undeleteTweetHandler = undeleteTweetHandler, - unretweetHandler = unretweetHandler, - updatePossiblySensitiveTweetHandler = updatePossiblySensitiveTweetHandler, - userTakedownHandler = userTakedownHandler, - clientIdHelper = clientIdHelper, - ) - } -} - -object TakedownHandlerBuilder { - type Type = FutureArrow[TakedownRequest, Unit] - - def apply(logicalRepos: LogicalRepositories, tweetStores: TotalTweetStore) = - TakedownHandler( - getTweet = HandlerError.getRequired( - tweetGetter(logicalRepos), - HandlerError.tweetNotFoundException - ), - getUser = HandlerError.getRequired( - userGetter(logicalRepos), - HandlerError.userNotFoundException - ), - writeTakedown = tweetStores.takedown - ) - - def tweetGetter(logicalRepos: LogicalRepositories): FutureArrow[TweetId, Option[Tweet]] = - FutureArrow( - TweetRepository.tweetGetter( - logicalRepos.optionalTweetRepo, - TweetQuery.Options( - include = GetTweetsHandler.BaseInclude.also( - tweetFields = Set( - Tweet.TweetypieOnlyTakedownCountryCodesField.id, - Tweet.TweetypieOnlyTakedownReasonsField.id - ) - ) - ) - ) - ) - - def userGetter(logicalRepos: LogicalRepositories): FutureArrow[UserId, Option[User]] = - FutureArrow( - UserRepository - .userGetter( - logicalRepos.optionalUserRepo, - UserQueryOptions( - Set(UserField.Roles, UserField.Safety, UserField.Takedowns), - UserVisibility.All - ) - ) - .compose(UserKey.byId) - ) -} - -object UserTakedownHandlerBuilder { - def apply( - logicalRepos: LogicalRepositories, - tweetStores: TotalTweetStore, - stats: StatsReceiver - ): UserTakedownHandler.Type = - UserTakedownHandler( - getTweet = TakedownHandlerBuilder.tweetGetter(logicalRepos), - tweetTakedown = tweetStores.takedown, - ) -} - -object EraseUserTweetsHandlerBuilder { - def apply( - backendClients: BackendClients, - asyncInvocationBuilder: ServiceInvocationBuilder, - deciderGates: TweetypieDeciderGates, - settings: TweetServiceSettings, - timer: Timer, - tweetDeletePathHandler: DefaultTweetDeletePathHandler, - tweetServiceScope: StatsReceiver - ): EraseUserTweetsHandler = - EraseUserTweetsHandler( - selectPage(backendClients, settings), - deleteTweet(tweetDeletePathHandler), - eraseUserTweets(backendClients, asyncInvocationBuilder), - tweetServiceScope.scope("erase_user_tweets"), - sleep(deciderGates, settings, timer) - ) - - def selectPage( - backendClients: BackendClients, - settings: TweetServiceSettings - ): FutureArrow[Select[StatusGraph], PageResult[Long]] = - FutureArrow( - backendClients.tflockWriteClient.selectPage(_, Some(settings.eraseUserTweetsPageSize)) - ) - - def deleteTweet( - tweetDeletePathHandler: DefaultTweetDeletePathHandler - ): FutureEffect[(TweetId, UserId)] = - FutureEffect[(TweetId, UserId)] { - case (tweetId, expectedUserId) => - tweetDeletePathHandler - .internalDeleteTweets( - request = DeleteTweetsRequest( - Seq(tweetId), - isUserErasure = true, - expectedUserId = Some(expectedUserId) - ), - byUserId = None, - authenticatedUserId = None, - validate = tweetDeletePathHandler.validateTweetsForUserErasureDaemon - ) - .unit - } - - def eraseUserTweets( - backendClients: BackendClients, - asyncInvocationBuilder: ServiceInvocationBuilder - ): FutureArrow[AsyncEraseUserTweetsRequest, Unit] = - asyncInvocationBuilder - .asyncVia(backendClients.asyncTweetDeletionService) - .method(_.asyncEraseUserTweets) - - def sleep( - deciderGates: TweetypieDeciderGates, - settings: TweetServiceSettings, - timer: Timer - ): () => Future[Unit] = - () => - if (deciderGates.delayEraseUserTweets()) { - Future.sleep(settings.eraseUserTweetsDelay)(timer) - } else { - Future.Unit - } -} - -object UndeleteTweetHandlerBuilder { - def apply( - tweetStorage: TweetStorageClient, - logicalRepos: LogicalRepositories, - tweetStores: TotalTweetStore, - parentUserIdRepo: ParentUserIdRepository.Type, - statsReceiver: StatsReceiver - ): UndeleteTweetHandler.Type = - UndeleteTweetHandler( - undelete = tweetStorage.undelete, - tweetExists = tweetExists(tweetStorage), - getUser = FutureArrow( - UserRepository - .userGetter( - logicalRepos.optionalUserRepo, - UserQueryOptions( - // ExtendedProfile is needed to view a user's birthday to - // guarantee we are not undeleting tweets from when a user was < 13 - TweetBuilder.userFields ++ Set(UserField.ExtendedProfile), - UserVisibility.All, - filteredAsFailure = false - ) - ) - .compose(UserKey.byId) - ), - getDeletedTweets = tweetStorage.getDeletedTweets, - parentUserIdRepo = parentUserIdRepo, - save = save( - logicalRepos, - tweetStores, - statsReceiver - ) - ) - - private def tweetExists(tweetStorage: TweetStorageClient): FutureArrow[TweetId, Boolean] = - FutureArrow { id => - Stitch - .run(tweetStorage.getTweet(id)) - .map { - case _: GetTweet.Response.Found => true - case _ => false - } - } - - // 1. hydrates the undeleted tweet - // 2. hands a UndeleteTweetEvent to relevant stores. - // 3. return the hydrated tweet - def save( - logicalRepos: LogicalRepositories, - tweetStores: TotalTweetStore, - statsReceiver: StatsReceiver - ): FutureArrow[UndeleteTweet.Event, Tweet] = { - - val hydrateTweet = - WritePathHydration.hydrateTweet( - logicalRepos.tweetHydrators.hydrator, - statsReceiver.scope("undelete_tweet") - ) - - val hydrateQuotedTweet = - WritePathHydration.hydrateQuotedTweet( - logicalRepos.optionalTweetRepo, - logicalRepos.optionalUserRepo, - logicalRepos.quoterHasAlreadyQuotedRepo - ) - - val hydrateUndeleteEvent = - WritePathHydration.hydrateUndeleteTweetEvent( - hydrateTweet = hydrateTweet, - hydrateQuotedTweet = hydrateQuotedTweet - ) - - FutureArrow[UndeleteTweet.Event, Tweet] { event => - for { - hydratedEvent <- hydrateUndeleteEvent(event) - _ <- tweetStores.undeleteTweet(hydratedEvent) - } yield hydratedEvent.tweet - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceInvocationBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceInvocationBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..ec571fa0699c6af47e96bb5e28de38ddd6eacf52 GIT binary patch literal 37121 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 A => Future[B]): FutureArrow[A, B] = - FutureArrow(op(service)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.docx new file mode 100644 index 0000000000000000000000000000000000000000..053374b5b3ac49d51a8acec95ca8740ff340b8d9 GIT binary patch literal 42767 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.scala deleted file mode 100644 index 08592c16d..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetServiceSettings.scala +++ /dev/null @@ -1,475 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.Backoff -import com.twitter.finagle.memcached.exp.localMemcachedPort -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.ssl.OpportunisticTls -import com.twitter.finagle.thrift.ClientId -import com.twitter.flockdb.client.thriftscala.Priority -import com.twitter.servo.repository.CachedResult -import com.twitter.servo.util.Availability -import com.twitter.tweetypie.backends._ -import com.twitter.tweetypie.caching.SoftTtl -import com.twitter.tweetypie.handler.DuplicateTweetFinder -import com.twitter.tweetypie.repository.TombstoneTtl -import com.twitter.tweetypie.service._ -import com.twitter.tweetypie.storage.ManhattanTweetStorageClient -import com.twitter.util.Duration - -case class InProcessCacheConfig(ttl: Duration, maximumSize: Int) - -class TweetServiceSettings(val flags: TweetServiceFlags) { - - /** - * Convert a Boolean to an Option - * > optional(true, "my value") - * res: Some(my value) - * - * > optional(false, "my value") - * res: None - */ - def optional[T](b: Boolean, a: => T): Option[T] = if (b) Some(a) else None - - /** atla, localhost, etc. */ - val zone: String = flags.zone() - - /** dc is less specific than zone, zone=atla, dc=atl */ - val dc: String = zone.dropRight(1) - - /** one of: prod, staging, dev, testbox */ - val env: Env.Value = flags.env() - - /** instanceId of this aurora instance */ - lazy val instanceId: Int = flags.instanceId() - - /** total number of tweetypie aurora instances */ - val instanceCount: Int = flags.instanceCount() - - /** The Name to resolve to find the memcached cluster */ - val twemcacheDest: String = - // If twemcacheDest is explicitly set, always prefer that to - // localMemcachedPort. - flags.twemcacheDest.get - // Testbox uses this global flag to specify the location of the - // local memcached instance. - .orElse(localMemcachedPort().map("/$/inet/localhost/" + _)) - // If no explicit Name is specified, use the default. - .getOrElse(flags.twemcacheDest()) - - /** Read/write data through Cache */ - val withCache: Boolean = flags.withCache() - - /** - * The TFlock queue to use for background indexing operations. For - * production, this should always be the low priority queue, to - * allow foreground operations to be processed first. - */ - val backgroundIndexingPriority: Priority = flags.backgroundIndexingPriority() - - /** Set certain decider gates to this overridden value */ - val deciderOverrides: Map[String, Boolean] = - flags.deciderOverrides() - - /** use per host stats? */ - val clientHostStats: Boolean = - flags.clientHostStats() - - val warmupRequestsSettings: Option[WarmupQueriesSettings] = - optional(flags.enableWarmupRequests(), WarmupQueriesSettings()) - - /** enables request authorization via a allowlist */ - val allowlistingRequired: Boolean = - flags.allowlist.get.getOrElse(env == Env.prod) - - /** read rate limit for unknown clients (when allowlistingRequired is enabled) */ - val nonAllowListedClientRateLimitPerSec: Double = - flags.grayListRateLimit() - - /** enables requests from production clients */ - val allowProductionClients: Boolean = - env == Env.prod - - /** enables replication via DRPC */ - val enableReplication: Boolean = flags.enableReplication() - - /** enables forking of some traffic to configured target */ - val trafficForkingEnabled: Boolean = - env == Env.prod - - val scribeUniquenessIds: Boolean = - env == Env.prod - - /** ClientId to send to backend services */ - val thriftClientId: ClientId = - flags.clientId.get.map(ClientId(_)).getOrElse { - env match { - case Env.dev | Env.staging => ClientId("tweetypie.staging") - case Env.prod => ClientId("tweetypie.prod") - } - } - - /** - * Instead of using DRPC for calling into the async code path, call back into the - * current instance. Used for development and test to ensure logic in the current - * instance is being tested. - */ - val simulateDeferredrpcCallbacks: Boolean = flags.simulateDeferredrpcCallbacks() - - /** - * ClientId to set in 'asynchronous' requests when simulateDeferredrpcCallbacks is - * true and Tweetypie ends up just calling itself synchronously. - */ - val deferredrpcClientId: ClientId = ClientId("deferredrpc.prod") - - /** - * ServiceIdentifier used to enable mTLS - */ - val serviceIdentifier: ServiceIdentifier = flags.serviceIdentifier() - - /** - * Decider settings - */ - val deciderBaseFilename: Option[String] = Option(flags.deciderBase()) - val deciderOverlayFilename: Option[String] = Option(flags.deciderOverlay()) - val vfDeciderOverlayFilename: Option[String] = flags.vfDeciderOverlay.get - - /** - * Used to determine whether we should fail requests for Tweets that are likely too young - * to return a non-partial response. We return NotFound for Tweets that are deemed too young. - * Used by [[com.twitter.tweetypie.repository.ManhattanTweetRepository]]. - */ - val shortCircuitLikelyPartialTweetReads: Gate[Duration] = { - // interpret the flag as a duration in milliseconds - val ageCeiling: Duration = flags.shortCircuitLikelyPartialTweetReadsMs().milliseconds - Gate(tweetAge => tweetAge < ageCeiling) - } - - // tweet-service internal settings - - val tweetKeyCacheVersion = 1 - - /** how often to flush aggregated count updates for tweet counts */ - val aggregatedTweetCountsFlushInterval: Duration = 5.seconds - - /** maximum number of keys for which aggregated cached count updates may be cached */ - val maxAggregatedCountsSize = 1000 - - /** ramp up period for decidering up forked traffic (if enabled) to the full decidered value */ - val forkingRampUp: Duration = 3.minutes - - /** how long to wait after startup for serversets to resolve before giving up and moving on */ - val waitForServerSetsTimeout: Duration = 120.seconds - - /** number of threads to use in thread pool for language identification */ - val numPenguinThreads = 4 - - /** maximum number of tweets that clients can request per getTweets RPC call */ - val maxGetTweetsRequestSize = 200 - - /** maximum batch size for any batched request (getTweets is exempt, it has its own limiting) */ - val maxRequestSize = 200 - - /** - * maximum size to allow the thrift response buffer to grow before resetting it. this is set to - * approximately the current value of `srv/thrift/response_payload_bytes.p999`, meaning roughly - * 1 out of 1000 requests will cause the buffer to be reset. - */ - val maxThriftBufferSize: Int = 200 * 1024 - - // ********* timeouts and backoffs ********** - - /** backoffs for OptimisticLockingCache lockAndSet operations */ - val lockingCacheBackoffs: Stream[Duration] = - Backoff.exponentialJittered(10.millisecond, 50.milliseconds).take(3).toStream - - /** retry once on timeout with no backoff */ - val defaultTimeoutBackoffs: Stream[Duration] = Stream(0.milliseconds).toStream - - /** backoffs when user view is missing */ - val gizmoduckMissingUserViewBackoffs: Stream[Duration] = Backoff.const(10.millis).take(3).toStream - - /** backoffs for retrying failed async-write actions after first retry failure */ - val asyncWriteRetryBackoffs: Stream[Duration] = - Backoff.exponential(10.milliseconds, 2).take(9).toStream.map(_ min 1.second) - - /** backoffs for retrying failed deferredrpc enqueues */ - val deferredrpcBackoffs: Stream[Duration] = - Backoff.exponential(10.milliseconds, 2).take(3).toStream - - /** backoffs for retrying failed cache updates for replicated events */ - val replicatedEventCacheBackoffs: Stream[Duration] = - Backoff.exponential(100.milliseconds, 2).take(10).toStream - - val escherbirdConfig: Escherbird.Config = - Escherbird.Config( - requestTimeout = 200.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs - ) - - val expandodoConfig: Expandodo.Config = - Expandodo.Config( - requestTimeout = 300.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - serverErrorBackoffs = Backoff.const(0.millis).take(3).toStream - ) - - val creativesContainerServiceConfig: CreativesContainerService.Config = - CreativesContainerService.Config( - requestTimeout = 300.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - serverErrorBackoffs = Backoff.const(0.millis).take(3).toStream - ) - - val geoScrubEventStoreConfig: GeoScrubEventStore.Config = - GeoScrubEventStore.Config( - read = GeoScrubEventStore.EndpointConfig( - requestTimeout = 200.milliseconds, - maxRetryCount = 1 - ), - write = GeoScrubEventStore.EndpointConfig( - requestTimeout = 1.second, - maxRetryCount = 1 - ) - ) - - val gizmoduckConfig: Gizmoduck.Config = - Gizmoduck.Config( - readTimeout = 300.milliseconds, - writeTimeout = 300.milliseconds, - // We bump the timeout value to 800ms because modifyAndGet is called only in async request path in GeoScrub daemon - // and we do not expect sync/realtime apps calling this thrift method - modifyAndGetTimeout = 800.milliseconds, - modifyAndGetTimeoutBackoffs = Backoff.const(0.millis).take(3).toStream, - defaultTimeoutBackoffs = defaultTimeoutBackoffs, - gizmoduckExceptionBackoffs = Backoff.const(0.millis).take(3).toStream - ) - - val limiterBackendConfig: LimiterBackend.Config = - LimiterBackend.Config( - requestTimeout = 300.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs - ) - - val mediaInfoServiceConfig: MediaInfoService.Config = - MediaInfoService.Config( - requestTimeout = 300.milliseconds, - totalTimeout = 500.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs - ) - - val scarecrowConfig: Scarecrow.Config = - Scarecrow.Config( - readTimeout = 100.milliseconds, - writeTimeout = 400.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - scarecrowExceptionBackoffs = Backoff.const(0.millis).take(3).toStream - ) - - val socialGraphSeviceConfig: SocialGraphService.Config = - SocialGraphService.Config( - socialGraphTimeout = 250.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs - ) - - val talonConfig: Talon.Config = - Talon.Config( - shortenTimeout = 500.milliseconds, - expandTimeout = 150.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - transientErrorBackoffs = Backoff.const(0.millis).take(3).toStream - ) - - /** - * page size when retrieving tflock pages for tweet deletion and undeletion - * tweet erasures have their own page size eraseUserTweetsPageSize - */ - val tflockPageSize: Int = flags.tflockPageSize() - - val tflockReadConfig: TFlock.Config = - TFlock.Config( - requestTimeout = 300.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - flockExceptionBackoffs = Backoff.const(0.millis).take(3).toStream, - overCapacityBackoffs = Stream.empty, - defaultPageSize = tflockPageSize - ) - - val tflockWriteConfig: TFlock.Config = - TFlock.Config( - requestTimeout = 400.milliseconds, - timeoutBackoffs = defaultTimeoutBackoffs, - flockExceptionBackoffs = Backoff.const(0.millis).take(3).toStream, - overCapacityBackoffs = Backoff.exponential(10.millis, 2).take(3).toStream - ) - - val timelineServiceConfig: TimelineService.Config = { - val tlsExceptionBackoffs = Backoff.const(0.millis).take(3).toStream - TimelineService.Config( - writeRequestPolicy = - Backend.TimeoutPolicy(4.seconds) >>> - TimelineService.FailureBackoffsPolicy( - timeoutBackoffs = defaultTimeoutBackoffs, - tlsExceptionBackoffs = tlsExceptionBackoffs - ), - readRequestPolicy = - Backend.TimeoutPolicy(400.milliseconds) >>> - TimelineService.FailureBackoffsPolicy( - timeoutBackoffs = defaultTimeoutBackoffs, - tlsExceptionBackoffs = tlsExceptionBackoffs - ) - ) - } - - val tweetStorageConfig: ManhattanTweetStorageClient.Config = { - val remoteZone = zone match { - case "atla" => "pdxa" - case "pdxa" => "atla" - case "atla" | "localhost" => "atla" - case _ => - throw new IllegalArgumentException(s"Cannot configure remote DC for unknown zone '$zone'") - } - ManhattanTweetStorageClient.Config( - applicationId = "tbird_mh", - localDestination = "/s/manhattan/cylon.native-thrift", - localTimeout = 290.milliseconds, - remoteDestination = s"/srv#/prod/$remoteZone/manhattan/cylon.native-thrift", - remoteTimeout = 1.second, - maxRequestsPerBatch = 25, - serviceIdentifier = serviceIdentifier, - opportunisticTlsLevel = OpportunisticTls.Required - ) - } - - val userImageServiceConfig: UserImageService.Config = - UserImageService.Config( - processTweetMediaTimeout = 5.seconds, - updateTweetMediaTimeout = 2.seconds, - timeoutBackoffs = defaultTimeoutBackoffs - ) - - val adsLoggingClientTopicName = env match { - case Env.prod => "ads_client_callback_prod" - case Env.dev | Env.staging => "ads_client_callback_staging" - } - - /** Delay between successive cascadedDeleteTweet calls when deleting retweets. Applied via decider. */ - val retweetDeletionDelay: Duration = 20.milliseconds - - /** - * Delay to sleep before each tweet deletion of an eraseUserTweets request. - * This is a simple rate limiting mechanism. The long term solution is - * to move async endpoints like user erasures and retweet deletions out - * of the the main tweetypie cluster and into an async cluster with first class - * rate limiting support - */ - val eraseUserTweetsDelay: Duration = 100.milliseconds - - val eraseUserTweetsPageSize = 100 - - val getStoredTweetsByUserPageSize = 20 - val getStoredTweetsByUserMaxPages = 30 - - // ********* ttls ********** - - // Unfortunately, this tombstone TTL applies equally to the case - // where the tweet was deleted and the case that the tweet does not - // exist or is unavailable. If we could differentiate between those - // cases, we'd cache deleted for a long time and not - // found/unavailable for a short time. We chose 100 - // milliseconds for the minimum TTL because there are known cases in - // which a not found result can be erroneously written to cache on - // tweet creation. This minimum TTL is a trade-off between a - // thundering herd of database requests from clients that just got - // the fanned-out tweet and the window for which these inconsistent - // results will be available. - val tweetTombstoneTtl: CachedResult.CachedNotFound[TweetId] => Duration = - TombstoneTtl.linear(min = 100.milliseconds, max = 1.day, from = 5.minutes, to = 5.hours) - - val tweetMemcacheTtl: Duration = 14.days - val urlMemcacheTtl: Duration = 1.hour - val urlMemcacheSoftTtl: Duration = 1.hour - val deviceSourceMemcacheTtl: Duration = 12.hours - val deviceSourceMemcacheSoftTtl: SoftTtl.ByAge[Nothing] = - SoftTtl.ByAge(softTtl = 1.hour, jitter = 1.minute) - val deviceSourceInProcessTtl: Duration = 8.hours - val deviceSourceInProcessSoftTtl: Duration = 30.minutes - val placeMemcacheTtl: Duration = 1.day - val placeMemcacheSoftTtl: SoftTtl.ByAge[Nothing] = - SoftTtl.ByAge(softTtl = 3.hours, jitter = 1.minute) - val cardMemcacheTtl: Duration = 20.minutes - val cardMemcacheSoftTtl: Duration = 30.seconds - val tweetCreateLockingMemcacheTtl: Duration = 10.seconds - val tweetCreateLockingMemcacheLongTtl: Duration = 12.hours - val geoScrubMemcacheTtl: Duration = 30.minutes - - val tweetCountsMemcacheTtl: Duration = 24.hours - val tweetCountsMemcacheNonZeroSoftTtl: Duration = 3.hours - val tweetCountsMemcacheZeroSoftTtl: Duration = 7.hours - - val cacheClientPendingRequestLimit: Int = flags.memcachePendingRequestLimit() - - val deviceSourceInProcessCacheMaxSize = 10000 - - val inProcessCacheConfigOpt: Option[InProcessCacheConfig] = - if (flags.enableInProcessCache()) { - Some( - InProcessCacheConfig( - ttl = flags.inProcessCacheTtlMs().milliseconds, - maximumSize = flags.inProcessCacheSize() - ) - ) - } else { - None - } - - // Begin returning OverCapacity for tweet repo when cache SR falls below 95%, - // Scale to rejecting 95% of requests when cache SR <= 80% - val tweetCacheAvailabilityFromSuccessRate: Double => Double = - Availability.linearlyScaled(0.95, 0.80, 0.05) - - // ******* repository chunking size ******** - - val tweetCountsRepoChunkSize = 6 - // n times `tweetCountsRepoChunkSize`, so chunking at higher level does not - // generate small batches at lower level. - val tweetCountsCacheChunkSize = 18 - - val duplicateTweetFinderSettings: DuplicateTweetFinder.Settings = - DuplicateTweetFinder.Settings(numTweetsToCheck = 10, maxDuplicateAge = 12.hours) - - val backendWarmupSettings: Warmup.Settings = - Warmup.Settings( - // Try for twenty seconds to warm up the backends before giving - // up. - maxWarmupDuration = 20.seconds, - // Only allow up to 50 outstanding warmup requests of any kind - // to be outstanding at a time. - maxOutstandingRequests = 50, - // These timeouts are just over the p999 latency observed in ATLA - // for requests to these backends. - requestTimeouts = Map( - "expandodo" -> 120.milliseconds, - "geo_relevance" -> 50.milliseconds, - "gizmoduck" -> 200.milliseconds, - "memcache" -> 50.milliseconds, - "scarecrow" -> 120.milliseconds, - "socialgraphservice" -> 180.milliseconds, - "talon" -> 70.milliseconds, - "tflock" -> 320.milliseconds, - "timelineservice" -> 200.milliseconds, - "tweetstorage" -> 50.milliseconds - ), - reliability = Warmup.Reliably( - // Consider a backend warmed up if 99% of requests are succeeding. - reliabilityThreshold = 0.99, - // When performing warmup, use a maximum of 10 concurrent - // requests to each backend. - concurrency = 10, - // Do not allow more than this many attempts to perform the - // warmup action before giving up. - maxAttempts = 1000 - ) - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.docx new file mode 100644 index 0000000000000000000000000000000000000000..a71d348fe8f99bedec79df658b1061dbc99741af GIT binary patch literal 40837 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.scala deleted file mode 100644 index 49cc53fb5..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetStores.scala +++ /dev/null @@ -1,577 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.servo.util.FutureArrow -import com.twitter.servo.util.RetryHandler -import com.twitter.servo.util.Scribe -import com.twitter.tweetypie.backends.LimiterService.Feature.MediaTagCreate -import com.twitter.tweetypie.backends.LimiterService.Feature.Updates -import com.twitter.tweetypie.client_id.ClientIdHelper -import com.twitter.tweetypie.handler.TweetBuilder -import com.twitter.tweetypie.repository.TweetKeyFactory -import com.twitter.tweetypie.store._ -import com.twitter.tweetypie.tflock.TFlockIndexer -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.util.RetryPolicyBuilder -import com.twitter.util.Timer - -object TweetStores { - def apply( - settings: TweetServiceSettings, - statsReceiver: StatsReceiver, - timer: Timer, - deciderGates: TweetypieDeciderGates, - tweetKeyFactory: TweetKeyFactory, - clients: BackendClients, - caches: Caches, - asyncBuilder: ServiceInvocationBuilder, - hasMedia: Tweet => Boolean, - clientIdHelper: ClientIdHelper, - ): TotalTweetStore = { - - val deferredrpcRetryPolicy = - // retry all application exceptions for now. however, in the future, deferredrpc - // may throw a backpressure exception that should not be retried. - RetryPolicyBuilder.anyFailure(settings.deferredrpcBackoffs) - - val asyncWriteRetryPolicy = - // currently retries all failures with the same back-off times. might need - // to update to handle backpressure exceptions differently. - RetryPolicyBuilder.anyFailure(settings.asyncWriteRetryBackoffs) - - val replicatedEventRetryPolicy = - RetryPolicyBuilder.anyFailure(settings.replicatedEventCacheBackoffs) - - val logLensStore = - LogLensStore( - tweetCreationsLogger = Logger("com.twitter.tweetypie.store.TweetCreations"), - tweetDeletionsLogger = Logger("com.twitter.tweetypie.store.TweetDeletions"), - tweetUndeletionsLogger = Logger("com.twitter.tweetypie.store.TweetUndeletions"), - tweetUpdatesLogger = Logger("com.twitter.tweetypie.store.TweetUpdates"), - clientIdHelper = clientIdHelper, - ) - - val tweetStoreStats = statsReceiver.scope("tweet_store") - - val tweetStatsStore = TweetStatsStore(tweetStoreStats.scope("stats")) - - val asyncRetryConfig = - new TweetStore.AsyncRetry( - asyncWriteRetryPolicy, - deferredrpcRetryPolicy, - timer, - clients.asyncRetryTweetService, - Scribe(FailedAsyncWrite, "tweetypie_failed_async_writes") - )(_, _) - - val manhattanStore = { - val scopedStats = tweetStoreStats.scope("base") - ManhattanTweetStore(clients.tweetStorageClient) - .tracked(scopedStats) - .asyncRetry(asyncRetryConfig(scopedStats, ManhattanTweetStore.Action)) - } - - val cachingTweetStore = { - val cacheStats = tweetStoreStats.scope("caching") - CachingTweetStore( - tweetKeyFactory = tweetKeyFactory, - tweetCache = caches.tweetCache, - stats = cacheStats - ).tracked(cacheStats) - .asyncRetry(asyncRetryConfig(cacheStats, CachingTweetStore.Action)) - .replicatedRetry(RetryHandler.failuresOnly(replicatedEventRetryPolicy, timer, cacheStats)) - } - - val indexingStore = { - val indexingStats = tweetStoreStats.scope("indexing") - TweetIndexingStore( - new TFlockIndexer( - tflock = clients.tflockWriteClient, - hasMedia = hasMedia, - backgroundIndexingPriority = settings.backgroundIndexingPriority, - stats = indexingStats - ) - ).tracked(indexingStats) - .asyncRetry(asyncRetryConfig(indexingStats, TweetIndexingStore.Action)) - } - - val timelineUpdatingStore = { - val tlsScope = tweetStoreStats.scope("timeline_updating") - TlsTimelineUpdatingStore( - processEvent2 = clients.timelineService.processEvent2, - hasMedia = hasMedia, - stats = tlsScope - ).tracked(tlsScope) - .asyncRetry(asyncRetryConfig(tlsScope, TlsTimelineUpdatingStore.Action)) - } - - val guanoServiceStore = { - val guanoStats = tweetStoreStats.scope("guano") - GuanoServiceStore(clients.guano, guanoStats) - .tracked(guanoStats) - .asyncRetry(asyncRetryConfig(guanoStats, GuanoServiceStore.Action)) - } - - val mediaServiceStore = { - val mediaStats = tweetStoreStats.scope("media") - MediaServiceStore(clients.mediaClient.deleteMedia, clients.mediaClient.undeleteMedia) - .tracked(mediaStats) - .asyncRetry(asyncRetryConfig(mediaStats, MediaServiceStore.Action)) - } - - val userCountsUpdatingStore = { - val userCountsStats = tweetStoreStats.scope("user_counts") - GizmoduckUserCountsUpdatingStore(clients.gizmoduck.incrCount, hasMedia) - .tracked(userCountsStats) - .ignoreFailures - } - - val tweetCountsUpdatingStore = { - val cacheScope = statsReceiver.scope("tweet_counts_cache") - val tweetCountsStats = tweetStoreStats.scope("tweet_counts") - - val memcacheCountsStore = { - val lockingCacheCountsStore = - CachedCountsStore.fromLockingCache(caches.tweetCountsCache) - - new AggregatingCachedCountsStore( - lockingCacheCountsStore, - timer, - settings.aggregatedTweetCountsFlushInterval, - settings.maxAggregatedCountsSize, - cacheScope - ) - } - - TweetCountsCacheUpdatingStore(memcacheCountsStore) - .tracked(tweetCountsStats) - .ignoreFailures - } - - val replicatingStore = { - val replicateStats = tweetStoreStats.scope("replicate_out") - ReplicatingTweetStore( - clients.replicationClient - ).tracked(replicateStats) - .retry(RetryHandler.failuresOnly(deferredrpcRetryPolicy, timer, replicateStats)) - .asyncRetry(asyncRetryConfig(replicateStats, ReplicatingTweetStore.Action)) - .enabledBy(Gate.const(settings.enableReplication)) - } - - val scribeMediaTagStore = - ScribeMediaTagStore() - .tracked(tweetStoreStats.scope("scribe_media_tag_store")) - - val limiterStore = - LimiterStore( - clients.limiterService.incrementByOne(Updates), - clients.limiterService.increment(MediaTagCreate) - ).tracked(tweetStoreStats.scope("limiter_store")) - - val geoSearchRequestIDStore = { - val statsScope = tweetStoreStats.scope("geo_search_request_id") - GeoSearchRequestIDStore(FutureArrow(clients.geoRelevance.reportConversion _)) - .tracked(statsScope) - .asyncRetry(asyncRetryConfig(statsScope, GeoSearchRequestIDStore.Action)) - } - - val userGeotagUpdateStore = { - val geotagScope = tweetStoreStats.scope("gizmoduck_user_geotag_updating") - GizmoduckUserGeotagUpdateStore( - clients.gizmoduck.modifyAndGet, - geotagScope - ).tracked(geotagScope) - .asyncRetry(asyncRetryConfig(geotagScope, GizmoduckUserGeotagUpdateStore.Action)) - } - - val fanoutServiceStore = { - val fanoutStats = tweetStoreStats.scope("fanout_service_delivery") - FanoutServiceStore(clients.fanoutServiceClient, fanoutStats) - .tracked(fanoutStats) - .asyncRetry(asyncRetryConfig(fanoutStats, FanoutServiceStore.Action)) - } - - /** - * A store that converts Tweetypie TweetEvents to EventBus TweetEvents and sends each event to - * the underlying FutureEffect[eventbus.TweetEvent] - */ - val eventBusEnqueueStore = { - val enqueueStats = tweetStoreStats.scope("event_bus_enqueueing") - val enqueueEffect = FutureEffect[TweetEvent](clients.tweetEventsPublisher.publish) - - TweetEventBusStore( - enqueueEffect - ).tracked(enqueueStats) - .asyncRetry(asyncRetryConfig(enqueueStats, AsyncWriteAction.EventBusEnqueue)) - } - - val retweetArchivalEnqueueStore = { - val enqueueStats = tweetStoreStats.scope("retweet_archival_enqueueing") - val enqueueEffect = FutureEffect(clients.retweetArchivalEventPublisher.publish) - - RetweetArchivalEnqueueStore(enqueueEffect) - .tracked(enqueueStats) - .asyncRetry(asyncRetryConfig(enqueueStats, AsyncWriteAction.RetweetArchivalEnqueue)) - } - - val asyncEnqueueStore = { - val asyncEnqueueStats = tweetStoreStats.scope("async_enqueueing") - AsyncEnqueueStore( - asyncBuilder.asyncVia(clients.asyncTweetService).service, - TweetBuilder.scrubUserInAsyncInserts, - TweetBuilder.scrubSourceTweetInAsyncInserts, - TweetBuilder.scrubSourceUserInAsyncInserts - ).tracked(asyncEnqueueStats) - .retry(RetryHandler.failuresOnly(deferredrpcRetryPolicy, timer, asyncEnqueueStats)) - } - - val insertTweetStore = - InsertTweet.Store( - logLensStore = logLensStore, - manhattanStore = manhattanStore, - tweetStatsStore = tweetStatsStore, - cachingTweetStore = cachingTweetStore, - limiterStore = limiterStore, - asyncEnqueueStore = asyncEnqueueStore, - userCountsUpdatingStore = userCountsUpdatingStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val asyncInsertStore = - AsyncInsertTweet.Store( - replicatingStore = replicatingStore, - indexingStore = indexingStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore, - timelineUpdatingStore = timelineUpdatingStore, - eventBusEnqueueStore = eventBusEnqueueStore, - fanoutServiceStore = fanoutServiceStore, - scribeMediaTagStore = scribeMediaTagStore, - userGeotagUpdateStore = userGeotagUpdateStore, - geoSearchRequestIDStore = geoSearchRequestIDStore - ) - - val replicatedInsertTweetStore = - ReplicatedInsertTweet.Store( - cachingTweetStore = cachingTweetStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val deleteTweetStore = - DeleteTweet.Store( - cachingTweetStore = cachingTweetStore, - asyncEnqueueStore = asyncEnqueueStore, - userCountsUpdatingStore = userCountsUpdatingStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore, - logLensStore = logLensStore - ) - - val asyncDeleteTweetStore = - AsyncDeleteTweet.Store( - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - replicatingStore = replicatingStore, - indexingStore = indexingStore, - eventBusEnqueueStore = eventBusEnqueueStore, - timelineUpdatingStore = timelineUpdatingStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore, - guanoServiceStore = guanoServiceStore, - mediaServiceStore = mediaServiceStore - ) - - val replicatedDeleteTweetStore = - ReplicatedDeleteTweet.Store( - cachingTweetStore = cachingTweetStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val incrBookmarkCountStore = - IncrBookmarkCount.Store( - asyncEnqueueStore = asyncEnqueueStore, - replicatingStore = replicatingStore - ) - - val asyncIncrBookmarkCountStore = - AsyncIncrBookmarkCount.Store( - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val replicatedIncrBookmarkCountStore = - ReplicatedIncrBookmarkCount.Store( - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val incrFavCountStore = - IncrFavCount.Store( - asyncEnqueueStore = asyncEnqueueStore, - replicatingStore = replicatingStore - ) - - val asyncIncrFavCountStore = - AsyncIncrFavCount.Store( - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val replicatedIncrFavCountStore = - ReplicatedIncrFavCount.Store( - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val scrubGeoStore = - ScrubGeo.Store( - logLensStore = logLensStore, - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - eventBusEnqueueStore = eventBusEnqueueStore, - replicatingStore = replicatingStore - ) - - val replicatedScrubGeoStore = - ReplicatedScrubGeo.Store( - cachingTweetStore = cachingTweetStore - ) - - val takedownStore = - Takedown.Store( - logLensStore = logLensStore, - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - asyncEnqueueStore = asyncEnqueueStore - ) - - val asyncTakedownStore = - AsyncTakedown.Store( - replicatingStore = replicatingStore, - guanoStore = guanoServiceStore, - eventBusEnqueueStore = eventBusEnqueueStore - ) - - val replicatedTakedownStore = - ReplicatedTakedown.Store( - cachingTweetStore = cachingTweetStore - ) - - val updatePossiblySensitiveTweetStore = - UpdatePossiblySensitiveTweet.Store( - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - logLensStore = logLensStore, - asyncEnqueueStore = asyncEnqueueStore - ) - - val asyncUpdatePossiblySensitiveTweetStore = - AsyncUpdatePossiblySensitiveTweet.Store( - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - replicatingStore = replicatingStore, - guanoStore = guanoServiceStore, - eventBusStore = eventBusEnqueueStore - ) - - val replicatedUpdatePossiblySensitiveTweetStore = - ReplicatedUpdatePossiblySensitiveTweet.Store( - cachingTweetStore = cachingTweetStore - ) - - val setAdditionalFieldsStore = - SetAdditionalFields.Store( - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - asyncEnqueueStore = asyncEnqueueStore, - logLensStore = logLensStore - ) - - val asyncSetAdditionalFieldsStore = - AsyncSetAdditionalFields.Store( - replicatingStore = replicatingStore, - eventBusEnqueueStore = eventBusEnqueueStore - ) - - val replicatedSetAdditionalFieldsStore = - ReplicatedSetAdditionalFields.Store( - cachingTweetStore = cachingTweetStore - ) - - val setRetweetVisibilityStore = - SetRetweetVisibility.Store(asyncEnqueueStore = asyncEnqueueStore) - - val asyncSetRetweetVisibilityStore = - AsyncSetRetweetVisibility.Store( - tweetIndexingStore = indexingStore, - tweetCountsCacheUpdatingStore = tweetCountsUpdatingStore, - replicatingTweetStore = replicatingStore, - retweetArchivalEnqueueStore = retweetArchivalEnqueueStore - ) - - val replicatedSetRetweetVisibilityStore = - ReplicatedSetRetweetVisibility.Store( - tweetCountsCacheUpdatingStore = tweetCountsUpdatingStore - ) - - val deleteAdditionalFieldsStore = - DeleteAdditionalFields.Store( - cachingTweetStore = cachingTweetStore, - asyncEnqueueStore = asyncEnqueueStore, - logLensStore = logLensStore - ) - - val asyncDeleteAdditionalFieldsStore = - AsyncDeleteAdditionalFields.Store( - manhattanStore = manhattanStore, - cachingTweetStore = cachingTweetStore, - replicatingStore = replicatingStore, - eventBusEnqueueStore = eventBusEnqueueStore - ) - - val replicatedDeleteAdditionalFieldsStore = - ReplicatedDeleteAdditionalFields.Store( - cachingTweetStore = cachingTweetStore - ) - - /* - * This composed store handles all synchronous side effects of an undelete - * but does not execute the undeletion. - * - * This store is executed after the actual undelete request succeeds. - * The undeletion request is initiated by Undelete.apply() - */ - val undeleteTweetStore = - UndeleteTweet.Store( - logLensStore = logLensStore, - cachingTweetStore = cachingTweetStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore, - asyncEnqueueStore = asyncEnqueueStore - ) - - val asyncUndeleteTweetStore = - AsyncUndeleteTweet.Store( - cachingTweetStore = cachingTweetStore, - eventBusEnqueueStore = eventBusEnqueueStore, - indexingStore = indexingStore, - replicatingStore = replicatingStore, - mediaServiceStore = mediaServiceStore, - timelineUpdatingStore = timelineUpdatingStore - ) - - val replicatedUndeleteTweetStore = - ReplicatedUndeleteTweet.Store( - cachingTweetStore = cachingTweetStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val flushStore = - Flush.Store( - cachingTweetStore = cachingTweetStore, - tweetCountsUpdatingStore = tweetCountsUpdatingStore - ) - - val scrubGeoUpdateUserTimestampStore = - ScrubGeoUpdateUserTimestamp.Store( - cache = caches.geoScrubCache, - setInManhattan = clients.geoScrubEventStore.setGeoScrubTimestamp, - geotagUpdateStore = userGeotagUpdateStore, - tweetEventBusStore = eventBusEnqueueStore - ) - - val quotedTweetDeleteStore = - QuotedTweetDelete.Store( - eventBusEnqueueStore = eventBusEnqueueStore - ) - - val quotedTweetTakedownStore = - QuotedTweetTakedown.Store( - eventBusEnqueueStore = eventBusEnqueueStore - ) - - new TotalTweetStore { - val asyncDeleteAdditionalFields: FutureEffect[AsyncDeleteAdditionalFields.Event] = - asyncDeleteAdditionalFieldsStore.asyncDeleteAdditionalFields - val asyncDeleteTweet: FutureEffect[AsyncDeleteTweet.Event] = - asyncDeleteTweetStore.asyncDeleteTweet - val asyncIncrBookmarkCount: FutureEffect[AsyncIncrBookmarkCount.Event] = - asyncIncrBookmarkCountStore.asyncIncrBookmarkCount - val asyncIncrFavCount: FutureEffect[AsyncIncrFavCount.Event] = - asyncIncrFavCountStore.asyncIncrFavCount - val asyncInsertTweet: FutureEffect[AsyncInsertTweet.Event] = asyncInsertStore.asyncInsertTweet - val asyncSetAdditionalFields: FutureEffect[AsyncSetAdditionalFields.Event] = - asyncSetAdditionalFieldsStore.asyncSetAdditionalFields - val asyncSetRetweetVisibility: FutureEffect[AsyncSetRetweetVisibility.Event] = - asyncSetRetweetVisibilityStore.asyncSetRetweetVisibility - val asyncTakedown: FutureEffect[AsyncTakedown.Event] = asyncTakedownStore.asyncTakedown - val asyncUndeleteTweet: FutureEffect[AsyncUndeleteTweet.Event] = - asyncUndeleteTweetStore.asyncUndeleteTweet - val asyncUpdatePossiblySensitiveTweet: FutureEffect[AsyncUpdatePossiblySensitiveTweet.Event] = - asyncUpdatePossiblySensitiveTweetStore.asyncUpdatePossiblySensitiveTweet - val deleteAdditionalFields: FutureEffect[DeleteAdditionalFields.Event] = - deleteAdditionalFieldsStore.deleteAdditionalFields - val deleteTweet: FutureEffect[DeleteTweet.Event] = deleteTweetStore.deleteTweet - val flush: FutureEffect[Flush.Event] = flushStore.flush - val incrBookmarkCount: FutureEffect[IncrBookmarkCount.Event] = - incrBookmarkCountStore.incrBookmarkCount - val incrFavCount: FutureEffect[IncrFavCount.Event] = incrFavCountStore.incrFavCount - val insertTweet: FutureEffect[InsertTweet.Event] = insertTweetStore.insertTweet - val quotedTweetDelete: FutureEffect[QuotedTweetDelete.Event] = - quotedTweetDeleteStore.quotedTweetDelete - val quotedTweetTakedown: FutureEffect[QuotedTweetTakedown.Event] = - quotedTweetTakedownStore.quotedTweetTakedown - val replicatedDeleteAdditionalFields: FutureEffect[ReplicatedDeleteAdditionalFields.Event] = - replicatedDeleteAdditionalFieldsStore.replicatedDeleteAdditionalFields - val replicatedDeleteTweet: FutureEffect[ReplicatedDeleteTweet.Event] = - replicatedDeleteTweetStore.replicatedDeleteTweet - val replicatedIncrBookmarkCount: FutureEffect[ReplicatedIncrBookmarkCount.Event] = - replicatedIncrBookmarkCountStore.replicatedIncrBookmarkCount - val replicatedIncrFavCount: FutureEffect[ReplicatedIncrFavCount.Event] = - replicatedIncrFavCountStore.replicatedIncrFavCount - val replicatedInsertTweet: FutureEffect[ReplicatedInsertTweet.Event] = - replicatedInsertTweetStore.replicatedInsertTweet - val replicatedScrubGeo: FutureEffect[ReplicatedScrubGeo.Event] = - replicatedScrubGeoStore.replicatedScrubGeo - val replicatedSetAdditionalFields: FutureEffect[ReplicatedSetAdditionalFields.Event] = - replicatedSetAdditionalFieldsStore.replicatedSetAdditionalFields - val replicatedSetRetweetVisibility: FutureEffect[ReplicatedSetRetweetVisibility.Event] = - replicatedSetRetweetVisibilityStore.replicatedSetRetweetVisibility - val replicatedTakedown: FutureEffect[ReplicatedTakedown.Event] = - replicatedTakedownStore.replicatedTakedown - val replicatedUndeleteTweet: FutureEffect[ReplicatedUndeleteTweet.Event] = - replicatedUndeleteTweetStore.replicatedUndeleteTweet - val replicatedUpdatePossiblySensitiveTweet: FutureEffect[ - ReplicatedUpdatePossiblySensitiveTweet.Event - ] = - replicatedUpdatePossiblySensitiveTweetStore.replicatedUpdatePossiblySensitiveTweet - val retryAsyncDeleteAdditionalFields: FutureEffect[ - TweetStoreRetryEvent[AsyncDeleteAdditionalFields.Event] - ] = - asyncDeleteAdditionalFieldsStore.retryAsyncDeleteAdditionalFields - val retryAsyncDeleteTweet: FutureEffect[TweetStoreRetryEvent[AsyncDeleteTweet.Event]] = - asyncDeleteTweetStore.retryAsyncDeleteTweet - val retryAsyncInsertTweet: FutureEffect[TweetStoreRetryEvent[AsyncInsertTweet.Event]] = - asyncInsertStore.retryAsyncInsertTweet - val retryAsyncSetAdditionalFields: FutureEffect[ - TweetStoreRetryEvent[AsyncSetAdditionalFields.Event] - ] = - asyncSetAdditionalFieldsStore.retryAsyncSetAdditionalFields - val retryAsyncSetRetweetVisibility: FutureEffect[ - TweetStoreRetryEvent[AsyncSetRetweetVisibility.Event] - ] = - asyncSetRetweetVisibilityStore.retryAsyncSetRetweetVisibility - val retryAsyncTakedown: FutureEffect[TweetStoreRetryEvent[AsyncTakedown.Event]] = - asyncTakedownStore.retryAsyncTakedown - val retryAsyncUndeleteTweet: FutureEffect[TweetStoreRetryEvent[AsyncUndeleteTweet.Event]] = - asyncUndeleteTweetStore.retryAsyncUndeleteTweet - val retryAsyncUpdatePossiblySensitiveTweet: FutureEffect[ - TweetStoreRetryEvent[AsyncUpdatePossiblySensitiveTweet.Event] - ] = - asyncUpdatePossiblySensitiveTweetStore.retryAsyncUpdatePossiblySensitiveTweet - val scrubGeo: FutureEffect[ScrubGeo.Event] = scrubGeoStore.scrubGeo - val setAdditionalFields: FutureEffect[SetAdditionalFields.Event] = - setAdditionalFieldsStore.setAdditionalFields - val setRetweetVisibility: FutureEffect[SetRetweetVisibility.Event] = - setRetweetVisibilityStore.setRetweetVisibility - val takedown: FutureEffect[Takedown.Event] = takedownStore.takedown - val undeleteTweet: FutureEffect[UndeleteTweet.Event] = undeleteTweetStore.undeleteTweet - val updatePossiblySensitiveTweet: FutureEffect[UpdatePossiblySensitiveTweet.Event] = - updatePossiblySensitiveTweetStore.updatePossiblySensitiveTweet - val scrubGeoUpdateUserTimestamp: FutureEffect[ScrubGeoUpdateUserTimestamp.Event] = - scrubGeoUpdateUserTimestampStore.scrubGeoUpdateUserTimestamp - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.docx new file mode 100644 index 0000000000000000000000000000000000000000..eacd72f87c75c1cb100a06d0b3430755e2ab8c9c GIT binary patch literal 38237 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.scala deleted file mode 100644 index 621bb8148..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.scala +++ /dev/null @@ -1,223 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.servo.util.FutureArrow -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.handler.TweetBuilder -import com.twitter.tweetypie.handler.WritePathQueryOptions -import com.twitter.tweetypie.hydrator.EscherbirdAnnotationHydrator -import com.twitter.tweetypie.hydrator.LanguageHydrator -import com.twitter.tweetypie.hydrator.PlaceHydrator -import com.twitter.tweetypie.hydrator.ProfileGeoHydrator -import com.twitter.tweetypie.hydrator.TweetDataValueHydrator -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.store.InsertTweet -import com.twitter.tweetypie.store.UndeleteTweet -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.util.EditControlUtil - -object WritePathHydration { - type HydrateQuotedTweet = - FutureArrow[(User, QuotedTweet, WritePathHydrationOptions), Option[QuoteTweetMetadata]] - - case class QuoteTweetMetadata( - quotedTweet: Tweet, - quotedUser: User, - quoterHasAlreadyQuotedTweet: Boolean) - - private val log = Logger(getClass) - - val UserFieldsForInsert: Set[UserField] = - TweetBuilder.userFields - - val AllowedMissingFieldsOnWrite: Set[FieldByPath] = - Set( - EscherbirdAnnotationHydrator.hydratedField, - LanguageHydrator.hydratedField, - PlaceHydrator.HydratedField, - ProfileGeoHydrator.hydratedField - ) - - /** - * Builds a FutureArrow that performs the necessary hydration in the write-path for a - * a InsertTweet.Event. There are two separate hydration steps, pre-cache and post-cache. - * The pre-cache hydration step performs the hydration which is safe to cache, while the - * post-cache hydration step performs the hydration whose results we don't want to cache - * on the tweet. - * - * TweetInsertEvent contains two tweet fields, `tweet` and `internalTweet`. `tweet` is - * the input value used for hydration, and in the updated InsertTweet.Event returned by the - * FutureArrow, `tweet` contains the post-cache hydrated tweet while `internalTweet` contains - * the pre-cache hydrated tweet. - */ - def hydrateInsertTweetEvent( - hydrateTweet: FutureArrow[(TweetData, TweetQuery.Options), TweetData], - hydrateQuotedTweet: HydrateQuotedTweet - ): FutureArrow[InsertTweet.Event, InsertTweet.Event] = - FutureArrow { event => - val cause = TweetQuery.Cause.Insert(event.tweet.id) - val hydrationOpts = event.hydrateOptions - val isEditControlEdit = event.tweet.editControl.exists(EditControlUtil.isEditControlEdit) - val queryOpts: TweetQuery.Options = - WritePathQueryOptions.insert(cause, event.user, hydrationOpts, isEditControlEdit) - - val initTweetData = - TweetData( - tweet = event.tweet, - sourceTweetResult = event.sourceTweet.map(TweetResult(_)) - ) - - for { - tweetData <- hydrateTweet((initTweetData, queryOpts)) - hydratedTweet = tweetData.tweet - internalTweet = - tweetData.cacheableTweetResult - .map(_.value.toCachedTweet) - .getOrElse( - throw new IllegalStateException(s"expected cacheableTweetResult, e=${event}")) - - optQt = getQuotedTweet(hydratedTweet) - .orElse(event.sourceTweet.flatMap(getQuotedTweet)) - - hydratedQT <- optQt match { - case None => Future.value(None) - case Some(qt) => hydrateQuotedTweet((event.user, qt, hydrationOpts)) - } - } yield { - event.copy( - tweet = hydratedTweet, - _internalTweet = Some(internalTweet), - quotedTweet = hydratedQT.map { case QuoteTweetMetadata(t, _, _) => t }, - quotedUser = hydratedQT.map { case QuoteTweetMetadata(_, u, _) => u }, - quoterHasAlreadyQuotedTweet = hydratedQT.exists { case QuoteTweetMetadata(_, _, b) => b } - ) - } - } - - /** - * Builds a FutureArrow for retrieving a quoted tweet metadata - * QuotedTweet struct. If either the quoted tweet or the quoted user - * isn't visible to the tweeting user, the FutureArrow will return None. - */ - def hydrateQuotedTweet( - tweetRepo: TweetRepository.Optional, - userRepo: UserRepository.Optional, - quoterHasAlreadyQuotedRepo: QuoterHasAlreadyQuotedRepository.Type - ): HydrateQuotedTweet = { - FutureArrow { - case (tweetingUser, qt, hydrateOptions) => - val tweetQueryOpts = WritePathQueryOptions.quotedTweet(tweetingUser, hydrateOptions) - val userQueryOpts = - UserQueryOptions( - UserFieldsForInsert, - UserVisibility.Visible, - forUserId = Some(tweetingUser.id) - ) - - Stitch.run( - Stitch - .join( - tweetRepo(qt.tweetId, tweetQueryOpts), - userRepo(UserKey.byId(qt.userId), userQueryOpts), - // We're failing open here on tflock exceptions since this should not - // affect the ability to quote tweet if tflock goes down. (although if - // this call doesn't succeed, quote counts may be inaccurate for a brief - // period of time) - quoterHasAlreadyQuotedRepo(qt.tweetId, tweetingUser.id).liftToTry - ) - .map { - case (Some(tweet), Some(user), isAlreadyQuoted) => - Some(QuoteTweetMetadata(tweet, user, isAlreadyQuoted.getOrElse(false))) - case _ => None - } - ) - } - } - - /** - * Builds a FutureArrow that performs any additional hydration on an UndeleteTweet.Event before - * being passed to a TweetStore. - */ - def hydrateUndeleteTweetEvent( - hydrateTweet: FutureArrow[(TweetData, TweetQuery.Options), TweetData], - hydrateQuotedTweet: HydrateQuotedTweet - ): FutureArrow[UndeleteTweet.Event, UndeleteTweet.Event] = - FutureArrow { event => - val cause = TweetQuery.Cause.Undelete(event.tweet.id) - val hydrationOpts = event.hydrateOptions - val isEditControlEdit = event.tweet.editControl.exists(EditControlUtil.isEditControlEdit) - val queryOpts = WritePathQueryOptions.insert(cause, event.user, hydrationOpts, isEditControlEdit) - - // when undeleting a retweet, don't set sourceTweetResult to enable SourceTweetHydrator to - // hydrate it - val initTweetData = TweetData(tweet = event.tweet) - - for { - tweetData <- hydrateTweet((initTweetData, queryOpts)) - hydratedTweet = tweetData.tweet - internalTweet = - tweetData.cacheableTweetResult - .map(_.value.toCachedTweet) - .getOrElse( - throw new IllegalStateException(s"expected cacheableTweetResult, e=${event}")) - - optQt = getQuotedTweet(hydratedTweet) - .orElse(tweetData.sourceTweetResult.map(_.value.tweet).flatMap(getQuotedTweet)) - - hydratedQt <- optQt match { - case None => Future.value(None) - case Some(qt) => hydrateQuotedTweet((event.user, qt, hydrationOpts)) - } - } yield { - event.copy( - tweet = hydratedTweet, - _internalTweet = Some(internalTweet), - sourceTweet = tweetData.sourceTweetResult.map(_.value.tweet), - quotedTweet = hydratedQt.map { case QuoteTweetMetadata(t, _, _) => t }, - quotedUser = hydratedQt.map { case QuoteTweetMetadata(_, u, _) => u }, - quoterHasAlreadyQuotedTweet = hydratedQt.exists { case QuoteTweetMetadata(_, _, b) => b } - ) - } - } - - /** - * Converts a TweetDataValueHydrator into a FutureArrow that hydrates a tweet for the write-path. - */ - def hydrateTweet( - hydrator: TweetDataValueHydrator, - stats: StatsReceiver, - allowedMissingFields: Set[FieldByPath] = AllowedMissingFieldsOnWrite - ): FutureArrow[(TweetData, TweetQuery.Options), TweetData] = { - val hydrationStats = stats.scope("hydration") - val missingFieldsStats = hydrationStats.scope("missing_fields") - - FutureArrow[(TweetData, TweetQuery.Options), TweetData] { - case (td, opts) => - Stitch - .run(hydrator(td, opts)) - .rescue { - case ex => - log.warn("Hydration failed with exception", ex) - Future.exception( - TweetHydrationError("Hydration failed with exception: " + ex, Some(ex)) - ) - } - .flatMap { r => - // Record missing fields even if the request succeeds) - for (missingField <- r.state.failedFields) - missingFieldsStats.counter(missingField.fieldIdPath.mkString(".")).incr() - - if ((r.state.failedFields -- allowedMissingFields).nonEmpty) { - Future.exception( - TweetHydrationError( - "Failed to hydrate. Missing Fields: " + r.state.failedFields.mkString(",") - ) - ) - } else { - Future.value(r.value) - } - } - } - }.trackOutcome(stats, (_: Any) => "hydration") -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/package.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..f8e602bdb857ad839bce476401e0c68044bd2789 GIT binary patch literal 36843 zcmagEWmp}_wm*z(a1AcO-Q6V+++BhO-MF*y;2t2jyE|m#?u6j(5(w`8-1g3_`m`sdSUoMaYZGH(eqoU$zkS_j5>0?F$1YhIlNmScIS``a=8 zaE&SDP&nrJjMQ6SlI1#~4xc7!JqgKU1A`2$dZ*rB zG}{cHc1M)mp2z&$DefiwrLvwEn5i{0ZPJmx1@L|iH$Kyl{%qWk(C1w1HqKD*WU1j; zx7=Nb>M?)}K>x90*Tw8Us>N{#S63Q!rKY=vX&th246q5Nu9-f7&eD3d7sxqU)@1n9 zrmGX9?rU`zBtzhJD}kDE)D=iaQ%`R21ul)fEw<7p__p`f_!=*d_eC zHvv_*GEePAyROTDd8YD=$#i)576UQ?oqnp59$TWFFAGpu3t>(SMpOo>&AOB&JJ$)J`5mnLFdA-m9O zx%x6q1KWp9u>4jI3q_zRjn=3Bmv;$P8er>;!OdW-$dgng71YGZRJ? zds)$?ZhfR?6g0yx(GjF%=^+mzKFDAPEVSNmaw*u3W^s?NZx`6<<}kRCtP2cYItZ`w zG&Vziu5dzr0-_Vz}cuhrvIzL^Y(Fc9(d0>bW5NXI-wA zm+_9kb+LtkfI$CyT|PQE{81M5QTt_9^tML^7z39GD|j&#{DiP^PZN#Grvl^7;nmQY348oY}@iVi;CpUg$2 ze!11&^_?XtH!iGwRbf?%D2INo{#5Q+GAYFMe*5}RCpifPRT}E!GY8D5XSo&aVwg0Z z0vREjar@cWCm3sFZk`K$HlN`tik#sYDKj8 z4db2f#FVg9?PyK;hb`s`a-pgLns>>>k0zvq45oA^TKoGF^STC#deJ!9Tm%?yRGT5d zR>)ld4eS>iA$;ZcZn|5fx1R`}(V5Tf*!DN>U4@Vj-QjqFE%k^bDaVMm&%;rpBmph9 z>nTaX<67(Q1VS_LG`ww<;#2yTWkm{=-nX}6vU8IO8GeNx#xvYFHL)c5m zy<+j^dd6}Dvf;7<&!+~XZkV*@Pyw4JR$3q>B_)R8_k-?IF}Uhh)E+a4`kg_vG!zzs z(flIJO1G#2GK6EM8OVzH6A6bC=LfwiZwCU$kVjCUV5)jm6NZMP;&b<{5~iSRnvEq9 znJ~98RXiwU@pBF7)PG$+cQp%@!sP1qx|ojPX$zp}lQ&5)uv&q9*F|8`&v6Diqk;>F z;IML$Y`fIy%u1G9SD@v?QPOKOQq4oS^t%};EUP>gjDJ;nsPmDdBj8D`!9^CE*yJfp zTa?(z%+b+A?<8jxe?kq0oqwBXvuYRt7o>xHu@lIHt2bio*Q_9-(h_We(t`5bqDX&{ zc0U~!(AgiOj$R&RN4t_;Z(gV4vpZU_h|ROAu*^ZV=M+8QCXs%&jDxEWGudr@^U2xD zi-#TWZL)(u5~iXmGj`T)7XtQs4Jm%gmP`u@L(R&D?9#F{!oU%SfXks&L|Qk1%TDFM zufeEy)Xltw2)r#tW&_HwOobM7Z!3GE6;xdh>#5HS@ih5V{LY&@Tk9q{P^AM%{wq z3d%}gBDyU@2X-mYCd`s1cBZ7tnE2jgz-wA4mK^=R5TH^s#0si>{5 zQ0YM(AxgolgckffbGAj46!RN)ZjBMO_IDwIYK&DiZ;RC|5Ne3tJWJ>3qAXWdI|H8Q z`5ut}`IOlE6JoN1r_WLF^hpGsKL2=1{#^Y3{;d4D5%?me6vT@E`Sb;;CnOQO$UgGz zuRLlHy>xYHjUl%_>J1!ngBjS!-qiLC@3`S=@4ae zOhHSul%uYC84WR;N-{+Lnr`m)1wnCzspHzDPZj$gz9>8))wWXg)girW%(WM7#i@!e zIFMFL_*}=M3#B7DmGJdrXm*y17l`6~ysG7*y~1WgWHrsXdqc5aGq48(rgmZ0*npCY z%6RK^|NHfw8Ij*JydjcB!z__R(Qd$#f_^ln5sc<-26QjSow3!(w#A$&grs|?M2ZA^ zVNHhGCiF!yN2C}pRb84|uuaI@aT{LitEn%2UW$k=-tbT&+rm-BL|c5s+BPbqTJMj9 zdd|LL29VL%;W{ssXzm%W$nh>+O;yA2-3R?(`Dd=9%W(xFSs)+`HDDpo{*`NI7f)Mr z=il=Yc$1sBC0*y+*_oGb^t59a7Ys2tVGohuM)c9UJ*)PVLxE%Z*Z1#upJI=V{HVx9 zNi|e8G(VIj)Cu%t;VRSZYGo#>n?FBi`?cAg0*y#x(w|ROd3rlhI$HHkH6M$|PcA_K z;4{9D!2RBdhwe#M^76C&^GUkM{2<`vKKAwgasD)>Sfu%A+u-hg^&FHk3wqq2{&@`w z4c$KUe6ACGv3vct7QzBtA~j4dKAY^_4^7$K99=$YE`J_9x@hoRvE?ZiA+6}{YFGNq z7Zz3bdSz9w>-{*pJnH2hA@b^=4d}(V1#MsMU3)5-^fBdZYF(+mGutwxWB=ZGVSl;RVx$@>wl>55h+A-Sb;PJz%FYotf z5%F=MW34st9?8y|U)qlZDE!Wk+OPi=`35w7esbhKx@}#5kN*J$-eWP?v_1PcCjId& z>H5MWjhJWjDiY|#lecE(y`J3YOWYf>Syz_1FiUW z=LEudi6Ct1qxMV+t0sZ^>rji zwJdcWEAB7H0=DjUUTbwbrLzb-zUfJG-_t#GaeLjeQPI5IE$_MU>?8A)p7+0k!icDE zOk_O`S@Q8a2{n<@wh-#RZht`eSdO+?g2tvw+M_{gQX$+Y=^IAp6E+QWb?dkqJhtkm zK{8ao4-cGH2j*>1CS}vMNbb@gktl_86c0tlz#G+>OaBzzf?eF1wmT z5zrTXdw0D4+$P8h!}sOInQ}okE>Sg0#&Dd1&a|i zY#i&d3)*&DiRcB~&>s*~(~+oPy7wg=$qy6rgBcrjRK??#TQ z)kKk&+UUrT?ba$X^JNfJDH$*W9TJ-T$uf2f1Y+aS3$ohELpG=YkUG4>dZOrx7r5xb ziEXe$OyU=~ae;Adumw54J3oOtasSl`v-u7HDfZX+szw4TW*8Pv1KA9E&v zL&?D7=>7=R1*3(4asLteClyR7&8aoH$A1x=s!)Pkkp57S+y-lw`#&W92P)3%q6#-K z1w88S!rTbKdQ{QDUa=c?n8=Ws{!1bg83K(bGQuCKXA<2T(c6BH`gc=-vqZy$8>j=z zFpFPOcb2S!MAOyx^d8br$4{4Z4wTgO0ZA$#h2~3KNlTMQ$GTrDmfnJ$Gm)hB%$_4? zad6c3g)vHqSugqNw14&S+O^fdzTaEysds+NE%(!c$EDugz;t%?rbqS9Sz)F9-M!(w z&AaGz5rgJyNzxemE#^hhB>k9Eu6TmiM~62OOrDd*=!`3+#2M@TD`Yn(K(~bqca;9+ z4raf>Y#F;Fr-c31UwsjP>aBpPSoBg`Us}PQ%X=rrL&vvEXX^rU({?-{mXxFYc-+a+ z9aA1;{WUfPHxjex6dG;@xew``2Axl@X*&1KOgtgmc(~xg=@}X zHFMWYYRkm$M!rR9EhOTCtm`PpTVJ|Y;|El3=+%3jl2+CZk3E(;`(l!BbH4nzpyus# zaaa2^fjW#Ec2w5j0Sz-quYtQ+YBZM~`25m$R;08)%D(1865b{|lCJt;G=1YKp^OKX zPGasxA4(afS*o#&RB(cIB|w)j07c>Y9C@bejZ7~X!E zenGeHO6^;7bWOjrdu&$QVHSDnXh-@WAm2Z*wd*Ixjr*R(i3itG*mGH%$e_cH5h(cT z?g-4&2&Q3iw*uuG6M!t9rtob(zmNotE$<>IzUKfcf1RREVJM9r!J5@!o@wsCeuq4r z$Ox%qVpjQ(!LVp)u&XaYnK6n;-P=0oT-C*&A1 z!#oerm+y20ZSqk1J{7&2=RB1%t-_0DYyY%@!r~NtMq!Emyw`q!eYmwJLCT}@KA-P1 zvO)_pXSYkPERX)DidbYihbqV*XB2cFtC8zMx*`?@(54)guMZ*{@kc)0qJoiouTUMV zaS&NC7RI3OXOolO&QrA+-{PID?GwSmb-C4kKxx^groi1#$8_vz(&qJ3ir1I48PKHr z!`0x$%f&#y7wFm16L|ZQ^g4I^F#YrC(1G=1+e?c`<_*i!v)_`P+rVv;e~LWVy6yX0GCBGewa5Ua2cF5YCfFPe0?jVbAsQizbIv3p*)@eB84N@&G!fjoC@mc_X8DA$$`g zVPj756$ZiP>&eSzd$VwfmMhl0s5F6r%y|OMEs0$kRLz*WeFmsnc&!Sk^E_<)%CU?q zPfpI9MI7bS$?B44zS@%wCTabP;fG7jT!6JBWc;6p?AlfXfjPTzN*S-Ui@2R0N`^C( zVkJID8V<>uCH`DQaC7MTBeZGA?3z3Gk=D{f55(&VSMo>%da1;(7=<0KTcd$G9vDphr0Pn~b!bBCBF}G|B_>1wS3RvNPP6$%1~=?PBNro!wg(Dr z7YSY8M;P_hVt&Dh7Px2r~9!|clas8R5h8W=7c;6D;s zq+y&QOy)R~gW>X&a4cOsE-k}LuO-R#(a?zw@XI{1=je-5amJ^ZC#st?$Wve>-JB<; z_kqz7d!qZo=M1$chXasRO26?m@4a-o<>N0p6xPv;6^NFe)E=vpMZO`(UTs=2=BEvL z6D{b?me@CGm??SaeY0u&<9qMqdebu3^66>9e40jY64K|_yO)PKBD@MYv&IJ$7 z8jX)!`ACZD@5(;$^DdOt9BK9|o!@5ID!i-ynG>qQ;k6+-c;D}p-<$UBW(G?+WI2kS zcPhRlZ|(qHv%ke&gR$qF8`Nwv#WvS}J!|3G4ZSR7tTF22Jp}sM|NADwj%K ziL1DxKl{UFC#;m}v+04?y<;o?uhi@El!GLS*l$3HkP`NW?ga=UIMIZ71? z(DbX`NnRm+ufg3&a=5Kv*meyrf5Uxb?`e)wx=!&98D}#DZ3O=-BpYbR0<5p z58CrF1^4ivj-01Ysx}92-(eC+%gU*`wUT>JFiJ0yGgVbQ7|%BrcZsd4b*(MfDBxc& zmJ;6{MBnmdy_TWc3E^9GTNK*o@uyl4)%6Gz1a_*pTHvw+=2u`6PHQXD-hUp_01X=_ zFkY6VU5Z7~pPK3m;dn_f(CC*kL8P@#SNd@dX4?alXA@DTrrE}xm(g?BIP3AF;85Rl zq+F-Aj#Zv$`uO4qI59BD;}n#X#kMcPtCXrJIo=fYsy92Db1e;7o0Y=0?Ov=$%Jp8f zA^jL1)8QYof1g4|e%-)A$4#1A6Pd1>$1s%&Bb6yx-8YECs*zyt)9v}7vU^L9 z&xEqWZ#o8k)4AS!GH_XWn-67&s`}}&X`J(CI^;tI?S#4C!w*O3tIcudhQ5dPr9r2LhVB+!@Y-l=Rb6URI;96`d*E~$ljFk^hQCNzhqiM|D)jTYC9LrjyRoeym92WGQ zzd9#UK*eb3omCHS4YxUf?|B7ZiSaRnH+gOPn_IRB*QwyR*jVk09_}5UzZZ{hdLTu6 zPrCFY|D3q_0d+@J&iQ3!VG&kyI7y>2D=rJlE#1!UBwp@bOQlsm3-qFQ@*p8iiiXD| zRDd$fcH}0jd7P!OZH#hy*wF)*M-s?6WBTbpQF~OzU(OI>cgqBEdo2UWt zO*Y@qBmXV+p}`n@)zKBs^@p3t@1VsuLr0|{3V132a5(N8U+MNg!b|=NpZRzA!SC=O z67lvjU+ydWAJ7+G*3Z*YGwJo#O|DYeDlD*V%3WB8g?y4|DP?%q3CD4^#erU)?a@C< z@YWW>l&h`%Fx%4!1KP55sa-Ly_bSrt?x!qgrY2TT~ofs*J^D62B=+x6%0_xW*ZyDc+nb$02pGg^2-2e~c-bUBD8hAHK9?3W%=rGRq^A`+Fe8drMJYk6ycqzLyJ017*ONf?b_m06UkpEmu+ zuSBaWCRxmzm71d^_1Dx%S0#(AArfxD?~T0D{X$3`)IkBd);8t>;S^Dp-T|jZ?Cug-DD6^;g_77>HE|w;XBmK{AF4bWe7c!P6k)n|3p^#!3-WJX< zXGf4wzvpR2D3S9h*AP1VC8;PS%I_V}LoOh4pevbAK?ZA-*eyyE^$AQB7)9#QG%zQS|CDrS^~?Dh2Xc6y^SqTm!oRIPZCXn7PG=mPM0?2MdV=!zA=fb2 z#9D6C!kJ78QfNW>>FZd^iD#O&ftuU3?O?)V#FCGK%Dl=L%Ds=LgJuOfXI6SJ@0Mkk z6pP4A@9W8y!;iTg9?FWOL@%N>OS1-qwM>;nFZhIfs$wW|7?fe!h=B4^qQMko#0E_N zHityqs36r9gC{f=ZEugEoN}gF?u8ISg9Eut_kU)Sb_gcx)FbF<=x1P5dh7pEJk|(* zk*aKN01IhWiqa-AZY-Q|r%y^-l>_sc`6*Y@t3B1a*j0M7+s&slXQZ$28%y6B-YAzE z=pq$dFf+k40hLwXXguxE6Ipd6(mtEyki86-zc{u&T-?|AA%C3lZAYe}B_WJ{Z|F$b ziaMYbbVn0fJ#kBgT#!chz}0{dyP{`wt69}fp4^=yp`jrb4DG=d226#_=$Ly$1)#O! zIv?x#QiH1WIWfV^Q=E&hl~I)}IdDjI;BwKpTc`rlX3JkDK%N+#&wm)20!$fE%dYW`yQt!~}dt?na1TxbzsrnWpe zA#>ol&zMz%O|AktI$ciU1cVdW`)tU*t{8_DTuH_v2FA}6^_fEz)p4nO^Q_)m=Gi)L z_`X5LC^AZ~Lnjh`Fis<0ET@X3%OV;zWjnhx4e!UU+gveZq|Q(b;9kOpiib)SCv$>O zLy&wE)<1+yfjfY35w z1av68_hkO2k+M8ZSEXn^SN6B>MWNrmyF<0*9et0@*v^RDxQYJsEj0{=1Yg){eA#{k zhV{FI^edY+VWl=6M-Dd)OmHil{!Qhc^lz1Fqzzz|z3{(P!a&x3H5qLE>BG8bCV^*% z6d(iX`UpJ~(C`W!7C>xD#uTP4uciG)%0eJs2M=NB`ew|{_xL}E%babcFhyF+)|J}w zyH&tD3t(|)L5R2R)b33{C~;v{R#%;hu}&A|kMA34*k4xO@rdoSqcql!gJcKTR8Pwg zMcfvyT1)uTJMh&#hAK)+I_N8$sU>3Onr!9EQe{=S`rZ^=|fH6fc(zf2ayTMYcBwU;q#WLwtEKm%?}rW#_%n$2e+DIu?=oHQUG(vVJ7ezurutfeVtb~Lfi-&9#~01<)~gM3ze1|mLgOjNS+b8tuz7p4q+Mv&xUMu&HBVEiPU(x znh(D2+7LXkk2Aqd0Z>0@owE8?Hr4MfwWyHol~{lA8z4C}xIhfv2#nJ&Ufs!6t#td? zZNSF}iP0Mn78e3Sky?t%6z;`jLHUxiRz|?Md80bfgXuwO9!S+v z^KL$h4J#5?u#X{>O522&5u?tb`J-%l?X;z~NzU4oF?cIpFXXLebz}Wl19Po8YmC^u zYJr>F)){vXum9es#x;n_xOKCSQDjS&wk%epb`r?VIt1KfX+YX`P9y#pPI zU`0}TglVD5)$}=NQq@?T>1iJM!!&;aOIalQ6cHWqX7)pMI!m zyf;{Lh?oN!VUEk{J|j`2!R1-u7=10h{Y;)V2bo6weMJm-VpDDkgK%{Pa*q+?RG51j zkSON2N;6x*QkV`aLR^?oALmh=E+{UG`PR0{S@|rikT%`$fFsF?A~`+cZLV|JUKdv6 z>R*J&35w5tTsq8wh7x){p|U_%NaX4~|6Zz?M*a3ya+)*G3aW`i<1%`h^Ji&UJ~Mz{ z!KNLMdBR!g28*EpJ=Jir7Le?9Dw=0SoMQzw-np~i(ZnASAga{q%|IYIZ8i=NbSX3=6@_d>$Az-=%BN6nBqlj6%30Z#QdYPom-I;&{!^ML zhh$gaYcfA$kDJ%kxA}^HdDOiv8t(ra*roTh*&ilXqL%tA&^(9}kB>ASV5zIkh7Z_=|E~ z`10=7;_*IY%L)w>^p#Xn1GWr~wyq3w=q$rtvsXX<$c@=$#fNpHk52a8*23sgA96`^*=M{KyR$kE$ThgwGjZ}?`!^ z+@1p)aym9(3y+712as7~$=kXNu~{#qg&*};l2aPL0U<9nXV0MAL%ncWy4*{!3~5i? z((lLdP8^u@iXJQo4cGZNZ=fVdL}^g_09f@Z1a{RhZcWVg77MtlCt@;h;*c1J|EPE^*;eq&AtUJPro)a)Jxhods=awBO7u&K+DM+u=Pq2O zBfFDJoAzhU9$^uw-$Wgg)ozvP6Hg4*LmWPI1 z;Z>91%qi--=r5jZYHZ&G-#30|Y>Pg9dg|Kz(xvm?rJBt4`lX7;QQ187v?L-U`d9uO z;7bjTir70Zo_){ke5WnKvQ!%AY*zZ(o#$XxXlet*u4HXLA%tKOzD>?C8%S1Ar7*n> zR%~?O?V*PM%)NUiGou>;)7KZ*OeA5F6-t0%9vC2n3M{6C$W%M}`A}vrIZfOObY;rZ zSg#(Jl6#Wjsvs~~8@g9AA_aei-q2MVq(IIqEia>6g*7Nr5-d|Jn2qP&(W&I{_)^;# zC>2J6T5*7wIcHj)JtsjW`~h8k>&PR#I*G&4MeJb@UI^zNz36IX7;6zfhdsMv4KVU$ zo^ZcdJi9bR_=>2c8c(?tZFWKZ7l-SEiYw)~A_wKVb>_Hx^-AdBwl!?$g~XEWwZu}% z#(TOzBp@-%U856r8negxQ%-RpX-`3xfCDWdwEEff{G&qZh1d3z`WZ*#MraoF^)(dz zT`oa760k^7WQ6$Z6@OoXPq{1idV3&gS!_AZ6aCFeS@yUrtjGrp^|K?d?&@ePR@d&w z--4gesjpY~oWX(v|06gsyA)RBPr=>41)u#ETt#@~>c)1jd1Tw+4J)Efs>N`ZL^^C+ zPC6|A7qCZnby865zkrp$xtPV^jSoQJJY8J_)r#8IctvoY z>DV$tD>pNte*j1KApuhor%E^8!-}A&!QedMSGzyAc^jN{+>0r}ibQc+EUFdOvx&lr z__nWqp{wSZ0Jo|k0}uF=jaYKPu4_v-EDx{pS9$?E(LQdgU;BwmHs;0F552&C24|6g zRodN?g@L4CX$s(!n6|AMce9-NgkGY+9kn>q-~Gh7Qa_XUIumq06CA1Q~yxXfr zw8_z8E`&TYT7b~UuDN$rVvU@G`fEg1hv6g88aTE<2Z##D-OqK6l81S{+!0K zFQVr~Ulx&BW6I@Wc?|{YzCjFj4{Bf$onjH;33tbA@OGaw_c+ei5smJ_Ky;tuPN+G6 zzxel|h&!x!cwfQC@Dz?2b~);s(|4V31th@oq6*6=Y9H0>aKBTt$Z?}x7`)~L6;v+c_`Jh90p9^<8Zmw1Qr9dxe zs*l(i%74QH*=8^l%aR|D2cg?>`*@0!ckK(iH{_sWQYpk>WMu-f1JMd~>Yw!coPW_5 zn_3EPz=F;1ZMFbFk&vLhe$M|6r-L5czI(pHMI)m2ha%`~1G;-cV@Ddr$s%hD!pkIl zNs@lYl+EacxUvd?pL1F+ee|>PS)`&9 z*LpNC6`S1mc%{Xamn*uXw9gi_I#@64)r4Gb#1h=awmi;&rvMS9e1Db;=T)pw{NtNN z=GpfsuOn#v!^G}g6X|Luo&jk56i54@pG|hTFYiza#oj5knP9ylCwx57fU#T8U@$*7X)uf!yKZWXRAB;bEVe8V^&&(2W-1&@V~+tmXj zO+`|~fp!VSV0;RoqL!Ag$d@0}<&9(mslhw4X)q_N+1r0;(XUF0<}xf=9oXZidXcF4VdRgM+jJ1YuPg^0tQB&rhM2f z0i0$EVRm)wEMKE7e@QJ==uv4>PmV-9+j&;JS=&q2e#_15;0ONbX%z_MS?!h>hX0y$fX_QMn1na$h@D^cN<>5iLXgz=`cx z)et-3cW`-Rs`+;Jih@UX({7Dt0mdfg;6eh>l8-!vz17%l#BE*C=7tFGZR&wPsNw*LQ6l*4qp|5ClR)(`iM5I3~xnsugf zZb7js0eu%CJ%;)Ly!xjOS;h67o`q~?qHt>WMv0IW6!RSMTr^5C*g&K-QCOBU>WoY$ zun2l}d{0PA5!g%3qhKVeXyG5qkZZd^IpQoi;>ekV4{$h8HnwOB#a~#phUQUmoOskb z!h>?4#9$3_0&(J9H}z)^bwg55;hXL%=MZr|xMdgTLirr=iG>)7hTt|~-J;MhO!TGK z9udHo%3%|XZtIRMFGW<3jGr42DkXtfe=hiLyT@>WS`qw?DpjCdhsPd`z2Qxc zNQbUkf<;$yjBAZXcb9)}CXCy0sz?^{kgY>mzzY6t+@hCaZ%!jWUK|=N(%sgDm2h$a zxk3jFr1}>S&Tk;Se*@Y52Ac63YX{2YzF5v7&_%75nnw!S;>G=eAXpBbTO3(zvFO0x z{U}sv7ZFpXkWUQn;R9PbfP=W+J)hNEA3qwKz(c!@ z652+D*kCef1t(s7SbB(4)gKW2u0T{KSFs?cNuxvv9EVZ-K>nu#V>FtHFVBtm&Kwa_ zGT=<~>lG_MhPQi>Fjs_Of4C7Viih$ceMb%}j^s)K+n6bS433Lkod!F29U~xzU3bG{ zCuWY4MnVx}+zLo>&88^b4@luDaJZj8Cw)cx=ed1j&%kLuE(i$cYB&gjf1cadvU2$( zWnp1%>hk9ieqV!>eCfL5$9tT{!+xc#WC-%%QQrwnr~$*#?eo-|JK^&38H2Q{gu@T? z&EQk~qS^kKL$NYL!N96;vuMaOr?x5%F$1p;2_-OxH`?8QAlMybcv%P|(DSdTs`UQZNp5mUal&y(2>TbldJm@}Q%**@KIe)zO zv2~ehU@!9eG;;O1v^53A$c7~{^zzjeE=cy`*4o!<`zD6FdeqhFV%p-dZh^+nUWBG| z0qE)d%x!h)T5II1FI0WwS7djeVgdB?du=lCbGP1J9`!Bgyk~9=I0gE73LCYRe!KC= zFMj2FH5qkI9Lx?*4{c7__3~?JcVFIhcIr*PKC!y?I_6oNOGs4Om!>D>y{s`Z3e8%| z30>}=-|?$LxmbDGK7Y?LIVezV@5sA>AKwr@%Hm;94!HE8(K+)?I!d$M2WlQIcLI0- z)$?txZoaBK;hrSN9wCzhKODa2#uKt;qp3o+sStn%flXym49*kdKc0}N7G4^moN zO3uV6%}jhP$wX8UQ0sTQNe`t|t+#7Y%gSCAjXAaCLD+s=M9H}Wx&@JTWUqFGfSV3B zz)kqzCXSnH5pQjxmyY{QnKxXWRX3BPOV@TXwHaAAsURcV<^KKSt?Qr6yRbY(hiUg` zH;$9;(-MK{FE#7-syBM3qmBr+QY_UUwkepssg*!gJ+756fg^ z=kVOe}Ok2`4$Q3UlhNJYmbQJ9|*;)k=~F;)TUg4 z;;q22haA7tftm|z^7oSK(}M^V>tXWmCD_F6`WWqiym2;C+5~~BrVj3)TLO2G9fLdK zz#TQxEwB#%h9H_lXoh%BBkZKw`aS4h(Z2_IjN3sH6_xx(Y4{EQ2g=_E{2k?gSAoyf z4D0YUZwZQ5e##z_2+pb*0yQWY494{jt$#^cf;wcv0Dy-ff`{4sHLMF@kG#Pu)%Y7{ z6^i%GkKZ_dAMiKNHPQ{RGkO$j;9;2HVZW`R+BlWVKA_%QUc@|x?2_;5Q9o77CbmHU zeP;ZaM3|aKub~Hzn6Nb`C+Urow@|K(>+hWgZ)N@U0*TnX%VQ_Y$2SX0L;!E1Y}Som z_n%HecXu;KdTz0z2xUb)MuBT?ylxLC{H;E(`!+ugZEmPW`fope==9WH-XF|vZ_elY_*EGZXcnLM9r)(?iwlzv6`)qUlTT!KgULz zRlKw^w{Kow#QOdm-k*IKz28~9da|k=*LNZgy9`llJ>kum@WDuZx;Ah1dFE^FbPq8V zshk@%xY@Yw9gZDUO1JyrySC#$G41{(h3mxOde1H!D0x49I+-HSx*~o;IkGZext`*? z{OwMuzq#_~@DG5VGx+^=IgMn(Z#gZ-^d#2v^(hLLJTQo!#fB1ERe@} zpPS(ao0G8wG#H^;W#j&^=PEFWj&pm2u_^|{6$KP)p(rU)3JQ^X7|L2%k{vCfENYyf zacl^deZG{T%y{n`T5lmP*qqJ)-W0-z(33!?%%omVm12mtaT52}o6oDIG1o34NnBcCVZeU53;q z;drJgG9|3gt$xlKimh;6TLkKLoxN0a+d38z-p@&Ydfw*G^fXfH?$}Nge5oBmadles zxqo_!l@dHe?lm;$Of%CwoVH*-Z$L+4Nw zvLJFA;}sf^f5Z?I3vRhaa2&?if+C+qP;nWJsa9iyzxMbLB;xj|W$rDZ#rmb%a*k2Z zpx`t}xxV*wn&`6FedOgsdjV)WIjiG~Gya5W=jFt_yQeoJa0AujZ4V;$(M+wUo?x~| z^tru0>Oik!ozR+#{)43A>YT^VmNp8YQ+zWXK7~aGkJJA*tdrq3Y);{(ipjgr6S4=>IvaHGVn8)eSLQ-nvxWV}+BMxIo zcV7B{;_amWN7!2c$FVIRh%?|W~* z`~KbiV?wP^#3(B>PxqNR)pNQA7H*oVop@K(0#fXYP2>ZC`@kAk-Jpan4jGqXYH%gf z9cfKT4-HQ3Nq0O=>6gw(s7o>oo^K}e>O_`q+0uL9xMF>Y(B|1YX+L>QY0hkmt?|0r zcMIYS-2E`?VYX;A;(>i~Yseq;jLkOxHu1^AO>v%4DK&rpYV{UL%^xt1f3`x6&0$CB@Ux4~*u(W#aCyqh z)YHSwZdCKp1X9Hh1m+l!`UGfJD|{7LbY>5@)cp0uWAi~jYyy9Q(Dt!yTi%3tUXJ-&S=w8iL(E6Uujg)rj#K!2J&w0$>Tfb?bLGrqu9-=jN zG)=gf&Od~>FSK`79KAi^?VI-~m2wq*H|KA*J~QB3Y8q!=EQg-h7Os6axvASsiriv8 zJw=1vyHzC&P*yOw!Y2OO?#99E`0n(>|CGJQ{>yla(05zaWKE>dHAk0+;(gn(j$4&c zLieszK!cdRNBMcQJMpBPyQ+_F`(w7W8uv8iW6Nhk$a=A+OHYbgpy@c@=iXZ3}vja2_C((kTr&p z@JT+L;KUc2EF!ydWb6w&ZoEA^{Td(L{5jf&pZH4@1%2OBK5Cqm6^bfDj+_)GOy&~_ z)q!8yJvd5;nHh@sND~pRsqsc;}u z?`>I>7pTe1l`ci7#yz9@^b;Se0F~)un@2rqAPs&YqnO zF=yoy5E4zAzit(@@dxbW4!u+={l8Ubss>-2tGj-?ntym=TC>eXKQq|Mzw5W$Np`h- zPdsZK@R5eQ&e-Zg^?Pub1l$K;;R`%`6X2@tgWh!0sIrQW{O}M%KQFSYdUPRia#- zyu^q5;}BW=^0j3CJMA}9ql=!OWSJIZS5jA7)L2H5>QXk!y%bOi$kBjVC4amM@$ZP1= z=Fr|jurz_$PoNA#O51I7v9RDc?=2fwKV_8kpqo8~iJ=#~X+P!a&OPB6M zc4R(2#}N`E9j$45UeJ(sIvI^7_pKYD_^jG~43L}T--oFZA zCr_{KzPm!O$kX=xz=Sa!EcTZZgVVMvQn^54C`@*=@#}A4g;^KI$v z+0YU|fVfhy@<9*rQjI?7?~(P3vxNlXL38KV}XOVW9hzvo;3!TqFZ+?G(-9*n#ePR~(p)%z61hgkL3OyN28wne{?$8@yiJ zj$RjA@_{5c3X{(go87y%#8-$L_|9Y2g(=2g4RM=;yucA!qD9)c-;S1iFoMacYQMNh z?QUuD0l7s}?`)Z}$9|db#vR^r6)^b;wUP(;*vK63`(+N$?k(%&&bl1z_V*G)(zaXt zOKOUv!(UQ=m8^8}MGeYu7~NVkf5o_pE*=!#*@}YL$h75J0CaF)IqoTdKiWIGDZLzT zx%b-&{`&uC2jGaj%l*3H%-P0`g$(ZRwGZFMy#}Y8?dm|bl8Y=`z`deS;CrPYkn^lR z&ZNyiM&AhU(t`X8>I#w9v{_lMp1&?iXP_GtYJG%cBUAtGj3=tAF0HN-I1*dHkx;ps zR;=9YnJDGW()?x8V6_}2^V_~PwLdquU7)e6zdgsHlmkuX*Aiz(GSS|k@38WFoBQuu zk4_J{mTWJs(4CEdw$wYY9}QM4$*nUv{D`rct+6YoSC!S2o+~1o^!dxpDE1+w_L3&F zBmUnMR;j$>19I#3}Mts3cy0_WAr6zHL?Dcw~!YTJ7YGjZa34XVf<6T8)%r`4F( zDKph@4%M&@3WA}nF$kN8#~`KpuDjLRr`1MCIDF7Q9+yF)QvCDJs?|%RW;|^$+UItw z&6sTjT-tx%vr{m4Tr7(HaC5g&@U#K$ol+eh(6t%RO;nVrA>VZ$q@6Cu{_Jj};c1fw z9`fD4rJEC^(9E#R(D-} zRw%ta9Yqqq)!D znC!fM)#7MWi`Q zYPDf>rs8vwzXn^N9f>JLoBx=orkl@sZ?{)40eMs{nLHeGDqeB3dNa2Ae5osP@<56a zdrCxd6*M4yC-VH$m{wPq!E0)@Agk|lr&@_fjxlH*AqajS)%HMfvUkoI;M6T?DVyZd zf?3RsTC9SM2wwf2xDOuai6ARbz-G@n&=Y10s^xr>VkL3qT$yy-3KCUFEr*B z3PUFsVJ-%NK`DVsHl`nvP!N)YVfJ*|fdIoqL=%yr`x}L|UA z3<$z>ABw8tAWxQfVq|rd=h_XlERH;Vttp5Rz8ngAOqW@-38p7*a5F zF$jH@%o#arjaWFJ0C752|K(z|aM&j1L`nHPk9Hl10Vwgtq#In}Fc4BOeh$zp+(NJ6 ziqDM`HmES^v+cH4m^e=>TtP5=Y{9%Xs9Nm7tbw{|{V=FnuVZ=Ok2RFpaHt?S8UCbY zIec>r->FS|GbVs%!~YzbB^?Nm_6L#`Lb7WQF$h6X2&xd6y_>~fva^TSuMju5O!FO6 zuUJ+F#$O^im@&yvxJlaF9r6B~kE|GkF_kNmt`4N+dovC|r&7X~$fp9qIIk(n5dKB1fV z@+dq(GyrlG3`!^PbI^a#FSj3+_?;f4dusa=$=j&jQNw5y zX21L@ozAJ4XmoM*c=gdxuKwe`>(NZ@Ykwv8d?hh-V}DnXb1_t}{&?1uMy;umaiwMh z_2K5EPLMD1M-S?UzK<+N&sbC46i4qYj@VY0I~zhxY#d^I|ANEF!sy1u^hVI=cE>1j zhY^7UCA|J4jknL8C#t^hkHMIq_ zZ`sG9E+6g4>*w7E?!AXe#qbgAbgY#0BWygAlXY(vJa^mLZDkAV>u26BpQ-7sDFyep zYOgotEcYtFctGkWxZ3S5{h*cH$2$6>2a8W%+}}pr-~9P=6=l!l+LG~;7E5YP0p^pM zY&7+|^lOQ?&t{AR=b zTiNbe`3by&>9nsKq;?-NSAa|xh#rT!-mB!0YPWG}eeo2{MZy^_)$Ns3GJ6tu(-{rM z^M*odO%*53Q=4IGiS>QS^?P5FEWP8cjMA-q@>xTAFzN7)<*WwJ9R~grrDKJ7WS1f% ziNSrX@cMcBT*CcrlucAr|D*T}rOPL=>;1-55a!b(6lcXoUJ=(fN*5L4hjN^xry|AS zoQdG|M6zEh>%X3>Yd!1+ zT8w;^%_6(s6Xv_k^o1lq4cy<>CN1H90|NWoOapJ}xoOH3492t6z9C@-vK{iNU5sOb zrZoLu^qe6b!t3|{Q;&l$t{iy_;`up+&dI}_*-fGJR_epv?g2dS(_jN4t)iy&SC#Ky zc0>jODIQ4LZ@k0=wdH6)2jD>}w5yfDt5L&_NxWb7m%VBIk^(yqHM7X2<*>7`HZak# zWtOEuHKUn)2tm{cjXj0FCv5qazVK%ieb6nRU!*U>>y`9cDYUS>w=YjF_UD1(ST^bJ zy1X^>Xe7%weaivCpveh@g)7u@!F^rXk6=i9}Ed}$ZCc!Gueq;+XN0}zccyI~E zHu3vZF$6m|rJp9s5ol?Ce7gcF?It=f$3KrUJ%yS|lCcDiV2W3Ot7MpDIihK>mS0ti zFvsA9E6)B0?%xh>vvlgwQI?{3uKgW%>*hiVblN zfrdqvW1n8}N-2dp)DkG7;4h4Si8vD$)?QLbD6Zvm`%uyY9XT}0;V zg=}Xi(-*G~onRO~N0I{ar^ zL=C*x*cCdteYx~D+2GyNI=Z+&c%S`D*l3%PKG(>n(lc$YyEktAoae3g(yI1R=)8Y> zo7@x1yhLs^b&_$gN@w|4vu_^Di2{ty-zlC3PZ=2u8WCX@d^tgfXNW+kW_j+*Y30u64QEJtSotcyl+KM ze-&^36bF`jNC)YA(46G9BjN~;ogwK6@5ZC}%~3T>)w6%kmY4#Yq7^mI|A>x_;L4}P zmO{i0G)VHq{v^Z+gB4uA1x-IXwg})+3EzH1%PfJZskAi^T%x=sidntUu!o|g|NT+K zL&O6g6pyBsY+?7xVp0+<30v4Q=vLBc0A+1$=vL}7zYC98Ci_++)o4;xKLXD-uPYc{ zp|C3$52xL1m@=;`>oV{*;Fb%FLrGtvWN>pPC7ObU*>4u%@S%`~fb}WghW>Erm-Jau zYe$%D&aH}?66hhLo+aKPqiNlDMtUO9!$Vu*B({$0UBhkZyPo!qxSlK z`>OOs_KplrRB;HzkQ+P~F-mKvbuUPjOA+&z-0r^rL_r{QEJ)1FQ%_|$# zWM|h7(b@Zb^CyPE)Y=>8c0GVg`ba&&k}n5OzyZ|S8esJ1v4dM98)&O++Bbw^VuyG7 zMdbsZZN^3_nn>df$0bB+Z7l8_@H5m(pYLF7&UgL1_{Gl9mQO_;Y&m#ftYi^M1pk@L9p;(_^gV*Btv^XW>UjBTJ&n1 zNRhvEA*9wDj$5M{Uh-m7+F5ZRQhvxyM-}IqH$UT26AJ>04G+m;g4W>OErQv1i!e?U z8|hnxNEbq}2JOiN8;Z#gtv{&sk_?Qsm`x4m#(z+&{I&jtI*gZGboLi&eMo%&e1^b% zHkOSJ4pbN?0gAOu)oz)_j**Fza2 z%0v@8)tE>_l4?6ggGm6zpz6>qhb4>F2WWixT!o6y_D4|@NF{NheT!D1${3t#x9cqF zGD}ZyeaWL{>2L;C2&ge4bdV034G-NAZxZGn$+B=2X*q!UX1o=*`KRePr|h{%)vmau z$9KGZ;FCgUCu$-&jm4mV!K1MZA50dfv24_2S&S=Ek@$x2LSzjUmL}{YIj51qhwzYK znkkkY7rESMY%)cGrirO&s%M?!s5Gmm=oQj14B-KSQX)8w52>s3l0ReH422*VBM#v) z_MMHEWil?8VIYsFF%!CmaYpI4mTWoyZ?bq8Ht#*3KWS+C%hr<6zH``r&OFU3*hQT8 zwN*d%zUKKF$OFw%ZWz7{ZX*H=IylGF?nQP!J-E^Q1Y zWJ;lI6yr~YCxdRWPlEJBorWl`yiZ=PI(!yk>QN!B9FL&J>V>O7SnEy@CFe}cw-lMD z_89@wMJ2gM4Phe5TDhKD0uz=2PDMgHGB4t}QpS(Y{8~&B6Y~hCtRP;EHOgW?edbfY zZC=Em`HN0tMQmJEBEpj}k^UWBB|um?^^BkwPWMt?fsOyE|bl^y*_5tFu|K9J6w zxsa9z`%k9Ud!f!8paQ9q{>R8swzGFPt+pVf1;8gg-{YN)={M)s{P9Xy*i); z@$guGEST<$NPHr>Uya-;^F&SZ)KnhMTI`IVgEHGvSF5M~Ra4L*G4~ad@-M#okbjUj zJ0osg5Y*pLIpaFlbvV+ zDFbW4Q!-}mK+1^)QvXGn4D6qjdD3RgZS{vU47rpfqGKr(F?j_o@_$E|&GWH~#~7RN zGD#6=GDIY-29S~bMAeNpT zh(v$lUJc$WT36N;w#TxkP}b;6FNie4n#Gge*f1!%ZVSdn!QdXTsd?X{^(*~$J%#*n z;|!`vC^zP&fjB7(c7=YCn~b412LeihPb?&-LPvkX_L_c5FfrwdVokD`M7*G$cvzT2o~wxF`{_rE1}Gm2^AEAE`2?^s`-hTRKMI1yWlv(a* z!OCNs262ugyLus8j-v!^38 zSIqeF&HSkYBv@!PfXDn8aG^m-d%po@5;sOqH`}3xr~F502pmu;g&I&PKuHih&XF&k zaZ4K30z*-DOUL*Dn}R@^CpDjYgEce=ya-5%*L|KLmXu$-{{S3In&)xxoFv(?ZM>~3 zXmI8iY|puk4~7@{uA`ck6AgWp@PL1i>e;>`R8Oi5WU{VW7nli3s-w70YP_TPkJLCv z@r=|2$00-*S)ME?l3mw=h{$-f81!LQew?8*=08p`i8-{H0O?En2Q9c9i_2E!B z@4_@OCBsYQeM{Hl0h^vY96;qF$$$@?0innOsA;k*4}=e_#+GipK?2SCZgztBb&7Ns zgf`C66Dh|L3;3My8EA$$$BS|YnN0Z5)Tl{0o>%W&5^TWT-(kth#kAuw{tC;NzF+<` znSsv7pH(_Z1=I3#g>!}Q3tO-XWJYRbB%Q5r69Qc>s5DP@nWuF@5V};oCR(xS|JP@J z_W?`11~CkIK|}u_6U9v{71+?sf5in!n~pU;rX+|V;K3+&C`n(qq~Y3J;JrQJofe?- zHf=@{fmiVi%|pbU7Ml&)P@y*ycdb9<274={=WNq7)AJaXDTGum+&rXCFI8Z$YL3j< zk58ZLu95M?=F`w}Bhzw3Xk=f8D6e*5PeD1hQ`F|8Ppc1^(t?|tU#49ja;*U2+Z`|r zxGnZFIHi?_G*!2|J`3ZjM9)tkvyFZ7JsyYnE8P?;g_guauktjCg1{mWWkwn&2-mGb17dx1F0|f*>nlf@!S1i~Gni z!mqn3L%284L&PY)c^m=113_;>X^=MK-be{6%LMk2cPzq$n&fMa0_XZnUbc~hVk_pu zSS(O|`?8uXzLUNC{SHLrk$45YfnH#Z_zjHmzOi~^D`1lP)3kjvOb8fA=_&z z%e3|%ZgrrgVL~MDhJ2E!z97Z3#G>$njw4KZL(ZMRziUu^SxkJ&M~Maee~WSP`2G3M zKkuF`{w;7hCZ4lWAUyoOT3R&`jEFgWC;&JU@ z{P9A5lx7b(590?Z!B9U7fg{kf{~?9k|Mwuw-;N2t=2zZ8Q)di6CAl95^L?m8{OuTy zNKKa^S8k&a6XDHW8C^7t3)T(vl(yFq!yjU+eyV>Yu@DvlWviUjez3qvq4Ecf{8Nj! z|L?%q|0tRJEe0%l$>j0OTmuCQiM{s2IAg~CS;F;x^C40%Mm72~8oV|$f8^Xi<2wRJ zV-LB+1Sm%d?hOU$s4+p&UCW+(54n$X57~T*83@?6>homPyxtgybh_3#Xm!Xl=pM(r z3CJQhyEZ$}|fc^bOW-F?g?^K`b#(Zlg^2&S%h^j=*_IRg!S;XPEQm*vq} zIZrr15VF)?9dxkFpstU_8b?yQ_xHWZR^5n@U~k-4H^v>BLFJYq<;T5o7DLUdkV*ti z+?oak$EwXx!kOrAk6x*cDY*NqRu*dyQa4H25D-_+GaH9obs(Yba^SG3YdQXEt{H@Y z(l!4D;3dUX>LG}ODA2NSVH%1KV9zq=nf|sK{%!Pzpw(2uZ()PE)Z?tZ=lmuR6yWkT z`v?eA`Uj@;Z3s)YS7I&0yZtAsJDKfOJwvT*<|q1i{u z7Yd{7J}iA!S2YV8P*^)0U#&=XIo8?ZA^3L(kf21J#E=(yyBK-#_yWesz zR!#$gXZp=KV{>;X6YA9vDDrb@J0b%RZC-f5s>Ol?Gy5pvEQ=e!E@B4YnRd*`bj$FN zP3;2`Lnv)$=D%^hh=w+!2g^G0;hl~@pMk#6fV``&I0v@!yr>T_sPOxYHg9`2|ENX?(B+K203?Hq-rBE3#e_) z?cEt@+`@ErEBQ-8xGvTv!oKOn=-~`etJfcoyFvi{!xwR63MMZYZ<>tveQy%DVxMk# zTIOG`ht5v7Oe`PO-gd7V7!vVk6UGuwK@EL4Y6%0upHyYw9(tUsRZl3$F6C$_$)?5V zPt!HfMgUU)YN+NQ2MsYse;wmooxQ2Zo1_Dd9LQ^%+?>}!RYQ@}}Daw8Vva0ubBsHjUX-C0!G3~54UcOZwBnyh*f z*nk2Uk{TG2_cYZRO|gK5uF}H26IPVh-x=&s9Kpeyj(WeI{p;#aM0Oie5#IJJE_Gg7 z1S_L%USfM?UMp}HCBOm6%EaS5l&~v3^&Cwa#07*nLx@?RGulYwP1KtQ&3SxYR$6{m z(jpFnDu6~7QIwZf&oawdg@!$j98uriBUKpym;B*e-5I=WmV_SvNC`X~C#YtRt8AUxgTI{x7N^vK^`7B|4=(DVkrv#_U_##aae>n zCBhpYsK*Zp{l|(!ihFYIopJ%oSZ6k5;2i%UO*R1=EvclUQZG-QS5^fRo#&YEgy$cI z&rpLJMuWnJ=MTII13cW#!g!XT@+cED2H(DRCe6YGae`e*j1!?jN9WPw`E!2-@2zsL zrQ$=1-g%wX;RqOr!+LzW+r{Dx;9`M}7DjTewq>>h5pR`b$(?~VV$GD|9c&OGhuJg4 zX(%RGCf~h;W8bQwDX-Kn$x=#M3366xo8>tyQqm!p!h7AgWlEkSH@IY5c`gH{i;~E| zbdk*yh6DMq$Y4SSW5j1_YvryvFE0y*o_ZrP;nO14gp6hqy2ZuJ$OQ~;BMd=O;-r;o za^k-@aj|C zbbyo=wSxbqBrZ;Xq6rXp#l<}oFZu=xJb2Jhzo`KBXdcP9G{<|xfoF*p@2-B*MShDC zprarQ;(d&`4)#+c8p%IdU?nF4ojDZ$k2B6_(D~SPF8K{ODTos?1XC95EzSd;6g1R! zwA4b?UtaLq4;;fg#1j;<;KGA6$owa*Wy)1eR>hM$`CJihgiGT2UDh%`v430fw$J&h z?H)pK*dtS*=?!w(V}7c1w;bOh!m{H;=OIC*(i*T;Mxh=&qx=N;4ZKCtp53NKN$=*v z>GM1Gm%rXSw2D!FRxrYX9Bm~|KnfNU1mmTNIxmXq->=V-BJ!Lle{NwWB*nL=EU<)0 z-o$;xXHb^9H5W7-Bo!!Oj9Kl9#w`e9U4imK{`Fci!#Gd_=Z)SA%4skFHMFDQid$HP z4P@EzEixas`pg@{z*}544C<`YhH}sp+l(p$x!S$Eq?!Pn*(7_$>)D1W+nvAwYCxRVT%kZ0_nLApDlIf^{;a1qSUn&vuS*V`>+ruIc*#j zPXQf#xJ4g47O)aNDx2cU>)_?H;@^t^r^QJ!*?su%*a6&+!Q8Ucvvt|LP>D|h#ujr> zUpd;)tIcBnd{bC}9r3k3xo3Wwe?=Jx?gMeXar_Rt!lF{Dc`bz-M=Ew`g$fRjPBmT&&nd86&&0cL} zBrGdwYMn_kDPS4AQ5AtDvGFloqGb+qhO9Yl7a1du#O^=;6H?l__N$qA3MpX^gzCu$J^Z}KmH<<+NCj0bvOJU z>Tm=8s1rl^-|B1;fa-W)y8YhHF#iK)dhqNL?^^mdkUbVI^xayNLi@i-u`%4<`X*+- ze*9N6x3@XjG9o3-L=HVzRLy9CN@N zh&U}h9oOC5N~!Iu5eG|3SOg2Lp&*|h?zfKj%Y8vkLq_X#P)`)9!$a@3W{u*+aN5?s z@b)-3hya^%-umC=+~|ONm+Fz?g9t4hCCN)8G)NJ)i;c0Tx@EFUy(nJBW)5e&Y#F*0 z8y(SK`;7OzPP&Q33^qsuT&UD|I7cMGYbs`4-0ue6q-_s?FF!Hs_ovP;2X~^Jf2nBJ zVjUM9BP69z;sjz3r7Olo2s*w77Ot#f<8;#3I|UyZ&1OAMA@WnlV|nHUQ$0IoK{79N zM#p7fARLKJnY%|vJyTHE#dupaNyr~F9y;?J|(h6$8tM6=YKHP}ZA(*#>52VmfUA^~FD)d>!kIZ)f% z3og7S;dJR1gDpDY;>;9^n|t?mP$o0iqPq<-fkH6YH1fbY!>#+2Z$P#6g{WDGHv`e# zrka}@?Xw2Ch_?)@7XcU$O-s|DZJs$fjz3N!C|*kdtCZe4sn z_DBQFp2}&d`fxr5>$!&dVslf{^hsWXdtx=}4?f{vbUN6x#gINup=lNtQzu&G$+S0>)5BIi!bqe1*aOUUZ z!ve-g<-kb!T{+X@M__7+HKOI}5n32pDoHdff(9w`8?II4if64)WlrA-4`S2rxz}=K z8}y&sD^GL|RY8C)s9JzOf7*)v)q?7)nX&5sxZtB_`>h9A5I|RQFAzSVa@q za0ok-L|Tv?2`E{cft#VGpMSAybK!K}Q<0vMmT&puO*8Gt2keDzXI|ZNi-~ah|IX0twH7(1^B4saongp0>V`-f;oIt<1=de zAffC{K!FoknZ6Zf&1($}(R}nxD-BPK>;U^jBPjl|$CZc_D&zFTTx`om0pkhuu`-x) z*XW7E42+p?`t3WhY0|wkPly0fqg|7VQy0VX*hvzub~ga4`-GFjDrla|h`~q6GJ10T zCfMQ0PYNNstq5((c61f8G`Yd!u_xPAWRJHKr#%VnKR z=e=E==Oz6V1!w>auB(_dI4SSP%#-oQ{Trc9>sN*bDseixwx4}?jtm3ftVP}j{KU`Q zlOZOw(N8E+0qEQ5sD~RZ%sLC^G;JCw?b(%7@ZMfkZX2$jF{5AyE2xYIqH*BH>$p;# z57-!lsBX+iw4yi(XT#3YBSG34T<|@@B4Nbv;xx&mad!E-x05N@Vgf2zqn9S^Jj2%2 z#*7#wgp=5G&6STvSq^RRPcCs-@uc&`%WTZqpCVM~UHBnR!z5aU1CBCLvC)vp_SQ$n z>v_pSkF5!={#TS$B~n`_vE6pBsJ&AsHVuW zR7NqW2)vQaG?YoLWH^b4iOMJgU9IZ>PB+`S`vvlHs@y>{V6n9Rvwtw}X`rtCNC|>! zE?YrWtEqK2I>OysSKO1nKc73Oz@3=+f%-LA>CVHC3m7-gZp7M}ay@Q=w!!m~2u)8| z_FNMWH&*;K2@NNm+i@O7kNi7Fu(GjnU5zfc!#+K;Ec=|{)6?Dcg+b)=o4e9cW`hr9 zY_7+J1S@xLI_wT+^!eOjQ{=(8t#~6hlL18GS&$X8XxI-3luxa!oje6pR_Y?>#nEB& zW7*V}bqto-_A;|bmSeqeKaAg9SU;NEdJU#}a|P|?5yD?*ZmG~@!mB3mSv>gTHmz<` zgj)1>)C?UD`cv)%Q&dN*>h>HU!I-D(e;$4d|L*ph+Cz0->Zwp8S@G@WzuIsniIBC8 z06PG8(t&_r{`-`4wKTIcWB%*N`d5cD9R-JVE}WiUnkXFyi_hzB5gig2tC!0qh-j^1 zu}$K-wlvBlrxZPimri|tMw@kma2G9ub=AV~7xQl!_Jl1+Ck8mQYY{Zc&PT%vKPaI` z$({tfdks{sm(D|pKwrX~my#n8dm+^MMo{=aPr7oLk_iR>b zKexfv!eD#ANVm<@_O%?sq3Y2lw=ss2_KJfaOtzz%5nKIwNaK;N`^chL!6;Ne)eHdD4R(HMOJI+bk!Z_PW}1e zVKURosv?5}@>;)kKJQ z^QrIx2^vemfjO(3Ttkz}Ty5c^bk-LqvY0YvEYkvLVwL68^QKK$j8$l3ygbw<${KiB zA~tUdkv6#gp@hY(>AT}3Ex&aH=mNWM1j5?JG0Q#Qp7z&MXZkCpnDswBA1>{W))Kwx zLG;4DIibBDy)eJ~Jk$O@fBNc>~bOo$rSJqRM~$ePwFq>hcr*< zm^*H)8`j3^QAXQ*-ViQ5niA4>=!s_>sWP8mwF=Ujgd?-A@OlH*zDfbR>hIXARAo;W zw`#Ym})BkOC9v%L8|+Cxv#WnL5c_ zO^nIGnqU%>Z9G~2Hk)7MIH=H6D`wgus?r8amVs^G7w)HDuQ5w5GY0IIDJt=$bZVJk zG#H_Tl?>yaV90~?H&doH-DX0wlZdHZe0ix@TAx>N+)f1ko6&V$$2SuFGMtpRuIJ#VmoaiWxmGx5DR2<)w+E;QWHSZ>oDKNnP!9i;K(D#gdn|R^`g!IEvD-vioVC2fr^3 zPEn(a2IRA!57HG=q-hlz@vNvD(a;XcSQH?i1hQtFqcokfh)_FbMMkw#>wJp8v=o-H zl&8-AYAUGiqWLip;83<1vCNI-x)&JO(!5p1#b7v?XBT}yDCP42)=sQhjhaxu-D2B6 zKWBXbIr=N!{>9CupcK5?Rwu>gF{=iB9x5tQVQe#uM=!aB=?1Z+g6nL8va(s-YDs5N zC;69pGhR>ITKbT4zvevKe z?YJum$D}x^O<;8O0XPs9JWY%fL2_oD@Orkt(z_PY)RHtn8q#RNK}6rKg~VRUM|e}I z_hxM64%Fo@c32IyxQuq$f?9^Bwm$4vWS89YVBlA66Xk=aeu!$*u%uapJ)+{48E>iC zH~8^80M6}n>g&6G=_oi}{iah08 z)$t)Eu6l`%z-jdI1P?sm*fUA!3w!u#kxyc#_)!eh{i>+2bsOi2kdca`b+oG&x2z+7 z{Uozi8aXLwd`clhwc-7>ZCjNcL`EOh974K?@bs-qTGgb)2UQ=?Jv1rJ8TVwC#s`W> zEDOs$2Lq7aJ2n=G6ARB73bfOZ6+kX$Uy_1}_0)EbvOuyL+7==A%N7$OD=IL0TqwUd zG(DDXSe<3HvEyCF4c!&SW!FqKiP3gVKP;y+N7|-fHl&71Cyz0up+F$YmM~@xX)$P5 zOl_J2%T3WdTA(z!4)Uf$O1-wa7`}eZ9oH}3&o`{&|JY4ufOU@Ld8_^W8~UHQSdJgx zN-6LI4+@yQq62@MxVgAG*lF3>GF!Qt+5PpgR~=OkH^71c^2k6!Vc4W$&7=1|g0T>N8Uf6pztmHDk^uWpHg9T&AgW(9+s}=@OhcT!zBO2J6s3U1*+)PVYF?xrb^j1%S zDmX6N7U9P)7dv0%$~FS-h?lR>;%OeQ&Q4Ohk%vzZ<5^H05`oz$uXlH_+rwnaEZ zuv_&`8C`*d9X5Vr%ydniXeK&Dbub%IJjcRsWy?r1HhQ!yNf!n=t);tJHj4){sTAL-=&xG!Nl(yvS z;?WiFUJ87iCZk_#T(6e+34{)V>8R(ZC}7ko`SU}vx_UV|$jA6<_ynyWdD{ai zN6C0xzic~=Rxdy?AyM2C9i~s;oNRPiOtp|p+jDzD9S-W_k7o-__qlFIV$p3fp(U9( z;ZRk5?vnEvgC+lo1>9BY{Ho6FlwqbUdhRkm%eHoPBA2GYVYl~LJ6BP;nX%Uim81#q zeCZv$RdWzty)_*6fz%aoPH}JeTVRXTi=&}*0{Zt|3fb@fTBXI!hKAb!Yck=$?Cw8n z4tqB{V>4%9Rpw82H?6g4zsG~qyvdql7E(Bd3)fYkZt1od!;#$7^8Wj; z)DxD<_;UUPubJD zPO3eyn<}5yq$eQvni-z|Lbzk98NS0Rt2)dcYzwVgnOFGA#s#;3JMWgIv}vN@)Kwcs z9ag>*0S{N)foT(rQoDX2=|rWp2T7$x#G$D)cQLZ8QK#JRq`H*PO0M2#DJ7FWb?$s8 z8ksL1CKoY9%1-1!Ys^MJgB4a5z$?ei!+W-zqyWiHDRUX3$knOnxBdM--Or1Y0G657 zH$9MMoW9lq;yYxFWdxj)46MTn13mAz-;dKpyqI4%0qa7L+f-6q8!?yR-5Poo=&wkc zyK|?@^IwJq91IJPP@<(2ZAKvVP}Jj9x=M4U&-I(B+oX&A>R&sGyScwAPSziq(lQLo zVXlj?wG>>ir|GoB%reIRhW|l&>nyF5UWiRallgstLO~ig%d;iEpP{}CFR}eLFO2o$_v8?n^d(?`FRli zu*eAy-?pH+aS7$DxP;cG9f|JwyMu>Fdd|)I+U=Tq!7=kN6ji-N^l;7#fX7wuLoD+0 zrP=u0@t1KYRsC`Fa14<@K0>#QlriA|?Hev~9}6*1O2g~%i-pl47SeO*WaWXC^)JcJ5( zf7D~Bxn?;j%?0qONC-#;%7rAfhnY3@Napb9#y};yh1vzPLAJ_%40kcGyC}>~S-J!%^@MFd~G4n|ce!e?YD9VgOsAMtGWi5z3CPM5s~LxCki^V8xj+??wJD1kUt#SK8@|`ZsP_052A?0B$K5NMHau2Te zr7!WgCWEkp$$~UT(HUBJ0BIPJ;2FWi-~?CA>J!A88GySbbx?D1Dqa3J zodIh>>-V({lP%jV>-U=sCgdNK_UNsFFMjLemwSTH=&hOOM}h~B&JK=0DZ4B2f5!TM ztzE>gP4R>}Zw3Jk9A^2!(ywHTW0PiDCOyP%itCJM7D9W1`{{ZsVMVTH7E8sKo;2c|>1PW(ED?;n@Uj>~U#k zK#!>RkD4EDSNLiq6y*u$Sv41Y9h#>XRKwK%z&^!npDe5MudU|{ekLk-nBUo|qWV-o zBz`){VVypJgOHDqV+#+U2vZ2KfSUc8=P7RBO1I5TbtgPP#SD@50-vJ|joxyI>bFAa zSCtN{iit`BjNaTpV(P|u!g)B_UN_2h9@>k6NvP+Bk->8^ju4W_q+68*l38?C<; zaH9xzfh7JS+|vBJ8w4JEUX@tIk7ccIVa4&AW$gUH@ymZTLwF#HP21TK=+ISN&ad=NMNga{|H{kDSS-N;NU z=9=%@MBM+{6%&y+5?nfm3w0h=%uC2T!~B9h=}CLZ z-c_E{e$MyIdg0scOVZMMWv1F@ews38_p)<)s;|9iI#j*p=(b6hjH)Y3ecwJ({ZVyS z?qKx$&+Df=@dz$H{pwn~T-}q4TVKmn*F0Xfd|utNo6qOfFDyQNZF*c?>h0C*_x`+g z+xlMR_Uz~D`t9z0K6$V9xBcHYrw_+}m9eZ^^S$E!%lvaSzwdtkn_h2G|M1cJ{jtCP z_S^qoRBCvDcZyv`>UO|D15k{CA=()@ z7@V3{5+71okXjrIYMr4QP^sqa@B^sy9&j9)8>SmbH!vOp8UbnJgPZo~8avv!gEN6j zE&??QqG)^$6oJ=0$@xX#k!W=7UvA$Pe+|^0!@|HIfTFz~C<51>SWtk?)#vp#HGBtJ zvkN%#jcWM}U_gLp4uD3K<^uhWO?zI0w2%?d^3y=8WKb;M2b^jIYlrw8*$}Lu(7Rg9 zx?7)tAug1afgi;rEnsMZO)4&_%t-}LSE7dj`hk)#{SAzdtWY$g9WRM)4*EPP!kpj& zm^nz3DCpYJCteWR9ZR6v(WYV0O+cTBK$uWm3N-;`S^`}^`lvBNKU)P#+95(G5WF=pqcbUXN@5wr(%FS?GO7gjp9Fkj+BvNuryA-qk{w^1KlmDkvQ< kbp7b0=A1Kg?!E8( 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

      2N&0m8q(27Ktpw53vRMp96 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 TU=9N1DnW)sVD>oH4dMX+-oXMp literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.docx new file mode 100644 index 0000000000000000000000000000000000000000..905baaa82c80a4979718acf50ae6f64c2da7a11b GIT binary patch literal 37225 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ℜYE~%=`EG0=eut7&rXA3uq`gjtib-#nqBhcvr~( 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 SIS7=i1Q`;6+2d0Whz9`ndXPN; literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.scala deleted file mode 100644 index ca185eb4a..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/CardReferenceUriExtractor.scala +++ /dev/null @@ -1,32 +0,0 @@ -package com.twitter.tweetypie -package core - -import com.twitter.tweetypie.thriftscala.CardReference -import java.net.URI - -sealed trait CardUri -object Tombstone extends CardUri -case class NonTombstone(uri: String) extends CardUri - -object CardReferenceUriExtractor { - - private def parseAsUri(cardRef: CardReference) = Try(new URI(cardRef.cardUri)).toOption - private def isTombstone(uri: URI) = uri.getScheme == "tombstone" - - /** - * Parses a CardReference to return Option[CardUri] to differentiate among: - * - Some(NonTombstone): hydrate card2 with provided uri - * - Some(Tombstone): don't hydrate card2 - * - None: fallback and attempt to use url entities uris - */ - def unapply(cardRef: CardReference): Option[CardUri] = - parseAsUri(cardRef) match { - case Some(uri) if !isTombstone(uri) => Some(NonTombstone(uri.toString)) - case Some(uri) => Some(Tombstone) - - // If a cardReference is set, but does not parse as a URI, it's likely a https? URL with - // incorrectly encoded query params. Since these occur frequently in the wild, we'll - // attempt a card2 hydration with it - case None => Some(NonTombstone(cardRef.cardUri)) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/EditState.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/EditState.docx new file mode 100644 index 0000000000000000000000000000000000000000..4df655826742dd8620db171ae0b812962cfa93f3 GIT binary patch literal 37353 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

      F`;HkS`;d*;WzR1WnqPlpHZ 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 ValueState[A]) { - - /** - * Composes two EditStates in sequence - */ - def andThen(other: EditState[A]): EditState[A] = - EditState[A] { a0: A => - val ValueState(a1, s1) = run(a0) - val ValueState(a2, s2) = other.run(a1) - ValueState(a2, s1 ++ s2) - } -} - -object EditState { - - /** - * Creates a "passthrough" EditState: - * Leaves A unchanged and produces empty state S - */ - def unit[A]: EditState[A] = - EditState[A](ValueState.unit[A]) - - /** - * Creates an `EditState[A]` using a `Mutation[A]`. - */ - def fromMutation[A](mut: Mutation[A]): EditState[A] = - EditState[A] { a => - mut(a) match { - case None => ValueState.unmodified(a) - case Some(a2) => ValueState.modified(a2) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Exceptions.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Exceptions.docx new file mode 100644 index 0000000000000000000000000000000000000000..7e1620ff93a9893453d6f5adf6f0bb439f0d03d8 GIT binary patch literal 36839 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 RmuH{;{o@CYWz4amA0?>>vAT-7 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 f5&G*|k+K+S>oCBZ6_|rSxk`{B5tuy+xZXg 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 avKVUXFu Set.empty - case t => underlying(t) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/GeoSearchRequestId.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/GeoSearchRequestId.docx new file mode 100644 index 0000000000000000000000000000000000000000..ccc0715d35ff60fde0f09d4c80a4ef0c196d9d2a GIT binary patch literal 36683 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 this - case that: Success => - HydrationState( - modified || that.modified, - completedHydrations ++ that.completedHydrations, - failedFields ++ that.failedFields, - cacheErrorEncountered || that.cacheErrorEncountered - ) - } - - /** - * An implementation of `copy` that avoids unnecessary allocations, by - * using the constant `HydrationState.unmodified` and `HydrationState.modified` - * values when possible. - */ - def copy( - modified: Boolean = this.modified, - completedHydrations: Set[HydrationType] = this.completedHydrations, - failedFields: Set[FieldByPath] = this.failedFields, - cacheErrorEncountered: Boolean = this.cacheErrorEncountered - ): HydrationState = - HydrationState(modified, completedHydrations, failedFields, cacheErrorEncountered) - } - - val empty: HydrationState = Empty - val modified: HydrationState = Success(true) - - def modified(completedHydration: HydrationType): HydrationState = - modified(Set(completedHydration)) - - def modified(completedHydrations: Set[HydrationType]): HydrationState = - Success(modified = true, completedHydrations = completedHydrations) - - def partial(failedField: FieldByPath): HydrationState = - partial(Set(failedField)) - - def partial(failedFields: Set[FieldByPath]): HydrationState = - Success(modified = false, failedFields = failedFields) - - def apply( - modified: Boolean, - completedHydrations: Set[HydrationType] = Set.empty, - failedFields: Set[FieldByPath] = Set.empty, - cacheErrorEncountered: Boolean = false - ): HydrationState = - if (completedHydrations.nonEmpty || failedFields.nonEmpty || cacheErrorEncountered) { - Success(modified, completedHydrations, failedFields, cacheErrorEncountered) - } else if (modified) { - HydrationState.modified - } else { - HydrationState.empty - } - - /** - * Creates a new HydrationState with modified set to true if `next` and `prev` are different, - * or false if they are the same. - */ - def delta[A](prev: A, next: A): HydrationState = - if (next != prev) modified else empty - - /** - * Join a list of HydrationStates into a single HydrationState. - * - * Note: this could just be a reduce over the HydrationStates but that would allocate - * _N_ HydrationStates. This approach also allows for shortcircuiting over the boolean - * fields. - */ - def join(states: HydrationState*): HydrationState = { - val statesSet = states.toSet - - HydrationState( - modified = states.exists(_.modified), - completedHydrations = statesSet.flatMap(_.completedHydrations), - failedFields = statesSet.flatMap(_.failedFields), - cacheErrorEncountered = states.exists(_.cacheErrorEncountered) - ) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.docx new file mode 100644 index 0000000000000000000000000000000000000000..0d1d58e64a52f95016f5527aa8640b4d12829a54 GIT binary patch literal 37189 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.scala deleted file mode 100644 index 28f38a807..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/QuotedTweetResult.scala +++ /dev/null @@ -1,46 +0,0 @@ -package com.twitter.tweetypie.core - -import com.twitter.spam.rtf.thriftscala.FilteredReason -import com.twitter.util.Return -import com.twitter.util.Throw -import com.twitter.util.Try - -/** - * The data about a quoted tweet that needs to be carried forward to - * Tweetypie clients. - */ -sealed trait QuotedTweetResult { - def filteredReason: Option[FilteredReason] - def toOption: Option[TweetResult] - def map(f: TweetResult => TweetResult): QuotedTweetResult -} - -object QuotedTweetResult { - case object NotFound extends QuotedTweetResult { - def filteredReason: None.type = None - def toOption: None.type = None - def map(f: TweetResult => TweetResult): NotFound.type = this - } - case class Filtered(state: FilteredState.Unavailable) extends QuotedTweetResult { - def filteredReason: Option[FilteredReason] = - state match { - case st: FilteredState.HasFilteredReason => Some(st.filteredReason) - case _ => None - } - def toOption: None.type = None - def map(f: TweetResult => TweetResult): Filtered = this - } - case class Found(result: TweetResult) extends QuotedTweetResult { - def filteredReason: Option[FilteredReason] = result.value.suppress.map(_.filteredReason) - def toOption: Option[TweetResult] = Some(result) - def map(f: TweetResult => TweetResult): QuotedTweetResult = Found(f(result)) - } - - def fromTry(tryResult: Try[TweetResult]): Try[QuotedTweetResult] = - tryResult match { - case Return(result) => Return(Found(result)) - case Throw(state: FilteredState.Unavailable) => Return(Filtered(state)) - case Throw(com.twitter.stitch.NotFound) => Return(NotFound) - case Throw(e) => Throw(e) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.docx new file mode 100644 index 0000000000000000000000000000000000000000..bbb1bf8e1c2e00d81211a52d1292745aa687c98d GIT binary patch literal 37007 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 Awg3PC literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.scala deleted file mode 100644 index e367a8481..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/Serializer.scala +++ /dev/null @@ -1,31 +0,0 @@ -package com.twitter.tweetypie.core - -import com.twitter.servo.cache -import com.twitter.servo.cache.CachedSerializer -import com.twitter.tweetypie.thriftscala -import com.twitter.tweetypie.thriftscala.CachedTweet -import com.twitter.tweetypie.thriftscala.Tweet -import org.apache.thrift.protocol.TCompactProtocol - -/** - * A container object for serializers. - * Creates a serializer for every object type cached by the tweetypie service - */ -object Serializer { - lazy val CompactProtocolFactory: TCompactProtocol.Factory = new TCompactProtocol.Factory - - def toCached[T](underlying: cache.Serializer[T]): cache.CachedSerializer[T] = - new cache.CachedSerializer(underlying, CompactProtocolFactory) - - object Tweet { - lazy val Compact: cache.ThriftSerializer[thriftscala.Tweet] = - new cache.ThriftSerializer(thriftscala.Tweet, CompactProtocolFactory) - lazy val CachedCompact: CachedSerializer[Tweet] = toCached(Compact) - } - - object CachedTweet { - lazy val Compact: cache.ThriftSerializer[thriftscala.CachedTweet] = - new cache.ThriftSerializer(thriftscala.CachedTweet, CompactProtocolFactory) - lazy val CachedCompact: CachedSerializer[CachedTweet] = toCached(Compact) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/StoredTweetResult.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/StoredTweetResult.docx new file mode 100644 index 0000000000000000000000000000000000000000..86b5ad61002661dbd2dbec056f126eaf506f0dbd GIT binary patch literal 36998 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 TR$vYSgj3YQHe4&@7l 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 td.copy(suppress = suppress) - ) - - val sourceTweetResult: Lens[TweetData, Option[TweetResult]] = - Lens[TweetData, Option[TweetResult]]( - _.sourceTweetResult, - (td, sourceTweetResult) => td.copy(sourceTweetResult = sourceTweetResult) - ) - - val quotedTweetResult: Lens[TweetData, Option[QuotedTweetResult]] = - Lens[TweetData, Option[QuotedTweetResult]]( - _.quotedTweetResult, - (td, quotedTweetResult) => td.copy(quotedTweetResult = quotedTweetResult) - ) - - val cacheableTweetResult: Lens[TweetData, Option[TweetResult]] = - Lens[TweetData, Option[TweetResult]]( - _.cacheableTweetResult, - (td, cacheableTweetResult) => td.copy(cacheableTweetResult = cacheableTweetResult) - ) - - val tweetCounts: Lens[TweetData, Option[StatusCounts]] = - Lens[TweetData, Option[StatusCounts]]( - _.tweet.counts, - (td, tweetCounts) => td.copy(tweet = td.tweet.copy(counts = tweetCounts)) - ) - } - - def fromCachedTweet(cachedTweet: CachedTweet, cachedAt: Time): TweetData = - TweetData( - tweet = cachedTweet.tweet, - completedHydrations = cachedTweet.completedHydrations.toSet, - cachedAt = Some(cachedAt), - isBounceDeleted = cachedTweet.isBounceDeleted.contains(true) - ) -} - -/** - * Encapsulates a tweet and some hydration metadata in the hydration pipeline. - * - * @param cachedAt if the tweet was read from cache, `cachedAt` contains the time at which - * the tweet was written to cache. - */ -case class TweetData( - tweet: Tweet, - suppress: Option[FilteredState.Suppress] = None, - completedHydrations: Set[HydrationType] = Set.empty, - cachedAt: Option[Time] = None, - sourceTweetResult: Option[TweetResult] = None, - quotedTweetResult: Option[QuotedTweetResult] = None, - cacheableTweetResult: Option[TweetResult] = None, - storedTweetResult: Option[StoredTweetResult] = None, - featureSwitchResults: Option[FeatureSwitchResults] = None, - // The isBounceDeleted flag is only used when reading from an underlying - // tweet repo and caching records for not-found tweets. It only exists - // as a flag on TweetData to marshal bounce-deleted through the layered - // transforming caches injected into CachingTweetRepository, ultimately - // storing this flag in thrift on CachedTweet. - // - // During tweet hydration, TweetData.isBounceDeleted is unused and - // should always be false. - isBounceDeleted: Boolean = false) { - - def addHydrated(fieldIds: Set[HydrationType]): TweetData = - copy(completedHydrations = completedHydrations ++ fieldIds) - - def toCachedTweet: CachedTweet = - CachedTweet( - tweet = tweet, - completedHydrations = completedHydrations, - isBounceDeleted = if (isBounceDeleted) Some(true) else None - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetResult.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/TweetResult.docx new file mode 100644 index 0000000000000000000000000000000000000000..75cf25b1430d20fb09cc9e1c2a0ce639743642d3 GIT binary patch literal 37219 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 Q r.copy(value = value)) - val state: Lens[TweetResult, HydrationState] = - Lens[TweetResult, HydrationState](_.state, (r, state) => r.copy(state = state)) - val tweet: Lens[TweetResult, Tweet] = value.andThen(TweetData.Lenses.tweet) - } - - def apply(value: TweetData, state: HydrationState = HydrationState.empty): TweetResult = - ValueState(value, state) - - def apply(tweet: Tweet): TweetResult = - apply(TweetData(tweet = tweet)) - - /** - * Apply this mutation to the tweet contained in the result, updating the modified flag if the mutation modifies the tweet. - */ - def mutate(mutation: Mutation[Tweet]): TweetResult => TweetResult = - (result: TweetResult) => - mutation(result.value.tweet) match { - case None => result - case Some(updatedTweet) => - TweetResult( - result.value.copy(tweet = updatedTweet), - result.state ++ HydrationState.modified - ) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.docx new file mode 100644 index 0000000000000000000000000000000000000000..4737753203a707de411cc85a9ed9a44420ca6e38 GIT binary patch literal 37127 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�#+_(OA( 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 z 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 YTZaMOtiT)u%2k34iNNeJp$EhR02Z!hz5oCK literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.scala deleted file mode 100644 index 3acc2b2d8..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/UpstreamFailure.scala +++ /dev/null @@ -1,37 +0,0 @@ -package com.twitter.tweetypie.core - -import scala.util.control.NoStackTrace - -/** - * Parent exception class for failures while talking to upstream services. These will - * be counted and then converted to servo.ServerError.DependencyError - */ -sealed abstract class UpstreamFailure(msg: String) extends Exception(msg) with NoStackTrace - -object UpstreamFailure { - case class SnowflakeFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case object UserProfileEmptyException extends UpstreamFailure("User.profile is empty") - - case object UserViewEmptyException extends UpstreamFailure("User.view is empty") - - case object UserSafetyEmptyException extends UpstreamFailure("User.safety is empty") - - case class TweetLookupFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case class UserLookupFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case class DeviceSourceLookupFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case class TFlockLookupFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case class UrlShorteningFailure(t: Throwable) extends UpstreamFailure(t.toString) - - case object MediaShortenUrlMalformedFailure - extends UpstreamFailure("Media shortened url is malformed") - - case object MediaExpandedUrlNotValidFailure - extends UpstreamFailure("Talon returns badInput on media expanded url") - - case class MediaServiceServerError(t: Throwable) extends UpstreamFailure(t.toString) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/ValueState.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/ValueState.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb1906e7c99325f128744f8374c93d2d936e05d6 GIT binary patch literal 38476 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 UfD!b4RBeaY1H B): ValueState[B] = - ValueState(f(value), state) - - /** - * Produces a new `ValueState` that contains the value generated by `f`, but with state that is - * the sum of the state from this `ValueState` and the one produced by `f`. - */ - def flatMap[B](f: A => ValueState[B]): ValueState[B] = { - val ValueState(value2, state2) = f(value) - ValueState(value2, state ++ state2) - } - - /** - * Applies a function to the enclosed state and produces a new `ValueState` instance. - */ - def mapState[T](f: HydrationState => HydrationState): ValueState[A] = - ValueState(value, f(state)) - - /** - * Converts a `ValueState[A]` to an `EditState[B]`, using a lens. The resulting `EditState` - * will overwrite the lensed field with the value from this `ValueState`. - */ - def edit[B, A2 >: A](lens: Lens[B, A2]): EditState[B] = - EditState[B](b => ValueState(lens.set(b, value), state)) -} - -object ValueState { - val UnmodifiedNone: ValueState[None.type] = unmodified(None) - val StitchUnmodifiedNone: Stitch[ValueState[None.type]] = Stitch.value(UnmodifiedNone) - - val UnmodifiedUnit: ValueState[Unit] = unmodified(()) - val StitchUnmodifiedUnit: Stitch[ValueState[Unit]] = Stitch.value(UnmodifiedUnit) - - val UnmodifiedNil: ValueState[Nil.type] = unmodified(Nil) - val StitchUnmodifiedNil: Stitch[ValueState[Nil.type]] = Stitch.value(UnmodifiedNil) - - /** - * Produces a ValueState instance with the given value and an empty state HydrationState. - */ - def unit[A](value: A): ValueState[A] = - ValueState[A](value, HydrationState.empty) - - def unmodified[A](value: A): ValueState[A] = - ValueState(value, HydrationState.empty) - - def modified[A](value: A): ValueState[A] = - ValueState(value, HydrationState.modified) - - def modified[A](value: A, hydrationType: HydrationType): ValueState[A] = - ValueState(value, HydrationState.modified(hydrationType)) - - def success[A](value: A, modified: Boolean): ValueState[A] = - ValueState(value, HydrationState(modified)) - - def delta[A](prev: A, next: A): ValueState[A] = - ValueState(next, HydrationState.delta(prev, next)) - - def partial[A](value: A, field: FieldByPath): ValueState[A] = - ValueState(value, HydrationState.partial(field)) - - def partial[A](value: A, fields: Set[FieldByPath]): ValueState[A] = - ValueState(value, HydrationState.partial(fields)) - - /** - * Converts a `Seq` of `ValueState[A]` to a `ValueState` of `Seq[A]`. - */ - def sequence[A](seq: Seq[ValueState[A]]): ValueState[Seq[A]] = { - ValueState( - value = seq.map(_.value), - state = HydrationState.join(seq.map(_.state): _*) - ) - } - - def join[A, B](va: ValueState[A], vb: ValueState[B]): ValueState[(A, B)] = { - val state = - HydrationState.join( - va.state, - vb.state - ) - - val value = ( - va.value, - vb.value - ) - - ValueState(value, state) - } - - def join[A, B, C]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C] - ): ValueState[(A, B, C)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state - ) - - val value = ( - va.value, - vb.value, - vc.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D] - ): ValueState[(A, B, C, D)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E] - ): ValueState[(A, B, C, D, E)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F] - ): ValueState[(A, B, C, D, E, F)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G] - ): ValueState[(A, B, C, D, E, F, G)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G, H]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G], - vh: ValueState[H] - ): ValueState[(A, B, C, D, E, F, G, H)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state, - vh.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value, - vh.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G, H, I]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G], - vh: ValueState[H], - vi: ValueState[I] - ): ValueState[(A, B, C, D, E, F, G, H, I)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state, - vh.state, - vi.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value, - vh.value, - vi.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G, H, I, J]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G], - vh: ValueState[H], - vi: ValueState[I], - vj: ValueState[J] - ): ValueState[(A, B, C, D, E, F, G, H, I, J)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state, - vh.state, - vi.state, - vj.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value, - vh.value, - vi.value, - vj.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G, H, I, J, K]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G], - vh: ValueState[H], - vi: ValueState[I], - vj: ValueState[J], - vk: ValueState[K] - ): ValueState[(A, B, C, D, E, F, G, H, I, J, K)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state, - vh.state, - vi.state, - vj.state, - vk.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value, - vh.value, - vi.value, - vj.value, - vk.value - ) - - ValueState(value, state) - } - - def join[A, B, C, D, E, F, G, H, I, J, K, L]( - va: ValueState[A], - vb: ValueState[B], - vc: ValueState[C], - vd: ValueState[D], - ve: ValueState[E], - vf: ValueState[F], - vg: ValueState[G], - vh: ValueState[H], - vi: ValueState[I], - vj: ValueState[J], - vk: ValueState[K], - vl: ValueState[L] - ): ValueState[(A, B, C, D, E, F, G, H, I, J, K, L)] = { - val state = - HydrationState.join( - va.state, - vb.state, - vc.state, - vd.state, - ve.state, - vf.state, - vg.state, - vh.state, - vi.state, - vj.state, - vk.state, - vl.state - ) - - val value = ( - va.value, - vb.value, - vc.value, - vd.value, - ve.value, - vf.value, - vg.value, - vh.value, - vi.value, - vj.value, - vk.value, - vl.value - ) - - ValueState(value, state) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..a475b6f05bfb2d843c8fc756ad28eb4816d5cfff GIT binary patch literal 36712 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%0D{fw8bc#{0dynluirZ!d4 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 A=>Px# literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.scala deleted file mode 100644 index 50952e98a..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/core/package.scala +++ /dev/null @@ -1,5 +0,0 @@ -package com.twitter.tweetypie - -package object core { - type TweetResult = ValueState[TweetData] -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD deleted file mode 100644 index 967226ca4..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "merlin/util/src/main/scala", - "tweetypie/servo/util/src/main/scala", - "tweetypie/servo/util/src/main/scala:exception", - "src/scala/com/twitter/ads/internal/pcl/service", - "src/thrift/com/twitter/ads/adserver:adserver_rpc-scala", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/merlin:thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet_service_graphql-scala", - "stitch/stitch-core/src/main/scala/com/twitter/stitch", - "strato/src/main/scala/com/twitter/strato/access/filters", - "strato/src/main/scala/com/twitter/strato/catalog", - "strato/src/main/scala/com/twitter/strato/client", - "strato/src/main/scala/com/twitter/strato/config", - "strato/src/main/scala/com/twitter/strato/fed", - "strato/src/main/scala/com/twitter/strato/server/context", - "strato/src/main/scala/com/twitter/strato/thrift", - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/backends", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/repository", - "tweetypie/server/src/main/thrift:compiled-scala", - "util/util-slf4j-api/src/main/scala/com/twitter/util/logging", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f73acf219676a030eb92ef626f70e3575ab5ffad GIT binary patch literal 37103 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/StratoCatalogBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/StratoCatalogBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..aa27d0f3af6309fb76e14fea0f80a6f7840b7d25 GIT binary patch literal 38037 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 h - FederatedFieldColumn.isFederatedField(info.tfield.id)) - - // Instantiate the federated field columns - val federatedFieldColumns: Seq[FederatedFieldColumn] = - federatedFieldInfos.map { fieldInfo: ThriftStructFieldInfo => - val path = FederatedFieldColumn.makeColumnPath(fieldInfo.tfield) - val stratoType = ScroogeConv.typeOfFieldInfo(fieldInfo) - log.info(f"creating federated column: $path") - new FederatedFieldColumn( - federatedFieldGroupBuilder, - thriftTweetService.setAdditionalFields, - stratoType, - fieldInfo.tfield, - ) - } - - // Instantiate the federated V1 field columns - val federatedV1FieldColumns: Seq[FederatedFieldColumn] = - federatedFieldInfos - .filter(f => FederatedFieldColumn.isMigrationFederatedField(f.tfield)) - .map { fieldInfo: ThriftStructFieldInfo => - val v1Path = FederatedFieldColumn.makeV1ColumnPath(fieldInfo.tfield) - val stratoType = ScroogeConv.typeOfFieldInfo(fieldInfo) - log.info(f"creating V1 federated column: $v1Path") - new FederatedFieldColumn( - federatedFieldGroupBuilder, - thriftTweetService.setAdditionalFields, - stratoType, - fieldInfo.tfield, - Some(v1Path) - ) - } - - // Combine the dynamic and hard coded federated columns - val allColumns: Seq[StratoFed.Column] = - columns ++ federatedFieldColumns ++ federatedV1FieldColumns - - Activity.value( - Catalog( - allColumns.map { column => - column.path -> column - }: _* - )) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/AccessPolicy.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/AccessPolicy.docx new file mode 100644 index 0000000000000000000000000000000000000000..b005bf97792a7b735f30b2728f13f38933963533 GIT binary patch literal 37188 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

      ajn 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 ClientAppPrivileges} -import com.twitter.strato.access.Access.AuthenticatedTwitterUserNotSuspended -import com.twitter.strato.access.Access.ClientApplicationPrivilege -import com.twitter.strato.access.Access.TwitterUserNotSuspended -import com.twitter.strato.access.ClientApplicationPrivilegeVariant -import com.twitter.strato.config._ - -object AccessPolicy { - - /** - * All Tweet Mutation operations require all of: - * - Twitter user authentication - * - Twitter user is not suspended - * - Contributor user, if provided, is not suspended - * - "Teams Access": user is acting their own behalf, or is a - * contributor using a client with ClientAppPriviledges.CONTRIBUTORS - * - Write privileges - */ - val TweetMutationCommonAccessPolicies: Policy = - AllOf( - Seq( - AllowTwitterUserId, - Has( - TwitterUserNotSuspended - ), - Has( - AuthenticatedTwitterUserNotSuspended - ), - AnyOf( - Seq( - TwitterUserContributingAsSelf, - Has(principal = ClientApplicationPrivilege(ClientApplicationPrivilegeVariant - .byId(ClientAppPrivileges.CONTRIBUTORS.toShort).get)) - )), - AllowWritableAccessToken - ) - ) - -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/ApiErrors.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/ApiErrors.docx new file mode 100644 index 0000000000000000000000000000000000000000..8133a7c1862ccbc09628ea113d46032bc08cf5a2 GIT binary patch literal 38303 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 Err.Authorization - case Status.Unauthorized => Err.Authentication - case Status.NotFound => Err.BadRequest - case Status.BadRequest => Err.BadRequest - case _ => Err.BadRequest - } - val errMessage = s"${apiError.message.format(args.mkString(","))} (${apiError.code})" - val errContext = Some(Err.Context.Api11Error(apiError.code)) - Err(errCode, errMessage, errContext) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD deleted file mode 100644 index 7148dfa4b..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD +++ /dev/null @@ -1,43 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "decider", - "finagle/finagle-base-http/src/main", - "finatra-internal/api11/src/main/scala/com/twitter/finatra/api11:errors", - "geo/model/src/main/scala/com/twitter/geo/model", - "passbird/bitfields-thrift/src/main/thrift:thrift-scala", - "tweetypie/servo/util/src/main/scala:exception", - "src/scala/com/twitter/accounts/util:safety-meta", - "src/thrift/com/twitter/ads/adserver:ad_engagement_details-scala", - "src/thrift/com/twitter/ads/adserver:preroll_metadata-scala", - "src/thrift/com/twitter/ads/callback:engagement_request-scala", - "src/thrift/com/twitter/bouncer:bounce-action-thrift-scala", - "src/thrift/com/twitter/consumer_privacy/mention_controls:thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:stored-tweet-info-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-service-federated-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet_service_graphql-scala", - "stitch/stitch-core/src/main/scala/com/twitter/stitch", - "strato/config/src/thrift/com/twitter/strato/graphql:api-media-graphql-scala", - "strato/config/src/thrift/com/twitter/strato/graphql:graphql-scala", - "strato/config/src/thrift/com/twitter/strato/graphql:topics-graphql-scala", - "strato/src/main/scala/com/twitter/strato/client", - "strato/src/main/scala/com/twitter/strato/fed", - "strato/src/main/scala/com/twitter/strato/response", - "strato/src/main/scala/com/twitter/strato/thrift", - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/context", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/prefetcheddata", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/promotedcontent", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/repository", - "tweetypie/server/src/main/thrift:compiled-scala", - "tweetypie/common/src/scala/com/twitter/tweetypie/client_id", - "tweetypie/common/src/scala/com/twitter/tweetypie/decider/overrides", - "tweetypie/common/src/scala/com/twitter/tweetypie/util", - "vibes/src/main/thrift/com/twitter/vibes:vibes-scala", - "weaverbird/common/src/main/scala/com/twitter/weaverbird/common", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..1f2fbbbd2d70fcbd52d978b34d2ac384ba261756 GIT binary patch literal 37276 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 Wt-}CsR$vYSqr0d1pO!skNUdCoZ#eW3xJDZBY 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%0AtG1NA2F$iC>;z=i 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 x$fedkOHkY|uN)9w BouncerBounce} -import com.twitter.stitch.Stitch -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config.AllOf -import com.twitter.strato.config.BouncerAccess -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.opcontext.OpContext -import com.twitter.strato.response.Err -import com.twitter.strato.thrift.ScroogeConv -import com.twitter.tweetypie.federated.columns.ApiErrors._ -import com.twitter.tweetypie.federated.columns.CreateRetweetColumn.toCreateRetweetErr -import com.twitter.tweetypie.federated.context.GetRequestContext -import com.twitter.tweetypie.federated.prefetcheddata.PrefetchedDataRequest -import com.twitter.tweetypie.federated.prefetcheddata.PrefetchedDataResponse -import com.twitter.tweetypie.federated.promotedcontent.TweetPromotedContentLogger -import com.twitter.tweetypie.federated.promotedcontent.TweetPromotedContentLogger.RetweetEngagement -import com.twitter.tweetypie.thriftscala.TweetCreateState._ -import com.twitter.tweetypie.thriftscala.{graphql => gql} -import com.twitter.tweetypie.{thriftscala => thrift} -import com.twitter.weaverbird.common.{GetRequestContext => WGetRequestContext} - -class CreateRetweetColumn( - retweet: thrift.RetweetRequest => Future[thrift.PostTweetResult], - getRequestContext: GetRequestContext, - prefetchedDataRepository: PrefetchedDataRequest => Stitch[PrefetchedDataResponse], - logTweetPromotedContent: TweetPromotedContentLogger.Type, - statsReceiver: StatsReceiver, -) extends StratoFed.Column(CreateRetweetColumn.Path) - with StratoFed.Execute.StitchWithContext - with StratoFed.HandleDarkRequests { - - override val policy: Policy = AllOf( - Seq(AccessPolicy.TweetMutationCommonAccessPolicies, BouncerAccess())) - - // The underlying call to thriftTweetService.postRetweet is not idempotent - override val isIdempotent: Boolean = false - - override type Arg = gql.CreateRetweetRequest - override type Result = gql.CreateRetweetResponseWithSubqueryPrefetchItems - - override val argConv: Conv[Arg] = ScroogeConv.fromStruct - override val resultConv: Conv[Result] = ScroogeConv.fromStruct - - override val contactInfo: ContactInfo = TweetypieContactInfo - override val metadata: OpMetadata = OpMetadata( - Some(Production), - Some(PlainText("Creates a retweet by the calling Twitter user of the given source tweet."))) - - private val getWeaverbirdCtx = new WGetRequestContext() - - override def execute(request: Arg, opContext: OpContext): Stitch[Result] = { - val ctx = getRequestContext(opContext) - - // First, do any request parameter validation that can result in an error - // prior to calling into thriftTweetService.retweet. - val safetyLevel = ctx.safetyLevel.getOrElse(throw SafetyLevelMissingErr) - - // Macaw-tweets returns ApiError.ClientNotPrivileged if the caller provides - // an impression_id but lacks the PROMOTED_TWEETS_IN_TIMELINE privilege. - val trackingId = request.engagementRequest match { - case Some(engagementRequest: EngagementRequest) if ctx.hasPrivilegePromotedTweetsInTimeline => - TrackingId.parse(engagementRequest.impressionId, statsReceiver) - case Some(e: EngagementRequest) => - throw ClientNotPrivilegedErr - case None => - None - } - - // DeviceSource is an oauth string computed from the ClientApplicationId. - // Macaw-tweets allows non-oauth callers, but GraphQL does not. An undefined - // ClientApplicationId is similar to TweetCreateState.DeviceSourceNotFound, - // which Macaw-tweets handles via a catch-all that returns - // ApiError.GenericAccessDenied - val deviceSource = ctx.deviceSource.getOrElse(throw GenericAccessDeniedErr) - - // Macaw-tweets doesn't perform any parameter validation for the components - // used as input to makeSafetyMetaData. - val safetyMetadata = SafetyMetadataUtils.makeSafetyMetaData( - sessionHash = ctx.sessionHash, - knownDeviceToken = ctx.knownDeviceToken, - contributorId = ctx.contributorId - ) - - val thriftRetweetRequest = thrift.RetweetRequest( - sourceStatusId = request.tweetId, - userId = ctx.twitterUserId, - contributorUserId = None, // no longer supported, per tweet_service.thrift - createdVia = deviceSource, - nullcast = request.nullcast, - trackingId = trackingId, - dark = ctx.isDarkRequest, - hydrationOptions = Some(HydrationOptions.writePathHydrationOptions(ctx.cardsPlatformKey)), - safetyMetaData = Some(safetyMetadata), - ) - - val stitchRetweet = Stitch.callFuture(retweet(thriftRetweetRequest)) - - request.engagementRequest.foreach { engagement => - logTweetPromotedContent(engagement, RetweetEngagement, ctx.isDarkRequest) - } - - stitchRetweet.flatMap { result: thrift.PostTweetResult => - result.state match { - case thrift.TweetCreateState.Ok => - val r = PrefetchedDataRequest( - tweet = result.tweet.get, - sourceTweet = result.sourceTweet, - quotedTweet = result.quotedTweet, - safetyLevel = safetyLevel, - requestContext = getWeaverbirdCtx() - ) - - prefetchedDataRepository(r) - .liftToOption() - .map((prefetchedData: Option[PrefetchedDataResponse]) => { - gql.CreateRetweetResponseWithSubqueryPrefetchItems( - data = Some(gql.CreateRetweetResponse(result.tweet.map(_.id))), - subqueryPrefetchItems = prefetchedData.map(_.value) - ) - }) - case errState => - throw toCreateRetweetErr(errState, result.bounce, result.failureReason) - } - } - } -} - -object CreateRetweetColumn { - val Path = "tweetypie/createRetweet.Tweet" - - /** - * Ported from: - * StatusesRetweetController#retweetStatus rescue block - * TweetyPieStatusRepository.toRetweetException - */ - def toCreateRetweetErr( - errState: thrift.TweetCreateState, - bounce: Option[BouncerBounce], - failureReason: Option[String] - ): Err = errState match { - case CannotRetweetBlockingUser => - BlockedUserErr - case AlreadyRetweeted => - AlreadyRetweetedErr - case Duplicate => - DuplicateStatusErr - case CannotRetweetOwnTweet | CannotRetweetProtectedTweet | CannotRetweetSuspendedUser => - InvalidRetweetForStatusErr - case UserNotFound | SourceTweetNotFound | SourceUserNotFound | CannotRetweetDeactivatedUser => - StatusNotFoundErr - case UserDeactivated | UserSuspended => - UserDeniedRetweetErr - case RateLimitExceeded => - RateLimitExceededErr - case UrlSpam => - TweetUrlSpamErr - case Spam | UserReadonly => - TweetSpammerErr - case SafetyRateLimitExceeded => - SafetyRateLimitExceededErr - case Bounce if bounce.isDefined => - accessDeniedByBouncerErr(bounce.get) - case DisabledByIpiPolicy => - failureReason - .map(tweetEngagementLimitedErr) - .getOrElse(GenericAccessDeniedErr) - case TrustedFriendsRetweetNotAllowed => - TrustedFriendsRetweetNotAllowedErr - case StaleTweetRetweetNotAllowed => - StaleTweetRetweetNotAllowedErr - case _ => - GenericAccessDeniedErr - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..52d7ef93b1b75e46106b282c8d09826f4bf8227d GIT binary patch literal 42710 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.scala deleted file mode 100644 index 3530d68d8..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/CreateTweetColumn.scala +++ /dev/null @@ -1,546 +0,0 @@ -package com.twitter.tweetypie -package federated.columns - -import com.twitter.accounts.util.SafetyMetadataUtils -import com.twitter.ads.callback.thriftscala.EngagementRequest -import com.twitter.bouncer.thriftscala.{Bounce => BouncerBounce} -import com.twitter.escherbird.thriftscala.TweetEntityAnnotation -import com.twitter.geo.model.LatitudeLongitude -import com.twitter.stitch.Stitch -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config.AllOf -import com.twitter.strato.config.BouncerAccess -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.opcontext.OpContext -import com.twitter.strato.response.Err -import com.twitter.strato.thrift.ScroogeConv -import com.twitter.tweetypie.decider.overrides.TweetyPieDeciderOverrides -import com.twitter.tweetypie.federated.columns.ApiErrors._ -import com.twitter.tweetypie.federated.columns.CreateTweetColumn.toCreateTweetErr -import com.twitter.tweetypie.federated.context.GetRequestContext -import com.twitter.tweetypie.federated.prefetcheddata.PrefetchedDataRequest -import com.twitter.tweetypie.federated.prefetcheddata.PrefetchedDataResponse -import com.twitter.tweetypie.federated.promotedcontent.TweetPromotedContentLogger -import com.twitter.tweetypie.federated.promotedcontent.TweetPromotedContentLogger._ -import com.twitter.tweetypie.repository.UnmentionInfoRepository -import com.twitter.tweetypie.repository.VibeRepository -import com.twitter.tweetypie.thriftscala.TransientCreateContext -import com.twitter.tweetypie.thriftscala.TweetCreateContextKey -import com.twitter.tweetypie.thriftscala.TweetCreateState._ -import com.twitter.tweetypie.thriftscala.{graphql => gql} -import com.twitter.tweetypie.util.CommunityAnnotation -import com.twitter.tweetypie.util.ConversationControls -import com.twitter.tweetypie.util.TransientContextUtil -import com.twitter.tweetypie.{thriftscala => thrift} -import com.twitter.util.Throwables -import com.twitter.weaverbird.common.{GetRequestContext => WGetRequestContext} - -class CreateTweetColumn( - postTweet: thrift.PostTweetRequest => Future[thrift.PostTweetResult], - getRequestContext: GetRequestContext, - prefetchedDataRepository: PrefetchedDataRequest => Stitch[PrefetchedDataResponse], - unmentionInfoRepository: UnmentionInfoRepository.Type, - vibeRepository: VibeRepository.Type, - logTweetPromotedContent: TweetPromotedContentLogger.Type, - statsReceiver: StatsReceiver, - enableCommunityTweetCreatesDecider: Gate[Unit], -) extends StratoFed.Column(CreateTweetColumn.Path) - with StratoFed.Execute.StitchWithContext - with StratoFed.HandleDarkRequests { - - override val policy: Policy = AllOf( - Seq(AccessPolicy.TweetMutationCommonAccessPolicies, BouncerAccess())) - - // The underlying call to thriftTweetService.postRetweet is not idempotent - override val isIdempotent: Boolean = false - - override type Arg = gql.CreateTweetRequest - override type Result = gql.CreateTweetResponseWithSubqueryPrefetchItems - - override val argConv: Conv[Arg] = ScroogeConv.fromStruct - override val resultConv: Conv[Result] = ScroogeConv.fromStruct - - override val contactInfo: ContactInfo = TweetypieContactInfo - override val metadata: OpMetadata = - OpMetadata( - Some(Production), - Some( - PlainText( - """ - Creates a tweet using the calling authenticated Twitter user as author. - NOTE, not all Tweet space fields are GraphQL queryable in the CreateTweet mutation response. - See http://go/missing-create-tweet-fields. - """)) - ) - - private val getWeaverbirdCtx = new WGetRequestContext() - - override def execute(request: Arg, opContext: OpContext): Stitch[Result] = { - - val ctx = getRequestContext(opContext) - - // First, do any request parameter validation that can result in an error - // prior to calling into thriftTweetService.postTweet. - val safetyLevel = ctx.safetyLevel.getOrElse(throw SafetyLevelMissingErr) - - val trackingId = request.engagementRequest match { - case Some(engagementRequest: EngagementRequest) if ctx.hasPrivilegePromotedTweetsInTimeline => - TrackingId.parse(engagementRequest.impressionId, statsReceiver) - case Some(e: EngagementRequest) => - throw ClientNotPrivilegedErr - case None => - None - } - - val deviceSource = ctx.deviceSource.getOrElse(throw GenericAccessDeniedErr) - - if (request.nullcast && !ctx.hasPrivilegeNullcastingAccess) { - throw GenericAccessDeniedErr - } - - val safetyMetadata = SafetyMetadataUtils.makeSafetyMetaData( - sessionHash = ctx.sessionHash, - knownDeviceToken = ctx.knownDeviceToken, - contributorId = ctx.contributorId - ) - - val cardReference: Option[thrift.CardReference] = - request.cardUri.filter(_.nonEmpty).map(thrift.CardReference(_)) - - val escherbirdEntityAnnotations: Option[thrift.EscherbirdEntityAnnotations] = - request.semanticAnnotationIds - .filter(_.nonEmpty) - .map((seq: Seq[gql.TweetAnnotation]) => seq.map(parseTweetEntityAnnotation)) - .map(thrift.EscherbirdEntityAnnotations(_)) - - val mediaEntities = request.media.map(_.mediaEntities) - val mediaUploadIds = mediaEntities.map(_.map(_.mediaId)).filter(_.nonEmpty) - - val mediaTags: Option[thrift.TweetMediaTags] = { - val mediaTagsAuthorized = !ctx.isContributorRequest - - val tagMap: Map[MediaId, Seq[thrift.MediaTag]] = - mediaEntities - .getOrElse(Nil) - .filter(_ => mediaTagsAuthorized) - .filter(_.taggedUsers.nonEmpty) - .map(mediaEntity => - mediaEntity.mediaId -> - mediaEntity.taggedUsers - .map(user_id => thrift.MediaTag(thrift.MediaTagType.User, Some(user_id)))) - .toMap - - Option(tagMap) - .filter(_.nonEmpty) - .map(thrift.TweetMediaTags(_)) - } - - // Can not have both conversation controls and communities defined for a tweet - // as they have conflicting permissions on who can reply to the tweet. - val communities = parseCommunityIds(escherbirdEntityAnnotations) - if (request.conversationControl.isDefined && communities.nonEmpty) { - throw CannotConvoControlAndCommunitiesErr - } - - // Currently we do not support posting to multiple communities. - if (communities.length > 1) { - throw TooManyCommunitiesErr - } - - // Kill switch for community tweets in case we need to disable them for app security. - if (communities.nonEmpty && !enableCommunityTweetCreatesDecider()) { - throw CommunityUserNotAuthorizedErr - } - - // additionalFields is used to marshal multiple input params and - // should only be defined if one or more of those params are defined. - val additionalFields: Option[Tweet] = - cardReference - .orElse(escherbirdEntityAnnotations) - .orElse(mediaTags) - .map(_ => - thrift.Tweet( - 0L, - cardReference = cardReference, - escherbirdEntityAnnotations = escherbirdEntityAnnotations, - mediaTags = mediaTags - )) - - val transientContext: Option[TransientCreateContext] = - parseTransientContext( - request.batchCompose, - request.periscope, - ctx.twitterUserId, - ) - - // PostTweetRequest.additionalContext is marked as deprecated in favor of .transientContext, - // but the REST API still supports it and it is still passed along through Tweetypie, and - // FanoutService and Notifications still depend on it. - val additionalContext: Option[Map[TweetCreateContextKey, String]] = - transientContext.map(TransientContextUtil.toAdditionalContext) - - val thriftPostTweetRequest = thrift.PostTweetRequest( - userId = ctx.twitterUserId, - text = request.tweetText, - createdVia = deviceSource, - inReplyToTweetId = request.reply.map(_.inReplyToTweetId), - geo = request.geo.flatMap(parseTweetCreateGeo), - autoPopulateReplyMetadata = request.reply.isDefined, - excludeReplyUserIds = request.reply.map(_.excludeReplyUserIds).filter(_.nonEmpty), - nullcast = request.nullcast, - // Send a dark request to Tweetypie if the dark_request directive is set or - // if the Tweet is undo-able. - dark = ctx.isDarkRequest || request.undoOptions.exists(_.isUndo), - hydrationOptions = Some(HydrationOptions.writePathHydrationOptions(ctx.cardsPlatformKey)), - remoteHost = ctx.remoteHost, - safetyMetaData = Some(safetyMetadata), - attachmentUrl = request.attachmentUrl, - mediaUploadIds = mediaUploadIds, - mediaMetadata = None, - transientContext = transientContext, - additionalContext = additionalContext, - conversationControl = request.conversationControl.map(parseTweetCreateConversationControl), - exclusiveTweetControlOptions = request.exclusiveTweetControlOptions.map { _ => - thrift.ExclusiveTweetControlOptions() - }, - trustedFriendsControlOptions = - request.trustedFriendsControlOptions.map(parseTrustedFriendsControlOptions), - editOptions = request.editOptions.flatMap(_.previousTweetId.map(thrift.EditOptions(_))), - collabControlOptions = request.collabControlOptions.map(parseCollabControlOptions), - additionalFields = additionalFields, - trackingId = trackingId, - noteTweetOptions = request.noteTweetOptions.map(options => - thrift.NoteTweetOptions( - options.noteTweetId, - options.mentionedScreenNames, - options.mentionedUserIds, - options.isExpandable)) - ) - - val stitchPostTweet = - Stitch.callFuture { - TweetyPieDeciderOverrides.ConversationControlUseFeatureSwitchResults.On { - postTweet(thriftPostTweetRequest) - } - } - - for { - engagement <- request.engagementRequest - if !request.reply.exists(_.inReplyToTweetId == 0) // no op per go/rb/845242 - engagementType = if (request.reply.isDefined) ReplyEngagement else TweetEngagement - } logTweetPromotedContent(engagement, engagementType, ctx.isDarkRequest) - - stitchPostTweet.flatMap { result: thrift.PostTweetResult => - result.state match { - - case thrift.TweetCreateState.Ok => - val unmentionSuccessCounter = statsReceiver.counter("unmention_info_success") - val unmentionFailuresCounter = statsReceiver.counter("unmention_info_failures") - val unmentionFailuresScope = statsReceiver.scope("unmention_info_failures") - - val unmentionInfoStitch = result.tweet match { - case Some(tweet) => - unmentionInfoRepository(tweet) - .onFailure { t => - unmentionFailuresCounter.incr() - unmentionFailuresScope.counter(Throwables.mkString(t): _*).incr() - } - .onSuccess { _ => - unmentionSuccessCounter.incr() - } - .rescue { - case _ => - Stitch.None - } - case _ => - Stitch.None - } - - val vibeSuccessCounter = statsReceiver.counter("vibe_success") - val vibeFailuresCounter = statsReceiver.counter("vibe_failures") - val vibeFailuresScope = statsReceiver.scope("vibe_failures") - - val vibeStitch = result.tweet match { - case Some(tweet) => - vibeRepository(tweet) - .onSuccess { _ => - vibeSuccessCounter.incr() - } - .onFailure { t => - vibeFailuresCounter.incr() - vibeFailuresScope.counter(Throwables.mkString(t): _*).incr() - } - .rescue { - case _ => - Stitch.None - } - case _ => - Stitch.None - } - - Stitch - .join(unmentionInfoStitch, vibeStitch) - .liftToOption() - .flatMap { prefetchFields => - val r = PrefetchedDataRequest( - tweet = result.tweet.get, - sourceTweet = result.sourceTweet, - quotedTweet = result.quotedTweet, - safetyLevel = safetyLevel, - unmentionInfo = prefetchFields.flatMap(params => params._1), - vibe = prefetchFields.flatMap(params => params._2), - requestContext = getWeaverbirdCtx() - ) - - prefetchedDataRepository(r) - .liftToOption() - .map((prefetchedData: Option[PrefetchedDataResponse]) => { - gql.CreateTweetResponseWithSubqueryPrefetchItems( - data = Some(gql.CreateTweetResponse(result.tweet.map(_.id))), - subqueryPrefetchItems = prefetchedData.map(_.value) - ) - }) - } - - case errState => - throw toCreateTweetErr(errState, result.bounce, result.failureReason) - } - } - } - - private[this] def parseTweetCreateGeo(gqlGeo: gql.TweetGeo): Option[thrift.TweetCreateGeo] = { - val coordinates: Option[thrift.GeoCoordinates] = - gqlGeo.coordinates.map { coords => - LatitudeLongitude.of(coords.latitude, coords.longitude) match { - case Return(latlon: LatitudeLongitude) => - thrift.GeoCoordinates( - latitude = latlon.latitudeDegrees, - longitude = latlon.longitudeDegrees, - geoPrecision = latlon.precision, - display = coords.displayCoordinates - ) - case Throw(_) => - throw InvalidCoordinatesErr - } - } - - val geoSearchRequestId = gqlGeo.geoSearchRequestId.map { id => - if (id.isEmpty) { - throw InvalidGeoSearchRequestIdErr - } - thrift.TweetGeoSearchRequestID(id) - } - - if (coordinates.isEmpty && gqlGeo.placeId.isEmpty) { - None - } else { - Some( - thrift.TweetCreateGeo( - coordinates = coordinates, - placeId = gqlGeo.placeId, - geoSearchRequestId = geoSearchRequestId - )) - } - } - - private[this] def parseTweetCreateConversationControl( - gqlCC: gql.TweetConversationControl - ): thrift.TweetCreateConversationControl = - gqlCC.mode match { - case gql.ConversationControlMode.ByInvitation => - ConversationControls.Create.byInvitation() - case gql.ConversationControlMode.Community => - ConversationControls.Create.community() - case gql.ConversationControlMode.EnumUnknownConversationControlMode(_) => - throw ConversationControlNotSupportedErr - } - - private[this] def parseTweetEntityAnnotation( - gqlTweetAnnotation: gql.TweetAnnotation - ): TweetEntityAnnotation = - TweetEntityAnnotation( - gqlTweetAnnotation.groupId, - gqlTweetAnnotation.domainId, - gqlTweetAnnotation.entityId - ) - - private[this] def parseCommunityIds( - escherbirdAnnotations: Option[thrift.EscherbirdEntityAnnotations] - ): Seq[Long] = - escherbirdAnnotations - .map(_.entityAnnotations).getOrElse(Nil) - .flatMap { - case CommunityAnnotation(id) => Seq(id) - case _ => Nil - } - - private[this] def parseBatchMode( - gqlBatchComposeMode: gql.BatchComposeMode - ): thrift.BatchComposeMode = { - - gqlBatchComposeMode match { - case gql.BatchComposeMode.BatchFirst => - thrift.BatchComposeMode.BatchFirst - case gql.BatchComposeMode.BatchSubsequent => - thrift.BatchComposeMode.BatchSubsequent - case gql.BatchComposeMode.EnumUnknownBatchComposeMode(_) => - throw InvalidBatchModeParameterErr - } - } - - private[this] def parseTransientContext( - gqlBatchComposeMode: Option[gql.BatchComposeMode], - gqlPeriscope: Option[gql.TweetPeriscopeContext], - twitterUserId: UserId, - ): Option[TransientCreateContext] = { - val batchComposeMode = gqlBatchComposeMode.map(parseBatchMode) - - // Per c.t.fanoutservice.model.Tweet#deviceFollowType, isLive=None and Some(false) are - // equivalent and the creatorId is discarded in both cases. - val periscopeIsLive = gqlPeriscope.map(_.isLive).filter(_ == true) - val periscopeCreatorId = if (periscopeIsLive.isDefined) Some(twitterUserId) else None - - if (batchComposeMode.isDefined || periscopeIsLive.isDefined) { - Some( - thrift.TransientCreateContext( - batchCompose = batchComposeMode, - periscopeIsLive = periscopeIsLive, - periscopeCreatorId = periscopeCreatorId - ) - ) - } else { - None - } - } - - private[this] def parseTrustedFriendsControlOptions( - gqlTrustedFriendsControlOptions: gql.TrustedFriendsControlOptions - ): thrift.TrustedFriendsControlOptions = { - thrift.TrustedFriendsControlOptions( - trustedFriendsListId = gqlTrustedFriendsControlOptions.trustedFriendsListId - ) - } - - private[this] def parseCollabControlOptions( - gqlCollabControlOptions: gql.CollabControlOptions - ): thrift.CollabControlOptions = { - gqlCollabControlOptions.collabControlType match { - case gql.CollabControlType.CollabInvitation => - thrift.CollabControlOptions.CollabInvitation( - thrift.CollabInvitationOptions( - collaboratorUserIds = gqlCollabControlOptions.collaboratorUserIds - ) - ) - case gql.CollabControlType.EnumUnknownCollabControlType(_) => - throw CollabTweetInvalidParamsErr - } - } -} - -object CreateTweetColumn { - val Path = "tweetypie/createTweet.Tweet" - - def toCreateTweetErr( - errState: thrift.TweetCreateState, - bounce: Option[BouncerBounce], - failureReason: Option[String] - ): Err = errState match { - case TextCannotBeBlank => - TweetCannotBeBlankErr - case TextTooLong => - TweetTextTooLongErr - case Duplicate => - DuplicateStatusErr - case MalwareUrl => - MalwareTweetErr - case UserDeactivated | UserSuspended => - // should not occur since this condition is caught by access policy filters - CurrentUserSuspendedErr - case RateLimitExceeded => - RateLimitExceededErr - case UrlSpam => - TweetUrlSpamErr - case Spam | UserReadonly => - TweetSpammerErr - case SpamCaptcha => - CaptchaChallengeErr - case SafetyRateLimitExceeded => - SafetyRateLimitExceededErr - case Bounce if bounce.isDefined => - accessDeniedByBouncerErr(bounce.get) - case MentionLimitExceeded => - MentionLimitExceededErr - case UrlLimitExceeded => - UrlLimitExceededErr - case HashtagLimitExceeded => - HashtagLimitExceededErr - case CashtagLimitExceeded => - CashtagLimitExceededErr - case HashtagLengthLimitExceeded => - HashtagLengthLimitExceededErr - case TooManyAttachmentTypes => - TooManyAttachmentTypesErr - case InvalidUrl => - InvalidUrlErr - case DisabledByIpiPolicy => - failureReason - .map(tweetEngagementLimitedErr) - .getOrElse(GenericTweetCreateErr) - case InvalidAdditionalField => - failureReason - .map(invalidAdditionalFieldWithReasonErr) - .getOrElse(InvalidAdditionalFieldErr) - // InvalidImage has been deprecated by tweetypie. Use InvalidMedia instead. - case InvalidMedia | InvalidImage | MediaNotFound => - invalidMediaErr(failureReason) - case InReplyToTweetNotFound => - InReplyToTweetNotFoundErr - case InvalidAttachmentUrl => - InvalidAttachmentUrlErr - case ConversationControlNotAllowed => - ConversationControlNotAuthorizedErr - case InvalidConversationControl => - ConversationControlInvalidErr - case ReplyTweetNotAllowed => - ConversationControlReplyRestricted - case ExclusiveTweetEngagementNotAllowed => - ExclusiveTweetEngagementNotAllowedErr - case CommunityReplyTweetNotAllowed => - CommunityReplyTweetNotAllowedErr - case CommunityUserNotAuthorized => - CommunityUserNotAuthorizedErr - case CommunityNotFound => - CommunityNotFoundErr - case SuperFollowsInvalidParams => - SuperFollowInvalidParamsErr - case SuperFollowsCreateNotAuthorized => - SuperFollowCreateNotAuthorizedErr - case CommunityProtectedUserCannotTweet => - CommunityProtectedUserCannotTweetErr - case TrustedFriendsInvalidParams => - TrustedFriendsInvalidParamsErr - case TrustedFriendsEngagementNotAllowed => - TrustedFriendsEngagementNotAllowedErr - case TrustedFriendsCreateNotAllowed => - TrustedFriendsCreateNotAllowedErr - case TrustedFriendsQuoteTweetNotAllowed => - TrustedFriendsQuoteTweetNotAllowedErr - case CollabTweetInvalidParams => - CollabTweetInvalidParamsErr - case StaleTweetEngagementNotAllowed => - StaleTweetEngagementNotAllowedErr - case StaleTweetQuoteTweetNotAllowed => - StaleTweetQuoteTweetNotAllowedErr - case FieldEditNotAllowed => - FieldEditNotAllowedErr - case NotEligibleForEdit => - NotEligibleForEditErr - case _ => - GenericTweetCreateErr - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..684f55bc692d48a5f82ba93574ab9edb3ace7018 GIT binary patch literal 37921 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 aDJHx+bh4KKXVBWLQU<)i=~0@tcJzOr722Nw literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.scala deleted file mode 100644 index 48828d7da..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/DeleteTweetColumn.scala +++ /dev/null @@ -1,81 +0,0 @@ -package com.twitter.tweetypie.federated.columns - -import com.twitter.stitch.Stitch -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.opcontext.OpContext -import com.twitter.strato.thrift.ScroogeConv -import com.twitter.tweetypie.federated.context.GetRequestContext -import com.twitter.tweetypie.federated.prefetcheddata.PrefetchedDataResponse -import com.twitter.tweetypie.thriftscala.TweetDeleteState -import com.twitter.tweetypie.thriftscala.{graphql => gql} -import com.twitter.tweetypie.{thriftscala => thrift} -import com.twitter.util.Future - -class DeleteTweetColumn( - deleteTweet: thrift.DeleteTweetsRequest => Future[Seq[thrift.DeleteTweetResult]], - getRequestContext: GetRequestContext, -) extends StratoFed.Column(DeleteTweetColumn.Path) - with StratoFed.Execute.StitchWithContext - with StratoFed.HandleDarkRequests { - - override val policy: Policy = AccessPolicy.TweetMutationCommonAccessPolicies - - override val isIdempotent: Boolean = true - - override type Arg = gql.DeleteTweetRequest - override type Result = gql.DeleteTweetResponseWithSubqueryPrefetchItems - - override val argConv: Conv[Arg] = ScroogeConv.fromStruct - override val resultConv: Conv[Result] = ScroogeConv.fromStruct - - override val contactInfo: ContactInfo = TweetypieContactInfo - override val metadata: OpMetadata = - OpMetadata(Some(Production), Some(PlainText("Deletes a tweet by the calling Twitter user."))) - - override def execute(request: Arg, opContext: OpContext): Stitch[Result] = { - val ctx = getRequestContext(opContext) - - val thriftDeleteTweetRequest = thrift.DeleteTweetsRequest( - tweetIds = Seq(request.tweetId), - // byUserId is picked up by the context in tweetypie.deleteTweet, - // but we're passing it in here to be explicit - byUserId = Some(ctx.twitterUserId), - ) - - val stitchDeleteTweet = handleDarkRequest(opContext)( - light = { - Stitch.callFuture(deleteTweet(thriftDeleteTweetRequest)) - }, - // For dark requests, we don't want to send traffic to tweetypie. - // Since the response is the same regardless of the request, we take a no-op - // action instead. - dark = Stitch.value(Seq(thrift.DeleteTweetResult(request.tweetId, TweetDeleteState.Ok))) - ) - - stitchDeleteTweet.map { result: Seq[thrift.DeleteTweetResult] => - result.headOption match { - case Some(thrift.DeleteTweetResult(id, TweetDeleteState.Ok)) => - gql.DeleteTweetResponseWithSubqueryPrefetchItems( - data = Some(gql.DeleteTweetResponse(Some(id))), - // Prefetch data is always NotFound to prevent subqueries from hydrating via weaverbird - // and possibly returning inconsistent results, i.e. a Found tweet. - subqueryPrefetchItems = Some(PrefetchedDataResponse.notFound(id).value) - ) - case Some(thrift.DeleteTweetResult(_, TweetDeleteState.PermissionError)) => - throw ApiErrors.DeletePermissionErr - case _ => - throw ApiErrors.GenericAccessDeniedErr - } - } - } -} - -object DeleteTweetColumn { - val Path = "tweetypie/deleteTweet.Tweet" -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..b250529b18e81b23caebc7a7a7d543a023c5d84d GIT binary patch literal 38631 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

      ~Op0nJORlnX{_2Ila74?Macw zl^P55XHFvYG%*HmQ>c~R8rH*jA!rw589KQ?3^7}gd~K_R2YHfLRCEf;!DMQC=|hms zihs@OlrF+XUM0P7(=+6aM?LB84JWicQAB8{^_a>ck$wH`s_1}{nApfHsRN&g_-p%eOzkS(Z9L}!==Q_;u56)?tV+RXARL?v+|EcL3Mw~TwQ(p z6vUm`mA9+(-jJhJgGasbB#(R&PPH>eHQSn7SW8S08|gOH;4{yuB*2F{@N$bJ`4pH1 zA#k?fPRV*vLLFq8DeyuDlRvuOwqHJ$KwB~_I_QY&e3~&**_5-2$W*jYRXZc+o0r%| z_X|#~J6L=^+nI!V?FQ}YJS>RA%?0MWDvCLF()c)y=P3`v68}8PA5YR?U-B<631M=C zR!vA}X*o4@(EqlOERG9}xKL}#aHi^>*yom*iej^m4JM~qS@coH7b-8}j=}05D~`K6 zt`FPWxMU)-=^mU4-j7rn6KR4N_BVv$RjzezwFA&&2G#g=o{xL&%H)NL<+AfCuC8cS z>A2tA7Ynm&=-S_Tk3fPQ@0C?U6U{g?5YIPWQtmFsO}D=1V96A8JMGAS=;lfC5r$jW zP`z_jlH%DylPt^^sr8%|1u@h0-)2tMChSIEJ?+;oHTK7IO)8H64xUUs6>^DuzfL8! zFOrdM9vjtKOln5WGI?5>mf7Yb-h~&_Wtcr;N*Ccvnp9O49y$ic) z8gOrO6}=JO!cpA(`AHN`x2^bLrEr2$9X9Q(BqdymPevw^y02j+t1Y@uXDB+&-?D0M z7qRb5kgIf5O=h-iNtji;n~vM&=u0Px2gPl3CGQB|n3N~1E|P&Ae?ot)!vU+yr_Jb4 z*MYb9l2mi0=u*n{K+=#XDJz7XRs&&*BrA<6wV8VCb4h$tl-b+)xE6!ZG2&RjTTyd~L*;3-0^%Z~!E$~PPL{q7tW&J4?OIi`>^5Mx zl#UF(yyjuHJG_E5U3;$R=u;{;>*)j&<#^noI3y0u-oJDs#L&)Pc2Wbrrq>QvWX)ml z6kX(i)lTomj!0qehkkqD+!3!jRo+9M!(t*Sv+j$M< zOB8Q8oaxzquvu>E16s}a+6%VHl)X>B+p>J;8E()I+oh^ze@#`MWwhea~uOu~p93KCj z5?tp#OH9$BtUaNGF?7Eyc6Zpl7t;#4^C4(*-m5p1G4bIGIzlsI>NV+s&8IIZx?80I zM_YGg=(yUvV2zQAk_@pD?ocB zxmRdkS=fylVCDBnIy{G?x`rqZdg=636dgJ;pf3{TO z*4uSWO_-PkSiY9WIUzxL8W*b0-6UiJ5o#AubNiZh{MfL-IS9o1I8Y3B@$|Pd5B7HP zv-ujGfdRpA6TJ=KQVLK<=J}xp_E@Gz0OG$G|66De7RJT!m|X!b832S|&AA^NmT49^ z^Z&cY$;k zfR6a)8~})btH87WO74jj-J=XN-VHP*wxjU|;9kDT|9kSEA;0Vee5KIuiHZ=2tpyu| zZwCnuM92Rbmj1yWF5m1*a36p_DEUK=WuoZs5Q9E13Fd%((rpeZ@CWB769p^>8!y{( zZOnH$$c6zEz(&M2!7KDTVTUaN)`P3Y+j{1R?|N_z8H@nu-`faA^e?k RucK-=!~qx{-f3Tt{sr{9L0

      literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.scala deleted file mode 100644 index c6b3cf246..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldColumn.scala +++ /dev/null @@ -1,141 +0,0 @@ -package com.twitter.tweetypie -package federated.columns - -import com.twitter.io.Buf -import com.twitter.scrooge.TFieldBlob -import com.twitter.stitch.Stitch -import com.twitter.strato.access.Access -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config.AllowAll -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.data.Type -import com.twitter.strato.data.Val -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.opcontext.OpContext -import com.twitter.strato.serialization.MVal -import com.twitter.strato.serialization.Thrift -import com.twitter.strato.util.Strings -import com.twitter.tweetypie.thriftscala.GetTweetFieldsResult -import com.twitter.tweetypie.thriftscala.SetAdditionalFieldsRequest -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.tweetypie.thriftscala.TweetFieldsResultState.Found -import com.twitter.util.Future -import org.apache.thrift.protocol.TField - -/** - * Federated strato column to return tweet fields - * @param federatedFieldsGroup Group to be used for Stitch batching. - * This is a function that takes a GroupOptions and returns a FederatedFieldGroup. - * Using a function that accepts a GroupOptions allows for Stitch to handle a new group for distinct GroupOptions. - * @param setAdditionalFields Handler to set additional fields on tweets. - * @param stratoValueType Type to be returned by the strato column. - * @param tfield Tweet thrift field to be stored - * @param pathName Path to be used in the strato catalog - */ -class FederatedFieldColumn( - federatedFieldsGroup: FederatedFieldGroupBuilder.Type, - setAdditionalFields: SetAdditionalFieldsRequest => Future[Unit], - stratoValueType: Type, - tfield: TField, - pathOverride: Option[String] = None) - extends StratoFed.Column(pathOverride.getOrElse(FederatedFieldColumn.makeColumnPath(tfield))) - with StratoFed.Fetch.StitchWithContext - with StratoFed.Put.Stitch { - - type Key = Long - type View = Unit - type Value = Val.T - - override val keyConv: Conv[Key] = Conv.ofType - override val viewConv: Conv[View] = Conv.ofType - override val valueConv: Conv[Value] = Conv(stratoValueType, identity, identity) - - override val policy: Policy = AllowAll - - /* - * A fetch that proxies GetTweetFieldsColumn.fetch but only requests and - * returns one specific field. - */ - override def fetch(tweetId: Key, view: View, opContext: OpContext): Stitch[Result[Value]] = { - - val twitterUserId: Option[UserId] = Access.getTwitterUserId match { - // Access.getTwitterUserId should return a value when request is made on behalf of a user - // and will not return a value otherwise - case Some(twitterUser) => Some(twitterUser.id) - case None => None - } - - val stitchGroup = federatedFieldsGroup(GroupOptions(twitterUserId)) - - Stitch - .call(FederatedFieldReq(tweetId, tfield.id), stitchGroup).map { - result: GetTweetFieldsResult => - result.tweetResult match { - case Found(f) => - f.tweet.getFieldBlob(tfield.id) match { - case Some(v: TFieldBlob) => - found(blobToVal(v)) - case None => missing - } - case _ => missing - } - } - - } - - /* - * A strato put interface for writing a single additional field to a tweet - */ - override def put(tweetId: Key, value: Val.T): Stitch[Unit] = { - val tweet: Tweet = Tweet(id = tweetId).setField(valToBlob(value)) - val request: SetAdditionalFieldsRequest = SetAdditionalFieldsRequest(tweet) - Stitch.callFuture(setAdditionalFields(request)) - } - - val mval: Thrift.Codec = MVal.codec(stratoValueType).thrift(4) - - def valToBlob(value: Val.T): TFieldBlob = - TFieldBlob(tfield, mval.write[Buf](value, Thrift.compactProto)) - - def blobToVal(thriftFieldBlob: TFieldBlob): Val.T = - mval.read(thriftFieldBlob.content, Thrift.compactProto) - - override val contactInfo: ContactInfo = TweetypieContactInfo - override val metadata: OpMetadata = OpMetadata( - lifecycle = Some(Production), - description = Some(PlainText(s"A federated column for the field tweet.$stratoValueType")) - ) -} - -object FederatedFieldColumn { - val idAllowlist: Seq[Short] = Seq( - Tweet.CoreDataField.id, - Tweet.LanguageField.id, - Tweet.ConversationMutedField.id - ) - val ID_START = 157 - val ID_END = 32000 - - private val MigrationFields: Seq[Short] = Seq(157) - - def isFederatedField(id: Short) = id >= ID_START && id < ID_END || idAllowlist.contains(id) - - def isMigrationFederatedField(tField: TField): Boolean = MigrationFields.contains(tField.id) - - /* federated field column strato configs must conform to this - * path name scheme for tweetypie to pick them up - */ - def makeColumnPath(tField: TField) = { - val columnName = Strings.toCamelCase(tField.name.stripSuffix("id")) - s"tweetypie/fields/${columnName}.Tweet" - } - - def makeV1ColumnPath(tField: TField): String = { - val columnName = Strings.toCamelCase(tField.name.stripSuffix("id")) - s"tweetypie/fields/$columnName-V1.Tweet" - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.docx new file mode 100644 index 0000000000000000000000000000000000000000..40e363737e17f2c9e692858e315c32140d5f8640 GIT binary patch literal 37817 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 QxT+K&?!fY}Oj$hpABB*eZ~y=R literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.scala deleted file mode 100644 index 88b9db624..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldGroup.scala +++ /dev/null @@ -1,88 +0,0 @@ -package com.twitter.tweetypie.federated.columns - -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.MapGroup -import com.twitter.tweetypie.UserId -import com.twitter.tweetypie.federated.columns.FederatedFieldGroupBuilder.allCountFields -import com.twitter.tweetypie.federated.columns.FederatedFieldGroupBuilder.countTweetFields -import com.twitter.tweetypie.thriftscala.GetTweetFieldsOptions -import com.twitter.tweetypie.thriftscala.GetTweetFieldsRequest -import com.twitter.tweetypie.thriftscala.GetTweetFieldsResult -import com.twitter.tweetypie.thriftscala.StatusCounts -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.tweetypie.thriftscala.TweetInclude -import com.twitter.util.Future -import com.twitter.util.Throw -import com.twitter.util.Try - -case class GroupOptions(twitterUserId: Option[UserId]) - -object FederatedFieldGroupBuilder { - type Type = GroupOptions => MapGroup[FederatedFieldReq, GetTweetFieldsResult] - - def apply( - getTweetFieldsHandler: GetTweetFieldsRequest => Future[Seq[GetTweetFieldsResult]] - ): Type = { - FederatedFieldGroup(getTweetFieldsHandler, _) - } - - // The set of non-deprecated count field includes - val allCountFields: Set[TweetInclude] = Set( - TweetInclude.CountsFieldId(StatusCounts.RetweetCountField.id), - TweetInclude.CountsFieldId(StatusCounts.QuoteCountField.id), - TweetInclude.CountsFieldId(StatusCounts.FavoriteCountField.id), - TweetInclude.CountsFieldId(StatusCounts.ReplyCountField.id), - TweetInclude.CountsFieldId(StatusCounts.BookmarkCountField.id), - ) - - // Tweet field includes which contain counts. These are the only fields where count field includes are relevant. - val countTweetFields: Set[TweetInclude] = Set( - TweetInclude.TweetFieldId(Tweet.CountsField.id), - TweetInclude.TweetFieldId(Tweet.PreviousCountsField.id)) -} - -case class FederatedFieldGroup( - getTweetFieldsHandler: GetTweetFieldsRequest => Future[Seq[GetTweetFieldsResult]], - options: GroupOptions) - extends MapGroup[FederatedFieldReq, GetTweetFieldsResult] { - override protected def run( - reqs: Seq[FederatedFieldReq] - ): Future[FederatedFieldReq => Try[GetTweetFieldsResult]] = { - - // requesting the field ids of the requested additional field ids in this group - val fieldIncludes: Set[TweetInclude] = reqs.map { req: FederatedFieldReq => - TweetInclude.TweetFieldId(req.fieldId) - }.toSet - - val allIncludes: Set[TweetInclude] = if (fieldIncludes.intersect(countTweetFields).nonEmpty) { - // if counts are being requested we include all count fields by default - // because there is no way to specify them individually with federated fields, - fieldIncludes ++ allCountFields - } else { - fieldIncludes - } - - val gtfOptions = GetTweetFieldsOptions( - tweetIncludes = allIncludes, - forUserId = options.twitterUserId, - // visibility filtering happens at the api layer / tweet top level - // and therefore is not required at individual field level - safetyLevel = Some(SafetyLevel.FilterNone) - ) - getTweetFieldsHandler( - GetTweetFieldsRequest( - tweetIds = reqs.map(_.tweetId).distinct, - options = gtfOptions - ) - ).map { - response => - { req => - response.find(_.tweetId == req.tweetId) match { - case Some(result) => Try(result) - case None => - Throw(new NoSuchElementException(s"response not found for tweet: ${req.tweetId}")) - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.docx new file mode 100644 index 0000000000000000000000000000000000000000..0c1b58135835449f3456d1886126f5dfb132ffd0 GIT binary patch literal 36759 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

      xV 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.scala deleted file mode 100644 index 594f46273..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/FederatedFieldReq.scala +++ /dev/null @@ -1,7 +0,0 @@ -package com.twitter.tweetypie.federated.columns - -import com.twitter.tweetypie.TweetId - -// Case class to be used for grouping Stitch requests -// for Federated Fields -case class FederatedFieldReq(tweetId: TweetId, fieldId: Short) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsByUserColumn.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/federated/columns/GetStoredTweetsByUserColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..a2cb64554a35d22801fc666c9e9ac650a8c0a5e1 GIT binary patch literal 37688 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.scala deleted file mode 100644 index a20def18a..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/TweetypieDeciderGates.scala +++ /dev/null @@ -1,91 +0,0 @@ -package com.twitter.tweetypie -package config - -import com.twitter.decider.Decider -import com.twitter.tweetypie.decider.DeciderGates - -object TweetypieDeciderGates { - def apply( - _decider: Decider, - _overrides: Map[String, Boolean] = Map.empty - ): TweetypieDeciderGates = - new TweetypieDeciderGates { - override def decider: Decider = _decider - override def overrides: Map[String, Boolean] = _overrides - override def prefix: String = "tweetypie" - } -} - -trait TweetypieDeciderGates extends DeciderGates { - val checkSpamOnRetweet: Gate[Unit] = linear("check_spam_on_retweet") - val checkSpamOnTweet: Gate[Unit] = linear("check_spam_on_tweet") - val delayEraseUserTweets: Gate[Unit] = linear("delay_erase_user_tweets") - val denyNonTweetPermalinks: Gate[Unit] = linear("deny_non_tweet_permalinks") - val enableCommunityTweetCreates: Gate[Unit] = linear("enable_community_tweet_creates") - val useConversationControlFeatureSwitchResults: Gate[Unit] = linear( - "conversation_control_use_feature_switch_results") - val enableExclusiveTweetControlValidation: Gate[Unit] = linear( - "enable_exclusive_tweet_control_validation") - val enableTrustedFriendsControlValidation: Gate[Unit] = linear( - "enable_trusted_friends_control_validation" - ) - val enableStaleTweetValidation: Gate[Unit] = linear( - "enable_stale_tweet_validation" - ) - val enforceRateLimitedClients: Gate[Unit] = linear("enforce_rate_limited_clients") - val failClosedInVF: Gate[Unit] = linear("fail_closed_in_vf") - val forkDarkTraffic: Gate[Unit] = linear("fork_dark_traffic") - val hydrateConversationMuted: Gate[Unit] = linear("hydrate_conversation_muted") - val hydrateCounts: Gate[Unit] = linear("hydrate_counts") - val hydratePreviousCounts: Gate[Unit] = linear("hydrate_previous_counts") - val hydrateDeviceSources: Gate[Unit] = linear("hydrate_device_sources") - val hydrateEscherbirdAnnotations: Gate[Unit] = linear("hydrate_escherbird_annotations") - val hydrateGnipProfileGeoEnrichment: Gate[Unit] = linear("hydrate_gnip_profile_geo_enrichment") - val hydrateHasMedia: Gate[Unit] = linear("hydrate_has_media") - val hydrateMedia: Gate[Unit] = linear("hydrate_media") - val hydrateMediaRefs: Gate[Unit] = linear("hydrate_media_refs") - val hydrateMediaTags: Gate[Unit] = linear("hydrate_media_tags") - val hydratePastedMedia: Gate[Unit] = linear("hydrate_pasted_media") - val hydratePerspectives: Gate[Unit] = linear("hydrate_perspectives") - val hydratePerspectivesEditsForTimelines: Gate[Unit] = linear( - "hydrate_perspectives_edits_for_timelines") - val hydratePerspectivesEditsForTweetDetail: Gate[Unit] = linear( - "hydrate_perspectives_edits_for_tweet_details") - val hydratePerspectivesEditsForOtherSafetyLevels: Gate[Unit] = - linear("hydrate_perspectives_edits_for_other_levels") - val hydratePlaces: Gate[Unit] = linear("hydrate_places") - val hydrateScrubEngagements: Gate[Unit] = linear("hydrate_scrub_engagements") - val jiminyDarkRequests: Gate[Unit] = linear("jiminy_dark_requests") - val logCacheExceptions: Gate[Unit] = linear("log_cache_exceptions") - val logReads: Gate[Unit] = linear("log_reads") - val logTweetCacheWrites: Gate[TweetId] = byId("log_tweet_cache_writes") - val logWrites: Gate[Unit] = linear("log_writes") - val logYoungTweetCacheWrites: Gate[TweetId] = byId("log_young_tweet_cache_writes") - val maxRequestWidthEnabled: Gate[Unit] = linear("max_request_width_enabled") - val mediaRefsHydratorIncludePastedMedia: Gate[Unit] = linear( - "media_refs_hydrator_include_pasted_media") - val rateLimitByLimiterService: Gate[Unit] = linear("rate_limit_by_limiter_service") - val rateLimitTweetCreationFailure: Gate[Unit] = linear("rate_limit_tweet_creation_failure") - val replicateReadsToATLA: Gate[Unit] = linear("replicate_reads_to_atla") - val replicateReadsToPDXA: Gate[Unit] = linear("replicate_reads_to_pdxa") - val disableInviteViaMention: Gate[Unit] = linear("disable_invite_via_mention") - val shedReadTrafficVoluntarily: Gate[Unit] = linear("shed_read_traffic_voluntarily") - val preferForwardedServiceIdentifierForClientId: Gate[Unit] = - linear("prefer_forwarded_service_identifier_for_client_id") - val enableRemoveUnmentionedImplicitMentions: Gate[Unit] = linear( - "enable_remove_unmentioned_implicit_mentions") - val validateCardRefAttachmentAndroid: Gate[Unit] = linear("validate_card_ref_attachment_android") - val validateCardRefAttachmentNonAndroid: Gate[Unit] = linear( - "validate_card_ref_attachment_non_android") - val tweetVisibilityLibraryEnableParityTest: Gate[Unit] = linear( - "tweet_visibility_library_enable_parity_test") - val enableVfFeatureHydrationInQuotedTweetVLShim: Gate[Unit] = linear( - "enable_vf_feature_hydration_in_quoted_tweet_visibility_library_shim") - val disablePromotedTweetEdit: Gate[Unit] = linear("disable_promoted_tweet_edit") - val shouldMaterializeContainers: Gate[Unit] = linear("should_materialize_containers") - val checkTwitterBlueSubscriptionForEdit: Gate[Unit] = linear( - "check_twitter_blue_subscription_for_edit") - val hydrateBookmarksCount: Gate[Long] = byId("hydrate_bookmarks_count") - val hydrateBookmarksPerspective: Gate[Long] = byId("hydrate_bookmarks_perspective") - val setEditTimeWindowToSixtyMinutes: Gate[Unit] = linear("set_edit_time_window_to_sixty_minutes") -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/config/WritePathHydration.docx new file mode 100644 index 0000000000000000000000000000000000000000..d9fac5799ae14293eaa7c3a10098afda112fb207 GIT binary patch literal 39230 zcmagE19T!$|AD8c_$@IJgo-9X{Ud?2hLc-_T+L@{aM8G9p1)KSF7bffnB5{P`%VPVu3qxSFt(jh!Gi-ni z`?UjHx=6v7g1H(2Novmk(d1PzDoFUl!4L{Ox|$YZ*jVJAVwEt@>%hoqM*fLT%Qmp&qT|ZGIXk zhUM`n1ebZ%8$e0kK&YJvmd?}}Q{@%(IPmyLSrkLU`@9mW^SCfCZ9S>%HwyoQRhh3& zp+g`hd5oEp{nP$bh{*dsH%N1pQ&`5kQ&^XW!k>T8^XVGy^-v#l4dV&Mzxq+^t*iLJ zc|9QCP>Lp*Qu93tw-B)>PXE>O1-hgHQ<%5!ZMkIgfN%VfDE}2jS_eSxKdR_XCdvQw zRlO}B008K(Z(RptD@S^|KgX*0DG6Xk1iwpOkx|kTn`UL&6b<4TxmOPJco-rM)0^ ztMrI_VmN+dvPU)(6#`!BE#x6h%7%+MfoefvT`FraxYD4q1jIXNCkj<(Z`yfVFk4Zn zX4deMsc_eP+Qw_P2o+~lQc(Y8@5}rRnJJgycyEL}77SEvHn4aGqqfviC>QZy zJuAz?k7>fJR)ylcV?jkk>D3=9{P7g+#IOVhD3mAu{&-;t#PJP?Wi7>c0GWuTd4OTb zgZfg_Iw12a6_9}ryH+4BSk)S`d&gUvj9BZ?JtHmjJ`g&8n8jXzYpmt9A+9* z)PgbLoVz@O!oUME^UJ3xxVEY=?S!8@I@oW|xBzQcz_f(Gz$Ihm&7GH4@(1KWY-qY{ z*$x)fjVvteZO}TB`tdm#wKCTtzc){Ckf-STWNzlcjkxldhCpT|KHgoMGiD@;qm&3_ zf{3?^{iNxh%0F)K{rvucxq?Ie#C{EeacT;uLpkp%^zqhzgZ-a%xm#aHKl`eS6$k(T z!oSx=-_Gu@vM5d1tTP~VzEXo|JB6Er3&>-{2P_H932kE4#%H!Hj1x)3fwVF1`FKBv zqH_MAzYpVX;C^i!e_a+Z0dJHsQ%0S5&L5St--K$a2_HFJpE@FP1StnCLsc0<)V9~1 z8LwIdqlI)zQL;a)n!!}@*y{!~3V2^LNiNdKJ~WWv3|oMJUp6kVDCn^CXpYSIkE z0@~B*zTW5rG1t^u6aCvfG5;AJjor;W%+ny$FLcAg9e$tLdr`ZJtP6^D0QB(2vjzgi z`ZCqfo2c{H9yNiHTuxTtcOi<%v7f|A7W%e*cZfM^{u}nOtq%=l+_7+y4{#ta+=44_ zXu?!$Lf{&>u?fv-$i8*swzt38Ibag1Zh+MQ!*71Q9%j`dC-R%)thOVPcu&vqiquWi zR!Hp8RTA=450jH5mnlKtM*nL+6^K z`kg60lV$nj(?>S`d_`PhHDIAp5-iku)dQc8r_0uZt>^tiKQkW^G2UTmdj+nA4M86< zh7$XpeOd;d4d0rej3L5)9P`9>GIZm~`w_oK+LJNnhEX3%0AA{$Sbf2kRKmE+MpYCN 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

    U&BUz_C#|0_69F|3U$s0a~qzX4z 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.thrift deleted file mode 100644 index 500e9ffcf..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/geo/tweet_location_info.thrift +++ /dev/null @@ -1,72 +0,0 @@ -namespace java com.twitter.tweetypie.geo.thriftjava -#@namespace scala com.twitter.tweetypie.geo.thriftscala -#@namespace strato com.twitter.tweetypie.geo -namespace py gen.twitter.tweetypie.geo -namespace rb TweetyPie - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// // -// This file contains type definitions to support the Geo field added to Tweet flexible schema ONLY. // -// It is unlikely to be re-usable so treat it them as private outside the subpackage defined here. // -// // -// In respect to back storage, consider it has limited capacity, provisioned to address particular use cases. // -// There is no free resources outside its current usage plus a future projection (see Storage Capacity below). // -// For example: // -// 1- Adding extra fields to TweetLocationInfo will likely require extra storage. // -// 2- Increase on front-load QPS (read or write) may require extra sharding to not impact delay percentiles. // -// Failure to observe these may impact Tweetypie write-path and read-path. // -// // -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * Flags how a _Place_ is published into a tweet (a.k.a. geotagging). - */ -enum GeoTagPlaceSource { - /** - * Tweet is tagged to a place but it is impossible to determine its source. - * E.g.: created from non-TOO clients or legacy TOO clients - */ - UNKNOWN = 0 - /** - * Tweet is tagged to a Place by reverse geocoding its coordinates. - */ - COORDINATES = 1 - /** - * Tweet is tagged to a Place by the client application on user's behalf. - * N.B.: COORDINATES is not AUTO because the API request doesn't publish a Place - */ - AUTO = 2 - EXPLICIT = 3 - - // free to use, added for backwards compatibility on client code. - RESERVED_4 = 4 - RESERVED_5 = 5 - RESERVED_6 = 6 - RESERVED_7 = 7 -} - -/** - * Information about Tweet's Location(s). - * Designed to enable custom consumption experiences of the Tweet's location(s). - * E.g.: Tweet's perspectival view of a Location entity - * - * To guarantee user's rights of privacy: - * - * - Only include user's published location data or unpublished location data that - * is EXPLICITLY set as publicly available by the user. - * - * - Never include user's unpublished (aka shared) location data that - * is NOT EXPLICITLY set as publicly available by the user. - * - * E.g.: User is asked to share their GPS coordinates with Twitter from mobile client, - * under the guarantee it won't be made publicly available. - * - * Design notes: - * - Tweet's geotagged Place is represented by Tweet.place instead of being a field here. - */ -struct TweetLocationInfo { - /** - * Represents how the Tweet author published the "from" location in a Tweet (a.k.a geo-tagged). - */ - 1: optional GeoTagPlaceSource geotag_place_source -}(persisted='true', hasPersonalData='false') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.docx new file mode 100644 index 0000000000000000000000000000000000000000..1896060dd548b27687aa41fc7a41329f1f246268 GIT binary patch literal 37016 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 H9uN-zlOHC1 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.thrift deleted file mode 100644 index f2a739094..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/media/media_ref.thrift +++ /dev/null @@ -1,20 +0,0 @@ -namespace java com.twitter.tweetypie.media.thriftjava -#@namespace scala com.twitter.tweetypie.media.thriftscala -#@namespace strato com.twitter.tweetypie.media -namespace py gen.twitter.tweetypie.media -namespace rb TweetyPie - - -/** -* A MediaRef represents a reference to a piece of media in MediaInfoService, along with metadata -* about the source Tweet that the media came from in case of pasted media. -**/ -struct MediaRef { - 1: string generic_media_key (personalDataType = 'MediaId') - - // For Tweets with pasted media, the id of the Tweet where this media was copied from - 2: optional i64 source_tweet_id (personalDataType = 'TweetId') - - // The author of source_tweet_id - 3: optional i64 source_user_id (personalDataType = 'UserId') -}(persisted='true', hasPersonalData='true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/media_entity.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/media_entity.docx new file mode 100644 index 0000000000000000000000000000000000000000..2d0886bf68e2fd2a82fd17f0068d336ed116671c GIT binary patch literal 38588 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 fw@UtDh;5AyEzNj<5%gtLZHG7m!{ccBm!p3H(# sizes - 11: string media_path - 12: optional bool is_protected - - /** - * The tweet that this MediaEntity was originally attached to. This value will be set if this - * MediaEntity is either on a retweet or a tweet with pasted-pic. - */ - 13: optional i64 source_status_id (strato.space = "Tweet", strato.name = "sourceStatus", personalDataType = 'TweetId') - - - /** - * The user to attribute views of the media to. - * - * This field should be set when the media's attributableUserId field does not match the current - * Tweet's owner. Retweets of a Tweet with media and "managed media" are some reasons this may - * occur. When the value is None any views should be attributed to the tweet's owner. - **/ - 14: optional i64 source_user_id (strato.space = "User", strato.name = "sourceUser", personalDataType = 'UserId') - - /** - * Additional information specific to the media type. - * - * This field is optional with images (as the image information is in the - * previous fields), but required for animated GIF and native video (as, in - * this case, the previous fields only describe the preview image). - */ - 15: optional TweetMedia.MediaInfo media_info - - /** - * DEPRECATED - * The dominant color for the entire image (or keyframe for video or GIF). - * - * This can be used for placeholders while the media downloads (either a - * solid color or a gradient using the grid). - */ - 16: optional ColorValue dominant_color_overall - - /** - * DEPRECATED - * Dominant color of each quadrant of the image (keyframe for video or GIF). - * - * If present this list should have 4 elements, corresponding to - * [top_left, top_right, bottom_left, bottom_right] - */ - 17: optional list dominant_color_grid - - // obsolete 18: optional map extensions - - /** - * Stratostore extension points data encoded as a Strato record. - */ - 19: optional binary extensions_reply - - /** - * Holds metadata defined by the user for the tweet-asset relationship. - */ - 20: optional MediaInformation.UserDefinedProductMetadata metadata - - /** - * Media key used to interact with the media systems. - */ - 21: optional MediaCommon.MediaKey media_key - - /** - * Flexible structure for additional media metadata. This field is only - * included in a read-path request if specifically requested. It will - * always be included, when applicable, in write-path responses. - */ - 22: optional MediaInformation.AdditionalMetadata additional_metadata - -}(persisted='true', hasPersonalData = 'true') - diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/note_tweet.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/note_tweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..662578aadf6f1c16e1c43e1eec12bcf29a44e424 GIT binary patch literal 36954 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 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/retweet_archival_event.thrift b/tweetypie/common/src/thrift/com/twitter/tweetypie/retweet_archival_event.thrift deleted file mode 100644 index 0476dbded..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/retweet_archival_event.thrift +++ /dev/null @@ -1,30 +0,0 @@ -namespace java com.twitter.tweetypie.thriftjava -namespace py gen.twitter.tweetypie.retweet_archival_event -#@namespace scala com.twitter.tweetypie.thriftscala -#@namespace strato com.twitter.tweetypie -namespace rb TweetyPie -namespace go tweetypie - -/** - * This event is published to "retweet_archival_events" when Tweetypie processes an - * AsyncSetRetweetVisibilityRequest. - * - * This is useful for services (Interaction Counter, Insights Track) that need to - * know when the retweet engagement count of a tweet has been modified due to the - * retweeting user being put in to or out of suspension or read-only mode. - */ -struct RetweetArchivalEvent { - // The retweet id affected by this archival event. - 1: required i64 retweet_id (personalDataType = 'TweetId') - // The source tweet id for the retweet. This tweet had its retweet count modified. - 2: required i64 src_tweet_id (personalDataType = 'TweetId') - 3: required i64 retweet_user_id (personalDataType = 'UserId') - 4: required i64 src_tweet_user_id (personalDataType = 'UserId') - // Approximate time in milliseconds for when the count modification occurred, based on - // Unix Epoch (1 January 1970 00:00:00 UTC). Tweetypie will use the time when it is - // about to send the asynchronous write request to tflock for this timestamp. - 5: required i64 timestamp_ms - // Marks if this event is for archiving(True) or unarchiving(False) action. - // Archiving indicates an engagement count decrement occurred and unarchiving indicates an incremental. - 6: optional bool is_archiving_action -}(persisted='true', hasPersonalData = 'true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD b/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD deleted file mode 100644 index c619298c4..000000000 --- a/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD +++ /dev/null @@ -1,11 +0,0 @@ -create_thrift_libraries( - base_name = "storage_internal", - sources = ["*.thrift"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - generate_languages = [ - "java", - "scala", - ], -) diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..4bfba173282c3ce065d6a7735867ad7ef16f2304 GIT binary patch literal 36782 zcmagFWmufawl<8rdvJGmcL*f7I|TQ}oyLQ^1$TFc;O-EDyF&uO-QUj4?7e69Ip_QS zJX}=Ox@E2Es_KVA=_4c*78n>99GFWwk5-jRQG7Bu7}yvL7#Jp~RaXLF?_y@}VyNcn zVCJmP>|tlylq|2fDvI{`>;*f8MVQoE0u{S_$AQ*?F&>@ z)92kZH#qBVZ9l&uM#!0Xu1;XG)&p1!O;xN02FXweoQlvGbXZNn3{PGMg@c;P(Fn~h zgXR91lH1FKpF8=3guhhw%MvrSMwU$m!q))aFX2Y#>e8Q$8WRSb>)a+88k{WD9qU(n zi%>j<5CLf4_w0I@-N!XKj$rD`qOMhSHZZJ1_D%pc!PK?0KOnO;-|Pi)k5@GqEIV|x zW7K@Dj)G+Hz3wDXGLL%#>1Z0r^pjxH**jvZe1h-#@9yY|Vkw0mmck6~=4R#XCe-~$ zP(O32i`1#Ki^Zmla`5rIIUY%n``+XR>n`(2D)@Ft8Vb<{hz@w)U!Xi4e1cxVyGIJB zzLRedv1EN;WbBSS{|QUp08Hs0 zRrI9(D0&a7-Ub917$WGWp_7@dGYj+YXH~-F2S_$F|1)8!5vmgVW_8KJWdq3{@`b`Z zUnWkA?SV4ID_xz+lKNUWy~KxSyC&uf83hDO48^uVn#S7mfq9F)TAOqijqQeOa4GN| z0c0L(JHgtv>5(@SD57T6ciiS0q{0jvn1i}>4W~0=)#8$d^mZ~RrNL#1=+}rYw3@EI zOtSzOfV5mQS42rw+n%j^#Jxzfi;R)K=uw;lx@ww&DH|?tA&RUc=Cy?E;dD%STw5m2 z*T;4xOWleK<{v>4imC=4l-Dqm9T)?=7L9@>Gp)Pt511$^CN;gL%w0Evl>Hp0iGQ)y zrJm_D#V+~6jn3$DpZzmIVV@CItw7U!29zLlP=ZVWCQ42K2WJ)&fRowpNuHH3uF%hl zCUxf{H7BnTeuV}nB})%}6!Ad@D`2VZmXk}~c08MVa&x!PPA8Yajd)XF_{u?eou{b< z(j+7ygd{ZnEWk7ZQ5*Yp)fi{(DO-x3uPQmX@2ux>_LACy-(;*OQW+l!p*9;*HiJ!H zZXt}HVxXRjbMEsLSyrn`ao!JcRdo5~&l;i$v|lNZN%yhneg*^(hbK}bG@zHY6cdAG zqL=1@ho=mDlAAJsnq8`Z4|3YJg>u8M)=}K~v7yU`zuJtv>Qejl(d3fN4@jhg9Q^D3 zppnW!rWtK53_Ib8+XFNbDmaIza+->Js|Nd4#EG+$K|}M=j<{^EfX}>L+04dLGKKyO2dFd{)xk^@SB% zMv^R6iC89->{prZj9ruYKN|er-oL(EB4oJdxq!kuvOqDQn{}6XeeSy?_-9?NS66Y5 zL3Oc(0s}+)dtE*`IQ&r-wQ>7ZRM1}J@(2rF1IWxRyI1+f{4b^O|d%$B(^@(=M) zZEQP0--j@4zRxT-;Q|c;PmNW@`d{JgqjHrNosj;l^ES(nOdcS*fq@9wCj3N#3>4gJo+_S=pb~#KMSDuuB z&8YKy!V=0F(c9&w-t;GWu7#a0uHY<%=rJ*)!{sc}{Q$xqu1VpRDDc~jv_nPKDeWp4 zZbaj81F33#nP%8!^hsQ|me_DE9~b0{1Z~vlcZy`|Pk`QQ^c<~#HOIKt+lDfMIFygK zC{T|A;!DpslJqMQusTF>iOp%4esyDjt6x04NQqUKkXqmomwQhKS+$r+qE>{c(p;KI|}8k_lB0(NLxkJsFb_FqqJtY91a+Eb8bh=tg7baN(o7QEi6++rak$ zG|)*lLU>B=-E?+H?kw?N(3mgm*bcWIT!j#i++lcutqt(RsVDHZFQZZ8!~w0go2kjd zlbV~90->3>>fW}B@u>r=vLZ!_?>jp(Se{vk&*3v3t_a@dZ+?;db7D-?T)zJb`mjzS z{P}@(2RNCsfIhXZcA(Aak6lTl7c?`FI?ou84C|3?Y-zO9-?@5O&KQS+_pW4pCQ~vU z(qQ-)NJ(SU4NS77c?W}K#qnemj`eUaGnT-@?58QX|s21OK`uR+VEpQ@x*j5AL>cyqAe3o|0zhc2mBKU)g85I^E2 zM31}bIw`Vz?}@L)DmJw?Y-!2gHeL?s_;M~*ubV8VVDs2StxI_8Km2W)pd^B4!cban zhk}2H)Qxyp>0ZEmc+cU=Zc`(@e+Q>z{#IjL=VWHd%F=Lf7X=YDaM7qqh+l3pQ~IEq z5KhMkjT(=Ou*%G<-#;w?j@i!qTNDoaFyv@ zG<97AqvNaR=c`h-ducsFh6@Y@>d`h>6Dg}Za+Rj~m2tua*b1sR!nnzYk^Y*ZMp$EI zU6$tU(mj|aJJif*&0WL&D)Y8}a|oOX6;rw7EbzV}ZgGY|hY(e3>SFxWvW z;5cXnBm}L1e@yg0_wT;&xIar@@b*v(GfsxE8@;4w6Q2;_}|K*gF3Q8L32v_MTg?rD%w7qh7% zh3BvBCU}d3Jn^8edthiOY=th6kJqBJ79r2_=g61D@seqA?7iH10AX`#J87tj2cD7fiq;-Mb}HCD@BZYho9>y$Q_1A%RXYIqg6AXfaB%9ObDEv9 z`eOfbnjx|{40wHreS3IXJc}t2X*u52zkgW2XiuGQe>$A~dD9*mx_jjLQZM*w_x5!o zgax=lVvtgDKHYy9n!3L|zIxnJ@iKmV+32}u%TppkQrX+nsrZ>MEUNzP+Nwdv`)Pi4 z+{-;e&%oYVUYrS0L+pnF4>)hCcB_f5Zz6V&nHlgD*m-fu4=;*&xrnj4^Fj-5BZ zv>!20n9`5hZ}1KAwte>E^w@oT*Sg^W?*lTd$8xYqXU<7X#?yK7&80^=5zqK_B+!Y; z>xIvY;wrIXm(JC*%X4K-L{dD~FNEc_YptujrE)xZkj>Aoea*K^Pxq|rP^wk#ezxf)R0fnk_>=)lK2f9+CT35PH6b@Ho0Xz45 zZ*@A|(%A%EUv;IqALt%?xV`S!sAyjAR}b8H4iWjvE(YJ)!w9Kwjb%LzSPJmE2{aJW zci`&3?0!K0RDrr(ipr)!(x*;hTq!&t=^IAp6E+KUb?dqwKCv34K`>Bz2oIc91Lkj0 zBr99bu=@4WT zAxWv3cAr_(iBnKIpAOzj|T%>16iN;m+}8SoZcx%ok6|H&@;_|osdn&(kl10UgmefdVsBd953=y^EQoN$*@!*ogp9IuVSoPwQ5l0@Y^&h077OY#f`iOImh2iD-q~ zkRRYwG7zYsdJiQX$&L~Wf*G5%Rm9^~TSsT9THmnNi+BK1!CjT3bQ*ZLbj*?;M%;Sx}sTt{SS%%fr|6Gti}mU1&#WoGhcNTe$no9E`KG|atQ}7~OX~4qJkIp^o(T`4-Ugez8?k9; zP#*p!k-|Z^bwZ~}$^I_e!`r^E@)*Jy+w+yHpO5=lYa%6T(S~za?ZOR{>M9ZC*w-k{ zr9_-|>w1dGw%6YE_#x$6dbNJ1NwkFh6@>iFRugV#fpdH>>Dn`;T^JL87d#fGq#=+%6XvaBo@x(W%)_i8)iLi z#F9UrEcj(gVrWtp&n=tQd+wMTE*vlBh(Dl$)=xNjKcA7u(cQ<{S2XLMw1Evr*Nl6+ zrxw*cW|8NvPJ|Bva)U!V`+gs}ao)2y@!(hpd#-8`>UY^O0tMgP9fA4k!89!HR_z5w z`0eJ;Gk7+iUx|YzR`=l)-g5wzzRXakGL%J+Va{ta&$SHRP$JGIGJ-1_n^rw$GAvu@ z@9RlWWRAmA_qPo@S9dV9A!$0H>x~|KO^E*ap*gSG)U`huD{EkzKRoCsWsHB~noLHs zu*vZeN5+-k>Ul2uVvzI~V$P$_uzZgmN<$wRhf$_BrQx>n9R0U=m=^(ha@~&Y+dLG$ z&&8CBoM%!d)wt1YotA6JEKbqq~+bL<jTe5^odWWxNz*jD^weEvYoU96MfkCv+-$v z_nGRPZ^>Tv?x|qW=EwCxKw0^=hQR$##|*4ll9tUg^0(LYx%O%I$LrzC*UOt4lsKl0F~< zp0I0i7;X|^nm-`hlD%6xN)I5YNcosP%gj|0ZK}}jeh@7F>*^@GLug8qt=3ggm7;EPLLc|+!hC?XNmEWTb^h4+eF)zaaoB`Ye5HP{*=EYB z>A^fqqQ#muFA7ayAalMzOKW0}I#mmX&VW9OCT^QN$|4UNzfvsY+Ov~0XE8?wb&8tg zxv$oAqjCD+a`@3o3m0JH7!mL15xbVvP+;zUoMPr%-7-$MhoZq8g;=T2vARRbcBwxX zA&`d<*J5c6JvLUAnSg)p#=w4T zsRugKAc>mdOFgR4rpU{?7Ktelz;$1nveSG)vHmSP;n?Navh5G~j?09eZ)1#lsXD)KE!`4vP{D`Ly*F8{t=4H zQ^K)q`J}8IH=~X?&qrN5I>0aM*q&n`PT3ice37tzT0dW&kz{+3h~5WETkM%GiO(70 z;3GCbRx#t&)2#o>>5h-T_()h=H&!58dRl9uN*3`JKWDvp&4`~i1Swk3n=Nr*+8|5v z$oqEN==-<+>CNUv&^hz-XQqgKdwoz<{rgj z7<#_(X&JI)hX`|sd2d3%)Rb*|R9CMx%%%zGieMe$03-VTCt~wsub- z9JF^BFh?A@wa}PYE6%T~P;W6z!bzFkk{-CaYESQyRvkLF_NGZHxG@!F8@35$zpaiO zh|4m>e5m3Tuiq&})Ts2cNhv&8Q(0}3X?AWmYA@zlmeq06vmRwjpc*D>p?sC*k>ybM zFv%;%zFUZBZfntyRwz_bbel=O?7RZ)ZQZ&ZDIbS3>Url`QJrwClrW&B#c8~v=z6$S zRY}phdvJuOjfW81LuP_Hf>sZ^*KB*{vc%EMLY2Bt9@SgT2u3B(fcU7j7*qHF+uoJ? zY^h@N;~gaizO?K|6}L7r?a1yC2baeA#d1 zD0V`4=Dp@c_WAs2=7jZq0)>Iy%C6=(?105JsD!h+%Jlc2N7UO#jS?8IO4F~zqUg^| z^n|dzBp7J)%9y~?+h(i$IEQoW0ZQ|U$TPES6ECZ1xon&bcu_DY?>SO$(%L4fPBnad zu?3tM804@EOUq+BmtmF5locIsi~H4D9L=~^MyyTCpgZ<2HzPmxUv?mTpPbO>1O_J)}!U7I+`tD!dQ>pDGs2SbW zkM9h2Ie_nZ1>cD9(1o{oZ3bIfcL+AAV7S;=?Ta5D9A3VaOm2H1M0-!W3?lxVy8RAu zPgTL0w6?SitudOcUX>k}4dIqyXLlO^@j+9$O)tCsRrmB!LYf2>mr1A)d6ezgO;+P1 zTYc9E`Ru5x4xgW!8)-eY69Hx=aKolpBr=Bs7$D}8mB=~%f zTcEgC_SV{PhM+tUYlgt4L>RKOj^~$6%*N2^Ts`hDC{uU%PWi*D2g@;UB?pKa!jx|r zG0q+SJh_t>5cP1K@n-OyX^;wfn|IQ34#pPMw>X`j=w;A5v8R{J^LcIqR?`bwl(*!D zIou$=Chzh4Z%{)nrfGM;Lerd&eS+`&$vceb0l7lRLK^vvKpTY3wl#p*5ias65R=Ba zspbc=x>&>yJIc=+($x7p-n@>*&LEtCLzG+|3t?SGy^WwiOppEA;0>3|T~Lkyu4+w; z;s8@^alnB;=6DYDGPK?xU&G=LWK|H%B(?;gI{e3E%le?ds(1T-5lU{0k)SJ)Lb2;M ze20^kIDmiZ0%F6Tdl+$q{8~DN>e?KM7hZ7l;*x;=%Go^UcZv#U2oAS~Wk}X`Nu-Q) z_Td-reO+DNtE&h+-PpmXtZaqiM{%M&J5f@F`CX<1^{Tskgnw=J$&KbxrMb{$wmNak z1Cmqax6S>_OI}uYC+GDMoMpb;;bqQ5<%KZFZcEi`&vHYGEk$J0UGPPYA*;g8mfs3} zYqvreIV{8eh+AhjRlckN;Va#ObuJFBNSk_qCZtzx(D<=gqCN}ZX#XZ%w!pxn;2rgm z{se6G@iq3%hug?+?aN3b$7Lb%xXJ)fI1ZApbmt%8rGJIb{X6`}@9-dE@y>Ez?rZz+ zke6Q8FSAl}84cFWu2MP5EYKZFJ(x#De3GcC<+wKqCvmnVfnJ`S(cepPHNp+eEP_CBc8W<>+avp{71e4EI ztSm~M6)V-c3e8!U2bJib(LGS#rhPe zmzUH{&uczXz-CMPA*XZp7}1fnK+sh${I zp^0dFdvvALbBziwxDXm_@Kw71Gn=#{P}yf5LB}IM1EVt9{+HshM)-?V=Wqj9NU~EE zw~26KVT8MVQah?0n9t45xRT%OsW!!~Gg{nkEzg}1zQAs+d~HNhD%00ND7<85f@%gT zsUWF8@6i)lbtTfi80V6{j#j)nwmn`x)cPTQn)B^Mq@pDzh<w!4?Kg1JCSQK%xTBT5(-W^d;4zD1J^% zF!dDY;%j46Ax#M!Q5m{gHtH3s#IV`%mkE#~LgVuvg(Qa=(Aa}UH~fiUm^Wfe!+snH z)@BmW04sf$))rSlu=QiW2w&t$p9iI2Is8ti{>x79u^Yv?;W!oZ6v<0;4un}(wmTp z1RspjiIyvc|16#}?dupr_g(!@!fz*ONRk-`Q?5Xo_7 zv2i5gmlaGGpdp-KIm}{z9dSgGz31tf2_O97yAJ0yKcfpz z&10mpth9^1(wSN!W}(@3u<@fN7K5u^A~5}&dIlh?A=8Zk{>}CJoeN6->dWZ@x}FOE zMKQ;@xPqf$O@zth7SzcKb!t9xEz=Fm(g1h39meV}oev4xwq^#H#yc5WLo{7hnWNu! zlkqH=%BiMgGaFV(gLq4TUo{Uh=M8PkTNr3SjfuP#iz*2Nrglc-mOGiCps7EDc>iZm z^5j0#&B5gWU$`^I;cu!hmB_Z|@|l?9_XB*<9Phk3Fb*rFntu1Y5tyPK&MDrFWj0*W zf_;3U1>4E|qn(LLR&D{N*@R{)+{|Yub0`f-$RON#Az$Zre>*aJnDbGIx7n1or$bN? z&;im>;g9x|1XFIdv_-)jUYeAPaA$lA_G=HSDeXw>Ka_BfkWQ85oF?;G?6VQ1JhBn| zM`0e(0g7CN^URZJh79~cTS^DrFyWJ19{(>MrNxE-*N1F zstro?qV$$8sKIL68b3?aZf3>AZxa39p?^GVu6HxOwTpD*gec?5>V=|NxveqIvOJD9 z{kS>&5j~+;9aA#5|8QVc5M^#t&%#<#vTVTRMF=zH@~iH&zfbn`t5h@}Z2gS^XknjZ zf|&uJe9k^&^{r}dI9O>_COs&%PVyTfKGMI058eul(<@ou%TuXx`_!w?#|Vzz9}pH7 z(vB>(5|t&~j}Cbg10yTAis+N0JwJz>l)F)m&$xZ7GS!FSL17k1)mlrr7{!Jei6c0` z5K5(G%*%*g@6hr|HluFVLd!UJW5x({6mJmnR<*jdeyWAK(U>=aZ&^3TN$K&n!(i+U zp=tx_r)f2AlNs2`1wv7ek6r(?=-Au}aNJKNi7^r0@vSMEO`d z;Gjirx^3T|z->}8T{|G!x!a5J`;=YuuEl!}=`ZqI*AWo8D(oNREo_{ak<9-G`HYe5 z)XR_e)64JRYw=@%?ELe7UdhWU^>bt zO>&AvuI~M-noXUkhV|*+xNZu+3Y9rf*p>*VtZRgf4tOxd1;F2k*Uov9p-~-!QDH7k zFp3;EHA&z@xjn8k^pRRq+W>bzsb=lTv7d%#TS-ns*;6IhuSTSNFxYGKF;NcXyJrocUG|%^d1i(X*UC%gPIw0sQhdoq()U&MG%( zba}{`#>6t6SUd@G_{D~QSNy~D0%{)hlk#cpo~e92kUNr0eBd1A5bkkAZgv}L;g ziQK%;E~mU#`BCXOfx_&{*=`x1e1)Nypj3XU}De3$$lN)8nbQxT4+rBgxZUUMu*k`77y8jh{i_R0ftK% zj=Kka1IF;RTyKR9s?}aOKIUJU6z#8rmsNoD~K1SQCY%c2M$8 z%0bCHfrA|hux*9*1r@Y^ds&c6K;)nmkrT47osB@A_rAdcK;f`8zHz~SGqS3?7@|FfOo+zdw$k*`_t7NHJyLMlkja1q0pGT1t%beJ0;aO$!on#?kCa zT`hVQ_h8XSpo06$ChZ>Z7Xr;OUHC&9n0@$z>o>T8XQf{lH)!WeMaHn9aSPZm9xW7nm{-nZLPyrxewm`apKL3@RXht)V;FHT= zIC=e0lgr-li{TZM`RelFA&lyF3FUzWSS!`Rq7((%l|)@6&(%v0j^eT1>6K0A3um9O zh}3VQuIU=Ls*I`UF#;dmBjhen4*VaWcgv0)$mc@XMFPackcTTmL#}aah_M$G^j!3o zPq)=~Z-XD2zA<)0pFKbKY$x?-|97dTbG&}3;Br*8j6AQ1$cX-xKL^+{{o`Wx?#mb7 zb35Nz^RR5?Mmn3dfllWIXl0tZ0I_RXTT8eQ41#wlxu!!Y@+#yecfkrx4!nKTu%Eg2 z&t>LxBA^Ba;#vqLjI%@W(aiz_q)>n*6ku7Z$3Gv-?ImZ4+JLT1`RbcBlTsg_WwDHn3ixmaS6$-{T>DmB{B`p#hmWbz+g$Q30 zme$}Zm7&frsr}+`eN=X(m{j1P*tE`?bgx+pJ=(Q~?!J^*vAvO4DcyQc7l;5PV!3Z} z!b)fM*nG|{2_)$&%ocEK*3uym*xL^K;)PGIF`D)bNF z=m7*^YT``U)_Z6XWK}5aXS^Esmkw|J^R5RmMQD*IZu4c;q6RimXc6De%_O=So+(hP zDkAU)pOPUOkvZUqmQ!qBTdJZ%PXg z`qZ;PSuNJYIjpxqXmu1m2C0s13v>Xh1mFLBG&3Ww4pFMqtqw1?HhOm~A$-~8(*lII z3*3V0Wt$qILQ^2^h$LNe`qg8`!cK~}0fW@CuFPr%xFRRr5clUaihUKmC{9{NWR0ni zgXT35tp5r&+&ip}NqB}yh%4M1v&Gwc!QAJ#SWh^900q{2fitD*0D9v;fGqB?=HYz} z8^cpHVbJ5KXGY(1u@jI0&5I%|m$2oLv(cz=r~hv2n416YU_Ty$1ECKZWbcJ=ujBScV$ zLoqG*ae3f+9d}P=NO(7r*uBAr9h1wzh9j#I5FH5DsMG$WKji$2zQn{ra0?n_{$RTm z&>jiielW=S-{EwS!@Kt{*Epzz)cz3o-5o%8Pe`mt!#G()EkRhBgrsC?N~S!AqSLds z&V*6bBJPhVMeZB9*yZ%^tG2{G7JHq4DVkJL#`kkh&!dliQ96%QaN^pG2Bu+=`JSw` zy7F>Gca;s;wyzI22zxanRv5Ab_pq%_GT_RCMJYX;=fQZD$d`QoYMyoeEz0W{Qtv3S zci&jLhKXkg5--)!KImt&UEV7ta*-INVuvy28=OKA^Z9cq1_V{zCGR74hq9=?RZENm z^kN${ct>1e4VR1xsoq*lisw$z#!>>_7kDJb#dvm(QV3W~Je;0BC}}F5k^ldEJ+&q$wnaeNG)m9>sNt1@6{?0LqA-2%XADj#N7&(88C z+TxegQl&1H2KDq<#EYG0CDO)0iq<=JhVh%~F*#9`q~!g_S#y{s?J`_DEieX5ykxDk zsY+X{OLn(Trd6d{=Sn$JxA0`wq~z%5ixKl2)DhbP*-AO`&V!_k3=HPfV>2^kyf0d5 z3JanpX4%K9&haSiCk^!>hn^f4x=a>kM@Yp>7+;2swz2}kdr3L)z@M3?ji7R|gL_BF zxj`;_e@qztJ_R(D{YnU(V#CvxRzxZmKpN6sa!y_3B7#-9N$uVH7Zodr3NPw66>H?6 z@mAe5j|s>o`xj4E5-(fhk+15H2C~`7*a8w)TJJig+*YN>pmbwm8&E6a9t3a7@e4Fm!4=Q9Z&=@C{TRnHs+R zgW}-v{q#Gdd4Q3z8K{r|)RbdSVQ*D-8*y7#)P)g(2iyAbuj6tiXS)5uO}gTmM6nS{OUhFywp9_>_IVVU}=i z*+ubYlY(H;FpqXsZc7H)YD)r{6)!-Nbr;~$#CWTU^??+6?*jv6EaP-%Z^qiaR6#yl&C_F#% zy0Zqi(zy0KBsE%FdFoP8B{AI6t;a4Nj45?HacDmrBq44{lMU-ErM$ut6@2<00(x|{ zAFyhcU9t+BxqVAH%!J|8?oARQYshA~;(4ePV$gvI>7vjq=hT^5P9PEVYIvUD79!AB z8ppv1RMEoUmB2UlgL1`La>Ws|2p(auA#7|>mr9aYHAfavu$_3+y268UA;h5da|5yC zUAOh-k90!P&S0DGs}|s~Ke*+T9O7|1tX26f1g_v+9zWv&xn&W zJ41tuOOm(WVZhiW>1~Ix6;I9B*@uvtrm5~G3q3D5m>cz;gJPfDr^#ONR{e2RY8g#J z9rQ!<+Z$LX*0&z8ooMkq(HrxTANofbWbg!N+@+WVrFOX1s6-Q>5aoC z7|qrlOHPWg0TC}RAXG{MzTrZUa<|W5iCO{l9aXAOsUDX-8f(j&44w{6r4*B{^aRHm zmF~Xa!BiNh>r8<(D8U z_^9*8=q!Ew>8FvCw zU319G4g*qo3LPF6FG$`{|9NlU$TM)3j|&XUxdsLd|DX5vHLYAMrOeIEOkDoF!tbk} zS|DA2^7Me+bTp`#odQNSI_^7#0WoASzI%~&doNs3F{htiopAJlz6ErPUo^)bVoca2G(c zxps0Jd9%CY*q2y#)01e&M#da;-D; z)f1|@^((e}NHqug`Movk`?*{1u8#W_c0Vw;1)Kr>JcSKA%D&!u6qLO2y%~=?Cl2QX zXN0z-?tA&QcDk?bJ3IAf+?-n7c%ASpFC-)?9!k@b@Lts#8ir=CkJh z25lJ075-@D+Zi`&o~v!Ei*&i%)X+2FbH|1)E=f+Jzz45qW~sdwzqiG8{dz$md*Z(R zlEKw0U@9>m;p%I>5Rm{eKZ)R*>$AW{fwAXT${}#3?mD^E3784GR08ogXU>uW8z&>LdsN z6~|0Os916&D6ek~>)UMwV{$@FxIe3Xc`BQ@sTvPh32*_!RMx{3))ta;F^Y3jUrMv! zl?7A>-EK2NDO4KlT2-@i)L@0 zO?#DFU6XM~I9n-}8pX(UYfV73F)vVFdt-gGrD9meyCC7EYN(H8Ix=*B_5gHMu=C0F zVc4KNK8MGhB!;jQ*aPpiUowAK@}l1tO5(}*NCnwzwpTK5ZwScS%WGwHK(01~SjR_v z(-N-UFqje=?2Y$H?Tb+b46D{9q99E7MGSX+dkMX{s{U5Rd653zvdt_%DqxmxWn7Wkss zgWoI7XcX=6{$R^jO@KX=uAC^XAL}G$;!~X4d;6hKj9Td}Ie0CKH3;5HbbIj0du@n? zux5X+j{~}3p<;bZ{{8sdI6a@D9T2z9$I6<)P*l}G9ds+84$>1)M;xf5R=O41;olI1 z3vex9FX;r`R6D;1{VV$SAdg8qaKhr!-zbg0;r~GS`+&cr{O>C8xLTkczT~e!@XF2D zgA>A7wSb`n1%tr2{-O0RNh=UXOy~g6FnG`~o4Q^-EqzAp81jcj5E7|>_Vk4c27W&8$m z_?QVxV|tq2C}juv+Nj~dY4}doUpJ7D&ATFYx?*y>s8j@i6lJq%^mh1s8oIxqHP&~B z8ATu~;xP`~aN~7*Jmqimc{{ZEeq?jYRW-cJgIMA|j*9zw@9_Y4;^h7FWi6`g6Ag(x|L=#z2kwQ?2%)>y|%7XNG1$kNh6qRF3u>A9t3`OR9 z-_QmN;Y{aR7eOB3h*`p49)zaIOlF~IBn+j55%^;6T^nu;3prtdk zuuieZ8n_+b@6noYZ(l!LNkR|6WvfwmO}&gdQgHL1v?;3HKuI5cxOA-Wu)L&EV~Lu5u+zE|yn zGZahyrmncX-*x^ z^D?_TR{z{6V!%x(SI+$0x_rjNLdax~3b>u)Op8&!=u#Z^*lGiMKeVo88^;$p_Dk5O zB-9B~+vgEWr&aA8PVyaUELUYuUrpgQK|fO?9(`(5{$O3596=qiK22RZz3l^6<3zcl)b4doGKcJf{;0((*&>3klYix zm{@S@4V>dB`VIuyJe;!2cub8d8|;n8haeF*%hrW=1m>Gps;jw%LBoQx?Me;(XS0M? zCGKOdA36)$cT=*vlAQ6TOuDb87TrC)8G&0U9`E|#v5x2JJaq+gJfbh`^-zZT9qWZQ zT=X6#71kF#eztay1D)bqa2Yp#Wv1rv79k#t%rqMrfEx(c{m>ZO5v)r4uuz#u1dZ-Z z)U_9FPJZB|(QoZz-wqTjzWRazXjGClzM1eiJ6=joi=5QIur%Z_0(a-74=CA9?wh@6 zta9XAQVUG6FEWt}0{tIY!;&kE$gh2-`Izc=(rFHKreynuKkdo3yi6J9k4R~X(+wXl z#&c`M<}caPx)A;!VQ&E($F?*Hi5y%(mDXud98xAkM(u53?R- zi$)_J*eAD!{6WvyZ1ZmupDf%I=NXk!^Y^b-Z;{me0ps{*E7VvXQrQoF1V8h+!E+<= z-JX34Nb@KOyo5tw(tEdm$8M~?>BSZ*mI#28L3h>VoPj0(4 zxH<0KtKv_8U#}YWrZgrwI~Rz{ob+dyQC-~}c9af3yXcHPTz>_Zr@Tx~s6J8?FWO~t zAr#6%YU{AQXj(R-v^mb76i=Bh>9plZYg)GGU%$I+Fm~R`W@4%QW$zYqFczD-oeEDl z?P{^K@k!rk1Ec0tx%7~zI^#zv5vN_q%6-|oPVBq4yIFC8m?E~;Qg&fVXQTB5ajm7# z1i$Kbb_#lS2GN7=)m#Ow@7df)X_roHjPCiI$NatZn+6&ruj}a{T4P7kgq!L7Lx}rA zduPSb+Y{ctd5=;lSJ8KK{$}el1HPrEapuKx=!tFN+IN$iy3M4>E#}ixG}ygcRl)#e z1%oSW;;-#)9K4S2PCxul*?a82jJF7Vw^dEnL<(JVba^P=w;k)aRT(98?@9$Ui0ONj zpGUhBPs+Kg`slVlW=pGaPg6d&d?tjf7i+roq^L#ytOxe3_DK`Q*+Y#@~TI*4WZJZ|Xh+1U_tRz3kC(WLq7 zRzVwoz)tSaOQq8PTXm*t@Wr{h>$j`A?Q~B{YCcT07FqKh089^QHnUt9sS!H|(}@l(&g4m<<6}?NDW55->z(ijMh`8(lwt$Pwvx%o9iE?r}0gepJh@@N|7ZlC%iZ^sp>1XCBa0jpI==< zLk<>bp)xP`ops%@&*A{}Bh$F18(H3andBmZRJv+5K`Vz9R!3PS%GJqBe7HXjk;N}x zOXk1Rels&-ZV^OkL_YAfJ|JyAC%kOn$|CdeW6(S5nR*^p|MhJI}h?HvS56PW!3 z$}ps~-8L5s3y$;NvT^lOMoAC4DaFrGk1dCZ;dpKYZM!0s3nYfZWJepn{uWl4m6DYzKG#8>2)L?_v8A02Edd0GD+Mbb z^bjxA_@g5HtLa6TZ!7d(>xI2nh{w7t^PMa|b-5fJcD9tnH1L}-I>9H)C^zs8>+BE) zx=%T4V}Oq~GSJpe(L9bF=&pCgf!WBMmk&hvRYJCF$i0zSFXXnt>&5Npb+IKMNP?p< z`7E*7y=zN+g}8z5JZ4>(V*J$*w>iiQ9HAvzq>cOSXvqg7n4GHii;L9mmKGn7TQv2~ zmMMGem-%ko;VoAIlb=v4d4P|N%<;Zo<^b*9vQF--%fW7cFEJ!-yT!kxrZ_tMCG}Uy zN*7<$pbUr6tu^ykjH~G4LE)XPD2R zj>x;*uN%&sZQNMM;Qn6w@NL{{aLU=P4rD92$g&08D+&d^R|*0-&-&v`+6-j$jqoll z$iJYj5P40TmF4RB>!Nf9xMDUFu>~9nm8)sR%FUjMQr;}h zUnUJ!%TY4F?ORj(b7R{D8oT=2a~w)J&}4osadspV?G5@4E5En7|GxF;^pI=G_TmcN z*$8M$y#xEvV8xQ$I+MeX7@OG|yK;I}SxxD=BC<)Jzub&sA3|y`X+k^V|4m_)`inaV zj4lZ2rRR-l6`;0IUK7!P!ApC8yl9v@hqS!HjGBneXpq`wo|=A#F}E9CUmION-8;pS zkT(ziJDWoH$pC-jJpUj8iz`yoWicoYBe>X-Zl!!*_QNtwgF~v9&7C1|y^Dc*y?o+g z5~(O8#^x{y_(bs-(z;yKs?nz_h)dhmOx4BtRJ6jUqQjlVk?A=X+-hFj8p3OMLSVVB z3(leg6;jcvk*+9kUad@l9@?7HU3H_jy|*wEC%)I9itI75Tg`b|jd`6iQw`@(4eOvF z7}^?xu!(pKQmXH|TdjRsZG?ow2mRx586+yjKmV*+y+mrp(*~n`ZnxTu*+#&n{r5dP z1#`#6qSy~NcN+yy8{pn4)!_kMn*rTKMVT7%UH3uS>2mDP?lu~pHfi7?-~C&P2nK}=gs{$u@l-7gq;D1hf%SnSLX6uK+jX4y5)k&^AyGj89rAqD0vOWm;;)c= zk0Fco7XJ#F1%*N;9M*@V(3hh!QA`TvVohsp%=Zi8m(Q;0lLj+~6|JcTBxvSs56AiR56$ zBtzjQX>)hP`=5Md#UPBST$yxrASK_M5lI7L(jaep?4|kUX6;*d>ma(96fCu-CfcXp}}%6Wp_K* z2L61+KMm5!@iEa@)RRV|E?%P+X~$a0!WZz9)fn4T+n-3@M)i&wMx!wM%4xuQUPwCSW*KU&$WNm-TJ{EQPXh&W@ z?>=zvJxnTwk6@=`rKBHWa#pxW83iw|(H}ineEQ=4Hsb!~&!4L(dnVVGjGwevQfmq@pVVZdso$kvOT2wH zV;ndSUD*y>VHTpqGceWBGS4uujLLUdAc2w8Jf@M`)^jU?s?8ld|6AC~cF)RB;1x`# zecd3n`;fT;WV%4~IMnrCC5KeIjZ^E3r)Vw`&Ty%2ucVUMlfawKXfU2P6jE!dIB}lZ z3{y+2?@O-V`QFxpB|w&D>m|qxV}-ks1QGt<0L&5DGujse0@v6+I;}x z4V|avqD3>aF*2}EGjoj0wu;6Nc)Q8FzX4rK%j{0iynbH)^;})+VK>lXHnhV4CxSF zzyF_l9DH%*$XgK4&na|H9`4L;3Z=JFANF<+;CY`08xUy~HLbs@eE+f|G7w1dK+=BW zB_^mXM*}(l4^p9Btqfj`8g@+L{j$I8P3xBw*m>GG8xbJ42bi2&Vl* z>kE@Fp`RKx1wl7C;@lL06EMg4)F)g*ngI$a8E)Q_X8DEoE0E8h_)r|A8Aib?MUqja zJ)@75uV7Q88R2^v1-Q6>i*f$Him}w>c(H1(q)kuP7g3>Nf6>w5Khq*=;JwDK(8=w~ zrMJlj@1EAt#r?ti>}SG8+l=(NMn09EX>;AZaqH(iZ@rgRwU0vQ{oC8*o>1l`a-*q} zjDuA=%g361^H@$4V08XY@ichKK=9%*eX#$`X(=MN4AFcDpHa+6#koGDo|`bV%EA$E zD-hFbtwLE1!{ByZOzetRSQr6JhFFKB(&M>yrs5ts$r_0{d=~=6xbB4sCoWJbZi7yJ}tHsB5t5Tk|*{j zAx;>q;QB3S`q8mP0FO%e_9I$m2~16;t%2YYWzjy6ea!dk0Kr-9{8YmG__<4 zyH^&Il4wcT!j?g|l1>9CYimQdQkVH%c*HWiV6g13!vj~R|g){`LPx&_VhfBYt&yrd@!en!9Rn(L~ z4;l3=@eUbH>%KG66M-Hc+7c&WC;d@zOUFj|w+au?Aai}&ut6EM*Z133r7tS~(xIAn z4Ak-N@^2mQ;~NcZWd9EmZUx#|zQYgCN+~M(-~O@!J?)Pbk1GF$cq{{2f&TxnV#Mem zc=!P7IJ6=0*4mrGV`B1V4R3hGy2l8i^^*_Cm+H7ThD__(j45kg*{CKvyLO1q-tU_~ zF$|{G-Z;1G0bJ5Y>Is&7Id}pNpw`v^qc@Ko+#1O}Aruokywfi#ANXuDHd4_< z8gDo*AyR8&ap!=ap;r2Q2V--->*p;8;uOl#tT4rEr?l!wm*^hUPA_{P2`ZBqt~l>g z=}2Zr@-XZu=F$ycA{q(AoC78jtcwVOg$KiDRs1Cx+Ve4!8qU$8SK~yA{G|&awcc>t z8qM&M7n{<~iUX1ILvA{%IM=-S8JC(^5KwG*NEQ>c2JdbW%)VQMaiZ8r-zr495Q;Tu zPbSzGrNhR`N-Md&-3mctNnhw#EU zb^MlMmAQ4Rlxd*@%Jun9P;7AM{5dhzIvAHZg#N=-*%${0~5n%JqvL>iJ* z+c_Fc0w@Mmhi*A6S+qVtrUO~*N9&qbg-Ys^m6 zL~>qDV;Me}EKXzDsL8SzSEM5G4dI2z8Y(PJ*hg|sBZCj&A;C0LEITf8xzX5U ziULg&Q_)n%9IR!`9@q+uAs0|cc+a2g*{SLY>v#K`=%f!ei_^8!gLZTrR^v z9#LZ^bPeN-(r+!{C(DawBC82%iu>YKSnpLoiIPYt#e(ZhC^EHqM znx)(@ri-;aRrO$cd-%Y8bq%YHZYEh`LLfI(Bp9)U~ z-C~~v>4`cGQCxYSyj*qoEW*^ILRvWfa*rCq zM3S{~J+%ZTECZa1gmz?J#B-&LAD#KNm?S3V5l&e_yc%ni#eVwCr+(YKh(GfeoyLmT zxT-{iCrw_&+N5-u@y_?-#Dpn1`v)=_G0fztaU}`LKr}Vw@f-|wiaHu;Of$v+y0aNG z#EP_jWL$N%G?TmtNtIy_oRCJ|Ul5J{bikRwtwJk1`ja9iZ9{z^ojG$MEf4meOs)4q zojE`SQcrD4Cb>wJl}1%ndibBHMX>)wB|!?IBwnneN<&opmj!xtKnvpGvHn;v-5HVi zL~_3xxl`ten&hdeJe;-I89@hSwxzCCPyMT=phIHrD<o3Qj&;{rBKA=6|~6z9bq=l$1WaYY{JVVMVys^Mcwpj zH(96ozD!w0=ew`crPkyjf;O=vfMWsed@0Rn?Hr|i06BL+Y~g@ddUhZZ{fT=uc&}(( zSy$K|%br46qc6Q6(gly7;aJF^ZK8NyHGpv zwHSorg$dkKcFFb^<3h4@TaJlN9#0{;KP$l-gOx9$g9h&+5Y0xkqD7=ag9SwA5N51fi?=%7<(xuXRuk8K*nIg;$^ zg={&F5}+Z)fx(vk+;JKpLHPaT2Z?i-k0{nKAD&pAEhC1K&2FFK&1dBLGU<7zIethX;=#kMcFMK z;|FXC0%@MqeC`d_&>-+4ASGV+d4^b0e)0YTa4cz_$HjA!WXHDgwyvPTnP0Fy=QchV zUgW!uYFbV-^i{$G{z0l|`-)IKsWOnsx@uiuCMcm&h0e63gB`X)xj>q^bEMNM5`OjnqIv;;l=_D0Q z%g+_g6~ZrU!77j$sg;p*w!%#abh)6?JlSQQ)&)W6QuUf>#isvXpZVPfEb$t|FysXd z{ew&tH?34)Lo@#s7bI;u*7%r`AclYkquik+ec_UZYjc73_Jns@fXdsn8A$|Q#WOSy z5qDZ_HfTeI-b~!J{*W8&t&pCxP18)zV_2pTQn_&RkUG6ofx)UdGGjkJeXhGk#uJ-Q zL(7d!%MqcGeHo&>+J!v@<=9S9n~y%NK4eM@Zf<^=c74dT0)%gOz%byp*vsIQRvOY& z-R}AKa5X`@{p60#b8jCHp;Lh0HM^Hfp4-TRo6IPzIX zAF2E21~M|FFdmXUzc8^@GNgR`5z6vaR2L9_v8jGxYxT1A?A*pMK9aN9=OSWcl> zRBFC^NYB4gat1Ksq2*X2R>5h4zrf6lh!EU%ZiWehtb_@svGy+RBgY88?y3yo-aro# zqxj}=1pE#Jy$Pj3+KhW6C9EtH*hAj22oq|OuQ>{w>oa-TMiPpxm=9yIK=tj*YPR@J z_U`vP5RpgX74!yrfi>bcFv|PJ>W!^{N$OA2_RTOMU?8Et0||tue7}J<)e{B2HAN9Bdj^yUi?Ky8r8G$7Z}2_jw8k&f+JCs!ftH2| zk-Qu7Nuv6K6weZi!Vfx*FzF3BcLM*fLG@)Z@hKlA7V!Tq#>M0J=aYZlJzM-+3@0?v zazL-_(}-yFZ}8u^d&rE5mB8B|vJt)>uL2da-CymmybfqYx9} z&0QH?G>i+@4fK?@*Ac@XVyk|tez)7L<2aWtwi?{#pz}WvNnfomU zEPBc0@yuKU1q+G2_QN=1#{OBt^?vgqQZGg|`ZF55HZyIPb);VZ($TR33$GZv0B2`Q|u+)rk z#l`CMbI-~&3mo(f)^0I)ub)9IF;8xzO!&@c(43CIc}Z20aPMhb)*cVpXGy{qL{0@o zU_;m#!8$|qa^2*vHy@{ya&0ztUrQ)qXW57h2MUUT^FsyR8gZB9(OEf9I6x4x)L$KR zu*{&YkHs2CQoHx}y~&1!+*dco9hyPqmLcWGy>S*p&8m<}1WnwU1_sBf%}~Ob z=x>i+sg5bQ`>R$KYY$R4N!bt(SI#pVhg@|aq3v?uu&HY~{%Wongn-gD{{`SB#Z~Gd zh=VB5vT$Jti9*_CJ+?h@-_Pi2vhn8ru1)^ z&w$b=l}W-spVQ4cvO<9m0GH70BjpQ)QFb4eKC7#m zg$*dI9geS7B)c5z>~RqQ7n%G!{L=KiG2TB?5PcV>lp&G+1C-rwxfd&^0l_o<=A5y) zJCq6aY6ukhxwIXT0f;s)JYdygL4uimlyH{C4PX~B1Mo~cW@Nf$c*v&q0f`}$wlnkJ zxL!mqf;>zkW zuiC2L54(h4TU8{b67%q-os8RA#{@1ffNoG{_3fT`;pcZE{$)4<0O{f^v*cr)-vEX{ zK(RN}yfkNldc$Fmsh#^|;V`wfNb`gp0vC67MJ$7yJ1tVRk(dS4w&wQk3^Z&NLuh&Cor&}hL zk7{qbR}Bn___GOP38$cjJ{+}#f#6T7GH?$)&ef_X6l9ljG?Zl1V)Uo!8fYVcDF8K8 zbC83E7^ALrYCoJxN3TCnPm6B=2de zGn!%n3tgp!dnc?YufH?cp*VtrIUV(WJ^Rq$0fSSzPM8v8ibafT4HKxed(#+#@&51RA%ysWhRtfWO822}u!ETSkc zt)69;vkDD+966%Cy+^7t0518%xwSDP7EUy99tRocP6XK za%7f$RMMrP{;Uj;oO3_G+HS3(34=U5aQ>loSj18k{O#SlP2#W!aY}?YK2VPz68eu7 zhZOhZ+&kq0ma)!k$iO-NLz-*?Hd<0iMWtSzJg=+@COXeC-wDq@44#XHy_LJqTMh|^F^uuQ&t3CF%w zLsMR~e5p)Qny2bs&68$=!q%Vv)ruCrAFm=`)?)I%~YlZ)`Oit*CY*608!Eoue-O-Wpw z07VlZ?uv_hC|>jp7I^TWp?*^V?9n`uacPeCh6B$ME#6)Iq>KC(B|t|(7R37)aUJZZ zMl_OtvcO7C1Uhpl{vT(Y(V+9O>s<01a8eK_WC*4#*jtX>25i`MTBL?iOxfUN~JYmtBgWDct-gN@EdrGq&>S$jgsEYhtubG>@R=4cW4!( z{H$Pv1v%PEoPZQ8CJ4q$6Lnq`)xTe#B}L>pQU2V*Oh}4vQCVOKle~%hh|i!bb!#qY zI7li`!WgsK6^&aE#JU3Ih5YNaWQK8|2F@G37nIXr0BUGQ!xgu%3LD6><6C4tZuOZr zhJm-ZY#7v8rw!$xDYh9^7$70Zrj1IZl=EU@^A9 zai}|gRTxmHEr75FhIIEA0gs)=gCsIofqxO8I)viI#2t6y$o2x0P?V=A4YnAIU&x#n zBPk^*m6a3$xCK4zJE|negf{1Ei2$UG^b*AVo}{M}7CO{AwVh?-EwB%o97)Hli0^U& zvLf1XO}?_2#8BK#TKq+-;tts_Dvv)szcX4i9J;E!3| zN-rb?xK2q~`(?d<>-4N5Ee@4iY%han%IJ-Yi)^6ExZ3zmjX-wk{MMB^H8%&so|4c1 zO3X|MoNH|(snN1dUfRtLqjwWhiuTDE2qAf$ZQ%DU#n=Otghu?4Su@9h37Wmy$VgaL($qSWWKzH~ zc%v!;OJd_=x!%HHCyeOApHo6bLYFnYF24cm6jVOyN!_i0Zl>b4Z9Y=I960BQIJ zVt3D-fRL}aO}-v6o?@PMd4YNR^u4#oWoT59IScVi9%8bwARKeR9EdnAJssEG+)AnK zs}ToFN>~I7t)U>FAMUq~_se}jPD4iPbWl$es>4I?wq}ju#BkcyzVP-qIEVn7a^Cvi z<=p6idzb2w;)4h+9VN+2BQ!`6wu_Cir@CdbOT8#w#%2y@yKEV{6&oGVU;B*ryiU4_ z#SAt`16-)ocsNHS!D}jJUEJ>m-K1>~fG-VS5F9&y`oPVik)?ytO9U~;AP~rq) z52Y){MF={+1{SWYV&inu*E%rPa*PC$76Zs1yemcWZ3K|y3+E<{riq#sg7D?r+)u)l~$ zY{(vNelN%io@AUWYRYqwkiBn-8?YYl(x?1L`Qp#8v^umr5JxCry{fz_G(W$Lrz3@! zyjji__jV(U)X*X&y%ht?hZST}?@-p8fY}CStuWIYo3Dtr{syVmN`({+Y2tdCgF7H7K1H1 z;o{5`iko})c2FiW*P^=(F@Zub*fjFMI>W8|ly5+_^@XTeh&Kb#-KL(TYc>f%!=4|I zC7GY=P=4(W+Qz(tGk!i0xbFmy1HhSd)cb_ebQ^)!9OUL=PG7*?y$uk{P1>_=^L=ihtqr$6-B%yrxnd}n3S*Q#Jli}^_=FYP_E@I*VOSI(LXi!3o;*V|@O z`K$cr%28hwx5*8KUkY}`2IHGhT$kosXpoa%w#kXj=ue11*jJ0Mjq9f|1*yRcEr-Y9 z^{r8+v+e+yoL(={HG^3Vp6B^wDZk&YN7~ZEeGm7xfOQJrJ8JeHPS}I92EP@6p^Bb;J>#Ms|RGq7f8-+2cw?3YBqsVlK92qk!=Q`dArExoh;qVFt#`H~sdV z*fi;0nkPhnsL`%T#i@&7dF&(!SGya4)qTRrVHGsbWyIj4WEnlVeiQ8Q0W@{>Cpb|m^rX>s+y6p?O**QH&goUf3OgY z{QMR{lbR)Ko7jwjN;eYHG>L@o1%ggchqWGmDcnB)@}1u{mgTZert{t|&hwIfiUKqM z2G>S&zMoLgB4W91JO8e<8@rA&IfD^LR2?qBwA6N zgtK91>5(994KDZ|VUaLmcyXF!(m1<(-P_3&Y%u|qtkFvocAjDDYGXzW62eJry5`D9 zqb!Fu_$QY*ta#G-;$=4G>`xIY^e+4mr(qH;!vRN`sMu)8WP9r)WA+AG8sEQXaPgX# zy!(tmk;xXTMX_Q>2p1|k9<1jbm~@`6_2bA%+gRSt_HLR0Q70W*W+* zRx+GK#6)G3fv#5df2W&m-TeZ2IaThU8L(Jd|Jgs7_cTz~exw9JHJ7cRs@2rG8y(^9 ztt;+H-=EJNRNzj`{6PI0taRt$#|4a=XE$PPO}QSoK-=JXNra{+EPJkrhZ`$?nuLav z&h0o4qeuRoBUstkxUNQ*+hL!cS(bgy@agI9`obXc`ORJFD6_$bGB(%aLV}e$Hyw5d zGx~h)uqpCj+*Z7io5=v8@GQuRSv2ei1j?sY)=r)RDl2u7^Wx~R`LS$j%Q^jR2eYcG7`>VE+4* zbhR|IGh_bi$of}@GaUtobuOHqUz#W#2aC_^ZV??47ps@cC5ULPVzEu)y0$dRB&QTT zh?h=%eny*hgK!rugLT!y@E7xM8TN!NNGAq3v}+MG%Fai_3O^{JN6DT9yn78)u9wb3 zi9lb%oaEmgbq-ZL5J|R6kRC@bo4o?xhnMkoz@CvP7NstmY4>baYCpHZ)xuzVz(}{v z)b_O;!lCNXCbuz$lJ<&&A56BRnh{~##z)H`1wtn*lNVdJZ!mbEykK4DhyGaJoP$}1 zLBJ?>y95Jqc_)e|?%A*5vU@ep3BCRoW$ovl?1tH~vQG$s!y& z00!YqO8rBF_q9=$RZ50D9z&d=Kz{aNP$-*81VvVB>2%c{=T80k;bAh<%BmuR1M*tG zcI8rizLR=)wxw8t{t4s3r*d9KCJt&_s#XK$#DYy+`3XNbGVV2FVog5LDTJB~R)v;fFL&=$JchtQ*$G>QP49 zeBKZ)J(?2IcIb&`9H}y&U$qL-nuH^>uJC#T*1k#syXx=Qt5juA7vz~Je1yleQFKnG zkZea*2p1C{3!&uVikwgO3LeGzVQZAB43Gj7=*t6lswahZr z^fyzcHQi=Hvy+IaU3__|SX!S~aNK&_JcViEmD}eN$YD>TZG`~AJufy@lGTy|Ey0T8 zI?t4t;P<_-j@Wpu2GPwylNEv}Yx4m(7fj{u5czSKf}t-Jq~@NPXJ1!^G@hjVcZ+(25Ax%a`4W%#ZqQV`OZnQ4fp>vB|yF=TOZ2mJ|KRguqe_C0Tl`>Yz zR{k{gT#2~yz3beZbDPn1UB@>P{W6@Cx31^lrp-3K+zIiasreUa%Bu{TEm+>2&LD_xB$s0yW3KBNw{Vyp#Vhr8I z@a3h6qu~64yKky{DM?-Jbc>72)WwpQw^rrK;W&!Yv9kMVo(I1#4Ng&`iw5MgpAXU% zQ>1AX8u6^C8`01X%2*U2p9HdIoTD_IvxrbTW<^G|Q|o++zqAyVv6QFI{%R_y?xOiI z5a3X@8L`Zb<+>Lb*wVaJ#>HSbm}eJ#Kq%$&0M<^dS&f=dzujWnKR;)E0Xh0B-u}hS zrJxkN+EypU<}s@VeI6<*QekW}j7KlIh3N*dq=M^gg0iw%-D*i^Q78GAdgRGC%C04c zXbX#^hcR8V8;1#9rz;uCx?46l3k7-$c(L1=G9O>sB)GQQd!MO)`3##n^Ysx}iqB7n zGM8OZX)x^XZ~*$=EpgYisIWstul~H-ImZdf%7)LEgg=-{8?x4~?(MiM3CE;3sZC&X z^#M2#6+BIh6G3ujo$z|LztX!F($tbPKpN6$!9hgdu7$*2%13xpsrP1V2#r+$cP)3Bsjggv6-mKkrU**Ey{I{?-?DtBGL zxHzj;mUr7edb`nW#0OO$&^JqH7j-a9rH zh!YFX849%1kQG2KXJ3+niS^WWjKI5a($ZdjdVwXx$} z#tq#S#%0$`HHp!7O+PHBGe_E{U^b+NN+*vorJ+C|%9b!@4rwuHS4?f11Ita(JX)YM zxeoHCLrT52x){EG%^lY--p@CzR_j3XUlBmYG(J>*Isp0J=_2b2FNcTiSdN-6235u1r-!()O@%andcu+30(Gs6yCvzIrspr5;881a9)>^0ODVFN5Xd~!RNsu&{;JomZ}y~+HP&` zkfe&>*mUFL82fsxSc?!EL0}e+<%lQMVX$vwjyO#L=oP~Ok+zyCUR2E-cv8$qR+PPK zz8Zu$N~q6FHBdZ8m(`3po0P$|ZE%^U&Ou9S|3jDH#NkpmP!Baw7tud-{oNh*KkEK! z4I4dE56sU|pmw?yNt-My%q(c~wI0#H)O?c)34KVb=ZNS(!d;b~L3!6uP?s<7)DU`Gc?0|BfHrr^E9?RV8v}*o{6qL3 z$$zzN|7%pU_|qlGWAA$w5BGSHmZ01T{Qz&loKE zPb}cBQs-B7Zl?@0Wzln&`B}ELs}s324Gz1#&)T_)%FT?uPN*bJfago^;H{d2@anDM zun(lJh;xd2!`}j1tX>=qr4!J2Tdjnn}f4^P_CTt;vW4Lf#1?rY=i!mI@O)c-g|4Kcfy7;96yM~7L zeYVY4*y>~VJ$B{=b$uQZjjpzoMvLzU_08%J>GUXD{%G#7f%}v_t?Q)P1G}m6X-#?p za<7@;`7eY!rkde9tg@=Z?7_Css+D<#uWVd!`?vFMSxTEG8ctocVbo#eI}z}3#T}S7 z!6>!s2a--yN_&u0T0|V0N^=(@%Nljc{Z6V&`K;vXeU?%(=~L&5%f z4z$K>^fOptWdXc$+&sKz%Sj55+>|nxA&Oj`ihkSQ@6-LfI0;~xX?@cJX~yYmEg-%_ z##lzcImy5}tT52?e*676UBrv|brY~I1i4Km#kCQ08Q!g-SAqVDq`5nHx;+17Sir%s z00|{pO3`KnQV&HvUZtxvSNdGPnYvB7*suPzqqv*n8?OerWuJ}7_oExVr#~Ep;|mx;=KUku>8IkX3D&3WX};U$ z&)hFCJy28z-AC0CToLo-qX%9=5&<877YQ0vNnh`m`{x_i=G$E%zRwKoiP`V=p8K}#wRL$W7KSyr zSc`oE>=!jqk5{9Qs7EV(S5tK&hzu-)U3jZ~2rf2;`M6NlhGOhfyuoYKANgA!@c*2# z3dWW#x*uz@ocuyOZa(-d&!1-w4(jjU{$tR2lPE;Vc%(bX{oJH5DR?WR#^ z7%`v+I@$V)7)9y9xU7DZBykln);fjABr2e1P#Jw)NC9NWKZ87k3V46iW2m`iIVsHr z@To`$OF^T+W8jRCS>JF9U>JbkY-|?6Dh0(Ge81RSd+W)%+jN=X^*XjM7%eauoV`W! zf@MJfH**)cZ|a$}Z?19Vsg%9IA|a1+f9MM3^XOTr}3{ux*#whG&Qh;1~~2j8wfzox*FNkFtd`VsyK$DoJ-E0;bsqr&cnr&`da7%voEvtxpAtTDb8UFXou!NuSNSIz1Z#F`m^yCro{b8;$O{x_WgYeDPxwGERk z+b!$&n+zu8AC&g!t${Co>*JSug3#!#nde7>2anDUjz1~8EAfBE`hTrm#IH^9ggS2q z0Sz2x`N7h!WQ${yW?Cja#BPe~jA#}@dxHDvdMjZ?u4Wi{@*4N&*^W(l2e9!~zIM5= z3Linx(#plhsx4c{0on^^XN%v}VVkJM0_J%{Ur}ZS{o>)-1a0hbX=Xr=sP~VWA8uFp zY9tip3Flcg7knL>rx#Si)c(Le#cZD}tMjj|=L~)(DtMUR*{Y)YR6rztI>}+3K7fOe zkC0;v51+t64&+QaaQXJpQBJ(Fc;~rf65J}w}le@zKI*HzZGz!2zG%a{vzDc z{JR?j9(!JuSjCTJt#4t?ea1u*`5KK18rg9|+ppP&gw@N;_OfBs0dozBtHv-e#7h6+bZi3d#g7lGZs2Rf~KOH~oYNC$jyvg5=%EOe^M^@7qM&A_v9= z4jjXv6T_~1j-k~Q_zAS}L1^?O<2<6l!F;Sia(t`#;87B6%H<|`R_J$ysao{)&?0m5 zXoCN>skWJ)rp(#B?A)H}Yj2tkRj)a^ZPF#9>dI2zw~thRRNa+382$e9`YBI5f{RbT zy4EgN_vGT%*K*Z0kC!c|M$)5!|`8bEUVUhuekp*|6I-QyWjt&*IU#-e6)Ul?61H5_Wu`^8Xn-CVwVwn zgQZQiMY$?U{IFSYin;R;tzfa)&d9GOb)e+~FGlkQ? z`C9pV2W#!#dg#{w;8f;T)mK)0FJqFx_0!57ld|} z5~y~xX&7`9&?h1gCYY5%O+cBJK-Z5xYK+i-vK*=(eGD1h2=x9p!iYn4SbO8>2B3Fz z5eCevM>YUkw-?_`Y9UNn)d&q0l#Um=e)RSrLceP(QWisP X9R_%_0&@^3R|zsC0<(vCH;4xSkBhl9 literal 0 HcmV?d00001 diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/storage_internal.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/storage_internal/storage_internal.docx new file mode 100644 index 0000000000000000000000000000000000000000..fa4ed7b5b98baf1554fbd013eb9bb5c7417a1b47 GIT binary patch literal 37540 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 language (personalDataType = 'InferredLanguage') - 2: optional list location (personalDataType = 'PublishedCoarseLocationTweet') - 3: optional list ids (personalDataType = 'TweetId') -} (hasPersonalData = 'true', persisted='true') - -struct StoredQuotedTweet { - 1: i64 tweet_id (personalDataType = 'TweetId') // the tweet id being quoted - 2: i64 user_id (personalDataType = 'UserId') // the user id being quoted - 3: string short_url (personalDataType = 'ShortUrl') // tco url - used when rendering in backwards-compat mode -} (hasPersonalData = 'true', persisted='true') - -struct StoredTweet { - 1: i64 id (personalDataType = 'TweetId') - 2: optional i64 user_id (personalDataType = 'UserId') - 3: optional string text (personalDataType = 'PrivateTweets, PublicTweets') - 4: optional string created_via (personalDataType = 'ClientType') - 5: optional i64 created_at_sec (personalDataType = 'PrivateTimestamp, PublicTimestamp') // in seconds - - 6: optional StoredReply reply - 7: optional StoredShare share - 8: optional i64 contributor_id (personalDataType = 'Contributor') - 9: optional StoredGeo geo - 11: optional bool has_takedown - 12: optional bool nsfw_user (personalDataType = 'TweetSafetyLabels') - 13: optional bool nsfw_admin (personalDataType = 'TweetSafetyLabels') - 14: optional list media - 15: optional StoredNarrowcast narrowcast - 16: optional bool nullcast - 17: optional i64 tracking_id (personalDataType = 'ImpressionId') - 18: optional i64 updated_at (personalDataType = 'PrivateTimestamp, PublicTimestamp') - 19: optional StoredQuotedTweet quoted_tweet -} (hasPersonalData = 'true', persisted='true') - -struct CoreFields { - 2: optional i64 user_id (personalDataType = 'UserId') - 3: optional string text (personalDataType = 'PrivateTweets, PublicTweets') - 4: optional string created_via (personalDataType = 'ClientType') - 5: optional i64 created_at_sec (personalDataType = 'PrivateTimestamp, PublicTimestamp') - - 6: optional StoredReply reply - 7: optional StoredShare share - 8: optional i64 contributor_id (personalDataType = 'Contributor') - 19: optional StoredQuotedTweet quoted_tweet -} (hasPersonalData = 'true', persisted='true') - -struct InternalTweet { - 1: optional CoreFields core_fields -} (hasPersonalData = 'true', persisted='true') diff --git a/tweetypie/common/src/thrift/com/twitter/tweetypie/stored_tweet_info.docx b/tweetypie/common/src/thrift/com/twitter/tweetypie/stored_tweet_info.docx new file mode 100644 index 0000000000000000000000000000000000000000..0eb8c6c423d18f48982026eaf0499382ebbb4078 GIT binary patch literal 37111 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