From dbcd08179c6c06f6302b3552feb7ffb17e95ac75 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:20:29 +0200 Subject: [PATCH] [docx] split commit for file 6000 Signed-off-by: Ari Archer --- .../handler/GetDeletedTweetsHandler.docx | Bin 0 -> 38228 bytes .../handler/GetDeletedTweetsHandler.scala | 119 -- .../handler/GetStoredTweetsByUserHandler.docx | Bin 0 -> 39111 bytes .../GetStoredTweetsByUserHandler.scala | 188 --- .../handler/GetStoredTweetsHandler.docx | Bin 0 -> 38308 bytes .../handler/GetStoredTweetsHandler.scala | 161 --- .../handler/GetTweetCountsHandler.docx | Bin 0 -> 37219 bytes .../handler/GetTweetCountsHandler.scala | 44 - .../handler/GetTweetFieldsHandler.docx | Bin 0 -> 40605 bytes .../handler/GetTweetFieldsHandler.scala | 395 ------ .../tweetypie/handler/GetTweetsHandler.docx | Bin 0 -> 40771 bytes .../tweetypie/handler/GetTweetsHandler.scala | 415 ------ .../tweetypie/handler/HandlerError.docx | Bin 0 -> 37230 bytes .../tweetypie/handler/HandlerError.scala | 45 - .../tweetypie/handler/MediaBuilder.docx | Bin 0 -> 38408 bytes .../tweetypie/handler/MediaBuilder.scala | 176 --- .../twitter/tweetypie/handler/PostTweet.docx | Bin 0 -> 41271 bytes .../twitter/tweetypie/handler/PostTweet.scala | 395 ------ .../QuotedTweetDeleteEventBuilder.docx | Bin 0 -> 37077 bytes .../QuotedTweetDeleteEventBuilder.scala | 34 - .../QuotedTweetTakedownEventBuilder.docx | Bin 0 -> 37107 bytes .../QuotedTweetTakedownEventBuilder.scala | 36 - .../tweetypie/handler/RateLimitChecker.docx | Bin 0 -> 37230 bytes .../tweetypie/handler/RateLimitChecker.scala | 49 - .../tweetypie/handler/ReplyBuilder.docx | Bin 0 -> 44539 bytes .../tweetypie/handler/ReplyBuilder.scala | 633 --------- .../tweetypie/handler/RetweetBuilder.docx | Bin 0 -> 40693 bytes .../tweetypie/handler/RetweetBuilder.scala | 352 ----- .../tweetypie/handler/ReverseGeocoder.docx | Bin 0 -> 37664 bytes .../tweetypie/handler/ReverseGeocoder.scala | 78 -- .../handler/ScarecrowRetweetSpamChecker.docx | Bin 0 -> 37463 bytes .../handler/ScarecrowRetweetSpamChecker.scala | 64 - .../handler/ScarecrowTweetSpamChecker.docx | Bin 0 -> 37939 bytes .../handler/ScarecrowTweetSpamChecker.scala | 106 -- .../handler/ScrubGeoEventBuilder.docx | Bin 0 -> 37498 bytes .../handler/ScrubGeoEventBuilder.scala | 72 - .../tweetypie/handler/SelfThreadBuilder.docx | Bin 0 -> 38704 bytes .../tweetypie/handler/SelfThreadBuilder.scala | 119 -- .../handler/SetAdditionalFieldsBuilder.docx | Bin 0 -> 37325 bytes .../handler/SetAdditionalFieldsBuilder.scala | 61 - .../handler/SetRetweetVisibilityHandler.docx | Bin 0 -> 37405 bytes .../handler/SetRetweetVisibilityHandler.scala | 45 - .../com/twitter/tweetypie/handler/Spam.docx | Bin 0 -> 38055 bytes .../com/twitter/tweetypie/handler/Spam.scala | 99 -- .../tweetypie/handler/TakedownHandler.docx | Bin 0 -> 37755 bytes .../tweetypie/handler/TakedownHandler.scala | 76 -- .../tweetypie/handler/TweetBuilder.docx | Bin 0 -> 50025 bytes .../tweetypie/handler/TweetBuilder.scala | 1180 ----------------- .../tweetypie/handler/TweetCreationLock.docx | Bin 0 -> 42090 bytes .../tweetypie/handler/TweetCreationLock.scala | 402 ------ .../handler/TweetDeletePathHandler.docx | Bin 0 -> 46514 bytes .../handler/TweetDeletePathHandler.scala | 811 ----------- .../handler/TweetWriteValidator.docx | Bin 0 -> 37831 bytes .../handler/TweetWriteValidator.scala | 118 -- .../tweetypie/handler/U13ValidationUtil.docx | Bin 0 -> 37063 bytes .../tweetypie/handler/U13ValidationUtil.scala | 21 - .../handler/UndeleteTweetHandler.docx | Bin 0 -> 39662 bytes .../handler/UndeleteTweetHandler.scala | 215 --- .../tweetypie/handler/UnretweetHandler.docx | Bin 0 -> 37513 bytes .../tweetypie/handler/UnretweetHandler.scala | 65 - .../UpdatePossiblySensitiveTweetHandler.docx | Bin 0 -> 37248 bytes .../UpdatePossiblySensitiveTweetHandler.scala | 46 - .../tweetypie/handler/UrlEntityBuilder.docx | Bin 0 -> 38041 bytes .../tweetypie/handler/UrlEntityBuilder.scala | 102 -- .../tweetypie/handler/UrlShortener.docx | Bin 0 -> 38077 bytes .../tweetypie/handler/UrlShortener.scala | 106 -- .../handler/UserTakedownHandler.docx | Bin 0 -> 37874 bytes .../handler/UserTakedownHandler.scala | 79 -- .../handler/WritePathQueryOptions.docx | Bin 0 -> 38399 bytes .../handler/WritePathQueryOptions.scala | 153 --- .../twitter/tweetypie/handler/package.docx | Bin 0 -> 37491 bytes .../twitter/tweetypie/handler/package.scala | 42 - .../com/twitter/tweetypie/hydrator/BUILD | 58 - .../com/twitter/tweetypie/hydrator/BUILD.docx | Bin 0 -> 37364 bytes .../tweetypie/hydrator/Card2Hydrator.docx | Bin 0 -> 37700 bytes .../tweetypie/hydrator/Card2Hydrator.scala | 76 -- .../tweetypie/hydrator/CardHydrator.docx | Bin 0 -> 37365 bytes .../tweetypie/hydrator/CardHydrator.scala | 47 - .../hydrator/ContributorHydrator.docx | Bin 0 -> 37189 bytes .../hydrator/ContributorHydrator.scala | 36 - .../hydrator/ContributorVisibilityFilter.docx | Bin 0 -> 37353 bytes .../ContributorVisibilityFilter.scala | 42 - .../hydrator/ConversationControlHydrator.docx | Bin 0 -> 38220 bytes .../ConversationControlHydrator.scala | 108 -- .../hydrator/ConversationIdHydrator.docx | Bin 0 -> 37197 bytes .../hydrator/ConversationIdHydrator.scala | 33 - .../hydrator/ConversationMutedHydrator.docx | Bin 0 -> 37581 bytes .../hydrator/ConversationMutedHydrator.scala | 54 - .../hydrator/CopyFromSourceTweet.docx | Bin 0 -> 39949 bytes .../hydrator/CopyFromSourceTweet.scala | 229 ---- .../tweetypie/hydrator/CreatedAtRepairer.docx | Bin 0 -> 37408 bytes .../hydrator/CreatedAtRepairer.scala | 49 - .../hydrator/DeviceSourceHydrator.docx | Bin 0 -> 37281 bytes .../hydrator/DeviceSourceHydrator.scala | 33 - .../hydrator/DirectedAtHydrator.docx | Bin 0 -> 38019 bytes .../hydrator/DirectedAtHydrator.scala | 92 -- .../hydrator/EditControlHydrator.docx | Bin 0 -> 38529 bytes .../hydrator/EditControlHydrator.scala | 132 -- .../tweetypie/hydrator/EditHydrator.docx | Bin 0 -> 37422 bytes .../tweetypie/hydrator/EditHydrator.scala | 63 - .../hydrator/EditPerspectiveHydrator.docx | Bin 0 -> 38695 bytes .../hydrator/EditPerspectiveHydrator.scala | 179 --- .../EscherbirdAnnotationHydrator.docx | Bin 0 -> 36978 bytes .../EscherbirdAnnotationHydrator.scala | 22 - .../FeatureSwitchResultsHydrator.docx | Bin 0 -> 37360 bytes .../FeatureSwitchResultsHydrator.scala | 42 - .../tweetypie/hydrator/GeoScrubHydrator.docx | Bin 0 -> 37277 bytes .../tweetypie/hydrator/GeoScrubHydrator.scala | 31 - .../tweetypie/hydrator/HasMediaHydrator.docx | Bin 0 -> 36873 bytes .../tweetypie/hydrator/HasMediaHydrator.scala | 14 - .../hydrator/IM1837FilterHydrator.docx | Bin 0 -> 37023 bytes .../hydrator/IM1837FilterHydrator.scala | 23 - .../hydrator/IM2884FilterHydrator.docx | Bin 0 -> 37076 bytes .../hydrator/IM2884FilterHydrator.scala | 27 - .../hydrator/IM3433FilterHydrator.docx | Bin 0 -> 37062 bytes .../hydrator/IM3433FilterHydrator.scala | 25 - .../tweetypie/hydrator/LanguageHydrator.docx | Bin 0 -> 37060 bytes .../tweetypie/hydrator/LanguageHydrator.scala | 24 - .../hydrator/MediaEntityHydrator.docx | Bin 0 -> 37410 bytes .../hydrator/MediaEntityHydrator.scala | 67 - .../tweetypie/hydrator/MediaInfoHydrator.docx | Bin 0 -> 37504 bytes .../hydrator/MediaInfoHydrator.scala | 73 - .../hydrator/MediaIsProtectedHydrator.docx | Bin 0 -> 37251 bytes .../hydrator/MediaIsProtectedHydrator.scala | 36 - .../tweetypie/hydrator/MediaKeyHydrator.docx | Bin 0 -> 37312 bytes .../tweetypie/hydrator/MediaKeyHydrator.scala | 54 - .../tweetypie/hydrator/MediaRefsHydrator.docx | Bin 0 -> 38455 bytes .../hydrator/MediaRefsHydrator.scala | 124 -- .../tweetypie/hydrator/MediaTagsHydrator.docx | Bin 0 -> 38118 bytes .../hydrator/MediaTagsHydrator.scala | 103 -- .../hydrator/MediaUrlFieldsHydrator.docx | Bin 0 -> 37050 bytes .../hydrator/MediaUrlFieldsHydrator.scala | 25 - .../hydrator/MentionEntityHydrator.docx | Bin 0 -> 37317 bytes .../hydrator/MentionEntityHydrator.scala | 47 - .../NegativeVisibleTextRangeRepairer.docx | Bin 0 -> 36928 bytes .../NegativeVisibleTextRangeRepairer.scala | 18 - .../hydrator/NoteTweetSuffixHydrator.docx | Bin 0 -> 37434 bytes .../hydrator/NoteTweetSuffixHydrator.scala | 66 - .../hydrator/PartialEntityCleaner.docx | Bin 0 -> 37798 bytes .../hydrator/PartialEntityCleaner.scala | 80 -- .../hydrator/PastedMediaHydrator.docx | Bin 0 -> 38003 bytes .../hydrator/PastedMediaHydrator.scala | 102 -- .../hydrator/PerspectiveHydrator.docx | Bin 0 -> 37856 bytes .../hydrator/PerspectiveHydrator.scala | 112 -- .../tweetypie/hydrator/PlaceHydrator.docx | Bin 0 -> 37086 bytes .../tweetypie/hydrator/PlaceHydrator.scala | 28 - .../hydrator/PreviousTweetCountsHydrator.docx | Bin 0 -> 38829 bytes .../PreviousTweetCountsHydrator.scala | 152 --- .../hydrator/ProfileGeoHydrator.docx | Bin 0 -> 37129 bytes .../hydrator/ProfileGeoHydrator.scala | 31 - .../QuoteTweetVisibilityHydrator.docx | Bin 0 -> 37688 bytes .../QuoteTweetVisibilityHydrator.scala | 93 -- .../hydrator/QuotedTweetHydrator.docx | Bin 0 -> 37462 bytes .../hydrator/QuotedTweetHydrator.scala | 51 - .../hydrator/QuotedTweetRefHydrator.docx | Bin 0 -> 38783 bytes .../hydrator/QuotedTweetRefHydrator.scala | 129 -- .../hydrator/QuotedTweetRefUrlsHydrator.docx | Bin 0 -> 37729 bytes .../hydrator/QuotedTweetRefUrlsHydrator.scala | 61 - .../tweetypie/hydrator/RepairMutation.docx | Bin 0 -> 36887 bytes .../tweetypie/hydrator/RepairMutation.scala | 15 - .../hydrator/ReplyScreenNameHydrator.docx | Bin 0 -> 37173 bytes .../hydrator/ReplyScreenNameHydrator.scala | 33 - .../hydrator/ReportedTweetFilter.docx | Bin 0 -> 37093 bytes .../hydrator/ReportedTweetFilter.scala | 25 - .../hydrator/RetweetMediaRepairer.docx | Bin 0 -> 36883 bytes .../hydrator/RetweetMediaRepairer.scala | 15 - .../RetweetParentStatusIdRepairer.docx | Bin 0 -> 36999 bytes .../RetweetParentStatusIdRepairer.scala | 19 - .../hydrator/ScrubEngagementHydrator.docx | Bin 0 -> 37067 bytes .../hydrator/ScrubEngagementHydrator.scala | 27 - .../ScrubUncacheableTweetRepairer.docx | Bin 0 -> 37056 bytes .../ScrubUncacheableTweetRepairer.scala | 38 - .../hydrator/SourceTweetHydrator.docx | Bin 0 -> 37628 bytes .../hydrator/SourceTweetHydrator.scala | 67 - .../hydrator/StripHiddenGeoCoordinates.docx | Bin 0 -> 36840 bytes .../hydrator/StripHiddenGeoCoordinates.scala | 12 - .../SuperfluousUrlEntityScrubber.docx | Bin 0 -> 37166 bytes .../SuperfluousUrlEntityScrubber.scala | 37 - .../tweetypie/hydrator/TakedownHydrator.docx | Bin 0 -> 37396 bytes .../tweetypie/hydrator/TakedownHydrator.scala | 45 - .../tweetypie/hydrator/TextRepairer.docx | Bin 0 -> 37356 bytes .../tweetypie/hydrator/TextRepairer.scala | 47 - .../TweetAuthorVisibilityHydrator.docx | Bin 0 -> 37394 bytes .../TweetAuthorVisibilityHydrator.scala | 43 - .../hydrator/TweetCountsHydrator.docx | Bin 0 -> 38768 bytes .../hydrator/TweetCountsHydrator.scala | 189 --- .../twitter/tweetypie/hydrator/TweetCtx.docx | Bin 0 -> 37742 bytes .../twitter/tweetypie/hydrator/TweetCtx.scala | 90 -- .../tweetypie/hydrator/TweetHydration.docx | Bin 0 -> 46201 bytes .../tweetypie/hydrator/TweetHydration.scala | 848 ------------ .../hydrator/TweetLegacyFormatter.docx | Bin 0 -> 40786 bytes .../hydrator/TweetLegacyFormatter.scala | 330 ----- .../hydrator/TweetQueryOptionsExpander.docx | Bin 0 -> 38383 bytes .../hydrator/TweetQueryOptionsExpander.scala | 144 -- .../hydrator/TweetVisibilityHydrator.docx | Bin 0 -> 37554 bytes .../hydrator/TweetVisibilityHydrator.scala | 66 - .../hydrator/UnmentionDataHydrator.docx | Bin 0 -> 37052 bytes .../hydrator/UnmentionDataHydrator.scala | 28 - .../hydrator/UnrequestedFieldScrubber.docx | Bin 0 -> 39105 bytes .../hydrator/UnrequestedFieldScrubber.scala | 211 --- .../tweetypie/hydrator/UrlEntityHydrator.docx | Bin 0 -> 38331 bytes .../hydrator/UrlEntityHydrator.scala | 122 -- .../tweetypie/hydrator/ValueHydrator.docx | Bin 0 -> 38766 bytes .../tweetypie/hydrator/ValueHydrator.scala | 200 --- .../twitter/tweetypie/hydrator/package.docx | Bin 0 -> 36900 bytes .../twitter/tweetypie/hydrator/package.scala | 17 - .../scala/com/twitter/tweetypie/media/BUILD | 21 - .../com/twitter/tweetypie/media/BUILD.docx | Bin 0 -> 36946 bytes .../twitter/tweetypie/media/MediaClient.docx | Bin 0 -> 39747 bytes .../twitter/tweetypie/media/MediaClient.scala | 288 ---- .../tweetypie/media/MediaKeyClassifier.docx | Bin 0 -> 36965 bytes .../tweetypie/media/MediaKeyClassifier.scala | 25 - .../twitter/tweetypie/media/MediaKeyUtil.docx | Bin 0 -> 37078 bytes .../tweetypie/media/MediaKeyUtil.scala | 24 - .../tweetypie/media/MediaMetadata.docx | Bin 0 -> 37657 bytes .../tweetypie/media/MediaMetadata.scala | 58 - .../scala/com/twitter/tweetypie/package.docx | Bin 0 -> 38131 bytes .../scala/com/twitter/tweetypie/package.scala | 114 -- .../com/twitter/tweetypie/repository/BUILD | 82 -- .../twitter/tweetypie/repository/BUILD.docx | Bin 0 -> 37667 bytes .../tweetypie/repository/CacheStitch.docx | Bin 0 -> 37906 bytes .../tweetypie/repository/CacheStitch.scala | 87 -- .../repository/CachingTweetRepository.docx | Bin 0 -> 40560 bytes .../repository/CachingTweetRepository.scala | 329 ----- .../tweetypie/repository/Card2Repository.docx | Bin 0 -> 37351 bytes .../repository/Card2Repository.scala | 56 - .../tweetypie/repository/CardRepository.docx | Bin 0 -> 37057 bytes .../tweetypie/repository/CardRepository.scala | 28 - .../repository/CardUsersRepository.docx | Bin 0 -> 37230 bytes .../repository/CardUsersRepository.scala | 43 - .../ConversationControlRepository.docx | Bin 0 -> 37646 bytes .../ConversationControlRepository.scala | 51 - .../repository/ConversationIdRepository.docx | Bin 0 -> 38207 bytes .../repository/ConversationIdRepository.scala | 95 -- .../ConversationMutedRepository.docx | Bin 0 -> 36826 bytes .../ConversationMutedRepository.scala | 13 - ...vesContainerMaterializationRepository.docx | Bin 0 -> 37343 bytes ...esContainerMaterializationRepository.scala | 62 - .../DeletedTweetVisibilityRepository.docx | Bin 0 -> 37770 bytes .../DeletedTweetVisibilityRepository.scala | 84 -- .../repository/DeviceSourceRepository.docx | Bin 0 -> 37753 bytes .../repository/DeviceSourceRepository.scala | 75 -- .../EscherbirdAnnotationRepository.docx | Bin 0 -> 37085 bytes .../EscherbirdAnnotationRepository.scala | 23 - .../GeoScrubTimestampRepository.docx | Bin 0 -> 36901 bytes .../GeoScrubTimestampRepository.scala | 16 - .../repository/GeoduckPlaceRepository.docx | Bin 0 -> 38167 bytes .../repository/GeoduckPlaceRepository.scala | 132 -- .../LastQuoteOfQuoterRepository.docx | Bin 0 -> 37023 bytes .../LastQuoteOfQuoterRepository.scala | 24 - .../repository/ManhattanTweetRepository.docx | Bin 0 -> 38300 bytes .../repository/ManhattanTweetRepository.scala | 147 -- .../repository/MediaMetadataRepository.docx | Bin 0 -> 37071 bytes .../repository/MediaMetadataRepository.scala | 22 - .../repository/ParentUserIdRepository.docx | Bin 0 -> 37120 bytes .../repository/ParentUserIdRepository.scala | 33 - .../repository/PastedMediaRepository.docx | Bin 0 -> 38329 bytes .../repository/PastedMediaRepository.scala | 129 -- .../repository/PenguinLanguageRepository.docx | Bin 0 -> 37398 bytes .../PenguinLanguageRepository.scala | 53 - .../repository/PerspectiveRepository.docx | Bin 0 -> 36841 bytes .../repository/PerspectiveRepository.scala | 15 - .../tweetypie/repository/PlaceRepository.docx | Bin 0 -> 36841 bytes .../repository/PlaceRepository.scala | 13 - .../repository/ProfileGeoRepository.docx | Bin 0 -> 37549 bytes .../repository/ProfileGeoRepository.scala | 66 - .../QuotedTweetVisibilityRepository.docx | Bin 0 -> 37326 bytes .../QuotedTweetVisibilityRepository.scala | 48 - .../QuoterHasAlreadyQuotedRepository.docx | Bin 0 -> 36870 bytes .../QuoterHasAlreadyQuotedRepository.scala | 15 - .../repository/RelationshipRepository.docx | Bin 0 -> 37259 bytes .../repository/RelationshipRepository.scala | 53 - .../RetweetSpamCheckRepository.docx | Bin 0 -> 36857 bytes .../RetweetSpamCheckRepository.scala | 13 - .../repository/StitchLockingCache.docx | Bin 0 -> 38860 bytes .../repository/StitchLockingCache.scala | 161 --- .../StratoCommunityAccessRepository.docx | Bin 0 -> 36983 bytes .../StratoCommunityAccessRepository.scala | 26 - .../StratoCommunityMembershipRepository.docx | Bin 0 -> 36929 bytes .../StratoCommunityMembershipRepository.scala | 19 - .../StratoPromotedTweetRepository.docx | Bin 0 -> 36917 bytes .../StratoPromotedTweetRepository.scala | 19 - .../StratoSafetyLabelsRepository.docx | Bin 0 -> 37185 bytes .../StratoSafetyLabelsRepository.scala | 49 - ...atoSubscriptionVerificationRepository.docx | Bin 0 -> 36966 bytes ...toSubscriptionVerificationRepository.scala | 19 - .../StratoSuperFollowEligibleRepository.docx | Bin 0 -> 36947 bytes .../StratoSuperFollowEligibleRepository.scala | 19 - .../StratoSuperFollowRelationsRepository.docx | Bin 0 -> 37509 bytes ...StratoSuperFollowRelationsRepository.scala | 60 - .../repository/TweetCountsRepository.docx | Bin 0 -> 37331 bytes .../repository/TweetCountsRepository.scala | 59 - .../tweetypie/repository/TweetQuery.docx | Bin 0 -> 38553 bytes .../tweetypie/repository/TweetQuery.scala | 147 -- .../tweetypie/repository/TweetRepository.docx | Bin 0 -> 37083 bytes .../repository/TweetRepository.scala | 31 - .../repository/TweetResultRepository.docx | Bin 0 -> 36933 bytes .../repository/TweetResultRepository.scala | 17 - .../repository/TweetSpamCheckRepository.docx | Bin 0 -> 36871 bytes .../repository/TweetSpamCheckRepository.scala | 14 - .../repository/TweetVisibilityRepository.docx | Bin 0 -> 38496 bytes .../TweetVisibilityRepository.scala | 123 -- .../repository/UnmentionInfoRepository.docx | Bin 0 -> 37341 bytes .../repository/UnmentionInfoRepository.scala | 39 - .../UnmentionedEntitiesRepository.docx | Bin 0 -> 37086 bytes .../UnmentionedEntitiesRepository.scala | 28 - .../tweetypie/repository/UrlRepository.docx | Bin 0 -> 37612 bytes .../tweetypie/repository/UrlRepository.scala | 69 - .../repository/UserInfoRepository.docx | Bin 0 -> 38295 bytes .../repository/UserInfoRepository.scala | 138 -- .../tweetypie/repository/UserRepository.docx | Bin 0 -> 39669 bytes .../tweetypie/repository/UserRepository.scala | 285 ---- .../repository/UserTakedownRepository.docx | Bin 0 -> 37152 bytes .../repository/UserTakedownRepository.scala | 26 - .../repository/UserViewerRecipient.docx | Bin 0 -> 37674 bytes .../repository/UserViewerRecipient.scala | 78 -- .../tweetypie/repository/VibeRepository.docx | Bin 0 -> 37083 bytes .../tweetypie/repository/VibeRepository.scala | 30 - .../VisibilityResultToFilteredState.docx | Bin 0 -> 38448 bytes .../VisibilityResultToFilteredState.scala | 209 --- .../twitter/tweetypie/repository/package.docx | Bin 0 -> 36764 bytes .../tweetypie/repository/package.scala | 8 - .../tweetypie/serverutil/ActivityService.docx | Bin 0 -> 36998 bytes .../serverutil/ActivityService.scala | 25 - .../tweetypie/serverutil/ActivityUtil.docx | Bin 0 -> 36970 bytes .../tweetypie/serverutil/ActivityUtil.scala | 23 - .../com/twitter/tweetypie/serverutil/BUILD | 23 - .../twitter/tweetypie/serverutil/BUILD.docx | Bin 0 -> 36981 bytes .../serverutil/BoringStackTrace.docx | Bin 0 -> 37414 bytes .../serverutil/BoringStackTrace.scala | 43 - .../serverutil/CaffeineMemcacheClient.docx | Bin 0 -> 38871 bytes .../serverutil/CaffeineMemcacheClient.scala | 174 --- .../serverutil/DeviceSourceParser.docx | Bin 0 -> 38217 bytes .../serverutil/DeviceSourceParser.scala | 100 -- .../serverutil/ExceptionCounter.docx | Bin 0 -> 37123 bytes .../serverutil/ExceptionCounter.scala | 38 - .../ExtendedTweetMetadataBuilder.docx | Bin 0 -> 37294 bytes .../ExtendedTweetMetadataBuilder.scala | 52 - .../serverutil/NullMemcacheClient.docx | Bin 0 -> 37216 bytes .../serverutil/NullMemcacheClient.scala | 46 - .../tweetypie/serverutil/PartnerMedia.docx | Bin 0 -> 36885 bytes .../tweetypie/serverutil/PartnerMedia.scala | 15 - .../tweetypie/serverutil/StoredCard.docx | Bin 0 -> 37363 bytes .../tweetypie/serverutil/StoredCard.scala | 36 - .../tweetypie/serverutil/logcachewrites/BUILD | 15 - .../serverutil/logcachewrites/BUILD.docx | Bin 0 -> 36856 bytes .../logcachewrites/TweetCacheWrite.docx | Bin 0 -> 38135 bytes .../logcachewrites/TweetCacheWrite.scala | 99 -- .../logcachewrites/WriteLoggingCache.docx | Bin 0 -> 37509 bytes .../logcachewrites/WriteLoggingCache.scala | 66 - .../scala/com/twitter/tweetypie/service/BUILD | 38 - .../com/twitter/tweetypie/service/BUILD.docx | Bin 0 -> 37130 bytes .../service/ClientHandlingTweetService.docx | Bin 0 -> 41238 bytes .../service/ClientHandlingTweetService.scala | 524 -------- .../service/DispatchingTweetService.docx | Bin 0 -> 40267 bytes .../service/DispatchingTweetService.scala | 376 ------ .../service/FailureLoggingTweetService.docx | Bin 0 -> 37740 bytes .../service/FailureLoggingTweetService.scala | 76 -- .../tweetypie/service/MethodAuthorizer.docx | Bin 0 -> 37820 bytes .../tweetypie/service/MethodAuthorizer.scala | 91 -- .../service/ObservedTweetService.docx | Bin 0 -> 39553 bytes .../service/ObservedTweetService.scala | 422 ------ .../tweetypie/service/QuillTweetService.docx | Bin 0 -> 37482 bytes .../tweetypie/service/QuillTweetService.scala | 75 -- .../service/ReplicatingTweetService.docx | Bin 0 -> 37284 bytes .../service/ReplicatingTweetService.scala | 47 - .../tweetypie/service/RescueExceptions.docx | Bin 0 -> 37399 bytes .../tweetypie/service/RescueExceptions.scala | 63 - .../tweetypie/service/TweetServiceProxy.docx | Bin 0 -> 37861 bytes .../tweetypie/service/TweetServiceProxy.scala | 146 -- .../tweetypie/service/TweetServiceWarmer.docx | Bin 0 -> 38108 bytes .../service/TweetServiceWarmer.scala | 90 -- .../twitter/tweetypie/service/observer/BUILD | 21 - .../tweetypie/service/observer/BUILD.docx | Bin 0 -> 36951 bytes .../observer/GetDeletedTweetsObserver.docx | Bin 0 -> 36984 bytes .../observer/GetDeletedTweetsObserver.scala | 25 - .../GetStoredTweetsByUserObserver.docx | Bin 0 -> 37571 bytes .../GetStoredTweetsByUserObserver.scala | 67 - .../observer/GetStoredTweetsObserver.docx | Bin 0 -> 37275 bytes .../observer/GetStoredTweetsObserver.scala | 52 - .../observer/GetTweetCountsObserver.docx | Bin 0 -> 37521 bytes .../observer/GetTweetCountsObserver.scala | 67 - .../observer/GetTweetFieldsObserver.docx | Bin 0 -> 38435 bytes .../observer/GetTweetFieldsObserver.scala | 160 --- .../service/observer/GetTweetsObserver.docx | Bin 0 -> 38188 bytes .../service/observer/GetTweetsObserver.scala | 120 -- .../tweetypie/service/observer/Observer.docx | Bin 0 -> 40343 bytes .../tweetypie/service/observer/Observer.scala | 365 ----- .../service/observer/PostTweetObserver.docx | Bin 0 -> 37794 bytes .../service/observer/PostTweetObserver.scala | 82 -- .../service/observer/ResultStateStats.docx | Bin 0 -> 36974 bytes .../service/observer/ResultStateStats.scala | 19 - .../observer/StoredTweetsObserver.docx | Bin 0 -> 37246 bytes .../observer/StoredTweetsObserver.scala | 56 - .../tweetypie/service/observer/package.docx | Bin 0 -> 36808 bytes .../tweetypie/service/observer/package.scala | 13 - .../twitter/tweetypie/service/package.docx | Bin 0 -> 36780 bytes .../twitter/tweetypie/service/package.scala | 12 - .../tweetypie/store/AsyncEnqueueStore.docx | Bin 0 -> 37470 bytes .../tweetypie/store/AsyncEnqueueStore.scala | 95 -- 400 files changed, 20528 deletions(-) create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetDeletedTweetsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetDeletedTweetsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetCountsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetCountsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetTakedownEventBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetTakedownEventBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReplyBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReplyBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RetweetBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RetweetBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowRetweetSpamChecker.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowRetweetSpamChecker.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetAdditionalFieldsBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetAdditionalFieldsBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetRetweetVisibilityHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetRetweetVisibilityHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TakedownHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TakedownHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetCreationLock.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetCreationLock.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/Card2Hydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/Card2Hydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationMutedHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationMutedHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CopyFromSourceTweet.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CopyFromSourceTweet.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditPerspectiveHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditPerspectiveHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EscherbirdAnnotationHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EscherbirdAnnotationHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/FeatureSwitchResultsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/FeatureSwitchResultsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/GeoScrubHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/GeoScrubHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/HasMediaHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/HasMediaHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM3433FilterHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM3433FilterHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaEntityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaEntityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaInfoHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaInfoHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaIsProtectedHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaIsProtectedHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaTagsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaTagsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MentionEntityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MentionEntityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PastedMediaHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PastedMediaHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefUrlsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefUrlsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RepairMutation.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RepairMutation.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReportedTweetFilter.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReportedTweetFilter.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SourceTweetHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SourceTweetHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SuperfluousUrlEntityScrubber.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SuperfluousUrlEntityScrubber.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TakedownHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TakedownHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetAuthorVisibilityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetAuthorVisibilityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCountsHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCountsHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCtx.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCtx.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetHydration.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetHydration.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetLegacyFormatter.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetLegacyFormatter.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetQueryOptionsExpander.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetQueryOptionsExpander.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetVisibilityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetVisibilityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UnmentionDataHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UnmentionDataHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UnrequestedFieldScrubber.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UnrequestedFieldScrubber.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UrlEntityHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/UrlEntityHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ValueHydrator.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ValueHydrator.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/package.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaClient.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaClient.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaKeyClassifier.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaKeyClassifier.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaKeyUtil.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaKeyUtil.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaMetadata.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/media/MediaMetadata.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/package.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CacheStitch.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CacheStitch.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CachingTweetRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CachingTweetRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/Card2Repository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/Card2Repository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CardRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CardRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CardUsersRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CardUsersRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationControlRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationControlRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationIdRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationIdRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationMutedRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ConversationMutedRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CreativesContainerMaterializationRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/CreativesContainerMaterializationRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/DeletedTweetVisibilityRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/DeletedTweetVisibilityRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/DeviceSourceRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/DeviceSourceRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/EscherbirdAnnotationRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/EscherbirdAnnotationRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/GeoScrubTimestampRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/GeoScrubTimestampRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/GeoduckPlaceRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/GeoduckPlaceRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/LastQuoteOfQuoterRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/LastQuoteOfQuoterRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ManhattanTweetRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ManhattanTweetRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/MediaMetadataRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/MediaMetadataRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ParentUserIdRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ParentUserIdRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PastedMediaRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PastedMediaRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PenguinLanguageRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PenguinLanguageRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PerspectiveRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PerspectiveRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PlaceRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/PlaceRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ProfileGeoRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/ProfileGeoRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/QuotedTweetVisibilityRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/QuotedTweetVisibilityRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/QuoterHasAlreadyQuotedRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/QuoterHasAlreadyQuotedRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/RelationshipRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/RelationshipRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/RetweetSpamCheckRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/RetweetSpamCheckRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StitchLockingCache.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StitchLockingCache.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoCommunityAccessRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoCommunityAccessRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoCommunityMembershipRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoCommunityMembershipRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoPromotedTweetRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoPromotedTweetRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSafetyLabelsRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSafetyLabelsRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSubscriptionVerificationRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSubscriptionVerificationRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSuperFollowEligibleRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSuperFollowEligibleRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSuperFollowRelationsRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/StratoSuperFollowRelationsRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetCountsRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetCountsRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetQuery.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetQuery.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetResultRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetResultRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetSpamCheckRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetSpamCheckRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetVisibilityRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/TweetVisibilityRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UnmentionInfoRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UnmentionInfoRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UnmentionedEntitiesRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UnmentionedEntitiesRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UrlRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UrlRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserInfoRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserInfoRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserTakedownRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserTakedownRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserViewerRecipient.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/UserViewerRecipient.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/VibeRepository.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/VibeRepository.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/VisibilityResultToFilteredState.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/VisibilityResultToFilteredState.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/repository/package.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ActivityService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ActivityService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ActivityUtil.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ActivityUtil.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/BoringStackTrace.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/BoringStackTrace.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/CaffeineMemcacheClient.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/CaffeineMemcacheClient.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/DeviceSourceParser.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/DeviceSourceParser.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ExceptionCounter.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ExceptionCounter.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ExtendedTweetMetadataBuilder.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/ExtendedTweetMetadataBuilder.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/NullMemcacheClient.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/NullMemcacheClient.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/PartnerMedia.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/PartnerMedia.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/StoredCard.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/StoredCard.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/TweetCacheWrite.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/TweetCacheWrite.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/WriteLoggingCache.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/serverutil/logcachewrites/WriteLoggingCache.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ClientHandlingTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ClientHandlingTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/DispatchingTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/DispatchingTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/FailureLoggingTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/FailureLoggingTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/MethodAuthorizer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/MethodAuthorizer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ObservedTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ObservedTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/QuillTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/QuillTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ReplicatingTweetService.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/ReplicatingTweetService.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/RescueExceptions.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/RescueExceptions.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/TweetServiceProxy.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/TweetServiceProxy.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/TweetServiceWarmer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/TweetServiceWarmer.scala delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/BUILD create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/BUILD.docx create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetDeletedTweetsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetDeletedTweetsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetStoredTweetsByUserObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetStoredTweetsByUserObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetStoredTweetsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetStoredTweetsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetCountsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetCountsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetFieldsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetFieldsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/GetTweetsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/Observer.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/Observer.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/PostTweetObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/PostTweetObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/ResultStateStats.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/ResultStateStats.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/StoredTweetsObserver.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/StoredTweetsObserver.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/observer/package.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/package.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/service/package.scala create mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/store/AsyncEnqueueStore.docx delete mode 100644 tweetypie/server/src/main/scala/com/twitter/tweetypie/store/AsyncEnqueueStore.scala diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetDeletedTweetsHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetDeletedTweetsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..675b038f975382ab7eaf3b9a9358a4c4f3281e64 GIT binary patch literal 38228 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 Stitch[Set[TweetId]] - - def processTweetResponse(response: Try[GetTweet.Response]): Stitch[Option[Tweet]] = { - import GetTweet.Response._ - - response match { - case Return(Found(tweet)) => Stitch.value(Some(tweet)) - case Return(Deleted | NotFound | BounceDeleted(_)) => Stitch.None - case Throw(_: RateLimited) => Stitch.exception(OverCapacity("manhattan")) - case Throw(exception) => Stitch.exception(exception) - } - } - - def convertDeletedTweetResponse( - r: DeletedTweetResponse, - extantIds: Set[TweetId] - ): GetDeletedTweetResult = { - val id = r.tweetId - if (extantIds.contains(id) || r.deleteState == DeleteState.NotDeleted) { - GetDeletedTweetResult(id, DeletedTweetState.NotDeleted) - } else { - r.overallResponse match { - case TweetResponseCode.Success => - GetDeletedTweetResult(id, convertState(r.deleteState), r.tweet) - case TweetResponseCode.OverCapacity => throw OverCapacity("manhattan") - case _ => - throw InternalServerError( - s"Unhandled response ${r.overallResponse} from getDeletedTweets for tweet $id" - ) - } - } - } - - def convertState(d: DeleteState): DeletedTweetState = d match { - case DeleteState.NotFound => DeletedTweetState.NotFound - case DeleteState.NotDeleted => DeletedTweetState.NotDeleted - case DeleteState.SoftDeleted => DeletedTweetState.SoftDeleted - // Callers of this endpoint treat BounceDeleted tweets the same as SoftDeleted - case DeleteState.BounceDeleted => DeletedTweetState.SoftDeleted - case DeleteState.HardDeleted => DeletedTweetState.HardDeleted - } - - /** - * Converts [[TweetStorageClient.GetTweet]] into a FutureArrow that returns extant tweet ids from - * the original list. This method is used to check underlying storage againt cache, preferring - * cache if a tweet exists there. - */ - def tweetsExist(getTweet: TweetStorageClient.GetTweet): TweetsExist = - (tweetIds: Seq[TweetId]) => - for { - response <- Stitch.traverse(tweetIds) { tweetId => getTweet(tweetId).liftToTry } - tweets <- Stitch.collect(response.map(processTweetResponse)) - } yield tweets.flatten.map(_.id).toSet.filter(tweetIds.contains) - - def apply( - getDeletedTweets: TweetStorageClient.GetDeletedTweets, - tweetsExist: TweetsExist, - stats: StatsReceiver - ): Type = { - - val notFound = stats.counter("not_found") - val notDeleted = stats.counter("not_deleted") - val softDeleted = stats.counter("soft_deleted") - val hardDeleted = stats.counter("hard_deleted") - val unknown = stats.counter("unknown") - - def trackState(results: Seq[GetDeletedTweetResult]): Unit = - results.foreach { r => - r.state match { - case DeletedTweetState.NotFound => notFound.incr() - case DeletedTweetState.NotDeleted => notDeleted.incr() - case DeletedTweetState.SoftDeleted => softDeleted.incr() - case DeletedTweetState.HardDeleted => hardDeleted.incr() - case _ => unknown.incr() - } - } - - FutureArrow { request => - Stitch.run { - Stitch - .join( - getDeletedTweets(request.tweetIds), - tweetsExist(request.tweetIds) - ) - .map { - case (deletedTweetResponses, extantIds) => - val responseIds = deletedTweetResponses.map(_.tweetId) - assert( - responseIds == request.tweetIds, - s"getDeletedTweets response does not match order of request: Request ids " + - s"(${request.tweetIds.mkString(", ")}) != response ids (${responseIds - .mkString(", ")})" - ) - deletedTweetResponses.map { r => convertDeletedTweetResponse(r, extantIds) } - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..fb37285cf65a6fb19e158d8530072fe11ced2532 GIT binary patch literal 39111 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

$A)*ew$^3$`@P7EsbUKLfWy`=2E;9&R51cC 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 OR*(%aJoMAPZ~YG^hB!_D literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.scala deleted file mode 100644 index c9b096e0f..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsByUserHandler.scala +++ /dev/null @@ -1,188 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.flockdb.client.Cursor -import com.twitter.flockdb.client.PageResult -import com.twitter.flockdb.client.Select -import com.twitter.flockdb.client.StatusGraph -import com.twitter.flockdb.client.UserTimelineGraph -import com.twitter.flockdb.client.thriftscala.EdgeState -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.storage.TweetStorageClient -import com.twitter.tweetypie.storage.TweetStorageClient.GetStoredTweet -import com.twitter.tweetypie.thriftscala.GetStoredTweetsByUserOptions -import com.twitter.tweetypie.thriftscala.GetStoredTweetsByUserRequest -import com.twitter.tweetypie.thriftscala.GetStoredTweetsByUserResult -import com.twitter.tweetypie.thriftscala.GetStoredTweetsOptions -import com.twitter.tweetypie.thriftscala.GetStoredTweetsRequest - -object GetStoredTweetsByUserHandler { - type Type = FutureArrow[GetStoredTweetsByUserRequest, GetStoredTweetsByUserResult] - - def apply( - getStoredTweetsHandler: GetStoredTweetsHandler.Type, - getStoredTweet: TweetStorageClient.GetStoredTweet, - selectPage: FutureArrow[Select[StatusGraph], PageResult[Long]], - maxPages: Int - ): Type = { - FutureArrow { request => - val options = request.options.getOrElse(GetStoredTweetsByUserOptions()) - - val startTimeMsec: Long = options.startTimeMsec.getOrElse(0L) - val endTimeMsec: Long = options.endTimeMsec.getOrElse(Time.now.inMillis) - val cursor = options.cursor.map(Cursor(_)).getOrElse { - if (options.startFromOldest) Cursor.lowest else Cursor.highest - } - - getNextTweetIdsInTimeRange( - request.userId, - startTimeMsec, - endTimeMsec, - cursor, - selectPage, - getStoredTweet, - maxPages, - numTries = 0 - ).flatMap { - case (tweetIds, cursor) => - val getStoredTweetsRequest = toGetStoredTweetsRequest(tweetIds, request.userId, options) - - getStoredTweetsHandler(getStoredTweetsRequest) - .map { getStoredTweetsResults => - GetStoredTweetsByUserResult( - storedTweets = getStoredTweetsResults.map(_.storedTweet), - cursor = if (cursor.isEnd) None else Some(cursor.value) - ) - } - } - } - } - - private def toGetStoredTweetsRequest( - tweetIds: Seq[TweetId], - userId: UserId, - getStoredTweetsByUserOptions: GetStoredTweetsByUserOptions - ): GetStoredTweetsRequest = { - - val options: GetStoredTweetsOptions = GetStoredTweetsOptions( - bypassVisibilityFiltering = getStoredTweetsByUserOptions.bypassVisibilityFiltering, - forUserId = if (getStoredTweetsByUserOptions.setForUserId) Some(userId) else None, - additionalFieldIds = getStoredTweetsByUserOptions.additionalFieldIds - ) - - GetStoredTweetsRequest( - tweetIds = tweetIds, - options = Some(options) - ) - } - - private def getNextTweetIdsInTimeRange( - userId: UserId, - startTimeMsec: Long, - endTimeMsec: Long, - cursor: Cursor, - selectPage: FutureArrow[Select[StatusGraph], PageResult[Long]], - getStoredTweet: TweetStorageClient.GetStoredTweet, - maxPages: Int, - numTries: Int - ): Future[(Seq[TweetId], Cursor)] = { - val select = Select( - sourceId = userId, - graph = UserTimelineGraph, - stateIds = - Some(Seq(EdgeState.Archived.value, EdgeState.Positive.value, EdgeState.Removed.value)) - ).withCursor(cursor) - - def inTimeRange(timestamp: Long): Boolean = - timestamp >= startTimeMsec && timestamp <= endTimeMsec - def pastTimeRange(timestamps: Seq[Long]) = { - if (cursor.isAscending) { - timestamps.max > endTimeMsec - } else { - timestamps.min < startTimeMsec - } - } - - val pageResultFuture: Future[PageResult[Long]] = selectPage(select) - - pageResultFuture.flatMap { pageResult => - val groupedIds = pageResult.entries.groupBy(SnowflakeId.isSnowflakeId) - val nextCursor = if (cursor.isAscending) pageResult.previousCursor else pageResult.nextCursor - - // Timestamps for the creation of Tweets with snowflake IDs can be calculated from the IDs - // themselves. - val snowflakeIdsTimestamps: Seq[(Long, Long)] = groupedIds.getOrElse(true, Seq()).map { id => - val snowflakeTimeMillis = SnowflakeId.unixTimeMillisFromId(id) - (id, snowflakeTimeMillis) - } - - // For non-snowflake Tweets, we need to fetch the Tweet data from Manhattan to see when the - // Tweet was created. - val nonSnowflakeIdsTimestamps: Future[Seq[(Long, Long)]] = Stitch.run( - Stitch - .traverse(groupedIds.getOrElse(false, Seq()))(getStoredTweet) - .map { - _.flatMap { - case GetStoredTweet.Response.FoundAny(tweet, _, _, _, _) => { - if (tweet.coreData.exists(_.createdAtSecs > 0)) { - Some((tweet.id, tweet.coreData.get.createdAtSecs)) - } else None - } - case _ => None - } - }) - - nonSnowflakeIdsTimestamps.flatMap { nonSnowflakeList => - val allTweetIdsAndTimestamps = snowflakeIdsTimestamps ++ nonSnowflakeList - val filteredTweetIds = allTweetIdsAndTimestamps - .filter { - case (_, ts) => inTimeRange(ts) - } - .map(_._1) - - if (nextCursor.isEnd) { - // We've considered the last Tweet for this User. There are no more Tweets to return. - Future.value((filteredTweetIds, Cursor.end)) - } else if (allTweetIdsAndTimestamps.nonEmpty && - pastTimeRange(allTweetIdsAndTimestamps.map(_._2))) { - // At least one Tweet returned from Tflock has a timestamp past our time range, i.e. - // greater than the end time (if we're fetching in an ascending order) or lower than the - // start time (if we're fetching in a descending order). There is no point in looking at - // any more Tweets from this User as they'll all be outside the time range. - Future.value((filteredTweetIds, Cursor.end)) - } else if (filteredTweetIds.isEmpty) { - // We're here because one of two things happened: - // 1. allTweetIdsAndTimestamps is empty: Either Tflock has returned an empty page of Tweets - // or we weren't able to fetch timestamps for any of the Tweets Tflock returned. In this - // case, we fetch the next page of Tweets. - // 2. allTweetIdsAndTimestamps is non-empty but filteredTweetIds is empty: The current page - // has no Tweets inside the requested time range. We fetch the next page of Tweets and - // try again. - // If we hit the limit for the maximum number of pages from tflock to be requested, we - // return an empty list of Tweets with the cursor for the caller to try again. - - if (numTries == maxPages) { - Future.value((filteredTweetIds, nextCursor)) - } else { - getNextTweetIdsInTimeRange( - userId = userId, - startTimeMsec = startTimeMsec, - endTimeMsec = endTimeMsec, - cursor = nextCursor, - selectPage = selectPage, - getStoredTweet = getStoredTweet, - maxPages = maxPages, - numTries = numTries + 1 - ) - } - } else { - // filteredTweetIds is non-empty: There are some Tweets in this page that are within the - // requested time range, and we aren't out of the time range yet. We return the Tweets we - // have and set the cursor forward for the next request. - Future.value((filteredTweetIds, nextCursor)) - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..5212a1e4c0ca05f4889b8e061e8c4d0ed27d7bf6 GIT binary patch literal 38308 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.scala deleted file mode 100644 index ab8bfb4ad..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetStoredTweetsHandler.scala +++ /dev/null @@ -1,161 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.StoredTweetResult._ -import com.twitter.tweetypie.core.StoredTweetResult -import com.twitter.tweetypie.core.TweetResult -import com.twitter.tweetypie.FieldId -import com.twitter.tweetypie.FutureArrow -import com.twitter.tweetypie.repository.CacheControl -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.repository.TweetResultRepository -import com.twitter.tweetypie.thriftscala.{BounceDeleted => BounceDeletedState} -import com.twitter.tweetypie.thriftscala.{ForceAdded => ForceAddedState} -import com.twitter.tweetypie.thriftscala.GetStoredTweetsRequest -import com.twitter.tweetypie.thriftscala.GetStoredTweetsOptions -import com.twitter.tweetypie.thriftscala.GetStoredTweetsResult -import com.twitter.tweetypie.thriftscala.{HardDeleted => HardDeletedState} -import com.twitter.tweetypie.thriftscala.{NotFound => NotFoundState} -import com.twitter.tweetypie.thriftscala.{SoftDeleted => SoftDeletedState} -import com.twitter.tweetypie.thriftscala.StatusCounts -import com.twitter.tweetypie.thriftscala.StoredTweetError -import com.twitter.tweetypie.thriftscala.StoredTweetInfo -import com.twitter.tweetypie.thriftscala.StoredTweetState -import com.twitter.tweetypie.thriftscala.{Undeleted => UndeletedState} - -object GetStoredTweetsHandler { - type Type = FutureArrow[GetStoredTweetsRequest, Seq[GetStoredTweetsResult]] - - def apply(tweetRepo: TweetResultRepository.Type): Type = { - FutureArrow[GetStoredTweetsRequest, Seq[GetStoredTweetsResult]] { request => - val requestOptions: GetStoredTweetsOptions = - request.options.getOrElse(GetStoredTweetsOptions()) - val queryOptions = toTweetQueryOptions(requestOptions) - - val result = Stitch - .traverse(request.tweetIds) { tweetId => - tweetRepo(tweetId, queryOptions) - .map(toStoredTweetInfo) - .map(GetStoredTweetsResult(_)) - .handle { - case _ => - GetStoredTweetsResult( - StoredTweetInfo( - tweetId = tweetId, - errors = Seq(StoredTweetError.FailedFetch) - ) - ) - } - } - - Stitch.run(result) - } - } - - private def toTweetQueryOptions(options: GetStoredTweetsOptions): TweetQuery.Options = { - val countsFields: Set[FieldId] = Set( - StatusCounts.FavoriteCountField.id, - StatusCounts.ReplyCountField.id, - StatusCounts.RetweetCountField.id, - StatusCounts.QuoteCountField.id - ) - - TweetQuery.Options( - include = GetTweetsHandler.BaseInclude.also( - tweetFields = Set(Tweet.CountsField.id) ++ options.additionalFieldIds, - countsFields = countsFields - ), - cacheControl = CacheControl.NoCache, - enforceVisibilityFiltering = !options.bypassVisibilityFiltering, - forUserId = options.forUserId, - requireSourceTweet = false, - fetchStoredTweets = true - ) - } - - private def toStoredTweetInfo(tweetResult: TweetResult): StoredTweetInfo = { - def translateErrors(errors: Seq[StoredTweetResult.Error]): Seq[StoredTweetError] = { - errors.map { - case StoredTweetResult.Error.Corrupt => StoredTweetError.Corrupt - case StoredTweetResult.Error.FieldsMissingOrInvalid => - StoredTweetError.FieldsMissingOrInvalid - case StoredTweetResult.Error.ScrubbedFieldsPresent => StoredTweetError.ScrubbedFieldsPresent - case StoredTweetResult.Error.ShouldBeHardDeleted => StoredTweetError.ShouldBeHardDeleted - } - } - - val tweetData = tweetResult.value - - tweetData.storedTweetResult match { - case Some(storedTweetResult) => { - val (tweet, storedTweetState, errors) = storedTweetResult match { - case Present(errors, _) => (Some(tweetData.tweet), None, translateErrors(errors)) - case HardDeleted(softDeletedAtMsec, hardDeletedAtMsec) => - ( - Some(tweetData.tweet), - Some( - StoredTweetState.HardDeleted( - HardDeletedState(softDeletedAtMsec, hardDeletedAtMsec))), - Seq() - ) - case SoftDeleted(softDeletedAtMsec, errors, _) => - ( - Some(tweetData.tweet), - Some(StoredTweetState.SoftDeleted(SoftDeletedState(softDeletedAtMsec))), - translateErrors(errors) - ) - case BounceDeleted(deletedAtMsec, errors, _) => - ( - Some(tweetData.tweet), - Some(StoredTweetState.BounceDeleted(BounceDeletedState(deletedAtMsec))), - translateErrors(errors) - ) - case Undeleted(undeletedAtMsec, errors, _) => - ( - Some(tweetData.tweet), - Some(StoredTweetState.Undeleted(UndeletedState(undeletedAtMsec))), - translateErrors(errors) - ) - case ForceAdded(addedAtMsec, errors, _) => - ( - Some(tweetData.tweet), - Some(StoredTweetState.ForceAdded(ForceAddedState(addedAtMsec))), - translateErrors(errors) - ) - case Failed(errors) => (None, None, translateErrors(errors)) - case NotFound => (None, Some(StoredTweetState.NotFound(NotFoundState())), Seq()) - } - - StoredTweetInfo( - tweetId = tweetData.tweet.id, - tweet = tweet.map(sanitizeNullMediaFields), - storedTweetState = storedTweetState, - errors = errors - ) - } - - case None => - StoredTweetInfo( - tweetId = tweetData.tweet.id, - tweet = Some(sanitizeNullMediaFields(tweetData.tweet)) - ) - } - } - - private def sanitizeNullMediaFields(tweet: Tweet): Tweet = { - // Some media fields are initialized as `null` at the storage layer. - // If the Tweet is meant to be hard deleted, or is not hydrated for - // some other reason but the media entities still exist, we sanitize - // these fields to allow serialization. - tweet.copy(media = tweet.media.map(_.map { mediaEntity => - mediaEntity.copy( - url = Option(mediaEntity.url).getOrElse(""), - mediaUrl = Option(mediaEntity.mediaUrl).getOrElse(""), - mediaUrlHttps = Option(mediaEntity.mediaUrlHttps).getOrElse(""), - displayUrl = Option(mediaEntity.displayUrl).getOrElse(""), - expandedUrl = Option(mediaEntity.expandedUrl).getOrElse(""), - ) - })) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetCountsHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetCountsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..9c2ecfabe63728f5066cd75c8c7ac1cd9937a185 GIT binary patch literal 37219 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 - GetTweetCountsResult( - tweetId = id, - retweetCount = retweetCount, - replyCount = replyCount, - favoriteCount = favoriteCount, - quoteCount = quoteCount, - bookmarkCount = bookmarkCount - ) - } - - FutureArrow[GetTweetCountsRequest, Seq[GetTweetCountsResult]] { request => - Stitch.run( - Stitch.traverse(request.tweetIds)(idToResult(_, request)) - ) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..b05afcdeac9a6164951b988daa77ef068b9dec97 GIT binary patch literal 40605 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 I_RnAc0}$X)od5s; literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.scala deleted file mode 100644 index 55ab6cb18..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetFieldsHandler.scala +++ /dev/null @@ -1,395 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.container.thriftscala.MaterializeAsTweetFieldsRequest -import com.twitter.context.TestingSignalsContext -import com.twitter.servo.util.FutureArrow -import com.twitter.spam.rtf.thriftscala.FilteredReason -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository.DeletedTweetVisibilityRepository -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala.TweetFieldsResultState -import com.twitter.tweetypie.thriftscala._ - -/** - * Handler for the `getTweetFields` endpoint. - */ -object GetTweetFieldsHandler { - type Type = GetTweetFieldsRequest => Future[Seq[GetTweetFieldsResult]] - - def apply( - tweetRepo: TweetResultRepository.Type, - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - containerAsGetTweetFieldsResultRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Type = { - FutureArrow[GetTweetFieldsRequest, Seq[GetTweetFieldsResult]] { request => - val queryOptions = toTweetQueryOptions(request.options) - - Stitch.run( - Stitch.traverse(request.tweetIds) { id => - tweetRepo(id, queryOptions).liftToTry.flatMap { tweetResult => - toGetTweetFieldsResult( - id, - tweetResult, - request.options, - deletedTweetVisibilityRepo, - containerAsGetTweetFieldsResultRepo, - stats, - shouldMaterializeContainers - ) - } - } - ) - } - } - - /** - * Converts a `GetTweetFieldsOptions` into an internal `TweetQuery.Options`. - */ - def toTweetQueryOptions(options: GetTweetFieldsOptions): TweetQuery.Options = { - val includes = options.tweetIncludes - val shouldSkipCache = TestingSignalsContext().flatMap(_.simulateBackPressure).nonEmpty - val cacheControl = - if (shouldSkipCache) CacheControl.NoCache - else if (options.doNotCache) CacheControl.ReadOnlyCache - else CacheControl.ReadWriteCache - - TweetQuery.Options( - include = TweetQuery - .Include( - tweetFields = includes.collect { - case TweetInclude.TweetFieldId(id) => id - case TweetInclude.CountsFieldId(_) => Tweet.CountsField.id - case TweetInclude.MediaEntityFieldId(_) => Tweet.MediaField.id - }.toSet, - countsFields = includes.collect { case TweetInclude.CountsFieldId(id) => id }.toSet, - mediaFields = includes.collect { case TweetInclude.MediaEntityFieldId(id) => id }.toSet, - quotedTweet = options.includeQuotedTweet, - pastedMedia = true - ).also( - /** - * Always fetching underlying creatives container id. see - * [[hydrateCreativeContainerBackedTweet]] for more detail. - */ - tweetFields = Seq(Tweet.UnderlyingCreativesContainerIdField.id) - ), - cacheControl = cacheControl, - enforceVisibilityFiltering = options.visibilityPolicy == TweetVisibilityPolicy.UserVisible, - safetyLevel = options.safetyLevel.getOrElse(SafetyLevel.FilterNone), - forUserId = options.forUserId, - languageTag = options.languageTag.getOrElse("en"), - cardsPlatformKey = options.cardsPlatformKey, - extensionsArgs = options.extensionsArgs, - forExternalConsumption = true, - simpleQuotedTweet = options.simpleQuotedTweet - ) - } - - def toGetTweetFieldsResult( - tweetId: TweetId, - res: Try[TweetResult], - options: GetTweetFieldsOptions, - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - containerAsGetTweetFieldsResultRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Stitch[GetTweetFieldsResult] = { - val measureRacyReads: TweetId => Unit = trackLossyReadsAfterWrite( - stats.stat("racy_reads", "get_tweet_fields"), - Duration.fromSeconds(3) - ) - - res match { - case Throw(NotFound) => - measureRacyReads(tweetId) - Stitch.value(GetTweetFieldsResult(tweetId, NotFoundResultState)) - - case Throw(ex) => - val resultStateStitch = failureResultState(ex) match { - case notFoundResultState @ TweetFieldsResultState.NotFound(_) => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - ex, - tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = false - ) - ).map(withVisibilityFilteredReason(notFoundResultState, _)) - case res => Stitch.value(res) - } - resultStateStitch.map(res => GetTweetFieldsResult(tweetId, res)) - case Return(r) => - toTweetFieldsResult( - r, - options, - deletedTweetVisibilityRepo, - containerAsGetTweetFieldsResultRepo, - stats, - shouldMaterializeContainers - ).flatMap { getTweetFieldsResult => - hydrateCreativeContainerBackedTweet( - r.value.tweet.underlyingCreativesContainerId, - getTweetFieldsResult, - options, - containerAsGetTweetFieldsResultRepo, - tweetId, - stats, - shouldMaterializeContainers - ) - } - } - } - - private def failureResultState(ex: Throwable): TweetFieldsResultState = - ex match { - case FilteredState.Unavailable.TweetDeleted => DeletedResultState - case FilteredState.Unavailable.BounceDeleted => BounceDeletedResultState - case FilteredState.Unavailable.SourceTweetNotFound(d) => notFoundResultState(deleted = d) - case FilteredState.Unavailable.Author.NotFound => NotFoundResultState - case fs: FilteredState.HasFilteredReason => toFilteredState(fs.filteredReason) - case OverCapacity(_) => toFailedState(overcapacity = true, None) - case _ => toFailedState(overcapacity = false, Some(ex.toString)) - } - - private val NotFoundResultState = TweetFieldsResultState.NotFound(TweetFieldsResultNotFound()) - - private val DeletedResultState = TweetFieldsResultState.NotFound( - TweetFieldsResultNotFound(deleted = true) - ) - - private val BounceDeletedResultState = TweetFieldsResultState.NotFound( - TweetFieldsResultNotFound(deleted = true, bounceDeleted = true) - ) - - def notFoundResultState(deleted: Boolean): TweetFieldsResultState.NotFound = - if (deleted) DeletedResultState else NotFoundResultState - - private def toFailedState( - overcapacity: Boolean, - message: Option[String] - ): TweetFieldsResultState = - TweetFieldsResultState.Failed(TweetFieldsResultFailed(overcapacity, message)) - - private def toFilteredState(reason: FilteredReason): TweetFieldsResultState = - TweetFieldsResultState.Filtered( - TweetFieldsResultFiltered(reason = reason) - ) - - /** - * Converts a `TweetResult` into a `GetTweetFieldsResult`. For retweets, missing or filtered source - * tweets cause the retweet to be treated as missing or filtered. - */ - private def toTweetFieldsResult( - tweetResult: TweetResult, - options: GetTweetFieldsOptions, - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - creativesContainerRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Stitch[GetTweetFieldsResult] = { - val primaryResultState = toTweetFieldsResultState(tweetResult, options) - val quotedResultStateStitch = primaryResultState match { - case TweetFieldsResultState.Found(_) if options.includeQuotedTweet => - val tweetData = tweetResult.value.sourceTweetResult - .getOrElse(tweetResult) - .value - tweetData.quotedTweetResult - .map { - case QuotedTweetResult.NotFound => Stitch.value(NotFoundResultState) - case QuotedTweetResult.Filtered(state) => - val resultState = failureResultState(state) - - (tweetData.tweet.quotedTweet, resultState) match { - //When QT exists => contribute VF filtered reason to result state - case (Some(qt), notFoundResultState @ TweetFieldsResultState.NotFound(_)) => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - state, - qt.tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = true - ) - ).map(withVisibilityFilteredReason(notFoundResultState, _)) - //When QT is absent => result state without filtered reason - case _ => Stitch.value(resultState) - } - case QuotedTweetResult.Found(res) => - Stitch - .value(toTweetFieldsResultState(res, options)) - .flatMap { resultState => - hydrateCreativeContainerBackedTweet( - creativesContainerId = res.value.tweet.underlyingCreativesContainerId, - originalGetTweetFieldsResult = GetTweetFieldsResult( - tweetId = res.value.tweet.id, - tweetResult = resultState, - ), - getTweetFieldsRequestOptions = options, - creativesContainerRepo = creativesContainerRepo, - res.value.tweet.id, - stats, - shouldMaterializeContainers - ) - } - .map(_.tweetResult) - } - //Quoted tweet result not requested - case _ => None - } - - quotedResultStateStitch - .map(qtStitch => qtStitch.map(Some(_))) - .getOrElse(Stitch.None) - .map(qtResult => - GetTweetFieldsResult( - tweetId = tweetResult.value.tweet.id, - tweetResult = primaryResultState, - quotedTweetResult = qtResult - )) - } - - /** - * @return a copy of resultState with filtered reason when @param filteredReasonOpt is present - */ - private def withVisibilityFilteredReason( - resultState: TweetFieldsResultState.NotFound, - filteredReasonOpt: Option[FilteredReason] - ): TweetFieldsResultState.NotFound = { - filteredReasonOpt match { - case Some(fs) => - resultState.copy( - notFound = resultState.notFound.copy( - filteredReason = Some(fs) - )) - case _ => resultState - } - } - - private def toTweetFieldsResultState( - tweetResult: TweetResult, - options: GetTweetFieldsOptions - ): TweetFieldsResultState = { - val tweetData = tweetResult.value - val suppressReason = tweetData.suppress.map(_.filteredReason) - val tweetFailedFields = tweetResult.state.failedFields - val sourceTweetFailedFields = - tweetData.sourceTweetResult.map(_.state.failedFields).getOrElse(Set()) - val sourceTweetOpt = tweetData.sourceTweetResult.map(_.value.tweet) - val sourceTweetSuppressReason = - tweetData.sourceTweetResult.flatMap(_.value.suppress.map(_.filteredReason)) - val isTweetPartial = tweetFailedFields.nonEmpty || sourceTweetFailedFields.nonEmpty - - val tweetFoundResult = tweetData.sourceTweetResult match { - case None => - // if `sourceTweetResult` is empty, this isn't a retweet - TweetFieldsResultFound( - tweet = tweetData.tweet, - suppressReason = suppressReason - ) - case Some(r) => - // if the source tweet result state is Found, merge that into the primary result - TweetFieldsResultFound( - tweet = tweetData.tweet, - retweetedTweet = sourceTweetOpt.filter(_ => options.includeRetweetedTweet), - suppressReason = suppressReason.orElse(sourceTweetSuppressReason) - ) - } - - if (isTweetPartial) { - TweetFieldsResultState.Failed( - TweetFieldsResultFailed( - overCapacity = false, - message = Some( - "Failed to load: " + (tweetFailedFields ++ sourceTweetFailedFields).mkString(", ")), - partial = Some( - TweetFieldsPartial( - found = tweetFoundResult, - missingFields = tweetFailedFields, - sourceTweetMissingFields = sourceTweetFailedFields - ) - ) - ) - ) - } else { - TweetFieldsResultState.Found( - tweetFoundResult - ) - } - } - - /** - * if tweet data is backed by creatives container, it'll be hydrated from creatives - * container service. - */ - private def hydrateCreativeContainerBackedTweet( - creativesContainerId: Option[Long], - originalGetTweetFieldsResult: GetTweetFieldsResult, - getTweetFieldsRequestOptions: GetTweetFieldsOptions, - creativesContainerRepo: CreativesContainerMaterializationRepository.GetTweetFieldsType, - tweetId: Long, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Stitch[GetTweetFieldsResult] = { - // creatives container backed tweet stats - val ccTweetMaterialized = stats.scope("creatives_container", "get_tweet_fields") - val ccTweetMaterializeRequests = ccTweetMaterialized.counter("requests") - val ccTweetMaterializeSuccess = ccTweetMaterialized.counter("success") - val ccTweetMaterializeFailed = ccTweetMaterialized.counter("failed") - val ccTweetMaterializeFiltered = ccTweetMaterialized.scope("filtered") - - ( - creativesContainerId, - originalGetTweetFieldsResult.tweetResult, - getTweetFieldsRequestOptions.disableTweetMaterialization, - shouldMaterializeContainers() - ) match { - // 1. creatives container backed tweet is determined by `underlyingCreativesContainerId` field presence. - // 2. if the frontend tweet is suppressed by any reason, respect that and not do this hydration. - // (this logic can be revisited and improved further) - case (None, _, _, _) => - Stitch.value(originalGetTweetFieldsResult) - case (Some(_), _, _, false) => - ccTweetMaterializeFiltered.counter("decider_suppressed").incr() - Stitch.value { - GetTweetFieldsResult( - tweetId = tweetId, - tweetResult = TweetFieldsResultState.NotFound(TweetFieldsResultNotFound()) - ) - } - case (Some(containerId), TweetFieldsResultState.Found(_), false, _) => - ccTweetMaterializeRequests.incr() - val materializationRequest = - MaterializeAsTweetFieldsRequest(containerId, tweetId, Some(originalGetTweetFieldsResult)) - creativesContainerRepo( - materializationRequest, - getTweetFieldsRequestOptions - ).onSuccess(_ => ccTweetMaterializeSuccess.incr()) - .onFailure(_ => ccTweetMaterializeFailed.incr()) - .handle { - case ex => - GetTweetFieldsResult( - tweetId = tweetId, - tweetResult = failureResultState(ex) - ) - } - case (Some(_), _, true, _) => - ccTweetMaterializeFiltered.counter("suppressed").incr() - Stitch.value( - GetTweetFieldsResult( - tweetId = tweetId, - tweetResult = TweetFieldsResultState.NotFound(TweetFieldsResultNotFound()) - ) - ) - case (Some(_), state, _, _) => - ccTweetMaterializeFiltered.counter(state.getClass.getName).incr() - Stitch.value(originalGetTweetFieldsResult) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..3fd7e5608141aa36bd17c98386565313aa5e3a38 GIT binary patch literal 40771 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 Z*S$jxWlZD<`ZcPE0cObIF`V`5?0;aXq__Y8 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala deleted file mode 100644 index f0f144dd5..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/GetTweetsHandler.scala +++ /dev/null @@ -1,415 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.container.thriftscala.MaterializeAsTweetRequest -import com.twitter.context.TestingSignalsContext -import com.twitter.servo.exception.thriftscala.ClientError -import com.twitter.servo.exception.thriftscala.ClientErrorCause -import com.twitter.servo.util.FutureArrow -import com.twitter.spam.rtf.thriftscala.FilteredReason -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.additionalfields.AdditionalFields -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -/** - * Handler for the `getTweets` endpoint. - */ -object GetTweetsHandler { - type Type = FutureArrow[GetTweetsRequest, Seq[GetTweetResult]] - - /** - * A `TweetQuery.Include` instance with options set as the default base options - * for the `getTweets` endpoint. - */ - val BaseInclude: TweetQuery.Include = - TweetQuery.Include( - tweetFields = Set( - Tweet.CoreDataField.id, - Tweet.UrlsField.id, - Tweet.MentionsField.id, - Tweet.MediaField.id, - Tweet.HashtagsField.id, - Tweet.CashtagsField.id, - Tweet.TakedownCountryCodesField.id, - Tweet.TakedownReasonsField.id, - Tweet.DeviceSourceField.id, - Tweet.LanguageField.id, - Tweet.ContributorField.id, - Tweet.QuotedTweetField.id, - Tweet.UnderlyingCreativesContainerIdField.id, - ), - pastedMedia = true - ) - - def apply( - tweetRepo: TweetResultRepository.Type, - creativesContainerRepo: CreativesContainerMaterializationRepository.GetTweetType, - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Type = { - FutureArrow[GetTweetsRequest, Seq[GetTweetResult]] { request => - val requestOptions = request.options.getOrElse(GetTweetOptions()) - - val invalidAdditionalFields = - requestOptions.additionalFieldIds.filter(!AdditionalFields.isAdditionalFieldId(_)) - - if (invalidAdditionalFields.nonEmpty) { - Future.exception( - ClientError( - ClientErrorCause.BadRequest, - "Requested additional fields contain invalid field id " + - s"${invalidAdditionalFields.mkString(", ")}. Additional fields ids must be greater than 100." - ) - ) - } else { - val opts = toTweetQueryOptions(requestOptions) - val measureRacyReads: TweetId => Unit = trackLossyReadsAfterWrite( - stats.stat("racy_reads", "get_tweets"), - Duration.fromSeconds(3) - ) - - Stitch.run( - Stitch.traverse(request.tweetIds) { id => - tweetRepo(id, opts).liftToTry - .flatMap { - case Throw(NotFound) => - measureRacyReads(id) - - Stitch.value(GetTweetResult(id, StatusState.NotFound)) - case Throw(ex) => - failureResult(deletedTweetVisibilityRepo, id, requestOptions, ex) - case Return(r) => - toGetTweetResult( - deletedTweetVisibilityRepo, - creativesContainerRepo, - requestOptions, - tweetResult = r, - includeSourceTweet = requestOptions.includeSourceTweet, - includeQuotedTweet = requestOptions.includeQuotedTweet, - stats, - shouldMaterializeContainers - ) - }.flatMap { getTweetResult => - // check if tweet data is backed by creatives container and needs to be hydrated from creatives - // container service. - hydrateCreativeContainerBackedTweet( - getTweetResult, - requestOptions, - creativesContainerRepo, - stats, - shouldMaterializeContainers - ) - } - } - ) - } - } - } - - def toTweetQueryOptions(options: GetTweetOptions): TweetQuery.Options = { - val shouldSkipCache = TestingSignalsContext().flatMap(_.simulateBackPressure).nonEmpty - val cacheControl = - if (shouldSkipCache) CacheControl.NoCache - else if (options.doNotCache) CacheControl.ReadOnlyCache - else CacheControl.ReadWriteCache - - val countsFields = toCountsFields(options) - val mediaFields = toMediaFields(options) - - TweetQuery.Options( - include = BaseInclude.also( - tweetFields = toTweetFields(options, countsFields), - countsFields = countsFields, - mediaFields = mediaFields, - quotedTweet = Some(options.includeQuotedTweet) - ), - cacheControl = cacheControl, - cardsPlatformKey = options.cardsPlatformKey, - excludeReported = options.excludeReported, - enforceVisibilityFiltering = !options.bypassVisibilityFiltering, - safetyLevel = options.safetyLevel.getOrElse(SafetyLevel.FilterDefault), - forUserId = options.forUserId, - languageTag = options.languageTag, - extensionsArgs = options.extensionsArgs, - forExternalConsumption = true, - simpleQuotedTweet = options.simpleQuotedTweet - ) - } - - private def toTweetFields(opts: GetTweetOptions, countsFields: Set[FieldId]): Set[FieldId] = { - val bldr = Set.newBuilder[FieldId] - - bldr ++= opts.additionalFieldIds - - if (opts.includePlaces) bldr += Tweet.PlaceField.id - if (opts.forUserId.nonEmpty) { - if (opts.includePerspectivals) bldr += Tweet.PerspectiveField.id - if (opts.includeConversationMuted) bldr += Tweet.ConversationMutedField.id - } - if (opts.includeCards && opts.cardsPlatformKey.isEmpty) bldr += Tweet.CardsField.id - if (opts.includeCards && opts.cardsPlatformKey.nonEmpty) bldr += Tweet.Card2Field.id - if (opts.includeProfileGeoEnrichment) bldr += Tweet.ProfileGeoEnrichmentField.id - - if (countsFields.nonEmpty) bldr += Tweet.CountsField.id - - if (opts.includeCardUri) bldr += Tweet.CardReferenceField.id - - bldr.result() - } - - private def toCountsFields(opts: GetTweetOptions): Set[FieldId] = { - val bldr = Set.newBuilder[FieldId] - - if (opts.includeRetweetCount) bldr += StatusCounts.RetweetCountField.id - if (opts.includeReplyCount) bldr += StatusCounts.ReplyCountField.id - if (opts.includeFavoriteCount) bldr += StatusCounts.FavoriteCountField.id - if (opts.includeQuoteCount) bldr += StatusCounts.QuoteCountField.id - - bldr.result() - } - - private def toMediaFields(opts: GetTweetOptions): Set[FieldId] = { - if (opts.includeMediaAdditionalMetadata) - Set(MediaEntity.AdditionalMetadataField.id) - else - Set.empty - } - - /** - * Converts a `TweetResult` into a `GetTweetResult`. - */ - def toGetTweetResult( - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - creativesContainerRepo: CreativesContainerMaterializationRepository.GetTweetType, - options: GetTweetOptions, - tweetResult: TweetResult, - includeSourceTweet: Boolean, - includeQuotedTweet: Boolean, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Stitch[GetTweetResult] = { - val tweetData = tweetResult.value - - // only include missing fields if non empty - def asMissingFields(set: Set[FieldByPath]): Option[Set[FieldByPath]] = - if (set.isEmpty) None else Some(set) - - val missingFields = asMissingFields(tweetResult.state.failedFields) - - val sourceTweetResult = - tweetData.sourceTweetResult - .filter(_ => includeSourceTweet) - - val sourceTweetData = tweetData.sourceTweetResult - .getOrElse(tweetResult) - .value - val quotedTweetResult: Option[QuotedTweetResult] = sourceTweetData.quotedTweetResult - .filter(_ => includeQuotedTweet) - - val qtFilteredReasonStitch = - ((sourceTweetData.tweet.quotedTweet, quotedTweetResult) match { - case (Some(quotedTweet), Some(QuotedTweetResult.Filtered(filteredState))) => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - filteredState, - quotedTweet.tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = true - ) - ) - case _ => Stitch.None - }) - //Use quotedTweetResult filtered reason when VF filtered reason is not present - .map(fsOpt => fsOpt.orElse(quotedTweetResult.flatMap(_.filteredReason))) - - val suppress = tweetData.suppress.orElse(tweetData.sourceTweetResult.flatMap(_.value.suppress)) - - val quotedTweetStitch: Stitch[Option[Tweet]] = - quotedTweetResult match { - // check if quote tweet is backed by creatives container and needs to be hydrated from creatives - // container service. detail see go/creatives-containers-tdd - case Some(QuotedTweetResult.Found(tweetResult)) => - hydrateCreativeContainerBackedTweet( - originalGetTweetResult = GetTweetResult( - tweetId = tweetResult.value.tweet.id, - tweetState = StatusState.Found, - tweet = Some(tweetResult.value.tweet) - ), - getTweetRequestOptions = options, - creativesContainerRepo = creativesContainerRepo, - stats = stats, - shouldMaterializeContainers - ).map(_.tweet) - case _ => - Stitch.value( - quotedTweetResult - .flatMap(_.toOption) - .map(_.value.tweet) - ) - } - - Stitch.join(qtFilteredReasonStitch, quotedTweetStitch).map { - case (qtFilteredReason, quotedTweet) => - GetTweetResult( - tweetId = tweetData.tweet.id, - tweetState = - if (suppress.nonEmpty) StatusState.Suppress - else if (missingFields.nonEmpty) StatusState.Partial - else StatusState.Found, - tweet = Some(tweetData.tweet), - missingFields = missingFields, - filteredReason = suppress.map(_.filteredReason), - sourceTweet = sourceTweetResult.map(_.value.tweet), - sourceTweetMissingFields = sourceTweetResult - .map(_.state.failedFields) - .flatMap(asMissingFields), - quotedTweet = quotedTweet, - quotedTweetMissingFields = quotedTweetResult - .flatMap(_.toOption) - .map(_.state.failedFields) - .flatMap(asMissingFields), - quotedTweetFilteredReason = qtFilteredReason - ) - } - } - - private[this] val AuthorAccountIsInactive = FilteredReason.AuthorAccountIsInactive(true) - - def failureResult( - deletedTweetVisibilityRepo: DeletedTweetVisibilityRepository.Type, - tweetId: TweetId, - options: GetTweetOptions, - ex: Throwable - ): Stitch[GetTweetResult] = { - def deletedState(deleted: Boolean, statusState: StatusState) = - if (deleted && options.enableDeletedState) { - statusState - } else { - StatusState.NotFound - } - - ex match { - case FilteredState.Unavailable.Author.Deactivated => - Stitch.value(GetTweetResult(tweetId, StatusState.DeactivatedUser)) - case FilteredState.Unavailable.Author.NotFound => - Stitch.value(GetTweetResult(tweetId, StatusState.NotFound)) - case FilteredState.Unavailable.Author.Offboarded => - Stitch.value( - GetTweetResult(tweetId, StatusState.Drop, filteredReason = Some(AuthorAccountIsInactive))) - case FilteredState.Unavailable.Author.Suspended => - Stitch.value(GetTweetResult(tweetId, StatusState.SuspendedUser)) - case FilteredState.Unavailable.Author.Protected => - Stitch.value(GetTweetResult(tweetId, StatusState.ProtectedUser)) - case FilteredState.Unavailable.Author.Unsafe => - Stitch.value(GetTweetResult(tweetId, StatusState.Drop)) - //Handle delete state with optional FilteredReason - case FilteredState.Unavailable.TweetDeleted => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - ex, - tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = false - ) - ).map(filteredReasonOpt => { - val deleteState = deletedState(deleted = true, StatusState.Deleted) - GetTweetResult(tweetId, deleteState, filteredReason = filteredReasonOpt) - }) - - case FilteredState.Unavailable.BounceDeleted => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - ex, - tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = false - ) - ).map(filteredReasonOpt => { - val deleteState = deletedState(deleted = true, StatusState.BounceDeleted) - GetTweetResult(tweetId, deleteState, filteredReason = filteredReasonOpt) - }) - - case FilteredState.Unavailable.SourceTweetNotFound(d) => - deletedTweetVisibilityRepo( - DeletedTweetVisibilityRepository.VisibilityRequest( - ex, - tweetId, - options.safetyLevel, - options.forUserId, - isInnerQuotedTweet = false - ) - ).map(filteredReasonOpt => { - val deleteState = deletedState(d, StatusState.Deleted) - GetTweetResult(tweetId, deleteState, filteredReason = filteredReasonOpt) - }) - case FilteredState.Unavailable.Reported => - Stitch.value(GetTweetResult(tweetId, StatusState.ReportedTweet)) - case fs: FilteredState.HasFilteredReason => - Stitch.value( - GetTweetResult(tweetId, StatusState.Drop, filteredReason = Some(fs.filteredReason))) - case OverCapacity(_) => Stitch.value(GetTweetResult(tweetId, StatusState.OverCapacity)) - case _ => Stitch.value(GetTweetResult(tweetId, StatusState.Failed)) - } - } - - private def hydrateCreativeContainerBackedTweet( - originalGetTweetResult: GetTweetResult, - getTweetRequestOptions: GetTweetOptions, - creativesContainerRepo: CreativesContainerMaterializationRepository.GetTweetType, - stats: StatsReceiver, - shouldMaterializeContainers: Gate[Unit] - ): Stitch[GetTweetResult] = { - // creatives container backed tweet stats - val ccTweetMaterialized = stats.scope("creatives_container", "get_tweets") - val ccTweetMaterializeFiltered = ccTweetMaterialized.scope("filtered") - val ccTweetMaterializeSuccess = ccTweetMaterialized.counter("success") - val ccTweetMaterializeFailed = ccTweetMaterialized.counter("failed") - val ccTweetMaterializeRequests = ccTweetMaterialized.counter("requests") - - val tweetId = originalGetTweetResult.tweetId - val tweetState = originalGetTweetResult.tweetState - val underlyingCreativesContainerId = - originalGetTweetResult.tweet.flatMap(_.underlyingCreativesContainerId) - ( - tweetState, - underlyingCreativesContainerId, - getTweetRequestOptions.disableTweetMaterialization, - shouldMaterializeContainers() - ) match { - // 1. creatives container backed tweet is determined by `underlyingCreativesContainerId` field presence. - // 2. if the frontend tweet is suppressed by any reason, respect that and not do this hydration. - // (this logic can be revisited and improved further) - case (_, None, _, _) => - Stitch.value(originalGetTweetResult) - case (_, Some(_), _, false) => - ccTweetMaterializeFiltered.counter("decider_suppressed").incr() - Stitch.value(GetTweetResult(tweetId, StatusState.NotFound)) - case (StatusState.Found, Some(containerId), false, _) => - ccTweetMaterializeRequests.incr() - val materializationRequest = - MaterializeAsTweetRequest(containerId, tweetId, Some(originalGetTweetResult)) - creativesContainerRepo( - materializationRequest, - Some(getTweetRequestOptions) - ).onSuccess(_ => ccTweetMaterializeSuccess.incr()) - .onFailure(_ => ccTweetMaterializeFailed.incr()) - .handle { - case _ => GetTweetResult(tweetId, StatusState.Failed) - } - case (_, Some(_), true, _) => - ccTweetMaterializeFiltered.counter("suppressed").incr() - Stitch.value(GetTweetResult(tweetId, StatusState.NotFound)) - case (state, Some(_), _, _) => - ccTweetMaterializeFiltered.counter(state.name).incr() - Stitch.value(originalGetTweetResult) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.docx new file mode 100644 index 0000000000000000000000000000000000000000..ece947e873b1e8943bbaacb0ebd7acfc02c791bf GIT binary patch literal 37230 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

RFKR6dD18y&cF%*HAaLE(nho4 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 b%3`Rk!vJqqU=9N1DnW)sVD|Xl1L6SydK{Qu literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.scala deleted file mode 100644 index 6ec0fc611..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/HandlerError.scala +++ /dev/null @@ -1,45 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.servo.exception.thriftscala.ClientError -import com.twitter.servo.exception.thriftscala.ClientErrorCause -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.FilteredState.Unavailable._ - -private[tweetypie] object HandlerError { - - def translateNotFoundToClientError[U](tweetId: TweetId): PartialFunction[Throwable, Stitch[U]] = { - case NotFound => - Stitch.exception(HandlerError.tweetNotFound(tweetId)) - case TweetDeleted | BounceDeleted => - Stitch.exception(HandlerError.tweetNotFound(tweetId, true)) - case SourceTweetNotFound(deleted) => - Stitch.exception(HandlerError.tweetNotFound(tweetId, deleted)) - } - - def tweetNotFound(tweetId: TweetId, deleted: Boolean = false): ClientError = - ClientError( - ClientErrorCause.BadRequest, - s"tweet ${if (deleted) "deleted" else "not found"}: $tweetId" - ) - - def userNotFound(userId: UserId): ClientError = - ClientError(ClientErrorCause.BadRequest, s"user not found: $userId") - - def tweetNotFoundException(tweetId: TweetId): Future[Nothing] = - Future.exception(tweetNotFound(tweetId)) - - def userNotFoundException(userId: UserId): Future[Nothing] = - Future.exception(userNotFound(userId)) - - def getRequired[A, B]( - optionFutureArrow: FutureArrow[A, Option[B]], - notFound: A => Future[B] - ): FutureArrow[A, B] = - FutureArrow(key => - optionFutureArrow(key).flatMap { - case Some(x) => Future.value(x) - case None => notFound(key) - }) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..354273ef1c3ba902c8e52cd9028e5f35fbeb5977 GIT binary patch literal 38408 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 H%F@|?X1nA| literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.scala deleted file mode 100644 index 560c51304..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/MediaBuilder.scala +++ /dev/null @@ -1,176 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.mediaservices.commons.mediainformation.thriftscala.UserDefinedProductMetadata -import com.twitter.mediaservices.commons.thriftscala.MediaKey -import com.twitter.mediaservices.commons.tweetmedia.thriftscala._ -import com.twitter.servo.util.FutureArrow -import com.twitter.tco_util.TcoSlug -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.media._ -import com.twitter.tweetypie.serverutil.ExceptionCounter -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.tweettext.Offset - -object CreateMediaTco { - import UpstreamFailure._ - - case class Request( - tweetId: TweetId, - userId: UserId, - userScreenName: String, - isProtected: Boolean, - createdAt: Time, - isVideo: Boolean, - dark: Boolean) - - type Type = FutureArrow[Request, Media.MediaTco] - - def apply(urlShortener: UrlShortener.Type): Type = - FutureArrow[Request, Media.MediaTco] { req => - val expandedUrl = MediaUrl.Permalink(req.userScreenName, req.tweetId, req.isVideo) - val shortenCtx = - UrlShortener.Context( - userId = req.userId, - userProtected = req.isProtected, - tweetId = req.tweetId, - createdAt = req.createdAt, - dark = req.dark - ) - - urlShortener((expandedUrl, shortenCtx)) - .flatMap { metadata => - metadata.shortUrl match { - case TcoSlug(slug) => - Future.value( - Media.MediaTco( - expandedUrl, - metadata.shortUrl, - MediaUrl.Display.fromTcoSlug(slug) - ) - ) - - case _ => - // should never get here, since shortened urls from talon - // always start with "http://t.co/", just in case... - Future.exception(MediaShortenUrlMalformedFailure) - } - } - .rescue { - case UrlShortener.InvalidUrlError => - // should never get here, since media expandedUrl should always be a valid - // input to talon. - Future.exception(MediaExpandedUrlNotValidFailure) - } - } -} - -object MediaBuilder { - private val log = Logger(getClass) - - case class Request( - mediaUploadIds: Seq[MediaId], - text: String, - tweetId: TweetId, - userId: UserId, - userScreenName: String, - isProtected: Boolean, - createdAt: Time, - dark: Boolean = false, - productMetadata: Option[Map[MediaId, UserDefinedProductMetadata]] = None) - - case class Result(updatedText: String, mediaEntities: Seq[MediaEntity], mediaKeys: Seq[MediaKey]) - - type Type = FutureArrow[Request, Result] - - def apply( - processMedia: MediaClient.ProcessMedia, - createMediaTco: CreateMediaTco.Type, - stats: StatsReceiver - ): Type = - FutureArrow[Request, Result] { - case Request( - mediaUploadIds, - text, - tweetId, - userId, - screenName, - isProtected, - createdAt, - dark, - productMetadata - ) => - for { - mediaKeys <- processMedia( - ProcessMediaRequest( - mediaUploadIds, - userId, - tweetId, - isProtected, - productMetadata - ) - ) - mediaTco <- createMediaTco( - CreateMediaTco.Request( - tweetId, - userId, - screenName, - isProtected, - createdAt, - mediaKeys.exists(MediaKeyClassifier.isVideo(_)), - dark - ) - ) - } yield produceResult(text, mediaTco, isProtected, mediaKeys) - }.countExceptions( - ExceptionCounter(stats) - ) - .onFailure[Request] { (req, ex) => log.info(req.toString, ex) } - .translateExceptions { - case e: MediaExceptions.MediaClientException => - TweetCreateFailure.State(TweetCreateState.InvalidMedia, Some(e.getMessage)) - } - - def produceResult( - text: String, - mediaTco: Media.MediaTco, - userIsProtected: Boolean, - mediaKeys: Seq[MediaKey] - ): Result = { - - val newText = - if (text == "") mediaTco.url - else text + " " + mediaTco.url - - val to = Offset.CodePoint.length(newText) - val from = to - Offset.CodePoint.length(mediaTco.url) - - val mediaEntities = - mediaKeys.map { mediaKey => - MediaEntity( - mediaKey = Some(mediaKey), - fromIndex = from.toShort, - toIndex = to.toShort, - url = mediaTco.url, - displayUrl = mediaTco.displayUrl, - expandedUrl = mediaTco.expandedUrl, - mediaId = mediaKey.mediaId, - mediaPath = "", // to be hydrated - mediaUrl = null, // to be hydrated - mediaUrlHttps = null, // to be hydrated - nsfw = false, // deprecated - sizes = Set( - MediaSize( - sizeType = MediaSizeType.Orig, - resizeMethod = MediaResizeMethod.Fit, - deprecatedContentType = MediaKeyUtil.contentType(mediaKey), - width = -1, // to be hydrated - height = -1 // to be hydrated - ) - ) - ) - } - - Result(newText, mediaEntities, mediaKeys) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..051f2e1de84195b57684360caa9b5db90a2a77be GIT binary patch literal 41271 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�yFl$uF|=~Iw|Qdz`I`J{i)f>Ln{Hbn+p?It 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 Bn-Ks2 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.scala deleted file mode 100644 index 2ee6d1063..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/PostTweet.scala +++ /dev/null @@ -1,395 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.context.thriftscala.FeatureContext -import com.twitter.tweetypie.backends.LimiterService -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.serverutil.ExceptionCounter -import com.twitter.tweetypie.store.InsertTweet -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.util.TweetCreationLock.{Key => TweetCreationLockKey} - -object PostTweet { - type Type[R] = FutureArrow[R, PostTweetResult] - - /** - * A type-class to abstract over tweet creation requests. - */ - trait RequestView[R] { - def isDark(req: R): Boolean - def sourceTweetId(req: R): Option[TweetId] - def options(req: R): Option[WritePathHydrationOptions] - def userId(req: R): UserId - def uniquenessId(req: R): Option[Long] - def returnSuccessOnDuplicate(req: R): Boolean - def returnDuplicateTweet(req: R): Boolean = - returnSuccessOnDuplicate(req) || uniquenessId(req).nonEmpty - def lockKey(req: R): TweetCreationLockKey - def geo(req: R): Option[TweetCreateGeo] - def featureContext(req: R): Option[FeatureContext] - def additionalContext(req: R): Option[collection.Map[TweetCreateContextKey, String]] - def transientContext(req: R): Option[TransientCreateContext] - def additionalFields(req: R): Option[Tweet] - def duplicateState: TweetCreateState - def scope: String - def isNullcast(req: R): Boolean - def creativesContainerId(req: R): Option[CreativesContainerId] - def noteTweetMentionedUserIds(req: R): Option[Seq[Long]] - } - - /** - * An implementation of `RequestView` for `PostTweetRequest`. - */ - implicit object PostTweetRequestView extends RequestView[PostTweetRequest] { - def isDark(req: PostTweetRequest): Boolean = req.dark - def sourceTweetId(req: PostTweetRequest): None.type = None - def options(req: PostTweetRequest): Option[WritePathHydrationOptions] = req.hydrationOptions - def userId(req: PostTweetRequest): UserId = req.userId - def uniquenessId(req: PostTweetRequest): Option[Long] = req.uniquenessId - def returnSuccessOnDuplicate(req: PostTweetRequest) = false - def lockKey(req: PostTweetRequest): TweetCreationLockKey = TweetCreationLockKey.byRequest(req) - def geo(req: PostTweetRequest): Option[TweetCreateGeo] = req.geo - def featureContext(req: PostTweetRequest): Option[FeatureContext] = req.featureContext - def additionalContext( - req: PostTweetRequest - ): Option[collection.Map[TweetCreateContextKey, String]] = req.additionalContext - def transientContext(req: PostTweetRequest): Option[TransientCreateContext] = - req.transientContext - def additionalFields(req: PostTweetRequest): Option[Tweet] = req.additionalFields - def duplicateState: TweetCreateState.Duplicate.type = TweetCreateState.Duplicate - def scope = "tweet" - def isNullcast(req: PostTweetRequest): Boolean = req.nullcast - def creativesContainerId(req: PostTweetRequest): Option[CreativesContainerId] = - req.underlyingCreativesContainerId - def noteTweetMentionedUserIds(req: PostTweetRequest): Option[Seq[Long]] = - req.noteTweetOptions match { - case Some(noteTweetOptions) => noteTweetOptions.mentionedUserIds - case _ => None - } - } - - /** - * An implementation of `RequestView` for `RetweetRequest`. - */ - implicit object RetweetRequestView extends RequestView[RetweetRequest] { - def isDark(req: RetweetRequest): Boolean = req.dark - def sourceTweetId(req: RetweetRequest): None.type = None - def options(req: RetweetRequest): Option[WritePathHydrationOptions] = req.hydrationOptions - def userId(req: RetweetRequest): UserId = req.userId - def uniquenessId(req: RetweetRequest): Option[Long] = req.uniquenessId - def returnSuccessOnDuplicate(req: RetweetRequest): Boolean = req.returnSuccessOnDuplicate - def lockKey(req: RetweetRequest): TweetCreationLockKey = - req.uniquenessId match { - case Some(id) => TweetCreationLockKey.byUniquenessId(req.userId, id) - case None => TweetCreationLockKey.bySourceTweetId(req.userId, req.sourceStatusId) - } - def geo(req: RetweetRequest): None.type = None - def featureContext(req: RetweetRequest): Option[FeatureContext] = req.featureContext - def additionalContext(req: RetweetRequest): None.type = None - def transientContext(req: RetweetRequest): None.type = None - def additionalFields(req: RetweetRequest): Option[Tweet] = req.additionalFields - def duplicateState: TweetCreateState.AlreadyRetweeted.type = TweetCreateState.AlreadyRetweeted - def scope = "retweet" - def isNullcast(req: RetweetRequest): Boolean = req.nullcast - def creativesContainerId(req: RetweetRequest): Option[CreativesContainerId] = None - def noteTweetMentionedUserIds(req: RetweetRequest): Option[Seq[Long]] = None - } - - /** - * A `Filter` is used to decorate a `FutureArrow` that has a known return type - * and an input type for which there is a `RequestView` type-class instance. - */ - trait Filter[Res] { self => - type T[Req] = FutureArrow[Req, Res] - - /** - * Wraps a base arrow with additional behavior. - */ - def apply[Req: RequestView](base: T[Req]): T[Req] - - /** - * Composes two filter. The resulting filter itself composes FutureArrows. - */ - def andThen(next: Filter[Res]): Filter[Res] = - new Filter[Res] { - def apply[Req: RequestView](base: T[Req]): T[Req] = - next(self(base)) - } - } - - /** - * This filter attempts to prevent some race-condition related duplicate tweet creations, - * via use of a `TweetCreateLock`. When a duplicate is detected, this filter can synthesize - * a successful `PostTweetResult` if applicable, or return the appropriate coded response. - */ - object DuplicateHandler { - def apply( - tweetCreationLock: TweetCreationLock, - getTweets: GetTweetsHandler.Type, - stats: StatsReceiver - ): Filter[PostTweetResult] = - new Filter[PostTweetResult] { - def apply[R: RequestView](base: T[R]): T[R] = { - val view = implicitly[RequestView[R]] - val notFoundCount = stats.counter(view.scope, "not_found") - val foundCounter = stats.counter(view.scope, "found") - - FutureArrow.rec[R, PostTweetResult] { self => req => - val duplicateKey = view.lockKey(req) - - // attempts to find the duplicate tweet. - // - // if `returnDupTweet` is true and we find the tweet, then we return a - // successful `PostTweetResult` with that tweet. if we don't find the - // tweet, we throw an `InternalServerError`. - // - // if `returnDupTweet` is false and we find the tweet, then we return - // the appropriate duplicate state. if we don't find the tweet, then - // we unlock the duplicate key and try again. - def duplicate(tweetId: TweetId, returnDupTweet: Boolean) = - findDuplicate(tweetId, req).flatMap { - case Some(postTweetResult) => - foundCounter.incr() - if (returnDupTweet) Future.value(postTweetResult) - else Future.value(PostTweetResult(state = view.duplicateState)) - - case None => - notFoundCount.incr() - if (returnDupTweet) { - // If we failed to load the tweet, but we know that it - // should exist, then return an InternalServerError, so that - // the client treats it as a failed tweet creation req. - Future.exception( - InternalServerError("Failed to load duplicate existing tweet: " + tweetId) - ) - } else { - // Assume the lock is stale if we can't load the tweet. It's - // possible that the lock is not stale, but the tweet is not - // yet available, which requires that it not be present in - // cache and not yet available from the backend. This means - // that the failure mode is to allow tweeting if we can't - // determine the state, but it should be rare that we can't - // determine it. - tweetCreationLock.unlock(duplicateKey).before(self(req)) - } - } - - tweetCreationLock(duplicateKey, view.isDark(req), view.isNullcast(req)) { - base(req) - }.rescue { - case TweetCreationInProgress => - Future.value(PostTweetResult(state = TweetCreateState.Duplicate)) - - // if tweetCreationLock detected a duplicate, look up the duplicate - // and return the appropriate result - case DuplicateTweetCreation(tweetId) => - duplicate(tweetId, view.returnDuplicateTweet(req)) - - // it's possible that tweetCreationLock didn't find a duplicate for a - // retweet attempt, but `RetweetBuilder` did. - case TweetCreateFailure.AlreadyRetweeted(tweetId) if view.returnDuplicateTweet(req) => - duplicate(tweetId, true) - } - } - } - - private def findDuplicate[R: RequestView]( - tweetId: TweetId, - req: R - ): Future[Option[PostTweetResult]] = { - val view = implicitly[RequestView[R]] - val readRequest = - GetTweetsRequest( - tweetIds = Seq(tweetId), - // Assume that the defaults are OK for all of the hydration - // options except the ones that are explicitly set in the - // req. - options = Some( - GetTweetOptions( - forUserId = Some(view.userId(req)), - includePerspectivals = true, - includeCards = view.options(req).exists(_.includeCards), - cardsPlatformKey = view.options(req).flatMap(_.cardsPlatformKey) - ) - ) - ) - - getTweets(readRequest).map { - case Seq(result) => - if (result.tweetState == StatusState.Found) { - // If the tweet was successfully found, then convert the - // read result into a successful write result. - Some( - PostTweetResult( - TweetCreateState.Ok, - result.tweet, - // if the retweet is really old, the retweet perspective might no longer - // be available, but we want to maintain the invariant that the `postRetweet` - // endpoint always returns a source tweet with the correct perspective. - result.sourceTweet.map { srcTweet => - TweetLenses.perspective - .update(_.map(_.copy(retweeted = true, retweetId = Some(tweetId)))) - .apply(srcTweet) - }, - result.quotedTweet - ) - ) - } else { - None - } - } - } - } - } - - /** - * A `Filter` that applies rate limiting to failing requests. - */ - object RateLimitFailures { - def apply( - validateLimit: RateLimitChecker.Validate, - incrementSuccess: LimiterService.IncrementByOne, - incrementFailure: LimiterService.IncrementByOne - ): Filter[TweetBuilderResult] = - new Filter[TweetBuilderResult] { - def apply[R: RequestView](base: T[R]): T[R] = { - val view = implicitly[RequestView[R]] - - FutureArrow[R, TweetBuilderResult] { req => - val userId = view.userId(req) - val dark = view.isDark(req) - val contributorUserId: Option[UserId] = getContributor(userId).map(_.userId) - - validateLimit((userId, dark)) - .before { - base(req).onFailure { _ => - // We don't increment the failure rate limit if the failure - // was from the failure rate limit so that the user can't - // get in a loop where tweet creation is never attempted. We - // don't increment it if the creation is dark because there - // is no way to perform a dark tweet creation through the - // API, so it's most likey some kind of test traffic like - // tap-compare. - if (!dark) incrementFailure(userId, contributorUserId) - } - } - .onSuccess { resp => - // If we return a silent failure, then we want to - // increment the rate limit as if the tweet was fully - // created, because we want it to appear that way to the - // user whose creation silently failed. - if (resp.isSilentFail) incrementSuccess(userId, contributorUserId) - } - } - } - } - } - - /** - * A `Filter` for counting non-`TweetCreateFailure` failures. - */ - object CountFailures { - def apply[Res](stats: StatsReceiver, scopeSuffix: String = "_builder"): Filter[Res] = - new Filter[Res] { - def apply[R: RequestView](base: T[R]): T[R] = { - val view = implicitly[RequestView[R]] - val exceptionCounter = ExceptionCounter(stats.scope(view.scope + scopeSuffix)) - base.onFailure { - case (_, _: TweetCreateFailure) => - case (_, ex) => exceptionCounter(ex) - } - } - } - } - - /** - * A `Filter` for logging failures. - */ - object LogFailures extends Filter[PostTweetResult] { - private[this] val failedTweetCreationsLogger = Logger( - "com.twitter.tweetypie.FailedTweetCreations" - ) - - def apply[R: RequestView](base: T[R]): T[R] = - FutureArrow[R, PostTweetResult] { req => - base(req).onFailure { - case failure => failedTweetCreationsLogger.info(s"request: $req\nfailure: $failure") - } - } - } - - /** - * A `Filter` for converting a thrown `TweetCreateFailure` into a `PostTweetResult`. - */ - object RescueTweetCreateFailure extends Filter[PostTweetResult] { - def apply[R: RequestView](base: T[R]): T[R] = - FutureArrow[R, PostTweetResult] { req => - base(req).rescue { - case failure: TweetCreateFailure => Future.value(failure.toPostTweetResult) - } - } - } - - /** - * Builds a base handler for `PostTweetRequest` and `RetweetRequest`. The handler - * calls an underlying tweet builder, creates a `InsertTweet.Event`, hydrates - * that, passes it to `tweetStore`, and then converts it to a `PostTweetResult`. - */ - object Handler { - def apply[R: RequestView]( - tweetBuilder: FutureArrow[R, TweetBuilderResult], - hydrateInsertEvent: FutureArrow[InsertTweet.Event, InsertTweet.Event], - tweetStore: InsertTweet.Store, - ): Type[R] = { - FutureArrow { req => - for { - bldrRes <- tweetBuilder(req) - event <- hydrateInsertEvent(toInsertTweetEvent(req, bldrRes)) - _ <- Future.when(!event.dark)(tweetStore.insertTweet(event)) - } yield toPostTweetResult(event) - } - } - - /** - * Converts a request/`TweetBuilderResult` pair into an `InsertTweet.Event`. - */ - def toInsertTweetEvent[R: RequestView]( - req: R, - bldrRes: TweetBuilderResult - ): InsertTweet.Event = { - val view = implicitly[RequestView[R]] - InsertTweet.Event( - tweet = bldrRes.tweet, - user = bldrRes.user, - sourceTweet = bldrRes.sourceTweet, - sourceUser = bldrRes.sourceUser, - parentUserId = bldrRes.parentUserId, - timestamp = bldrRes.createdAt, - dark = view.isDark(req) || bldrRes.isSilentFail, - hydrateOptions = view.options(req).getOrElse(WritePathHydrationOptions()), - featureContext = view.featureContext(req), - initialTweetUpdateRequest = bldrRes.initialTweetUpdateRequest, - geoSearchRequestId = for { - geo <- view.geo(req) - searchRequestID <- geo.geoSearchRequestId - } yield { - GeoSearchRequestId(requestID = searchRequestID.id) - }, - additionalContext = view.additionalContext(req), - transientContext = view.transientContext(req), - noteTweetMentionedUserIds = view.noteTweetMentionedUserIds(req) - ) - } - - /** - * Converts an `InsertTweet.Event` into a successful `PostTweetResult`. - */ - def toPostTweetResult(event: InsertTweet.Event): PostTweetResult = - PostTweetResult( - TweetCreateState.Ok, - Some(event.tweet), - sourceTweet = event.sourceTweet, - quotedTweet = event.quotedTweet - ) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..d9a2bcbc8e847fe361fd2167b636af0a39a96bf2 GIT binary patch literal 37077 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.scala deleted file mode 100644 index 834cda148..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetDeleteEventBuilder.scala +++ /dev/null @@ -1,34 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.repository.TweetRepository -import com.twitter.tweetypie.store.QuotedTweetDelete -import com.twitter.tweetypie.thriftscala.QuotedTweetDeleteRequest - -/** - * Create the appropriate QuotedTweetDelete.Event for a QuotedTweetDelete request. - */ -object QuotedTweetDeleteEventBuilder { - type Type = QuotedTweetDeleteRequest => Future[Option[QuotedTweetDelete.Event]] - - val queryOptions: TweetQuery.Options = - TweetQuery.Options(GetTweetsHandler.BaseInclude) - - def apply(tweetRepo: TweetRepository.Optional): Type = - request => - Stitch.run( - tweetRepo(request.quotingTweetId, queryOptions).map { - _.map { quotingTweet => - QuotedTweetDelete.Event( - quotingTweetId = request.quotingTweetId, - quotingUserId = getUserId(quotingTweet), - quotedTweetId = request.quotedTweetId, - quotedUserId = request.quotedUserId, - timestamp = Time.now - ) - } - } - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetTakedownEventBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/QuotedTweetTakedownEventBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..9dacf9cda99575e47a1f01b729667a4bd7d8debd GIT binary patch literal 37107 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%0Dq?_Ql6XHBx3?Z+@eK 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

{Ezaoto(+n9o6rU#^Qj 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 Future[Option[QuotedTweetTakedown.Event]] - - val queryOptions: TweetQuery.Options = - TweetQuery.Options(GetTweetsHandler.BaseInclude) - - def apply(tweetRepo: TweetRepository.Optional): Type = - request => - Stitch.run( - tweetRepo(request.quotingTweetId, queryOptions).map { - _.map { quotingTweet => - QuotedTweetTakedown.Event( - quotingTweetId = request.quotingTweetId, - quotingUserId = getUserId(quotingTweet), - quotedTweetId = request.quotedTweetId, - quotedUserId = request.quotedUserId, - takedownCountryCodes = request.takedownCountryCodes, - takedownReasons = request.takedownReasons, - timestamp = Time.now - ) - } - } - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.docx new file mode 100644 index 0000000000000000000000000000000000000000..81c0ffc87d4f6c8d4e3dba6216940bc219753193 GIT binary patch literal 37230 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.scala deleted file mode 100644 index cac90aab6..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RateLimitChecker.scala +++ /dev/null @@ -1,49 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.backends.LimiterService -import com.twitter.tweetypie.core.TweetCreateFailure -import com.twitter.tweetypie.thriftscala.TweetCreateState.RateLimitExceeded - -object RateLimitChecker { - type Dark = Boolean - type GetRemaining = FutureArrow[(UserId, Dark), Int] - type Validate = FutureArrow[(UserId, Dark), Unit] - - def getMaxMediaTags(minRemaining: LimiterService.MinRemaining, maxMediaTags: Int): GetRemaining = - FutureArrow { - case (userId, dark) => - if (dark) Future.value(maxMediaTags) - else { - val contributorUserId = getContributor(userId).map(_.userId) - minRemaining(userId, contributorUserId) - .map(_.min(maxMediaTags)) - .handle { case _ => maxMediaTags } - } - } - - def validate( - hasRemaining: LimiterService.HasRemaining, - featureStats: StatsReceiver, - rateLimitEnabled: () => Boolean - ): Validate = { - val exceededCounter = featureStats.counter("exceeded") - val checkedCounter = featureStats.counter("checked") - FutureArrow { - case (userId, dark) => - if (dark || !rateLimitEnabled()) { - Future.Unit - } else { - checkedCounter.incr() - val contributorUserId = getContributor(userId).map(_.userId) - hasRemaining(userId, contributorUserId).map { - case false => - exceededCounter.incr() - throw TweetCreateFailure.State(RateLimitExceeded) - case _ => () - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReplyBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReplyBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..2fbed47c28d6a512fa70c1d8ca321e41ff3ab95e GIT binary patch literal 44539 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 o0

C-_4ez~?29p*J1fxwMbCLU?dDQq z^dsp-Xn+_Ba8CUbqe{R#VqZZ^jMOqq=TI}dV5pvrYkW~ASe`z5(oj_0 zc5ALD*r{wGYD$92eK{ng5r!xe=QZmsaEM)DPz?Bn(R@>{nl!0yu@TZeK4!Ot{q7{u z@yx@ms1&mrVvuHkoKr(SjuR8D*1rIiG)isc-@pE{LVRP8y%MHlJ83Xskb0sMjT|6Z zvJsVQ6jboG;D&jKT5`9#vyjYt^haXEy*ciP=6p$=jlY;cb|=cu4?#p7aWW^4=PmF8*ekr@t4-;%0AN~Loyk3dvbbX2!K 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 CicQ=A literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RetweetBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RetweetBuilder.scala deleted file mode 100644 index e14eecc84..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/RetweetBuilder.scala +++ /dev/null @@ -1,352 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.flockdb.client._ -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.additionalfields.AdditionalFields.setAdditionalFields -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.thriftscala.entities.EntityExtractor -import com.twitter.tweetypie.tweettext.Truncator -import com.twitter.tweetypie.util.CommunityUtil -import com.twitter.tweetypie.util.EditControlUtil - -case class SourceTweetRequest( - tweetId: TweetId, - user: User, - hydrateOptions: WritePathHydrationOptions) - -object RetweetBuilder { - import TweetBuilder._ - import UpstreamFailure._ - - type Type = FutureArrow[RetweetRequest, TweetBuilderResult] - - val SGSTestRole = "socialgraph" - - val log: Logger = Logger(getClass) - - /** - * Retweets text gets RT and username prepended - */ - def composeRetweetText(text: String, sourceUser: User): String = - composeRetweetText(text, sourceUser.profile.get.screenName) - - /** - * Retweets text gets RT and username prepended - */ - def composeRetweetText(text: String, screenName: String): String = - Truncator.truncateForRetweet("RT @" + screenName + ": " + text) - - // We do not want to allow community tweets to be retweeted. - def validateNotCommunityTweet(sourceTweet: Tweet): Future[Unit] = - if (CommunityUtil.hasCommunity(sourceTweet.communities)) { - Future.exception(TweetCreateFailure.State(TweetCreateState.CommunityRetweetNotAllowed)) - } else { - Future.Unit - } - - // We do not want to allow Trusted Friends tweets to be retweeted. - def validateNotTrustedFriendsTweet(sourceTweet: Tweet): Future[Unit] = - sourceTweet.trustedFriendsControl match { - case Some(trustedFriendsControl) => - Future.exception(TweetCreateFailure.State(TweetCreateState.TrustedFriendsRetweetNotAllowed)) - case None => - Future.Unit - } - - // We do not want to allow retweet of a stale version of a tweet in an edit chain. - def validateStaleTweet(sourceTweet: Tweet): Future[Unit] = { - if (!EditControlUtil.isLatestEdit(sourceTweet.editControl, sourceTweet.id).getOrElse(true)) { - Future.exception(TweetCreateFailure.State(TweetCreateState.StaleTweetRetweetNotAllowed)) - } else { - // the source tweet does not have any edit control or the source tweet is the latest tweet - Future.Unit - } - } - - /** - * Builds the RetweetBuilder - */ - def apply( - validateRequest: RetweetRequest => Future[Unit], - tweetIdGenerator: TweetIdGenerator, - tweetRepo: TweetRepository.Type, - userRepo: UserRepository.Type, - tflock: TFlockClient, - deviceSourceRepo: DeviceSourceRepository.Type, - validateUpdateRateLimit: RateLimitChecker.Validate, - spamChecker: Spam.Checker[RetweetSpamRequest] = Spam.DoNotCheckSpam, - updateUserCounts: (User, Tweet) => Future[User], - superFollowRelationsRepo: StratoSuperFollowRelationsRepository.Type, - unretweetEdits: TweetDeletePathHandler.UnretweetEdits, - setEditWindowToSixtyMinutes: Gate[Unit] - ): RetweetBuilder.Type = { - val entityExtactor = EntityExtractor.mutationAll.endo - - val sourceTweetRepo: SourceTweetRequest => Stitch[Tweet] = - req => { - tweetRepo( - req.tweetId, - WritePathQueryOptions.retweetSourceTweet(req.user, req.hydrateOptions) - ).rescue { - case _: FilteredState => Stitch.NotFound - } - .rescue { - convertRepoExceptions(TweetCreateState.SourceTweetNotFound, TweetLookupFailure(_)) - } - } - - val getUser = userLookup(userRepo) - val getSourceUser = sourceUserLookup(userRepo) - val getDeviceSource = deviceSourceLookup(deviceSourceRepo) - - /** - * We exempt SGS test users from the check to get them through Block v2 testing. - */ - def isSGSTestRole(user: User): Boolean = - user.roles.exists { roles => roles.roles.contains(SGSTestRole) } - - def validateCanRetweet( - user: User, - sourceUser: User, - sourceTweet: Tweet, - request: RetweetRequest - ): Future[Unit] = - Future - .join( - validateNotCommunityTweet(sourceTweet), - validateNotTrustedFriendsTweet(sourceTweet), - validateSourceUserRetweetable(user, sourceUser), - validateStaleTweet(sourceTweet), - Future.when(!request.dark) { - if (request.returnSuccessOnDuplicate) - failWithRetweetIdIfAlreadyRetweeted(user, sourceTweet) - else - validateNotAlreadyRetweeted(user, sourceTweet) - } - ) - .unit - - def validateSourceUserRetweetable(user: User, sourceUser: User): Future[Unit] = - if (sourceUser.profile.isEmpty) - Future.exception(UserProfileEmptyException) - else if (sourceUser.safety.isEmpty) - Future.exception(UserSafetyEmptyException) - else if (sourceUser.view.isEmpty) - Future.exception(UserViewEmptyException) - else if (user.id != sourceUser.id && sourceUser.safety.get.isProtected) - Future.exception(TweetCreateFailure.State(TweetCreateState.CannotRetweetProtectedTweet)) - else if (sourceUser.safety.get.deactivated) - Future.exception(TweetCreateFailure.State(TweetCreateState.CannotRetweetDeactivatedUser)) - else if (sourceUser.safety.get.suspended) - Future.exception(TweetCreateFailure.State(TweetCreateState.CannotRetweetSuspendedUser)) - else if (sourceUser.view.get.blockedBy && !isSGSTestRole(user)) - Future.exception(TweetCreateFailure.State(TweetCreateState.CannotRetweetBlockingUser)) - else if (sourceUser.profile.get.screenName.isEmpty) - Future.exception( - TweetCreateFailure.State(TweetCreateState.CannotRetweetUserWithoutScreenName) - ) - else - Future.Unit - - def tflockGraphContains( - graph: StatusGraph, - fromId: Long, - toId: Long, - dir: Direction - ): Future[Boolean] = - tflock.contains(graph, fromId, toId, dir).rescue { - case ex: OverCapacity => Future.exception(ex) - case ex => Future.exception(TFlockLookupFailure(ex)) - } - - def getRetweetIdFromTflock(sourceTweetId: TweetId, userId: UserId): Future[Option[Long]] = - tflock - .selectAll( - Select( - sourceId = sourceTweetId, - graph = RetweetsGraph, - direction = Forward - ).intersect( - Select( - sourceId = userId, - graph = UserTimelineGraph, - direction = Forward - ) - ) - ) - .map(_.headOption) - - def validateNotAlreadyRetweeted(user: User, sourceTweet: Tweet): Future[Unit] = - // use the perspective object from TLS if available, otherwise, check with tflock - (sourceTweet.perspective match { - case Some(perspective) => - Future.value(perspective.retweeted) - case None => - // we have to query the RetweetSourceGraph in the Reverse order because - // it is only defined in that direction, instead of bi-directionally - tflockGraphContains(RetweetSourceGraph, user.id, sourceTweet.id, Reverse) - }).flatMap { - case true => - Future.exception(TweetCreateFailure.State(TweetCreateState.AlreadyRetweeted)) - case false => Future.Unit - } - - def failWithRetweetIdIfAlreadyRetweeted(user: User, sourceTweet: Tweet): Future[Unit] = - // use the perspective object from TLS if available, otherwise, check with tflock - (sourceTweet.perspective.flatMap(_.retweetId) match { - case Some(tweetId) => Future.value(Some(tweetId)) - case None => - getRetweetIdFromTflock(sourceTweet.id, user.id) - }).flatMap { - case None => Future.Unit - case Some(tweetId) => - Future.exception(TweetCreateFailure.AlreadyRetweeted(tweetId)) - } - - def validateContributor(contributorIdOpt: Option[UserId]): Future[Unit] = - if (contributorIdOpt.isDefined) - Future.exception(TweetCreateFailure.State(TweetCreateState.ContributorNotSupported)) - else - Future.Unit - - case class RetweetSource(sourceTweet: Tweet, parentUserId: UserId) - - /** - * Recursively follows a retweet chain to the root source tweet. Also returns user id from the - * first walked tweet as the 'parentUserId'. - * In practice, the depth of the chain should never be greater than 2 because - * share.sourceStatusId should always reference the root (unlike share.parentStatusId). - */ - def findRetweetSource( - tweetId: TweetId, - forUser: User, - hydrateOptions: WritePathHydrationOptions - ): Future[RetweetSource] = - Stitch - .run(sourceTweetRepo(SourceTweetRequest(tweetId, forUser, hydrateOptions))) - .flatMap { tweet => - getShare(tweet) match { - case None => Future.value(RetweetSource(tweet, getUserId(tweet))) - case Some(share) => - findRetweetSource(share.sourceStatusId, forUser, hydrateOptions) - .map(_.copy(parentUserId = getUserId(tweet))) - } - } - - FutureArrow { request => - for { - () <- validateRequest(request) - userFuture = Stitch.run(getUser(request.userId)) - tweetIdFuture = tweetIdGenerator() - devsrcFuture = Stitch.run(getDeviceSource(request.createdVia)) - user <- userFuture - tweetId <- tweetIdFuture - devsrc <- devsrcFuture - rtSource <- findRetweetSource( - request.sourceStatusId, - user, - request.hydrationOptions.getOrElse(WritePathHydrationOptions(simpleQuotedTweet = true)) - ) - sourceTweet = rtSource.sourceTweet - sourceUser <- Stitch.run(getSourceUser(getUserId(sourceTweet), request.userId)) - - // We want to confirm that a user is actually allowed to - // retweet an Exclusive Tweet (only available to super followers) - () <- StratoSuperFollowRelationsRepository.Validate( - sourceTweet.exclusiveTweetControl, - user.id, - superFollowRelationsRepo) - - () <- validateUser(user) - () <- validateUpdateRateLimit((user.id, request.dark)) - () <- validateContributor(request.contributorUserId) - () <- validateCanRetweet(user, sourceUser, sourceTweet, request) - () <- unretweetEdits(sourceTweet.editControl, sourceTweet.id, user.id) - - spamRequest = RetweetSpamRequest( - retweetId = tweetId, - sourceUserId = getUserId(sourceTweet), - sourceTweetId = sourceTweet.id, - sourceTweetText = getText(sourceTweet), - sourceUserName = sourceUser.profile.map(_.screenName), - safetyMetaData = request.safetyMetaData - ) - - spamResult <- spamChecker(spamRequest) - - safety = user.safety.get - - share = Share( - sourceStatusId = sourceTweet.id, - sourceUserId = sourceUser.id, - parentStatusId = request.sourceStatusId - ) - - retweetText = composeRetweetText(getText(sourceTweet), sourceUser) - createdAt = SnowflakeId(tweetId).time - - coreData = TweetCoreData( - userId = request.userId, - text = retweetText, - createdAtSecs = createdAt.inSeconds, - createdVia = devsrc.internalName, - share = Some(share), - hasTakedown = safety.hasTakedown, - trackingId = request.trackingId, - nsfwUser = safety.nsfwUser, - nsfwAdmin = safety.nsfwAdmin, - narrowcast = request.narrowcast, - nullcast = request.nullcast - ) - - retweet = Tweet( - id = tweetId, - coreData = Some(coreData), - contributor = getContributor(request.userId), - editControl = Some( - EditControl.Initial( - EditControlUtil - .makeEditControlInitial( - tweetId = tweetId, - createdAt = createdAt, - setEditWindowToSixtyMinutes = setEditWindowToSixtyMinutes - ) - .initial - .copy(isEditEligible = Some(false)) - ) - ), - ) - - retweetWithEntities = entityExtactor(retweet) - retweetWithAdditionalFields = setAdditionalFields( - retweetWithEntities, - request.additionalFields - ) - // update the perspective and counts fields of the source tweet to reflect the effects - // of the user performing a retweet, even though those effects haven't happened yet. - updatedSourceTweet = sourceTweet.copy( - perspective = sourceTweet.perspective.map { - _.copy(retweeted = true, retweetId = Some(retweet.id)) - }, - counts = sourceTweet.counts.map { c => c.copy(retweetCount = c.retweetCount.map(_ + 1)) } - ) - - user <- updateUserCounts(user, retweetWithAdditionalFields) - } yield { - TweetBuilderResult( - tweet = retweetWithAdditionalFields, - user = user, - createdAt = createdAt, - sourceTweet = Some(updatedSourceTweet), - sourceUser = Some(sourceUser), - parentUserId = Some(rtSource.parentUserId), - isSilentFail = spamResult == Spam.SilentFail - ) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.docx new file mode 100644 index 0000000000000000000000000000000000000000..80f8a474d32da9bec7ab7f07211b0d47c70e7e80 GIT binary patch literal 37664 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 PR|zsC0<*`;J`fK8M{9AV literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.scala deleted file mode 100644 index 8a675a8ce..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ReverseGeocoder.scala +++ /dev/null @@ -1,78 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.geoduck.backend.hydration.thriftscala.HydrationContext -import com.twitter.geoduck.common.thriftscala.Constants -import com.twitter.geoduck.common.thriftscala.PlaceQuery -import com.twitter.geoduck.common.thriftscala.PlaceQueryFields -import com.twitter.geoduck.service.common.clientmodules.GeoduckGeohashLocate -import com.twitter.geoduck.service.thriftscala.LocationResponse -import com.twitter.geoduck.util.primitives.LatLon -import com.twitter.geoduck.util.primitives.{Geohash => GDGeohash} -import com.twitter.geoduck.util.primitives.{Place => GDPlace} -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.repository.GeoduckPlaceConverter -import com.twitter.tweetypie.{thriftscala => TP} - -object ReverseGeocoder { - val log: Logger = Logger(getClass) - - private def validatingRGC(rgc: ReverseGeocoder): ReverseGeocoder = - FutureArrow { - case (coords: TP.GeoCoordinates, language: PlaceLanguage) => - if (LatLon.isValid(coords.latitude, coords.longitude)) - rgc((coords, language)) - else - Future.None - } - - /** - * create a Geo backed ReverseGeocoder - */ - def fromGeoduck(geohashLocate: GeoduckGeohashLocate): ReverseGeocoder = - validatingRGC( - FutureArrow { - case (geo: TP.GeoCoordinates, language: PlaceLanguage) => - if (log.isDebugEnabled) { - log.debug("RGC'ing " + geo.toString() + " with geoduck") - } - - val hydrationContext = - HydrationContext( - placeFields = Set[PlaceQueryFields]( - PlaceQueryFields.PlaceNames - ) - ) - - val gh = GDGeohash(LatLon(lat = geo.latitude, lon = geo.longitude)) - val placeQuery = PlaceQuery(placeTypes = Some(Constants.ConsumerPlaceTypes)) - - geohashLocate - .locateGeohashes(Seq(gh.toThrift), placeQuery, hydrationContext) - .onFailure { case ex => log.warn("failed to rgc " + geo.toString(), ex) } - .map { - (resp: Seq[Try[LocationResponse]]) => - resp.headOption.flatMap { - case Throw(ex) => - log.warn("rgc failed for coords: " + geo.toString(), ex) - None - case Return(locationResponse) => - GDPlace.tryLocationResponse(locationResponse) match { - case Throw(ex) => - log - .warn("rgc failed in response handling for coords: " + geo.toString(), ex) - None - case Return(tplaces) => - GDPlace.pickConsumerLocation(tplaces).map { place: GDPlace => - if (log.isDebugEnabled) { - log.debug("successfully rgc'd " + geo + " to " + place.id) - } - GeoduckPlaceConverter(language, place) - } - } - - } - } - } - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowRetweetSpamChecker.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowRetweetSpamChecker.docx new file mode 100644 index 0000000000000000000000000000000000000000..d16b111cabd7e2fdab11a802ff6d596fb5b862b2 GIT binary patch literal 37463 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 Spam.AllowFuture - case (TieredActionResult.SilentFail, _, _) => Spam.SilentFailFuture - case (TieredActionResult.UrlSpam, _, denyMessage) => - Future.exception(TweetCreateFailure.State(TweetCreateState.UrlSpam, denyMessage)) - case (TieredActionResult.Deny, _, denyMessage) => - Future.exception(TweetCreateFailure.State(TweetCreateState.Spam, denyMessage)) - case (TieredActionResult.DenyByIpiPolicy, _, denyMessage) => - Future.exception(Spam.DisabledByIpiFailure(request.sourceUserName, denyMessage)) - case (TieredActionResult.RateLimit, _, denyMessage) => - Future.exception( - TweetCreateFailure.State(TweetCreateState.SafetyRateLimitExceeded, denyMessage)) - case (TieredActionResult.Bounce, Some(b), _) => - Future.exception(TweetCreateFailure.Bounced(b)) - } - - req => { - Trace.record("com.twitter.tweetypie.ScarecrowRetweetSpamChecker.retweetId=" + req.retweetId) - Stitch.run(repo(requestToScarecrowRetweet(req))).flatMap(handler(req)) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.docx new file mode 100644 index 0000000000000000000000000000000000000000..f5d9e067e1a9feeca5f31258af58749ca0a8b006 GIT binary patch literal 37939 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.scala deleted file mode 100644 index 5db66c4dc..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScarecrowTweetSpamChecker.scala +++ /dev/null @@ -1,106 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.finagle.tracing.Trace -import com.twitter.relevance.feature_store.thriftscala.FeatureData -import com.twitter.relevance.feature_store.thriftscala.FeatureValue -import com.twitter.service.gen.scarecrow.thriftscala.TieredAction -import com.twitter.service.gen.scarecrow.thriftscala.TieredActionResult -import com.twitter.service.gen.scarecrow.thriftscala.TweetContext -import com.twitter.service.gen.scarecrow.thriftscala.TweetNew -import com.twitter.spam.features.thriftscala.SafetyMetaData -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.TweetCreateFailure -import com.twitter.tweetypie.handler.Spam.Checker -import com.twitter.tweetypie.repository.TweetSpamCheckRepository -import com.twitter.tweetypie.thriftscala.TweetCreateState -import com.twitter.tweetypie.thriftscala.TweetMediaTags - -case class TweetSpamRequest( - tweetId: TweetId, - userId: UserId, - text: String, - mediaTags: Option[TweetMediaTags], - safetyMetaData: Option[SafetyMetaData], - inReplyToTweetId: Option[TweetId], - quotedTweetId: Option[TweetId], - quotedTweetUserId: Option[UserId]) - -/** - * Use the Scarecrow service as the spam checker for tweets. - */ -object ScarecrowTweetSpamChecker { - val log: Logger = Logger(getClass) - - private def requestToScarecrowTweet(req: TweetSpamRequest): TweetNew = { - // compile additional input features for the spam check - val mediaTaggedUserIds = { - val mediaTags = req.mediaTags.getOrElse(TweetMediaTags()) - mediaTags.tagMap.values.flatten.flatMap(_.userId).toSet - } - - val additionalInputFeatures = { - val mediaTaggedUserFeatures = if (mediaTaggedUserIds.nonEmpty) { - Seq( - "mediaTaggedUsers" -> FeatureData(Some(FeatureValue.LongSetValue(mediaTaggedUserIds))), - "victimIds" -> FeatureData(Some(FeatureValue.LongSetValue(mediaTaggedUserIds))) - ) - } else { - Seq.empty - } - - val quotedTweetIdFeature = req.quotedTweetId.map { quotedTweetId => - "quotedTweetId" -> FeatureData(Some(FeatureValue.LongValue(quotedTweetId))) - } - - val quotedTweetUserIdFeature = req.quotedTweetUserId.map { quotedTweetUserId => - "quotedTweetUserId" -> FeatureData(Some(FeatureValue.LongValue(quotedTweetUserId))) - } - - val featureMap = - (mediaTaggedUserFeatures ++ quotedTweetIdFeature ++ quotedTweetUserIdFeature).toMap - - if (featureMap.nonEmpty) Some(featureMap) else None - } - - TweetNew( - id = req.tweetId, - userId = req.userId, - text = req.text, - additionalInputFeatures = additionalInputFeatures, - safetyMetaData = req.safetyMetaData, - inReplyToStatusId = req.inReplyToTweetId - ) - } - - private def tieredActionHandler(stats: StatsReceiver): Checker[TieredAction] = - Spam.handleScarecrowResult(stats) { - case (TieredActionResult.NotSpam, _, _) => Spam.AllowFuture - case (TieredActionResult.SilentFail, _, _) => Spam.SilentFailFuture - case (TieredActionResult.DenyByIpiPolicy, _, _) => Spam.DisabledByIpiPolicyFuture - case (TieredActionResult.UrlSpam, _, denyMessage) => - Future.exception(TweetCreateFailure.State(TweetCreateState.UrlSpam, denyMessage)) - case (TieredActionResult.Deny, _, denyMessage) => - Future.exception(TweetCreateFailure.State(TweetCreateState.Spam, denyMessage)) - case (TieredActionResult.Captcha, _, denyMessage) => - Future.exception(TweetCreateFailure.State(TweetCreateState.SpamCaptcha, denyMessage)) - case (TieredActionResult.RateLimit, _, denyMessage) => - Future.exception( - TweetCreateFailure.State(TweetCreateState.SafetyRateLimitExceeded, denyMessage)) - case (TieredActionResult.Bounce, Some(b), _) => - Future.exception(TweetCreateFailure.Bounced(b)) - } - - def fromSpamCheckRepository( - stats: StatsReceiver, - repo: TweetSpamCheckRepository.Type - ): Spam.Checker[TweetSpamRequest] = { - val handler = tieredActionHandler(stats) - req => { - Trace.record("com.twitter.tweetypie.ScarecrowTweetSpamChecker.userId=" + req.userId) - Stitch.run(repo(requestToScarecrowTweet(req), TweetContext.Creation)).flatMap { resp => - handler(resp.tieredAction) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..6868c4321361353f6f0edfb3d96de88c4338e640 GIT binary patch literal 37498 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

SYV^x|9_~mR2?8TJ0qcaVX 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%0D9s-fGqB?=I(V38_iQVVc6rS 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

_Z*@i9xge;{OI7mVhZKdsg+ki| zt_x#w3MTTYReuvpD~rU)I2FchN}E4)$bt%TnjkyX08$3lf~Td;Jb;vw3MK!GG8x!E zDf6Vyn%nA+WEyfQipRuJC}8pmS`_?>G+W?f7mGDE;boE}&d$W5Zhp0!s@Hg5p)9BK zJ5cUcZT1vFn_L#av4D2Il47)Wj#fH^oIfPCa6l|OKNN}i#Jv`>U%a8DBW#alPobpV zpHUcPgf)jJwYh0feA6C+je@~FYE%2ZPwQXy^=2CRuzfsffrg?KO+bao{6bzqf=&kpoJ)nZyCfplI-b*Zaa<6WVDxT6GrJ-;@r4*__r2s`i@OVeQ1jcPCSPKjVnQd+3M{EiLDW0?f z?oHOPVDMrfC0>sOhB#7wv4KNyEGeF+r3;c2$M%W#?%<)>pRm0bHoh3%^)noczI z)xv`T!7Aqm3Q)ai(vT@Ss@-5FC~1yj+Gz=nV&Bu^9mO)!5*>#TVPtr+p-A>z3nQZv z&|=X?Sov{=&zb)?#U$#`ZUUq)6%f4WawAs661$emmV~THvbUxp8KpY7M|E(Ah9tD3 z0c{Rnw1y8GR&l=S>BIB;k*aa%#;Ezng2CImj`TS>Sz#^ zizE|1Y!-wf8=$Jet~3}ixE5Eo`34Cz>zmmr;+JXCJrLS>M=zvYM=aoD>t~@E;vFw5 z9Hg`0!_uOsWO-hF@<^}&_kV{as}R*n!1yaHU&cYjj}!(v-vCyrWMxcCy-Mdw;ooc_ z%8;39RZ(=d!p#VDd7x4}Ipto~g~8~O4H{@ArvG1``8@_L@ft-jcxBPGMM7s($-OFF#Xr z2Qd<$WmzKEz-dC`<4!nV})P$l!tL|p@)f4{PH;he+7Zw zhS4Bx#lMjfR+S6vBkx*-3pLBt9tX|$oBZBE5{j!_2xqZC_3O`WvG_*z?*A(Ykw^R$ z^cH%NHS!lQ%KPTpt*wAb+7Hu?t#Bb=Afdkl2}GoRyM;E@{S16>82>PFC!XI;5zVxQ z9uM=<^8#tOkbfTOyCFnJCX@(^u|)`_6iC!B@O|X;CifYwKiuj;%ff|7-VOOAQ2jtk z=7>MT4>^u9=?*)00spQ=^2z+#pD0yKmWXYuH=^}PFRxVplBZ-Bu2q;_mwC;liP7;+rc=VrId;)$2#r;Rg{4Y^p(Mvj?XZ8jt zSV;7B0LB?J?#~jg@2fA7S_!JrpV8p8nf)W@78>6XI2!xNr6xc*ig0fzNXJcy3LcvF z-22G=ocqY;)677?_BG#UtCo$XAf&VPt|6-@SnM|PH3 z(2!q)$8 zH_aZp3-Q{iH)i7xb%f$}mQBcTpr9By-<9F55%*Z0oR#v00|g<=0@Of<$_?uKS*&p+ zwEBKMC~wz~3JLbbe{o~nr5RFc9aehUpI|Z6s1B_{(7>&2WN@tB3L~72`TFFY=9r3m zux4ek{wR5yoC5)I?L51A#8nRx)*%ZHo3@@Cpz4}Q2q;?*SOi{DTxFhuIEVtRif)Ksf`J`*E`B5Ii$)&Y4?#!&y+ThCq>e zWgUnNK(qznL912^63m?A#Pe)!0K148fM>=rGs`X0Qzoq+NDQH@gPH%<^)d$9j2@t2` zb+M#!?4x@J8Mm{x30!_4-H`U$+XM09k8ec$D{uq=(xo|OiKlx1K@5Sw5+A4qDb7N* z#-m_UJCCWN5o#@wmPtDVF7BMlI0jh{TBI5yQ46RYjh($&XxyRr=vb-VE?lA1CiZ^RD`!9n@f$C7QxD>hnLu1iPs9;MG>2@0q3qfJ^ysuIUO{F-t~Ic%lRzjtjCMulI=a*N*#N;~`IN=3^<1^HvhSQ+1;ROJ1!T=BVb1+_| zs60vpO(A!$UCDDW!JJ^%;uAz@&@uV+cmdpB!27B_>ZtgTVs>BWv^fF?=3R;MlioX)3C;O0yM{ zSA(6E+vj+WiWRlVCGlQ2@0e2N$qla9R$t12>7oQOFkNKxg5f|uDmIvu#u)XT-d??L z$&HlVJ)XwoX)J2l; zAoIENL&!tnIqWeb^|p!t^CCx#21uqAauHruQC?cwT5TYuCC!k(DT#>@plATZTyb%a z#EQSd0uP=v)NjgweVQjSE{%!42;fcD(RqqfDYpe~ms6;P%ql$tegSWhbmX+FQqsHma{B&?`x&774y|ldkR5`sC`(&~ z6PSv{1i^S^qQ;A&^7l(mLPU-e<ol+zBU+9B(jj1v!ec5R37I#jFKUk}{Gq83_@9 zTkzw7qjI8jSWAJX2td+EH&M+0S!yP6u~W56%ULGD0{gJpk#yXO_&zrQ zEXDnl#b2ZiHkK_#JTxkk)N%C%jr-2Itf86R$YB4d;bz0Ke zKl}Y_msd4uNto#xGW?y`KR3la9_2xHf1hOmVx9+s*`FRlb)B^rjVrD|%Tx%OC z7rw-xERd1+sAs9Ypnsi97peDY#cAWHa0ck)!!7>cv49o#Ro)U)+5oSZ z6Z=*SI4en(&gsX8#}4Fv3gMQao~zH{g-UuBFt(V7`ohtUUSk&b=bOR;?1--oDZL9b zB!5*%nwZ!7NjU}4K%=UsdXvo(FxJ!h$$%K*Pa)zm7M=Au;u1xMXwe(N;mHC3|=jWIwRvLO$y+=f0Pvl&c$&Eio>GQ$KntHefzL^63aP1C*4_2a$u zQfJ8+txe-|ahv{c#`G5h17wJ2Vm4ZbYk7Q33I+kv7_j7pv%G~$oSo;?Xl)acVfM#8d^qSl@wlLVH*n^X{3lA4|} z#9QZqNTw*zLy5B%nl2+ySQWPkFq)=%`vnY9#Zm$gSX%8U42{eT%6t<+R}5@7L-iC{ z1pgsa%%AO{^3+8>tqbziJi+cE<>@Dx4P=_1%N1Z6j|5j&<093~V(*x|` zg!vyZ)58~+1lO{^f$Xtxq3_qDgaU;f z@{P!eRP*$!OU%3HZ@_*y!($4}*@*7>h$+T`aLj@8AY!!ibX@oIt7W#YMjR}u;gKw~ zhJt+lxL-TpuMPw`4H>O7K)q0?j*fiVThvREB52$CBRb;YAOdYFcpH9IaH9hrTxv#3 z4kI%(FE;q-Y>sQFGbfbA0TR5EUa-`{2ZL~lCJYam_b<#;HVX#3Og_i4%l9oS_gODd_kb zRJ6K=jnhTn;1qIfG?)D{jmS@(faR4RLiOU94avON6%(I{fp9E3ZSD~h{X#`ae7Q&{ zasr8yrNp1j0}_>Rv55u`gAWxCo>1(9>L7(+#naYPv-4{4*!{#z_^Q|4&vTVa04 z6ytnxbH0nX%tLGZp!GzzKIKQMdjP}o+VIL?JfVQ~n$nuk!omukwj^T8Rs~o5+pREC zW2>apb}TF(RX*{A^!bfdbmb6M!T_rN#=c)m!vDGO0Mz;4G zahVIXpk1!qnNq?Ag74%59DuY>szWf9D$RTvU{6FPxOMRP*rNwH_TuPQiB&+j!eMoTcgZm-vhEZ zy?@8l4rMobT@;X|{(8F^ZO@4CJKEm{)+zk%!I@u9jtUv0l!Bt<_GC>b4AZW3!Jqy1Y*6a^`Ik$k#6QBeOh##7_+etOGB4qhuQrPHDxkPycUr}Wt^Fuk89m5WITmFQ36xy9y@iIg)#HXxO*oyO@5H#2^An} zvTIg$>SkCOKTXEf>H%Q&oN{tl1ut+JG59K4#!PM8hB!R?OCsd7_oKTxAtFMTkYd@q zpKRFOLH=_?>TlkB7ZYGx)ZcI*AZY(~%pBMSSk=hb_OITkTd4!~-&qJoe|(LkNz0b8 zO=`hFr5g=xo|{f*x?j^(Oey6eF%-s_5fngTQs2G>aMogp-L*_!5AF4iF&Ry=R-CIA*x$563u8%!nyGCj3|)y zMi+d~@F*Bjym$>VDV#mNo}Cm5w%EWb)|ll5!Yxp>V>-+f1+$Ye@X zqgk;dg^Ls%4>$4;O}Z}D2XJJ?AH2BeEJ@8dGHWQZEtODADuZrivJ9ousu)fqW1}<6 zLD#AWzR}IK?YToOriltb9u!sdEfOtkXgro--JMqkJqF-0DV z-%c=cGZ{n_o&#Ami-G-sK>5_h+Qm~yWu+!^Q4$lrFrGtgSdJ ztbaEEl?OHe#p(U2fzo-n^s?a=*(rXxcC}K9h}I?=*DR)EOQS?`M$wCS<<#$Qv{gR@ zciB2rUn2~Ex$u^0PuPldYJfw#9!aC*d^{rmof3MC>{-C4&p`QR`67%6^mn+E+}o4( zk+LTu$xbQK)7VvuchLLD3f?Z*3lhbW35zpL}U zHp#F`N|PsGh%pq(%{>kYYKNBQDlF1*U*M~u%YPDG zq^Xy;DB7^gw8X>BG#8ZrxbteVFSeqx)D3*=@j=6EITKzaL1QUAG-s8SZERMauPa)T z%64}mi!EoyGA)EAR$fWFXx@UwSc5jk%SUadtc8aqV)LO8X@?saPF%{Kxj#wP^xr^$ zF0}hfAgpB^yVCph`Cub$cA!dplotxB*Ff5mailloUvI%W)+k`t0v!7ktL^E6y^@5F@t8J?FUaIm?8u7XViV#Z z6kS}A3&>uiCZZUUxo*u9d}+$-z+%bJjS-@R#5{aujs|uwE90jR3nS*q%!(UehXQ(m7gK{}9hZzc~Qnd0-cvjR+ zXlRG!Eb@@g0@<_9(HhR#M5vu}B4b)<^}Z$UtwrT56=`!nn+t2YX}%8zI+Slku5e?y z?gs_6wrrPkF&GZz+r=CbO8P#6br5URpe8o#wAv0V%v)bVj{Quq|Lx{dSO#8WtDS1| zlwFIy02Li2KfV>tqnpyobcU08S&ywSFD~p7uF{ziB|lESnnh%`sT2?+=G^m%YzYVA$W_ z0Q7y^Vy^4a;YSMI1NnFJj*}8qje1vv-w)$DTz( zU)0N2hkP14&5vTB=3h;Pt<$tXgp5=Yqpel5v~3;r^9Px=;^=8%({m~rstxbY9oy=h zU^4pfmQd0qgy*l_QYt2;zNq?up5ZAe&iH4ubUsi-Vi{QOc^H7y{)w?byl6!3aFCt4 zi~w>4`?4fVoR^k!v;~sY@Qw(%e~zdqS#hD!(_+Qtk?Dz41%Qh^IB-uy5mzIL(3Rl_P;swi>D4R4p8MlFY|elzr=d>V!Cos4q;l zP&`IgHH^7ilp%HPa9O6#!OQFarAu(~Xt@WdhZ?Ah=pVZN?hgAOb$_*njhSr#=I1C- zyFCh|&6bsB7BmH#PiSE4pB+i7;%8gKOVB%IrM7zuRlsrCwh2Fey4d+4SG9{!#m$$O zR;Ku$IzBjYom;H=*{6`SIyKWvu$+Syzg!o68nEs#wY-fG6CuOxU@3E`nP5a=P)jFC zoeJjFWHQNhYrHnLn9J&XUwG~#?V?s8kRZP|vMt6Tg57R#%Ippz?6mP8XQpfJLNnnB zdrWWOh#WY^U6Yzcc~_TLldI@b7kXQL1N-NIwsgtK?*RoH1BK)KL--%bip~y>E`N<` zPJDxX5DSL*m)^m<{R!552uqA`DG*wlWf?s}4}VHq@(r<=%6D&hK2DRdFSV}M%lrgF zN5S@n)pK;z^HdZts#W|2q1oMioE+rie6@UnR*<|ML6l=;Jg)9LPGdETP)tY^cSJ`S zGqduKd^wiN}XTT zxScZ1ls;d$EX=X3U!TgRt8>`x>uKdFD77&5IiZp?175CtLbhuUBWkus!atC@BQGc( z41Wo1vwCwhmQ6zcx=$th^W)0+`+XXU$>nW@l{X46Mrh$?j$}x9st8;|PBiZH9+^1sD z{dRcYeE_eJzg};G61R~eFkHBZ1{r&kW%f2N&MUH(*tT}MOvHrMVaZ1u7C z9yj|Nbz=b%jjpbYMw9P5_3hessf=h_{uu7?!H3j+&70)9L%ZpU84Y>@a_`xZ1$V+- zQ;mpSRvDEM_7GcWm8$%rS2ixVgS!Q{Y{e}Tb*JvSaO&`i-AH)2l1@yU5R|%&LkTA; z#eGOBO(G5r#rez874>?h0VkE^0#S~4z$K>^s`vu z<$=7i+&sMJE6MVZ+?3K+p$c4G3jRCa9y0vBISF8yY5g*SXeQ|EEFiu?##%c$+a1K715)vTZ#UPq_H=DwzA+pBH&6;Hgsrvkl099!HFl0M;TQaO z(mQ7<#f&0sDw?csixl!wxY=I)846#yA{AG&e4#oD&n*+_EFl zxp;T*6v@cF-B`a{_b5DJ9)Y52u!tGS{SDx8)%_5Sy87K>eBt=hxQnXcBxWR*C;%U! zM_SUDdiGAZGNo@YOnRFIcxe`S1X? zQ!%R-b1?Rbyar6wNMN=b;`D{;VDtEDI!mE&-RFCZ(+`C?6Rb}=GkkX~dfdNZdZDNc zdX8(HppKO|E>49reLn5rcHOq9S-is3BFWW;#^~knCiQ=v{=J52;GyBOL->{Nq%zk1 zqZeLY0s$X?4+$DnQD66`hu*Dg%iW$3pB@8yQqH@**MV(EU46cZg<&l&)>6L!`(-WE z)AiUB>hWs-^>n=mA_L1%H{M!5f{Tq|0WOrap(y(_Z^%0JN5S?7{6A-`!toW09!L<7 zU=k1zY~YLqY~20VGzDCF0k2PcBP&}bYezGSD|H)3bTtgYE^lsHyBQQ3Mhxh|F1G$+ z#?SO%Tvp#plevl+>zqQRljPAesf@lXrUG&jUO*nh1bjXkFjQT$ofPK-`INpr7tZz95Fbu$NH@Avm6@wEDzFlsuzx8I{Z@J9!dY{-AjujdV&E27S!?GZNn|X*l zH1|%~x70fFRLNXoa=C(>wsj2df!KgqB1{%GEg5Tf+IC3qz%xV#a*T&^r0Kw6^AceC z2U+iRI-S9=U?3|HZ+_H~&j4pZ5GqK|aq@zZQo{B3$DB#vht6|Vqk z80I;WsI4};y>VWp6)1q-F~+=MWBjyYsArbKmv&_f!{|85@p~%~(;Mm_A@2_M367H( zN#Jus%oF@GjzKX4Rvvv?W~JRNPmQ2W30@ewM&~5qcvC_hy687LPK#O*LnAUQ}C=?|UBTT=oCzm=*Q=^%ca%5Az-zcBbdl?B7pU93STL0I&1k-bU ziZ7_%^15pAq)A{+@6jjjRWV1mY&V{8zWHbmHw%ZOtleFKmeUDL>QkCn4SAHR_B?23 zh+_G|mGRNI+=2NP+jUD3;8mzyRjFn6b9-0wtP2dckiOjFA!azaX3z5pTt?GHCO8>P z{Q1Prs9$99)(K}MXT0`^n!m2JOyQhXM?%P|Xr5_bZ%&+Zr0VS>uKm9cOn$y@mh3LQ zbj5l8MeGiT_>N4yJo)wg>)-yJaOsh|RQmtnm)hKb(#`)qrT?hg$3B1WpOY<3_6O%5 zSuNgWu)SeYpz^&sRenv)<|k6SK2AH>dfx6z>!gzKwJ&(ro%gHAP;c2fb-LEV+NeWW zc3J;!-bucfb1&=P$60#(w^Z|lw>ST8xP9{NBRh8C?XzD$vwQLlSbM)$-Md=)eSc&5 z`YY1wr&Y1N-pat(eAM8U!NGtWiR>9ED?E-Er$`p@rnYImkhJ}9Z_;(|bw~M6e~^6t z>OuC(UBHX47Dldg2(prCxqAK0{~I|*ZBK-Lo9^D$@b2jjr}WFBue%N`nY~K;%F|b; zH2a?~pWU?2spi(YTcz)$Lljh2PI^6O-5aZ2;V<8)9aV1x-cxL3o3VD`hpdb7?NAvJxL8Na#b zMY0QTdn(v)UA1A&OwMS&d7a8}EH7p~?d$N}Xgoi0AH#$_KPz9YFX5i&yL{2b?uxjV z=1ej71bYA7mF$hX*Ywe!=?$ODZ-;GLf9z%87QYlMAJkxQ^T6es73Y)P_&*4#vGW(4 zifq_gr(jr}n)7zkjeOCYd}iws=Dm3EXin&oi^2&@|I6iNUr^XC-Q4+(Et#uZv#3Wf zLiw=d%olPJ-8(<6Quvpc8qxQ`s`k``D<&duB)D`A7wSB$n3s@whWQ11(v$Yy)4G>< z|6Q-#b`q_trzV{s*Trx2nFf;(IBR zXQ7WPpH%vE>ZeTnH zGy>Ab2RH4}HFmUd2WJA6Tm)(qMA7&hC<3p0lJkqeBhl#Ezudkp{u-z~hlPPb07ZK} zPz0_$v7i8(tHXCJU)u((>J-$_EuR4l2=L4S(1_Appx?1+&ufqtG6GtD8fcXaisimM zQ0)+(BO8J>6na;SS$FF*FvNwjGVr6Aw38QVQgKOTPAYi157J%t4w&LD!Bx@q*BPp$w`WZ5jsM1oVjrgb7R)P!mw5CD8Swj~XNN zPpyLLM;}8*Hv+x?jWD9G5o>Q8-2n8CF2aDcCS(J!b$ijxLhm~w%!+SDHVd^UiEavd vR|{cESqn5&P&!`d`qA5i2>pT`NLdWEbr|5y3d}*ETqVem2+SVLeIOnHy_OfZ literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.scala deleted file mode 100644 index 77c3b2bb3..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/ScrubGeoEventBuilder.scala +++ /dev/null @@ -1,72 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.store.ScrubGeo -import com.twitter.tweetypie.store.ScrubGeoUpdateUserTimestamp -import com.twitter.tweetypie.thriftscala.DeleteLocationData -import com.twitter.tweetypie.thriftscala.GeoScrub - -/** - * Create the appropriate ScrubGeo.Event for a GeoScrub request. - */ -object ScrubGeoEventBuilder { - val userQueryOptions: UserQueryOptions = - UserQueryOptions( - Set(UserField.Safety, UserField.Roles), - UserVisibility.All - ) - - private def userLoader( - stats: StatsReceiver, - userRepo: UserRepository.Optional - ): UserId => Future[Option[User]] = { - val userNotFoundCounter = stats.counter("user_not_found") - userId => - Stitch.run( - userRepo(UserKey(userId), userQueryOptions) - .onSuccess(userOpt => if (userOpt.isEmpty) userNotFoundCounter.incr()) - ) - } - - object UpdateUserTimestamp { - type Type = DeleteLocationData => Future[ScrubGeoUpdateUserTimestamp.Event] - - def apply( - stats: StatsReceiver, - userRepo: UserRepository.Optional, - ): Type = { - val timestampDiffStat = stats.stat("now_delta_ms") - val loadUser = userLoader(stats, userRepo) - request: DeleteLocationData => - loadUser(request.userId).map { userOpt => - // delta between users requesting deletion and the time we publish to TweetEvents - timestampDiffStat.add((Time.now.inMillis - request.timestampMs).toFloat) - ScrubGeoUpdateUserTimestamp.Event( - userId = request.userId, - timestamp = Time.fromMilliseconds(request.timestampMs), - optUser = userOpt - ) - } - } - } - - object ScrubTweets { - type Type = GeoScrub => Future[ScrubGeo.Event] - - def apply(stats: StatsReceiver, userRepo: UserRepository.Optional): Type = { - val loadUser = userLoader(stats, userRepo) - geoScrub => - loadUser(geoScrub.userId).map { userOpt => - ScrubGeo.Event( - tweetIdSet = geoScrub.statusIds.toSet, - userId = geoScrub.userId, - enqueueMax = geoScrub.hosebirdEnqueue, - optUser = userOpt, - timestamp = Time.now - ) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..478477c7b96b3c071afee1772b736e0b65e8c800 GIT binary patch literal 38704 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.scala deleted file mode 100644 index adc2c5739..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SelfThreadBuilder.scala +++ /dev/null @@ -1,119 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.tweetypie.thriftscala.Reply -import com.twitter.tweetypie.thriftscala.SelfThreadMetadata -import org.apache.thrift.protocol.TField - -trait SelfThreadBuilder { - def requiredReplySourceFields: Set[TField] = - Set( - Tweet.CoreDataField, // for Reply and ConversationId - Tweet.SelfThreadMetadataField // for continuing existing self-threads - ) - - def build(authorUserId: UserId, replySourceTweet: Tweet): Option[SelfThreadMetadata] -} - -/** - * SelfThreadBuilder is used to build metadata for self-threads (tweetstorms). - * - * This builder is invoked from ReplyBuilder on tweets that pass in a inReplyToStatusId and create - * a Reply. The invocation is done inside ReplyBuilder as ReplyBuilder has already loaded the - * "reply source tweet" which has all the information needed to determine the self-thread metadata. - * - * Note that Tweet.SelfThreadMetadata schema supports representing two types of self-threads: - * 1. root self-thread : self-thread that begins alone and does not start with replying to another - * tweet. This self-thread has a self-thread ID equal to the conversation ID. - * 2. reply self-thread : self-thread that begins as a reply to another user's tweet. - * This self-thread has a self-thread ID equal to the first tweet in the - * current self-reply chain which will not equal the conversation ID. - * - * Currently only type #1 "root self-thread" is handled. - */ -object SelfThreadBuilder { - - def apply(stats: StatsReceiver): SelfThreadBuilder = { - // We want to keep open the possibility for differentiation between root - // self-threads (current functionality) and reply self-threads (possible - // future functionality). - val rootThreadStats = stats.scope("root_thread") - - // A tweet becomes a root of a self-thread only after the first self-reply - // is created. root_thread/start is incr()d during the write-path of the - // self-reply tweet, when it is known that the first/root tweet has not - // yet been assigned a SelfThreadMetadata. The write-path of the second - // tweet does not add the SelfThreadMetadata to the first tweet - that - // happens asynchronously by the SelfThreadDaemon. - val rootThreadStartCounter = rootThreadStats.counter("start") - - // root_thread/continue provides visibility into the frequency of - // continuation tweets off leaf tweets in a tweet storm. Also incr()d in - // the special case of a reply to the root tweet, which does not yet have a - // SelfThreadMetadata(isLeaf=true). - val rootThreadContinueCounter = rootThreadStats.counter("continue") - - // root_thread/branch provides visibility into how frequently self-threads - // get branched - that is, when the author self-replies to a non-leaf tweet - // in an existing thread. Knowing the frequency of branching will help us - // determine the priority of accounting for branching in various - // tweet-delete use cases. Currently we do not fix up the root tweet's - // SelfThreadMetadata when its reply tweets are deleted. - val rootThreadBranchCounter = rootThreadStats.counter("branch") - - def observeSelfThreadMetrics(replySourceSTM: Option[SelfThreadMetadata]): Unit = { - replySourceSTM match { - case Some(SelfThreadMetadata(_, isLeaf)) => - if (isLeaf) rootThreadContinueCounter.incr() - else rootThreadBranchCounter.incr() - case None => - rootThreadStartCounter.incr() - } - } - - new SelfThreadBuilder { - - override def build( - authorUserId: UserId, - replySourceTweet: Tweet - ): Option[SelfThreadMetadata] = { - // the "reply source tweet"'s author must match the current author - if (getUserId(replySourceTweet) == authorUserId) { - val replySourceSTM = getSelfThreadMetadata(replySourceTweet) - - observeSelfThreadMetrics(replySourceSTM) - - // determine if replySourceTweet stands alone (non-reply) - getReply(replySourceTweet) match { - case None | Some(Reply(None, _, _)) => - // 'replySourceTweet' started a new self-thread that stands alone - // which happens when there's no Reply or the Reply does not have - // inReplyToStatusId (directed-at user) - - // requiredReplySourceFields requires coreData and conversationId - // is required so this would have previously thrown an exception - // in ReplyBuilder if the read was partial - val convoId = replySourceTweet.coreData.get.conversationId.get - Some(SelfThreadMetadata(id = convoId, isLeaf = true)) - - case _ => - // 'replySourceTweet' was also a reply-to-tweet, so continue any - // self-thread by inheriting any SelfThreadMetadata it has - // (though always setting isLeaf to true) - replySourceSTM.map(_.copy(isLeaf = true)) - } - } else { - // Replying to a different user currently never creates a self-thread - // as all self-threads must start at the root (and match conversation - // ID). - // - // In the future replying to a different user *might* be part of a - // self-thread but we wouldn't mark it as such until the *next* tweet - // is created (at which time the self_thread daemon goes back and - // marks the first tweet as in the self-thread. - None - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetAdditionalFieldsBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetAdditionalFieldsBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7ad09c637af6abe682460c923827260e64820ea GIT binary patch literal 37325 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 Z7;5V Future[SetAdditionalFields.Event] - - val tweetOptions: TweetQuery.Options = TweetQuery.Options(include = GetTweetsHandler.BaseInclude) - - def apply(tweetRepo: TweetRepository.Type): Type = { - def getTweet(tweetId: TweetId) = - Stitch.run( - tweetRepo(tweetId, tweetOptions) - .rescue(HandlerError.translateNotFoundToClientError(tweetId)) - ) - - request => { - getTweet(request.additionalFields.id).map { tweet => - SetAdditionalFields.Event( - additionalFields = request.additionalFields, - userId = getUserId(tweet), - timestamp = Time.now - ) - } - } - } -} - -object AsyncSetAdditionalFieldsBuilder { - type Type = AsyncSetAdditionalFieldsRequest => Future[ - TweetStoreEventOrRetry[AsyncSetAdditionalFields.Event] - ] - - val userQueryOpts: UserQueryOptions = UserQueryOptions(Set(UserField.Safety), UserVisibility.All) - - def apply(userRepo: UserRepository.Type): Type = { - def getUser(userId: UserId): Future[User] = - Stitch.run( - userRepo(UserKey.byId(userId), userQueryOpts) - .rescue { case NotFound => Stitch.exception(HandlerError.userNotFound(userId)) } - ) - - request => - getUser(request.userId).map { user => - AsyncSetAdditionalFields.Event.fromAsyncRequest(request, user) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetRetweetVisibilityHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/SetRetweetVisibilityHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..01ce4e48fb70ff2ab5ba9640fcc98dbb90e42b07 GIT binary patch literal 37405 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 `Archived` in the RetweetsGraph(6) and modifying the count in cache directly. - */ -object SetRetweetVisibilityHandler { - type Type = SetRetweetVisibilityRequest => Future[Unit] - - def apply( - tweetGetter: TweetId => Future[Option[Tweet]], - setRetweetVisibilityStore: SetRetweetVisibility.Event => Future[Unit] - ): Type = - req => - tweetGetter(req.retweetId).map { - case Some(retweet) => - getShare(retweet).map { share: Share => - val event = SetRetweetVisibility.Event( - retweetId = req.retweetId, - visible = req.visible, - srcId = share.sourceStatusId, - retweetUserId = getUserId(retweet), - srcTweetUserId = share.sourceUserId, - timestamp = Time.now - ) - setRetweetVisibilityStore(event) - } - - case None => - // No-op if either the retweet has been deleted or has no source id. - // If deleted, then we do not want to accidentally undelete a legitimately deleted retweets. - // If no source id, then we do not know the source tweet to modify its count. - Unit - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.docx new file mode 100644 index 0000000000000000000000000000000000000000..7974d6e1a1bbd5025900b32d237017fce3de70ab GIT binary patch literal 38055 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.scala deleted file mode 100644 index 088f9b8a9..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/Spam.scala +++ /dev/null @@ -1,99 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.botmaker.thriftscala.BotMakerResponse -import com.twitter.bouncer.thriftscala.Bounce -import com.twitter.finagle.tracing.Trace -import com.twitter.relevance.feature_store.thriftscala.FeatureData -import com.twitter.relevance.feature_store.thriftscala.FeatureValue.StrValue -import com.twitter.service.gen.scarecrow.thriftscala.TieredAction -import com.twitter.service.gen.scarecrow.thriftscala.TieredActionResult -import com.twitter.tweetypie.core.TweetCreateFailure -import com.twitter.tweetypie.thriftscala.TweetCreateState - -object Spam { - sealed trait Result - case object Allow extends Result - case object SilentFail extends Result - case object DisabledByIpiPolicy extends Result - - val AllowFuture: Future[Allow.type] = Future.value(Allow) - val SilentFailFuture: Future[SilentFail.type] = Future.value(SilentFail) - val DisabledByIpiPolicyFuture: Future[DisabledByIpiPolicy.type] = - Future.value(DisabledByIpiPolicy) - - def DisabledByIpiFailure( - userName: Option[String], - customDenyMessage: Option[String] = None - ): TweetCreateFailure.State = { - val errorMsg = (customDenyMessage, userName) match { - case (Some(denyMessage), _) => denyMessage - case (_, Some(name)) => s"Some actions on this ${name} Tweet have been disabled by Twitter." - case _ => "Some actions on this Tweet have been disabled by Twitter." - } - TweetCreateFailure.State(TweetCreateState.DisabledByIpiPolicy, Some(errorMsg)) - } - - type Checker[T] = T => Future[Result] - - /** - * Dummy spam checker that always allows requests. - */ - val DoNotCheckSpam: Checker[AnyRef] = _ => AllowFuture - - def gated[T](gate: Gate[Unit])(checker: Checker[T]): Checker[T] = - req => if (gate()) checker(req) else AllowFuture - - def selected[T](gate: Gate[Unit])(ifTrue: Checker[T], ifFalse: Checker[T]): Checker[T] = - req => gate.select(ifTrue, ifFalse)()(req) - - def withEffect[T](check: Checker[T], effect: T => Unit): T => Future[Result] = { t: T => - effect(t) - check(t) - } - - /** - * Wrapper that implicitly allows retweet or tweet creation when spam - * checking fails. - */ - def allowOnException[T](checker: Checker[T]): Checker[T] = - req => - checker(req).rescue { - case e: TweetCreateFailure => Future.exception(e) - case _ => AllowFuture - } - - /** - * Handler for scarecrow result to be used by a Checker. - */ - def handleScarecrowResult( - stats: StatsReceiver - )( - handler: PartialFunction[(TieredActionResult, Option[Bounce], Option[String]), Future[Result]] - ): Checker[TieredAction] = - result => { - stats.scope("scarecrow_result").counter(result.resultCode.name).incr() - Trace.record("com.twitter.tweetypie.Spam.scarecrow_result=" + result.resultCode.name) - /* - * A bot can return a custom DenyMessage - * - * If it does, we substitute this for the 'message' in the ValidationError. - */ - val customDenyMessage: Option[String] = for { - botMakeResponse: BotMakerResponse <- result.botMakerResponse - outputFeatures <- botMakeResponse.outputFeatures - denyMessageFeature: FeatureData <- outputFeatures.get("DenyMessage") - denyMessageFeatureValue <- denyMessageFeature.featureValue - denyMessage <- denyMessageFeatureValue match { - case stringValue: StrValue => - Some(stringValue.strValue) - case _ => - None - } - } yield denyMessage - handler.applyOrElse( - (result.resultCode, result.bounce, customDenyMessage), - withEffect(DoNotCheckSpam, (_: AnyRef) => stats.counter("unexpected_result").incr()) - ) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TakedownHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TakedownHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..c823deec6ce9bca02e76370bdc2f8cbd76fac14b GIT binary patch literal 37755 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 z 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 - for { - tweet <- getTweet(request.tweetId) - user <- getUser(getUserId(tweet)) - userHasTakedowns = user.takedowns.map(userTakedownsToReasons).exists(_.nonEmpty) - - existingTweetReasons = Takedowns.fromTweet(tweet).reasons - - reasonsToRemove = (request.countriesToRemove.map(countryCodeToReason) ++ - request.reasonsToRemove.map(normalizeReason)).distinct.sortBy(_.toString) - - reasonsToAdd = (request.countriesToAdd.map(countryCodeToReason) ++ - request.reasonsToAdd.map(normalizeReason)).distinct.sortBy(_.toString) - - updatedTweetTakedowns = - (existingTweetReasons ++ reasonsToAdd) - .filterNot(reasonsToRemove.contains) - .toSeq - .sortBy(_.toString) - - (cs, rs) = Takedowns.partitionReasons(updatedTweetTakedowns) - - updatedTweet = Lens.setAll( - tweet, - // these fields are cached on the Tweet in CachingTweetStore and written in - // ManhattanTweetStore - TweetLenses.hasTakedown -> (updatedTweetTakedowns.nonEmpty || userHasTakedowns), - TweetLenses.tweetypieOnlyTakedownCountryCodes -> Some(cs).filter(_.nonEmpty), - TweetLenses.tweetypieOnlyTakedownReasons -> Some(rs).filter(_.nonEmpty) - ) - - _ <- writeTakedown.when(tweet != updatedTweet) { - Takedown.Event( - tweet = updatedTweet, - timestamp = Time.now, - user = Some(user), - takedownReasons = updatedTweetTakedowns, - reasonsToAdd = reasonsToAdd, - reasonsToRemove = reasonsToRemove, - auditNote = request.auditNote, - host = request.host, - byUserId = request.byUserId, - eventbusEnqueue = request.eventbusEnqueue, - scribeForAudit = request.scribeForAudit, - updateCodesAndReasons = true - ) - } - } yield () - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..b6911110756b449dc2987884150118437cbe4cd4 GIT binary patch literal 50025 zcmZ6SV~}XUvZdR$ZQHg_+jgI}ZQHhO+qP}nw&vXXVj||vpV|@iYe%lEs#ux%$x8u) zpa1{>Kmdefu&Y-q7RM(80su^a0RSNX+tm`bwQ(}Gane(Ew=;Isp>wmgYEG7s+Y~?u zx&1~>q30v;6oyBwIIyFzqlw27sm*-m&{(6tmIiu%o#F~tnU@a*ql?c@j-;^-qSno1T-RNMdV&AaYUkv9q0&R=1aAe&_=Q^pz zd;!)_9`&T8xr1a8d~|JV8AMjMcm|xK_G`nPce$xbZPul!5u@yFei0~vJqC!HA9W%fc({d^0zT>;eM+C^J1TQTVt)`-&T_9H9T zh&TQgCkcH&fr~ghM5T1uzl`V{MR0%Yk)MSBoX*Bn#I3Vwnp*}wswy6Mz#*d|4H)fgh|;!1_aSpFVQ6#)$m6I2+==O zfEN*x5-9#_?Jq2>GFFp0Y}31kMb?^m)Gm0t+@p_neB12Jt-waX3BmZG@wfheBcL@< ze>M%#wmx%2sW_{Xg9dKPWAIaS;zSu(B+L%n)X` zDVF4)2`M4UtcR!yBv5n^!x9{$P@eny)o98cob6~aVr{m-ZaURB12`ugB%!UkQ559=$QWEoS`fidA+yS#(K zzymT1D5NX8wy84hMO-^N*zeA|0P9r3w1&dKrC{dIUzb%01mr_(X}Rp!4i(prE-f8w z(K?d)@jLx(W3EH~ZkgmDPc`t#+Rld?b>%e;h0IQReY!Vi%uM=&QYx4Q@~1;$fu?7= z;H=U2SNsQa4Tt)T{T>A4!W2%Ia?w@z=WE~r`+w{5w7H3X`A-)s5C8y#|5q0SJG=kN zqC9D{$$-%HNe!ao6k!f7sDP0Wup&4wyp2_tkkz_0K_nRu($09`$CwUu+!vO(kW}_HTPvKAbRCe|2A}&EZ@AglcvBR7f}iP zU29h9UN+0iDt`EUp^=gd3nvC-@XZV|>0W70u^uLdE<=FLsNa1zWd>pa?dkN~@b?@s z&(vBAooA6);1Z9O?4&;MdXzdG4gla<=ToX4g zu_YbZw|>I*@rs=TCb9YfSRF9p;pp=uyAC-?z#M121ChjgW}Z*9ezLAo@_??2khf-p zoFoPJ(-0q<+KBQ-?etW5RZ~Y+D;hPI6${aYbU)aq9q`ze95l(27eij$Me_jv)eP$! zf$rX#@pSLqnHT!P6^z5Dtq~G0^%~OZdpv3q&%e!TH#M1WT5XqvJ2VSj#nVbIK6PmG z4}YmMv60`oCf_)YnP4R(Xmbm zb-m{^dK4DtF54Tp?`N8(+Ex|6V-@J)XK9zh2Ds>Zf;rRy#I_cp98lfZgX$5@w)c5; zYS{dn7~f0(*5LGg(e|e0Y!-@--FE}O3-&Gidx54o&i4&Hm#=*|qEC)xw+$9zo6}Ol z>mc)&ZRu?+dkeOeAEjbqQ!ml=vw87K=TR#J@hfB3!SaYdqX(M-T`4CMmL>94jy#>} zje->cGm1HHEc+J56|4L&ps(ZCsS2R)4`$>053C%#i`WFh=Z@=d^Q!is@5HSGUhg4t zKMaflXR0wJ)T3IML%bAVYwBC^fX_1=vNWuejHrEU?$+nD{+LEhM8jj6QU7EG!iE=% zR6${8Z2>a3lfUq(keYed?{zZT@G%iQYx&HQSJs0oQNkZ51z!#sAsIEGaS?iD_ks$VI~w#i z@;MyX+ie5+H(>gTzeGK?e>1j{jdq-0 z9PgD#oiK62(j`b@XZCjY98rnXG*c?nF*NDi%43$SRE@=8TeR=Gx_3H-AT`|@m}%xP zgj6UO&(hl%FGhnaBGkJMg2@QDZC?&wi^q`SwFico6&`|8vm(Bn|1^$!p9^zmGP=VY zvT%(sc4=T(q4TiG;o?EKsYSe!_5%|WHgB>{Du<5{-4CgqDAiHk(;qx)OAmdX?bgEQ z=JIv+aQV)_{V-7ePSiv^p@wEQ=t20kHQmxre}3*^_Ug39wzHv0Pc)m131O{+LVfMw zF#wuu^{|yh)ps})HUVF5yvHyW1$c9x+w{3pJ=)~@&tN&Ev@w8%Nx zUur0AnOQd-l9s}jZuf?}Y-dSr8UrE$?h0|W6cdMUbL>j{==?x&Uksr9b_XV1pir;Tkys+C#r=y9?R^`zB`y}?>b805W{jms$DoCD zDiJE}AZD6zO}nmLT8RzGs>EgwD)$i-8{J~Wry_}wAHPtcT0^C1qwIWT#AMHI&A70F zr56F`h_V+ksu3}E7jSN4SdyVJPD}_Zjn48GK2y$^$C!sPswxZWC05FBGY$d>#y5J$ zjX3d+;gU*xdz>J{K5&mCd1P)8AV8rQ$wp8cls?VsRVq{Z2SjE4^|`UFj|lBpeBTYDmFe+2j?7xPS-L zrP&yTVXBe>L}P&=IvX6li1(#Lk;Tl23fgXB?Bk$57SVw{3>p4{8WkCjE(10`&e#XTxA6qF%f4rL)?B>wOj!z^qR zcZ8al($@*S-0xv!_8i4W1@q~uT+h!(Wv>^q*UGPY#`7h)+zp3iTyZOs(B9MbMjbve;zcTPW^yY3(;1Uq#tB1TlYF2EY z@Om7kkzhE|EcV^wW}ncwG}?-!NtJubnM(dh2yAe(n40vPv>E64SqX1b1jcp{`qouE z=(g93nZFI6et6KL4(fS5^jKadN+HcHv6uO`)8+~JP8Sa21xZ)y=(Mc42y+)guD`Om z+&nvxmS+CQ&k^E>CFO}87NKUYXSoJ8uh|vnsVq1?R@yBlx0mxpr*{VT9mi!Nsc7AZ zQ6xavrd15$Q|4f+L2~SrsMg`1tDl8*YxNVp7V$#gRt;2>7xVm+IJ5(}@XT4je2kk$ zwJtw`aOBf4k45RuNvpIr4N#5~sLQ(DO`~oIH!^1#)DahOR~m)`s#zs-K6+ZzOmv=E z(SONPZ@5QOJocZfl#+rgkyF(=0*gN-R*r*`IB=8x@U4{#sI#!xIh5{rzw={{3T zH03;y>63=604{^G7I}BV{{G&n+%%llh&qFjKCF?xaz346bQV~*tWy)z3NQKg=Z)KH zZ4iG!VQ!C&<1?8w^S4J!P!VT8fv-ZO;Q=xDvwpd|{_|<@9Heeb_zlK}e(zdX=Pp=69IRj2q0geJ|{wPDbvpbNI6 zJ&(7(HhhfN)QL7N+hN-E*S?2aozc#SU_%ZfI&5SRdwbSgac_du}N-SJ(>kUg$8xP3Q;k(PrJ z4J!$7(Cv(i#%QG~_{yfC4&7r1qfE@gC*_8gwQx?L^)?wY$!NqHX|S4`F9E2AB{oyB zfP6VFiQmlcM>K26g~fYkJr1W~rMiWF3gjj)#rh5@Li{=*tlAx-JkP z4iQiJ)ezN6^7q#AIqJ=g{aTX+wnb^S9E_Hc>v7zHAIV!3G)p?A```A3dr^=6%ie@l zH7XTslXovK>e{GroLO{NE++_vm8*7gUQx^ z0qTx7&w@=<1_!oJhxn4x9`E{+@!K9o+8d^cuj-9)s^t2vKl8F`o=zIiM0J{U7!*>O z^cjn`o%p<;hbtH-H>JUoBtjey{R@_xFq?Z0fWJXcInI<&2ri5Sd`IIW6^Q zqnnt)b6?QO6lo=LY$-(wT-uR%j#I{=+%z_R^AbCRv#J9>){%S(9h7bHi3Y*LWktVa zZ$q<#>PMSRE)vQXo0i40FDz<|g+SOKuq3`3rDLctw}+sc-UTrCth6Oq;uZ6o=V2F= zr}w{B$sD~FGzVbEFbaSDhWX8?mtiv#$mL0hnovL>!)ElO*QvywaAzMJ5HpB76`89k z{K#7&nK^t1fd+vB3Tg!fZIBb$B7jqInmI{0xY95(X%O4)2?>&M&@G8w0sqYM^sxnD z>tITuKCHDuGo!<*C%OG$l$z+Ha4rX5t>o_wX;8e{^J`ANEOhKoOx5Usz=yT-WO#h(p*&7u~F`P8RQ%?~}LG{ux&%th*qGi7Dx^62+hylGHFew?fp`&zCV!tWF zh1TY*@dM{^g=1vr=4;|!iI}-9L^uKWS8w3Gxj={7;{Y@{&8NaD?czCXS75edv5+Jm z$f?l7Y zCuwMzvF#q!MTNSYM?WZ)L^BLACPy~@&JoCsd(2S93PiS27*SjggB^2TCY+Ukb<@YC z0c5CT5yJ(tbu=REzeDXm#7gmi&(&fHQh^jTT_H|R4wlrqzH?hX2Isx+!G8y%hR$_~ zFnoQg7+G%;gN`clAsbJ)aAWf_Jz^PO*$p%rk}04M(~N5Rz6Lq|yoAj}xx|ix{nb)`yo*XX82a{XCA= z0pb1Pa3s&cAb<&WV<%p|y7@RD*%~LONSF7m2uV>{W_J6r7647VlP!}x3!{Pt^A~Ygqu)^iS1)`y* z98J7|M|u(r@L51gqHqM<)^sE!SE@SOWC^bHbXCE6)V7xT7;VwPSw(0`uA48g2}NVW zpFO$hP_~XY9|LPD-(4>NbEm?g5qm~pwoZo6yq#2vJ~gx>bn*$xULhzkH-0rQrOKF% z#xh;md1=N<(p??XDS=H4WO}|k)gBsPI6kHU1zMa#r0g?4>Q|SYs!F|1liKP0x_^3j zc>DTzc>C4W<>%((?DFt&_kMa99zTaqLeTVdCJo~J68yki`)+yCHwXq3vN-8bzG$BS zi0st@>YDL?idKJ$0@j>^*4}QCXpN} z%LrQCd76oB4zmYQq%sB=BU6B<{k(eJ_Q!oG-P;57t10Jb?7E)6{e>mfjhadqzk^qt zyh{}))XM9pcIrcXxPVAJ6k%Ko7X)vsLG-a+HG$80-k_OdrJ0*yNYK!RX(6BbSlDdS z%AWqnv#nWT-`1!owG`sjCajP7r8r*aP7&eANSK zYx(5Vr3s`{sCioH#yHEQq8mHJD!F~V^b~_Ib_-e%H=?s4M|gop1uS3M0^+ANf324Z)<^3|QnNJH@+Own|)-m?w$bF3Wk`NlEQ?3FZ$80F7UnYJu0 zw8i-0QDtl|&p0-EGG3 zIUTqhQf$P3{EITHJRT6>&3YsUB59oCrsajBJ&{eQTrJhYVU?4h-M>qTUCl-x(e2=$ zo4=LyUV#bD$x0=SEsayN!fWmC(RuDuaM3X=35Ns7E@5TRoIQz`9HJ&|e8Ahz>;=O+ zg}n-F9>{OY_F3%%7spUBQrR~u1QM>;o3aB*$G+AXB{~dNHn^+>vyt&zmSI+zVh{kC z8T$GA4&*sC5}c8367B}yVmnELX2qaG0@?x;s-->=4QbVz1pP*u-VIH22|LHHQi0MM z!pXr=bJNe}caX9uK4-L|snWd8dB))nl_L`btAQQwWR zEx4pThf`4{rt#Qq+FhP{%7Yn3~Gk?yu(0b6@9sRIlsZj`+}I zDLU2fM)r;S{DTH7cKAR@ABv*NMu$k>F6eYzpa0>=dhL@$Japsas}s53}EpI2dkD*K8T(-8SCP2e^V$0klz!OR?3+ z5&fGA3H}(?Hgit~le~457998=j*$!OR&dMaw>5;57@NrU!s@}Tc@xIfQciSFoz4oM zRW;j|a#m$=(|j=kShSWpY-u~|D=P5&U6(Ez)XYFlvdIoI(5FSViW%j z>&CY}XL6xS0To@>0-k_70bYg;Jg^EU&q40O0SeJI=<#CZRoPoj1tv8iYDwMRDV>%1 zRftSABa-9%5wgEE%K29OoM7Srp}dFQWD5zv5JqKBOTkuSIhtf%qY<#JK;W^w^!!kX zx30D2)B9IFeXs|24p9$aSQsI$t_Gh?>c=2CtR|3HShsB&`^Y%L4ZiHD`i_VKii1Kg zXJ>Vd^+@2)TQ`rnU$AI9Ql@%4WEOxAVAt*LxKM}JEqC2ZgPl)T)K<4R5v6MuqoxR_ zf3KxDrI8>zSmfmD+}|@FTY)(p|8TP_PQ9+Tzm+3(cvn6;23 zG_%8o4~TyG#iPAor4gP9}n(>ip3p@u}wmys>6^r0f4hM}e=5cnjJdwtLg(TbXsW!NcGU z5}PmIHT0)3QvW8HaAZ7Wg3j>II|6x#OLJsqL@4nCQV>1gVcQj^H%?*MeCfR7#JRysSFiC>Jb~lq9{;~nUr!i zM+kre07{94dDq6+7>jDCSpThmxbu(*P6)AY;#@F#B+HldZlPzEh_adzS;vXVPnZU~ z`y%p!@C`hh{Aa^M64)ii)IScGhwfU;c|vMGPZ2w5_J=#admxH9a?+M7QV^>WRUf%3 zX`ig4$btg{z-}ZqsI*ad7c7lIXaFj6gIa*gG>dDMq``q*k6G-W^v#_)svKMA$WNY@ zJ}%vOBt}N!q6nwTnK?NuO41Y?vAT3zRz7Fg5GXh4|NnI&XfjH7Rn51DVk)5V=?w zo3)0HyDO)pRL+SU+N8n#h-mss)sIbOLj?r#Z+^{h)By?cHWtOS{Kg`dswGq|Tha8` z-8qqg{re7YDyLw5L2WA=g-5#4ZN|PK3??yxKspk#ClDk8Ce8!$jt2MXvy2E(BqJMc zk&x@Rm;{wqPjz)t$*l5W_?l?90k%zhJ0wJJUy;y@9LSg3@P44SVvHD#R@(1q&Wmxa zD`tim<&P+m9qqGP3=?t`shD!lLRAqZQL+gc?xL=YhJ&>k?yps}uRlJGo~)7+Vgq&Q ze>8!m-W=heTG%u=s1$Osqy=&U+Soq=zs{?;?4e15{Ib@Ai^aOQB@U%kc)t?zFI!t` zN0zry0GRW-g7bi9CCGJZvFP1699Mt@q5N#aqKu*9o0ZALKR>QVz&XpRb`0eU3&F~( zb@?ijt6eBgG`>YdJVuZ#E{Rtd;qixde1qW$FK@}sfg!NuM1^-}?k;ZFakdq+^Suos zfq&b5Tmi(epH;6h!{G`xIGzBDN}P@mwv&rN{io8`yb*Ep-DdxAU~g-?$=_-J)m$R% zIV+Aek+sC2p`>@?vb1rJ-r=UwEbNnb;}n{$TL$FA|9ZCOmV68h&5%7Z1$sDoRz5NK z*1CTPvW|mTkv)+=I00rC%@YoJW?~h<8>yfB00wxmB>;h=#_v2B6u(yAgBl9b_}mFh zNX>dg;9?j#&dY}|!i)o*iF5aa;8n-p`o(2w9W54dz)%rLa$DjQ)3m2MH?Vn1FEx^#kP%_yqEgG@#4@c zc&aAKsiLYSPXxXpxS-vQ_CUN^jOkh-ZNW^*5f;Qk>98Dwhd>BS%DOGeMW|1h;Bpkw z=dMktJe8#;U2OEMjUZ=c3D2FHPfpC^gr@)=!MK`@bC9Z+cXHMdNe|5{PUh}q8M7nR zW6-TipeU02nZdYA5L>UFG|p1odMntKbD3*pub^ZVD-)suY~QUL4;`ticaxOLcMDR# z!qCT62X)50AY5pUN4H!;6t;C^@aY(MMUKODj7W8`4#RGSW49` zb7YR9$Fy_FM%I_#%V{wvoEur&-6sKzst}A6!f4>M5fLPR%O~!@EH8on&h_=9k_UOj z`a(kqoGEfB)%f!`3+Dz_#5p(8Gz?@+a+6?9(zqL=Y4q>|5B1^z>kmp?n3~XZS^^e$ z?h@C{syXVwT=YC>IaD7WqAW|X$60$xouhCG!7j&TS4eagi-FS2%BqjIS^FzqhA(4) zna0dwCh$%rKpR1BhFHKWcXC!tE5EeG^9u~f!>SD~^p%2NR9k|r%~Qwe!yk2UIylcm z=JoT=nWVC1mplsOZVKd@NqD)7Xwo_OQ@y%d3%9>CTSvcs$99IE<|H*eQ#4hmiODeHQr8W&3)fI3>*QT;@#K= z#Ystx{W#($-e?;i&F!TwOI@Ss=3RMszC#|oo9x{$cu|YW(+nPvV zMs&1}(v>O}g3}otbW@wJIrp`<;Dsa2Q6>Lor7C>{8l1H3u#EI``&MX?_P^@UKmEWBgrxR&T0x-^ zVhbT#cDU;J#Uk=lZqPP2%WVPhxXcccZ)(sTHr_Ov-)!H8{O7Y5k*79zLrY-ukXf%L z9$<-^qHzflT*3Q$=c)~~B+>n!K7~_m#fL5m342Z^f3)D4oOWGdqXKI7t9?S`) z7M{)7%L)#)r%ttk8ktnp_&DQ(OQ?Mnd*>p`@V)(m{Vw4ZWSV3w@L4FpL`{Ut!+57_ zz!tlRXS@oEV@ue%IPE!(5#3gz=+}~VA&5O;X7}RQE!);{Fv1M*9A!IA5t@LgA+ab% z=AhmZN~t!DJD5JGS7Y`!5WottKyQ*8u>_8a%cpiQ#o!GAK3>wUTP9CZX8A&%q&Mdn zJi$Z%JQ2*iaU0l~3|3YpY_lHTVQQue!V`{UG*Q77i}GfC!QQ&N>sr6I zQ~$N!J>np=ACjt|`mToY8I5-(*@s1h(mI;+< z1Xs(ytH4R%xVRETIToyE!pPw?3M{ley(0V5k36tjujxIa+SAiBtA7$}@&*?~SrBl^ z=gQ!Ith=y41RI{O_PFb<*Hj7m(hS3hMs0|Hr9}3Q+syFI&Q9adFm%SOWE1fP2G$r( zCwIm|G9W`rlSH=0)V0eh!h%8fHEe@=jx<~8meACKHbXS+@WVsl`PyOS%%pQFcOU=} zkn=Onea&`|rL`f5B{R!syX8O<3(1zHeNMcI(*A36nd6gTK|;R?p-xl;c&25z^w1nosxiZ~hfE2hNq=aui`_D*i5b z9O}B|nngDCygZz$MkN3wmUuNulT8+a^kHbIya;mYVi5!UrQu*mifkW>O7?bHz=hy= zx9hd^>K{yKI&T3q8NH1@z{1{OcEocP&v2Z=x8@|0uoB3Xwwv2B=)H6R7CceedBTRe zgmzf`Y>5RNWRJn&@b)zSOyDJ0hH%`)G&Qce;CR$VVU8h8Luj*|)Vtq!fQ{KSc@bM@ zIKypQ$9D8g9mc^xsj~ro@~@lNO{y#NPBk zmNqGVIQwIQtQH;sA$57z097RT#+9{s64yd!ZXg<4zfBMF@9AWgy~v|y{$Zle6nfQl zhIc%^u4}LR`kpgQR}SB2#nP_J3QgWql1qu(04CDxA!b4BbgM;uYJiawzeE2`)g3sd**K8MkkySuKh@OA z#3sd^YHjS}aey3ZlZrcB>3gl;Bly9G1(ga**WO96zslCJL@81L$WFD&*3~Znx|YX? zDUOB4?VSo%ooR6JMe6t~1W)=~3gphK{9u$pMhA__lu2edsFa3{N8z?XI=}W+Pk!Gb zXF@uSk;iu;dWKoj{UxSdL1AQ{dAnbc6~vJ4C^+CQONv3q(nE0fLA9WDKk7u$vB)CN zJBGCutc7b8&GCgzY^Z_el|?F_80E@|k|Q`NITbdwVj4NYyz+%6+C&KEPsfDPaN?qf zr*ylgzl4*sBLTL$8#|@yDqcyyGkbR8(9FH-xXS+I$_xiAMQ~cV;+Kv;exZLMZV@0* zRM2EV>?qSqo}WU&d#bFTGa^3)B4IKF_GhxXAS`bjfw-VPZo3P5-~1IFiqAf#pfe6g z@gYk`KN1~C&>VWEj;w&H>w3eS>;s))u#KTKNoa+sjZ62Vr*_J&Fgg+t!$2zC+6-G6BN-=`i?BVr49MQFbh7k1U)6Eh>RzL z3%yl#Y#>-(E>$4}87+%cz(glt49zr9N3}?k*Up#Pb4v$k+>Q33;3zb?g54*F(vme< z*()Xv?oHGgLYuZ@iE1dSAoi!?%nb%48ia9omMidYMV`cflC)<3TG;RhLb$$cu6o9+ zGW=%+gB2wh^;w^Fs>Fp!+|j)f#4*Q|<4|X_C$ViDPzddvfM03;soR@SJDUkR+xg@6 zlbFzQmRhlaC-y@8^$~gqZrBxQZg>XqaWK}TG6$>>`)Vk`3I)I>(=~$VAZaxxAUGG1 zl&oos!W((sc$ObnE`s?T(P81zNuN#yIu6jVVU1K7+qO{K4;d1| z?x=Y(L?z85YX}uJ@f#2?HpS(0L5dCJl=KPy2Eo2T<#6yR`@`ZPcn=F?EK%0AvCVQA7~N=%{oly=v(N&T{TDuubFaQ?;ueg6 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 UrlPattern} -import com.twitter.twittertext.TwitterTextParser - -case class TweetBuilderResult( - tweet: Tweet, - user: User, - createdAt: Time, - sourceTweet: Option[Tweet] = None, - sourceUser: Option[User] = None, - parentUserId: Option[UserId] = None, - isSilentFail: Boolean = false, - geoSearchRequestId: Option[GeoSearchRequestId] = None, - initialTweetUpdateRequest: Option[InitialTweetUpdateRequest] = None) - -object TweetBuilder { - import GizmoduckUserCountsUpdatingStore.isUserTweet - import PostTweet._ - import Preprocessor._ - import TweetCreateState.{Spam => CreateStateSpam, _} - import TweetText._ - import UpstreamFailure._ - - type Type = FutureArrow[PostTweetRequest, TweetBuilderResult] - - val log: Logger = Logger(getClass) - - private[this] val _unitMutation = Future.value(Mutation.unit[Any]) - def MutationUnitFuture[T]: Future[Mutation[T]] = _unitMutation.asInstanceOf[Future[Mutation[T]]] - - case class MissingConversationId(inReplyToTweetId: TweetId) extends RuntimeException - - case class TextVisibility( - visibleTextRange: Option[TextRange], - totalTextDisplayLength: Offset.DisplayUnit, - visibleText: String) { - val isExtendedTweet: Boolean = totalTextDisplayLength.toInt > OriginalMaxDisplayLength - - /** - * Going forward we will be moving away from quoted-tweets urls in tweet text, but we - * have a backwards-compat layer in Tweetypie which adds the QT url to text to provide - * support for all clients to read in a backwards-compatible way until they upgrade. - * - * Tweets can become extended as their display length can go beyond 140 - * after adding the QT short url. Therefore, we are adding below function - * to account for legacy formatting during read-time and generate a self-permalink. - */ - def isExtendedWithExtraChars(extraChars: Int): Boolean = - totalTextDisplayLength.toInt > (OriginalMaxDisplayLength - extraChars) - } - - /** Max number of users that can be tagged on a single tweet */ - val MaxMediaTagCount = 10 - - val MobileWebApp = "oauth:49152" - val M2App = "oauth:3033294" - val M5App = "oauth:3033300" - - val TestRateLimitUserRole = "stresstest" - - /** - * The fields to fetch for the user creating the tweet. - */ - val userFields: Set[UserField] = - Set( - UserField.Profile, - UserField.ProfileDesign, - UserField.Account, - UserField.Safety, - UserField.Counts, - UserField.Roles, - UserField.UrlEntities, - UserField.Labels - ) - - /** - * The fields to fetch for the user of the source tweet in a retweet. - */ - val sourceUserFields: Set[UserField] = - userFields + UserField.View - - /** - * Converts repository exceptions into an API-compatible exception type - */ - def convertRepoExceptions[A]( - notFoundState: TweetCreateState, - failureHandler: Throwable => Throwable - ): PartialFunction[Throwable, Stitch[A]] = { - // stitch.NotFound is converted to the supplied TweetCreateState, wrapped in TweetCreateFailure - case NotFound => Stitch.exception(TweetCreateFailure.State(notFoundState)) - // OverCapacity exceptions should not be translated and should bubble up to the top - case ex: OverCapacity => Stitch.exception(ex) - // Other exceptions are wrapped in the supplied failureHandler - case ex => Stitch.exception(failureHandler(ex)) - } - - /** - * Adapts a UserRepository to a Repository for looking up a single user and that - * fails with an appropriate TweetCreateFailure if the user is not found. - */ - def userLookup(userRepo: UserRepository.Type): UserId => Stitch[User] = { - val opts = UserQueryOptions(queryFields = userFields, visibility = UserVisibility.All) - - userId => - userRepo(UserKey(userId), opts) - .rescue(convertRepoExceptions[User](UserNotFound, UserLookupFailure(_))) - } - - /** - * Adapts a UserRepository to a Repository for looking up a single user and that - * fails with an appropriate TweetCreateFailure if the user is not found. - */ - def sourceUserLookup(userRepo: UserRepository.Type): (UserId, UserId) => Stitch[User] = { - val opts = UserQueryOptions(queryFields = sourceUserFields, visibility = UserVisibility.All) - - (userId, forUserId) => - userRepo(UserKey(userId), opts.copy(forUserId = Some(forUserId))) - .rescue(convertRepoExceptions[User](SourceUserNotFound, UserLookupFailure(_))) - } - - /** - * Any fields that are loaded on the user via TweetBuilder/RetweetBuilder, but which should not - * be included on the user in the async-insert actions (such as hosebird) should be removed here. - * - * This will include perspectival fields that were loaded relative to the user creating the tweet. - */ - def scrubUserInAsyncInserts: User => User = - user => user.copy(view = None) - - /** - * Any fields that are loaded on the source user via TweetBuilder/RetweetBuilder, but which - * should not be included on the user in the async-insert actions (such as hosebird) should - * be removed here. - * - * This will include perspectival fields that were loaded relative to the user creating the tweet. - */ - def scrubSourceUserInAsyncInserts: User => User = - // currently the same as scrubUserInAsyncInserts, could be different in the future - scrubUserInAsyncInserts - - /** - * Any fields that are loaded on the source tweet via RetweetBuilder, but which should not be - * included on the source tweetypie in the async-insert actions (such as hosebird) should - * be removed here. - * - * This will include perspectival fields that were loaded relative to the user creating the tweet. - */ - def scrubSourceTweetInAsyncInserts: Tweet => Tweet = - tweet => tweet.copy(perspective = None, cards = None, card2 = None) - - /** - * Adapts a DeviceSource to a Repository for looking up a single device-source and that - * fails with an appropriate TweetCreateFailure if not found. - */ - def deviceSourceLookup(devSrcRepo: DeviceSourceRepository.Type): DeviceSourceRepository.Type = - appIdStr => { - val result: Stitch[DeviceSource] = - if (DeviceSourceParser.isValid(appIdStr)) { - devSrcRepo(appIdStr) - } else { - Stitch.exception(NotFound) - } - - result.rescue(convertRepoExceptions(DeviceSourceNotFound, DeviceSourceLookupFailure(_))) - } - - /** - * Checks: - * - that we have all the user fields we need - * - that the user is active - * - that they are not a frictionless follower account - */ - def validateUser(user: User): Future[Unit] = - if (user.safety.isEmpty) - Future.exception(UserSafetyEmptyException) - else if (user.profile.isEmpty) - Future.exception(UserProfileEmptyException) - else if (user.safety.get.deactivated) - Future.exception(TweetCreateFailure.State(UserDeactivated)) - else if (user.safety.get.suspended) - Future.exception(TweetCreateFailure.State(UserSuspended)) - else if (user.labels.exists(_.labels.exists(_.labelValue == LabelValue.ReadOnly))) - Future.exception(TweetCreateFailure.State(CreateStateSpam)) - else if (user.userType == UserType.Frictionless) - Future.exception(TweetCreateFailure.State(UserNotFound)) - else if (user.userType == UserType.Soft) - Future.exception(TweetCreateFailure.State(UserNotFound)) - else if (user.safety.get.accessPolicy == AccessPolicy.BounceAll || - user.safety.get.accessPolicy == AccessPolicy.BounceAllPublicWrites) - Future.exception(TweetCreateFailure.State(UserReadonly)) - else - Future.Unit - - def validateCommunityReply( - communities: Option[Communities], - replyResult: Option[ReplyBuilder.Result] - ): Future[Unit] = { - - if (replyResult.flatMap(_.reply.inReplyToStatusId).nonEmpty) { - val rootCommunities = replyResult.flatMap(_.community) - val rootCommunityIds = CommunityUtil.communityIds(rootCommunities) - val replyCommunityIds = CommunityUtil.communityIds(communities) - - if (rootCommunityIds == replyCommunityIds) { - Future.Unit - } else { - Future.exception(TweetCreateFailure.State(CommunityReplyTweetNotAllowed)) - } - } else { - Future.Unit - } - } - - // Project requirements do not allow exclusive tweets to be replies. - // All exclusive tweets must be root tweets. - def validateExclusiveTweetNotReplies( - exclusiveTweetControls: Option[ExclusiveTweetControl], - replyResult: Option[ReplyBuilder.Result] - ): Future[Unit] = { - val isInReplyToTweet = replyResult.exists(_.reply.inReplyToStatusId.isDefined) - if (exclusiveTweetControls.isDefined && isInReplyToTweet) { - Future.exception(TweetCreateFailure.State(SuperFollowsInvalidParams)) - } else { - Future.Unit - } - } - - // Invalid parameters for Exclusive Tweets: - // - Community field set # Tweets can not be both at the same time. - def validateExclusiveTweetParams( - exclusiveTweetControls: Option[ExclusiveTweetControl], - communities: Option[Communities] - ): Future[Unit] = { - if (exclusiveTweetControls.isDefined && CommunityUtil.hasCommunity(communities)) { - Future.exception(TweetCreateFailure.State(SuperFollowsInvalidParams)) - } else { - Future.Unit - } - } - - def validateTrustedFriendsNotReplies( - trustedFriendsControl: Option[TrustedFriendsControl], - replyResult: Option[ReplyBuilder.Result] - ): Future[Unit] = { - val isInReplyToTweet = replyResult.exists(_.reply.inReplyToStatusId.isDefined) - if (trustedFriendsControl.isDefined && isInReplyToTweet) { - Future.exception(TweetCreateFailure.State(TrustedFriendsInvalidParams)) - } else { - Future.Unit - } - } - - def validateTrustedFriendsParams( - trustedFriendsControl: Option[TrustedFriendsControl], - conversationControl: Option[TweetCreateConversationControl], - communities: Option[Communities], - exclusiveTweetControl: Option[ExclusiveTweetControl] - ): Future[Unit] = { - if (trustedFriendsControl.isDefined && - (conversationControl.isDefined || CommunityUtil.hasCommunity( - communities) || exclusiveTweetControl.isDefined)) { - Future.exception(TweetCreateFailure.State(TrustedFriendsInvalidParams)) - } else { - Future.Unit - } - } - - /** - * Checks the weighted tweet text length using twitter-text, as used by clients. - * This should ensure that any tweet the client deems valid will also be deemed - * valid by Tweetypie. - */ - def prevalidateTextLength(text: String, stats: StatsReceiver): Future[Unit] = { - val twitterTextConfig = TwitterTextParser.TWITTER_TEXT_DEFAULT_CONFIG - val twitterTextResult = TwitterTextParser.parseTweet(text, twitterTextConfig) - val textTooLong = !twitterTextResult.isValid && text.length > 0 - - Future.when(textTooLong) { - val weightedLength = twitterTextResult.weightedLength - log.debug( - s"Weighted length too long. weightedLength: $weightedLength" + - s", Tweet text: '${diffshow.show(text)}'" - ) - stats.counter("check_weighted_length/text_too_long").incr() - Future.exception(TweetCreateFailure.State(TextTooLong)) - } - } - - /** - * Checks that the tweet text is neither blank nor too long. - */ - def validateTextLength( - text: String, - visibleText: String, - replyResult: Option[ReplyBuilder.Result], - stats: StatsReceiver - ): Future[Unit] = { - val utf8Length = Offset.Utf8.length(text) - - def visibleTextTooLong = - Offset.DisplayUnit.length(visibleText) > Offset.DisplayUnit(MaxVisibleWeightedEmojiLength) - - def utf8LengthTooLong = - utf8Length > Offset.Utf8(MaxUtf8Length) - - if (isBlank(text)) { - stats.counter("validate_text_length/text_cannot_be_blank").incr() - Future.exception(TweetCreateFailure.State(TextCannotBeBlank)) - } else if (replyResult.exists(_.replyTextIsEmpty(text))) { - stats.counter("validate_text_length/reply_text_cannot_be_blank").incr() - Future.exception(TweetCreateFailure.State(TextCannotBeBlank)) - } else if (visibleTextTooLong) { - // Final check that visible text does not exceed MaxVisibleWeightedEmojiLength - // characters. - // prevalidateTextLength() does some portion of validation as well, most notably - // weighted length on raw, unescaped text. - stats.counter("validate_text_length/text_too_long.visible_length_explicit").incr() - log.debug( - s"Explicit MaxVisibleWeightedLength visible length check failed. " + - s"visibleText: '${diffshow.show(visibleText)}' and " + - s"total text: '${diffshow.show(text)}'" - ) - Future.exception(TweetCreateFailure.State(TextTooLong)) - } else if (utf8LengthTooLong) { - stats.counter("validate_text_length/text_too_long.utf8_length").incr() - Future.exception(TweetCreateFailure.State(TextTooLong)) - } else { - stats.stat("validate_text_length/utf8_length").add(utf8Length.toInt) - Future.Unit - } - } - - def getTextVisibility( - text: String, - replyResult: Option[ReplyBuilder.Result], - urlEntities: Seq[UrlEntity], - mediaEntities: Seq[MediaEntity], - attachmentUrl: Option[String] - ): TextVisibility = { - val totalTextLength = Offset.CodePoint.length(text) - val totalTextDisplayLength = Offset.DisplayUnit.length(text) - - /** - * visibleEnd for multiple scenarios: - * - * normal tweet + media - fromIndex of mediaEntity (hydrated from last media permalink) - * quote tweet + media - fromIndex of mediaEntity - * replies + media - fromIndex of mediaEntity - * normal quote tweet - total text length (visible text range will be None) - * tweets with other attachments (DM deep links) - * fromIndex of the last URL entity - */ - val visibleEnd = mediaEntities.headOption - .map(_.fromIndex) - .orElse(attachmentUrl.flatMap(_ => urlEntities.lastOption).map(_.fromIndex)) - .map(from => (from - 1).max(0)) // for whitespace, unless there is none - .map(Offset.CodePoint(_)) - .getOrElse(totalTextLength) - - val visibleStart = replyResult match { - case Some(rr) => rr.visibleStart.min(visibleEnd) - case None => Offset.CodePoint(0) - } - - if (visibleStart.toInt == 0 && visibleEnd == totalTextLength) { - TextVisibility( - visibleTextRange = None, - totalTextDisplayLength = totalTextDisplayLength, - visibleText = text - ) - } else { - val charFrom = visibleStart.toCodeUnit(text) - val charTo = charFrom.offsetByCodePoints(text, visibleEnd - visibleStart) - val visibleText = text.substring(charFrom.toInt, charTo.toInt) - - TextVisibility( - visibleTextRange = Some(TextRange(visibleStart.toInt, visibleEnd.toInt)), - totalTextDisplayLength = totalTextDisplayLength, - visibleText = visibleText - ) - } - } - - def isValidHashtag(entity: HashtagEntity): Boolean = - TweetText.codePointLength(entity.text) <= TweetText.MaxHashtagLength - - /** - * Validates that the number of various entities are within the limits, and the - * length of hashtags are with the limit. - */ - def validateEntities(tweet: Tweet): Future[Unit] = - if (getMentions(tweet).length > TweetText.MaxMentions) - Future.exception(TweetCreateFailure.State(MentionLimitExceeded)) - else if (getUrls(tweet).length > TweetText.MaxUrls) - Future.exception(TweetCreateFailure.State(UrlLimitExceeded)) - else if (getHashtags(tweet).length > TweetText.MaxHashtags) - Future.exception(TweetCreateFailure.State(HashtagLimitExceeded)) - else if (getCashtags(tweet).length > TweetText.MaxCashtags) - Future.exception(TweetCreateFailure.State(CashtagLimitExceeded)) - else if (getHashtags(tweet).exists(e => !isValidHashtag(e))) - Future.exception(TweetCreateFailure.State(HashtagLengthLimitExceeded)) - else - Future.Unit - - /** - * Update the user to what it should look like after the tweet is created - */ - def updateUserCounts(hasMedia: Tweet => Boolean): (User, Tweet) => Future[User] = - (user: User, tweet: Tweet) => { - val countAsUserTweet = isUserTweet(tweet) - val tweetsDelta = if (countAsUserTweet) 1 else 0 - val mediaTweetsDelta = if (countAsUserTweet && hasMedia(tweet)) 1 else 0 - - Future.value( - user.copy( - counts = user.counts.map { counts => - counts.copy( - tweets = counts.tweets + tweetsDelta, - mediaTweets = counts.mediaTweets.map(_ + mediaTweetsDelta) - ) - } - ) - ) - } - - def validateAdditionalFields[R](implicit view: RequestView[R]): FutureEffect[R] = - FutureEffect[R] { req => - view - .additionalFields(req) - .map(tweet => - unsettableAdditionalFieldIds(tweet) ++ rejectedAdditionalFieldIds(tweet)) match { - case Some(unsettableFieldIds) if unsettableFieldIds.nonEmpty => - Future.exception( - TweetCreateFailure.State( - InvalidAdditionalField, - Some(unsettableAdditionalFieldIdsErrorMessage(unsettableFieldIds)) - ) - ) - case _ => Future.Unit - } - } - - def validateTweetMediaTags( - stats: StatsReceiver, - getUserMediaTagRateLimit: RateLimitChecker.GetRemaining, - userRepo: UserRepository.Optional - ): (Tweet, Boolean) => Future[Mutation[Tweet]] = { - val userRepoWithStats: UserRepository.Optional = - (userKey, queryOptions) => - userRepo(userKey, queryOptions).liftToTry.map { - case Return(res @ Some(_)) => - stats.counter("found").incr() - res - case Return(None) => - stats.counter("not_found").incr() - None - case Throw(_) => - stats.counter("failed").incr() - None - } - - (tweet: Tweet, dark: Boolean) => { - val mediaTags = getMediaTagMap(tweet) - - if (mediaTags.isEmpty) { - MutationUnitFuture - } else { - getUserMediaTagRateLimit((getUserId(tweet), dark)).flatMap { remainingMediaTagCount => - val maxMediaTagCount = math.min(remainingMediaTagCount, MaxMediaTagCount) - - val taggedUserIds = - mediaTags.values.flatten.toSeq.collect { - case MediaTag(MediaTagType.User, Some(userId), _, _) => userId - }.distinct - - val droppedTagCount = taggedUserIds.size - maxMediaTagCount - if (droppedTagCount > 0) stats.counter("over_limit_tags").incr(droppedTagCount) - - val userQueryOpts = - UserQueryOptions( - queryFields = Set(UserField.MediaView), - visibility = UserVisibility.MediaTaggable, - forUserId = Some(getUserId(tweet)) - ) - - val keys = taggedUserIds.take(maxMediaTagCount).map(UserKey.byId) - val keyOpts = keys.map((_, userQueryOpts)) - - Stitch.run { - Stitch - .traverse(keyOpts)(userRepoWithStats.tupled) - .map(_.flatten) - .map { users => - val userMap = users.map(u => u.id -> u).toMap - val mediaTagsMutation = - Mutation[Seq[MediaTag]] { mediaTags => - val validMediaTags = - mediaTags.filter { - case MediaTag(MediaTagType.User, Some(userId), _, _) => - userMap.get(userId).exists(_.mediaView.exists(_.canMediaTag)) - case _ => false - } - val invalidCount = mediaTags.size - validMediaTags.size - - if (invalidCount != 0) { - stats.counter("invalid").incr(invalidCount) - Some(validMediaTags) - } else { - None - } - } - TweetLenses.mediaTagMap.mutation(mediaTagsMutation.liftMapValues) - } - } - } - } - } - } - - def validateCommunityMembership( - communityMembershipRepository: StratoCommunityMembershipRepository.Type, - communityAccessRepository: StratoCommunityAccessRepository.Type, - communities: Option[Communities] - ): Future[Unit] = - communities match { - case Some(Communities(Seq(communityId))) => - Stitch - .run { - communityMembershipRepository(communityId).flatMap { - case true => Stitch.value(None) - case false => - communityAccessRepository(communityId).map { - case Some(CommunityAccess.Public) | Some(CommunityAccess.Closed) => - Some(TweetCreateState.CommunityUserNotAuthorized) - case Some(CommunityAccess.Private) | None => - Some(TweetCreateState.CommunityNotFound) - } - } - }.flatMap { - case None => - Future.Done - case Some(tweetCreateState) => - Future.exception(TweetCreateFailure.State(tweetCreateState)) - } - case Some(Communities(communities)) if communities.length > 1 => - // Not allowed to specify more than one community ID. - Future.exception(TweetCreateFailure.State(TweetCreateState.InvalidAdditionalField)) - case _ => Future.Done - } - - private[this] val CardUriSchemeRegex = "(?i)^(?:card|tombstone):".r - - /** - * Is the given String a URI that is allowed as a card reference - * without a matching URL in the text? - */ - def hasCardsUriScheme(uri: String): Boolean = - CardUriSchemeRegex.findPrefixMatchOf(uri).isDefined - - val InvalidAdditionalFieldEmptyUrlEntities: TweetCreateFailure.State = - TweetCreateFailure.State( - TweetCreateState.InvalidAdditionalField, - Some("url entities are empty") - ) - - val InvalidAdditionalFieldNonMatchingUrlAndShortUrl: TweetCreateFailure.State = - TweetCreateFailure.State( - TweetCreateState.InvalidAdditionalField, - Some("non-matching url and short url") - ) - - val InvalidAdditionalFieldInvalidUri: TweetCreateFailure.State = - TweetCreateFailure.State( - TweetCreateState.InvalidAdditionalField, - Some("invalid URI") - ) - - val InvalidAdditionalFieldInvalidCardUri: TweetCreateFailure.State = - TweetCreateFailure.State( - TweetCreateState.InvalidAdditionalField, - Some("invalid card URI") - ) - - type CardReferenceBuilder = - (Tweet, UrlShortener.Context) => Future[Mutation[Tweet]] - - def cardReferenceBuilder( - cardReferenceValidator: CardReferenceValidationHandler.Type, - urlShortener: UrlShortener.Type - ): CardReferenceBuilder = - (tweet, urlShortenerCtx) => { - getCardReference(tweet) match { - case Some(CardReference(uri)) => - for { - cardUri <- - if (hasCardsUriScheme(uri)) { - // This is an explicit card references that does not - // need a corresponding URL in the text. - Future.value(uri) - } else if (UrlPattern.matcher(uri).matches) { - // The card reference is being used to specify which URL - // card to show. We need to verify that the URL is - // actually in the tweet text, or it can be effectively - // used to bypass the tweet length limit. - val urlEntities = getUrls(tweet) - - if (urlEntities.isEmpty) { - // Fail fast if there can't possibly be a matching URL entity - Future.exception(InvalidAdditionalFieldEmptyUrlEntities) - } else { - // Look for the URL in the expanded URL entities. If - // it is present, then map it to the t.co shortened - // version of the URL. - urlEntities - .collectFirst { - case urlEntity if urlEntity.expanded.exists(_ == uri) => - Future.value(urlEntity.url) - } - .getOrElse { - // The URL may have been altered when it was - // returned from Talon, such as expanding a pasted - // t.co link. In this case, we t.co-ize the link and - // make sure that the corresponding t.co is present - // as a URL entity. - urlShortener((uri, urlShortenerCtx)).flatMap { shortened => - if (urlEntities.exists(_.url == shortened.shortUrl)) { - Future.value(shortened.shortUrl) - } else { - Future.exception(InvalidAdditionalFieldNonMatchingUrlAndShortUrl) - } - } - } - } - } else { - Future.exception(InvalidAdditionalFieldInvalidUri) - } - - validatedCardUri <- cardReferenceValidator((getUserId(tweet), cardUri)).rescue { - case CardReferenceValidationFailedException => - Future.exception(InvalidAdditionalFieldInvalidCardUri) - } - } yield { - TweetLenses.cardReference.mutation( - Mutation[CardReference] { cardReference => - Some(cardReference.copy(cardUri = validatedCardUri)) - }.checkEq.liftOption - ) - } - - case None => - MutationUnitFuture - } - } - - def filterInvalidData( - validateTweetMediaTags: (Tweet, Boolean) => Future[Mutation[Tweet]], - cardReferenceBuilder: CardReferenceBuilder - ): (Tweet, PostTweetRequest, UrlShortener.Context) => Future[Tweet] = - (tweet: Tweet, request: PostTweetRequest, urlShortenerCtx: UrlShortener.Context) => { - Future - .join( - validateTweetMediaTags(tweet, request.dark), - cardReferenceBuilder(tweet, urlShortenerCtx) - ) - .map { - case (mediaMutation, cardRefMutation) => - mediaMutation.also(cardRefMutation).endo(tweet) - } - } - - def apply( - stats: StatsReceiver, - validateRequest: PostTweetRequest => Future[Unit], - validateEdit: EditValidator.Type, - validateUser: User => Future[Unit] = TweetBuilder.validateUser, - validateUpdateRateLimit: RateLimitChecker.Validate, - tweetIdGenerator: TweetIdGenerator, - userRepo: UserRepository.Type, - deviceSourceRepo: DeviceSourceRepository.Type, - communityMembershipRepo: StratoCommunityMembershipRepository.Type, - communityAccessRepo: StratoCommunityAccessRepository.Type, - urlShortener: UrlShortener.Type, - urlEntityBuilder: UrlEntityBuilder.Type, - geoBuilder: GeoBuilder.Type, - replyBuilder: ReplyBuilder.Type, - mediaBuilder: MediaBuilder.Type, - attachmentBuilder: AttachmentBuilder.Type, - duplicateTweetFinder: DuplicateTweetFinder.Type, - spamChecker: Spam.Checker[TweetSpamRequest], - filterInvalidData: (Tweet, PostTweetRequest, UrlShortener.Context) => Future[Tweet], - updateUserCounts: (User, Tweet) => Future[User], - validateConversationControl: ConversationControlBuilder.Validate.Type, - conversationControlBuilder: ConversationControlBuilder.Type, - validateTweetWrite: TweetWriteValidator.Type, - nudgeBuilder: NudgeBuilder.Type, - communitiesValidator: CommunitiesValidator.Type, - collabControlBuilder: CollabControlBuilder.Type, - editControlBuilder: EditControlBuilder.Type, - featureSwitches: FeatureSwitches - ): TweetBuilder.Type = { - val entityExtractor = EntityExtractor.mutationWithoutUrls.endo - val getUser = userLookup(userRepo) - val getDeviceSource = deviceSourceLookup(deviceSourceRepo) - - // create a tco of the permalink for given a tweetId - val permalinkShortener = (tweetId: TweetId, ctx: UrlShortener.Context) => - urlShortener((s"https://twitter.com/i/web/status/$tweetId", ctx)).rescue { - // propagate OverCapacity - case e: OverCapacity => Future.exception(e) - // convert any other failure into UrlShorteningFailure - case e => Future.exception(UrlShorteningFailure(e)) - } - - def extractGeoSearchRequestId(tweetGeoOpt: Option[TweetCreateGeo]): Option[GeoSearchRequestId] = - for { - tweetGeo <- tweetGeoOpt - geoSearchRequestId <- tweetGeo.geoSearchRequestId - } yield GeoSearchRequestId(geoSearchRequestId.id) - - def featureSwitchResults(user: User, stats: StatsReceiver): Option[FeatureSwitchResults] = - TwitterContext() - .flatMap { viewer => - UserViewerRecipient(user, viewer, stats) - }.map { recipient => - featureSwitches.matchRecipient(recipient) - } - - FutureArrow { request => - for { - () <- validateRequest(request) - - (tweetId, user, devsrc) <- Future.join( - tweetIdGenerator().rescue { case t => Future.exception(SnowflakeFailure(t)) }, - Stitch.run(getUser(request.userId)), - Stitch.run(getDeviceSource(request.createdVia)) - ) - - () <- validateUser(user) - () <- validateUpdateRateLimit((user.id, request.dark)) - - // Feature Switch results are calculated once and shared between multiple builders - matchedResults = featureSwitchResults(user, stats) - - () <- validateConversationControl( - ConversationControlBuilder.Validate.Request( - matchedResults = matchedResults, - conversationControl = request.conversationControl, - inReplyToTweetId = request.inReplyToTweetId - ) - ) - - // strip illegal chars, normalize newlines, collapse blank lines, etc. - text = preprocessText(request.text) - - () <- prevalidateTextLength(text, stats) - - attachmentResult <- attachmentBuilder( - AttachmentBuilderRequest( - tweetId = tweetId, - user = user, - mediaUploadIds = request.mediaUploadIds, - cardReference = request.additionalFields.flatMap(_.cardReference), - attachmentUrl = request.attachmentUrl, - remoteHost = request.remoteHost, - darkTraffic = request.dark, - deviceSource = devsrc - ) - ) - - // updated text with appended attachment url, if any. - text <- Future.value( - attachmentResult.attachmentUrl match { - case None => text - case Some(url) => s"$text $url" - } - ) - - spamResult <- spamChecker( - TweetSpamRequest( - tweetId = tweetId, - userId = request.userId, - text = text, - mediaTags = request.additionalFields.flatMap(_.mediaTags), - safetyMetaData = request.safetyMetaData, - inReplyToTweetId = request.inReplyToTweetId, - quotedTweetId = attachmentResult.quotedTweet.map(_.tweetId), - quotedTweetUserId = attachmentResult.quotedTweet.map(_.userId) - ) - ) - - safety = user.safety.get - createdAt = SnowflakeId(tweetId).time - - urlShortenerCtx = UrlShortener.Context( - tweetId = tweetId, - userId = user.id, - createdAt = createdAt, - userProtected = safety.isProtected, - clientAppId = devsrc.clientAppId, - remoteHost = request.remoteHost, - dark = request.dark - ) - - replyRequest = ReplyBuilder.Request( - authorId = request.userId, - authorScreenName = user.profile.map(_.screenName).get, - inReplyToTweetId = request.inReplyToTweetId, - tweetText = text, - prependImplicitMentions = request.autoPopulateReplyMetadata, - enableTweetToNarrowcasting = request.enableTweetToNarrowcasting, - excludeUserIds = request.excludeReplyUserIds.getOrElse(Nil), - spamResult = spamResult, - batchMode = request.transientContext.flatMap(_.batchCompose) - ) - - replyResult <- replyBuilder(replyRequest) - replyOpt = replyResult.map(_.reply) - - replyConversationId <- replyResult match { - case Some(r) if r.reply.inReplyToStatusId.nonEmpty => - r.conversationId match { - case None => - // Throw this specific exception to make it easier to - // count how often we hit this corner case. - Future.exception(MissingConversationId(r.reply.inReplyToStatusId.get)) - case conversationIdOpt => Future.value(conversationIdOpt) - } - case _ => Future.value(None) - } - - // Validate that the current user can reply to this conversation, based on - // the conversation's ConversationControl. - // Note: currently we only validate conversation controls access on replies, - // therefore we use the conversationId from the inReplyToStatus. - // Validate that the exclusive tweet control option is only used by allowed users. - () <- validateTweetWrite( - TweetWriteValidator.Request( - replyConversationId, - request.userId, - request.exclusiveTweetControlOptions, - replyResult.flatMap(_.exclusiveTweetControl), - request.trustedFriendsControlOptions, - replyResult.flatMap(_.trustedFriendsControl), - attachmentResult.quotedTweet, - replyResult.flatMap(_.reply.inReplyToStatusId), - replyResult.flatMap(_.editControl), - request.editOptions - ) - ) - - convoId = replyConversationId match { - case Some(replyConvoId) => replyConvoId - case None => - // This is a root tweet, so the tweet id is the conversation id. - tweetId - } - - () <- nudgeBuilder( - NudgeBuilderRequest( - text = text, - inReplyToTweetId = replyOpt.flatMap(_.inReplyToStatusId), - conversationId = if (convoId == tweetId) None else Some(convoId), - hasQuotedTweet = attachmentResult.quotedTweet.nonEmpty, - nudgeOptions = request.nudgeOptions, - tweetId = Some(tweetId), - ) - ) - - // updated text with implicit reply mentions inserted, if any - text <- Future.value( - replyResult.map(_.tweetText).getOrElse(text) - ) - - // updated text with urls replaced with t.cos - ((text, urlEntities), (geoCoords, placeIdOpt)) <- Future.join( - urlEntityBuilder((text, urlShortenerCtx)) - .map { - case (text, urlEntities) => - UrlEntityBuilder.updateTextAndUrls(text, urlEntities)(partialHtmlEncode) - }, - if (request.geo.isEmpty) - Future.value((None, None)) - else - geoBuilder( - GeoBuilder.Request( - request.geo.get, - user.account.map(_.geoEnabled).getOrElse(false), - user.account.map(_.language).getOrElse("en") - ) - ).map(r => (r.geoCoordinates, r.placeId)) - ) - - // updated text with trailing media url - MediaBuilder.Result(text, mediaEntities, mediaKeys) <- - request.mediaUploadIds.getOrElse(Nil) match { - case Nil => Future.value(MediaBuilder.Result(text, Nil, Nil)) - case ids => - mediaBuilder( - MediaBuilder.Request( - mediaUploadIds = ids, - text = text, - tweetId = tweetId, - userId = user.id, - userScreenName = user.profile.get.screenName, - isProtected = user.safety.get.isProtected, - createdAt = createdAt, - dark = request.dark, - productMetadata = request.mediaMetadata.map(_.toMap) - ) - ) - } - - () <- Future.when(!request.dark) { - val reqInfo = - DuplicateTweetFinder.RequestInfo.fromPostTweetRequest(request, text) - - duplicateTweetFinder(reqInfo).flatMap { - case None => Future.Unit - case Some(duplicateId) => - log.debug(s"timeline_duplicate_check_failed:$duplicateId") - Future.exception(TweetCreateFailure.State(TweetCreateState.Duplicate)) - } - } - - textVisibility = getTextVisibility( - text = text, - replyResult = replyResult, - urlEntities = urlEntities, - mediaEntities = mediaEntities, - attachmentUrl = attachmentResult.attachmentUrl - ) - - () <- validateTextLength( - text = text, - visibleText = textVisibility.visibleText, - replyResult = replyResult, - stats = stats - ) - - communities = - request.additionalFields - .flatMap(CommunityAnnotation.additionalFieldsToCommunityIDs) - .map(ids => Communities(communityIds = ids)) - - rootExclusiveControls = request.exclusiveTweetControlOptions.map { _ => - ExclusiveTweetControl(request.userId) - } - - () <- validateExclusiveTweetNotReplies(rootExclusiveControls, replyResult) - () <- validateExclusiveTweetParams(rootExclusiveControls, communities) - - replyExclusiveControls = replyResult.flatMap(_.exclusiveTweetControl) - - // The userId is pulled off of the request rather than being supplied - // via the ExclusiveTweetControlOptions because additional fields - // can be set by clients to contain any value they want. - // This could include userIds that don't match their actual userId. - // Only one of replyResult or request.exclusiveTweetControlOptions will be defined. - exclusiveTweetControl = replyExclusiveControls.orElse(rootExclusiveControls) - - rootTrustedFriendsControl = request.trustedFriendsControlOptions.map { options => - TrustedFriendsControl(options.trustedFriendsListId) - } - - () <- validateTrustedFriendsNotReplies(rootTrustedFriendsControl, replyResult) - () <- validateTrustedFriendsParams( - rootTrustedFriendsControl, - request.conversationControl, - communities, - exclusiveTweetControl - ) - - replyTrustedFriendsControl = replyResult.flatMap(_.trustedFriendsControl) - - trustedFriendsControl = replyTrustedFriendsControl.orElse(rootTrustedFriendsControl) - - collabControl <- collabControlBuilder( - CollabControlBuilder.Request( - collabControlOptions = request.collabControlOptions, - replyResult = replyResult, - communities = communities, - trustedFriendsControl = trustedFriendsControl, - conversationControl = request.conversationControl, - exclusiveTweetControl = exclusiveTweetControl, - userId = request.userId - )) - - isCollabInvitation = collabControl.isDefined && (collabControl.get match { - case CollabControl.CollabInvitation(_: CollabInvitation) => true - case _ => false - }) - - coreData = TweetCoreData( - userId = request.userId, - text = text, - createdAtSecs = createdAt.inSeconds, - createdVia = devsrc.internalName, - reply = replyOpt, - hasTakedown = safety.hasTakedown, - // We want to nullcast community tweets and CollabInvitations - // This will disable tweet fanout to followers' home timelines, - // and filter the tweets from appearing from the tweeter's profile - // or search results for the tweeter's tweets. - nullcast = - request.nullcast || CommunityUtil.hasCommunity(communities) || isCollabInvitation, - narrowcast = request.narrowcast, - nsfwUser = request.possiblySensitive.getOrElse(safety.nsfwUser), - nsfwAdmin = safety.nsfwAdmin, - trackingId = request.trackingId, - placeId = placeIdOpt, - coordinates = geoCoords, - conversationId = Some(convoId), - // Set hasMedia to true if we know that there is media, - // and leave it unknown if not, so that it will be - // correctly set for pasted media. - hasMedia = if (mediaEntities.nonEmpty) Some(true) else None - ) - - tweet = Tweet( - id = tweetId, - coreData = Some(coreData), - urls = Some(urlEntities), - media = Some(mediaEntities), - mediaKeys = if (mediaKeys.nonEmpty) Some(mediaKeys) else None, - contributor = getContributor(request.userId), - visibleTextRange = textVisibility.visibleTextRange, - selfThreadMetadata = replyResult.flatMap(_.selfThreadMetadata), - directedAtUserMetadata = replyResult.map(_.directedAtMetadata), - composerSource = request.composerSource, - quotedTweet = attachmentResult.quotedTweet, - exclusiveTweetControl = exclusiveTweetControl, - trustedFriendsControl = trustedFriendsControl, - collabControl = collabControl, - noteTweet = request.noteTweetOptions.map(options => - NoteTweet(options.noteTweetId, options.isExpandable)) - ) - - editControl <- editControlBuilder( - EditControlBuilder.Request( - postTweetRequest = request, - tweet = tweet, - matchedResults = matchedResults - ) - ) - - tweet <- Future.value(tweet.copy(editControl = editControl)) - - tweet <- Future.value(entityExtractor(tweet)) - - () <- validateEntities(tweet) - - tweet <- { - val cctlRequest = - ConversationControlBuilder.Request.fromTweet( - tweet, - request.conversationControl, - request.noteTweetOptions.flatMap(_.mentionedUserIds)) - Stitch.run(conversationControlBuilder(cctlRequest)).map { conversationControl => - tweet.copy(conversationControl = conversationControl) - } - } - - tweet <- Future.value( - setAdditionalFields(tweet, request.additionalFields) - ) - () <- validateCommunityMembership(communityMembershipRepo, communityAccessRepo, communities) - () <- validateCommunityReply(communities, replyResult) - () <- communitiesValidator( - CommunitiesValidator.Request(matchedResults, safety.isProtected, communities)) - - tweet <- Future.value(tweet.copy(communities = communities)) - - tweet <- Future.value( - tweet.copy(underlyingCreativesContainerId = request.underlyingCreativesContainerId) - ) - - // For certain tweets we want to write a self-permalink which is used to generate modified - // tweet text for legacy clients that contains a link. NOTE: this permalink is for - // the tweet being created - we also create permalinks for related tweets further down - // e.g. if this tweet is an edit, we might create a permalink for the initial tweet as well - tweet <- { - val isBeyond140 = textVisibility.isExtendedWithExtraChars(attachmentResult.extraChars) - val isEditTweet = request.editOptions.isDefined - val isMixedMedia = Media.isMixedMedia(mediaEntities) - val isNoteTweet = request.noteTweetOptions.isDefined - - if (isBeyond140 || isEditTweet || isMixedMedia || isNoteTweet) - permalinkShortener(tweetId, urlShortenerCtx) - .map { selfPermalink => - tweet.copy( - selfPermalink = Some(selfPermalink), - extendedTweetMetadata = Some(ExtendedTweetMetadataBuilder(tweet, selfPermalink)) - ) - } - else { - Future.value(tweet) - } - } - - // When an edit tweet is created we have to update some information on the - // initial tweet, this object stores info about those updates for use - // in the tweet insert store. - // We update the editControl for each edit tweet and for the first edit tweet - // we update the self permalink. - initialTweetUpdateRequest: Option[InitialTweetUpdateRequest] <- editControl match { - case Some(EditControl.Edit(edit)) => - // Identifies the first edit of an initial tweet - val isFirstEdit = - request.editOptions.map(_.previousTweetId).contains(edit.initialTweetId) - - // A potential permalink for this tweet being created's initial tweet - val selfPermalinkForInitial: Future[Option[ShortenedUrl]] = - if (isFirstEdit) { - // `tweet` is the first edit of an initial tweet, which means - // we need to write a self permalink. We create it here in - // TweetBuilder and pass it through to the tweet store to - // be written to the initial tweet. - permalinkShortener(edit.initialTweetId, urlShortenerCtx).map(Some(_)) - } else { - Future.value(None) - } - - selfPermalinkForInitial.map { link => - Some( - InitialTweetUpdateRequest( - initialTweetId = edit.initialTweetId, - editTweetId = tweet.id, - selfPermalink = link - )) - } - - // This is not an edit this is the initial tweet - so there are no initial - // tweet updates - case _ => Future.value(None) - } - - tweet <- filterInvalidData(tweet, request, urlShortenerCtx) - - () <- validateEdit(tweet, request.editOptions) - - user <- updateUserCounts(user, tweet) - - } yield { - TweetBuilderResult( - tweet, - user, - createdAt, - isSilentFail = spamResult == Spam.SilentFail, - geoSearchRequestId = extractGeoSearchRequestId(request.geo), - initialTweetUpdateRequest = initialTweetUpdateRequest - ) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetCreationLock.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetCreationLock.docx new file mode 100644 index 0000000000000000000000000000000000000000..fc063a7e50f7beb7b377beec908b8ec2fde05801 GIT binary patch literal 42090 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 Future[PostTweetResult] - ): Future[PostTweetResult] - def unlock(key: Key): Future[Unit] -} - -object CacheBasedTweetCreationLock { - - /** - * Indicates that setting the lock value failed because the state of - * that key in the cache has been changed (by another process or - * cache eviction). - */ - case object UnexpectedCacheState extends Exception with NoStackTrace - - /** - * Thrown when the process of updating the lock cache failed more - * than the allowed number of times. - */ - case class RetriesExhausted(failures: Seq[Exception]) extends Exception with NoStackTrace - - def shouldRetry(e: Exception): Boolean = - e match { - case TweetCreationInProgress => false - case _: DuplicateTweetCreation => false - case _: RetriesExhausted => false - case _ => true - } - - def ttlChooser(shortTtl: Duration, longTtl: Duration): (Key, State) => Duration = - (_, state) => - state match { - case _: State.AlreadyCreated => longTtl - case _ => shortTtl - } - - /** - * The log format is tab-separated (base 64 tweet_id, base 64 - * uniqueness_id). It's logged this way in order to minimize the - * storage requirement and to make it easy to analyze. Each log line - * should be 24 bytes, including newline. - */ - val formatUniquenessLogEntry: ((String, TweetId)) => String = { - case (uniquenessId, tweetId) => Base64Long.toBase64(tweetId) + "\t" + uniquenessId - } - - /** - * Scribe the uniqueness id paired with the tweet id so that we can - * track the rate of failures of the uniqueness id check by - * detecting multiple tweets created with the same uniqueness id. - * - * Scribe to a test category because we only need to keep this - * information around for long enough to find any duplicates. - */ - val ScribeUniquenessId: FutureEffect[(String, TweetId)] = - Scribe("test_tweetypie_uniqueness_id") contramap formatUniquenessLogEntry - - private[this] val UniquenessIdLog = Logger("com.twitter.tweetypie.handler.UniquenessId") - - /** - * Log the uniqueness ids to a standard logger (for use when it's - * not production traffic). - */ - val LogUniquenessId: FutureEffect[(String, TweetId)] = FutureEffect[(String, TweetId)] { rec => - UniquenessIdLog.info(formatUniquenessLogEntry(rec)) - Future.Unit - } - - private val log = Logger(getClass) -} - -/** - * This class adds locking around Tweet creation, to prevent creating - * duplicate tweets when two identical requests arrive simultaneously. - * A lock is created in cache using the user id and a hash of the tweet text - * in the case of tweets, or the source_status_id in the case of retweets. - * If another process attempts to lock for the same user and hash, the request - * fails as a duplicate. The lock lasts for 10 seconds if it is not deleted. - * Given the hard timeout of 5 seconds on all requests, it should never take - * us longer than 5 seconds to create a request, but we've observed times of up - * to 10 seconds to create statuses for some of our more popular users. - * - * When a request with a uniqueness id is successful, the id of the - * created tweet will be stored in the cache so that subsequent - * requests can retrieve the originally-created tweet rather than - * duplicating creation or getting an exception. - */ -class CacheBasedTweetCreationLock( - cache: Cache[Key, State], - maxTries: Int, - stats: StatsReceiver, - logUniquenessId: FutureEffect[(String, TweetId)]) - extends TweetCreationLock { - import CacheBasedTweetCreationLock._ - - private[this] val eventCounters = stats.scope("event") - - private[this] def event(k: Key, name: String): Unit = { - log.debug(s"$name:$k") - eventCounters.counter(name).incr() - } - - private[this] def retryLoop[A](action: => Future[A]): Future[A] = { - def go(failures: List[Exception]): Future[A] = - if (failures.length >= maxTries) { - Future.exception(RetriesExhausted(failures.reverse)) - } else { - action.rescue { - case e: Exception if shouldRetry(e) => go(e :: failures) - } - } - - go(Nil) - } - - private[this] val lockerExceptions = ExceptionCounter(stats) - - /** - * Obtain the lock for creating a tweet. If this method completes - * without throwing an exception, then the lock value was - * successfully set in cache, which indicates a high probability - * that this is the only process that is attempting to create this - * tweet. (The uncertainty comes from the possibility of lock - * entries missing from the cache.) - * - * @throws TweetCreationInProgress if there is another process - * trying to create this tweet. - * - * @throws DuplicateTweetCreation if a tweet has already been - * created for a duplicate request. The exception has the id of - * the created tweet. - * - * @throws RetriesExhausted if obtaining the lock failed more than - * the requisite number of times. - */ - private[this] def obtainLock(k: Key, token: Long): Future[Time] = retryLoop { - val lockTime = Time.now - - // Get the current state for this key. - cache - .getWithChecksum(Seq(k)) - .flatMap(initialStateKvr => Future.const(initialStateKvr(k))) - .flatMap { - case None => - // Nothing in cache for this key - cache - .add(k, State.InProgress(token, lockTime)) - .flatMap { - case true => Future.value(lockTime) - case false => Future.exception(UnexpectedCacheState) - } - case Some((Throw(e), _)) => - Future.exception(e) - case Some((Return(st), cs)) => - st match { - case State.Unlocked => - // There is an Unlocked entry for this key, which - // implies that a previous attempt was cleaned up. - cache - .checkAndSet(k, State.InProgress(token, lockTime), cs) - .flatMap { - case true => Future.value(lockTime) - case false => Future.exception(UnexpectedCacheState) - } - case State.InProgress(cachedToken, creationStartedTimestamp) => - if (cachedToken == token) { - // There is an in-progress entry for *this process*. This - // can happen on a retry if the `add` actually succeeds - // but the future fails. The retry can return the result - // of the add that we previously tried. - Future.value(creationStartedTimestamp) - } else { - // There is an in-progress entry for *a different - // process*. This implies that there is another tweet - // creation in progress for *this tweet*. - val tweetCreationAge = Time.now - creationStartedTimestamp - k.uniquenessId.foreach { id => - log.info( - "Found an in-progress tweet creation for uniqueness id %s %s ago" - .format(id, tweetCreationAge) - ) - } - stats.stat("in_progress_age_ms").add(tweetCreationAge.inMilliseconds) - Future.exception(TweetCreationInProgress) - } - case State.AlreadyCreated(tweetId, creationStartedTimestamp) => - // Another process successfully created a tweet for this - // key. - val tweetCreationAge = Time.now - creationStartedTimestamp - stats.stat("already_created_age_ms").add(tweetCreationAge.inMilliseconds) - Future.exception(DuplicateTweetCreation(tweetId)) - } - } - } - - /** - * Attempt to remove this process' lock entry from the cache. This - * is done by writing a short-lived tombstone, so that we can ensure - * that we only overwrite the entry if it is still an entry for this - * process instead of another process' entry. - */ - private[this] def cleanupLoop(k: Key, token: Long): Future[Unit] = - retryLoop { - // Instead of deleting the value, we attempt to write Unlocked, - // because we only want to delete it if it was the value that we - // wrote ourselves, and there is no delete call that is - // conditional on the extant value. - cache - .getWithChecksum(Seq(k)) - .flatMap(kvr => Future.const(kvr(k))) - .flatMap { - case None => - // Nothing in the cache for this tweet creation, so cleanup - // is successful. - Future.Unit - - case Some((tryV, cs)) => - // If we failed trying to deserialize the value, then we - // want to let the error bubble up, because there is no good - // recovery procedure, since we can't tell whether the entry - // is ours. - Future.const(tryV).flatMap { - case State.InProgress(presentToken, _) => - if (presentToken == token) { - // This is *our* in-progress marker, so we want to - // overwrite it with the tombstone. If checkAndSet - // returns false, that's OK, because that means - // someone else overwrote the value, and we don't have - // to clean it up anymore. - cache.checkAndSet(k, State.Unlocked, cs).unit - } else { - // Indicates that another request has overwritten our - // state before we cleaned it up. This should only - // happen when our token was cleared from cache and - // another process started a duplicate create. This - // should be very infrequent. We count it just to be - // sure. - event(k, "other_attempt_in_progress") - Future.Unit - } - - case _ => - // Cleanup has succeeded, because we are not responsible - // for the cache entry anymore. - Future.Unit - } - } - }.onSuccess { _ => event(k, "cleanup_attempt_succeeded") } - .handle { - case _ => event(k, "cleanup_attempt_failed") - } - - /** - * Mark that a tweet has been successfully created. Subsequent calls - * to `apply` with this key will receive a DuplicateTweetCreation - * exception with the specified id. - */ - private[this] def creationComplete(k: Key, tweetId: TweetId, lockTime: Time): Future[Unit] = - // Unconditionally set the state because regardless of the - // value present, we know that we want to transition to the - // AlreadyCreated state for this key. - retryLoop(cache.set(k, State.AlreadyCreated(tweetId, lockTime))) - .onSuccess(_ => event(k, "mark_created_succeeded")) - .onFailure { case _ => event(k, "mark_created_failed") } - // If this fails, it's OK for the request to complete - // successfully, because it's more harmful to create the tweet - // and return failure than it is to complete it successfully, - // but fail to honor the uniqueness id next time. - .handle { case NonFatal(_) => } - - private[this] def createWithLock( - k: Key, - create: => Future[PostTweetResult] - ): Future[PostTweetResult] = { - val token = Random.nextLong - event(k, "lock_attempted") - - obtainLock(k, token) - .onSuccess { _ => event(k, "lock_obtained") } - .handle { - // If we run out of retries when trying to get the lock, then - // just go ahead with tweet creation. We should keep an eye on - // how frequently this happens, because this means that the - // only sign that this is happening will be duplicate tweet - // creations. - case RetriesExhausted(failures) => - event(k, "lock_failure_ignored") - // Treat this as the time that we obtained the lock. - Time.now - } - .onFailure { - case e => lockerExceptions(e) - } - .flatMap { lockTime => - create.transform { - case r @ Return(PostTweetResult(_, Some(tweet), _, _, _, _, _)) => - event(k, "create_succeeded") - - k.uniquenessId.foreach { u => logUniquenessId((u, tweet.id)) } - - // Update the lock entry to remember the id of the tweet we - // created and extend the TTL. - creationComplete(k, tweet.id, lockTime).before(Future.const(r)) - case other => - other match { - case Throw(e) => - log.debug(s"Tweet creation failed for key $k", e) - case Return(r) => - log.debug(s"Tweet creation failed for key $k, so unlocking: $r") - } - - event(k, "create_failed") - - // Attempt to clean up the lock after the failed create. - cleanupLoop(k, token).before(Future.const(other)) - } - } - } - - /** - * Make a best-effort attempt at removing the duplicate cache entry - * for this key. If this fails, it is not catastrophic. The worst-case - * behavior should be that the user has to wait for the short TTL to - * elapse before tweeting succeeds. - */ - def unlock(k: Key): Future[Unit] = - retryLoop(cache.delete(k).unit).onSuccess(_ => event(k, "deleted")) - - /** - * Prevent duplicate tweet creation. - * - * Ensures that no more than one tweet creation for the same key is - * happening at the same time. If `create` fails, then the key will - * be removed from the cache. If it succeeds, then the key will be - * retained. - * - * @throws DuplicateTweetCreation if a tweet has already been - * created by a previous request. The exception has the id of the - * created tweet. - * - * @throws TweetCreationInProgress. See the documentation above. - */ - def apply( - k: Key, - isDark: Boolean, - nullcast: Boolean - )( - create: => Future[PostTweetResult] - ): Future[PostTweetResult] = - if (isDark) { - event(k, "dark_create") - create - } else if (nullcast) { - event(k, "nullcast_create") - create - } else { - createWithLock(k, create).onFailure { - // Another process is creating this same tweet (or has already - // created it) - case TweetCreationInProgress => - event(k, "tweet_creation_in_progress") - case _: DuplicateTweetCreation => - event(k, "tweet_already_created") - case _ => - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..e1a4f083588160947b8aef54dba0d0f9787242be GIT binary patch literal 46514 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.scala deleted file mode 100644 index e1052a887..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetDeletePathHandler.scala +++ /dev/null @@ -1,811 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.conversions.DurationOps.RichDuration -import com.twitter.servo.exception.thriftscala.ClientError -import com.twitter.servo.exception.thriftscala.ClientErrorCause -import com.twitter.servo.util.FutureArrow -import com.twitter.snowflake.id.SnowflakeId -import com.twitter.stitch.Stitch -import com.twitter.stitch.NotFound -import com.twitter.timelineservice.thriftscala.PerspectiveResult -import com.twitter.timelineservice.{thriftscala => tls} -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.store._ -import com.twitter.tweetypie.thriftscala._ -import com.twitter.util.Time -import com.twitter.util.Try -import Try._ -import com.twitter.spam.rtf.thriftscala.SafetyLabelType -import com.twitter.tweetypie.backends.TimelineService.GetPerspectives -import com.twitter.tweetypie.util.EditControlUtil -import scala.util.control.NoStackTrace - -case class CascadedDeleteNotAvailable(retweetId: TweetId) extends Exception with NoStackTrace { - override def getMessage: String = - s"""|Cascaded delete tweet failed because tweet $retweetId - |is not present in cache or manhattan.""".stripMargin -} - -object TweetDeletePathHandler { - - type DeleteTweets = - (DeleteTweetsRequest, Boolean) => Future[Seq[DeleteTweetResult]] - - type UnretweetEdits = (Option[EditControl], TweetId, UserId) => Future[Unit] - - /** The information from a deleteTweet request that can be inspected by a deleteTweets validator */ - case class DeleteTweetsContext( - byUserId: Option[UserId], - authenticatedUserId: Option[UserId], - tweetAuthorId: UserId, - users: Map[UserId, User], - isUserErasure: Boolean, - expectedErasureUserId: Option[UserId], - tweetIsBounced: Boolean, - isBounceDelete: Boolean) - - /** Provides reason a tweet deletion was allowed */ - sealed trait DeleteAuthorization { def byUserId: Option[UserId] } - - case class AuthorizedByTweetOwner(userId: UserId) extends DeleteAuthorization { - def byUserId: Option[UserId] = Some(userId) - } - case class AuthorizedByTweetContributor(contributorUserId: UserId) extends DeleteAuthorization { - def byUserId: Option[UserId] = Some(contributorUserId) - } - case class AuthorizedByAdmin(adminUserId: UserId) extends DeleteAuthorization { - def byUserId: Option[UserId] = Some(adminUserId) - } - case object AuthorizedByErasure extends DeleteAuthorization { - def byUserId: None.type = None - } - - // Type for a method that receives all the relevant information about a proposed internal tweet - // deletion and can return Future.exception to cancel the delete due to a validation error or - // return a [[DeleteAuthorization]] specifying the reason the deletion is allowed. - type ValidateDeleteTweets = FutureArrow[DeleteTweetsContext, DeleteAuthorization] - - val userFieldsForDelete: Set[UserField] = - Set(UserField.Account, UserField.Profile, UserField.Roles, UserField.Safety) - - val userQueryOptions: UserQueryOptions = - UserQueryOptions( - userFieldsForDelete, - UserVisibility.All - ) - - // user_agent property originates from the client so truncate to a reasonable length - val MaxUserAgentLength = 1000 - - // Age under which we treat not found tweets in - // cascaded_delete_tweet as a temporary condition (the most likely - // explanation being that the tweet has not yet been - // replicated). Tweets older than this we assume are due to - // *permanently* inconsistent data, either spurious edges in tflock or - // tweets that are not loadable from Manhattan. - val MaxCascadedDeleteTweetTemporaryInconsistencyAge: Duration = - 10.minutes -} - -trait TweetDeletePathHandler { - import TweetDeletePathHandler.ValidateDeleteTweets - - def cascadedDeleteTweet(request: CascadedDeleteTweetRequest): Future[Unit] - - def deleteTweets( - request: DeleteTweetsRequest, - isUnretweetEdits: Boolean = false, - ): Future[Seq[DeleteTweetResult]] - - def internalDeleteTweets( - request: DeleteTweetsRequest, - byUserId: Option[UserId], - authenticatedUserId: Option[UserId], - validate: ValidateDeleteTweets, - isUnretweetEdits: Boolean = false - ): Future[Seq[DeleteTweetResult]] - - def unretweetEdits( - optEditControl: Option[EditControl], - excludedTweetId: TweetId, - byUserId: UserId - ): Future[Unit] -} - -/** - * Implementation of TweetDeletePathHandler - */ -class DefaultTweetDeletePathHandler( - stats: StatsReceiver, - tweetResultRepo: TweetResultRepository.Type, - userRepo: UserRepository.Optional, - stratoSafetyLabelsRepo: StratoSafetyLabelsRepository.Type, - lastQuoteOfQuoterRepo: LastQuoteOfQuoterRepository.Type, - tweetStore: TotalTweetStore, - getPerspectives: GetPerspectives) - extends TweetDeletePathHandler { - import TweetDeletePathHandler._ - - val tweetRepo: TweetRepository.Type = TweetRepository.fromTweetResult(tweetResultRepo) - - // attempt to delete tweets was made by someone other than the tweet owner or an admin user - object DeleteTweetsPermissionException extends Exception with NoStackTrace - object ExpectedUserIdMismatchException extends Exception with NoStackTrace - - private[this] val log = Logger("com.twitter.tweetypie.store.TweetDeletions") - - private[this] val cascadeEditDelete = stats.scope("cascade_edit_delete") - private[this] val cascadeEditDeletesEnqueued = cascadeEditDelete.counter("enqueued") - private[this] val cascadeEditDeleteTweets = cascadeEditDelete.counter("tweets") - private[this] val cascadeEditDeleteFailures = cascadeEditDelete.counter("failures") - - private[this] val cascadedDeleteTweet = stats.scope("cascaded_delete_tweet") - private[this] val cascadedDeleteTweetFailures = cascadedDeleteTweet.counter("failures") - private[this] val cascadedDeleteTweetSourceMatch = cascadedDeleteTweet.counter("source_match") - private[this] val cascadedDeleteTweetSourceMismatch = - cascadedDeleteTweet.counter("source_mismatch") - private[this] val cascadedDeleteTweetTweetNotFound = - cascadedDeleteTweet.counter("tweet_not_found") - private[this] val cascadedDeleteTweetTweetNotFoundAge = - cascadedDeleteTweet.stat("tweet_not_found_age") - private[this] val cascadedDeleteTweetUserNotFound = cascadedDeleteTweet.counter("user_not_found") - - private[this] val deleteTweets = stats.scope("delete_tweets") - private[this] val deleteTweetsAuth = deleteTweets.scope("per_tweet_auth") - private[this] val deleteTweetsAuthAttempts = deleteTweetsAuth.counter("attempts") - private[this] val deleteTweetsAuthFailures = deleteTweetsAuth.counter("failures") - private[this] val deleteTweetsAuthSuccessAdmin = deleteTweetsAuth.counter("success_admin") - private[this] val deleteTweetsAuthSuccessByUser = deleteTweetsAuth.counter("success_by_user") - private[this] val deleteTweetsTweets = deleteTweets.counter("tweets") - private[this] val deleteTweetsFailures = deleteTweets.counter("failures") - private[this] val deleteTweetsTweetNotFound = deleteTweets.counter("tweet_not_found") - private[this] val deleteTweetsUserNotFound = deleteTweets.counter("user_not_found") - private[this] val userIdMismatchInTweetDelete = - deleteTweets.counter("expected_actual_user_id_mismatch") - private[this] val bounceDeleteFlagNotSet = - deleteTweets.counter("bounce_delete_flag_not_set") - - private[this] def getUser(userId: UserId): Future[Option[User]] = - Stitch.run(userRepo(UserKey(userId), userQueryOptions)) - - private[this] def getUsersForDeleteTweets(userIds: Seq[UserId]): Future[Map[UserId, User]] = - Stitch.run( - Stitch - .traverse(userIds) { userId => - userRepo(UserKey(userId), userQueryOptions).map { - case Some(u) => Some(userId -> u) - case None => deleteTweetsUserNotFound.incr(); None - } - } - .map(_.flatten.toMap) - ) - - private[this] def getTweet(tweetId: TweetId): Future[Tweet] = - Stitch.run(tweetRepo(tweetId, WritePathQueryOptions.deleteTweetsWithoutEditControl)) - - private[this] def getSingleDeletedTweet( - id: TweetId, - isCascadedEditTweetDeletion: Boolean = false - ): Stitch[Option[TweetData]] = { - val opts = if (isCascadedEditTweetDeletion) { - // Disable edit control hydration if this is cascade delete of edits. - // When edit control is hydrated, the tweet will actually be considered already deleted. - WritePathQueryOptions.deleteTweetsWithoutEditControl - } else { - WritePathQueryOptions.deleteTweets - } - tweetResultRepo(id, opts) - .map(_.value) - .liftToOption { - // We treat the request the same whether the tweet never - // existed or is in one of the already-deleted states by - // just filtering out those tweets. Any tweets that we - // return should be deleted. If the tweet has been - // bounce-deleted, we never want to soft-delete it, and - // vice versa. - case NotFound | FilteredState.Unavailable.TweetDeleted | - FilteredState.Unavailable.BounceDeleted => - true - } - } - - private[this] def getTweetsForDeleteTweets( - ids: Seq[TweetId], - isCascadedEditTweetDeletion: Boolean - ): Future[Map[TweetId, TweetData]] = - Stitch - .run { - Stitch.traverse(ids) { id => - getSingleDeletedTweet(id, isCascadedEditTweetDeletion) - .map { - // When deleting a tweet that has been edited, we want to instead delete the initial version. - // Because the initial tweet will be hydrated in every request, if it is deleted, later - // revisions will be hidden, and cleaned up asynchronously by TP Daemons - - // However, we don't need to do a second lookup if it's already the original tweet - // or if we're doing a cascading edit tweet delete (deleting the entire tweet history) - case Some(tweetData) - if EditControlUtil.isInitialTweet(tweetData.tweet) || - isCascadedEditTweetDeletion => - Stitch.value(Some(tweetData)) - case Some(tweetData) => - getSingleDeletedTweet(EditControlUtil.getInitialTweetId(tweetData.tweet)) - case None => - Stitch.value(None) - // We need to preserve the input tweetId, and the initial TweetData - }.flatten.map(tweetData => (id, tweetData)) - } - } - .map(_.collect { case (tweetId, Some(tweetData)) => (tweetId, tweetData) }.toMap) - - private[this] def getStratoBounceStatuses( - ids: Seq[Long], - isUserErasure: Boolean, - isCascadedEditedTweetDeletion: Boolean - ): Future[Map[TweetId, Boolean]] = { - // Don't load bounce label for user erasure tweet deletion. - // User Erasure deletions cause unnecessary spikes of traffic - // to Strato when we read the bounce label that we don't use. - - // We also want to always delete a bounced tweet if the rest of the - // edit chain is being deleted in a cascaded edit tweet delete - if (isUserErasure || isCascadedEditedTweetDeletion) { - Future.value(ids.map(id => id -> false).toMap) - } else { - Stitch.run( - Stitch - .traverse(ids) { id => - stratoSafetyLabelsRepo(id, SafetyLabelType.Bounce).map { label => - id -> label.isDefined - } - } - .map(_.toMap) - ) - } - } - - /** A suspended/deactivated user can't delete tweets */ - private[this] def userNotSuspendedOrDeactivated(user: User): Try[User] = - user.safety match { - case None => Throw(UpstreamFailure.UserSafetyEmptyException) - case Some(safety) if safety.deactivated => - Throw( - AccessDenied( - s"User deactivated userId: ${user.id}", - errorCause = Some(AccessDeniedCause.UserDeactivated) - ) - ) - case Some(safety) if safety.suspended => - Throw( - AccessDenied( - s"User suspended userId: ${user.id}", - errorCause = Some(AccessDeniedCause.UserSuspended) - ) - ) - case _ => Return(user) - } - - /** - * Ensure that byUser has permission to delete tweet either by virtue of owning the tweet or being - * an admin user. Returns the reason as a DeleteAuthorization or else throws an Exception if not - * authorized. - */ - private[this] def userAuthorizedToDeleteTweet( - byUser: User, - optAuthenticatedUserId: Option[UserId], - tweetAuthorId: UserId - ): Try[DeleteAuthorization] = { - - def hasAdminPrivilege = - byUser.roles.exists(_.rights.contains("delete_user_tweets")) - - deleteTweetsAuthAttempts.incr() - if (byUser.id == tweetAuthorId) { - deleteTweetsAuthSuccessByUser.incr() - optAuthenticatedUserId match { - case Some(uid) => - Return(AuthorizedByTweetContributor(uid)) - case None => - Return(AuthorizedByTweetOwner(byUser.id)) - } - } else if (optAuthenticatedUserId.isEmpty && hasAdminPrivilege) { // contributor may not assume admin role - deleteTweetsAuthSuccessAdmin.incr() - Return(AuthorizedByAdmin(byUser.id)) - } else { - deleteTweetsAuthFailures.incr() - Throw(DeleteTweetsPermissionException) - } - } - - /** - * expected user id is the id provided on the DeleteTweetsRequest that the indicates which user - * owns the tweets they want to delete. The actualUserId is the actual userId on the tweet we are about to delete. - * we check to ensure they are the same as a safety check against accidental deletion of tweets either from user mistakes - * or from corrupted data (e.g bad tflock edges) - */ - private[this] def expectedUserIdMatchesActualUserId( - expectedUserId: UserId, - actualUserId: UserId - ): Try[Unit] = - if (expectedUserId == actualUserId) { - Return.Unit - } else { - userIdMismatchInTweetDelete.incr() - Throw(ExpectedUserIdMismatchException) - } - - /** - * Validation for the normal public tweet delete case, the user must be found and must - * not be suspended or deactivated. - */ - val validateTweetsForPublicDelete: ValidateDeleteTweets = FutureArrow { - ctx: DeleteTweetsContext => - Future.const( - for { - - // byUserId must be present - byUserId <- ctx.byUserId.orThrow( - ClientError(ClientErrorCause.BadRequest, "Missing byUserId") - ) - - // the byUser must be found - byUserOpt = ctx.users.get(byUserId) - byUser <- byUserOpt.orThrow( - ClientError(ClientErrorCause.BadRequest, s"User $byUserId not found") - ) - - _ <- userNotSuspendedOrDeactivated(byUser) - - _ <- validateBounceConditions( - ctx.tweetIsBounced, - ctx.isBounceDelete - ) - - // if there's a contributor, make sure the user is found and not suspended or deactivated - _ <- - ctx.authenticatedUserId - .map { uid => - ctx.users.get(uid) match { - case None => - Throw(ClientError(ClientErrorCause.BadRequest, s"Contributor $uid not found")) - case Some(authUser) => - userNotSuspendedOrDeactivated(authUser) - } - } - .getOrElse(Return.Unit) - - // if the expected user id is present, make sure it matches the user id on the tweet - _ <- - ctx.expectedErasureUserId - .map { expectedUserId => - expectedUserIdMatchesActualUserId(expectedUserId, ctx.tweetAuthorId) - } - .getOrElse(Return.Unit) - - // User must own the tweet or be an admin - deleteAuth <- userAuthorizedToDeleteTweet( - byUser, - ctx.authenticatedUserId, - ctx.tweetAuthorId - ) - } yield deleteAuth - ) - } - - private def validateBounceConditions( - tweetIsBounced: Boolean, - isBounceDelete: Boolean - ): Try[Unit] = { - if (tweetIsBounced && !isBounceDelete) { - bounceDeleteFlagNotSet.incr() - Throw(ClientError(ClientErrorCause.BadRequest, "Cannot normal delete a Bounced Tweet")) - } else { - Return.Unit - } - } - - /** - * Validation for the user erasure case. User may be missing. - */ - val validateTweetsForUserErasureDaemon: ValidateDeleteTweets = FutureArrow { - ctx: DeleteTweetsContext => - Future - .const( - for { - expectedUserId <- ctx.expectedErasureUserId.orThrow( - ClientError( - ClientErrorCause.BadRequest, - "expectedUserId is required for DeleteTweetRequests" - ) - ) - - // It's critical to always check that the userId on the tweet we want to delete matches the - // userId on the erasure request. This prevents us from accidentally deleting tweets not owned by the - // erased user, even if tflock serves us bad data. - validationResult <- expectedUserIdMatchesActualUserId(expectedUserId, ctx.tweetAuthorId) - } yield validationResult - ) - .map(_ => AuthorizedByErasure) - } - - /** - * Fill in missing values of AuditDeleteTweet with values from TwitterContext. - */ - def enrichMissingFromTwitterContext(orig: AuditDeleteTweet): AuditDeleteTweet = { - val viewer = TwitterContext() - orig.copy( - host = orig.host.orElse(viewer.flatMap(_.auditIp)), - clientApplicationId = orig.clientApplicationId.orElse(viewer.flatMap(_.clientApplicationId)), - userAgent = orig.userAgent.orElse(viewer.flatMap(_.userAgent)).map(_.take(MaxUserAgentLength)) - ) - } - - /** - * core delete tweets implementation. - * - * The [[deleteTweets]] method wraps this method and provides validation required - * for a public endpoint. - */ - override def internalDeleteTweets( - request: DeleteTweetsRequest, - byUserId: Option[UserId], - authenticatedUserId: Option[UserId], - validate: ValidateDeleteTweets, - isUnretweetEdits: Boolean = false - ): Future[Seq[DeleteTweetResult]] = { - - val auditDeleteTweet = - enrichMissingFromTwitterContext(request.auditPassthrough.getOrElse(AuditDeleteTweet())) - deleteTweetsTweets.incr(request.tweetIds.size) - for { - tweetDataMap <- getTweetsForDeleteTweets( - request.tweetIds, - request.cascadedEditedTweetDeletion.getOrElse(false) - ) - - userIds: Seq[UserId] = (tweetDataMap.values.map { td => - getUserId(td.tweet) - } ++ byUserId ++ authenticatedUserId).toSeq.distinct - - users <- getUsersForDeleteTweets(userIds) - - stratoBounceStatuses <- getStratoBounceStatuses( - tweetDataMap.keys.toSeq, - request.isUserErasure, - request.cascadedEditedTweetDeletion.getOrElse(false)) - - results <- Future.collect { - request.tweetIds.map { tweetId => - tweetDataMap.get(tweetId) match { - // already deleted, so nothing to do - case None => - deleteTweetsTweetNotFound.incr() - Future.value(DeleteTweetResult(tweetId, TweetDeleteState.Ok)) - case Some(tweetData) => - val tweet: Tweet = tweetData.tweet - val tweetIsBounced = stratoBounceStatuses(tweetId) - val optSourceTweet: Option[Tweet] = tweetData.sourceTweetResult.map(_.value.tweet) - - val validation: Future[(Boolean, DeleteAuthorization)] = for { - isLastQuoteOfQuoter <- isFinalQuoteOfQuoter(tweet) - deleteAuth <- validate( - DeleteTweetsContext( - byUserId = byUserId, - authenticatedUserId = authenticatedUserId, - tweetAuthorId = getUserId(tweet), - users = users, - isUserErasure = request.isUserErasure, - expectedErasureUserId = request.expectedUserId, - tweetIsBounced = tweetIsBounced, - isBounceDelete = request.isBounceDelete - ) - ) - _ <- optSourceTweet match { - case Some(sourceTweet) if !isUnretweetEdits => - // If this is a retweet and this deletion was not triggered by - // unretweetEdits, unretweet edits of the source Tweet - // before deleting the retweet. - // - // deleteAuth will always contain a byUserId except for erasure deletion, - // in which case the retweets will be deleted individually. - deleteAuth.byUserId match { - case Some(userId) => - unretweetEdits(sourceTweet.editControl, sourceTweet.id, userId) - case None => Future.Unit - } - case _ => Future.Unit - } - } yield { - (isLastQuoteOfQuoter, deleteAuth) - } - - validation - .flatMap { - case (isLastQuoteOfQuoter: Boolean, deleteAuth: DeleteAuthorization) => - val isAdminDelete = deleteAuth match { - case AuthorizedByAdmin(_) => true - case _ => false - } - - val event = - DeleteTweet.Event( - tweet = tweet, - timestamp = Time.now, - user = users.get(getUserId(tweet)), - byUserId = deleteAuth.byUserId, - auditPassthrough = Some(auditDeleteTweet), - isUserErasure = request.isUserErasure, - isBounceDelete = request.isBounceDelete && tweetIsBounced, - isLastQuoteOfQuoter = isLastQuoteOfQuoter, - isAdminDelete = isAdminDelete - ) - val numberOfEdits: Int = tweet.editControl - .collect { - case EditControl.Initial(initial) => - initial.editTweetIds.count(_ != tweet.id) - } - .getOrElse(0) - cascadeEditDeletesEnqueued.incr(numberOfEdits) - tweetStore - .deleteTweet(event) - .map(_ => DeleteTweetResult(tweetId, TweetDeleteState.Ok)) - } - .onFailure { _ => - deleteTweetsFailures.incr() - } - .handle { - case ExpectedUserIdMismatchException => - DeleteTweetResult(tweetId, TweetDeleteState.ExpectedUserIdMismatch) - case DeleteTweetsPermissionException => - DeleteTweetResult(tweetId, TweetDeleteState.PermissionError) - } - } - } - } - } yield results - } - - private def isFinalQuoteOfQuoter(tweet: Tweet): Future[Boolean] = { - tweet.quotedTweet match { - case Some(qt) => - Stitch.run { - lastQuoteOfQuoterRepo - .apply(qt.tweetId, getUserId(tweet)) - .liftToTry - .map(_.getOrElse(false)) - } - case None => Future(false) - } - } - - /** - * Validations for the public deleteTweets endpoint. - * - ensures that the byUserId user can be found and is in the correct user state - * - ensures that the tweet is being deleted by the tweet's owner, or by an admin - * If there is a validation error, a future.exception is returned - * - * If the delete request is part of a user erasure, validations are relaxed (the User is allowed to be missing). - */ - val deleteTweetsValidator: ValidateDeleteTweets = - FutureArrow { context => - if (context.isUserErasure) { - validateTweetsForUserErasureDaemon(context) - } else { - validateTweetsForPublicDelete(context) - } - } - - override def deleteTweets( - request: DeleteTweetsRequest, - isUnretweetEdits: Boolean = false, - ): Future[Seq[DeleteTweetResult]] = { - - // For comparison testing we only want to compare the DeleteTweetsRequests that are generated - // in DeleteTweets path and not the call that comes from the Unretweet path - val context = TwitterContext() - internalDeleteTweets( - request, - byUserId = request.byUserId.orElse(context.flatMap(_.userId)), - context.flatMap(_.authenticatedUserId), - deleteTweetsValidator, - isUnretweetEdits - ) - } - - // Cascade delete tweet is the logic for removing tweets that are detached - // from their dependency which has been deleted. They are already filtered - // out from serving, so this operation reconciles storage with the view - // presented by Tweetypie. - // This RPC call is delegated from daemons or batch jobs. Currently there - // are two use-cases when this call is issued: - // * Deleting detached retweets after the source tweet was deleted. - // This is done through RetweetsDeletion daemon and the - // CleanupDetachedRetweets job. - // * Deleting edits of an initial tweet that has been deleted. - // This is done by CascadedEditedTweetDelete daemon. - // Note that, when serving the original delete request for an edit, - // the initial tweet is only deleted, which makes all edits hidden. - override def cascadedDeleteTweet(request: CascadedDeleteTweetRequest): Future[Unit] = { - val contextViewer = TwitterContext() - getTweet(request.tweetId) - .transform { - case Throw( - FilteredState.Unavailable.TweetDeleted | FilteredState.Unavailable.BounceDeleted) => - // The retweet or edit was already deleted via some other mechanism - Future.Unit - - case Throw(NotFound) => - cascadedDeleteTweetTweetNotFound.incr() - val recentlyCreated = - if (SnowflakeId.isSnowflakeId(request.tweetId)) { - val age = Time.now - SnowflakeId(request.tweetId).time - cascadedDeleteTweetTweetNotFoundAge.add(age.inMilliseconds) - age < MaxCascadedDeleteTweetTemporaryInconsistencyAge - } else { - false - } - - if (recentlyCreated) { - // Treat the NotFound as a temporary condition, most - // likely due to replication lag. - Future.exception(CascadedDeleteNotAvailable(request.tweetId)) - } else { - // Treat the NotFound as a permanent inconsistenty, either - // spurious edges in tflock or invalid data in Manhattan. This - // was happening a few times an hour during the time that we - // were not treating it specially. For now, we will just log that - // it happened, but in the longer term, it would be good - // to collect this data and repair the corruption. - log.warn( - Seq( - "cascaded_delete_tweet_old_not_found", - request.tweetId, - request.cascadedFromTweetId - ).mkString("\t") - ) - Future.Done - } - - // Any other FilteredStates should not be thrown because of - // the options that we used to load the tweet, so we will just - // let them bubble up as an internal server error - case Throw(other) => - Future.exception(other) - - case Return(tweet) => - Future - .join( - isFinalQuoteOfQuoter(tweet), - getUser(getUserId(tweet)) - ) - .flatMap { - case (isLastQuoteOfQuoter, user) => - if (user.isEmpty) { - cascadedDeleteTweetUserNotFound.incr() - } - val tweetSourceId = getShare(tweet).map(_.sourceStatusId) - val initialEditId = tweet.editControl.collect { - case EditControl.Edit(edit) => edit.initialTweetId - } - if (initialEditId.contains(request.cascadedFromTweetId)) { - cascadeEditDeleteTweets.incr() - } - if (tweetSourceId.contains(request.cascadedFromTweetId) - || initialEditId.contains(request.cascadedFromTweetId)) { - cascadedDeleteTweetSourceMatch.incr() - val deleteEvent = - DeleteTweet.Event( - tweet = tweet, - timestamp = Time.now, - user = user, - byUserId = contextViewer.flatMap(_.userId), - cascadedFromTweetId = Some(request.cascadedFromTweetId), - auditPassthrough = request.auditPassthrough, - isUserErasure = false, - // cascaded deletes of retweets or edits have not been through a bouncer flow, - // so are not considered to be "bounce deleted". - isBounceDelete = false, - isLastQuoteOfQuoter = isLastQuoteOfQuoter, - isAdminDelete = false - ) - tweetStore - .deleteTweet(deleteEvent) - .onFailure { _ => - if (initialEditId.contains(request.cascadedFromTweetId)) { - cascadeEditDeleteFailures.incr() - } - } - } else { - cascadedDeleteTweetSourceMismatch.incr() - log.warn( - Seq( - "cascaded_from_tweet_id_source_mismatch", - request.tweetId, - request.cascadedFromTweetId, - tweetSourceId.orElse(initialEditId).getOrElse("-") - ).mkString("\t") - ) - Future.Done - } - } - } - .onFailure(_ => cascadedDeleteTweetFailures.incr()) - } - - // Given a list of edit Tweet ids and a user id, find the retweet ids of those edit ids from the given user - private def editTweetIdRetweetsFromUser( - editTweetIds: Seq[TweetId], - byUserId: UserId - ): Future[Seq[TweetId]] = { - if (editTweetIds.isEmpty) { - Future.value(Seq()) - } else { - getPerspectives( - Seq(tls.PerspectiveQuery(byUserId, editTweetIds)) - ).map { res: Seq[PerspectiveResult] => - res.headOption.toSeq - .flatMap(_.perspectives.flatMap(_.retweetId)) - } - } - } - - /* This function is called from three places - - * 1. When Tweetypie gets a request to retweet the latest version of an edit chain, all the - * previous revisons should be unretweeted. - * i.e. On Retweet of the latest tweet - unretweets all the previous revisions for this user. - * - create A - * - retweet A'(retweet of A) - * - create edit B(edit of A) - * - retweet B' => Deletes A' - * - * 2. When Tweetypie gets an unretweet request for a source tweet that is an edit tweet, all - * the versions of the edit chain is retweeted. - * i.e. On unretweet of any version in the edit chain - unretweets all the revisions for this user - * - create A - * - retweet A' - * - create B - * - unretweet B => Deletes A' (& also any B' if it existed) - * - * 3. When Tweetypie gets a delete request for a retweet, say A1. & if A happens to the source - * tweet for A1 & if A is an edit tweet, then the entire edit chain should be unretweeted & not - * A. i.e. On delete of a retweet - unretweet all the revisions for this user. - * - create A - * - retweet A' - * - create B - * - delete A' => Deletes A' (& also any B' if it existed) - * - * The following function has two failure scenarios - - * i. when it fails to get perspectives of any of the edit tweets. - * ii. the deletion of any of the retweets of these edits fail. - * - * In either of this scenario, we fail the entire request & the error bubbles up to the top. - * Note: The above unretweet of edits only happens for the current user. - * In normal circumstances, a maximum of one Tweet in the edit chain will have been retweeted, - * but we don't know which one it was. Additionally, there may be circumstances where - * unretweet failed, and we end up with multiple versions retweeted. For these reasons, - * we always unretweet all the revisions (except for `excludedTweetId`). - * This is a no-op if none of these versions have been retweeted. - * */ - override def unretweetEdits( - optEditControl: Option[EditControl], - excludedTweetId: TweetId, - byUserId: UserId - ): Future[Unit] = { - - val editTweetIds: Seq[TweetId] = - EditControlUtil.getEditTweetIds(optEditControl).get().filter(_ != excludedTweetId) - - (editTweetIdRetweetsFromUser(editTweetIds, byUserId).flatMap { tweetIds => - if (tweetIds.nonEmpty) { - deleteTweets( - DeleteTweetsRequest(tweetIds = tweetIds, byUserId = Some(byUserId)), - isUnretweetEdits = true - ) - } else { - Future.Nil - } - }).unit - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.docx new file mode 100644 index 0000000000000000000000000000000000000000..b5840bd88f01921474e038620fb841b3129bd21c GIT binary patch literal 37831 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#cb5RcJ-EBOyE_DTmq2j$e`jXSIWyZr%)W@FuuD5tP0jPmvT6*GxRkl0fU8MAc9j@phs7FWC~?Uq|>iRn}p?D2k_H%x6t zF$9V+Ha+Fun{c&Opwp|7Qb$buR8KEmBaalk$SZF>m+{PuYhNOkM0!zbmtbxHs=7Jd z>%$Z$DD!T0AFlyg@VRKVc0i)$BS;igMYK8^(O@u)vcM>0XjR?}S57;bovQNjFx4*I zm;F&im)CJ$SJFo@KZ(rOB}Pj1468J_R)6mAVTKoKl3xw$Z1Ep|1?!}POPr3tWsOm`c5};C9+oLPIg6{k7?`aC6$ps&mLiO+GX60G{AB&NC-)0BtEc1xVd$)@l2vGYA_j^8EB0V2`hFrmUK=7}; zmwM?a+;?6L$TgOwPomLzO(e)i?TY>U?D+&=RQ5q!u;*p5XnkL3^qw^L8ADDVMDZV8 zbf=UNegJlF0}KQN9{AV5!PMH3iShTfB5vXnI17s3xuC=_MUicznt1-QzW9+`zF_zF z@v}l(AF0BX&JHDUJx#10!o%}jW3z>{JiH~kLhC>cBdz&>oW&l^O`6O4HiI>oB-nO; z5;xVIAT8_E@LMt@VN=R`PBV34LAnj}0UesUvl)>}QE>xW8!4pXpptmh8+a#b4QFqL zSpXD3Qnr!fTTw;Jp0(?@2cbqMDMLTu;}|=E4 z#J!iqoSb^tH42P`G%e`yw@*?S{!1-)>>P5|W0{;2o4ffo+Szn2gqwUr*LH&ITn$a& z#=&vHL?N-~{wCkxwJ_gSjj-09GbLzwDiVWw&%2*yuPDuVjYqq~m2eT@sx!f*(^&Lm z7eaZ-`fEAZ=e|yoWHc)m<{XKtpvoF-Y%7Ecyehg#B9NC=XS zTATwKmel`Qc2XZ=cBu?D&|%ve!UeZdTVdyDLx%--wGnaEsk-&a_=?5Xhd>)K=-0;q zL*;{XQ|f9cR{T?!M@R%@P&Q$u6lK?Db=IwKr;ZNxn^P{}dSwVrAqYrGA97|+i_3)r za$weUTs8px1vNu+b31Dcjud`EPA1K4)#$H{W8759pMBETbC8By1nis4(tCyX&%WHOu4116 z`(h0N0)q1QzI?W``=c$YW45czDDBU55PDAEETBb{aN+_ML}tX+ajWCfo90GIKgB|{ zuP6tVCxQKJMNgYb7NjB1wXMer1Cgb1$=?UJjMSmLtYv zG3>Y){{mqN@9A_~Yw{B{+uTM6n}3!}_=J$&?rIj{p&xD!+c4+r?G70#3uKzN(&VzeC%jXV|rmCyns!6yvBQ60YA0QHo(Q{_nmR7s|8r)M)BD+5P8V4_lx|6pXM^pD-oLqQ@tt|@ARyQ z0WX=$(1=zNm!Q{lFz6D zXtiHRf}AAYIio^jrVVikGraxyhYvR6VQX&g7pvhZL|4QzFe)(A%s;1o7|w+!e0uE> zhC-FDzCpup7wTmKb1}YStRZBT5tu;#A^kd7DvkQhw?Wkjj*3^vl%K`Pum{-ejab}H zL_{DDv*e6;*Nu%l(>v;SC}n=*ZTOg^To+IQ{UG1jKFrj|t?HGCn5v>#5ZKvN*Ex9t z1PX{?`2%$%>@XibZ_tD}?ww*Zh0uKwkJr4>gzROVLX-BsnmD6OZMCC18M$lN($ZGS zJ5k~@&BCtlMtOm&5dC(jGsxb*%19Uj?W2d}9a1;1-lbjTc}Yt; ztoJiUc8buzWwGnP=UQYWeFQA$gIpwKe6KvAcR zq*RwO5m2s2@qu~Lqruv}l$dHFdwSnjJ(_(+^KgB;AukzkPjZMgW6@=IWl>JNAf;RK zzlFEB4yW9y4_@@tq45hE%(X%o^|qSAM$n<*V#q)0f0G5O}9-;J^rdK6yaHKx&G@;Th8?eO`XXY60!iR(8RC zqIT^h`Zj&Ad#;{hPFa1aM7XuIFQM&_HBh~ZMm|=H;!$gGB?)o*Ko73M@Ii*dKpR(U z@Z+*OW2+>>DGY``jvQ>_<5tU@iRd8>lIwDp&WoM5=emADQVMYw z&!a-WU84mHf&#zEB&H|sod1bvik?sa!zLc5I-%4+caHh>g9HSwOqAI)SxaWUp`tbE^cmF@(Gl`AIprxTXJ@zf~|%(a3*iqNv6x^^eW;QuPm0jt!+#$m!tf`e8<)`${%Kaz;B8>num*WpN>UH4pn*%I;gZeF*WI#w(bhZDXs-so zxG;`6*C-g?F=*ZyqBYtxyk{lq>*kBqD=jC{7sF|+1b&x3L4UOX#0ypdA%pNk!DGT%y84M z3wq+sACnY&g?ibLlZBt4mvqJZ-Wjg6(7k!53?^uz7~`VIq`1})ReYz;j1o{_(2Q}O zxuTyv4vGyrdNJHuoEHlK&8$x(Iky6NR<)MguRkgt(oea{D~n7&5Y)kDekZTst61mf zye_V{`qV~4T2U!0p*syY<5;j8JWw)SRBfcs3#pz=oeU8utx&U>*Y<>=Et8-7=@15`tu z62Q~k98jzydGRvD=0>=O_%@gty+f05ZX?9ee?+c4PbaL#U$SA$S~)KX5dtyIzs|BZ zgkR`!%R7?b&aec@pQNZ=EZoF0K!U6fk88P-5X;t4|FL8J^)pGfF75%#yUf1GEixw3 z8}vU{KwCdNG*;l&XbiYD!Ut}R{#XJ3+}Qtp9sF~XpCFu^s>2drt2xDx2AfJC%hEJ{-FGPXXK!V8|G=!HTA6 z{N~8XC*5^YY9dw@#IU^8J)9j&{GxI*r!|RR$`3y!$i2YTv{3Zd!jU)R*b28`Rz~I@ zNvgzst>w}N(-NPF`~Ep3E7QrNjr4M&viYi`+-gf`J=L*iOTJD$pcfUQW@+9~kBo!D zaOeDR`u4#D-}e<-AI_|P9$&0*-~UBUHxkVNLj67+ypQd{&|-AgY{3{r+_g(AS&X%y zI$dQO{Hlm8T!fpVHdQ6aD)_^M6}RQhOhUhhJgk!^G?>t?U_=rA4iAB*mC~5T#}k3x zi|=Uu#8fs|jw{9L2Zn1h+$%RTRS-Onfj^l3S?kC$EWU6i5D;$k3!MNSq7)XU~qznsYWew%K3P)7W34PYrx2NQ8;h zl-1NfmB!Wb^=4uz((G$w#H*UVzGnHhTc7(F5JjcEo~?8Bbs=`P=$xxR7fqa9w*h=! zalH5*56;}Q&oYx%Uu|E{(u5X=0B?`c?~l)m=TSvMO((m050C4YZOQX(&xf-=Z`(pb zc8}d(Yx&=7-di_fP6@xr&5{%6qyy6u$C= zM%2FFSk!5IKF_a?dANQPdbiUA^r7Cj?Oq?;x_vk;8~$Q&A5yf~=hGla*k|suoH^vF zW$Uu|`K$cr?Bt2#YN0csj5jPnS%;68irYgWfe!{utIt4DuA9Car^sVNr%&tN+|#c@ zq7wqA8XLgxKQ^AclD>pKg5yOwp2IG+%q-IjxlJF-rr(w;98 zZ?D`^3An~?!hIYVJYIP`$gbndc4?g5JKa~-gv3RoeS?|aI@dben##u#2UvV<+Sa@~ zb#=}=UvI^p%#@P}`|LN@nUFVqzDp2!NoAgry!Tfb_L_EVpm+3sktCpM@lIon>+yCgI5I$L!lIUi}Bx;Z`WStzL99##)rxDMfYN-hW9+d}av z?~J6~^_lW;y71KDQg>i#zwdrR{9J~-U5w14Ow_AJWK=HLFYX;m;}tsVyY%_wb1FgV7iiIgWmky zMc={o_0O|D$8>hO;1>J>jmY=D1GiGb^lNIhK=|e9{Rax)3!+7Zw5H^6ONi-EE4pvh zr4ro2sIj2pgrDXeo=vtT@q-z?g4fbQ{227y4lY zxvL1nt+dk+!`p0>XXHu2D3j5l1=z(k`4Ok@>G4I!qU2|`mj!Q806?|4M|6Zy0VP>(VS&?`p$9s@Bv!+%L+AcmoGhllw?^<2Db14{evsDBUTJBrm$y0mqo z>u2(cYtIvR5~@3UpFe{7YWZptEwm+ee}a?nPo_$UDQ<3b>)iBhLDyNbal{wboI9{@ zTOJy-exr{NVAM%^IUiVmzIATVvmNjhdFfjmcggv(3SVbC#EDXJ0SZ^X7PRGMTO5cUXYrjydHEMVI1!qh!Jrqeaz$e z3NP2p$ll|WBh97zr92v*#;y`H&=C>E%VPAlfToa1u5DWe-P;S6h2S%fc47YLqeqAq z`a~OX5jyIS_gAB{zOHkXIq#yq%-u8of=!wA0YFLVwmRR#Px~~CS)!)RbJF*>)Va1P z*QcAItGBDc0gtv=FUNMwpWEM>g);7#UZ#d1J>Ec&m($#v1tAPJ z+nSPxZb=@MW1l$;*Mjnj&m0|*B;>{@$FlB{k)$H6o0s+&N^Up8nU0q&E zewQ5DFKXhC^~8^efM?8VEV|n`sK!r-)+8U6j#K^d%93PKXBjz)B2DDmTn~aoe_bDE zwhK&Zuv9zqD}SgaL;`V~I(hjS(*t>_lUF!3qFm5Litpu`nV$>LGH%F9q|6;1dkE&4 zBn%yQh%MI(GTlsCH944viZ@@gG^P^hMTVimebddK% zXqk$B1}};2LI#4vUCh2@`Lv`IJFSK=$4gBs(%(1Z#Fni;M#&L}bP>OHN-tNAo@jfK zfYu8_OXP(nfyWW-Kn4>at&n!-ZrXS4aL>bAcr2);6U`SXIi)#XAq{_ro3-A!X2?q& zj1bB1$r9f`rJo^w?0L6s_+z?nYO`^bWA*$zZZTD@FA?tR`@`GQ0zP)R401X%ch`~| zd$rnUjyyPdRr1m=yxdEr)hFr$3YYik)^g-kKeI!W*gUqxhaLw!^7>L+@8-}IgI6PH zxo2XFa~F^*mZs*OMd%#yE4AsWGJlrki%XRf_`L+A!lx0#V zE3o9(bmxCK?S+<5d^JAuc(iZf{grZCmVA^*8r|vx5?st$-?IdQPea^#;s!YXl3vZY zf%mm$MWiapqkG=llp#`}GW?dqGB(dI3>v)yPil zsL@>93U>x|^&VdsaP81%{C4cpL}hHLFu$ryxkWbtBVl?+eBkV?HML7zacJM%lOitf z!cdTD&?1oezB+s$Doq#lse)UycBdF#z1-I-DgSg$d9_8V(Xq|2t&nS3TH8U_a)c$0 zVu+xL{7sTenoa)G1h)w5Za%!3wRv4izCcmIT{`Kq;|ipwW%G8pTnyHT`@MTvW!#Bk zT)(C!yU~h*^Wj!SIa%}W!7+{&4qS9Mi81mpN-gwWqxHGd5?dn^Me;srL{B9>2!$LS z{FCNlRQ@A$TW9vm7iFuX59DaLlF~BDE-fUUlk}3yBn*}1Plk&PMcpFnD%~4PR&qGE z%OwQ&N0IkDneU}YHUcAxx6W6__e)!`2k%@&SqGwfW)!If3 zkdz~(t*mi@9 z^qg`Ufd4sp_XF&KqKrLZZD|=&eI!w>A~Plv%q7jn<}6m`QA4RkH?!?c=j=&Lk_Z`_ zK_DM-gyqCVTKzOrZPyU-{J66hDwi;Tea`s%T}W32@?l~)=7Bjbyg^ltcUBepnProz2z-&=l2YXJgdW%Z~|RZ>5{|Ow+oH)dGKJf&B-_ic^dIH{OLi# z3vtJCs3R6LN^SIq6@<7}iBZ3xrTVm0$aYX07wi~`;z)X#;R&2CJInf8&pcn^ve=#@ z))g`HLpL;aws4LjJJ97FZ#bQ;7hT*oF`Z#LV7+Ldq_-0L&^%`Cqp&Za>Us2qv2wU- z>2tV@yTgcrF7`P23VWpQEDdJxN&_%v@T`gi!8>ZWepy9r44%!^V*i3LafR)WJG_4U zGU};l2UdljG@TaZ*zU)bJ#h(E3)2y63fqwaF0Z?JFDYwhWL|lP)$y5D3bg}sYRN2@ z>&|~QHLpo&OLmCO1*|o3kJoR55_~a5s~sAW>SFXWY{yUTA$T|N6?`V*@M%0PAU4ZZ zKYV+b(B}YjD#wPZBSbZkZ$~!dUpFKvbGbaZ?F$`&IR1x7*<9v=I`q05fdS}l`_(}k zPU*YA8UdVD8|Xy=CR(C^13&b!EXZX@-2tAu#Un%&Aj|}&7@#ujXrgI-z)!`qZNC61 zyUCE>nLxhKc^kIfK~ogKJ9!DV;m0`yKTLWfnM848hQJNWzj=9uM|nS9d4o_23+(zTe}d&qU+|(@Aej)N0Lgf{QGD%cQyF z2_HpNftfA66PRwZfEzw6!IZ(Sv6(DgRtNKzY{Iw@1y!Iq^tpehAN@`b zBoyr^_2#^>{Q-XEVfi{MF_%_n+2|~hrNji;uGo!!T)-oaoLq{18+RIGT@>Kq-Vynu z7<*$WRI$p^7p)@=&%ZrWo6;He_Mkk~=5fY+P6m_-<08nz0%@kN;8>!=gpYi+BwJr! zp_u(Rm@9~Mu54vd;=E9?+F4-EvNW)m%Y5FtEI}|&AI>euk7`cFF_e%|?YdRJmLTd> zRgtMGSsnMb7taFqSnV_<&y|fKW>F=)k}-E9U9FD6>?y*7W-AyhQ;}(c#G_fYqd3_* z#Dvdc?zyV(AS}>jH#wX5zP2|-n301T^#j}DHL~;Ers78mVn%3cAq=KIX-!>^IM;)Y_y;&uL%>9^LcW zwxZiUX|oYbj*!V_+pavNNcb$s35iwAtKH~CZscwN62H050T5Yfi$kgSD@`JleKl!6 zf5%^6GsN7~|fq{NU0@jb#+5nq5*0TD!QjYDUd zDIKL2s4@TMfgt}EkNmDQHt2TIr6Ovzq2uu&6Ekfw3^mYF!jGRKsyEC$tt}G5dc8Uo z$4ZAi^r{f5^kBz0$QVef5OWuA&nzD-u)J2VKu28S8slk(n>)`VE6L1}qht-{>tUoi zXK3eVmky8Vz~ZJXb{w5CK;1*o3xTfsU`t>$t9c0I$^XOl`P+Z7@i_l~vQZDa`Ey-T zEymUzekrQ5)P^A6{E~QV@yqcR6LjQ|{j!Dkn_qif>a2wDgVqGFh_;|bb+~08gKr@) z2sB(~1v41rB#;C1(l*f*<1f^$1JrkGI)H?yu*IMG6}c5r75kpghfMOdE-Z8)$XBIT z_Y}BPf>W zX~X4TF)~0j`Y0+RsJ-mb;#+jaQ@HF-|~pPx$e#8D3uy{2PuuU^?flGKwerluwm1n$NX>XQPR-noE40id?v zxE$|Is76xw8XsrkF3Q2vLa$7m6fmqjc)e`cBT$ZJwc{t{FH3;J<2M3M3e~T^2Z?I% z6V4!K*qVy{CJ%4xsNWD*=vj{oDQ`LKUc2`DPR|KH7Pyd4hNdhD z9%I0z*SJN!RgN493QczWB!~m?$1KqP?kKxtEOGimI{L4qbs59uRWT_%i_D%orde7D zJguNn^7N9M;PH5$3{we~%P7KWGV#ZZSuU=P!v-*Fx7YOPDbwZsIae^iV!={Gi5);x zV8jtZ2ZrHEv1T!`#A27_O%@=*9H7}uqkkQYfQ3IP%;vR-u=yVuNllVHwCf zccX{$0U@mUF3On>6~COWGHX9wh!To1?H>=q6N63-Y9vfAsgF|gy|NnT+qes99V1E% zpBAa-fz;nLl9i=uD-|y0NdNY|Eb!ZRPl%?hz4xgJ%LTp*C;p$lB}Radzza*YH_MNJ z&;h650Y#HW^pu9v@R7#BNlv-*zo|Ts{H;=js2-@Y5Bj%C2+*4EMnf$>y_gS7#ISAP z{G~vhpTURy>)*jc{RxbT8A3H>H8c?<%=lupuwjO8@5WucPyd6s%HCcAQK+$MS)nPr zU+ME;=2O&_AMB|;vw!CwLQs&I*nr(R!d>MgxP+SvTG%^@4H+AgwOdg$6q9eDlEx zDR=etYynkQnfJ1g?Lt)E-k|E6@x&Iy=?Z0XE@CyqE!0v!XP6Dz>M!k2aaz`<`shYG zX_|vnofhdM)4Pc{<_x72lhWyRtHgoaMLw+>2kG+$)}>8!RKUS_Zu3RuxPB8G!?7AfT$T~UL`yi$Ygr2jF_Kp`!=0M%$rH5q2=wUa)Wf*_zD=D3in{d>L*ku}uu zxX9CVQp?>gu)xO-++O~V@uWBtPL`BK{w!{)q{}czTyxeNH;PHEaLYfGa1IksmSmkJ z@|f?l;3Yk=;QdEo4#5F|vv4~4#GeXX{-?sL^y`p`*v)cI52YND)8Y>fBM!y7&{zFA zKNyB*EAv0F?YpZEi1i@#lrE@3Ygrq;h*fW9M8$3r{9d7t9yiy!=-=Cf+OvX{aHMrZ zP%K>5=x3RpMjDQ8504_p6)K~O=Jp>CEb=1EtZJEH{C_6AVx@0Hm*(=gi&}jdcer%}T@v#g+-agM`O=SFk}_0WrEo>w7uM6)vB9 z^myn&QTzNuV}jcdB~~Ib1p83IZ=;~3`B&k+vb5&s5EHUDN^$A8@02Hd(cH*P11OrS z$rmG7(8IC#`{_a`G>y3FQETm*K1-+7%$jQ&WpB(F0=MFI0-h=scb3o95Vz{{hOkZR zW>`txo;GOoJ;4+$K6)vd_1h%+JoG(ieV@aAQ_K88jRvHKmifK=9&g!LKuj|HgWAPp z3`ot#`6u-c3iNQK|AYFnvmdrSEX!cStL0;dA?$HQX%Cw1Y$iRuzw0j&&4Bhs^0pHp z^l&n_Pz@xR>V7*-Qj=}lzBo?fqN(bB;f~!NwBNhzf)7oea|nNt-#HHh$yK2LAa7z} zM-ONGKgeecrMDiVk~h~J{vz)+lzvp!c!1MrQo{Jr>+}QqNTnr~slz~jv%|kd;Gv$a z6)uC|z4d7HQ||4<;?DPuLWrXLXL?PfZ$BdeH3@^>OW7i{D?IA6dA@QT85PHuu8jvV z^yZ}-vmn|^rwy_S1kSE~s~Qa*$Og5k(;TWY$H3N$cvtBmHg+G5)Z(qSbSr zBq$UoAQb3J5B{G!sR*7j}oidR9o)YNK`rSnfj{@|0Iud;am%XYzwf7uD!#~M&57!!U|oUbhzTPCKCXDr_%UB z=|O=R_Q)@(ey6hYUc2ma9;L^{V|enjE9bi=o_Fr3D)@iC?s#zoZJY ziFXIQC-Ktvx_I2QE|&kxqxOB_$iUygu03Z>{xJEIz2dfWuywY6urYD@qS8K_QrhDK-ze9H zt?utEpB{oXuTe38-$*3ZV@P3YYD+PO%+nn-c?{r;-kDsNf7&$o?C|L3V>zwF118p^ zHG?v%GtQ#}0}cb{xnzR!3g@xZJP_!L0>FTQEKL>6BJuZ_HSdKA_9L1y4}@$ACdc9h z?mD)>L-9dG{X#)MLo^dhClE6gQ*nz_+?s^Mf{h!)&@p#db7n$kHYYcPVJQOC5Si@S zqRlSB+MlVngN>N#4Ec#1IY)HHtD&7`!GAB45X1iLv*4ki+mJxC_TOl3A{EfuA(y|= znC$MLCI;Cwmc~~4;ftF}zhXDrT-3UOZa_s}h?4v|yfb3i{&YBgB(`576>lKQ!Zwzm4#axIz-@*bD5De_(=hxotiIw2+|1{8kZYV? zcv+@2=xY-52J*50h>H~YEeLiEyVc*JOn=T|imOCMpq4=6F@?+bJ-@B-E714=LD z@)}T|-MIx>a5_RT2+tf%(%!9)!F(kt_^iW}l-$tj1A47Ke*xwi;(^7~?OKekPkrW^ zHVJJkztjdS-f1bYc&9MX!~WLI5dSQmO_uIo#jEbH?)*Nn6wmyZLbyKo{S*A{F+8e? zZg5LO6{_qKH)_|YH>L<|Z4}GqA20iBZ z@&!eWa0o&7{Q;pPy~DBsw$-!W5a&H_aR3ll%$=4mZ$^=8n6)w_1w%r)H0w#6D(0Lf z=5spVWPv{p!`i7<8_!jo-{GBs{7j#Aah36IUH3zQ}Sd)2;)nak8oBuDu&>3H~bd9CeedvnUcZ^gL&2AnloK@*C+o zj={4H#~e=Zd6N=l&tRTY)RVrKGCN_ z)o3`Ycv9XsbI}bg36{N?fKKw$I?6A<^AnweEDFu^~IH44{-6uL2(ju-awJ+0M!a@hTnwix>0= zivVxv1C|%?J?o-5ZoJB2Et9zm3m3hy=Y?JfW(iY%K?Uua4P*`N`Xm=M^l_WHD;E2~ z+Hgwtgn_l|E-k5)O-L;Pj1c=5@$H{fSPRMkcwiC0$EQ-Ju;7yka>%H!(Qz>9r>ZUd@E6%>;AP1HG6G!g1oMi?(*5T+U{M@W5YCkd*u1cOZRp{x7L5RYAVa)mohe6Mbq%hijb7>U-h$t zF3~$FWbL|o^}ew2o;3^2RH~=3TI=s{T!2)fs__@Ok+%K<6O4xUAt~ErFiB3C)c8I~ zzQK;WmlFCb=l+G%oc1?}{{EOId@-ZU5L{H#0DlQ2pCU4l43(3gPo=ivvji*oq~{^Gm9~*qon~oXIBS*~m66GbUWC)9 zKGFoh`4BKYG&o?SGP-TPWETYx_2y^t*-_(xt6t15KFg(CdF;NZUa&Q6g=B)?-h$CS zQx%EM?A-JG zTks1C!1l7`Ja2_Ap&|gdo&u?kXw5WxN63V0NTR`oF#`)o(UFSz3}JEd2j6_0Le z4{-sCPjl--zYq_!AQ5YY?ubaB?qawpjeTeedfHdr0JE41X5k`nH9a^S1>|C#-20mb zKCm_cTM#`glfx7!^2F`o#A^<}x=oo_iE%cd5SrGNm`wrKq{JJde(Z+P zZ^D;_3Cr-zQDw4_-1_{rtsp}^Lu%;w=jiy@f;~}N+&!0!z4nW>_+tkUAU&5@lPY$= zH~#&IqIPR;o;T1@Tm|F$-S)bswB46G{&A4pNP@C)TW(of%@>cX5JRw0uBcIboqY96 za(6cB@>JaVbt1pt^-DzAlW=cf{x^WV!f$}%us;Co?p*_RA%@yuhEBT)qn0+^c+1n} z?b^)(Bf!jgGsEzLwwf>Rj*#&IpHe#fcAH04{dNcXaNz9ly->h=E(Lq+w>QfFQlJw! z(@)?C=C|brZ#5KxZqAF%1=C}{dpbkJy^+A`2|8q-SOPK>UJ(axhrdRd@+bWv`(N}$ z#^(H6kU;YX+s%NsaL~4c0rvk+rvV?@eR#dWLdK``1HRB3#~q zV>8kx1%t%I4m#|gOZaeU9dkz^GE*C04fvb}BK&qkY^H*&-R5psogBlLF|`9Q{tmk=~Cikd6# zC(L#wVLgkcC_Bi-7D&+cnEWaZDP>~awWuWboq~;}IGpdW2=t4wtZc<#(C9c=-MtW! z6oiFr$k$+WhUWkZN=e!BJlSz=?r@ei6=-`FHO3?rTiZ{~x|PY19EOHF#=KhKk+Bn0 z;lWG}Ri}=%%Wi~jofj2obn)h<1A~S9>QLu^Pvzqf>Xg9sGI1nVv0f=G(PDfwAng3H zow0dfT)sR)Qwv&i+0B}P{tg$%>|NZ*6zwNR(VDKI9^>NJC@wQ|4QocZ|KRA$j2Ejp zfZaqc)TWk|>3gL4FNvjc9SU{IsnKt*HtyvJ8wW|6A6V(eZYxJ+g^>~x_n&6Xpc=GF zux&I!=+JQzHB%!kG&;CJS(Aa+Jz2Q8-(8v_nNC0xuiMybu3agcC`C17U|zR3MORdbr+QK3RMBDY~v@9@^Zd%>$9jeP&^No zXB70mF?wiefkRQM7shi;Yicpyr}MP2K>-=#6Ctk$A{^y;Pt?N_!>VhK#3=i0}vN9WJ&hiBIb8 zYYeqg1_eRJYKfzU4rYtp9$Kdj5IGwt+3`05r%KEB-iUK*Zeg-hiRK0jFi( zY%2pOl0@M6lGdEpxfI8=+5 z7b)Y?cH_~asvbeBe(98!-^}h^%3{P1qjYT$3tmGs%@)l;CKG`SfJ+sIWV)bC&u{>W zpjE|j2Q?RhyjDL6f}@BO{GkZCu^*T%%9Je%pMm!Tg$ZV5jl5Kpz^pO6h=l3DrP>)5 zm<=WZsh1sq8SA{QJAbSloN^A`_)xI`i}}eVt0)J|>x4%nSYJ38s}cPkk#=daKdt7Z za2$*3-zwmd|5Op&eN7-=rlekJ>0A+TsKA4$o6__R3G>Z)iT{#B^o17V!%`5!XzGu- zMS*=1rqZ++ano}Yn3x1P+Z{TzU80^gC~MK=w4Hr0i7BeeE|QRoyo0$B&p8OziG8Zf z6;G9;>*6nwM3jL?8q@C}9T?NyAUlzwIl{MQ!$*3@X(X_CD4fOUc*Qo@mdFI-z{k^+ zt@5mvm*P8{RS=4`D~7BDejPkcj(>=R7;N1oKlyI2{t~4;@H?tRzG5vlYb3^&CkZSK zigGbJP4Ov~B{I!J-lK^iR_D1qaqv@?7Fj+s@V9ZZKGK5)wY*qSaO7}TYbR#BsU`Sw zEg+EcUqG0@fpq>2Wb+$n&Ud`SM=Iydd;x|gV!gyPoZlKd<_`q^GT^htp2-@W2Ke5O zRGE4iHboNdA|oaU1BPbq8%Dw%Ttf)Pv5>sBQ2rl2FeLri2NbxzW!-J5qJQU;8ok(FUm=_T_38W~TGbv<4hUh6UFM53z=-_=EmjrUt1)G(C zF+vg!k)M9YKiN5pwB*n~nJeG!aq*Jq9r>T<_6^+wW_dV3Kpd-}Kyd$gZePQ~>5GJ! znW?eUpGWw;^^)@>YfqmaF&mBt6f%=QNJhrIC(*zL^~ZKEQ|=xF%gW~TQY+(*KhZV; zPw@+9`JoL*OAQB|`h2Gm{t(l`<~W2D`taua=H}k{?A@|n!Fh7OiSW+(aA4cwv&3Jy zkhST1eQvM|pxRtJy$iqH-Epte?|eU)+CNKse>{JGdOLA#d(D~}Ti3gKzCCNJszN?L z&$rVe zdgpmJ8gq;v$_h#gX-eMr@NMpJUEOzd=u5jjv$*v*|OVvf}wZdAu-6?7jNF zFRts=@(b7!_U;!AtX}&h6Y}7%zSRm4@DcJ7@xMF2@NJaex3yJmGPod@%~y@QQdD%6 zqlpQPFSN~jJD9aBotn4JlX|l9639#m6=1XaK31=qBSDu9&A+y#->w^ssC6-AZf^2T zPLw=W-t1i)y*_$5w7lJI64lE5XB(OEPwCIvuXf%0HDVr+8V4qwPdcUk{avH}1Jj=Z?>eso(a-|T`ARKSE+>emn zZ8u|6VABh|*1JE{dc9OD$hUV1X(}MSJr5Z)mQ8SKt!-{96cq&$B{7u|sYgeT-9A5W zKla|v9@{^@XC|Hao+m{w?!My@9lVzegiNe@_*tn}t8Z{Vb;KVZhg1`JVH4v|@! zi_b+V%uRkT&VW_oQyFl%OA8@WuCr-Y$;?_8jygBzg4umuM$CTjaS0^q%v$db1`Zu< z0f%saLu_}qLY|uVZ=H|ZQV1Mfm3LEPE4MaMHR+jmDQyN=s{@CpJGVa>_aV6ok5eBn z?(C;rXT<{2-l{ikmG5+n$LwLOC77xd!q+V|0Fg%AK5|+c>zhqwL)xBsajzAFy-ZW# zA^Wojz@vg4&(4oS`lYd1T&_e>_{BcmupawG^M^&Rdc7e;?(|O-;60{$Mf0`>fSkRY zW_mlsN&~QUT=;iQ!O9K&Nr8c$Sg+*XC>6kvN=-Zx+*DsgLZlskSd|eufmbHg2RgiM zx45uc)TWKlHCjx@MuUfg9ZlQDDXyus)1oHxGc{9su0tl52SQ2P6@v)73I^jAo-Cc9 zb2DV*FtJf^)A@PL?u6r7dc$vK-dN01b&Bvfv2e^My&78jmwMiCLyA&5B41fm9Arag7J)yo)f3}V1WwN1#p^VOFEF{sMfV$3mC3C zJ~HB~m3|@tuNvLBJ(Bc>k#-*sw!BsOSVL$^2~zqnPNT*@$GCj79SlLMmfVts)g)U3 z<1R1FWi!`;T}{v2rszjZNM(g=d2q6(a#SpiNEp8_Xh zfD_e{&5(BghQMEdX##mo#p|Nj`5pAH?B79d6E>jug~h*7>VL!kf%5l&zoY!`DsVWO zAnm^Au7GjN&e($DLs>L|AO!{i!8rb*^)E>)V8;xo0ALs_FwE+&ux@}Y{1&rB!*85* zFm8k&zj6K^@HfxZlJ$^tI;0!GFf?G;Z)-?a4rS6$NO#v)QP08qB>Os)FICdXgs8~C;ZKI-!ZQHhO+fK!HDy~W@c)QNI_rCAk|GoFO z-Llfs+D;$6_qo>GV~(}w8Vs$IkKm&h4CrdJv$O^&`v?yPjn7V_Kc)P%1MpeADr09W zr}v7>1nuFYtal7PPF}A=kB+h@27aPN;YkU)Px@@Tal5@-^R|0`oLDcMTR(ABj~;M+ zD*ZZ%g!TT*{Tb%U$?NQGGrI?aKf81L_ZedibW5j6L{1GM{C>Nj>%j#AVbs#j`jH;s zGqcIg^dnwN+oMhgZw`X&onmu=`-;_G|8}8E=&I z*GJQK?>CLFbe!972+LCYxDx+Tbp&~NGXBpb z?s`&|=EN7@5!O|&k=SlS{gh1vhM5UmdL(II^=3ONLmqeA9hfYP7X zL*{NH5U?B^BD^OmZh<}b#X}3>s9c;{{x{-L__M-F2e!4?n+RCVum~$6hJU(pO!;K# zQz*Rh)U!fDbOl_Oh~tf#;JkobzsfCpD7xHZeM#q_>+(IoZU0J8;3O~e_3eN++e2Tz zzvm#4|Gj<;!PRNq`}y@XR!kuC$md?`ZSi2D;k8Lnj}u?Eg7LL&{RbBlK7$>S{nHYA zdW`CAkNl|nZo7}ybK7Q)QGBuEpom>cLOnmFT|S|BdiCMSG|!3JdUek1{R~z!kx9?!BK`{p#UG@3V{O zjxzv@ez8>Vq0OJ`9(`-4gE%ti*zkGVMdw8nu(jfT*49Pp;}qYDMZbNSm72?4{ONdX zzQsTfR8OG(RBd9PzdBudr7DpC62*(4=P=rg^w>#l(8}Ac(?_`EJ`L5rNkPi!amxM2 z#aeQDL}M zbO#y}k|X^yJCa>b6T0PdVyco1{g>OxygK3KJJ$3bIL=sKLevGePMXhNQ|hxjBI`UZ zcHIKl1NYxedzj1{4Y^^TT^sTTJ!7-YzD;~Kca>jYP)N-`xL&(MRPhIlsI4pe{ipgKl^pFX3(3`nB?SCAS!j*pJ7UQeS6eVI{f0SHTHP(6u- zYs}$TZ0b(xCxU4g^X1LYdWM_mHD`*YM}*ZG-%ANOY(rKb$~LrO-@V;Uiwi{Lu{4&m z3sX89ttN$p=I zC2;Rb1vH50d6Zv7yAw^yxGVc;w?Ab|s&GwHJhkW&K-P;iU3rq%BI)XYeXD&|hjH>y zVHN(?7Q_wWm@SduxrwkVM+pC<rsT)V5%84~eJ>KwHVpwE2HllV1?6Nhpq4rk(#6%r7ge^B(sVtnDf}nN{FBJ}C z>b)(C;u0m9iK6`haTs!61y~12<5NeUqntCf&sQsT)_!?dTKsiJ!)F@DMicucyCo7F zBjT2Dpg&QWzLzkLAbDOdJ?ih27=)LNev!>0lK8vr(nGU54zsdruDWy()8u8`z{#_- zA?Cb%0z#}w{pX#WCf)HyPVK3}&KhTi@GhpA}Sm7;DY57CHbJ9+Ir4xiAtVw)Q3y9U2_TlY%EF zp2|}`Q4A-%HQpn=EvtQcFsa#I7d1*fS~X zD|W=egsom)okK$o7ipj}uMV8F-LcN&0QDo&I3}A}-uszk!UB}qD%L@(M-`UGStW|q z$;-Sr-;a<)uU<`K}eGNfYYJ#0;oLF}V-ySm+F^0>^NQ-ka~fxLl! zZ4T`n1WV(e`wU7yq_ERA9}5eP{ob;9{XV}SUS2m)j0Xk%Tfzvidmbxf*S^1*co z8(Dg7_x&}zd7h@{2L_DEV6nf92%M&Ek)1MgC0yqS?lI3 zvA3iO!TveA{efg`aE90{fC zY5B^no{3VPEcKtp4VEiWQorn4Q~Psc+xZ*2`rC8tOW9GSelBx#Bopor`VK3;x4Hki z^XT-DY038D4Bg!fXiL2Z``%#5oZLE_!-o)?*&4fgc3oLb;khcjMVG(QjBFP|Vkd4) zGvfbEZjH*#9Rx-jgyhQe)}#thTPUlJpil3mc`#lyOqD}YUSUc_$Z9x9WxYT}x66>* zji#rGrkC!WVnM)@hd0A2*L^y`*SNqph|lbT*mPA4ip>BnvaDSx+n4>gLfv4W>ScXz z09@~)qui{VIvYpI3yQGXPXa!ZKZUfe6t$}LX$#=cbTw0UaXc5T@+xU@WwB>^&Ih-e z6}N`)7@Xo;Y-ocsYe9unw5p}c^IudelB0#TrgT@`s_g79&c=!EHz*@{Ozc&2oK<7o zq|8>s*;m8b%L#dznV)H_Oe_8>FO7YJ>uU0LQnDw+qZ=c_* zHf6HrcW(dnz(&s0ak(V&-PPS%&eIyWcS?D9K-+piJ5gS$hHTG$kY>6ZOV{06&C@y! zJY>edrJDn!(A1#J(>i&5yKx&=tm3P?_4*{P{1D?UX#$AVqiUJJb3Ah` ztxyI{@bEPDS3fqEjgwQ|xNEPoOwkhictm*LQxD&e;u|!GZI6BCjTi>MLVD4!FIo30`j<8Jb5_gOtj*5?RISK-3KCMCphLB z3PURsVI~5BP9cUuI;IzrP!N)YZu)%I0T07SNF9-({R^42P8Y4Nv_jW1tS_sN}w45V)k9-ifqJwk-b1j}Wd=n4?_KSLse{yXHw znmI6}>*Ze|d7na->dpTZG7AcsR4A+uQLZmXX`+|}%-M>@8UuTS<}n&sI8r%{Nz`B# zeFWal5Q4A;5aL#%!wwM$vTfvk7!oiv z5ePlz%vl*LwOBZx08v^N|CM6YaM&iML~+?Xk9IAH0VvVNq+1-JFc1A54USBP62#)Xcl zS4>NNBezI)CJa(!F5)(K2i*VWBP{}9MCrn)tpzFm-i$yJ5F=~YgY5rV8Jn#w7$*wZ ze>fJN*WicNLOC+1Up@}D(YYnQxE^=gp8@mvKMxpyfb`eso#W%v9kA}3w)qOo3b^&0 zzjmBnlls#^KsO}ABje{i`xwN%)9qXJzLF{XytSo3I`$jJg+Wc=CBh+0WG05AO=u_n zeiE7>8~`~E2BqcyG3Y<&m)nm*^iGHPdvtg(b#`M~dm!{aWy7mc-iepJtBJj*jlH`| zaw0TX2Bz$O_eS5Jm*|InIvE}YDzj?RXw>Cv)Dq2DD{1&5Ua|^9dusbL@!P1*al>d7 zM!)PDt=5^ym+0c`@#^EDT)n3Qm*d&m*ZxYbg-Rmm#{RA%r(&pHz45FmwOSJeqe}G# zs-vw*tsq~dj~CK?gosLnW z4nuq~icfk^)ZRY#o+x_0-v?vTR&(DZk@R|5^gj3rp$`&_Q~*a%6wPOJ>51!i$?(!P zzoegvx_mSvZ(jBux%M9?<- zwz|`^`U7|c(`w!{NbEgkt^%1Z5Gi%QS$M}=8m3$NDC?ImdLPB-$Xz~(UGKLh0x+MSpg1Zv^NKjXQ8+6RJ(go9Jr~Ij z=WKp`OTgTF1mX={q~@YVGqEzzvrRLxkIc1xi68KGm34mux|WvNot}B~vhnk!y4J&X zpvBNv(KNFAJz=5SR8LS0RNwt=ebNH%7a*{|%_Q)Sj*GfnPJcX0tBf9kRK#gQRvLAbae*E)T?H@z*C+)jPm-#h%o^E}vqKqIei^;K!c zZC7|8ko=Lj{nkrFKvRYqbl?+6g=V!Pcr{Ac39)7nkWvpL9xkE#+F6-`iIvm-_QSu`QbP z_MG3Exz&%8qk*h+!9Ha~`4yGkXL9PYmwfk>7Ff!d>_342j_1wPXAXi7V7N3Et@N8($n>Xl_=SMYiaSF zYY;Z@++bB`<@V*$S!aWHPitx8eCK)bGiIe}M%1m5O{HVp+Hh~&{;|MQ@1;@gBiH%x z_BOdMn0bZNXyPbkZ<)^gv2NEqmJ_2y0j>s)TFdM>S5HVD8 zst>8>A_%QAcfj2a#PC|LP*g$JzuOQIx#kfPf(Mf#(ju<(c&XiOB_N{lx?ElM{CMAv zp8hJ@{5cLR_lOqK_pmw1bywKo6IO<}!zWj6`EL%&ValHU`!+=6SmdoJdH%<=toYYH zEjHxBuAo8Ur*@|yj_54ldM&7W(XmAUkIGN&$23f080re!1HmPV+g~uMHyiem74&AF zggt~k@IY~?Ye^UPuFWUKQIoKQEQ0RD9S4xt*N5&TuJXHZiKMdc)KU#6mGvTUZSuN; zKgkt#1><73n+{Xtb!A-z-UZxog0U;;iIog)&89??Q#1L^!5=*qQsc8c=UdYqE&r4} zPipN5lg_zQQc(asV$iX`Jz_Aan_-|M1U)*kAxgqZ`lI5GmX+Xd6&|2LW_mVZgHkH5 z?{}{XZc6{sp`3RD)bZ~8ZyoRBn+>d_{|^$b1)5pD!;dctDN1_Z{;~os?T-~tO8zOv?1}%%A4F{V)Aw!cX-vR#}K~tvk!<{b=(_$rqx`=logM3 zRFkc3J49#i%+?Qd{i*dgj-7e{r{u9}f(365F26mfl@-A7&0`m*Mmo?&(WGw(+1M8M z%uVS7k9F2sBAQU`4cj?HVtp*`0`Mc$Qjhm=Y~FX{qUBJOTv3t*rg;5~Miuc2&4bGE z_dZC1(j>YI_WM*iqUo_L3>&hUWP@8oBff}Jz(j&o5q_}HVECMpzc_t+K1Nc*1#0wK zoN$r9WFe%+8@6ksDQ@yoQ`&iPAYy*VZATTyx;G!gauYK=vNbpHQi8_d{T;mNjCmLb zvbE%$T%jMN$r+x*c!DY5rj{&LMpvT(u`^ z;W2}oPpYRjH&GMGVI%?t3?7YX@Myd=jcKhS&1_VWipV>J8zOBWw>)7N$uW%tK7@-1 z(@ehNu*B&~ZJqfAXqt$Ux@y)1wo|4ig^9o=j3Y{~wPf4rf0M;Uw|?)@{j8?$FI`Ja^UiLkn|YR1u!peV zYomJNeZ&1VkQRbD z`iD*LQMKeG7g){04$)|m=gWk3cQNl*vyf`X!UO@tpNARn3%*&2)|)x4bMN3ZbwV{6 zc@mtGnrP@v%w9OK4ETSNy(SfO9u^f=DiH)=1{Nnm;idEt*H=I+oYV{xQP!J-CTRpE zXhN=N7~@ZgD}`o$K#cfIm4+ayctBRJJbWHu;!z=~7!R+);)NqeQ0tB#CF4ZIyBwLP zq6?4Vtd!iN0zZ*trC3iTh5<_trzEBsnHTX=Ddk6Nb|WH=fpLsoRuHek5@mjnKKr@f zCNJX8{6(v_Dl)Dt7U4;q7qLDmS!T35bCQ@aC1dwUN-ctsJTAtVQmYd7>nFsw)m>Eps?<~ctSRUaoBxVI@fY6%$Un$i zoe_7=@GA3?72J5ig<)?Y(AEL#LKqwZ3B0ORGoq=b5$NfsLKuyy^N04CP=Su)q^IgY z%D`Iil$5DEkaA*y#D7sH1^Xvu?zCAm8@=HS15O38=vZ=j3?2dV{9h5K3%qQiF-FEb zj1ojy8JJW}ueOtQ>hCKQWwgErN?j^V9>S;-%lz2p&`wv93|3B2iieQ%heYP~2&LzT z!qK0()`ItoHWamm>@e-f71jFE3nC3M=Wr!AH}#8d+Jdo=(YZ#fYu@*1{7S#wOd);T zI)SPa$c(wFAxuhxU87y*CZp@jgMbp_5edpD(bAo=zNVkyPfWQWTM;iMQ7uJN4d$_X zB~_@9Ep(_jnfgDOHqd-xXG#^&T=TQ&F%bYqw&jg~n~_|njLJ@XtA`50gW-DNr-kAA zB6Lyz17QzpH@+5~K(sJ{Ysxm+?s8mEns(bE(b3~MB=<)pcw?~QWpvQseFTE(h=wG0 zoWsO@8lpIOt%;%|T$C{Ba<$NfQo1eV_f#npy16c$Z7oCa0!yoBc%gwaQ8g_ziY#~3 zV8yX5{Wu5WJ)Mwkhf#b~#5ge6(jU8y1H|yZp8X(EV?KNIOHtt4u`)94-Q0fzv#o#r zD`x!oR{qo>A}lm2z++(yxX_@WdDsLqjvJ$+o$FA+Rs5qg1P-W_Tm`5UpdbJq=fE4! zuq_E|jxH~~t!4CxMUF4Yotn?J$r2g_UIe7X%%5@ z+Jk9gO#UR1_bpwA8*F;=XaI$iIO9|3EC_iPKt-KRaUgtPEw*&?4H9V9jOi)D*C~=c z5Slm#PsAJtOkfXyS!nt=hs$z%smxEIsZo$|F6${ z?gJLM4I=2W0tWs;#`0U1O0c1s|B4HeHXUnpLV+KH&y8MgUy{CfMa{Xj$a8nfGtE!w zZPJV={7K0(G!Fr1T4XM0Q;E)0)TRE23+%0sj-yT8RL5gjst{7KaO;RFy;P3gvNBCVu|`FJA~e`_1VC291kzY~mky9( zgkJZQhH!47hlr4U^VkD^1%lp&QX_7~y^#=9mhtZ+?V5)PHp$i;2hR5y|K33qjICG* zV>U@8a;NOAx!&7E% zp-ptY0N)$RH$>Ed>w8m3J*BS8&9wBqKoTbCmrL?)0MVWSCCqGO9!wz#68Q^!A1STT zZCdjWw>r?$FhSyX172|yUy$NCqA#BY9Yz>+hMYQqf7hV+G8_Apj}r0w{}SQk_WSdn zf8IS;{7VEoG|^%}r|k2{m*`*Mzi{@E7!oUiw?U*Md_7+IE2PN=vVioRS8{m%ipRN& z{>Ka1QR;o9JoN7*_(T27_zpnN{)ZGY|6hYJe>*1hnqPSfO_eeHoaBBI%=@7V@wa2x z!Zlq6oVksHj0Cs$Wwg;S&X~8*Q<`4K^nZx0`6>UA#7s~Kl&y4H`@sw+fx;Iw@=q<^ z{=Wia|D$C7mk6-vC6&iLdjk|KDDv75>DWUpftamDBN7}aC_46crB7A}d(2Nx zig`i-0+6Nts-S~q`gMKGR@ma2y}urmw(CX&1$yJYx-#ri4=T0{DL(CwGaIN^g;c_; zlev6w-r5@+)Jr}oupaAEu z*~dVb(mybzf5YekN}rV`3I6<_cGj^aGDIPb^LG3CUJwu(2jEQPX2f(Cir6_&Klwd; zkNxYKCE;)7(d_&GGuUT9DbL0HfMv*{P4MEBvI5q>=&Xlttr5hm{qXjv%Eksbhh`ru zUdoNK`7rlcUe_#cLSgQ*f3+muW8YwlivT!F<=^9#rss|E{E>p-yEvr?iTEF&?0$>= zSQ#}4?&&wDjIF()OsH1_ph(@)b_9AL+Jex4Ws5m6M)q;Sc@`IdP1qE`J?)T@>6+mo zo!SQ^24C9F#CPj*84Ybp2bOj0!!sR!F$;aE0fh$dkkNU;-s%s@J*|r?$vyo9UsSf} ztpP3AO(0A0iDtuGK;PwSkMx%DOvw)Cj4|WQ$)cX4a@?4TemW%JHeo5aNwX9{eK>6- zyXk#zTJ7w@;=G{Ts@D&@j8|J#B%u`Z=+;ik<)mc{mlr@gsI~U?K(zQ{hLCRs4j(|W zG{+?VROdH<&L2?h4YeT2QJ~sz6l7xSK3O=zz?C$J+?czZKis)KsAuWLUL*sMu}dD^o$Re5OO zEe*SQi0l-3EWw=>0Efh@6Hg0JLN0Vv^VDe&mk^@#A*O*&s3VQHQEwj97x8&nY57@6 zOW5?v0BUK3FFZ6l7FkY8)NFBN2zquNsfqx&5KkGr32WL1j zj6h&)b=cpDv?|MiN%~1ao0>{j5g%-FxPp>Wy)0Q?Srtrlor3{!ZiX#Ej zMOIH3cBG>s{Rt`b5ud5;)%)hWyet?xs?ErR&r6sSQtC-)=9jZ0moPYuF!)J{la|WK ziT~on$>!PQ$3so!6lYCUDDeqoK4*RqX)r9CEqb`lMgd?}=zv}i$+$u$%)=tWLqk)e z1*Ej35&SnLQBizkb%3Y~4$hHi(KlG&!GoIWO$o41{Y1*CKHeJ+JWDiq_Vki2^IH@E z9R*ns?_)%Du%8=IiT}w0GdU6H%#rASoN+>h&c~{A&Tqg@L70%jpE74_aT@R>r>3%{ zp%Sci`;FUv=n&o^njn`27apWW>OW~ERjzEjCYs#I>jHl(R1(kUyq@`)?c1uiUCvic z_YnM}9;pI#Z;-1VvonSJmG~B6=3Pfx4>3xm)`0CYa@F8j#b>}T;4PB&>^2n&I#(YK zpI@;*{dL}$Q&kq z8}|{PK~d`3T+ncsRG@%9X1VtzZcza98k7g}uh+6E`k@LqPxO9JPJ=$Efh{#>+~OK+ zAoH$ok=eMVE>8?SPjT5WsFPM3@?leKGl~#EOq^8{s~}uxh8k_$au3Jp@PX19Z;WQF zJV7x|nc#3Kw!mSiJAX|GP^ifdzYd0Y{}%y|-NwTtQds_f5uiMR;=#ZfcVy4@0uz&$ zB`*y&AB$hiTo55HB`%c~7Y4WnJsvnHB}j!f=W7T9Bn)*DME#y6rxO-CR5~@Cq~p!8 z4x1cE#w>~Ma{{s=+Hs7(G8@N`-%pzVMXKT+$uBD)ixvlxXIU7KtzvPwtzbi3x+pa0Bm)utGNdF09LPs%H8Y6KjXyelZcWrl3ph?Z-BNUjPH;{YCP0@Y?#7w# zq@}a#InnXPEbk;269QbOB&__h-oJHvR*@8k$}F{)ePYb$jf;zHpv<`5oS}jzy>fc% zN}ZaY2VqOe=X)h$A^^^{HW9L6OY}A8=(7Fr8>*EzINs+#iI)V@M}nDCPv)(-M# zfDT@qq7QC!STP@^Em6e{@bWp)nIgbhagtPaAKoXd0IsKCE@`T{x@;b(#AkjZ^LePR z>}_b(rm=s%Da_A?@LHeTvoKBkSB0dJX}ynxLjV;tvTCv?$uu5)J++S%h#~eAEGBK< zQI{e?9{WmW1BYI5ro%>Gx(tchTQZif|@st$DbX%gZRQ?=RM} zpx&W*$PYh=^PyAkF9s}wfMIH;&Qed3(%j+riviE($V-ICq-g>}zR0ZElfVS^UQHxK zOiM{Btw~Y|U>Uqo8J;<@@hM%bWgduRf($*FFl(;iJPd_dej5*?VWPXAPajz%$q#|4 z*@jHtz(lXaJ05sN&w4XhN1loQA3{ZZS?F@4*6SH4G z{;Sbsp`f^aFE|Lu3GDx9%jRtA;$mrM{?|UMX0&y^l4%#$yM8xG+atj32S)wD)Wy}{Zj{qcCG}d& zlcE#&q!bG5K&+v3`M3xHhu6Tu)io^aPP%%>;A6wNtd}VSKB{<3&%9vD7l$lJrp3N(!ROMFQayNbF2SzASE#$oPv*)K4&YkWoCIh%!(R*;k9vl=$gK z6wz{!)=F%@MI$z)kG5tC@`5KB=8Ky0oW-OcTH*$*#=G<=K2qHL>6h1rRtDk-_^s9y z*8~?9R&cc>5R$jbIpf}Lg%BHBBqXodJ{0(z^vqEdt>wEQ8%6d#No=- zmXPu_=atK#aRM!oe~HYI=LY zh1VpUE#INDMkidJn?P}K?cEJZW#*c9w;?2u3j~`)9$IC%cAxPMD7XG5Y!>9nKybIN zC+?a{f>*QS17wNk=h~OwxP!Ja?P8B#3P|Pdey)MsB)`z-_Z-!weY*7232 z=F&V%#MkAn*+lj_|D|%&7uj`kQ|_mnZL$9N78K`|*)}TVq}vV|kty9NAqd-A@r_aa zG==~bc%jAc_$NIpEXUd``f@eh3`E$)62V5IDxj7jkmFtx-S(QxqyEetIcCma?=g_QaQ*D8F?z22uZujhyhvE}#DYq7cm z`p@l^r&>qKAix$>Ex?~YErb7RLG{(tNcn$U@X>SqR)fs&Aah||JiTP3Z=H6ce!Lj^dof3 zc!U~;4<;Hj;}S0EYNJT60`dj%OIY*}sZlv=gVYH!@KMR*I8k}{1Zx`j^LQvm=Tvq< zg4tVu0!Pv^Jxh$5*BWZVh3MN>YVH{60k(-oP`nk7Yhei#hUtm<*p|%#hEwPhMKHy# z(Np_b7*pT$yLTd!qz6gv5Prf&+a@K)F8YG^21blW|ADXKp0s?d~38wY?$%gG6ztT5Qiqg`y{piDWpdSEdDe^w#BYNqc z3^AsOenyrEK-)=2IofPt(pog5Zc|HX&#t8WJM z$Vx9rd233n5ye3;7j~W=3DVZ!jOP&+2_u3Vr%oz~y~o?VlT6MU6Hv(#y*y#-8MdJ^ zW=Jn4l*FoSrg%Kcd}NJxdWFq`E154^W^Kmy9HB(#%m;B6Ce|_>aGZ&Pg^EPFzcDgq zr>~(lGn2u|V^;F+GXg~_U91wtf)ycDDDQB%k#}g^d9mJ)EhF~e$w_NLV#c0PO`c_; zh-_RDcq^T0AeCB4e;N@Jl~D$|R@Fa4JJ-7B26;7AZm%A&R9dg=AIx(WsBJe=0ki6)FJgA6dIMIv`}qA5#?`YMp|+-6hl{^$@S-F_-4m8A z*Vx0A1usoZ%~9)aoSVTT|K0(tY;0Uxt;_YOPscRNE@$}cY;R+65b5IfzI2pH|3eXr z^Jy``(w&PItAhz`A$QmWX)ta(-q6)}06}ODWYshp_5%X>b1O?HcLAlPs_;c|blAdJ zHkCyky+yX2)EuJ4STEdnqjzVPkLI>s{i)tu0Xtdv@YmTpN>r)vstG)155Bl9%exf8 z7QI~+1Bb)@lzV{`<TsqdXTQOT-Sbl&x#Mu@Wy3Y1L+o$)-(iljZ%~8j zZ}LOGuWZf3Y{0;y7rS18fjGYt#uN4ITG8V-!)`PWW+zJ0Wgw|@dnG?B|C%c8lEGdJ zEwUYdBk*Jv3LOB0a3Z1luEz7)D9s`vMHY`PN?#y5_c$n+%_xj4t+9Nz=8k=@`ttZV znQ3WRk--jmqgT6nrMl2bwKvyNEJpW?{^(P=ASD$CHp~v0;4&HQv?ZCCT#_Q+xP9h= zdqJ6@6;hHTzevkM3Ua9+PpjWVf!jcl5014@?lMT^d@2IT81NWW*?%od;xFchxIo~L zJ8q;M*2dydM$>%J5H2~I64G|$iE9+8w2)u52GW{@Ewv%{dJERRMh?5?@6fAIWk(z2 znJ9FO%eYx|K`NJQOIipQ6CVqq;Ov5wPx=ZT#qnWdn5hVm0ORk=19z+^fp({!I?Y^5 zjLE^AU=)#VJYD%VmtW*CDA!agV$$(NsSTDi1Iw;2+)uAwZH`Q8%$9odix#!M^Pt%PPrVH4Z<@=}qsKCj@ojkpDJlf-LR-BZY6Ps1I#0D*lk zR%PO~k^&8Zijz9el$hZ6{jiSMc#VcHTZ6`{_)%7718~k5irpcy<1ht7ZWSbEo|)%g z*96si?@c;oHf)mL04?#WI|6TgyjvknhK3ELzc;=JbyT|2INyZMFLCY-?TEAb&w73L zkmvhhXm;^df~hU|6wFk zfj?a@u)AcGMmRnjHX@k#FqKAICnJ23ECyZkV48KqP$6-i&UP-tH(LF&hmO-X^pq4t zERKht61+s{+DqXp%M-`J`33jil=oATy4q=%mR6{W#joxx%N4`1D(#SR9T2eKlq8^qp%RxT#XU#fAsXJv6qIAp&k7}mY`4qdg6qYfU zr_TLsDyZ(F{yq?3U$zyo!iDLw9~juuyj{jgZ!nl=8+}M1;qwUAPNZIql2E_XV$;7c zZ*>Vd`ZM0{x2tnODR{MwR*LmgRt?$$R8*wg*j5;~PI3$5Eka2J=lKLhWwWZ~veuGT z@=w*s({bcI3-&K9%;FwKw9T&U#n+=z6zBUDl(*j^w@i^X}#yCd4Znbgu}$GnO`FZCpRt za#a$HNpMgZ!)WUPupuhAn;0g7WK26h>Dc^C?^;Y#Nm2u8NTUG<`SNxnDDt~}geR41 zf7V9kP*wJFm&HJX({PV9sAYI+`@?Qkdf7b>=F^%@qHOTg_b-~%%xUIfPbfHLM%yZO z4Ssy~fc1{bJ!ddZj;hs_y|$0uZq${XqjCl1e4m8SUC(({T1RAUK?Ym-{i$4qB2U>? zRXj+s>t4cRaB7`AfkO{CwoGEW!XDmQq|=xwK4g7WzbZ;B?ZyQ{B*fxqEzRnsZL7$i zKS-?Z)kbzc7)0NvPDEliwX>%7RxV> zOim;l*5+8OZFyF3LidDl*wj;vV>DgTkIHGy5O>I#45*;e$zn{X$>9mJ#f+FjTJ+oH zQ=8_&a#Pfg7b%Qyg1l)FQ*SIUhi_hU$MuR2@(t?vKK9b-VVz>R-)eP#{Z|9k96#RG zQs4(36fk>51O7I4b#}40)v&c;vUD-E{p(||I;tLSfEgX+r;pfp!gvX982X|TG8IZb zT#eMrcc_G}gd(Gl?Xccm_pc74$F_3sU_|V^fL1XnX9qa1D{%nP&--Jcd*tAYU}5O2 z8e|J)a|un?Hg`x8d2lS+@p1G69TviwaY7>U@nSRIv3g4kVRvvn^r8XdN<=+dT!! z;5e+?1Rp=0ZGDj{+k`1&=gUeelKoB{9vnH(&DVVGl8IX!o9M)u&q0e`t_wf+TeX{5 z+=hz^lj5{9m)cj4Ga%EerV*!12JvVx8t1q+TpO9sWp=zTJol1xQYqt$lieHI6k!v> zZr3|zbOjQ0So@7J(KdCW8gqv}rq#1Y^dIA_NzNj_tI4U#mUpTNzOBB2{WH04?v$0= z0}3_*3djD3@IR6joa`N({~FcoxO%%lW^}QyJp*_9<1Bd)7U*G;AT-v?(z*oheiSxj z8=}z_?_P4e9LA$xYh13E`S1mgg6s^c=4h$rDam0}D*5t5vbuUX*vZCtYj_1LA$i&Z zDMm@TUEFpYN2?d17!k?u2#?aIZ%;S7%%@t&B<;97p^gUi@W!(Rr~6!XA~9*V7*Ugq z9kD5^bh~7H#$d^QU;=lQI=!lLIcAtDez|a7m}6bPK9xyRW4GPc)y$PwY-Z?nL?Lbh zyj*z)Z`T}#S8or8eIRy4T#!E){Nmqc@nUZ%oq+yzpF;ZUzgB5+bD`nZz?w`rFuVKD zn#0c3*2vTeSe5yc-A!w3+3j;*3 zZ(hq>8BfzyWeb)?u*ssjO-7^n?(n>O170D2z1{>SY$JxFJ9AzKYM1Va&>zc8tsK1n zOg*K%{HX-Hj*2=n*XAo^`LXvNJNp}DV*wJCwzia7gZDet?b>(A^e7v?Xs)nj)V%Dlo?R!+Esy9L)Qg)L(>$FABi zs<86ih);0E9T?WZ$h8}X;*OLG`;e3xgzV}H^OqwlYITbJj>^mVEM%&E77|kFQx{J6 zUn28G!(<|+NZ1JNX^dFuW--Ic0(fM&xOvW3lH?${D5S1JrC{w>>FIdB{d$@%;=%a31=tXT+@X}<+>E&j?^e^PKzl`0 z-Kz2M2?n_w;qAiK~{}d>MG5ZywGc=YLhJXtAFh%?&kU`KUsfdLPI|+ zgRvpZ+EQ@ImZsGbGsh7B>(h6VJ10qn^g=93>dcu%aydzyEYH4l`EOjYaoLCl97&Po zl(Z)4@OSjfU&yrN7!{*v$T9jqy(kU~_-|Of*8+FoT2S1d9cGTfDgCA&VU?&hEWZe% z8x}t0=G_r6Gb*8&6BX0gvL)8Oc(?ZuPS3gBSif6$FF0WuhN7%Dj~>qX4d8as`4EY` z`rT}F;qcR_ld}FKdN_vA9}m7;O2UY0_D-lGxp!A3wWdePef41g*1CIc@4EX&R!=m# z`{v6Ibib~;?#N-VmlzY2T{Z^q_inVF{%~Y=H!%1lh-HD2J9oY4~+91&|&80`eHj z@BLAauHusAs4ySEt0X2Q0ge0#9eae->Xw5aT_5~*bE^neAt+vd=5lNOttab#%XyZ^ z>%^{Lv_OAw?he%pmKh%0)LrC{?XWp8o>kqp8+$(Vv2Vbff zr%)^#<1Mp2l(ly2YLa8IuPc8UQ8LwlIc<6|&qh22o`Mhqc|s$iLWjh%ap-m z+PvC~sdV9l9dolErSWNIPjOYwv^B%T)pF;NZK1izwc}v~8fSC<&)ETNrvWUqsqtG) z3T62Gl|U0+zeXWU>EH;zAu9QXnOY)ym%;?Tuz)Dz2QBU2nzh@%s($>wDs%TpWZD4d}2w(Py<{Ir%^g6=lUw?=?>m2@IZW=QaU9Fh^=-pSH{RTDu{Bg!=kWr zy)XRvI6ii6Dt8C04;c*S#EQwh$KwMiML6e*@GVLp0^Z&e$VbIG6KNODv%7TISwsb4 z8AK+QYuaa8>x^3;loRlqeS<}ScBm>k-f&oZ&m=#+$AQI#HBV|!jJ^sgtOPc`DmYna zd(2ul?pe>+{BxXnykM<(=fiUHyTL#9VLCO1Ni{dG6m9Do9Bnd88@h9aQoS#-kJT6c zPUpD(mcn#l9&60H^2ErP0e9;KV4q_1J%ObKlh}6ei3~@=>GwDn_2?qGj6K6lv!?=O zxx+~g=82Ro362zuLfgbOqMbM1=;bbh_qKHgCUQAq73N7rc=@0@xd%xuxxCr~%1lIf z$qnZYUP^GhXOZt)4WU)d5=Pm06{h2z>+Q)AUL(6!o#Lyd&h=}jdhsb!POHYCc4FJ| zvYAH^6|D}JO~=Tly)~V^5v~3QV3TVN6k#DvC&^{e`er0FZv6i9bDF)-?^r&};a3BB zt~cA^KDXxef`i)hIXbb4?-cx%lMO>t)ZGyE+Lwp*)+bj?7wOOWqTMb{T1Pd}x-2!u z)+-y=|6=?)g6VVSiR`eVpMaX$yuCx!ThNi_&7gBm*T2nNoi*N%$fLG6K4HUo)SIVI zr|L5HoSDwddw9F0iqt(usUwwe%hNl|NrZ66@d4xvv0ty&W8ytKQ(*5B);!ux)r%Ii zmkISqk#BC_VMf309b(25gf(|(dqtyp#q3A3-MsJl1WwQpD-Fee|Ck>ow)s5PT<`r+ zcQ>)*Q^d=Wb1jkL{!gDVF;+3J2iSjl{_{D_X8wA(S&eEYD$w(}Ts$%kL3G!u|IXzC zeez9cczx2k5zpfIv{sLdbl={)1kxwk>e-es#Aw6*!pm@s$kE!#!NurdSzX_}3tILf za?~0+q8n_5z{Jgl3?72w@4{|V6gC82yRhP6-XcL%XXET3vr0pDAw8}Hq2}&#D?N6L z&Hy6RCLrgwU^~A4$Uqwe;;|n{2BU-V-p2_c=rGTP=nM=X7&zF@0GINCJhIAHHSkZC z`3pdNiSZXhd$2GeUd81Ma7jBLRF@JC0WJT(d;HIZE@q;^@((!cEn3H~c*SrG*+2Nzx>@{JKoa!?rtOaK=mBm^hI5<#jg0oH@F#uEJiX-N;xA%hWM z|1ClAC@Z>gFaT_HC4dL9%KL9>4~_>V edauM~OH4XCbas#jR?xz#Qiu2g%fmTs;p{)9i>P7% literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.scala deleted file mode 100644 index 2164b8a84..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/TweetWriteValidator.scala +++ /dev/null @@ -1,118 +0,0 @@ -package com.twitter.tweetypie.handler - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.TweetCreateFailure -import com.twitter.tweetypie.repository.ConversationControlRepository -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.thriftscala.ExclusiveTweetControl -import com.twitter.tweetypie.thriftscala.ExclusiveTweetControlOptions -import com.twitter.tweetypie.thriftscala.QuotedTweet -import com.twitter.tweetypie.thriftscala.TrustedFriendsControl -import com.twitter.tweetypie.thriftscala.TrustedFriendsControlOptions -import com.twitter.tweetypie.thriftscala.TweetCreateState -import com.twitter.tweetypie.FutureEffect -import com.twitter.tweetypie.Gate -import com.twitter.tweetypie.TweetId -import com.twitter.tweetypie.UserId -import com.twitter.tweetypie.thriftscala.EditControl -import com.twitter.tweetypie.thriftscala.EditOptions -import com.twitter.visibility.writer.interfaces.tweets.TweetWriteEnforcementLibrary -import com.twitter.visibility.writer.interfaces.tweets.TweetWriteEnforcementRequest -import com.twitter.visibility.writer.models.ActorContext -import com.twitter.visibility.writer.Allow -import com.twitter.visibility.writer.Deny -import com.twitter.visibility.writer.DenyExclusiveTweetReply -import com.twitter.visibility.writer.DenyStaleTweetQuoteTweet -import com.twitter.visibility.writer.DenyStaleTweetReply -import com.twitter.visibility.writer.DenySuperFollowsCreate -import com.twitter.visibility.writer.DenyTrustedFriendsCreate -import com.twitter.visibility.writer.DenyTrustedFriendsQuoteTweet -import com.twitter.visibility.writer.DenyTrustedFriendsReply - -object TweetWriteValidator { - case class Request( - conversationId: Option[TweetId], - userId: UserId, - exclusiveTweetControlOptions: Option[ExclusiveTweetControlOptions], - replyToExclusiveTweetControl: Option[ExclusiveTweetControl], - trustedFriendsControlOptions: Option[TrustedFriendsControlOptions], - inReplyToTrustedFriendsControl: Option[TrustedFriendsControl], - quotedTweetOpt: Option[QuotedTweet], - inReplyToTweetId: Option[TweetId], - inReplyToEditControl: Option[EditControl], - editOptions: Option[EditOptions]) - - type Type = FutureEffect[Request] - - def apply( - convoCtlRepo: ConversationControlRepository.Type, - tweetWriteEnforcementLibrary: TweetWriteEnforcementLibrary, - enableExclusiveTweetControlValidation: Gate[Unit], - enableTrustedFriendsControlValidation: Gate[Unit], - enableStaleTweetValidation: Gate[Unit] - ): FutureEffect[Request] = - FutureEffect[Request] { request => - // We are creating up an empty TweetQuery.Options here so we can use the default - // CacheControl value and avoid hard coding it here. - val queryOptions = TweetQuery.Options(TweetQuery.Include()) - Stitch.run { - for { - convoCtl <- request.conversationId match { - case Some(convoId) => - convoCtlRepo( - convoId, - queryOptions.cacheControl - ) - case None => - Stitch.value(None) - } - - result <- tweetWriteEnforcementLibrary( - TweetWriteEnforcementRequest( - rootConversationControl = convoCtl, - convoId = request.conversationId, - exclusiveTweetControlOptions = request.exclusiveTweetControlOptions, - replyToExclusiveTweetControl = request.replyToExclusiveTweetControl, - trustedFriendsControlOptions = request.trustedFriendsControlOptions, - inReplyToTrustedFriendsControl = request.inReplyToTrustedFriendsControl, - quotedTweetOpt = request.quotedTweetOpt, - actorContext = ActorContext(request.userId), - inReplyToTweetId = request.inReplyToTweetId, - inReplyToEditControl = request.inReplyToEditControl, - editOptions = request.editOptions - ), - enableExclusiveTweetControlValidation = enableExclusiveTweetControlValidation, - enableTrustedFriendsControlValidation = enableTrustedFriendsControlValidation, - enableStaleTweetValidation = enableStaleTweetValidation - ) - _ <- result match { - case Allow => - Stitch.Done - case Deny => - Stitch.exception(TweetCreateFailure.State(TweetCreateState.ReplyTweetNotAllowed)) - case DenyExclusiveTweetReply => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.ExclusiveTweetEngagementNotAllowed)) - case DenySuperFollowsCreate => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.SuperFollowsCreateNotAuthorized)) - case DenyTrustedFriendsReply => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.TrustedFriendsEngagementNotAllowed)) - case DenyTrustedFriendsCreate => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.TrustedFriendsCreateNotAllowed)) - case DenyTrustedFriendsQuoteTweet => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.TrustedFriendsQuoteTweetNotAllowed)) - case DenyStaleTweetReply => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.StaleTweetEngagementNotAllowed)) - case DenyStaleTweetQuoteTweet => - Stitch.exception( - TweetCreateFailure.State(TweetCreateState.StaleTweetQuoteTweetNotAllowed)) - } - } yield () - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0db89d9558e2c3f0728c66b2b5ae6c51e683c49 GIT binary patch literal 37063 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 G0r3E0syBK7 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.scala deleted file mode 100644 index 1b4d46de1..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/U13ValidationUtil.scala +++ /dev/null @@ -1,21 +0,0 @@ -package com.twitter.tweetypie.handler - -import com.twitter.compliance.userconsent.compliance.birthdate.GlobalBirthdateUtil -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.tweetypie.thriftscala.DeletedTweet -import org.joda.time.DateTime - -/* - * As part of GDPR U13 work, we want to block tweets created from when a user - * was < 13 from being restored. - */ - -private[handler] object U13ValidationUtil { - def wasTweetCreatedBeforeUserTurned13(user: User, deletedTweet: DeletedTweet): Boolean = - deletedTweet.createdAtSecs match { - case None => - throw NoCreatedAtTimeException - case Some(createdAtSecs) => - GlobalBirthdateUtil.isUnderSomeAge(13, new DateTime(createdAtSecs * 1000L), user) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..7d2b3f64378d880b472e46fd7bfcd9805cb5225d GIT binary patch literal 39662 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 E4>wL%xc~qF literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.scala deleted file mode 100644 index c24590298..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UndeleteTweetHandler.scala +++ /dev/null @@ -1,215 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.servo.util.FutureArrow -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core.TweetHydrationError -import com.twitter.tweetypie.repository.ParentUserIdRepository -import com.twitter.tweetypie.storage.TweetStorageClient.Undelete -import com.twitter.tweetypie.storage.DeleteState -import com.twitter.tweetypie.storage.DeletedTweetResponse -import com.twitter.tweetypie.storage.TweetStorageClient -import com.twitter.tweetypie.store.UndeleteTweet -import com.twitter.tweetypie.thriftscala.UndeleteTweetState.{Success => TweetypieSuccess, _} -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.thriftscala.entities.EntityExtractor -import scala.util.control.NoStackTrace - -trait UndeleteException extends Exception with NoStackTrace - -/** - * Exceptions we return to the user, things that we don't expect to ever happen unless there is a - * problem with the underlying data in Manhattan or a bug in [[com.twitter.tweetypie.storage.TweetStorageClient]] - */ -object NoDeletedAtTimeException extends UndeleteException -object NoCreatedAtTimeException extends UndeleteException -object NoStatusWithSuccessException extends UndeleteException -object NoUserIdWithTweetException extends UndeleteException -object NoDeletedTweetException extends UndeleteException -object SoftDeleteUserIdNotFoundException extends UndeleteException - -/** - * represents a problem that we choose to return to the user as a response state - * rather than as an exception. - */ -case class ResponseException(state: UndeleteTweetState) extends Exception with NoStackTrace { - def toResponse: UndeleteTweetResponse = UndeleteTweetResponse(state = state) -} - -private[this] object SoftDeleteExpiredException extends ResponseException(SoftDeleteExpired) -private[this] object BounceDeleteException extends ResponseException(TweetIsBounceDeleted) -private[this] object SourceTweetNotFoundException extends ResponseException(SourceTweetNotFound) -private[this] object SourceUserNotFoundException extends ResponseException(SourceUserNotFound) -private[this] object TweetExistsException extends ResponseException(TweetAlreadyExists) -private[this] object TweetNotFoundException extends ResponseException(TweetNotFound) -private[this] object U13TweetException extends ResponseException(TweetIsU13Tweet) -private[this] object UserNotFoundException extends ResponseException(UserNotFound) - -/** - * Undelete Notes: - * - * If request.force is set to true, then the undelete will take place even if the undeleted tweet - * is already present in Manhattan. This is useful if a tweet was recently restored to the backend, - * but the async actions portion of the undelete failed and you want to retry them. - * - * Before undeleting the tweet we check if it's a retweet, in which case we require that the sourceTweet - * and sourceUser exist. - * - * Tweets can only be undeleted for N days where N is the number of days before tweets marked with - * the soft_delete_state flag are deleted permanently by the cleanup job - * - */ -object UndeleteTweetHandler { - - type Type = FutureArrow[UndeleteTweetRequest, UndeleteTweetResponse] - - /** Extract an optional value inside a future or throw if it's missing. */ - def required[T](option: Future[Option[T]], ex: => Exception): Future[T] = - option.flatMap { - case None => Future.exception(ex) - case Some(i) => Future.value(i) - } - - def apply( - undelete: TweetStorageClient.Undelete, - tweetExists: FutureArrow[TweetId, Boolean], - getUser: FutureArrow[UserId, Option[User]], - getDeletedTweets: TweetStorageClient.GetDeletedTweets, - parentUserIdRepo: ParentUserIdRepository.Type, - save: FutureArrow[UndeleteTweet.Event, Tweet] - ): Type = { - - def getParentUserId(tweet: Tweet): Future[Option[UserId]] = - Stitch.run { - parentUserIdRepo(tweet) - .handle { - case ParentUserIdRepository.ParentTweetNotFound(id) => None - } - } - - val entityExtractor = EntityExtractor.mutationAll.endo - - val getDeletedTweet: Long => Future[DeletedTweetResponse] = - id => Stitch.run(getDeletedTweets(Seq(id)).map(_.head)) - - def getRequiredUser(userId: Option[UserId]): Future[User] = - userId match { - case None => Future.exception(SoftDeleteUserIdNotFoundException) - case Some(id) => required(getUser(id), UserNotFoundException) - } - - def getValidatedDeletedTweet( - tweetId: TweetId, - allowNotDeleted: Boolean - ): Future[DeletedTweet] = { - import DeleteState._ - val deletedTweet = getDeletedTweet(tweetId).map { response => - response.deleteState match { - case SoftDeleted => response.tweet - // BounceDeleted tweets violated Twitter Rules and may not be undeleted - case BounceDeleted => throw BounceDeleteException - case HardDeleted => throw SoftDeleteExpiredException - case NotDeleted => if (allowNotDeleted) response.tweet else throw TweetExistsException - case NotFound => throw TweetNotFoundException - } - } - - required(deletedTweet, NoDeletedTweetException) - } - - /** - * Fetch the source tweet's user for a deleted share - */ - def getSourceUser(share: Option[DeletedTweetShare]): Future[Option[User]] = - share match { - case None => Future.value(None) - case Some(s) => required(getUser(s.sourceUserId), SourceUserNotFoundException).map(Some(_)) - } - - /** - * Ensure that the undelete response contains all the required information to continue with - * the tweetypie undelete. - */ - def validateUndeleteResponse(response: Undelete.Response, force: Boolean): Future[Tweet] = - Future { - (response.code, response.tweet) match { - case (Undelete.UndeleteResponseCode.NotCreated, _) => throw TweetNotFoundException - case (Undelete.UndeleteResponseCode.BackupNotFound, _) => throw SoftDeleteExpiredException - case (Undelete.UndeleteResponseCode.Success, None) => throw NoStatusWithSuccessException - case (Undelete.UndeleteResponseCode.Success, Some(tweet)) => - // archivedAtMillis is required on the response unless force is present - // or the tweet is a retweet. retweets have no favs or retweets to clean up - // of their own so the original deleted at time is not needed - if (response.archivedAtMillis.isEmpty && !force && !isRetweet(tweet)) - throw NoDeletedAtTimeException - else - tweet - case (code, _) => throw new Exception(s"Unknown UndeleteResponseCode $code") - } - } - - def enforceU13Compliance(user: User, deletedTweet: DeletedTweet): Future[Unit] = - Future.when(U13ValidationUtil.wasTweetCreatedBeforeUserTurned13(user, deletedTweet)) { - throw U13TweetException - } - - /** - * Fetch required data and perform before/after validations for undelete. - * If everything looks good with the undelete, kick off the tweetypie undelete - * event. - */ - FutureArrow { request => - val hydrationOptions = request.hydrationOptions.getOrElse(WritePathHydrationOptions()) - val force = request.force.getOrElse(false) - val tweetId = request.tweetId - - (for { - // we must be able to query the tweet from the soft delete table - deletedTweet <- getValidatedDeletedTweet(tweetId, allowNotDeleted = force) - - // we always require the user - user <- getRequiredUser(deletedTweet.userId) - - // Make sure we're not restoring any u13 tweets. - () <- enforceU13Compliance(user, deletedTweet) - - // if a retweet, then sourceUser is required; sourceTweet will be hydrated in save() - sourceUser <- getSourceUser(deletedTweet.share) - - // validations passed, perform the undelete. - undeleteResponse <- Stitch.run(undelete(tweetId)) - - // validate the response - tweet <- validateUndeleteResponse(undeleteResponse, force) - - // Extract entities from tweet text - tweetWithEntities = entityExtractor(tweet) - - // If a retweet, get user id of parent retweet - parentUserId <- getParentUserId(tweet) - - // undeletion was successful, hydrate the tweet and - // kick off tweetypie async undelete actions - hydratedTweet <- save( - UndeleteTweet.Event( - tweet = tweetWithEntities, - user = user, - timestamp = Time.now, - hydrateOptions = hydrationOptions, - deletedAt = undeleteResponse.archivedAtMillis.map(Time.fromMilliseconds), - sourceUser = sourceUser, - parentUserId = parentUserId - ) - ) - } yield { - UndeleteTweetResponse(TweetypieSuccess, Some(hydratedTweet)) - }).handle { - case TweetHydrationError(_, Some(FilteredState.Unavailable.SourceTweetNotFound(_))) => - SourceTweetNotFoundException.toResponse - case ex: ResponseException => - ex.toResponse - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..9b440c454ae1602cf83c599d438837673110b8a5 GIT binary patch literal 37513 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 L1ZEGRJ`fK81FS8J literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.scala deleted file mode 100644 index 4747ff0ea..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UnretweetHandler.scala +++ /dev/null @@ -1,65 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.Future -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.repository.TweetRepository -import com.twitter.tweetypie.thriftscala._ -import com.twitter.timelineservice.{thriftscala => tls} -import com.twitter.tweetypie.backends.TimelineService.GetPerspectives - -object UnretweetHandler { - - type Type = UnretweetRequest => Future[UnretweetResult] - - def apply( - deleteTweets: TweetDeletePathHandler.DeleteTweets, - getPerspectives: GetPerspectives, - unretweetEdits: TweetDeletePathHandler.UnretweetEdits, - tweetRepo: TweetRepository.Type, - ): Type = { request: UnretweetRequest => - val handleEdits = getSourceTweet(request.sourceTweetId, tweetRepo).liftToTry.flatMap { - case Return(sourceTweet) => - // If we're able to fetch the source Tweet, unretweet all its other versions - unretweetEdits(sourceTweet.editControl, request.sourceTweetId, request.userId) - case Throw(_) => Future.Done - } - - handleEdits.flatMap(_ => unretweetSourceTweet(request, deleteTweets, getPerspectives)) - } - - def unretweetSourceTweet( - request: UnretweetRequest, - deleteTweets: TweetDeletePathHandler.DeleteTweets, - getPerspectives: GetPerspectives, - ): Future[UnretweetResult] = - getPerspectives( - Seq(tls.PerspectiveQuery(request.userId, Seq(request.sourceTweetId))) - ).map { results => results.head.perspectives.headOption.flatMap(_.retweetId) } - .flatMap { - case Some(id) => - deleteTweets( - DeleteTweetsRequest(tweetIds = Seq(id), byUserId = Some(request.userId)), - false - ).map(_.head).map { deleteTweetResult => - UnretweetResult(Some(deleteTweetResult.tweetId), deleteTweetResult.state) - } - case None => Future.value(UnretweetResult(None, TweetDeleteState.Ok)) - } - - def getSourceTweet( - sourceTweetId: TweetId, - tweetRepo: TweetRepository.Type - ): Future[Tweet] = { - val options: TweetQuery.Options = TweetQuery - .Options(include = TweetQuery.Include(tweetFields = Set(Tweet.EditControlField.id))) - - Stitch.run { - tweetRepo(sourceTweetId, options).rescue { - case _: FilteredState => Stitch.NotFound - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..8408c576f09ad428c796c50d503a61b4e9a5c71f GIT binary patch literal 37248 zcmagEWmsIvwm*!!dvJGmcL)S`cMICM(|B+X5Zv7zg1bWq?iM5v-2LB~nRCv}x%a;B zm)%cS)%wX=yQ^yNE@e4LC@e5AFgUQVbRO+0)uM!Ca4@hj7%(tQP^+EM)7cAl3X3qQj|3`q`Hmy4BVz)-WKG5mug((7i9E!^-2{Jx z#*A_p40A$e+MOTqYQ0dGZ!@)?gye~VL8ev#Ib?}%!FoRPsU^>zR05goqRcMQ+#pPC zYo_nJX>M@V-P(SBBaF~9@m$@YWbFsASemLhO$?HuP&iegG3fA`f*GE?4hlzg)uR!b zU51Z)W6JI?6aF6L4-x@V*)L1X)S6kg832vUlx6>rn`Y*6Z+!>U>ibRJ9`M3t@Y+0kbAtU$?&m5 zS0`58&-y4>2H*Qm0wwdfCy0)wfz04DOgei zzzFImE)9`7)poJClu-^oo;Rl>339)i+z`EGK1oHt4oM>++Cb3(pZg1xr+pLX6})?- z!0J1h=g#6ix7DD0GkL}oI=z=|Z z9f4$?>N_DicIiN7bPcC7V%6f3M)dYFD5W7~N$A&zuC!Wi zeoV6f7=W~VGgo9uRof3ckH~wGW>*>G0MVm(M|8C`MRPV>-a-^vC(LUJ*@NlW^7yt) zoUf1V${+PAE|?F4C6v?*Jt?nYCOa?&c&!=*OJ-Vk-|sU~QcP-jPg%Nc1grQvP80uP ztxG-AZHim+gBzXE<39Umg2F!`s#$|>^BGWr&_M|@2bd{40~}pg%mB_7zi;xa#Bs%b zRy3(QU#U3-&4?>BI4N0r@T15NGFX92ZMU3U3U=e!+>@KTh4#9+4DQ660>f91!s|Ru zEs$oRiJ>H631@-kk%&6judAjwYfsry^n6vxA$?~(kF%H5R{UmTJy9z7NC>srkg^$U z2J#Ex{1gNAT%2>CrpU5dRg3cu#nsRimOp8VCenVTKqlS8qWc*bNF0$wk=TG<)>2Fi zmWf`P2Og0!U?M+d2sOJ@0UzwVZ3pF!U#+XObGV_$hQHd3yy{x}_0jB-%^ygliyZRn z{h+bxex?O&Eet#1iTeXI5-K={s7jiuN2@0LR^*9`v(x6ZJETDcQcD;TO3J&unUm5= z(V#rIH9hwYz(7&m@Z8+a8j}lEfQYMkD@QHnOY=A{O{xhnb3G4b*h9!F3_k1g-Svev zTgGQutP-(IDA}(v-x<3m^A8*R-`>BzTOwq*=edBwJF-GCq?`4Sczy1>B=~1tu2)xa zk3n^@g8~CX`+HqX93B5Ci~6|3Dl1yY69bfiYos--mj+IXk;D6|lLzE3Q035N z*qVdr22MuPV^#AoOz^I0TFTX9KI9Fi6Bop=jxI_J)2=Hhq8p7q#qElYzTciLM5TVY z*WC}CCo4BCZG2H-Rf?>De5v_Z;Z-^<#Pxpn=13Bnszx{8drgo zfX%q`eBvXN4Wf_hO}+U~^js@@JzT+A3ejU?M#sxpr27GcAGl_PTcW^kH`0z3S*NtC zV7QTu#|@-v^<`S&moX>t-P&TqxqMuZFA}uTqu(i#ZA<{Y*XTLgfoo3jt+x$j0`Vwv zw0IFj@$60o{N@kz~TnErKRfU93Tyhuq^myp`vk(WQ7_Oog+KZ{xuE`LR* z^qZOymZ}@Ct@yCRTuCNWJw!v9LiA)xLcm}~cdB)8AhD=xpr{vvox_EX?oPEG3Ty-4 z1JFQ!wiUute($ckLvr^K{{@Zt!k+D5>%mP3@yG*)7uebWPn>!JZ}&19Jx(0hYPXr1 zEIg^TNhuJPiL2pbr<9O7uqrE3r1ZYCBZK9ch4>skkqXvu*ZWd>+h$l8=ak>Z}rl1-z7vk@85)_%)SqK z5X@z~eB@cQ@_Fx9$Y}|#$V*}9uc-cZav!(5hTNJ{6k-j9|Hav5+ox08c6+7y(k#)` zqG&Ev|3X<$SjnFF(;SWal!ft`fJDhh_)))ntS=G@Ij5N-8@vk)=@=g%KE%?VrBf))CNL-nO;1}Kr*vT;@vm%gL<2{( z=h*78_mf3sCq43}jK+{fT|Ve+%om*Cl0Cfa=*tBCKRNe$*XHs)^<~xkE>upZ9CvPt z34_*&Nmipg1|{O4Z_gYh(Tr%RDjyJOoJo9I6_A}*30h}B?Z0L_NDDkqa4o|&+LM@AZ&YkPJ6O{bVc zc0+dbN{OJ=26vsc9AFgQ^QNaPDjpIlvmcD31G#~OelP%)+Agl&`%S7gDst$=p@NqE zqX^6n%n&k+S_`s?LazM8g&KtbvIN|HQ=moG)D}*Ig=E!W`>tm120ab3RxXK5$||&1 z4f#v4Mmt;}sVV)$CN!NzY8rEOa&6P`en~f<5}ajA@HAC6epXZbN*!t3lShe>K#+~; zbxQ(%9&;ehs$WFCMHCzt#@u&~Dm|%@4;5S}#F8_Lxcg4|_gk+!F%4RQTxOP5a>moy zf%1VY(VDaFI<1B17QA$D5;YhvmNjW#U~Xb(EEH`vgL5)SZD5f#jZaDMuP=8|mc&Me zBXj-vDCXf+v&U1~nq4jY`qbEIO;e%fAKOPDEp!Y~VbEvxing+OzAnx0^#(!z5DzYu zfRKN<2`yO9*s-B=hbe5clxg%4(_<=vj4YRHNH2Co+g1-avHhqQePFPXGc|q)dv%ki zjp_z(mY}X=IzfIlc|$rWJOUilL%cnE$y()dlvqSKwZs7mT6c5WRLl177OxgPe96#z z>+AUGZrNGk@?xd+Kp|h-HDG!^el~flwQ-y7pU+1n8vt{{yvLWqwxKG!ds!7;Q$snC z90^0xnZ28t75&Q3dps|p^&N?y!phZA6;)BR6iiTm>_V)?w&)wN)F{NNuyiaGZ2z{YRSj7%e?|$V|x6@146#0fq zuO!||>}~3;n=?x61n%B(`{mHs&raT|Eo=zjF*JS%;*Ewt#hMLOw!jdyLQOsHX^_zn zv#lb9=dbPM?pzWSSC~1eOa54S@ZqzdA9$g3> z$(h72CSf_*uHNnB7n9Ykmz|ZiTO#Y}F1=fd4VpoH=umY_^Tq}gTvWz8X9wSI?#&7P zUtkRpEF0$uC5ra~pB40DFpQuy?=m6#Iqr?E$963j%)lf)x+PL2*o$g2)wUroOE{v$ zc&X~s)k17T-%Z-`+FZ|k9`II#clCjV5ZM)uE+O3EBht228P|G$EYx@Y1tXA@#vaFI zrBrj@cukIX<$9(Diti!#JIgS)9Pb+3KdfK0r_Q%O9nAi`X%7qAJ@R^~7kssU z`??Xz0$d?6Oer~^?mq}i-P;~tJ#MLZ89%;k^jfpyDG?#5?Ct4P`otF=UH^7%-Jt99 zG`~9T?GY*R=BN$mN55;|z1qL=e0NeY^3muntYont*d$EcZv|Y=9`@03a9=d}q-c_x zI(bwpaw?MbiX$xV{Qg3DdpIok-iT%O2_(v6(|_Xxb$s~baovyi+lz?!q|k}h2594I z@53+cPYe{M^r!Y8d_%l#pS?Ie_88x_X?Vc3>6uQ%GkzTf zbY}8?;q#`rN~+kUbMxx*T3Hj36p!-{WqIvd>uPVQ98Vr(^S5tb^Xt;rJL`J6k$ALJ zO(pJk+FWNr-2{G-BJq{UJ|TM>sCno%?X4M~r%q{jcGV37qNh{gySBr3o^Rl{r-}f* zqSV`c1x_%@Y9ivVYf+(#!cH;xr^6ah!)mHUUTTf}bVU4kLs>f7<19jP{a;=W`Yrw8 zUar?)T+{WRYk|uhn}R}B9%rXvsXV9IJW9uJeuig2q3Rrm#W&1>u9WE3mF^S8gVi{| z&i#+KI^AyRY=W+@deYnvbdNpU-gj(NG_Uuo`|dmkhs_cDXEyGDmRVecgH~l|rH~p%y%yeu_pHmkP_MBWQaSBTxcjk1CI7H-QBSz9i}D~g@~E=g=s z$llfS(%y4HK@hd}rfuOH_>@x`4bX~X$+GTfUDSDOPKn2x%An8PQlvEJH*rcN>9>3yBM+RrLfz@LKcU2sK72>5Pim=i_M~Y~_ zQJGaB1E)&CfDz=F*b+dR`NKdUE&;7DyQ3m>iwXd)!#k=cil%spgBFt10X@Pbeu)zw z6yE_|nESi)Bd8PSU!73flmKwCzs6TL;Zrd~v3Mbl^vP~O{0sYpGZ7R@3K~cEN2o3c zEfj?NkI+Ayj+AC-;0nkP1wt`5a%`+U(i2>EDK_w`A`^D5*WS@6^6LJZ|^O7%jxC zm-2izxc+qG)@I-^=p**rzc}HZ_i@SdO7DJXHm7FWv*zc#u+qWa{%HR8eaxnaLCcLK zNvy*T^Rj5Ne(V`n0{+{RBa#G@*R(Mj<60R}=H}oU>Fp`deJRred2qFh*?%}k#{Sqj z@u2P3KqR1MC$KsWt<27kRD|itroh6iJx@DJ>hVDW&h+>XGaf|!4K@XL zV)M@6Jp4@}#r+7I#7?u4y>|VF@!U==PNgVUyrlaBudnx4VUoRg&QWdRU*o< zuhCjdNjU8`^%RqBuf6LDLn^oQ>iy2iYa2%=o-5r0u_<@CpTA#H^LD#>sC}G58N~@d zE^qXNgc_#Tz}YS{TF3}`c^x<}Ryr7G-*6?4=#U-DQ2j8TvGtr-&I3&+v2dm!%TL1I zFzaP2mMnL&;GZdpp+#9dw`^YTwPS9yaJ-l!{(uUaKj9SoeMcTgcOPe8(QJCs1~#1B zGVbl4TGW0pi#&IAB76{#9~|1*^OxhsdC%g^gJUJ^wW>{M&}GjE6nyh=0_JOk(6D$| zw-*@Ww_85X;Msn9B@Uig-Gftn&jD2aGDDrpP!=nbI zG8xUnX2(Yy8CU+R=eg*M!O~xdIgdWU@;!Pg56LkOqfBi|!)@g`1#Iy!F9P)CyPev% zc_{pzizyd5&!o(%abwszKdvFOILDlmTcN$|cOGIL?d(gC@Tj~m;QNHA(8|o&>zXIa zqyMoo4w25W8a&tq8O_&v?52pWm_?y|TMpCD7oLsCgip7)aO}Z5Ob2taowNiKec11l z>1luWncAFR$&c*aQ^BH5x%ELnS^2i6!2M6B46Ip_md!Krx7YN!_GypD>*34S%b`K< z_7^8F;N5HT+rr7??9b;TM^=-L*H)3NTbAePVQBAHFx2G?uU26wqs{h~)ZrVl2i1fp zF5|V3g3?nL7ZfRlaq97$+f)>pXo9aD>ZjSNZF0eYZ`Jcp&zRlazA6D1T)NL1k`Ilf z56FNg>{=X#n?#uA56E_8@0O0z0|_cp!x(TYj zt0hJObD2JV{u$p3eW6!SJUyyf)J;z4>ycfU5704d%1Nfq9~-|9<(nc7pKwm7GzhWS zOj$MGpNC1ZTC?Frp$Q6N&KGEDP3qC0YQfMQFhJ45ZBsy5SVc6Q+`=BS`f zQI|aT)1GcLO&?s2I9h4p0&E;3;{7~g*R~!C%H4}s%6zL^#_9G{GMu9jEA>6ra7@`Q z4d5b#SwPbtqfJL-*ZlDiWg|WENVKVNEsub&mqzr4Uex8bGfu#@SXx7mja6kK5Rkhu zuoqYAiOw`gqOSB(k1Dh&^75`lVoC&X-Pfk#JYP_3aLZ0Ob~(0ecc{>Dnb`Afj8R`L z?$-pSV{$(JidK`>VR#8zX3~&5k9@$zdkMy;#SI`X0q~jFL`p-YM5{pASkL+ zmVe~uT`I3V)*Mv2xXZLtpse|s8>YhHy(KyPFz8*-pZ@iB4pTXFHJYAxCZRNc;Sf!8 zu+>3>vG0Pry~T8fZDH_c-qNiXa#hM$W8Bx<%SN$M-_Su&cVJFcE{(bhM{!Mm{=4gs z@G`1TW{2JnPHp_Z(rzkJ50lB`z5>BQOW7NHm%s?=NWUI?0?s~W)-rDpeCi+9B3Sc? zW-$so-!NH*EZHH#9Af@4Az){v?o^`4+fMy(@jQoZ#3I=#wtwy`?iXEeiWtSYKGaXD62-Zh$NwAbSGiVbS`m)H;cCR zhd=~q?J#7HJaTWLF|$#cUsa{vVwi-JvbZJPcXQL3-X*O%aBA&MlT>tPD#|u$6Uu&D z9oZL`Wr+Py#VcOFQ;Mir>2I4-c(SIt+9uQN(r(;d%(E=3>#T1x%9cnqOw>a8D$OIy zq4;5vSB!nP5Yf`ksv)gVsHEsNlYH4_1=`1^bvsHS9%t0+&a0w2@mM)=KwF#BbVbSS zV5_Q7jm>K=J?Z#5$rl>!6eqxNEK;R9@Y zSMKviRolaNloJsV553V1imWkh#}F?W2~ zZ{;ZVLU@+FmPHQv{Arei^?d?`LES2DmN@Ky#WkqJv%1Rk_n$^I+DDBO8Lvvyuf(G1 z&&>3Nu)QT1X!OgNz|z}htNb~Ka~uH5^GV1vvuqPDt7y4woDF!7N%*&uV_AWQ0>>+MPA#(~Gqm0|y2zvsMMVAASm zEJ!+G3tGOqkUA_Xw|orF%(V~C(U^*1XtG9Cc6>I3dxpLJX@cB?mP(s`cKfT|>7#@+2`Vm=P$BXt+p)W> z=1I23t}*i2QCA;KK5-D|oY|M#u>=UQj;kfD~FQ;E)sbdv3a--d+GC0#0E4%sZJ zbusT(kP^R2jRk}(HD;_rcYxcw9E(CJ(~?k^~F5BN@ngR6&+V?N4`5H*A; z-!fudIs$ldCodrC;W`s6;5*YG7441f%IUh5D@BGO-jOYouLdZfI^^HIWgw3`!fY=csViJT& zI74u-H7rB2wo4*q zth)!lc<<-t`d&j-;OWL5Ms;N?3_qF^<=L5%D%}4v9jIU3`=XTdw_ zBZCRp>f>wdn-8~9-`bavMvluu6>wDmpl}={Kk3dt!b|@OpZj%&Rii9cS-9zB^kLo<*`)36vb$Ef z<;Ua%6;Z#tM+_*&q0*Rf205Us$X*i8wwRyCvzc#(e7sB;5(`@GL zD$ViIh8ybS>(XV`PziV7wfk_K8(Ry32=ZtvpTIMt_fy2k@m=NCZE?N@ z8s#N*)AL%76gjg42S>CJmn+jHQ32<-SL#rVOPMRv2+;`i5D0M$?~3M_b0UeU-}AJ< zmCAWmXb2tsl2nuu<@X8fBNGrg)RinCCxtdj>J_Dl{s^K9iYD=F9zM-Z>nyiMkN-Ch z6y?8o6nABD!M95;l+kOAU5xK|ivG00Uvd>Nc}Egz90<$u^rBL9nx&+Y${jdsK{kmrJCF`?n$V@ZvT zE)?bF$K)gHUoJP;;G+ke7j68J0UZtLvr?k>I+LIzI)Iln;8(m4y@A3a(sG{_&SFxK zLJcm+*u+#$I@h!d(%h}<1QDLVmzoGF^D3h&_dlHtn-}VwTkAnluF9?`7L%GiG?1=F zoNzlnmKRHjUdCvaWe*8!nJI~0@(KA?$CBqVC_{A+0_CMdL&!;q44D3H4uPmiL8>Pf zS7;)}!2w-4^<1;U8!nUv8+?`S|I8-s2vqi&XYldJ&!Fgxw*RGgtdRjC)j8Y%7Lx2# zrEMadI2hq>-_(w3N9J>jGp^(}2dYi6>x>rn+mGii2wz~gR=zeODVG`OA{1USGeI>2 zl~s{6o`292T6ZPUzL@5czK&MBI<-AsKGgann#}oiB2v*36U4kXbfRcO8PW>ArwOZ> zx}!oYOs9L~YJ`hh(=)o$tnMUB>CKhU&=3oO^kfSMrh#X6Eg(?=Xsx*}Ci*_tq9}bz zN;LNp=i+N)R3%Lb8c`j(S~l(#s>HC}36KetCqm;37= z2&~O4umM*3F0C!TfMDxzz!+cT$$$r?U^(JWxBkmc@39~bqzEueTb_)7Iq1T7!n)Bm zPk{`LE;nfk%$f9k4){P%tYa#UBx5lH<0tZltdYu^_%yynR-YY<933RSui&wYjMAHs zNdzB^(}|WVsG{hy3CGRY&accO2C?e5*9;k{GZh25SFj)wAkxH1ox#-LB$2`gM-a(z zX0dT35|$Os7oZ`WVL2?~ejRZ{k-g{XnTZ%Y^w}{}W0bDpfNe5o8!R~UWP|~N5!ZbY z=gx#lTFz9Pb^2C}7LN5TFbRw=9+MW_RFqNL5UuV@buC`xggbcyGg`cW4!O_1%-=Lp zRHW;w6ffq<{`S2r^xJoDn6|u=--$WfIiWi@;h(;xMnRCE3tO!p+xMXGLD$ehW%Fjt zw5F4&(dMBkZiTbIsoa&tQ=m%ed)Tbls}^j zPu+8*vaGa=zS4zSB6gwKZm>~K3yZ-`KM9zAPCWyV)s*SR0RQH8{mvC7fA!^b0bO5} z|Du@VTwKw~s3y{EatrEYg*r7Kxt8e$W@&&s!X9Jwm+pr|9Xks{Ow*kV?ID^j>&($_ zyUBP~OyyKlvY8F5q`|x;z^_{Sne#?=}pvEL#t3}ns0dsrf@sB&1prENggLwaE zQ1av+)6M?n0AGX)#=&o@FO|r4=L(saCyAznB9n2}+jb%1m z(t^po(1Pt`{?X1vB`d!G(`-gF6=C7KlR1=zBxD%jvXHO)yT2WoJ>2D}#K&Sv$ICIe z2O>`b2}YB#fD6E=x{uh54No9o?-Z|x!-IiV_evif0Y*6wSJvn-FJ zO@}uJhcOdM)v+aWdk_281<{ta^(?FgM!Pegxf+qG! zCYTuj%BSozR==v|hW(XR71I4uo6r73#772~@F814@%km}Kk`(o+)a87_!z;_`vb${ zL)($1R-&_n`_Un9Vqs(jR}p=4bmr%fKj&_g<1=pGs!sJ`cv4sdQMJ}mE=IFqM&Sq! zFoaQQoANTE*E_bD$Y#{dT4|f+Zp;{iw&D#!K5EvtHcz!sH=6Ut@Ga|>I4M0o_85%4 zp;T=^gEZ~NZ8AeX#$JqmlZfBca(_@`fT&^Re($~~+BO!DQ;h$hb~hgfQ44VYN&TG) zGYaMZpuXrDfbWRNG1~BLd*5jce^gc8i{UVv&Bz$&@rz75sH2&({a6Guio!Eo3q`JW zz)_preA}Tvk=v|fx^_UcbGH}c_b$8WU5n2g(qH7aZX+OaHP}DMTi7@;qnQ5>@)={< zt%umu%{Ax0$oq_CA5^vO5wu!Vu)g=Xeuq6&YfE71G&0=m3~Up+Z{+xjkVW+N^>FM% z{>}a3&X>+&sFK1bMs1YHpD}>C&qIDoxnlGye44Wb{tBI0RYw;d&HM3;R^=PBV7e+N zP4Y@aZXW%sT1}m(M)m36xNZu+3Y9rh*p&#UtZRmj4tO%f2g2Wo*UtHnp-~-!QDH7k zFp3;EHA&z@xj(Km^pV<7+X8n@)Utlav!6y}TT4zu*;$qE6VQD8uBP$cV8bzT0ceCV zDXaT}K%NehZ;fsArR?q#S^5HaI`y|TG2p3fg&7pw^>w>PtQe=l!t;gq)|9 zqg+S`p_fxCOEiTfuI`I(Ws2$4@9rdLIrFU{nmIJCVrDsimX#MU1NaqeI{{gzoK^17 z=n9ZCjh7pNDc)zI`PM|a))153KMuN@`6B~GmAZWx@Fi!>Cjo-49;~Sp@`{#4NUc6{IRI~6 zqhW%)mP&5KlEK#2m0=E>XV`D?9>g2FHNUF-uxVuC{NM?+`KH1LA)tz=DG=PZ!Q13-q3~>VpXlAepubhHeR^#Nh|+I<_Fg3Bkkz z!of|TT1jO;ld_c3@QPL4n1>}mOqjtjuy)#UXTxT*yq-)NpL_x+D^N!FOy42tbZv)=ttZ;Cfpt;pqcD}v@uqr$u0Aw zh4U^W#DLJChlSos9AgtBm2^~>9Z)&(^$Wm_0ko@s0Iz-5?@?gXYelG7RML!q6mmBZ z6h7KFA}{1nI~$2S?{k9(fWl$zvUz?rjakF4mm@107RjeuPvKUx;x@OM(~Fb`{W%Qp zs9tL}S9Nwva0>P_^P9VeoL{@ZMLWv50L>SqgEhZq(N8q2w538yH?{FV!TEwd{PXZw zhE=B$o3(7mPMqecmfqWr9)u;t%kVSwO^U9P81(S7yrsd6CyJ>^@^w6;Cws0rz8v}w z;BkoV@sCXo{8ttC;!2%P@NC^EtlfjgoQ}NcHezWxJ-NBk^z;4VkHzY72)0S&{MB|^ zpUa(m`kr+^27QOPLZt3G@aa>MotOr5l$)rDk|x~`Gs7Lv@Nv0l+#tWQ?G{VqzfzN; z+j8123S9Zk!vGMoC~L_j-(LjZ=gFErpqMgrCm4H%f`M*oEhWbJK9ldQt__Je<7Dxq zp&qk}yT9lwP{I9WllBMj7Xr;OUBp8gm_x*a+c&s@XXRfQH)!WeMa-7EfP{yp%_GIE zhq8RE^VV~zo+jIM*L|%G`ERNKYMF@|$O!Hn9aS{3`I&B&UF_kEfg7yj%536yy##?(txcf-OOSS!{3q7((%l|)?>&(%v0j?%IH>6LBg3um9O zh}3VQuIU>0s*I`UF#=z`Bjhen4gwyacgv0)$>&1ZMFPddkcTV6La%Xah_M$G^V!+zr4 zJC~W$jf5H)h;Jd3FwG9bN4E$HltKZPP=IBr9shhRcaWSVY6H44fD}-a>EbDh-n(=9g8J)2%}r6e|gqD;CZtaR1P$;_&=j*AyfbPK;7{2%oiJ zR*|zHK_&bFO?~IsGomJ$!^u_baUWI)`vI-^dTkVQ884STr)vW+_IZ)uphP^UEL8ZK zu(SqOxeRrFN&Odx+oOsb#iSw!#imWxq({wK*wL;HboZsiirtOGO6k^nx*!A~5zBp( zGgdmY=jL;6Nf1e2VYYxHEdiwZ`RwA8LfWPG?z8$iN7GhVHss9>1pR#;eg*=tSW#q* z=*u<#K%#Gj8~0{s5J`Dl1@<%j?P+<=q%5?^2XyuGWAEOY7)(~T-lyM!pV6pq*7#gN zf`k4eI4GwKTI5f`y}t#Y{}xfTcslAfnm0asq32bD@6# z#|$63O&)C}-$j#r$7$<6iJ!I;2B8 zwu1u7Z!W;Ca|={ac4!fR*Zn2vC=9*&Lq6{5j#fZu=S6N>pCLN|!}Jg21sDPCt#<<= ze6YeK>{a@sV!`^0Q5JMg;c1u|pY($)auA5M&$4j{2^37=h zLMA;6l+|KQoWuGXgw{t9V~`ryc0fn4O7Oi;M>8`D8W5$*-5T&>Yom9^62g~VzAZp_ z`=BkTUbd+bDl|pXjwsSK=U+V*EbOFs8!$*M>nf}kfGcv+4eCUfdp{5&}M?bq4IVj;ROi4))_AI1>7zLH1q<_d0EFRQ{zvFL-8v$OR%`%M;Od zI1JN@AD0KN*J<};hJ<(HGrJG?uv2mw*l<);BBCSV8g<&A^aq@O(U+K632s4y%HqNd}!6LPL1I*Hr_Gg*MW>ln52mcWpS=Kaj9SS zB=+n&ufkwRva%Q)Di+j)IRkvCoPg4#2CbLLqxs5>DiO)n6JtRUXAd3Bt%DPamC@Qd zu-eO>c1(=7_;{9YlBO0IKeIBN;hq*I1#uMNh4iI=RM zHdSedb;<7D$+W6m>ryFC>K>8o_BlD``C`N}2X(}*K(am3dGTs;M zG{pr`GmGrwRhI;m_LGMC&;u`y3q2+)izB4sC5$h_##>o|5xt}wc;L^>)5cJ_*de_m zay@wOVzjpymWxo=`rr7Xwq?M401(1exmRwR7xrks@Z&G`I{ELbeM1>dqn~F7R z&~&SAn#T-ell_YqD~Y$A>Bv`&M?=}{WNZP6EA4k3Vw`pC=9($Tk11&Z`m_w=Zthb^ z{H8^QjV5G1wdL=rG>h37t~z^=my(p5v8@iY(?ow^FdWk|Gz^{EO;nGt6MO@eN2Z2v zZ@)NXd@udZcphMEY5^)F05#>k zL^4?eJGdhG^cd6@`QIxFA>!zJ8yD0J>YepnT)YczLQVU~88HIkY8J}{AIS_s)3^gxBz!pmUdgm`hzARG{5RD2Z@%w! zgW#bs;i%E%DHxSfHGO-JY40xQ0@pQY&d!} zb<$E&{~lYkAn02yj7t4^YIQh9!0F^5ph>Y*`TG$QGWM3=1|0o0Bt7S5dj&w5EE>Qy)?c(4@sTYPJy~qR9OtSbnCH;2V+XZUL4vV2T6z<(rm*fOF6HwL=~UDhkzbk z{Sa3DW0$PrW^Uh74l`i{wMUag=o+#`u6Q0Qg&1@YLb@n4%Q zmF95>0#%IgcV+O6z2IDNmRxbfEP_WEYzSLB)TNTotXd+C>Rl1Rxe#K|2Dw4l z32xi^^GCX&X=kv__f-q<*dN?;O7b9lkNLzx4Mjt7nlbN?>6fMkGU|?tCva%~tpXAC zPZgm(S44^xDw@?cZdE}CN_@!rX)Tc`*spF&f)`}s&-7UDmO_xm(!b9w3hj}xlxM_C zTAZQ5#eY_C*kQofCFyO4u@g_t*x7@Snx?7lCJQ?+*qz>=3DY(T`z3k;KzfN!`Eq}=T@T%uM4J)=q$D%az($6#&wkipZTsg`2Wm7d_( zpwitJJeUjPbe$=ZhCb%#P!zI){u{UKC*NPtC`b^8M2+&Wb7du%UP7$Y0RgH01%&+@ zNblc3_P>GV{3kkrGI_673vhJN>tz;Ef_Av^e;^1}faVq_7CTHj(0e~}RoZ3vG--tM ztoRTtIJ&t=tk1UyO<`C^B8s{qg@5?Kk`Ck`YVasv_0h+R!NT{{?x29Q6(KU14qn4f z5FeEu;ZzL(giscW%H$~)<~D1T3W4I#OCHJobYP51GxhnU3D1Qiaz+M}i9x**<)?^F zZ(`=kaI6ovV#Ns%z9f`n(BcSgoLYabE$y=!~f^GeJyL(k5ZPF7G|!09^v;h zNG*`AKY4n5cn--=Ph-Bv`$Wv*~|zX0!{S z*<3rhjk?+0@oF&adfT7gJI#1|ID311J@#mS$(bHsH@JMdIc=}0K|MRmxdk2V-{@Qw z5@a&MY47f=ByP@F-=BR2pk}0cWGLlmqKUf$XGS?}J)a@UNzIbY6NKGiSL_&bQubT0wDd|tS%uiWa4 z{PcxtZvBhxA5txW{{C;x2L2v4yQ|}Vh20O#ZGmS%e=lL9jtC26) zUUx6vvrG>Q)HpctZs8>~MvSv~I*X}7yq}#b%T0AAqV2V zy^_JzD_|-yAK~h2y%3QAF+Yjmo7=O%M&(_5d(9@3J8H#z&FBkNRd*$Zgvi7~`@EmC zW!ut;Rr@@-4?91R+_Xp$F1!Cj?Wz?DY{l^WOMB+cy3wdcH%s>Brohx>*+cd9k1Nxc z2Vdv5*V|2!`nxo~Yc{rrS76=CZU3*8zPmH_b;n1FMU{v^EzQkNoJWVdub$dO4(1ou z-SP{~=J#q9(-l~pQ%fRm7d0)e6F7h;g;!?729E@uG-5iWqwTi4QS#gER$MAvMv<3B zulsu6=UOGjj&2ccC6w2vVWZ}XNp79B%}u3}l3E_QzMI)2r-!%f zlw<$1l(@y+Hv*FVx3a;o$yINE-&{FZp)=wF5#p4ZpZS^k^@fH0&n}M@2iG+1(RC68 zfQn-#B2+AS5|r1shV|{Xf-!j^CfuLZems>;+*FPGtOU4#VJe$p3L7iQxmcySsV}8j z@G1gogYLH(VHBzj_N{8!IqRaaXI4CLyHCr=x%WW#V3Mw!^`1~r)8Q7V2@ll7aeE`; zqfPkQ^{_32#MNDWJ3YQ~V=q&enSGnqZiKTscyO|F^OJcGny2_E{o(x9Y1(5}A}Hgv zcGE%iR?lqQ3C>Q6rA8@g-9`%#W6BFu(AikuY^fO5^(jbvsT%5InT`tEo81Q;73_R+ zdl)t>Psri%Ac-X`1@^#u@0H9Sl)M=9g^_qMK2kyUTKp)PcQ69v{m5%&bVRN;f>_5# zeA5=L-Y}dJ8thH*P3?5e40p{q3oF zc`?a6O#JJ;Q>Rh2$GCuS5;L^VFpOI1EqQotiZuw{N^}SC$$K4$ zh4AJ8Z@B?IurRScrhtC@ZJZvH7)Qjd^RcpKFcdX)PzT)#sDtzb)DaKrsFiMocKkO4 z;R0L>*h@M=H`UJXLH~;WJ;-y?9-Oea^fyZ5Z}>k@{yyOEDF3?(JgydK$1nLS5WMm; z4&a0^)-7Nt!66_pu77C#OVSF&5feH9Gz=az%=WKgJpc#9Emot^TqB#*0S5G)^JfxaY8k(Q z96n~k(wv^AH%{3>zBX=na2~#s4bTfBWb>(ro35DLE-DoPAVu458owPppN8%2WsUXS zVMY_kig=C#H{5yMA5Zz)eBTaizaQD&a#aoQ@*tLYjHBYd-g`d4ojCjad|Aut!WPVG z-+21TTn*dYZXTIkO^meDCgQexj7%Iox4FD$s3^p0zBzeA&|L8n7iC`g+Q!_ueRCP- z_jB}M{&D=_$MW^Fb={=CGg0_es9M`8Z|0OQdfM}iMVs#nUt70FsF_IB!nnch)=mFt z+_+MP{dd2O9|2Rd9-mXWP91Od?Q?*V53^^}sRC_l;-?g2Yl~HzseY?p@0A8ys(y}s z2k5zgo?lnfiKqNm(__s}GMswXT9Z!jZFtzdQ+NA?9mf%4^U|ft!K+>?EaYwzd_d#9G0gmFNSzUBOFd zXyKh=k2P>Re&1uX;NHG|xRQh(fXh~=@XSZ=P3ofXv=a`R5B(&zEh+sG@0+-nF7jTP zG_BGT%3j2S^1@duFj&9+o*pe*Rcc$*&kWa!d^o+O}E?cKdDxJLvogHd8b8NoZo4UcM zps)iznG-lq^L!eW`;96h65Rd><1~S~4@SBSqvSdjTc^Sb{pcYRB;;<{zJiNyzH_g# zk#7(*Ca~D0*fjKGk>I}U%jCOEPjS~lYHn|`3(hx_zWZ;hUp&1Te0PyNa0g*AE|wZR zbp-M}Vs7nqkw%A{8b58j>b{5pwpKjO+PleoofF!y8MZI8)AD#q;E%`WTMhL=^#vPF z)hG7_YBFS2s*?yIQN0O!4`a;9j-AzqtbOded__v{)6pE76{U?Ir#*gLtfgc`&FI}) z8n7FJe&L}DC_6|QT)b_rapGN54NSE!F_8-b?gMLDbAuAPJYrmqt;LndaHKUQJu*16 zC*AcjrC&ZLp)Sodc)6X*uNPUqW6S7;mq3 zm)WAphzIuBt+8OpD=x?U>*Oa3H-!a8#k7Kh>$N*1)d0W*{`o33mZxOSqd&oq0&eiU zD15gU-$K#?&K+d89C_q=ygfOgK^c9VKEdX3`h#lfLl4I88pucy!rHF0dfh_&^Q6IgJyR+>BC5&!UPi=e7rOdTzM&oW?&D!rQYfl`t+||2l-ku~JxN?= z={w1MV-DH=#&>y9puB?q?Sop;J(gdW{#fJRY$ z&x(r}58^3V4;5dXj;9#g2_C<*kTr#q@JT$L;v^KA zEFrscWF81RZoa)Z{hS!v`Z3mypY-!H3i^SUT=WDhD->0xEIBDmxb!Cyszd+u2XK^7 zGcy#i(PkoC6=zeq-vJ2TNd)zT*U$U$&zUi)VT;maWm&h4Kgyx7y&Bzh%~TtZdvGBBI|a*F59vi>uwcJOf_Ib+4EwQ%Ohwg3G3GI)8Ig+-`le(FHuvN zDLWpJMj-c9fpvg%ehrK{syQ=<0`)Q%otKBD#b0N%{ATg&v~h28TcRPcqV9Qs)gaV*$=d!T32C7dfn=Nx$1KJ+*q`v8uY~YRZPNOkXApoxQpmW6vulA;goyz3}+Vv~HV+er~W`a6e$Vo8oHuo^;+e=qm+x zleyi?XfC$4^}U1cSy9!Osm>yMp%Z}VDaB@%2O~LZ=U_V7smYl#C3JG)r84b1ja5u{ zB_+YetmN07!;sl_##FZMd*sD^mUw&fz3eQZ*-}qBt+WhT{A$vhBa5n`az_G8#QNpc zB`oxCkrpcJ>cCmY1N%H4&@eiKYr2{3v!6vSB1om9Y7@MARB3gbU8+=*vdoA3{Rmm? z>a}#?8|_z9qs!hOX1>!K6@KMy-gIMHPq`MQOZ6{cyYRob51?&NJ@BWlLJ!?r|Oq<%X0tJ_^>&&!-Sb;$k`$Q$U_max7duyldB zPoNCLiaYJ|aj@Vx@2#8HKcp3Pp_^0v9d+4qnHX;NJUiB~I(+U<%9ig%cBMb`;t7e7 zj@PxkE@?=+oQ%d&`ZtVFeAjG021!ndAuxB2HrAyFYJVDC$EK;L99)O8lV{ZR++QPD zbd)u0PKyESA zyW6JhaqbH}xFg%H0wzD8R`UTLn^_b6Kg|JJedS%;*;hk70p6lWT6Rl+NlkTh_)F@~ z($#Lh=pktiqdRNnFBsP`B}2ly+tCo4S+-n@fKKjf$9;M5CwoUX#os5}9s{<5KmY&P z0XU-W^S*34bGCD1A%h2aAHcVBufr+jxH^!n<{`@za<9r4`d!NlI-_B$Tgb6sop*C(C%V zHGY~jTCGG&|FUmO8_0|65NPTi=*V>_<3N-Cxy;#_LbN~RH=^|3?(yr+v&&PqHOHGP zYsi0fV>J!9?*0buMW|r5QC5o6!)p%>p(3E@NH~y1o{=euht~ zB_VG<{x>%Hp3_18rUm{X0v1=K=BpA=97b@_Wt}Ry{+!1Znns5-Z<~8V;CdGW^=9SN z#Ux5WNR-WC3h;^IDYR{+xJ|uZM-Z2`yM?No^SOAHPg$EgnKBUdOq%D-!@RY!E zLkFBi8!EK2O+7wik=8>Y~%UQv$3f5v`ij8YB|J^xqRwwxipJ8Nx{zZ4K=Mv z%kh$mM0Ti=cBt`h^C2?;QuMI7gFSF74szhx6L>6ycbJiJKy>M!B$EeQcR+~oW%D$%s z>#&7dQJ9jn1y4z;It82$cKd~skjFI=DI>9GVwJaRx8rLsS2`l6kE9rJXGA2|!Gluw zA}>FTX?27dyr+}qALIk2+Y!F7rY}Db^q>}eh^`Mp>ek`7&_TVb5RHk zN^w-OasAN5!q8+4v*)u;1Q;eFn#fF@Unpetdg%3Km3mg;{n?G~+K{8}l}uz}bNd() z%lgxX!7wOfAcXZ!jAyFhApLU)2&|7Bk)qtD*sc@ASAg*U84?Bb-ytv7EPx^1F8>P2 z_Y}I+VDYbz*-$8C!r}c$^8LBWlO?2JF4nX*m^d4>k1;4BQ7Y-oVurIAqX_m!P~>8U zx8y-cYh9_XbYdWemQbPjUgwfZJV3RTW%k#WUp_+!=VN6q(u6gD9omJ$fH?maspS{j zy$ywFeEIYlVl)`$S5(i`v}3}G*>RiHZ?qQ|X+cw{K-1up9gbS!sub}*=}rf~NmFqavF=>v>^JYeuOodfk=O$3C%fFR8Dqo^nh z@nnl7Mb%V$ogc-zQ;UH>SQqfdIOEU@Z<~jMkhBpWc8WrfZ=(#rkbNQQ;pu%L# zb=X>A;ykZ%1;g;Mh49*-YO;s02I-^^z@Tcrj^~3v)l%lbp@QIK29TEL^35}Rqc-i! zoCKZ?|8r=TwIM({9!XXS$!nLEOMg}B9KTIig9#j-Lmc8}s< z#w0`GCTaI@#QSePGNKU1RIW@q+K>|OEr_Inv2sSeC;^{TaM;^JaHCNIM&c0o41Z`Z zRG@(R7vSO;pIZ?~=<~Gy88F}f^MC;e$$pL9IXynz0qef$o3FsEfJfiuOXuk|SpYo* zbYltv3PJv}uVMT<{l0bIE4hmATYD;`(|}QYIMgJ55**@WR#F7|q)yWBC*et=L6GAR zP&$DhLjgnnc>}1#@AOE&$3}+IW;bSZ2E*=CH@uq^ocTDqn>l*hIeNOKCc{ExVao4! zZwvzXh<_MlkmF;bv8W}FMPI%~FVT*-kwq-xr>HV^q;))#yp8D|H;zSP4#=(1X`hLH zjw#8Rs5u_a(|li$_ctSacX&9NWB{*$f`r=^P{OG$IhEgx7zf z@$tR)Le=;CJ`|h2n)fD!tl!6~{~RNDut)+Up>aYZyQAw?3RRakbn&;a)t%neAHXY^ zPV1&oa_=!~707gv=xMn7y;>HjZU?8%4^P2dB!b~e&0bMCt2dE1gVA6je>k+xRAKTW ztp%ozSl^Fazwb5K(kH>nD8tIPfHkxilMe4h)@ta&VemguI#-ED_b4)x89dgDZeC_C z#68}|*gk*O|0p>}>GnvRgxmaN&ck|0zBG%p` z5O4S*Ee|b*nT?TweTJE1bgu1l!k~|voW~o`we+l>jI5iNjh`G!w zi3>eu`a(koJ+8Zk`1 zgdnPf#$H0-61V-ze)DG+f6%R5TxKl6>z4Le$+xn+cdSe;4djF3ST^hLxxBUTsHey^ zf6WEKpvf1OCq%DwJX2I}57tfXL2$-BWE(eo)7=}vF^rRe{mjyYU5YYIlD^*Y>IR~m z6YuyC%OS?@GE5n6{s;n|5o!sAfkT<;)T=F_MS@kR^~4r#jxs}%`REdYZQ}o_au{}g zT0i|WN06oY$=xcbl-uXQdHw~InQ7EClFVgr1XH|1Tt&lV%TW!3^@8d;gn0&UTru`P z7%v@zQLOz$n2jNp=FD=WnIarbF3%Sr#eAfDr-WAF=Evc(C^P4vP;7|v2sA7*90&9Y z*NUmsVU|D!H8_4-wN%k&Wax`1Q?dWn*5*IgBx>Zn!LHQK z>(8UN$pP<~(bmEJ&imqT!baPIq*p7KM$fdh;nB4HV}ZB9TeHSjzU$%bZE9aA>k7Ha z)JfXGDud-?-M(c!HySXuaIbI{GHoDu`IIpAha5q>5p1w;?Ke%_}U7047bWO;Y9gQn%YiNKET}xw`E2@xC21^F^%XQ#@GS z5gnx8VN0^xu81Q%cBX_Qyc>_gS4Wj_6|aGPTVe`qiZ;~zfMYr~f@|MaTM7|3&|ryE z`_oV-3|4UcRy6&XxMF~36@14rEwebLhT`^MNU75HXUv+-#(fk;{cleqo+6(3pm;QO zWQ%*(7E=;v$=Je{!FLi)gDC6k!*`Nb1>JbW(m8kPX+~2j`jL3H`Q0J#@Hu-M~_7`1gy^mHuOi!Kc&u-+d9K#a_^K? z6+w>}buICZ7)|THG13!(9v#^dCu1l7QE^AdM)Ge0xody7x)UjHkC0{O{fCH$tHNfc2a~HQ(CdgLFw0{`I#18MwUHJo_ZPrFI zhDiMl$0by9eLVgG@FUDhpYL#d-f!cg^-zpLNs1MwWc`d*4e1KqliKO`K1ibS6oxC# z`*a49*|8i9JBqnfqkCi%fv9ufWTJI3L5T2B#GG<~1VcvwW^&^NTFhF!NO6Ev5v1lD zj$4x%UdmE)`gutZQbFi#XEo=#4?p8_GYbNW4G+muqUO;39fH|6i*Qa98>u__C>KJ} zMy;tt8;Yq=%|ECO5)6!Wn9YqB#(z+&12q4II)ax{eEt_|LukUlLZ-k&4wj8J4pcZN z0gAPB^IjLc!E7t=~OBJMC= zIH$J%a-0&kPPGy(bYO)(-zka>4qX5zrfMhS3Wv~txGGtU6;wBYH$WL9O2-g8)tX2_ zl4?1}fQbXeplZ{tgr|IN2vm31t476V`=h8Cq>8x6zE!hGc^poq$90Z$g{8Nzq4Y_k zY$Ova6x0|II#?UchKFvLHyLxEWJS1|v;shVJJE*Q^22n3Q|3aXdQZ&K^BZ0PnZEkm zWNj3uu_zQUcnp@|qsh_?mW`?mi*aQd65lXhsEncf@}zwf=L|CVFdh<23&o1#5|(Gp9^!(Zt=fst4bPV# z9%z;d!`N=tiZqqOnTcVnqZ&;0yU@$GmEa!1%1_A8Es`#JBZHMpHC$gA9yWc()KijO zVYP}n#bQXGFB8{2#C=}PLu;Ih5(SZd9%dpe_+=;AZ05Gjy@S)%3)g1mOL9qRp<^_& zc;mt{68uT_npH7)SykDnMG=7+SiC5uxAH@Le<6uTatlmkd0#HNlrfZ$DTR_zYycIW zG`htB3DPrlI-;1;0eOYW$a$oxXQh-<0)i^5H?BNkod-d*tTQp+a#X&m9s;I|a!Ri% z!ep|wQUkR(CM*M-vba`Me&kD)v_GBsji>}B<}prrVS*}aw8cTj?56?S{K!A^7oGa5 z=!A-Rq!&$oXq zQjIxK8B$kuS~{gzg_TA{MQY@qsKv1VL?uBAr6gXer%Fdu{g(y0^*{>};IaN#Fw+&8 z^i1-w7PVXMg_`W8p)``c)D=kwWwx!R+CcrYwy;xt{tG7MUwjWB{~&L5Mc%m}sLo4O z^5BOQg};SD+XSu)V{!^6@~KsS6H6c2|BEsi*gq-rq|ch$>W^d^aw&?(#8D_<@(NlM{E9SN;A0nyH8$a8k|fT~#G-C~ zwVSHfcweC`r}H~d?pAH~6hWI@7QnH9cD|Bgw04eGI)t1*B(`usEIU6GiTT967P4Qw zp`;^hk7ZAxq~4!V7-fVthbOhUX;6IA9)gX6!98kI`@T=>U-tE88u{ba8B~K%cHB)J zaY_d48vQaa1w(fp1e64ySV&fxj{cPGHRFt6a@rNenq(=NdMSo_D4)YSxl)yUp;Oh_ zEa1tkkrtkVIZaS&&EK-uR1h4+jxXWuo76g0bWZwP15_|R4EKuw9Srwp;fsbJhV}gh7BN5F;HKlms9VhS8ktD$D zOqHDAqD9D-YlJV9GwdM0r%9XA&vol=Ya4+VT3J6M2oIi#scWNCW_zH8D2;C!#54t7QjuD_C#e>0?{n&LHBtiJ~><@_+`^j@anv%etjfr{h=Kd>~UBmNVF%u@X3Z@T{ zV4=|fo(to^g$5<dTs!mdloetVy!BrXm@o zI=Dx5aEFE@w4(uS4qvo}4;xl=mm#Y4jDUtjk$q=M`=^k*9yM9sk3-?S2h+@y0xy~W zHA9yNY-Z|c5S5E06FzJfgd!WDs==-_7%{jOSGM^E2{h}Q*(u_eY0^Cq+IUAVq+CZV z;KSQzp&8;GFDo3Rv*5$hqNikeUVZXNumSgfhb5~J)k?tlD=c5eLB)?020GsWR;grV zOiR5==Stzxep|OrF82B`WhEA!EL$R@w`j zPhHcEOw$peiG2m4qQ-?i73IWEL5q(*y&-g36K;NCg?3}uwGxDHZ_qICuEg8mj8+QL zRL$<@Je;cvy&#dyHtyN)WCG%oKXuRpaaogHJ`%DjeynwmIYQa`ck{H*{(BFxr}5-- zj=qu)FO6hmNZ~vr`~KmgZDdFV_@k5+Yp5B(^>nL4v=GoU-y)Uac`lA ziBbIWIRbwLf!>DEAZ^9JkrGyw3+yBBT7(NV%hetS&G(!9-a!(It6T_Yu|W0f&u+2! zM)vOiD+rNC{1x;TdXY8q7ck2E=Gv{TfJxd9(~hlhAz&b(zXJ(Gq<*`FHr4$Md~X>4 zFmWfI-%SzCw1yrJ^V0JIX}FMo9_hOwL`No+2#c{r2&EKA)GzRTOsrG zg-G5F`6N*NKuYF_Kf@0>jxy;EJ9h#9u0{1@G4ZV!BNhnwCCbI)|K~sdynC+XmncqH zlI5Uo`KQs(F~7in;qD_dCRG7%gUCesdAj~8-dH2cW; z7~e?=h6h*(9D$zw4=LmUzlLD`c1-xSpz0QyI&0)49ux_EJwY-lR{t#R9SNS7}g|G-HTluu^g9T0!l|Oj&pIUqZeg(z-N6Gvz zQDD(aI-h6u1}Ioa^mPEn88hzB60Yy7FOgaas?nd(;I*0kBj*+x-w`+(`^cpxKskzV zZzxE|O^FH~n)clL$o-uA$mY|`K*07j-)F0qjiw-^v-Peat0SHvk9giKKsKpD>Y=4Z ztSc^7m%m4LmRZn{Ux-$#!F$6jVySsbJ7wZGK7*DF1kNj}(!>WZ+wzVC$bL%_wqSB9 zC;}V8rbyOVqTe^o9=Z$h+Nn2Y;}3O&;&zrz$Z(*b7&zaR;jIz(Se~4f@`VEhAib!&aU`_*emy8}*N+Mb_Qij3W89?~QfeJmdfK00G1RCItwPYit!-p*tlkPE zoQ?VV`e_+b~ zhS39*Ju6QU{`o(h>|-kwh$32-?T+=mU?4Ouz=hb|nE5UYscW!d>U+c<$CouLqTecG zIrsl(uup(8-i!G`tI$Q;ki}^gMeKjkS&!ISBaB`9;p17Ig9C60%Q;rMlpkaFW$CxN zu3g-O!rJBdVnwpYvB4f632>1vxW_Nc$RFqZBL&fKaasuy=|4a@1D5-7vg!~#GjGnB zTYJMr%fRtpl$oa4mvY;FL%h#7!q#xXO?Ez?sbtsh7Xp{#?M z|JL;~2HK1sEc@7(cP8Ot7Wz^X3LU{Qv+IJREdY{dMh{PlXXXi^xO~w^6I!T;P>vFw zcEdu@!1YV7%$CWw(jBgECQLUci~3F~@#Crn8IXY6#HEmCtug@3;f%4|rq8`ujf*R* z%YsUq{s8PUeqD93q;l+|dj}b}v$hFbejweD_S)M6@#2qfMEomo1OU>dIcABcdjCNT zfxr?Us0As`Lbb-DU{gDfsiF~TEs>TIXm4k zv3%6{*uAP_h$oy+8jCvxH}>PGCJu&tQjvyx>~*eDIi(=GlBJ;}n-Qfy%TPxf1xy2| zp<03+)I}Ksw2kw$_osWF({tvry&|lT7`G5PPm>OD2_eQ1Y8K>-HrjL>{pLw?k&vIAUXY!ahgdspwKU<7M~BYeRga2UibKA>`?QN66(dfI@FoQ5@)S`ydps?Wu z0B^zo5BGC0UZto!N(4f|DU+1(r z0te%0wO9)oT_padB zw`*xCsH3S&xWC=-i%88w1hP&t&xmwaXCAB34_}NLy(*_Wu=mm^e;|a>|V|O zyfoC#@ix>&lJFq&x${HFL*Y5>F(dW1iU9K>M~ntYrWJA#URF_FTH0D|Af+YEkiRL3 zi4mY^0K{BzagW4`zrq3!o;1{N%7A^ECo(RLiM|NnS)$3ir=NUT(5eXNEX;;@A1AJd z{nUg;@=q36DM>(Qj>P`sj58W^0d~DhK_gBo;-oaev;}*s^Pm?64YeIDwNQ=wZ@i8} z$B0g`MEPvEh+uWHfGKO~3Kf$zv6L=8SA<*P(gc2&^{h|qUsrwXbH8YLgc2O}N*8MQ zfL!&OpDEt2B(#dK>^jkTic=}K1#Xv9sD;cbJp+CLZ;^E5w5w9myZLhZ{)+nXjuYk2EzHE^gjVH6mT-yN_>Y84$}+c> z!p6hoLPd;mtG&tIOte-ZH9Z8}UQgBAD}0jeV?UQFBxCypF%FmVMrin0)k@r1>! z1yPbRk}??y5rA9pP+xCULP-wM)xcCcy&xu-TDx+=}=< zH!wT01J~pWi%BfS{glODq$=-`{j&qJ>2M)=mqh?Ms+Nb_inb(Wdkm4rX@48Cj_`+1 z3J~EhLrPP@fqbM_vx3>(1!6Mh*2J8(f#by6BTbLw4Ch>F3Uo>GZi3}bMkc3$3j=@L z>P~7gG0=5d(%L`!{cD$3HEBth>{3TLJX2<0e0)?RRp#~PH);g3E9bZFwCVYI5cbpp z{#RmVLf~9$8z~pQ#GovYk@u))slA|ool6(3rlpWW<0ssYg)qfwwg$ub312Rtz{RNtVv($A`xbHe#jK#d~tKWi@3}~Yy6<~M7KWWN2+@O!}8kj%3wU9fc2Wvn$W_+3ZAwk zV#-zpSNz+pFj8Zyq||mSEFV^|NrOXqUm|8Zn6>_G zc>QR$ZxFuH*6OJ8!x}VxTtW;E4P#{A1MaFYpASZSzYo)rXO~ntfkfi6T z0jjapDEdaW_ZxAU3$>tKuH2bY!UlrxtcpL!El%wt^l;*ogyp~`$7jybT?w%chXkPNZb-UlA z8kvIdM}=99wrgF4_1S^iAkQ^JMLlw|cSl9krVi|;qog8Zd|#?VFqJCJd>UX+L?yU&@cG!I3^04EW+WRT z_!z9~%SSSil{<}%> z!0TJ1%w*pKvN*ke$J7pGH+o$Zkfr{5yBTfIi10hw-v-tx{O-Y-Urvq+8KabfqU82u zO-r7DsU_B^rmJUIQCOJ-(TE5dr1USiHj!(d^?v1feJ4DKE&rE3%hjF#YC(0XeWU^c zY(dou{Q1-C^{*CGU(AeE{>KF$GdEy8#DV}a=iNJan5c4K8qNASkqw8iD_Nu!*^z*f zwFS5tYUbr9yA~Ht*8>&l8EM6~AKnbpu5`hl{q}57>ihYZOQys>!nRCCX<+zaVz4qV z;gYX5iuEfYUyweB#|)DhSFklopP&FAl{|qPoliixrb#f5k7|5QZ67R@vjr%0A}iOo z!mNF*r6F2~xoxB2iIo{-pKJofU-7&akwj&jnVgSn-7I80g+5UNQ|cZ&b(n=Q^UJt< zCpJxfkm3myAZoH}R(9%USQ$S}#?|TpVD+4Ga##f~a2YZ9Dq6-&ZQO=9Jo`%`YRa6R`l=oxy+4$q(jZnMo3qvE77#&^vkA6HyhCy)FVxL2P;+LMOP!rmiXB5dm z^qmaUqs>-k?L~8%cJrm+u_J|x6dVsX@()eAF4hNdWW^u6xacfN%{ek_D6%b;P)sU=Ze_9z zrPHbyP9tNZGs{8Ost3N&&9&{hLtaf+IA{bel{M%Egz%mP>DZ5!BBMExOW6AAD_@s?{+)t*EP$w&mB2C+uK+iLcX}YFB@Yv_)x;;dRk1h^5CY! z?qo(^$Qv<59*W;iFmf{)L=>I_Sv8A+{eVFE)W+JyQ%Gf{CUQ{{6TUE>Lv2~lV3}ht zJ%?mD-Us*H_}zu|qouviV7f0)&|VH9;&t|p3QanqdJ><-lRtjT>Mm8NRex92(D85} z^-vJVgd8XmV(btG?Zm(&*R2OAl^0g9`UvK}bH)^s7S^FrkEprzg2ngoC zPf1rxGdnZpzmBYbbvVHVpJ(s{V_vf&olDSo+jwNi?R)+QR)ET&^iqeOB> z(TjNH)bDS!RX+rG**a8TBMg7J@Rn&$*ot&&fJ3_;Nu%U^JR<*{5_*j6S-_{yK>23* zB8&+1ces<>+mrT@vL_=-Y(b+62+3_RSWID&1#)qJ6s(MwkM2K z`)pl*>k%BPE^SIXV;E_l82I5-2dWtn#$7^;EK(43;tF|*b;l-yC(3WEn}V?KD_iq0 z8!!kMC2m(>ATIAj3B)=nR@E@fs-$z_Ir!T!)BVPDLS^0w05`2Cn5u1H}E276={lCX98$+gUx! zXytIX`TTvXlUlU;_R5;7$#s&>l3?r&()BvAI~2OrkPP zrz>CQ3W^Q&yh=y+tF-(7I!b3ULhC@K`3Pl zc~b9{8XNMyAKn?4pxO9&Ysh4kAllk|5Y7ctsV7u!0;X`-y^_@2E9?Brnvi7Ui;m5ZOyyQ>bP#;8+~>kNzUKUb@12C96g&_FPgU$IE-R04506`{+=AI z89~5~g9IiqLao`}#e`5She_Wuly1{FTtt$uyPe1QmCm62q4V?&BQ+HXoAcqPBp)$` z&Qiq6^5k(yLE-&ZmHpJ@?hd-8r4{NDiK{!S3Z)1f1*tfhgLJRMUsncas4>NZayc)D z849UVwDL`OR@6;sXoux2@{rF0*|W~k8qV27sGV~nV_IqTz9sIhMdd6NX>&iD3v0S* zz7GaEly60@aAUdd2L-jZY?pH}7!Kvz#T*h!`aXhn5Np(+CN}J}+72wtTVFzs{Y4D9bOL41 zlH+qLi-e~!U5gus30;>f8OnxR4mb-1dMkK|+qn`SU-}fdmfL&3X+Xs+n;P@YF<7ea z4~KG>z0Xo$*x%p)^nKf6uItg^M+)8p`FHbpdRK(snaUcoH?AM-xT^@qB{`{0 zV082WI1rUQ&5V=5vSwZIy0$+vx);+`lhr{Q(`ms$KEK@viTfnT#tk_(ys{#lELCEX(Y2^F{8cw5!J(VyP|u-;j< z=K{vXS-rZl*Z$GhgSN7BRH3L+;F}n>>ou=N=Y*mo#Av6mKb@yo>?PNxh7T!z-A8l` zPNSPIc<2eoo<%}m)XP_gd>T8=k7A(aUrmLr)3iW@j8qb%tyQzMZ5{RV2bs0v=xJfo zb1E6C4e!q#+v=QPGWzhAP|_uY=dayTDki1AsQQ4O;VCK3_-C_pK2Str8CdRl7=YCN ziLpSuXhiOCke#}W0CENUvLsBLmzHz11(Mb9jtIGbj;JVEaiP)EV#Vc=>4{Y1+8nEm z9q$Tm*q$&hyGEKxtd?uWQ3ahj(hdc)AvIJ6d8{c71p-lyxG{5Rt3iiCTJtO>_g?APWY_Phatg#EDYAaEwJ|6l&B0xLWC#?@)=| ziN(er+u?n?9$y^Cj_u^%!H7Bd0Bz#ZE{<^CR}ui?pZCYY_b4G3AtKP(wJ4S<7LrwTn>2&6k%}rud&aJ~(lmTdeunr;xNdHPcJ5oP!p>To-*BuhGRbvoyf(I&%j$ezc<%LA zwDBKjrfcp(GvNt)OmEOFVOh^=WL`NAjx2K!k7SpZdQuf?lP)9@h_!BuoGySeRQCM_aOlZj_PB>K6dfl?V zwJ`QMp^`KMUaovXwrdX~ zYPLthKajd3FDM=ie+g`}dUG_EO+x>=PbK^HU#qnExv&TuU`-|hnBDzn&0+6mXKdyS ztjhe!?q)Q%?Du(adUnc$6C`w7B9b^DIGPKE)%9W|$Xo6~sBr4f^Tt_OHm_x`OlIh- zbA-wx+2zpOr()3kc6i@?0I!h0UT=aDw~-<+T)3`-bjo%_8IEPAR}S8Prkzq<{#1rt zM??EI*X}25^|ALJH~SlPV*wJ4uC9zmlkYqA?b>&#jA&c_81C@Fhtz$|o8-DfyXlG< z4SE7{@7a+Bcfws$jfh=V8I=+C5L;-Ks{Eo?HZHh>y9Kvw#Vr$cr|!CN>hOx)NO-uC zPE4B+l)8;W2`4JWeMl-zA`T73`ODE2^?IcNCza&_R&up|OG)XB=?mxk&rt2lVXEQCl$K#c7IQ;{t+nuy zJzcvsc8)RO7yNh9J7+1yj3R6*nyhb&6!KEI*l!yW+av<03V@8TGE($_D;AmrEga?t+rR%WA$MW)~07}@4DwkPG2mh=jQVc^njj* z-soY7w>UGDeGVqy_a5}#fd~{1cQAy0({p+4=KPUV6pC58xBDM{?;l9b#1Y2fJV_Pm zoG}eAShqg;@Bp?`F{>AIF!qYP229mRV743L^o8nR^Z05yOQCSx=X;FP4~01stWP^L ze0ME++`nOZp{NXcj%%Etj+HnrPK7glKJDOk-L|M%yu#EX$<>C&=;iPx^?#lIy@qMv zq2aSb_?7RZGS>a07hYZh0Uv)42^v&UU-zen-mPoP-JTGi9s_$)&bz(Wfo(@!eZGl> zVJ$A!QojKEWi8ax_1F{Y@oN9|biD{71Iti1-daC`i;ZCcE|j&QDEl;T$U5~$!S)CI zKWD7M@fC|6NDz=<5)cq<;EV-q-2K-y1zdRnuTOg;D_bUOM>C5nbsI-?H4MQnZ*E$< z859~u4Cuiww*F$q&-7qiR^LmLxr!OA+$05@7lVS?_f^ox!kRAS)1We$9p za|~e#7eB;uNsR-?XOdT|y3_CYQkc~^I05v|nNb5*E}rpiqIQ-x5gq``x~7%YXwn&i`c5)a3g zh7tdnCE@u{kSz|Qs3m?HH~m6NJFnKwo#Y!`xS?vL4npeVdP4TF*VR5;-|zmUliEze zP9_V|Tm@%n;X$O~l*OcrozuZcXoZ7QcLZq4RoPCxQco2J(ih zup?R8{1cVPw|yy*X=#HF@j7o)2SR2AmqHRCU;o#l4rSS8 z{kwT5`CiVwtbZS8>G9uE%@f|<{JY`y$+wT}*oC*xe*Mhu$v0r_{a$tNYU%g=jpggF zNUxt(#rAqD17q`1gIfj%19Bv?XQZs~IAWY4S;U*#rujnB_QSnN*S*&r|w~TkCF>zLO47P+2+Y^_+EYtagRJe4}<$y%Bg%v5{@Y+JzsoF2=u~>|2@k zIVV`KZWYU9+ZXc;&pzQ|@#*q5>TFW!@NG(GyYPNNl}mhy)_rre&kl#w^jT*7=AIYH zF1+ojV8eCQhBY%eqxt4_D#x+BnDw-;!*`?c{KS0>6ZZV9e6_xWd!Fy|MHjm(;$E6F z#oQC<{dZTgH|}23M}MX_d@jEowr%~fmw{XSQm}kbgTc)Mmv2^_Pj=(~Af(35UvMh2 zVQZa&VRdTG+f6s}MQ`$%txK5q;=!Xip-V0bCoKIhmzRA(VY_s5=R3A!u5Qhu9>ECZ z!;&*!$VqhX{Ip8pUt(%R-v_JOQxmS3h`f>D(m7nH^RQxGLgpFf7wkz-+IvsyUgC{^ za;ZOl>cs77ho4R1oc8vv@|^Z_zGv18-)>)$mewmX)i(3flsUVXo!e7=?M>66>NQ8V zO}b=MU0Le;_L1t3s=IOrqu+mCKjn!>aPjF^*V^Uko?P7eTCTe0@v`Of>Ym+vKCgaZ z@#$;R@s3+u(YYRC|5;^A2thaocQ5!QR(3>v6r!{ z+xpK(Po9)`b3K&AJ9bH8~}|d%?0`$oA$g0X(1z^<)?v0$e>sr3=9LX zc8JfB4Z#`;y{pBnyY(3u;zC&&_)$#S&jU57xTG>C6+B&u9tP+KO2YIvFqYe(Xhu6; z65Sm1c~XQqFA8DiAWfp6Ye%1WL1@2L3e}D_4TEk1`a}f61dej32`JMN==#w|jS>21 zS3>opk0GNQf!_Z{7%`;*Yi}Ig0Q8P7!hoDcWCO5ud(q88?>i#QN^L?m3$-VSZVGx= u3t>u4Gc;6CI$r4d(c6Ov{o?INSq!yx7~stc%t4@BCCHEn%pRP*ARYh$X{A{J literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.scala deleted file mode 100644 index 875edb63c..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UpdatePossiblySensitiveTweetHandler.scala +++ /dev/null @@ -1,46 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.tweetypie.store.UpdatePossiblySensitiveTweet -import com.twitter.tweetypie.thriftscala.UpdatePossiblySensitiveTweetRequest -import com.twitter.tweetypie.util.TweetLenses - -object UpdatePossiblySensitiveTweetHandler { - type Type = FutureArrow[UpdatePossiblySensitiveTweetRequest, Unit] - - def apply( - tweetGetter: FutureArrow[TweetId, Tweet], - userGetter: FutureArrow[UserId, User], - updatePossiblySensitiveTweetStore: FutureEffect[UpdatePossiblySensitiveTweet.Event] - ): Type = - FutureArrow { request => - val nsfwAdminMutation = Mutation[Boolean](_ => request.nsfwAdmin).checkEq - val nsfwUserMutation = Mutation[Boolean](_ => request.nsfwUser).checkEq - val tweetMutation = - TweetLenses.nsfwAdmin - .mutation(nsfwAdminMutation) - .also(TweetLenses.nsfwUser.mutation(nsfwUserMutation)) - - for { - originalTweet <- tweetGetter(request.tweetId) - _ <- tweetMutation(originalTweet) match { - case None => Future.Unit - case Some(mutatedTweet) => - userGetter(getUserId(originalTweet)) - .map { user => - UpdatePossiblySensitiveTweet.Event( - tweet = mutatedTweet, - user = user, - timestamp = Time.now, - byUserId = request.byUserId, - nsfwAdminChange = nsfwAdminMutation(TweetLenses.nsfwAdmin.get(originalTweet)), - nsfwUserChange = nsfwUserMutation(TweetLenses.nsfwUser.get(originalTweet)), - note = request.note, - host = request.host - ) - } - .flatMap(updatePossiblySensitiveTweetStore) - } - } yield () - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..add172cb99bbe2ba64bbf66a1a9eab56eb20a47f GIT binary patch literal 38041 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.scala deleted file mode 100644 index 5de0fa625..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlEntityBuilder.scala +++ /dev/null @@ -1,102 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.tco_util.TcoUrl -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.thriftscala.entities.EntityExtractor -import com.twitter.tweetypie.thriftscala._ -import com.twitter.tweetypie.tweettext.IndexConverter -import com.twitter.tweetypie.tweettext.Offset -import com.twitter.tweetypie.tweettext.Preprocessor._ - -object UrlEntityBuilder { - import UpstreamFailure.UrlShorteningFailure - import UrlShortener.Context - - /** - * Extracts URLs from the given tweet text, shortens them, and returns an updated tweet - * text that contains the shortened URLs, along with the generated `UrlEntity`s. - */ - type Type = FutureArrow[(String, Context), (String, Seq[UrlEntity])] - - def fromShortener(shortener: UrlShortener.Type): Type = - FutureArrow { - case (text, ctx) => - Future - .collect(EntityExtractor.extractAllUrls(text).map(shortenEntity(shortener, _, ctx))) - .map(_.flatMap(_.toSeq)) - .map(updateTextAndUrls(text, _)(replaceInvisiblesWithWhitespace)) - } - - /** - * Update a url entity with tco-ed url - * - * @param urlEntity an url entity with long url in the `url` field - * @param ctx additional data needed to build the shortener request - * @return an updated url entity with tco-ed url in the `url` field, - * and long url in the `expanded` field - */ - private def shortenEntity( - shortener: UrlShortener.Type, - entity: UrlEntity, - ctx: Context - ): Future[Option[UrlEntity]] = - shortener((TcoUrl.normalizeProtocol(entity.url), ctx)) - .map { urlData => - Some( - entity.copy( - url = urlData.shortUrl, - expanded = Some(urlData.longUrl), - display = Some(urlData.displayText) - ) - ) - } - .rescue { - // fail tweets with invalid urls - case UrlShortener.InvalidUrlError => - Future.exception(TweetCreateFailure.State(TweetCreateState.InvalidUrl)) - // fail tweets with malware urls - case UrlShortener.MalwareUrlError => - Future.exception(TweetCreateFailure.State(TweetCreateState.MalwareUrl)) - // propagate OverCapacity - case e @ OverCapacity(_) => Future.exception(e) - // convert any other failure into UrlShorteningFailure - case e => Future.exception(UrlShorteningFailure(e)) - } - - /** - * Applies a text-modification function to all parts of the text not found within a UrlEntity, - * and then updates all the UrlEntity indices as necessary. - */ - def updateTextAndUrls( - text: String, - urlEntities: Seq[UrlEntity] - )( - textMod: String => String - ): (String, Seq[UrlEntity]) = { - var offsetInText = Offset.CodePoint(0) - var offsetInNewText = Offset.CodePoint(0) - val newText = new StringBuilder - val newUrlEntities = Seq.newBuilder[UrlEntity] - val indexConverter = new IndexConverter(text) - - urlEntities.foreach { e => - val nonUrl = textMod(indexConverter.substringByCodePoints(offsetInText.toInt, e.fromIndex)) - newText.append(nonUrl) - newText.append(e.url) - offsetInText = Offset.CodePoint(e.toIndex.toInt) - - val urlFrom = offsetInNewText + Offset.CodePoint.length(nonUrl) - val urlTo = urlFrom + Offset.CodePoint.length(e.url) - val newEntity = - e.copy(fromIndex = urlFrom.toShort, toIndex = urlTo.toShort) - - newUrlEntities += newEntity - offsetInNewText = urlTo - } - - newText.append(textMod(indexConverter.substringByCodePoints(offsetInText.toInt))) - - (newText.toString, newUrlEntities.result()) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.docx new file mode 100644 index 0000000000000000000000000000000000000000..686804e9612f740cab32ba64eb5e398de0ea8580 GIT binary patch literal 38077 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 VHcW_<^1^C(IQ& zunTT#`6P}jx*+S4tGPXEUuycpE3-xgX5RO9L?SMfHtei_N@pUDG;18dFzkeqOy11D zWj*FZ4Of1F@g+-RPrFI(y?4BB|01@bv&17MR{QK7s}$0b3OB7nOTm`A=i~9BXerE< z)Bde0eW%_Su_=;|;_BEx5r3(BR;*8J39E}0a6ifNiOV6k!P7aCuxmcMv!bsm)x*xMU)5Z^G zQ4Oz6?ns>`;w0!!Gx}b!XvN*yY*u z{StjDK8WJ5MRNbE$sscsqWJd2M>94Te0xu;l;_J&$KSZl?38Dw5Cta+0iLiroj#o^ zTb!(Sn#cc6)arZ4`H7<=)JNqG&9D->tr&F@jWcr7F&Kp1D@MKi4*EI*%RX{e>kNw>%&h=ggwa+VFDVM;9%M3g^oKQJHqT zUFXO;y_Frkfi3RGC1$p%!X$hfE|CjElypgG+~glUSEYO5h745Z==-4z``k7J>fVZ? zk9Vt5v3%IgDM5FU7oh=eWJNS{B_(oxF?8vxAt#)x2c6+=_GQIe6&Br9+l*s|*jL2r|CMKdkGWYW3IECaxUUNwq z&+j*vk-9jPYSN>+qJ(xm5+T5Pa!6&KIG|YNIQ@y4#6Dr?-#FeCsTjg;E1Xay1%0^x zAT#7+??`57wtr(+s&fdsKc88?(AEDVi%{%6!iYCxeR{}qq+;=tD>OsG-l;1Kgqr@xls%~x^)bSuS^%sicX_#;%P%0vg58biAq^qCKS0X5Ov z$DHyb;#(XO6I^>A6G&fa!VAs*%Hy?1@@^q8Tx$~>D?5$nh1Gp4c4)qEm2ngJn1YXy zGKRX~JA4X`e=KpIBDllz?u{)EEBaB~YI9pF9$qBhxAeFW5Sf1PV!^q4^kgtXZ2)s_ z-)zVC9~o=|0LLR>G8pZHcR5e+Mf*E_i_V|`f~u9pJa{P!%p;3_SA+j#o);kE-xz;2 zw1*0#B1G-Hz)RXdq0}bf2-x!9yT|>i-)bfrD*xQyFEatkar^)vxk(-hw)`h|_4VEA zu5Y~CZT|`e04PIf=V{kbSW3&Ol*?$)UM*Kb#{l|4$?tkH&olE)V#wzup&V$Pbe*FT z@SU@vhys;E3oq+(1Yu1MDZ@Ys&_cvI;TUm^u&FEo)kCw!>-wIcH9a(k3`Icw_d232 zY)dx|1wf7NIv|g_5wMl*g|eXDah;VDzLB-rNkS=5tF=xkiC7zzO~wnVhsJ~J`t#8n brr74_(AG)-oI&4al@#C#PLJcXZ)g7iXD>T{ literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.scala deleted file mode 100644 index bdf939da7..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UrlShortener.scala +++ /dev/null @@ -1,106 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.service.talon.thriftscala._ -import com.twitter.servo.util.FutureArrow -import com.twitter.tco_util.DisplayUrl -import com.twitter.tco_util.TcoUrl -import com.twitter.tweetypie.backends.Talon -import com.twitter.tweetypie.core.OverCapacity -import com.twitter.tweetypie.store.Guano -import com.twitter.tweetypie.thriftscala.ShortenedUrl -import scala.util.control.NoStackTrace - -object UrlShortener { - type Type = FutureArrow[(String, Context), ShortenedUrl] - - case class Context( - tweetId: TweetId, - userId: UserId, - createdAt: Time, - userProtected: Boolean, - clientAppId: Option[Long] = None, - remoteHost: Option[String] = None, - dark: Boolean = false) - - object MalwareUrlError extends Exception with NoStackTrace - object InvalidUrlError extends Exception with NoStackTrace - - /** - * Returns a new UrlShortener that checks the response from the underlying shortner - * and, if the request is not dark but fails with a MalwareUrlError, scribes request - * info to guano. - */ - def scribeMalware(guano: Guano)(underlying: Type): Type = - FutureArrow { - case (longUrl, ctx) => - underlying((longUrl, ctx)).onFailure { - case MalwareUrlError if !ctx.dark => - guano.scribeMalwareAttempt( - Guano.MalwareAttempt( - longUrl, - ctx.userId, - ctx.clientAppId, - ctx.remoteHost - ) - ) - case _ => - } - } - - def fromTalon(talonShorten: Talon.Shorten): Type = { - val log = Logger(getClass) - - FutureArrow { - case (longUrl, ctx) => - val request = - ShortenRequest( - userId = ctx.userId, - longUrl = longUrl, - auditMsg = "tweetypie", - directMessage = Some(false), - protectedAccount = Some(ctx.userProtected), - maxShortUrlLength = None, - tweetData = Some(TweetData(ctx.tweetId, ctx.createdAt.inMilliseconds)), - trafficType = - if (ctx.dark) ShortenTrafficType.Testing - else ShortenTrafficType.Production - ) - - talonShorten(request).flatMap { res => - res.responseCode match { - case ResponseCode.Ok => - if (res.malwareStatus == MalwareStatus.UrlBlocked) { - Future.exception(MalwareUrlError) - } else { - val shortUrl = - res.fullShortUrl.getOrElse { - // fall back to fromSlug if talon response does not have the full short url - // Could be replaced with an exception once the initial integration on production - // is done - TcoUrl.fromSlug(res.shortUrl, TcoUrl.isHttps(res.longUrl)) - } - - Future.value( - ShortenedUrl( - shortUrl = shortUrl, - longUrl = res.longUrl, - displayText = DisplayUrl(shortUrl, Some(res.longUrl), true) - ) - ) - } - - case ResponseCode.BadInput => - log.warn(s"Talon rejected URL that Extractor thought was fine: $longUrl") - Future.exception(InvalidUrlError) - - // we shouldn't see other ResponseCodes, because Talon.Shorten translates them to - // exceptions, but we have this catch-all just in case. - case resCode => - log.warn(s"Unexpected response code $resCode for '$longUrl'") - Future.exception(OverCapacity("talon")) - } - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d9033035cf5267bbe433636da582fa12c31004b GIT binary patch literal 37874 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 Y8y$MMDgirabyw*?f`IKo%3i(t2eJv)pa1{> literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.scala deleted file mode 100644 index 1410525d5..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/UserTakedownHandler.scala +++ /dev/null @@ -1,79 +0,0 @@ -package com.twitter.tweetypie -package handler - -import com.twitter.servo.util.FutureArrow -import com.twitter.tweetypie.store.Takedown -import com.twitter.tweetypie.thriftscala.DataError -import com.twitter.tweetypie.thriftscala.DataErrorCause -import com.twitter.tweetypie.thriftscala.SetTweetUserTakedownRequest - -trait UserTakedownHandler { - val setTweetUserTakedownRequest: FutureArrow[SetTweetUserTakedownRequest, Unit] -} - -/** - * This handler processes SetTweetUserTakedownRequest objects sent to Tweetypie's - * setTweetUserTakedown endpoint. These requests originate from tweetypie daemon and the - * request object specifies the user ID of the user who is being modified, and a boolean value - * to indicate whether takedown is being added or removed. - * - * If takedown is being added, the hasTakedown bit is set on all of the user's tweets. - * If takedown is being removed, we can't automatically unset the hasTakedown bit on all tweets - * since some of the tweets might have tweet-specific takedowns, in which case the hasTakedown bit - * needs to remain set. Instead, we flush the user's tweets from cache, and let the repairer - * unset the bit when hydrating tweets where the bit is set but no user or tweet - * takedown country codes are present. - */ -object UserTakedownHandler { - type Type = FutureArrow[SetTweetUserTakedownRequest, Unit] - - def takedownEvent(userHasTakedown: Boolean): Tweet => Option[Takedown.Event] = - tweet => { - val tweetHasTakedown = - TweetLenses.tweetypieOnlyTakedownCountryCodes(tweet).exists(_.nonEmpty) || - TweetLenses.tweetypieOnlyTakedownReasons(tweet).exists(_.nonEmpty) - val updatedHasTakedown = userHasTakedown || tweetHasTakedown - if (updatedHasTakedown == TweetLenses.hasTakedown(tweet)) - None - else - Some( - Takedown.Event( - tweet = TweetLenses.hasTakedown.set(tweet, updatedHasTakedown), - timestamp = Time.now, - eventbusEnqueue = false, - scribeForAudit = false, - updateCodesAndReasons = false - ) - ) - } - - def setHasTakedown( - tweetTakedown: FutureEffect[Takedown.Event], - userHasTakedown: Boolean - ): FutureEffect[Seq[Tweet]] = - tweetTakedown.contramapOption(takedownEvent(userHasTakedown)).liftSeq - - def verifyTweetUserId(expectedUserId: Option[UserId], tweet: Tweet): Unit = { - val tweetUserId: UserId = getUserId(tweet) - val tweetId: Long = tweet.id - expectedUserId.filter(_ != tweetUserId).foreach { u => - throw DataError( - message = - s"SetTweetUserTakedownRequest userId $u does not match userId $tweetUserId for Tweet: $tweetId", - errorCause = Some(DataErrorCause.UserTweetRelationship), - ) - } - } - - def apply( - getTweet: FutureArrow[TweetId, Option[Tweet]], - tweetTakedown: FutureEffect[Takedown.Event], - ): Type = - FutureArrow { request => - for { - tweet <- getTweet(request.tweetId) - _ = tweet.foreach(t => verifyTweetUserId(request.userId, t)) - _ <- setHasTakedown(tweetTakedown, request.hasTakedown)(tweet.toSeq) - } yield () - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.docx new file mode 100644 index 0000000000000000000000000000000000000000..42e22803ee9a4edd391d7bd79ed1b45215b543a4 GIT binary patch literal 38399 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.scala deleted file mode 100644 index 5ef7573f2..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/WritePathQueryOptions.scala +++ /dev/null @@ -1,153 +0,0 @@ -package com.twitter.tweetypie.handler - -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.tweetypie.repository.CacheControl -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.thriftscala.MediaEntity -import com.twitter.tweetypie.thriftscala.StatusCounts -import com.twitter.tweetypie.thriftscala.Tweet -import com.twitter.tweetypie.thriftscala.WritePathHydrationOptions - -object WritePathQueryOptions { - - /** - * Base TweetQuery.Include for all hydration options. - */ - val BaseInclude: TweetQuery.Include = - GetTweetsHandler.BaseInclude.also( - tweetFields = Set( - Tweet.CardReferenceField.id, - Tweet.MediaTagsField.id, - Tweet.SelfPermalinkField.id, - Tweet.ExtendedTweetMetadataField.id, - Tweet.VisibleTextRangeField.id, - Tweet.NsfaHighRecallLabelField.id, - Tweet.CommunitiesField.id, - Tweet.ExclusiveTweetControlField.id, - Tweet.TrustedFriendsControlField.id, - Tweet.CollabControlField.id, - Tweet.EditControlField.id, - Tweet.EditPerspectiveField.id, - Tweet.NoteTweetField.id - ) - ) - - /** - * Base TweetQuery.Include for all creation-related hydrations. - */ - val BaseCreateInclude: TweetQuery.Include = - BaseInclude - .also( - tweetFields = Set( - Tweet.PlaceField.id, - Tweet.ProfileGeoEnrichmentField.id, - Tweet.SelfThreadMetadataField.id - ), - mediaFields = Set(MediaEntity.AdditionalMetadataField.id), - quotedTweet = Some(true), - pastedMedia = Some(true) - ) - - /** - * Base TweetQuery.Include for all deletion-related hydrations. - */ - val BaseDeleteInclude: TweetQuery.Include = BaseInclude - .also(tweetFields = - Set(Tweet.BounceLabelField.id, Tweet.ConversationControlField.id, Tweet.EditControlField.id)) - - val AllCounts: Set[Short] = StatusCounts.fieldInfos.map(_.tfield.id).toSet - - def insert( - cause: TweetQuery.Cause, - user: User, - options: WritePathHydrationOptions, - isEditControlEdit: Boolean - ): TweetQuery.Options = - createOptions( - writePathHydrationOptions = options, - includePerspective = false, - // include counts if tweet edit, otherwise false - includeCounts = isEditControlEdit, - cause = cause, - forUser = user, - // Do not perform any filtering when we are hydrating the tweet we are creating - safetyLevel = SafetyLevel.FilterNone - ) - - def retweetSourceTweet(user: User, options: WritePathHydrationOptions): TweetQuery.Options = - createOptions( - writePathHydrationOptions = options, - includePerspective = true, - includeCounts = true, - cause = TweetQuery.Cause.Read, - forUser = user, - // If Scarecrow is down, we may proceed with creating a RT. The safetyLevel is necessary - // to prevent so that the inner tweet's count is not sent in the TweetCreateEvent we send - // to EventBus. If this were emitted, live pipeline would publish counts to the clients. - safetyLevel = SafetyLevel.TweetWritesApi - ) - - def quotedTweet(user: User, options: WritePathHydrationOptions): TweetQuery.Options = - createOptions( - writePathHydrationOptions = options, - includePerspective = true, - includeCounts = true, - cause = TweetQuery.Cause.Read, - forUser = user, - // We pass in the safetyLevel so that the inner tweet's are excluded - // from the TweetCreateEvent we send to EventBus. If this were emitted, - // live pipeline would publish counts to the clients. - safetyLevel = SafetyLevel.TweetWritesApi - ) - - private def condSet[A](cond: Boolean, item: A): Set[A] = - if (cond) Set(item) else Set.empty - - private def createOptions( - writePathHydrationOptions: WritePathHydrationOptions, - includePerspective: Boolean, - includeCounts: Boolean, - cause: TweetQuery.Cause, - forUser: User, - safetyLevel: SafetyLevel, - ): TweetQuery.Options = { - val cardsEnabled: Boolean = writePathHydrationOptions.includeCards - val cardsPlatformKeySpecified: Boolean = writePathHydrationOptions.cardsPlatformKey.nonEmpty - val cardsV1Enabled: Boolean = cardsEnabled && !cardsPlatformKeySpecified - val cardsV2Enabled: Boolean = cardsEnabled && cardsPlatformKeySpecified - - TweetQuery.Options( - include = BaseCreateInclude.also( - tweetFields = - condSet(includePerspective, Tweet.PerspectiveField.id) ++ - condSet(cardsV1Enabled, Tweet.CardsField.id) ++ - condSet(cardsV2Enabled, Tweet.Card2Field.id) ++ - condSet(includeCounts, Tweet.CountsField.id) ++ - // for PreviousCountsField, copy includeCounts state on the write path - condSet(includeCounts, Tweet.PreviousCountsField.id) ++ - // hydrate ConversationControl on Reply Tweet creations so clients can consume - Set(Tweet.ConversationControlField.id), - countsFields = if (includeCounts) AllCounts else Set.empty - ), - cause = cause, - forUserId = Some(forUser.id), - cardsPlatformKey = writePathHydrationOptions.cardsPlatformKey, - languageTag = forUser.account.map(_.language).getOrElse("en"), - extensionsArgs = writePathHydrationOptions.extensionsArgs, - safetyLevel = safetyLevel, - simpleQuotedTweet = writePathHydrationOptions.simpleQuotedTweet - ) - } - - def deleteTweets: TweetQuery.Options = - TweetQuery.Options( - include = BaseDeleteInclude, - cacheControl = CacheControl.ReadOnlyCache, - extensionsArgs = None, - requireSourceTweet = false // retweet should be deletable even if source tweet missing - ) - - def deleteTweetsWithoutEditControl: TweetQuery.Options = - deleteTweets.copy(enableEditControlHydration = false) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..f461d8f63aef40f5a4230b9be7e180a7109cb32b GIT binary patch literal 37491 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%0DU;R@B!*Dd!OVZ_dKm+4Mh}*K?8`foa4`#g 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.scala deleted file mode 100644 index e9d5021a0..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/handler/package.scala +++ /dev/null @@ -1,42 +0,0 @@ -package com.twitter.tweetypie - -import com.twitter.context.thriftscala.Viewer -import com.twitter.tweetypie.thriftscala._ - -import scala.util.matching.Regex -import com.twitter.context.TwitterContext -import com.twitter.finagle.stats.Stat -import com.twitter.snowflake.id.SnowflakeId - -package object handler { - type PlaceLanguage = String - type TweetIdGenerator = () => Future[TweetId] - type NarrowcastValidator = FutureArrow[Narrowcast, Narrowcast] - type ReverseGeocoder = FutureArrow[(GeoCoordinates, PlaceLanguage), Option[Place]] - type CardUri = String - - // A narrowcast location can be a PlaceId or a US metro code. - type NarrowcastLocation = String - - val PlaceIdRegex: Regex = """(?i)\A[0-9a-fA-F]{16}\Z""".r - - // Bring Tweetypie permitted TwitterContext into scope - val TwitterContext: TwitterContext = - com.twitter.context.TwitterContext(com.twitter.tweetypie.TwitterContextPermit) - - def getContributor(userId: UserId): Option[Contributor] = { - val viewer = TwitterContext().getOrElse(Viewer()) - viewer.authenticatedUserId.filterNot(_ == userId).map(id => Contributor(id)) - } - - def trackLossyReadsAfterWrite(stat: Stat, windowLength: Duration)(tweetId: TweetId): Unit = { - // If the requested Tweet is NotFound, and the tweet age is less than the defined {{windowLength}} duration, - // then we capture the percentiles of when this request was attempted. - // This is being tracked to understand how lossy the reads are directly after tweet creation. - for { - timestamp <- SnowflakeId.timeFromIdOpt(tweetId) - age = Time.now.since(timestamp) - if age.inMillis <= windowLength.inMillis - } yield stat.add(age.inMillis) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD deleted file mode 100644 index 0fb53615d..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD +++ /dev/null @@ -1,58 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "core-app-services/lib:coreservices", - "featureswitches/featureswitches-core:v2", - "featureswitches/featureswitches-core/src/main/scala", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "mediaservices/commons/src/main/thrift:thrift-scala", - "mediaservices/media-util", - "scrooge/scrooge-core", - "tweetypie/servo/repo", - "tweetypie/servo/repo/src/main/thrift:thrift-scala", - "tweetypie/servo/util", - "snowflake/src/main/scala/com/twitter/snowflake/id", - "src/scala/com/twitter/takedown/util", - "src/thrift/com/twitter/context:twitter-context-scala", - "src/thrift/com/twitter/dataproducts:enrichments_profilegeo-scala", - "src/thrift/com/twitter/escherbird:media-annotation-structs-scala", - "src/thrift/com/twitter/escherbird:tweet-annotation-scala", - "src/thrift/com/twitter/escherbird/common:common-scala", - "src/thrift/com/twitter/expandodo:cards-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/spam/rtf:safety-label-scala", - "src/thrift/com/twitter/spam/rtf:safety-level-scala", - "src/thrift/com/twitter/timelineservice/server/internal:thrift-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:media-entity-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:service-scala", - "tweetypie/common/src/thrift/com/twitter/tweetypie:tweet-scala", - "stitch/stitch-core", - "stitch/stitch-timelineservice/src/main/scala", - "strato/src/main/scala/com/twitter/strato/access", - "strato/src/main/scala/com/twitter/strato/callcontext", - "tco-util", - "tweet-util", - "tweetypie/server/src/main/scala/com/twitter/tweetypie", - "tweetypie/server/src/main/scala/com/twitter/tweetypie/core", - "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/thrift:compiled-scala", - "tweetypie/common/src/scala/com/twitter/tweetypie/additionalfields", - "tweetypie/common/src/scala/com/twitter/tweetypie/client_id", - "tweetypie/common/src/scala/com/twitter/tweetypie/media", - "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-context", - "util/util-slf4j-api/src/main/scala/com/twitter/util/logging", - "util/util-stats/src/main/scala", - "visibility/common/src/main/thrift/com/twitter/visibility:action-scala", - "visibility/results/src/main/scala/com/twitter/visibility/results/counts", - ], -) diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..cc4c1fd01e9804b6838a63b8ae4417a69ddc5864 GIT binary patch literal 37364 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 AJpcdz literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/Card2Hydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/Card2Hydrator.scala deleted file mode 100644 index 08ad91bc8..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/Card2Hydrator.scala +++ /dev/null @@ -1,76 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.expandodo.thriftscala.Card2 -import com.twitter.expandodo.thriftscala.Card2RequestOptions -import com.twitter.featureswitches.v2.FeatureSwitchResults -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.CardReferenceUriExtractor -import com.twitter.tweetypie.core.NonTombstone -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -object Card2Hydrator { - type Type = ValueHydrator[Option[Card2], Ctx] - - case class Ctx( - urlEntities: Seq[UrlEntity], - mediaEntities: Seq[MediaEntity], - cardReference: Option[CardReference], - underlyingTweetCtx: TweetCtx, - featureSwitchResults: Option[FeatureSwitchResults]) - extends TweetCtx.Proxy - - val hydratedField: FieldByPath = fieldByPath(Tweet.Card2Field) - val hydrationUrlBlockListKey = "card_hydration_blocklist" - - def apply(repo: Card2Repository.Type): ValueHydrator[Option[Card2], Ctx] = - ValueHydrator[Option[Card2], Ctx] { (_, ctx) => - val repoCtx = requestOptions(ctx) - val filterURLs = ctx.featureSwitchResults - .flatMap(_.getStringArray(hydrationUrlBlockListKey, false)) - .getOrElse(Seq()) - - val requests = - ctx.cardReference match { - case Some(CardReferenceUriExtractor(cardUri)) => - cardUri match { - case NonTombstone(uri) if !filterURLs.contains(uri) => - Seq((UrlCard2Key(uri), repoCtx)) - case _ => Nil - } - case _ => - ctx.urlEntities - .filterNot(e => e.expanded.exists(filterURLs.contains)) - .map(e => (UrlCard2Key(e.url), repoCtx)) - } - - Stitch - .traverse(requests) { - case (key, opts) => repo(key, opts).liftNotFoundToOption - }.liftToTry.map { - case Return(results) => - results.flatten.lastOption match { - case None => ValueState.UnmodifiedNone - case res => ValueState.modified(res) - } - case Throw(_) => ValueState.partial(None, hydratedField) - } - }.onlyIf { (curr, ctx) => - curr.isEmpty && - ctx.tweetFieldRequested(Tweet.Card2Field) && - ctx.opts.cardsPlatformKey.nonEmpty && - !ctx.isRetweet && - ctx.mediaEntities.isEmpty && - (ctx.cardReference.nonEmpty || ctx.urlEntities.nonEmpty) - } - - private[this] def requestOptions(ctx: Ctx) = - Card2RequestOptions( - platformKey = ctx.opts.cardsPlatformKey.get, - perspectiveUserId = ctx.opts.forUserId, - allowNonTcoUrls = ctx.cardReference.nonEmpty, - languageTag = Some(ctx.opts.languageTag) - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8d28314104eefa628b85c0779dc1d0dc834d2c8a GIT binary patch literal 37365 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 M5`o#Ht{21u08(knH~;_u literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.scala deleted file mode 100644 index 4a267bfb6..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CardHydrator.scala +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.expandodo.thriftscala.Card -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -object CardHydrator { - type Type = ValueHydrator[Option[Seq[Card]], Ctx] - - case class Ctx( - urlEntities: Seq[UrlEntity], - mediaEntities: Seq[MediaEntity], - underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy - - val hydratedField: FieldByPath = fieldByPath(Tweet.CardsField) - - private[this] val partialResult = ValueState.partial(None, hydratedField) - - def apply(repo: CardRepository.Type): Type = { - def getCards(url: String): Stitch[Seq[Card]] = - repo(url).handle { case NotFound => Nil } - - ValueHydrator[Option[Seq[Card]], Ctx] { (_, ctx) => - val urls = ctx.urlEntities.map(_.url) - - Stitch.traverse(urls)(getCards _).liftToTry.map { - case Return(cards) => - // even though we are hydrating a type of Option[Seq[Card]], we only - // ever return at most one card, and always the last one. - val res = cards.flatten.lastOption.toSeq - if (res.isEmpty) ValueState.UnmodifiedNone - else ValueState.modified(Some(res)) - case _ => partialResult - } - }.onlyIf { (curr, ctx) => - curr.isEmpty && - ctx.tweetFieldRequested(Tweet.CardsField) && - !ctx.isRetweet && - ctx.mediaEntities.isEmpty - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..82acc989b575cf1985762fba0d5cd19b73db1c16 GIT binary patch literal 37189 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 - repo(UserKey(curr.userId)).liftToTry.map { - case Return(userIdent) => ValueState.delta(curr, update(curr, userIdent)) - case Throw(NotFound) => ValueState.unmodified(curr) - case Throw(_) => ValueState.partial(curr, hydratedField) - } - }.onlyIf((curr, _) => curr.screenName.isEmpty).liftOption - - /** - * Updates a Contributor using the given user data. - */ - private def update(curr: Contributor, userIdent: UserIdentity): Contributor = - curr.copy( - screenName = Some(userIdent.screenName) - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..abbf563e68253ebf4baab3d77bfb26bb73efa249 GIT binary patch literal 37353 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 Ap8x;= literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.scala deleted file mode 100644 index 079b90f78..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ContributorVisibilityFilter.scala +++ /dev/null @@ -1,42 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.thriftscala._ - -/** - * Remove contributor data from tweet if it should not be available to the - * caller. The contributor field is populated in the cached - * [[ContributorHydrator]]. - * - * Contributor data is always available on the write path. It is available on - * the read path for the tweet author (or user authenticated as the tweet - * author in the case of contributors/teams), or if the caller has disabled - * visibility filtering. - * - * The condition for running this filtering hydrator (onlyIf) has been a - * source of confusion. Keep in mind that the condition expresses when to - * *remove* data, not when to return it. - * - * In short, keep data when: - * !reading || requested by author || !(enforce visibility filtering) - * - * Remove data when none of these conditions apply: - * reading && !(requested by author) && enforce visibility filtering - * - */ -object ContributorVisibilityFilter { - type Type = ValueHydrator[Option[Contributor], TweetCtx] - - def apply(): Type = - ValueHydrator - .map[Option[Contributor], TweetCtx] { - case (Some(_), _) => ValueState.modified(None) - case (None, _) => ValueState.unmodified(None) - } - .onlyIf { (_, ctx) => - ctx.opts.cause.reading(ctx.tweetId) && - !ctx.opts.forUserId.contains(ctx.userId) && - ctx.opts.enforceVisibilityFiltering - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..f007e6f876c8fd0d929d08434102981cd49ae28e GIT binary patch literal 38220 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 QYE^O&H^4kzCVjp87fkSv761SM literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.scala deleted file mode 100644 index 55df7e8a7..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationControlHydrator.scala +++ /dev/null @@ -1,108 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.repository.ConversationControlRepository -import com.twitter.tweetypie.serverutil.ExceptionCounter -import com.twitter.tweetypie.thriftscala.ConversationControl - -private object ReplyTweetConversationControlHydrator { - type Type = ConversationControlHydrator.Type - type Ctx = ConversationControlHydrator.Ctx - - // The conversation control thrift field was added Feb 17th, 2020. - // No conversation before this will have a conversation control field to hydrate. - // We explicitly short circuit to save resources from querying for tweets we - // know do not have conversation control fields set. - val FirstValidDate: Time = Time.fromMilliseconds(1554076800000L) // 2020-02-17 - - def apply( - repo: ConversationControlRepository.Type, - stats: StatsReceiver - ): Type = { - val exceptionCounter = ExceptionCounter(stats) - - ValueHydrator[Option[ConversationControl], Ctx] { (curr, ctx) => - repo(ctx.conversationId.get, ctx.opts.cacheControl).liftToTry.map { - case Return(conversationControl) => - ValueState.delta(curr, conversationControl) - case Throw(exception) => { - // In the case where we get an exception, we want to count the - // exception but fail open. - exceptionCounter(exception) - - // Reply Tweet Tweet.ConversationControlField hydration should fail open. - // Ideally we would return ValueState.partial here to notify Tweetypie the caller - // that requested the Tweet.ConversationControlField field was not hydrated. - // We cannot do so because GetTweetFields will return TweetFieldsResultFailed - // for partial results which would fail closed. - ValueState.unmodified(curr) - } - } - }.onlyIf { (_, ctx) => - // This hydrator is specifically for replies so only run when Tweet is a reply - ctx.inReplyToTweetId.isDefined && - // See comment for FirstValidDate - ctx.createdAt > FirstValidDate && - // We need conversation id to get ConversationControl - ctx.conversationId.isDefined && - // Only run if the ConversationControl was requested - ctx.tweetFieldRequested(Tweet.ConversationControlField) - } - } -} - -/** - * ConversationControlHydrator is used to hydrate the conversationControl field. - * For root Tweets, this hydrator just passes through the existing conversationControl. - * For reply Tweets, it loads the conversationControl from the root Tweet of the conversation. - * Only root Tweets in a conversation (i.e. the Tweet pointed to by conversationId) have - * a persisted conversationControl, so we have to hydrate that field for all replies in order - * to know if a Tweet in a conversation can be replied to. - */ -object ConversationControlHydrator { - type Type = ValueHydrator[Option[ConversationControl], Ctx] - - case class Ctx(conversationId: Option[ConversationId], underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy - - private def scrubInviteViaMention( - ccOpt: Option[ConversationControl] - ): Option[ConversationControl] = { - ccOpt collect { - case ConversationControl.ByInvitation(byInvitation) => - ConversationControl.ByInvitation(byInvitation.copy(inviteViaMention = None)) - case ConversationControl.Community(community) => - ConversationControl.Community(community.copy(inviteViaMention = None)) - case ConversationControl.Followers(followers) => - ConversationControl.Followers(followers.copy(inviteViaMention = None)) - } - } - - def apply( - repo: ConversationControlRepository.Type, - disableInviteViaMention: Gate[Unit], - stats: StatsReceiver - ): Type = { - val replyTweetConversationControlHydrator = ReplyTweetConversationControlHydrator( - repo, - stats - ) - - ValueHydrator[Option[ConversationControl], Ctx] { (curr, ctx) => - val ccUpdated = if (disableInviteViaMention()) { - scrubInviteViaMention(curr) - } else { - curr - } - - if (ctx.inReplyToTweetId.isEmpty) { - // For non-reply tweets, pass through the existing conversation control - Stitch.value(ValueState.delta(curr, ccUpdated)) - } else { - replyTweetConversationControlHydrator(ccUpdated, ctx) - } - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..b84e0f90f2761f1f0a41022ba121c2f0890d158e GIT binary patch literal 37197 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.scala deleted file mode 100644 index 172ff1746..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationIdHydrator.scala +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -/** - * Hydrates the conversationId field for any tweet that is a reply to another tweet. - * It uses that other tweet's conversationId. - */ -object ConversationIdHydrator { - type Type = ValueHydrator[Option[ConversationId], TweetCtx] - - val hydratedField: FieldByPath = - fieldByPath(Tweet.CoreDataField, TweetCoreData.ConversationIdField) - - def apply(repo: ConversationIdRepository.Type): Type = - ValueHydrator[Option[ConversationId], TweetCtx] { (_, ctx) => - ctx.inReplyToTweetId match { - case None => - // Not a reply to another tweet, use tweet id as conversation root - Stitch.value(ValueState.modified(Some(ctx.tweetId))) - case Some(parentId) => - // Lookup conversation id from in-reply-to tweet - repo(ConversationIdKey(ctx.tweetId, parentId)).liftToTry.map { - case Return(rootId) => ValueState.modified(Some(rootId)) - case Throw(_) => ValueState.partial(None, hydratedField) - } - } - }.onlyIf((curr, _) => curr.isEmpty) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationMutedHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ConversationMutedHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a07acfd68695bad664a8b0e281097a493abd0fb1 GIT binary patch literal 37581 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

dlvPN*q;%g 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

68OB*@-pfTNZlfNzB0Lj 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 - (ctx.opts.forUserId, ctx.conversationId) match { - case (Some(userId), Some(convoId)) => - repo(userId, convoId).liftToTry - .map { - case Return(true) => modifiedTrue - case Return(false) => modifiedFalse - case Throw(_) => partialResult - } - case _ => - ValueState.StitchUnmodifiedNone - } - }.onlyIf { (curr, ctx) => - // It is unlikely that this field will already be set, but if, for - // some reason, this hydrator is run on a tweet that already has - // this value set, we will skip the work to check again. - curr.isEmpty && - // We only hydrate this field if it is explicitly requested. At - // the time of this writing, this field is only used for - // displaying UI for toggling the muted state of the relevant - // conversation. - ctx.tweetFieldRequested(Tweet.ConversationMutedField) && - // Retweets are not part of a conversation, so should not be muted. - !ctx.isRetweet - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CopyFromSourceTweet.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CopyFromSourceTweet.docx new file mode 100644 index 0000000000000000000000000000000000000000..1cddd6b40a5fcce4b60fcc7519611aded41a5b6f GIT binary patch literal 39949 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 - td.sourceTweetResult.map(_.value.tweet) match { - case None => ValueState.unmodified(td) - case Some(src) => ValueState.modified(td.copy(tweet = copy(src, td.tweet))) - } - } - - /** - * Updates `dst` with fields from `src`. This is more complicated than you would think, because: - * - * - the tweet has an extra mention entity due to the "RT @user" prefix; - * - the retweet text may be truncated at the end, and doesn't necessarily contain all of the - * the text from the source tweet. truncation may happen in the middle of entity. - * - the text in the retweet may have a different unicode normalization, which affects - * code point indices. this means entities aren't shifted by a fixed amount equal to - * the RT prefix. - * - url entities, when hydrated, may be converted to media entities; url entities may not - * be hydrated in the retweet, so the source tweet may have a media entity that corresponds - * to an unhydrated url entity in the retweet. - * - there may be multiple media entities that map to a single url entity, because the tweet - * may have multiple photos. - */ - def copy(src: Tweet, dst: Tweet): Tweet = { - val srcCoreData = src.coreData.get - val dstCoreData = dst.coreData.get - - // get the code point index of the end of the text - val max = getText(dst).codePointCount(0, getText(dst).length).toShort - - // get all entities from the source tweet, merged into a single list sorted by fromIndex. - val srcEntities = getWrappedEntities(src) - - // same for the retweet, but drop first @mention, add back later - val dstEntities = getWrappedEntities(dst).drop(1) - - // merge indices from dst into srcEntities. at the end, resort entities back - // to their original ordering. for media entities, order matters to clients. - val mergedEntities = merge(srcEntities, dstEntities, max).sortBy(_.position) - - // extract entities back out by type - val mentions = mergedEntities.collect { case WrappedMentionEntity(e, _) => e } - val hashtags = mergedEntities.collect { case WrappedHashtagEntity(e, _) => e } - val cashtags = mergedEntities.collect { case WrappedCashtagEntity(e, _) => e } - val urls = mergedEntities.collect { case WrappedUrlEntity(e, _) => e } - val media = mergedEntities.collect { case WrappedMediaEntity(e, _) => e } - - // merge the updated entities back into the retweet, adding the RT @mention back in - dst.copy( - coreData = Some( - dstCoreData.copy( - hasMedia = srcCoreData.hasMedia, - hasTakedown = dstCoreData.hasTakedown || srcCoreData.hasTakedown - ) - ), - mentions = Some(getMentions(dst).take(1) ++ mentions), - hashtags = Some(hashtags), - cashtags = Some(cashtags), - urls = Some(urls), - media = Some(media.map(updateSourceStatusId(src.id, getUserId(src)))), - quotedTweet = src.quotedTweet, - card2 = src.card2, - cards = src.cards, - language = src.language, - mediaTags = src.mediaTags, - spamLabel = src.spamLabel, - takedownCountryCodes = - mergeTakedowns(Seq(src, dst).map(TweetLenses.takedownCountryCodes.get): _*), - conversationControl = src.conversationControl, - exclusiveTweetControl = src.exclusiveTweetControl - ) - } - - /** - * Merges one or more optional lists of takedowns. If no lists are defined, returns None. - */ - private def mergeTakedowns(takedowns: Option[Seq[CountryCode]]*): Option[Seq[CountryCode]] = - if (takedowns.exists(_.isDefined)) { - Some(takedowns.flatten.flatten.distinct.sorted) - } else { - None - } - - /** - * A retweet should never have media without a source_status_id or source_user_id - */ - private def updateSourceStatusId( - srcTweetId: TweetId, - srcUserId: UserId - ): MediaEntity => MediaEntity = - mediaEntity => - if (mediaEntity.sourceStatusId.nonEmpty) { - // when sourceStatusId is set this indicates the media is "pasted media" so the values - // should already be correct (retweeting won't change sourceStatusId / sourceUserId) - mediaEntity - } else { - mediaEntity.copy( - sourceStatusId = Some(srcTweetId), - sourceUserId = Some(mediaEntity.sourceUserId.getOrElse(srcUserId)) - ) - } - - /** - * Attempts to match up entities from the source tweet with entities from the retweet, - * and to use the source tweet entities but shifted to the retweet entity indices. If an entity - * got truncated at the end of the retweet text, we drop it and any following entities. - */ - private def merge( - srcEntities: List[WrappedEntity], - rtEntities: List[WrappedEntity], - maxIndex: Short - ): List[WrappedEntity] = { - (srcEntities, rtEntities) match { - case (Nil, Nil) => - // successfully matched all entities! - Nil - - case (Nil, _) => - // no more source tweet entities, but we still have remaining retweet entities. - // this can happen if a a text truncation turns something invalid like #tag1#tag2 or - // @mention1@mention2 into a valid entity. just drop all the remaining retweet entities. - Nil - - case (_, Nil) => - // no more retweet entities, which means the remaining entities have been truncated. - Nil - - case (srcHead :: srcTail, rtHead :: rtTail) => - // we have more entities from the source tweet and the retweet. typically, we can - // match these entities because they have the same normalized text, but the retweet - // entity might be truncated, so we allow for a prefix match if the retweet entity - // ends at the end of the tweet. - val possiblyTruncated = rtHead.toIndex == maxIndex - 1 - val exactMatch = srcHead.normalizedText == rtHead.normalizedText - - if (exactMatch) { - // there could be multiple media entities for the same t.co url, so we need to find - // contiguous groupings of entities that share the same fromIndex. - val rtTail = rtEntities.dropWhile(_.fromIndex == rtHead.fromIndex) - val srcGroup = - srcEntities - .takeWhile(_.fromIndex == srcHead.fromIndex) - .map(_.shift(rtHead.fromIndex, rtHead.toIndex)) - val srcTail = srcEntities.drop(srcGroup.size) - - srcGroup ++ merge(srcTail, rtTail, maxIndex) - } else { - // if we encounter a mismatch, it is most likely because of truncation, - // so we stop here. - Nil - } - } - } - - /** - * Wraps all the entities with the appropriate WrappedEntity subclasses, merges them into - * a single list, and sorts by fromIndex. - */ - private def getWrappedEntities(tweet: Tweet): List[WrappedEntity] = - (getUrls(tweet).zipWithIndex.map { case (e, p) => WrappedUrlEntity(e, p) } ++ - getMedia(tweet).zipWithIndex.map { case (e, p) => WrappedMediaEntity(e, p) } ++ - getMentions(tweet).zipWithIndex.map { case (e, p) => WrappedMentionEntity(e, p) } ++ - getHashtags(tweet).zipWithIndex.map { case (e, p) => WrappedHashtagEntity(e, p) } ++ - getCashtags(tweet).zipWithIndex.map { case (e, p) => WrappedCashtagEntity(e, p) }) - .sortBy(_.fromIndex) - .toList - - /** - * The thrift-entity classes don't share a common entity parent class, so we wrap - * them with a class that allows us to mix entities together into a single list, and - * to provide a generic interface for shifting indicies. - */ - private sealed abstract class WrappedEntity( - val fromIndex: Short, - val toIndex: Short, - val rawText: String) { - - /** the original position of the entity within the entity group */ - val position: Int - - val normalizedText: String = TweetText.nfcNormalize(rawText).toLowerCase - - def shift(fromIndex: Short, toIndex: Short): WrappedEntity - } - - private case class WrappedUrlEntity(entity: UrlEntity, position: Int) - extends WrappedEntity(entity.fromIndex, entity.toIndex, entity.url) { - override def shift(fromIndex: Short, toIndex: Short): WrappedUrlEntity = - copy(entity.copy(fromIndex = fromIndex, toIndex = toIndex)) - } - - private case class WrappedMediaEntity(entity: MediaEntity, position: Int) - extends WrappedEntity(entity.fromIndex, entity.toIndex, entity.url) { - override def shift(fromIndex: Short, toIndex: Short): WrappedMediaEntity = - copy(entity.copy(fromIndex = fromIndex, toIndex = toIndex)) - } - - private case class WrappedMentionEntity(entity: MentionEntity, position: Int) - extends WrappedEntity(entity.fromIndex, entity.toIndex, entity.screenName) { - override def shift(fromIndex: Short, toIndex: Short): WrappedMentionEntity = - copy(entity.copy(fromIndex = fromIndex, toIndex = toIndex)) - } - - private case class WrappedHashtagEntity(entity: HashtagEntity, position: Int) - extends WrappedEntity(entity.fromIndex, entity.toIndex, entity.text) { - override def shift(fromIndex: Short, toIndex: Short): WrappedHashtagEntity = - copy(entity.copy(fromIndex = fromIndex, toIndex = toIndex)) - } - - private case class WrappedCashtagEntity(entity: CashtagEntity, position: Int) - extends WrappedEntity(entity.fromIndex, entity.toIndex, entity.text) { - override def shift(fromIndex: Short, toIndex: Short): WrappedCashtagEntity = - copy(entity.copy(fromIndex = fromIndex, toIndex = toIndex)) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ce33f20e05e764e1eafb5eb61f1f3865152c411 GIT binary patch literal 37408 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 K_E^~q;sF4fK=AGW literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.scala deleted file mode 100644 index 88d3fca3e..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/CreatedAtRepairer.scala +++ /dev/null @@ -1,49 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.conversions.DurationOps._ -import com.twitter.snowflake.id.SnowflakeId - -object CreatedAtRepairer { - // no createdAt value should be less than this - val jan_01_2006 = 1136073600000L - - // no non-snowflake createdAt value should be greater than this - val jan_01_2011 = 1293840000000L - - // allow createdAt timestamp to be up to this amount off from the snowflake id - // before applying the correction. - val varianceThreshold: MediaId = 10.minutes.inMilliseconds -} - -/** - * Detects tweets with bad createdAt timestamps and attempts to fix, if possible - * using the snowflake id. pre-snowflake tweets are left unmodified. - */ -class CreatedAtRepairer(scribe: FutureEffect[String]) extends Mutation[Tweet] { - import CreatedAtRepairer._ - - def apply(tweet: Tweet): Option[Tweet] = { - assert(tweet.coreData.nonEmpty, "tweet core data is missing") - val createdAtMillis = getCreatedAt(tweet) * 1000 - - if (SnowflakeId.isSnowflakeId(tweet.id)) { - val snowflakeMillis = SnowflakeId(tweet.id).unixTimeMillis.asLong - val diff = (snowflakeMillis - createdAtMillis).abs - - if (diff >= varianceThreshold) { - scribe(tweet.id + "\t" + createdAtMillis) - val snowflakeSeconds = snowflakeMillis / 1000 - Some(TweetLenses.createdAt.set(tweet, snowflakeSeconds)) - } else { - None - } - } else { - // not a snowflake id, hard to repair, so just log it - if (createdAtMillis < jan_01_2006 || createdAtMillis > jan_01_2011) { - scribe(tweet.id + "\t" + createdAtMillis) - } - None - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..38d12a344f5969f35269fa3254933a67908f1790 GIT binary patch literal 37281 zcmagEWmp}_wm*z(a1HM6?hXNhyF<{R8+SGy+%34fySsY`?iM5v-2J~ZGv}O{bMJlM zFU><$t)HybT~*z?ls-a2VS<5y!GVROacfno6vicigMp2~fPrCvT6M(%cFtyY&W36p z_GV7{OzyTejY;x~t0Jgh&R(#RnT1Ha#8I%ycI;{F8RGCHs?%?Hw3nDq0?|g_>>jb;Jo2YcfB~JA9Gc@zbAd9{8*YlW8&AIm^<49!|rFRME24QMi zGQ8hUbAhw$*7Wlkq6eRe<>&+?X+3~NQ&+}lpc4-T!>I_4L5Ei7&v55iCY2>x4&IY>*^9=9?XV&he@S{pSuH z?PxV0%cDSPJkL9EcX`u?V>TsqwKugZw^P|WIi`JLAuMl5(+*Y5{7~_{vrcj_ZP@d`=6j!aPQyw zSKUcJcNXortOn$n$T1|->b@iq7NB*mXmiL4yZvdwB zk1BdleH6I|Rc`|V3=9$U*U-_-#)+Bf_q8&9QWlaG)$dG5a)h$ju1Q^@VA(+8P`*H@ z=j+62ksVOFXr-%DSwde6yO-$TY}dqmAw3^|iN44tP}5j@J|K6oS8J2@qM_Yz4K5kJ z!=Kb$Z6`?ECN1KI99hJS>W<4?gG7ja17lE^w*GWRv`S3Ekj_>bxg@AG0qq*mnMTva zhjA7F1CWwy;tVgYZ2e*57Je_>O1RsoV}#7;4>NPiBQIShftFRDU;5s zFSiiNM?O%;$uak3iZruDr6~7MOchOj`HO}~JWU%p63HGW?N5JyqOb(=_(yg`YS%I&4n6Lh6^lYYusbocum_=A@)T zBp?@VP1kh;Fi==KJU6$q#^^-pC+uw6!d`>%(lpLPo$?8ov7U=O>?UXt0-u?9cYR^W znw}_wSuC0XCDSJTouO+o@37wY?ZfN)B?9_;?h7c~BMW2$+F3X8*XO=V{D0QvdUX}& z7*rPgKD@s=c|hg_RR&#( zr7?)6?_fARRyhyD2=AP#sZ=%QMOJS-aX|!Y@1#gS?Yx34veDpG)UIIf{q5OIMDmww z?ft-cl2YT+##dz)#qe^-m+H^u9wpO)oF8^?jmI(0Mjg)=y&oYt51O5YqV@F|22o$mfQML{#fLX zx5!YB{9;Sb*b;Or;;=e|u?bD77{0Y*fU95JJns@JFCn$S!!Lh4?Pu0tB#KxPEVrRi z_)N_RN!E_nl*{fgRgel+4N+4h6FwOemMJ-7%W9=XBr09)$eiBeABZC*wr$BFz~Y&KJp zgeEmNDfmM&aMZnQ6ys6`R%L_>6+d)#q%%J=6P?4SKV0Fz&ENbY{^yP1!}I1?3A!o# zu>O2t-2jfJ%%G>%#TK+U{k}6MwKi2(c~F7f-D10~mVNJ*knL#?cAWQfuH8SUlUhD~ z`^gf{Fih7(Nx@4seBQk&>xzCL%PY$g47>VR+r9~GUs31r_DL%IELCVMfWj}hct(HnR8n&A-S#&@qZbpy%TWom_CWSM4rR0`JI0Z-l z*d%V8-i20skOfhUiByTE<9m;G;B>R0n4?${gwqF}>`!}hM{Gc0+xJuv)B2mjeyrmu zd|e*~peH}E?z8pdeQ`uUzsy7B&rvm+q+&4hv~#{mu`9t zgx=}HGLt!Hd0QCsL?dum8uH$s90%x%Dk4yk{SdT0SpodYL&hGh|hn{Act9?W?`@Y~j z6es>0X>!f?HkV9kY->sT@Wlz?(rpZ>*~97w)W^|kSv#QzsW2&dgx9KR{5BvIo7{Uu zOaikKJ~0)1XA3{nSkaj!0kLcN;=%7nDJXr;N6hjPhRriesO|;TU9V($z#kz8xzo;< z;5dA|QK+iY)Jo`-gK1I+>|bUkctUbW^W45}Ia;WR-G9Py&aey+aw6)@RBmHbu_evR z_zq_ootP7}?Hpnxi8gC4tAb>^Nv6q@Pg6ISO+PN!hrmmj$+LPQ7GwZDBuj#FKp4fw zprlcd7UrC(SV-y2X=dNg=tXFq&JdtP{v8}on;^DxY}=ga{^jwBZ9iZj>S{t|!CmD> z4R09%Ge?RPB4%g4#Cm#NC%D0@IV)9BtnU3i6?Up; z`Igz{SkDP=N=X=s-W$r@lxyUwhsb^Z$RqzI^TB7YN~~j>_0bTMN(HrQoRK@YihbV% zF1ED7*7f#ix+#TyRjW;zoQm^F{agyq-JYF@m4;W@ZGgS4tJM~0m0@x?Waj3O-VMDo z>}_bzgHJfBU0+3dS)g)6u0^hMG$<<{ zhXRX%=oTE|sDv<+$G?Nf!WcS)Qi;wN;t)TkRd zH0LEuBc92vU%ayppyT>waia(ixapql?f&Q7X6J{G&IVfa#zFHN0cg?tV{ZF%%l7vf z?$7O8qNrjZ3+|V*SA@Rc1k574i1)wpsM_hIstdh?rB>o^#rHOK*G(D3cl>wnxO}py zZD%KMRTnn+ap@am19&1KP%vkMmCVouEKpL8d+MdtMXf7I;Q4BLxjI1)gZ#`%ZPMq8 z1KC9RXN1~T%7HoripE?!kyfm#sDeW&)%Y)U+&U225;O5%KZRsxIeWH~T})QBTy|Di zZwarbIrVNS)N2Ivp+VIy%^T^Hb5a`ZoE?0-xi=;7eStMVFmISA5HH&Ef0oyaLN|oc zxXXa-XTLYH9NRTtFaeWr>lRNDXDh79P~C>SEM|`o<)N%gQw_2Xem`l=V|6`~IN+%O z@9YH&A-pRTSxm6QOQ>b7Jg)iSSg`N>E4n`kwJo;ON{Pn4(b`9zmFt;mDBg#_@67+q zbyPVve*`lan1MPp7|OqL?d0rXW9IaG6#>1PBpvib^!1N*PH)g|I}UQG%I=a#qQ-aU3hUA@cIz*_VBcL z7F{gde7viF|FC}1o-*J5bTIq#radHN_sHX=PT-(G~pCIwG4H$XdETQ5E-Um~Cog)f!w;2Yv?`|QQ( zvD^5rRs935EE25ya*#=9_DOX5(|OX(rF$A7_xN=L(2>#eh1Zk(DxrLr*2SaCV`WWP zLM+BNnEAD9t*gDcVmxV()z`Lt&8JIG_pIyXM*PuSC55QpVRM}sWfS;SlGs~1>xA@e zp!%WPxVL(Io+`Qi*;yw9h?Yi)=iCn8dA@*gldGrQX4Z6KRoMDMnuimX zDv{^yZu)=LZ2DATnrK@YKc_4n>^V49U>B4;#-N?IJ}rK_QlqsRNVT{ReCyD!T9|%1 znSHdsb9fn+xxErTITOlImTJ_WpF8j0zqoP^cO8*1zvwMwD?yqaKL3 z{B7@^()XNrQ8B$aCBh2oTc|aCcukokj|f^ExCGIs0=BN6m-e0ua{P$3H!U-7|EKJd zNPuPxbEaiSY;$<<)w{YJ@y$KCzWFia6c@l)q%*)kB z)+CvfW8QE#QKbg;PmKpoHo@kZ>S9O2`jl zXw+5_i(PT1C55xt!0a)EyDIX-4DwJFL0IXaB|)^^sL0HhhEpM@M-Q-%Z}ua}_@U1q z6Ng%m)lnY2MF{}c<{8x$K~=cKMh!~nfF5BKyTpzSi0yzb$obv*8PtjWuTH3K3IMq1 zU*oG9@hF*~m^~0j`eZgB{)K(Q5f2I_0ga>mBUA^377W7uN9dnaP^HvoR;2F#MR2A} z4r)R8Lq&22v}x}DkoX^{SkKEU?0^)|sJ{zy#Rut8K?QlmZ1}-Qg2?z^5*bP0s67zj z{!l%a;MR!R@q5(2n+lx78>U>_yD$v0_#|}ZNxFzMTzt+RzhvU z6JtwSn%uiKeOobfmu#H~B(&!C9omD~{`W>;^!SO1(BQasq(AI;mokJ=R0Z@!Trj<(xjS{6yti$3Fw!+U$Oe<#l9 zF>Qp(uvSW#u{pR#a(fDNUCMAn8eHvS@*U2Wwmo)?KWP0m5Duu`@vn+OEw%BX5$L;m zaAY`gc)xPK$-gjb%iYeLa(obnJw5)zgd0(BgH_&@$h0#s7jKhLVL!|&zSE?5ZgOrsQS8v;vIciZs9`#F?Cny+h4g@z*MajQ z#e;FS4QHaT4w^eMZfIKZg)?~>K4P}|Sr2Q`q>m>Hz8MneniNHI%cgZ6 zJEn#U$BWrw4=AAd6HeaOd*pF+_i^?W)v70TV8g*B{oeMeS@j2#@N-uuf-Jw>;Ly&V z??*1|56q6-*cL(_t6Bv5UA7EBfj2h?V4ivqHM5&#d%h7~yZQ4BuJxB!qQHsOJvfCA z>_DZjGgK+`rBP!T^V&>v&4V`-h_eX{;EKkkm5&+p%NF{3dgA06iBOwyzZCyKT6^BNMf zW7IjB1?tOw=OO0N&b~M?xAKR4-Yy|5NYkJzyqC-P`xe3ZVG9O znC08IKVtZJ!?O~8;?*fC7<=#x(Z-l;Cn?528}|8PeA?fAraI?S{3C1kRG@J4)!_D^Ql;IoF2bH)dPNTJ;{E|~ACuB+aajNm`+Z1H! zNc^@AwbLw>){lXJZ&mY8&lug^-pYO#oI20y5)Ta|4@iI~tQu_kn|PQeStJ|M_e)1< z{`lp|AJb-;IE$l9724hQgT#Ja9c6V0PHD2%xCp4cuOUJPbDBPW{u$c~eW9CQG(D

T%HwZt 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 z

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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.scala deleted file mode 100644 index c1a0c5fcd..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DeviceSourceHydrator.scala +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.NotFound -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.serverutil.DeviceSourceParser -import com.twitter.tweetypie.thriftscala.DeviceSource -import com.twitter.tweetypie.thriftscala.FieldByPath - -object DeviceSourceHydrator { - type Type = ValueHydrator[Option[DeviceSource], TweetCtx] - - // WebOauthId is the created_via value for Macaw-Swift through Woodstar. - // We need to special-case it to return the same device_source as "web", - // since we can't map multiple created_via strings to one device_source. - val WebOauthId: String = s"oauth:${DeviceSourceParser.Web}" - - val hydratedField: FieldByPath = fieldByPath(Tweet.DeviceSourceField) - - private def convertForWeb(createdVia: String) = - if (createdVia == DeviceSourceHydrator.WebOauthId) "web" else createdVia - - def apply(repo: DeviceSourceRepository.Type): Type = - ValueHydrator[Option[DeviceSource], TweetCtx] { (_, ctx) => - val req = convertForWeb(ctx.createdVia) - repo(req).liftToTry.map { - case Return(deviceSource) => ValueState.modified(Some(deviceSource)) - case Throw(NotFound) => ValueState.UnmodifiedNone - case Throw(_) => ValueState.partial(None, hydratedField) - } - }.onlyIf((curr, ctx) => curr.isEmpty && ctx.tweetFieldRequested(Tweet.DeviceSourceField)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..c28c47a0e4e0c71b5416020b5a84b8c78d3bc602 GIT binary patch literal 38019 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

Cx_Wx@cnC4I#pF%4q=c*W}$#hzF`Nj`+2u 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 Rt literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.scala deleted file mode 100644 index a64d91c2e..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/DirectedAtHydrator.scala +++ /dev/null @@ -1,92 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.finagle.stats.NullStatsReceiver -import com.twitter.stitch.NotFound -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -/** - * Hydrates the "directedAtUser" field on the tweet. This hydrators uses one of two paths depending - * if DirectedAtUserMetadata is present: - * - * 1. If DirectedAtUserMetadata exists, we use metadata.userId. - * 2. If DirectedAtUserMetadata does not exist, we use the User screenName from the mention starting - * at index 0 if the tweet also has a reply. Creation of a "reply to user" for - * leading @mentions is controlled by PostTweetRequest.enableTweetToNarrowcasting - */ -object DirectedAtHydrator { - type Type = ValueHydrator[Option[DirectedAtUser], Ctx] - - case class Ctx( - mentions: Seq[MentionEntity], - metadata: Option[DirectedAtUserMetadata], - underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy { - val directedAtScreenName: Option[String] = - mentions.headOption.filter(_.fromIndex == 0).map(_.screenName) - } - - val hydratedField: FieldByPath = - fieldByPath(Tweet.CoreDataField, TweetCoreData.DirectedAtUserField) - - def once(h: Type): Type = - TweetHydration.completeOnlyOnce( - hydrationType = HydrationType.DirectedAt, - hydrator = h - ) - - private val partial = ValueState.partial(None, hydratedField) - - def apply(repo: UserIdentityRepository.Type, stats: StatsReceiver = NullStatsReceiver): Type = { - val withMetadata = stats.counter("with_metadata") - val noScreenName = stats.counter("no_screen_name") - val withoutMetadata = stats.counter("without_metadata") - - ValueHydrator[Option[DirectedAtUser], Ctx] { (_, ctx) => - ctx.metadata match { - case Some(DirectedAtUserMetadata(Some(uid))) => - // 1a. new approach of relying exclusively on directed-at metadata if it exists and has a user id - withMetadata.incr() - - repo(UserKey.byId(uid)).liftToTry.map { - case Return(u) => - ValueState.modified(Some(DirectedAtUser(u.id, u.screenName))) - case Throw(NotFound) => - // If user is not found, fallback to directedAtScreenName - ctx.directedAtScreenName - .map { screenName => ValueState.modified(Some(DirectedAtUser(uid, screenName))) } - .getOrElse { - // This should never happen, but let's make sure with a counter - noScreenName.incr() - ValueState.UnmodifiedNone - } - case Throw(_) => partial - } - - case Some(DirectedAtUserMetadata(None)) => - withMetadata.incr() - // 1b. new approach of relying exclusively on directed-at metadata if it exists and has no userId - ValueState.StitchUnmodifiedNone - - case None => - // 2. when DirectedAtUserMetadata not present, look for first leading mention when has reply - withoutMetadata.incr() - - val userKey = ctx.directedAtScreenName - .filter(_ => ctx.isReply) - .map(UserKey.byScreenName) - - val results = userKey.map(repo.apply).getOrElse(Stitch.NotFound) - - results.liftToTry.map { - case Return(u) => ValueState.modified(Some(DirectedAtUser(u.id, u.screenName))) - case Throw(NotFound) => ValueState.UnmodifiedNone - case Throw(_) => partial - } - } - }.onlyIf((curr, _) => curr.isEmpty) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..9a85dc4de7abf5c06c6df6a5530668019d53e9f7 GIT binary patch literal 38529 zcmagFWmp_t)-H@|a1HM6?hb+A?ry=|q4D7E?(XjH4#C}m1cJMt&hyO7J2US&-}k5b z>Rq*NS*yDCs$JCz(%=y2ARr(xAff4;8dXX~aY>*cAmdOVAZWl*ZBaX0XH#2eeH9OT zQzu;pcN^=bBw6`&A>{8DZy3pp0z_V-NEqdN_Eh$CaX4Z%8FyToD~x9{U{4Q|JYlMH z3L#JoahYikJ_PIa{N3Ko6xyOIEd=CEf*_`3&b~oCo4@#8S(W`}hk(P_?a@ z-k)bUK$-Sy2YB>RgD*sKwE~hfoW@E3)M3C=b4>V5Jm0$F?hE6hb?dJ>AD*2w@xk1 zXcZrelR!xv&j(S&%+uZgYRU#;-9)H#md=LW5q9SBNi%hLCI6kDvUj zA0%J9iVs}Y1M-b!=#r_m-;(ePQF`JGU%Z~-ODaB#3G}@#muwygjz5s(zo5(Nfhhb( z6+I}Vg&u*`+X4dtfd_u-JDOTMF*5wwR>ejURuwB;)e}3GEfnZY zojfnL1xOaJb$2O>>1ts15gc9Y8=Ea<6yUDV7F!3Z8)+^ECksk`{l z&)Y%SNys#_hnG~f{j_!qe-vzXmNf7aI*GMMQBIRHVaDPrM3izsyA_o>nu#utZOg=L zf9_EDrd@Hxa2zNqudL@zb_+Gti8{z--pE%n*Si1Zke-ZmO5JnX%w;Q3(bs;4;5SoU z%7s=_%!&`p*qk=U#eXI!^gFz=1@JVV111Osm>?57V+BV$dnZO?J4e$$CwW%xpcRsqOtj8?9VgSAuQcksEt~P0pqk zaO2?kV8W2N3xAVvcukD=btBA;muztw?y97q{)^t{`D+Su9^>)e2t}MvaJAXsQW?y; zGE1R6q=WVBYzyC~iL+Xjit~;|lu=|?zpDwwQ?-*K5FMaX|MK@I2umQ1Z$K$)DJB5P zL@CV!4ND$0l$q9pm|v-Y4RqYKhH%BH){@^l-qL2qS#L&Icdl)JHoj)|1>kET1pWRp zWT14IX-ZWK#e#R{`ULq236xbxF-^&>RgGmQ{LIPGVSC0ET({y=OUNh0@&%24fzxH3_{%2io*VnO5 zfpxKl00BY%_qrI`+y7M-l?mH*Cgjc+S_oa|a0_T*MeO*1CE+>IO`O{J%$9|5lCN

RjdI^qF(#h!M-?14;hJi~M-JDgj!2v!$|1`z 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.scala deleted file mode 100644 index 8d3c5d8e2..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditControlHydrator.scala +++ /dev/null @@ -1,132 +0,0 @@ -package com.twitter.tweetypie.hydrator - -import com.twitter.servo.util.Gate -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.StatsReceiver -import com.twitter.tweetypie.Tweet -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.repository.TweetRepository -import com.twitter.tweetypie.util.EditControlUtil -import com.twitter.tweetypie.serverutil.ExceptionCounter -import com.twitter.tweetypie.thriftscala.EditControl -import com.twitter.tweetypie.thriftscala.EditControlInitial -import com.twitter.tweetypie.thriftscala.FieldByPath -import com.twitter.tweetypie.util.TweetEditFailure.TweetEditGetInitialEditControlException -import com.twitter.tweetypie.util.TweetEditFailure.TweetEditInvalidEditControlException - -/** - * EditControlHydrator is used to hydrate the EditControlEdit arm of the editControl field. - * - * For Tweets without edits and for initial Tweets with subsequent edit(s), this hydrator - * passes through the existing editControl (either None or EditControlInitial). - * - * For edit Tweets, it hydrates the initial Tweet's edit control, set as a field on - * the edit control of the edit Tweet and returns the new edit control. - */ -object EditControlHydrator { - type Type = ValueHydrator[Option[EditControl], TweetCtx] - - val hydratedField: FieldByPath = fieldByPath(Tweet.EditControlField) - - def apply( - repo: TweetRepository.Type, - setEditTimeWindowToSixtyMinutes: Gate[Unit], - stats: StatsReceiver - ): Type = { - val exceptionCounter = ExceptionCounter(stats) - - // Count hydration of edit control for tweets that were written before writing edit control initial. - val noEditControlHydration = stats.counter("noEditControlHydration") - // Count hydration of edit control edit tweets - val editControlEditHydration = stats.counter("editControlEditHydration") - // Count edit control edit hydration which successfully found an edit control initial - val editControlEditHydrationSuccessful = stats.counter("editControlEditHydration", "success") - // Count of initial tweets being hydrated. - val editControlInitialHydration = stats.counter("editControlInitialHydration") - // Count of edits loaded where the ID of edit is not present in the initial tweet - val editTweetIdsMissingAnEdit = stats.counter("editTweetIdsMissingAnEdit") - // Count hydrated tweets where edit control is set, but neither initial nor edit - val unknownUnionVariant = stats.counter("unknownEditControlUnionVariant") - - ValueHydrator[Option[EditControl], TweetCtx] { (curr, ctx) => - curr match { - // Tweet was created before we write edit control - hydrate the value at read. - case None => - noEditControlHydration.incr() - val editControl = EditControlUtil.makeEditControlInitial( - ctx.tweetId, - ctx.createdAt, - setEditTimeWindowToSixtyMinutes) - Stitch.value(ValueState.delta(curr, Some(editControl))) - // Tweet is an initial tweet - case Some(EditControl.Initial(_)) => - editControlInitialHydration.incr() - Stitch.value(ValueState.unmodified(curr)) - - // Tweet is an edited version - case Some(EditControl.Edit(edit)) => - editControlEditHydration.incr() - getInitialTweet(repo, edit.initialTweetId, ctx) - .flatMap(getEditControlInitial(ctx)) - .map { initial: Option[EditControlInitial] => - editControlEditHydrationSuccessful.incr() - - initial.foreach { initialTweet => - // We are able to fetch the initial tweet for this edit but this edit tweet is - // not present in the initial's editTweetIds list - if (!initialTweet.editTweetIds.contains(ctx.tweetId)) { - editTweetIdsMissingAnEdit.incr() - } - } - - val updated = edit.copy(editControlInitial = initial) - ValueState.delta(curr, Some(EditControl.Edit(updated))) - } - .onFailure(exceptionCounter(_)) - case Some(_) => // Unknown union variant - unknownUnionVariant.incr() - Stitch.exception(TweetEditInvalidEditControlException) - } - }.onlyIf { (_, ctx) => ctx.opts.enableEditControlHydration } - } - - def getInitialTweet( - repo: TweetRepository.Type, - initialTweetId: Long, - ctx: TweetCtx, - ): Stitch[Tweet] = { - val options = TweetQuery.Options( - include = TweetQuery.Include(Set(Tweet.EditControlField.id)), - cacheControl = ctx.opts.cacheControl, - enforceVisibilityFiltering = false, - safetyLevel = SafetyLevel.FilterNone, - fetchStoredTweets = ctx.opts.fetchStoredTweets - ) - repo(initialTweetId, options) - } - - def getEditControlInitial(ctx: TweetCtx): Tweet => Stitch[Option[EditControlInitial]] = { - initialTweet: Tweet => - initialTweet.editControl match { - case Some(EditControl.Initial(initial)) => - Stitch.value( - if (ctx.opts.cause.writing(ctx.tweetId)) { - // On the write path we hydrate edit control initial - // as if the initial tweet is already updated. - Some(EditControlUtil.plusEdit(initial, ctx.tweetId)) - } else { - Some(initial) - } - ) - case _ if ctx.opts.fetchStoredTweets => - // If the fetchStoredTweets parameter is set to true, it means we're fetching - // and hydrating tweets regardless of state. In this case, if the initial tweet - // doesn't exist, we return None here to ensure we still hydrate and return the - // current edit tweet. - Stitch.None - case _ => Stitch.exception(TweetEditGetInitialEditControlException) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..141f76f807aeb781c1597108b7dcf4d008bd161f GIT binary patch literal 37422 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 UH!Cm)fpV1~Ln1JHZ0`l}00t83WdHyG literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.scala deleted file mode 100644 index d14dad52c..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditHydrator.scala +++ /dev/null @@ -1,63 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.EditState - -/** - * An EditHydrator hydrates a value of type `A`, with a hydration context of type `C`, - * and produces a function that takes a value and context and returns an EditState[A, C] - * (an EditState encapsulates a function that takes a value and returns a new ValueState). - * - * A series of EditHydrators of the same type may be run in parallel via - * `EditHydrator.inParallel`. - */ -class EditHydrator[A, C] private (val run: (A, C) => Stitch[EditState[A]]) { - - /** - * Apply this hydrator to a value, producing an EditState. - */ - def apply(a: A, ctx: C): Stitch[EditState[A]] = run(a, ctx) - - /** - * Convert this EditHydrator to the equivalent ValueHydrator. - */ - def toValueHydrator: ValueHydrator[A, C] = - ValueHydrator[A, C] { (a, ctx) => this.run(a, ctx).map(editState => editState.run(a)) } - - /** - * Runs two EditHydrators in parallel. - */ - def inParallelWith(next: EditHydrator[A, C]): EditHydrator[A, C] = - EditHydrator[A, C] { (x0, ctx) => - Stitch.joinMap(run(x0, ctx), next.run(x0, ctx)) { - case (r1, r2) => r1.andThen(r2) - } - } -} - -object EditHydrator { - - /** - * Create an EditHydrator from a function that returns Stitch[EditState[A]]. - */ - def apply[A, C](f: (A, C) => Stitch[EditState[A]]): EditHydrator[A, C] = - new EditHydrator[A, C](f) - - /** - * Creates a "passthrough" Edit: - * Leaves A unchanged and produces empty HydrationState. - */ - def unit[A, C]: EditHydrator[A, C] = - EditHydrator { (_, _) => Stitch.value(EditState.unit[A]) } - - /** - * Runs several EditHydrators in parallel. - */ - def inParallel[A, C](bs: EditHydrator[A, C]*): EditHydrator[A, C] = - bs match { - case Seq(b) => b - case Seq(b1, b2) => b1.inParallelWith(b2) - case _ => bs.reduceLeft(_.inParallelWith(_)) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditPerspectiveHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EditPerspectiveHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..0eb4fd3e83f54f187a12fe03626e4e5b5a939c9c GIT binary patch literal 38695 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

  • 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 - (level, stats.counter("perspective_by_safety_label", level.name, "calls")) - }.toMap - val editsAggregated = stats.counter("edit_perspective", "edits_aggregated") - - ValueHydrator[Option[TweetPerspective], Ctx] { (curr, ctx) => - val safetyLevel = ctx.opts.safetyLevel - val lookupsDecider = - if (TimelinesSafetyLevels.contains(safetyLevel)) timelinesGate - else if (TweetDetailSafetyLevels.contains(safetyLevel)) tweetDetailsGate - else otherSafetyLevelsGate - - val tweetIds: Seq[TweetId] = if (lookupsDecider()) tweetIdsToAggregate(ctx).toSeq else Seq() - statsByLevel - .getOrElse( - safetyLevel, - stats.counter("perspective_by_safety_label", safetyLevel.name, "calls")) - .incr(tweetIds.size) - editsAggregated.incr(tweetIds.size) - - Stitch - .traverse(tweetIds) { id => - repo( - Query( - ctx.opts.forUserId.get, - id, - PerspectiveHydrator.evaluatePerspectiveTypes( - ctx.opts.forUserId.get, - bookmarksGate, - ctx.featureSwitchResults))).liftToTry - }.map { seq => - if (seq.isEmpty) { - val editPerspective = ctx.currentTweetPerspective.map { c => - TweetPerspective( - c.favorited, - c.retweeted, - c.bookmarked - ) - } - ValueState.delta(curr, editPerspective) - } else { - val returns = seq.collect { case Return(r) => r } - val aggregate = Some( - TweetPerspective( - favorited = - returns.exists(_.favorited) || ctx.currentTweetPerspective.exists(_.favorited), - retweeted = - returns.exists(_.retweeted) || ctx.currentTweetPerspective.exists(_.retweeted), - bookmarked = Some( - returns.exists(_.bookmarked.contains(true)) || ctx.currentTweetPerspective.exists( - _.bookmarked.contains(true))) - ) - ) - - if (seq.exists(_.isThrow)) { - ValueState.partial(aggregate, HydratedField) - } else { - ValueState.modified(aggregate) - } - } - } - }.onlyIf { (curr, ctx) => - curr.isEmpty && - ctx.opts.forUserId.isDefined && - ctx.tweetFieldRequested(Tweet.EditPerspectiveField) - } - } - - private def tweetIdsToAggregate(ctx: Ctx): Set[TweetId] = { - ctx.editControl - .flatMap { - case EditControl.Initial(initial) => Some(initial) - case EditControl.Edit(edit) => edit.editControlInitial - case _ => None - } - .map(_.editTweetIds.toSet) - .getOrElse(Set()) - ctx.tweetId - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EscherbirdAnnotationHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/EscherbirdAnnotationHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..03cfd39a57a0282d6d5f99e6907164005be396d0 GIT binary patch literal 36978 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 - repo(tweet).liftToTry.map { - case Return(Some(anns)) => ValueState.modified(Some(anns)) - case Return(None) => ValueState.unmodified(curr) - case Throw(_) => ValueState.partial(curr, hydratedField) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/FeatureSwitchResultsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/FeatureSwitchResultsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..4a4a8b0f3503888de9e1b5cf0a41b635fef455e9 GIT binary patch literal 37360 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 - val viewer = TwitterContext().getOrElse(Viewer()) - val recipient = - FSRecipient( - userId = viewer.userId, - clientApplicationId = viewer.clientApplicationId, - userAgent = viewer.userAgent.flatMap(UserAgent(_)), - ).withCustomFields( - "thrift_client_id" -> - clientIdHelper.effectiveClientIdRoot.getOrElse(ClientIdHelper.UnknownClientId), - "forwarded_service_id" -> - CallContext.forwardedServiceIdentifier - .map(_.toString).getOrElse(EmptyServiceIdentifier), - "safety_level" -> opts.safetyLevel.toString, - "client_app_id_is_defined" -> viewer.clientApplicationId.isDefined.toString, - ) - val results = featureSwitchesWithoutExperiments.matchRecipient(recipient) - ValueState.unit(td.copy(featureSwitchResults = Some(results))) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/GeoScrubHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/GeoScrubHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..37dbff4463de0ffa8f7e7ce44d427ff65ace9245 GIT binary patch literal 37277 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 - repo(ctx.userId).liftToTry.map { - case Return(geoScrubTime) if ctx.createdAt <= geoScrubTime => - scribeTweetId(ctx.tweetId) - modifiedNoneNoneResult - - // no-op on failure and no result - case _ => ValueState.unmodified(curr) - } - }.onlyIf { case ((coords, place), _) => coords.nonEmpty || place.nonEmpty } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/HasMediaHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/HasMediaHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a257e0790456ade3aaa3e96648fdb3011a871631 GIT binary patch literal 36873 zcmagEWmp}_wm*z(a1HM6?hb+A?iMWQ#+{7^2=2k%-60!yCj@s3kU((v|7K>+IWy

    @hu77nh) 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 L2+SUnx Boolean): Type = - ValueHydrator - .map[Option[Boolean], Tweet] { (_, tweet) => ValueState.modified(Some(hasMedia(tweet))) } - .onlyIf((curr, ctx) => curr.isEmpty) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..0139d563af7eda85865d351dea0a3418c2349966 GIT binary patch literal 37023 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%0DVnG`1BWD9#?3%9OokmqB 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 TD=-Iva+M%MA~1Vs^niE(4udo% literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.scala deleted file mode 100644 index 951aa40c9..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM1837FilterHydrator.scala +++ /dev/null @@ -1,23 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.coreservices.IM1837 -import com.twitter.tweetypie.core._ -import com.twitter.stitch.Stitch - -object IM1837FilterHydrator { - type Type = ValueHydrator[Unit, TweetCtx] - - private val Drop = - Stitch.exception(FilteredState.Unavailable.DropUnspecified) - private val Success = Stitch.value(ValueState.unmodified(())) - - def apply(): Type = - ValueHydrator[Unit, TweetCtx] { (_, ctx) => - val userAgent = TwitterContext().flatMap(_.userAgent) - val userAgentAffected = userAgent.exists(IM1837.isAffectedClient) - val mightCrash = userAgentAffected && IM1837.textMightCrashIOS(ctx.text) - - if (mightCrash) Drop else Success - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..2b4e1d69ce9f9b6da11c3c66b507fd817cd93c75 GIT binary patch literal 37076 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 S%t4@BCCHEn%pS2lARYkD!dr6y literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.scala deleted file mode 100644 index 16222dec4..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM2884FilterHydrator.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.tweetypie.hydrator - -import com.twitter.coreservices.IM2884 -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core.ValueState -import com.twitter.stitch.Stitch - -object IM2884FilterHydrator { - type Type = ValueHydrator[Unit, TweetCtx] - - private val Drop = - Stitch.exception(FilteredState.Unavailable.DropUnspecified) - private val Success = Stitch.value(ValueState.unmodified(())) - - def apply(stats: StatsReceiver): Type = { - - val im2884 = new IM2884(stats) - - ValueHydrator[Unit, TweetCtx] { (_, ctx) => - val userAgent = TwitterContext().flatMap(_.userAgent) - val userAgentAffected = userAgent.exists(im2884.isAffectedClient) - val mightCrash = userAgentAffected && im2884.textMightCrashIOS(ctx.text) - if (mightCrash) Drop else Success - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM3433FilterHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/IM3433FilterHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..143f18578b4068ca40bf2924621174646753ed88 GIT binary patch literal 37062 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.scala deleted file mode 100644 index 0cacf3b74..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.scala +++ /dev/null @@ -1,25 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.media.Media -import com.twitter.tweetypie.media.MediaUrl -import com.twitter.tweetypie.thriftscala._ - -object MediaUrlFieldsHydrator { - type Ctx = MediaEntityHydrator.Cacheable.Ctx - type Type = MediaEntityHydrator.Cacheable.Type - - def mediaPermalink(ctx: Ctx): Option[UrlEntity] = - ctx.urlEntities.view.reverse.find(MediaUrl.Permalink.hasTweetId(_, ctx.tweetId)) - - def apply(): Type = - ValueHydrator - .map[MediaEntity, Ctx] { (curr, ctx) => - mediaPermalink(ctx) match { - case None => ValueState.unmodified(curr) - case Some(urlEntity) => ValueState.modified(Media.copyFromUrlEntity(curr, urlEntity)) - } - } - .onlyIf((curr, ctx) => curr.url == null && Media.isOwnMedia(ctx.tweetId, curr)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MentionEntityHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MentionEntityHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8f23a5f5bd5c035553953f7b060549b1c510d0bf GIT binary patch literal 37317 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 - repo(UserKey(entity.screenName)).liftToTry.map { - case Return(user) => ValueState.delta(entity, update(entity, user)) - case Throw(NotFound) => ValueState.unmodified(entity) - case Throw(_) => ValueState.partial(entity, hydratedField) - } - // only hydrate mention if userId or name is empty - }.onlyIf((entity, _) => entity.userId.isEmpty || entity.name.isEmpty) - - /** - * Updates a MentionEntity using the given user data. - */ - def update(entity: MentionEntity, userIdent: UserIdentity): MentionEntity = - entity.copy( - screenName = userIdent.screenName, - userId = Some(userIdent.id), - name = Some(userIdent.realName) - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..1c49cb4a06685a505481b8da2f5a1e4ecd928da1 GIT binary patch literal 36928 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 Pxk`{B5tuzrc7u2TRbBZm literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.scala deleted file mode 100644 index 5babf5b88..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NegativeVisibleTextRangeRepairer.scala +++ /dev/null @@ -1,18 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.thriftscala.TextRange - -/** - * Some tweets with visibleTextRange may have fromIndex > toIndex, in which case set fromIndex - * to toIndex. - */ -object NegativeVisibleTextRangeRepairer { - private val mutation = - Mutation[Option[TextRange]] { - case Some(TextRange(from, to)) if from > to => Some(Some(TextRange(to, to))) - case _ => None - } - - private[tweetypie] val tweetMutation = TweetLenses.visibleTextRange.mutation(mutation) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..09cc20671f8de42684fef02ff57080b50768be4a GIT binary patch literal 37434 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

    _Z*@i9xgw~|OIPyXhZKdsg+ki~t_x#w3MTTY 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.scala deleted file mode 100644 index c7224a8db..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/NoteTweetSuffixHydrator.scala +++ /dev/null @@ -1,66 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.TweetData -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.thriftscala.entities.Implicits._ -import com.twitter.tweetypie.thriftscala.TextRange -import com.twitter.tweetypie.tweettext.Offset -import com.twitter.tweetypie.tweettext.TextModification -import com.twitter.tweetypie.tweettext.TweetText -import com.twitter.tweetypie.util.TweetLenses - -object NoteTweetSuffixHydrator { - - val ELLIPSIS: String = "\u2026" - - private def addTextSuffix(tweet: Tweet): Tweet = { - val originalText = TweetLenses.text(tweet) - val originalTextLength = TweetText.codePointLength(originalText) - - val visibleTextRange: TextRange = - TweetLenses - .visibleTextRange(tweet) - .getOrElse(TextRange(0, originalTextLength)) - - val insertAtCodePoint = Offset.CodePoint(visibleTextRange.toIndex) - - val textModification = TextModification.insertAt( - originalText, - insertAtCodePoint, - ELLIPSIS - ) - - val mediaEntities = TweetLenses.media(tweet) - val urlEntities = TweetLenses.urls(tweet) - - val modifiedText = textModification.updated - val modifiedMediaEntities = textModification.reindexEntities(mediaEntities) - val modifiedUrlEntities = textModification.reindexEntities(urlEntities) - val modifiedVisibleTextRange = visibleTextRange.copy(toIndex = - visibleTextRange.toIndex + TweetText.codePointLength(ELLIPSIS)) - - val updatedTweet = - Lens.setAll( - tweet, - TweetLenses.text -> modifiedText, - TweetLenses.urls -> modifiedUrlEntities.sortBy(_.fromIndex), - TweetLenses.media -> modifiedMediaEntities.sortBy(_.fromIndex), - TweetLenses.visibleTextRange -> Some(modifiedVisibleTextRange) - ) - - updatedTweet - } - - def apply(): TweetDataValueHydrator = { - ValueHydrator[TweetData, TweetQuery.Options] { (td, _) => - val updatedTweet = addTextSuffix(td.tweet) - Stitch.value(ValueState.delta(td, td.copy(tweet = updatedTweet))) - }.onlyIf { (td, _) => - td.tweet.noteTweet.isDefined && - td.tweet.noteTweet.flatMap(_.isExpandable).getOrElse(true) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.docx new file mode 100644 index 0000000000000000000000000000000000000000..495b6a7d114d33d7f65da0b18d72db85fa7fe6ff GIT binary patch literal 37798 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

    hNppNGOZYctNrFk5TKpiFgO&NT1KPXq6HCG%l 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.scala deleted file mode 100644 index a15e64383..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PartialEntityCleaner.scala +++ /dev/null @@ -1,80 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.mediaservices.commons.tweetmedia.thriftscala._ -import com.twitter.tweetypie.media._ -import com.twitter.tweetypie.thriftscala._ -import scala.collection.Set - -/** - * Removes partial Url, Media, and Mention entities that were not - * fully hydrated. Rather than returning no value or a value with - * incomplete entities on an entity hydration failure, we gracefully - * degrade to just omitting those entities. This step needs to be - * applied in the post-cache filter, so that we don't cache the value - * with missing entities. - * - * A MediaEntity will first be converted back to a UrlEntity if it is only - * partially hydrated. If the resulting UrlEntity is itself then only partially - * hydrated, it will get dropped also. - */ -object PartialEntityCleaner { - def apply(stats: StatsReceiver): Mutation[Tweet] = { - val scopedStats = stats.scope("partial_entity_cleaner") - Mutation - .all( - Seq( - TweetLenses.urls.mutation(urls.countMutations(scopedStats.counter("urls"))), - TweetLenses.media.mutation(media.countMutations(scopedStats.counter("media"))), - TweetLenses.mentions.mutation(mentions.countMutations(scopedStats.counter("mentions"))) - ) - ) - .onlyIf(!isRetweet(_)) - } - - private[this] def clean[E](isPartial: E => Boolean) = - Mutation[Seq[E]] { items => - items.partition(isPartial) match { - case (Nil, nonPartial) => None - case (partial, nonPartial) => Some(nonPartial) - } - } - - private[this] val mentions = - clean[MentionEntity](e => e.userId.isEmpty || e.name.isEmpty) - - private[this] val urls = - clean[UrlEntity](e => - isNullOrEmpty(e.url) || isNullOrEmpty(e.expanded) || isNullOrEmpty(e.display)) - - private[this] val media = - Mutation[Seq[MediaEntity]] { mediaEntities => - mediaEntities.partition(isPartialMedia) match { - case (Nil, nonPartial) => None - case (partial, nonPartial) => Some(nonPartial) - } - } - - def isPartialMedia(e: MediaEntity): Boolean = - e.fromIndex < 0 || - e.toIndex <= 0 || - isNullOrEmpty(e.url) || - isNullOrEmpty(e.displayUrl) || - isNullOrEmpty(e.mediaUrl) || - isNullOrEmpty(e.mediaUrlHttps) || - isNullOrEmpty(e.expandedUrl) || - e.mediaInfo.isEmpty || - e.mediaKey.isEmpty || - (MediaKeyClassifier.isImage(MediaKeyUtil.get(e)) && containsInvalidSizeVariant(e.sizes)) - - private[this] val userMentions = - clean[UserMention](e => e.screenName.isEmpty || e.name.isEmpty) - - def isNullOrEmpty(optString: Option[String]): Boolean = - optString.isEmpty || optString.exists(isNullOrEmpty(_)) - - def isNullOrEmpty(str: String): Boolean = str == null || str.isEmpty - - def containsInvalidSizeVariant(sizes: Set[MediaSize]): Boolean = - sizes.exists(size => size.height == 0 || size.width == 0) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PastedMediaHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PastedMediaHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..31b8297b3d44a3d8b3746413d82567a519041cbc GIT binary patch literal 38003 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�C^gF58ds2x zub3}VTyaA=+?+KDZ%yviLrh5vt2bU%9}c0qdOznG7jS3AB(`aE??SS=laT3@^2?3y z(}Xgn8A>@Z?bgrf@S&K3%a;@7(~o)2r{z@LYp*8sO_3T151PwTx^)QnAnWN7<)u)D zLcP<>0zHj&(k`%VvM)vZRv?7EyLX=&@qS>88krZ^)|crLff_2N*DUu9eapm` z`;5_&OqmPMnBg3=FH>!e$WQXdp$|TXyqUPt9>!sO{(_D)iX0xH|LOeqmn5^*{2=YR zU1_FX&aZf*mB~t>j#7;VcGoDg?*f7vDo!6o> zC;+cwWxfPn$^`SsB45?uKauMxi1;tYUk~k}!q{jLJ8$rkE>I}3O*jU&{QvIpxDv3Q ziH6EQ4h>1MK{=Ke0K~V+Bf*ycE?01-jH;Ir=} z_an;f)&V#gzKz!e02g~cKx`Z7F?hOuBY`+P7PVfk zgpL99gOXqML@tckHZkP$l28t`PP)k%!hPjzDWX8-(89~6{8`9`98!jX5}<{MO#%nM zLD*K7fa;-H<4yg|unj#lhYUqP{r4s!CTd4F4h2As?j`_9-U`^s_Ci@u@3_fwxW1LO z-AO_zP^+~`xe~oGD%*?~R1b{@H}%4CTc+6d=+M@R51c`3vq}PR1E pastedMedia.updateEntities(urlEntity) - case _ => PastedMedia.empty - } - - ValueHydrator[PastedMedia, Ctx] { (curr, ctx) => - val repoCtx = asRepoCtx(ctx) - val idsAndEntities = pastedIdsAndEntities(ctx.tweetId, ctx.urlEntities) - - val res = Stitch.traverse(idsAndEntities) { - case (tweetId, urlEntity) => - hydrateOneReference(tweetId, urlEntity, repoCtx) - } - - res.liftToTry.map { - case Return(pastedMedias) => - val merged = pastedMedias.foldLeft(curr)(_.merge(_)) - val limited = merged.take(MaxMediaEntitiesPerTweet) - ValueState.delta(curr, limited) - - case Throw(_) => ValueState.unmodified(curr) - } - }.onlyIf { (_, ctx) => - // we only attempt to hydrate pasted media if media is requested - ctx.includePastedMedia && - !ctx.isRetweet && - ctx.includeMediaEntities - } - } - - /** - * Finds url entities for foreign permalinks, and returns a sequence of tuples containing - * the foreign tweet IDs and the associated UrlEntity containing the permalink. If the same - * permalink appears multiple times, only one of the duplicate entities is returned. - */ - def pastedIdsAndEntities( - tweetId: TweetId, - urlEntities: Seq[UrlEntity] - ): Seq[(TweetId, UrlEntity)] = - urlEntities - .foldLeft(Map.empty[TweetId, UrlEntity]) { - case (z, e) => - MediaUrl.Permalink.getTweetId(e).filter(_ != tweetId) match { - case Some(id) if !z.contains(id) => z + (id -> e) - case _ => z - } - } - .toSeq - - def asRepoCtx(ctx: Ctx) = - PastedMediaRepository.Ctx( - ctx.includeMediaEntities, - ctx.includeAdditionalMetadata, - ctx.includeMediaTags, - ctx.opts.extensionsArgs, - if (ctx.opts.cause == TweetQuery.Cause.Insert(ctx.tweetId) || - ctx.opts.cause == TweetQuery.Cause.Undelete(ctx.tweetId)) { - writeSafetyLevel - } else { - ctx.opts.safetyLevel - } - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7a379b1d5fe9d94e31fefeda3816f0d520c1602 GIT binary patch literal 37856 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 J^Es<${{kcW;Hdxr literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.scala deleted file mode 100644 index 4a055f5ec..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PerspectiveHydrator.scala +++ /dev/null @@ -1,112 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.featureswitches.v2.FeatureSwitchResults -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.Stitch -import com.twitter.stitch.timelineservice.TimelineService.GetPerspectives.Query -import com.twitter.timelineservice.{thriftscala => tls} -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository.PerspectiveRepository -import com.twitter.tweetypie.thriftscala.FieldByPath -import com.twitter.tweetypie.thriftscala.StatusPerspective - -object PerspectiveHydrator { - type Type = ValueHydrator[Option[StatusPerspective], Ctx] - val hydratedField: FieldByPath = fieldByPath(Tweet.PerspectiveField) - - case class Ctx(featureSwitchResults: Option[FeatureSwitchResults], underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy - - val Types: Set[tls.PerspectiveType] = - Set( - tls.PerspectiveType.Reported, - tls.PerspectiveType.Favorited, - tls.PerspectiveType.Retweeted, - tls.PerspectiveType.Bookmarked - ) - - val TypesWithoutBookmarked: Set[tls.PerspectiveType] = - Set( - tls.PerspectiveType.Reported, - tls.PerspectiveType.Favorited, - tls.PerspectiveType.Retweeted - ) - - private[this] val partialResult = ValueState.partial(None, hydratedField) - - val bookmarksPerspectiveHydrationEnabledKey = "bookmarks_perspective_hydration_enabled" - - def evaluatePerspectiveTypes( - userId: Long, - bookmarksPerspectiveDecider: Gate[Long], - featureSwitchResults: Option[FeatureSwitchResults] - ): Set[tls.PerspectiveType] = { - if (bookmarksPerspectiveDecider(userId) || - featureSwitchResults - .flatMap(_.getBoolean(bookmarksPerspectiveHydrationEnabledKey, false)) - .getOrElse(false)) - Types - else - TypesWithoutBookmarked - } - - def apply( - repo: PerspectiveRepository.Type, - shouldHydrateBookmarksPerspective: Gate[Long], - stats: StatsReceiver - ): Type = { - val statsByLevel = - SafetyLevel.list.map(level => (level, stats.counter(level.name, "calls"))).toMap - - ValueHydrator[Option[StatusPerspective], Ctx] { (_, ctx) => - val res: Stitch[tls.TimelineEntryPerspective] = if (ctx.isRetweet) { - Stitch.value( - tls.TimelineEntryPerspective( - favorited = false, - retweetId = None, - retweeted = false, - reported = false, - bookmarked = None - ) - ) - } else { - statsByLevel - .getOrElse(ctx.opts.safetyLevel, stats.counter(ctx.opts.safetyLevel.name, "calls")) - .incr() - - repo( - Query( - userId = ctx.opts.forUserId.get, - tweetId = ctx.tweetId, - types = evaluatePerspectiveTypes( - ctx.opts.forUserId.get, - shouldHydrateBookmarksPerspective, - ctx.featureSwitchResults) - )) - } - - res.liftToTry.map { - case Return(perspective) => - ValueState.modified( - Some( - StatusPerspective( - userId = ctx.opts.forUserId.get, - favorited = perspective.favorited, - retweeted = perspective.retweeted, - retweetId = perspective.retweetId, - reported = perspective.reported, - bookmarked = perspective.bookmarked - ) - ) - ) - case _ => partialResult - } - - }.onlyIf { (curr, ctx) => - curr.isEmpty && - ctx.opts.forUserId.nonEmpty && - (ctx.tweetFieldRequested(Tweet.PerspectiveField) || ctx.opts.excludeReported) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0f4af74e35c8cd1781f5c53964c59c742176767 GIT binary patch literal 37086 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 z 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.scala deleted file mode 100644 index 186619df8..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PlaceHydrator.scala +++ /dev/null @@ -1,28 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.NotFound -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -object PlaceHydrator { - type Type = ValueHydrator[Option[Place], TweetCtx] - - val HydratedField: FieldByPath = fieldByPath(Tweet.PlaceField) - - def apply(repo: PlaceRepository.Type): Type = - ValueHydrator[Option[Place], TweetCtx] { (_, ctx) => - val key = PlaceKey(ctx.placeId.get, ctx.opts.languageTag) - repo(key).liftToTry.map { - case Return(place) => ValueState.modified(Some(place)) - case Throw(NotFound) => ValueState.UnmodifiedNone - case Throw(_) => ValueState.partial(None, HydratedField) - } - }.onlyIf { (curr, ctx) => - curr.isEmpty && - ctx.tweetFieldRequested(Tweet.PlaceField) && - !ctx.isRetweet && - ctx.placeId.nonEmpty - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..f82619d836a411b6e2d7cf06624d913d45331547 GIT binary patch literal 38829 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.scala deleted file mode 100644 index 5dff256ac..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/PreviousTweetCountsHydrator.scala +++ /dev/null @@ -1,152 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.featureswitches.v2.FeatureSwitchResults -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.FieldId -import com.twitter.tweetypie.TweetId -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.repository.TweetCountKey -import com.twitter.tweetypie.repository.TweetCountsRepository -import com.twitter.tweetypie.thriftscala.EditControl -import com.twitter.tweetypie.thriftscala.StatusCounts -import com.twitter.tweetypie.thriftscala._ - -/* - * A constructor for a ValueHydrator that hydrates `previous_counts` - * information. Previous counts are applied to edit tweets, they - * are the summation of all the status_counts in an edit chain up to - * but not including the tweet being hydrated. - * - */ -object PreviousTweetCountsHydrator { - - case class Ctx( - editControl: Option[EditControl], - featureSwitchResults: Option[FeatureSwitchResults], - underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy - - type Type = ValueHydrator[Option[StatusCounts], Ctx] - - val hydratedField: FieldByPath = fieldByPath(Tweet.PreviousCountsField) - - /* - * Params: - * tweetId: The tweet being hydrated. - * editTweetIds: The sorted list of all edits in an edit chain. - * - * Returns: tweetIds in an edit chain from the initial tweet up to but not including - * the tweet being hydrated (`tweetId`) - */ - def previousTweetIds(tweetId: TweetId, editTweetIds: Seq[TweetId]): Seq[TweetId] = { - editTweetIds.takeWhile(_ < tweetId) - } - - /* An addition operation for Option[Long] */ - def sumOptions(A: Option[Long], B: Option[Long]): Option[Long] = - (A, B) match { - case (None, None) => None - case (Some(a), None) => Some(a) - case (None, Some(b)) => Some(b) - case (Some(a), Some(b)) => Some(a + b) - } - - /* An addition operation for StatusCounts */ - def sumStatusCounts(A: StatusCounts, B: StatusCounts): StatusCounts = - StatusCounts( - retweetCount = sumOptions(A.retweetCount, B.retweetCount), - replyCount = sumOptions(A.replyCount, B.replyCount), - favoriteCount = sumOptions(A.favoriteCount, B.favoriteCount), - quoteCount = sumOptions(A.quoteCount, B.quoteCount), - bookmarkCount = sumOptions(A.bookmarkCount, B.bookmarkCount) - ) - - def apply(repo: TweetCountsRepository.Type, shouldHydrateBookmarksCount: Gate[Long]): Type = { - - /* - * Get a StatusCount representing the summed engagements of all previous - * StatusCounts in an edit chain. Only `countsFields` that are specifically requested - * are included in the aggregate StatusCount, otherwise those fields are None. - */ - def getPreviousEngagementCounts( - tweetId: TweetId, - editTweetIds: Seq[TweetId], - countsFields: Set[FieldId] - ): Stitch[ValueState[StatusCounts]] = { - val editTweetIdList = previousTweetIds(tweetId, editTweetIds) - - // StatusCounts for each edit tweet revision - val statusCountsPerEditVersion: Stitch[Seq[ValueState[StatusCounts]]] = - Stitch.collect(editTweetIdList.map { tweetId => - // Which tweet count keys to request, as indicated by the tweet options. - val keys: Seq[TweetCountKey] = - TweetCountsHydrator.toKeys(tweetId, countsFields, None) - - // A separate StatusCounts for each count field, for `tweetId` - // e.g. Seq(StatusCounts(retweetCounts=5L), StatusCounts(favCounts=6L)) - val statusCountsPerCountField: Stitch[Seq[ValueState[StatusCounts]]] = - Stitch.collect(keys.map(key => TweetCountsHydrator.statusCountsRepo(key, repo))) - - // Reduce the per-field counts into a single StatusCounts for `tweetId` - statusCountsPerCountField.map { vs => - // NOTE: This StatusCounts reduction uses different logic than - // `sumStatusCounts`. This reduction takes the latest value for a field. - // instead of summing the fields. - ValueState.sequence(vs).map(TweetCountsHydrator.reduceStatusCounts) - } - }) - - // Sum together the StatusCounts for each edit tweet revision into a single Status Count - statusCountsPerEditVersion.map { vs => - ValueState.sequence(vs).map { statusCounts => - // Reduce a list of StatusCounts into a single StatusCount by summing their fields. - statusCounts.reduce { (a, b) => sumStatusCounts(a, b) } - } - } - } - - ValueHydrator[Option[StatusCounts], Ctx] { (inputStatusCounts, ctx) => - val countsFields: Set[FieldId] = TweetCountsHydrator.filterRequestedCounts( - ctx.opts.forUserId.getOrElse(ctx.userId), - ctx.opts.include.countsFields, - shouldHydrateBookmarksCount, - ctx.featureSwitchResults - ) - - ctx.editControl match { - case Some(EditControl.Edit(edit)) => - edit.editControlInitial match { - case Some(initial) => - val previousStatusCounts: Stitch[ValueState[StatusCounts]] = - getPreviousEngagementCounts(ctx.tweetId, initial.editTweetIds, countsFields) - - // Add the new aggregated StatusCount to the TweetData and return it - previousStatusCounts.map { valueState => - valueState.map { statusCounts => Some(statusCounts) } - } - case None => - // EditControlInitial is not hydrated within EditControlEdit - // This means we cannot provide aggregated previous counts, we will - // fail open and return the input data unchanged. - Stitch.value(ValueState.partial(inputStatusCounts, hydratedField)) - } - - case _ => - // If the tweet has an EditControlInitial - it's the first Tweet in the Edit Chain - // or has no EditControl - it could be an old Tweet from when no Edit Controls existed - // then the previous counts are set to be equal to None. - Stitch.value(ValueState.unit(None)) - } - }.onlyIf { (_, ctx: Ctx) => - // only run if the CountsField was requested; note this is ran both on read and write path - TweetCountsHydrator - .filterRequestedCounts( - ctx.opts.forUserId.getOrElse(ctx.userId), - ctx.opts.include.countsFields, - shouldHydrateBookmarksCount, - ctx.featureSwitchResults - ).nonEmpty - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..193e2f7d4e926fbd3399be047f1d24bf76b9901e GIT binary patch literal 37129 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 Vz?&7AgFv}TkRcJ6Jtp;lcmNl1Z9M=0 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.scala deleted file mode 100644 index ea461bae8..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ProfileGeoHydrator.scala +++ /dev/null @@ -1,31 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.dataproducts.enrichments.thriftscala.ProfileGeoEnrichment -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository.ProfileGeoKey -import com.twitter.tweetypie.repository.ProfileGeoRepository -import com.twitter.tweetypie.thriftscala.FieldByPath - -object ProfileGeoHydrator { - type Type = ValueHydrator[Option[ProfileGeoEnrichment], TweetCtx] - - val hydratedField: FieldByPath = fieldByPath(Tweet.ProfileGeoEnrichmentField) - - private[this] val partialResult = ValueState.partial(None, hydratedField) - - def apply(repo: ProfileGeoRepository.Type): Type = - ValueHydrator[Option[ProfileGeoEnrichment], TweetCtx] { (curr, ctx) => - val key = - ProfileGeoKey( - tweetId = ctx.tweetId, - userId = Some(ctx.userId), - coords = ctx.geoCoordinates - ) - repo(key).liftToTry.map { - case Return(enrichment) => ValueState.modified(Some(enrichment)) - case Throw(_) => partialResult - } - }.onlyIf((curr, ctx) => - curr.isEmpty && ctx.tweetFieldRequested(Tweet.ProfileGeoEnrichmentField)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..a939c0f1d908e6a5cbab9a345af47091374ef968 GIT binary patch literal 37688 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.scala deleted file mode 100644 index f82e9fa0b..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuoteTweetVisibilityHydrator.scala +++ /dev/null @@ -1,93 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala.QuotedTweet - -/** - * Enforce that users are not shown quoted tweets where the author of the - * inner quoted tweet blocks the author of the outer quote tweet or the author - * of the inner quoted tweet is otherwise not visible to the outer author. - * - * In the example below, QuoteTweetVisibilityHydrator checks if @jack - * blocks @trollmaster. - * - * {{{ - * @viewer - * +------------------------------+ - * | @trollmaster | <-- OUTER QUOTE TWEET - * | lol u can't spell twitter | - * | +--------------------------+ | - * | | @jack | <---- INNER QUOTED TWEET - * | | just setting up my twttr | | - * | +--------------------------+ | - * +------------------------------+ - * }}} - * - * In the example below, QuoteTweetVisibilityHydrator checks if @h4x0r can view - * user @protectedUser. - * - * {{{ - * @viewer - * +------------------------------+ - * | @h4x0r | <-- OUTER QUOTE TWEET - * | lol nice password | - * | +--------------------------+ | - * | | @protectedUser | <---- INNER QUOTED TWEET - * | | my password is 1234 | | - * | +--------------------------+ | - * +------------------------------+ - * }}} - * - * - * In the example below, QuoteTweetVisibilityHydrator checks if @viewer blocks @jack: - * - * {{{ - * @viewer - * +------------------------------+ - * | @sometweeter | <-- OUTER QUOTE TWEET - * | This is a historic tweet | - * | +--------------------------+ | - * | | @jack | <---- INNER QUOTED TWEET - * | | just setting up my twttr | | - * | +--------------------------+ | - * +------------------------------+ - * }}} - * - */ -object QuoteTweetVisibilityHydrator { - type Type = ValueHydrator[Option[FilteredState.Unavailable], TweetCtx] - - def apply(repo: QuotedTweetVisibilityRepository.Type): QuoteTweetVisibilityHydrator.Type = - ValueHydrator[Option[FilteredState.Unavailable], TweetCtx] { (_, ctx) => - val innerTweet: QuotedTweet = ctx.quotedTweet.get - val request = QuotedTweetVisibilityRepository.Request( - outerTweetId = ctx.tweetId, - outerAuthorId = ctx.userId, - innerTweetId = innerTweet.tweetId, - innerAuthorId = innerTweet.userId, - viewerId = ctx.opts.forUserId, - safetyLevel = ctx.opts.safetyLevel - ) - - repo(request).liftToTry.map { - case Return(Some(f: FilteredState.Unavailable)) => - ValueState.modified(Some(f)) - - // For tweet::quotedTweet relationships, all other FilteredStates - // allow the quotedTweet to be hydrated and filtered independently - case Return(_) => - ValueState.UnmodifiedNone - - // On VF failure, gracefully degrade to no filtering - case Throw(_) => - ValueState.UnmodifiedNone - } - }.onlyIf { (_, ctx) => - !ctx.isRetweet && - ctx.tweetFieldRequested(Tweet.QuotedTweetField) && - ctx.opts.enforceVisibilityFiltering && - ctx.quotedTweet.isDefined - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..4054e867fbacc0eaa3d6b713c2d18cc97180a168 GIT binary patch literal 37462 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 J<9;uQ2LQ^m{?Gsb literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.scala deleted file mode 100644 index e112ef395..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetHydrator.scala +++ /dev/null @@ -1,51 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ - -/** - * Loads the tweet referenced by `Tweet.quotedTweet`. - */ -object QuotedTweetHydrator { - type Type = ValueHydrator[Option[QuotedTweetResult], Ctx] - - case class Ctx( - quotedTweetFilteredState: Option[FilteredState.Unavailable], - underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy - - def apply(repo: TweetResultRepository.Type): Type = { - ValueHydrator[Option[QuotedTweetResult], Ctx] { (_, ctx) => - (ctx.quotedTweetFilteredState, ctx.quotedTweet) match { - - case (_, None) => - // If there is no quoted tweet ref, leave the value as None, - // indicating undefined - ValueState.StitchUnmodifiedNone - - case (Some(fs), _) => - Stitch.value(ValueState.modified(Some(QuotedTweetResult.Filtered(fs)))) - - case (None, Some(qtRef)) => - val qtQueryOptions = - ctx.opts.copy( - // we don't want to recursively load quoted tweets - include = ctx.opts.include.copy(quotedTweet = false), - // be sure to get a clean version of the tweet - scrubUnrequestedFields = true, - // TweetVisibilityLibrary filters quoted tweets slightly differently from other tweets. - // Specifically, most Interstitial verdicts are converted to Drops. - isInnerQuotedTweet = true - ) - - repo(qtRef.tweetId, qtQueryOptions).transform { t => - Stitch.const { - QuotedTweetResult.fromTry(t).map(r => ValueState.modified(Some(r))) - } - } - } - }.onlyIf((curr, ctx) => curr.isEmpty && ctx.opts.include.quotedTweet) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..bea7502795c8cff86d31524bb10c7b5946fc7a01 GIT binary patch literal 38783 zcmagFV|ZQN*DoB~Zfx6j(xkC%+qN3pw(X>`ZCeeRG`7#~egFA9=e+Nil`C_t@xvHv zPwlzor9i>ZfPjFYfWk94)Tqf=J&l-_cVT_zAs45Ya34?J4bPeX$B^%KLf>3RL82K5DbSvDe{ejht(F&apZTB*effZj#3=Zm>-VIyS`8Q zxe-5$_>1MduhNsNW?N;#{0QJo3)jC=5&y2=lrZR2?>a@(=xCDYlk%d z)25f+Z9P|^>8^to@=eeC#FnQg=322Vmr!7z3*@h~Od8ejEjIxi#X^;fA z=c5Qh)>&^L6-6VFP7*{0b7yR|cktuD<0DmZEGhrBG2;&(O`fqKOb zq1co$7A}rYhf@(^pZmOEtu-!DS)Wc(JwD0+!9lO5YlPP$1MqdMC%Ax`M~Sztl0%n` zzyc#_+7v3S_hh^x587n6!G__O>ZoJ%;U8Zf7@00-7UHbZlvoF;8EPyA=CAar?@(Pgb?9wEr9gKE5V?@zNo0u2p$W ze-b1jr=;sndIvGpi89D(*2G&n*LLvrh>nzGO3icH)MYzJ!OwmM|2JcO>ZN9L?5Ypc z*qj#o<$otA>^rQI1>iNG10)C;kRW3_BY8(VdnX1XJ4cg0FL`#tgzNw#lGvlS*rJST z_$?BYm?SmuX~Z`Pw1Cz22Ua#2>xmrpshxu&8_hf#SNt8Gkz0HIEso|^P@|B95Q5P7 z%K+mDSPk@#4MU90*BmiwuIl9A{>$E%g&T4+Zlm$uNCj*-n7SNL$xJ34>E$qPlEDTx z*2VABMA>bMCHW`9O2{&6-&F+@D1VT^6CR>b{R#-c4^JdXXhbe=Ex`xMLN3b(4o?|0 zke=2BTUf1x4szVH26M%((UjXi+16sh-e`f}aIX9DVsyjg=ZmKaAN>34kiOzkmI-AY z1T*fr>oYhUA~1`fLb{?`n=12e#JQ8B!_JH=s7@tZYbYE-%9s4P^Rg?Ex3t%y!GGU{C8dMHa0NN0Clkj0|G+& z&$<}c+y7M-m*P2&)l+Ez5eLc88)ksN(M-T@wcxM5d@Tjz)TniJ&lp(}n((k&OGzYVU z^>V&%F#d&{XJ(^?$-6)zc!p1Ff3pDhGzjw()2L`y(0BG;+`cmVf^q{0GotCNkx;3j zTrKP-`aG^jU1%haiw*Q$gfePuo+R1Qz^?BOIafVk(;=?yp|PAN4ngVx0qliGc=ZiK zlzLqRQWGyOu_YbVuYTO__BRJ7Tw?VNs5)@O&Cl1P>^jsWK?~fqAIPLW({ub{^%HfK z-}dRNi1=!TDM(ZBUJVIwXpE>X)Q*ouRy1{FwW85;*|3pa$@W5g+kp@5D8Q4f_^{-^ zx@ztdJep&_Bhg>mFdgqcyYRuDx@1!R4PpR#Y@`Pq# zs(4w;#itH#ND36oeeLSZWO!r1zk<$uzQy@my8lh^-!Ddcrv7^*3=j~S=-(e$H#_vR-f*ob(?ip8fh5iPcF2~UlcnuN6n-o84 zwh-NF7MeN3k;cv&>rU;IW=kt*=iT#~ig_zZI=~#X$%sp|lIVdf>lMy4WXw8m0Pl`!wa_YvxwNodi z2g|UGXoEj4!LXvq=5BSy9?q$VhV_0LILE$lQ9rGDRkmr`ghj3L^I&xS+HRg3Ih4L* zda;Yyb9*&ciLi*w`*VZ&~#+A*`v`* z_rBAcCW1TWlfu1Xit4CFE6`kE5x9VKSR=tb4u1_akg|??hVs)TFX=d1 z`G{!cM;xcSAx=?M2@~$KMe#I7Xy240`4o>kq{=Rz6s6Zg3xtXK`7l<_!b&5-AsMlc zzGG)nLdqX7fg@R$n6Dg5#@NSZJ+*%ma zlIIdB5bNZbeNdxMV^b>R^MrJS?Na#+1VrOa?Y>zMHq1xtrBI6$rpHezg4CkOqK(79 zU=CNRsxB%{eM@Hkt&h^XN@vJiB9$9Q0|Zec-Rm0`ZzBCud<@FKh*ubBJFC8@UJVJF z-`J^_Y^=aPtQ$SU?sv|C)XH+ckFa<@vX8MvMmWt|sl=h^$uMDKJMBVPIm$|WDeQOM zTpdB`W7?nCcY`Dnxo11ZZ4w3irzo!y^Qy2byvPRqD8A5mEphT(1$1LWjL3CzjMix4 z{s?b|(+1n%IMjk9m`qJ*&@^o&XJ>}2#w?P;-?K8E(Bt2xxQ?jGbtEXb7$P`jf0=PF~7bA!W_Tf1~ktd!1opKoJzu$^QZgS*C}2 zl~ea&(=T%~Uv^nQ!KLwNb~m0FO3i`}IguB{mPvbmad3zVCv#-d-M&Bn7Kj0Bv(iVR zrIhpIYjtF`pQDoG0 zl^l6FN-x4sHaSAG@}J6)jlNH&abfY2qf)G_AUaWB-4qKExJ=KIY#@Kb0n^nR^6LUc zAiZ!!&Ii5~YpB?C@qLGVn3;3px;6+xqC=8ndorb){=~qEAlUeDRtD4M(UM%d}&~tFkrGM;sR+7UB-*~A5+xT zJnN59-hG-yllEi4Yu*Orpp&!sL@N&2J?Wb=|Cpar3*`9?3)Pc z3fuB`qW6<$Pgt0Mv6-D`<{6a1OO(-Fgv+lqh@5bA*bH~s1g~i~K1uU)YMDW#2bIC| zqqmqT1cow$kIu(>Dh#JVj3nW7J0WP5@xsN#ZZb`zgZES45EW3LwNGvxemTY#_)2K- zl3k%5Sz^44Pkx`g$L@T@#U+Z!Q}KezvZ?${$SnnTn)!lN5rWb>3(Jm2PHMa*?eqLksxdYOn4p0BFSjc67-9X7Q7{+&XpBAvK3L39yA``0 zV2^YxZ+k^Oucls<3us#x`SO&G{IC&Ax$wzh!KKVWzAJVQGod>0_=GdnaO)gDV!IuG z6fP4al8t8P*v+4gQinz|g71U`=T+e3b*sI#3AulDZO|#PG;GOVIO`U@NqE;yB94|t zEoYqm4rL?OV>3UC-jwUX{*H&0qfuc&-$80xy@yS0P9d){Y)HnkuALsq+RQ}C6qssp zIBUqt=x9r0o^bEk4J#j3ndz={y74$R0my2$bZEcOnGQ}67jsWrLBDbEh- z10n35vVXss08->e_{iqn^10*Aozhi(@G^8@gjHG^bsfB3eFEzj7!)*^+)!0&#e({9 zf6;G0m+R}3cBF}D7QSi>15kI z#K?;7laOSsiQ4Tdp?u~eOCsb~9#z#)Itz`Ko1DYherLUzE757e4%H}4VW-?97tJ-D z&dQRLAj5`vn+;9~(2!}jqID4W#Z|{;1$=TF-nZs>(C*BX*{|37srB;LJ8|PKbCc>} zdTUyHX0Alt_(m9lFW+LvZ;)#Yymd?Y>fn(UEL%B4JgDx!rY5N*xs~C9c3%XZT>_JB ze`WHxsZ+L$p5C0sgz^zwV|u*{U-N3~-;{cs2_ny`?8qy9`EEAk_AtQG(xVulc9KZF zWjW<#v_hTw9B_H}p|G5&H4^^Pz(_M=V_5f6m_&88>D2iR2*j&I3`#TY zugz2JJTEzLI|x(RvF{i9qHdt2K2UC_T%ILL8$TKil))2eT+^44d8Yvr25lj{J~Ldt zrbn=T2uQThw%%Qcj@fBAXf2nExv?e=e1ePfw}W2>wYJ=a_VdxwaxCp?H8?r3cp(~9f|96Yl7PKTL_UiLE$w+Og-yulu!|}swRZyuIpp(TICg%nLDpfHm^GVmL&5AQ{PTD z*Z@P?oNp`Gj$RX8bRw>l@V$XU6GTIFE+NezG&jfDvxE40s;2FxtIBFuU@OC^Z&$Wa zHLxEUtbTP#Ux$Q^On?9Kc=rCu7}xI|QWwUwX$e=P##B~pl!tRX`w*ec}9lohAt-CWY3r!2Iy7bJ+l0e@5} z?micux|PC&+SfC_{;M>U0742I45#%n)g%2)DbDq~xmqx;=b(9p|IT%EB?eC<0}zm| z3OEqrKXdKm>|t%<^kTBuL#chY3?>m+^&-2lRyXHks%Er6x`$eX}%81>^bL{8y>&j(JsX*)5fzH$O z)^$hfQpfA@!ms;|(9nZZkM{=N51Y>)+aV0T>jb(frB^cp$Dyf*dlMUHt(ET+XE#kA zo7Nnq0t8ikypg~+ zt_=7#^WzVg`L5-Rcxl+Wt{8lmHONbyI;|795Xk<(;Fos%dM&><5*qZR$FT7V5aqVx zw|$N{F>?O0<-es+e8&0) z59z)ZY}A!|9+UZcm3)8Wo`J_PaTn?9Nay*^8y}yA>hLq!qC|fYZ8L#_x^D_VCo0;ez*1RoT2?z=eyRq!^>Cgc6kw+%5jmyA$Rua zqkHMgSCebI@`*awof6fy-g7Q{yb)`+|Mc^-Ub9C$2dDdomN@$})k`nC=OYst#mCde zkt@eBELZvU&}T;&F8PC@q=zm;AyyBLDon;cR72XqH+X|e#Jw^^CPjjN6#~O5{y|Zn zFe>k`1z#7}?z@q5iy;aaUFGNSzy)RBf?bm2T*@}lLkbvtc|cPijetU(9pJws+V?@r zFP}P3lM<_t{I;?iE+!z@)FnSi&v)KCd1(a*Qfg=1<~B9s6q)-&TSpRCs}YuL?+1R> z?fBH78EIG=zNM}lA38WyVHB0U#3Em{zpfbEDpOewrkgzleRk^9EYG~2FTB`4I=qia zKHLhN13Fv<@n)T+#jAm%+uL6k15R12G$HM{#cI)?14r%^_*u7L%U+ueoJWc51N<*%qB~ ztq~zB>fElFuje0Ezieo-@Q3G-z0rvtpyq|V@$@Jqql!s56ZtPqD^*4}Mc@q&nU?g0@`M$&^_LtYCee+xlLPou(N< z`|-ME(Zy49Iast7QOCrxBe|+>v!94m#18rmN--0L46N^1)Pd+Uu`rmnSwm4cZrz!R z2+C|5tyd4~w!|MT*h5JWX1$Y&5Y}e9D!WhuN|A&HCD1;h)t@lyrw&hSJW^3kXJyDP znH{hO=a`ltlI#rzQgC7?_$Zz54MtpGTqk%@-k+Q1fSVZqya~2PY6mRzkLPQevB~Jc z7(8G{`z5zQ{)v6gng9qT1UyIeSEwccEd+r3U!i|fft6ESS`xYc4}wbt5wN`DMa7EP@j~qJIMkcI3XruV(wNlGNH?;^zeY``SZ|6VI1a? z>Fw6V&)e;?Es+$lc-twgZuy>0X#yJnNp1q>#sv>6p=7D^Wxp&@6gAS4#Wmvwk9}jk<+GJs z;b%lZ{|P1I=RNu|cJQ+Bfn?d6KDh1RlKEuw+N$)EUf`{}3+5Y-^w9ABp`R2x##aVM z4h%DXj}3KPoo*XiU*1nQ2j2pfU<-hnIV`L1ANWC&8;4M`Us-(R)8@!i zY09I=QI|C67h8w!NnsZfX@TVojjLa>Xx7Yh4z)!{vL>L(2iixRYC37!;nW@tvymOZ$~9Uk!p}c4Q4b`m-!|Hd)j0f)lZLay(yGHvv%ea`uk9NOkpv9MJ3HNZhm@JQYkB@8khds3)A z-q1{V23(pYMdQz&p&F=D9fYN*$Rj@A4KD_IE|nI2N`K}YT<{j}NNo+-l~?Sk@;v== z$V6KpXx+Ia{`|;T?3i(Txf{9pxEUVu?09$Z@O}J9{#-tPS@`vKYR_oU`Ozkj{lM@x zGXn1U0fe}g>Cwgyrnl44nmTe%^sE^F%BH^=Tv&GDX&dhfO-hSLp62&H6;9^CqEpcAQpQDfagys(o?+_PScL+DTX`QdxTB*`jT%a+hNC zJ=mete4UJs*zj1zF!!0j8U^hfP72GF6d0R_h(r0>d3gn9W<7qsw~9t|fM52REz4k> zf)f_;3U0%UPJs+9!QKiUwKtfC&>K|}mlMd56uOh0&Iu!%9LKs&Gl>8PeKcd7%m{p1YzW z&qJPt0~tRa7E$FxHlnCG=imQRpWhuUmaX#20(J6a9rn3jj`mrPyyKsUtnRVKVW zJuGFbv~_KHH3t_JrP9f(F=RKjm*$;+hLw|jH#+frc4+7Roqk`LdXh{W`@Q<# zZxslaitxvoyWORERvrB|&i8={HJnYiC$U79HfK(olEJ!PE6000iGJkD`K&;&;lncRGcC3);7&KiZRqDI3hYsEF~wlE zTiFClxU8?r`1*ZRrDIG#f%dj6<5nn&`qD_758YFQhC;iX4k)92q1umiB-hqXekl=t zZh>j?eFG_viM0_c3IgFPOX_`k`(*Wns<#h1k0T9@G?blR7qWdNWDt3bO5{Ga>j>t^K0-CvWFtKdW z+QAWYMwJ9x?>>(gg~LZ`EIRm~+(wgtmCpU%n~wA5mqHL51V!`PmMPX>nZPeql+z}D zFY^wdcY9OxO@l98>mzvqJ{K z#>8k_^73r|K3h7q=MEF?HRC)4`)m4P9^{Fvk~L{_bq!o~ELo*GCoTuXHPgoCB3|lQ zO`%;or{hEG;zdN901=apuLypO>C9D9^*l%AKp+0{w7Vao06&m*(J1X9w5J;JI5`si z$P61+uQuN&w-)unvO^dD=8F97cEJ<}wd>^3@}96eEt{;+>Ucd8PuoPY{P_LjO6_t9 zG{kggI>AwvO0)xac9{Q4)Ts*Mgvpd#6ZL5wF5!pRxPS0!Q|1PEC$NnxW}H}AG_BO= z6qfn^n(po^mw7@i%WKq@JbF>swz}3X)=6|1s;tu;yNmUTtNRYR3se`hHx-2BZt?(% z=Ym5F<`qN}m#!d2K1Ty>K8I0nI6?5$Pj;S?KFJ45y*ZqUK(sj=t5SZ@u6mB&Rx#Vd z7mE#;zrl>%pu1#_Z=cP_z2xmdYH?F$Gh>`O{Wkhh(%Rm@8i=zR+X4)Nu?F<(%2t=iDYOXzjR}qRhu_67wElys*;l=4t;sn46I7Z0h zFyq&v)!q&YM0G!`3*L6lIsoLz&PBPIR@ly1L)h-fA9W%Zd<|TCh^uks1YQXMGlec< zR}+3R)w(t0ujJKnSd5U@s?Y0!CtKpO2i@tYE^Nm=eGRhh&prY>N_;1tLUv~g#|h25 zbA5wDed}bJ`zJ+3b2!JlBN7Cg2LxjJnupLUPd+ZrUsV)&Uhi!n6xVk{v7=ZK-W*BE z!u)PBe6?%3z4?Fd^h=NBk)=CRWwkl7%h)BS%Iul?SCqbQ984|gz&J^yJz{0eMdgRk zNbZR>Xe_XU3av)uP+fCHj>9WKEmS=4&30J8j2@SxOJUaAOjoR_g7}EHqFo6C%TcBt zA@ONf=r&2Uh%{uwoF3k1NEYh47k(i>)tQ8>IlDu@|Mn0$+pz{WdR87HgQ;K#2*-f) z5%2mdyzC$0i~kBg`4b+5FWgn(!+vKw4|?Ni`Mw~wnAvFA;v$x-zyRJU--~)$%q5DL zT7h|=a2{t}8tCcK6+K^uxxE@DUu)@y(v^u5(3zu2?t*-ORFz@#JZH8j1iSh#(EmU5lp;TxxONHSt4KO!nbHy5md%uwq#wI#9ycj!!Yl+P`K?HS=)(ZVW`C?+1;lwX+dKQ-@OobJSrDAY!j zPH((#nQja!`<36%%R__R-GtoyeCh-D_dg>5pngMZRQjo;)CfX4+_w< zv@+odCyp}n3b@q!I*kt>*Ii-J9_wAGQc+qzv!wPylDjZ?d`by&vp!QA>3{Wbs|-fF znzcRy69q#J0uxK~rFfA(Hv*shD@Q9-nUs5_3g78(QCTrTZm)oTA|8PgP0>PPLU6sr zK0%5oa{yIf6oGro$VEa+39ytj z|4T^uj*;s}yO^L(zgG3B!f_w1GMF+g$SD>g8iF#|;?>71(-#X2?{y5|G1r8aM5@uY z?#t*J5;MdYX}zT;D2eVl>ZOI%<5L=tgc*x{Cl@qek5JSSfU5!MawzpWE<9P%f3q1x z{0}xRm;X;T%2D?Kj%$jQ_{L-N(ppPRFw!0K%uL!5|_LCadqC1iD-7t^vW32MSq5b9Nxy}#P zV9}=wmW&b~C;F?d14%o=uv*X)MQH8xBN=Q_2Gt8&6IAS`mfoXkO&3v0U!I7Hicm19 zJ5!i%I&fC^G8~y5r3KsdWPef}g53AS1Y-|jHm-JBMZ%Q8QN`igHT^!mDio`Ie~AET zJR~mvF;HTNLDiq&$a=qE^zuioDVWa!f!d7%8X?6W)7#?;aduAz^|1wBbvO_T*TNq) z8`Ads&Ui6E1$?vBrHOFp1FyX&Et;(IWr&cd@)DeeWH2(4jnQR7zk&L0WNL zr24d)I;@CESK>x`q&OZ8Vy`2K|IkQMnW3prvXU?P$M+iFAK!hU>e3EA=f+G|xUTHD zfBP0213&^UOm#j?^MPSQ&LKnc#x1Dn&F7J0EyL67GME3M@<{xTN+p6OfXV^LKPth1 z>(dNJ+JAX79vO>Z+Q0-z0K2?`js`S+f`$d)84=QjsY|P=!-<*l#A{$ejov>@y84{| z8*ziRvmC5MZNsu!UHY&Fa3sLDw5KSIsgajHXdm`U-n0$RXz^{%~)JF^>0*?qLCysVqL%86VgX1T?Bs7Xo|>L7c# z4a&xE&2I@B)+V~BhWnZ7!xY^XS!1&Y$yjD|6=c(rS&bWnL7b(&Kh%!0mh`MET4^W% zjftFQD~bt&#y0vB=KEQIpy|JZIRAH0^3);S{n5=JSGW_(@gJ(RDtPNFnJm|gCE3C8S9=_|asoD?b7;ZE3Q%y;f& z(;AVMe<@)fC7dqLy-4OVJ7mI1d11o&x59k9BRm(uEYzvL6}tX!g*REZp;PfYRqUP$ z`9kMqUmV9A%d{bH2J`3XMi**|zOWp6C=ZGBA@o%&D?@5n8@`Fu?PSNq@8JCzp--N7 zwt8qkI|Mp&Llm$iwL_6CTsLVK7+%JjPwtOTq9^5QVoDbepN}jGqfD(D7#K@S*L2xD zaUrIif7f3O^h;j+5R2x5Y`E72bnH`f5Oa12-*YY*eX3g;kJj512#?Avll+G9Pjzmf zgLebtv`e>s<||ga8uaOK(E=k61cb$fbij+PM`iO5AcNk=KuGd#zqgp#Qna?&C<*tZ%;X4Ws5sT<~P&*=lE;*ES> zN)`{6uXSMes!RINty`uTDZO4cD71YcWbM8>>FP~;M7mtGeJBG4;eV*5{-QTZ!g2A=>J9SYCHj;=3)PvdY%k565;-5H*%x9#2jwM!rRw7Q}X#daZw zmNvlcH<5Z^XA5b^nE+}eiF=qDf>hn0y*jb+p6x&ayHV*(-JoFCK_AMWS$6T4R@8i~`7&Apat7Wnx8*r2l`A&*@9If0PqV4LFhJ9A^gs9iK zR2K^UWV*7ePp{otj^b#|Dz+DZG!@R9rRDHk+y*w(n!6D78Zu_t?u&l#mD`h8m-44< zsfLUVy3@r4K;H}3EqW0lk(~jNp{`ES3Y;}Ji(rGfzHHI-6Izm6`5qW3W&f0Bz6j5; z5S;f_fv%TU{`j3JV;MMue0EdF_rj{u z2n_1(uEQ-xh*f6!ZCIp~+akkw6IEs*tOR;>T6u~?cA==WBIZZu9&7bGzf8tL(+j#N zE4=8!xR;5>X;(v7iHm;;G;2qE?(6z#9w-Rk`vsXPl1w67&-HA%YzFz4N6`h=0t=89 z7M0uR1=e5X6@~P6+%i^OcG(xK)vn;kGN5x!H`@Uzo|l3J7I=9UAX7a*kGosABLW2F zdc0_`MHh^x?0B6k5=$h9`Q})o%`^PZrI)-9SY zg{Jj?nv~Ky?J5rc+hl0+ACsK0e@u4S{QsHcl(FiW={RDo_63+kEwT9Iw$5q8!!N`{ z$L5L2G%z7|zy<6mH-v8-?ysF61GjBb(1G5GB{!i-psQ<2(1$M39JP85VU0f+-&TFw z(KB#-cK5ZMRp0^<>C>1)TF{#0(t-kog7I24MtXE;0DY(c0t2%frS0TfDORf2qlvU8OkU)g{tq3L*qdvji6{4yR6xB zAamMMo5L~W?Ns0y>^ovjuR%IrDfdDQ85;F@37pu+v?l8yU8F((43l7^0jvw4VZeLf z0JP3OXzoJQkeZ>_f6y50A0VcNS=3f1)(2tBS}VR|w%J@YxC3uP#9j##{XTv$WZL_^ z+>~yB*awS5h13ZY584Zh#6;K$gh?8X`4jveoPm<<;1{E=zX#kN_(Q8s&hZpRzwR=* zu3(o6TW9b2NYW7Om9KO#W`xXB;F$GvJ~RT$Z=vcBAVonNOJGMr9YVk~!yTAj0)=4| z_7qxI{tRZ$pcCj8s~=XHArtbJ$gG)k;@{$;h5m@c3ceD)wi+EX+~xXRN5C|I-{cES z2>#~+*#NjewDY_2;i1WW{F{Gq6|L_IARb9FQ zaSQdtVCZ!#L)E3caLb&AG?HEI03`3c0+76OD9F(O>o&0ePM%G!_CJzW*Ja(EHnp0_ z_z#6J1F(l@xO)>g6jQyRmikH*dFAeuP@d(uC?G1-kl?!s<4i(?qV~#?g9_)~KK_`| zb{)#!fa|^txE1OFj?u^#m$tyb1wRf3hK==)O7q#)EkwXCdEH~#fnhLqTfTi5MsK1w zND&o}2oz9lrLZfRu^XE$YDGu`z8r?OSFST!tiF7}xd8f=HS6jo<-_??20vW!pezAny}cd4)+`zkDkX2YS>ax=%i3!`PaweO*`7iJaqChQV zIN?#K5#~gum(z9AHu0@hk5B^lt&$kkuESn&!1^B^8apAA^42`!qZQyIj_jFZl4)I6 zobfj>2=L~%GJK5rxdKmRbx_zj2a{J7<>(E}qZMzSO7^rJ%AdZ!VJOb1!k^QDY{Q>j zW}yb(>$sW2*n@$M+S2z%D*&~MF1xIRa?1j= ziE?{ZfE@O`$Ji5(`DCp>BYj54-1Cr`Qo$mik_3W}`J3?mZz_ysMLSqP5-k#| zlcl0Lhv8?vxh9#IV)lAxq0`wvhi6k4a-qzqO#f?>~dNLSD>g55W17JHirs9 z!TFMsXFQxDqeyJ@7%bat&)H87`JMgnN@7tn0&H+Ft`%3rFeeln*(5MP48gaQ1SnhS z?AJ?$t>^+?yRQpffyz$pl$g|;1X~rh;r8gWoE`yS7kXDyZiE=NpuDnzY71PaM2@#Y zwrDAy{ijAXi+fUibD&rlK0?(AboR1QW$v;F8UHsV<^41F@Y-Y+2WO#|BS=2S)o<=-qWFA6RsQ?e{1JC@l~Znc}C zrw5kcJvSoj*7qXoWxHRg0%3gd7@nFP(K6`Wci!?!0}1+za(L`1aX^)?7FJ$m(r-Ku z-juIcns-BUK=1ECsGst&Ghuv7WCh0Y((bqi6TB;3*mt@D2`XYM(ch>aE-G@TB*6u~ zAuC^jtP9Qbd+fw|@20)Gqc`y=@3kKh`dGZ$B;XVo+7 zZZB{FWdb#tr(}XL>q>$#>3;yb_tho`#r_jm{)e-14Cd4@5c=EQy{}S9=QgJR`kOS} zQ~t4_PnSQ8Z`p7OfM_AM0>{GDnD4)UqX%JpQxoUPcfW!Qz$<~FzhTw7y?1))Ty;MS z$$<+*v74?b6*n>of(!U`?Icmva!dnSm0*2Oxa9R1@&K;u%XiIA?+P~u?0!ajyKbco z;g#*K2<@DD0{o0D!T8pw_stXs5&)#h08(Pqxvk&FaOE9(3lDMD=0yGU3;j;{N(Auh zi0eg{)whx2z}(?~7W4m_8`r{T!(k1|@qGk9e)H^Hx^@8-Wd;|p^LV-e9EG7)elEbg z*jMup>AKEK@7HCE8CJfAkSlbYA zty>C=CU&>PgxkXYtopGZg4ZQUYp{$lmD1pxy1WfPfJXX8R8Vm*QE@T(`(k!E`>yHx z9ab7}Cyu~?`mQmimFxjK{)6zs_M7frcaSk0#gn?d4%#Nvz1RBz3E-Rv{L%@#?zy{d zSI^8~BhWE!$T2+KJWZ=I4>qc@6r8$^LVx!9#bO+YIJeRNCxC<8AAr;FzX0qX-2xB5 zMmnHI&U^7=R(IUFtFmP6J57V4K+L#v!f}Fk+pZr@5OM9krFZ!sw2dqK9}Ep(!Pw(^ zBZ2l^^Y=OIZCCw6fmYDmAf6M5|E@c%)kr9+88;>eRG-7a`5Xb~b`rA}@Q6clInYRC zbpotC?k0Kq-}J|<|DZ25GUMF^2be$FYqRT!1nxK*V*Q`tRG=dVPw#gah`8kbAlN;f zzHT0%XpwqxlCbK$kP-<=$>OAR`S!&Zm+f5%V@k#BQYpo5+j-~})L*N2g``S6uhNRA zFWz2Fz)FLL zqg{z-W+?-KM8(4B?FSPl!!Kb$yal1rzqBJG7niOol%CY&jAZIif^=X~p-)k=wf)wn zU6UHkrmw$m#H|4u9X~}88N%RLd+yY*=8o^)eN~M@lW1l#G+e@~3UO)ot!ffXl^if$ zCXW@!Hz|ZCTTG4zhF?B+(zgvw%2q|GYe1^6xm(lGK44>+eu^5Jp!{Mh-PG3CpOluvuR*vNQ*Z6Ew);vMW#wVGam77<52~-eUzg9g_&mJ zzGhrn5Fsh~@MXaiqFJLH(?%VL1{Et=J$<^$8tsPJwTo^;zRsyin$R^o*(E7C`t5qu zG#7Eyx=^x8nz-vIDKis=KK0DR1Rg6*JzaKL(8wg`Y{MxYq2s)`PD?C$8A`w+hjoGRafzqOtplG=C-RBel=0P1>Nje zJzelO3e6cMP2=!|^<>Q`GtMlaJQB5BhesvB6Ned(`b&2Dh9-bQ+99T#dGLEFF6s`QBJbl zXR6`J;dKosqU8MOk$NHXwG-2}1$x>1dF9t7JI%7Z#UmUV)p@Pub~Dxw&i$M79qNlw z$xa+eLcAe5$15EQqSM-kY9l|$gM-22HAIoahVw-3kF7I@2w%`AmDxY~*qLF|`U&Q6 znkQ`0BA_d9uu5kfgWVX&<7N@#X1%{^210|OLXjg$$F-E1c>$M__}dEhWxf{bQ~FlA z2!|xpWLT5|*_BJm=VQv}hp>l(p+iw4DHE0v`t@2N1%f}Qp;T!vkt;*d+FeWy*)_|S z$RMk!;nSu&&vaE9|q+KGvo=wX5+j-po3Uh zBd(SvF{+KOAfP*PD0hbk<$(x+>*NKZ$GhxlFP&N@q%W=VLr?*BRpntfm z@?H}Ozfq%oSq+98&zN6a;X5Q^sK|^HHMvBBic6BQ-KRl0An5CWuoh0u+&=^no1v)b zAqu@JJX##{S_EUBI;6;1_fk5!Ei;cMAP+iGoBagpLYwUc+K(2_7rZweJ<&PMB!b34 zVlP9*DYL<}M8ul}bWbz3iVGUv@}DeL!ARC_XwqW1jj&kx0ij|d(2du;qzC=FtK_nP zHL6&Vd;=zPG}^8g5i}K&Vi_t`**S(KBGpsjvoSwL_oXah$V;vUNf9I9yK&P2;-h7i z!gygH-5XGWZvRoE&G0FdH8fYAQ{Y5fbx<`2-K-(;7sME-}_G89$RR=G(euQg`e zUkJRFfWF0n!5WncuAv7A^U<|F`_7}6@0e+}>Q#HX(cL;Ln1R1y#3O+ZQnE)3&B4BnhAd=7|< z-C6)R_?*Nh0^f1PWX7Y95{H53rQHumb;%_zKMqLcD6)TExhD8T{O@!7`W}G`Tx>u< zPPGs~*#CWQU(LeVT+Gze#K`&YBm6!(sfFSV=daJ`&8I_hIVnIyV-r5pC?LbS69?Dn z4^RA+m5VwVH3_HRs9OQ2_yu$QQAT4WMuX3N)2IZ$#I>_HjUa?QefWL2dvw40v~N|j zpFQrteX>6t*|z(x^42Wp?)cqa>K)io>};MtMBX3ldo=2He;&;oUSxhgUw*!PoVj(p z=gv%Q>D;{DUv$*gB3@qRJ^+sPZ+C6*@zUvGbo6vp;kRUN9W8v=A!eq!Wy4bBX0O+EDVYwL2`ICOFx$h^O>xc5BgSX)j= zlsguuCg8lS)6)yhSE2YWm(m-`n~PL(Sk+;LUf%wTH#^N)so|O&*C~mIxjW!()X=% z+ZvM~H<9O?=NrA)&v(Dil`WkHUOrp={=?Ftja%PTd@kILj|M(G9(-;B-cOe|p6#l~ zj*i+LI#avo)-y`i#zYw`1|k0 z{ej~vuAc5$l8|36@N)U^5-N{!(ll$d@_JwFpGyyJ$y>v!1+lG5PiS!wP^9qT-`;E2 zwwiNCq`uIiA65KhFRN!Gt=nh7Mz;=auPnY+$lRst!eNx}5HmnrxHS|Yqp)7>y zD`i91%v7wy^*B7F)z;TG8cPS&-Ew1I%LjVsCqo1GX7>R<6>R_Q_%x_h5}nEZ13v<% z$fFC|b+2&#pz!s3PawVv%`+)zx8ZK#yp^_f_HK3)jSXCdHpm**r*~D}igm4tFa6!o z?uk7Siq?aQ)v@p}lf7Ya;Wj+Mm3kz&?iu8m)Yx0jF~K!Rjq5?HRH$?f+K>C&s#Xn? z?31Zyg^kAN-wbKk59pm9@kFeCX@}XA)9N>KW@`9d7$G183yy#q&d;lM#U0ns=!6*k zL}L)EmHUK2qFN1JHcY$ruKw2XD;>J=vFU=Tt??dhEe0M*kLmq)!}4ORLEzVxN85Jo ziXWrgys>oPZsTWpAilCy`7o-)OBNES693n)J{JS2ryD!c@IURAoVx4w{U+PoYoZUBN;R08av`~}!Sa0b{B1=vv~(gbevZwQy(Iln+Sq^7NaaUe_^f#7}p z0AQ^D;QBYEUm(Y{NY;R6(12#dy0w)(WmAYA`}vj)NeJM)3_pAG&)bCpOP_?!mO zI-nUcpxK8scyqf_@n`t^o9l?*{(FRb8e}h(;<0T&9`19Vw0yLUqj#W#C$uQalao|B z3EObDI<-%BgAd|f8a_CTZl#fvrQ=)qMSRwUhbbf+5vvWIoT}|&mM&bLS6#eZKOA(eL-0cfG@rqq3=%Ge6gN zy(VUV#3izx+uZG2W_k!c&0b67{JGNdDBIsyel$E|tzi!szpkX< zO?a-PMChMKx}0C(&%AEF&{Xh+6heaG|KdJHy|_RRl-_pbSi_j*#5@Qy;LS`&kul)S zNH=ghnG=N3aVqIPH36$72HSsmHU=7!&4je~abF^ga=S9X@G~T!_pZ~1H_b$wv0}~p z9v%}WXJRD7MwkotBye3vc|gW3h2E1|Z3 z&V;K#y|+l*2!Z!OWhfCl=OA^*b`U#T@cPXA2MBBliI`waeRWZX+bb5Kko^t67yKl* z(1Kwu{3-}i(J#mZkLsPQ7*RZ0cpnI>IQAqL6J7$-CTM%9%s0&|-K})R5{M#wS6$HB z>o|WS%iD1IZS9P>$4*Y@>ggQSgP5E8m51Nyar z(*(jn(8+gQcAC?MvHTJ{H(WdGa@KV72`d9fC`CkOnJ-2-c4Hi02Bdx?2?+Q#-9gz7 zBW;5a&O^yNj7C%{GD6-tOZf6RnKUh6VjFGTD6V8_`wsHVw#wD^Ud-a$6#f`_lW5Ot z-ATykh_lC-(C@sNSp4DQM&q#w?~K_4jdC(q?V`bx=^TD#r3pXKYg_YW-9htNNM>!p z`KYOl$iptW5uIlJG%YccBmdL>&~$^27O)m?^`Y{}Hcxr7#6nptE;y1KZpUu85z)S# za<7@YRjY?U!A%mfb)B5J-rbn<#mQ29a_IQ?D-&&I9pE1vRNjR<@jbIwb>+64OG-Wo zR{8o;zJPULwM&i=e5ZS~^AQ!8BFQ$C284UsM^=QJt_IZe#{}dBDca9hqghn~^Vdwt z9WZQ>o_NSJ%&nAP+{RQUHw2eC9jw}UF?w!(8FtVc*XnXWKRMQ9_qs-=8~q&lV(ch8 zLo1hq^F4X@-aGmL$_NRH+rnttbnbCJysni-1i`0SBGn9aI@;FvCrP=&Q6#n&UD zh0)1dH$=TtM!xGz+g1)9B7j@bdQ_#EgMA!(c-^kd&T{Kq7Jc-1xunyXP#b4wmm?&8 z*qvfXc7C7Zo!b${2+T&C}F&y z)q*3bZo#;F<>sbF&u%@Pj-m9y$}wVhC^B&)@e}U2gYo?87cJdYl!_zy!acn5lwXB- ztd;?bw?!-Jk#FwKhWR;yvgoSw>A4B5wPqvul_nk|+=?6N37^wb@a{Cur%Nb3kEaI; z+tec?G)|^nW^T=1m65?Y9gg;pYg_6@91Ujf0-R@?TTAv|pRjg}I^+u3@+OS9>&=d} zx#sJJ>F0_eM>hB?-}JAl*5X3f>5q<(p|`IUaed^awa?M6L?aN4}t{_;Lz?yzzi zZs41+P>ffB4_vmfzsujT7;3pz7{qmMOO&Y*)N(0433tXHm2_70&}hC-7gJ&%C%td@ zjtgEbSa;@1Qi#ZpAq{~7MXbW-x!E$g9x}p?hY}cbM@yC99U9z_-$4J_dj_U9$dQ^Y{HIx z_=@;>$5kq9n2`~JEJc!-5GqLg3jx`#SJEvgVt}C`qR>Dc9;Tw5fz)qrShrZ5D%|s@ z?Wm`e@PxowaiYT1tD1`<2z1vPCrv}8YJ_%7)iOJ#IF)GKC((Yv{>YHZ4Up5u)SAjG z*#iR==m6%-aD}2^3R2w4CG12Pps}~6G}2R~czV+2TljwPZ6&}wKoYkK$`sj@p>?)$ zp}ofQ?cD6+5hb@_6f3&*)e0lsl7v`@$1fjE+f|&`*p9Z?89T$ckV=Kj;MU8G$ zgKGB~#sza#&mfzh9vxHAyj}(dUVTQNHl;x_#v+s(x^Qr=JS{sQ03*%7dF{jrT(rcb zUjN|bU!NRl)M8_x`>%c>3=-wdxpo@a!ozi1(3iWbTmJYB2KX@{{E$>k4-03g?$hbA zyL|zJdB{xxKeV;@R_itkH;)E<8iN1+Jp#MVJj`Nh`Hyzj4$exrDe$(qb$(rP+Roj^ z7)kgpDyOrnO?sEp^eJWVt^@E($d~%S&R&oto~bXuG<|X#P1BLkpcrortLGQua+;8J z30^juOc``Ems>8)OK8pR*9V33Hv*gD@86?v@!|KE)m%?02wQD+2jja|bP+w4EZ%zv z4)MWIH}+PR#k(sWbk8FamE(8L1DJ`EE8B0*VU4rYT;EZl40`juB?V#BEb|mj;c0T? zZOpy88yKM$3l__`9C|rIV9HvC<~LVWd0@fLrA<9P2e>Il@8@BkkI&ivT%>ke$?ZIc zJJ4X5X=S+3V6(B_T$dA6#;!+c1syFSUB%X^vV`qvKVq$n0NkrkTTLxNY(uy}6Z`A_ya$RuFO%=>EU zaMy#8j9O<=D|^~mZ@agfAiSF8+#jh4Hr9WnJ`^mrafS7Yv*=!%(f>d>56|!A-&_v^ zTTQiKo0Vx{KeySI2EDhkag_UguHb%g%!5shcP3QO?LJ}&=OAUf%4j?z56Rc=Uc&ST&Fc*{&e-*P%9_{-7RT-wzfuy#tZzemHo zMJ=mUXAWV+5n2q=GV|W zj(NV;99ukhIiIY@C9L59Hxc5TYG{Pese^^3v_897nb(g`bmFKyPc!@++r=r!^_DPu zg^xwAbTBphVvUs&C~2A@*&NP(@=9mv_E4q%ngYN6`*&i$C)*0X5j5h=KqB<_v@_+< z)8Ru0nlJBhT0<{;y;hl=IAwS${e-5gy2lD0huO=}IclM(qLkV9u}T`*thbiiIV0fv z-&>Um1Tyr1 zt8js^yT~?r^5fkzj%AJ<A2EGo|d zP+L-Hb#C(GD;R$kTFNX%U^U3DWdIbA-EV;kZlTSq0H~VhFJHk1{Gc8~+egQ2q8AMJ z8^wMj*J|Xs6eD^!0eAQN&H{Y}gF;%$hPIi+Sff@xOZkRHgvgw2zdS?5a9wE$h2&rW zbK?(nn%tArP5a>ijfcS$u-jscj6W0*?06TVqHHfmnow+Ld710+UW6055D=JIHfOjU z1~vb>Q4kP8BmQoSAQxeB@y0I{H`+?glgliF!_Uk2tl}6fX^{=-TF(u*N&JYK_yQ$TbQC^JT0>ML2)tpbDATmGW#?7 zY9w_-A*sF$Wr5yTkfy^R0b!(g6BcD~P18(}8+4|O0FH+L?3#IXFrel;f<;`SOBX>f z-mhR}0Z`jla}N?zd+0At5bCW-27@~K7BrKQCh5Ae}BCuCBCWhXzDUOI1N7F}#dHl~E zCWA}#ICyP)cYh6-_f1-T0b~UnTJ}F$4$q0aslgy?;$abSvYtG2qTZ;t%{pI*6+K>? z62NV{b)$kHMzCXH;6_qogFlaG#QwhLAHnMZ+V=;h;<@Pc?)A#-M#6uihW|a--?ahUMp`A>Ojf%|hEp9OE^d)SL za;T9gcosWeiMBbh`HA3lP;(* zK4fioTb^A$M5oqp+L&^sft+5cN)7qm+NippC&GIN(z}+21WU(IUDX&%=M;wEdYdy7 zY(-=gTy*!W^}y`l>go8Z-{3~eAbyK3jxgybt$PZ0j~iDcEze)Q5lM@guVM&Vos3%V zJa~{hF?vcedl01cN7Tu&%h&O+5*CjV_jzp|YN40UTX*c+ccZew1L(-ER2s+_jjAwFRBur)$6h}h()OGLE^Y)Z(({pGX&b1k8l`BP zgk@XL5m7`4VU19&M_dZ0eEC z7|?-Ag>@il+IwQ%^Y17vi}(XuBq?z;&da%%&*LY;&aZ<^U%zU-=N}`sdBnE8T^aB~ zeYuBVEm_UVWBW;JuYiA7j1l*gC)=N~`r|bQZR-wz*LRYbi5yPPL`%awPR}wh)%Z2K z$K6rN`4!+=Qfhm0>gDsw!*hA1i)BxPuBW_VX!~2tOuL~LpD?ht^Xu}c3CyF6Z+DY{ z?=>|$MX|K@aGKIjcvN4eJuaowVN~FRy8nlsWB9#KTHXKDW9^A4N!$Q;azdhhcz0uX zl`FQMc(=W^`-$_Zw+4<kax!i3YNK#woU9YOPzn;@^6Bn5EKC!i9wa(U2lq@V)= z_uo4U?v!3}zO8#IX~bfZ=xJ!HsGrfr7sP;7!s$G4fs}CdT=^zq);$Yo^4qk&lrlM4OF)5)`M0_{_pvHo4d*3#iF#&NCbfAwX#2Rj2Ieo$XD@vw%6jb;?}0g4DZWU^+Oq9GJ`WWvPb@7 z+PtUt$-Ujjw(}vGMQ}!a*tCMW3U<{2)$F)|WyUsG>%ORN%O&zkDB9O6f`aFq{QR&W z;`r(Wr7q8vn~k{mly0Ys^RDl2>*3=+gzCRUfn@GcfqU-O$2o2a*nC1y5wZE?$RYdF zMlndywR_tFp9Gzx5h=@ipNa|R+@ryQM8FZ)Pvp?*Fu)dt5mc)ISt~p;PsXM6Q}aG0 zy)deZ+}RB95!5TL^zwH7BIl&=w+_Xu1AvY<`+wqqyF=5S zD<=)RLL~BHj8OT@N0i^-&px}5+y34LicuIvalm*RONKYxmx5wOG!m zG0Vg8=kE=kQt%d`Y0gHCt2sdqUy2gQ^A^hmSAE5BtTn`npQ}qc&i94S4!CM5V_kOV zrk$^2fJHRtAef6$?Y+5%HJmUGVns9;yOs{M#}%wm8;vn184XbVK&=*`p{+!%t2xp8 zKrQoD{TsC(D?ab|4{CKlboWdO&uu!IxjF_!5GxL%nRwY&k@BXTGPRc~XmvoIf)B?c zV;;OOO|wWcWDsi_6fLTGAM%KX0Cg+fLJ%BgA65{ny4QT9JiA7jJSC)0u@=`MqB#bY zH!G@A3+)06-@m!a8xLle)q++-=)sAHSyQ!NC=f35aWcKTk1 zgw6D!s1B$UKi8^3HCJH>MzP&tig1CUqqDl;UZt=<1uXzr4-V2#9od|Ns*f`cb(>&; zzl^Y0hWu){5wrfnV3<|nM4)U-$i!s=E1O75d1|C0lvPg<0uVeLP3KO3ZXC^ANrFMI zBoUsg4=X@IM|yt5DwK5`0kjVb9;%*X!Df!lk-|LnE5I~C1(k1UCm0I#-x4%)DQNnz zWc(6BSoQYE%d_IYqnq~y!0N&EVbOLS4;H1;E)=043@Fj#Is~zXX*CwC+x=g%SSaRi z9pAqwt9VOP5>UReSba}DO3T@ToAI>xcHn-=@xzw`lA%~9qK&aQQE_*CxDRcw998)` z;PiFDubsE#3&K;qsQvf;o)Wrpwx2Y&tL}r!@o^5&YPl^!;e=18G0V=v?k`3G<+iyo zyzmdZDX=r1X|d+38I4nKpp;eo6)9PwY+`DkQR*1nFrjI2K9apUB@|9ZB_?t~I6wv# zB}nR~a2wT?Lm&`W4;50>nekan4}#BtL|!+-n+!|*v+)iA{1bT+oRItuaj|0mafpFS ziI{vetP-OerZjG)GftSK9X{85XqM72D&k0~6o0OYED28OZwoZ502V}lLi?~_yfq~DiQslAbhF46Db7_zzCUfQHG~Sn zaQ&N7HTgqDPK)sL4^+}We0RVEs`UIQS_eU|xAS$Si)zLiY~ zB^HLDBp>pl)+SExTBkzz+71&PssJbh=7Pt>4V?j$V{=6Ri!u?&KPhu0O&VEf^{42t z$q9!?lE|WR@)~D9h8WIpF$+cL>2uPF;-{sck=MOgj#jC>Esz#bdG08*Db=|MAdk%R zU>HN%or%$!*@emPf=}<_8(YH_9`6c-e_>zp-_Bc+*WkB8vm%jK?n=%H)kT}a5?fu> z&bw^#M@K|qA26?Y+otp?{CPQs@P1_ntb!{!gMROVmm;f7}Pf~%3 z`jF`*`3PrZ%mLAiU@ne)E}XnKi^VOjM2UE&Maj<4``)mI@)HYvBCpz#mq~{KFDRlV zSM=+I*fLpIdeUn(gda8(`!f#}6#G~Hlj;k&Er`wNN)%k7+!*#T%Xq8PVLl0}b(>gQ zm#2Wti&D^9fBDmJzuub=IKu%|F^(vkk((rV5ztBld0Ut;0iyYG{u6~{OYmQb;s(@H zZJO)qx}Z6xW>2vEJx4;y>Yqu|oRR(Iht{;CYzVeA1J-Q@aggDoK%fgRHf?(dU>~2n zz>y=qxO9t?;#e`!(QjSe`~!r1<{WhqNbW^ zQNoh{P#OROP)ec%P%0zG3mRp^6-~P?25pQYE3vMwcZW`bBgT=K&A!SQ=m(kypv37s zLla5JE!4dWiYCT!KX*b9Z__l~)aKVa`2gK8ad)~KO;9r-!c7% zQ*?sXP5J=(V%~nU_LoAr3=vBiOtA>61Y1jrqM=GXTVy-e$nbm{Dv(B>a+k2719PvF z1=XHlk>N?wt_>(ZCUTcUM~b>INbI(t>geJ>iDvyw*5m*gAKmLgVk1cT6gUY)k|v|1 z!Ytnt+_Mx}xcUkXFl)l_5bnnq;T8~Ol#MHVh7B5^cE=AdJ7N>w}^1Z~ag#R~_zXEtlVreLq1%DkZ zRVJ_)M|zQ~S&rXl(P|ase1re5&)m*ECRjCsC{nyS-hTSBYo-d&fvJDT1xgx^)H@)> ziNN7NDYh<1o;{;rTbt#)KI9zdA#*pVhZp#y;2M|(hdC}d<+rLpZ7AeWy~hsnnoG^v zq++P)(l4G1E}y%$N1j|LO=DUgnz9p}Jl$R)?uyQ(tm;UlY6Dx#yZ}~QZqJ;6cwi~3 z#zmb}9WbT}Gd;6FxzguQ0>rh|qvLa(@1}i3DF$xv&GPa%h^_QN65Wu-^T?^s`S`6Y%V(gsTL5Sdg*;44kyn^h*NA%2M@p<$Gz6zv(UyFJr#4Ro2 z*+$qj4&tkms@V6P?$ZCg0nZm%G84pLjO5vsR&P8(^yc;G3&$b+0(=EI%NX(qi1N0& zbY;P#pLk)=ycWa<2*meSAfDiai7QA0&98vAf!uxgEm)qHxfEk6-#O^#o@NMx_`EU+ z-*mv5Qy>Hw^o;#U#ehN|LAMc-YMsW_KDbo@7Y6YWyyAbA4iPvL+4)N3<9r`c!M z3i!VQ$&*3fqj(UX$NN!`jl=8Xogb~I@*f2;0%J{jG>g6rd<}mDeZ<^Gpp7jBTn3Q{ z@pO6NDUl%VNdwTgU&!G66OU~Z<--f9L5gjJERAUykv= zWS3q+lBe`P#W^4NbG?59`^zy5fr>UAw#-^SI^3(9BC2pGd$cRaF*Ub+nh#=2UWy-* z7;tj|vK0<1-x**;k+}T^{;9>?`_VV@-%6$*1p$*@;#nM%mjJwhf>+wh;>S0dnMEUJ>E`!SH7W7{(gIyK}V%5pcGaGv!aH^rfe+`cQX9vy<4J90_M(=sqyli=v7=g7}&Yp zW-#>H7ef!Vj3jzhJ)06h0}8;(okOBW>Rl5iFO|e!Y2l z%MSpJDPxcCq(^@p2;bUMJ^Cwni{;0XDc*0z!StK|8SINpA?L|-k7>ZHh5ziBq8$3) zbe4nHmT)7MF5F$p(lKQ01Jn2APo)Q$Js7%7&nsqEA<#BiewY$$v8*shg~-^8XWw8K zCT9(Cen^4yoE?(~hyOQFdbi1Tq@*$!$M~yV%Gy?6D#VKpK;-wrW;hxE+6;e>X@fBV zYWjZ6aT>b}vw)!t$GA;Os$+_aL}C|!7;IrPJ@=KvX*i@IHAvdN2j_V7$t2{dD#T}4 zo0QfQmPT)Ij`8nUVjSc5uz5wZ?y8V{?YL5;pD0(1d9@vWbV#h}PZVshP3Y5I9?WXl zDn<<{X(xlrT*b`!*QpiCQ0$KDNv*oy7?#^RFxt;3HfnW4&tq4X<%udp+&MK9vD>NZ z!({nT^{Owu-r~<*OyF@Zz~IOb&P~ya+*f(^pz!$QyF<)~vF3cM+4D27bRNy^Csz}w zAF+gGV^1%Mq>*%{gfG_>G=|tv+1Q$d#LP`*HkCTVg=u4~!|fWM3-3?)YWni)ev3~= zYwx!Z0tuZPlsiSr+m1T{Ouk3E6eaz`%buO>H66oyxx3|yGKz5Y@ra(VtzS(ShEhzA z{})AZn7aYXuqBBVfQlfD|>Z4?3`|M zQ+S#Ucr}cf9$ru0)f~MUi2bbOA%Ti?*$H)^Agg(jq_G2}N#^C;)G@$GT4Xg6Y_AV? zFE6i6GuiH|ydnIE_*PE_B{@;~C& zD{u8*FpT>geNPJ5>}RLlN^xTL#|Gi@4lVY3+Yyze+0aYe%V|)Mf0vgLnRebq+i0wy z2m;^Rwfm*Cm&cIj|MShgNq8?0ZcKnP+EchqW8O{%HS8hRX z2_)1g!jL%$smquu%Gp~ZKn%65gHe-@vp~Fc2E)8wK~Y?)R*)tax9Df5&@{!dmnWxA zEQENEbyA0O=x=D-;XDUY_=dILd&>*!tp4eO6W)6gBy3Xv~*6 zv=MQYxX;F?lLMzvn6*$iaj~POit(|3b7Et5t@GlfAh(M$C(jlA1T>v7-HXs0l+GO9 zUu7XDW0Y%yQVmYGKrFz?D9A}kS)mS~G^gtS7bPJf97GivAqPy%J)yjx(148#1^KIj z%r?b65u3_zXE5L>QRUpyiaX72kdtZ2NdtQu!monfcGg#PV}9WrD# zdX;^44Mqaoh&axeF>`}mk1GiUxg{kzU%At7tma*t;1;16=`@&NKV>5CQ8V#kMg1kA z_*O0l*em{mXm0!E)Gy3G7u~HgeyBMI;OupX=cu>?opl%;$=xhOHwZ9n+ETd)lPNU% ztQV1d^PiM|l6eGNB56)R z^M)w9N}!zK+kP1}+Q2%N6l_tmOVGXyo1S?_!=~RkBWO7Di~51>)SD1@>muus_+^Ae znAFg7g83&XJ`bC2VcPB9lG$SqQ4STy$VVyS?#@N#*z~n$FY(Lds`0=sgTUYXA>guE zyBkLY&GR<_vONe+RLo&pmUK4|VOc4XLVx3-=-Jd6L4rbpLJ1K88Ardn9UFxh@xc0Q zRRI}MUCkIFuP3qbnAsMkRy8|`Xk+xO#L4W`Vk~IqsD(omE0hB zrTL^$VS;nc3&^A^ne491Sr8O%(S+zF{$<6EC0Ky+b3KBp8e8d-1{g|D2!jq?# zgzVG-{lwWWP7QAdV^?ATa7pxfnBiJNBE6ao1$)T!T5LAP$6-v=%q#8fXRB)&VSb?G zTyxPUx|GhSsL&d+l=IaIa#*4>yVthFvFT|b=7enS7kqkLz`52UL@H>GMu8_e^X|Ke z`i$0j236QMHQ96uPyQ}6*ilw<8`&e77B0-ZcMfA{VGo5hA^8>1;whntJei~XIPvr@ z>`&-E?Dzic668}=>6{R;Pds|Y(-1#cnm(5sMt=NKn1>ner8>T2W}M*93`s5hau*>h zFEVgw*=R?cVKmBeViyqrL-^ibSi-oaDqUD4R|h$)86SscCQ7C*L0IO?;*aI9)a3Hg zNt&8)01i>FGh0S=C!XOrDz<9gfGCkpw4-TE4NVM@G_tC}*4L_`jw-REIFyFkp{dAK zuU9?llkRRJxFaERwcVvmE;?ClZ{da+l@_&K9@t*Ycg<>VVZby92%1{rB*iEZGPpZ5b^)2vw#JtU%VE;Z|02aibA9a@oBs0tUj<@w`9!okL4kk{p#P(sqP?MmgQ=DApLJIC z%4>GNI8Zt^3U!*cjG!BArFJNfNUGMQ$t(aj2>`1331oT89s`>#yFt7XGMr$Pbask* z{WQ_pVc$0>OP>bklm!>B#|uO6GYup}NlnFeGrd@7@uJJZkPsBYK&iva<%RjPT zmsN+>EE(7pk!)|zy{TR~KQ@@Mu`9Sa3I@!_yqL54v6%g{%&mR-K>luss=A!WnJzN8 z0MqH}&{Nd{(V1o#Cv828on^W>)uOrj*M}Y2TTWYz*nApu_#QSSax9E}0{>+N!#4Ie z?RLVZI~k`7)asqFle6BS|m6 zech?F=P@{L@@O>IEPt|Rn>29x+1Bu=6cpHf!7(G}@UUkxQvB0dT!8~{j8u8Pu%ah0mMANk7heeZ$3B&IlMOD0Qr9rOT?$K_eDmF8%NQ@f zt;YF9+|44>vr7^KHtb*v15NL%=I#a)ToH3Le~rQv9&>tZ0Kv|_b=@nTnrYnL1Q$cX z>u(UcYnI~Je#F(I*!UZ-o{uvH&e^=0plvD+R@sVMCQT$e)4KT58Mujl6Jz+K$9Ko} z6NU`NsEy_q#JcMcta?93dn4)`_Vx`K!OXaAvnJ2GZ$z^E@5P4Y>JF8`W=A{UdN|H$ zimMRf+?tC+S2dtlZA9g0OD4J3ZUL))dF#bGjbQP`de=nI`yS2DgCP5sumy+R9}zG& z_?#S!xqg)Sqso^Ux>rLV2#T<4U~@5tYNK|Pj*C_YbJ3Vp74@eeD75Iww{qXs42?$I z7HF}Z8CECux1Y|8(z&T^8wST(+P<(>oEoPIdOBR!8%UjJKbH=AB07$)NMy% z;Np)kjRNN!%Uuf7TDDkVYhKTtCW{-u|6E>qsJ^EN1Smn(0QmbT_5G&=)el2G#sB!g zhfj5z^)kQ$O}TaS?8YeW7=$r?jbXyTZH*IXK(N6fWvmA*h8lllBZPy{tW*$D7=qIub8Pu z`~VSftK?zKuq+(hB~_ehY$Uy7aw|W+^fj3rTcRQ@Q`Cx=3JScL@T*1&jtGe!=8;-p z>;;!|0Z}B{@sa7shSeO}L&yVp5c#&jL+eQ>L(k;vH++M*TQQCR9=ux1ItAM{nuVdm zI83#68MO98Ru)sg88%%S4>^nAT!*z~5Z&yKcmaFF?gXy$JRE0)*b|8(p( zXO_J_pf>bxK*?F;e>r9ZD21-1t7q}2K=fKdx79BOoPmpAl~+;;J|P zps67fqM~ZL=)$t0=>cWTbKm90e{LTQ(5DQ4LKOA+ypfEwx7t9jK5InLq@2*4UP|`K z-L1@V)!{p87<6w5nO;vg2F!33TcX`A6Ad5Pl_7y@7%T2n&~b7oP*aUPwo6bblpt1= z3XvGb7FYX5JPA{TPbp*g{D`G%(2CNKE{!mM9FvBT{Qe-ro;mj683rSkShi4+xe@bI zhyt}eH`q~-a6`Y(eku|=G6K=|%D|A7wyN^PL<$?HQNf$X00falzET(?dI*26tj+F9 z)~qw&cHl3f=0XFEbp2HVkZeJ+p1p=bI`hE-`Ic@4Gn83w>j>0 zX&Ri8M1hA*$6g+3wP9->2(5MgVv^!j?Hd&!VPbN;$T_Twlz2i{do1o-p}9( z$CtzovXeqr=?amOpI84?8aqyasA&KK2&k0`2nh9Ghopmvp`{`HpDp8`3TNul)+=ln z9S1mXez4ziVcy;t8;aDgM(D1g5o zJgax}ed}Mq+5~xqCz%sHtEb#HU#$Gz1XBrx?gAy&G+Eizum^*rNg3Zn8%WqG1iCxg zjAV$1avdEm3GWLTvp}40*1SsNg7_QlGCT0s!rC;{3KT3#zT+7Pko_B8G=9gX84XT7 z^h$kidaM|A3W5rUTl|ya<5*#vB*s!;p5^c>t}6q7U=IkG9U=KIWzLsc2}V(I;%F2h znjERAyI#I@Isrrp)%l|(XN;R~&v$pDsivkSDJGRs|j*MD=#6L@b%#gEd#3(6QQ>QRpnL8(z=44A0QACes zkOPUYu#k9Cw+4-}1gVFWg;Ymc@d+A_$(=-?38uR*W-e{~<{(bhYXufE$MPo*znWge zLdVaiot4DN?ov^DtuN1e^E-o;c(0mZozSng$Zz|<>EAq_DIZUsepqL?*8>g3c5Qe* zpEhcDYI-4x_nlN`zFuuFpIGz0-vp8iH^D&!imw8>1^IFx0-egqQfb$bV%3mlgQ9Pf zIP~J%9}0rg`P})HcArZTdJB8O&*0i*4(n+IH8HvrQP!W-1d9zO1T^irV(En{%w(4> z0X4>9h_6V$T!Az%kw7nb+jPp6SyB19#`5oD(XHm45J|^d66L}~L`Qu z%gsM(C2EGmAokqx`yqJ0tL}!h5AU`clOn-VL5?bK$w8HCLWKX@c2G-Xv}(=QwO;*2 zoG>$^9vFL6`St**VW^xwrxHRV*VN-5OMJ?mHwLYeD;DvuG7Zs-8@#VwTx$V!y1F%m zzgNEUx0E_k+Fu4v&#`UwZHO>=PrChbk>$QHH7+WoEt4p{FmPQAIrqG2U7L2C)NokA z*8S?#AD6YFY3-$%GH^7yoI7p8vl~jE<4xUZ_A4$-H5i8(10F=ApIo)6l@2yf3YEIP zH_5!FFP9)ob3K#xCzW>5ZOh>+NK78#$52i{K&q4cFxUD#qET+wq~li zxdrlkk+W;lV)}U?#zP=6h>qTrd zI=xwz;k&q^9(N$k_$uW{G1VIl7Tq(`W~bnT57Ab?9qn@pLCY=F6U^_^Dn8FZgoR2E ztp#yt#y8Mi!4;IS9gmQf)_*gdSD#alfA|)9IE=Vu!t%9&LBvIms@{=BpQ_b?2yw+R z9h8COa|39;MCdeUJo?3+p2Lt*>Gr=o2t9)Sc@>4$EOd zd$MlbS=ZAxBO;|W-_LM=(G}LDt(@OlvX|lxiL#RGLuqKqV1Siy)X|RkNgB3((zJL; zZktU~icC>EHR{PQi3=DGUjmwa8cIfN`#_H;N-#L1&(~5}f(N0Pd0rGM z(pAka%oyIZZ$p6CD_u~KC@)9%ezy2@&)`6;W@(Di+>&zvGjNL^lUXHEKSIqRd9Rqt z2!4ZvUWXhanK;6Lf&>;XU09Dkph3G?HnDCRBr`!}f0k7L($Ad=KJn7@wEyxYb66{X zCtIhA`+X~!2HGx?p95Y~a{|%!5iN643S_PtsqOqu&W0NyDp)4pm)$lONjwU189GJ2n zh_OvE++leT^y`ofMxD>+l76313zY;nvU(OQQTlyT(#~a1Wn2t7q-VMc2oBw|a@veF zQvb>(m{bEhzxn0=(#1QnH{TA>Lk`e|_YYlvRfqkzx<931!zZf&`8guQX1gq5ok@wI zF-5lOJu=AhR~y38sL6(){Ld|tV(T3_ilCTG>$vX^_LiOqrA-24k<CGlQ|Hn+BH z$Hq&ZR`CQ4wsq7Z49CEE&*!;cy3LvmOs;~31c)%3849h-hiMUMz9kVPjQVk^(&=Y7 z)|~4ZPo=iJ%{+AywvsF2h!EfCTI6BiL9bWarnLFuwwQYj(Nop6BI|Pm-X&GDgmmv? zE{RPdz9~z8lPYdi=6hXy1^H)(*0)MYZvh1B0fb}xL->beIXi0``#-&!9#w7S%YY*M zqoe0~dzdi`%mgJ!42aTvUgA5hvlpoa@rqD*$(x%r7pwl@j|zwLd2SrOJwGd*vMDO^ zX)+QhrBd$ffV8$wRu{I5}3)Kp-wIbcpE7?9old(2_wXsKst2bh)l$nM5f*Q~ZVFxoc?`J+WN z>w{xiz*y>X_?5qhixAh}0Fhx-9cK0s!+2PB4GLhn@&bOA}^TY;r6#jr>R5d_>oHKLZ=Y3D^{1vL|crde{*iT}e7@|2Tf_-|y1U4?T@pfD@JKp7Y zv_f>-cE+s9dK#AC+EdnREXpf@=*JEDotd^Xj+vIaVThB7aG^7-c=Y(Iv^?Yc%^}}B zy-C|Uo{iXOq3E*dSTJL0J%@7y3wDBV-4m)eO9M6GlQq^GTr- zgN9ai57BE&Ev`sCT06GqoD844u#L26KWFqGC?#zLMWyADG#wfRL9NwDUHJxGCU}!wyzN5nZc!zAwS$DcdKFu3tB_hxr62&i&3&cO$z?H z-BojT!eTgWj)^PMHN`73S*A4!1LDcM;PG>tUYdH@kGY^1a{FGN*U{w83u?*M4N*u; z%7<9VrNxy&MeMSfHpSkk37G0!)Q=ZF&(RA0qK{L4IN`L91^$8SAh@+e$n9h_Ac=KI zYgAg75yM4sR~8jvQ_A;ko(K-8Uo)9>D!r@X03qH?KTGIrh%Cc zP3t!;)X`1rYEyKr=Emk7gb2hn30k*&4%m1TTXSm+i>x0dQ;XfQj_Hd>xD1x_{UUo? zYoYrGkQZlTY@!uY%kIdbtG;k<1U~}bl3rAI{BoaCrmV1v<8~|%?M8U|L*KufU+u}& zEglOVM|-a64%l*Dp6Z2dR+}r3=$mPwmQC}Op0xA&vcyHzoZ!n-+zlJmM)0rn7|2ab zB-%V*DYYe}hxC@iGQc=^>P!f1p*+Fwpc$-lor#BM20}-nXL0XSfcb_`_2!HU%v?++ zHGkhN=)FrF_W2`QxD|$*bGYS_%nF8f=fgictn;HSA9|i&IUy$5-gx?L3zN6ARS`F> zlhsw39;Jvep@Sm)0r>ciRopoOZ=wN#!udfUE?~z34(>kOrU2&!tWP&~w7n(k&(8YNC|#j^j_#~F zN$-9o#DZJ#KgE{q1Dhui43bP#_5oM6Uo>~SRbxC9D{icC$oqg6YwOx(K+cp7OkKr) z4%?X4yVPk-fyLrcvYnB#nP!Y!O1vD%FsGS%&n0?Ec4pnP?+&m6y}&LAg3<(b3e@o= z*Min5{7up*eBc8X17cCh#5MJTb2g~X-n7w*#;i?Px`dIe+$~YBoVeCi@4%$mbA@*@ z?XbGDPLQt73mhoaqJOS~1g}jek(pj=3I8%A?y(e03|4`5&8Ms=h{6U^IVqH(WZT%j z`adIq!sy^olNvpe9YN*VX{Wd(T^g&XKwOHcQ9piSx#BMB5?kFr5);lgJ0n)+_UW+9 zRTp}3j}BSVWC{m@_I+~UCc_S++*!yawJP)u`12{t5;4v~(afB3*A2x=W#`h9?T9=_rsX^){o!hK#=|)i~{_5<74dYHX0bpGrQuf(fHh%?>=az zD{T7uDjcQKTKKYpD^{`=nW8U%e;~*#EF4BSUB8jh8qu#j9FgKbCG#m(2cD&jD(zcwK}Uz$5xw5oL4670C(>-!KMnH zwZw=1*kK-QMi4Er8blF>lN^_9)pI%JoMrci=1UnnZm$#ek;04Im)G$rquLl8bN4#; z+VZq>Sv_#@RngrtRRb7r_?yv{gSRfyk%W^ZxrQ3#hq=Gh;IBD|u`MOJ<)XuL%U!~W z3r}-V&1%8pm~r0^Jh%DJm!%N%Fe|Wn!9GY18a|h)Gd8PrWBxCs%=mS>MRnt;4U3o%^WLo zR1oDfG^l0i1B(gQv>=K=m&p0Jn?w6=_K!d~&LCIao;*^7Lq;_5cb`S-2u zO%m2&Azewsvg|9T7{%H>#byEutQ>o&7U^sVQRr^*p%a#bp+w8{$MpjU5h-bK(lp$$Eps&vAtl)0YBwwr9+7>pA zplRscy*v`d_kb{1P2@uazkl+y;KBUZLP2PeclSu9#RL0^3T)Hok%`~&fwj&Hm_%j# z)+>AnNo8-PyWR35uTs#nPXSX)?tQ_e$xnOmP{q)hS?u5DU-lAJ4vKxHT27=XJD9(v zjuZ?R2r}hrmp6Qvy#C(Hw>_3~$-E*mvEM8;#d_>{AmURJ!{bCI%Lwl+S!DSd^iPue003QC?W9|mT=Q;Be6zyq;M-PAbb|4eI)25=QO+m>{ z^({S44~ofAFsU>sO-=_Q)Gi?B_RV(ucp-r{5XkH*kPNnW^Rc`g=wa_|{w+Eq2LwX3 zRd<0)@jxCK{6h_VA}Klm#J@5AVQ5b-jE)2wIs%sr0z%ef!Udq^zk83ZyVqeRnq0m; zF~LOy{g$a=G@lXsp4OvGX306_S<0%QM`+zrWd zQX1&I8|aGnSmy@7P!8q)j{IlHFJ}Q=!TEcf1PEkdL<3?zMrsD4<3p0SPoRtaVY!lg z4#*!U`9qJS@KZY`CVRXjIfuMXdc;}q|H1jGh(azWFT5Pd-ypur$;vR~1oA?}5rHn` zJK - if (UrlEntityHydrator.hydrationFailed(e)) throw UrlHydrationFailed(e.url) - else (e, e.expanded) - } - .collectFirst { - case (e, Some(TweetPermalink(_, quotedTweetId))) => (e, quotedTweetId) - } - // Prevent tweet-quoting cycles - .filter { case (_, quotedTweetId) => ctx.tweetId > quotedTweetId } - - def buildShortenedUrl(e: UrlEntity): ShortenedUrl = - ShortenedUrl( - shortUrl = e.url, - // Reading from MH will also default the following to "". - // QuotedTweetRefUrlsHydrator will hydrate these cases - longUrl = e.expanded.getOrElse(""), - displayText = e.display.getOrElse("") - ) - - /** - * We run this hydrator only if: - * - * - quoted_tweet struct is empty - * - quoted_tweet is present but permalink is not - * - url entities is present. QT hydration depends on urls - long term goal - * is to entirely rely on persisted quoted_tweet struct in MH - * - requested tweet is not a retweet - * - * Hydration steps: - * - We determine the last tweet permalink from url entities - * - Extract the inner tweet Id from the permalink - * - Query tweet repo with inner tweet Id - * - Construct quoted_tweet struct from hydrated tweet object and last permalink - */ - def apply(repo: TweetRepository.Type): Type = - ValueHydrator[Option[QuotedTweet], Ctx] { (_, ctx) => - // propagate errors from quotedTweetId in Stitch - Stitch(quotedTweetId(ctx)).liftToTry.flatMap { - case Return(Some((lastPermalinkEntity, quotedTweetId))) => - repo(quotedTweetId, queryOptions).liftToTry.map { - case Return(tweet) => - ValueState.modified( - Some(asQuotedTweet(tweet, lastPermalinkEntity)) - ) - case Throw(NotFound | _: FilteredState) => ValueState.UnmodifiedNone - case Throw(_) => partial - } - case Return(None) => Stitch(ValueState.UnmodifiedNone) - case Throw(_) => Stitch(partial) - } - }.onlyIf { (curr, ctx) => - (curr.isEmpty || curr.exists(_.permalink.isEmpty)) && - !ctx.isRetweet && ctx.urlEntities.nonEmpty - } - - def queryFilter(opts: TweetQuery.Options): Boolean = - opts.include.tweetFields(Tweet.QuotedTweetField.id) - - /** - * We construct Tweet.quoted_tweet from hydrated inner tweet. - * Note: if the inner tweet is a Retweet, we populate the quoted_tweet struct from source tweet. - */ - def asQuotedTweet(tweet: Tweet, entity: UrlEntity): QuotedTweet = { - val shortenedUrl = Some(buildShortenedUrl(entity)) - getShare(tweet) match { - case None => QuotedTweet(tweet.id, getUserId(tweet), shortenedUrl) - case Some(share) => QuotedTweet(share.sourceStatusId, share.sourceUserId, shortenedUrl) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefUrlsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/QuotedTweetRefUrlsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..75949341da91d20540c7f340ddeaafdfec0aebd4 GIT binary patch literal 37729 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 djN7!txOa! - repo(UserKey(curr.userId)).liftToTry.map { r => - // we verify curr.permalink.exists pre-hydration - val shortUrl = curr.permalink.get.shortUrl - val expandedUrl = r match { - case Return(user) => TweetPermalink(user.screenName, curr.tweetId).httpsUrl - case Throw(_) => shortUrl // fall-back to shortUrl as expandedUrl - } - ValueState.delta( - curr, - curr.copy( - permalink = Some( - ShortenedUrl( - shortUrl, - expandedUrl, - DisplayUrl.truncateUrl(expandedUrl, true) - ) - ) - ) - ) - } - } - }.onlyIf { (curr, ctx) => - curr.permalink.exists(needsHydration) && - ctx.tweetFieldRequested(Tweet.QuotedTweetField) && !ctx.isRetweet - }.liftOption -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RepairMutation.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RepairMutation.docx new file mode 100644 index 0000000000000000000000000000000000000000..50039a178ed7371d45fd945f968099689b2a4b75 GIT binary patch literal 36887 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 mutation.countMutations(stats.counter(name)) - } - ) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..6fcd3bb0d90d1a38fcbf390da10f84ee94229337 GIT binary patch literal 37173 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 QK)FhgArY88_Vs{x0Q|v#l>h($ literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.scala deleted file mode 100644 index 6fa50d572..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReplyScreenNameHydrator.scala +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.stitch.NotFound -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -object ReplyScreenNameHydrator { - import TweetLenses.Reply.{inReplyToScreenName => screenNameLens} - - type Type = ValueHydrator[Option[Reply], TweetCtx] - - val hydratedField: FieldByPath = - fieldByPath(Tweet.CoreDataField, TweetCoreData.ReplyField, Reply.InReplyToScreenNameField) - - def once(h: ValueHydrator[Option[Reply], TweetCtx]): Type = - TweetHydration.completeOnlyOnce( - hydrationType = HydrationType.ReplyScreenName, - hydrator = h - ) - - def apply[C](repo: UserIdentityRepository.Type): ValueHydrator[Option[Reply], C] = - ValueHydrator[Reply, C] { (reply, ctx) => - val key = UserKey(reply.inReplyToUserId) - - repo(key).liftToTry.map { - case Return(user) => ValueState.modified(screenNameLens.set(reply, Some(user.screenName))) - case Throw(NotFound) => ValueState.unmodified(reply) - case Throw(_) => ValueState.partial(reply, hydratedField) - } - }.onlyIf((reply, _) => screenNameLens.get(reply).isEmpty).liftOption -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReportedTweetFilter.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ReportedTweetFilter.docx new file mode 100644 index 0000000000000000000000000000000000000000..8988c8c36648c30aa6d19aef0c126d774d8c7f10 GIT binary patch literal 37093 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 - ctx.perspective match { - case Some(p) if !p.reported => ValueState.StitchUnmodifiedUnit - case Some(_) => Stitch.exception(FilteredState.Unavailable.Reported) - case None => Stitch.exception(MissingPerspectiveError) - } - }.onlyIf { (_, ctx) => ctx.opts.excludeReported && ctx.opts.forUserId.isDefined } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..a88b9f36521f2ab7f20b9b51dd8b5dca7174fdf5 GIT binary patch literal 36883 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 U%?ivxpj;)$kO<5kbGku109y0lT>t<8 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.scala deleted file mode 100644 index c200c0d75..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetMediaRepairer.scala +++ /dev/null @@ -1,15 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -/** - * Retweets should never have their own media, and should never be cached with a media - * entity. - */ -object RetweetMediaRepairer extends Mutation[Tweet] { - def apply(tweet: Tweet): Option[Tweet] = { - if (isRetweet(tweet) && getMedia(tweet).nonEmpty) - Some(TweetLenses.media.set(tweet, Nil)) - else - None - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..fab48d4c4022e396e3c106a01d96580188e10b5d GIT binary patch literal 36999 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.scala deleted file mode 100644 index 5206d39f1..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/RetweetParentStatusIdRepairer.scala +++ /dev/null @@ -1,19 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.thriftscala.Share - -/** - * When creating a retweet, we set parent_status_id to the tweet id that the user sent (the tweet they're retweeting). - * Old tweets have parent_status_id set to zero. - * When loading the old tweets, we should set parent_status_id to source_status_id if it's zero. - */ -object RetweetParentStatusIdRepairer { - private val shareMutation = - Mutation.fromPartial[Option[Share]] { - case Some(share) if share.parentStatusId == 0L => - Some(share.copy(parentStatusId = share.sourceStatusId)) - } - - private[tweetypie] val tweetMutation = TweetLenses.share.mutation(shareMutation) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..5122c9d672e4a2aec08ed43ef35d512bf5e5a7b9 GIT binary patch literal 37067 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

    rk%m(ilP-2vpWesCqlp&WKlUEJ z+AFy?z28~>^6iDr>v^3B4ip;58?M5RWNGtHR3_i{r9`Hs4LZc@yiFYlnH5|LNp#b! zIYq3U1$bCd2e+i8(G`5v8MG0!d0*c&-L~7ddB4qMLjF$afZi7L+ka!?YF`i^?czADhJ5LV$M2wq;j{8+PN3q3^p&DquJe|^+0YPpDc z5!qjyRY|{ebUsNNcT$!W*emMuz4p8NHNF}NMMdI8cI_o!r{>uu)d+O}uun1DC##x* z8=HBK_--_wpSX`_Jl*zMDPH*{H@YIX1WCQ=QCN`;z1&vsV|Hd8P4%r8IGct)VgNDaB7&>Q} zN30E6I&mtng?b7&<_79^z(4~~jDaEA88{f6npYAZQdy8%91Cilp&L-C=I!tUsPrCi z9GM%Y8%Q@W9s?QyY2$;N_UIZr+PH%=fl4j{H436=d=3ET0D)N(XC)_#D{~tfA1mTFkmzpMfDRl$C)W#Uw5ss7b{ol{u;4=}Po4 zKtE6troVylkTr^CwBsew%|V|hMVMn;2r~z15(Qm5`os%DyJ9I+JK8i1x(VnL5eO54 z%b+HpOiQ5aM;|pt=zmrL)sH@gjBW&a{~KY%{d%muadZRFJGux1wl^RffUVn$ZWemq z5nNsSPQMp|%bKyjg)c2$ZV?84`in JBcun!0{{p9P8k3I literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.scala deleted file mode 100644 index 068a283ca..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubEngagementHydrator.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.spam.rtf.thriftscala.FilteredReason -import com.twitter.tweetypie.core.FilteredState -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.thriftscala._ -import com.twitter.visibility.results.counts.EngagementCounts - -/** - * Redact Tweet.counts (StatusCounts) for some visibility results - */ -object ScrubEngagementHydrator { - type Type = ValueHydrator[Option[StatusCounts], Ctx] - - case class Ctx(filteredState: Option[FilteredState.Suppress]) - - def apply(): Type = - ValueHydrator.map[Option[StatusCounts], Ctx] { (curr: Option[StatusCounts], ctx: Ctx) => - ctx.filteredState match { - case Some(FilteredState.Suppress(FilteredReason.SafetyResult(result))) if curr.nonEmpty => - ValueState.delta(curr, EngagementCounts.scrubEngagementCounts(result.action, curr)) - case _ => - ValueState.unmodified(curr) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..6746ee8c85d1043bb34e3620c28ce9604637404f GIT binary patch literal 37056 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 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.scala deleted file mode 100644 index ef76e9e76..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/ScrubUncacheableTweetRepairer.scala +++ /dev/null @@ -1,38 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.thriftscala._ - -object ScrubUncacheable { - - // A mutation to use for scrubbing tweets for cache - val tweetMutation: Mutation[Tweet] = - Mutation { tweet => - if (tweet.place != None || - tweet.counts != None || - tweet.deviceSource != None || - tweet.perspective != None || - tweet.cards != None || - tweet.card2 != None || - tweet.spamLabels != None || - tweet.conversationMuted != None) - Some( - tweet.copy( - place = None, - counts = None, - deviceSource = None, - perspective = None, - cards = None, - card2 = None, - spamLabels = None, - conversationMuted = None - ) - ) - else - None - } - - // throws an AssertionError if a tweet when a tweet is scrubbed - def assertNotScrubbed(message: String): Mutation[Tweet] = - tweetMutation.withEffect(Effect(update => assert(update.isEmpty, message))) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SourceTweetHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SourceTweetHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d4791e6b1e5f259a9a0404f201b3a79a39d7cee6 GIT binary patch literal 37628 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 z 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 Some(false) - case TweetDeleted | BounceDeleted => Some(true) - case _ => None - } - } - - def apply( - repo: TweetResultRepository.Type, - stats: StatsReceiver, - scribeDetachedRetweets: FutureEffect[DetachedRetweet] = FutureEffect.unit - ): Type = { - val notFoundCounter = stats.counter("not_found") - - ValueHydrator[Option[TweetResult], TweetCtx] { (_, ctx) => - ctx.sourceTweetId match { - case None => - ValueState.StitchUnmodifiedNone - case Some(srcTweetId) => - repo(srcTweetId, configureOptions(ctx.opts)).liftToTry.flatMap { - case Throw(NotFoundException(isDeleted)) => - notFoundCounter.incr() - scribeDetachedRetweets(detachedRetweet(srcTweetId, ctx)) - if (ctx.opts.requireSourceTweet) { - Stitch.exception(SourceTweetNotFound(isDeleted)) - } else { - ValueState.StitchUnmodifiedNone - } - - case Return(r) => Stitch.value(ValueState.modified(Some(r))) - case Throw(t) => Stitch.exception(t) - } - } - }.onlyIf((curr, _) => curr.isEmpty) - } - - def detachedRetweet(srcTweetId: TweetId, ctx: TweetCtx): DetachedRetweet = - DetachedRetweet(ctx.tweetId, ctx.userId, srcTweetId) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.docx new file mode 100644 index 0000000000000000000000000000000000000000..006142fc32faf6fd2b935184051afddf905557a7 GIT binary patch literal 36840 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 fMCh+?Map8Rt-}CsR$vYS;~}w@D|A< literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.scala deleted file mode 100644 index 3727c8779..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/StripHiddenGeoCoordinates.scala +++ /dev/null @@ -1,12 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -object StripHiddenGeoCoordinates extends Mutation[Tweet] { - def apply(tweet: Tweet): Option[Tweet] = - for { - coreData <- tweet.coreData - coords <- coreData.coordinates - if !coords.display - coreData2 = coreData.copy(coordinates = None) - } yield tweet.copy(coreData = Some(coreData2)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SuperfluousUrlEntityScrubber.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/SuperfluousUrlEntityScrubber.docx new file mode 100644 index 0000000000000000000000000000000000000000..2fda6f700cdae153e21c37b353685e65ad3b1f66 GIT binary patch literal 37166 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%0DPW`FS?SCq~%)APnir=c__EO0c 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 Iw)cQ|0I - val mediaEntities = getMedia(tweet) - val urlEntities = getUrls(tweet) - - if (mediaEntities.isEmpty || urlEntities.isEmpty) { - None - } else { - val mediaUrls = mediaEntities.map(RawEntity.from(_)).toSet - val scrubbedUrls = urlEntities.filterNot(e => mediaUrls.contains(RawEntity.from(e))) - - if (scrubbedUrls.size == urlEntities.size) - None - else - Some(TweetLenses.urls.set(tweet, scrubbedUrls)) - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TakedownHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TakedownHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..7d88fe746a14ea9cec270a672d0077c885fe7d32 GIT binary patch literal 37396 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 - repo(ctx.userId).liftToTry.map { - case Return(userReasons) => - val reasons = Seq.concat(ctx.tweetTakedowns.reasons, userReasons).toSet - ValueState.delta(curr, Some(Takedowns(reasons))) - case Throw(_) => - ValueState.partial(curr, hydratedFields) - } - }.onlyIf { (_, ctx) => - ( - ctx.tweetFieldRequested(Tweet.TakedownCountryCodesField) || - ctx.tweetFieldRequested(Tweet.TakedownReasonsField) - ) && ctx.hasTakedown - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.docx new file mode 100644 index 0000000000000000000000000000000000000000..cedaaaef829205519f64dee7f593f85b78249856 GIT binary patch literal 37356 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 GARYjOj=@F% literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.scala deleted file mode 100644 index 5a5e62c3d..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TextRepairer.scala +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.serverutil.ExtendedTweetMetadataBuilder -import com.twitter.tweetypie.tweettext.Preprocessor._ -import com.twitter.tweetypie.tweettext.TextModification -import com.twitter.tweetypie.thriftscala.entities.Implicits._ - -object TextRepairer { - def apply(replace: String => Option[TextModification]): Mutation[Tweet] = - Mutation { tweet => - replace(getText(tweet)).map { mod => - val repairedTweet = tweet.copy( - coreData = tweet.coreData.map(c => c.copy(text = mod.updated)), - urls = Some(getUrls(tweet).flatMap(mod.reindexEntity(_))), - mentions = Some(getMentions(tweet).flatMap(mod.reindexEntity(_))), - hashtags = Some(getHashtags(tweet).flatMap(mod.reindexEntity(_))), - cashtags = Some(getCashtags(tweet).flatMap(mod.reindexEntity(_))), - media = Some(getMedia(tweet).flatMap(mod.reindexEntity(_))), - visibleTextRange = tweet.visibleTextRange.flatMap(mod.reindexEntity(_)) - ) - - val repairedExtendedTweetMetadata = repairedTweet.selfPermalink.flatMap { permalink => - val extendedTweetMetadata = ExtendedTweetMetadataBuilder(repairedTweet, permalink) - val repairedTextLength = getText(repairedTweet).length - if (extendedTweetMetadata.apiCompatibleTruncationIndex == repairedTextLength) { - None - } else { - Some(extendedTweetMetadata) - } - } - - repairedTweet.copy(extendedTweetMetadata = repairedExtendedTweetMetadata) - } - } - - /** - * Removes whitespace from the tweet, and updates all entity indices. - */ - val BlankLineCollapser: Mutation[Tweet] = TextRepairer(collapseBlankLinesModification _) - - /** - * Replace a special unicode string that crashes ios app with '\ufffd' - */ - val CoreTextBugPatcher: Mutation[Tweet] = TextRepairer(replaceCoreTextBugModification _) - -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetAuthorVisibilityHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetAuthorVisibilityHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..6e4873697cdd3f8fbb4f720f4285cebcdad59134 GIT binary patch literal 37394 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 z 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 - val ids = Seq(ctx.userId) ++ ctx.sourceUserId - val keys = ids.map(id => toRepoQuery(id, ctx)) - - Stitch - .traverse(keys)(repo.apply).flatMap { responses => - val fs: Option[FilteredState.Unavailable] = responses.flatten.headOption - - fs match { - case Some(fs: FilteredState.Unavailable) => Stitch.exception(fs) - case None => ValueState.StitchUnmodifiedUnit - } - } - }.onlyIf((_, ctx) => ctx.opts.enforceVisibilityFiltering) - - private def toRepoQuery(userId: UserId, ctx: TweetCtx) = - UserVisibilityRepository.Query( - UserKey(userId), - ctx.opts.forUserId, - ctx.tweetId, - ctx.isRetweet, - ctx.opts.isInnerQuotedTweet, - Some(ctx.opts.safetyLevel)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCountsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCountsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d94b903449cb7972f27c6c0d4c4b2062b9f19a0 GIT binary patch literal 38768 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
    fMU7%L)jGdhI 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 - StatusCounts( - retweetCount = b.retweetCount.orElse(a.retweetCount), - replyCount = b.replyCount.orElse(a.replyCount), - favoriteCount = b.favoriteCount.orElse(a.favoriteCount), - quoteCount = b.quoteCount.orElse(a.quoteCount), - bookmarkCount = b.bookmarkCount.orElse(a.bookmarkCount) - ) - } - - def toKeys( - tweetId: TweetId, - countsFields: Set[FieldId], - curr: Option[StatusCounts] - ): Seq[TweetCountKey] = { - val keys = new mutable.ArrayBuffer[TweetCountKey](4) - - countsFields.foreach { - case StatusCounts.RetweetCountField.id => - if (curr.flatMap(_.retweetCount).isEmpty) - keys += RetweetsKey(tweetId) - - case StatusCounts.ReplyCountField.id => - if (curr.flatMap(_.replyCount).isEmpty) - keys += RepliesKey(tweetId) - - case StatusCounts.FavoriteCountField.id => - if (curr.flatMap(_.favoriteCount).isEmpty) - keys += FavsKey(tweetId) - - case StatusCounts.QuoteCountField.id => - if (curr.flatMap(_.quoteCount).isEmpty) - keys += QuotesKey(tweetId) - - case StatusCounts.BookmarkCountField.id => - if (curr.flatMap(_.bookmarkCount).isEmpty) - keys += BookmarksKey(tweetId) - - case _ => - } - - keys - } - - /* - * Get a StatusCounts object for a specific tweet and specific field (e.g. only fav, or reply etc). - * StatusCounts returned from here can be combined with other StatusCounts using `sumStatusCount` - */ - def statusCountsRepo( - key: TweetCountKey, - repo: TweetCountsRepository.Type - ): Stitch[ValueState[StatusCounts]] = - repo(key).liftToTry.map { - case Return(count) => - ValueState.modified( - key match { - case _: RetweetsKey => StatusCounts(retweetCount = Some(count)) - case _: RepliesKey => StatusCounts(replyCount = Some(count)) - case _: FavsKey => StatusCounts(favoriteCount = Some(count)) - case _: QuotesKey => StatusCounts(quoteCount = Some(count)) - case _: BookmarksKey => StatusCounts(bookmarkCount = Some(count)) - } - ) - - case Throw(_) => - key match { - case _: RetweetsKey => retweetCountPartial - case _: RepliesKey => replyCountPartial - case _: FavsKey => favoriteCountPartial - case _: QuotesKey => quoteCountPartial - case _: BookmarksKey => bookmarkCountPartial - } - } - - def filterRequestedCounts( - userId: UserId, - requestedCounts: Set[FieldId], - bookmarkCountsDecider: Gate[Long], - featureSwitchResults: Option[FeatureSwitchResults] - ): Set[FieldId] = { - if (requestedCounts.contains(StatusCounts.BookmarkCountField.id)) - if (bookmarkCountsDecider(userId) || - featureSwitchResults - .flatMap(_.getBoolean(bookmarksCountHydrationEnabledKey, false)) - .getOrElse(false)) - requestedCounts - else - requestedCounts.filter(_ != StatusCounts.BookmarkCountField.id) - else - requestedCounts - } - - def apply(repo: TweetCountsRepository.Type, shouldHydrateBookmarksCount: Gate[Long]): Type = { - - val all: Set[FieldId] = StatusCounts.fieldInfos.map(_.tfield.id).toSet - - val modifiedZero: Map[Set[FieldId], ValueState[Some[StatusCounts]]] = { - for (set <- all.subsets) yield { - @inline - def zeroOrNone(fieldId: FieldId) = - if (set.contains(fieldId)) Some(0L) else None - - val statusCounts = - StatusCounts( - retweetCount = zeroOrNone(StatusCounts.RetweetCountField.id), - replyCount = zeroOrNone(StatusCounts.ReplyCountField.id), - favoriteCount = zeroOrNone(StatusCounts.FavoriteCountField.id), - quoteCount = zeroOrNone(StatusCounts.QuoteCountField.id), - bookmarkCount = zeroOrNone(StatusCounts.BookmarkCountField.id) - ) - - set -> ValueState.modified(Some(statusCounts)) - } - }.toMap - - ValueHydrator[Option[StatusCounts], Ctx] { (curr, ctx) => - val countsFields: Set[FieldId] = filterRequestedCounts( - ctx.opts.forUserId.getOrElse(ctx.userId), - ctx.opts.include.countsFields, - shouldHydrateBookmarksCount, - ctx.featureSwitchResults - ) - if (ctx.isRetweet) { - // To avoid a reflection-induced key error where the countsFields can contain a fieldId - // that is not in the thrift schema loaded at start, we strip unknown field_ids using - // `intersect` - Stitch.value(modifiedZero(countsFields.intersect(all))) - } else { - val keys = toKeys(ctx.tweetId, countsFields, curr) - - Stitch.traverse(keys)(key => statusCountsRepo(key, repo)).map { results => - // always flag modified if starting from None - val vs0 = ValueState.success(curr.getOrElse(emptyCounts), curr.isEmpty) - val vs = vs0 +: results - - ValueState.sequence(vs).map(reduceStatusCounts).map(Some(_)) - } - } - }.onlyIf { (_, ctx) => - filterRequestedCounts( - ctx.opts.forUserId.getOrElse(ctx.userId), - ctx.opts.include.countsFields, - shouldHydrateBookmarksCount, - ctx.featureSwitchResults - ).nonEmpty - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCtx.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/TweetCtx.docx new file mode 100644 index 0000000000000000000000000000000000000000..d770b318d198755bda1c22ab11f54e3ce02a9386 GIT binary patch literal 37742 zcmagFWq2G(vNbGbW{a6w7F!IKEM{i1u*J+^F*7qWGc#MvY=I?+U_e6CIMpi^3u6;OK|sc!KtRxeqgo;W8%GlxM?GaX zTN4KzMptXA#zYypH9?eb=dYMaO#H+iBFLC!ySCJ}^s%_2)#wYhSlyTDIPeWBtqLToX#@Z2G=^1$6e}7L?7){RqxE!K;KR+j9J)z<| zg8YqLMW9x(T_`$fl#QG7-R@X~)ay1UP-}%-RMx9QRF99^PjJBF;S%ZjzyNX;=K;a5 z>R#fdvuNLG%|Fjbnm&m}>ot*}0JS^T;MwB|zPS8@D1YzEQt`&Vz}P)$-ZO@bE{Oa; zs^~^3CHMfW-X<6b2t4qwp1p~c0~6!#Yh~Qz7jPC7-*bMk5sG4)CKb_w6z<8*hoC)vitjQ5|)xUc$rkJtNb_^nAQ!x+1FpHA9UB|J zhB*KfKwP?sJ*>F0^@o*9*n>cmqlCV%;BkyCs#2<~F$*?V0g|L0`i+R>;dE44Olt;K z+f%#zSFQ3(#-jicIVD|J@*Akh4zvL-vxZN_Gc9|c4;aYFCe_@hOr16Z6nt!_34bxy zCZB6IMlXB8jLv9roc}XHA>ZJY%z?N03@|~czyuisjO6VBwhl~20DF_)H+g2uZar75?2w5i2{yViub=2+AAWOT*i<4vH682Ib+ zpuXZkh6!~I6f6Fz^CKhzGANs%LaL%miz@4O*r|iP-PW`-xK24jb1(u@(udrc(~=57 z|6G`LE$2TMhba(>NDZvVnKTMlRB@3!hmqY-Ym!&80a@ zdV(ZIu}}ttWShh+eb;2(QN7Rm=eG~b_;e4Pmk>C|W=Og;b1oupFMU^d|E$Z++8Xu= zur5{*ARs7zuZw}L?H^@P9=BOzM(KE_gV1pdGlv#Zz=`u;6q*s)z^#ePXr3P<{Sph& z%ChV2^%#Q5{f+51l((Muxnb;iNyrqsLH4T(=J;dYh`ikfTw`_E@WI;TA*lmI8DuG@ z>L99)o!<0Vhp!fG%aoh6DGwL-E z?68KDdSa!zQniq)$kUi^b)n%LZg%ij5$cH1S+Yb613>Q$YPP!Hx?N1mU41EU43g9x z62ud)@bU|mDDA2Uv?f7Jd{ZjAPwg1s`WGh`LVV>FxH@Rq)sN?c%o_9rL38|-HdJ!2 zsTqE;+VPt5FT0EtBz#pvROCqn&xS;JbVf91YKMm+OPV^eT9KI9?6|1T6gxrQt)Tk= zD#!#&J{}fFU)gh%Q;T^ULHDN->zI2`?{dF)I-@6TY zLqlh5MYhXga4~yG+6UKW2#UW;8Jg`kfkVerOrm1RV5uIW5#<2`h*~=KJjwOb*Bw-byzQ^x21;g81#J(iE^IOjE#a?L&zcwHjD<6=1v<6q z!dMXg?__k>3QiXG0?czD!!>@SE{=`*+S_h0Aw9bi)gzk_d2<;amah?$!;Rmgs~I&T zleqBj5Ad-(e6H&BI@pLT(2VY(m|(yVqBIo>Lwu=7EC`hHMiULtXif;>{MjoE2M4`b zpIwH8@>AeV09oxn0)ip!OxryCFq^7mV^XBxhIDzeE9sQ{a=PLekuEze0!sGu)%k>~ z`ut9FTE<1poFyfX_~ySH3%J=M&&|ggkQ;c{#2N{aqe{)D=TIHF9PFx7+Rmef9;hqc z)8r{6PmP*Ef|*X)-@P%kMVQe#IHvMRI%5K{#?94Z=%dQ8AaU^ zVC2B#V~65C-skjfG5`~qnmGp(f(1!#i;8hu^xEm$hvgUqSG2wqm6jh^&QM>GLWuP# zYshAIFcH#ae`s%b3nl!7_)bAVo*-f5#f91^L}H|@9D~*&GqOIt@k?EKt~)xj9HIzr z|C{LhazFfY&*x97_JK{<+u)GjbmSx7t2z))7qV(kf{)RT%&mzg=IU6*Y!+Z-5`80$ zH4^DUkZimCyFNtHi-(mpbyJ^xbyx19GA)ew4#)_G&_bXO>f_RODYp3{+^v)tN7Y9` zRQDPK6%uWJuS8X5_Bb`|Xy&yxM#E;BbqPJ&P5hD}0xOa_WdwIx&H2qbAVdVGYJzWL zps5i`ed+@7@*&KrajcsHA8dghkzmDmE78bfYI!WQq&iy|4CZ|#o?4wkDUToPb%lpA z8kIXyErK?zpAKrzq(a;%K9-B|+ul;HN?QM~7XkOcIhOCzLbq9-QXvq@_)l%{W)&a! z%cg2#S971I&dwxmvAU)4K5L!jOdz61b5U@%gs@TPr%bF6bAEg%+N3ze(lnk(oC--PD`-LQ&*Pezo zbaY_7I3osikWR#J;9!$@-6m{mq+Er$i3VDZP}tuVvJ<6FI;)LsKb^L6rLC5+pV02Q zQ;)f~YO66X8A)1U&#mn{1}OOU@kE?|Idvz8R8X^}ZG4aw6*ME5b#Bx}F3mZCP-twj z83I=($XThnOGm*>SX4M|Ln-;Jwtobpt2EOEpYxhNn8XQ>$p02K$us55iE^vY=~gLX z-BMgKoP??ct>O}?5M3f{{*M3E#rnG~mlc~9^hk>^8LLGfI(%CoVz4&- z4%vXBjSA&ySo+y`00vi$*_L}$>{W)1>?>)!cRrnYd}om!_AK;BI<{!x>CM>q!Gef& z8^V(r^K9bXDZK``Z;~=s7_WG3Dt>z5JC#A)$QM?;m^ojfsix+ll#2 z3IYZS`H2{OMiohpW<|GlK*3c=9KYtQ&U3-jW?N`u?>t;wi@RHG>EAxuNyR7ysgSn& zuB4CyNH=U7hzxIsau{0L!Pj}Ts=g)46fufOISgqJCM!6>R*+a$<(0)aItw;TrIA>= z6=+-uQ@IU>c#WT?;^VE{KWqe$SG8dY(vjb8MtcPG?mu26&yDNyJ2KpC>vQ2`WgP}6 z>9gh+oAvMIK4#i>q`V;l)b=(nM@Lr#m7u=AJwi4-)AZt1+)@+vKdf9jkVP(%>*`1k*6y={E)&{%;T%s8-v!3TCQe=Jmg_TPVBuKw)B6NKaf zm~pjlCNZthPlNoaINl(3mijZX`F)U9_FGuI{Ct;bH)7r$Z6^CCEWM1HE zTPX(W;K&zba-67viF*OH&H84Eiu>$z^dflQ7^e3+w0s4JNS1 zA5o0I%T1tesW7hg`Gl|UA_dKln93TEc z2#Br zR}F6KR-DBGL>0X~opRr}Ln7+lZ_Mj8J)RfV#@$`Q1m11c0sW}=?R(b;x2_*f%SXQI z-3J#h^?Nt+6ZV^VuVf8-XxKO}8GMs9$Vr|&t`RsB$b7@%m$v_WDZeuu9PpsWwDt@X z<+A0od5SzfeEPKE#r6GFKzNexRBaRZnquw2Bkn`!%}?$_=`;8af7d>Dd3NG5zGqSY zi1P&z+I1z+s5ARCD*gE)@%G9!jev9fCfwVe!Tpuno$NZke2>P-t;=n7T|iVg+9!zV zt!urjy}4pMagfEwx_#ZNOIz!_>-ART$y70!u-|TLg9&-dJ4KAhQzGk>h> zdVGO0ss6=LGuRt7jRM!P9k%mg6SqBCz}qccx!sfZ6rH3xH0GuT8L}|=42@?xxE?vU zx=P@+M$bz_z>6!0siQsGBnaE*_3g0V)CcDEX5-Z{P5Y(Bd!=LR6JMpv`B`u>=UEn~ z+{wF_?zuN#RkqF2JNiIZQbfyY_o?jRS~Oty;m3QeX1912URRrzIL9N+QxAvxJqrcZ z+r!#{Gv^^Zcj@KedwU2z<(;9Vn=Vs6PB)$^T-q*7UCQ1UM1ykVof2dgMWQ|xBEt&) z0a33I8qbh9Zzt!jo8eRQK`J<1<;PI}Ic4v>ZL-8{>K4&`DmX%U;7~7}fIBj z>wv|Fcb$g`iDhVh8`(7{6EIxbqBio=t=EoE^a4al)zdCB>zXl&tbM`F!|}_NNDDT% z{Xc8Ays9vaG%O5Xl9vwm?Hnqw3QC@$Q7>Abmkh3zX)Fd(%^m{YJ9MfRr=L&fo^0>! zUWX;`t_4od`7;#68+8`uFZvIzuYaEPJ7j#M3u?tLREvD?KX5H0%($jj34mYuzW+es zb3wEum)@KlZUON<#F8$orc8`W5H%K5l+d7nwX5f~z2}k)FMR!7-Ne)HIlCkRpcc)P zY2Fdj92T^s&f|>zeEN3r)0!@WaA+3Q6O-f)W>(0PK#y87qL7R$p8wpmTxDck^hKE@ z`iq2uLPTs2Xfr6E=8Wy%K$z^rx-FTD&4)8B9is^6^5WR<@b|lB~`GNF}8j8X( ztBy1zFlL(=J$f+LMZOq;Zc2i1s~t4N@Yb6ZnfVehiez+X{&)CFjkC)9}L9s4F4sOff$C$4IbtX)${Q# zjVK+zt^Pe!;2_d4<=ozduA9Xps<}YiMX2iJb^ZwIqv4}TwAh~5^94@KFPSPKrlh6G zwQI|#6Ww~vk5Mb><$Q4C`PQjb$7aw&=%s&Y!a4Wrvg@_h z!_ZuI^^R-x&jo(D!~KKNyq$;0Edib8TT!AYn_b2g!9?w-bM{!=_h(xK5eBzueH8lj zQi6=F!FA%hGjHeR3>U<~wJt`V;cN-(6Z^Qs)?Wi*fa+bps%Vr_D=+F#ebKu5?96vNh7j&E+ff9#9BY+W+{{?b-L)2A&RC(UNpaAT<5lHthacw zlr8*-419jV$oP1UJdN%>&Ap*m^rQ}K+Bu~^SU)!_{a_S$>FR|0!Ye&Ew7c&k#ewyi z$(|F-jNffd9bc!*n%?`B|g`<+nG&fQhwz7}?Kk-ts9k zl*x3Zkz?o!8jSPJgSX`HbMf?`a)!p0PZ@M8W;*-YB4ioku$29+!wyv)bgc+#_NdyU z2W@eYKfg5PRvA0>Ct_p{?C^vJ{3MU^jbE2YZ{jyPIc7`0_F22gL0t+EPa*tx{0*A> z$yI(xihdYrYD*kuJJ-&4o0D+~pe@~P*S^C^=JirUzVz{2%%}=GlBM(OIwF&OYZeuZJ-P>Lpij0F7o(#NdwnxJ>+e2Sn)fRHk+paBsc=hbV-QeUwxi1X z@Y60GV~(hK>zwrcEp5Ji+U4nH`0DLyXwbd=)y~cP{w?u+@$_l#=gYAzvq8sOi$LZb z)64WQr288P@=Cf}3qOS3R(o^u@GZ%sV(c@!{(4}3$(e%#l9NFzyz(Te zv^hrh;z(oJc9(-d;a}IsSsi>+YAiKQpAUNdWohK72@jOwnP1-5(WygnFMA06jPJ?Gv{qY!XAwKd%uqAUN z4Tr0hO7Mo=KQca7AQE9^Ko3lBvA6?>#$}mWzEcaT6%(o@*`k`55N&s-v z*Q#K@kYA*8$BI98HMU}PB-3#f*YkahURx>p*95w4Vjk|QTBF)gNHI!DYWT^#O|){S zV&pBvzSL}ujF;HZXxR|YiNFdK{S00b+l3SayPJqz>B?zo8FqRtVXmi&Mx>ul=7|m4 zK#YO|4(Sqp-Ly`g3_a1#5&^9zgoe-yO#-(A*nt!#KvFLK&dsF%+WwxKr|6hpLo1p$ zQhZu{qEZt64mW$FX-Zz2l;WGwk^7@vE6=ag+w$b2MAGOsZ;+r8 z)`s3?5PTZqwi8#t`PYmZ#!b9${o`tQ>n;&YdchZ)1}osjy9DS%j6WuLt<03|ie

    xj5f3v3%6{*uQFENFPGB@TvsQk8*w>~*P8 zJ*6PKlB1y{n-QZw%g{g@1xy2|p<03+HN+SLbWHMe_NRNE({tvry&|lU741bgEK{UUpPbR7g1$% zq)C~*!CYEuvYIIx>OUc=fgyR%(p=CK3t8x@EIqnlMR@~Uz>dTb94+Xm4;t9Nto=Y_ zw{mvRzbY*yG6&4IDhvlmT!lA1*arAuHy|=m}4h zz{7Dt_Jcex?nqKNq2T!HNPr7jb+!|;?30o%4Yj^9Kyu#W5NoHcmL?qX=+Nc6+EFn} zamd$qpLU6(V#H|?-h?1Men{v)Rvb}0kaO==2w26ruptBI_z!8aN!S=kB^8whdGh@7 zYM7XOrvhiZfN*?1;?zJm<4knlr>{?=i2n{+W zpB^uO`wMtqwMQKlA5zTj>zocp;9xw~)ARiv7H1$A3v`Syl1q&pvptA-niQu1oBi%R<(&rz|G4!IQG>*gI($~?K@ z72E1dIWS$6L6!l-K*K3mxkIU-j=#Z3La!WcYX+YC_INfW~AOu31Cs=gwX)W zv_dYz%PPi8OIxc0q_m_J@;4=MaRL-gfVdkj?vZ%$S6JY|lZN_D1+Y)^M8>5#(H8+c zOSE|R43aMkT9p8uh1n4AcI>B?;)vk@$a{aY2JFz^->KXv9fHoRlG$ zwq$R08T6u{p|+=`7OMID8?WQgDWX$6Q6U>HB3OegV9G|OLe+FlJf(}z4dGU}G=blB zJ?j(u*Hs^f+%MW5p#(?0GKHExAXmK>XG-@g39TY5yUui;5>zT}f!pO2>LIhr&wyXR zTO=Jh?P`?t?!KJ9zv6xd=)FU$7#C!RAS}w!R^bGuVlhE5UYV-%qNx7;(w7vG=S2B) z3o|h}p;cv(C0z10{v#oivdq1uu<ra%dTIs#e}s!Z!80EN%;t1n_#(LU$Nl-HumC&aYeP!!!VJk@6_O_A^?p)LK{U{)>Z#sj^8}3b zw0<%mhQw2dgsf#}eU5}=kr7&S2QdM|LOh^3RRZv7^~-v6Rz^+LEJI@q5Ql8YgDbb8 zkH~xm6JM)%REo?f!QDEsks*;x0Zq$nPqco#w_f@z8Kbpnd@gR&|ILK{Vqky_@l4!S z`*1Cfk4e!mK%#X)vs3#}0AUFCL$4t~0$2tC!_rQhrI{k5y~7QV0G`cJmxxixGla(c zQQ5O6L5Z4u+Q>*)*3#5EQ)E)WGI*0J0!vcUQ-(zAJP^qY1$roP)>6xL1PZI-HUUP< zOn<+CA*xtf00K+99fhHhnL&kbBIt^N?PjQ+B8%WZgo^pIJyf5%$fxx{zFH*MKcqbU zB$L{sF-h|<`Y(03fq&GAq5N-kb_hUqJTN`}Z|9i*0W&*%aZPY5`y0ps3m5u+JzAmT z-=x?W?(Y1Oa$Z0FN1weSAxXnNU{|UW*#GKEpDE9$efM% zIUg~_L=cWSa2`aQmY$C5etxyg?$wxsB{e*fh1N)r&mZ?|=lj)xAg2+dO$MkJ3f0k( zPkW0-Nm2xDTYp4HJRC%zZ3S<`uL^E-z=LbeXvtxumX4C-l`$Hm2;1f6_;dXV*_B>2 zFJlXbi+zp^-KwpQ=+6Vj2VQ60q!I>Oq(LrJYCN1{l8|*3^KR~U!yeN1N5JPFm<zRu!l1g<0A!~UW1BO*RXNA=o_3vj*aKCU#1cHsS~ig z@9~qj|lM zAX~B^&#~gh1GJra7iZ#PFzCP;9tVIk<)rrsrTH!r zuO-;s)q=i|yJrU=mY2M5)9&}EPNpdQQDI)A<5m}8b9SIU$aBq5QIDML-BA&>sSCU5 zB&EbyIm^HG0NnK}*dpC$fj}%hv?Yl>{LA(_9C~;SUu?qX7c%aS&}TPGzAx1wn97yr zJ`J!ZVv^jt_OAIHrpt!Cqw$UJ`KJSnd zo70~Xfv~TY+?X`XU!=z#G`0%w*pKvN*ke$J7pGH+o$Zkfr{5yBTfIi10hw z-v-tx{O-Y-Urvq+8KabgqU87F%u1essU_B^mYZi-QCOKI(TE5dq|7h4Hj!(d^?sFk z17|#lE&rE3tJNLQe{Qcl)j3iH0k)uO1^)c$nEF=_x-aG?s{eJt$IK1b46z`9%z5_? z9ww?Dm_@USCbHoWb|s6nB0CXKvbF#>L(RPWWY^}x>3X0dJtM8y_QRWD+LbBzv)`T# zN@G9&a>C=CohObk}$C0z2=MzKL9J_^2l5)DFQyIa`22XR>kwYs}i$S{kB-nAy1O$XB6JBUmhJn=hW#DnKOOtco9}80Y_a(p4g>`4 z-;P-TJIbmVo7nx;XLBocz~MU!!RU{#ku+)9vUW)=7^rlkq0LiB_}(Ds1oc=O30J}$ z3%|ed+r_b5)ys4}*vETa(N9x=2EyRFiAjT#@_x)dn|wUH5$d#kVQ8chr=x5C(U0fE zFbK|C>~qLZ{L(WOYDydPj3O0?zLSA^wAsq6vuHunu94c2Q$+>u<6Z5(>86hv4Lejx zWil9p12<96mF9BD#vnv>YfhpS%}F>Hex4Bp(%$Hb?-?EiBZe2RNhXc6$JeuyLctar zSj8H%JZbM0zM(d5%pf70%%*Fhd_2Z-WQ%`#g~N&`T_9d=Yr*~;sY36{4{;VQ(K-@% zoP~;whD^4WexfP zA-rcnx(=hI2&#E(h1G3lHa+MF_ix?t&jtZ}9-spEVit$$H(+JEkKZq0+`W1b>uM|X zxCPpWE=nUcyI2S zl(<~GS}8?DYZHrW7T2|-Q6@Q~=taD8?)Nv|svm;8Y#pkv5r)59c*}GkY(+XX#Gze} zq)~P`9#QyC2|Y&kEa1~;sB*J>5k>_1JKS0R?MdfI#S@WarxfXF?5f2(=zU}bZx`$Z ziDF6Ws)csncC}8w9j*=r+Y?5*eYUQ@^#~4Ck2a;9F^sfN9Q<&q1J#@e<1Qga4k-va zafQ6Zrel-A6XiG7O+ncAm92T04HyKB689@G5Z8C21mfOZ8wP?F*o~H|)EBy__vTtlBde^w$I$~E~qkfLQ8WM7wNb!@YT^3K8Y>T)GJsPZP;g8;o)Xl2r7Ksc{Mo{ zTT@x-1-|w8pkcP02``eMu@oL!u*%6bHml6n6)j0;e|9E|Eoa6uD}*LiSxLKS-h#zg zgEqm-M{TC8g@+|#^Pv!FhZ`79T*{ugKS|c|-#~yawEs#VtZfpz();!KU?XjIph}9_ z;M2>|^1)ag(VHGbAMBem+WYZu=6By0+FuvXUmSCNT0q8=`giytIX~=-vy=f+U;_R5 z;LZ)C&>l3?r&()BvAI~2Ok%Q4rz>CQ3W}YE6q@VA%sNF?+F{8uu^sv&{0$m3=E!Bn z?P)eeB|eu;uMmudAe6F_VLT8Fdy@WQ%Ce!`N^Ef!F|$voC=*NX_YR5Qh+m*EOS*Q~ zKZP9eGTu=L6x{b_Qzcm|Ez}aMJgN6ejSYF<5ATdi&}tOj8Zuoah_xyA-jqJb4^aPWm*OlQJYE1Emsw7H+ng*DwY-v_F& zh&5|a6B~9~?FJU+Z7w0lekM5lc6Ti-1Fx~uNws~-u0>yfijGnk-wNl^OKD}gMJ%o4 zI-jJhYEidd)>+a?`KcatI)Soh#Ua|tBI#*D*W%7$O4sE^hO*(F1I|K$-U?pgey+^N zmp%oq?f%|x7Em$Erp|nG43_Hq!?E0TPgEKV`x_j9zHeLHZ9O{tNYQ&B|8CxCQnIR1 z|BCQCQ(0s7#`S|ecNO8d6eqPQjIIFy2cnXvnQ<~$&b$j=&+cbN_hPzQvIa6YP7sJP`O+iDJt{``)B_0Fn2S1>Nl>eZFK_K&_Ew3VHs3MJJ7-^8$8uX%MkXB1r_ zMtjBm={%)kFZnigd`OAwKB8lA8ohkMLr*yNEE4*nUcNfy)7WW#6hn3YYAS5qrUfEo zq>>mN?V6=+o2Z{Z$ZV8GPYau#Q^`@{QskSo}irC{Q`v|XYtk*tSzM9BSf z#Kg#o3yq%^D=v@BPNW;x=2&g*c~@}5_JncSHPcLEwcRp~D(Ebbb|{#QsG%~*W6fwN z5QuUlOqfGk4LcOmn&-jtQZhym>|1%fM_2*kH1AgE^0kcGSO!cN};lPt(KDMUpTldo-#8EVo_S8Ldq*#=;KjsmsYqe$9pRcUTXQ=s*P2DUEhL|PR; z+ZtYi-YF-&-CL*%j?1=9`0>-#-VeE|U4$xbzPz+D#sAdl!I|saa?Q^ng{0NFnO>6R z9JKi5y6Dq@O^2D)ZG^Z88EywlnPbfaBMO6hI!WqOFs~MqX|8+YwTb0iR_FV|b029J zwJL!m`Mt4SF%A*zc7tOI~3QDA)uj9Ooax|49C;o&8^`SfN^)f$!&{431QS}@h^*j{?j9L|cL1=b&A14R- zIA1NFpfx0KM-b&08IRlN9p|x{MJOgDiaVmCjG5ch&2G!-R&r?vZZD{#Ap`u09HE(h zx1A^~x-BNOWK(Axs%rgiIp1+u@*h~hU8OFs>fFwm=E|ZMt_yQ)>({4p=^7mN`}*2> zipnjFea@&P&48CHpOEd^!-$&gk?;?s?#K&@2cusC+pOLkjb)S2zwT4Xe*KSCTKrsC zge|Zp69LTb{Yit$yG8xksF888Q1>)gyk<+B?M2@s3Z1l5O;pKt6a@;(;=PStykld6qSD}hrU5frY z-ySmjy*UYBnQ8qpf@mh_>ntI@LB?7|!a2*pI<7L%^M3vHG*irr`DF{RAq2TYCB?NF zdlk{6p;w9iiln(Wf3~vlc|^d`s1OMyMoQ6k6jBdGJwc_rEKmBvpoO|!y2QWXwX>v$ z`-|dK!;u*+!-yQ_h6r10;U#;zPHXHOW5O@^@1%Dw(n=Xc*ivEzAQ^EcM^#YKnPni{F)WLc>nJcON7GVZ4#2-Cj|c{A*u2*Pci>u4-k%+2jl-$@ zW*B9Ysxhv(2&NwqIpyKo5wtKVrJNI&(Au&m(Y<(g^c2a+z1>*9TlXkDVIF~^YOstM z$^8xBant({i@N&VVshd1)1-^4;Us1xmM8!pp+`o_gnIT)xH6@0S1ql!SH@%YVG!1~ zXKwGh=SJQ@Jf`PHbO(AsUsHedFvMGe8Ok9Clka;Edhb943dd(KgnqMg1)b*nkyI3l zS-Q9TAAav2NX^6%CgD6u6&jo|4KG-?KKbwfwo`HI7Yi`R|Ku zYC21?aNXy7jPno0Ia91pJ2QNDE&ANQVS1sc4111ioS}}DIWA6xGkreo;C9`%s9V0m z)FR2(hQ{dU@Fw+to&LRsY3QNpvqSim@1!#J^G7edf+PYy{vHxEsFH!+PY?ZDx0bs- zAwGQu_N1J52d@LWj=K7MQ%j>-T&$&j0rtyUsHf|(C)DHB{_E*_5kv--p>Djjegs!r zqXJwg8zV9HY2J`^>W_l$5BPu1ScT&&mOYRlAi*RcAlSee3)r~(uW1Un@&aC;4#w7Y zOg2vDmRB0KPUz|wf?eL+wDvP7G>jO~gI#R>#f+l#U|iPUOOv^Z8S9)wWs(%oGpUTf zET#f-5?(+a!vuUj8Zgw{vYnOY1Nl@Wgr%TS;4yGU$!u;p1uzW3Z#TD!VU>at48L7& zt-tkV-*36j@_L^*6pj@d4$a-6dBd_GfSY@WJT&)CIkeO|@l?rPVsg2GoVIlg?t$2X zSs_doHZ7UxblP>u?7%Zb2Xc&ua-`|PVe=AT`UlzUbvmEHuwWo75^sLgk@{PSF5_y@Ay)f)j2o;^e&lE16Qt| z@ol7e8fj*Aiu*Q5ljAg)fq|!AvaFa1OvW#eVPwv>hrdP@v7$uOaYOxZt0?dSH9@M` zqE6*C?H;;nR4301_wmzeRr+mqC?tVr6BVxrX%yx;lBlCTyS;HU9)qNaJ(s@4qfaU9j9fjDoirp@~_S9`pfX6{zqu=6igd=6BLRP$q}aCHj_&o zW~tH4$~khW-fxso>Aj2uN>60RlC6=bmiF?lbClm@mw65YQL1A`4yC;GMw;8$<7b0L zqTwN6LFUpeed??5khf&lLKaHDyA+3{F>;9SK8(p}OTBR;R z>f?Gs_ORF0K3w1L{-l%IOu|kkOVV6L7ii%@q~Vmsq>G)^r}uI3Xrcx8kG+Sl_Db$e z?{}8Je0!nudR`}j1BC|ihO4k6S=#&)mC3h#DUoSugAVaJZ&L?CW(Ai*65TXwP7!No z0UlP=!7V9ibOm2^25kgw-q$xxx9zrV-fuIRkiSzpptlA6_TQMe+82aIZ_Bzk7Cd}% zadi4Y*;9r8BQD@e-4cFXsu$En3kYb?2+Mbt0VO*e+jO&X>0x#=To*+1P})=6PdD3% zt8%p?$Wu4CKhAe;D>{LVuL`s)gjM(mf|pk>Ki2HnLJ!e?b9S}*UmvxLS}tN{HD4$*QK{#%BJ1 zE&lyv-^#SlIl+Q;t5_!6zL;lt_6Zk@PnWk*XOl{YZ&Nzkh4%}pT;fZ#?whN9b~vP_ z&objT_q<4U;cZU^8?LK1teMFf%{Q-8IgaJUtfze)z8j6_C+=gIu;*vxtMw(^^L&>t zy4YP2_tKmx=AJV(VTk8}It5b8{Zn}{#dXvv=UBbK<4<5}4U2;)4Vd;OlyzC1K+ohX3-?1fg zb!!&&2u3I$mYn%QPNI9~r&S975>q4kK3LVBnsCKL#6w6}Ma=d_>mJ+of;cKedFv|gF1wwa%%%-Ox{+@9)d zZ<-EOuQ|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^) zN)LC5y^LMm)_*>F@}$I@8!D^6PvHD{u2}ii5$BaNh10+JTKRhiYwg~8=+^(>ROVLI zS5|y4W%4YP(_4NPJoVx$*}%W7iA^eFK_gb;zj4R6L-qmQj7%cTpy6>2hK^b05o?2% zPMivCp`HScxq-SJFwg)LV_=AO1`YUR2HNb$AVgC=mu1(c{}_7D!m6BN9Km< z2GR|T$ACsa+W6q6J-Wt@Htyg|ppuI~je;l|p94kUbx(4B5qKmTUHg~Yx5Zxrwdb%f zFbJS%uLp|2wI>!7U~~1iy)ovOfUVFYK&_~j&j1Dlc;*0TL}@P2@7T2GHAo8?0WCib zv`PlW@|nP)bg*`a&yfwm8VbFu#jLya85rV1SsD0IOk(AMnp9j;nUe~hu0#(5^aCYf z`WqPcTBB%2J6;mq9Q1ioggJVJFmsS5QP8!cPrM+s%alU3qfNu0n}9wMfiS_Z3~B<( zv;?|-^igAk{)ZJ%{pe%J=tiLTzY#{j+JM>hbyql++LQv - val userAgent = TwitterContext().flatMap(_.userAgent) - val userAgentAffected = userAgent.exists(IM3433.isAffectedClient) - val mightCrash = userAgentAffected && IM3433.textMightCrashIOS(ctx.text) - if (mightCrash) Drop else Success - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..86f838b575a876f27df228a0260265af6c536a22 GIT binary patch literal 37060 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 BL}~y4 literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.scala deleted file mode 100644 index 2a86091b9..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/LanguageHydrator.scala +++ /dev/null @@ -1,24 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.tweetypie.core._ -import com.twitter.tweetypie.repository._ -import com.twitter.tweetypie.thriftscala._ - -object LanguageHydrator { - type Type = ValueHydrator[Option[Language], TweetCtx] - - val hydratedField: FieldByPath = fieldByPath(Tweet.LanguageField) - - private[this] def isApplicable(curr: Option[Language], ctx: TweetCtx) = - ctx.tweetFieldRequested(Tweet.LanguageField) && !ctx.isRetweet && curr.isEmpty - - def apply(repo: LanguageRepository.Type): Type = - ValueHydrator[Option[Language], TweetCtx] { (langOpt, ctx) => - repo(ctx.text).liftToTry.map { - case Return(Some(l)) => ValueState.modified(Some(l)) - case Return(None) => ValueState.unmodified(langOpt) - case Throw(_) => ValueState.partial(None, hydratedField) - } - }.onlyIf((curr, ctx) => isApplicable(curr, ctx)) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaEntityHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaEntityHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..c2e76067424071a9f4b1274b82c5bdac57a955f6 GIT binary patch literal 37410 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#cNz~6+}+*Xg1bWq?iM5v-2LB~nRCv}x%a;B zm(4@fT0dE9cUAT7tt?Sn) zM^Ha=X^7ORwu{9ik8<$wyg438ko(@`2J0>JNh zPwK>Ju{}_xc%`dTMbbbUrtXf>sh~7>Hr8KxK0sR`$g;vYe zmuVIN1CW+)=K4}n)%L^I{mZ>bvx|(ezvxk{1G-w8q8S@5Zy}1TBj&Y)?7?(&d2CxI z&ez9wit*rip*C z)}@^3HpMLY!i~=8ai9IOKw+N|)vQ3b`3$H)=%50b0Zf&h01nP9rT{1N-#2+y{J3I2 zE1J}ukJOxkX808voRlm*_|caSGFSmiZMU3U3by0f+>@KTg?75R3~t1m0>f7h!s|Ru zEs&-m@gXFkac2Q$Ul4V$Usp|V)}FGZ==rLWg8R;T9%nD9E%{BydLmTtkq~OLA!Rez z4CEKW_$dbJxj5%OPmyJ{sut%RimRb3EPvJ%ji>!eflRuGMfWoxfH*vXBEA8=tfiP3 zEEByn4?H}1;G_JMA=Kaxwk?z!ezmUB&f$h08~$oD@~TVi*GJP!Ha{SdE^_d% z_k+f&`s?yZ{aTVGC`og6o(-5?DrkXk~KP?F!}&7720 ziU#Jvt?9XK00xTchUeyX)|i~B{6$>MS~+SlUz*2xX;MA{GuQJ_hTVlML*cU$@2)Sb z*fJ7ju}Z`;p=7_xd}r*M%s*`Kdwc)-Zi$fLp63Dz@5mCxkZ#sp;`O=jlHi|xxn5nx zJqGo~777du?eBg0=-}{2ThzzxS6R_Io*1AET)tSrimBkm2QG-sNUY=6#%H$7jgfzd zgKA^j0s20KVe@@vxd|6&5O``Fds-B;fNfO#q=7yDkUygAxQ@_N^JRE{b@G7R8LAw* z3|n&$-N4akdaP<5h6&y!O-s3Y%$vNyWa5Gt*1=hcVcKN{MRcRlySQD^!ROnvxv11H zx4Qd*^Cab_rHxb-R;4c$kS{f#Dm+W4g}C1D-W=&9Cn2LqLwtPUfExF#u%cZKlg3pb zC15k|JfHXkWsT_Va#L^i6Ft|`P7habmO}KHn9<>K7U_Nf;Rmj1;g%@y+l{nCMb;_p zDj4pU#^VN3wfZuxu*;~E*lumH;aom0$QKFP$kFcV}Pq)JiJH=RhN+3;9o9(Jnd)IVkU}O5iWm4 zr}Ukg5tgbOudVp7!(2%wR6RsPnN0L#LPEe`N_VPta3Ha$YoMqXg`LBNkM2gb9Rh3v z-viJQ|oF6+MIsh87I1WYOB0hz)hpP(SB-HW161gO5Bo$Z{OJkkd`5y zzJKKJ(=@@>aiZeuZEtwrAXKG8zfbEx_<7et7)Bj@U3?xkSowzx$s%N zf3~JZgy?M5_Q}nifW6!j|V6J#>tm$aSJ$Z4H3i_ox_z`rB+`{=GA5*f82Jss7##Ymvg|ou2Ov~nG%G{& z6^oxf5ppU9&+**8ONcd*`T@mRGeI|irbkF5%m1Ce2T5SqVt|Cw8$oIUoK>xnLY5p0 z`o?UkWC*w7%wcq%*pGPUk^`Qz9v?W)HJ?~|7ZR20mn{lAbR!7851Sn?V=|T22m^H+W-g>})bomAgHy>A(q~B1bXX?~pwBg~1sxrmk06zi@ItMDEnWxi z<|ymwrl^dx%(=e{`58kwXS@E@mr3q&_28*Uy*)ht^ia@U)k^p z6go(f?%^S83U2&R%%pN!`4itxgRHp0Wx@1Vuq60-cv#93Nq75vz7+YYst;6sgi1eH z;X1b*kXgPi^e`m=*jhy;;FRkQ*ZA5BwGvdd*Lp<~g6b@j=j;zgQM8rUfjt+6&;P)))IO($d2 zchf>F{E?f*f|T**4v38~V7o%<3kzs%3)KCSUYU7Vi*knA_)E3zT^qJzdheg;%yZ!) zCqmv;P8*(aTaIcK;)kR2V$nD`GqNRaGjdfF_rh-l!P%Rjm)B$MJs?JGMB8wF==PgXLLbitKzdD5!0&;}NjUAAk4QX;vj$EIO$nRnKwJm( z%xeae2y<~g;$(J*l5vGbFSE_?4&X2La08pkXU6Daf1swjz3uZQ*o-)qt2xsgFl!2| z{rBwxEtpsim5Ex41uccD+PcvkSivbSb`Q z0&HwbY^0@?-^_83?1i`RGF%&Fa{Wr~#t;g2WwaFh%cb<2-o2ae5?_KgIczbs)48Ak z=ZPujQ*5%s8HWy}J7k)gjI3MFgWHhB$6t;W|Evz{@6^7@gq3L1uX!bc-ahYFkMs)p z&&Ac=p8$g$wCj$8c3ncyuKUO0`sbPP?@R2T=f^}br65+k&u6a)eIW^0#r6^Je&tiQ z(@WPB`GiQX#NSHnZR)L?F-q(N?A~$v=Fr&9PTs05YzW{nG=2!=jf6nOnhjAl#}Kqc zO*!sqkkJscsUn5vukGdTToM#lm^rCS`c!%FAyMHOp{|W;pdNv;DbHTC4ZAw3@K9PU z{&PK#E`*NcOnmCc(41@+uXgf_$?De2&Ptmtk@a-v-Yvxj&A>i%sJf+jV*?5jS&(uKiJp_Gc`Dd-8DsTiMSiryxHK4&z|5a;e7f)Mr=RdYF z1A~Me>3ZMp?)(Cy=O1>l!C=Ev_F(aDgde>-v+K?{6gXyoefx&{Ddxn;kBUr`L_<|W z^Fw)jy+B_!jxybzR#t+#`O8a=Ux)1((1;{D-{vpI_~BEMdZyv8_qTf8+7)q+;Zg(OqcCVn47+n7H2(xST!gtz+-D z`0=yi$J~_3qgs(uk*rr7VR@(b7s}hip+WaXEUQl-QSO_58z-pa!zYjHzP#UFM8qeB zPP8^aM{7H8erZ2qpfIH$wcp?y;%)ov#p$v8_^x%s1KtN@SdZmk)6Sfe=!~cHq?=2R zbRwSd>jqlIb;alhl{It%J1Fjb1gM<)A(>}{atq1&XlW_+GHx#8JGHx!7TPKEE%4&Qmc zf#04Y0`!bfZ}$;6!6d5*kG-x%g)Ry`#o(U~Z9omJsTO&uHS*OF@#PI+>1dBJ55e_& zc|GX2@Pm7~UVm{(*MF`BE_ZAS3RStEorb3HoM!VV9l!Y+o&klbbL-Ahr|y10{#b#!U5d)4O46r6Vp1tQAn6-M=My#ybam^x9zL-eq(LxL ze+UnpRR`v8Q6%Niwo2~NAP_5qhI$!9RB8dB|MnSQ2CUz`8Qf3EEWrxfE3UelL*UaF zf2BOxeCZHm6d_5jnRcI9(~VVS?+a}iPFSi!nYX{`|5>}~Ta9I^V{P)BvUsrP=v;|Y zSo#=)e%|)9`0+}e&Uzrt@;>OT!=QR$`srl$(c#YVWmxw1O625BI8#Ns$zXo&ynp}d z>gQ>{b0#N4NE>01R@7VnzDGH6<`u0*5aRN;y?ZLZbCN}+jFyxLYp8EwHVj{C%cXcl z(c{1+i9Z&yclErq_gqjAM6A7OoBISj<&;JOv|?DYtU6*_zJx4l^Sj|boxGm^v}4F5 z9{P^%gH3h|_g&0~$cR=pvWS8=LHNv~LStl2@>!iM=7WriOeuzHB1c6q;~o|RnHM?@5D)z?;_EZx^ zSm~f6MYP+f%qoz9Q>9?Q2y}>V@h8pvVIU9_hgO)~Q4z951pwFK9n}*>Q@q4M3r^^O z9$^x{#EA`z?SL-K{XO{!G>P-CNvLf~0Jzv+@zqWERLoE;o`@rTvKtWp!am`Q2c?pN z;^_WJ)diu2fN=kj`X?1s8O@nBna6(-oT*TNMiBl`k=y}omiIp-{s$`7>#`arFa;F# zcVTV>AU&#RAg@@BKbS}nnf^;66Db^xCnDS*s^=2io6tIbNBw)K&{?8!%B{T%(=eM~ zQg@!Ti&)du_v``OPsdM}WT8E&=L3RNKnhJ_Y-ww=N7trb8>Zfpoim}N_T0W>`||L( z?JHxX5VKzL^V#6~(~WDJf&HMj*mM8lgj?RHC66n;`=QyKnr)AopYy^>2YdUY`P=tV zn<54+Hr$D!*On2nL)h=eg z;T##eW2g9owqFBZ05v-S)iG#gw!XB2eOC`oj7N^|R?asC7G~{u+F4SL58`m9$A6ge zAnI?hDYy}vbq3|(ZxSi)hg-*YnwISCvOT=*`KpW|oUuJ$x%&CIpS31Xq84p9ht)3J zFsZE)QI36$)LKfwX}7MYm~4CPU5^`5xusX{cS>5@I6CoI=^ltqzROMgeo4*S?c%QX zX$oZ&C+xVq(E}1{m|g>CyUb`IBk<*Q;JjGrV4Qu!g*d!Jb}U2n!+6Hlb9^}uG@Zo4 znSv}o346n=r;S*W+{uDprX+?IW%1myS-t0unbE@WVvhI&Dro(LQ}FW{c^ut+oP9;J z?nxWiaCFVMw|i<)`@t;o+|`NjK|p?RXlKt)jvMDaixUryrLgC!Hlab69V1Zi&D{~0 zuMtec;%?PmV2s~x@jQcP^ZAuHXkv8_PVqelP&svmI)$MuY7BE;hk34L@P-m`Hh~db z$;7PcF_U50(qKDS$Qc>U$7<}Rh_0ALp?zBp)7J-{jp!qvZgJt*gIA~y=43l* z2`2im?`MXXJ0M>2vMV?vK~Q zm#>#YgI?_~j-J4~*QB?FlgHVg&qofdA3I)KMY3*Lo~MVQy#JaTspmVVXZ6+mgLoI!X^9s7RJepJnDMi851cci#^d|8;eg-61rk z#a8PosQRv!7zNCE`uO>0Y%lbMUP1BnsA^F+IiZhxc40n1$FwOYi8_C5{62(lia2b- zDX!8W*nBg2)ogzrCc$#eniqv8FpxQ4prtjTM}w*bLwCRcMGLo00cDYgjbAy2aqZd3 znX{Oqf;w4U^4wQ@y3r(ka5?;FrG*Qyag2!f^N3yBYA7&wFIFk@t!^2o+e684jzX-| z=UBrbdArn~ix6f3O@E9w9g$u0$3uj*^vEO8roy#60=`}v(HnYEm+Q_r0oP(_4Lvqi zmAQa_?#94gOsNMt(;$hu(n~$6(5A@CyB3Kl5x{j{n~KwXL9xLtJK@;n*s|@RLdRu% z&$lr~eYKch6PON3`S>eZO(^i49=4WoG3WwL0M9(? zHU0VTEdObL{@&8J@sYp3YB9HkB1Pdu;Z|q$HBcvn!dh7u>`;=MByg~4} ze_V@T%{`LEDD-^e<1%E)4iV-M^N$GuTT6Av5=Gv2>W7QxIcy^q$xg8ilnjnCMSN8K zYD&p#gm1MtTS*Rgl?*>#Xn@#73+`7cbVu2@RowHVC>>Wb%$`MAHJU{vaW$hmabqTP z@hiMpw6#A3!a;k7A@i3bw-y>xYo+;BRq8Emz`Ijy{%ifBNSqBMm_I5E2`sB^kxh!!svrwh%kw^AcGlEemFd#l^ zFGd$Wz_xegK7UfRIebTnfiEp9r|Q;5<~_wIy-dbbUHNFd*i_OZwyxH*v1Frwce7kZ zbaxna$Cv$9j$$W-XVGg>WS`HUWS8d!wy(ngNi?^t4x3Yc|@aq)Ht5; zsxQvLm7hAxIfk7U-u(Uj;a~W2pOhw7@wzyxt#nGH=WyIR747y|Qax+4%|FQ$& z`{aZU|A_tj6jHLAMix45lC)ySa8aI!4Ap#wnKUS=EXkUIVQf~7czd5-&qtNLJ9<1O z=)$w zoR!=iG{$KcFd`|uozsTew*&fHtW!-C7Pszp-0TUfwhLErtW zdn%>91T~|(`thCNE(h>EuizUI9=h;0ugzdf>kh#t6$}>}t9|j~gTu?WlF4lkgedQ6 zmqEmzQ@7tC?x`v`6W5lOp*2U7G^(;=vmx9v?CehCj13BkRQ*T4Nt56S;BCz)@@ez$`@_ch@Fi)-94T&$$ zsh_WAEeJ3>5AUpRNV`(As0wTjRw9V>&1K6DUS7|&&gLOQEHsUO2@)-f9Q9Hx=aP!uPRr=Bs7 z$FwJ$B>4OXw?J{P?5(xY3_*Dy)(nA7i7;em9nUYD=#8P%xq94RP-gD%oeBq651+=o zl^q~z2$R2ML_2r*^W;umK-9x^#+k!+ra>y|Z{A7EJD6Bj-{N$Bq?bYO#GYQV$mh8Y zSWPczQQ49o=5T}fn)HL;e}fuwF-@lf7MkXK>?3^VPu^if56Bfl7Sf1s1UevWwygog zj&PBWftWPTO*Mze8e(4#?I=HQNK@zYc=I|IJA-fn4p4G=EQR$L^*4e7F+KKbgEw3< zcR@7*xT-fXiUZ7a!~y&MnBzIn%h39Rd<~0-$Z8;%No)x~b@<_A%le?dns@tN5lU{0 zv7jrFVzKKse20^^IDmiZ0%F6Tdl+$q{8~Dh>e>Q{7hZ7l;*x;=%Go04cZmvT2oAP} zWk}X`Nu-Q*_uv=reO+DNYp4o5-PpmXu55+kM{=S(J5f@F`CX<1^{cylgnw=J$&cnz zrMb{$wmNYu0FqJ^wk`b2OI}uYC+7_ioMlq)@G@s2^FkP8x25WJX1O87mcC@uUGPPW zA*;d7mfs3}YqvreIVi)H!>zNMDqq%w@Re@CIu{35qD|RH6Vfj?Y?N!3sLw(;+Pg`Y zEim*bct?F?FacYAe2snc;Wpx1`!dqVaao80t_lE@j)UYY-T6m)>0jw{|4u*rogPFi z-dXO;eQp08^3u!tWmak~qrtk_RVqh?1-e7I2lJ?iPZBky9QP*vB-XYh(95$k>U$~f z#!{GajkO;}X9ht)N474tEBeiTWxCzNjOCmhI1AQ!u$L9eOn=dlRHvB$ewTNow{EbYF1}2NgNH4mr5QuDLmPs1(gz!Yy$SlKXG4v=w3fMUrX=PXbr0!UHV)#%3_s;nM_6==1q}J z+Uzd7X_Z@iN{Ukv^}Tzx7JS}jgavl{LLPx(O6{SS^y#xBl1Vj#XB@4(&p^XxHMQI{Gfv5r_Nj#c|PqWiH z%dOC3|IGtM`7a*DU0Gc4?UD;+^jc%*qahYn`cgPrkfp@$KgHCqS^2)UNr@Wt=~W%6 z9P~1(L#Z=D9O0p2p{PU6oxeV@y|cpcS-}Axb&GFKpc`rJI*Y2NutbfPH=1vRlj)kF zpPyYiIAVZ^pSId@cEtks48<%4x$1{6gVV0%BT}UN58KBt|Ha1V`v1vBJK_<*b3wBh z*KqKuq{dnoigNQ)(vj6K=NoMB(F4wlHvTXE9S!NTQlj@dlb|BngO@bmSG*6ofx;rv za+?*-Vp5Po4Jydk#8gf=*R&1P+^y>b5uU)8eiT&ZRYq6te>xjBE7Uo+(u1O0m0eLR zCN+I%AYBbV;dXc|FP0L$jM6O29un3vRT91A6Y{B!CeLM1hUy>$%1em`lamq|F#X#c z0#TEKR8KUn&_tBIJ-Twrxn_kITnG&|_$uB1SxwpzsO&S3pyQFBfsq+)|4Z{&zxaz( z=Wqj9NU~Fuwux|JV1&DUQaY*~n9t46xRT!NsW!!~Gg{nkKb<=xq{42kd~HNhE;GPnz}G07!;9j$nEYHYedYv?;Z0T9VEW5 z;L(bV(wmS81RspkiIyvm326$7|eupr_f(!@!fz|`O* zk-`Q?5Xo_7v2i5gmKDtwpdp-KIm}~z9dSgEz31tf2_HQ4-Z52Ul&;}`Z8BpUEI9LE zgaLvP*QJVcXTl^bXR6IQek(=`!}=DG0LB-KNegZw$|!A!R+m~`i}z*1jl6*wEmlB> z+1&+fN_XeKQGMJA?ok zaMvfuk$}cG$glt+Q&OfdZFwziBq7$Ot#Aov8kSw!;82r zUAL9;XLRAIdyG_;m3GlrI#WwTFErZ@Hp*#XF}Ug{0MpN@X8^LAGTj*9-(0WXxuE2) zzML+g>#Oo#6my)5D>@q0d@-Hef;w5DPRU2EWx9b`8sHAM!&v>L`ypP(*4z-&WG6#= zh^EUbbM)J85}qYfIn|VGX2U9J5N`?atJZ$zype5r3j+;kFoD-{Q8j+R%+7fH(@rKR zY3k1;-v61DG`Yugvwu0j7w(L4@S7^N64~}#Aro`_et<8EH{)hYTNKRUrAfXBcgDA5zxJS-(uuJCLkaf?=~P+HX%e61 z9veaOBOAeg6y_1_6S<0JVov_4(CvRJyv)1`os8S8$3ECeiO5`tV_My_@l^U8Ex?L@aEt!YC@?xx@2zeVc)7C(!!>mg|(z)*^tYN5N68dSKVoUpX}*ZsVF|! z`Wr*g!am6aGXp^RoPEaXTh-jKztXBgx?gIY=r=@sWN--|ycHO$U$XuqPqoVJW3K@p zBRG10Kv--@JF?VDWR`G0I^<0>jI7`)qEC*_{2X#(?nXI20tYFS-WcJHm5}HhkLNcN)VVRh9Q**w1D&G6uN+BGV4+Xr^pG7Qu|5 z@CegFk*ghW&?YzAw(pPUHZ7U19T4r@?Zx;ys7-7x}I02#8z__7CzFHcre4 z=Kq6y##naiAv$Gq&FL@lK4aMjRjqpjtrium?|m-cVGq^X;#fM33^zLi+Jx>KIldxf z5xspq9Q%-ebHBKg+F1-$QuxHEjq>GZ6re6~$ag7MjDCerbGE=wp);%M=)%2uKbFz5 zd}9_&SLLKhUWv%ny?<4!sT0+xKK&clP2pFeG6xFV65-@^&5+Rn52n}v_#5%sId3vF zs$(!J%%urNk>jQ&34AEG$90B2Qfq1(;OSO#;LIIJS0)V zZMRQX(`0DU zZERVS>DtN@~QC!PeH5VGf;V*l+O~#2dRcyQ=)KY4p+Q!2@XhO@$9aqE}}I zZB}oBPY(_f4#9iL4DAKMYpHcG$Q=!U1qWT8E}TOa;5BR62NU8?GHn?I-4a5H!w))j zY(a(*f{FWwfq#T*C6!GiWhtfM6|1^23yp)AFok1a?X>02hRtqGX$r?t252C&IJC!D zTtIX@(Qb#BurwG8k~njZ>P^(by2?ZT-X@_&0yt+O!@#$pL1-Pn(LBVeV0A+;extEC z+`>!_acC`#uM8lTwv>OyZM8eE_W<93i8&W1`*m<@!nXZup)u_vYA+%h9a;xi9Apn7 z8XIW`7%pWv?hoi2Xck(o-Jh(6{+>wN(6=oH*$0z2eTECvhN7JsTpc|p!-<24=Ro;j z+%F3EfupuldGIJ4zr?Cu!Bj=lyQ3r zY|QQ2f-X84B^p9xjUnskF~nlMloo!{V@XbF`U(WU(wsksa1ZsuVd-%%#WbWnb_u(60Ugy!Ktcdx24}C81(b zNizac@ZCUQ*l6E~ypVnE>=)#D?;AV-6b@^b_4BJq)EaiZ99hw@NIub0hGRcE&Zr(i!bzqz@~`L+vOw4p@*I2Ee&QoQA~XyU&k|g zvg4ZL%c1`O9)su>``Bd9e^qfWuGHxW&(@8?+C6B@>A;I_EtZzklbb6|Ki@C@Sgam{ zV3R=3Uu~nrzlx_O&+Tzo`PKWhQDMCjjgYS#$QY^1=Md`=H_lKfog) z8UrB;0#kF&TjM8coYt~gyK(R_n|q%bMc|gO6&KVnt~kKfFs_dC(Ze3LS-azK?`@5z z<&T-zyKgg+%Q-|e5+R6jf05q&NrkhZ3P1!E0ditGZ5jtLg(#1L_6idZt8u!hi$>jM{by<-R3YE7ks@6b0IqL|p{W)k_bK(y`s? zl}+ahXP>Z$)Ni7$=^D4HjH%}_0w292s3Shbuxuu5oLK zu@@BeUG$evw>5TegCCl{F?K|qJwNwsC-&(4cdMpzynd6f)$$_ zc>AbfKXdP$%gpJ1ff^WyZ6TB}$qvOwHxCSuLIIXgfMuy2|9mXBmz*VP1G+NhYi!m` zO36LTa8=@)Y>Yf88IgdVLT~9R4U;40msOP0twS3WD+!h>7S6|U|In%8@JOs{3X}>X zMyWi6&ss38$XSq}68?auzH{smUX#S(=py#G4=aTIfL46HHj257m&=~hwE-AQTqHOs z5zi?L5xyoYt-)0;L!Dnz|Ha|@sNza7smMXGX`MCcUb7Z@v}+CBeJQbGdn2(@y7ite z5CKTUa^K{HmCo$3`J7u4NYYoBE#N>)0I7aHyZEG#cImbItbWeXv=y2Sd2<6nf1ih+ zfdDL46d5B*z2+Z?_o;B@-s}t{DUYeZex|=YEzg;hg%Nf~yIRUESCoG>>h&yrD(ZNwgU5lSoEwD@aD= z{{r^ttw{=s`4_PAR~NHr+{qy@?C0wnpjvUq2CoSAvpmy%-hrrZr#}L)bf_3aG#gV+ zVC7~e^bg>u0R&)5!c5uLduS14H7M+7yc+kH4sV0=t_LwCXpu;6i)FQ<1~yS>5#P?u zM7kQDDbT1IBJhw;*@z_<DV67kUBg)5ZJ#~<%bZb#;^T-S2XLud~SgqYV zT@*+HlBNJEiD}1%aWBicPv{jg%yFwT{rykuYxQ%9)VZLGIoGA<;iABtp?@{=f31yM z!Gp<=4(-?u3aGxh0N2hfP)FIJMF5`nm!MZ+=+z(caZh)&{6jh~a?|<@*$Eh?e;_Zw z2xxD;8xY}x6((V?(jOHI(qD`)r*jNT!_4@sA7~L<#VT4NsbPSCr-WLnmw$KNggQN5 z!UdOaMhg)7*t0-cE!M<2tiM5Mbre1Zsex?^bO5Ua-}`(tGozpZQL5an0WY>TdUq@# zeA(sG0))2<+=A+5n;M})QzY$(AYF6%)nm@WPKvhygVeIF!fFnGhPdL601=f3kGo|JLdg4ET zEbg%8;e8Do%~LdC*yE^gPTzB}6A%y0iy|x^zvYp$)q4KG4mAuP?T#KT&?V5gq;PAe zsYt_X*dX@%S-(`YBN^`o_J0F7D*XmH3jYJZ;m$p97izd2Zuq2!IC^Q*gTFFU(V@d4 zC=$YwKRcWtc&qi|_7Ig2@FA_!f46l^-G6tm9}mHS&<72&_d>YWaeJfkF9mu*GXq4< z5dK>ph&IEan3nvwJaD~^yC*Xwyc>z^-r&QINo8Qe5moVs4uoseX@AlmaQ;PKVrnV4 z1r0L4zugLGj{tAqALRV+bUMi4-TRko98^MTe+c~U4xqayBvyn`tSq9oAgoM$Vv;l^ zQ=UW7=~-K6{HR(Hw_I|O`$jHyIsN;pEit)buk+NRNo5s$Kj-v3`luJ>^9V&JuFWW5 z8Wx%F$y%!`FIQAo*??{P`f!7=S2JRT5le6n+v+3(t^!!3^22!^j8}<5$@i}oS?Av( zy^bOEj}m(KOr&d=c!nVHQXK7rem2|Xy;33Q|>kaTy!$nDXmDM#W9iM1-(7 z)torjFMAMsbe&gWFeF%-4-ORzYQmfWK2%OXX;Ops%cRkK$cWe-~>##?+mi#JIVbBv!{C2RV|2F#1&WB9DBb?jM{0YhWYGd}E=08TT7 zFuQtomeeTAUs6kzdQ_U!(_>#=>^v)xHujUX-?1}{-&Bvui=reZ?LE#~z%=QU;o50~ zF<{~)X{Sw9+G1U@yLB?HD%Uz!%9FZ&6G?o2|51nGe(~(v}Di%N*(php&S>z&uRlP~+{qZjb2Z*v&MPj~|oM{Pk%W z#$DZ}koZlC3>!a^dDoV|r_wBDW4P+V^3jkHFg_uTUXSD5rPNX`th$CCgzuwl}n_V z!(&^%ec?%D4ea2G(aOOyez3n zvEO{&>juI@VZu?P$;URAT6%+*Q25)6_GUa47}EkPT*X7;tJAGY!2o5l%6YiTc_G~4 zP}p$vXzHY;q<%d%Xo1kTS{Rl3^VI5ajDXY0K|qsYsq*(DCS>d_-winWYe;&|&Grg_ zGFc>^A9>wbgIj5AdmfTHt*ruesi?9TZt2!z7Z1jihMhRH9}bcbH>Bx?b(V5oVTmd} zeGdUWy80ok`ll{g#m(Hlr5t9$aBBA^iI6p9^IY*fR0=WZK!kKrXqI#8%q%C62zqrq zPjE{S=qt_RU<9ft;qS`e8+$>y;w-u1h*<=WFxU__wx~-biL6>9izwJmJnCKHLAelO z&<44I*m17g`twJ+A!%o@&G%Ic@Yo;Ra!T?be2)3VLJUPiaGEjikm;AE1~Tf7izjes z{;dKL^-mQcJy%4E6)Kw5)~;272TFX%`e`j+P_SQJmjo}!#GmQ0-Yo?qjirB|TNK(O zV=2#wl{7y?gNsd6u-{?8*d^(0hp`n;$=KP0kea5c?j{R8FW8?O^`3)bpWLI#Uh!5t zyej<^MM52PsP*j)tP|^7574=jzko7MGF7$fh8TlLDb-0!0N4!7lnoIq1{0NX(K{p zFdejp9Vb32J;JH#4+y3#6qU(SEX-}zC=~+bp_e?8{pr9Mm1ZjOr3ufOax#Z{OH6aF&k?49vL(1`Pk7@9k?@xqOncurN1u z`STTiUxSna>H3qW2kfS!L8a_uFtX8c-zf};A;a+ge>Alm8w}-R0$Jb-`_LrRL@pXgCr<>FEni|xzvz%Md ztNk0Dt3rZIMmX)=ot4DR8SDGAuK?7H6!#3J98J`5cO#zFVfQIxUf$>K#gqMyZL3s6 z`w=&15$i8yZ7Ik`HY^dLS8uK`L9&;3*1lG|x6#}+#avY$s6CB z$+&aEa87VWXiLhTmtSkA`|6&vQ-8+Isnw0w3D5FEe1g(}G(8FLRjrXxX!c5O=<49& z55H>U%eB|ti}x(k!vZz-j=WoVagE{QEFSh`fGZywopax$<8<2tpyu&vH-HCFv$&vX zUG>uX>SV>B10%V@AEk0T<7UlswQY5gE}xqcdIo&%*s#SV$w?6S;PuQb_2b3wZE@Y8 zUQo!MxNomyaPfGwF<&$KLRHmWi6J2} zvCuy6>txZkbYj^)PwvgmPb4=jQiRLy_fWfPi2_?OJpa<3d9!Xbs?p7oy}2ncHCgsh zef{Ig(!Ej#(x?<_fHarcdYWdE&fFm!U&%g-lQ4p!)lxIlzBx#nknrhdI)VgIx9W5vNW zO?zaW1OcGpn287#OP&Pf^{rujyRBeMUWf_zXSFX+WfM15<31|^E?}6-dYHo6QgSX@ zX>KaDGz(ruKyA?NHY1cmwZX1cEjwpjH2Tbv2X6Oi89DbJ=oUoMm9yRx0vbBp0uAAT zhB$6-M7*^LU%MW*WstbKt8b^rS8nWN>N2x$)7p)2RtFDGc5Z$$??LkvAEiH>-#Sja z&q@Slyw+~otKRCFjyuBHO0m=^MXXzE0isNJfeJbs>zgeV!@AxD@h??FeJs-vp?kCY zpjQPupIje?4a?(lc-%>%2}^-J@Lqc*^9Lm_27RFtXb z(OWjc*66XBn~m=GceL%Br+KC`PD)xVPc_ULc@9|I?un)CSBxSZs+dgM_;U1u&n!?; z!zIQb&FAN}dlHZ88I8YK_~Nk2G$wceLE%tjD9E zo3Ot)LT-||%#U=O7$CrazbI*Fe680+@lekc^9R(eYwUYlYKg0~Xg z9(?j%2VxtB*qAdZ;O0iZB=P?*hMVLbqQ#4T2-rr$X05WGm= zf8+c;;BTI5r5mB=^vE|rVHlvW-_}rUoGN4=QEsm;qn|?d$oBN8pKD|jI>3NFbAC)B zOfBO#ki*AJSenz*^v20M$k)aV4^G2(vi^F3glygwG1C>3+eM`!0HjEpP2;zN=hM)= zy{xgmJIqJ|SrLzM;D#Ho+v6#Jo6p;U&G#dlTdu0%T^_^|_igQ zyLHn)8Z)kxVfWp4GsSoH>%G!o zOV!WO?*Kh#(D&EXbmA$$)%0l7(-_aw3zF|IThENuB40{ip-5H)eqo=T;f5;gc=4{| z&GNlFh%^(<$-+`J6VA>u^FE%FKrnVI@BQ@&s(}J(|M}4pY(yys);Z8;i7eLp!VE9i zoRlS?(FnyV2j{yzSD`^vtlJZmRS6)rIG{ueSxJdPP>9UKP}a(l^mqk%S>qIyV@t67 z^Zz649iS`Qwr=6rwr$%LRIDA_woy^Vwr$(Cor+blor_9I;hGz)N*yAaiY>{4eP`mlR1I&G|#6|x!AU~7`o+_m!FLzQ19uP> z<6^17Q%4}rBj(m#7io0JsqxdctL}>!U~9$Wti7Ae*EyjLn_>GhJ1vi=1pat@zSU44 zR9~>+RDE(^pe93Rr86 z)QsM(r2)Gk=ocQkfU<*>!NuF=8YkX0)xcEy5)-)~;6AXXH8&`s%Ol3+*jikP3`bg1 z(j$X2d(vGmQ~Kp|66(@SgO}T>{Cbh)JGP8oIIcK9BD4keF4|At(;BloqU*e__C10) zgZJOfdYLVnjCf$5-5Lvqyy9}qzfOL#a8p=dR7@*4xL&(MQVjr1;GeHjV|hyEJo*#- zDBuRqi^6w%@hv1R;M_rW%aKQ}$J>(=8kEt;=@V=or$4BsKJ;Mhu7QjcA*}5>tJf{W zKTkTn>rvN={)Aq7?#f;MCq+m)cb*8k-mM6V=#bRLN{=U)Jc{_)RrRt}>TkPR@ zT-r_=JmHM1#q#DSeWOi`+B2oHBchtj?`1@scA={e-)8C5562*qX~ZMX6m) z)|13_mcEnxDmyu;=sB50k2=@$m9&26^P^?m+HtWu7xSJA57uw$Xpp?FXGdsFoz0VO zrVEdu9*Z4amB(+-cn9Xaie+5I-^}@2tj`VjmYXM-mnxtqcZBQSO>XPAlB2en&(6?b z_wQ5)1C`_ruCa-~bhvTwI=(x74>)7*wRfLr75ZkYlA?hWw(jWiSaM)H-g&1yM(EL< z251!3_pG>x@gSa(^-%HE>3GVKQsthZd}`GrglrIPzVf1|L)Oy;`&##`0pskc$|mx) zJ(vf?DMvEVYZGx-o(SPd+qwFF?DFn__Wd#aH)W*gPz!u~QKA){5X$E5{=lBlQy5!k zzu#5Nol^dgkCUR!OAr56_LSn_<=MS=2hp>4hyEj267SRt%5df?o8a*~3t3Y*37^E{ zDNaI>$r7?FN9KXBqtsi6U_(?xMqo5yn$wg1FvO-a1%94}9giC)Sp*r+W ze*i}bH8VpI8*L`SRdF_z`yGJbokUPic>TN||C||<8n!4+R+e?!_@f*O+pE!C*G#nm zxd&IX+LQ*uBL1V%k*W!(Alf2G4{M- z5<FXPc`%Zrb`GYKotm5}Q$i;vUMkbR z(^$oHS5gve%u0UUISiR?XG~@5zDHi%XNk8r-^0S%)wxTc%gKKohZB7#&psy4x^N0nB`*`-P~Da(Ag z-;a>Ru3k$QzR`X)HM;EmVdgu%QQ=qK=1n)I^^|K-x>WxHwhRBuEfdTCb#(MCaO!zi z9xQh{R=u^KfZ*28t``cp(hOTRNc%>Jm6kpf60!ar-i<*kDG_$$_B-+zS@DurpScqf zVxKK@jgPk7m){V;FB2k-%OwtS@J1OuU#|POl(N`F-j@o)I!Nzz?Q`%8=pbbyha5j4 za~m$ht!CAH>GA62twWrH>`vYmHlk+iJ8VmoMe3(>zq;LJ_PorQQ-|z7fxLl!Z3*ie z0!tT|`vl4`thm!Y9|sGL^WM67{X<$&7rHss-%*z>mx3Chs>yn1F%gJagrGLW+#dpp2W02&O7y@(WXk%S^p!TQHb!?h?%E5IgJ9$Q3 z&;2!mMZT8T2PTZ^P)UHSD4dpEvGOGnLs5#OjsHL^E6i%?YBith5Kkmrb?5lrhvl`ndzw@SisG5+<;lFQdsdhd;*zH7u29hQYImLED?jt;xqilXZHEf`(kQ{|MK z_=fd%2!lOmoOQ9l$7va8X{BnM#0~Z|xZ=QUW-Z7CA^a>Q+cV_e%xVyF+vN4;cJ#j7 zmJ1@mk)L`I-|E@3CB8=7#CIOIE=o22Vu;%k>GiN(D7BYB%_W^u6_d1+Xj;jONY96voA@{0$q2IN{ zU!!*S0D;i~A-(dtHLV8J70GEJ8ZdZk9ZVFDQ0J0XRGLu}u^A0f+bmGi?=t4~pzCX) z>u30+S`zZ+<9}n5?>QahZ(86VB4BYvYQ8D~#bE>&UDm0R>(6;yp=oqT^R~G+1g>{6 zP;XXFT}+}BghbgKrU0KPo&QhTazRd@CmXXC~88&!}!C--VN&uTDlQfF)6 z9BN=49{Mey zwTBa=$jq?Z%O+)gyJ;Iwyz+~O&H5Cc!Z6bUd96jL`ReGlg}sOX9C#x|b+JR6H@Ps`-tqn1Mqnaii{mP@mklN9Vc z-%!(Y#~NMwf^X@?sBHXkwrAVm+GJJ$Tr9k+y&TP8;##+8{QEMOhe4gVoEvQjfZvICW+C^pUJT{(3ZIpT|p3O{6hGYPD%} zuIzhSunt?O6@@8DTkw>ms#C!EV7Fg533*&2kunl{CRTa7c00cIa-}13`bdfqcSb~V z9Xu#?FY@xkm{v!a!FzhGFuPx`OSM!a*BG>(5Cp%UYG<${#V7Y1aORf0oI`SD!7S=V zEn3On(CwfH1(AldR5r=z6aQ@Y^YMz7MVam~OT|d6%61I^N&xfD2r$A>96|_vKt3aO z?H_F^Rv`re5oKo?##o#~JfP`Zn_R7#A-V#vfWRz$cELMhQTOkj=?4+E7aDg9gQ1g+ zG#7=ypcF?X8`lp_EDTM?Fnd1hM1Wx;qKVAZ`GrDOuZLb=R;gzd-k;s*t_?ZrUdcoz zHn)!I3Fu>ktVDG?9eV02E_Td zNG-qE?rkVcn1hj(=j07!$e1?EQT`Pcf zoW-;Fzomvb8!n%Mr#udr|h7=546hfaR zYgX1;Jr2${P>hZ>V5I~t0=AhsNkT5)vqKwV5K62m`4(3=9E22%p9Az7x5#^>Qm<*! z1{Ee_uEW*}6X$uAD;S24ErizwRg*o0HAp9Y00vd_bvz&Zsg^Pa4iy9^Gk~-_mv5fo z8?|X)<|OcJ`0t@v)`kG-cqCaRB)jnxg%JDt5$}KUkr9P3rgCM{(T0?GZ$TstjFmI$MG5$%g2Ub(f*XwzFcOEr zXZS;Vp#lZezW^7<_}q#>LZ7Go&w%;#4p{e1-+TpT1w8sLUph~( z$pYvhpc_*VPzds$eGTK^>G!SsUddH_-`Z0lod%5J!=Wbeli(01vyvjvCv}p3KM79~ z4T2npfYJ&47z!Bj&l^A`ey2zJJvK6wHoGySGZ=QCy5ZfV;LOL--OSP3&e78?H5nEn z3sZi-dt(s5NBqMegB%|djYTbaEc)^_dWm+tjVxjjKSh+x*e>p&IvLKQJ|(?EBza|u+R{zUe)dY!4Fag|0R_0iUp zcCa7vM=$D!zOM{N?|5_lG)LbYj_7u`2OC0dTs&gJz@o$G;@IZp%x3V|PUjeLrxAfT zCA|I#TdL}1z{xVoKg{ovKSr+WJ1M~hGH9&e)_Zvp&y3Nq)i?J4-lOQm(D0P`sgHkyV# z`t_u{7c<7ei?G$5@Kt6ZN<0HoZB6q`1Iy?FheZ+?35^pP*&SWCQmDGTp^LwTt?u-$ z{s3OVbXqr!l6#L?t3alUL{G!r@71zMbvrn9es~JzA`uK%YW9lCS-pw88H@%K`NN@g zrV5i6X)Q2y#QJ{Z`hBm-mOcqqMj2MV1+1aHm~?n2vQ|SE4uk)R(z!}Jx<`?j%;2$J zbn`NEA@1=u#`gKM{zu6Ak3#HD9*~w{9>-JlrGA|j}@&<9qjPPa69#?U}QrH>{66zlJxbC zS2qyloOs8FSPn6Emto3q^G6Wyj8ID`3>?Z#r(SIdEfTCkttYl{bCem9%tx0HY!m-a zmBX;})B5S3If5+BPwrMhrQALb&hsyz%uJ)Ekz_7|Bbee9;wl;@TaIcNtQS<*AHJ0-LVH$M)SMVUDVgQ14zmP`DEtfKUn0(hMLGV60J8dji-;K(Ym)8J|62fSKI}XKeK(Q$MiJXN z%FJa5?H^k1On!v^s?-z&J>-b<(*#by9OF~Ja4BgfD5OM$d2hO6o+w|zrb#m+_Av@^asL+M{C^c=sloBvs-=oHBST+AnTq|lwl@E{CQ&2r z4R)n=UVk3FO%8a^jJ6K$citC&6E@lwB)wX>G-H_ky^I?2OQ6pvNhR_CX z!mw%!N4)JIOz-tdB~=WAyA4s%YhGbt1Tbl0ZIUX_m%80HLSkC)%hhGCkN54EnJ;23 zpW?ytj_4r$4qKAlc10ZFu`?wc;oW!?zB;Oet9T9U+Y(b?Q?#Mx2OQI}5nTJW+ER$P zfd)&Q+Mk9xVX%Vhx1#CC#1#WPtKd71X_>__H59i8LrRslKV#NxHtwS+>VJC@@f7jI z2gReQBU{|NwwRJYOU4$q48D_a8bn!NAHI{kD(J=|md?3TPcxcQ(T~Kl&F>C@moMrL z!Nch=8==ha&b|t|3%uh3<51KWFCE&NO^u)VD8NvpoT-@Pij zEB{M}O8yB@$GgkFb-Yh(HnNfZKS;P0YGwP4JiaKVD(ip!%L?@LKUO>`{~O||9B2jl z|HFz=qr;GqL#UIm#-uxI9}3UOsoQnDkyYznBZRh3z98;3@ox-S)^nND*1R&&&31Mj z5M6!Wwtiq3Os~Ij?lb_nq>j}RE%|cs1ROxEtpP@Fp1ZiUGC{UVrv1YxCU$sd?#dtd zY_m3!F+}QbI4+@*>*MhkfFEI2`h17u^L`r_t%qV1N>Z#aCF^IjYDib;p43ji_dybs zr!ZV`-lsE=%#P(?*ip=-8r>tC2t=I&CljrU2||R2BIc9>Bp5mhFq0cE&|=o&MT!HY ziXb)LaNL^A@KTnV)6YwSkP1R?JF7X@efSxdn^_Q0Y4GIkRCHF>Qv?CUr#UyO>tO z5pjp{!a245m*bSUb*hzUp#v-Q`A$)6aOeU!F;zPmS2%?J!&S**tf0CHyaCD>Q96d$ zsn$dal2pq%2230%234DGB|PPGL!i35UNtH{+aE>EAXUUg_N|&l%Hwbz0-#P5{vd*##_YfESY}HPD zZg{=~@j$aw7{+$9R-~yM&P)tr9o1l}--TYjtpxW7R(?W$Zjp4+8yT!*s^R*|@UZDK zrk;}Q3aeGrDHcQee3`iJA@1{P9$Mp6lqiVw^Dq-(!7n?>W;3^K?j4-AUbr?hUy@5o z3mv1G#Tyrvk>F3V*Q|=c%c{yoEs6-tz~V(Iy_Fy0`wK}#l3QRR%lmTCrHrA3OevI% zVgsn~q|q%7NRXbX(-Fm#4#+E1M$RKmJu9V@5)f2by>aCU>pTdeWu1xnmZS1j^$;*! zlv8?D5hjzZl^UqUF<}|tl*P58@*`iWr2Xm4Z$u?9F^_S|3lmgXqb&|HWCn^b2C?)YyJyklQ>c1?|tp{3=0FU*@ zf|;(!q-Tlkx#Aqn^;;|Bu2)mFlJNQ{Gme@RFKmI*{KGQGO!jr zEp6rjq?}YJ`9CO=f&G&*Px`F6t^P=+A(x_fOdN#*Ca<7H!LLZO1wMAMSYs1jCQ0J# zOf2f=SG%ctjrSGGayq{Q_Mr-G2r9;U1Lt+aD#Io~4k(f{1 zYa#o^8%jFD_E`25O6vU?g;7RWb9hpln+C-aweS11{$*cprjb8xok2AS zWyjsr5vOFpuF)^^QZRJqK|o3HiG^g9>F7_{UNg=JCZ}CdtVx!Vsh47?hw?eRlPgup z7dlm)%>tgx8foDAC{~onJ#Cj_e>ou}L$~diE?R_axkmUxIl~U}dz!Q<{am;1wzd&?p_TPBg7Dy(n7TGPWwr-eh|>6$ zLA)c$o^I&2;}`)NQal)J*^gbPK@x;t&;F2Tv7bB#q$vsP*_fF3ZtlN=*)=@>6*FOC zt6=&N2^Ja+;JGjkTxd|zK5T-S#E;X{&2_5cDg99z3I|k5p$b$AP!t4@cjQZ8+?Im1 zz)+Cc);4~`rXY~wNh{#qWDN@jF9uTL^;lqtBjpzxI0VO%;(1!SAW3m-pJ?w69-93L z+k0W-i{VYa=cuabL_=RKJQxtHa(_nWCfG4Q7Ip<|w9}mf$G%JuTi*EHf?9 zaTpOsh9?_}WY4uQGAaQr7JY=3A7}WS`Hxdfq7LmQK>AVv!HX_8Vnr;mYq@Mm$eJX3 zYbugas)Kt}2X|;lLOUAJ=I}*p_^@F`cNwBu&j@Hp6xnyCw0{b@>rs>C{WuiPdoayR zDe#i{Uo&)hz-Fe722r_4GU3B!K`62Tsv7J{gAs#kab=rtkU+D(nVlkjnI_!>p^bO+ zLdtc-0zO`T7Mda6@v_1}ItxB5EqY3p=hY{V1RHSwcUZCtQLO}wzrylm98~;BVW9I3 zV3kT%# zQ4~W?&@dp_L}ANH88$5IUvWXwXX1=cC<$T-crYp)N;4L(Xt=f(dGAhnX9TExOk0pd z;FZ0?@)2=oMCXDxmFdmITpNzK!QP7KIombNbUjC;iy)PXwvMPX%H$cWTB0%!5;Ep{ zYNfrf`P4Pt$TS@hn%Gw$Dr#KVQ&CRr6twv0(;GskHR0wLR%kbdT`NKO_67|D?@GK4 z&S<3|P1Wpf&cnH?&TL|m?M;}e>YG2?7#OA zdm2wZ=jbc>@X|;|h7`_2vhN=*+D3*{fImuEv4-jb!Y?{KAZ)ExzLAsH6wXI-KBt!k z=Yr)FhDD|7w~zGlGc|V*BLP~LC2|d%Cd3_Pc2tDmu4^k?5M(u6FrBq;=>R!a_;pWt z821)>m>9(`pCj;B5a?|f4boQp8!2H`xxha1u0^;|vs~?Q(0sqi?;RwexXOia77J9r z{_GZuZ)ETOzk(2X#9u*gp%+;re*vSsZ?4_i3Yet*Fzwh17Xk(n`a6(7MC!L&Xj9$K z!1spn4-MEwHaM^0~YpV9im ztsb;2T!`e|kWT{D52R#{_%r;F<0zBvuyYsi?^;wp78Bo!F=By$U!q(*{(t`S&%5VJ zeu?6QC0P#YmVX-k9P?8Me>;XFQrm6F zmDeQ1M0k5&P8S2?f^`c$t>t~p@Q2u%zses;EQCcs*~+JNA1rW^sQkgB|J33W@GB_p zKT76*i2{pW()m2IH$cHcqOSum&X{q3mT-MveTmdcP>ueK2CvQRA33+s_>REQ*helk z0m@N?dqY7wZc0?}(6r~?NABm`M>d~k1_HLP`9520kTOI zQV%UPVqI~uy8Jz|v&@2q{6e%^4c;4O5lhWe+9?yi@foyaAaGt$l_oxT*_L-CK=xab zumzJ-K@r#xHbt_|68*ku_Rw93*G|1L8-J)H6t}Z%LWTnc#lZQl3~!CN$MWQ?lrJ18 z2w4`O20B!3P~XpDjU%De_v=A{)q=@X!D0WFK3hKorrsY{tNNL_;sQ{N-@IKHe| z5&c#f%entQgM9*&@m|aiT7@p!hAd92C}RJM&U(bw8e#0(40+}az?f_gOsiqtFXKx6=-EeH=AZke7kY5hQA z2xT42{I{-`G0O(J2CiRvWwuPdmF{qTGhw+97ap=Tycq$a>Hs)fkCdK<#Mk?9D>s z7G6&LzDS_;6nme;@cxf%lz~8 z$l2+RiRGil$L>`fLp9tpf1W7plzI|y+7UaoSrj}?G<5##IS>;g|jdy=qI>YXuJS*oS!i+Qk$dj zO&cWKewiYD`UG{BeZ44a8aPQyY{o$x4I>;C7kBGsIDb|$Lz^7t#ydBwGYP_@vRz^L% z#P&+OR^Tp*fJ2hi$)^PQAi-i2_^n&cU~Roel`p}^=4G!rzNaOX^mubi_6*3OBmcH7=q-aDJzwfq@T8%BQwHqQJdtr}O!P$n&k{}EJ^kd%f>uR9XJIzP z`#5nu?58F)l7F(mN=X7bb0qd3XPnWX3$W{53L0@z5htYyrY+c8od>-rXsGRIsfB9X zf8%u=I!1JgCCX>RMFgvp1x#5>SE!h*iKTS$xgy*OmnQJLtY>{<|GMg9pZi72Bb4B% zSGrKc2jr^P{7mtFC81S>W!H($Q=CeLM>!g=^5|~c#EVXr(Knj-p!ZO_gCD{ z0Nr36gD0v7b;?mTkU<0Ulhc;2IYnP>$Pl#ai|K;8?zsr+h_o4Xh*{pzqke)#IoyG zY(8P7#~aJQTT(s(>a5+4a@ZW#f+`FUmtfPvE{qWVMuR?KwTJ6`_(0`?KTbPdk*E}} zLU_0oSLit0Q?MosDAE!Db|*r*|BHa69VU2+eo?aB?e`IjJ!uZOYH^y>s-2MH7$i48b9HFEQBde8%KpRKqnt= z@du9uthlf8mYC88c*UI9w_?CqNwRcKKR!HmAoo)Uw+!`MeGV^F(zAfE#XQs(j&}4K zv$#Ls6c%7dd~HbSU6>*Ht3uMmyxvdBDToFdRXx?4Y?gqrp4LwW#1MZ95tp&(tj`gb zC^AHg?jR;$ScnHSr-}nUt$taL&dR8%nq_E=0pgGid2r=6^bwiOVB%{Qk4lmmCb(H8 zHZmlV$)jnS?tQKw@2!_QOU7tz8lQ{X^nWv^zZe)GLp&3+(K=kq<6}}V2oP^w(CE}U z6hIil{m^X)5C@h)z_7H^W@)C#Xzy?X#DQmX)Fon6@(iI7e^mDDNl>CjpB6F_mX#E> z_7s^UungX$g20m0^pqjqIuArLMS&hloVCz&8G*v8xJ`i3G}YTLV2CP~5`e(cYDZyc zWM)w2n+UpMV7nQrr^q7s520fIY!8*EF7jzzkgw(mb`L2}KglHbXpGZ54F5|VZr~qv zqA34coh<@T9S=;8|Jym{f51!+UtAJg%l-zk$HIlaUyqjW_%|swhPykzq@34}|Ix#+ zNJzq<4;%#K1opo=ez};rx?0&={I$=jMSaWpI}b+hPMKl*o;hr*liUIA8AbiJJe4i* zApszbUqS31xDycy6n4lrA}3PK)2}Wu@1DQ)^|}m?DKKXvy5}RN7z@HN2hM|t(bCg# z-OsO<*}fWau%w1Zvd|g|^7-R_?R>vF5acvuw9WwaLZLc3@@a2TFG-4^ZR?Ndh=+p+ zw5i~2_*KD;4tQ{>87(=C)YMj#xH3Y66k)sE9DlA~A-mFz=4EW*aJI{lrdzeq{`~WR z@qyP#C#i(N25FEBl^PG{m?UIf*{qxU-JplG{Sn~)1GC{^`r>M6H`@89vPK=&N%09n zaw;WG5cY6}LVTp4<7-gS>KZmq7kz_M$g$B}_RBOPKXn3@SAGc9i(@t<^I}&_d?p6M zvFNn9M@;k!6(#ZIBB96$BuM+DRKmq38axa>WHhfAk}MQN&edWJ6+y-kWsE$e zjWYXhvB*uCqpfd+`5{w`^To~iF5)r|t?`4_6W#ihAF1vE49jc7D}(Wb0@iCvYeEYP zD|p(Hh$&kYT=8$W!bpv+l2Y5TuzXm-CJhedeTkUuVAk@peQ^Z}Xd6!ek_eR=D@cXf ziH=V!td;7jHWfd_ zLXw`V2B^kXqv#vi-fzTZF4Tf{xpHSp2^$E$lMiqJ1`jC`Atqd%;9!}9w0ykbB5D)Q zmhUjwViGUUO`*8C_wI(Iv+^u@+7S~e1Vc=t4y`lYdd~O;RoZ?NwFvQMB6`>~kaW)_ zBdFW+1F|Iw@*FB|JV4u-cX1{z27?Zq;Bf#rQ;xcyP@3-|@mhl2T+HbUxqEg1qIt>t z*6n_eYGew+9~EXb+OBmG)@KK5gFM#^74^u;-W?TDn>w(Yj*^Oum9zX?55Qf&f-O>g z<_N@6Lt7Hq!@q2f(QB9G{APDAnh>GHXa1>A75(V)EA7H;YKJb9&{hy|l;{ z^>e*zF_pV6c&QrmLvfqhl>aGjS7I=+1;uq`zKsSs<-S8sY({@d1j4>na%0>ugDFT2 zUSv5k0k3b3GLwA|$l~<=9aB4$-RN~uK$iOJ?Pjz+Bf{@!e;Zh*@Vf_RemOZRWQeQ(Igt&Auq#=l z71@!1lC=f68EWR`C%YCGPS*n!=^1IowjbUM)2?*EpZ)f1Q0n{nmrJI^Kf<<5MrmO9 zVPdc{FX57}Hj4EtAzzR_hsO+)8CS41N}r$rAC)|T8=X%;xTZ-kkB@46PHi77l(PjW zbRsL)x5BJ_t)(Gah`DW};fa+QWS?vT#b5Ef7Li0{oSB@DYuzklJcT|{0#oW9J9U_a zG4so~dnYzcevsk`6(DM|YgTsZW>^_NO~%#g0buoDeuSZv+>8n8=-dF7luYEF*>^TAN_ca41?gT#Xg7p#4kNlp(eC3 z&nS|C=sOvxN1Lt8+Kc8i?dqu=IaO5fKHk-Co3478(Xd06RK|lbIB*m7TxrgSYz#tF zw`L@o(VT>H;pZ7qAnlDV_@3cWFrs+z8e~#9dwe}RDHLq6fmN(A%ae9q;Tx*sMhxP@ z$!t32O2=a?M>hDUS2(PAQUzk=Hs8d)2Ab;M zzGZUpnwP%&jzW>il&D6tVn+%WDL5W(cMNr9OE39ra zweCSjxPR-8f7TD+^8gjN7d1ary8$cPef)k2b+p9%2;*%z5^r}^Gw5!qpuO)++NdqsV>UArj1-F#P4hTc$l>E7GX}4()m*jgs^6i2Qd-=rOWq0iQkt z<(uV;Fe1?3;ZAaIPufSyo`@tnrASX>S1sN_?;|UCyI?O!6ibp#aRn0wwrh( z^kNYX8w7)JCZ+za&imRV!zw9Fo`507P$)O|I3$$AB!VKNxqPF z$pLwzU$=Utw$MerH`iJsPXCPY=v%cQEgcUw!U37+Iu+x*C6$y?nyS#WeddaHL6xZ; zTAHh{NXLDFuZAxFNpz8>Uf!Z;!!FYj4>!|XQ2yi2tI59Dipo+q@U6!O4YTD;c##B+ zrSQ<4RaUmKS$V#$Xh|yD-H9x=oEgis5SmzdCGDbl3l?Jy+88e%wVARO9+rsBheD(s zZeTcZDSPJrBw5pc0|C0w?kj67Y%}Q7^+%B&zNpK4yWL;Ea1i{s52F@uM}!KK z-URUu58^)sxl~l3Giav7Yosgy$KI!K9U^u)6@_F9d{G0^rwjH<5|$H?fk6V4ojAaZQmc^uiv0PM=m{XN3;1^+`Vjigh5cxPOKX5;6rA(K^tXlwI9I2TN%o=~|7n8IQAN>X#Ltn)8xLh60@ zrd_fdwkdCb)`Zm^!MA?Cta`kq?RVd`HSad7ubFp9Y_fWFWA zdvdg91OYn^5}3pYwPt%46GE{ZCVk6Lx=rJ75lO!8b{^wbI)n0u&eJ!H)KnyF&WE3p ze8d+&pJnIIA;@~cFu{6X{FWsmbkYTm9tc&&HZdH ztm&rtJ{agwz7@H`jpe!@6x7z~RydDtN-NVXVreDU`6Ojki<;H4_L6qWPqnDi z36wocj?b+u5}w9%Ep8kpbX~4wC>w4$;4BpAt>7hY=SqBh=~LiZZtwl30Tr`sYRoss zV5z=89LinxK1+dNe}eX$-_1KtN>nxKT@ij~Dr?N%xPGwXt|AigV zP404+)liemXpb$pb!2+`!+up}*&`nYe$6&XE@b-qXDu3*bc^sORNQjoZB_e5e|`tR zdS}(13m6w?_3FxA`$u07+RDyRg`!G|dmt30~KBV|{ zAJH*5jc&f+p(h-B772Y(FJB$H~U)r=&RJpUu+wKoN;$V7cdE z08;xW#scx85xK)bcIq+$$QA6%k}z>zTF%iHNLIr;BIN!#qM~HQg+@<{6_-b*CsK`T zbF4OYyeqh2d&0Qv8fhl6TCN#K6?EoEI~2@@)KD4Zv8FT>2t+yJ#>}Cu1|14%>S+ zsT#+NlqNU9K6FTFH&&M;H?MgU`XvVihV}d(dl?L{&T%|%b$Y*`|Cx*B`tz-p0YC7d zfY~cL@VAMZi>rg3rkyRbm8+TEUmtrl(G75eEEpg^eZ?mdCrbIkF&33ks8I{xYNcPk zLnU@678`$ThxhGzd~qB*wv&GcBj(@(w24c*IKp{fNdSm{-X9C!ql8?9h(Kr8qFAa} zNNTyYdq9#ZfMe55Okf=7vSKYks0V{tI94E@)`Y{pjXUBr2clPw1V-6vqNLm#?+ZtYi-YF}!-CL*vj?1=9 z`0>-l&JVe&U4$xbzPz+D#sAdt!HMhKV$IJ!g{0M~nO=hB9JKi5y6Dq@b%&|tZG@Nz z8EywlnM2J4BMO6BI!WqOFs~+)Nv>PtwXwxqR_FV|b029JwF-d*`Mr^CF%A*zc7s!9 zcMxHxjsG|^U2_+j2~XH#dILw~z%lNc)GW%oy1bfPMVGqJ+v*$GKL@m>OHO_dDA*V% z9Ooax|43GJc5rn0YgBXM8|;HvFvP#~4&Logu;xQpVuVY9(Aq4^=n;DOQ`(Ymh{aUC zd&~22nv8v^b-iBZClERcwl}PvqobauqJUAY;x7oz?(XB{ARp(eDFst679%LZY}MI?9;2J>BfKm~JJPvgh`KIvUc)pU4rK>37|U!lK(^LQ6Jr!lA0x z>z4H$hb8}k1>9BY{Hn(7lxe2)`NCykj&1$=R5o3m!){+sD^EeGg|W{Gm82Q)a^(}U zU3(Z&vpo|2fz%y&LGfVtOJJMTo1?L868hJDD%r39u}X`d3yZJ;)?^}p+1-EE9QJN@ z#%9jIs?4A4Zboy38i+9}oL zPi5G3G_-GX?S8^mAA9d{v%gU{79i2+>dI&|`My)%u6>uvh_>aA;SL{sNZr@GNv=Dz zo35DApeG>ro*h|mC)_pFh}dP7Q5j(mv4vKt$}f6laGi?4zJja zgoi8X#Iy-PsoOY|aH3M&hosUZ;?Pi>zZ_jruU8syQdurwC0FaWl$6exzHq+(9919| zE*m*b%1-1!Ys^MJixplT$Scdu!+XAxEDy;|DSZ{Hz}2PTzw_-O!{3{e0G657FC&O% zg1*iI;u~bFWh9)FG_1oa13mB8Ur#f|yqI6M02@M(J5-Wfo3U3BJ?grZ=&wi`d-G>2 z3+^KV4u*wDC^3=>HlvWbC~67H-DP=F7y2#K?NTNF4X>RgJ=|XurW%e+X&FXjF*iim zS_?1P)3sY;=NJ=y!G9;cbCy!fD8iJii=?S5s_0K zz8yhx<5J2wF>%c;I})9XcLz_AjNIFe^}BVC!V~5ZD5?gFn33Gy03KJ}57DTr-z~-$ zjz5jNs2WaUMq-Hq@DX~XC5@?P?}RH;`gT>*YI~(URv!joZF=VRu6u6e^u=O&Za(io z59n#=jUI-0i!(#n=V0=E??LY!h(O_R2SeyLJ(t&R&L2rdp_rw6yZ_<${(;m?9AO;J zlT@M38Po8Bb?cK44`4eLvwATHW3R|-z*LO{X1gIyU#Jc?kFTb)6bjdUzQ;KIP?$5p z`m{5{ch{oF{TrqiiprqpxW)n~>fOb^Co^}RHitC+FQDO5U19zB!F=*wa%ASdAkIKklC<<|OJZ}$C`%Pg<=iGAT% zp~2AH9hx^R3j(;AhsZ;7@05K@ts_sB%q1q5E68bE$KW1_4VWduWMR{iv393zhx86S zLv$d=cqm7j4jeWw0j7VD^svI6nuM;-YLa25oig7h3G@4!!J1GxeHqL~cp zYB8rj#}Jlq@k1<^)HrZ_CV920JN=F?g;|Y*6F~2r88vX_;u+sYnx~#-TBopYjWjt< zgBcij`X$SfnZS7b0vSg7Y)KO57&wUFHmEonl0*7UX$*jt41~Qyl@{s z%~r+VriVh}c-B$z3Xq0jo+F9cYO~uL=T%yP0_YuM%o{ewPb-FcW+{AWSGF*Wj-wpE zw-PbEp$-!A?qHwbIEj%2J~zZX!9U{|6f{y~T64k;^&Sj4ByUa4rVIWF%%*dgnm+nY&8+-h0&`2~q1dIrw;1){olpz>( zav&rt0-0C$ZWxF*!~>k=E&CT?@b6Hoycob%sF7Y~?m{^+RS32JYk}bw(wAF2#0)3b z?0G(c%V@gD1Sf-uKcCnc^@}XtI^m4ujMpAf^VgM@DV)>lNC;UK%`@%m&53i4RK0z~ zwg2~l$ z>MdKRPS;vk8+9nlF6-aTJIVKQ?q&V^I7^TJmTI2x_U7LWw@!pM~lK~^#?SFgYMeNw4RudtK<~f1lD%>Fnm+n7z2S5D?XYd@kG%}s;+KNugBlEO9=Lq7 z;(W3j{|6y8cK(7>kqukx6b!3VbKY*ckuQ3a&um@7ycZ81%?Vv{Q8;1gf4RKu3kut% zn>*jJC3AIa7WD{5C?A%b`9e;jd*`QB3jY#QBld^Aa-8 zFu!0=deYu|TK5uf{F6)l@lz*mPdof<3g@)9ca`U~pYuJlUifzVlC-p5nW?s!pQg;& zz3kkc>T7SB4ppx?x^2=Wqw301-?xuce^lL-I~e``^ZF@IJc5f)zq-~gSNG)N*4J{? zHIJ7qpI7(n=JR>=3yV)*n;ut}dVBTyy+5zrw!T-nJ^T5(e!F|0Pu{EjZU6Vp>BI3~ zWh|@Ke6P6wGXGr7@4Mgsrq^54KYX-)f9$Wn{r3MCl^P!4onn^}dxND-wMDrqO8l@{ zaO1=ekBdqVcZt1>UES7yK6>(`#G4x`tG`d+{CTce`PC8Ul{1CYzxi7Edk1Un-g@ZP z|KL>SR@GNld@p74ER@q*eil6S;w#y}zpRN(Dq}$-R^q>L$G1cF0p5&EBFv!SaSn!# zS>_RIgO*O53T&aC0*<+Xx*agk02E_jh;{}J2B+qg#D`QCq!!15T4(46RH}J9`~WJw z2OLM{hUo^<4UETtMnKy5;HEvg#*Q}b;7p*Bi$INnC>oywMc{Q$a()qbBpO}&m)p0+ zUjw!0urM$PplGiLiomre78GD}b+@GoiypA5<5Nbrdj+aC?2YsFtVNO>O%p9ai6m;$A6E6tu6=hKEXwxw0CZJD5AWT?Q z4mAN~S^`}^`lvBNziky%Kl&Ilx)JF8Z-fzMjaYl*=mwy7bP)#dH6a^-t=o%k7JA ctx.includeMediaEntities) - } - - def queryFilter(opts: TweetQuery.Options): Boolean = - opts.include.tweetFields.contains(Tweet.MediaField.id) -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaInfoHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaInfoHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..bfd3c7ecc8ee8579ac3c0f562d370f08d1ec8b32 GIT binary patch literal 37504 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 - val request = - toMediaMetadataRequest( - mediaEntity = curr, - tweetId = ctx.tweetId, - extensionsArgs = ctx.opts.extensionsArgs - ) - - request match { - case None => Stitch.value(ValueState.unmodified(curr)) - - case Some(req) => - repo(req).liftToTry.map { - case Return(metadata) => - if (metadata.attributableUserId.nonEmpty) attributableUserCounter.incr() - - ValueState.delta( - curr, - metadata.updateEntity( - mediaEntity = curr, - tweetUserId = ctx.userId, - includeAdditionalMetadata = ctx.includeAdditionalMetadata - ) - ) - - case Throw(ex) if !PartialEntityCleaner.isPartialMedia(curr) => - log.info("Ignored media info repo failure, media entity already hydrated", ex) - ValueState.unmodified(curr) - - case Throw(ex) => - log.error("Media info hydration failed", ex) - ValueState.partial(curr, MediaEntityHydrator.hydratedField) - } - } - } - } - - def toMediaMetadataRequest( - mediaEntity: MediaEntity, - tweetId: TweetId, - extensionsArgs: Option[ByteBuffer] - ): Option[MediaMetadataRequest] = - mediaEntity.isProtected.map { isProtected => - val mediaKey = MediaKeyUtil.get(mediaEntity) - - MediaMetadataRequest( - tweetId = tweetId, - mediaKey = mediaKey, - isProtected = isProtected, - extensionsArgs = extensionsArgs - ) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaIsProtectedHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaIsProtectedHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..64306401d7fe7df50542efef00e53457f4cfcc49 GIT binary patch literal 37251 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 - val request = UserKey(ctx.userId) - - repo(request).liftToTry.map { - case Return(p) => ValueState.modified(curr.copy(isProtected = Some(p))) - case Throw(NotFound) => ValueState.unmodified(curr) - case Throw(_) => ValueState.partial(curr, hydratedField) - } - }.onlyIf { (curr, ctx) => - // We need to update isProtected for media entities that: - // 1. Do not already have it set. - // 2. Did not come from another tweet. - // - // If the entity does not have an expandedUrl, we can't be sure - // whether the media originated with this tweet. - curr.isProtected.isEmpty && - Media.isOwnMedia(ctx.tweetId, curr) && - curr.expandedUrl != null - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..4deac065375ca6f97ba18448ee2cfa952a10e604 GIT binary patch literal 37312 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 E0BDK8(EtDd literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.scala deleted file mode 100644 index a6e491d61..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaKeyHydrator.scala +++ /dev/null @@ -1,54 +0,0 @@ -package com.twitter.tweetypie.hydrator - -import com.twitter.mediaservices.commons.tweetmedia.thriftscala._ -import com.twitter.mediaservices.commons.thriftscala._ -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.thriftscala._ - -object MediaKeyHydrator { - type Ctx = MediaEntityHydrator.Uncacheable.Ctx - type Type = MediaEntityHydrator.Uncacheable.Type - - def apply(): Type = - ValueHydrator - .map[MediaEntity, Ctx] { (curr, ctx) => - val mediaKey = infer(ctx.mediaKeys, curr) - ValueState.modified(curr.copy(mediaKey = Some(mediaKey))) - } - .onlyIf((curr, ctx) => curr.mediaKey.isEmpty) - - def infer(mediaKeys: Option[Seq[MediaKey]], mediaEntity: MediaEntity): MediaKey = { - - def inferByMediaId = - mediaKeys - .flatMap(_.find(_.mediaId == mediaEntity.mediaId)) - - def contentType = - mediaEntity.sizes.find(_.sizeType == MediaSizeType.Orig).map(_.deprecatedContentType) - - def inferByContentType = - contentType.map { tpe => - val category = - tpe match { - case MediaContentType.VideoMp4 => MediaCategory.TweetGif - case MediaContentType.VideoGeneric => MediaCategory.TweetVideo - case _ => MediaCategory.TweetImage - } - MediaKey(category, mediaEntity.mediaId) - } - - def fail = - throw new IllegalStateException( - s""" - |Can't infer media key. - | mediaKeys:'$mediaKeys' - | mediaEntity:'$mediaEntity' - """.stripMargin - ) - - mediaEntity.mediaKey - .orElse(inferByMediaId) - .orElse(inferByContentType) - .getOrElse(fail) - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8f39e45a9469506342fc5c9c0a2518624c4064fb GIT binary patch literal 38455 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 ABme*a literal 0 HcmV?d00001 diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.scala b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.scala deleted file mode 100644 index c2408b634..000000000 --- a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaRefsHydrator.scala +++ /dev/null @@ -1,124 +0,0 @@ -package com.twitter.tweetypie -package hydrator - -import com.twitter.mediaservices.commons.thriftscala.MediaKey -import com.twitter.mediaservices.media_util.GenericMediaKey -import com.twitter.spam.rtf.thriftscala.SafetyLevel -import com.twitter.stitch.Stitch -import com.twitter.tweetypie.core.ValueState -import com.twitter.tweetypie.thriftscala.MediaEntity -import com.twitter.tweetypie.thriftscala.UrlEntity -import com.twitter.tweetypie.media.thriftscala.MediaRef -import com.twitter.tweetypie.repository.TweetQuery -import com.twitter.tweetypie.repository.TweetRepository -import com.twitter.tweetypie.thriftscala.FieldByPath - -/** - * MediaRefsHydrator hydrates the Tweet.mediaRefs field based on stored media keys - * and pasted media. Media keys are available in three ways: - * - * 1. (For old Tweets): in the stored MediaEntity - * 2. (For 2016+ Tweets): in the mediaKeys field - * 3. From other Tweets using pasted media - * - * This hydrator combines these three sources into a single field, providing the - * media key and source Tweet information for pasted media. - * - * Long-term we will move this logic to the write path and backfill the field for old Tweets. - */ -object MediaRefsHydrator { - type Type = ValueHydrator[Option[Seq[MediaRef]], Ctx] - - case class Ctx( - media: Seq[MediaEntity], - mediaKeys: Seq[MediaKey], - urlEntities: Seq[UrlEntity], - underlyingTweetCtx: TweetCtx) - extends TweetCtx.Proxy { - def includePastedMedia: Boolean = opts.include.pastedMedia - } - - val hydratedField: FieldByPath = fieldByPath(Tweet.MediaRefsField) - - def mediaKeyToMediaRef(mediaKey: MediaKey): MediaRef = - MediaRef( - genericMediaKey = GenericMediaKey(mediaKey).toStringKey() - ) - - // Convert a pasted Tweet into a Seq of MediaRef from that Tweet with the correct sourceTweetId and sourceUserId - def pastedTweetToMediaRefs( - tweet: Tweet - ): Seq[MediaRef] = - tweet.mediaRefs.toSeq.flatMap { mediaRefs => - mediaRefs.map( - _.copy( - sourceTweetId = Some(tweet.id), - sourceUserId = Some(getUserId(tweet)) - )) - } - - // Fetch MediaRefs from pasted media Tweet URLs in the Tweet text - def getPastedMediaRefs( - repo: TweetRepository.Optional, - ctx: Ctx, - includePastedMedia: Gate[Unit] - ): Stitch[Seq[MediaRef]] = { - if (includePastedMedia() && ctx.includePastedMedia) { - - // Extract Tweet ids from pasted media permalinks in the Tweet text - val pastedMediaTweetIds: Seq[TweetId] = - PastedMediaHydrator.pastedIdsAndEntities(ctx.tweetId, ctx.urlEntities).map(_._1) - - val opts = TweetQuery.Options( - include = TweetQuery.Include( - tweetFields = Set(Tweet.CoreDataField.id, Tweet.MediaRefsField.id), - pastedMedia = false // don't recursively load pasted media refs - )) - - // Load a Seq of Tweets with pasted media, ignoring any returned with NotFound or a FilteredState - val pastedTweets: Stitch[Seq[Tweet]] = Stitch - .traverse(pastedMediaTweetIds) { id => - repo(id, opts) - }.map(_.flatten) - - pastedTweets.map(_.flatMap(pastedTweetToMediaRefs)) - } else { - Stitch.Nil - } - } - - // Make empty Seq None and non-empty Seq Some(Seq(...)) to comply with the thrift field type - def optionalizeSeq(mediaRefs: Seq[MediaRef]): Option[Seq[MediaRef]] = - Some(mediaRefs).filterNot(_.isEmpty) - - def apply( - repo: TweetRepository.Optional, - includePastedMedia: Gate[Unit] - ): Type = { - ValueHydrator[Option[Seq[MediaRef]], Ctx] { (curr, ctx) => - // Fetch mediaRefs from Tweet media - val storedMediaRefs: Seq[MediaRef] = ctx.media.map { mediaEntity => - // Use MediaKeyHydrator.infer to determine the media key from the media entity - val mediaKey = MediaKeyHydrator.infer(Some(ctx.mediaKeys), mediaEntity) - mediaKeyToMediaRef(mediaKey) - } - - // Fetch mediaRefs from pasted media - getPastedMediaRefs(repo, ctx, includePastedMedia).liftToTry.map { - case Return(pastedMediaRefs) => - // Combine the refs from the Tweet's own media and those from pasted media, then limit - // to MaxMediaEntitiesPerTweet. - val limitedRefs = - (storedMediaRefs ++ pastedMediaRefs).take(PastedMediaHydrator.MaxMediaEntitiesPerTweet) - - ValueState.delta(curr, optionalizeSeq(limitedRefs)) - case Throw(_) => - ValueState.partial(optionalizeSeq(storedMediaRefs), hydratedField) - } - - }.onlyIf { (_, ctx) => - ctx.tweetFieldRequested(Tweet.MediaRefsField) || - ctx.opts.safetyLevel != SafetyLevel.FilterNone - } - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaTagsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaTagsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..b28748efecf08329c52b441f369d6c703a57bef2 GIT binary patch literal 38118 zcmagEWmp|swl0ioa1HM6?hb+A?h-WU!kvW&cMILS9K_@O1Yel? ztWpRJQ(Q*sy${h^onV)D6P2#G#Hqf1hGsq)WU+VtMjq3dIrqL~9I4Eb^d8~-AWTh5 zhWE#5E^wB;ntnb*^x$)`9G!q9tw*qE>dF`mbmF04I2FM$=+Nr?S?=5pa(gwE;}PmT z`mg(AO0KUHzHVfX;(n4@uggqS8kyGV2yOm6-@}Y9)TO=|HN+1%)w)j7*E?FMJJhZ9 z79zV3Ap%f;{Iu<1avRrVKZdC*jl5CS*+jPr{&@=Xo!VoN>|INOy%-Lcym)!cdULUu3}R;S%}z;0yFB?!yQF zs(a~|&Z2#nwSYVmIfi6f-Pa_-0<`Y9FV9|2h{fd}C4_okmWns_g~#s6@}4o}4ZxKC zqlz9>vLX+l>TN=Rfgyta8akTUI59K*IabC`euiX4^*a}m9HA_>Yf_geSTT?|k}nYI z`95)0WCxTkTJ7pomeAM2?j<@r-!m~^OwY$(rZ2Jy)HK#!2*_RP)!L%HY-l%Jhf9X< z@F#Uw+YQpTNsG88M;0-oy5}<2AQ7V9#2D12tv{O;trC+kq_dSqE(t14K)XS7rqOiq zVVncN0HoxaIKzu8TYuWPg+B;4IZGS)i5$n;qp7AUn6l#V6d=nuVBCny98O1<#kOW( zw>`Bhebp_$WI75IS5!4{r?`Qc>_8vjv1kw|o^9FtbihbKKB?(BW$v;WsO)P$P4t_k zHsxHWF=p8ZZgf_c>-;|x6#5NO)e>}@&w>(!21<}Az(mOrVDH3i0&q0@bCYMrk1O=E zpi16*OU}z{gk7V;Ny^ZHABTUI#`Irqz2o4Nw;9jkn%vqeu+_<-cO}~5AHKF1+Td<% zhBOI|4<-(YJNGvYN7Tl8TQkO9f6kJmO1dwn!BR1;4>NPiBQJ-fKZbKDU;5s zFSi)VM?O%;$ua+JiZruDr6~7EOchOj<(q~`JWU%p63IR$?Js|SqOb(=_GR$adVAu#wT_2%8pn$WBD5t8pwP>(yho3q*I&4k5Lh6@)Xb$;+ocu9&_Ozrz zBp?@VUDtIJFi==KJU_p?&gewxC+uw6!d`>%+BD8Xo$>{kv5|{B>?UXt0-u?9e{*Tc znw}_wSuC0XCDSJTgQ06O@2KAQ{nOjWWdiyK?n@}#V+&*h+BrAzx0k*v{Qs=W&Dt8y z38*eMP+(xF|6Z3b_V$03MQz+}jRm#inI1~tIouLfR2eruU{Q2dd;_m0KBIYljO=q9 zR4eN)(C0A}i}xGzZ5V$&|8v9G^OC4JY=gpAb*%Bnyb&db4TQ$(@Zp2C$wM+Hs50nM zER8`leFwwovC0J)MtJ8`O{J#oJ=RW6LPC~;`0~mQHSSSvNwX3vg(FXb z&uY|pG4U133en5?w$AhyT8@RSE{?z)xyT6-gZx>C*1tEki1ZY|N_99~YyS8f{_760EqC>${ISTg zcgRpr{9?;5*b;QB;;=e|u?bD77{0Y*fa~AfJRcG&uOPL+!>@imA7s{GB#KxPthAv~ z_)N_TN!E_nlz-l3svs4t8lt91CVVy~#-}%-J<~iq6kpQOSI~{Z%I3sFbEVt~2DXCl z1E`@Btp#zFKDp}b65oHtdqrisv}HZqesmE;Ja&WO0k+h`6Q!KO+q{lOjuZK}*leXF z2~BElQSgUk;HZ1qD8{7>tjP!$Dt_whNN0XwCc1!6f4s(jU%35E{9iZ5%plVhEEpIE z*WW)_H-MulGw4_AVhfs_{@fWGy0%VhTS{F+Mpl}Q}^c4^ERW~yZ>hYNuolvQzMzbYF! zN}V5vjFGHNXeywlGQJFzJ0Zmu?J*)nUz#_&>F#DT?MNwJ#987cGZ=qtK+BYHpO8FT z!?%GSlikmW(-^rHYB~kwJfvba-&3g5gK^w8k{vLSfhTlG%Wa+Lq7|X7;1!IXpfWUv z2P?!54whh+tie6re&!-FE`A%-h9Z4GQvTy7_NH_#CYWq4Mi#g0vySCVs+!mtfxUH2 zx%a(MyNqw)5dv~l&vQ@Ay14dn>=vVgn|I7dQM6l(d;gl!da)m_T?oS3diVG@wqjBUd6A-h%|`Q)i`2we2U;`S{XT??xIQfCe0d# zOzgT9u!!E^My=`!el>8XZ2!*B$H{M-2Bzj`d|Ptvg)@Si2*>ZoB>2dFlEL1wu^f`< z<%|eDir29$-IzHstGTzW&6Ko)TgL@M=c#&~$QE%QmxWLq{In*H1g zbG-0?CG!M1F;(Jn`6#x?S=ZL^T-fmq77>Z}3tBPYm)N_?6Z_)>*xoP;>uimhk@{h{ zWl?g4n*>~Bc3krVCuR3sgHh6A#FpbaJo9E=oRwUPxG}y#8cK?9TxJ(X{A>a>(WyjM zth}rrH9TZ`0#%|Z2Q`~3`#m3-RJ_yOTVC5O+eIY(7YXd`nE{&cjs#K?d5R1Ssr~{8 zE{gJ?;z(R~Kg8aq$i#QVrOdBAOu)%qHyh!_d=mHtisWE2Rtw7l>aB|sxRuO#$a>M< znZXa@L4Zy#3^Ln}T-u!w*aE+^kG`Qu*9wi#jE$=_IieCF;jF9}9M?ieforRs<+uDr zCLShHDDW}19pIlFy^xmhiLg5Y58)~L@0c=N`^YS1p<125Eii-DZ|b6$a2I+>e|0}=ab^rW`Rr>Mn4A_t@o{|+v%RHK{&(0K6GS3q!N(`)4}N5n)-iY1&vBoAp<-9SRz80xk%Rjdv-O2A zgYy@}x1`q>p?}DTswpk`FfvgJN@bt6$f?5x7r|mMKd63-F)v=yFEd z>6O_2o?bTgV>#nSQEaHSYGvh+{C__ipJU=@^HN4K`Y1&n~ zp-)x3-^X5l*(m|KK(&dukqC3&j+WLsW@f=+D}2eUv_WK}Tu8Qas3A6wNODRf8tq$j zq#uCUZ(^owyR0Em$9m>SYeeoAaM-yE9#N7tcIY4U?0v``3SWzjtfJaN8Ue0-ef$$L z6=C|p>`lWx3d}=kJ>MKRvY|<_s2iPJQx0rnmsVl36{Weu>h-q)p{$b2weOY#Oj`zP5G&R$j=JyH{ z4~1e^#U(ndg1hJo-dW{2@$Kd-+au=c9gE-ev<9L&BDAj!JN;jobIAhKD$*HeCL7iu zIlJz9xDUym%BfnP^cS~)Rn3WS+t$A9v;8Sp=W*|Z?S@LRPUcK3%(Y7oIuLkIF5>pb zuHQ&4(-i2aZkO{2sA_G$MRcKj3>|L=O19z4?mO1d;oy67!8XQtDa3abEOLv}MX8*< ze8rkZAVuC8clsda1P6uI3!#1@c{?*irK#o&SP_IQ%giDB<`U=zv-nin({STgmRpsu z+7=HWsYC^n*3mS$6>9QxXotCb{2{4I8{n>-tUC7nhdN{7_^ymTc*pHtZmup%)ss%; zN4CIjQFYtiw;x>T_bw{xr6m+9VZ$Bcy1zc5e8S>DoGcCSN;;TbY2YRz?iP5te{-m| z;!|Jd5h5Ty>#o3?-XUFU^R;jB`ucuOVwmxcFpKOWKK{<5YNwN`F7ytTT8+OG-`~>RFl7+m z_20Ya^2w&QotwN;xoAkBf@N=U43qoxxNNuT(4cCU7mW1DIVp{H&ktvAA4~~+UttXp%o`R6#EbU* zU*z?o&<&w9?lU0!*&mE7$M(z@O~54Fy2Vq(*$QhiRCge+irFJXc_{1BRD-O8KTcZn zSl!Gf4tOfSJA1)G2=56+78C695^7m1k86H95$wD8j_yxFZHw)+TB31av@XlDdNW%M z#rqiegZV#m9aWCaAHfU;W}prYhVsu`J2`vUm^uAv#X#%(gk7mRpYHCwe8ZQYwy{BA z!&7!(@va14ygIXL&)MbK=YG%3;CziaHT0z<6(LqvQP=of7GKBTmxZlFyRVs)vlH>vg=I7uLo--NJ?6?X>{? zX!q@V*9W)mA5Y6iz8c<#6fgAy8-J-!xoZr z{B)_bGaM55V931o3=-wG<-2)`GCq9zwBf@u^C~PhDR`>630fZ7dhtp55&?xMe5rf~ z-x2TH=Pu7q+{X8;>K}1GBf+|_1etVZpGK!YUnJdLxu+3wkKaT99T`1ec|FOm6Uz5! zT|BxxR@a3k#A1AdncuqByV{#8#*+qFeQn#PD$Sfsvo7n^wPDZ)UH2(@-^{!af_G z8WiZlkTZ0?>5zJqkm@So*BV0~ZDAjtVCIhY7_(p;-`BUpesf>A*PD%3=QO>S8sJLD zmVjWT+xb~Y3inwSx8ljWkHI-muqxYb=^bOBD><@dwfj`za4iO~`|$I0R)AGaG{10ih}uI~HZXQVIX zC_5!6tSZEP>cqwsLIV;$p|swib3hl@uAAXg%Ry=c1GUGnfH^f_-ZptsHcgAfJ~aZ7 z5@@KGURb#X0Q&EM;dQ|3DFt90D~}ba`m*^?7B{@ z3R_=D^Kim)CGvvZZU3*DEuSh(6KyNwmz1T$eFvus?1GY~7_^Jl=cO;#YP41ZsTL1` z?;ZM8i__1ib5Hj74zI&9ch|zF=Rz6EQjPix^B4UG*Vn(!`kgX3=!07c3N@qN`w!g9 zh%&Be)B_P$X7(Q_eJ_ZY6w{kiBCMchLaph;Ysw^fM9|{EC5XNhuyyskw)b3;<43H& zYngfbKWCRj0yJZoGc7w}o5O>bwD??co=@K{e%aDz5Doo6^Tr~*gZm-sO=w6X6In>k zlOS|%Uamf}F7cv98uM9NS-J#WC6T>6h+!X-o>Z1`=`&osLR)u*?-l{`gT`3LFy>-K z2WxshxU$V66)n_$T%$M?5H$1auwkU!gi6v|teKe}w)`1yxFY zZbj<;Uj*mMf5K%3_NFNyyH73+Cbg&mLry6WGBx#ENLsGx$pVmAC_Btc~S zFNusKaMT`%aDSV7=_bFN4{ki)y0q%s z4SI>b^e;`g=6+pvzt(*in#-=e=wT2^ANQqtlxYqK^$$j%d{erq!)e8 z8He}&Z2v)=(PP>Om0`V&vx^ueaNIO9BN-;igk)&EhSi>KY-%SX-p#asqa{RUP?c z>s#+e+>r7eom#(R()#A{srzd8Ky>nbPU4R%DxPjexG_ zhKuO|uWthvMT&>xY@5zRVI4AK=_;Sc)3;yZ%ebLw#TU=zW%!8M>gPPHMU!Mt7kx7% z&^0NF=2uMXJa$bD7f+V5#U4>W&rdjcU+d+H&m;h)PYS0m-GkQ=VsNPOu{c+ zod}=#=y%yN00rLN9DsT1LDbA{mhJgQcn^rz$(63nN@9T+^XN<#B z^|uZ?Rdvv}e$aG8(;Gc#i;w#Cxhc2G)TKWOGjm{vFD&pEMYLbSx^#Mzkjcq0d-}ES z+C>i9QlQj#B97y4u)I(1N<*>?!^l%xQgGY34u0F*OiKVgxo(H{9d2@;mm-QKj&n(q zDx4_R&adl8%#KkPWEQBe2c1Wl$GZpO#N5iC@_D}@%C|6a^g8FtaO-`oh(V;auL2Kr zLPGVn9J?)~En=2$-;u@e@rGw5{KBhKR514F8KR9b*-lc7fi~>(&G@Xp`&@P2r}$^q z-kCt*mh8qLptNj9ga6@|LptUhar4$W+521CeEYQ9)6MYJ+ttvZXZx#z2k`za>3#9^ zY3|p{u|3O|j<*)!%sb|n>0xNkH!zfybdMGxD8sGx=9J-E(npoJXHKK_p!||ECnsb{ z`Ejc8?7I|X=}7#x4z;r^l~&n6z)aP`^9x3Ix3{w2C8y4dy2N7x$s-cr8LI}H{x%+_ z=`)fI>Br^cG=Kc^WZASiCeGq0Q-yZ7gCMcr*T-2Mf>WBTH7)`wA8Uw^!JMW~UVg>) zLSO3U7fp|<6n2vlc)Mj4rz8nctA^2Wv=f_bNiLMI&KD)fWQwvyLO4;Ek&EY_`f zkf{R#nDY3WTM~NIDVx!C2K13Naa!e(m$+H^lwugxUmTq{irCAklGP+Ge6*$;jMD~J z!j4y)IRTp|h`7Iw*|aQ&0&@0a6*JyzSFpR?6%FReMN7O-)a{dZO8htpU=~sJ#%R(I z*))DWMp#LWJP~fm-^d~0>829CqZM|!?2hAeE|pZ%VPRI9@%!a$4(!L2xT7%+600e` z)}aV)3BP`97M~IZ-1N07J1*oG>EE#tj9rbb*c{1sT*ddyj4|k`#{8bZuusavTh(mT zJPIvFElG_ynYW8k>r{!lh1!?>Q6ujoIW$@}#CIaRLd`IXpUi$C3&rUn?ohgNT3Uva zUQ3kgt*#yA@0)pI$376N?1W3UL{K-apC`{iyt70|=MAMT`a+w?>jZHiiv^HTOuzFm z>%Vrq=jAIp7Sh&@;g6D<)|#l4LA=Au-e_7k;-d-v5GCNnnlLbJkSTHOb+=>mW2S$4 zt7(mM?fg7`DNVgU3E|uO!`ss$0ZxT1N(Kv0_p&=jjrtePd;|qGin6bKJj-P@CmMr_ zm-iVq@)Xs-azd2ZJ+~!>9|t}2`_tO)<}s9l*COe7X5&io7LQOh23zdZ8Tu}{+MA7M zSr-Ry7tCFHA=f00)W^L&J**Te^bG6-bOz>CWK*dsu@%scm`!pv%oLgKjU(cQQ)?(4nO_RYJj)u`tW9RWR#)ZR9{qhCcdpC68F$ zZV94Bg|BsT!RflnTB~%EQ@c@n5%-FWj-#H{C~G|BFkv&rn-sSUyTa#59#OWv0z`8g zi~7_8!Q#TZ46+rcRcJ4(mYoRsSnN@cdyn#}_!Fi00WB>K<5fkM!|lon@|L}WV_a=q zgqR*u6O<9uI@q60Hs{XE>`ly+Df?uRy;Tfgl=Ae5Pg+aS1&^@pT{$mbRjiLbQlR5W z$;hg>wvu{HF-WbDGFDYQ87(yy_lRz&_G~U&%j4dzloH+_Mcwmey_X@|3gVjgnityT z@uiv*)b;Tf1avFAm}9d6me!%-&uc5vK7AWeZyz;^XSgm&yB3Y4J2%l2#PSrUr`9WF z1WRk3tMug<&b9+6EhHe#&aqCsuA%0za@6BS!XSTQPq|HPov1w1@b@|>(}#6DReJ^b?B;aczq_YW+KW-ryQ`i)8tkzHKk*2> z6XK!??eJI+Hn;5JZ&AW@*7AO0tsobiU)&8b?_9QMvjDo``Sb#Ljdg3ahahj#RXM}Wq+|>t@ zM-;#@Z}R;vq`MO3Few7-zyc4^usYW#yBg!ns@;I->VoR!dd?glqx0zA>XxMIdnRSR z_2Fs+p`Mvc>EY|!h35GJWU%?xRJ@}CtwcM)%#hH9gi{5~5vw_s4#vakhxj(hF~6YY zhV(V)4scsnoLI?{C@T;Mw4y=h@&wv+nNJ?9*vaV}sQcnw6bbGhpna=A@VZw%uC50qM9IiCOz7z!;d>>@)DvB zt~1UIzB3h4L2v6`O3vQcqUsL2^9!9cS|`@@vUwi&o&Q=|ezWqn+%UT64p?aFi?J{8oxga75#1qI37APDX7IH^*sR+Fh#g_VUji_wof@l;kkm!Pk8CNv zZAww)aeMJN6gh!#{11_HxGjWq8T2*-12Ek8Yl1eNGxk6^0=TF(GKc|8wZ#Ajei-A~ z&@0e-gS_=iM@Xt5m`N;gKvme$Wb?+LpQ=~;ej##Bvyp%cp+b?%4t$5BmKcC<>Jnnp zk82olgzQEtnexW`0}s5w*5wsG-L;c>_Ma3L%;Fzz4@(oT?-5HH>FmQVJ@~jde^OWB zf4;SaQCZy%!HeWTesQFr4E4QA1L{?Ec?XRGIp-gqA&1iAtk_RNE$nTi@l@-6P z?M*J|BRENazsJp(jm!F$@REOo&;Kj@=udbckyvM$57&*|56CM|tJgWn`Sg0L zCKt(UWoGCOCD1pfLS6}!lro&#_|sUM;s8&N&Zr+HIGf9%O4U}r=$+~K{vBC5R4!<@ z2Nh|ykFyr@vf#{^7eStu$g};0$C90<{1j`YIR*xbB^<}W+(BgX<*Q4Q=S502E`sw` zWq~E!77I4zi9-1X2=2Ll)bp}Vp+rpT*KG!MgwdyJO3c+M8hE#T_?BqL>Zc+3ZtRS) zOR5o7OnI9b>h+A~Pm!Lq+rbc7O3ag_o-JyfB`G!`ru>%k&(-}0VS%oDDLEwfb$zKK zOq?`mAK90#QC#M?ls-|CFu~HG^a9=Zqyh;v(bs}CGso8BU$wexn<;nYRf@3U`|aAhFSvgi;GsnMSJkYSDf9PO!0VoW-URGQ?y`cF-o;^2k zcuWIvwK`oK;dgO&tp>%goUuBM5Q#tsfe=Igv2dO#JDiB>6L&LQiL86My5R9|2?a?J zJ}>`1Qhwnh9f^E05@^GOUJ>fZuOO;`NMiS<;j^sN&N551*njarQT&rfVNV7Je5d$Q z39ZJ+>3E2lg{}mS24pGm$1hQ}8y4QSR!I^4KHbV=<-=YEH7GR(h+|w7Ok_2v`HQz_ z){mCh-mBQ)qptBy3A7_EUFT6%9w8V- zAXokHrEpp`yo3rA|HJkr{J+?EUH(7WXhz)qxi6`g;_45-7FS#8Kv8UcO**#x?R1L; zK6=P;*~%C0*HND~Cn@rvJqb#p9e8m)UiqisTPRFIP1iZ0Oh$Q0l)(J-EexfE3k{n9 zjlJ4V5aB6&$rk}79wjuT{^#>y(*o@aOI;|6HJMd~A`+9wdXlxUQ!e|bvLZ>5t0;}q ztRW#y6Gf3LUP14wXtEr7C8!Pppq!*g5E%)fKI6a4ArLmoOZG(L2u?)V*`X<=TxgVg z!Ua=ffv?g2KeI_Q0+n^{9(XeHDcS=W< zJ=2BRIcL(l9p#qjO?tEI-Pa2zgzvE1t8EP*luGq=5DKoC7@?YgN-7`JUw+aNSav1Q zyc*|_yp5K>IkY}qJ=XXlewp{_M5Lr4!jJl7;6UDrJfs=;Kpj#&bx(;{kVgB&*#H-_ zu4{O&QPoMB+?yk=t}Yq`>CPGoOa;&ATKqr>pt0nv~tphA)y zFrqSay<*fWSb=W6>nH6mM~KSnHwsAxGobMk8qM$*f?@864K>?I09dPue?6?!eQIlL zKK}O6fDxYXvpzR+{z}-rPTlw2-V*_ANMT^6mK-TQQ^2M7gk^(ut~@C!ZBD`zm?O!j zZ191eX!{gw35FtihHqr`nIjd|v8lXEEMB{2+1ej?+rXn07^Jo!6YxJ9r4g=_Q%2Bc z5saI#UR;}m4Pw^qtQ#;;WhnS_tztsNL8OY2ID)CdNqh($96=<*p2NZxk6TeNU4({k zgk?92`F+eDLHdciXEto`$ZOX`l|ibS9k$Vwbuj!Bj)EXT2i6)N)*k_(gU-Q&N~TR1sg0)*qfJ9oT=M7t zrt(1Qk4jbI29U~r*gq+=A$!m-rDQgBAT8G-(?Z|g_weaVRg94 zQC(_}(D6=vqWn=zF7LC_$~X)#ad&-r#Fwos?zVlT5PZ4djvLZCgQgTi0q$?>LK ztf@-^**w(AmtjtL7Hl`}lvCOfR(~ns8X=h~%|1)wwb*CHPkv&>{~v|9ga?E!A{iKy ze=BtT-wLlXu0tl{wko(hm2*W;OFlY|I+p0cUJc~_U>upND)`90@1Zs*-izE@wx|ZH zZDaf*UbB@M9k)gJXNEp{+}h}7cyAZ($PQMWz55XR%hS* zMJBy=&O*yLXLHsF)QZ;&dZ}98Sv}W4-D)ft!8dQ1V<-1`*`hP_22-{I^;5MPc1R6) z8G6zCzl8mvmi>zw9YhT)`=|S!Xx&^yN;dk7+SPO%M9t6jH}wxnj0oia2lZvw0DMPS zw&A9C>!(g5_~Xj5UUa*;ECvRDx8I~%0Ub>g?I*$*5#;Wnn#i&>1NK^EraN~1@mwaw z(=`JkoqN6Lf4c0#kIi25AO1mp=Q08!SB3qHyqT2)BZBGwK|X6Fv;7#IvbFB`5Ar@E znMW1P2L#P#Wy~La&Ocy}R9oYiI}HuCI{jM(9~#)(5Hbnh+m6OQ=iNRm?SAhpf+{X} zX3#Roh0$CbNo+Xyy z_tN`sq-l%bX;d@oqQEojauX=Ho11pGXi*ON#g`%RVm`|>({&8_xzHl`h6&>|PVB6yDWxa{ZE;~Yo`!PhfNb5!{R z&hE>ZQiU|CkM|OD9C?-yP3-E|QF9!>O3U(@0DSV+oq)_Uj!IW(G5oYs#6KoGZU6sF^2l3vPq!a% zR02UJF^VkT`E0UU2#NA>u<-b!)4!NeIS_!}DA$Fp?eDIf9)h>5Q!_%|NG3I4N@Hp1 zNHc{j&>u8=4&sj8nO;|X-ZK2+_~;I_no;J35bxEVMV-@~;MIkLghTLJHbs3!@LX;g z40J;UV8TI{r3qz|`g_h<^uYxC5l>qLLN^CfVDo{xj%~@znvulIF5+I4!mp zb?)GsFfkWmq`wdEj9GVnFE*rpLFq+ArA6%ki-YVzL}exE0K=gO!}$q)3(ZW!x%Z33 zz|Z5u4)k5Ke%9e6cAvo_m4Qg7I%h}E>2Ts8;ssDH2q#?rAz;*IDiiS ztrfTxP&z@F{n7z;joXJP$D9s(O={6dG5$Z|qD23Q!wtF+ zyR;q|HQwg^T|>;;Pt*VeCxQNRfUN@^V48s74AQQz0S!4_+t7ulql80HGq?09SQCZic2M$8%RtFHg@YaOw`qa; z&*a%=>-{5nHJvtH-zS$7SpK09p&xPogkWbJpL((f(#lAcI;Yf~2F|mT03AY|4i zj2TxqS)X?P%XZ`oe(LWZ4%dB}M7~k8(3A)&-qyqd1s3xA@Ge55>DL^Jt=6;bJF%Ol zntSg$dJvWouR_n!w#d7RqtHUnbC(CxpUJ1f$u@8epKUqkd9&$0gU2Ac#y&OL@m-fc zh$(hDz_WHEvvdy{aoF>qS&61*_vGYA(Jl0gJr$|NAXq1m@m1MqCYCvP^}XnP4fp|Z zjY!pX=+&nvGcgTjFFR2kAw_Z!VuCZC?&WmZut|1p-7Ol=cdaT(yX~-3=)d}hhaMnm zR@$6HcCZ9~z@0gLNIqrYia+)O1q0pKQbL6NV>ZuIO$!on*1_yqT`g)2=U~a3znts) z7R^uKZv^TS+OWq|FuSlvml?Q$7p33mx2PA(g-qr;fVjuTtz(7E$I?8^iU|xphx%*h(*&`fd1#@JJ1pICI1e^P({d+_Y~6S1$z|-q>WL6UIKN45 z|E9uTQ~@A@k^ng|ojQ$;m_nFKPIHZci`g(;?Wr{))P1b{<@rToIBDZhlhe-dyWusX z`P$0iA&lxyF~xxeSPSLBk|a6mwRmj=_w{QJw&IEH*|l}&D@UJ@u;d@2uIXym%Jiw1 zF??^`W27!n4*VXW_exLf$>xLEg#ATDk%r4df^TrDiLe$G^qlop&UV!I?t&g0XBax7 z&R<@7b`pEE|GQMv*`B{uaM&xGM_yKirA7XcKYQ3x{gWcL?yFay3tOK#^Uy5i23qU& zfljAIXl3eJf6*Hmo3C)e==dL#b4-VlH>?RomBV83zgUr5jEghLGs#5NO% z8)t>!p_v8vOCke{$-y#JPkud>*-6Y1wgO!k^VGMhCnaTHq&X|_j5kLf6%C0&Z=tt! z6o<(W^GeIhXg8qsixdUQ6bcsNxPEF^vb!hNHU>zB5+PR{!DlX-lxHuBQwn`XRogvr z535dMcW@ScI)D|#dPFU{Ss%q%!OdaI?%D*5B`)C~7K>$<1`FK~lvLv=m7**xtNmto zc~W*EpHyHc-?GY_bgNzuIo`8^?!FRVwYe2vE!qA=8-M^LWPWIL#7tvy-+IX@4j}F; z$l|xB!G~14m|J?5PrdTodr`Y!Z`=;ag1o(jpnJ&0OGf|}DF}}de!t-xi1#jc;o9m9 zATEn3$9kc=J1fhclz|rhjHY&R;@Mjrg~8&|`}{}n3o6y^IFS;H@6`_SAxy)Bo3+q`$poM)pw-RZqxu-y*s))cNUL`~39FXhU z(rt_5oBZ{Dz|Sae*NyLkgeBWcqFcwFAV0$k2*4_>-s!>sVvsa>P)bZXHjR3jFT6vp zkzh_*oai2YVcn=*h<~3CyqtGgei<$d$R7G)9K(8> z1eV8PW02}tHb8r@3h@1J$FsBY>JTML-Rkh7>!bH4;zCzl-pxRG+kkDTUe>7*N>l}s zjtG)<$KO3>%xomMn=l`mH+W7Ru+iLw69zpFdS-Mz zm%IM)&^*XOa`D^l+1o7_k8DuG@X>B)(fnQf4a@R(wi*i5JO=fmf8O;=Mmv!5Y-0U4 zfP>;6fa9>g0POGG0`{PW+u?>!dx)Z!x7_(EG8F7P%mX7KEcmj*@PoEnF7J*|2mqf` zJN@=r#?<`w2K#Xl>KCH*j`<& zUEr@K+uSz_q(V^&#SUYPcQ}PWri+&lbO_4YE1oB;4rLL2%jRf%=%rR@@Q&DmYEEet z620~4WRKm#&E4y@`-$*OjCpIh{*QldDGjCM`~J7CaEKWnH{T7o$6NHiQKy`D$(f^EX)Rn ziUc%Z&HkiWOH|O7TMx|A!&%Wv7%SPC{6f+mzm)|D<98QQ=1Zp<;;`G~TYA<~9M@Wc%*H zLhNZ{JkqBAWFV83gvBp@t@W`(l%tl-R3rK1DLK_okA{BS#dYcfpK+lxa&4CaOl*@Ml2fk*?<5KPU)L0KHZf3&F^Z&NomyQ-*ICdn8c+xF=TOCqgj16LrM9)sE@ z`}c}M2-|z#1*N{iRDv?w^jWl`g1^G%EP5Rr-;?zj731F+J+-wVVW>2U5;$kHv{~*m zc-z@wK#U1V(AR^JP6~V{8evIcHFZZ4R68a`ed|BkwdNy}oVXK31%mYtm)eyjru6nThuf%vf}rEHCD1~La>Q>BZPEux zp0Fm=xZZlX*bu+>5zpc`j@w~|!qe7L7Z7Q+w z0xu@_vlHn}f6h0e0hYUn1;b2d#q6dpzk!% zEA$qq)ZiEZXOn|~MuifkAIFSHSld3EaCA42bR1jlC@vN}@O=+fQBG=u_&pV$ik13Zfe?k(&k4YabJ@{bIMxYHJ%??2 zs9c1{`s|uroD1Q7!YdkVAQFt-gmI5Vw>&kFUVBnBfld7{6^JN*s|fD7CR8X_)~K>_ zsSG$&G%$Xjr z-6*kKkz4bTBmLuaQh0n+t`ZFV5?dTA6v7G6<7wJXWlq~$>7Cs=2-U_7Q%;hg9uYU! zKSWX-zW!2xVz19&nMwh)MwKj3s>5N6!rb;Eg{MVTDZ!vEImNa@p?%1IG!??`I#(bG ze#+J+FJJ+E8#nJKJ6KfDj}wDLiEy)VX2G9cMy${V0jc~02K@MpxOsGE{xQ-PkHYzp3q2dP!q9_oN z&Q&PLX;Lo{1jV5hKau|JzzBtUD)F@u*NHuRRvMIvLEU1d=deysBBqK^%+GhCMR5?` z#1y2^VhAo|(2bd5r=Yl)jX98m_X#{w=q*N!#x1?*81sP#O>a$N4-JU z`@!`7S^E3q`TNt`iCgdu`Zl%7};OrF-f0;7jWo<y^v$+NIXeM^CW&&bP?+F~uC{ z>-*lM@9So@w>Ium(EZ5N>VFRO^$;@bC~doQ&o6%GeK#I=N*K-#N)KsH+4uBq>2zD$ zcXI4czdf_O^*rTXS&UCmJd~m%=DDshGz`gF%?Vi>T>9x-g><$4ws-l7d3u9t`bR{5fo?`B=C zxUY9CFVp05QbNvwFCCjUIK4xoZ*HnO<6U%PlsUKB$&Ymt%5F zEepS2RyR9OU<01z-)+bPH=K zBELNk8#a|sa%rz`Z7CKP2NEYUmlJEm#EjoQKkq#D-Oe35JiccopZK09$1Lr=;}aje zmkx$Zu6g=;=g7heo)hH@6D3#w%FEEJGbrePae690yrFK7tQE%xl%FsXqF~AqBfq`Z zZ|t<@kI4x#;{2-e;jU=pqHH)|!N&m%Q(6s^TUkiVM=Q=xeJ{y`SLRn8biGRtAy=ul zZBfn2-VljCx8R1`dtO1xc>uZw5_e^9^aO*3jg|9xv`3rrqYm1Jd7Ww(L~ybWO$`;A|wB zs}&4=d1xdYHv!Omxw$6Gad$W{Wd*GY0NMX4eNIDZ5p}Nc&1glUCkr-Jo-G6qGRWF-Wt81+AXM<2nYTaC0AQ z7U_B=L|h83TIh;V#*KHKx31Mp_~wWIL)cqD#j$PO!ng$w?(Xgu+@*0RxVr}n?(XjH z?(XhRaCd?y5FoF~IrqMM?*F~-A3dlZjM_EVoO4%Iuf3~xuh#D@oh^?ToAHP!hAh8- zHLtBC7>5YA|8(fmtNt><%b&mi={a>-2o@k;TLh;;x~dIXiDF$3wv6^g+gnC-z1mmE z|5d#gr%#+tKgwR>Xy>a6FG~n@Ieyvz+GX^lL9DBU?QjTct@w^CtOn@@7*{2VE$Gxw zO|a$AW?v7PL2Zx_p?-Sb0i0coUV|w64?EZ6Wz8Un$|}Ge)Zc(Rh%SLUVu3qq#akim z{|$k+4ATPgnvUB;zW3hfUq`<;a+|UN#Vam-M`?VA|AX?M4gM45e`bNj-U4Z#n*R-q zOLoo{6c5Ux1q3l55D3Qp53YYx`UZAJk75UG1`BLv^>?#gJKGOCOkz#%IGbQx@bm9D z|JmR_G}nqZLN02PYyq300-L={L$q?Nka|XZyt|G56?8~^s7>)wBbCqz;_bEQLoYzz zGVuUDa!!w?HZwz`pS*`~uixMrebQhs8qlXKGJGi|M&6BRmkCC z)_DJqkCC`i0&WxDTdrKL&sRKcUcZm6=FhAi*{eqOIX{$qnLxsP`|0)sbLr@L`nr+T zjn0?VvGwbep&Gim!#F&*?6>((}aA!P@IPWigt{!@Oa zrRsES-cH*IIDTDECz$qGPmeabigCZXA)J5Rd7-No2rq$#ApFLAf&TqFW{BLL2iGRn z0yp+?q%nU^78<~qKRe6V^L$YRPT#e>@4_6SffVBC<=G5mR6YmV$=_?0IM(yV7%R|( zh|#Z6578nAW8Rj%@N-nG>n{k461&)9zY=u>d3jR4PsDDzQWj=J=id<4RIiX&clgSK z?<7exCBB9%&6?kTDJWQIS5({_YgX7@ z3*oR#oJ#%|;$hg6!g4#7mDsBYSoM$y3nIE-nsRj6M9E_ayz=CeLVQ#?T&IY`wVJ>j zzg(Zn4OP@%&h}%w^x93yqMz&#G zk;8z9ZE}1aABAlmfp}Wg!SNLLvD#Wy_RQThW)tKK#fLM4MtN?9t_i{xZUxr!+TOj} z>t-2ymrxW;2`0>2W7lb<vW8<1`-zl%>>IIDOEp#X} z418a}yDRxJ{wCd3*s-6S-JR%!HEq;$H@))3-ILCH2hk0?9~SL=vCdtaFUKwF##RS$ zc)+3l)0VT&vnXJ5+3mEolf>IGt_72B>moBHhpXtr(db;WzAmUPf8B}N_#R(Xn)GsI z0zM>)Cw})qlqt!PquPL_mu-i)Q1M+Vs$HXkl;Ojq+xPR;q_l{s&o}0Jtooo|xM=)J z_LKS-ZW^l`xK~yDlWmKPWCMWfz#3Lvpad=s>6fCbvBlHusf~#b^-gVxcRY+~m(GYN zi_`UjWmex6<-C2#*~^%haZ4={#%wnB;FE|K-%i}yW`6FesZ*X7wepE!?w z8_6Y04yhJrS5}~3S{JK_zj2gyzmoF6jlQ!AGF%A1y5qD~Cm;7L;pDbUjg#%(tupTP z=k=<7PjW+|qhr3P)Jb2u3B}dTVSCBYvy;~7!}S+%S@O%I_^Kln(ZXE@Cwzfy#MXA} zi^gRWa;xLK3DM-K;tp%B)W&7AzV*AidPB#pEC!~EAGR*h2ct15+bJLLr<~1}Ha_VZ zY@k)2DwZ4)RHc6_Az-%&Ub!z_*NS=bax*E)7m>%*Sjs9$?r5+aC#*5|9_Llw&Px86 zl}_-WeKl83?Q=FaT+*o(6Rmwd=RSXL`KpEr$?bf4h}zKJIPPLR{}Al9(AH6Y^!kLe zZ`!R;!cjPF%G+dlrpL3?IL5eG20gwlSo3CdQ@fcMvBh|LiVC}TtBmijD5rOYN%*DB zg^k<(&EcEhDQmZ_>sYhEw6$`QI%3G0z0*U{zV&GPt^#bia6-mS z*;~8qF-uZ~bBg@2`7=Ibok-)Q2U!i$XC1JwHBag=j_xWfLSI`0xj-DUB;q|b5O(AU z;2*UdEAK`wZuhC*9#Vgihl>m}eTXfHx1bR~-niN8+ZA{WVQKI6xs1A1%pLG@P_TOL z;@!-gQ0Tunz4L4%c=Bx1eE>_~o_IzcOkZK)KYC*#X$U3a5q~(riYqW$L~>?J-xsvs zczt&GF*dUKeWVpP;fFBt$9)gk$T4PSD2j9$Qev1;sZT@{2fnHI;K;!yCdi`0jRe@r zj>fXT{NOzk@M`g|p7vs&(xZ|?7Nkf@GH&X>mqKBB)Vu1KsMH~KVQW-6vLvd<89Yf0 zi44Vr*KC7bv}DxR+{hmrtHTDf=0qu#hEb8@*R0~Ez=2G@wPuoEpd>Mpx7{NSLGGyl z=K)fA)zM}tW=-t!)JmMRpYInJex6eEn#8hF$GpmJiUdWAxW@16jaQ`Y#*ZOLp4CZ@ z_&Fv7;%1?pXEBQ;{A#^$*X)YLsOX%nDjC2qejd|z^ysLMJ}VoC5NlNbaVw{Z+ixRt z=&4lU_q8fRIq2eC)%oky{KFH&nsv^{Grg_6yFT-sBxm!tgtL}@Z%Mf8^sR1sQ_QvUJLBMy~qWK@0W^62KS zL70W?OxzMQprr3PXo;6W?4@zNyxC!NzsQh3h5aDOXZvW1WGrku-!Tr z0}GDz*1U1`T}nX*x-r?;UWX-{f$n7>uXYd)jtfbqEpn8_OF6jNz-b&?ylg?ay31Eqr(^v z6#2=Bz-ihPDqSGb6(reP`Svw4!>kmqRPs0vaD~HFwvR6DY-sSoLtM#Ocz+D`RE|3; z#J!qYbo#nN>$zUgbA@oM%{1S^^j(|7-fm}0K|~F=39SQsqLh3CSHIQ~3lB0J%j`?ra&e#<?!Tw%)A`v^79ly)U;XrBQ@FH?vKdMuzU)8CPUyZE9@=uqU>FJ)v|pC10`GJzm0{ss6*L-eNgY z>Zff>N?%S)8(%|bUt6|a2^*@^k0ti@B!ayGpCQG!R=1zG?j7zj%~_rtAv+uXttoe4 z-|8)xl3Hf6c@bhVT4GjCuPUm@JywJ^Y4etwkZpsBZN-hKhyA|Ftx~$Wfxu{k5MO%S z7*_&n3S`w0^yoY__s0r{D6@&n%1tN!6dcj$AvKI&?I)J^kBHpl1A#hqr6 z>pJP@ZJ6gBz+-YoY`iQ2#i9onS<fv zCIFwv9)nw!3tQBBwfV8BJDVsv*`Eqmc$Bm_Gubjc=7L&Gi&}!Y^-u83*R{c!w4j2^ zTh!9z`Od2p$v%d(BzINbsBG^o%*2ZB)hi>pkMCBopH`t?C(l&D*;T>X$?=D@M8j_) z9D|hTI`39#o>mzkV(~zKdt3&IO!mt=t5PkNnDMYeYn$7xGGVmhb87o}&q~JFez7R> z&Be`1&ch10c1n4uU)!o*J3(HmnsnD~fO@J7^Rt_knuk>?c<{7ea~C^Efr);phgH(r zR>KyKSos$>tF;Ln`9X#ol6q{5Et3+0`q2SxtNV^7zOCCdJ0Qi~sxdQ-l{kT}UHHqz z2!>8}+Aj7 zQg&6oEnXygK#Fcwx3K#zg#mV4yL=D%AMB>2?GT)LXSrvaTcGqC;o+(6F2AoY86~B- za@AaAntV*?r9o?Upc!$}X3vB;Kbi{dPiE)^*x_hJr{z zTr3%<_lkY8`SEZ`&7?&0kfCfKT4B8k0L6oOqX!tEDGa~|-y@w8I`hfQYa% z4Wcc~BJ5MOua2)&O%YrIm_T3_g`IE?nbdqcr+PsIZ3RYMLSSfQ!c9dW(8$G5NJe#o zmt2&lr-wSOX$)PDY0TT=enBD6QN-c<{7*tML2M09o!O?*jrQa=y| znFIvC)`9+1B^0E079O7Yfh}Bw(-_lvjPMc=`kx_@LH`xw#X7UU zLuNuDlL&_PBFgnfWGK%WYpbf*@8bFbX>fewCAg*>K zJJX1Q=$k_Y=X#t;C~^VSmY3LGnST+65X{9$U!V%913Rz@h5>Q>B~;BTx^oi@Q~&%) z7-BdO=4V9L#H4-PvdK}4zM+5x5Mc-yl+`>~`x&fFTD8k`RU8sz z);y=Rc^anM8XFiCXJfd#Aef7^{?tDDcMs^ijb}kUSKls7hX3rE zB`pY$wg;jWe3EN-5eR-^2#R2sy_>}!(zAz{FAz7_4D;=iFBlejhOQB8jOZlDoJ6f| z_Bj8|M_L5JkiwZkTMJVBtqFnHKU&tH8`h zdF#i%(e7FHypSq;zqTerI`kRDhC+?wCcq(#XC#Du9M?|x^(Z(_&<}DH1WLpAeZX(P zH>VGU@QoJn*T~R7%FOzdc7MoS^15e(ydw`=XCqs8D_d8mlQh9mbd7$X} zd>e>PUCDWsMAGeH*8R;#0KFe?r~){IB5yjSO-oq2O@f!U{we)f*y*hqas9mez`6G@ zAs;r3nTC;^c7%yzbh7TngyUviv#n@mdHu}Y={-5MH7V!zTIKnwnCVst81qm01Xr`& zsT;VG^H@uJ^kDYM)$MiI?bVMrM_&3&rZovSak03@7+^Y~&O%kUOS_hE`)oqre;%^3 z9lF9OK#rqltfgU^u4f*ZXSYBEBd&f-C9|#LQVdm-GjRTwu$ArZmG8hSm`3xuUSjtl zV+F``f#7kl^Q}?_v1S{q#s^2$SvgfO75gY_)vzG_*5uAl)drgH6CO40f;wvo|1za z#mGWW$2!HxHay!R9M|vVBJ1`FbS*WbD=p*tdHu(8RgJq%f3ty)qDe&8Tl{>NiLQVc zsGi&F+JrgWPe4Flt8u_BEhkl(oZeWb%2!160G2}@m5VWS(B#Jdhn_RU!wyA)=0NDdk+l{9PzorZo zX#WS0a?L75@G6whVWK_5sVN$*a!p5SD(7G^{XF17!d~5~%MDt;Fy|ui`8u&RnPi#@vcZ}z@{s`t? z0`&SIb5llH;&dUl2B)WUkU}2f-4lF^P}8GO8RV%mP$(9JIe022X|{b@`74EF$`Es) zi2Oeoe~UO16k&T80c7>Ri-;N&ZIJ2G{YwCIF6eWKNjwK&j`68iu$VX<6jD6Qv^&+@mHG>i&wG3*HsW-Hpp`=L$dc}nNAef2 zN#gXdJ+ypm?7ze~{y)W-tF!&GXsV!2OVbrnqG0`{rNw)uK~T?qjajah)0;zUl?C24 zrKOGijr-Zxh=sZd@pH9o3N6Ftx?986_j&F*PmL;XxsLnS*NHuWj7y{jV+Scai!`R+ zYqm|J*^z*e`8)a3ph-Rci^sHqzB7lV@SIWv(?MK%5d$U1y5Kra{E$jBdz`HRbkDVN zMHMu?+jS9Fir26$Q{kdL46| zLwe)dX?j`$(8EJ(!bHr(cNMoZEckz^a0d-E)wK>CkWzVhyM0k`Rr*_pa_%uu$D7l? zbi9pi)U%NMFC<*@H8XvN9-bAFm2|)UvEpOuyA_X0|AKfd1zPd(f3afN;2>z|0O~lT zKH=8Vi_Cp|;${tJXvMPI0KVmuH;8Lh>?>V{BCBWd-eFwW*I>1`dxOWiQ$Oh-sRp~b_%Z!yo6oJ|+mQ%3A z+Gy-K;CqOLF3-W}oX`4s^MNRtq9ij+(b_4sD&plwcS?s}dm!;j6KKv@Zk1&|uASS}4FI7y3* zsb@t2hw z8t!a8T463k44`WhPlFC+&xD~zw;Dtp*A}AfU|0@Cz#ha2W!Lguic#d$ zu2iIk_Ak@rIYG9=FfpJQ z6fK(N&?MnHe>K<7l_7lQM&XpZoM(xbnYw%GiXYWWhSD*DK@Ab0 z1GP}CxM&8s6VdmGmIW(`%K(%&V=dTC-;KxErO$;bcSX(Jr*ZN~bk%0Zt0UMAMWBGe zqcHRzj25RbtW>0#49imxc?NNUrS;{O#%&|mr;xx0aS&me$d>IFIb5i$GK7Jqi72V7 zW}agyHK``+6j0F(;s64Z!`TfFDXVgmK4V%92E!X74C2uDo{f}d&@Y#wAq}fA;yZ`3 zN9wi|Z#n*7vN&i~Z{43isj2%(*AP*^vDtpkIL*x8MVR-oRz3E*=K2!A1fc7Ar#TsdOLPn@=Q^*aQ<^+LQfJ(hy3(m`u?i+K&Q9>Z92{5#keN zDuSruK53cq&{?>#d%2`y9J~s%C$=1ZjT>I1j3Xh>QbexGXLxicrKD~Z`0+$b#X3qc zbXYn#B{9v2-0f10xy6NK{AJ|t{a zl~kkLaB-y}cdXzB?jH~hel);4flIkYR@5hXbn5!L02))q0%|VI_e`zlLY2{92~tO8 zQYxuXnVCviS#s!~sD-fqL?uEDCMR61rAS3k`P%}WTA&4SA28l6nCb{mcp|!Ajo2ym zKuPpaR~*V*>4t_XVB&58r*rcjV2E@LMN%l{v|BF5IAk(AQvS zEB`e?bawuD9@WZe(Ug*Kw6qgJ^oEqV1G@~U0EaP>6LlbE;9T&el!+UVazehue^Dj@ z`zK|t)EQH2-Jx`S4h6BO7&3WuZho`8pW!C+JglP8hDO{B5`>xQ7?h1KHWRh#Z_DJR zG(P)Eohps)La5_Qd{}1Cj+c`3mX48%2at0Igl2XKC1(dhQJ*+hgZ2v76}1IzF>J{c z)q2zNBMdNRaU?f3^a`(AgD{cNIESsO-}b0|OTJ!DBK^K`1XahE8Ff)Zn2-j$`goC( zgr+kG0!oBSC?KOmLwmyVl6HzWKIx2XNwk%|l;`eA$PyK<7 zF@;}q)z`e+m>(S3h9~ZIT5^pdGAs494k{2AhVz+^28L5u@VxFj!Yw6h}ApV(p1`b%M9-NAOS) zW5HlczVA5n6T$y{@`Xf={^Z^#MUH37!oawDefJg2rtaxa%($`5yvYMZSZGv$`}`y}L$0253tidzJcc&Oc>{^Y0^dCRrl_ern`gbYzZ&48i zw$-6cKNPIu!iE&wrio}i!J{IQW!@T7zfa_@MU0pBVv#xS!Zb1@eUQlgnx?}AHZ^hB zkHSHe{vl)rge()FqRy(=AJ)GbQ?l_22{dck|zgyl)wFZ-TEN8|0sESac;ZvMI4v0U&M zOOO&|dP+qEjkRDSJWUR$Bv)3chh=`?M~OOh)FR{mug|=0{pL9JB51Pw`hI~%@|zY) zupt?L#|259iZMJU$BV|}LMyW?PFuL7;@Di^zCGcd;-l~~ZbB6LpyUyfi-0{PG8?#| zL~A1ITzAL`_F6#8-l}e*<31!+0I688c}SU7B1dP@6p_9kmp0c`E#-m9qo(0PqG1o; zz`6`kR^`N+jC^b(ugOE3S{FR20XH|lOuatnTn@ss+pq6`TjZ&CN-YU#tZH+87Rpia zF)yCPI_Amecnso`FJ-_zVM&8cE+Uc&ZnR~WDSXM=H`5eh-`)G@lUUMOdvA&R=Xw$n z#857xJ>O7~781lf++p&vRTL)>UXjT@K}*%r^{kwRP#&VQ+0Q9(P8bd$7!)c#dx+0J zlC%5K;-F=i!dJnmf?Q!{hK2BMJ2pf4K~_TfQ<-}f_mQFnUv`xSv2UOU36Xtr+5CS7 zfZl{qA#TRL6605t^6eq*n1u>7%2po*%=H@m+C~(JDW4BzGDGp{&1^E8CVBJy8Gyhg z_5ykXy}%s)6By-fWA(<&jHHr_Dk$2e$A)nt*5e_cj_aon1&ldd@!3s$*@7F2)G%OtT z6Z|Lk9uj>*1@JM5bhwZE3tzc3X@4e=zSD9x_n&wiJ817-$c|9$A?2cdBgPx-W5Tls zdiEbuNd0~e!2IQy;7eY`4K!u?&{Lw@aS+dMRfxYF!xF0Q)aS@)5MaQ+xhtiKf^ovQ zfu7X#JfeFiw(6_=E{O@h04Q7Oq~#FyYMbmmi0OILd$AHBl*MM6r_a-2dSU&l{Ts_(u8>7S5Ei=O; zV8ACxvsv%0ZU&*)G^v$5ews(GDGi?elA<{N-ov`IEe^8RoQNfmlmZIR3cn$od4}NE zb)%cke5_XTwaMsx4ZfI-c>@w0C@31%H>D4j2)j&=j*7X0{``<7eyX4YrFyl!OqN*U znms@7m9}b!1^9bnzqruvPz@+H4=O(HjWOw~R|Z$Wt7BK!)7e*UhTzXceSP#yu}{X{ zU$rn>dyu$E%z}Wpa-7*X$eDAunt<7R93+Jo6cI;<|=;l>US^q$}B8^Q%Kg4;)UD@t2a}x#Z~pf1{B5)+ZPL> zUAA@B*l>W8RNftKNm}kG_q!AXpM^<9NW^~wW%Zfw#mJ~Za812Brf=>JW z-rQ4h=QGe38c-kM?bAEX*;@P{xu!njNODa*!WWhSM&puKnc|pXs0GZ@26#$ zqqR5L^^}@5hv^Y!fk?NFsEIY-&+o&(k#9H;b(EVnDpZ{%Kdl84YP&?1I(dvT!@5?G zF$ug$i*Lk091g-C78Z8uq&W&Jnjnr#?e=F=Q<79oP*J{zqy&cKK232%mCt9QsW5Zv zfEDKUa|AmSg|{=Mq1>-y{j&NUfz^swh`TM5LzSBv-ol`Zo6uH~+XCE40dPRHGX6LZ zCFo2`IY*TWaRDJp7i<#Xh&tSG6Zz^+bsm?SnVOfGxQIok44{%m5ay=VG0${VqGF9D zMbNc%Pf-NGCH;1+>IhmkN&Fc1NDkZ_a$^rAgyQp$t_=A(l2m5eGfF=yXj4&s zRs@L8xgB6^w^UPwLLMGCep5LtWGW2$`sURtc36loDa0KYpu-CZ{cgn}**z)eP8pwh zj3WyY@E-qLl4KkG0mm;Cm#!KmlnR*z#}D`r2DrJKh4Cmx z;ZnqF2)cdgNSuWUWCyzv8zVr4j>@IQ@#Fjg-c#vTL&1X>wevEo#pd51i}Cn$w~N8< z&%p#8C5Y%)WzA>n$Jy0)13bUt=RbPa+OuBms$GTNbRaT){oT-qw z66mPZI?HufsGvnEf%CF)%aAljs&~n<@>~i`7sZi)=^~2<3>(s6q29O@+OYTJ*2-N| zZf+(FE#*c;{HH~XaVho0k7gG$!xu2v4KR3#2@@8|NeO>*;$Zb?^yQ|abd0s4ERgsB zGM7C!fHV-A#TqqKYpnn-_AIqLg!)DI_1@4B_oVW;Z2&cHaqrvkWo?EP*Vz2x&FdwJFpLH7mb(8gbNE) zBk`NClqyp;S`|&|;Bkh(5iE}5by~~##QJr`%QpLqrdu%HVYgJix);c0x9O?E-Ev&B z5YvtWjk_3yQj7mqDVb`}jN%jEC-4zTTUM(IIjxH~yZ6tSAAUM-&`Jh*nL+RiGSn4V z{>c~&5cHQus@%xRf4x473(2x0zdyo^PmF6;T3`wlzlr@Fmrh>d(v)9+keIK4Hfpge z9J|1eaRtf^`RBD{f_9(+&K5Ky4W z2fqe}c=v~Z`%c3_A_*+t-vlTQp}5hp#~j$QJi)}|Wywl{%tqrDGUi2yN{C9N#f1Pa zfe-ukO7T)5O?etZ00{$~cv0Uc$*K5-c9jlIN9i~-%!5XI;!z92yKMi=@HT9tFHA$AN}BYH=&M5by6iDPifG z`S!KLqmsBNL}szA^aDeBPi$;NJw^J}#xx~7$))3KXUgQ<90+T29`6ewBR=q6YaK2d zx=5$QmzMMJ*<5R0_bQtvQdLtvi^@l^7XyBR-O6766wuCtUHF^J3|7orX;V~j9lUH- zbh;35T9hc2)rv{-GrqFRU3Wp^~^y6GC;_K<+N#sy9jCX}=N4sk! zPZQCa8%AeiHhfK^dMYq2V!2 zta%QIWQ+_w5IO_$LuR3dZpgJy?F5lNP z^nZgHA3Qt7IhXteWQ&0feYX}V*Y+<`EOfWGJ_%VbzyGTaXMupYUJp13$T94HRIPI| zadx(_HT$#9s!46r@f#Of_jZYX>#iwmvxDqD^(k5HmK=pO@J9kb>c4{6+;hgm=gDuA zu7{5$o2Fh~px-`C_jEfAj>t1+BDm%vBpLFxd|5P06H_^G&adxb*?x`W?M)fAaitU?d}1;=RsiN;ntW_Hzx_)< z!OAKoRtIgJL(q}IZ07SM0xxA8hDUA?#j|}TB;!IyRBSpL{E^6{sasU!GX*)}#R9(2 zF(g)oB5x)aNJQNE2I>bGT*ydn4@4O#h^)(nClW_n`sq4rU}HN&@`hL(kKma{SpblbOraRIJLriv}e;RrFDetVGb(v%Fo4 zNuR3*>~LgH730_8eIxB-1N0w|#Y2oaJHWv*255SD!i81GpDx{^u|&mRoEbxLa_-&^ zNM+=hb+sbIlko=`M;utDyL6rM^eeagB4`rePDgOFsw3*0O@vpo@kHWlpNR;#~l1=brlLd zxQZ(>=JgW^dt1QO*^K8)We~bzxrtXD?6HVAr#3DRYlI$pcg2)MT^J9YWo_wDI+9Ym zp<)N`ef{V}^nI}|$E8VK%23zE`~-ui=AKDdf{nuqd-a7`rihR8ZIiL=Ro-*Oh!3*M z#D?4tIh!KAu}vtBOVce>$O+eNQbH5j69N#{)uL;|x+!#iO7H^np|KCTmdI0?cYq9b z&tFm11DW+6=XoT_KVPqhThqdP4)?Zz^AtXJ;Ed15hxzmoiUAR_yE4W_kHFLtV_3u4 zJ)|I{M4Vtq2o+N5CtQor71vs?(wwdX4#cMKbC3DT_J5V2I?*~*1_73!Y6kwjS5*E} zg6fNjq4IxR@KLjUmIF-iAhVv`{Ri>N`^J&X!tpFv_#KHt%}DlmjwtR4=7WpLM(e6nEMEN=O2QerkL!rg6M>_Knau@m`WEn2(^r zrcueElWuwRBoSM)3xLse!p>$9IL~1~=dEBKHL-pZWcTDN0iV^{`_aV#0Rg&*7{luA zc-`g}@}CP*e{ttJ8G(U-{DK1kLH(Cwrof8RDh7tuf9mjVCimHXW5OH${xzH`B~#iu zp$QFzW;nQU0uk2}gw0`f!v8U??XD;+Q;3a(Sng}+cj(S3t@c+1-hH|*k%&4_s zO4X{C+?G{A@xjZp(q+T>GkPTKKskkBe-swnSS?42;{gku0L6_7kwzpt{%q)3S_DXI zy%Vl`XatN1POLhKB-SoZ*LD&aOSFFlbJWtfjYsIZ%BTUIm|!A{wyEOL2-Bez?#U$< zGmd1QXsMMc>r=QAtrIWAX{cE9kpEEz3MMKN$=>?#sI8uc+Vpff2e)bQoA)pjiFA=l zBr|5XV1c~-!Fuk2QOEgOAC`>Ry$1)4Ik72QdKFowxgxSrdBBZyhQ3rv1>H$_bYyxd z=xSx(G|gGHtVmPEU8&7Y2~dZ|+J)81;TDVsbn##9O#=(qOhTew@!4GDaGR z-HJ1CG3rMUoCR4iiGuwNf&8h3xq~a8!a`N(yeKMkel&~Hyq3;9%T{U@(R{QA?wjG8 z6Z7w;)*ijdo*aH#S@^J*nOh1}sj$j%Tqbwk*iDPuWPxVg9Tk21gTCZD{$%Bm%Gy0U zNHE5!y6=Zy!=_zcQo1S5OFZPN#mm3m{8t6yL?M#aVPNs|4jK>;^naa_&gLdICX9c! z%zrAJY025Gb6|DSiM{>MnG*5iD?wowx&`fIwk8yxOC|CHQ1~j zfV*fOsI3zGa54XyZj0ZHc%p|zy%tWT=y)_F_l+ESgyf0Ot4B}idg(lb0Q6U=gY4_0 z)}fL+0?~Fc;^W9=lV`x&&@#>r*fS#8qQqqr^`6yA&F5CQ8W>D>7|GU|n%?F^I20Y~ zq*nS6;vP}(gNZg269Tl`xF{LK0OY4LWz^Ul`YUA>Woa=U~=h;L(a)F2O*Y z-U#9dyLT+<@S0%Pn+CEHBx%!;)VVy9o|J!1mUPNst%elZjJ@J}FbRhAgF!eFQ+`w9 zerb?qmXIQiLldRTmz{kW5XfQ>LYCH8I$d?cx>J3Ac$mnruqaPwgS^(QS-Di5@1WeB zZ7vd{eL{Qiu9%mSiUk{DgN%2ch;rPNOh_tDmT%ZPb;dcTNY@H3&X!-G;XKDx{V4ZI zWPz$y&a7bFCfytdJKdCD?)R-ngKeP&g}ILZYnK-)def=k0ud@x{(&j8j7)u_(p*i! zqGYD414(o#BZhH4G@;UR%6a1^EZQoxAxOl0szB-`39sOc_^M0oOdH(dp zF59aKWHh07+voYBMXyK47g=iXye8-MW^e7>j{o;v2&Gsn0#u0928d^90PhLNg@Qbd zUL!e9J$W8D<{p{z0HM=~2qc65LtsVUl`OHJm@ncyzJ1P^p>}91vwJCZ(|LWE!AmZVT96rUgauCOCpxky4=eRSlcQY?5dxAk3yv_O`u1D;1LePM&UV$T#^k*0bF!k z41|J{Gg2PO3wR{^Z)<}LMSuhtUvDnBLme@+8`b1V#%e-zHpV!Eh;+lr^4HnCLi+)^ z#u^dhc44JfSdw&1+ukr=-8!{dQmIiJstsW=*OJL)ypbUIVrCMwd%Qt+;-3r|mNc93 zO%6iFHgRPoBB{NeL9y$x^JK;eS1zAVAcs5*w&nc!_dHpYiB^mAHTcVqYdw;qgWmQ+ z+hgK1>V-E4j8^a>ElvC3oX{1!f@Q~G@&{eZiA_B+&c3V)sP)_#cgU<;C%poi<5sr$ zUwe5rgBuMD>PvpD3k$YaxKKM?hs-T<><(^=v-r(;esh=S{cd4aT0&nbUGd%6VYbuQ752+!Js+gWCreVxHQ-oK zHlU&&lrqUdKJjJFI7X^FW)h&Z&kBubrqp^Dxi%M+GL@yw{%Fjv>ZJPC?{8PS8NSSk z;k*|R(A>0D%0Z_;kZTilfG^?w0MrH$P{20Xgy`&i0p!Q+^3}m9n>T~Ok^LM!HZnZ6nS`3C%`pb-g=Gw%4S$p8LyAPlD)s%l{)PTOM+oe z!vSb}wnUxRB0~@5J^ONR=j_MDE9yUA;(uc(sn1-$y0_u1z#o-hr!<1m)&*celyf!G zj|a+_bbQdU{*l(XkgAfX22!6&4GtpwdMzOGt8AD%g>rAkTIN7i_F{)wUxUM7mnE=y zXmabf?TYl0TQ1CpRqF)VpviB-np8}wW}%NL*rkSBDz^2$ymo-K_KIC6Fb?+0mF3;m z-#uNZ%iD)#3d(uj@gX}NbE-5B$l3z*Hu8IuISPdyvMs8(kYZOo1V`XhI=TD@?r^Lb zM6?CnJT*us(UZK$daAya6qwo#^8`qUMNwLsRf}7e5kJ0@SSk#k#TK8$2$QT^t%8OV+Q>GF#bjFJp)73SzUW zrx-A`lQHU3LZy*L8&i?N6J&`QG6py6waKS6&Vl75s~;_p8(jx_(IBQ= zTU-oXzvPVR7VYQh*Yf_}O{0T#jNy8%`TP_5pSf7JFV9K|@BiiS|FI2eHp?@RVeK1s6AGr|Htwn{|IaKWKW7FHXI4YBMb7LH6Jy6ECrNj zhH5A-gUc%V>`n5ZnpU_BW5>Xywg1w^KYqB>1=K?c)J5VWw< zGSp6&JaMCWxrrH7p2j08*qX3CaYgJ*b7;}Wb{Wa7?tEo%Y?dwj-#?see2^+yg(za? zN{h>rd{6A}9XQU+R())fh?*T5X~mh&KntI*3O@B&wi%n>goz4~V7D=q*j0_uBh#s- z5+zRra%(UcWxLd08Jf*zw7<SZD&vWh-WgaIViCY@)j6bh2H>|_`HnKuG$by4)dCa)BH1m$ zVcOKq$wsHyWHYIxEvE<6;eamgSeC$4uk&^U2F)e|YNC+?7DeUfP8sh}Skmtpz*VJ= zFRGjl=_ZQ8=T7spENfRMGO228HhZ5nbL179=zAPch#CRUmtH|z)dyi!TSKA05j(@r z$?o-k@@+ADvelQ2L;t)>Ci(eaqqNxBkT5IYoJ<%nyZiT;!`8*d(8LiqEAyV+O=)b} z?r~vtZI=kfiR(0lC9pxTHRcPdeU1_*ZMp-Yz^XmV8D(bLxRSXvnxd`D5-1I4l|^-( zi2CTW&Hd&Dc!B)+avc!Ag&2nB#Bmj%U9v4gcO)~py#Mwi<%HtmhZ5`>D(duXtB;_? z@7=eUnO`XD^N^@CH6>IUJl`m9R=-K6MOyPlafbHaC+}%oC)OO;OqNZl)8dhO&J4}F z;_n!%hwU&+D-W>-SwkyVAYhL-Jwe}F4$N4E+>u30}2 zcc4(%gQUr=Yl?k6DW+kwrHe{il z!3Zt&=a%8*;yznWl!N3Xm%0p==jf34-JZTr^YvuMgJq=lNeiGFqpdN6n1+lt4~KJ* zg0)+rqvihk^Kq(>8~w{BU|j%mn?izPBlt7MUH-Aj8>7v~rGiMm5$YPumA^mQSY=KKrRRITRdS^Bu2 zAHEUaI!Y>}6<|_OWlS%S$w^{odi18rf8~sc%|g^?PmCy|pfOH^zolCeCe@N-P>iG| zL+|_WtT@E)w{H1X16+Y?PJVZKkTD9U^owqoMWV`}>^zWmNa%!%XPe*Du$X*SR7_*j zhDiJT&CXpYE&FDD?RL#A|Cn(IilWXeYAE{`fXi9uw@Ae0uO`ED`yYlK6m`c@L(v3& zxbR(45{8sBw}RzKJv%BX)!kBVEBF1dR$a5ZS6$b#x}s5C*TUP-eV^4o4<7`1iZMdj zW})+Z>-yN;7lzE{3I^Y6d?u&Wm^+k=Og2OFdiUMu?Kfg0VVGekS3;Q@dsN*s#*J6* z2LQ{7sKv7>7;9Nh9lA<5Fxw4s_(HM2adbJEA)mkI^)1TbyZo#X#;5Hmp4+C+oWEeY zp(ymaj;b7>juhF>PXyDwK5b)n+%&10y}(o>%2xlMw$44C>HUx6U)Ny_ZIVbzbd)=} z>>r;;c+6*0Fp&61ed=CVeJ#N3mJqxvCRoemD+$fbnbBeWIGeeSi=PWJoe)RFJQ z{@5P-Jif2z=ll6Q9-q(m{d&J2kMAcc-sP5ga!qIp|CItJ_+-eNO`+(~!t0j=)o|Mb z(#pz%2$+z)>zR+iE_1|^`9UkRi?&hnttDUbJ3=}0!EH~R8$)S*ca4P+mm$uZe#Vm@ z>8+V=d9X)DTfeSySEq=SOhJ~ph$*V(&M*yLRQ z-4v629p=TTL&>(tOilNouC$}K=%0ZP(H0?sho}?8tc&&?H1zRbtbc{c!BHEYZpF{- zvOr-(=3cY%CG8{Wm{u;U?@M*o0xO`+oHFX0_bd-n*FL|FBB?Jef(_pD{?F=W-x7wO zS#2A&PRdFg8fVvs#{F&} zca>=>K0_?XB@1~Vidoy!%sngXrv7kL&xr{MKUHea_u^RnvJoGbXeZ_tO=?JTa%^J{ zOcb4_Ss=@w=?(aJ@Os=_u&LsiKHsv zk9f#!yK|sHmyd7iF84~irg!X?O&aBk1}~#pN5!7Eb>u*4tUT`gk$`rM{=+ZLI5fHY z@eQ0`$!8k=EHg@Mi)gq87nRtv$&w`(+3Y5~J%uJ_Aib4b`8FDG5`8b_J!ceTEz&RE zYmNesLX9P3FInA+FOp^)J87oe6?t&IL2^jtXrh#1Ix2CmK7Em6X_$cey(F?Ug>smy8YFF~)n_k{h zYE_o3(Q10OBT<35E|!*Z(rc^*l#dXiILq!_DTMol`V&JNR%)zXUKY^<0| zdvc}CvinLB@nrFs45RI6u=n=JlGOAaxuH(AcuV|J-)m1cfsJ39%hZ+a*YHJ_MewNu z&!>hgVaT$ZlOvWK9{BX0(Woj?o=LbI#OzjPrjf-bO8}vW2K|2hC-#I5J{eyBJ6Lbz zrQ|PzjnW!Z+C9ro>a}4s$TrU^%}l)YDX0JszREpaV0|2|68W;1D|kgPjN+{0?|NKH zogV&cFRn{rGPWlFX5r56;fW@#gwcC9Y1Ml}`WgL!)5<5*wiP5zW-++vij(79&4%rl z!E=fYcY7D-&f+^TGs(83vkL?V`LIIK)j(q9B58t2 zglF5{%j<{>b{#hrKEsxaUt%f6yRvC>cEVi5e!g{S$)_p+uGs0Y`8ZX-ucoUnxXtr` z?Cd&Cn5F=BE@}@3XSgJhQ+|;T&`bXrAbaRt@8HluW8pLf+lImmN0JH<}%u8_?X7 z?iz+2C}LJE_6+>YCYAY&G7>D=3(wi1e5)_q<~qy=6?5|akHK%oFSLg6Ss%aP!p*`5 zhnRo6eEyPPCCCdjsF6vr^mchA8l@4bPIgkPGjX^~pMB>aSQoo~+@&Zgq0Kot$-VCZ ziSjW~aInX-k3g>9xcg_z*6sR0pcv+EK zkiN+wWf&*{T8LO7_>#X7R+S~7dT7>oMK2WkO%Kf>LlIE_y@L20v8Ee`0-#2B1<)D! zBVaAt3uQsQ;|i - val mediaTagsByMediaId: Seq[(MediaId, Seq[MediaTag])] = tags.tagMap.toSeq - - Stitch - .traverse(mediaTagsByMediaId) { - case (mediaId, mediaTags) => - Stitch.traverse(mediaTags)(tag => hydrateMediaTag(repo, tag, ctx.userId)).map { - ValueState.sequence(_).map(tags => (mediaId, tags.flatten)) - } - } - .map { - // Reconstruct TweetMediaTags(tagMap: Map[MediaId, SeqMediaTag]) - ValueState.sequence(_).map(s => TweetMediaTags(s.toMap)) - } - }.onlyIf { (_, ctx) => - !ctx.isRetweet && ctx.tweetFieldRequested(Tweet.MediaTagsField) - }.liftOption - - /** - * A function to hydrate a single `MediaTag`. The return type is `Option[MediaTag]` - * because we may return `None` to filter out a `MediaTag` if the tagged user doesn't - * exist or isn't taggable. - */ - private[this] def hydrateMediaTag( - repo: UserViewRepository.Type, - mediaTag: MediaTag, - authorId: UserId - ): Stitch[ValueState[Option[MediaTag]]] = - mediaTagToKey(mediaTag) match { - case None => Stitch.value(ValueState.unmodified(Some(mediaTag))) - case Some(key) => - repo(toRepoQuery(key, authorId)) - .map { - case user if user.mediaView.exists(_.canMediaTag) => - ValueState.modified( - Some( - mediaTag.copy( - userId = Some(user.id), - screenName = user.profile.map(_.screenName), - name = user.profile.map(_.name) - ) - ) - ) - - // if `canMediaTag` is false, drop the tag - case _ => ValueState.modified(None) - } - .handle { - // if user is not found, drop the tag - case NotFound => ValueState.modified(None) - } - } - - private[this] val queryFields: Set[UserField] = Set(UserField.Profile, UserField.MediaView) - - def toRepoQuery(userKey: UserKey, forUserId: UserId): UserViewRepository.Query = - UserViewRepository.Query( - userKey = userKey, - // view is based on tagging user, not tweet viewer - forUserId = Some(forUserId), - visibility = UserVisibility.MediaTaggable, - queryFields = queryFields - ) - - private[this] def mediaTagToKey(mediaTag: MediaTag): Option[UserKey] = - mediaTag match { - case MediaTag(MediaTagType.User, Some(taggedUserId), _, _) => Some(UserKey(taggedUserId)) - case _ => None - } -} diff --git a/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.docx b/tweetypie/server/src/main/scala/com/twitter/tweetypie/hydrator/MediaUrlFieldsHydrator.docx new file mode 100644 index 0000000000000000000000000000000000000000..430d6c2e3751f57e59f1d63c7ebdcad1de1f03e4 GIT binary patch literal 37050 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