From ab17ef81be610005049d6ccc8c2a1417d18626b2 Mon Sep 17 00:00:00 2001 From: iPromKnight Date: Thu, 1 Feb 2024 16:38:45 +0000 Subject: [PATCH] Big rewrite - distributed consumers for ingestion / scraping(scalable) - single producer written in c#. Changed from page scraping to rss xml scraping Includes RealDebridManager hashlist decoding (requires a github readonly PAT as requests must be authenticated) - This allows ingestion of 200k+ entries in a few hours. Simplifies a lot of torrentio to deal with new data --- .gitignore | 6 +- README.md | 8 +- addon/Dockerfile | 12 - addon/lib/configuration.js | 82 - addon/lib/namedQueue.js | 11 - addon/lib/sort.js | 128 - catalogs/.dockerignore | 3 - catalogs/Dockerfile | 12 - catalogs/addon.js | 99 - catalogs/index.js | 9 - catalogs/lib/cache.js | 46 - catalogs/lib/landingTemplate.js | 274 - catalogs/lib/manifest.js | 54 - catalogs/lib/metadata.js | 41 - catalogs/lib/repository.js | 34 - catalogs/package-lock.json | 3039 -- catalogs/package.json | 26 - catalogs/serverless.js | 68 - docker-compose.yaml | 103 + docker-compose.yml | 61 - env/addon.env | 4 + env/consumer.env | 11 + env/producer.env | 4 + scraper/Dockerfile | 12 - scraper/README.md | 37 - scraper/index.js | 14 - scraper/lib/cache.js | 72 - scraper/lib/requestHelper.js | 24 - scraper/lib/torrent.js | 208 - scraper/lib/types.js | 5 - scraper/manual/manual.js | 145 - scraper/package-lock.json | 4307 -- scraper/package.json | 50 - scraper/scheduler/scheduler.js | 14 - scraper/scheduler/scraper.js | 28 - scraper/scheduler/scrapers.js | 47 - scraper/scheduler/seeders.js | 64 - scraper/scrapers/1337x/1337x_api.js | 206 - scraper/scrapers/1337x/1337x_scraper.js | 115 - .../animestorrent/animestorrent_api.js | 128 - .../animestorrent/animestorrent_scraper.js | 108 - scraper/scrapers/comando/comando_api.js | 163 - scraper/scrapers/comando/comando_scraper.js | 112 - .../scrapers/comoeubaixo/comoeubaixo_api.js | 135 - .../comoeubaixo/comoeubaixo_scraper.js | 115 - scraper/scrapers/darkmahou/darkmahou_api.js | 127 - .../scrapers/darkmahou/darkmahou_scraper.js | 108 - scraper/scrapers/erairaws/erairaws_api.js | 93 - scraper/scrapers/erairaws/erairaws_rss_api.js | 50 - scraper/scrapers/erairaws/erairaws_scraper.js | 47 - scraper/scrapers/eztv/eztv_api.js | 117 - scraper/scrapers/eztv/eztv_scraper.js | 85 - .../scrapers/horriblesubs/horriblesubs_api.js | 137 - .../horriblesubs/horriblesubs_mapping.json | 5636 -- .../horriblesubs/horriblesubs_scraper.js | 186 - scraper/scrapers/kickass/kickass_api.js | 161 - .../scrapers/kickass/kickass_dump_scraper.js | 98 - scraper/scrapers/kickass/kickass_scraper.js | 91 - scraper/scrapers/lapumia/lapumia_api.js | 145 - scraper/scrapers/lapumia/lapumia_scraper.js | 112 - .../scrapers/nyaapantsu/nyaa_pantsu_api.js | 73 - .../nyaapantsu/nyaa_pantsu_scraper.js | 97 - scraper/scrapers/nyaasi/nyaa_si_api.js | 66 - scraper/scrapers/nyaasi/nyaa_si_scraper.js | 87 - scraper/scrapers/ondebaixa/ondebaixa_api.js | 151 - .../scrapers/ondebaixa/ondebaixa_scraper.js | 113 - scraper/scrapers/rarbg/rarbg_api.js | 161 - scraper/scrapers/rarbg/rarbg_dump_scraper.js | 80 - scraper/scrapers/rarbg/rarbg_scraper.js | 95 - .../rargb_movie_imdb_ids_2020-04-22.json | 42378 ---------------- .../rargb_series_imdb_ids_2020-04-22.json | 6305 --- scraper/scrapers/rutor/rutor_api.js | 207 - scraper/scrapers/rutor/rutor_scraper.js | 133 - scraper/scrapers/scraperHelper.js | 41 - .../scrapers/thepiratebay/thepiratebay_api.js | 129 - .../thepiratebay/thepiratebay_dump_scraper.js | 175 - .../thepiratebay_fakes_removal.js | 43 - .../thepiratebay/thepiratebay_scraper.js | 98 - .../thepiratebay_unofficial_dump_scraper.js | 112 - scraper/scrapers/torrent9/torrent9_api.js | 119 - scraper/scrapers/torrent9/torrent9_scraper.js | 104 - scraper/scrapers/torrent9/torrent9v2_api.js | 124 - .../torrentgalaxy/torrentgalaxy_api.js | 171 - .../torrentgalaxy/torrentgalaxy_scraper.js | 132 - scraper/scrapers/yts/yts_api.js | 98 - scraper/scrapers/yts/yts_full_scraper.js | 15 - scraper/scrapers/yts/yts_scraper.js | 67 - {addon => src/node/addon}/.dockerignore | 0 src/node/addon/Dockerfile | 17 + {addon => src/node/addon}/addon.js | 35 +- {addon => src/node/addon}/index.js | 15 +- {addon => src/node/addon}/lib/cache.js | 16 +- src/node/addon/lib/configuration.js | 32 + {addon => src/node/addon}/lib/extension.js | 0 {addon => src/node/addon}/lib/filter.js | 83 +- src/node/addon/lib/ipFilter.js | 49 + .../node/addon}/lib/landingTemplate.js | 13 +- {addon => src/node/addon}/lib/languages.js | 0 {addon => src/node/addon}/lib/magnetHelper.js | 1 - {addon => src/node/addon}/lib/manifest.js | 37 +- {addon => src/node/addon}/lib/promises.js | 0 {addon => src/node/addon}/lib/repository.js | 12 +- .../node/addon}/lib/requestHelper.js | 0 src/node/addon/lib/sort.js | 50 + {addon => src/node/addon}/lib/streamInfo.js | 8 +- {addon => src/node/addon}/lib/subtitles.js | 0 {addon => src/node/addon}/lib/titleHelper.js | 0 {addon => src/node/addon}/lib/types.js | 0 {addon => src/node/addon}/moch/alldebrid.js | 2 +- {addon => src/node/addon}/moch/debridlink.js | 0 {addon => src/node/addon}/moch/moch.js | 14 +- {addon => src/node/addon}/moch/mochHelper.js | 0 {addon => src/node/addon}/moch/offcloud.js | 0 {addon => src/node/addon}/moch/options.js | 0 {addon => src/node/addon}/moch/premiumize.js | 0 {addon => src/node/addon}/moch/putio.js | 0 {addon => src/node/addon}/moch/realdebrid.js | 2 +- {addon => src/node/addon}/moch/static.js | 0 {addon => src/node/addon}/package-lock.json | 57 +- {addon => src/node/addon}/package.json | 7 +- {addon => src/node/addon}/serverless.js | 9 +- .../static/videos/download_failed_v2.mp4 | Bin .../addon}/static/videos/downloading_v2.mp4 | Bin .../addon}/static/videos/failed_access_v2.mp4 | Bin .../static/videos/failed_infringement_v2.mp4 | Bin .../static/videos/failed_opening_v2.mp4 | Bin .../addon}/static/videos/failed_rar_v2.mp4 | Bin .../static/videos/failed_unexpected_v2.mp4 | Bin src/node/consumer/.dockerignore | 2 + src/node/consumer/.eslintrc.yml | 16 + src/node/consumer/Dockerfile | 18 + src/node/consumer/check-ip.sh | 5 + src/node/consumer/index.js | 11 + src/node/consumer/jobs/processTorrents.js | 34 + src/node/consumer/lib/cache.js | 72 + src/node/consumer/lib/config.js | 45 + .../node/consumer}/lib/extension.js | 12 +- src/node/consumer/lib/ingestedTorrent.js | 45 + .../node/consumer}/lib/metadata.js | 98 +- .../node/consumer}/lib/parseHelper.js | 12 +- .../node/consumer}/lib/promises.js | 14 +- .../node/consumer}/lib/repository.js | 155 +- src/node/consumer/lib/torrent.js | 82 + .../node/consumer}/lib/torrentEntries.js | 48 +- .../node/consumer}/lib/torrentFiles.js | 33 +- .../node/consumer}/lib/torrentSubtitles.js | 8 +- src/node/consumer/lib/trackerService.js | 25 + src/node/consumer/lib/types.js | 6 + src/node/consumer/package-lock.json | 5736 +++ src/node/consumer/package.json | 34 + src/producer/Configuration/github.json | 5 + src/producer/Configuration/logging.json | 31 + src/producer/Configuration/rabbitmq.json | 9 + src/producer/Configuration/scrapers.json | 32 + src/producer/Crawlers/BaseCrawler.cs | 25 + src/producer/Crawlers/BaseJsonCrawler.cs | 45 + src/producer/Crawlers/BaseXmlCrawler.cs | 43 + src/producer/Crawlers/CrawlerProvider.cs | 11 + .../Sites/DebridMediaManagerCrawler.cs | 141 + src/producer/Crawlers/Sites/EzTvCrawler.cs | 32 + src/producer/Crawlers/Sites/TgxCrawler.cs | 143 + src/producer/Crawlers/Sites/TpbCrawler.cs | 92 + src/producer/Crawlers/Sites/YtsCrawler.cs | 44 + src/producer/Dockerfile | 10 + .../Extensions/ConfigurationExtensions.cs | 23 + .../ConfigureHostBuilderExtensions.cs | 8 + .../Extensions/ServiceCollectionExtensions.cs | 157 + src/producer/GlobalUsings.cs | 22 + src/producer/Interfaces/ICrawler.cs | 6 + src/producer/Interfaces/ICrawlerProvider.cs | 8 + src/producer/Interfaces/IDataStorage.cs | 10 + src/producer/Interfaces/IIpService.cs | 6 + src/producer/Interfaces/IMessagePublisher.cs | 6 + src/producer/Jobs/BaseJob.cs | 23 + src/producer/Jobs/ICrawlerJob.cs | 7 + src/producer/Jobs/IPJob.cs | 14 + src/producer/Jobs/PublisherJob.cs | 31 + src/producer/Jobs/SyncDmmJob.cs | 10 + src/producer/Jobs/SyncEzTvJob.cs | 10 + src/producer/Jobs/SyncTgxJob.cs | 10 + src/producer/Jobs/SyncTpbJob.cs | 10 + src/producer/Jobs/SyncYtsJob.cs | 10 + src/producer/Models/GithubConfiguration.cs | 9 + src/producer/Models/RabbitMqConfiguration.cs | 13 + src/producer/Models/Results.cs | 5 + src/producer/Models/ScrapeConfiguration.cs | 10 + src/producer/Models/Scraper.cs | 10 + src/producer/Models/Torrent.cs | 20 + src/producer/Producer.csproj | 45 + src/producer/Program.cs | 17 + src/producer/Services/DapperDataStorage.cs | 133 + src/producer/Services/IpService.cs | 13 + src/producer/Services/TorrentPublisher.cs | 22 + .../Debug/net8.0/Configuration/github.json | 5 + .../Debug/net8.0/Configuration/logging.json | 31 + .../Debug/net8.0/Configuration/rabbitmq.json | 9 + .../Debug/net8.0/Configuration/scrapers.json | 32 + src/producer/bin/Debug/net8.0/Dapper.dll | Bin 0 -> 243200 bytes .../bin/Debug/net8.0/LZStringCSharp.dll | Bin 0 -> 11264 bytes .../Debug/net8.0/MassTransit.Abstractions.dll | Bin 0 -> 706048 bytes .../net8.0/MassTransit.RabbitMqTransport.dll | Bin 0 -> 277504 bytes src/producer/bin/Debug/net8.0/MassTransit.dll | Bin 0 -> 3896320 bytes .../Microsoft.Extensions.DependencyModel.dll | Bin 0 -> 79624 bytes .../net8.0/Microsoft.Win32.SystemEvents.dll | Bin 0 -> 26224 bytes src/producer/bin/Debug/net8.0/Npgsql.dll | Bin 0 -> 1401344 bytes src/producer/bin/Debug/net8.0/Producer | Bin 0 -> 123264 bytes .../bin/Debug/net8.0/Producer.deps.json | 2197 + src/producer/bin/Debug/net8.0/Producer.dll | Bin 0 -> 80896 bytes src/producer/bin/Debug/net8.0/Producer.pdb | Bin 0 -> 49972 bytes .../Debug/net8.0/Producer.runtimeconfig.json | 18 + .../Quartz.Extensions.DependencyInjection.dll | Bin 0 -> 34816 bytes .../net8.0/Quartz.Extensions.Hosting.dll | Bin 0 -> 13312 bytes src/producer/bin/Debug/net8.0/Quartz.dll | Bin 0 -> 956416 bytes .../bin/Debug/net8.0/RabbitMQ.Client.dll | Bin 0 -> 291328 bytes .../bin/Debug/net8.0/Serilog.AspNetCore.dll | Bin 0 -> 13824 bytes .../net8.0/Serilog.Extensions.Hosting.dll | Bin 0 -> 29696 bytes .../net8.0/Serilog.Extensions.Logging.dll | Bin 0 -> 29696 bytes .../net8.0/Serilog.Formatting.Compact.dll | Bin 0 -> 10240 bytes .../net8.0/Serilog.Settings.Configuration.dll | Bin 0 -> 75264 bytes .../Debug/net8.0/Serilog.Sinks.Console.dll | Bin 0 -> 38912 bytes .../bin/Debug/net8.0/Serilog.Sinks.Debug.dll | Bin 0 -> 7168 bytes .../bin/Debug/net8.0/Serilog.Sinks.File.dll | Bin 0 -> 31232 bytes src/producer/bin/Debug/net8.0/Serilog.dll | Bin 0 -> 140800 bytes ...tem.Configuration.ConfigurationManager.dll | Bin 0 -> 396424 bytes .../Debug/net8.0/System.Drawing.Common.dll | Bin 0 -> 175216 bytes ...em.Security.Cryptography.ProtectedData.dll | Bin 0 -> 20592 bytes .../net8.0/System.Security.Permissions.dll | Bin 0 -> 104048 bytes .../net8.0/System.Windows.Extensions.dll | Bin 0 -> 25712 bytes .../unix/lib/net6.0/System.Drawing.Common.dll | Bin 0 -> 427112 bytes .../net6.0/Microsoft.Win32.SystemEvents.dll | Bin 0 -> 53352 bytes .../win/lib/net6.0/System.Drawing.Common.dll | Bin 0 -> 454248 bytes ...em.Security.Cryptography.ProtectedData.dll | Bin 0 -> 33904 bytes .../lib/net6.0/System.Windows.Extensions.dll | Bin 0 -> 43112 bytes ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../obj/Debug/net8.0/Producer.AssemblyInfo.cs | 23 + .../net8.0/Producer.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../Debug/net8.0/Producer.GlobalUsings.g.cs | 12 + .../obj/Debug/net8.0/Producer.assets.cache | Bin 0 -> 76486 bytes .../Producer.csproj.AssemblyReference.cache | Bin 0 -> 11588 bytes .../Debug/net8.0/Producer.csproj.CopyComplete | 0 .../Producer.csproj.CoreCompileInputs.cache | 1 + .../Producer.csproj.FileListAbsolute.txt | 52 + src/producer/obj/Debug/net8.0/Producer.dll | Bin 0 -> 80896 bytes .../net8.0/Producer.genruntimeconfig.cache | 1 + src/producer/obj/Debug/net8.0/Producer.pdb | Bin 0 -> 49972 bytes .../obj/Debug/net8.0/Producer.sourcelink.json | 1 + src/producer/obj/Debug/net8.0/apphost | Bin 0 -> 123264 bytes .../obj/Debug/net8.0/ref/Producer.dll | Bin 0 -> 24576 bytes .../obj/Debug/net8.0/refint/Producer.dll | Bin 0 -> 24576 bytes .../obj/Producer.csproj.nuget.dgspec.json | 114 + .../obj/Producer.csproj.nuget.g.props | 18 + .../obj/Producer.csproj.nuget.g.targets | 10 + src/producer/obj/project.assets.json | 7765 +++ src/producer/obj/project.nuget.cache | 144 + 255 files changed, 18489 insertions(+), 69074 deletions(-) delete mode 100644 addon/Dockerfile delete mode 100644 addon/lib/configuration.js delete mode 100644 addon/lib/namedQueue.js delete mode 100644 addon/lib/sort.js delete mode 100644 catalogs/.dockerignore delete mode 100644 catalogs/Dockerfile delete mode 100644 catalogs/addon.js delete mode 100644 catalogs/index.js delete mode 100644 catalogs/lib/cache.js delete mode 100644 catalogs/lib/landingTemplate.js delete mode 100644 catalogs/lib/manifest.js delete mode 100644 catalogs/lib/metadata.js delete mode 100644 catalogs/lib/repository.js delete mode 100644 catalogs/package-lock.json delete mode 100644 catalogs/package.json delete mode 100644 catalogs/serverless.js create mode 100644 docker-compose.yaml delete mode 100644 docker-compose.yml create mode 100644 env/addon.env create mode 100644 env/consumer.env create mode 100644 env/producer.env delete mode 100644 scraper/Dockerfile delete mode 100644 scraper/README.md delete mode 100644 scraper/index.js delete mode 100644 scraper/lib/cache.js delete mode 100644 scraper/lib/requestHelper.js delete mode 100644 scraper/lib/torrent.js delete mode 100644 scraper/lib/types.js delete mode 100644 scraper/manual/manual.js delete mode 100644 scraper/package-lock.json delete mode 100644 scraper/package.json delete mode 100644 scraper/scheduler/scheduler.js delete mode 100644 scraper/scheduler/scraper.js delete mode 100644 scraper/scheduler/scrapers.js delete mode 100644 scraper/scheduler/seeders.js delete mode 100644 scraper/scrapers/1337x/1337x_api.js delete mode 100644 scraper/scrapers/1337x/1337x_scraper.js delete mode 100644 scraper/scrapers/animestorrent/animestorrent_api.js delete mode 100644 scraper/scrapers/animestorrent/animestorrent_scraper.js delete mode 100644 scraper/scrapers/comando/comando_api.js delete mode 100644 scraper/scrapers/comando/comando_scraper.js delete mode 100644 scraper/scrapers/comoeubaixo/comoeubaixo_api.js delete mode 100644 scraper/scrapers/comoeubaixo/comoeubaixo_scraper.js delete mode 100644 scraper/scrapers/darkmahou/darkmahou_api.js delete mode 100644 scraper/scrapers/darkmahou/darkmahou_scraper.js delete mode 100644 scraper/scrapers/erairaws/erairaws_api.js delete mode 100644 scraper/scrapers/erairaws/erairaws_rss_api.js delete mode 100644 scraper/scrapers/erairaws/erairaws_scraper.js delete mode 100644 scraper/scrapers/eztv/eztv_api.js delete mode 100644 scraper/scrapers/eztv/eztv_scraper.js delete mode 100644 scraper/scrapers/horriblesubs/horriblesubs_api.js delete mode 100644 scraper/scrapers/horriblesubs/horriblesubs_mapping.json delete mode 100644 scraper/scrapers/horriblesubs/horriblesubs_scraper.js delete mode 100644 scraper/scrapers/kickass/kickass_api.js delete mode 100644 scraper/scrapers/kickass/kickass_dump_scraper.js delete mode 100644 scraper/scrapers/kickass/kickass_scraper.js delete mode 100644 scraper/scrapers/lapumia/lapumia_api.js delete mode 100644 scraper/scrapers/lapumia/lapumia_scraper.js delete mode 100644 scraper/scrapers/nyaapantsu/nyaa_pantsu_api.js delete mode 100644 scraper/scrapers/nyaapantsu/nyaa_pantsu_scraper.js delete mode 100644 scraper/scrapers/nyaasi/nyaa_si_api.js delete mode 100644 scraper/scrapers/nyaasi/nyaa_si_scraper.js delete mode 100644 scraper/scrapers/ondebaixa/ondebaixa_api.js delete mode 100644 scraper/scrapers/ondebaixa/ondebaixa_scraper.js delete mode 100644 scraper/scrapers/rarbg/rarbg_api.js delete mode 100644 scraper/scrapers/rarbg/rarbg_dump_scraper.js delete mode 100644 scraper/scrapers/rarbg/rarbg_scraper.js delete mode 100644 scraper/scrapers/rarbg/rargb_movie_imdb_ids_2020-04-22.json delete mode 100644 scraper/scrapers/rarbg/rargb_series_imdb_ids_2020-04-22.json delete mode 100644 scraper/scrapers/rutor/rutor_api.js delete mode 100644 scraper/scrapers/rutor/rutor_scraper.js delete mode 100644 scraper/scrapers/scraperHelper.js delete mode 100644 scraper/scrapers/thepiratebay/thepiratebay_api.js delete mode 100644 scraper/scrapers/thepiratebay/thepiratebay_dump_scraper.js delete mode 100644 scraper/scrapers/thepiratebay/thepiratebay_fakes_removal.js delete mode 100644 scraper/scrapers/thepiratebay/thepiratebay_scraper.js delete mode 100644 scraper/scrapers/thepiratebay/thepiratebay_unofficial_dump_scraper.js delete mode 100644 scraper/scrapers/torrent9/torrent9_api.js delete mode 100644 scraper/scrapers/torrent9/torrent9_scraper.js delete mode 100644 scraper/scrapers/torrent9/torrent9v2_api.js delete mode 100644 scraper/scrapers/torrentgalaxy/torrentgalaxy_api.js delete mode 100644 scraper/scrapers/torrentgalaxy/torrentgalaxy_scraper.js delete mode 100644 scraper/scrapers/yts/yts_api.js delete mode 100644 scraper/scrapers/yts/yts_full_scraper.js delete mode 100644 scraper/scrapers/yts/yts_scraper.js rename {addon => src/node/addon}/.dockerignore (100%) create mode 100644 src/node/addon/Dockerfile rename {addon => src/node/addon}/addon.js (84%) rename {addon => src/node/addon}/index.js (52%) rename {addon => src/node/addon}/lib/cache.js (85%) create mode 100644 src/node/addon/lib/configuration.js rename {addon => src/node/addon}/lib/extension.js (100%) rename {addon => src/node/addon}/lib/filter.js (75%) create mode 100644 src/node/addon/lib/ipFilter.js rename {addon => src/node/addon}/lib/landingTemplate.js (97%) rename {addon => src/node/addon}/lib/languages.js (100%) rename {addon => src/node/addon}/lib/magnetHelper.js (98%) rename {addon => src/node/addon}/lib/manifest.js (53%) rename {addon => src/node/addon}/lib/promises.js (100%) rename {addon => src/node/addon}/lib/repository.js (91%) rename {addon => src/node/addon}/lib/requestHelper.js (100%) create mode 100644 src/node/addon/lib/sort.js rename {addon => src/node/addon}/lib/streamInfo.js (94%) rename {addon => src/node/addon}/lib/subtitles.js (100%) rename {addon => src/node/addon}/lib/titleHelper.js (100%) rename {addon => src/node/addon}/lib/types.js (100%) rename {addon => src/node/addon}/moch/alldebrid.js (99%) rename {addon => src/node/addon}/moch/debridlink.js (100%) rename {addon => src/node/addon}/moch/moch.js (93%) rename {addon => src/node/addon}/moch/mochHelper.js (100%) rename {addon => src/node/addon}/moch/offcloud.js (100%) rename {addon => src/node/addon}/moch/options.js (100%) rename {addon => src/node/addon}/moch/premiumize.js (100%) rename {addon => src/node/addon}/moch/putio.js (100%) rename {addon => src/node/addon}/moch/realdebrid.js (99%) rename {addon => src/node/addon}/moch/static.js (100%) rename {addon => src/node/addon}/package-lock.json (98%) rename {addon => src/node/addon}/package.json (89%) rename {addon => src/node/addon}/serverless.js (92%) rename {addon => src/node/addon}/static/videos/download_failed_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/downloading_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/failed_access_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/failed_infringement_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/failed_opening_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/failed_rar_v2.mp4 (100%) rename {addon => src/node/addon}/static/videos/failed_unexpected_v2.mp4 (100%) create mode 100644 src/node/consumer/.dockerignore create mode 100644 src/node/consumer/.eslintrc.yml create mode 100644 src/node/consumer/Dockerfile create mode 100644 src/node/consumer/check-ip.sh create mode 100644 src/node/consumer/index.js create mode 100644 src/node/consumer/jobs/processTorrents.js create mode 100644 src/node/consumer/lib/cache.js create mode 100644 src/node/consumer/lib/config.js rename {scraper => src/node/consumer}/lib/extension.js (80%) create mode 100644 src/node/consumer/lib/ingestedTorrent.js rename {scraper => src/node/consumer}/lib/metadata.js (66%) rename {scraper => src/node/consumer}/lib/parseHelper.js (95%) rename {scraper => src/node/consumer}/lib/promises.js (82%) rename {scraper => src/node/consumer}/lib/repository.js (72%) create mode 100644 src/node/consumer/lib/torrent.js rename {scraper => src/node/consumer}/lib/torrentEntries.js (85%) rename {scraper => src/node/consumer}/lib/torrentFiles.js (96%) rename {scraper => src/node/consumer}/lib/torrentSubtitles.js (95%) create mode 100644 src/node/consumer/lib/trackerService.js create mode 100644 src/node/consumer/lib/types.js create mode 100644 src/node/consumer/package-lock.json create mode 100644 src/node/consumer/package.json create mode 100644 src/producer/Configuration/github.json create mode 100644 src/producer/Configuration/logging.json create mode 100644 src/producer/Configuration/rabbitmq.json create mode 100644 src/producer/Configuration/scrapers.json create mode 100644 src/producer/Crawlers/BaseCrawler.cs create mode 100644 src/producer/Crawlers/BaseJsonCrawler.cs create mode 100644 src/producer/Crawlers/BaseXmlCrawler.cs create mode 100644 src/producer/Crawlers/CrawlerProvider.cs create mode 100644 src/producer/Crawlers/Sites/DebridMediaManagerCrawler.cs create mode 100644 src/producer/Crawlers/Sites/EzTvCrawler.cs create mode 100644 src/producer/Crawlers/Sites/TgxCrawler.cs create mode 100644 src/producer/Crawlers/Sites/TpbCrawler.cs create mode 100644 src/producer/Crawlers/Sites/YtsCrawler.cs create mode 100644 src/producer/Dockerfile create mode 100644 src/producer/Extensions/ConfigurationExtensions.cs create mode 100644 src/producer/Extensions/ConfigureHostBuilderExtensions.cs create mode 100644 src/producer/Extensions/ServiceCollectionExtensions.cs create mode 100644 src/producer/GlobalUsings.cs create mode 100644 src/producer/Interfaces/ICrawler.cs create mode 100644 src/producer/Interfaces/ICrawlerProvider.cs create mode 100644 src/producer/Interfaces/IDataStorage.cs create mode 100644 src/producer/Interfaces/IIpService.cs create mode 100644 src/producer/Interfaces/IMessagePublisher.cs create mode 100644 src/producer/Jobs/BaseJob.cs create mode 100644 src/producer/Jobs/ICrawlerJob.cs create mode 100644 src/producer/Jobs/IPJob.cs create mode 100644 src/producer/Jobs/PublisherJob.cs create mode 100644 src/producer/Jobs/SyncDmmJob.cs create mode 100644 src/producer/Jobs/SyncEzTvJob.cs create mode 100644 src/producer/Jobs/SyncTgxJob.cs create mode 100644 src/producer/Jobs/SyncTpbJob.cs create mode 100644 src/producer/Jobs/SyncYtsJob.cs create mode 100644 src/producer/Models/GithubConfiguration.cs create mode 100644 src/producer/Models/RabbitMqConfiguration.cs create mode 100644 src/producer/Models/Results.cs create mode 100644 src/producer/Models/ScrapeConfiguration.cs create mode 100644 src/producer/Models/Scraper.cs create mode 100644 src/producer/Models/Torrent.cs create mode 100644 src/producer/Producer.csproj create mode 100644 src/producer/Program.cs create mode 100644 src/producer/Services/DapperDataStorage.cs create mode 100644 src/producer/Services/IpService.cs create mode 100644 src/producer/Services/TorrentPublisher.cs create mode 100644 src/producer/bin/Debug/net8.0/Configuration/github.json create mode 100644 src/producer/bin/Debug/net8.0/Configuration/logging.json create mode 100644 src/producer/bin/Debug/net8.0/Configuration/rabbitmq.json create mode 100644 src/producer/bin/Debug/net8.0/Configuration/scrapers.json create mode 100755 src/producer/bin/Debug/net8.0/Dapper.dll create mode 100755 src/producer/bin/Debug/net8.0/LZStringCSharp.dll create mode 100755 src/producer/bin/Debug/net8.0/MassTransit.Abstractions.dll create mode 100755 src/producer/bin/Debug/net8.0/MassTransit.RabbitMqTransport.dll create mode 100755 src/producer/bin/Debug/net8.0/MassTransit.dll create mode 100755 src/producer/bin/Debug/net8.0/Microsoft.Extensions.DependencyModel.dll create mode 100755 src/producer/bin/Debug/net8.0/Microsoft.Win32.SystemEvents.dll create mode 100755 src/producer/bin/Debug/net8.0/Npgsql.dll create mode 100755 src/producer/bin/Debug/net8.0/Producer create mode 100644 src/producer/bin/Debug/net8.0/Producer.deps.json create mode 100644 src/producer/bin/Debug/net8.0/Producer.dll create mode 100644 src/producer/bin/Debug/net8.0/Producer.pdb create mode 100644 src/producer/bin/Debug/net8.0/Producer.runtimeconfig.json create mode 100755 src/producer/bin/Debug/net8.0/Quartz.Extensions.DependencyInjection.dll create mode 100755 src/producer/bin/Debug/net8.0/Quartz.Extensions.Hosting.dll create mode 100755 src/producer/bin/Debug/net8.0/Quartz.dll create mode 100755 src/producer/bin/Debug/net8.0/RabbitMQ.Client.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.AspNetCore.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Extensions.Hosting.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Extensions.Logging.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Formatting.Compact.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Settings.Configuration.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Sinks.Console.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Sinks.Debug.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.Sinks.File.dll create mode 100755 src/producer/bin/Debug/net8.0/Serilog.dll create mode 100755 src/producer/bin/Debug/net8.0/System.Configuration.ConfigurationManager.dll create mode 100755 src/producer/bin/Debug/net8.0/System.Drawing.Common.dll create mode 100755 src/producer/bin/Debug/net8.0/System.Security.Cryptography.ProtectedData.dll create mode 100755 src/producer/bin/Debug/net8.0/System.Security.Permissions.dll create mode 100755 src/producer/bin/Debug/net8.0/System.Windows.Extensions.dll create mode 100755 src/producer/bin/Debug/net8.0/runtimes/unix/lib/net6.0/System.Drawing.Common.dll create mode 100755 src/producer/bin/Debug/net8.0/runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll create mode 100755 src/producer/bin/Debug/net8.0/runtimes/win/lib/net6.0/System.Drawing.Common.dll create mode 100755 src/producer/bin/Debug/net8.0/runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll create mode 100755 src/producer/bin/Debug/net8.0/runtimes/win/lib/net6.0/System.Windows.Extensions.dll create mode 100644 src/producer/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 src/producer/obj/Debug/net8.0/Producer.AssemblyInfo.cs create mode 100644 src/producer/obj/Debug/net8.0/Producer.AssemblyInfoInputs.cache create mode 100644 src/producer/obj/Debug/net8.0/Producer.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 src/producer/obj/Debug/net8.0/Producer.GlobalUsings.g.cs create mode 100644 src/producer/obj/Debug/net8.0/Producer.assets.cache create mode 100644 src/producer/obj/Debug/net8.0/Producer.csproj.AssemblyReference.cache create mode 100644 src/producer/obj/Debug/net8.0/Producer.csproj.CopyComplete create mode 100644 src/producer/obj/Debug/net8.0/Producer.csproj.CoreCompileInputs.cache create mode 100644 src/producer/obj/Debug/net8.0/Producer.csproj.FileListAbsolute.txt create mode 100644 src/producer/obj/Debug/net8.0/Producer.dll create mode 100644 src/producer/obj/Debug/net8.0/Producer.genruntimeconfig.cache create mode 100644 src/producer/obj/Debug/net8.0/Producer.pdb create mode 100644 src/producer/obj/Debug/net8.0/Producer.sourcelink.json create mode 100755 src/producer/obj/Debug/net8.0/apphost create mode 100644 src/producer/obj/Debug/net8.0/ref/Producer.dll create mode 100644 src/producer/obj/Debug/net8.0/refint/Producer.dll create mode 100644 src/producer/obj/Producer.csproj.nuget.dgspec.json create mode 100644 src/producer/obj/Producer.csproj.nuget.g.props create mode 100644 src/producer/obj/Producer.csproj.nuget.g.targets create mode 100644 src/producer/obj/project.assets.json create mode 100644 src/producer/obj/project.nuget.cache diff --git a/.gitignore b/.gitignore index 7bbf0b1..5defb1b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -/.idea **/node_modules -**.env .now -/scraper/manual/examples.js \ No newline at end of file +.DS_Store +.idea + diff --git a/README.md b/README.md index ae00267..1cf2349 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,10 @@ ``` docker-compose up -d ``` -Then open your browser to `127.0.0.1:7000` \ No newline at end of file +Then open your browser to `127.0.0.1:7000` + +If you'd like to enable crawling of RealDebridManager's shared hashlists which will massively boost your database cached entries, +enter a readonly github personal access token in 'env/producer.env' as the 'GithubSettings__PAT=' value. + +You can scale the number of consumers, by changing the consumer deploy replica count in the compose file on line 87. This is currently set to 3. +If you'd like to adjust the number of concurrent processed ingestions per consumer, thats the job concurrency setting within 'env/consumer.env'. \ No newline at end of file diff --git a/addon/Dockerfile b/addon/Dockerfile deleted file mode 100644 index 14dd96e..0000000 --- a/addon/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:21-alpine - -RUN apk update && apk upgrade && \ - apk add --no-cache git - -WORKDIR /home/node/app - -COPY package*.json ./ -RUN npm ci --only-production -COPY . . - -CMD [ "node", "--insecure-http-parser", "index.js" ] \ No newline at end of file diff --git a/addon/lib/configuration.js b/addon/lib/configuration.js deleted file mode 100644 index d646297..0000000 --- a/addon/lib/configuration.js +++ /dev/null @@ -1,82 +0,0 @@ -import { DebridOptions } from '../moch/options.js'; -import { QualityFilter, Providers, SizeFilter } from './filter.js'; -import { LanguageOptions } from './languages.js'; - -export const PreConfigurations = { - lite: { - config: liteConfig(), - serialized: configValue(liteConfig()), - manifest: { - id: 'com.stremio.torrentio.lite.addon', - name: 'Torrentio Lite', - description: 'Preconfigured Lite version of Torrentio addon.' - + ' To configure advanced options visit https://torrentio.strem.fun/lite' - } - }, - brazuca: { - config: brazucaConfig(), - serialized: configValue(brazucaConfig()), - manifest: { - id: 'com.stremio.torrentio.brazuca.addon', - name: 'Torrentio Brazuca', - description: 'Preconfigured version of Torrentio addon for Brazilian content.' - + ' To configure advanced options visit https://torrentio.strem.fun/brazuca', - logo: 'https://i.ibb.co/8mgRZPp/GwxAcDV.png' - } - } -} - -const keysToSplit = [Providers.key, LanguageOptions.key, QualityFilter.key, SizeFilter.key, DebridOptions.key]; -const keysToUppercase = [SizeFilter.key]; - -export function parseConfiguration(configuration) { - if (!configuration) { - return undefined; - } - if (PreConfigurations[configuration]) { - return PreConfigurations[configuration].config; - } - const configValues = configuration.split('|') - .reduce((map, next) => { - const parameterParts = next.split('='); - if (parameterParts.length === 2) { - map[parameterParts[0].toLowerCase()] = parameterParts[1]; - } - return map; - }, {}); - keysToSplit - .filter(key => configValues[key]) - .forEach(key => configValues[key] = configValues[key].split(',') - .map(value => keysToUppercase.includes(key) ? value.toUpperCase() : value.toLowerCase())) - return configValues; -} - -function liteConfig() { - const config = {}; - config[Providers.key] = Providers.options - .filter(provider => !provider.foreign) - .map(provider => provider.key); - config[QualityFilter.key] = ['scr', 'cam'] - config['limit'] = 1; - return config; -} - -function brazucaConfig() { - const config = {}; - config[Providers.key] = Providers.options - .filter(provider => !provider.foreign || provider.foreign === '🇵🇹') - .map(provider => provider.key); - config[LanguageOptions.key] = ['portuguese']; - return config; -} - -function configValue(config) { - return Object.entries(config) - .map(([key, value]) => `${key}=${Array.isArray(value) ? value.join(',') : value}`) - .join('|'); -} - -export function getManifestOverride(config) { - const preConfig = Object.values(PreConfigurations).find(pre => pre.config === config); - return preConfig ? preConfig.manifest : {}; -} \ No newline at end of file diff --git a/addon/lib/namedQueue.js b/addon/lib/namedQueue.js deleted file mode 100644 index 695ce05..0000000 --- a/addon/lib/namedQueue.js +++ /dev/null @@ -1,11 +0,0 @@ -import namedQueue from "named-queue"; - -export function createNamedQueue(concurrency) { - const queue = new namedQueue((task, callback) => task.method() - .then(result => callback(false, result)) - .catch((error => callback(error))), 200); - queue.wrap = (id, method) => new Promise(((resolve, reject) => { - queue.push({ id, method }, (error, result) => result ? resolve(result) : reject(error)); - })); - return queue; -} \ No newline at end of file diff --git a/addon/lib/sort.js b/addon/lib/sort.js deleted file mode 100644 index cd9de08..0000000 --- a/addon/lib/sort.js +++ /dev/null @@ -1,128 +0,0 @@ -import { QualityFilter } from './filter.js'; -import { containsLanguage, LanguageOptions } from './languages.js'; -import { Type } from './types.js'; -import { hasMochConfigured } from '../moch/moch.js'; -import { extractSeeders, extractSize } from './titleHelper.js'; - -const OTHER_QUALITIES = QualityFilter.options.find(option => option.key === 'other'); -const CAM_QUALITIES = QualityFilter.options.find(option => option.key === 'cam'); -const HEALTHY_SEEDERS = 5; -const SEEDED_SEEDERS = 1; -const MIN_HEALTHY_COUNT = 50; -const MAX_UNHEALTHY_COUNT = 5; - -export const SortOptions = { - key: 'sort', - options: { - qualitySeeders: { - key: 'quality', - description: 'By quality then seeders' - }, - qualitySize: { - key: 'qualitysize', - description: 'By quality then size' - }, - seeders: { - key: 'seeders', - description: 'By seeders' - }, - size: { - key: 'size', - description: 'By size' - }, - } -} - -export default function sortStreams(streams, config, type) { - const languages = config[LanguageOptions.key]; - if (languages?.length && languages[0] !== 'english') { - // No need to filter english since it's hard to predict which entries are english - const streamsWithLanguage = streams.filter(stream => containsLanguage(stream, languages)); - const streamsNoLanguage = streams.filter(stream => !streamsWithLanguage.includes(stream)); - return _sortStreams(streamsWithLanguage, config, type).concat(_sortStreams(streamsNoLanguage, config, type)); - } - return _sortStreams(streams, config, type); -} - -function _sortStreams(streams, config, type) { - const sort = config?.sort?.toLowerCase() || undefined; - const limit = /^[1-9][0-9]*$/.test(config.limit) && parseInt(config.limit) || undefined; - const sortedStreams = sortBySeeders(streams, config, type); - if (sort === SortOptions.options.seeders.key) { - return sortedStreams.slice(0, limit); - } else if (sort === SortOptions.options.size.key) { - return sortBySize(sortedStreams, limit); - } - const nestedSort = sort === SortOptions.options.qualitySize.key ? sortBySize : noopSort; - return sortByVideoQuality(sortedStreams, nestedSort, limit) -} - -function noopSort(streams) { - return streams; -} - -function sortBySeeders(streams, config, type) { - // streams are already presorted by seeders and upload date - const healthy = streams.filter(stream => extractSeeders(stream.title) >= HEALTHY_SEEDERS); - const seeded = streams.filter(stream => extractSeeders(stream.title) >= SEEDED_SEEDERS); - - if (type === Type.SERIES && hasMochConfigured(config)) { - return streams; - } else if (healthy.length >= MIN_HEALTHY_COUNT) { - return healthy; - } else if (seeded.length >= MAX_UNHEALTHY_COUNT) { - return seeded.slice(0, MIN_HEALTHY_COUNT); - } - return streams.slice(0, MAX_UNHEALTHY_COUNT); -} - -function sortBySize(streams, limit) { - return streams - .sort((a, b) => { - const aSize = extractSize(a.title); - const bSize = extractSize(b.title); - return bSize - aSize; - }).slice(0, limit); -} - -function sortByVideoQuality(streams, nestedSort, limit) { - const qualityMap = streams - .reduce((map, stream) => { - const quality = extractQuality(stream.name); - map[quality] = (map[quality] || []).concat(stream); - return map; - }, {}); - const sortedQualities = Object.keys(qualityMap) - .sort((a, b) => { - const aResolution = a?.match(/\d+p/) && parseInt(a, 10); - const bResolution = b?.match(/\d+p/) && parseInt(b, 10); - if (aResolution && bResolution) { - return bResolution - aResolution; // higher resolution first; - } else if (aResolution) { - return -1; // remain higher if resolution is there - } else if (bResolution) { - return 1; // move downward if other stream has resolution - } - return a < b ? -1 : b < a ? 1 : 0; // otherwise sort by alphabetic order - }); - return sortedQualities - .map(quality => nestedSort(qualityMap[quality]).slice(0, limit)) - .reduce((a, b) => a.concat(b), []); -} - -function extractQuality(title) { - const qualityDesc = title.split('\n')[1]; - const resolutionMatch = qualityDesc?.match(/\d+p/); - if (resolutionMatch) { - return resolutionMatch[0]; - } else if (/8k/i.test(qualityDesc)) { - return '4320p' - } else if (/4k|uhd/i.test(qualityDesc)) { - return '2060p' - } else if (CAM_QUALITIES.test(qualityDesc)) { - return CAM_QUALITIES.label; - } else if (OTHER_QUALITIES.test(qualityDesc)) { - return OTHER_QUALITIES.label; - } - return qualityDesc; -} diff --git a/catalogs/.dockerignore b/catalogs/.dockerignore deleted file mode 100644 index 5538a38..0000000 --- a/catalogs/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -**/node_modules -**/npm-debug.log -**/.env \ No newline at end of file diff --git a/catalogs/Dockerfile b/catalogs/Dockerfile deleted file mode 100644 index d51871f..0000000 --- a/catalogs/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:16-alpine - -RUN apk update && apk upgrade && \ - apk add --no-cache git - -WORKDIR /home/node/app - -COPY ./catalogs . -COPY ./addon ../addon -RUN npm ci --only-production - -CMD [ "node", "index.js" ] \ No newline at end of file diff --git a/catalogs/addon.js b/catalogs/addon.js deleted file mode 100644 index a07e60e..0000000 --- a/catalogs/addon.js +++ /dev/null @@ -1,99 +0,0 @@ -import Bottleneck from 'bottleneck'; -import moment from 'moment'; -import { addonBuilder } from 'stremio-addon-sdk'; -import { Providers } from '../addon/lib/filter.js'; -import { createManifest, genres } from './lib/manifest.js'; -import { getMetas } from './lib/metadata.js'; -import { cacheWrapCatalog, cacheWrapIds } from './lib/cache.js'; -import * as repository from './lib/repository.js'; - -const CACHE_MAX_AGE = parseInt(process.env.CACHE_MAX_AGE) || 4 * 60 * 60; // 4 hours in seconds -const STALE_REVALIDATE_AGE = 4 * 60 * 60; // 4 hours -const STALE_ERROR_AGE = 7 * 24 * 60 * 60; // 7 days - -const manifest = createManifest(); -const builder = new addonBuilder(manifest); -const limiter = new Bottleneck({ - maxConcurrent: process.env.LIMIT_MAX_CONCURRENT || 20, - highWater: process.env.LIMIT_QUEUE_SIZE || 50, - strategy: Bottleneck.strategy.OVERFLOW -}); -const defaultProviders = Providers.options - .filter(provider => !provider.foreign) - .map(provider => provider.label) - .sort(); - -builder.defineCatalogHandler((args) => { - const offset = parseInt(args.extra.skip || '0', 10); - const genre = args.extra.genre || 'default'; - const catalog = manifest.catalogs.find(c => c.id === args.id); - const providers = defaultProviders; - console.log(`Incoming catalog ${args.id} request with genre=${genre} and skip=${offset}`) - if (!catalog) { - return Promise.reject(`No catalog found for with id: ${args.id}`) - } - - const cacheKey = createCacheKey(catalog.id, providers, genre, offset); - return limiter.schedule(() => cacheWrapCatalog(cacheKey, () => getCatalog(catalog, providers, genre, offset))) - .then(metas => ({ - metas: metas, - cacheMaxAge: CACHE_MAX_AGE, - staleRevalidate: STALE_REVALIDATE_AGE, - staleError: STALE_ERROR_AGE - })) - .catch(error => Promise.reject(`Failed retrieving catalog ${args.id}: ${error.message}`)); -}) - -async function getCursor(catalog, providers, genre, offset) { - if (offset === 0) { - return undefined; - } - const previousOffset = offset - catalog.pageSize; - const previousCacheKey = createCacheKey(catalog.id, providers, genre, previousOffset); - return cacheWrapCatalog(previousCacheKey, () => Promise.reject("cursor not found")) - .then(metas => metas[metas.length - 1]) - .then(meta => meta.id.replace('kitsu:', '')) -} - -async function getCatalog(catalog, providers, genre, offset) { - const cursor = await getCursor(catalog, providers, genre, offset) - const startDate = getStartDate(genre)?.toISOString(); - const endDate = getEndDate(genre)?.toISOString(); - const cacheKey = createCacheKey(catalog.id, providers, genre); - - return cacheWrapIds(cacheKey, () => repository.getIds(providers, catalog.type, startDate, endDate)) - .then(ids => ids.slice(ids.indexOf(cursor) + 1)) - .then(ids => getMetas(ids, catalog.type)) - .then(metas => metas.slice(0, catalog.pageSize)); -} - -function getStartDate(genre) { - switch (genre) { - case genres[0]: return moment().utc().subtract(1, 'day').startOf('day'); - case genres[1]: return moment().utc().startOf('isoWeek'); - case genres[2]: return moment().utc().subtract(7, 'day').startOf('isoWeek'); - case genres[3]: return moment().utc().startOf('month'); - case genres[4]: return moment().utc().subtract(30, 'day').startOf('month'); - case genres[5]: return undefined; - default: return moment().utc().subtract(30, 'day').startOf('day'); - } -} - -function getEndDate(genre) { - switch (genre) { - case genres[0]: return moment().utc().subtract(1, 'day').endOf('day'); - case genres[1]: return moment().utc().endOf('isoWeek'); - case genres[2]: return moment().utc().subtract(7, 'day').endOf('isoWeek'); - case genres[3]: return moment().utc().endOf('month'); - case genres[4]: return moment().utc().subtract(30, 'day').endOf('month'); - case genres[5]: return undefined; - default: return moment().utc().subtract(1, 'day').endOf('day'); - } -} - -function createCacheKey(catalogId, providers, genre, offset) { - const dateKey = moment().format('YYYY-MM-DD'); - return [catalogId, providers.join(','), genre, dateKey, offset].filter(x => x !== undefined).join('|'); -} - -export default builder.getInterface(); diff --git a/catalogs/index.js b/catalogs/index.js deleted file mode 100644 index 3d55fa9..0000000 --- a/catalogs/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import express from 'express'; -import serverless from './serverless.js'; - -const app = express(); - -app.use((req, res, next) => serverless(req, res, next)); -app.listen(process.env.PORT || 7000, () => { - console.log(`Started addon at: http://localhost:${process.env.PORT || 7000}`); -}); diff --git a/catalogs/lib/cache.js b/catalogs/lib/cache.js deleted file mode 100644 index 57b8c3b..0000000 --- a/catalogs/lib/cache.js +++ /dev/null @@ -1,46 +0,0 @@ -import cacheManager from 'cache-manager'; -import mangodbStore from 'cache-manager-mongodb'; - -const CATALOG_TTL = process.env.STREAM_TTL || 24 * 60 * 60; // 24 hours - -const MONGO_URI = process.env.MONGODB_URI; - -const remoteCache = initiateRemoteCache(); - -function initiateRemoteCache() { - if (MONGO_URI) { - return cacheManager.caching({ - store: mangodbStore, - uri: MONGO_URI, - options: { - collection: 'torrentio_catalog_collection', - socketTimeoutMS: 120000, - useNewUrlParser: true, - useUnifiedTopology: false, - ttl: CATALOG_TTL - }, - ttl: CATALOG_TTL, - ignoreCacheErrors: true - }); - } else { - return cacheManager.caching({ - store: 'memory', - ttl: CATALOG_TTL - }); - } -} - -function cacheWrap(cache, key, method, options) { - if (!cache) { - return method(); - } - return cache.wrap(key, method, options); -} - -export function cacheWrapCatalog(key, method) { - return cacheWrap(remoteCache, key, method, { ttl: CATALOG_TTL }); -} - -export function cacheWrapIds(key, method) { - return cacheWrap(remoteCache, `ids|${key}`, method, { ttl: CATALOG_TTL }); -} diff --git a/catalogs/lib/landingTemplate.js b/catalogs/lib/landingTemplate.js deleted file mode 100644 index 68f6090..0000000 --- a/catalogs/lib/landingTemplate.js +++ /dev/null @@ -1,274 +0,0 @@ -const STYLESHEET = ` -* { - box-sizing: border-box; -} - -body, -html { - margin: 0; - padding: 0; - width: 100%; - height: 100% -} - -html { - background-size: auto 100%; - background-size: cover; - background-position: center center; - background-repeat: repeat-y; -} - -body { - display: flex; - background-color: transparent; - font-family: 'Open Sans', Arial, sans-serif; - color: white; -} - -h1 { - font-size: 4.5vh; - font-weight: 700; -} - -h2 { - font-size: 2.2vh; - font-weight: normal; - font-style: italic; - opacity: 0.8; -} - -h3 { - font-size: 2.2vh; -} - -h1, -h2, -h3, -p, -label { - margin: 0; - text-shadow: 0 0 1vh rgba(0, 0, 0, 0.15); -} - -p { - font-size: 1.75vh; -} - -ul { - font-size: 1.75vh; - margin: 0; - margin-top: 1vh; - padding-left: 3vh; -} - -a { - color: green -} - -a.install-link { - text-decoration: none -} - -button { - border: 0; - outline: 0; - color: white; - background: #8A5AAB; - padding: 1.2vh 3.5vh; - margin: auto; - text-align: center; - font-family: 'Open Sans', Arial, sans-serif; - font-size: 2.2vh; - font-weight: 600; - cursor: pointer; - display: block; - box-shadow: 0 0.5vh 1vh rgba(0, 0, 0, 0.2); - transition: box-shadow 0.1s ease-in-out; -} - -button:hover { - box-shadow: none; -} - -button:active { - box-shadow: 0 0 0 0.5vh white inset; -} - -#addon { - width: 90vh; - margin: auto; - padding-left: 10%; - padding-right: 10%; - background: rgba(0, 0, 0, 0.60); -} - -.logo { - height: 14vh; - width: 14vh; - margin: auto; - margin-bottom: 3vh; -} - -.logo img { - width: 100%; -} - -.name, .version { - display: inline-block; - vertical-align: top; -} - -.name { - line-height: 5vh; -} - -.version { - position: absolute; - line-height: 5vh; - margin-left: 1vh; - opacity: 0.8; -} - -.contact { - position: absolute; - left: 0; - bottom: 4vh; - width: 100%; - text-align: center; -} - -.contact a { - font-size: 1.4vh; - font-style: italic; -} - -.separator { - margin-bottom: 4vh; -} - -.label { - font-size: 2.2vh; - font-weight: 600; - padding: 0; - line-height: inherit; -} - -.btn-group, .multiselect-container { - width: 100%; -} - -.btn { - text-align: left; -} - -.multiselect-container { - border: 0; - border-radius: 0; -} - -.input, .btn { - height: 3.8vh; - width: 100%; - margin: auto; - margin-bottom: 10px; - padding: 6px 12px; - border: 0; - border-radius: 0; - outline: 0; - color: #333; - background-color: rgb(255, 255, 255); - box-shadow: 0 0.5vh 1vh rgba(0, 0, 0, 0.2); -} -`; -import { Providers } from '../../addon/lib/filter.js'; - -export default function landingTemplate(manifest, config = {}) { - const providers = config.providers || []; - - const background = manifest.background || 'https://dl.strem.io/addon-background.jpg'; - const logo = manifest.logo || 'https://dl.strem.io/addon-logo.png'; - const contactHTML = manifest.contactEmail ? - `
-

Contact ${manifest.name} creator:

- ${manifest.contactEmail} -
` : '
'; - const providersHTML = Providers.options - .map(provider => ``) - .join('\n'); - const stylizedTypes = manifest.types - .map(t => t[0].toUpperCase() + t.slice(1) + (t !== 'series' ? 's' : '')); - - return ` - - - - - - ${manifest.name} - Stremio Addon - - - - - - - - - - - - -
- -

${manifest.name}

-

${manifest.version || '0.0.0'}

-

${manifest.description || ''}

- -
- -

This addon has more :

-
    - ${stylizedTypes.map(t => `
  • ${t}
  • `).join('')} -
- -
- - - - -
- - - - - ${contactHTML} -
- - - - ` -} diff --git a/catalogs/lib/manifest.js b/catalogs/lib/manifest.js deleted file mode 100644 index 37cbb99..0000000 --- a/catalogs/lib/manifest.js +++ /dev/null @@ -1,54 +0,0 @@ -import { Type } from '../../addon/lib/types.js'; - -export const genres = [ - 'Yesterday', - 'This Week', - 'Last Week', - 'This Month', - 'Last Month', - 'All Time' -] - -export function createManifest() { - return { - id: 'com.stremio.torrentio.catalog.addon', - version: '1.0.2', - name: 'Torrent Catalogs', - description: 'Provides catalogs for movies/series/anime based on top seeded torrents. Requires Kitsu addon for anime.', - logo: `https://i.ibb.co/w4BnkC9/GwxAcDV.png`, - background: `https://i.ibb.co/VtSfFP9/t8wVwcg.jpg`, - types: [Type.MOVIE, Type.SERIES, Type.ANIME], - resources: ['catalog'], - catalogs: [ - { - id: 'top-movies', - type: Type.MOVIE, - name: "Top seeded", - pageSize: 20, - extra: [{ name: 'genre', options: genres }, { name: 'skip' }], - genres: genres - }, - { - id: 'top-series', - type: Type.SERIES, - name: "Top seeded", - pageSize: 20, - extra: [{ name: 'genre', options: genres }, { name: 'skip' }], - genres: genres - }, - { - id: 'top-anime', - type: Type.ANIME, - name: "Top seeded", - pageSize: 20, - extra: [{ name: 'genre', options: genres }, { name: 'skip' }], - genres: genres - } - ], - behaviorHints: { - // @TODO might enable configuration to configure providers - configurable: false, - configurationRequired: false - } - }; -} diff --git a/catalogs/lib/metadata.js b/catalogs/lib/metadata.js deleted file mode 100644 index 47a6f6e..0000000 --- a/catalogs/lib/metadata.js +++ /dev/null @@ -1,41 +0,0 @@ -import axios from 'axios'; -import { Type } from '../../addon/lib/types.js'; - -const CINEMETA_URL = 'https://v3-cinemeta.strem.io'; -const KITSU_URL = 'https://anime-kitsu.strem.fun'; -const TIMEOUT = 30000; -const MAX_SIZE = 40; - -export async function getMetas(ids, type) { - if (!ids.length || !type) { - return []; - } - - return _requestMetadata(ids, type) - .catch((error) => { - throw new Error(`failed metadata ${type} query due: ${error.message}`); - }); -} - -function _requestMetadata(ids, type) { - const url = _getUrl(ids, type); - return axios.get(url, { timeout: TIMEOUT }) - .then(response => response?.data?.metas || response?.data?.metasDetailed || []) - .then(metas => metas.filter(meta => meta)) - .then(metas => metas.map(meta => _sanitizeMeta(meta))); -} - -function _getUrl(ids, type) { - const joinedIds = ids.slice(0, MAX_SIZE).join(','); - if (type === Type.ANIME) { - return `${KITSU_URL}/catalog/${type}/kitsu-anime-list/lastVideosIds=${joinedIds}.json` - } - return `${CINEMETA_URL}/catalog/${type}/last-videos/lastVideosIds=${joinedIds}.json` -} - -function _sanitizeMeta(meta) { - delete meta.videos; - delete meta.credits_cast; - delete meta.credits_crew; - return meta; -} diff --git a/catalogs/lib/repository.js b/catalogs/lib/repository.js deleted file mode 100644 index c32dd9e..0000000 --- a/catalogs/lib/repository.js +++ /dev/null @@ -1,34 +0,0 @@ -import { Sequelize, QueryTypes } from 'sequelize'; -import { Type } from '../../addon/lib/types.js'; - -const DATABASE_URI = process.env.DATABASE_URI; - -const database = new Sequelize(DATABASE_URI, { logging: false }); - -export async function getIds(providers, type, startDate, endDate) { - const idName = type === Type.ANIME ? 'kitsuId' : 'imdbId'; - const episodeCondition = type === Type.SERIES - ? 'AND files."imdbSeason" IS NOT NULL AND files."imdbEpisode" IS NOT NULL' - : ''; - const dateCondition = startDate && endDate - ? `AND "uploadDate" BETWEEN '${startDate}' AND '${endDate}'` - : ''; - const providersCondition = providers && providers.length - ? `AND provider in (${providers.map(it => `'${it}'`).join(',')})` - : ''; - const titleCondition = type === Type.MOVIE - ? 'AND torrents.title NOT LIKE \'%[Erotic]%\'' - : ''; - const sortCondition = type === Type.MOVIE ? 'sum(torrents.seeders)' : 'max(torrents.seeders)'; - const query = `SELECT files."${idName}" - FROM (SELECT torrents."infoHash", torrents.seeders FROM torrents - WHERE seeders > 0 AND type = '${type}' ${providersCondition} ${dateCondition} ${titleCondition} - ) as torrents - JOIN files ON torrents."infoHash" = files."infoHash" - WHERE files."${idName}" IS NOT NULL ${episodeCondition} - GROUP BY files."${idName}" - ORDER BY ${sortCondition} DESC - LIMIT 5000` - const results = await database.query(query, { type: QueryTypes.SELECT }); - return results.map(result => `${result.imdbId || result.kitsuId}`); -} diff --git a/catalogs/package-lock.json b/catalogs/package-lock.json deleted file mode 100644 index 33efc95..0000000 --- a/catalogs/package-lock.json +++ /dev/null @@ -1,3039 +0,0 @@ -{ - "name": "stremio-torrentio-catalogs", - "version": "1.0.3", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "stremio-torrentio-catalogs", - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "axios": "^1.6.1", - "bottleneck": "^2.19.5", - "cache-manager": "^3.4.4", - "cache-manager-mongodb": "^0.3.0", - "moment": "^2.29.4", - "pg": "^8.8.0", - "pg-hstore": "^2.3.4", - "request-ip": "^3.3.0", - "sequelize": "^6.29.0", - "stremio-addon-sdk": "^1.6.10" - }, - "engines": { - "node": "16.x" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", - "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" - }, - "node_modules/@types/validator": { - "version": "13.7.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", - "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "node_modules/bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-manager": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", - "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", - "dependencies": { - "async": "3.2.3", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/cache-manager-mongodb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/cache-manager-mongodb/-/cache-manager-mongodb-0.3.0.tgz", - "integrity": "sha512-r+piWvu8XD8ceBWflZBEQZKemksoaL1V5zSHWyviVTXiGBSVQAf18b4S1v5UwGZMJnrMk8YNFgpBlugF0nuhvg==", - "dependencies": { - "bluebird": "^3.5.3", - "cache-manager": "^2.9.0", - "lodash": "^4.17.15", - "mongodb": "^3.6.3" - } - }, - "node_modules/cache-manager-mongodb/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "node_modules/cache-manager-mongodb/node_modules/cache-manager": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", - "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", - "dependencies": { - "async": "1.5.2", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.0.0" - } - }, - "node_modules/cache-manager-mongodb/node_modules/lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", - "dependencies": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "node_modules/cache-manager-mongodb/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/dottie": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", - "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz", - "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mongodb": { - "version": "3.6.10", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz", - "integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==", - "dependencies": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.0.3", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4" - }, - "optionalDependencies": { - "saslprep": "^1.0.0" - }, - "peerDependenciesMeta": { - "aws4": { - "optional": true - }, - "bson-ext": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "mongodb-extjson": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optional-require": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.7.tgz", - "integrity": "sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==", - "dependencies": { - "require-at": "^1.0.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/pg": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", - "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", - "pg-protocol": "^1.5.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "node_modules/pg-hstore": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.4.tgz", - "integrity": "sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA==", - "dependencies": { - "underscore": "^1.13.1" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", - "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", - "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", - "dependencies": { - "split2": "^3.1.1" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/request-ip": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", - "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" - }, - "node_modules/require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/router": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/router/-/router-1.3.4.tgz", - "integrity": "sha512-a5uZFwgKExBZzh4U5jujU05DkImy9/ub8omiU7RlZlNnSF07tjvNJTOgHdZOjKDeUZqlkpz8CjDoz5SY3kimOA==", - "dependencies": { - "array-flatten": "3.0.0", - "debug": "2.6.9", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router/node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dependencies": { - "is-promise": "^2.1.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/sequelize": { - "version": "6.29.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz", - "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/sequelize/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stremio-addon-linter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/stremio-addon-linter/-/stremio-addon-linter-1.7.0.tgz", - "integrity": "sha512-ck1L1Wp2qvAhvXLj+4Lq1XRn8K3r2gx1i/f+e1W6K0+Et/oIYYDmaIVoh3SvExiNbCBcbJjH9WWEeDYKoqaMqQ==", - "dependencies": { - "semver": "^5.5.0" - } - }, - "node_modules/stremio-addon-sdk": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/stremio-addon-sdk/-/stremio-addon-sdk-1.6.10.tgz", - "integrity": "sha512-+U/lDGv73JPZa7OOy8eMb+SkUFhnHuZGBRXuKNeXcz706oDdwC/sQe9r8Wxw2A7Cw05+f/CQIJSl4zIcmKBkGg==", - "dependencies": { - "chalk": "^2.4.2", - "cors": "^2.8.4", - "express": "^4.16.3", - "inquirer": "^6.2.2", - "mkdirp": "^0.5.1", - "node-fetch": "^2.3.0", - "opn": "^5.4.0", - "router": "^1.3.3", - "stremio-addon-linter": "^1.7.0" - }, - "bin": { - "addon-bootstrap": "cli/bootstrap.js" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, - "dependencies": { - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", - "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" - }, - "@types/validator": { - "version": "13.7.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", - "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" - }, - "buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "cache-manager": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", - "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", - "requires": { - "async": "3.2.3", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "cache-manager-mongodb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/cache-manager-mongodb/-/cache-manager-mongodb-0.3.0.tgz", - "integrity": "sha512-r+piWvu8XD8ceBWflZBEQZKemksoaL1V5zSHWyviVTXiGBSVQAf18b4S1v5UwGZMJnrMk8YNFgpBlugF0nuhvg==", - "requires": { - "bluebird": "^3.5.3", - "cache-manager": "^2.9.0", - "lodash": "^4.17.15", - "mongodb": "^3.6.3" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "cache-manager": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", - "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", - "requires": { - "async": "1.5.2", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.0.0" - } - }, - "lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "dottie": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", - "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "moment-timezone": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz", - "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "mongodb": { - "version": "3.6.10", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz", - "integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==", - "requires": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.0.3", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optional-require": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.7.tgz", - "integrity": "sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==", - "requires": { - "require-at": "^1.0.6" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "pg": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", - "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", - "requires": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", - "pg-protocol": "^1.5.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - } - }, - "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "pg-hstore": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.4.tgz", - "integrity": "sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA==", - "requires": { - "underscore": "^1.13.1" - } - }, - "pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" - }, - "pg-pool": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", - "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", - "requires": {} - }, - "pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" - }, - "pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "requires": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - } - }, - "pgpass": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", - "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", - "requires": { - "split2": "^3.1.1" - } - }, - "postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" - }, - "postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" - }, - "postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "requires": { - "xtend": "^4.0.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "request-ip": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", - "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" - }, - "require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "router": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/router/-/router-1.3.4.tgz", - "integrity": "sha512-a5uZFwgKExBZzh4U5jujU05DkImy9/ub8omiU7RlZlNnSF07tjvNJTOgHdZOjKDeUZqlkpz8CjDoz5SY3kimOA==", - "requires": { - "array-flatten": "3.0.0", - "debug": "2.6.9", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "dependencies": { - "array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - } - } - }, - "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "requires": { - "is-promise": "^2.1.0" - } - }, - "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "sequelize": { - "version": "6.29.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz", - "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==", - "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stremio-addon-linter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/stremio-addon-linter/-/stremio-addon-linter-1.7.0.tgz", - "integrity": "sha512-ck1L1Wp2qvAhvXLj+4Lq1XRn8K3r2gx1i/f+e1W6K0+Et/oIYYDmaIVoh3SvExiNbCBcbJjH9WWEeDYKoqaMqQ==", - "requires": { - "semver": "^5.5.0" - } - }, - "stremio-addon-sdk": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/stremio-addon-sdk/-/stremio-addon-sdk-1.6.10.tgz", - "integrity": "sha512-+U/lDGv73JPZa7OOy8eMb+SkUFhnHuZGBRXuKNeXcz706oDdwC/sQe9r8Wxw2A7Cw05+f/CQIJSl4zIcmKBkGg==", - "requires": { - "chalk": "^2.4.2", - "cors": "^2.8.4", - "express": "^4.16.3", - "inquirer": "^6.2.2", - "mkdirp": "^0.5.1", - "node-fetch": "^2.3.0", - "opn": "^5.4.0", - "router": "^1.3.3", - "stremio-addon-linter": "^1.7.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "requires": { - "@types/node": "*" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/catalogs/package.json b/catalogs/package.json deleted file mode 100644 index 6ce33a0..0000000 --- a/catalogs/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "stremio-torrentio-catalogs", - "version": "1.0.3", - "exports": "./index.js", - "type": "module", - "scripts": { - "start": "node index.js" - }, - "engines": { - "node": "16.x" - }, - "author": "TheBeastLT ", - "license": "MIT", - "dependencies": { - "axios": "^1.6.1", - "bottleneck": "^2.19.5", - "cache-manager": "^3.4.4", - "cache-manager-mongodb": "^0.3.0", - "moment": "^2.29.4", - "pg": "^8.8.0", - "pg-hstore": "^2.3.4", - "request-ip": "^3.3.0", - "sequelize": "^6.29.0", - "stremio-addon-sdk": "^1.6.10" - } -} diff --git a/catalogs/serverless.js b/catalogs/serverless.js deleted file mode 100644 index ec028bb..0000000 --- a/catalogs/serverless.js +++ /dev/null @@ -1,68 +0,0 @@ -import getRouter from 'stremio-addon-sdk/src/getRouter.js'; -import addonInterface from './addon.js'; -import qs from 'querystring'; -import { parseConfiguration } from '../addon/lib/configuration.js'; -import { createManifest } from './lib/manifest.js'; - -const router = getRouter(addonInterface); - -// router.get('/', (_, res) => { -// res.redirect('/configure') -// res.end(); -// }); -// -// router.get('/:configuration?/configure', (req, res) => { -// const configValues = parseConfiguration(req.params.configuration || ''); -// const landingHTML = landingTemplate(createManifest(configValues), configValues); -// res.setHeader('content-type', 'text/html'); -// res.end(landingHTML); -// }); - -router.get('/:configuration?/manifest.json', (req, res) => { - const configValues = parseConfiguration(req.params.configuration || ''); - const manifestBuf = JSON.stringify(createManifest(configValues)); - res.setHeader('Content-Type', 'application/json; charset=utf-8'); - res.end(manifestBuf) -}); - -router.get('/:configuration/:resource/:type/:id/:extra?.json', (req, res, next) => { - const { configuration, resource, type, id } = req.params; - const extra = req.params.extra ? qs.parse(req.url.split('/').pop().slice(0, -5)) : {} - const configValues = { ...extra, ...parseConfiguration(configuration) }; - addonInterface.get(resource, type, id, configValues) - .then(resp => { - const cacheHeaders = { - cacheMaxAge: 'max-age', - staleRevalidate: 'stale-while-revalidate', - staleError: 'stale-if-error' - }; - const cacheControl = Object.keys(cacheHeaders) - .map(prop => Number.isInteger(resp[prop]) && cacheHeaders[prop] + '=' + resp[prop]) - .filter(val => !!val).join(', '); - - res.setHeader('Cache-Control', `${cacheControl}, public`); - res.setHeader('Content-Type', 'application/json; charset=utf-8'); - res.end(JSON.stringify(resp)); - }) - .catch(err => { - if (err.noHandler) { - if (next) { - next() - } else { - res.writeHead(404); - res.end(JSON.stringify({ err: 'not found' })); - } - } else { - console.error(err); - res.writeHead(500); - res.end(JSON.stringify({ err: 'handler error' })); - } - }); -}); - -export default function (req, res) { - router(req, res, function () { - res.statusCode = 404; - res.end(); - }); -}; diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..62d7650 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,103 @@ +version: '3.8' +name: torrentio-selfhostio + +x-restart: &restart-policy + "unless-stopped" + +x-basehealth: &base-health + interval: 10s + timeout: 10s + retries: 3 + start_period: 10s + +x-rabbithealth: &rabbitmq-health + test: rabbitmq-diagnostics -q ping + <<: *base-health + +x-mongohealth: &mongodb-health + test: ["CMD","mongosh", "--eval", "db.adminCommand('ping')"] + <<: *base-health + +x-postgreshealth: &postgresdb-health + test: pg_isready + <<: *base-health + +x-apps: &selfhostio-app + depends_on: + mongodb: + condition: service_healthy + postgres: + condition: service_healthy + rabbitmq: + condition: service_healthy + restart: *restart-policy + +services: + postgres: + image: postgres:latest + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: selfhostio + PGUSER: postgres # needed for healthcheck. + ports: + - "5432:5432" + volumes: + - postgres:/var/lib/postgresql/data + healthcheck: *postgresdb-health + restart: *restart-policy + + mongodb: + image: mongo:latest + environment: + MONGO_INITDB_ROOT_USERNAME: mongo + MONGO_INITDB_ROOT_PASSWORD: mongo + ports: + - "27017:27017" + volumes: + - mongo:/data/db + restart: *restart-policy + healthcheck: *mongodb-health + + rabbitmq: + image: rabbitmq:3-management + ports: + - "5672:5672" + - "15672:15672" + volumes: + - rabbitmq:/var/lib/rabbitmq + restart: *restart-policy + healthcheck: *rabbitmq-health + + producer: + build: + context: src/producer + dockerfile: Dockerfile + env_file: + - env/producer.env + <<: *selfhostio-app + + consumer: + build: + context: src/node/consumer + dockerfile: Dockerfile + env_file: + - env/consumer.env + deploy: + replicas: 3 + <<: *selfhostio-app + + addon: + build: + context: src/node/addon + dockerfile: Dockerfile + ports: + - "7000:7000" + env_file: + - env/addon.env + <<: *selfhostio-app + +volumes: + postgres: + mongo: + rabbitmq: \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 7e2fef1..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- - -version: '3.9' -name: torrentio-self-host - -services: - - mongodb: - restart: unless-stopped - image: docker.io/bitnami/mongodb:7.0 - ports: - - "27017:27017" - volumes: - - mongo-data:/bitnami/mongodb - - scraper: - build: ./scraper - restart: unless-stopped - depends_on: - - mongodb - - postgres - environment: - - PORT=7001 - - MONGODB_URI=mongodb://mongodb:27017/torrentio - - DATABASE_URI=postgres://postgres@postgres:5432/torrentio - - ENABLE_SYNC=true - - torrentio: - build: ./addon - restart: unless-stopped - depends_on: - - mongodb - - postgres - ports: - - "7000:7000" - environment: - - MONGODB_URI=mongodb://mongodb:27017/torrentio - - DATABASE_URI=postgres://postgres@postgres:5432/torrentio - - ENABLE_SYNC=true - - postgres: - image: postgres:14-alpine - restart: unless-stopped - ports: - - 5432:5432 - volumes: - - postgres-data:/var/lib/postgresql/data - environment: - - POSTGRES_HOST_AUTH_METHOD=trust - - POSTGRES_USER=postgres - - POSTGRES_DB=torrentio - - flaresolverr: - image: ghcr.io/flaresolverr/flaresolverr:latest - restart: unless-stopped - ports: - - 8191:8191 - -volumes: - mongo-data: - postgres-data: diff --git a/env/addon.env b/env/addon.env new file mode 100644 index 0000000..5bd2f3c --- /dev/null +++ b/env/addon.env @@ -0,0 +1,4 @@ +TZ=London/Europe +DATABASE_URI=postgres://postgres:postgres@postgres/selfhostio +MONGODB_URI=mongodb://mongo:mongo@mongodb/selfhostio?tls=false&authSource=admin +DEBUG_MODE=false \ No newline at end of file diff --git a/env/consumer.env b/env/consumer.env new file mode 100644 index 0000000..800d656 --- /dev/null +++ b/env/consumer.env @@ -0,0 +1,11 @@ +TZ=London/Europe +MONGODB_URI=mongodb://mongo:mongo@mongodb/selfhostio?tls=false&authSource=admin +POSTGRES_DATABASE_URI=postgres://postgres:postgres@postgres/selfhostio +RABBIT_URI=amqp://guest:guest@rabbitmq:5672/?heartbeat=30 +QUEUE_NAME=ingested +JOB_CONCURRENCY=5 +JOBS_ENABLED=true +ENABLE_SYNC=true +MAX_SINGLE_TORRENT_CONNECTIONS=10 +TORRENT_TIMEOUT=30000 +UDP_TRACKERS_ENABLED=true \ No newline at end of file diff --git a/env/producer.env b/env/producer.env new file mode 100644 index 0000000..9a33630 --- /dev/null +++ b/env/producer.env @@ -0,0 +1,4 @@ +ScrapeConfiguration__StorageConnectionString=host=postgres;username=postgres;password=postgres;database=selfhostio; +RabbitMqConfiguration__Host=rabbitmq +RabbitMqConfiguration__QueueName=ingested +GithubSettings__PAT= \ No newline at end of file diff --git a/scraper/Dockerfile b/scraper/Dockerfile deleted file mode 100644 index 9aaf66a..0000000 --- a/scraper/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:16-alpine - -RUN apk update && apk upgrade && \ - apk add --no-cache git - -WORKDIR /home/node/app - -COPY package*.json ./ -RUN npm ci --only-production -COPY . . - -CMD [ "node", "--insecure-http-parser", "index.js" ] \ No newline at end of file diff --git a/scraper/README.md b/scraper/README.md deleted file mode 100644 index d49c360..0000000 --- a/scraper/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Torrentio Scraper - -## Initial dumps - -### The Pirate Bay - -https://mega.nz/#F!tktzySBS!ndSEaK3Z-Uc3zvycQYxhJA - -https://thepiratebay.org/static/dump/csv/ - -### Kickass - -https://mega.nz/#F!tktzySBS!ndSEaK3Z-Uc3zvycQYxhJA - -https://web.archive.org/web/20150416071329/http://kickass.to/api - -### RARBG - -Scrape movie and tv catalog using [www.webscraper.io](https://www.webscraper.io/) for available `imdbIds` and use those via the api to search for torrents. - -Movies sitemap -```json -{"_id":"rarbg-movies","startUrl":["https://rarbgmirror.org/catalog/movies/[1-4235]"],"selectors":[{"id":"rarbg-movie-imdb-id","type":"SelectorHTML","parentSelectors":["_root"],"selector":".lista-rounded table td[width='110']","multiple":true,"regex":"tt[0-9]+","delay":0}]} -``` - -TV sitemap -```json -{"_id":"rarbg-tv","startUrl":["https://rarbgmirror.org/catalog/tv/[1-609]"],"selectors":[{"id":"rarbg-tv-imdb-id","type":"SelectorHTML","parentSelectors":["_root"],"selector":".lista-rounded table td[width='110']","multiple":true,"regex":"tt[0-9]+","delay":0}]} -``` - -### Migrating Database - -When migrating database to a new one it is important to alter the `files_id_seq` sequence to the maximum file id value plus 1. - -```sql -ALTER SEQUENCE files_id_seq RESTART WITH ; -``` \ No newline at end of file diff --git a/scraper/index.js b/scraper/index.js deleted file mode 100644 index 3ad1aa1..0000000 --- a/scraper/index.js +++ /dev/null @@ -1,14 +0,0 @@ -const express = require("express"); -const server = express(); -const { connect } = require('./lib/repository'); -const { startScraper } = require('./scheduler/scheduler') - -server.get('/', function (req, res) { - res.sendStatus(200); -}); - -server.listen(process.env.PORT || 7000, async () => { - await connect(); - console.log('Scraper started'); - startScraper(); -}); \ No newline at end of file diff --git a/scraper/lib/cache.js b/scraper/lib/cache.js deleted file mode 100644 index f8a1740..0000000 --- a/scraper/lib/cache.js +++ /dev/null @@ -1,72 +0,0 @@ -const cacheManager = require('cache-manager'); -const mangodbStore = require('cache-manager-mongodb'); - -const GLOBAL_KEY_PREFIX = 'stremio-torrentio'; -const IMDB_ID_PREFIX = `${GLOBAL_KEY_PREFIX}|imdb_id`; -const KITSU_ID_PREFIX = `${GLOBAL_KEY_PREFIX}|kitsu_id`; -const METADATA_PREFIX = `${GLOBAL_KEY_PREFIX}|metadata`; -const TRACKERS_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|trackers`; - -const GLOBAL_TTL = process.env.METADATA_TTL || 7 * 24 * 60 * 60; // 7 days -const MEMORY_TTL = process.env.METADATA_TTL || 2 * 60 * 60; // 2 hours -const TRACKERS_TTL = 2 * 24 * 60 * 60; // 2 days - -const MONGO_URI = process.env.MONGODB_URI; - -const memoryCache = initiateMemoryCache(); -const remoteCache = initiateRemoteCache(); - -function initiateRemoteCache() { - if (MONGO_URI) { - return cacheManager.caching({ - store: mangodbStore, - uri: MONGO_URI, - options: { - collection: 'torrentio_scraper_collection', - useUnifiedTopology: true - }, - ttl: GLOBAL_TTL, - ignoreCacheErrors: true - }); - } else { - return cacheManager.caching({ - store: 'memory', - ttl: GLOBAL_TTL - }); - } -} - -function initiateMemoryCache() { - return cacheManager.caching({ - store: 'memory', - ttl: MEMORY_TTL - }); -} - -function cacheWrap(cache, key, method, options) { - return cache.wrap(key, method, options); -} - -function cacheWrapImdbId(key, method) { - return cacheWrap(remoteCache, `${IMDB_ID_PREFIX}:${key}`, method, { ttl: GLOBAL_TTL }); -} - -function cacheWrapKitsuId(key, method) { - return cacheWrap(remoteCache, `${KITSU_ID_PREFIX}:${key}`, method, { ttl: GLOBAL_TTL }); -} - -function cacheWrapMetadata(id, method) { - return cacheWrap(memoryCache, `${METADATA_PREFIX}:${id}`, method, { ttl: MEMORY_TTL }); -} - -function cacheTrackers(method) { - return cacheWrap(memoryCache, `${TRACKERS_KEY_PREFIX}`, method, { ttl: TRACKERS_TTL }); -} - -module.exports = { - cacheWrapImdbId, - cacheWrapKitsuId, - cacheWrapMetadata, - cacheTrackers -}; - diff --git a/scraper/lib/requestHelper.js b/scraper/lib/requestHelper.js deleted file mode 100644 index fce6ea5..0000000 --- a/scraper/lib/requestHelper.js +++ /dev/null @@ -1,24 +0,0 @@ -const UserAgent = require('user-agents'); -const userAgent = new UserAgent(); - -function getRandomUserAgent() { - return userAgent.random().toString(); -} - -function defaultOptionsWithProxy() { - if (process.env.PROXY_HOST && process.env.PROXY_TYPE) { - return { - proxy: { - host: process.env.PROXY_HOST.match(/\/\/(.*):/)[1], - port: process.env.PROXY_HOST.match(/:(\d+)/)[1] - }, - headers: { - 'user-agent': getRandomUserAgent(), - 'proxy-type': process.env.PROXY_TYPE - } - } - } - return { headers: { 'user-agent': getRandomUserAgent() } }; -} - -module.exports = { getRandomUserAgent, defaultOptionsWithProxy }; \ No newline at end of file diff --git a/scraper/lib/torrent.js b/scraper/lib/torrent.js deleted file mode 100644 index 6c53370..0000000 --- a/scraper/lib/torrent.js +++ /dev/null @@ -1,208 +0,0 @@ -const torrentStream = require('torrent-stream'); -const axios = require('axios'); -const parseTorrent = require('parse-torrent'); -const BTClient = require('bittorrent-tracker') -const async = require('async'); -const decode = require('magnet-uri'); -const { Type } = require('./types'); -const { delay } = require('./promises') -const { isVideo, isSubtitle } = require('./extension'); -const { cacheTrackers } = require('./cache'); - -const TRACKERS_URL = 'https://ngosang.github.io/trackerslist/trackers_all.txt'; -const MAX_PEER_CONNECTIONS = process.env.MAX_PEER_CONNECTIONS || 20; -const SEEDS_CHECK_TIMEOUT = 15 * 1000; // 15 secs -const ADDITIONAL_TRACKERS = [ - 'http://tracker.trackerfix.com:80/announce', - 'udp://9.rarbg.me:2780', - 'udp://9.rarbg.to:2870' -]; -const ANIME_TRACKERS = [ - "http://nyaa.tracker.wf:7777/announce", - "udp://anidex.moe:6969/announce", - "udp://tracker-udp.anirena.com:80/announce", - "udp://tracker.uw0.xyz:6969/announce" -]; - -async function updateCurrentSeeders(torrentsInput) { - return new Promise(async (resolve) => { - const torrents = Array.isArray(torrentsInput) ? torrentsInput : [torrentsInput]; - const perTorrentResults = Object.fromEntries(new Map(torrents.map(torrent => [torrent.infoHash, {}]))); - const perTrackerInfoHashes = await Promise.all(torrents.map(torrent => getTorrentTrackers(torrent) - .then(torrentTrackers => ({ infoHash: torrent.infoHash, trackers: torrentTrackers })))) - .then(allTorrentTrackers => allTorrentTrackers - .reduce((allTrackersMap, torrentTrackers) => { - torrentTrackers.trackers.forEach(tracker => - allTrackersMap[tracker] = (allTrackersMap[tracker] || []).concat(torrentTrackers.infoHash)); - return allTrackersMap; - }, {})); - let successCounter = 0; - const callback = () => { - console.log(`Total successful tracker responses: ${successCounter}`) - resolve(perTorrentResults); - } - setTimeout(callback, SEEDS_CHECK_TIMEOUT); - - async.each(Object.keys(perTrackerInfoHashes), function (tracker, ready) { - BTClient.scrape({ infoHash: perTrackerInfoHashes[tracker], announce: tracker }, (error, response) => { - if (response) { - const results = Array.isArray(torrentsInput) ? Object.entries(response) : [[response.infoHash, response]]; - results - .filter(([infoHash]) => perTorrentResults[infoHash]) - .forEach(([infoHash, seeders]) => - perTorrentResults[infoHash][tracker] = [seeders.complete, seeders.incomplete]) - successCounter++; - } else if (error) { - perTrackerInfoHashes[tracker] - .filter(infoHash => perTorrentResults[infoHash]) - .forEach(infoHash => perTorrentResults[infoHash][tracker] = [0, 0, error.message]) - } - ready(); - }) - }, callback); - }).then(perTorrentResults => { - const torrents = Array.isArray(torrentsInput) ? torrentsInput : [torrentsInput]; - torrents.forEach(torrent => { - const results = perTorrentResults[torrent.infoHash]; - const newSeeders = Math.max(...Object.values(results).map(values => values[0]).concat(0)); - if (torrent.seeders !== newSeeders) { - console.log(`Updating seeders for [${torrent.infoHash}] ${torrent.title} - ${torrent.seeders} -> ${newSeeders}`) - torrent.seeders = newSeeders; - } - }) - return torrentsInput; - }); -} - -async function updateTorrentSize(torrent) { - return filesAndSizeFromTorrentStream(torrent, SEEDS_CHECK_TIMEOUT) - .then(result => { - torrent.size = result.size; - torrent.files = result.files; - return torrent; - }); -} - -async function sizeAndFiles(torrent) { - return filesAndSizeFromTorrentStream(torrent, 30000); -} - -async function torrentFiles(torrent, timeout) { - return getFilesFromObject(torrent) - .catch(() => filesFromTorrentFile(torrent)) - .catch(() => filesFromTorrentStream(torrent, timeout)) - .then(files => ({ - contents: files, - videos: filterVideos(files), - subtitles: filterSubtitles(files) - })); -} - -function getFilesFromObject(torrent) { - if (Array.isArray(torrent.files)) { - return Promise.resolve(torrent.files); - } - if (typeof torrent.files === 'function') { - return torrent.files(); - } - return Promise.reject("No files in the object"); -} - -async function filesFromTorrentFile(torrent) { - if (!torrent.torrentLink) { - return Promise.reject(new Error("no torrentLink")); - } - - return axios.get(torrent.torrentLink, { timeout: 10000, responseType: 'arraybuffer' }) - .then((response) => { - if (!response.data || response.status !== 200) { - throw new Error('torrent not found') - } - return response.data - }) - .then((body) => parseTorrent(body)) - .then((info) => info.files.map((file, fileId) => ({ - fileIndex: fileId, - name: file.name, - path: file.path.replace(/^[^\/]+\//, ''), - size: file.length - }))); -} - -async function filesFromTorrentStream(torrent, timeout) { - return filesAndSizeFromTorrentStream(torrent, timeout).then(result => result.files); -} - -function filesAndSizeFromTorrentStream(torrent, timeout = 30000) { - if (!torrent.infoHash && !torrent.magnetLink) { - return Promise.reject(new Error("no infoHash or magnetLink")); - } - const magnet = torrent.magnetLink || decode.encode({ infoHash: torrent.infoHash, announce: torrent.trackers }); - return new Promise((resolve, rejected) => { - const engine = new torrentStream(magnet, { connections: MAX_PEER_CONNECTIONS }); - - engine.ready(() => { - const files = engine.files - .map((file, fileId) => ({ - fileIndex: fileId, - name: file.name, - path: file.path.replace(/^[^\/]+\//, ''), - size: file.length - })); - const size = engine.torrent.length; - - engine.destroy(); - resolve({ files, size }); - }); - setTimeout(() => { - engine.destroy(); - rejected(new Error('No available connections for torrent!')); - }, timeout); - }); -} - -function filterVideos(files) { - if (files.length === 1 && !Number.isInteger(files[0].fileIndex)) { - return files; - } - const videos = files.filter(file => isVideo(file.path)); - const maxSize = Math.max(...videos.map(video => video.size)); - const minSampleRatio = videos.length <= 3 ? 3 : 10; - const minAnimeExtraRatio = 5; - const minRedundantRatio = videos.length <= 3 ? 30 : Number.MAX_VALUE; - const isSample = video => video.path.match(/sample|bonus|promo/i) && maxSize / parseInt(video.size) > minSampleRatio; - const isRedundant = video => maxSize / parseInt(video.size) > minRedundantRatio; - const isExtra = video => video.path.match(/extras?\//i); - const isAnimeExtra = video => video.path.match(/(?:\b|_)(?:NC)?(?:ED|OP|PV)(?:v?\d\d?)?(?:\b|_)/i) - && maxSize / parseInt(video.size) > minAnimeExtraRatio; - const isWatermark = video => video.path.match(/^[A-Z-]+(?:\.[A-Z]+)?\.\w{3,4}$/) - && maxSize / parseInt(video.size) > minAnimeExtraRatio - return videos - .filter(video => !isSample(video)) - .filter(video => !isExtra(video)) - .filter(video => !isAnimeExtra(video)) - .filter(video => !isRedundant(video)) - .filter(video => !isWatermark(video)); -} - -function filterSubtitles(files) { - return files.filter(file => isSubtitle(file.path)); -} - -async function getTorrentTrackers(torrent) { - const magnetTrackers = torrent.magnetLink && decode(torrent.magnetLink).tr || []; - const torrentTrackers = torrent.trackers && torrent.trackers.split(',') || []; - const defaultTrackers = await getDefaultTrackers(torrent); - return Array.from(new Set([].concat(magnetTrackers).concat(torrentTrackers).concat(defaultTrackers))); -} - -async function getDefaultTrackers(torrent, retry = 3) { - return cacheTrackers(() => axios.get(TRACKERS_URL, { timeout: SEEDS_CHECK_TIMEOUT }) - .then(response => response.data && response.data.trim()) - .then(body => body && body.split('\n\n') || [])) - .catch(() => retry > 0 ? delay(5000).then(() => getDefaultTrackers(torrent, retry - 1)) : []) - .then(trackers => trackers.concat(ADDITIONAL_TRACKERS)) - .then(trackers => torrent.type === Type.ANIME ? trackers.concat(ANIME_TRACKERS) : trackers); -} - -module.exports = { updateCurrentSeeders, updateTorrentSize, sizeAndFiles, torrentFiles } diff --git a/scraper/lib/types.js b/scraper/lib/types.js deleted file mode 100644 index 2f37a8e..0000000 --- a/scraper/lib/types.js +++ /dev/null @@ -1,5 +0,0 @@ -exports.Type = { - MOVIE: 'movie', - SERIES: 'series', - ANIME: 'anime' -}; \ No newline at end of file diff --git a/scraper/manual/manual.js b/scraper/manual/manual.js deleted file mode 100644 index b7380d9..0000000 --- a/scraper/manual/manual.js +++ /dev/null @@ -1,145 +0,0 @@ -const Bottleneck = require('bottleneck'); -const { parse } = require('parse-torrent-title'); -const Promises = require('../lib/promises'); -const { mostCommonValue } = require('../lib/promises'); -const repository = require('../lib/repository'); -const { getImdbId, getKitsuId } = require('../lib/metadata'); -const { parseTorrentFiles } = require('../lib/torrentFiles'); -const { createTorrentContents } = require('../lib/torrentEntries'); -const { assignSubtitles } = require('../lib/torrentSubtitles'); -const { Type } = require('../lib/types'); - -const limiter = new Bottleneck({ maxConcurrent: 40 }); - -async function updateMovieCollections() { - const collectionFiles = await repository.getFilesBasedOnTitle('logy') - .then(files => files.filter(file => file.fileIndex === null)) - .then(files => files.filter(file => parse(file.title).complete)); - - collectionFiles.map(original => repository.getTorrent({ infoHash: original.infoHash }) - .then(torrent => parseTorrentFiles({ ...torrent.get(), imdbId: original.imdbId })) - .then(files => Promise.all(files.map(file => { - console.log(file); - return repository.createFile(file) - }))) - .then(createdFiled => { - if (createdFiled && createdFiled.length) { - console.log(`Updated movie collection ${original.title}`); - repository.deleteFile(original) - } else { - console.log(`Failed updating movie collection ${original.title}`); - } - })); -} - -async function reapplySeriesSeasonsSavedAsMovies() { - return repository.getTorrentsBasedOnTitle('(?:[^a-zA-Z0-9]|^)[Ss][012]?[0-9](?:[^0-9]|$)', Type.MOVIE) - .then(torrents => Promise.all(torrents - .filter(torrent => parse(torrent.title).seasons) - .map(torrent => limiter.schedule(() => reapplyEpisodeDecomposing(torrent.infoHash, false) - .then(() => { - torrent.type = Type.SERIES; - return torrent.save(); - }))))) - .then(() => console.log('Finished updating multiple torrents')); -} - -async function reapplyDecomposingToTorrentsOnRegex(regex) { - return repository.getTorrentsBasedOnTitle(regex, Type.ANIME) - .then(torrents => Promise.all(torrents - .map(torrent => limiter.schedule(() => reapplyEpisodeDecomposing(torrent.infoHash, true))))) - .then(() => console.log('Finished updating multiple torrents')); -} - -async function reapplyEpisodeDecomposing(infoHash, includeSourceFiles = true) { - const torrent = await repository.getTorrent({ infoHash }); - const storedFiles = await repository.getFiles({ infoHash }); - const fileIndexMap = storedFiles - .reduce((map, next) => { - const fileIndex = next.fileIndex !== undefined ? next.fileIndex : null; - map[fileIndex] = (map[fileIndex] || []).concat(next); - return map; - }, {}); - const files = includeSourceFiles && Object.values(fileIndexMap) - .map(sameIndexFiles => sameIndexFiles[0]) - .map(file => ({ - fileIndex: file.fileIndex, - name: file.title.replace(/.*\//, ''), - path: file.title, - size: file.size - })); - const kitsuId = undefined; - const imdbId = kitsuId - ? undefined - : mostCommonValue(storedFiles.map(file => file.imdbId)) - || await getImdbId(parse(torrent.title)).catch(() => undefined); - - if (!imdbId && !kitsuId) { - console.log(`imdbId or kitsuId not found: ${torrent.provider} ${torrent.title}`); - return Promise.resolve(); - } - - return parseTorrentFiles({ ...torrent.get(), imdbId, kitsuId, files }) - .then(torrentContents => torrentContents.videos) - .then(newFiles => newFiles.map(file => { - const fileIndex = file.fileIndex !== undefined ? file.fileIndex : null; - const mapping = fileIndexMap[fileIndex]; - if (mapping) { - const originalFile = mapping.shift(); - if (originalFile) { - if (!originalFile.imdbId) { - originalFile.imdbId = file.imdbId - } - originalFile.imdbSeason = file.imdbSeason; - originalFile.imdbEpisode = file.imdbEpisode; - originalFile.kitsuId = file.kitsuId; - originalFile.kitsuEpisode = file.kitsuEpisode; - return originalFile; - } - } - return file; - })) - .then(updatedFiles => Promise.all(updatedFiles - .map(file => file.id ? file.save() : repository.createFile(file)))) - .then(() => console.log(`Updated files for [${torrent.infoHash}] ${torrent.title}`)); -} - -async function assignSubs() { - const unassignedSubs = await repository.getUnassignedSubtitles() - .then(subs => subs.reduce((map, sub) => { - map[sub.infoHash] = (map[sub.infoHash] || []).concat(sub); - return map; - }, {})); - const infoHashes = Object.keys(unassignedSubs); - - return Promise.all(infoHashes.map(async infoHash => { - const videos = await repository.getFiles({ infoHash }); - const subtitles = unassignedSubs[infoHash]; - const assignedContents = assignSubtitles({ videos, subtitles }); - return Promise.all(assignedContents.videos - .filter(video => video.subtitles) - .map(video => repository.upsertSubtitles(video, video.subtitles))); - })); -} - -async function openTorrentContents() { - const limiter = new Bottleneck({ maxConcurrent: 15 }); - const unopenedTorrents = await repository.getNoContentsTorrents(); - - return Promise.all(unopenedTorrents.map(torrent => limiter.schedule(() => createTorrentContents(torrent)))) - .then(() => unopenedTorrents.length === 500 ? openTorrentContents() : Promise.resolve) -} - -// const infoHashes = [ -// ] -// Promises.sequence(infoHashes.map(infoHash => () => reapplyEpisodeDecomposing(infoHash))) -// .then(() => console.log('Finished')); - -//findAllFiles().then(() => console.log('Finished')); -//updateMovieCollections().then(() => console.log('Finished')); -reapplyEpisodeDecomposing('96cc18f564f058384c18b4966a183d81808ce3fb', true).then(() => console.log('Finished')); -//reapplySeriesSeasonsSavedAsMovies().then(() => console.log('Finished')); -//reapplyDecomposingToTorrentsOnRegex('.*Title.*').then(() => console.log('Finished')); -//reapplyManualHashes().then(() => console.log('Finished')); -// assignSubs().then(() => console.log('Finished')); -// openTorrentContents().then(() => console.log('Finished')); \ No newline at end of file diff --git a/scraper/package-lock.json b/scraper/package-lock.json deleted file mode 100644 index 1b2c897..0000000 --- a/scraper/package-lock.json +++ /dev/null @@ -1,4307 +0,0 @@ -{ - "name": "stremio-torrentio", - "version": "1.0.14", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "stremio-torrentio", - "version": "1.0.14", - "license": "MIT", - "dependencies": { - "@putdotio/api-client": "^8.42.0", - "all-debrid-api": "^1.1.0", - "axios": "^1.6.1", - "bottleneck": "^2.19.5", - "cache-manager": "^3.4.4", - "cache-manager-mongodb": "^0.3.0", - "cors": "^2.8.5", - "debrid-link-api": "^1.0.1", - "express-rate-limit": "^6.7.0", - "google-it": "^1.6.4", - "google-sr": "^3.2.1", - "he": "^1.2.0", - "jaro-winkler": "^0.2.8", - "magnet-uri": "^6.2.0", - "name-to-imdb": "^3.0.4", - "named-queue": "^2.2.1", - "needle": "^3.3.1", - "node-schedule": "^2.1.1", - "nodejs-bing": "^0.1.0", - "nyaapi": "^2.4.4", - "offcloud-api": "^1.0.2", - "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", - "pg": "^8.11.3", - "pg-hstore": "^2.3.4", - "premiumize-api": "^1.0.3", - "prom-client": "^12.0.0", - "real-debrid-api": "git://github.com/TheBeastLT/node-real-debrid.git#d1f7eaa8593b947edbfbc8a92a176448b48ef445", - "request-ip": "^3.3.0", - "router": "^1.3.8", - "rss-parser": "^3.13.0", - "sequelize": "^6.31.1", - "stremio-addon-sdk": "^1.6.10", - "sugar-date": "^2.0.6", - "swagger-stats": "^0.99.7", - "torrent-stream": "^1.2.1", - "ua-parser-js": "^1.0.36", - "user-agents": "^1.0.1444" - } - }, - "node_modules/@putdotio/api-client": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@putdotio/api-client/-/api-client-8.42.0.tgz", - "integrity": "sha512-LaFaPMOO8WbvwzUlvuzBcBH9aSpqZIkA6MuoKJPNZ293kFSMZPyXkE/VddVXPNq0f5sp7HzdueCMIPOxcom9hg==", - "dependencies": { - "axios": "^0.21.1", - "event-emitter": "^0.3.5", - "js-base64": "2.6.3", - "qs": "^6.10.3", - "urijs": "^1.19.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@putdotio/api-client/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", - "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" - }, - "node_modules/@types/validator": { - "version": "13.7.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.3.tgz", - "integrity": "sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/addr-to-ip-port": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz", - "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg==" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/all-debrid-api": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/all-debrid-api/-/all-debrid-api-1.1.0.tgz", - "integrity": "sha512-p6Z8M9UBGkEZK2/qJ2YHBPDyDGW1CEZQ+GCp8IQb4UlC/9GIUgeRPjh2ohoAIBPn3gs6hPvZ8wIVS04lJ3SuHA==", - "dependencies": { - "request": "^2.83.0" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" - }, - "node_modules/axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bencode": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/bencode/-/bencode-0.7.0.tgz", - "integrity": "sha512-MG5AM/hkQIZoz/layZ1JK3xBTfqkLcJ3dJ7u2lx+6vZT1JWyK3OgEFGx1WFzWt6grGH6OSGQvRcCnhWKLp4f1Q==" - }, - "node_modules/bep53-range": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-1.1.1.tgz", - "integrity": "sha512-ct6s33iiwRCUPp9KXnJ4QMWDgHIgaw36caK/5XEQ9L8dCzSQlJt1Vk6VmHh1VD4AlGCAI4C2zmtfItifBBPrhQ==" - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" - }, - "node_modules/bitfield": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-0.1.0.tgz", - "integrity": "sha512-M15ypXCxXd81FSOWL2ejHpB1TDKmz7Y55/VuqfExJi72sHW0JzE5dfV+hrSZafZtWRg/tdMsdte5dgwrlOM7nA==" - }, - "node_modules/bittorrent-dht": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-6.4.2.tgz", - "integrity": "sha512-DeBunF1nL/ckThYyU3AVtHFR195zNV06Ob6bKNXA1y6X56GSKMfkNCABB45YcbZevGMW1dytFlm59D/fws5lTg==", - "dependencies": { - "bencode": "^0.7.0", - "buffer-equals": "^1.0.3", - "debug": "^2.2.0", - "inherits": "^2.0.1", - "k-bucket": "^0.6.0", - "k-rpc": "^3.6.0", - "lru": "^2.0.0" - } - }, - "node_modules/bittorrent-tracker": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-7.7.0.tgz", - "integrity": "sha512-YFgPTVRhUMncZr8tM3ige7gnViMGhKoGF23qaiISRG8xtYebTGHrMSMXsTXo6O1KbtdEI+4jzvGY1K/wdT9GUA==", - "dependencies": { - "bencode": "^0.8.0", - "bn.js": "^4.4.0", - "compact2string": "^1.2.0", - "debug": "^2.0.0", - "hat": "0.0.3", - "inherits": "^2.0.1", - "ip": "^1.0.1", - "minimist": "^1.1.1", - "once": "^1.3.0", - "random-iterate": "^1.0.1", - "run-parallel": "^1.1.2", - "run-series": "^1.0.2", - "simple-get": "^2.0.0", - "simple-peer": "^6.0.0", - "simple-websocket": "^4.0.0", - "string2compact": "^1.1.1", - "uniq": "^1.0.1", - "ws": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "bittorrent-tracker": "bin/cmd.js" - } - }, - "node_modules/bittorrent-tracker/node_modules/bencode": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/bencode/-/bencode-0.8.0.tgz", - "integrity": "sha512-MWs3FqaWOGg5l+quIT9JTx7+SlcMbfPqqpWy+GOYi5rjZkX8i03tkNhAQn3pD2GAKENPpP3ScUR97ZUMffhHZA==" - }, - "node_modules/bittorrent-tracker/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bittorrent-tracker/node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - }, - "node_modules/bittorrent-tracker/node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bittorrent-tracker/node_modules/simple-get": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", - "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", - "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/bncode": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/bncode/-/bncode-0.5.3.tgz", - "integrity": "sha512-0P5VuWobU5Gwbeio8n9Jsdv0tE1IikrV9n4f7RsnXHNtxmdd/oeIO6QyoSEUAEyo5P6i3XMfBppi82WqNsT4JA==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-equals": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz", - "integrity": "sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-manager": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", - "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", - "dependencies": { - "async": "3.2.3", - "lodash.clonedeep": "^4.5.0", - "lru-cache": "6.0.0" - } - }, - "node_modules/cache-manager-mongodb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/cache-manager-mongodb/-/cache-manager-mongodb-0.3.0.tgz", - "integrity": "sha512-r+piWvu8XD8ceBWflZBEQZKemksoaL1V5zSHWyviVTXiGBSVQAf18b4S1v5UwGZMJnrMk8YNFgpBlugF0nuhvg==", - "dependencies": { - "bluebird": "^3.5.3", - "cache-manager": "^2.9.0", - "lodash": "^4.17.15", - "mongodb": "^3.6.3" - } - }, - "node_modules/cache-manager-mongodb/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - }, - "node_modules/cache-manager-mongodb/node_modules/cache-manager": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", - "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", - "dependencies": { - "async": "1.5.2", - "lodash.clonedeep": "4.5.0", - "lru-cache": "4.0.0" - } - }, - "node_modules/cache-manager-mongodb/node_modules/lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha512-WKhDkjlLwzE8jAQdQlsxLUQTPXLCKX/4cJk6s5AlRtJkDBk0IKH5O51bVDH61K9N4bhbbyvLM6EiOuE8ovApPA==", - "dependencies": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "node_modules/cache-manager-mongodb/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chrome-dgram": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", - "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "inherits": "^2.0.4", - "run-series": "^1.1.9" - } - }, - "node_modules/chrome-dns": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz", - "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==", - "dependencies": { - "chrome-net": "^3.3.2" - } - }, - "node_modules/chrome-net": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz", - "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "inherits": "^2.0.1" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/compact2string": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", - "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", - "dependencies": { - "ipaddr.js": ">= 0.1.5" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", - "dependencies": { - "luxon": "^3.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cyclist": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.1.1.tgz", - "integrity": "sha512-w8a8nQk9YSCkMmH2wDbFqpH1XMz7l409mSvWnnG6Iu6D0Ydhvq61XASE7QIaA46FxfG2Ag524ZuGgAy2cXPfsw==" - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debrid-link-api": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debrid-link-api/-/debrid-link-api-1.0.1.tgz", - "integrity": "sha512-8b15xUosQ64v1wcN1cGSvt4YXm4dw7gi5hOvqPDOtvsEtlaH2pp/BdjS9/oUh866bPirFVzXrjnIwVK4dRsm3g==", - "dependencies": { - "request": "^2.83.0" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deepmerge-ts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", - "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dottie": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", - "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-rate-limit": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", - "integrity": "sha512-vhwIdRoqcYB/72TK3tRZI+0ttS8Ytrk24GfmsxDXK9o9IhHNO5bXRiXQSExPQ4GbaE5tvIS7j1SGrxsuWs+sGA==", - "engines": { - "node": ">= 12.9.0" - }, - "peerDependencies": { - "express": "^4 || ^5" - } - }, - "node_modules/ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dependencies": { - "type": "^2.0.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fifo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/fifo/-/fifo-0.1.4.tgz", - "integrity": "sha512-CpKgwraLo4YWY9cUEICNJ1WcOVR2WE1Jvot3Nvr7FGBiGOKgkn1CmF4zuCl9VxvEh1nQsdYXtQg+V0etPiED6g==" - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/flatten": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-0.0.1.tgz", - "integrity": "sha512-pzNZh42/A2HmcRIpddSP0T+zBofd119o5rNB2u1YHv36CM2C/ietI2ZsjWZ2LSL7J0BNVkFn1a9Ad+cmO2lDQg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "engines": { - "node": "*" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-chunk-store": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-1.7.0.tgz", - "integrity": "sha512-KhjJmZAs2eqfhCb6PdPx4RcZtheGTz86tpTC5JTvqBn/xda+Nb+0C7dCyjOSN7T76H6a56LvH0SVXQMchLXDRw==", - "dependencies": { - "mkdirp": "^0.5.1", - "random-access-file": "^2.0.1", - "randombytes": "^2.0.3", - "rimraf": "^2.4.2", - "run-parallel": "^1.1.2", - "thunky": "^1.0.1" - } - }, - "node_modules/fs-chunk-store/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-browser-rtc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", - "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/google-it": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/google-it/-/google-it-1.6.4.tgz", - "integrity": "sha512-iM/31cWQ0wLcBngHSR3l6OwtkqYP93kiQWF74YqyHte/sJ5BFQ60IzCckuetu0LH4//mxYqFlH30nhNuBX/udw==", - "dependencies": { - "cheerio": "^1.0.0-rc.11", - "colors": "^1.4.0", - "command-line-args": "^5.0.0", - "ora": "^4.0.3", - "request": "^2.88.0" - }, - "bin": { - "google-it": "lib/app.js" - } - }, - "node_modules/google-sr": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/google-sr/-/google-sr-3.2.1.tgz", - "integrity": "sha512-1WGy6mxMTKo+jbIrmq1mwm+2Egvmx9ttsXzCiR0Y2LMcpeG4shqc8C4g12msi4arRn9qEwG1qrFQ1W9jo3dDzw==", - "dependencies": { - "axios": "^1.4.0", - "cheerio": "1.0.0-rc.12", - "deepmerge-ts": "^5.1.0", - "google-sr-selectors": "^0.0.2", - "tslib": "^2.6.1" - } - }, - "node_modules/google-sr-selectors": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/google-sr-selectors/-/google-sr-selectors-0.0.2.tgz", - "integrity": "sha512-7h+vo7NSDf+pZB/InDon4mwhXeTvy/9yvAChGnjppcdHgTwlUWDpYPWGUn781J3PrjBj6rZAginsSTGqG5uUZw==" - }, - "node_modules/google-sr/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hat": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz", - "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==", - "engines": { - "node": "*" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immediate-chunk-store": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-1.0.8.tgz", - "integrity": "sha512-0tQyTytUaIUskpv5j5L5ZeQuEjYDl9QIekwDUisdqpAM81OZjBaEIriW7hoiRLaLNxj1fXE8e1yx5JaCGrrE7A==" - }, - "node_modules/inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/ip-set": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-1.0.2.tgz", - "integrity": "sha512-Mb6kv78bTi4RNAIIWL8Bbre7hXOR2pNUi3j8FaQkLaitf/ZWxkq3/iIwXNYk2ACO3IMfdVdQrOkUtwZblO7uBA==", - "dependencies": { - "ip": "^1.1.3" - } - }, - "node_modules/ip-set/node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/jaro-winkler": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/jaro-winkler/-/jaro-winkler-0.2.8.tgz", - "integrity": "sha512-yr+mElb6dWxA1mzFu0+26njV5DWAQRNTi5pB6fFMm79zHrfAs3d0qjhe/IpZI4AHIUJkzvu5QXQRWOw2O0GQyw==" - }, - "node_modules/js-base64": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", - "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/k-bucket": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-0.6.0.tgz", - "integrity": "sha512-1zJpqkrLYgolqdO1TE1/FWf+mHfhJKLC2Wpi4JaMFZKi4b6tFEn9/d+JqscBIJw5auWFewp16CSAEetFGEC4NQ==", - "dependencies": { - "buffer-equal": "0.0.1", - "inherits": "^2.0.1" - } - }, - "node_modules/k-rpc": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-3.7.0.tgz", - "integrity": "sha512-XFL8PatIToQ/qhSSAq9FSK73wk4fX4DcHqjnkvSCrWC59PV02Oj1KeYa3KnREAXgA1DlCSzcKjk7M8usnT/dUw==", - "dependencies": { - "buffer-equals": "^1.0.3", - "k-bucket": "^2.0.0", - "k-rpc-socket": "^1.5.0" - } - }, - "node_modules/k-rpc-socket": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz", - "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==", - "dependencies": { - "bencode": "^2.0.0", - "chrome-dgram": "^3.0.2", - "chrome-dns": "^1.0.0", - "chrome-net": "^3.3.2" - } - }, - "node_modules/k-rpc-socket/node_modules/bencode": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", - "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==" - }, - "node_modules/k-rpc/node_modules/k-bucket": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-2.0.1.tgz", - "integrity": "sha512-Xuye90xBBDJJbvNSuy3z/Yl8ceVX02/sopqGUEwJkMgRw+//TQXx0/Hbgp60GsoVfZcCBllQXXp6AWe2INu8pw==", - "dependencies": { - "buffer-equal": "0.0.1", - "randombytes": "^2.0.3" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" - }, - "node_modules/lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" - }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" - }, - "node_modules/lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==" - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==" - }, - "node_modules/lru": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lru/-/lru-2.0.1.tgz", - "integrity": "sha512-JGRd3IHM64MPsGVw1Mqbz2Y2HDIePqi/MLfPtdrkHQwvvJnSrS9b6gM3KS9PFR5xJnufXJczHHZSmGqfuII1ew==", - "dependencies": { - "inherits": "^2.0.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/luxon": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/magnet-uri": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-6.2.0.tgz", - "integrity": "sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "bep53-range": "^1.1.0", - "thirty-two": "^1.0.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz", - "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mongodb": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.3.tgz", - "integrity": "sha512-Psm+g3/wHXhjBEktkxXsFMZvd3nemI0r3IPsE0bU+4//PnvNWKkzhZcEsbPcYiWqe8XqXJJEg4Tgtr7Raw67Yw==", - "dependencies": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.1.8", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4" - }, - "optionalDependencies": { - "saslprep": "^1.0.0" - }, - "peerDependenciesMeta": { - "aws4": { - "optional": true - }, - "bson-ext": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "mongodb-extjson": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "node_modules/name-to-imdb": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/name-to-imdb/-/name-to-imdb-3.0.4.tgz", - "integrity": "sha512-OVmDvWoAZso2eHxK51UK7TMIpUpM4LnI3KhvvZe+JkDatEda9WS3/YXZVQnand5skI38shoniOFcyrw08QsNeA==", - "dependencies": { - "diacritics": "~1.3.0", - "named-queue": "^2.1.0", - "needle": "^1.1.2", - "node-fetch": "^2.2.0" - } - }, - "node_modules/name-to-imdb/node_modules/needle": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", - "integrity": "sha512-ogVK1D/Cgemw2vM1KJN6B83DwcKbDepdkMNtVJcXIe+xoaCOdC+aJHzhEov7xjsY9S7rBIuHP59W1fLsbGqDhA==", - "dependencies": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/named-queue": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/named-queue/-/named-queue-2.2.1.tgz", - "integrity": "sha1-GBRURVNZnVqeQD0N+pN6TODR5qc=" - }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-schedule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", - "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", - "dependencies": { - "cron-parser": "^4.2.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/nodejs-bing": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/nodejs-bing/-/nodejs-bing-0.1.0.tgz", - "integrity": "sha512-q0QD8LB8e4GyHBfqPiyM+xWqCAu2zx3gDNN5VoPttE/nYgY9eFjCQRfe+KkG+ZAf60jBVb6BdEpeTEO/V6bTPg==", - "dependencies": { - "cheerio": "^0.22.0", - "request": "^2.79.0", - "request-promise": "^4.1.1", - "urlencode": "^1.1.0" - } - }, - "node_modules/nodejs-bing/node_modules/cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nodejs-bing/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/nodejs-bing/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/nodejs-bing/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/nodejs-bing/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/nodejs-bing/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/nodejs-bing/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/nodejs-bing/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/nodejs-bing/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/nodejs-bing/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/nodejs-bing/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nyaapi": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/nyaapi/-/nyaapi-2.4.4.tgz", - "integrity": "sha512-GWdytUu/s2Ci647Kl+iWJYVNY2n9TOo4A6a/Gu1sFCHJy26zIzdRkSvW217uKY03XQEZhhJWyXqMoT0klywFXw==", - "dependencies": { - "axios": "^0.23.0", - "cheerio": "^1.0.0-rc.3", - "form-data": "^3.0.0", - "lodash.omit": "^4.5.0" - } - }, - "node_modules/nyaapi/node_modules/axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, - "node_modules/nyaapi/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/offcloud-api": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/offcloud-api/-/offcloud-api-1.0.2.tgz", - "integrity": "sha512-KOxDX+QIUcI/JEwoXoRGK7P+RygSsmCOta/6bEtKeBMc9CDEnb9xgGNDjDFYCxm6U8rvaOhF9NA02i3EisH9Pw==", - "dependencies": { - "request": "^2.83.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optional-require": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", - "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", - "dependencies": { - "require-at": "^1.0.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ora": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", - "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", - "dependencies": { - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "node_modules/parse-torrent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-4.1.0.tgz", - "integrity": "sha512-FeoGe8bOYmSzxO31kYy44A03FjuULCMOIMom8KyuGvO8/lLVPJyo2nr9CwH/iYmNHm74hk7h70o59DOfk9Rq+A==", - "dependencies": { - "magnet-uri": "^4.0.0", - "parse-torrent-file": "^2.0.0" - }, - "bin": { - "parse-torrent": "bin/cmd.js" - } - }, - "node_modules/parse-torrent-file": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/parse-torrent-file/-/parse-torrent-file-2.1.4.tgz", - "integrity": "sha512-u2MgLOjZPDDer1oRg1c+H/+54iIQYY5TKgQ5G8KrGLT1Dcwdo7Lj+QfQR123+u8J0AMSFGbQUvsBlSB7uIJcCA==", - "deprecated": "Use the parse-torrent package instead", - "dependencies": { - "bencode": "^0.7.0", - "simple-sha1": "^2.0.0" - }, - "bin": { - "parse-torrent-file": "bin/cmd.js" - } - }, - "node_modules/parse-torrent-title": { - "version": "1.3.0", - "resolved": "git+ssh://git@github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", - "integrity": "sha512-Ja7OfUtTb5UKvcjHLh/va3LGZdE/CiJP6it8lxPWf/N9+4aq1hQGwXw1dnJss5dIINQo4ufyDnT2mOIP+ii/pA==", - "license": "MIT", - "dependencies": { - "moment": "^2.24.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/parse-torrent/node_modules/magnet-uri": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-4.2.3.tgz", - "integrity": "sha512-aHhR49CRBOq3BX6jQOBdGMXhNT2+9LIH3CCIwHlR+aFE8nWMfBD1aNYxfm2u2LsCOwvfPeyCsdIg9KXSwdsOLQ==", - "dependencies": { - "flatten": "0.0.1", - "thirty-two": "^0.0.2", - "xtend": "^4.0.0" - } - }, - "node_modules/parse-torrent/node_modules/thirty-two": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-0.0.2.tgz", - "integrity": "sha512-0j1A9eqbP8dSEtkqqEJGpYFN2lPgQR1d0qKS2KNAmIxkK6gV37D5hRa5b/mYzVL1fyAVWBkeUDIXybZdCLVBzA==", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/peer-wire-protocol": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/peer-wire-protocol/-/peer-wire-protocol-0.7.1.tgz", - "integrity": "sha512-V9oTa/ZcfNNz9fAST28Gg0fXbPeFPk3SBImsYO8GDDG5D0E195vxXmjZ+SPrzr4BJyMQmdDmwUfTf9MZ62z4mw==", - "dependencies": { - "bitfield": "^0.1.0", - "bncode": "^0.2.3", - "buffer-alloc": "^1.1.0", - "buffer-from": "^1.0.0", - "readable-stream": "^1.0.2", - "speedometer": "^0.1.2" - } - }, - "node_modules/peer-wire-protocol/node_modules/bncode": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/bncode/-/bncode-0.2.3.tgz", - "integrity": "sha512-IXGfySD68R/J2X/it8GZqAM+Vb3ByZvAlUi0Gysq4ZACq6hXGQ3YshKo0QS/f3S9wOWKjJnEjP6x3ELxqBnAOA==" - }, - "node_modules/peer-wire-protocol/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/peer-wire-protocol/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/peer-wire-protocol/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/peer-wire-swarm": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/peer-wire-swarm/-/peer-wire-swarm-0.12.2.tgz", - "integrity": "sha512-sIWZ1nTL9l6mI9J18kW1AeByBwagvNzGJlMmQA9pM+otKQtTIwnigK8SR0nEFrNZYqZelI6RQ6g4udvtQ2TI1g==", - "dependencies": { - "buffer-from": "^1.0.0", - "fifo": "^0.1.4", - "once": "^1.1.1", - "peer-wire-protocol": "^0.7.0", - "speedometer": "^0.1.2", - "utp": "0.0.7" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "node_modules/pg": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", - "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.6.2", - "pg-pool": "^3.6.1", - "pg-protocol": "^1.6.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.1.1" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" - }, - "node_modules/pg-hstore": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.4.tgz", - "integrity": "sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA==", - "dependencies": { - "underscore": "^1.13.1" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", - "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", - "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", - "dependencies": { - "split2": "^3.1.1" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/premiumize-api": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/premiumize-api/-/premiumize-api-1.0.3.tgz", - "integrity": "sha512-WwJhgmwrKrFFtfjU2EMAaYv602xbe52oaGEwVJXO3z0LZQZ8Cogk9MBADcT0hrFf8MuI7zn5cPMxcJRJPr9cMQ==", - "dependencies": { - "request": "^2.83.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", - "dependencies": { - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/random-access-file": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.2.1.tgz", - "integrity": "sha512-RGU0xmDqdOyEiynob1KYSeh8+9c9Td1MJ74GT1viMEYAn8SJ9oBtWCXLsYZukCF46yududHOdM449uRYbzBrZQ==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "random-access-storage": "^1.1.1" - } - }, - "node_modules/random-access-storage": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.4.3.tgz", - "integrity": "sha512-D5e2iIC5dNENWyBxsjhEnNOMCwZZ64TARK6dyMN+3g4OTC4MJxyjh9hKLjTGoNhDOPrgjI+YlFEHFnrp/cSnzQ==", - "dependencies": { - "events": "^3.3.0", - "inherits": "^2.0.3", - "queue-tick": "^1.0.0" - } - }, - "node_modules/random-iterate": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", - "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/re-emitter": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", - "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==" - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/real-debrid-api": { - "version": "1.0.1", - "resolved": "git+ssh://git@github.com/TheBeastLT/node-real-debrid.git#d1f7eaa8593b947edbfbc8a92a176448b48ef445", - "integrity": "sha512-P4eoA7/wvDM6/l06OZYX4CBnIzsTNwebdS6fZ4u6LZ3fcJqTzWz3D63xBDZmfcOca/OeUN4ncFld+KxvrNr0oA==", - "license": "MIT", - "dependencies": { - "request": "^2.83.0" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-ip": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", - "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" - }, - "node_modules/request-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", - "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", - "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/router": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/router/-/router-1.3.8.tgz", - "integrity": "sha512-461UFH44NtSfIlS83PUg2N7OZo86BC/kB3dY77gJdsODsBhhw7+2uE0tzTINxrY9CahCUVk1VhpWCA5i1yoIEg==", - "dependencies": { - "array-flatten": "3.0.0", - "debug": "2.6.9", - "methods": "~1.1.2", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "setprototypeof": "1.2.0", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router/node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, - "node_modules/rss-parser": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.13.0.tgz", - "integrity": "sha512-7jWUBV5yGN3rqMMj7CZufl/291QAhvrrGpDNE4k/02ZchL0npisiYYqULF71jCEKoIiHvK/Q2e6IkDwPziT7+w==", - "dependencies": { - "entities": "^2.0.3", - "xml2js": "^0.5.0" - } - }, - "node_modules/rss-parser/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dependencies": { - "is-promise": "^2.1.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-series": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", - "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/rusha": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", - "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" - }, - "node_modules/rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/sequelize": { - "version": "6.31.1", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.31.1.tgz", - "integrity": "sha512-cahWtRrYLjqoZP/aurGBoaxn29qQCF4bxkAUPEQ/ozjJjt6mtL4Q113S3N39mQRmX5fgxRbli+bzZARP/N51eg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/sequelize/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-peer": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-6.4.4.tgz", - "integrity": "sha512-sY35UHankz0ba02Dd8YzdyXhEeTAnW6ZUyDfKOSwUht1GLp9VuMT4jQUXF/wG7C9vpwvitV7Ig7a6IkY/qizwg==", - "dependencies": { - "debug": "^2.1.0", - "get-browser-rtc": "^1.0.0", - "inherits": "^2.0.1", - "randombytes": "^2.0.3", - "readable-stream": "^2.0.5" - } - }, - "node_modules/simple-sha1": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-2.1.2.tgz", - "integrity": "sha512-TQl9rm4rdKAVmhO++sXAb8TNN0D6JAD5iyI1mqEPNpxUzTRrtm4aOG1pDf/5W/qCFihiaoK6uuL9rvQz1x1VKw==", - "dependencies": { - "rusha": "^0.8.1" - } - }, - "node_modules/simple-websocket": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-4.3.1.tgz", - "integrity": "sha512-knEO6ub2Pw00c7ueOV6snKE1hr7jIdY068+239v0I8DVKofyd7IQmYHXrM9pZL1zuI0H7sd+Y5kedndBi5GXIA==", - "dependencies": { - "debug": "^2.1.3", - "inherits": "^2.0.1", - "randombytes": "^2.0.3", - "readable-stream": "^2.0.5", - "ws": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/simple-websocket/node_modules/safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha512-cr7dZWLwOeaFBLTIuZeYdkfO7UzGIKhjYENJFAxUOMKWGaWDm2nJM2rzxNRm5Owu0DH3ApwNo6kx5idXZfb/Iw==" - }, - "node_modules/simple-websocket/node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "node_modules/simple-websocket/node_modules/ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha512-61a+9LgtYZxTq1hAonhX8Xwpo2riK4IOR/BIVxioFbCfc3QFKmpE4x9dLExfLHKtUfVZigYa36tThVhO57erEw==", - "dependencies": { - "safe-buffer": "~5.0.1", - "ultron": "~1.1.0" - } - }, - "node_modules/sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha512-phdEoDlA6EUIVtzwq1UiNMXDUogczp204aYF/yfOhjNePWFfIpBJ1k5wLMuXQhEOOMjuTJEcc4vdZa+vuP+n/Q==" - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stremio-addon-linter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/stremio-addon-linter/-/stremio-addon-linter-1.7.0.tgz", - "integrity": "sha512-ck1L1Wp2qvAhvXLj+4Lq1XRn8K3r2gx1i/f+e1W6K0+Et/oIYYDmaIVoh3SvExiNbCBcbJjH9WWEeDYKoqaMqQ==", - "dependencies": { - "semver": "^5.5.0" - } - }, - "node_modules/stremio-addon-sdk": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/stremio-addon-sdk/-/stremio-addon-sdk-1.6.10.tgz", - "integrity": "sha512-+U/lDGv73JPZa7OOy8eMb+SkUFhnHuZGBRXuKNeXcz706oDdwC/sQe9r8Wxw2A7Cw05+f/CQIJSl4zIcmKBkGg==", - "dependencies": { - "chalk": "^2.4.2", - "cors": "^2.8.4", - "express": "^4.16.3", - "inquirer": "^6.2.2", - "mkdirp": "^0.5.1", - "node-fetch": "^2.3.0", - "opn": "^5.4.0", - "router": "^1.3.3", - "stremio-addon-linter": "^1.7.0" - }, - "bin": { - "addon-bootstrap": "cli/bootstrap.js" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string2compact": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-1.3.2.tgz", - "integrity": "sha512-3XUxUgwhj7Eqh2djae35QHZZT4mN3fsO7kagZhSGmhhlrQagVvWSFuuFIWnpxFS0CdTB2PlQcaL16RDi14I8uw==", - "dependencies": { - "addr-to-ip-port": "^1.0.1", - "ipaddr.js": "^2.0.0" - } - }, - "node_modules/string2compact/node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/sugar-core": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/sugar-core/-/sugar-core-2.0.6.tgz", - "integrity": "sha512-YmLFysR3Si6RImqL1+aB6JH81EXxvXn5iXhPf2PsjfoUYEwCxFDYCQY+zC3WqviuGWzxFaSkkJvkUE05Y03L5Q==", - "engines": { - "node": ">= 0.8.23" - } - }, - "node_modules/sugar-date": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/sugar-date/-/sugar-date-2.0.6.tgz", - "integrity": "sha512-5aPXcTl9pIgae3j8wOieRZOEbaowHHpL+MPgZwHHjXdhZz3FjzpacjzM+Aq7rZTjDsWyWuKHzkIALx2uUhnmyg==", - "dependencies": { - "sugar-core": "^2.0.0" - }, - "engines": { - "node": ">= 0.8.23" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swagger-stats": { - "version": "0.99.7", - "resolved": "https://registry.npmjs.org/swagger-stats/-/swagger-stats-0.99.7.tgz", - "integrity": "sha512-niP70m99Cwpz/Fyfk8ydul1jM0pOKD6UofSaDzW2Op6o6WYFsuAl/BhVbmLkZWOAZ7IloDVvFj6vaU5zA0xydg==", - "dependencies": { - "axios": "^1.4.0", - "basic-auth": "^2.0.1", - "cookies": "^0.8.0", - "debug": "^4.3.4", - "moment": "^2.29.4", - "path-to-regexp": "^6.2.1", - "qs": "^6.11.2", - "send": "^0.18.0", - "uuid": "^9.0.0" - }, - "peerDependencies": { - "prom-client": ">= 10 <= 14" - } - }, - "node_modules/swagger-stats/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/swagger-stats/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/swagger-stats/node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" - }, - "node_modules/swagger-stats/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swagger-stats/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/thirty-two": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", - "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno=", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "node_modules/torrent-discovery": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-5.4.0.tgz", - "integrity": "sha512-bPTDIA7XEjRlw6vQyt7kM/h1mg1INBsibjbujISITonx4POENZgxfyCSEXZpDhbAkluSPH4HKRKs4/YTmNLC6w==", - "dependencies": { - "bittorrent-dht": "^6.0.0", - "bittorrent-tracker": "^7.0.0", - "debug": "^2.0.0", - "inherits": "^2.0.1", - "re-emitter": "^1.0.0", - "run-parallel": "^1.1.2", - "xtend": "^4.0.0" - } - }, - "node_modules/torrent-piece": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-1.1.2.tgz", - "integrity": "sha512-ElXPyXKKG73o+uziHJ8qlYE9EuyDVxnK2zWL+pW/2bma7RsLpSwFFIJAb8Qui7/tel2hsHQW1z3zBnfQNREpWA==" - }, - "node_modules/torrent-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/torrent-stream/-/torrent-stream-1.2.1.tgz", - "integrity": "sha512-F+3tYmXnpO2gyhZQ7o8yakELJH3FtKISI/FU0iWvchOWFUXiFnjbEBoumSzfcK1P71Qxzx2az4lVK4Dkq4KSew==", - "dependencies": { - "bitfield": "^0.1.0", - "bncode": "^0.5.2", - "buffer-from": "^1.0.0", - "end-of-stream": "^0.1.4", - "fs-chunk-store": "^1.3.0", - "hat": "0.0.3", - "immediate-chunk-store": "^1.0.5", - "ip-set": "^1.0.0", - "mkdirp": "^0.3.5", - "parse-torrent": "^4.0.0", - "peer-wire-swarm": "^0.12.0", - "rimraf": "^2.2.5", - "torrent-discovery": "^5.2.0", - "torrent-piece": "^1.0.0" - } - }, - "node_modules/torrent-stream/node_modules/end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha512-go5TQkd0YRXYhX+Lc3UrXkoKU5j+m72jEP5lHWr2Nh82L8wfZtH8toKgcg4T10o23ELIMGXQdwCbl+qAXIPDrw==", - "dependencies": { - "once": "~1.3.0" - } - }, - "node_modules/torrent-stream/node_modules/mkdirp": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)" - }, - "node_modules/torrent-stream/node_modules/once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/torrent-stream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", - "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==" - }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" - }, - "node_modules/urlencode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/urlencode/-/urlencode-1.1.0.tgz", - "integrity": "sha512-OOAOh9owHXr/rCN1tteSnYwIvsrGHamSz0hafMhmQa7RcS4+Ets6/2iVClVGjt9jkDW84UqoMw/Gmpc7QolX6A==", - "dependencies": { - "iconv-lite": "~0.4.11" - } - }, - "node_modules/user-agents": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.1.9.tgz", - "integrity": "sha512-XxKEWX2bHJzPjvUPRAtw+oPQchReLaR1s59iO/RhBA2TfLLgLUsFvz5MupsejqFfuhXZmZRH8t3kHBvS0ctzGg==", - "dependencies": { - "lodash.clonedeep": "^4.5.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/utp": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/utp/-/utp-0.0.7.tgz", - "integrity": "sha512-2ZLjisH0HQkpqZTg2m7TK0Yn7TETTg7DxM0EpCKIIIV2ky9w9nSxW5a7gzdk4nH2h+pomrrGw0uywrUJfsm2eA==", - "dependencies": { - "cyclist": "~0.1.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "dependencies": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/scraper/package.json b/scraper/package.json deleted file mode 100644 index 06bfc53..0000000 --- a/scraper/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "stremio-torrentio", - "version": "1.0.14", - "exports": "./index.js", - "type": "commonjs", - "scripts": { - "start": "node index.js" - }, - "author": "TheBeastLT ", - "license": "MIT", - "dependencies": { - "@putdotio/api-client": "^8.42.0", - "all-debrid-api": "^1.1.0", - "axios": "^1.6.1", - "bottleneck": "^2.19.5", - "cache-manager": "^3.4.4", - "cache-manager-mongodb": "^0.3.0", - "cors": "^2.8.5", - "debrid-link-api": "^1.0.1", - "express-rate-limit": "^6.7.0", - "google-it": "^1.6.4", - "google-sr": "^3.2.1", - "he": "^1.2.0", - "jaro-winkler": "^0.2.8", - "magnet-uri": "^6.2.0", - "name-to-imdb": "^3.0.4", - "named-queue": "^2.2.1", - "needle": "^3.3.1", - "node-schedule": "^2.1.1", - "nodejs-bing": "^0.1.0", - "nyaapi": "^2.4.4", - "offcloud-api": "^1.0.2", - "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", - "pg": "^8.11.3", - "pg-hstore": "^2.3.4", - "premiumize-api": "^1.0.3", - "prom-client": "^12.0.0", - "real-debrid-api": "git://github.com/TheBeastLT/node-real-debrid.git#d1f7eaa8593b947edbfbc8a92a176448b48ef445", - "request-ip": "^3.3.0", - "router": "^1.3.8", - "rss-parser": "^3.13.0", - "sequelize": "^6.31.1", - "stremio-addon-sdk": "^1.6.10", - "sugar-date": "^2.0.6", - "swagger-stats": "^0.99.7", - "torrent-stream": "^1.2.1", - "ua-parser-js": "^1.0.36", - "user-agents": "^1.0.1444" - } -} diff --git a/scraper/scheduler/scheduler.js b/scraper/scheduler/scheduler.js deleted file mode 100644 index b9816a5..0000000 --- a/scraper/scheduler/scheduler.js +++ /dev/null @@ -1,14 +0,0 @@ -const { scheduleScraping, scrapeAll } = require('./scraper') -const { scheduleUpdateSeeders, scheduleUpdateSeedersForNewTorrents } = require('./seeders') - -function startScraper() { - if (process.env.ENABLE_SCHEDULING) { - scheduleScraping(); - scheduleUpdateSeeders(); - scheduleUpdateSeedersForNewTorrents(); - } else { - scrapeAll() - } -} - -module.exports = { startScraper } \ No newline at end of file diff --git a/scraper/scheduler/scraper.js b/scraper/scheduler/scraper.js deleted file mode 100644 index 3f06643..0000000 --- a/scraper/scheduler/scraper.js +++ /dev/null @@ -1,28 +0,0 @@ -const schedule = require('node-schedule'); -const scrapers = require('./scrapers'); -const { sequence } = require('../lib/promises') - -function scheduleScraping() { - const allCrons = scrapers.reduce((crons, provider) => { - crons[provider.cron] = (crons[provider.cron] || []).concat(provider) - return crons; - }, {}); - Object.entries(allCrons).forEach(([cron, providers]) => schedule.scheduleJob(cron, () => _scrapeProviders(providers))) -} - -function scrapeAll() { - return _scrapeProviders(scrapers) -} - -async function _scrapeProviders(providers) { - return sequence(providers.map(provider => () => _singleScrape(provider))); -} - -async function _singleScrape(provider) { - return provider.scraper.scrape().catch(error => { - console.warn(`Failed ${provider.name} scraping due: `, error); - return Promise.resolve() - }) -} - -module.exports = { scheduleScraping, scrapeAll } \ No newline at end of file diff --git a/scraper/scheduler/scrapers.js b/scraper/scheduler/scrapers.js deleted file mode 100644 index 22e5bcb..0000000 --- a/scraper/scheduler/scrapers.js +++ /dev/null @@ -1,47 +0,0 @@ -// const thepiratebayScraper = require('../scrapers/thepiratebay/thepiratebay_scraper'); -// const thepiratebayFakeRemoval = require('../scrapers/thepiratebay/thepiratebay_fakes_removal'); -const ytsScraper = require('../scrapers/yts/yts_scraper'); -const ytsFullScraper = require('../scrapers/yts/yts_full_scraper'); -const eztvScraper = require('../scrapers/eztv/eztv_scraper'); -const leetxScraper = require('../scrapers/1337x/1337x_scraper'); -// const rarbgScraper = require('../scrapers/rarbg/rarbg_scraper'); -const nyaaPantsuScraper = require('../scrapers/nyaapantsu/nyaa_pantsu_scraper'); -const nyaaSiScraper = require('../scrapers/nyaasi/nyaa_si_scraper'); -// const erairawsScraper = require('../scrapers/erairaws/erairaws_scraper'); -// const torrentGalaxyScraper = require('../scrapers/torrentgalaxy/torrentgalaxy_scraper'); -// const rutorScraper = require('../scrapers/rutor/rutor_scraper'); -// const Comando = require('../scrapers/comando/comando_scraper') -// const ComoEuBaixo = require('../scrapers/comoeubaixo/comoeubaixo_scraper') -// const Lapumia = require('../scrapers/lapumia/lapumia_scraper') -// const OndeBaixa = require('../scrapers/ondebaixa/ondebaixa_scraper'); -// const AnimesTorrent = require('../scrapers/animestorrent/animestorrent_scraper') -// const DarkMahou = require('../scrapers/darkmahou/darkmahou_scraper') -// const torrent9Scraper = require('../scrapers/torrent9/torrent9_scraper'); - -module.exports = [ - { scraper: ytsScraper, name: ytsScraper.NAME, cron: '0 0 */4 ? * *' }, - { scraper: ytsFullScraper, name: ytsFullScraper.NAME, cron: '0 0 0 * * 0' }, - { scraper: eztvScraper, name: eztvScraper.NAME, cron: '0 0 */4 ? * *' }, - { scraper: nyaaSiScraper, name: nyaaSiScraper.NAME, cron: '0 0 */4 ? * *' }, - { scraper: nyaaPantsuScraper, name: nyaaPantsuScraper.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: rarbgScraper, name: rarbgScraper.NAME, cron: '0 0 */1 ? * *' }, - // { scraper: rutorScraper, name: rutorScraper.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: thepiratebayScraper, name: thepiratebayScraper.NAME, cron: '0 0 */2 ? * *' }, - // { scraper: thepiratebayFakeRemoval, name: thepiratebayFakeRemoval.NAME, cron: '0 0 */12 ? * *' }, - // { scraper: torrentGalaxyScraper, name: torrentGalaxyScraper.NAME, cron: '0 0 */4 ? * *' }, - { scraper: leetxScraper, name: leetxScraper.NAME, cron: '0 0 */4 ? * *' } - // { scraper: torrent9Scraper, name: torrent9Scraper.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: Comando, name: Comando.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: ComoEuBaixo, name: ComoEuBaixo.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: Lapumia, name: Lapumia.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: OndeBaixa, name: OndeBaixa.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: AnimesTorrent, name: AnimesTorrent.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: DarkMahou, name: DarkMahou.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: erairawsScraper, name: erairawsScraper.NAME, cron: '0 0 */4 ? * *' }, - // { scraper: require('../scrapers/rarbg/rarbg_dump_scraper') } - // { scraper: require('../scrapers/1337x/1337x_search_scraper') } - // { scraper: require('../scrapers/rarbg/rarbg_dump_scraper') } - // { scraper: require('../scrapers/thepiratebay/thepiratebay_dump_scraper') } - // { scraper: require('../scrapers/thepiratebay/thepiratebay_unofficial_dump_scraper') } - // { scraper: require('../scrapers/thepiratebay/thepiratebay_update_size_scraper') } -]; diff --git a/scraper/scheduler/seeders.js b/scraper/scheduler/seeders.js deleted file mode 100644 index b7b3e4f..0000000 --- a/scraper/scheduler/seeders.js +++ /dev/null @@ -1,64 +0,0 @@ -const Bottleneck = require('bottleneck'); -const repository = require('../lib/repository') -const { delay } = require('../lib/promises') -const { updateCurrentSeeders } = require('../lib/torrent') -const { updateTorrentSeeders } = require('../lib/torrentEntries') - -const DELAY_MS = 0; // 0 seconds -const DELAY_NEW_MS = 30_000; // 30 seconds -const DELAY_NO_NEW_MS = 300_000; // 300 seconds -const DELAY_FAILED_TORRENTS_MS = 5_000; // 5 seconds -const updateLimiter = new Bottleneck({ maxConcurrent: 5 }); -const statistics = {}; -const statisticsNew = {}; - -function scheduleUpdateSeeders() { - console.log('Starting seeders update...') - getTorrents() - .then(torrents => updateCurrentSeeders(torrents)) - .then(updatedTorrents => Promise.all( - updatedTorrents.map(updated => updateLimiter.schedule(() => updateTorrentSeeders(updated))))) - .then(torrents => updateStatistics(torrents, statistics)) - .then(() => console.log('Finished seeders update:', statistics)) - .catch(error => console.warn('Failed seeders update:', error)) - .then(() => delay(DELAY_MS)) - .then(() => scheduleUpdateSeeders()); -} - -function scheduleUpdateSeedersForNewTorrents() { - console.log('Starting seeders update for new torrents...') - getNewTorrents() - .then(torrents => updateCurrentSeeders(torrents)) - .then(updatedTorrents => Promise.all( - updatedTorrents.map(updated => updateLimiter.schedule(() => updateTorrentSeeders(updated))))) - .then(torrents => updateStatistics(torrents, statisticsNew)) - .then(() => console.log('Finished seeders update for new torrents:', statisticsNew)) - .catch(error => console.warn('Failed seeders update for new torrents:', error)) - .then(() => delay(DELAY_NEW_MS)) - .then(() => scheduleUpdateSeedersForNewTorrents()); -} - -async function getTorrents() { - return repository.getUpdateSeedersTorrents() - .catch(() => delay(DELAY_FAILED_TORRENTS_MS).then(() => getTorrents())); -} - -async function getNewTorrents() { - return repository.getUpdateSeedersNewTorrents() - .catch(() => delay(DELAY_FAILED_TORRENTS_MS).then(() => getNewTorrents())) - .then(torrents => { - if (!torrents.length) { - console.log('No new torrents to update seeders') - return delay(DELAY_NO_NEW_MS).then(() => getNewTorrents()) - } - return torrents; - }); -} - -function updateStatistics(updatedTorrents, statisticsObject) { - const totalTorrents = updatedTorrents.map(nested => nested.length).reduce((a, b) => a + b, 0); - const date = new Date().toISOString().replace(/T.*/, ''); - statisticsObject[date] = (statisticsObject[date] || 0) + totalTorrents; -} - -module.exports = { scheduleUpdateSeeders, scheduleUpdateSeedersForNewTorrents } \ No newline at end of file diff --git a/scraper/scrapers/1337x/1337x_api.js b/scraper/scrapers/1337x/1337x_api.js deleted file mode 100644 index 0a979cc..0000000 --- a/scraper/scrapers/1337x/1337x_api.js +++ /dev/null @@ -1,206 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const Sugar = require('sugar-date'); -const decode = require('magnet-uri'); -const Promises = require('../../lib/promises'); -const { escapeHTML } = require('../../lib/metadata'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { parseSize } = require("../scraperHelper"); - -const defaultProxies = [ - 'https://1337x.to' -]; -const defaultTimeout = 50000; -const maxSearchPage = 50; - -let FlaresolverrUserAgent = ''; -let FlaresolverrCookies = ''; - -const Categories = { - MOVIE: 'Movies', - TV: 'TV', - ANIME: 'Anime', - DOCUMENTARIES: 'Documentaries', - APPS: 'Apps', - GAMES: 'Games', - MUSIC: 'Music', - PORN: 'XXX', - OTHER: 'Other', -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const proxyList = config.proxyList || defaultProxies; - const slug = torrentId.startsWith('/torrent/') ? torrentId.replace('/torrent/', '') : torrentId; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/torrent/${slug}`, config))) - .then((body) => parseTorrentPage(body)) - .then((torrent) => ({ torrentId: slug, ...torrent })) - .catch((err) => torrent(slug, config, retries - 1)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - const extendToPage = Math.min(maxSearchPage, (config.extendToPage || 1)) - const requestUrl = proxyUrl => category - ? `${proxyUrl}/category-search/${keyword}/${category}/${page}/` - : `${proxyUrl}/search/${keyword}/${page}/`; - - return Promises.first(proxyList - .map(proxyUrl => singleRequest(requestUrl(proxyUrl), config))) - .then(body => parseTableBody(body)) - .then(torrents => torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - const sort = config.sort; - const requestUrl = proxyUrl => sort - ? `${proxyUrl}/sort-cat/${category}/${sort}/desc/${page}/` - : `${proxyUrl}/cat/${category}/${page}/`; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(requestUrl(proxyUrl), config))) - .then((body) => parseTableBody(body)) - .catch((err) => { - console.error(err); - browse(config, retries - 1); - }); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - let options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - if (FlaresolverrUserAgent === '' || FlaresolverrCookies === '') { - console.log("using flaresolverr"); - return axios.post('http://flaresolverr:8191/v1', { - cmd: 'request.get', - url: requestUrl, - }, options) - .then((response) => { - if (response.data.status !== 'ok') { - throw new Error(`FlareSolverr did not return status 'ok': ${response.data.message}`) - } - - const body = response.data.solution.response; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden') || - !(body.includes('1337x'))) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - FlaresolverrUserAgent = response.data.solution.userAgent; - response.data.solution.cookies.forEach(cookie => { - FlaresolverrCookies = FlaresolverrCookies + `${cookie.name}=${cookie.value}; `; - }); - - return body; - }); - } - else { - console.log("using direct request"); - options.headers['User-Agent'] = FlaresolverrUserAgent; - options.headers['Cookie'] = FlaresolverrCookies; - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden') || - !(body.includes('1337x'))) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }) - } -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('.table > tbody > tr').each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find('a').eq(1).text(), - torrentId: row.find('a').eq(1).attr('href').replace('/torrent/', ''), - seeders: parseInt(row.children('td.coll-2').text()), - leechers: parseInt(row.children('td.coll-3').text()), - size: parseSize(row.children('td.coll-4').text()) - }); - }); - - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const details = $('.torrent-detail-page'); - const magnetLink = details.find('a:contains(\'Magnet Download\')').attr('href'); - const imdbIdMatch = details.find('div[id=\'description\']').html().match(/imdb\.com\/title\/(tt\d+)/i); - - const torrent = { - name: escapeHTML(decode(magnetLink).name.replace(/\+/g, ' ')), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - seeders: parseInt(details.find('strong:contains(\'Seeders\')').next().text(), 10), - leechers: parseInt(details.find('strong:contains(\'Leechers\')').next().text(), 10), - category: details.find('strong:contains(\'Category\')').next().text(), - languages: details.find('strong:contains(\'Language\')').next().text(), - size: parseSize(details.find('strong:contains(\'Total size\')').next().text()), - uploadDate: parseDate(details.find('strong:contains(\'Date uploaded\')').next().text()), - imdbId: imdbIdMatch && imdbIdMatch[1], - files: details.find('div[id=\'files\']').first().find('li') - .map((i, elem) => $(elem).text()) - .map((i, text) => ({ - fileIndex: i, - name: text.match(/^(.+)\s\(.+\)$/)[1].replace(/^.+\//g, ''), - path: text.match(/^(.+)\s\(.+\)$/)[1], - size: parseSize(text.match(/^.+\s\((.+)\)$/)[1]) - })).get() - }; - resolve(torrent); - }); -} - -function parseDate(dateString) { - if (/decade.*ago/i.test(dateString)) { - return Sugar.Date.create('10 years ago'); - } - return Sugar.Date.create(dateString); -} - -module.exports = { torrent, search, browse, Categories, FlaresolverrCookies, FlaresolverrUserAgent }; diff --git a/scraper/scrapers/1337x/1337x_scraper.js b/scraper/scrapers/1337x/1337x_scraper.js deleted file mode 100644 index 7e1a1de..0000000 --- a/scraper/scrapers/1337x/1337x_scraper.js +++ /dev/null @@ -1,115 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const leetx = require('./1337x_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = '1337x'; -const UNTIL_PAGE = 10; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)) - .then(() => { - leetx.FlaresolverrCookies = ''; - leetx.FlaresolverrUserAgent = ''; - }); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => leetx.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - leetx.Categories.MOVIE, - leetx.Categories.TV, - leetx.Categories.ANIME, - leetx.Categories.DOCUMENTARIES - ]; - - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return leetx.browse(({ category, page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); - -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent({ provider: NAME, ...record })) { - return record; - } - - const torrentFound = await leetx.torrent(record.torrentId).catch(() => undefined); - - if (!torrentFound || !TYPE_MAPPING[torrentFound.category]) { - return Promise.resolve('Invalid torrent record'); - } - if (isNaN(torrentFound.uploadDate)) { - console.warn(`Incorrect upload date for [${torrentFound.infoHash}] ${torrentFound.name}`); - return; - } - if (await checkAndUpdateTorrent(torrentFound)) { - return torrentFound; - } - - const torrent = { - infoHash: torrentFound.infoHash, - provider: NAME, - torrentId: torrentFound.torrentId, - title: torrentFound.name.replace(/\t|\s+/g, ' ').trim(), - type: TYPE_MAPPING[torrentFound.category], - size: torrentFound.size, - seeders: torrentFound.seeders, - uploadDate: torrentFound.uploadDate, - imdbId: torrentFound.imdbId, - languages: torrentFound.languages || undefined - }; - - return createTorrentEntry(torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[leetx.Categories.MOVIE] = Type.MOVIE; - mapping[leetx.Categories.DOCUMENTARIES] = Type.MOVIE; - mapping[leetx.Categories.TV] = Type.SERIES; - mapping[leetx.Categories.ANIME] = Type.ANIME; - return mapping; -} - -function untilPage(category) { - if (leetx.Categories.ANIME === category) { - return 5; - } - if (leetx.Categories.DOCUMENTARIES === category) { - return 1; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/animestorrent/animestorrent_api.js b/scraper/scrapers/animestorrent/animestorrent_api.js deleted file mode 100644 index b1004f6..0000000 --- a/scraper/scrapers/animestorrent/animestorrent_api.js +++ /dev/null @@ -1,128 +0,0 @@ -const axios = require('axios'); -const cheerio = require("cheerio"); -const decode = require("magnet-uri"); -const { getRandomUserAgent } = require("../../lib/requestHelper"); - -const defaultTimeout = 10000; -const maxSearchPage = 50; - -const baseUrl = 'https://animestorrent.com'; - -const Categories = { - MOVIE: 'filme', - ANIME: 'tv', - OVA: 'ova' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const slug = torrentId.split("/")[3]; - return singleRequest(`${baseUrl}/${slug}`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map((el) => ({ torrentId: slug, ...el }))) - .catch((err) => torrent(slug, config, retries - 1)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, config.extendToPage || 1); - - return singleRequest(`${baseUrl}/page/${page}/?s=${keyword}`, config) - .then((body) => parseTableBody(body)) - .then((torrents) => - torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }) - .catch(() => []) - .then((nextTorrents) => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const requestUrl = category ? `${baseUrl}/tipo/${category}/page/${page}/` : `${baseUrl}/page/${page}/`; - - return singleRequest(requestUrl, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options).then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if ( - body.includes("502: Bad gateway") || - body.includes("403 Forbidden") - ) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - - const torrents = []; - - $("article.bs").each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find("span.ntitle").text(), - torrentId: row.find("div > a").attr("href"), - }); - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise(async (resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - let magnets = []; - $(`a[href^="magnet"]`).each((i, section) => { - const magnet = $(section).attr("href"); - magnets.push(magnet); - }); - const details = $('div.infox') - const torrents = magnets.map((magnetLink) => { - return { - title: decode(magnetLink).name, - originalName: details.find('h1.entry-title').text(), - year: details.find('b:contains(\'Lançamento:\')')[0] - ? details.find('b:contains(\'Lançamento:\')')[0].nextSibling.nodeValue.trim() - : '', - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - category: details.find('b:contains(\'Tipo:\')').next().attr('href').split('/')[4], - uploadDate: new Date($("time[itemprop=dateModified]").attr("datetime")), - }; - }) - resolve(torrents); - }); -} - -module.exports = { torrent, search, browse, Categories }; \ No newline at end of file diff --git a/scraper/scrapers/animestorrent/animestorrent_scraper.js b/scraper/scrapers/animestorrent/animestorrent_scraper.js deleted file mode 100644 index b6de04d..0000000 --- a/scraper/scrapers/animestorrent/animestorrent_scraper.js +++ /dev/null @@ -1,108 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const animetorrrent = require("./animestorrent_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); -const { getKitsuId } = require("../../lib/metadata"); - -const NAME = "AnimesTorrent"; -const UNTIL_PAGE = 5; - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => animetorrrent.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - animetorrrent.Categories.MOVIE, - animetorrrent.Categories.ANIME, - animetorrrent.Categories.OVA - ]; - - return Promises.sequence(allowedCategories - .map((category) => () => scrapeLatestTorrentsForCategory(category))) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return animetorrrent - .browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - return animetorrrent.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - if (!foundTorrent.imdbId && !foundTorrent.kitsuId) { - const info = { title: foundTorrent.originalName, year: foundTorrent.year }; - foundTorrent.kitsuId = await getKitsuId(info).catch(() => undefined); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: Type.ANIME, - imdbId: foundTorrent.imdbId, - kitsuId: foundTorrent.kitsuId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function untilPage(category) { - if (animetorrrent.Categories.ANIME === category) { - return 5; - } - if (animetorrrent.Categories.OVA === category) { - return 3; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/comando/comando_api.js b/scraper/scrapers/comando/comando_api.js deleted file mode 100644 index 640e9b9..0000000 --- a/scraper/scrapers/comando/comando_api.js +++ /dev/null @@ -1,163 +0,0 @@ -const axios = require('axios'); -const moment = require("moment") -const cheerio = require("cheerio"); -const decode = require('magnet-uri'); -const { escapeHTML } = require('../../lib/metadata'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { isPtDubbed, sanitizePtName, sanitizePtLanguages, sanitizePtOriginalName } = require('../scraperHelper') - -const defaultTimeout = 30000; -const maxSearchPage = 50 - -const baseUrl = 'https://comando.to'; - -const Categories = { - MOVIE: 'filmes', - TV: 'series', - ANIME: 'animes', - DOCUMENTARIES: 'documentario' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const slug = torrentId.split("/")[3]; - return singleRequest(`${baseUrl}/${slug}`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map(el => ({ torrentId: slug, ...el }))) - .catch((err) => { - console.warn(`Failed Comando ${slug} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, (config.extendToPage || 1)) - - return singleRequest(`${baseUrl}/page/${page}/?s=${keyword}`, config) - .then(body => parseTableBody(body)) - .then(torrents => torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - - return singleRequest(`${baseUrl}/category/${category}/page/${page}/`, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('article').each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find("h2 > a").text(), - torrentId: row.find("h2 > a").attr("href") - }); - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const magnets = $('h2 > strong') - .filter((i, elem) => isPtDubbed($(elem).text())).parent() - .map((i, elem) => $(elem).nextUntil('h2, hr')) - .map((i, elem) => $(elem).find('a[href^="magnet"]')) - .map((i, section) => $(section).attr("href")).get(); - const details = $('strong, b').filter((i, elem) => $(elem).text().match(/Servidor|Orig(?:\.|inal)/)).parent(); - const imdbIdMatch = details.find('a[href*="imdb.com"]').attr('href') - const torrents = magnets.map(magnetLink => { - const decodedMagnet = decode(magnetLink); - const originalNameElem = details.find('strong, b') - .filter((i, elem) => $(elem).text().match(/Baixar|Orig(?:\.|inal)|^Título:/)); - const languagesElem = details.find('strong, b') - .filter((i, elem) => $(elem).text().match(/^\s*([IÍ]dioma|[AÁ]udio)/)); - const originalName = parseOriginalName(originalNameElem); - const title = decodedMagnet.name && escapeHTML(decodedMagnet.name.replace(/\+/g, ' ')); - return { - title: title ? sanitizePtName(title) : originalName, - originalName: sanitizePtOriginalName(originalName), - year: details.find('a[href*="comando.to/category/"]').text(), - infoHash: decodedMagnet.infoHash, - magnetLink: magnetLink, - category: parseCategory($('div.entry-categories').html()), - uploadDate: new Date(moment($('a.updated').text(), 'LL', 'pt-br').format()), - imdbId: imdbIdMatch ? imdbIdMatch.split('/')[4] : null, - languages: sanitizePtLanguages(languagesElem[0].nextSibling.nodeValue) - } - }); - resolve(torrents.filter((x) => x)); - }); -} - -function parseOriginalName(originalNameElem) { - if (!originalNameElem[0]) { - return ''; - } - const originalName = originalNameElem.next().text() - || originalNameElem[0].nextSibling.nodeValue - || originalNameElem.text(); - return originalName.replace(/[^:]*: ?/, '').trim(); -} - -function parseCategory(categorys) { - const $ = cheerio.load(categorys) - if ($('a:contains(\'animes\')').text()) { - return Categories.ANIME - } - if ($('a:contains(\'Filmes\')').text()) { - return Categories.MOVIE - } - if ($('a:contains(\'Series\')').text()) { - return Categories.TV - } -} - -module.exports = { torrent, search, browse, Categories }; \ No newline at end of file diff --git a/scraper/scrapers/comando/comando_scraper.js b/scraper/scrapers/comando/comando_scraper.js deleted file mode 100644 index 6062871..0000000 --- a/scraper/scrapers/comando/comando_scraper.js +++ /dev/null @@ -1,112 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const comando = require("./comando_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { getImdbId } = require("../../lib/metadata"); - -const NAME = "Comando"; -const UNTIL_PAGE = 5; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => comando.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - comando.Categories.MOVIE, - comando.Categories.TV - ]; - - return Promises.sequence(allowedCategories - .map((category) => () => scrapeLatestTorrentsForCategory(category))) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return comando.browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - return comando.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - if (!foundTorrent.imdbId && foundTorrent.originalName) { - const info = { title: foundTorrent.originalName, year: foundTorrent.year }; - foundTorrent.imdbId = await getImdbId(info, TYPE_MAPPING[foundTorrent.category]).catch(() => undefined); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - imdbId: foundTorrent.imdbId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[comando.Categories.MOVIE] = Type.MOVIE; - mapping[comando.Categories.DOCUMENTARIES] = Type.SERIES; - mapping[comando.Categories.TV] = Type.SERIES; - mapping[comando.Categories.ANIME] = Type.ANIME; - return mapping; -} - -function untilPage(category) { - if (comando.Categories.TV === category) { - return 5; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/comoeubaixo/comoeubaixo_api.js b/scraper/scrapers/comoeubaixo/comoeubaixo_api.js deleted file mode 100644 index 80ada38..0000000 --- a/scraper/scrapers/comoeubaixo/comoeubaixo_api.js +++ /dev/null @@ -1,135 +0,0 @@ -const axios = require('axios'); -const cheerio = require("cheerio"); -const decode = require('magnet-uri'); -const { escapeHTML } = require('../../lib/metadata'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { isPtDubbed, sanitizePtName, sanitizePtLanguages } = require('../scraperHelper') - -const defaultTimeout = 30000; -const maxSearchPage = 50 - -const baseUrl = 'https://comoeubaixo.com'; - -const Categories = { - MOVIE: 'filmes', - TV: 'series', - ANIME: 'anime', - DESENHOS: 'desenhos' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const slug = encodeURIComponent(torrentId.split("/")[3]); - return singleRequest(`${baseUrl}/${slug}/`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map(el => ({ torrentId: slug, ...el }))) - .catch((err) => { - console.warn(`Failed ComoEuBaixo ${torrentId} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, (config.extendToPage || 1)) - - return singleRequest(`${baseUrl}/${keyword}/${page}/`, config) - .then(body => parseTableBody(body)) - .then(torrents => torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const requestUrl = category ? `${baseUrl}/${category}/${page}/` : `${baseUrl}/${page}/`; - - return singleRequest(requestUrl, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body || (Buffer.isBuffer(body) && !body.size)) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('div.capa_larga.align-middle').each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find("a").text(), - torrentId: row.find("a").attr("href"), - isTorrent: !!row.find("p:contains(\'Torrent\')")[0] - }); - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const magnets = $(`a[href^="magnet"]`) - .filter((i, elem) => isPtDubbed($(elem).attr('title'))) - .map((i, elem) => $(elem).attr("href")).get(); - const details = $('div#informacoes') - const category = details.find('strong:contains(\'Gêneros: \')').next().attr('href').split('/')[0] - const torrents = magnets.map(magnetLink => { - const decodedMagnet = decode(magnetLink); - const name = sanitizePtName(escapeHTML(decodedMagnet.name || '').replace(/\+/g, ' ')); - const originalTitle = details.find('strong:contains(\'Baixar\')')[0].nextSibling.nodeValue.split('-')[0]; - const year = details.find('strong:contains(\'Data de Lançamento: \')').next().text().trim(); - const fallBackTitle = `${originalTitle.trim()} ${year.trim()} ${name.trim()}`; - return { - title: name.length > 5 ? name : fallBackTitle, - infoHash: decodedMagnet.infoHash, - magnetLink: magnetLink, - category: category, - uploadDate: new Date($('time').attr('datetime')), - imdbId: details.find('a[href*="imdb.com"]').attr('href').split('/')[4], - languages: sanitizePtLanguages(details.find('strong:contains(\'Idioma\')')[0].nextSibling.nodeValue) - }; - }) - resolve(torrents.filter((x) => x)); - }); -} - -module.exports = { torrent, search, browse, Categories }; \ No newline at end of file diff --git a/scraper/scrapers/comoeubaixo/comoeubaixo_scraper.js b/scraper/scrapers/comoeubaixo/comoeubaixo_scraper.js deleted file mode 100644 index f01799b..0000000 --- a/scraper/scrapers/comoeubaixo/comoeubaixo_scraper.js +++ /dev/null @@ -1,115 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const comoeubaixo = require("./comoeubaixo_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); - -const NAME = "ComoEuBaixo"; -const UNTIL_PAGE = 5; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => comoeubaixo.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - comoeubaixo.Categories.MOVIE, - comoeubaixo.Categories.TV, - comoeubaixo.Categories.DESENHOS - ]; - - return Promises.sequence(allowedCategories - .map((category) => () => scrapeLatestTorrentsForCategory(category))) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return comoeubaixo - .browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - if (!entry.isTorrent) { - return entry; - } - return comoeubaixo.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - imdbId: foundTorrent.imdbId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[comoeubaixo.Categories.MOVIE] = Type.MOVIE; - mapping[comoeubaixo.Categories.TV] = Type.SERIES; - mapping[comoeubaixo.Categories.ANIME] = Type.ANIME; - mapping[comoeubaixo.Categories.DESENHOS] = Type.SERIES; - return mapping; -} - -function untilPage(category) { - if (comoeubaixo.Categories.DESENHOS === category) { - return UNTIL_PAGE; - } - if (comoeubaixo.Categories.TV === category) { - return UNTIL_PAGE; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/darkmahou/darkmahou_api.js b/scraper/scrapers/darkmahou/darkmahou_api.js deleted file mode 100644 index b9324ca..0000000 --- a/scraper/scrapers/darkmahou/darkmahou_api.js +++ /dev/null @@ -1,127 +0,0 @@ -const axios = require('axios'); -const cheerio = require("cheerio"); -const decode = require("magnet-uri"); -const { getRandomUserAgent } = require("../../lib/requestHelper"); - -const defaultTimeout = 10000; -const maxSearchPage = 50; - -const baseUrl = 'https://darkmahou.com'; - -const Categories = { - MOVIE: 'movie', - ANIME: 'tv', - OVA: 'ova' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const slug = torrentId.split("/")[3]; - return singleRequest(`${baseUrl}/${slug}`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map((el) => ({ torrentId: slug, ...el }))) - .catch((err) => torrent(slug, config, retries - 1)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, config.extendToPage || 1); - - return singleRequest(`${baseUrl}/page/${page}/?s=${keyword}`, config) - .then((body) => parseTableBody(body)) - .then((torrents) => - torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }) - .catch(() => []) - .then((nextTorrents) => torrents.concat(nextTorrents)) - : torrents - ) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const requestUrl = category ? `${baseUrl}/category/${category}/page/${page}/` : `${baseUrl}/page/${page}/`; - - return singleRequest(requestUrl, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options).then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if ( - body.includes("502: Bad gateway") || - body.includes("403 Forbidden") - ) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - - const torrents = []; - - $("article.bs").each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find("span.ntitle").text(), - torrentId: row.find("div > a").attr("href"), - }); - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise(async (resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - let magnets = []; - $(`a[href^="magnet"]`).each((i, section) => { - const magnet = $(section).attr("href"); - magnets.push(magnet); - }); - const details = $('div.infox') - const torrent = magnets.map((magnetLink) => { - return { - title: decode(magnetLink).name, - originalName: details.find('h1.entry-title').text(), - year: details.find('b:contains(\'Lançado:\')')[0].nextSibling.nodeValue || '', - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - category: details.find('b:contains(\'Tipo:\')').next().attr('href').split('/')[4], - uploadDate: new Date($("time[itemprop=dateModified]").attr("datetime")), - }; - }) - resolve(torrent.filter((x) => x)); - }); -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/darkmahou/darkmahou_scraper.js b/scraper/scrapers/darkmahou/darkmahou_scraper.js deleted file mode 100644 index 2168b0e..0000000 --- a/scraper/scrapers/darkmahou/darkmahou_scraper.js +++ /dev/null @@ -1,108 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const darkmahou = require("./darkmahou_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); -const { getKitsuId } = require("../../lib/metadata"); - -const NAME = "DarkMahou"; -const UNTIL_PAGE = 5; - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => darkmahou.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - darkmahou.Categories.MOVIE, - darkmahou.Categories.ANIME, - darkmahou.Categories.OVA - ]; - - return Promises.sequence(allowedCategories - .map((category) => () => scrapeLatestTorrentsForCategory(category))) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return darkmahou - .browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - return darkmahou.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - if (!foundTorrent.imdbId && !foundTorrent.kitsuId) { - const info = { title: foundTorrent.originalName, year: foundTorrent.year }; - foundTorrent.kitsuId = await getKitsuId(info).catch(() => undefined); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: Type.ANIME, - imdbId: foundTorrent.imdbId, - kitsuId: foundTorrent.kitsuId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function untilPage(category) { - if (darkmahou.Categories.ANIME === category) { - return 5; - } - if (darkmahou.Categories.OVA === category) { - return 4; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/erairaws/erairaws_api.js b/scraper/scrapers/erairaws/erairaws_api.js deleted file mode 100644 index 17599b0..0000000 --- a/scraper/scrapers/erairaws/erairaws_api.js +++ /dev/null @@ -1,93 +0,0 @@ -const axios = require('axios'); -const cheerio = require("cheerio"); -const decode = require("magnet-uri"); -const Promises = require("../../lib/promises"); -const { getRandomUserAgent } = require("../../lib/requestHelper"); - -const defaultTimeout = 10000; - -const baseUrl = 'https://www.erai-raws.info'; - -const Categories = { - ANIMES: 'anime', - EPISODES: 'episodes' -}; - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - - return singleRequest(`${baseUrl}/${category}/page/${page}/`, config) - .then((body) => parseTableBody(body) - .then(animes => Promises.sequence(animes.map(anime => () => singleRequest(anime.animeLink)))) - .then(animeBodies => Promise.all(animeBodies.map(animeBody => parseTorrentPage(animeBody)))) - .then(animeInfos => animeInfos.reduce((a, b) => a.concat(b), []))) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout, }; - - return axios.get(requestUrl, options).then((response) => { - const body = response.data; - if (!body || (Buffer.isBuffer(body) && !body.size)) { - throw new Error(`No body: ${requestUrl}`); - } else if ( - body.includes("502: Bad gateway") || - body.includes("403 Forbidden") - ) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - - const links = $('[itemprop=\'headline\'] a, .content-area a.aa_ss_ops_new') - .map((i, element) => ({ - name: $(element).text(), - animeLink: $(element).attr("href"), - })).get(); - resolve(links); - }); -} - -function parseTorrentPage(body) { - return new Promise(async (resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error("Failed loading body")); - } - const entries = $('.tab-content table, .content-area table') - .map((i, entry) => { - const languages = $(entry).find('.tooltip3').map((_, l) => $(l).attr('data-title')).get().join('/'); - const magnets = $(entry).find('a[href^="magnet"]').map((_, m) => $(m).attr('href')).get(); - return { languages, magnets } - }).get(); - const torrents = entries - .map(entry => entry.magnets - .map(magnet => decode(magnet)) - .map(decodedMagnet => ({ - title: decodedMagnet.name, - infoHash: decodedMagnet.infoHash, - trackers: decodedMagnet.tr, - languages: entry.languages - }))) - .reduce((a, b) => a.concat(b), []); - resolve(torrents); - }); -} - -module.exports = { browse, Categories }; diff --git a/scraper/scrapers/erairaws/erairaws_rss_api.js b/scraper/scrapers/erairaws/erairaws_rss_api.js deleted file mode 100644 index 98c5745..0000000 --- a/scraper/scrapers/erairaws/erairaws_rss_api.js +++ /dev/null @@ -1,50 +0,0 @@ -const Parser = require('rss-parser'); -const decode = require("magnet-uri"); - -const parser = new Parser({ - customFields: { - item: [['erai:subtitles', 'subtitles']] - } -}); -const baseUrl = 'https://www.erai-raws.info'; -const rssKey = process.env.ERAI_RSS_KEY; - -const Categories = { - ANIMES: 'anime', - EPISODES: 'episodes' -}; - -function browse() { - return parser.parseURL(`${baseUrl}/feed/?type=magnet&${rssKey}`) - .then(result => result.items - .map(item => { - const decodedMagnet = decode(item.link); - const languages = parseLanguages(item.subtitles); - return { - title: decodedMagnet.name, - infoHash: decodedMagnet.infoHash, - trackers: decodedMagnet.tr, - languages: languages - } - })); -} - -const languageMapping = { - 'us': 'English', - 'br': 'Portuguese(Brazil)', - 'mx': 'Spanish(Latin_America)', - 'es': 'Spanish', - 'sa': 'Arabic', - 'fr': 'French', - 'de': 'German', - 'it': 'Italian', - 'ru': 'Russian' -} -function parseLanguages(languages) { - return languages.split('][') - .map(lang => lang.replace(/[\[\]]/g, '')) - .map(lang => languageMapping[lang] || lang) - .join('/'); -} - -module.exports = { browse, Categories }; diff --git a/scraper/scrapers/erairaws/erairaws_scraper.js b/scraper/scrapers/erairaws/erairaws_scraper.js deleted file mode 100644 index 20c454a..0000000 --- a/scraper/scrapers/erairaws/erairaws_scraper.js +++ /dev/null @@ -1,47 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const erairaws = require('./erairaws_rss_api'); -const { checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'EraiRaws'; - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function scrapeLatestTorrents() { - return scrapeLatestTorrentsForCategory(erairaws.Categories.EPISODES) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return erairaws.browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processRecord(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve([])); -} - -async function processRecord(foundTorrent) { - return checkAndUpdateTorrent({ provider: NAME, ...foundTorrent }).then(() => foundTorrent); -} - -function untilPage(category) { - if (category === erairaws.Categories.ANIMES) { - return 45; - } - return 1; -} - -module.exports = { scrape, NAME }; diff --git a/scraper/scrapers/eztv/eztv_api.js b/scraper/scrapers/eztv/eztv_api.js deleted file mode 100644 index 0e8ec2c..0000000 --- a/scraper/scrapers/eztv/eztv_api.js +++ /dev/null @@ -1,117 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const { decode } = require("magnet-uri"); -const Promises = require('../../lib/promises'); -const { getRandomUserAgent } = require('./../../lib/requestHelper'); -const { parseSize } = require("../scraperHelper"); - -const defaultProxies = [ - 'https://eztv.re' -]; -const defaultTimeout = 120000; -const minDelay = 3000; -const jitterDelay = minDelay; -const limit = 100; -const maxPage = 5; - -function torrent(torrentId, config = {}, retries = 1) { - if (!torrentId) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/ep/${torrentId}`, config))) - .then(body => parseTorrentPage(body)) - .then(torrent => ({ torrentId, ...torrent })) - .catch(error => retries ? jitter().then(() => torrent(torrentId, config, retries - 1)) : Promise.reject(error)); -} - -function search(imdbId, config = {}, retries = 1) { - if (!imdbId) { - return Promise.reject(new Error(`Failed ${imdbId} search`)); - } - const id = imdbId.replace('tt', ''); - const page = config.page || 1; - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/get-torrents?limit=${limit}&page=${page}&imdb_id=${id}`, config))) - .then(results => parseResults(results)) - .then(torrents => torrents.length === limit && page < maxPage - ? search(imdbId, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch(error => retries ? jitter().then(() => search(imdbId, config, retries - 1)) : Promise.reject(error)); -} - -function browse(config = {}, retries = 1) { - const page = config.page || 1; - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/get-torrents?limit=${limit}&page=${page}`, config))) - .then(results => parseResults(results)) - .catch(error => retries ? jitter().then(() => browse(config, retries - 1)) : Promise.reject(error)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options) - .then(response => { - if (!response.data) { - return Promise.reject(`No body: ${requestUrl}`); - } - return Promise.resolve(response.data); - }); -} - -function parseResults(results) { - if (!results || !Array.isArray(results.torrents)) { - return Promise.reject(`Incorrect results ${results}`) - } - return results.torrents.map(torrent => parseTorrent(torrent)); -} - -function parseTorrent(torrent) { - return { - name: torrent.title.replace(/EZTV$/, ''), - torrentId: torrent.episode_url.replace(/.*\/ep\//, ''), - infoHash: torrent.hash.trim().toLowerCase(), - magnetLink: torrent.magnet_url, - torrentLink: torrent.torrent_url, - seeders: torrent.seeds, - size: torrent.size_bytes, - uploadDate: new Date(torrent.date_released_unix * 1000), - imdbId: torrent.imdb_id !== '0' && 'tt' + torrent.imdb_id || undefined - } -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const content = $('table[class="forum_header_border_normal"]'); - const magnetLink = content.find('a[title="Magnet Link"]').attr('href'); - const torrent = { - name: content.find('h1 > span').text().replace(/EZTV$/, ''), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - torrentLink: content.find('a[title="Download Torrent"]').attr('href'), - seeders: parseInt(content.find('span[class="stat_red"]').first().text(), 10) || 0, - size: parseSize(content.find('b:contains(\'Filesize:\')')[0].nextSibling.data), - uploadDate: moment(content.find('b:contains(\'Released:\')')[0].nextSibling.data, 'Do MMM YYYY').toDate(), - showUrl: content.find('.episode_left_column a').attr('href') - }; - resolve(torrent); - }); -} - -function jitter() { - return Promises.delay(minDelay + Math.round(Math.random() * jitterDelay)) -} - -module.exports = { torrent, search, browse }; diff --git a/scraper/scrapers/eztv/eztv_scraper.js b/scraper/scrapers/eztv/eztv_scraper.js deleted file mode 100644 index ff0e656..0000000 --- a/scraper/scrapers/eztv/eztv_scraper.js +++ /dev/null @@ -1,85 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const { parse } = require('parse-torrent-title'); -const eztv = require('./eztv_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); -const { isEpisodeImdbId } = require('../../lib/metadata'); - -const NAME = 'EZTV'; -const UNTIL_PAGE = 10; - -const entryLimiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent, getImdbIdsMethod) { - // return getImdbIdsMethod() - // .then(imdbIds => Promise.all(imdbIds.map(imdbId => limiter.schedule(() => eztv.search(imdbId))))) - // .then(results => results.reduce((a, b) => a.concat(b), [])) - // .catch(() => limiter.schedule(() => eztv.torrent(torrent.torrentId))); - return Promise.resolve([]); -} - -async function scrapeLatestTorrents() { - return scrapeLatestTorrentsForCategory(); -} - -async function scrapeLatestTorrentsForCategory(page = 1) { - console.log(`Scrapping ${NAME} page ${page}`); - return eztv.browse(({ page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] due: `, error); - // return Promises.delay(30000).then(() => scrapeLatestTorrentsForCategory(page)) - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(t => entryLimiter.schedule(() => processTorrentRecord(t))))) - .then(resolved => resolved.length > 0 && page < UNTIL_PAGE - ? scrapeLatestTorrentsForCategory(page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - if (!record || !record.size) { - return Promise.resolve('Invalid torrent record'); - } - - // imdb id for talk shows is usually incorrect on eztv - const parsedTitle = parse(record.name); - const dateEpisode = !parsedTitle.season && parsedTitle.date; - if (dateEpisode && await isEpisodeImdbId(record.imdbId)) { - delete record.imdbId; - } - - const torrent = { - infoHash: record.infoHash, - provider: NAME, - torrentId: record.torrentId, - title: record.name.replace(/\t|\s+/g, ' ').trim(), - type: Type.SERIES, - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - imdbId: record.imdbId, - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/horriblesubs/horriblesubs_api.js b/scraper/scrapers/horriblesubs/horriblesubs_api.js deleted file mode 100644 index 5ba306a..0000000 --- a/scraper/scrapers/horriblesubs/horriblesubs_api.js +++ /dev/null @@ -1,137 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const Promises = require('../../lib/promises'); - -const defaultUrl = 'https://horriblesubs.info'; -const defaultTimeout = 10000; - -function allShows(config = {}) { - return _getContent('/shows/', config) - .then(($) => $('div[class="ind-show"]') - .map((index, element) => $(element).children('a')) - .map((index, element) => ({ - title: element.attr('title'), - url: `${config.proxyUrl || defaultUrl}${element.attr('href')}` - })).get()); -} - -async function showData(showInfo, config = {}) { - const showEndpoint = (showInfo.url || showInfo).match(/\/show.+/)[0]; - const title = showInfo.title; - const showId = await _getShowId(showEndpoint); - const packEntries = await _getShowEntries(showId, title, 'batch', config); - const singleEntries = await _getShowEntries(showId, title, 'show', config); - - return { - title: title, - url: showInfo.url || showInfo, - showId: showId, - singleEpisodes: singleEntries, - packEpisodes: packEntries - }; -} - -async function getLatestEntries(config = {}) { - return _getAllLatestEntries(config) - .then((entries) => Promises.sequence(entries.map((entry) => () => _findLatestEntry(entry, config)))) - .then((entries) => entries.filter((entry) => entry)) -} - -function _getContent(endpoint, config = {},) { - const baseUrl = config.proxyUrl || defaultUrl; - const timeout = config.timeout || defaultTimeout; - const url = endpoint.startsWith('http') - ? endpoint.replace(/https?:\/\/[^/]+/, baseUrl) - : `${baseUrl}${endpoint}`; - - return axios.get(url, { timeout: timeout }) - .then((response) => response.data) - .then((body) => cheerio.load(body)); -} - -function _getShowId(showEndpoint) { - return _getContent(showEndpoint.replace(/(?:#\d+)?\/?$/, '/')) - .then($ => $('div.entry-content').find('script').html().match(/var hs_showid = (\d+)/)[1]); -} - -function _getShowEntries(animeId, animeTitle, type, config) { - return _getAllEntries(animeId, type, config) - .then((entries) => entries.filter((entry) => entry.title === animeTitle)); -} - -function _getAllEntries(animeId, type, config, page = 0, autoExtend = true) { - const entriesEndpoint = `/api.php?method=getshows&type=${type}&showid=${animeId}&nextid=${page}`; - return _getEntries(entriesEndpoint, config) - .then((entries) => !autoExtend || !entries.length ? entries : - _getAllEntries(animeId, type, config, page + 1) - .then((nextEntries) => entries.concat(nextEntries))); -} - -function _getEntries(endpoint, config) { - return _getContent(endpoint, config) - .then(($) => $('div[class="rls-info-container"]') - .map((index, element) => ({ - title: $(element).find('a[class="rls-label"]').contents() - .filter((i, el) => el.nodeType === 3).first().text().trim(), - episode: $(element).find('a[class="rls-label"]').find('strong').text(), - uploadDate: _parseDate($(element).find('a[class="rls-label"]').find('span[class="rls-date"]').text()), - mirrors: $(element).find('div[class="rls-links-container"]').children() - .map((indexLink, elementLink) => ({ - resolution: $(elementLink).attr('id').match(/\d+p$/)[0], - magnetLink: $(elementLink).find('a[title="Magnet Link"]').attr('href'), - torrentLink: $(elementLink).find('a[title="Torrent Link"]').attr('href') - })).get() - })).get()); -} - -function _getAllLatestEntries(config, page = 0) { - const pageParam = page === 0 ? '' : `&nextid=${page}`; - const entriesEndpoint = `/api.php?method=getlatest${pageParam}`; - return _getContent(entriesEndpoint, config) - .then(($) => $('li a') - .map((index, element) => ({ - urlEndpoint: $(element).attr('href'), - episode: $(element).find('strong').text() - })).get()) - .then((entries) => entries.length < 12 - ? entries - : _getAllLatestEntries(config, page + 1) - .then((nextEntries) => entries.concat(nextEntries))); -} - -async function _findLatestEntry(entry, config) { - const showId = await _getShowId(entry.urlEndpoint); - let foundEntry; - let page = 0; - let reachedEnd = false; - - while (!foundEntry && !reachedEnd) { - const allEntries = await _getAllEntries(showId, 'show', config, page, false); - foundEntry = allEntries.filter((e) => e.episode === entry.episode)[0]; - page = page + 1; - reachedEnd = allEntries.length === 0; - } - - if (!foundEntry) { - return; - } - return { - title: foundEntry.title, - url: entry.urlEndpoint, - showId: showId, - singleEpisodes: [foundEntry] - }; -} - -function _parseDate(date) { - if (date.match(/today/i)) { - return moment().toDate(); - } else if (date.match(/yesterday/i)) { - return moment().subtract(1, 'day').toDate(); - } - return moment(date, 'MM/DD/YYYY').toDate(); -} - -module.exports = { allShows, showData, getLatestEntries, _getShowId }; - diff --git a/scraper/scrapers/horriblesubs/horriblesubs_mapping.json b/scraper/scrapers/horriblesubs/horriblesubs_mapping.json deleted file mode 100644 index 1b94e30..0000000 --- a/scraper/scrapers/horriblesubs/horriblesubs_mapping.json +++ /dev/null @@ -1,5636 +0,0 @@ -{ - "Absolute Duo": { - "showId": "1", - "kitsu_id": "8641" - }, - "Ace of Diamond": { - "showId": "2", - "kitsu_id": "7699" - }, - "Ace of Diamond S2": { - "showId": "3", - "kitsu_id": "10741" - }, - "Ai-Mai-Mi": { - "showId": "4", - "kitsu_id": "7382" - }, - "Ai-Mai-Mi - Mousou Catastrophie": { - "showId": "5", - "kitsu_id": "8498" - }, - "AIURA": { - "showId": "6", - "kitsu_id": "7576" - }, - "Akagami no Shirayukihime": { - "showId": "7", - "kitsu_id": "10621" - }, - "Akame ga Kill!": { - "showId": "8", - "kitsu_id": "8270" - }, - "Akatsuki no Yona": { - "showId": "9", - "kitsu_id": "8648" - }, - "AKB0048": { - "showId": "10", - "kitsu_id": "6678" - }, - "Aku no Hana": { - "showId": "11", - "kitsu_id": "7387" - }, - "Akuma no Riddle": { - "showId": "12", - "kitsu_id": "7844" - }, - "Aldnoah Zero": { - "showId": "13", - "kitsu_id": "8297" - }, - "Ame-iro Cocoa": { - "showId": "14", - "kitsu_id": "10095" - }, - "Amnesia": { - "showId": "15", - "kitsu_id": "7209" - }, - "Anime de Wakaru Shinryounaika": { - "showId": "16", - "kitsu_id": "9786" - }, - "Ano Natsu de Matteru": { - "showId": "17", - "kitsu_id": "6508" - }, - "Anohana (Live Action)": { - "showId": "18" - }, - "Another": { - "showId": "19", - "kitsu_id": "6462" - }, - "Ao Haru Ride": { - "showId": "20", - "kitsu_id": "8246" - }, - "Aoharu x Kikanjuu": { - "showId": "21", - "kitsu_id": "10716" - }, - "Aoi Sekai no Chuushin de": { - "showId": "22", - "kitsu_id": "7220" - }, - "Aquarion Logos": { - "showId": "23", - "kitsu_id": "10764" - }, - "Arata Kangatari": { - "showId": "24", - "kitsu_id": "7448" - }, - "Argevollen": { - "showId": "25", - "kitsu_id": "8401" - }, - "Arpeggio of Blue Steel - Ars Nova": { - "showId": "26", - "kitsu_id": "7769" - }, - "Arslan Senki": { - "showId": "27", - "kitsu_id": "9972" - }, - "Arslan Senki S2": { - "showId": "27", - "kitsu_id": "11477" - }, - "Ashita no Joe 2": { - "showId": "28", - "kitsu_id": "2646" - }, - "Assassination Classroom": { - "showId": "29", - "kitsu_id": "8640" - }, - "Baby Steps": { - "showId": "30", - "kitsu_id": "8093" - }, - "Baby Steps 2": { - "showId": "31", - "kitsu_id": "9142" - }, - "BAKUMATSU GIJINDEN ROMAN": { - "showId": "32", - "kitsu_id": "7388" - }, - "Bakumatsu Rock": { - "showId": "33", - "kitsu_id": "8533" - }, - "Barakamon": { - "showId": "34", - "kitsu_id": "8026" - }, - "Battle Girls - Time Paradox": { - "showId": "35", - "kitsu_id": "6123" - }, - "Beelzebub": { - "showId": "36", - "kitsu_id": "5766" - }, - "Bikini Warriors": { - "showId": "37", - "kitsu_id": "10920" - }, - "Binan Koukou Chikyuu Bouei-bu Love!": { - "showId": "38", - "kitsu_id": "9173" - }, - "Black Bullet": { - "showId": "39", - "kitsu_id": "8052" - }, - "Blade and Soul": { - "showId": "40", - "kitsu_id": "8293" - }, - "BlazBlue - Alter Memory": { - "showId": "41", - "kitsu_id": "7722" - }, - "Bleach": { - "showId": "42", - "kitsu_id": "244" - }, - "Blood Lad": { - "showId": "43", - "kitsu_id": "6552" - }, - "Blood-C": { - "showId": "44", - "kitsu_id": "6203" - }, - "Boku no Imouto wa Osaka Okan": { - "showId": "45", - "kitsu_id": "7423" - }, - "Bokura wa Minna Kawaisou": { - "showId": "46", - "kitsu_id": "8094" - }, - "Bonjour Sweet Love Patisserie": { - "showId": "47", - "kitsu_id": "8895" - }, - "Bottom Biting Bug": { - "showId": "48", - "kitsu_id": "7273" - }, - "Bottom Biting Bug S2": { - "showId": "48", - "kitsu_id": "7976" - }, - "Bottom Biting Bug S3": { - "showId": "48", - "kitsu_id": "9520" - }, - "Bottom Biting Bug S4": { - "showId": "48", - "kitsu_id": "11590" - }, - "Brave 10": { - "showId": "52", - "kitsu_id": "6481" - }, - "Brothers Conflict": { - "showId": "53", - "kitsu_id": "7280" - }, - "Brynhildr in the Darkness": { - "showId": "54", - "kitsu_id": "7996" - }, - "BTOOOM!": { - "showId": "55", - "kitsu_id": "7113" - }, - "Buddy Complex": { - "showId": "56", - "kitsu_id": "8139" - }, - "Buddy Complex Final Chapter": { - "showId": "56", - "kitsu_id": "8734" - }, - "Campione!": { - "showId": "58", - "kitsu_id": "6702" - }, - "Captain Earth": { - "showId": "59", - "kitsu_id": "7987" - }, - "Cardfight!! Vanguard": { - "showId": "60", - "kitsu_id": "5781" - }, - "Cardfight!! Vanguard (Asia Circuit)": { - "showId": "60", - "kitsu_id": "6893" - }, - "Cardfight!! Vanguard Legion Mate": { - "showId": "60", - "kitsu_id": "8264" - }, - "Cardfight!! Vanguard Link Joker": { - "showId": "60", - "kitsu_id": "7283" - }, - "Cardfight!! Vanguard G": { - "showId": "62", - "kitsu_id": "9781" - }, - "Chaos Dragon": { - "showId": "65", - "kitsu_id": "10619" - }, - "Charlotte": { - "showId": "66", - "kitsu_id": "10103" - }, - "Chihayafuru": { - "showId": "67", - "kitsu_id": "6355" - }, - "Chihayafuru S2": { - "showId": "68", - "kitsu_id": "7123" - }, - "Chitose Get You!": { - "showId": "69", - "kitsu_id": "7107" - }, - "Chuunibyou demo Koi ga Shitai! Ren": { - "showId": "70", - "kitsu_id": "7705" - }, - "Classroom Crisis": { - "showId": "71", - "kitsu_id": "10782" - }, - "Code Breaker": { - "showId": "72", - "kitsu_id": "6570" - }, - "Comet Lucifer": { - "showId": "73", - "kitsu_id": "11234" - }, - "Concrete Revolutio": { - "showId": "74", - "kitsu_id": "11165" - }, - "Coppelion": { - "showId": "75", - "kitsu_id": "5746" - }, - "Croisee in a Foreign Labyrinth": { - "showId": "76", - "kitsu_id": "5950" - }, - "Cross Ange": { - "showId": "77", - "kitsu_id": "8653" - }, - "Cuticle Detective Inaba": { - "showId": "78", - "kitsu_id": "7213" - }, - "D-Frag!": { - "showId": "79", - "kitsu_id": "8001" - }, - "Da Capo III": { - "showId": "80", - "kitsu_id": "7172" - }, - "Daimidaler": { - "showId": "81", - "kitsu_id": "8163" - }, - "Daitoshokan no Hitsujikai": { - "showId": "82", - "kitsu_id": "8002" - }, - "Dance with Devils": { - "showId": "83", - "kitsu_id": "10453" - }, - "Danchigai": { - "showId": "84", - "kitsu_id": "10620" - }, - "Danganronpa - The Animation": { - "showId": "85", - "kitsu_id": "7469" - }, - "DanMachi": { - "showId": "86", - "kitsu_id": "9962" - }, - "Danna ga Nani wo Itteiru ka Wakaranai Ken": { - "showId": "87", - "kitsu_id": "8891" - }, - "Danna ga Nani wo Itteiru ka Wakaranai Ken S2": { - "showId": "88", - "kitsu_id": "10148" - }, - "Dansai Bunri no Crime Edge": { - "showId": "89", - "kitsu_id": "7411" - }, - "Dantalian no Shoka": { - "showId": "90", - "kitsu_id": "5530" - }, - "Date A Live S2": { - "showId": "91", - "kitsu_id": "7864" - }, - "DD Hokuto no Ken 2 - Ichigo Aji+": { - "showId": "92", - "kitsu_id": "11080" - }, - "Deadman Wonderland": { - "showId": "93", - "kitsu_id": "4765" - }, - "Death Parade": { - "showId": "94", - "kitsu_id": "9969" - }, - "Denki-gai no Honya-san": { - "showId": "95", - "kitsu_id": "8629" - }, - "Denpa Kyoushi": { - "showId": "96", - "kitsu_id": "10235" - }, - "Detective Conan": { - "showId": "97", - "kitsu_id": "210" - }, - "DEVIL SURVIVOR 2 THE ANIMATION": { - "showId": "98", - "kitsu_id": "7446" - }, - "Diabolik Lovers": { - "showId": "99", - "kitsu_id": "7707" - }, - "Diabolik Lovers More, Blood": { - "showId": "100", - "kitsu_id": "10454" - }, - "Dog Days S2": { - "showId": "102", - "kitsu_id": "6598" - }, - "Dog Days S3": { - "showId": "103", - "kitsu_id": "7417" - }, - "Donten ni Warau": { - "showId": "104", - "kitsu_id": "7907" - }, - "Dragon Collection": { - "showId": "105", - "kitsu_id": "8352" - }, - "DRAMAtical Murder": { - "showId": "106", - "kitsu_id": "8331" - }, - "Durarara!! X2": { - "showId": "107", - "kitsu_id": "8314" - }, - "Dusk Maiden of Amnesia": { - "showId": "108", - "kitsu_id": "6734" - }, - "Ebiten": { - "showId": "109", - "kitsu_id": "7077" - }, - "Engaged to the Unidentified": { - "showId": "110", - "kitsu_id": "8027" - }, - "Etotama": { - "showId": "111", - "kitsu_id": "9976" - }, - "Eyeshield 21": { - "showId": "112", - "kitsu_id": "6" - }, - "Fairy Tail": { - "showId": "113", - "kitsu_id": "4676" - }, - "Fairy Tail S2": { - "showId": "114", - "kitsu_id": "8203" - }, - "Fantasista Doll": { - "showId": "115", - "kitsu_id": "7332" - }, - "Fate Kaleid Liner PRISMA ILLYA": { - "showId": "116", - "kitsu_id": "7173" - }, - "Fate Kaleid Liner PRISMA ILLYA 2wei Herz!": { - "showId": "117", - "kitsu_id": "9095" - }, - "Fate Kaleid Liner PRISMA ILLYA 2wei!": { - "showId": "118", - "kitsu_id": "8003" - }, - "Fate Stay Night - Unlimited Blade Works": { - "showId": "119", - "kitsu_id": "7882" - }, - "Fate Zero": { - "showId": "120", - "kitsu_id": "6028" - }, - "Fate Zero S2": { - "showId": "120", - "kitsu_id": "7658" - }, - "Folktales from Japan": { - "showId": "122", - "kitsu_id": "6897" - }, - "Free!": { - "showId": "123", - "kitsu_id": "7664" - }, - "Free! (Dub)": { - "showId": "123", - "kitsu_id": "7664" - }, - "Free! Eternal Summer": { - "showId": "124", - "kitsu_id": "8273" - }, - "Freezing Vibration": { - "showId": "125", - "kitsu_id": "7710" - }, - "Fuse Memoirs of the Hunter Girl": { - "showId": "126", - "kitsu_id": "6942" - }, - "Fushigi na Somera-chan": { - "showId": "127", - "kitsu_id": "10924" - }, - "Fuuun Ishin Dai Shogun": { - "showId": "128", - "kitsu_id": "8146" - }, - "Gakkou Gurashi!": { - "showId": "129", - "kitsu_id": "8644" - }, - "Gakusen Toshi Asterisk": { - "showId": "130", - "kitsu_id": "10857" - }, - "Galaxy Express 999": { - "showId": "131", - "kitsu_id": "1174" - }, - "Galilei Donna": { - "showId": "132", - "kitsu_id": "7836" - }, - "Gangsta": { - "showId": "133", - "kitsu_id": "8576" - }, - "Garo - The Animation": { - "showId": "134", - "kitsu_id": "8409" - }, - "Garo - The Crimson Moon": { - "showId": "135", - "kitsu_id": "10045" - }, - "Gatchaman Crowds": { - "showId": "136", - "kitsu_id": "7681" - }, - "Gatchaman Crowds Insight": { - "showId": "137", - "kitsu_id": "8180" - }, - "GATE": { - "showId": "138", - "kitsu_id": "10085" - }, - "gdgd Fairies 2": { - "showId": "139", - "kitsu_id": "7498" - }, - "Gekkan Shoujo Nozaki-kun": { - "showId": "140", - "kitsu_id": "8402" - }, - "Gen'ei o Kakeru Taiyou - Il Sole Penetra le Illusioni": { - "showId": "141", - "kitsu_id": "7670" - }, - "Genshiken Nidaime": { - "showId": "142", - "kitsu_id": "7677" - }, - "Ghost in the Shell Arise - Alternative Architecture": { - "showId": "143", - "kitsu_id": "10229" - }, - "Gifuu Doudou!! Kanetsugu to Keiji": { - "showId": "144", - "kitsu_id": "7744" - }, - "Gin no Saji": { - "showId": "145", - "kitsu_id": "7553" - }, - "Gin no Saji S2": { - "showId": "146", - "kitsu_id": "7860" - }, - "Gingitsune": { - "showId": "147", - "kitsu_id": "7703" - }, - "Gintama": { - "showId": "148", - "kitsu_id": "818" - }, - "Gintama Jump Special Anime Festa 2015": { - "showId": "148", - "kitsu_id": "11545" - }, - "Gintama Rerun": { - "showId": "148" - }, - "Girl Friend Beta": { - "showId": "150", - "kitsu_id": "8632" - }, - "GIRLS und PANZER": { - "showId": "151", - "kitsu_id": "7904" - }, - "GJ-bu": { - "showId": "152", - "kitsu_id": "7168" - }, - "Glasslip": { - "showId": "153", - "kitsu_id": "8325" - }, - "Gochuumon wa Usagi Desu ka": { - "showId": "154", - "kitsu_id": "8095" - }, - "Gochuumon wa Usagi Desu ka S2": { - "showId": "155", - "kitsu_id": "10346" - }, - "GOD EATER": { - "showId": "156", - "kitsu_id": "9130" - }, - "Golden Time": { - "showId": "157", - "kitsu_id": "7708" - }, - "Grisaia no Kajitsu": { - "showId": "158", - "kitsu_id": "7982" - }, - "Grisaia no Meikyuu": { - "showId": "159", - "kitsu_id": "10154" - }, - "Grisaia no Rakuen": { - "showId": "160", - "kitsu_id": "10155" - }, - "Gugure! Kokkuri-san": { - "showId": "161", - "kitsu_id": "8333" - }, - "Gundam Build Fighters": { - "showId": "162", - "kitsu_id": "7852" - }, - "Gundam Build Fighters Try": { - "showId": "163", - "kitsu_id": "8637" - }, - "Gundam Reconguista in G": { - "showId": "164", - "kitsu_id": "8391" - }, - "Gundam Unicorn": { - "showId": "165", - "kitsu_id": "4525" - }, - "Gunslinger Stratos": { - "showId": "166", - "kitsu_id": "10062" - }, - "Hackadoll the Animation": { - "showId": "167", - "kitsu_id": "10906" - }, - "Haikyuu!!": { - "showId": "168", - "kitsu_id": "8133" - }, - "Haikyuu!! S2": { - "showId": "169", - "kitsu_id": "10076" - }, - "Haiyore! Nyaruko-san": { - "showId": "170", - "kitsu_id": "6599" - }, - "Haiyore! Nyaruko-san W": { - "showId": "171", - "kitsu_id": "7295" - }, - "Hajime no Ippo - Rising": { - "showId": "172", - "kitsu_id": "7855" - }, - "Hakkenden - Eight Dogs of the East": { - "showId": "173", - "kitsu_id": "7284" - }, - "Hakkenden - Eight Dogs of the East S2": { - "showId": "174", - "kitsu_id": "7679" - }, - "Hakuoki Reimeiroku": { - "showId": "175", - "kitsu_id": "6884" - }, - "Hamatora": { - "showId": "176", - "kitsu_id": "8057" - }, - "Hanamonogatari": { - "showId": "177", - "kitsu_id": "8032" - }, - "Hanasaku Iroha": { - "showId": "178", - "kitsu_id": "5657" - }, - "Hanayamata": { - "showId": "179", - "kitsu_id": "8138" - }, - "Hayate no Gotoku! Can't Take My Eyes Off You": { - "showId": "180", - "kitsu_id": "7148" - }, - "Hayate no Gotoku! Cuties": { - "showId": "181", - "kitsu_id": "7561" - }, - "Heavy Object": { - "showId": "182", - "kitsu_id": "9731" - }, - "Hello!! Kiniro Mosaic": { - "showId": "183", - "kitsu_id": "8431" - }, - "Hentai Ouji to Warawanai Neko": { - "showId": "184", - "kitsu_id": "7233" - }, - "Hero Bank": { - "showId": "185", - "kitsu_id": "8282" - }, - "Hetalia - The World Twinkle": { - "showId": "186", - "kitsu_id": "10057" - }, - "Hi-sCoool! SeHa Girl": { - "showId": "187", - "kitsu_id": "8428" - }, - "Hibike! Euphonium": { - "showId": "188", - "kitsu_id": "9980" - }, - "High School Star Musical": { - "showId": "189", - "kitsu_id": "10783" - }, - "Highschool DxD BorN": { - "showId": "190", - "kitsu_id": "8514" - }, - "Hiiro no Kakera": { - "showId": "191", - "kitsu_id": "6739" - }, - "Hiiro no Kakera S2": { - "showId": "192", - "kitsu_id": "7146" - }, - "Himegoto": { - "showId": "193", - "kitsu_id": "8306" - }, - "Himouto! Umaru-chan": { - "showId": "194", - "kitsu_id": "10067" - }, - "Hitsugi no Chaika": { - "showId": "195", - "kitsu_id": "8008" - }, - "Hitsugi no Chaika - Avenging Battle": { - "showId": "196", - "kitsu_id": "8577" - }, - "Houkago no Pleiades": { - "showId": "197", - "kitsu_id": "5937" - }, - "Hozuki no Reitetsu": { - "showId": "198", - "kitsu_id": "8009" - }, - "Hunter x Hunter": { - "showId": "199", - "kitsu_id": "115" - }, - "Hyakka Ryouran Samurai Bride": { - "showId": "200", - "kitsu_id": "7244" - }, - "Hyperdimension Neptunia - The Animation": { - "showId": "202", - "kitsu_id": "7379" - }, - "ImoCho - Another Shitty Sister LN Adaptation": { - "showId": "204", - "kitsu_id": "8060" - }, - "ImoCho - Another Shitty Sister Manga Adaptation": { - "showId": "204", - "kitsu_id": "8060" - }, - "Inari, Konkon, Koi Iroha": { - "showId": "205", - "kitsu_id": "7988" - }, - "Infinite Stratos 2": { - "showId": "206", - "kitsu_id": "7733" - }, - "Inou Battle wa Nichijou-kei no Naka de": { - "showId": "207", - "kitsu_id": "8452" - }, - "Inu to Hasami wa Tsukaiyou": { - "showId": "208", - "kitsu_id": "7673" - }, - "Inu x Boku Secret Service": { - "showId": "209", - "kitsu_id": "6439" - }, - "Inugami-san to Nekoyama-san": { - "showId": "210", - "kitsu_id": "8263" - }, - "Ishida to Asakura": { - "showId": "211", - "kitsu_id": "7404" - }, - "ISUCA": { - "showId": "212", - "kitsu_id": "8645" - }, - "Itoshi no Muco": { - "showId": "213", - "kitsu_id": "10978" - }, - "Ixion Saga DT": { - "showId": "214", - "kitsu_id": "7165" - }, - "Jinrui wa Suitai Shimashita": { - "showId": "215", - "kitsu_id": "6146" - }, - "Jitsu wa Watashi wa": { - "showId": "216", - "kitsu_id": "10350" - }, - "JK Meshi!": { - "showId": "217", - "kitsu_id": "11369" - }, - "JoJo's Bizarre Adventure - Stardust Crusaders": { - "showId": "218", - "kitsu_id": "8063" - }, - "JoJo's Bizarre Adventure - Stardust Crusaders Egypt Arc": { - "showId": "218", - "kitsu_id": "8739" - }, - "Jormungand": { - "showId": "220", - "kitsu_id": "6726" - }, - "Joukamachi no Dandelion": { - "showId": "221", - "kitsu_id": "10017" - }, - "Junjou Romantica 3": { - "showId": "222", - "kitsu_id": "8728" - }, - "K": { - "showId": "223", - "kitsu_id": "7125" - }, - "K - Return of Kings": { - "showId": "224", - "kitsu_id": "9964" - }, - "Kaasan Mom's Life": { - "showId": "225", - "kitsu_id": "4432" - }, - "Kagewani": { - "showId": "226", - "kitsu_id": "10860" - }, - "Kagewani S2": { - "showId": "226", - "kitsu_id": "11822" - }, - "Kaiji - Ultimate Survivor": { - "showId": "227", - "kitsu_id": "2713" - }, - "Kaiji S2 - Against All Rules": { - "showId": "228", - "kitsu_id": "6109" - }, - "Kaitou Joker": { - "showId": "229", - "kitsu_id": "8664" - }, - "Kamigami no Asobi": { - "showId": "230", - "kitsu_id": "8160" - }, - "Kamisama Dolls": { - "showId": "231", - "kitsu_id": "6153" - }, - "Kamisama Kiss": { - "showId": "232", - "kitsu_id": "7157" - }, - "Kamisama Kiss 2": { - "showId": "233", - "kitsu_id": "8716" - }, - "Kamisama no Inai Nichiyoubi": { - "showId": "234", - "kitsu_id": "7358" - }, - "Kamisama no Memo-chou": { - "showId": "235", - "kitsu_id": "6244" - }, - "Kanojo ga Flag wo Oraretara": { - "showId": "236", - "kitsu_id": "8011" - }, - "Kantai Collection": { - "showId": "237", - "kitsu_id": "8039" - }, - "Karen Senki": { - "showId": "238", - "kitsu_id": "9100" - }, - "Kekkai Sensen": { - "showId": "239", - "kitsu_id": "8646" - }, - "Kill la Kill": { - "showId": "240", - "kitsu_id": "7712" - }, - "Kimi to Boku": { - "showId": "241", - "kitsu_id": "6191" - }, - "Kimi to Boku 2": { - "showId": "242", - "kitsu_id": "6581" - }, - "Kindaichi Case Files R": { - "showId": "243", - "kitsu_id": "8310" - }, - "Kindaichi Case Files R S2": { - "showId": "243", - "kitsu_id": "11211" - }, - "Kiniro Mosaic": { - "showId": "245", - "kitsu_id": "7501" - }, - "Kitakubu Katsudou Kiroku": { - "showId": "246", - "kitsu_id": "7676" - }, - "Kokoro Connect": { - "showId": "247", - "kitsu_id": "6626" - }, - "Komori-san wa Kotowarenai!": { - "showId": "248", - "kitsu_id": "11208" - }, - "Kono Naka ni Hitori, Imouto ga Iru!": { - "showId": "249", - "kitsu_id": "6947" - }, - "Kotoura-san": { - "showId": "250", - "kitsu_id": "7245" - }, - "Koufuku Graffiti": { - "showId": "251", - "kitsu_id": "8647" - }, - "Kuroko's Basketball": { - "showId": "252", - "kitsu_id": "6595" - }, - "Kuroko's Basketball 2": { - "showId": "252", - "kitsu_id": "7545" - }, - "Kuroko's Basketball 3": { - "showId": "252", - "kitsu_id": "8524" - }, - "Kuroshitsuji - Book of Circus": { - "showId": "255", - "kitsu_id": "8268" - }, - "Kuusen Madoushi Kouhosei no Kyoukan": { - "showId": "256", - "kitsu_id": "8650" - }, - "Kyoukai no Kanata": { - "showId": "257", - "kitsu_id": "7714" - }, - "Kyoukai no Rinne": { - "showId": "258", - "kitsu_id": [ - "10018", - "11366", - "12561" - ] - }, - "Kyoukai Senjou no Horizon S2": { - "showId": "259", - "kitsu_id": "6746" - }, - "Kyousougiga": { - "showId": "260", - "kitsu_id": "7870" - }, - "La Corda d'Oro Blue Sky": { - "showId": "261", - "kitsu_id": "8012" - }, - "La storia della Arcana Famiglia": { - "showId": "262", - "kitsu_id": "6859" - }, - "Lance N' Masques": { - "showId": "263", - "kitsu_id": "8666" - }, - "Little Busters!": { - "showId": "264", - "kitsu_id": "7005" - }, - "Little Busters! Refrain": { - "showId": "265", - "kitsu_id": "7704" - }, - "Little Witch Academia The Enchanted Parade": { - "showId": "266", - "kitsu_id": "7862" - }, - "Locodol": { - "showId": "267", - "kitsu_id": "8267" - }, - "Log Horizon": { - "showId": "268", - "kitsu_id": "7622" - }, - "Log Horizon 2": { - "showId": "269", - "kitsu_id": "8313" - }, - "Love Lab": { - "showId": "270", - "kitsu_id": "7410" - }, - "Love Live! School Idol Project S2": { - "showId": "271", - "kitsu_id": "7871" - }, - "Love Live! School Idol Project": { - "showId": "272", - "kitsu_id": "7203" - }, - "Love Stage!!": { - "showId": "273", - "kitsu_id": "7767" - }, - "Lychee Light Club": { - "showId": "274", - "kitsu_id": "7202" - }, - "M3 - Sono Kuroki Hagane": { - "showId": "275", - "kitsu_id": "8335" - }, - "Madan no Ou to Vanadis": { - "showId": "276", - "kitsu_id": "8630" - }, - "Magi": { - "showId": "277", - "kitsu_id": "7129" - }, - "Magi S2": { - "showId": "278", - "kitsu_id": "7696" - }, - "Magic Kaito 1412": { - "showId": "279", - "kitsu_id": "8636" - }, - "Magical Girl Lyrical Nanoha The MOVIE 2nd": { - "showId": "280", - "kitsu_id": "6056" - }, - "Magical Warfare": { - "showId": "281", - "kitsu_id": "7879" - }, - "Mahou Shoujo Taisen": { - "showId": "282", - "kitsu_id": "8380" - }, - "Mahouka": { - "showId": "283", - "kitsu_id": "8053" - }, - "Majestic Prince": { - "showId": "284", - "kitsu_id": "7325" - }, - "Majikoi~Oh! Samurai Girls": { - "showId": "285", - "kitsu_id": "6081" - }, - "Majimoji Rurumo": { - "showId": "286", - "kitsu_id": "8459" - }, - "Majimoji Rurumo OVA": { - "showId": "286", - "kitsu_id": "42121" - }, - "Majin Bone": { - "showId": "287", - "kitsu_id": "8283" - }, - "Makai Ouji - Devils and Realist": { - "showId": "288", - "kitsu_id": "7544" - }, - "Maken-ki! Two": { - "showId": "289", - "kitsu_id": "7275" - }, - "Makura no Danshi": { - "showId": "290", - "kitsu_id": "10907" - }, - "Mangaka-san to Assistant-san to": { - "showId": "291", - "kitsu_id": "8148" - }, - "Mangirl!": { - "showId": "292", - "kitsu_id": "7071" - }, - "Maoyuu Maou Yuusha": { - "showId": "293", - "kitsu_id": "7174" - }, - "Maria the Virgin Witch": { - "showId": "294", - "kitsu_id": "8951" - }, - "Medaka Box": { - "showId": "295", - "kitsu_id": "6591" - }, - "Medaka Box S2": { - "showId": "296", - "kitsu_id": "7132" - }, - "Meganebu!": { - "showId": "297", - "kitsu_id": "7851" - }, - "Mekakucity Actors": { - "showId": "298", - "kitsu_id": "8000" - }, - "Mikagura Gakuen Kumikyoku": { - "showId": "299", - "kitsu_id": "10072" - }, - "Military!": { - "showId": "300", - "kitsu_id": "8850" - }, - "Million Doll": { - "showId": "301", - "kitsu_id": "10465" - }, - "Miss Monochrome": { - "showId": "302", - "kitsu_id": "7911" - }, - "Miss Monochrome S2": { - "showId": "303", - "kitsu_id": "10765" - }, - "Miss Monochrome S3": { - "showId": "304", - "kitsu_id": "11370" - }, - "Mobile Suit Gundam - Iron-Blooded Orphans": { - "showId": "305", - "kitsu_id": "11206" - }, - "Mobile Suit Gundam The Origin": { - "showId": "306", - "kitsu_id": "6415" - }, - "Momo Kyun Sword": { - "showId": "307", - "kitsu_id": "8557" - }, - "Mondaijitachi ga Isekai Kara Kuru Sou Desu yo": { - "showId": "308", - "kitsu_id": "7239" - }, - "Monogatari Series Second Season": { - "showId": "309", - "kitsu_id": "7573" - }, - "Monster Musume no Iru Nichijou": { - "showId": "310", - "kitsu_id": "10748" - }, - "Moretsu Pirates": { - "showId": "311", - "kitsu_id": "5531" - }, - "Moritasan wa Mukuchi": { - "showId": "312", - "kitsu_id": "6285" - }, - "Moyashimon Returns": { - "showId": "313", - "kitsu_id": "6957" - }, - "Mushibugyo": { - "showId": "314", - "kitsu_id": "7653" - }, - "Mushishi S2": { - "showId": "315", - "kitsu_id": "8204" - }, - "Mushishi Tokubetsu-hen - Hihamukage": { - "showId": "316", - "kitsu_id": "8112" - }, - "Muv-Luv Alternative - Total Eclipse": { - "showId": "317", - "kitsu_id": "6442" - }, - "My Sister Came - Onee-chan ga Kita": { - "showId": "318", - "kitsu_id": "8083" - }, - "Mysterious Girlfriend X": { - "showId": "319", - "kitsu_id": "6740" - }, - "Nagi no Asukara": { - "showId": "320", - "kitsu_id": "7370" - }, - "Namiuchigiwa no Muromi-san": { - "showId": "321", - "kitsu_id": "7549" - }, - "Naruto SD - Rock Lee no Seishun Full-Power Ninden": { - "showId": "322", - "kitsu_id": "6861" - }, - "Naruto Shippuuden": { - "showId": "323", - "kitsu_id": "1555" - }, - "Natsume Yuujinchou San": { - "showId": "324", - "kitsu_id": "6157" - }, - "Natsume Yuujinchou Shi": { - "showId": "325", - "kitsu_id": "6557" - }, - "Natsuyuki Rendezvous": { - "showId": "326", - "kitsu_id": "6996" - }, - "Nekogami Yaoyorozu": { - "showId": "327", - "kitsu_id": "5947" - }, - "Nichijou": { - "showId": "328", - "kitsu_id": "6062" - }, - "Ninja Slayer": { - "showId": "329", - "kitsu_id": "8642" - }, - "Nisekoi": { - "showId": "330", - "kitsu_id": "7821" - }, - "Nisekoi S2": { - "showId": "331", - "kitsu_id": "9178" - }, - "Nisemonogatari": { - "showId": "332", - "kitsu_id": "6546" - }, - "No Game No Life": { - "showId": "333", - "kitsu_id": "7880" - }, - "No-Rin": { - "showId": "334", - "kitsu_id": "7782" - }, - "No. 6": { - "showId": "335", - "kitsu_id": "6059" - }, - "Nobunaga Concerto": { - "showId": "336", - "kitsu_id": "8558" - }, - "Nobunaga the Fool": { - "showId": "337", - "kitsu_id": "8076" - }, - "Nobunagun": { - "showId": "338", - "kitsu_id": "7771" - }, - "Non Non Biyori": { - "showId": "339", - "kitsu_id": "7711" - }, - "Non Non Biyori Repeat": { - "showId": "340", - "kitsu_id": "8410" - }, - "Noragami": { - "showId": "341", - "kitsu_id": "7881" - }, - "Noragami Aragoto": { - "showId": "342", - "kitsu_id": "10800" - }, - "NouKome": { - "showId": "343", - "kitsu_id": "7846" - }, - "Oda Nobuna no Yabou": { - "showId": "344", - "kitsu_id": "7657" - }, - "Okusama ga Seitokaichou!": { - "showId": "345", - "kitsu_id": "10069" - }, - "Okusama ga Seitokaichou! (Uncensored)": { - "showId": "345", - "kitsu_id": "10069" - }, - "One Piece": { - "showId": "347", - "kitsu_id": "12" - }, - "One Piece - Episode of Sabo": { - "showId": "348", - "kitsu_id": "11292" - }, - "One Piece 3D2Y": { - "showId": "349", - "kitsu_id": "8718" - }, - "One Week Friends": { - "showId": "350", - "kitsu_id": "8096" - }, - "One-Punch Man": { - "showId": "351", - "kitsu_id": "10740" - }, - "Onii-chan Dakedo Ai Sae Areba Kankeinai yo ne": { - "showId": "352", - "kitsu_id": "7094" - }, - "Onsen Yousei Hakone-chan": { - "showId": "353", - "kitsu_id": "11174" - }, - "Ookami Shoujo to Kuro Ouji": { - "showId": "354", - "kitsu_id": "8697" - }, - "Ore Monogatari!!": { - "showId": "355", - "kitsu_id": "10016" - }, - "Ore Twintail ni Narimasu": { - "showId": "356", - "kitsu_id": "8710" - }, - "Oreca Battle": { - "showId": "357", - "kitsu_id": "8395" - }, - "Oreimo S2": { - "showId": "358", - "kitsu_id": "7006" - }, - "Orenchi no Furo Jijou": { - "showId": "359", - "kitsu_id": "8575" - }, - "OreShura": { - "showId": "360", - "kitsu_id": "7162" - }, - "Osomatsu-san": { - "showId": "361", - "kitsu_id": "11178" - }, - "Outbreak Company": { - "showId": "362", - "kitsu_id": "7837" - }, - "OverLord": { - "showId": "363", - "kitsu_id": "9965" - }, - "Owarimonogatari": { - "showId": "364", - "kitsu_id": "11182" - }, - "Ozma": { - "showId": "365", - "kitsu_id": "6788" - }, - "Papa no Iukoto wo Kikinasai!": { - "showId": "366", - "kitsu_id": "6469" - }, - "Parasyte - the maxim": { - "showId": "367", - "kitsu_id": "8147" - }, - "Peeping Life S1": { - "showId": "368", - "kitsu_id": "4597" - }, - "Persona 4 - The Golden Animation": { - "showId": "369", - "kitsu_id": "8458" - }, - "Phi Brain S2": { - "showId": "370", - "kitsu_id": "6803" - }, - "Phi Brain S3": { - "showId": "371", - "kitsu_id": "7288" - }, - "Photo Kano": { - "showId": "372", - "kitsu_id": "7421" - }, - "Ping Pong the Animation": { - "showId": "373", - "kitsu_id": "8262" - }, - "Plastic Memories": { - "showId": "374", - "kitsu_id": "9538" - }, - "Polar Bear Cafe": { - "showId": "375", - "kitsu_id": "6821" - }, - "Poyopoyo": { - "showId": "376", - "kitsu_id": "6645" - }, - "Prison School": { - "showId": "377", - "kitsu_id": "10734" - }, - "PSYCHO-PASS": { - "showId": "378", - "kitsu_id": "7000" - }, - "PSYCHO-PASS Extended Edition": { - "showId": "378", - "kitsu_id": "8574" - }, - "PSYCHO-PASS 2": { - "showId": "379", - "kitsu_id": "7863" - }, - "Punch Line": { - "showId": "381", - "kitsu_id": "10038" - }, - "Pupa": { - "showId": "382", - "kitsu_id": "7845" - }, - "Queen's Blade Rebellion": { - "showId": "383", - "kitsu_id": "6620" - }, - "R-15": { - "showId": "384", - "kitsu_id": "6265" - }, - "Rail Wars!": { - "showId": "385", - "kitsu_id": "8155" - }, - "Rakudai Kishi no Cavalry": { - "showId": "386", - "kitsu_id": "10745" - }, - "Ranpo Kitan - Game of Laplace": { - "showId": "387", - "kitsu_id": "10039" - }, - "Re Hamatora": { - "showId": "388", - "kitsu_id": "8523" - }, - "Re-Kan!": { - "showId": "389", - "kitsu_id": "8668" - }, - "Recorder to Randoseru": { - "showId": "391", - "kitsu_id": "6519" - }, - "Recorder to Randoseru Mi": { - "showId": "392", - "kitsu_id": "7695" - }, - "Ro-Kyu-Bu - Fast Break!": { - "showId": "393", - "kitsu_id": "6246" - }, - "Robot Girls Z": { - "showId": "394", - "kitsu_id": "7875" - }, - "Robot Girls Z Plus": { - "showId": "395", - "kitsu_id": "10307" - }, - "Robotics;Notes": { - "showId": "396", - "kitsu_id": "6999" - }, - "Rokka no Yuusha": { - "showId": "397", - "kitsu_id": "10029" - }, - "Rokujouma no Shinryakusha": { - "showId": "398", - "kitsu_id": "8336" - }, - "Rowdy Sumo Wrestler Matsutaro": { - "showId": "399", - "kitsu_id": "8384" - }, - "Rozen Maiden (2013)": { - "showId": "400", - "kitsu_id": "7678" - }, - "Rurouni Kenshin": { - "showId": "401", - "kitsu_id": "27" - }, - "Ryuugajou Nanana no Maizoukin": { - "showId": "402", - "kitsu_id": "8162" - }, - "Sabagebu!": { - "showId": "403", - "kitsu_id": "8016" - }, - "Sacred Seven": { - "showId": "404", - "kitsu_id": "6058" - }, - "Saekano": { - "showId": "405", - "kitsu_id": "8406" - }, - "Sailor Moon Crystal": { - "showId": "406", - "kitsu_id": "7163" - }, - "Saint Seiya - Soul of Gold": { - "showId": "407", - "kitsu_id": "10026" - }, - "Saint Seiya Omega": { - "showId": "408", - "kitsu_id": "6850" - }, - "Saint Seiya The Lost Canvas": { - "showId": "409", - "kitsu_id": "4458" - }, - "Sakamichi no Apollon": { - "showId": "410", - "kitsu_id": "6760" - }, - "Saki - The Nationals": { - "showId": "411", - "kitsu_id": "7375" - }, - "Saki Episode of Side A": { - "showId": "412", - "kitsu_id": "6392" - }, - "Sakura Trick": { - "showId": "413", - "kitsu_id": "7978" - }, - "Sakurako-san no Ashimoto ni wa Shitai ga Umatteiru": { - "showId": "414", - "kitsu_id": "10706" - }, - "Sakurasou no Pet na Kanojo": { - "showId": "415", - "kitsu_id": "7023" - }, - "Samurai Flamenco": { - "showId": "416", - "kitsu_id": "7835" - }, - "Seiken Tsukai no World Break": { - "showId": "417", - "kitsu_id": "8339" - }, - "Seikoku no Dragonar": { - "showId": "418", - "kitsu_id": "7877" - }, - "Seirei Tsukai no Blade Dance": { - "showId": "419", - "kitsu_id": "7878" - }, - "Seitokai no Ichizon Lv.2": { - "showId": "420", - "kitsu_id": "6193" - }, - "Seitokai Yakuindomo S2": { - "showId": "421", - "kitsu_id": "8061" - }, - "Sekai de Ichiban Tsuyoku Naritai!": { - "showId": "422", - "kitsu_id": "6592" - }, - "Sekai Seifuku - Bouryaku no Zvezda": { - "showId": "423", - "kitsu_id": "8082" - }, - "selector infected WIXOSS": { - "showId": "424", - "kitsu_id": "8285" - }, - "selector spread WIXOSS": { - "showId": "425", - "kitsu_id": "8468" - }, - "Sengoku BASARA Judge End": { - "showId": "426", - "kitsu_id": "8272" - }, - "Sengoku Collection": { - "showId": "427", - "kitsu_id": "6774" - }, - "Sengoku Musou": { - "showId": "428", - "kitsu_id": "10013" - }, - "Sengoku Musou Sanada no Shou": { - "showId": "429", - "kitsu_id": "8194" - }, - "Senki Zesshou Symphogear GX": { - "showId": "430", - "kitsu_id": "8136" - }, - "Senyuu": { - "showId": "431", - "kitsu_id": "7303" - }, - "Senyuu S2": { - "showId": "431", - "kitsu_id": "7719" - }, - "Seraph of the End": { - "showId": "433", - "kitsu_id": "8736" - }, - "Seraph of the End S2": { - "showId": "434", - "kitsu_id": "10082" - }, - "Servant x Service": { - "showId": "435", - "kitsu_id": "7669" - }, - "She and Her Cat": { - "showId": "436", - "kitsu_id": "894" - }, - "Shigatsu wa Kimi no Uso": { - "showId": "437", - "kitsu_id": "8403" - }, - "Shimoneta": { - "showId": "438", - "kitsu_id": "10352" - }, - "Shin Atashinchi": { - "showId": "439", - "kitsu_id": "10977" - }, - "Shin Sekai Yori": { - "showId": "440", - "kitsu_id": "6887" - }, - "Shin Strange+": { - "showId": "441", - "kitsu_id": "8344" - }, - "Shingeki no Bahamut - Genesis": { - "showId": "442", - "kitsu_id": "8195" - }, - "Shingeki no Kyojin": { - "showId": "443", - "kitsu_id": "7442" - }, - "Shingeki no Kyojin S2": { - "showId": "443", - "kitsu_id": "8671" - }, - "Shingeki no Kyojin S3": { - "showId": "443", - "kitsu_id": [ - "13569", - "41982" - ] - }, - "Shingeki! Kyojin Chuugakkou": { - "showId": "444", - "kitsu_id": "11315" - }, - "Shinmai Maou no Testament": { - "showId": "445", - "kitsu_id": "8652" - }, - "Shinmai Maou no Testament BURST": { - "showId": "446", - "kitsu_id": "10757" - }, - "Shinryaku Ika Musume S2": { - "showId": "447", - "kitsu_id": "6156" - }, - "Shirobako": { - "showId": "448", - "kitsu_id": "8698" - }, - "Shokugeki no Soma": { - "showId": "449", - "kitsu_id": "9967" - }, - "Shokugeki no Soma S2": { - "showId": "449", - "kitsu_id": "11612" - }, - "Shomin Sample": { - "showId": "450", - "kitsu_id": "8651" - }, - "Shounen Hollywood": { - "showId": "451", - "kitsu_id": "8521" - }, - "Shounen Hollywood - Holly Stage for 50": { - "showId": "452", - "kitsu_id": "9175" - }, - "Show By Rock!!": { - "showId": "453", - "kitsu_id": "9729" - }, - "SKET Dance": { - "showId": "454", - "kitsu_id": "5908" - }, - "Slam Dunk": { - "showId": "455", - "kitsu_id": "148" - }, - "So, I Can't Play H!": { - "showId": "456", - "kitsu_id": "7656" - }, - "SoniAni - SUPER SONICO THE ANIMATION": { - "showId": "457", - "kitsu_id": "8031" - }, - "Sora no Method": { - "showId": "458", - "kitsu_id": "8337" - }, - "Sore ga Seiyuu!": { - "showId": "459", - "kitsu_id": "10153" - }, - "Soredemo Sekai wa Utsukushii": { - "showId": "460", - "kitsu_id": "8258" - }, - "Soukyuu no Fafner Dead Aggressor - Exodus": { - "showId": "461", - "kitsu_id": "7575" - }, - "Soukyuu no Fafner Dead Aggressor - Exodus S2": { - "showId": "461", - "kitsu_id": "10854" - }, - "Soul Eater Not!": { - "showId": "463", - "kitsu_id": "8151" - }, - "Space Brothers": { - "showId": "464", - "kitsu_id": "6729" - }, - "Space Dandy": { - "showId": "465", - "kitsu_id": "7910" - }, - "Space Dandy 2": { - "showId": "466", - "kitsu_id": "8312" - }, - "Sparrow's Hotel": { - "showId": "467", - "kitsu_id": "7654" - }, - "Steins;Gate": { - "showId": "468", - "kitsu_id": "5646" - }, - "Stella Jogakuin Koutouka C3-bu": { - "showId": "469", - "kitsu_id": "7671" - }, - "Straight Title Robot Anime": { - "showId": "470", - "kitsu_id": "7589" - }, - "Strange+": { - "showId": "471", - "kitsu_id": "8099" - }, - "Strike the Blood": { - "showId": "472", - "kitsu_id": "7715" - }, - "Subete ga F ni Naru": { - "showId": "473", - "kitsu_id": "10037" - }, - "Suisei no Gargantia": { - "showId": "474", - "kitsu_id": "7449" - }, - "Sukitte Ii na yo.": { - "showId": "475", - "kitsu_id": "7109" - }, - "Sword Art Online": { - "showId": "476", - "kitsu_id": "6589" - }, - "Sword Art Online EXTRA EDITION": { - "showId": "477", - "kitsu_id": "7914" - }, - "Sword Art Online II": { - "showId": "478", - "kitsu_id": "8174" - }, - "Taimadou Gakuen 35 Shiken Shoutai": { - "showId": "479", - "kitsu_id": "8669" - }, - "Takamiya Nasuno Desu!": { - "showId": "480", - "kitsu_id": "10074" - }, - "Tantei Team KZ Jiken Note": { - "showId": "481", - "kitsu_id": "11280" - }, - "Tari Tari": { - "showId": "482", - "kitsu_id": "6941" - }, - "Teekyu": { - "showId": "483", - "kitsu_id": "7217" - }, - "Teekyu S2": { - "showId": "483", - "kitsu_id": "7718" - }, - "Teekyu S3": { - "showId": "483", - "kitsu_id": "7980" - }, - "Teekyu S4": { - "showId": "483", - "kitsu_id": "8906" - }, - "Teekyu S5": { - "showId": "483", - "kitsu_id": "10858" - }, - "Teekyu S6": { - "showId": "483", - "kitsu_id": "11334" - }, - "Teekyu S7": { - "showId": "483", - "kitsu_id": "11597" - }, - "Teekyu S8": { - "showId": "483", - "kitsu_id": "12473" - }, - "Teekyu S9": { - "showId": "483", - "kitsu_id": "13342" - }, - "Terra Formars": { - "showId": "489", - "kitsu_id": "8356" - }, - "Terra Formars (Uncensored)": { - "showId": "489", - "kitsu_id": "8356" - }, - "Tesagure! Bukatsumono Spin-off Purupurun Sharumu to Asobou": { - "showId": "491", - "kitsu_id": "10339" - }, - "The Disappearance of Nagato Yuki-chan": { - "showId": "492", - "kitsu_id": "8144" - }, - "The iDOLM@STER": { - "showId": "494", - "kitsu_id": "6111" - }, - "THE iDOLM@STER CINDERELLA GIRLS": { - "showId": "495", - "kitsu_id": "8777" - }, - "The Knight in the Area": { - "showId": "496", - "kitsu_id": "6567" - }, - "The New Prince of Tennis": { - "showId": "497", - "kitsu_id": "6501" - }, - "The New Prince of Tennis OVA vs Genius10": { - "showId": "498", - "kitsu_id": "8034" - }, - "The New Prince of Tennis Specials": { - "showId": "499", - "kitsu_id": "6920" - }, - "The Pilot's Love Song": { - "showId": "500", - "kitsu_id": "7770" - }, - "The Rolling Girls": { - "showId": "501", - "kitsu_id": "8667" - }, - "The World God Only Knows - Goddesses Arc": { - "showId": "502", - "kitsu_id": "7496" - }, - "To LOVE-Ru Darkness 2nd": { - "showId": "505", - "kitsu_id": "10078" - }, - "Tokyo ESP": { - "showId": "506", - "kitsu_id": "7706" - }, - "Tokyo Ghoul": { - "showId": "507", - "kitsu_id": "8271" - }, - "Tokyo Ghoul Root A": { - "showId": "508", - "kitsu_id": "9135" - }, - "Tonari no Kaibutsu-kun": { - "showId": "510", - "kitsu_id": "7099" - }, - "Tonari no Seki-kun": { - "showId": "511", - "kitsu_id": "7761" - }, - "Toradora! (DUB)": { - "showId": "512", - "kitsu_id": "3532" - }, - "Toriko": { - "showId": "513", - "kitsu_id": "6002" - }, - "Triage X": { - "showId": "514", - "kitsu_id": "8952" - }, - "Tribe Cool Crew": { - "showId": "515", - "kitsu_id": "9153" - }, - "Trinity Seven": { - "showId": "516", - "kitsu_id": "8607" - }, - "Tsukimonogatari": { - "showId": "517", - "kitsu_id": "9961" - }, - "Tsuritama": { - "showId": "518", - "kitsu_id": "6836" - }, - "Twin Angel - Twinkle Paradise": { - "showId": "519", - "kitsu_id": "6083" - }, - "Uchouten Kazoku": { - "showId": "520", - "kitsu_id": "7675" - }, - "UN-GO": { - "showId": "521", - "kitsu_id": "6353" - }, - "Unbreakable Machine-Doll": { - "showId": "522", - "kitsu_id": "7617" - }, - "Unlimited Fafnir": { - "showId": "524", - "kitsu_id": "8649" - }, - "Upotte!!": { - "showId": "525", - "kitsu_id": "6704" - }, - "Urawa no Usagi-chan": { - "showId": "526", - "kitsu_id": "9949" - }, - "Usagi Drop": { - "showId": "527", - "kitsu_id": "6060" - }, - "Ushinawareta Mirai wo Motomete": { - "showId": "528", - "kitsu_id": "8199" - }, - "Ushio to Tora": { - "showId": "529", - "kitsu_id": "10359" - }, - "Uta No Prince Sama": { - "showId": "530", - "kitsu_id": "6126" - }, - "Uta no Prince Sama 2": { - "showId": "531", - "kitsu_id": "6796" - }, - "Uta no Prince Sama Revolutions": { - "showId": "532", - "kitsu_id": "8143" - }, - "Utakoi": { - "showId": "533", - "kitsu_id": "6943" - }, - "Utawarerumono - Itsuwari no Kamen": { - "showId": "534", - "kitsu_id": "11021" - }, - "Valvrave the Liberator": { - "showId": "535", - "kitsu_id": "7487" - }, - "Valvrave the Liberator S2": { - "showId": "536", - "kitsu_id": "7698" - }, - "Wakaba Girl": { - "showId": "538", - "kitsu_id": "10767" - }, - "Wakako Zake": { - "showId": "539", - "kitsu_id": "10844" - }, - "Wake Up, Girls ZOO!": { - "showId": "540", - "kitsu_id": "8812" - }, - "Wake Up, Girls!": { - "showId": "541", - "kitsu_id": "7774" - }, - "Wake Up, Girls! - Seven Idols": { - "showId": "541", - "kitsu_id": "8200" - }, - "Walkure Romanze": { - "showId": "543", - "kitsu_id": "7849" - }, - "Watamote": { - "showId": "544", - "kitsu_id": "7504" - }, - "White Album 2": { - "showId": "545", - "kitsu_id": "7697" - }, - "Witch Craft Works": { - "showId": "546", - "kitsu_id": "8017" - }, - "Wizard Barristers - Benmashi Cecil": { - "showId": "547", - "kitsu_id": "7898" - }, - "Wonder Momo": { - "showId": "548", - "kitsu_id": "8290" - }, - "Wooser no Sono Higurashi Kakusei-hen": { - "showId": "549", - "kitsu_id": "7979" - }, - "Wooser no Sono Higurashi Mugen-hen": { - "showId": "550", - "kitsu_id": "10138" - }, - "Working'!!": { - "showId": "551", - "kitsu_id": "6220" - }, - "Working!!!": { - "showId": "552", - "kitsu_id": "8712" - }, - "World Trigger": { - "showId": "553", - "kitsu_id": "8631" - }, - "Yahari Ore no Seishun Love Come wa Machigatteiru": { - "showId": "554", - "kitsu_id": "7169" - }, - "Yahari Ore no Seishun Love Come wa Machigatteiru Zoku": { - "showId": "555", - "kitsu_id": "8478" - }, - "Yama no Susume": { - "showId": "556", - "kitsu_id": "7117" - }, - "Yama no Susume 2": { - "showId": "557", - "kitsu_id": "8201" - }, - "Yamada-kun and the Seven Witches": { - "showId": "558", - "kitsu_id": "10042" - }, - "Yami Shibai - Japanese Ghost Stories": { - "showId": "559", - "kitsu_id": "7840" - }, - "Yami Shibai - Japanese Ghost Stories 2": { - "showId": "560", - "kitsu_id": "8359" - }, - "Yoru no Yatterman": { - "showId": "561", - "kitsu_id": "10011" - }, - "Young Black Jack": { - "showId": "562", - "kitsu_id": "10914" - }, - "Yowamushi Pedal": { - "showId": "563", - "kitsu_id": "7700" - }, - "Yowamushi Pedal - Grande Road": { - "showId": "564", - "kitsu_id": "8635" - }, - "Yuki Yuna wa Yusha de Aru": { - "showId": "565", - "kitsu_id": "8638" - }, - "Yuri Kuma Arashi": { - "showId": "566", - "kitsu_id": "8738" - }, - "Yurumate3Dei": { - "showId": "567", - "kitsu_id": "7156" - }, - "YuruYuri": { - "showId": "568", - "kitsu_id": "6205" - }, - "YuruYuri S2": { - "showId": "569", - "kitsu_id": "6724" - }, - "YuruYuri S3": { - "showId": "570", - "kitsu_id": "10742" - }, - "Yuushibu": { - "showId": "571", - "kitsu_id": "7725" - }, - "YUYUSHIKI": { - "showId": "572", - "kitsu_id": "7338" - }, - "Zankyou no Terror": { - "showId": "573", - "kitsu_id": "8342" - }, - "Zero no Tsukaima Final": { - "showId": "574", - "kitsu_id": "6493" - }, - "Zetsuen no Tempest": { - "showId": "576", - "kitsu_id": "7078" - }, - "Zettai Bouei Leviathan": { - "showId": "577", - "kitsu_id": "7644" - }, - "Zettai Karen Children THE UNLIMITED - Hyoubu Kyousuke": { - "showId": "578", - "kitsu_id": "7356" - }, - "ZX IGNITION": { - "showId": "579", - "kitsu_id": "8030" - }, - "Cardfight!! Vanguard G GIRS Crisis": { - "showId": "580", - "kitsu_id": "11220" - }, - "Ame-iro Cocoa S2": { - "showId": "581", - "kitsu_id": "11158" - }, - "Brave Beats": { - "showId": "582", - "kitsu_id": "11387" - }, - "Ani Tore! EX": { - "showId": "583", - "kitsu_id": "11347" - }, - "Valkyrie Drive - Mermaid": { - "showId": "584", - "kitsu_id": "10766" - }, - "Hidan no Aria AA": { - "showId": "585", - "kitsu_id": "10077" - }, - "Kateikyoushi Hitman Reborn!": { - "showId": "587", - "kitsu_id": "1444" - }, - "Digimon Adventure tri": { - "showId": "588", - "kitsu_id": "8684" - }, - "Digimon Xros Wars": { - "showId": "590", - "kitsu_id": "5404" - }, - "Digimon Xros Wars S2": { - "showId": "590", - "kitsu_id": "6183" - }, - "Senki Zesshou Symphogear": { - "showId": "594", - "kitsu_id": "6587" - }, - "Senki Zesshou Symphogear G": { - "showId": "595", - "kitsu_id": "7311" - }, - "Love Live! The School Idol Movie": { - "showId": "597", - "kitsu_id": "8531" - }, - "Wooser no Sono Higurashi": { - "showId": "599", - "kitsu_id": "7238" - }, - "Working!!": { - "showId": "600", - "kitsu_id": "4805" - }, - "Mobile Suit Gundam Thunderbolt": { - "showId": "602", - "kitsu_id": [ - "11476", - "12755" - ] - }, - "Durarara!!": { - "showId": "603", - "kitsu_id": "4696" - }, - "Musaigen no Phantom World": { - "showId": "605", - "kitsu_id": "11333" - }, - "Prince of Stride - Alternative": { - "showId": "606", - "kitsu_id": "11364" - }, - "Haruchika": { - "showId": "607", - "kitsu_id": "11020" - }, - "Active Raid": { - "showId": "608", - "kitsu_id": "11456" - }, - "Assassination Classroom S2": { - "showId": "609", - "kitsu_id": "10877" - }, - "Lupin III (2015)": { - "showId": "610", - "kitsu_id": "9958" - }, - "Boku dake ga Inai Machi": { - "showId": "611", - "kitsu_id": "11110" - }, - "Ojisan to Marshmallow": { - "showId": "612", - "kitsu_id": "11261" - }, - "Lupin III Part I": { - "showId": "613", - "kitsu_id": "1265" - }, - "Lupin III Part II": { - "showId": "614", - "kitsu_id": "1278" - }, - "Lupin III Part III": { - "showId": "615", - "kitsu_id": "1279" - }, - "Norn9 - Norn+Nonet": { - "showId": "616", - "kitsu_id": "11337" - }, - "Shoujo-tachi wa Kouya wo Mezasu": { - "showId": "617", - "kitsu_id": "11457" - }, - "Divine Gate": { - "showId": "618", - "kitsu_id": "11409" - }, - "Oshiete! Galko-chan": { - "showId": "619", - "kitsu_id": "11487" - }, - "Sekkou Boys": { - "showId": "620", - "kitsu_id": "11358" - }, - "Tabi Machi Late Show": { - "showId": "621", - "kitsu_id": "11668" - }, - "Koukaku no Pandora": { - "showId": "622", - "kitsu_id": "11587" - }, - "Shouwa Genroku Rakugo Shinjuu": { - "showId": "624", - "kitsu_id": "10051" - }, - "Phantasy Star Online 2 The Animation": { - "showId": "625", - "kitsu_id": "11200" - }, - "Bubuki Buranki": { - "showId": "626", - "kitsu_id": "11486" - }, - "Luck & Logic": { - "showId": "627", - "kitsu_id": "11536" - }, - "Nurse Witch Komugi-chan R": { - "showId": "628", - "kitsu_id": "11517" - }, - "Ooyasan wa Shishunki!": { - "showId": "629", - "kitsu_id": "11396" - }, - "Hai to Gensou no Grimgar": { - "showId": "630", - "kitsu_id": "11447" - }, - "Dimension W": { - "showId": "631", - "kitsu_id": "11170" - }, - "Nijiiro Days": { - "showId": "632", - "kitsu_id": "11323" - }, - "Schwarzesmarken": { - "showId": "633", - "kitsu_id": "10938" - }, - "Yami Shibai - Japanese Ghost Stories 3": { - "showId": "634", - "kitsu_id": "11484" - }, - "Mahou Shoujo Nante Mou Ii Desukara": { - "showId": "635", - "kitsu_id": "11552" - }, - "Saijaku Muhai no Bahamut": { - "showId": "637", - "kitsu_id": "10913" - }, - "Ao no Kanata no Four Rhythm": { - "showId": "638", - "kitsu_id": "10021" - }, - "Dagashi Kashi": { - "showId": "639", - "kitsu_id": "11381" - }, - "Kono Subarashii Sekai ni Shukufuku wo!": { - "showId": "640", - "kitsu_id": "10941" - }, - "Glass no Hana to Kowasu Sekai": { - "showId": "641", - "kitsu_id": "8971" - }, - "Noblesse - Awakening": { - "showId": "642", - "kitsu_id": "11806" - }, - "Kono Danshi, Mahou ga Oshigoto Desu": { - "showId": "643", - "kitsu_id": "11599" - }, - "She and Her Cat - Everything Flows": { - "showId": "644", - "kitsu_id": "11737" - }, - "DD Hokuto no Ken": { - "showId": "645", - "kitsu_id": "7646" - }, - "Hidan no Aria": { - "showId": "646", - "kitsu_id": "5407" - }, - "Brotherhood - Final Fantasy XV": { - "showId": "647", - "kitsu_id": "12019" - }, - "Space Patrol Luluco": { - "showId": "648", - "kitsu_id": "11818" - }, - "JoJo's Bizarre Adventure - Diamond is Unbreakable": { - "showId": "650", - "kitsu_id": "11459" - }, - "Terra Formars S2": { - "showId": "651", - "kitsu_id": "11344" - }, - "Mayoiga": { - "showId": "653", - "kitsu_id": "11682" - }, - "Ace Attorney": { - "showId": "654", - "kitsu_id": "11375" - }, - "Kiznaiver": { - "showId": "655", - "kitsu_id": "11437" - }, - "Endride": { - "showId": "657", - "kitsu_id": "11807" - }, - "Mobile Suit Gundam Unicorn RE 0096": { - "showId": "658", - "kitsu_id": "11850" - }, - "Boku no Hero Academia": { - "showId": "659", - "kitsu_id": [ - "11469", - "12268", - "13881", - "41971" - ] - }, - "Re Zero kara Hajimeru Isekai Seikatsu": { - "showId": "660", - "kitsu_id": [ - "11209", - "42198" - ] - }, - "Pan de Peace!": { - "showId": "661", - "kitsu_id": "11349" - }, - "Kuma Miko": { - "showId": "662", - "kitsu_id": "11446" - }, - "Macross Delta": { - "showId": "663", - "kitsu_id": "9992" - }, - "Hundred": { - "showId": "664", - "kitsu_id": "11029" - }, - "Bakuon!!": { - "showId": "665", - "kitsu_id": "10939" - }, - "Seisen Cerberus": { - "showId": "666", - "kitsu_id": "11779" - }, - "Shounen Ashibe Go! Go! Goma-chan": { - "showId": "667", - "kitsu_id": "12038" - }, - "Joker Game": { - "showId": "668", - "kitsu_id": "11320" - }, - "Super Lovers": { - "showId": "669", - "kitsu_id": "11485" - }, - "Bungou Stray Dogs": { - "showId": "670", - "kitsu_id": "11339" - }, - "Bishoujo Yuugi Unit Crane Game Girls": { - "showId": "671", - "kitsu_id": "11932" - }, - "Sousei no Onmyouji": { - "showId": "672", - "kitsu_id": "11553" - }, - "Anne Happy": { - "showId": "673", - "kitsu_id": "11134" - }, - "Netoge no Yome wa Onnanoko ja Nai to Omotta": { - "showId": "674", - "kitsu_id": "11319" - }, - "Kabaneri of the Iron Fortress": { - "showId": "676", - "kitsu_id": "10036" - }, - "Shounen Maid": { - "showId": "677", - "kitsu_id": "11570" - }, - "Sakamoto desu ga": { - "showId": "678", - "kitsu_id": "11751" - }, - "Flying Witch": { - "showId": "679", - "kitsu_id": "11317" - }, - "Tanaka-kun wa Itsumo Kedaruge": { - "showId": "680", - "kitsu_id": "11538" - }, - "Haifuri": { - "showId": "681", - "kitsu_id": "11346" - }, - "Sansha Sanyou": { - "showId": "682", - "kitsu_id": "11401" - }, - "Tonkatsu DJ Agetarou": { - "showId": "683", - "kitsu_id": "11318" - }, - "Wagamama High Spec": { - "showId": "684", - "kitsu_id": "11332" - }, - "Usakame": { - "showId": "685", - "kitsu_id": "11685" - }, - "Kuromukuro": { - "showId": "686", - "kitsu_id": "11605" - }, - "Onigiri": { - "showId": "687", - "kitsu_id": "11785" - }, - "Big Order": { - "showId": "688", - "kitsu_id": "11455" - }, - "Cardfight!! Vanguard G Stride Gate": { - "showId": "689", - "kitsu_id": "11857" - }, - "Tensei Shitara Slime Datta Ken": { - "showId": "1152", - "kitsu_id": "41024" - }, - "Wake Up, Girls! New Chapter": { - "showId": "Wake Up, Girls! New Chapter", - "kitsu_id": "13707" - }, - "Yowamushi Pedal Re RIDE": { - "showId": "691", - "kitsu_id": "8657" - }, - "Yowamushi Pedal Re ROAD": { - "showId": "691", - "kitsu_id": "8635" - }, - "Yowamushi Pedal The Movie": { - "showId": "691", - "kitsu_id": "10769" - }, - "Bonobono": { - "showId": "694", - "kitsu_id": "8967" - }, - "Berserk": { - "showId": "696", - "kitsu_id": "24" - }, - "ReLIFE": { - "showId": "697", - "kitsu_id": "10464" - }, - "Momokuri": { - "showId": "698", - "kitsu_id": "10466" - }, - "Love Live! Sunshine!!": { - "showId": "700", - "kitsu_id": "11745" - }, - "Rewrite": { - "showId": "702", - "kitsu_id": "11410" - }, - "Hatsukoi Monster": { - "showId": "703", - "kitsu_id": "11181" - }, - "B-Project": { - "showId": "704", - "kitsu_id": "12088" - }, - "DAYS": { - "showId": "705", - "kitsu_id": "11748" - }, - "Orange": { - "showId": "706", - "kitsu_id": "11844" - }, - "Fukigen na Mononokean": { - "showId": "708", - "kitsu_id": "11826" - }, - "Tales of Zestiria the X": { - "showId": "709", - "kitsu_id": "11023" - }, - "Bananya": { - "showId": "710", - "kitsu_id": "11912" - }, - "Puzzle and Dragons Cross": { - "showId": "711", - "kitsu_id": "11846" - }, - "Show By Rock!! Short!!": { - "showId": "712", - "kitsu_id": "11493" - }, - "Amaama to Inazuma": { - "showId": "713", - "kitsu_id": "11870" - }, - "D.Gray-man Hallow": { - "showId": "714", - "kitsu_id": "11654" - }, - "Taboo Tattoo": { - "showId": "715", - "kitsu_id": "10344" - }, - "Cheer Danshi!!": { - "showId": "716", - "kitsu_id": "11770" - }, - "Fudanshi Koukou Seikatsu": { - "showId": "717", - "kitsu_id": "12103" - }, - "Servamp": { - "showId": "718", - "kitsu_id": "11210" - }, - "New Game!": { - "showId": "719", - "kitsu_id": "11467" - }, - "Masou Gakuen HxH": { - "showId": "720", - "kitsu_id": "11529" - }, - "Scared Rider Xechs": { - "showId": "721", - "kitsu_id": "12026" - }, - "Tsukiuta. The Animation": { - "showId": "722", - "kitsu_id": "11998" - }, - "Ozmafia!!": { - "showId": "723", - "kitsu_id": "11829" - }, - "Fate Kaleid Liner PRISMA ILLYA 3rei!!": { - "showId": "724", - "kitsu_id": "11438" - }, - "Regalia - The Three Sacred Stars": { - "showId": "725", - "kitsu_id": "11948" - }, - "Binan Koukou Chikyuu Bouei-bu Love! S2": { - "showId": "726", - "kitsu_id": "11329" - }, - "Kono Bijutsubu ni wa Mondai ga Aru!": { - "showId": "727", - "kitsu_id": "11466" - }, - "Planetarian": { - "showId": "728", - "kitsu_id": "12023" - }, - "Amanchu!": { - "showId": "729", - "kitsu_id": "11432" - }, - "Alderamin on the Sky": { - "showId": "730", - "kitsu_id": "11433" - }, - "91 Days": { - "showId": "731", - "kitsu_id": "11957" - }, - "Thunderbolt Fantasy": { - "showId": "732", - "kitsu_id": "11838" - }, - "Time Travel Shoujo": { - "showId": "733", - "kitsu_id": "12236" - }, - "Handa-kun": { - "showId": "734", - "kitsu_id": "11802" - }, - "Qualidea Code": { - "showId": "735", - "kitsu_id": "11653" - }, - "Hitori no Shita - The Outcast": { - "showId": "736", - "kitsu_id": "12250" - }, - "Ange Vierge": { - "showId": "737", - "kitsu_id": "11593" - }, - "Active Raid S2": { - "showId": "738", - "kitsu_id": "11618" - }, - "Saiki Kusuo no Psi-nan": { - "showId": "739", - "kitsu_id": "12127" - }, - "Danganronpa 3 - Future Arc": { - "showId": "740", - "kitsu_id": "11579" - }, - "Mob Psycho 100": { - "showId": "741", - "kitsu_id": "11578" - }, - "Mob Pyscho 100 OVA": { - "showId": "741", - "kitsu_id": "41073" - }, - "Mahou Shoujo Naria Girls": { - "showId": "742", - "kitsu_id": "12244" - }, - "Danganronpa 3 - Despair Arc": { - "showId": "743", - "kitsu_id": "12105" - }, - "Battery": { - "showId": "744", - "kitsu_id": "11938" - }, - "One Piece - Heart of Gold": { - "showId": "745", - "kitsu_id": "12228" - }, - "Gundam Build Fighters Try Island Wars": { - "showId": "746", - "kitsu_id": "10872" - }, - "Persona 5 - THE DAY BREAKERS": { - "showId": "747", - "kitsu_id": "11602" - }, - "Mahoutsukai no Yome OVA": { - "showId": "749", - "kitsu_id": "11913" - }, - "Heybot!": { - "showId": "750", - "kitsu_id": "12346" - }, - "Dream Festival!": { - "showId": "751", - "kitsu_id": "12200" - }, - "Nyanbo!": { - "showId": "752", - "kitsu_id": "11945" - }, - "Kaijuu Girls": { - "showId": "753", - "kitsu_id": "12118" - }, - "Danganronpa 3 - Hope Arc": { - "showId": "754", - "kitsu_id": "12554" - }, - "Time Bokan 24": { - "showId": "755", - "kitsu_id": "12204" - }, - "Bloodivores": { - "showId": "756", - "kitsu_id": "12539" - }, - "Shuumatsu no Izetta": { - "showId": "757", - "kitsu_id": "12260" - }, - "WWW.Working!!": { - "showId": "758", - "kitsu_id": "12024" - }, - "Mahou Shoujo Ikusei Keikaku": { - "showId": "759", - "kitsu_id": "11363" - }, - "Uta no Prince Sama Legend Star": { - "showId": "760", - "kitsu_id": "11217" - }, - "Tiger Mask W": { - "showId": "761", - "kitsu_id": "11966" - }, - "Cardfight!! Vanguard G NEXT": { - "showId": "762", - "kitsu_id": "12564" - }, - "Monster Hunter Stories Ride On": { - "showId": "763", - "kitsu_id": "11584" - }, - "Show By Rock!! S2": { - "showId": "765", - "kitsu_id": "11494" - }, - "Magic-Kyun! Renaissance": { - "showId": "766", - "kitsu_id": "12182" - }, - "Okusama ga Seitokaichou! S2 (Uncensored)": { - "showId": "767", - "kitsu_id": "11784" - }, - "Touken Ranbu - Hanamaru": { - "showId": "768", - "kitsu_id": "11995" - }, - "Ao Oni The Animation": { - "showId": "769", - "kitsu_id": "12477" - }, - "Gakuen Handsome": { - "showId": "770", - "kitsu_id": "12482" - }, - "Trickster": { - "showId": "771", - "kitsu_id": "12234" - }, - "Shakunetsu no Takkyuu Musume": { - "showId": "772", - "kitsu_id": "12009" - }, - "Nobunaga no Shinobi": { - "showId": "773", - "kitsu_id": [ - "11871", - "13303", - "14207" - ] - }, - "Zutto Mae kara Suki deshita": { - "showId": "774", - "kitsu_id": "11204" - }, - "Soushin Shoujo Matoi": { - "showId": "775", - "kitsu_id": "12322" - }, - "Natsume Yuujinchou Go": { - "showId": "776", - "kitsu_id": "11950" - }, - "Natsume Yuujinchou Go Specials": { - "showId": "776", - "kitsu_id": "13143" - }, - "Nanbaka": { - "showId": "777", - "kitsu_id": "10467" - }, - "Cheating Craft": { - "showId": "778", - "kitsu_id": "12542" - }, - "TO BE HERO": { - "showId": "779", - "kitsu_id": "12536" - }, - "Mahou Shoujo Nante Mou Ii Desukara S2": { - "showId": "781", - "kitsu_id": "12467" - }, - "Ani Tore! XX": { - "showId": "782", - "kitsu_id": "12459" - }, - "Kiitarou Shounen no Youkai Enikki": { - "showId": "783", - "kitsu_id": "12119" - }, - "Bishoujo Yuugi Unit Crane Game Girls Galaxy": { - "showId": "784", - "kitsu_id": "12465" - }, - "Nazotokine": { - "showId": "785", - "kitsu_id": "12448" - }, - "Hibike! Euphonium S2": { - "showId": "786", - "kitsu_id": "11474" - }, - "Brave Witches": { - "showId": "788", - "kitsu_id": "11887" - }, - "Yuri!!! on Ice": { - "showId": "789", - "kitsu_id": "11999" - }, - "Flip Flappers": { - "showId": "790", - "kitsu_id": "11997" - }, - "Keijo!!!!!!!!": { - "showId": "791", - "kitsu_id": "11824" - }, - "All Out!!": { - "showId": "792", - "kitsu_id": "11373" - }, - "Bernard Jou Iwaku.": { - "showId": "793", - "kitsu_id": "12556" - }, - "Drifters": { - "showId": "794", - "kitsu_id": "11028" - }, - "Lostorage incited WIXOSS": { - "showId": "795", - "kitsu_id": "12065" - }, - "Haikyuu!! S3": { - "showId": "796", - "kitsu_id": "11935" - }, - "Watashi ga Motete Dousunda": { - "showId": "797", - "kitsu_id": "11910" - }, - "ClassicaLoid": { - "showId": "798", - "kitsu_id": "11172" - }, - "Long Riders!": { - "showId": "799", - "kitsu_id": "10878" - }, - "3-gatsu no Lion": { - "showId": "800", - "kitsu_id": "11380" - }, - "Occultic;Nine": { - "showId": "801", - "kitsu_id": "11949" - }, - "Sengoku Choujuu Giga": { - "showId": "802", - "kitsu_id": "12492" - }, - "Udon no Kuni no Kiniro Kemari": { - "showId": "803", - "kitsu_id": "11823" - }, - "Stella no Mahou": { - "showId": "804", - "kitsu_id": "11756" - }, - "Soul Buster": { - "showId": "805", - "kitsu_id": "11803" - }, - "Girlish Number": { - "showId": "806", - "kitsu_id": "11793" - }, - "Shelter": { - "showId": "807", - "imdb_id": "tt6443118" - }, - "3-Nen D-Gumi Glass no Kamen": { - "showId": "808", - "kitsu_id": "12567" - }, - "Dragon Ball Super": { - "showId": "809", - "kitsu_id": "10879" - }, - "Kuroko's Basketball Winter Cup Highlights": { - "showId": "810", - "kitsu_id": "11889" - }, - "Natsume Yuujinchou - Nyanko-sensei to Hajimete no Otsukai": { - "showId": "811", - "kitsu_id": "7747" - }, - "Hagane Orchestra": { - "showId": "812", - "kitsu_id": "12593" - }, - "Osomatsu-san - Ouma de Kobanashi": { - "showId": "813", - "kitsu_id": "12720" - }, - "Chain Chronicle - Haecceitas no Hikari (Movie)": { - "showId": "814", - "kitsu_id": "12463" - }, - "Koro-sensei Quest!": { - "showId": "815", - "kitsu_id": "12923" - }, - "Fate Grand Order - First Order": { - "showId": "816", - "kitsu_id": "12710" - }, - "Ai-Mai-Mi - Surgical Friends": { - "showId": "817", - "kitsu_id": "12864" - }, - "Akiba's Trip The Animation": { - "showId": "818", - "kitsu_id": "12532" - }, - "Masamune-kun no Revenge": { - "showId": "819", - "kitsu_id": "12267" - }, - "Masamune-kun no Revenge OVA": { - "showId": "819", - "kitsu_id": "41264" - }, - "Youjo Senki": { - "showId": "821", - "kitsu_id": "11794" - }, - "Minami Kamakura Koukou Joshi Jitensha-bu": { - "showId": "822", - "kitsu_id": "11330" - }, - "Fuuka": { - "showId": "823", - "kitsu_id": "12460" - }, - "Schoolgirl Strikers - Animation Channel": { - "showId": "824", - "kitsu_id": "12685" - }, - "Ao no Exorcist - Kyoto Fujouou-hen": { - "showId": "825", - "kitsu_id": "12275" - }, - "Shouwa Genroku Rakugo Shinjuu S2": { - "showId": "826", - "kitsu_id": "12022" - }, - "Seiren": { - "showId": "827", - "kitsu_id": "12673" - }, - "Urara Meirochou": { - "showId": "828", - "kitsu_id": "11934" - }, - "Spiritpact": { - "showId": "829", - "kitsu_id": "12862" - }, - "Demi-chan wa Kataritai": { - "showId": "830", - "kitsu_id": "12529" - }, - "Chain Chronicle - Haecceitas no Hikari (TV)": { - "showId": "831", - "kitsu_id": "10071" - }, - "Idol Jihen": { - "showId": "832", - "kitsu_id": "12596" - }, - "Nyanko Days": { - "showId": "833", - "kitsu_id": "12687" - }, - "elDLIVE": { - "showId": "834", - "kitsu_id": "11894" - }, - "Gabriel DropOut": { - "showId": "835", - "kitsu_id": "12497" - }, - "Chiruran - Nibun no Ichi": { - "showId": "836", - "kitsu_id": "12600" - }, - "Yowamushi Pedal - New Generation": { - "showId": "837", - "kitsu_id": "11583" - }, - "ACCA - 13-ku Kansatsu-ka": { - "showId": "838", - "kitsu_id": "12202" - }, - "Hand Shakers": { - "showId": "839", - "kitsu_id": "11951" - }, - "Kemono Friends": { - "showId": "840", - "kitsu_id": "12707" - }, - "Kobayashi-san Chi no Maid Dragon": { - "showId": "841", - "kitsu_id": "12243" - }, - "Kono Subarashii Sekai ni Shukufuku wo! 2": { - "showId": "842", - "kitsu_id": "11937" - }, - "One Room": { - "showId": "843", - "kitsu_id": "12758" - }, - "Piace - Watashi no Italian": { - "showId": "844", - "kitsu_id": "12274" - }, - "ChaoS;Child": { - "showId": "845", - "kitsu_id": "10786" - }, - "Marginal#4 - Kiss kara Tsukuru Big Bang": { - "showId": "846", - "kitsu_id": "12489" - }, - "Super Lovers S2": { - "showId": "847", - "kitsu_id": "12245" - }, - "Kuzu no Honkai": { - "showId": "848", - "kitsu_id": "11940" - }, - "Yami Shibai - Japanese Ghost Stories 4": { - "showId": "849", - "kitsu_id": "12783" - }, - "Granblue Fantasy The Animation": { - "showId": "850", - "kitsu_id": "11382" - }, - "BanG Dream!": { - "showId": "851", - "kitsu_id": "12330" - }, - "Ao Oni The Animation Movie": { - "showId": "852", - "kitsu_id": "12478" - }, - "The Dragon Dentist": { - "showId": "853", - "kitsu_id": "12641" - }, - "Trinity Seven Movie - Eternity Library and Alchemic Girl": { - "showId": "854", - "kitsu_id": "12324" - }, - "Monster Strike 2": { - "showId": "855", - "kitsu_id": "13316" - }, - "Gin no Guardian": { - "showId": "856", - "kitsu_id": "11936" - }, - "Folktales from Japan S2": { - "showId": "857", - "kitsu_id": "13331" - }, - "World Fool News Part II": { - "showId": "858", - "kitsu_id": "13320" - }, - "Alice to Zouroku": { - "showId": "859", - "kitsu_id": "12726" - }, - "Sekai no Yami Zukan": { - "showId": "860", - "kitsu_id": "13302" - }, - "Warau Salesman NEW": { - "showId": "862", - "kitsu_id": "12951" - }, - "High School Star Musical S2": { - "showId": "863", - "kitsu_id": "12241" - }, - "Frame Arms Girl": { - "showId": "864", - "kitsu_id": "12807" - }, - "THE iDOLM@STER CINDERELLA GIRLS Theater (TV)": { - "showId": "866", - "kitsu_id": [ - "12671", - "13895", - "41377", - "42229" - ] - }, - "THE iDOLM@STER CINDERELLA GIRLS Theater (Web)": { - "showId": "866", - "kitsu_id": "13327" - }, - "Rokudenashi Majutsu Koushi to Akashic Records": { - "showId": "867", - "kitsu_id": "11942" - }, - "Oushitsu Kyoushi Haine": { - "showId": "868", - "kitsu_id": "12667" - }, - "Boruto - Naruto Next Generations": { - "showId": "869", - "kitsu_id": "13051" - }, - "Sakura Quest": { - "showId": "870", - "kitsu_id": "12793" - }, - "Busou Shoujo Machiavellianism": { - "showId": "871", - "kitsu_id": "12265" - }, - "Sagrada Reset": { - "showId": "872", - "kitsu_id": "12599" - }, - "Seikaisuru Kado": { - "showId": "873", - "kitsu_id": "11490" - }, - "Tsuki ga Kirei": { - "showId": "874", - "kitsu_id": "13234" - }, - "Renai Boukun": { - "showId": "875", - "kitsu_id": "11610" - }, - "Clockwork Planet": { - "showId": "876", - "kitsu_id": "11662" - }, - "Hinako Note": { - "showId": "877", - "kitsu_id": "12644" - }, - "Twin Angel BREAK": { - "showId": "878", - "kitsu_id": "12295" - }, - "Love Kome - We Love Rice": { - "showId": "879", - "kitsu_id": "13148" - }, - "Kabukibu!": { - "showId": "880", - "kitsu_id": "12487" - }, - "Shingeki no Bahamut - Virgin Soul": { - "showId": "881", - "kitsu_id": "10902" - }, - "Eromanga-sensei": { - "showId": "882", - "kitsu_id": "11914" - }, - "Re-Creators": { - "showId": "883", - "kitsu_id": "8668" - }, - "Uchouten Kazoku S2": { - "showId": "884", - "kitsu_id": "12551" - }, - "Tsugumomo": { - "showId": "885", - "kitsu_id": "12534" - }, - "Zero kara Hajimeru Mahou no Sho": { - "showId": "886", - "kitsu_id": "12623" - }, - "Makeruna!! Aku no Gundan!": { - "showId": "887", - "kitsu_id": "13361" - }, - "Fukumenkei Noise": { - "showId": "888", - "kitsu_id": "12117" - }, - "Shuumatsu Nani Shitemasuka Isogashii Desuka Sukutte Moratte Ii Desuka": { - "showId": "889", - "kitsu_id": "12769" - }, - "Natsume Yuujinchou Roku": { - "showId": "890", - "kitsu_id": "13077" - }, - "Natsume Yuujinchou Roku Specials": { - "showId": "890", - "kitsu_id": "13757" - }, - "Kenka Banchou Otome - Girl Beats Boys": { - "showId": "891", - "kitsu_id": "12821" - }, - "Room Mate": { - "showId": "892", - "kitsu_id": "12759" - }, - "Saekano S2": { - "showId": "893", - "kitsu_id": "10909" - }, - "DanMachi Gaiden - Sword Oratoria": { - "showId": "894", - "kitsu_id": "11902" - }, - "Sin - Nanatsu no Taizai": { - "showId": "895", - "kitsu_id": "12540" - }, - "100% Pascal-sensei": { - "showId": "896", - "kitsu_id": "13433" - }, - "PriPri Chii-chan!!": { - "showId": "897", - "kitsu_id": "13434" - }, - "Atom - The Beginning": { - "showId": "898", - "kitsu_id": "12235" - }, - "Blame! Movie": { - "showId": "899", - "kitsu_id": "11537" - }, - "Koe no Katachi": { - "showId": "900", - "kitsu_id": "10028" - }, - "Yu-Gi-Oh! VRAINS": { - "showId": "901", - "kitsu_id": "13189" - }, - "Monster Strike The Movie": { - "showId": "902", - "kitsu_id": "12504" - }, - "Suki ni Naru Sono Shunkan wo": { - "showId": "903", - "kitsu_id": "12001" - }, - "Hina Logi - From Luck & Logic": { - "showId": "904", - "kitsu_id": "13545" - }, - "Enmusubi no Youko-chan": { - "showId": "907", - "kitsu_id": "13616" - }, - "Katsugeki Touken Ranbu": { - "showId": "908", - "kitsu_id": "11994" - }, - "Knight's & Magic": { - "showId": "909", - "kitsu_id": "13274" - }, - "Keppeki Danshi! Aoyama-kun": { - "showId": "910", - "kitsu_id": "13280" - }, - "Yami Shibai - Japanese Ghost Stories 5": { - "showId": "911", - "kitsu_id": "13576" - }, - "Battle Girl High School": { - "showId": "912", - "kitsu_id": "13115" - }, - "Isekai Shokudou": { - "showId": "913", - "kitsu_id": "12535" - }, - "Youkai Apartment no Yuuga na Nichijou": { - "showId": "914", - "kitsu_id": "13260" - }, - "Koi to Uso": { - "showId": "915", - "kitsu_id": "13257" - }, - "Aho Girl": { - "showId": "916", - "kitsu_id": "13259" - }, - "Tsurezure Children": { - "showId": "917", - "kitsu_id": "13258" - }, - "Nana Maru San Batsu": { - "showId": "918", - "kitsu_id": "13263" - }, - "Netsuzou TRap - NTR": { - "showId": "919", - "kitsu_id": "12757" - }, - "Saiyuki Reload Blast": { - "showId": "920", - "kitsu_id": "12464" - }, - "Dive!!": { - "showId": "921", - "kitsu_id": "13007" - }, - "Konbini Kareshi": { - "showId": "922", - "kitsu_id": "13537" - }, - "Castlevania": { - "showId": "923", - "kitsu_id": "13529" - }, - "Made in Abyss": { - "showId": "924", - "kitsu_id": "13273" - }, - "Vatican Kiseki Chousakan": { - "showId": "925", - "kitsu_id": "12732" - }, - "Ballroom e Youkoso": { - "showId": "926", - "kitsu_id": "13068" - }, - "Shoukoku no Altair": { - "showId": "927", - "kitsu_id": "13057" - }, - "18if": { - "showId": "928", - "kitsu_id": "13281" - }, - "Hitorijime My Hero": { - "showId": "929", - "kitsu_id": "12318" - }, - "Princess Principal": { - "showId": "930", - "kitsu_id": "13261" - }, - "Centaur no Nayami": { - "showId": "931", - "kitsu_id": "13270" - }, - "Jikan no Shihaisha": { - "showId": "932", - "kitsu_id": "12971" - }, - "Action Heroine Cheer Fruits": { - "showId": "933", - "kitsu_id": "13539" - }, - "Tenshi no 3P!": { - "showId": "934", - "kitsu_id": "12624" - }, - "Isekai wa Smartphone to Tomo ni.": { - "showId": "935", - "kitsu_id": "13457" - }, - "New Game!!": { - "showId": "936", - "kitsu_id": "13236" - }, - "Mahoujin Guru Guru (2017)": { - "showId": "937", - "kitsu_id": "13402" - }, - "Clione no Akari": { - "showId": "938", - "kitsu_id": "13231" - }, - "Hajimete no Gal": { - "showId": "939", - "kitsu_id": "12761" - }, - "Ikemen Sengoku": { - "showId": "940", - "kitsu_id": "13642" - }, - "Nora to Oujo to Noraneko Heart": { - "showId": "941", - "kitsu_id": "11811" - }, - "Youkoso Jitsuryoku Shijou Shugi no Kyoushitsu e": { - "showId": "942", - "kitsu_id": "13503" - }, - "Musekinin Galaxy Tylor": { - "showId": "943", - "kitsu_id": "13561" - }, - "Gamers!": { - "showId": "945", - "kitsu_id": "12754" - }, - "Jigoku Shoujo - Yoi no Togi": { - "showId": "946", - "kitsu_id": "13249" - }, - "The Reflection": { - "showId": "947", - "kitsu_id": "11473" - }, - "Gundam Build Fighters Battlogue": { - "showId": "949", - "kitsu_id": "13711" - }, - "Owarimonogatari S2": { - "showId": "950", - "kitsu_id": "13268" - }, - "Little Witch Academia": { - "showId": "951", - "kitsu_id": "12272" - }, - "Dream Festival! R": { - "showId": "952", - "kitsu_id": "12948" - }, - "Gundam Build Fighters GM's Counterattack": { - "showId": "953", - "kitsu_id": "13756" - }, - "One Piece - Episode of East Blue": { - "showId": "954", - "kitsu_id": "13623" - }, - "Blade Runner Black Out 2022": { - "showId": "955", - "kitsu_id": "13811" - }, - "The iDOLM@STER Side M": { - "showId": "956", - "kitsu_id": "13755" - }, - "Osomatsu-san S2": { - "showId": "957", - "kitsu_id": "13326" - }, - "UQ Holder!": { - "showId": "958", - "kitsu_id": "12273" - }, - "Black Clover": { - "showId": "959", - "kitsu_id": "13209" - }, - "Sengoku Night Blood": { - "showId": "960", - "kitsu_id": "13784" - }, - "Juuni Taisen": { - "showId": "961", - "kitsu_id": "13225" - }, - "Shokugeki no Soma S3": { - "showId": "962", - "kitsu_id": "13581" - }, - "Osake wa Fuufu ni Natte Kara": { - "showId": "963", - "kitsu_id": "13719" - }, - "URAHARA": { - "showId": "964", - "kitsu_id": "13638" - }, - "Konohana Kitan": { - "showId": "965", - "kitsu_id": "13752" - }, - "Tsukipro The Animation": { - "showId": "966", - "kitsu_id": "13721" - }, - "Ousama Game": { - "showId": "967", - "kitsu_id": "13727" - }, - "Just Because!": { - "showId": "968", - "kitsu_id": "13530" - }, - "Ame-con!!": { - "showId": "969", - "kitsu_id": "13913" - }, - "Pikotarou no Lullaby Lullaby (Web)": { - "showId": "970", - "kitsu_id": "13572" - }, - "Taishou Chicchai-san": { - "showId": "971", - "kitsu_id": "13065" - }, - "Net-juu no Susume": { - "showId": "972", - "kitsu_id": "13703" - }, - "Kino no Tabi (2017)": { - "showId": "973", - "kitsu_id": "13467" - }, - "Dies Irae": { - "showId": "974", - "kitsu_id": "11212" - }, - "Shoujo Shuumatsu Ryokou": { - "showId": "975", - "kitsu_id": "13597" - }, - "Yuki Yuna wa Yusha de Aru - Washio Sumi no Shou": { - "showId": "976", - "kitsu_id": [ - "12678", - "14029" - ] - }, - "ID-0": { - "showId": "978", - "kitsu_id": "12484" - }, - "Time Bokan 24 S2": { - "showId": "979", - "kitsu_id": "13484" - }, - "Code Realize - Sousei no Himegimi": { - "showId": "980", - "kitsu_id": "11338" - }, - "Garo - Vanishing Line": { - "showId": "981", - "kitsu_id": "13730" - }, - "ClassicaLoid S2": { - "showId": "982", - "kitsu_id": "13317" - }, - "Dynamic Chord": { - "showId": "983", - "kitsu_id": "12945" - }, - "Love Live! Sunshine!! S2": { - "showId": "984", - "kitsu_id": "13299" - }, - "Monster Strike 3": { - "showId": "985", - "kitsu_id": "13970" - }, - "Two Car": { - "showId": "986", - "kitsu_id": "13680" - }, - "Blend S": { - "showId": "987", - "kitsu_id": "13465" - }, - "Mahoutsukai no Yome": { - "showId": "988", - "kitsu_id": "13228" - }, - "Houseki no Kuni": { - "showId": "989", - "kitsu_id": "13521" - }, - "Kekkai Sensen & Beyond": { - "showId": "990", - "kitsu_id": "12770" - }, - "Hozuki no Reitetsu S2": { - "showId": "991", - "kitsu_id": [ - "13226", - "14157" - ] - }, - "Cardfight!! Vanguard G Z": { - "showId": "992", - "kitsu_id": "13786" - }, - "Animegataris": { - "showId": "993", - "kitsu_id": "13699" - }, - "Imouto sae Ireba Ii.": { - "showId": "994", - "kitsu_id": "11207" - }, - "Himouto! Umaru-chan R": { - "showId": "995", - "kitsu_id": "13489" - }, - "Love Kome S2": { - "showId": "996", - "kitsu_id": "13901" - }, - "Wake Up, Girls! Shin Shou": { - "showId": "998", - "kitsu_id": "13707" - }, - "Evil or Live": { - "showId": "999", - "kitsu_id": "13824" - }, - "Onyankopon": { - "showId": "1000", - "kitsu_id": "13908" - }, - "Boku no Kanojo ga Majimesugiru Sho-bitch na Ken": { - "showId": "1001", - "kitsu_id": "13693" - }, - "Inuyashiki": { - "showId": "1002", - "kitsu_id": "13096" - }, - "IDOLiSH7": { - "showId": "1004", - "kitsu_id": "12558" - }, - "Binan Koukou Chikyuu Bouei-bu Love! Love! Love!": { - "showId": "1005", - "kitsu_id": "13651" - }, - "Yuki Yuna wa Yusha de Aru - Yusha no Shou": { - "showId": "1006", - "kitsu_id": "13160" - }, - "Itsudatte Bokura no Koi wa 10 cm Datta.": { - "showId": "1007", - "kitsu_id": "13788" - }, - "Sora yori mo Tooi Basho": { - "showId": "1008", - "kitsu_id": "13615" - }, - "Ramen Daisuki Koizumi-san": { - "showId": "1009", - "kitsu_id": "13531" - }, - "Yuru Camp": { - "showId": "1010", - "kitsu_id": "13480" - }, - "Devilman Crybaby": { - "showId": "1011", - "kitsu_id": "13230" - }, - "Toji no Miko": { - "showId": "1012", - "kitsu_id": "13710" - }, - "Grancrest Senki": { - "showId": "1013", - "kitsu_id": "12705" - }, - "Ito Junji Collection": { - "showId": "1014", - "kitsu_id": "13717" - }, - "Hataraku Onii-san!": { - "showId": "1015", - "kitsu_id": "14161" - }, - "Sanrio Danshi": { - "showId": "1016", - "kitsu_id": "13714" - }, - "Citrus": { - "showId": "1017", - "kitsu_id": "12737" - }, - "Slow Start": { - "showId": "1018", - "kitsu_id": "13712" - }, - "Pop Team Epic": { - "showId": "1019", - "kitsu_id": "13319" - }, - "Cardcaptor Sakura Clear Card": { - "showId": "1020", - "kitsu_id": "12237" - }, - "Mitsuboshi Colors": { - "showId": "1021", - "kitsu_id": "13227" - }, - "Gakuen Babysitters": { - "showId": "1022", - "kitsu_id": "13265" - }, - "Kokkoku": { - "showId": "1023", - "kitsu_id": "13958" - }, - "Ryuuou no Oshigoto!": { - "showId": "1024", - "kitsu_id": "13661" - }, - "Karakai Jouzu no Takagi-san": { - "showId": "1025", - "kitsu_id": "13635" - }, - "Micchiri Neko": { - "showId": "1026", - "kitsu_id": "14162" - }, - "Basilisk - Ouka Ninpouchou": { - "showId": "1027", - "kitsu_id": "13676" - }, - "Yowamushi Pedal - Glory Line": { - "showId": "1029", - "kitsu_id": "13594" - }, - "Overlord II": { - "showId": "1030", - "kitsu_id": "13237" - }, - "Kaijuu Girls S2": { - "showId": "1031", - "kitsu_id": "14152" - }, - "Hitori no Shita - The Outcast S2": { - "showId": "1032", - "kitsu_id": "13885" - }, - "Dame x Prince Anime Caravan": { - "showId": "1033", - "kitsu_id": "13706" - }, - "Violet Evergarden": { - "showId": "1034", - "kitsu_id": "12230" - }, - "Death March kara Hajimaru Isekai Kyousoukyoku": { - "showId": "1035", - "kitsu_id": "13276" - }, - "Koi wa Ameagari no You ni": { - "showId": "1036", - "kitsu_id": "13277" - }, - "Marchen Madchen": { - "showId": "1037", - "kitsu_id": "13700" - }, - "Miira no Kaikata": { - "showId": "1038", - "kitsu_id": "13729" - }, - "Hakumei to Mikochi": { - "showId": "1039", - "kitsu_id": "13950" - }, - "Hakata Tonkotsu Ramens": { - "showId": "1040", - "kitsu_id": "14024" - }, - "Killing Bites": { - "showId": "1041", - "kitsu_id": "14082" - }, - "Hakyuu Houshin Engi": { - "showId": "1042", - "kitsu_id": "13686" - }, - "Takunomi": { - "showId": "1043", - "kitsu_id": "13992" - }, - "Gin no Guardian S2": { - "showId": "1044", - "kitsu_id": "13573" - }, - "Darling in the FranXX": { - "showId": "1045", - "kitsu_id": "13600" - }, - "Dagashi Kashi S2": { - "showId": "1046", - "kitsu_id": "13701" - }, - "Beatless": { - "showId": "1047", - "kitsu_id": [ - "13939", - "41407" - ] - }, - "Zoku Touken Ranbu - Hanamaru": { - "showId": "1048", - "kitsu_id": "13478" - }, - "gdgd men's party": { - "showId": "1049", - "kitsu_id": "14093" - }, - "Godzilla - Kaijuu Wakusei": { - "showId": "1050", - "kitsu_id": "12634" - }, - "Emiya-san Chi no Kyou no Gohan": { - "showId": "1051", - "kitsu_id": "14154" - }, - "Spiritpact S2": { - "showId": "1052", - "kitsu_id": "14144" - }, - "B - The Beginning": { - "showId": "1053", - "kitsu_id": "11880" - }, - "A.I.C.O. - Incarnation": { - "showId": "1054", - "kitsu_id": "13696" - }, - "Sword Gai The Animation": { - "showId": "1056", - "kitsu_id": "9730" - }, - "Sword Gai The Animation S2": { - "showId": "1056", - "kitsu_id": "41175" - }, - "Mahou Shoujo Ore": { - "showId": "1057", - "kitsu_id": "14072" - }, - "Gegege no Kitarou (2018)": { - "showId": "1058", - "kitsu_id": "14246" - }, - "Uma Musume - Pretty Derby": { - "showId": "1059", - "kitsu_id": "13485" - }, - "Kakuriyo no Yadomeshi": { - "showId": "1060", - "kitsu_id": "40580" - }, - "Uchuu Senkan Tiramisu": { - "showId": "1061", - "kitsu_id": "40875" - }, - "Souten no Ken Re-Genesis": { - "showId": "1062", - "kitsu_id": [ - "13983", - "41953" - ] - }, - "Gundam Build Divers": { - "showId": "1063", - "kitsu_id": "40565" - }, - "Legend of the Galactic Heroes - Die Neue These": { - "showId": "1064", - "kitsu_id": "11331" - }, - "Tachibanakan To Lie Angle": { - "showId": "1065", - "kitsu_id": "41016" - }, - "Lupin III Part V": { - "showId": "1066", - "kitsu_id": "13749" - }, - "3D Kanojo Real Girl": { - "showId": "1067", - "kitsu_id": "14276" - }, - "Tokyo Ghoul re": { - "showId": "1068", - "kitsu_id": "13929" - }, - "Alice or Alice": { - "showId": "1069", - "kitsu_id": "13679" - }, - "Tada-kun wa Koi wo Shinai": { - "showId": "1070", - "kitsu_id": "13888" - }, - "Megalo Box": { - "showId": "1071", - "kitsu_id": "13949" - }, - "Comic Girls": { - "showId": "1072", - "kitsu_id": "13722" - }, - "Saredo Tsumibito wa Ryuu to Odoru": { - "showId": "1073", - "kitsu_id": "12626" - }, - "Gurazeni": { - "showId": "1074", - "kitsu_id": "13981" - }, - "Akkun to Kanojo": { - "showId": "1075", - "kitsu_id": "14202" - }, - "Lostorage Conflated WIXOSS": { - "showId": "1076", - "kitsu_id": "13720" - }, - "Mahou Shoujo Site": { - "showId": "1077", - "kitsu_id": "14137" - }, - "Hinamatsuri": { - "showId": "1078", - "kitsu_id": "14018" - }, - "Major 2nd": { - "showId": "1079", - "kitsu_id": "13952" - }, - "Devils Line": { - "showId": "1080", - "kitsu_id": "13708" - }, - "Omae wa Mada Gunma wo Shiranai": { - "showId": "1081", - "kitsu_id": "41146" - }, - "Sword Art Online Alternative - Gun Gale Online": { - "showId": "1082", - "kitsu_id": "13894" - }, - "Amanchu! Advance": { - "showId": "1083", - "kitsu_id": "14015" - }, - "Persona 5 The Animation": { - "showId": "1084", - "kitsu_id": "13684" - }, - "Persona 5 The Animation - Dark Sun": { - "showId": "1084", - "kitsu_id": "41972" - }, - "Persona 5 The Animation - Stars and Ours": { - "showId": "1084", - "kitsu_id": "42090" - }, - "Nil Admirari no Tenbin - Teito Genwaku Kitan": { - "showId": "1085", - "kitsu_id": "12762" - }, - "Caligula": { - "showId": "1086", - "kitsu_id": "14019" - }, - "Cutie Honey Universe": { - "showId": "1087", - "kitsu_id": "14142" - }, - "Binan Koukou Chikyuu Bouei-bu Love! S3": { - "showId": "1088", - "kitsu_id": "41018" - }, - "Chi's Sweet Adventure S2": { - "showId": "1089", - "kitsu_id": "13906" - }, - "Golden Kamuy": { - "showId": "1090", - "kitsu_id": "13689" - }, - "Fumikiri Jikan": { - "showId": "1091", - "kitsu_id": "41086" - }, - "Rokuhoudou Yotsuiro Biyori": { - "showId": "1092", - "kitsu_id": "13932" - }, - "Last Period - Owarinaki Rasen no Monogatari": { - "showId": "1093", - "kitsu_id": "41131" - }, - "Butlers - Chitose Momotose Monogatari": { - "showId": "1094", - "kitsu_id": "14037" - }, - "Steins Gate 0": { - "showId": "1095", - "kitsu_id": "10788" - }, - "High School DxD Hero": { - "showId": "1096", - "kitsu_id": "12677" - }, - "Dorei-ku The Animation": { - "showId": "1097", - "kitsu_id": "40960" - }, - "Wotaku ni Koi wa Muzukashii": { - "showId": "1098", - "kitsu_id": "13660" - }, - "Isekai Izakaya - Koto Aitheria no Izakaya Nobu": { - "showId": "1099", - "kitsu_id": "13466" - }, - "Full Metal Panic! Invisible Victory": { - "showId": "1100", - "kitsu_id": "11460" - }, - "Cardfight!! Vanguard (2018)": { - "showId": "1101", - "kitsu_id": "41145" - }, - "To Be Heroine": { - "showId": "1102", - "kitsu_id": "40592" - }, - "Hanebado!": { - "showId": "1103", - "kitsu_id": "40576" - }, - "Island": { - "showId": "1104", - "kitsu_id": "11965" - }, - "One Room S2": { - "showId": "1105", - "kitsu_id": "13905" - }, - "Yama no Susume S3": { - "showId": "1106", - "kitsu_id": "13583" - }, - "Senjuushi": { - "showId": "1107", - "kitsu_id": "41119" - }, - "Aru Zombie Shoujo no Sainan": { - "showId": "1108", - "kitsu_id": "8018" - }, - "Chuukan Kanriroku Tonegawa": { - "showId": "1109", - "kitsu_id": "41023" - }, - "Isekai Maou to Shoukan Shoujo no Dorei Majutsu": { - "showId": "1110", - "kitsu_id": "41133" - }, - "Yume Oukoku to Nemureru 100-nin no Ouji-sama": { - "showId": "1111", - "kitsu_id": "41378" - }, - "Banana Fish": { - "showId": "1112", - "kitsu_id": "13988" - }, - "Shichisei no Subaru": { - "showId": "1113", - "kitsu_id": "40893" - }, - "Satsuriku no Tenshi": { - "showId": "1114", - "kitsu_id": "13715" - }, - "Harukana Receive": { - "showId": "1116", - "kitsu_id": "13659" - }, - "Chio-chan no Tsuugakuro": { - "showId": "1117", - "kitsu_id": "13592" - }, - "Hataraku Onii-san! No 2!": { - "showId": "1118", - "kitsu_id": "41376" - }, - "Ongaku Shoujo": { - "showId": "1119", - "kitsu_id": "41066" - }, - "Yami Shibai - Japanese Ghost Stories 6": { - "showId": "1121", - "kitsu_id": "41315" - }, - "Yakusoku no Nanaya Matsuri": { - "showId": "1122", - "kitsu_id": "41466" - }, - "Hataraku Saibou": { - "showId": "1123", - "kitsu_id": "14212" - }, - "Hyakuren no Haou to Seiyaku no Valkyria": { - "showId": "1124", - "kitsu_id": "41052" - }, - "Planet With": { - "showId": "1126", - "kitsu_id": "41093" - }, - "Asobi Asobase": { - "showId": "1127", - "kitsu_id": "41149" - }, - "Kyoto Teramachi Sanjou no Holmes": { - "showId": "1129", - "kitsu_id": "41381" - }, - "Phantom in the Twilight": { - "showId": "1130", - "kitsu_id": "41120" - }, - "Jashin-chan Dropkick": { - "showId": "1131", - "kitsu_id": "41165" - }, - "Overlord III": { - "showId": "1132", - "kitsu_id": "41174" - }, - "Angolmois - Genkou Kassenki": { - "showId": "1133", - "kitsu_id": "13614" - }, - "Shinya! Tensai Bakabon": { - "showId": "1134", - "kitsu_id": "41189" - }, - "Free! Dive to the Future": { - "showId": "1135", - "kitsu_id": "14010" - }, - "Lord of Vermilion - Guren no Ou": { - "showId": "1136", - "kitsu_id": "41121" - }, - "Happy Sugar Life": { - "showId": "1137", - "kitsu_id": "41097" - }, - "Grand Blue": { - "showId": "1138", - "kitsu_id": "14190" - }, - "Yuragi-sou no Yuuna-san": { - "showId": "1139", - "kitsu_id": "14090" - }, - "Shoujo Kageki Revue Starlight": { - "showId": "1140", - "kitsu_id": "14174" - }, - "Tsukumogami Kashimasu": { - "showId": "1142", - "kitsu_id": "13991" - }, - "Godzilla - Kessen Kidou Zoushoku Toshi": { - "showId": "1143", - "kitsu_id": "13297" - }, - "Muhyo to Rouji no Mahouritsu Soudan Jimusho": { - "showId": "1145", - "kitsu_id": "41076" - }, - "Shikioriori": { - "showId": "1146", - "kitsu_id": "41404" - }, - "Double Decker! Doug and Kirill": { - "showId": "1147", - "kitsu_id": "41075" - }, - "Bungou Stray Dogs - Dead Apple": { - "showId": "1148", - "kitsu_id": "13570" - }, - "One Piece - Episode of Skypiea": { - "showId": "1149", - "kitsu_id": "41303" - }, - "Frankenstein Family": { - "showId": "1150", - "kitsu_id": "13463" - }, - "RErideD - Tokigoe no Derrida": { - "showId": "1151", - "kitsu_id": "13613" - }, - "Tensei Shitara Slime Datta Ken OAD": { - "showId": "1152", - "kitsu_id": "42022" - }, - "Thunderbolt Fantasy - The Sword of Life and Death": { - "showId": "1153", - "kitsu_id": "40589" - }, - "Thunderbolt Fantasy S2": { - "showId": "1154", - "kitsu_id": "13609" - }, - "Akanesasu Shoujo": { - "showId": "1155", - "kitsu_id": "41943" - }, - "Uchuu Senkan Tiramisu S2": { - "showId": "1156", - "kitsu_id": "41926" - }, - "Ken En Ken - Aoki Kagayaki": { - "showId": "1157", - "kitsu_id": "41946" - }, - "Jingai-san no Yome": { - "showId": "1158", - "kitsu_id": "41951" - }, - "Kaze ga Tsuyoku Fuiteiru": { - "showId": "1159", - "kitsu_id": "41372" - }, - "Sora to Umi no Aida": { - "showId": "1160", - "kitsu_id": "40856" - }, - "Seishun Buta Yarou wa Bunny Girl Senpai no Yume wo Minai": { - "showId": "1161", - "kitsu_id": "41056" - }, - "Zombieland Saga": { - "showId": "1162", - "kitsu_id": "41459" - }, - "Bakumatsu": { - "showId": "1163", - "kitsu_id": "41112" - }, - "Tonari no Kyuuketsuki-san": { - "showId": "1164", - "kitsu_id": "41111" - }, - "Yagate Kimi ni Naru": { - "showId": "1165", - "kitsu_id": "41240" - }, - "Hinomaru Sumo": { - "showId": "1166", - "kitsu_id": "41148" - }, - "Uchi no Maid ga Uzasugiru!": { - "showId": "1167", - "kitsu_id": "41209" - }, - "Dakaretai Otoko 1-i ni Odosarete Imasu.": { - "showId": "1168", - "kitsu_id": "41151" - }, - "JoJo's Bizarre Adventure - Golden Wind": { - "showId": "1169", - "kitsu_id": "41410" - }, - "Kishuku Gakkou no Juliet": { - "showId": "1170", - "kitsu_id": "41065" - }, - "Irozuku Sekai no Ashita kara": { - "showId": "1171", - "kitsu_id": "41101" - }, - "Gakuen Basara": { - "showId": "1172", - "kitsu_id": "41263" - }, - "Ace Attorney S2": { - "showId": "1173", - "kitsu_id": "41069" - }, - "Radiant": { - "showId": "1174", - "kitsu_id": "41099" - }, - "Goblin Slayer": { - "showId": "1175", - "kitsu_id": "40597" - }, - "Sword Art Online - Alicization": { - "showId": "1176", - "kitsu_id": "13893" - }, - "SSSS.Gridman": { - "showId": "1177", - "kitsu_id": "13601" - }, - "Release the Spyce": { - "showId": "1178", - "kitsu_id": "41405" - }, - "Fairy Tail Final Season": { - "showId": "1179", - "kitsu_id": "13658" - }, - "Ulysses - Jeanne d'Arc to Renkin no Kishi": { - "showId": "1180", - "kitsu_id": "13994" - }, - "Anima Yell!": { - "showId": "1181", - "kitsu_id": "41423" - }, - "Himote House": { - "showId": "1182", - "kitsu_id": "41961" - }, - "Gaikotsu Shoten'in Honda-san": { - "showId": "1183", - "kitsu_id": "13821" - }, - "The iDOLM@STER Side M - Wake Atte Mini!": { - "showId": "1184", - "kitsu_id": "41954" - }, - "Ore ga Suki nano wa Imouto dakedo Imouto ja Nai": { - "showId": "1185", - "kitsu_id": "41938" - }, - "Conception": { - "showId": "1186", - "kitsu_id": "41269" - }, - "Merc Storia - Mukiryoku Shounen to Bin no Naka no Shoujo": { - "showId": "1187", - "kitsu_id": "41965" - }, - "Karakuri Circus": { - "showId": "1188", - "kitsu_id": "41053" - }, - "Toaru Majutsu no Index III": { - "showId": "1189", - "kitsu_id": "13880" - }, - "Beelzebub-jou no Okinimesu mama.": { - "showId": "1190", - "kitsu_id": "41218" - }, - "Senran Kagura Shinovi Master - Tokyo Youma-hen": { - "showId": "1191", - "kitsu_id": "13690" - }, - "Tsurune": { - "showId": "1192", - "kitsu_id": "13990" - }, - "Kitsune no Koe": { - "showId": "1193", - "kitsu_id": "41942" - }, - "Castlevania S2": { - "showId": "1194", - "kitsu_id": "13627" - }, - "Saint Seiya - Saintia Shou": { - "showId": "1195", - "kitsu_id": "40611" - }, - "Lord El-Melloi II Case Files": { - "showId": "1197", - "kitsu_id": "42092" - }, - "BanG Dream! S2": { - "showId": "1198", - "kitsu_id": "41289" - }, - "Boogiepop wa Warawanai (2019)": { - "showId": "1199", - "kitsu_id": "41032" - }, - "Egao no Daika": { - "showId": "1200", - "kitsu_id": "42001" - }, - "Fukigen na Mononokean S2": { - "showId": "1201", - "kitsu_id": "42002" - }, - "W'z": { - "showId": "1202", - "kitsu_id": "41077" - }, - "Mini Toji": { - "showId": "1203", - "kitsu_id": "42008" - }, - "Tate no Yuusha no Nariagari": { - "showId": "1204", - "kitsu_id": "13593" - }, - "Ueno-san wa Bukiyou": { - "showId": "1205", - "kitsu_id": "41342" - }, - "Mob Psycho 100 S2": { - "showId": "1206", - "kitsu_id": "41071" - }, - "Pastel Memories": { - "showId": "1207", - "kitsu_id": "41430" - }, - "Dororo": { - "showId": "1208", - "kitsu_id": "41083" - }, - "Ame-iro Cocoa - Side G": { - "showId": "1209", - "kitsu_id": "42109" - }, - "Rinshi!! Ekoda-chan": { - "showId": "1210", - "kitsu_id": "42018" - }, - "Watashi ni Tenshi ga Maiorita!": { - "showId": "1211", - "kitsu_id": "41403" - }, - "Meiji Tokyo Renka": { - "showId": "1212", - "kitsu_id": "13056" - }, - "Doukyonin wa Hiza, Tokidoki, Atama no Ue": { - "showId": "1213", - "kitsu_id": "42000" - }, - "Kemurikusa": { - "showId": "1214", - "kitsu_id": "41408" - }, - "Yakusoku no Neverland": { - "showId": "1215", - "kitsu_id": "41312" - }, - "Go-toubun no Hanayome": { - "showId": "1217", - "kitsu_id": "41966" - }, - "Girly Air Force": { - "showId": "1218", - "kitsu_id": "41375" - }, - "Dimension High School": { - "showId": "1219", - "kitsu_id": "41999" - }, - "Date A Live S3": { - "showId": "1220", - "imdb_id": "tt2575684" - }, - "B-Project S2": { - "showId": "1221", - "kitsu_id": "41992" - }, - "Mahou Shoujo Tokushusen Asuka": { - "showId": "1222", - "kitsu_id": "41490" - }, - "Grimms Notes The Animation": { - "showId": "1223", - "kitsu_id": "42004" - }, - "Domestic na Kanojo": { - "showId": "1224", - "kitsu_id": "41479" - }, - "Bermuda Triangle - Colorful Pastrale": { - "showId": "1225", - "kitsu_id": "41958" - }, - "Kaguya-sama wa Kokurasetai": { - "showId": "1226", - "kitsu_id": "41373" - }, - "Endro": { - "showId": "1227", - "kitsu_id": "41957" - }, - "Kouya no Kotobuki Hikoutai": { - "showId": "1228", - "kitsu_id": "41959" - }, - "Kemono Friends S2": { - "showId": "1229", - "kitsu_id": "13621" - }, - "Virtual-san wa Miteiru": { - "showId": "1230", - "kitsu_id": "42042" - }, - "Manaria Friends": { - "showId": "1231", - "kitsu_id": "11354" - }, - "Ace of Diamond Act II": { - "showId": "1233", - "kitsu_id": "42160" - }, - "Kono Yo no Hate de Koi wo Utau Shoujo YU-NO": { - "showId": "1234", - "kitsu_id": "13469" - }, - "Bakumatsu Crisis": { - "showId": "1235", - "kitsu_id": "42161" - }, - "Fruits Basket (2019)": { - "showId": "1236", - "kitsu_id": "41995" - }, - "Senryuu Shoujo": { - "showId": "1237", - "kitsu_id": "42070" - }, - "Midara na Ao-chan wa Benkyou ga Dekinai": { - "showId": "1238", - "kitsu_id": "42024" - }, - "Hitoribocchi no Marumaru Seikatsu": { - "showId": "1239", - "kitsu_id": "41124" - }, - "Mix - Meisei Story": { - "showId": "1240", - "kitsu_id": "41925" - }, - "Amazing Stranger": { - "showId": "1241", - "kitsu_id": "42228" - }, - "Joshikausei": { - "showId": "1242", - "kitsu_id": "41941" - }, - "Nobunaga-sensei no Osanazuma": { - "showId": "1243", - "kitsu_id": "42093" - }, - "Kimetsu no Yaiba": { - "showId": "1244", - "kitsu_id": "41370" - }, - "Bokutachi wa Benkyou ga Dekinai": { - "showId": "1245", - "kitsu_id": "41956" - }, - "Kono Oto Tomare!": { - "showId": "1246", - "kitsu_id": "42101" - }, - "Nande Koko ni Sensei ga": { - "showId": "1247", - "kitsu_id": "42060" - }, - "Hachigatsu no Cinderella Nine": { - "showId": "1248", - "kitsu_id": "42144" - }, - "Mayonaka no Occult Koumuin": { - "showId": "1249", - "kitsu_id": "41465" - }, - "Fairy Gone": { - "showId": "1250", - "kitsu_id": [ - "42130", - "42358" - ] - }, - "Shoumetsu Toshi": { - "showId": "1251", - "kitsu_id": "41451" - }, - "RobiHachi": { - "showId": "1252", - "kitsu_id": "42226" - }, - "Namu Amida Butsu! - Rendai Utena": { - "showId": "1253", - "kitsu_id": "42214" - }, - "Yatogame-chan Kansatsu Nikki": { - "showId": "1254", - "kitsu_id": "42084" - }, - "Isekai Quartet": { - "showId": "1255", - "kitsu_id": "42032" - }, - "Strike Witches - 501-butai Hasshin Shimasu!": { - "showId": "1256", - "kitsu_id": "42074" - }, - "One Punch Man S2": { - "showId": "1257", - "kitsu_id": "12566" - }, - "Kenja no Mago": { - "showId": "1258", - "kitsu_id": "40944" - }, - "Sewayaki Kitsune no Senko-san": { - "showId": "1259", - "kitsu_id": "42026" - }, - "Sarazanmai": { - "showId": "1260", - "kitsu_id": "41017" - }, - "King of Prism - Shiny Seven Stars": { - "showId": "1261", - "kitsu_id": "42278" - }, - "Cardfight!! Vanguard - Zoku Koukousei-hen": { - "showId": "1262", - "kitsu_id": "42325" - }, - "High School Star Musical S3": { - "showId": "1263", - "kitsu_id": "40964" - }, - "Katsute Kami Datta Kemono-tachi e": { - "showId": "1264", - "kitsu_id": "42268" - }, - "Tejina-senpai": { - "showId": "1265", - "kitsu_id": "42082" - }, - "Sounan desu ka": { - "showId": "1266", - "kitsu_id": "42171" - }, - "Kanata no Astra": { - "showId": "1267", - "kitsu_id": "42148" - }, - "Dumbbell Nan Kilo Moteru": { - "showId": "1268", - "kitsu_id": "42134" - }, - "Maou-sama, Retry!": { - "showId": "1269", - "kitsu_id": "41950" - }, - "UchiMusume": { - "showId": "1270", - "imdb_id": "tt10347622" - }, - "Araburu Kisetsu no Otome-domo yo.": { - "showId": "1271", - "kitsu_id": "42025" - }, - "Joshikousei no Mudazukai": { - "showId": "1272", - "kitsu_id": "42221" - }, - "Dr. Stone": { - "showId": "1273", - "kitsu_id": "42080" - }, - "Enen no Shouboutai": { - "showId": "1274", - "kitsu_id": "42068" - }, - "Granbelm": { - "showId": "1275", - "kitsu_id": "42159" - }, - "Symphogear XV": { - "showId": "1276", - "kitsu_id": "11884" - }, - "Ensemble Stars!": { - "showId": "1277", - "kitsu_id": "11595" - }, - "Nakanohito Genome [Jikkyouchuu]": { - "showId": "1278", - "kitsu_id": "41336" - }, - "Re Stage! Dream Days": { - "showId": "1279", - "kitsu_id": "42280" - }, - "Yami Shibai - Japanese Ghost Stories 7": { - "showId": "1280", - "kitsu_id": "42359" - }, - "DanMachi S2": { - "showId": "1281", - "kitsu_id": "40599" - }, - "Hakata Mentai! Pirikarako-chan": { - "showId": "1282", - "kitsu_id": "42369" - }, - "HenSuki": { - "showId": "1283", - "kitsu_id": "42451" - }, - "Kochoki - Wakaki Nobunaga": { - "showId": "1284", - "kitsu_id": "42182" - }, - "Arifureta Shokugyou de Sekai Saikyou": { - "showId": "1285", - "kitsu_id": "14043" - }, - "Cop Craft": { - "showId": "1286", - "kitsu_id": "42174" - }, - "Vinland Saga": { - "showId": "1287", - "kitsu_id": "41084" - }, - "Isekai Cheat Magician": { - "showId": "1290", - "kitsu_id": "42319" - }, - "Given": { - "showId": "1291", - "kitsu_id": "42379" - }, - "Machikado Mazoku": { - "showId": "1292", - "kitsu_id": "42137" - }, - "Toaru Kagaku no Accelerator": { - "showId": "1293", - "kitsu_id": "41980" - }, - "Okaa-san Online": { - "showId": "1294", - "kitsu_id": "5114" - }, - "Bem": { - "showId": "1295", - "kitsu_id": "42175" - }, - "Try Knights": { - "showId": "1296", - "kitsu_id": "42281" - }, - "Fate Grand Order - Absolute Demonic Front Babylonia": { - "showId": "1297", - "kitsu_id": "42269" - }, - "Youjo Senki Movie": { - "showId": "1299", - "kitsu_id": "14173" - }, - "Bananya S2": { - "showId": "1300", - "kitsu_id": "42486" - }, - "Ahiru no Sora": { - "showId": "1301", - "kitsu_id": "41399" - }, - "Radiant S2": { - "showId": "1302", - "kitsu_id": "42521" - }, - "Urashimasakatasen no Nichijou": { - "showId": "1303", - "kitsu_id": "42546" - }, - "Hataage! Kemono Michi": { - "showId": "1304", - "kitsu_id": "42127" - }, - "Shinchou Yuusha": { - "showId": "1305", - "kitsu_id": "42079" - }, - "Honzuki no Gekokujou": { - "showId": "1306", - "kitsu_id": "42241" - }, - "Ore wo Suki nano wa Omae dake ka yo": { - "showId": "1307", - "kitsu_id": "42047" - }, - "Houkago Saikoro Club": { - "showId": "1308", - "kitsu_id": "42345" - }, - "Choyoyu": { - "showId": "1309", - "imdb_id": "tt10671282" - }, - "Azur Lane": { - "showId": "1310", - "kitsu_id": "42420" - }, - "Chuubyou Gekihatsu Boy": { - "showId": "1311", - "kitsu_id": "42120" - }, - "Null Peta": { - "showId": "1312", - "kitsu_id": "42469" - }, - "Granblue Fantasy The Animation S2": { - "showId": "1313", - "kitsu_id": "14132" - }, - "BLACKFOX": { - "showId": "1314", - "kitsu_id": "41102" - }, - "Mairimashita! Iruma-kun": { - "showId": "1315", - "kitsu_id": "42310" - }, - "Val x Love": { - "showId": "1316", - "kitsu_id": "42344" - }, - "Bokutachi wa Benkyou ga Dekinai S2": { - "showId": "1317", - "kitsu_id": "42414" - }, - "Actors - Songs Connection": { - "showId": "1320", - "kitsu_id": "42308" - }, - "Babylon": { - "showId": "1321", - "kitsu_id": "41085" - }, - "Africa no Salaryman": { - "showId": "1322", - "kitsu_id": "42550" - }, - "Special 7 - Special Crime Investigation Unit": { - "showId": "1323", - "kitsu_id": "42272" - }, - "Watashi, Nouryoku wa Heikinchi de tte Itta yo ne!": { - "showId": "1324", - "kitsu_id": "42423" - }, - "Stand My Heroes - Piece of Truth": { - "showId": "1325", - "kitsu_id": "42309" - }, - "Phantasy Star Online 2 - Episode Oracle": { - "showId": "1326", - "kitsu_id": "42548" - }, - "Kandagawa Jet Girls": { - "showId": "1327", - "kitsu_id": "42476" - }, - "ZX - Code Reunion": { - "showId": "1328", - "kitsu_id": "42307" - }, - "Mugen no Juunin - Immortal": { - "showId": "1329", - "kitsu_id": "42346" - }, - "Hoshiai no Sora": { - "showId": "1330", - "kitsu_id": "42094" - }, - "No Guns Life": { - "showId": "1331", - "kitsu_id": "42197" - }, - "Assassins Pride": { - "showId": "1332", - "kitsu_id": "42328" - }, - "Gundam Build Divers Re-RISE": { - "showId": "1333", - "kitsu_id": "42585" - }, - "Shokugeki no Soma S4": { - "showId": "1334", - "kitsu_id": "42390" - }, - "Shin Chuuka Ichiban!": { - "showId": "1335", - "kitsu_id": "42549" - }, - "Kabukicho Sherlock": { - "showId": "1336", - "kitsu_id": "41939" - }, - "Sword Art Online - Alicization - War of Underworld": { - "showId": "1337", - "kitsu_id": "42213" - }, - "Rifle is Beautiful": { - "showId": "1338", - "kitsu_id": "42292" - }, - "Chihayafuru S3": { - "showId": "1339", - "kitsu_id": "40998" - }, - "PSYCHO-PASS 3": { - "showId": "1340", - "kitsu_id": "42183" - }, - "Mahouka Koukou no Rettousei Movie - Hoshi wo Yobu Shoujo": { - "showId": "1341", - "kitsu_id": "11931" - }, - "Thunderbolt Fantasy - Bewitching Melody of the West": { - "showId": "1342" - }, - "A3! Season Spring & Summer": { - "showId": "1378", - "kitsu_id": "42146" - }, - "ARP Backstage Pass": { - "showId": "1379", - "kitsu_id": "42879" - }, - "BanG Dream! S3": { - "showId": "1354", - "kitsu_id": "41290" - }, - "Boku no Tonari ni Ankoku Hakaishin ga Imasu": { - "showId": "1374", - "kitsu_id": "42100" - }, - "Darwin's Game": { - "showId": "1344", - "kitsu_id": "42260" - }, - "Eizouken ni wa Te wo Dasu na!": { - "showId": "1347", - "kitsu_id": "42343" - }, - "Haikyuu!! Riku vs Kuu": { - "showId": "1372", - "kitsu_id": "42502" - }, - "Haikyuu!! S4": { - "showId": "1369", - "kitsu_id": "42059" - }, - "Hatena Illusion": { - "showId": "1360", - "kitsu_id": "13704" - }, - "Heya Camp": { - "showId": "1351", - "kitsu_id": "41978" - }, - "Housekishou Richard-shi no Nazo Kantei": { - "showId": "1366", - "kitsu_id": "42488" - }, - "ID INVADED": { - "showId": "1348", - "kitsu_id": "42436" - }, - "Infinite Dendrogram": { - "showId": "1362", - "kitsu_id": "42131" - }, - "Isekai Quartet S2": { - "showId": "1380", - "kitsu_id": "42410" - }, - "Ishuzoku Reviewers": { - "showId": "1375", - "kitsu_id": "42744" - }, - "Itai no wa Iya nano de Bougyoryoku ni Kyokufuri Shitai to Omoimasu": { - "showId": "1357", - "kitsu_id": "42043" - }, - "Jibaku Shounen Hanako-kun": { - "showId": "1365", - "kitsu_id": "42322" - }, - "Koisuru Asteroid": { - "showId": "1345", - "kitsu_id": "42470" - }, - "Kyochuu Rettou Movie": { - "showId": "1371", - "kitsu_id": "42941" - }, - "Kyokou Suiri": { - "showId": "1377", - "kitsu_id": "42117" - }, - "Magia Record": { - "showId": "1346", - "kitsu_id": "42016" - }, - "Majutsushi Orphen Hagure Tabi": { - "showId": "1355", - "kitsu_id": "42329" - }, - "Murenase! Seton Gakuen": { - "showId": "1352", - "kitsu_id": "42601" - }, - "Nanabun no Nijyuuni": { - "showId": "1376", - "kitsu_id": "42456" - }, - "Nekopara": { - "showId": "1359", - "kitsu_id": "13121" - }, - "number24": { - "showId": "1356", - "kitsu_id": "42209" - }, - "Oda Cinnamon Nobunaga": { - "showId": "1373", - "kitsu_id": "42911" - }, - "Oshi ga Budoukan Ittekuretara Shinu": { - "showId": "1363", - "kitsu_id": "41309" - }, - "Pet": { - "showId": "1350", - "kitsu_id": "41089" - }, - "Plunderer": { - "showId": "1358", - "kitsu_id": "40600" - }, - "Re Zero kara Hajimeru Isekai Seikatsu - Director's Cut": { - "showId": "660", - "kitsu_id": "42903" - }, - "Rikei ga Koi ni Ochita no de Shoumei shitemita": { - "showId": "1368", - "kitsu_id": "42297" - }, - "Runway de Waratte": { - "showId": "1370", - "kitsu_id": "42552" - }, - "Show By Rock!! Mashumairesh!!": { - "showId": "1361", - "kitsu_id": "42885" - }, - "Somali to Mori no Kamisama": { - "showId": "1349", - "kitsu_id": "42201" - }, - "Toaru Kagaku no Railgun T": { - "showId": "1367", - "kitsu_id": "41979" - }, - "Uchi Tama - Uchi no Tama Shirimasen ka": { - "showId": "1364", - "kitsu_id": "42397" - }, - "Yatogame-chan Kansatsu Nikki S2": { - "showId": "1353", - "kitsu_id": "42398" - }, - "K - Seven Stories": { - "showId": "1381", - "kitsu_id": [ - "12116", - "41770", - "41772", - "41767", - "41768", - "41771" - ] - }, - "Kono Subarashii Sekai ni Shukufuku wo! Movie": { - "showId": "1382", - "kitsu_id": "41440" - }, - "PSYCHO-PASS 3 - First Inspector": { - "showId": "1383", - "kitsu_id": "42936" - }, - "Bungo to Alchemist - Shinpan no Haguruma": { - "showId": "1390", - "kitsu_id": "43062" - }, - "Hachi-nan tte, Sore wa Nai deshou!": { - "showId": "1386", - "kitsu_id": "43059" - }, - "Kakushigoto": { - "showId": "1387", - "kitsu_id": "42722" - }, - "Listeners": { - "showId": "1389", - "kitsu_id": "42391" - }, - "Nami yo Kiitekure": { - "showId": "1388", - "kitsu_id": "42614" - }, - "Tamayomi": { - "showId": "1384", - "kitsu_id": "42404" - }, - "Tower of God": { - "showId": "1385", - "kitsu_id": "43004" - }, - "Arte": { - "showId": "1393", - "kitsu_id": "42479" - }, - "Digimon Adventure (2020)": { - "showId": "1397", - "kitsu_id": "42954" - }, - "Sakura Wars the Animation": { - "showId": "1391", - "kitsu_id": "42966" - }, - "Yesterday wo Utatte": { - "showId": "1396", - "kitsu_id": "43063" - }, - "Gal to Kyouryuu": { - "showId": "1394", - "kitsu_id": "42532" - }, - "Gleipnir": { - "showId": "1401", - "kitsu_id": "42173" - }, - "IDOLiSH7 S2": { - "showId": "1398", - "kitsu_id": "42453" - }, - "Kingdom S3": { - "showId": "1402", - "kitsu_id": "43037" - }, - "Shachou, Battle no Jikan desu!": { - "showId": "1400", - "kitsu_id": "42850" - }, - "Tsugumomo S2": { - "showId": "1399", - "kitsu_id": "42180" - }, - "Fruits Basket S2 (2019)": { - "showId": "1406", - "kitsu_id": "42554" - }, - "Houkago Teibou Nisshi": { - "showId": "1407", - "kitsu_id": "42296" - }, - "Jashin-chan Dropkick S2": { - "showId": "1404", - "kitsu_id": "42126" - }, - "Princess Connect! Re Dive": { - "showId": "1405", - "kitsu_id": "42892" - }, - "Shadowverse": { - "showId": "1408", - "kitsu_id": "42613" - }, - "Shironeko Project - Zero Chronicle": { - "showId": "1403", - "kitsu_id": "43084" - }, - "Appare-Ranman!": { - "showId": "1410", - "kitsu_id": "42622" - }, - "Fugou Keiji Balance - UNLIMITED": { - "showId": "1409", - "kitsu_id": "43056" - }, - "Hamefura": { - "showId": "1395", - "kitsu_id": "42277" - }, - "Kaguya-sama wa Kokurasetai S2": { - "showId": "1413", - "kitsu_id": "42632" - }, - "Major 2nd S2": { - "showId": "1392", - "kitsu_id": "43109" - }, - "Shokugeki no Soma S5": { - "showId": "1411", - "kitsu_id": "42921" - }, - "Zashiki Warashi no Tatami-chan": { - "showId": "1412", - "kitsu_id": "43115" - }, - "Woodpecker Detective's Office": { - "showId": "1414", - "kitsu_id": "42602" - }, - "Kitsutsuki Tanteidokoro": { - "showId": "1415", - "kitsu_id": "42602" - }, - "Enen no Shouboutai S2": { - "showId": "1416", - "kitsu_id": "42909" - }, - "Dokyuu Hentai HxEros": { - "showId": "1417", - "kitsu_id": "42657" - }, - "Healin Good Precure": { - "showId": "1418", - "kitsu_id": "42650" - }, - "Maou Gakuin no Futekigousha": { - "showId": "1419", - "kitsu_id": "43005" - }, - "Lapis ReLiGHTs": { - "showId": "1420", - "kitsu_id": "41115" - }, - "The God of High School": { - "showId": "1421", - "kitsu_id": "43018" - }, - "Umayon": { - "showId": "1422", - "kitsu_id": "42034" - }, - "Deca-Dence": { - "showId": "1423", - "kitsu_id": "42433" - }, - "Uzaki-chan wa Asobitai!": { - "showId": "1424", - "kitsu_id": "43094" - }, - "Yahari Ore no Seishun Love Come wa Machigatteiru Kan": { - "showId": "1425", - "kitsu_id": "42194" - }, - "Peter Grill to Kenja no Jikan": { - "showId": "1426", - "kitsu_id": "42563" - }, - "Kanojo, Okarishimasu": { - "showId": "1427", - "kitsu_id": "43028" - }, - "Monster Musume no Oisha-san": { - "showId": "1428", - "kitsu_id": "42724" - }, - "Ninja Collection": { - "showId": "1429", - "kitsu_id": "43236" - }, - "Gibiate": { - "showId": "1430", - "kitsu_id": "43124" - }, - "Koi to Producer - Evol x Love": { - "showId": "1431", - "kitsu_id": "43240" - }, - "Re Zero kara Hajimeru Isekai Seikatsu - Memory Snow": { - "showId": "1432", - "kitsu_id": "13882" - }, - "Re Zero kara Hajimeru Isekai Seikatsu - Hyouketsu no Kizuna": { - "showId": "1433", - "kitsu_id": "42006" - }, - "Goblin Slayer - Goblin's Crown": { - "showId": "1434", - "kitsu_id": "42204" - }, - "Boku no Hero Academia - Ikinokore! Kesshi no Survival Kunren": { - "showId": "1435", - "kitsu_id": "43485" - } -} \ No newline at end of file diff --git a/scraper/scrapers/horriblesubs/horriblesubs_scraper.js b/scraper/scrapers/horriblesubs/horriblesubs_scraper.js deleted file mode 100644 index 91d9a81..0000000 --- a/scraper/scrapers/horriblesubs/horriblesubs_scraper.js +++ /dev/null @@ -1,186 +0,0 @@ -const fs = require('fs'); -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const decode = require('magnet-uri'); -const horriblesubs = require('./horriblesubs_api.js'); -const repository = require('../../lib/repository'); -const { Type } = require('../../lib/types'); -const { updateCurrentSeeders, updateTorrentSize } = require('../../lib/torrent'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); -const { getMetadata, getKitsuId } = require('../../lib/metadata'); -const showMappings = require('./horriblesubs_mapping.json'); - -const NAME = 'HorribleSubs'; -const NEXT_FULL_SCRAPE_OFFSET = 5 * 24 * 60 * 60; // 5 days; - -const limiter = new Bottleneck({ maxConcurrent: 5 }); -const entryLimiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - const lastScraped = lastScrape.lastScraped && moment(lastScrape.lastScraped); - - if (!lastScraped || lastScraped.add(NEXT_FULL_SCRAPE_OFFSET, 'seconds') < scrapeStart) { - console.log(`[${scrapeStart}] scrapping all ${NAME} shows...`); - return _scrapeAllShows() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished scrapping all ${NAME} shows`)); - } else { - console.log(`[${scrapeStart}] scrapping latest ${NAME} entries...`); - return _scrapeLatestEntries() - .then(() => console.log(`[${moment()}] finished scrapping latest ${NAME} entries`)); - } -} - -async function updateSeeders(torrent) { - return Promise.resolve([]); -} - -async function _scrapeLatestEntries() { - const latestEntries = await horriblesubs.getLatestEntries(); - - return Promise.all(latestEntries - .map((entryData) => limiter.schedule(() => _parseShowData(entryData) - .catch((err) => console.log(err))))); -} - -async function _scrapeAllShows() { - const shows = await horriblesubs.allShows(); - - return Promise.all(shows - .map((show) => limiter.schedule(() => horriblesubs.showData(show) - .then((showData) => _parseShowData(showData, false)) - .catch((err) => console.log(err))))); -} - -async function compareSearchKitsuIds() { - console.log(`${NAME}: initiating kitsu compare...`); - const shows = await horriblesubs.allShows() - .then((shows) => Promise.all(shows.slice(0, 1).map((show) => limiter.schedule(() => enrichShow(show))))); - - const incorrect = shows.filter( - (show) => showMappings[show.title] && showMappings[show.title].kitsu_id !== show.kitsu_id); - const incorrectRatio = incorrect.length / shows.length; - console.log(incorrect); - console.log(`Ratio: ${incorrectRatio}`); -} - -async function initMapping() { - console.log(`${NAME}: initiating kitsu mapping...`); - const shows = await horriblesubs.allShows() - .then((shows) => shows.filter((show) => !showMappings[show.title])) - .then((shows) => Promise.all(shows.map((show) => limiter.schedule(() => enrichShow(show))))) - .then((shows) => shows.reduce((map, show) => (map[show.title] = show, map), showMappings)); - - fs.writeFile( - "./scraper/scrapers/horriblesubs/horriblesubs_mapping.json", - JSON.stringify(shows), 'utf8', - (err) => { - if (err) { - console.log("An error occurred while writing JSON Object to File.", err); - } else { - console.log(`${NAME}: finished kitsu mapping`); - } - } - ); -} - -async function enrichShow(show) { - console.log(`${NAME}: getting show info for ${show.title}...`); - const showId = await horriblesubs._getShowId(show.url) - .catch(() => show.title); - const metadata = await getKitsuId({ title: show.title }) - .then((kitsuId) => getMetadata(kitsuId)) - .catch((error) => { - console.log(`Failed getting kitsu meta: ${error.message}`); - return {}; - }); - - return { - showId: showId, - kitsu_id: metadata.kitsuId, - ...show, - kitsuTitle: metadata.title, - imdb_id: metadata.imdbId - } -} - -async function _parseShowData(showData, updateSeeders = true) { - console.log(`${NAME}: scrapping ${showData.title} data...`); - const showMapping = showMappings[showData.title]; - const kitsuId = showMapping && showMapping.kitsu_id; - if (!showMapping) { - throw new Error(`No kitsu mapping found for ${showData.title}`); - } - if (!kitsuId) { - throw new Error(`No kitsuId found for ${showData.title}`); - } - - // sometimes horriblesubs entry contains multiple season in it, so need to split it per kitsu season entry - const kitsuIdsMapping = Array.isArray(kitsuId) && await Promise.all(kitsuId.map(kitsuId => getMetadata(kitsuId))) - .then((metas) => metas.reduce((map, meta) => { - const epOffset = Object.keys(map).length; - [...Array(meta.totalCount || 1).keys()] - .map(ep => ep + 1) - .forEach(ep => map[ep + epOffset] = { kitsuId: meta.kitsuId, episode: ep, title: meta.title }); - return map; - }, {})) || {}; - const formatTitle = (episodeInfo, mirror) => { - const mapping = kitsuIdsMapping[episodeInfo.episode.replace(/^0+/, '')]; - if (mapping) { - return `${mapping.title} - ${mapping.episode} [${mirror.resolution}]`; - } - return `${episodeInfo.title} - ${episodeInfo.episode} [${mirror.resolution}]`; - }; - const getKitsuId = inputEpisode => { - const episodeString = inputEpisode.includes('-') && inputEpisode.split('-')[0] || inputEpisode; - const episode = parseInt(episodeString, 10); - if (kitsuIdsMapping[episode]) { - return kitsuIdsMapping[episode].kitsuId; - } else if (Array.isArray(kitsuId)) { - console.warn(`Unmapped episode number for ${showData.title} - ${inputEpisode}`); - return undefined; - } - return kitsuId; - }; - - return Promise.all([].concat(showData.singleEpisodes || []).concat(showData.packEpisodes || []) - .map(episodeInfo => episodeInfo.mirrors - .filter(mirror => mirror.magnetLink && mirror.magnetLink.length) - .map(mirror => ({ - provider: NAME, - ...mirror, - infoHash: decode(mirror.magnetLink).infoHash, - trackers: decode(mirror.magnetLink).tr.join(','), - title: formatTitle(episodeInfo, mirror), - type: Type.ANIME, - kitsuId: getKitsuId(episodeInfo.episode), - uploadDate: episodeInfo.uploadDate, - }))) - .reduce((a, b) => a.concat(b), []) - .filter(torrent => torrent.kitsuId) - .map(torrent => entryLimiter.schedule(() => processTorrentRecord(torrent, updateSeeders)))) - .then(() => console.log(`${NAME}: finished scrapping ${showData.title} data`)); -} - -async function processTorrentRecord(torrent, updateSeeders = true) { - const existingTorrent = await repository.getTorrent(torrent).catch(() => undefined); - - if (existingTorrent && existingTorrent.provider === NAME) { - if (updateSeeders) { - return updateCurrentSeeders(torrent).then(updatedSeeders => checkAndUpdateTorrent(updatedSeeders)) - } - return Promise.resolve(torrent) - } - - return updateTorrentSize(torrent) - .then(updated => updateCurrentSeeders(updated)) - .then(updated => createTorrentEntry(updated, true)) - .catch(error => console.warn(`Failed creating entry for ${torrent.title}:`, error)); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/kickass/kickass_api.js b/scraper/scrapers/kickass/kickass_api.js deleted file mode 100644 index 43fb061..0000000 --- a/scraper/scrapers/kickass/kickass_api.js +++ /dev/null @@ -1,161 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const decode = require('magnet-uri'); -const Promises = require('../../lib/promises'); -const { parseSize } = require("../scraperHelper"); - -const defaultProxies = [ - 'https://katcr.co' -]; -const defaultTimeout = 10000; - -const Categories = { - MOVIE: 'movies', - TV: 'tv', - ANIME: 'anime', - APPS: 'applications', - GAMES: 'games', - MUSIC: 'music', - BOOKS: 'books', - PORN: 'xxx', - OTHER: 'other', -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - const proxyList = config.proxyList || defaultProxies; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/torrent/${torrentId}`, config))) - .then((body) => parseTorrentPage(body)) - .then((torrent) => ({ torrentId, ...torrent })) - .catch((err) => torrent(torrentId, config, retries - 1)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/search/${keyword}/${page}/99/${category}`, config))) - .then((body) => parseTableBody(body)) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/category/${category}/page/${page}`, config))) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { timeout: timeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('Access Denied')) { - console.log(`Access Denied: ${requestUrl}`); - throw new Error(`Access Denied: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden') || - body.includes('Origin DNS error') || - !body.includes('Kickass Torrents')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('.table > tbody > tr').each((i, element) => { - const row = $(element); - const magnetLink = row.find('a[title="Torrent magnet link"]').attr('href'); - torrents.push({ - name: row.find('a[class="torrents_table__torrent_title"]').first().children('b').text(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - torrentId: row.find('a[class="torrents_table__torrent_title"]').first().attr('href').replace('/torrent/', ''), - category: row.find('span[class="torrents_table__upload_info"]').first().children('a').first().attr('href') - .match(/category\/([^\/]+)/)[1], - seeders: parseInt(row.find('td[data-title="Seed"]').first().text()), - leechers: parseInt(row.find('td[data-title="Leech"]').first().text()), - size: parseSize(row.find('td[data-title="Size"]').first().text()), - uploadDate: moment(row.find('td[data-title="Age"]').first().attr('title')).toDate() - }); - }); - - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const content = $('div[class="col"]').first(); - const info = content.find('div[class="torrent_stats"]').parent(); - const description = content.find('div[id="main"]'); - const magnetLink = info.find('a[title="Download verified Magnet"]').attr('href'); - const imdbIdMatch = description.html().match(/imdb\.com\/title\/(tt\d+)/i); - - const torrent = { - name: info.find('h1').first().text(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - seeders: parseInt(info.find('span[class="torrent_stats__seed_count mr-2"]').first().text().match(/\d+/)[0], 10), - leechers: parseInt(info.find('span[class="torrent_stats__leech_count mr-2"]').first().text().match(/\d+/)[0], 10), - category: info.find('small').first().children('a').first().attr('href').match(/\/category\/([^\/]+)/)[1], - languages: description.find('span:contains(\'Audio\')').next().children().eq(0).text(), - size: parseSize(description.find('ul[class="file_list"]').first().find('li').first().contents().eq(2).text() - .match(/\(Size: (.+)\)/)[1]), - uploadDate: moment(info.find('time').first().text()).toDate(), - imdbId: imdbIdMatch && imdbIdMatch[1], - files: content.find('ul[class="file_list"]').first().find('li > ul > li[class="file_list__file"]') - .map((i, elem) => $(elem)) - .map((i, ele) => ({ - fileIndex: i, - name: ele.find('span > ul > li').contents().eq(1).text().trim().replace(/^.+\//g, ''), - path: ele.find('span > ul > li').contents().eq(1).text().trim(), - size: parseSize(ele.contents().eq(2).text()) - })).get() - }; - if (torrent.files.length >= 50) { - // a max of 50 files are displayed on the page - delete torrent.files; - } - resolve(torrent); - }); -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/kickass/kickass_dump_scraper.js b/scraper/scrapers/kickass/kickass_dump_scraper.js deleted file mode 100644 index 6e8dc5e..0000000 --- a/scraper/scrapers/kickass/kickass_dump_scraper.js +++ /dev/null @@ -1,98 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const LineByLineReader = require('line-by-line'); -const fs = require('fs'); -const { Type } = require('../../lib/types'); -const { createTorrentEntry, createSkipTorrentEntry, getStoredTorrentEntry } = require('../../lib/torrentEntries'); - -const NAME = 'KickassTorrents'; -const CSV_FILE_PATH = '/tmp/kickass.csv'; - -const limiter = new Bottleneck({ maxConcurrent: 40 }); - -async function scrape() { - console.log(`starting to scrape KAT dump: ${JSON.stringify(lastDump)}`); - - let entriesProcessed = 0; - const lr = new LineByLineReader(CSV_FILE_PATH); - lr.on('line', (line) => { - if (entriesProcessed % 1000 === 0) { - console.log(`Processed ${entriesProcessed} entries`); - } - const row = line.match(/(?<=^|\|)(".*"|[^|]+)(?=\||$)/g); - if (row.length !== 11) { - console.log(`Invalid row: ${line}`); - return; - } - const torrent = { - infoHash: row[0].toLowerCase(), - title: row[1] - .replace(/^"|"$/g, '') - .replace(/&/g, '&') - .replace(/&\w{2,6};/g, ' ') - .replace(/\s+/g, ' ') - .trim(), - category: row[2], - size: parseInt(row[5], 10), - seeders: parseInt(row[8], 10), - uploadDate: moment.unix(parseInt(row[10], 10)).toDate(), - }; - - if (!limiter.empty()) { - lr.pause() - } - - limiter.schedule(() => processTorrentRecord(torrent) - .catch((error) => console.log(`failed ${torrent.title} due: ${error}`))) - .then(() => limiter.empty()) - .then((empty) => empty && lr.resume()) - .then(() => entriesProcessed++); - }); - lr.on('error', (err) => { - console.log(err); - }); - lr.on('end', () => { - fs.unlink(CSV_FILE_PATH); - console.log(`finished to scrape KAT dump: ${JSON.stringify(lastDump)}!`); - }); -} - -const categoryMapping = { - "Movies": Type.MOVIE, - "TV": Type.SERIES, - "Anime": Type.ANIME -}; - -async function processTorrentRecord(record) { - if (!categoryMapping[record.category] || record.seeders === 0) { - return createSkipTorrentEntry(record); - } - if (await getStoredTorrentEntry(record)) { - return; - } - - const torrentFound = await findTorrent(record).catch(() => undefined); - - if (!torrentFound) { - return createSkipTorrentEntry(record); - } - - const torrent = { - infoHash: record.infoHash, - provider: NAME, - title: torrentFound.name, - size: record.size, - type: categoryMapping[record.category], - imdbId: torrentFound.imdbId, - uploadDate: record.uploadDate, - seeders: torrentFound.seeders, - }; - - return createTorrentEntry(torrent); -} - -async function findTorrent(record) { - return Promise.reject("not found"); -} - -module.exports = { scrape, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/kickass/kickass_scraper.js b/scraper/scrapers/kickass/kickass_scraper.js deleted file mode 100644 index f23e423..0000000 --- a/scraper/scrapers/kickass/kickass_scraper.js +++ /dev/null @@ -1,91 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const kickass = require('./kickass_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'KickassTorrents'; -const UNTIL_PAGE = 10; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => kickass.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - kickass.Categories.MOVIE, - kickass.Categories.TV, - kickass.Categories.ANIME, - ]; - - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return kickass.browse(({ category, page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < UNTIL_PAGE - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - const torrentFound = await kickass.torrent(record.torrentId).catch(() => undefined); - - if (!torrentFound || !TYPE_MAPPING[torrentFound.category]) { - return Promise.resolve('Invalid torrent record'); - } - - const torrent = { - infoHash: torrentFound.infoHash, - provider: NAME, - torrentId: torrentFound.torrentId, - title: torrentFound.name.replace(/\t|\s+/g, ' '), - type: TYPE_MAPPING[torrentFound.category], - size: torrentFound.size, - seeders: torrentFound.seeders, - uploadDate: torrentFound.uploadDate, - imdbId: torrentFound.imdbId, - languages: torrentFound.languages || undefined - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[kickass.Categories.MOVIE] = Type.MOVIE; - mapping[kickass.Categories.TV] = Type.SERIES; - mapping[kickass.Categories.ANIME] = Type.ANIME; - return mapping; -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/lapumia/lapumia_api.js b/scraper/scrapers/lapumia/lapumia_api.js deleted file mode 100644 index 5f9a9da..0000000 --- a/scraper/scrapers/lapumia/lapumia_api.js +++ /dev/null @@ -1,145 +0,0 @@ -const axios = require('axios'); -const moment = require("moment") -const cheerio = require("cheerio"); -const decode = require('magnet-uri'); -const { escapeHTML } = require('../../lib/metadata'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { isPtDubbed, sanitizePtName, sanitizePtOriginalName, sanitizePtLanguages } = require('../scraperHelper') - -const defaultTimeout = 10000; -const maxSearchPage = 50 - -const baseUrl = 'https://lapumia.org'; - -const Categories = { - MOVIE: null, - TV: 'series', - ANIME: 'animes', -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - return singleRequest(`${baseUrl}/${torrentId}`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map(el => ({ torrentId, ...el }))) - .catch((err) => { - console.warn(`Failed Lapumia ${torrentId} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, (config.extendToPage || 1)) - - return singleRequest(`${baseUrl}/page/${page}/?s=${keyword}`, config) - .then(body => parseTableBody(body)) - .then(torrents => torrents.length === 10 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const requestUrl = category ? `${baseUrl}/${category}/page/${page}/` : `${baseUrl}/page/${page}/` - - return singleRequest(requestUrl, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { userAgent: getRandomUserAgent(), timeout: timeout, follow: 2 }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('div.post').each((i, element) => { - const row = $(element); - try { - torrents.push({ - name: row.find("div > a").text(), - torrentId: row.find("div > a").attr("href").split('/')[3] - }); - } catch (e) { - console.log("Failed parsing Lupumia table entry") - } - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const magnets = $('h2 > span') - .filter((i, elem) => isPtDubbed($(elem).text())).parent() - .map((i, elem) => $(elem).nextUntil('h2, hr')) - .map((i, elem) => $(elem).find('a[href^="magnet"]')) - .map((i, section) => $(section).attr("href")).get(); - const category = parseCategory($('div.category').html()); - const details = $('div.content') - const torrents = magnets.filter(magnetLink => decode(magnetLink).name).map(magnetLink => ({ - title: sanitizePtName(escapeHTML(decode(magnetLink).name.replace(/\+/g, ' '))), - originalName: sanitizePtOriginalName(details.find('b:contains(\'Titulo Original:\')')[0].nextSibling.nodeValue), - year: details.find('b:contains(\'Ano de Lançamento:\')')[0].nextSibling.nodeValue.trim(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - category: category, - uploadDate: new Date(moment($('div.infos').text().split('•')[0].trim(), 'LL', 'pt-br').format()), - imdbId: $('.imdbRatingPlugin').attr('data-title') || null, - languages: sanitizePtLanguages(details.find('b:contains(\'Idioma\')')[0].nextSibling.nodeValue) - })) - resolve(torrents.filter((x) => x)); - }); -} - -function parseCategory(categorys) { - const $ = cheerio.load(categorys) - if ($('a:contains(\'Animes\')').text()) { - return Categories.ANIME - } - if ($('a:contains(\'Series\')').text()) { - return Categories.TV - } - return Categories.MOVIE -} - -module.exports = { torrent, search, browse, Categories }; \ No newline at end of file diff --git a/scraper/scrapers/lapumia/lapumia_scraper.js b/scraper/scrapers/lapumia/lapumia_scraper.js deleted file mode 100644 index e5ec085..0000000 --- a/scraper/scrapers/lapumia/lapumia_scraper.js +++ /dev/null @@ -1,112 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const lapumia = require("./lapumia_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); -const { getImdbId } = require("../../lib/metadata"); - -const NAME = "Lapumia"; -const UNTIL_PAGE = 5; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => lapumia.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - lapumia.Categories.MOVIE, - lapumia.Categories.TV - ]; - - return Promises.sequence(allowedCategories - .map((category) => () => scrapeLatestTorrentsForCategory(category))) - .then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return lapumia - .browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - return lapumia.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - if (!foundTorrent.imdbId && TYPE_MAPPING[foundTorrent.category] !== Type.ANIME) { - const info = { title: foundTorrent.originalName, year: foundTorrent.year }; - foundTorrent.imdbId = await getImdbId(info, TYPE_MAPPING[foundTorrent.category]).catch(() => undefined); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - imdbId: foundTorrent.imdbId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[lapumia.Categories.MOVIE] = Type.MOVIE; - mapping[lapumia.Categories.TV] = Type.SERIES; - mapping[lapumia.Categories.ANIME] = Type.ANIME; - return mapping; -} - -function untilPage(category) { - if (lapumia.Categories.ANIME === category) { - return 2; - } - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/nyaapantsu/nyaa_pantsu_api.js b/scraper/scrapers/nyaapantsu/nyaa_pantsu_api.js deleted file mode 100644 index c9ed20e..0000000 --- a/scraper/scrapers/nyaapantsu/nyaa_pantsu_api.js +++ /dev/null @@ -1,73 +0,0 @@ -const { pantsu } = require('nyaapi') - -const Categories = { - ANIME: { - ALL: '3_', - ENGLISH: '3_5', - RAW: '3_6', - MUSIC_VIDEO: '3_12', - NON_ENGLISH: '3_13', - }, - LIVE_ACTION: { - ALL: '5_', - ENGLISH: '5_9', - RAW: '5_11', - PROMOTIONAL_VIDEO: '5_10', - NON_ENGLISH: '5_18', - } -} - -function torrent(torrentId) { - if (!torrentId) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return pantsu.infoRequest(torrentId) - .then(result => parseTorrent(result)) - .catch(error => handleError(error, torrentId)); -} - -function search(query) { - return pantsu.search(query) - .then(results => results.map(torrent => parseTorrent(torrent))) - .catch(error => handleError(error, query)); -} - -function browse(config = {}) { - const page = config.page || 1; - const category = config.category || Categories.ANIME.ENGLISH; - - return pantsu.list(category, page) - .then(results => results.map(torrent => parseTorrent(torrent))) - .catch(error => handleError(error, category)); -} - -function handleError(error, identifier) { - if (error.statusCode && error.statusCode >= 400) { - return Promise.reject(new Error(`${error.statusCode}: [${identifier}] failed retrieval on NyaaPantsu`)); - } - return Promise.reject(error); -} - -function parseTorrent(torrent) { - return { - title: torrent.name.replace(/\t|\s+/g, ' ').trim(), - torrentId: torrent.id, - infoHash: torrent.hash.trim().toLowerCase(), - magnetLink: torrent.magnet, - torrentLink: torrent.torrent, - seeders: torrent.seeders, - size: torrent.filesize, - uploadDate: new Date(torrent.date), - category: `${torrent.category}_${torrent.sub_category}`, - languages: torrent.languages ? torrent.languages.join(',') : undefined, - files: torrent.file_list && torrent.file_list.length ? torrent.file_list.map((file, fileId) => ({ - fileIndex: fileId, - name: file.path.replace(/([^\/]+$)/, '$1'), - path: file.path, - size: file.filesize - })) : undefined - } -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/nyaapantsu/nyaa_pantsu_scraper.js b/scraper/scrapers/nyaapantsu/nyaa_pantsu_scraper.js deleted file mode 100644 index 60ad04b..0000000 --- a/scraper/scrapers/nyaapantsu/nyaa_pantsu_scraper.js +++ /dev/null @@ -1,97 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const pantsu = require('./nyaa_pantsu_api'); -const { Type } = require('../../lib/types'); -const Promises = require('../../lib/promises'); -const repository = require('../../lib/repository'); -const { updateCurrentSeeders, updateTorrentSize } = require('../../lib/torrent'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'NyaaPantsu'; -const UNTIL_PAGE = 5 - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - // const ids = ['1033095']; - // return Promise.all(ids.map(id => limiter.schedule(() => pantsu.torrent(id) - // .then(torrent => processTorrentRecord(torrent))))) - // .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => pantsu.torrent(torrent.torrentId)) - .then(foundTorrent => { - if (Number.isInteger(foundTorrent.seeders)) { - return [foundTorrent]; - } - return [] - }); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - pantsu.Categories.ANIME.ENGLISH - ]; - - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return pantsu.browse(({ page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent) - .catch(error => { - console.warn(`Failed processing [${torrent.infoHash}] ${torrent.title} due: `, error); - return Promise.resolve(); - }))))) - .then(resolved => resolved.length > 0 && page < UNTIL_PAGE - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (!record || await checkAndUpdateTorrent(record)) { - return record; - } - - if (!record.size) { - await updateTorrentSize(record) - } - if (record.seeders === null || record.seeders === undefined) { - await updateCurrentSeeders(record); - } - - const torrent = { - infoHash: record.infoHash, - torrentLink: record.torrentLink, - provider: NAME, - torrentId: record.torrentId, - title: record.title, - type: Type.ANIME, - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - languages: record.languages, - files: record.files || undefined - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/nyaasi/nyaa_si_api.js b/scraper/scrapers/nyaasi/nyaa_si_api.js deleted file mode 100644 index 39d2cb6..0000000 --- a/scraper/scrapers/nyaasi/nyaa_si_api.js +++ /dev/null @@ -1,66 +0,0 @@ -const { si } = require('nyaapi') -const { parseSize } = require("../scraperHelper"); - -const Categories = { - ANIME: { - ALL: '1_0', - MUSIC_VIDEO: '1_1', - ENGLISH: '1_2', - NON_ENGLISH: '1_3', - RAW: '1_4' - }, - LIVE_ACTION: { - ALL: '4_0', - ENGLISH: '4_1', - PROMOTIONAL_VIDEO: '4_2', - NON_ENGLISH: '4_3', - RAW: '4_4' - } -} - -function torrent(torrentId) { - if (!torrentId) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return si.infoRequest(torrentId) - .then(result => parseTorrent(result)) - .then(result => ({ ...result, torrentId })) - .catch(error => { - if (error.statusCode && error.statusCode === 404) { - return Promise.reject(new Error(`404: [${torrentId}] not found on NyaaSi`)); - } - return Promise.reject(error); - }); -} - -function search(query) { - return si.search(query, null, { category: Categories.ANIME.ENGLISH}) - .then(results => results.map(torrent => parseTorrent(torrent))); -} - -function browse(config = {}) { - const page = config.page || 1; - const category = config.category || Categories.ANIME.ENGLISH; - const sort = config.sort || 'id' - - return si.list(category, page, { sort }) - .then(response => response.results || []) - .then(results => results.map(torrent => parseTorrent(torrent))); -} - -function parseTorrent(torrent) { - return { - title: torrent.name.replace(/\t|\s+/g, ' ').trim(), - torrentId: torrent.id, - infoHash: torrent.hash.trim().toLowerCase(), - magnetLink: torrent.magnet, - torrentLink: torrent.torrent, - seeders: parseInt(torrent.seeders), - size: parseSize(torrent.filesize), - uploadDate: new Date(torrent.date), - category: torrent.sub_category, - } -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/nyaasi/nyaa_si_scraper.js b/scraper/scrapers/nyaasi/nyaa_si_scraper.js deleted file mode 100644 index d1ba1f7..0000000 --- a/scraper/scrapers/nyaasi/nyaa_si_scraper.js +++ /dev/null @@ -1,87 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const nyaasi = require('./nyaa_si_api'); -const { Type } = require('../../lib/types'); -const Promises = require('../../lib/promises'); -const repository = require('../../lib/repository'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'NyaaSi'; -const UNTIL_PAGE = 10 - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - // const ids = ['1292786']; - // return Promise.all(ids.map(id => limiter.schedule(() => nyaasi.torrent(id) - // .then(torrent => processTorrentRecord(torrent))))) - // .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); - // const queries = ['Sagrada Reset', 'Sakurada Reset']; - // return Promise.all(queries.map(query => limiter.schedule(() => nyaasi.search(query) - // .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent)))))))) - // .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - // return limiter.schedule(() => nyaasi.torrent(torrent.torrentId)) - // .then(foundTorrent => Number.isInteger(foundTorrent.seeders) ? [foundTorrent] : []); - return Promise.resolve([]); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - nyaasi.Categories.ANIME.ENGLISH - ]; - - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return nyaasi.browse({ page, sort: 'id' }) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent) - .catch(error => { - console.warn(`Failed processing [${torrent.infoHash}] ${torrent.title} due: `, error); - return Promise.resolve(); - }))))) - .then(resolved => resolved.length > 0 && page < UNTIL_PAGE - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (!record || await checkAndUpdateTorrent(record)) { - return record; - } - - const torrent = { - infoHash: record.infoHash, - torrentLink: record.torrentLink, - provider: NAME, - torrentId: record.torrentId, - title: record.title, - type: Type.ANIME, - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/ondebaixa/ondebaixa_api.js b/scraper/scrapers/ondebaixa/ondebaixa_api.js deleted file mode 100644 index 5b56924..0000000 --- a/scraper/scrapers/ondebaixa/ondebaixa_api.js +++ /dev/null @@ -1,151 +0,0 @@ -const axios = require('axios'); -const cheerio = require("cheerio"); -const decode = require('magnet-uri'); -const { escapeHTML } = require('../../lib/metadata'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { isPtDubbed, sanitizePtName, sanitizePtOriginalName, sanitizePtLanguages } = require('../scraperHelper') - -const defaultTimeout = 30000; -const maxSearchPage = 50 - -const baseUrl = 'https://ondebaixa.com'; - -const Categories = { - MOVIE: 'filmes', - TV: 'series', - ANIME: 'anime', - DESENHOS: 'desenhos' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} query`)); - } - const slug = encodeURIComponent(torrentId.split("/")[3]); - return singleRequest(`${baseUrl}/${slug}/`, config) - .then((body) => parseTorrentPage(body)) - .then((torrent) => torrent.map(el => ({ torrentId: slug, ...el }))) - .catch((err) => { - console.warn(`Failed OndeBaixo ${slug} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const page = config.page || 1; - const extendToPage = Math.min(maxSearchPage, (config.extendToPage || 1)) - - return singleRequest(`${baseUrl}/${keyword}/${page}/`, config) - .then(body => parseTableBody(body)) - .then(torrents => torrents.length === 40 && page < extendToPage - ? search(keyword, { ...config, page: page + 1 }).catch(() => []) - .then(nextTorrents => torrents.concat(nextTorrents)) - : torrents) - .catch((err) => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const requestUrl = category ? `${baseUrl}/${category}/${page}/` : `${baseUrl}/${page}/`; - - return singleRequest(requestUrl, config) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1)); -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('div.capa_larga.align-middle').each((i, element) => { - const row = $(element); - torrents.push({ - name: row.find("a").text(), - torrentId: row.find("a").attr("href") - }); - }); - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const magnets = $(`a[href^="magnet"]`) - .filter((i, elem) => isPtDubbed($(elem).attr('title'))) - .map((i, elem) => $(elem).attr("href")).get(); - const details = $('div#informacoes') - const category = details.find('span:contains(\'Gêneros: \')').next().html() - const torrents = magnets.map(magnetLink => { - const decodedMagnet = decode(magnetLink); - const name = sanitizePtName(escapeHTML(decodedMagnet.name || '').replace(/\+/g, ' ')); - const originalTitle = details.find('span:contains(\'Título Original: \')').next().text().trim(); - const year = details.find('span:contains(\'Ano de Lançamento: \')').next().text().trim(); - const fallBackTitle = `${originalTitle.trim()} ${year.trim()} ${name.trim()}`; - return { - title: name.length > 5 ? name : fallBackTitle, - originalName: sanitizePtOriginalName(originalTitle), - year: year, - infoHash: decodedMagnet.infoHash, - magnetLink: magnetLink, - category: parseCategory(category), - uploadDate: new Date($('time').attr('datetime')), - languages: sanitizePtLanguages(details.find('span:contains(\'Idioma\')').next().text()) - } - }); - resolve(torrents.filter((x) => x)); - }); -} - -function parseCategory(body) { - const $ = cheerio.load(body) - if ($("a[href*='anime']").text()) { - return Categories.ANIME - } - if ($("a[href*='series']").text()) { - return Categories.TV - } - if ($("a[href*='filmes']").text()) { - return Categories.MOVIE - } - if ($("a[href*='desenhos']").text()) { - return Categories.TV - } -} - -module.exports = { torrent, search, browse, Categories }; \ No newline at end of file diff --git a/scraper/scrapers/ondebaixa/ondebaixa_scraper.js b/scraper/scrapers/ondebaixa/ondebaixa_scraper.js deleted file mode 100644 index e098a72..0000000 --- a/scraper/scrapers/ondebaixa/ondebaixa_scraper.js +++ /dev/null @@ -1,113 +0,0 @@ -const moment = require("moment"); -const Bottleneck = require("bottleneck"); -const ondebaixa = require("./ondebaixa_api"); -const { Type } = require("../../lib/types"); -const repository = require("../../lib/repository"); -const Promises = require("../../lib/promises"); -const { createTorrentEntry, checkAndUpdateTorrent } = require("../../lib/torrentEntries"); -const { updateCurrentSeeders, updateTorrentSize } = require("../../lib/torrent"); -const { getImdbId } = require("../../lib/metadata"); - -const NAME = "OndeBaixa"; -const UNTIL_PAGE = 5; -const TYPE_MAPPING = typeMapping(); - -const limiter = new Bottleneck({ maxConcurrent: 5 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => ondebaixa.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - ondebaixa.Categories.MOVIE, - ondebaixa.Categories.TV, - ondebaixa.Categories.DESENHOS - ]; - - return Promises.sequence( - allowedCategories.map( - (category) => () => scrapeLatestTorrentsForCategory(category) - ) - ).then((entries) => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return ondebaixa - .browse({ category, page }) - .catch((error) => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then((torrents) => Promise.all(torrents.map((torrent) => limiter.schedule(() => processEntry(torrent))))) - .then((resolved) => resolved.length > 0 && page < untilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processEntry(entry) { - return ondebaixa.torrent(entry.torrentId) - .then(records => Promises.sequence(records.map(record => () => processTorrentRecord(record)))) - .catch(() => undefined); -} - -async function processTorrentRecord(foundTorrent) { - if (await checkAndUpdateTorrent({ provider: NAME, ...foundTorrent })) { - return foundTorrent; - } - - if (!foundTorrent.size) { - await updateTorrentSize(foundTorrent); - } - if (!Number.isInteger(foundTorrent.seeders)) { - await updateCurrentSeeders(foundTorrent); - } - if (!foundTorrent.imdbId && TYPE_MAPPING[foundTorrent.category] !== Type.ANIME) { - const info = { title: foundTorrent.originalName, year: foundTorrent.year }; - foundTorrent.imdbId = await getImdbId(info, TYPE_MAPPING[foundTorrent.category]).catch(() => undefined); - } - - const torrent = { - infoHash: foundTorrent.infoHash, - provider: NAME, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - imdbId: foundTorrent.imdbId, - uploadDate: foundTorrent.uploadDate, - seeders: foundTorrent.seeders, - size: foundTorrent.size, - files: foundTorrent.files, - languages: foundTorrent.languages - }; - return createTorrentEntry(torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[ondebaixa.Categories.MOVIE] = Type.MOVIE; - mapping[ondebaixa.Categories.TV] = Type.SERIES; - mapping[ondebaixa.Categories.DESENHOS] = Type.SERIES; - mapping[ondebaixa.Categories.ANIME] = Type.ANIME; - return mapping; -} - -function untilPage(category) { - return UNTIL_PAGE; -} - -module.exports = { scrape, updateSeeders, NAME }; diff --git a/scraper/scrapers/rarbg/rarbg_api.js b/scraper/scrapers/rarbg/rarbg_api.js deleted file mode 100644 index 694fe35..0000000 --- a/scraper/scrapers/rarbg/rarbg_api.js +++ /dev/null @@ -1,161 +0,0 @@ -const axios = require('axios'); -const decode = require('magnet-uri'); -const Promises = require('../../lib/promises'); -const { getRandomUserAgent } = require("../../lib/requestHelper"); - -const baseUrl = 'https://torrentapi.org/pubapi_v2.php'; -const appId = 'torrentio-addon'; -const defaultTimeout = 30000; -const retryDelay = 3000; - -let token; - -const Options = { - category: { - MOVIES_XVID: [14], - MOVIES_XVID_720P: [48], - MOVIES_X264: [17], - MOVIES_X264_1080P: [44], - MOVIES_X264_720P: [45], - MOVIES_X264_3D: [47], - MOVIES_X264_4K: [50], - MOVIES_X265_1080P: [54], - MOVIES_X265_4K: [51], - MOVIES_X265_4K_HDR: [52], - MOVIES_FULL_BD: [42], - MOVIES_BD_REMUX: [46], - MOVIES_HIGH_RES: [47, 50, 51, 52, 46], - TV_EPISODES: [18], - TV_UHD_EPISODES: [49], - TV_HD_EPISODES: [41], - MUSIC_MP3: [23], - MUSIC_FLAC: [25], - GAMES_PC_ISO: [27], - GAMES_PC_RIP: [28], - GAMES_PS3: [40], - GAMES_XBOX_360: [32], - SOFTWARE_PC_ISO: [33], - EBOOKS: [35], - XXX: [4], - }, - sort: { - LAST: 'last', - SEEDERS: 'seeders', - LEECHERS: 'leechers' - }, - format: { - JSON: 'json', - JSON_EXTENDED: 'json_extended' - }, - ranked: { - TRUE: 1, - FALSE: 0 - } -} - -function search(imdbId, params = {}) { - if (!imdbId) { - return Promise.reject(new Error(`Must define imdbId`)); - } - const parameters = { - mode: 'search', - search_imdb: imdbId, - category: params.category && params.category.join(';') || null, - limit: params.limit || 100, - sort: params.sort || Options.sort.SEEDERS, - min_seeders: params.min_seeders || undefined, - min_leechers: params.min_leechers || undefined, - format: params.format || Options.format.JSON_EXTENDED, - ranked: params.ranked || Options.ranked.FALSE - } - - return singleRequest(parameters).then(results => parseResults(results)); -} - -function browse(params = {}) { - const parameters = { - mode: 'list', - category: params.category && params.category.join(';') || null, - limit: params.limit || 100, - sort: params.sort || Options.sort.LAST, - min_seeders: params.min_seeders || undefined, - min_leechers: params.min_leechers || undefined, - format: params.format || Options.format.JSON_EXTENDED, - ranked: params.ranked || Options.ranked.FALSE - } - - return singleRequest(parameters).then(results => parseResults(results)); -} - -async function singleRequest(params = {}, config = {}, retries = 15) { - const timeout = config.timeout || defaultTimeout; - const headers = { - 'user-agent': getRandomUserAgent(), - 'accept-encoding': 'gzip, deflate', - 'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,lt;q=0.7,ar;q=0.6,fr;q=0.5,de;q=0.4' - }; - params.token = await getToken(); - params.app_id = appId; - - Object.keys(params) - .filter(key => params[key] === undefined || params[key] === null) - .forEach(key => delete params[key]); - const options = { headers, timeout, params }; - return axios.get(baseUrl, options) - .then(response => { - if (response.data && response.data.error_code === 4) { - // token expired - token = undefined; - return singleRequest(params, config); - } - if ((!response.data || !response.data.length || [5, 20].includes(response.data.error_code)) && retries > 0) { - // too many requests - return Promises.delay(retryDelay).then(() => singleRequest(params, config, retries - 1)); - } - if (response.status !== 200 || (response.data && response.data.error)) { - // something went wrong - return Promise.reject(response.data || `Failed RARGB request with status=${response.status}`); - } - - return response.data; - }) - .catch(error => { - if (error.response && [429].includes(error.response.status) && retries > 0) { - return Promises.delay(retryDelay).then(() => singleRequest(params, config, retries - 1)); - } - return Promise.reject(error.message || error); - }); -} - -function parseResults(results) { - if (!results || !Array.isArray(results.torrent_results)) { - return Promise.reject(`Incorrect results ${JSON.stringify(results)}`) - } - return results.torrent_results.map(result => parseResult(result)); -} - -function parseResult(result) { - return { - title: result.title, - infoHash: decode(result.download).infoHash, - magnetLink: result.download, - seeders: result.seeders, - leechers: result.leechers, - category: result.category, - size: result.size, - uploadDate: new Date(result.pubdate), - imdbId: result.episode_info && result.episode_info.imdb - } -} - -async function getToken() { - if (!token) { - const params = { get_token: 'get_token', app_id: appId }; - const options = { timeout: defaultTimeout, params }; - token = await axios.get(baseUrl, options) - .then(response => response.data.token); - } - return token; -} - -module.exports = { search, browse, Options }; diff --git a/scraper/scrapers/rarbg/rarbg_dump_scraper.js b/scraper/scrapers/rarbg/rarbg_dump_scraper.js deleted file mode 100644 index 5cf07b5..0000000 --- a/scraper/scrapers/rarbg/rarbg_dump_scraper.js +++ /dev/null @@ -1,80 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const rarbg = require('./rarbg_api'); -const { Type } = require('../../lib/types'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'RARBG'; - -const limiter = new Bottleneck({ maxConcurrent: 1, minTime: 3000 }); -const entryLimiter = new Bottleneck({ maxConcurrent: 20 }); -const allowedCategories = [ - rarbg.Options.category.MOVIES_XVID, - rarbg.Options.category.MOVIES_XVID_720P, - rarbg.Options.category.MOVIES_X265_1080P, - rarbg.Options.category.MOVIES_X264, - rarbg.Options.category.MOVIES_X264_720P, - rarbg.Options.category.MOVIES_X264_1080P, - rarbg.Options.category.MOVIES_HIGH_RES, - rarbg.Options.category.TV_EPISODES, - rarbg.Options.category.TV_UHD_EPISODES, - rarbg.Options.category.TV_HD_EPISODES -].reduce((a, b) => a.concat(b), []) - -async function scrape() { - console.log(`[${moment()}] starting ${NAME} dump scrape...`); - // const movieImdbIds = require('./rargb_movie_imdb_ids_2021-02-27.json'); - const seriesImdbIds = require('./rargb_series_imdb_ids_2021-02-27.json'); - //const allImdbIds = [].concat(movieImdbIds).concat(seriesImdbIds); - - return Promise.all( - seriesImdbIds.map(imdbId => limiter.schedule(() => getTorrentsForImdbId(imdbId)) - .then(torrents => Promise.all(torrents.map(t => entryLimiter.schedule(() => processTorrentRecord(t))))))) - .then(() => console.log(`[${moment()}] finished ${NAME} dump scrape`)); -} - -async function getTorrentsForImdbId(imdbId) { - return rarbg.search(imdbId, { category: allowedCategories }) - .then(torrents => { - console.log(`Completed ${imdbId} request`); - return torrents; - }) - .catch(error => { - console.warn(`Failed ${NAME} request for ${imdbId}: `, error); - return []; - }); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - const torrent = { - provider: NAME, - infoHash: record.infoHash, - title: record.title, - type: getType(record.category), - seeders: record.seeders, - size: record.size, - uploadDate: record.uploadDate, - imdbId: record.imdbId - }; - - return createTorrentEntry(torrent); -} - -const seriesCategories = [ - 'TV Episodes', - 'Movies/TV-UHD-episodes', - 'TV HD Episodes', -]; - -function getType(category) { - if (seriesCategories.includes(category)) { - return Type.SERIES; - } - return Type.MOVIE; -} - -module.exports = { scrape, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/rarbg/rarbg_scraper.js b/scraper/scrapers/rarbg/rarbg_scraper.js deleted file mode 100644 index 3a8c9d9..0000000 --- a/scraper/scrapers/rarbg/rarbg_scraper.js +++ /dev/null @@ -1,95 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const rarbg = require('./rarbg_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'RARBG'; - -const limiter = new Bottleneck({ maxConcurrent: 1, minTime: 2500 }); -const entryLimiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent, getImdbIdsMethod) { - // return getImdbIdsMethod() - // .then(imdbIds => Promise.all(imdbIds.map(imdbId => limiter.schedule(() => search(imdbId))))) - // .then(results => results.reduce((a, b) => a.concat(b), [])); - return Promise.resolve([]); -} - -async function scrapeLatestTorrents() { - const allowedCategories = [ - rarbg.Options.category.MOVIES_XVID, - rarbg.Options.category.MOVIES_XVID_720P, - rarbg.Options.category.MOVIES_X265_1080P, - rarbg.Options.category.MOVIES_X264, - rarbg.Options.category.MOVIES_X264_720P, - rarbg.Options.category.MOVIES_X264_1080P, - rarbg.Options.category.MOVIES_HIGH_RES, - rarbg.Options.category.TV_EPISODES, - rarbg.Options.category.TV_UHD_EPISODES, - rarbg.Options.category.TV_HD_EPISODES - ]; - - return Promises.sequence(allowedCategories - .map(category => () => limiter.schedule(() => scrapeLatestTorrentsForCategory(category)))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category) { - console.log(`Scrapping ${NAME} ${category} category`); - return rarbg.browse({ category: category }) - .then(torrents => Promise.all(torrents.map(t => entryLimiter.schedule(() => processTorrentRecord(t))))) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for ${category} due: `, error); - return Promise.resolve([]); - }); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - const torrent = { - provider: NAME, - infoHash: record.infoHash, - title: record.title, - type: getType(record.category), - seeders: record.seeders, - size: record.size, - uploadDate: record.uploadDate, - imdbId: record.imdbId - }; - - return createTorrentEntry(torrent); -} - -const seriesCategories = [ - 'TV Episodes', - 'Movies/TV-UHD-episodes', - 'TV HD Episodes', -]; - -function getType(category) { - if (seriesCategories.includes(category)) { - return Type.SERIES; - } - return Type.MOVIE; -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/rarbg/rargb_movie_imdb_ids_2020-04-22.json b/scraper/scrapers/rarbg/rargb_movie_imdb_ids_2020-04-22.json deleted file mode 100644 index e9d7439..0000000 --- a/scraper/scrapers/rarbg/rargb_movie_imdb_ids_2020-04-22.json +++ /dev/null @@ -1,42378 +0,0 @@ -[ - "tt7582798", - "tt8701132", - "tt0062413", - "tt7728754", - "tt0063364", - "tt0060325", - "tt4456270", - "tt5578150", - "tt6686700", - "tt1590796", - "tt0067676", - "tt7094312", - "tt4224622", - "tt0095616", - "tt6492196", - "tt8134310", - "tt1743720", - "tt8277710", - "tt2506934", - "tt2364673", - "tt3333240", - "tt7575702", - "tt11199514", - "tt7975244", - "tt4059460", - "tt0039756", - "tt0036527", - "tt11719418", - "tt0270822", - "tt0036535", - "tt5916158", - "tt2401745", - "tt7519410", - "tt6348410", - "tt0013257", - "tt5468130", - "tt0068612", - "tt4066836", - "tt8820178", - "tt5115676", - "tt2605238", - "tt7919950", - "tt2194703", - "tt4613910", - "tt7764650", - "tt3099358", - "tt5254868", - "tt2816682", - "tt7758170", - "tt4065450", - "tt0358086", - "tt5845320", - "tt6111628", - "tt6275838", - "tt3044580", - "tt5852292", - "tt6082228", - "tt8027448", - "tt5634556", - "tt6467152", - "tt6908274", - "tt2213924", - "tt7349896", - "tt6318484", - "tt7255620", - "tt11290298", - "tt4622682", - "tt11558924", - "tt8269120", - "tt2430922", - "tt3638542", - "tt8924846", - "tt3468260", - "tt5141686", - "tt7526414", - "tt4794544", - "tt6420742", - "tt1686812", - "tt4026336", - "tt5630396", - "tt8055880", - "tt3751306", - "tt8726098", - "tt6368348", - "tt2369754", - "tt0221946", - "tt9659470", - "tt7879350", - "tt0135068", - "tt5974402", - "tt0056312", - "tt7010412", - "tt7373310", - "tt0084577", - "tt8535968", - "tt0076098", - "tt2076292", - "tt1408089", - "tt2072190", - "tt3475130", - "tt0126968", - "tt1556190", - "tt5171296", - "tt3104062", - "tt0081194", - "tt0260654", - "tt0185508", - "tt4510892", - "tt0415478", - "tt2097868", - "tt2299954", - "tt0051561", - "tt2073550", - "tt0023251", - "tt2076800", - "tt7239688", - "tt7074788", - "tt0068469", - "tt4701906", - "tt5815156", - "tt6905366", - "tt8151416", - "tt6304040", - "tt7817670", - "tt11354400", - "tt11434306", - "tt0084587", - "tt1719497", - "tt9046574", - "tt9577222", - "tt08948208", - "tt0306903", - "tt10627720", - "tt0119303", - "tt5167200", - "tt3863870", - "tt0972785", - "tt10469384", - "tt0068954", - "tt0389912", - "tt0113063", - "tt0433363", - "tt9573980", - "tt0076937", - "tt0108228", - "tt4453792", - "tt0157079", - "tt0334965", - "tt7387632", - "tt0497353", - "tt10481868", - "tt5687270", - "tt6739894", - "tt10380706", - "tt10795414", - "tt3513548", - "tt0452668", - "tt0092173", - "tt8211214", - "tt0384638", - "tt1799349", - "tt1713800", - "tt1799350", - "tt6620260", - "tt3180626", - "tt2771932", - "tt3659718", - "tt1799352", - "tt2496534", - "tt3549984", - "tt3760700", - "tt5872368", - "tt4938416", - "tt3383556", - "tt9675210", - "tt4986906", - "tt6283598", - "tt3760706", - "tt0296034", - "tt5424368", - "tt4238844", - "tt7559576", - "tt0106963", - "tt0088772", - "tt5434568", - "tt6075688", - "tt0068364", - "tt3861212", - "tt2522274", - "tt6405058", - "tt8666500", - "tt4539508", - "tt0064728", - "tt8439180", - "tt1249170", - "tt5285684", - "tt3794354", - "tt7091328", - "tt6833774", - "tt5272052", - "tt0126568", - "tt0192213", - "tt0113732", - "tt0112820", - "tt6949498", - "tt0055977", - "tt5226192", - "tt7615052", - "tt4844140", - "tt0182719", - "tt9179168", - "tt0251382", - "tt0118119", - "tt8008382", - "tt0277944", - "tt6616074", - "tt3355258", - "tt0083361", - "tt3996164", - "tt6683912", - "tt4208594", - "tt5797184", - "tt3473646", - "tt5047108", - "tt8372298", - "tt5128626", - "tt9347750", - "tt7665180", - "tt8629748", - "tt4712202", - "tt10880084", - "tt1815989", - "tt0105128", - "tt2573372", - "tt5160614", - "tt4169146", - "tt3984356", - "tt10985510", - "tt7596680", - "tt7957314", - "tt0112828", - "tt6753132", - "tt0079031", - "tt0097619", - "tt0452592", - "tt9035872", - "tt8816194", - "tt1179773", - "tt9026524", - "tt0150500", - "tt0094608", - "tt6081882", - "tt5814534", - "tt0106676", - "tt9057942", - "tt5033998", - "tt5727208", - "tt6394270", - "tt0198781", - "tt9353436", - "tt0455584", - "tt0118631", - "tt0035460", - "tt7713068", - "tt0381838", - "tt0034074", - "tt0120623", - "tt0046124", - "tt10121372", - "tt7287136", - "tt0111003", - "tt1453405", - "tt0042206", - "tt0104719", - "tt0071330", - "tt3281548", - "tt0102296", - "tt0041673", - "tt0067345", - "tt3530146", - "tt0125784", - "tt4715470", - "tt2231605", - "tt7473034", - "tt1046163", - "tt0387575", - "tt0100332", - "tt3661798", - "tt0769507", - "tt0068367", - "tt0104706", - "tt0145046", - "tt0162983", - "tt0100503", - "tt0816671", - "tt1456520", - "tt0217080", - "tt0060580", - "tt0070003", - "tt2672746", - "tt10645860", - "tt7379994", - "tt0065456", - "tt0086907", - "tt0227051", - "tt0120770", - "tt5596352", - "tt7952920", - "tt0098260", - "tt10606866", - "tt0484562", - "tt5815420", - "tt6806448", - "tt3700364", - "tt0185125", - "tt7220118", - "tt0065009", - "tt0101725", - "tt6403382", - "tt2017486", - "tt0116421", - "tt4730638", - "tt9898086", - "tt7446692", - "tt1772407", - "tt4030354", - "tt3006826", - "tt1083470", - "tt7380006", - "tt6270640", - "tt0281820", - "tt8426270", - "tt1711016", - "tt7776830", - "tt10509642", - "tt0495751", - "tt6974254", - "tt4546580", - "tt8241704", - "tt2926176", - "tt0357470", - "tt4985772", - "tt6165902", - "tt2297894", - "tt2913562", - "tt0070016", - "tt6114246", - "tt5791222", - "tt4257962", - "tt2751468", - "tt3561800", - "tt5467324", - "tt7331748", - "tt3580692", - "tt2442488", - "tt0978813", - "tt7725070", - "tt5841094", - "tt11049100", - "tt2246779", - "tt8786466", - "tt6833550", - "tt2641678", - "tt7410684", - "tt1703909", - "tt8110630", - "tt2663380", - "tt6543358", - "tt2523876", - "tt3741146", - "tt6690236", - "tt5180332", - "tt7752054", - "tt5661030", - "tt9349942", - "tt5105734", - "tt5602318", - "tt5838396", - "tt10287376", - "tt11261584", - "tt6373518", - "tt7750864", - "tt1302006", - "tt0314197", - "tt4604154", - "tt0089789", - "tt0348124", - "tt0118601", - "tt7666792", - "tt0432432", - "tt11738792", - "tt6802922", - "tt6010976", - "tt5827916", - "tt8493962", - "tt8764144", - "tt7049448", - "tt10619724", - "tt4328094", - "tt4933914", - "tt1404653", - "tt9155326", - "tt4073582", - "tt11421396", - "tt0064827", - "tt4984930", - "tt7689484", - "tt1135774", - "tt4766892", - "tt11379280", - "tt1773741", - "tt0339464", - "tt6522846", - "tt3320110", - "tt2512030", - "tt7183876", - "tt3154422", - "tt1969091", - "tt4966130", - "tt9077188", - "tt3742040", - "tt5079996", - "tt5883926", - "tt7208822", - "tt8343642", - "tt1657302", - "tt7607492", - "tt2153222", - "tt2519318", - "tt2883224", - "tt7657120", - "tt6959668", - "tt9154584", - "tt3042964", - "tt6254796", - "tt5711092", - "tt6283758", - "tt5127090", - "tt9060534", - "tt6517392", - "tt7607370", - "tt5886510", - "tt5846888", - "tt8322802", - "tt9476490", - "tt7607416", - "tt0100409", - "tt5239436", - "tt9269852", - "tt9017614", - "tt6603568", - "tt6819018", - "tt3752700", - "tt4458408", - "tt9247710", - "tt0048499", - "tt0091193", - "tt6173346", - "tt7018722", - "tt0063230", - "tt8152324", - "tt0426396", - "tt0085320", - "tt0109593", - "tt9736976", - "tt9515298", - "tt0059726", - "tt0052606", - "tt0066955", - "tt0318281", - "tt3907584", - "tt10984420", - "tt10043726", - "tt2352302", - "tt6185692", - "tt6316506", - "tt8703882", - "tt6051260", - "tt9099102", - "tt11255486", - "tt5757874", - "tt2315628", - "tt7632000", - "tt4174926", - "tt7453044", - "tt4061424", - "tt3574966", - "tt0124295", - "tt7456534", - "tt0272036", - "tt0050168", - "tt6957366", - "tt5277030", - "tt7522002", - "tt4842648", - "tt5935518", - "tt4317858", - "tt8722346", - "tt4657460", - "tt0045607", - "tt0101414", - "tt0005180794", - "tt5148460", - "tt4690878", - "tt4641264", - "tt6554744", - "tt1853563", - "tt5194226", - "tt5615904", - "tt5356490", - "tt0185297", - "tt5362688", - "tt0437459", - "tt4684488", - "tt9015306", - "tt5514846", - "tt0079187", - "tt5641606", - "tt0209264", - "tt1729609", - "tt5131960", - "tt0064355", - "tt6492056", - "tt5343512", - "tt4480624", - "tt3633646", - "tt6319942", - "tt3864466", - "tt4419506", - "tt1581845", - "tt0860837", - "tt4036488", - "tt1522295", - "tt0374853", - "tt0450087", - "tt2693060", - "tt0365866", - "tt2095765", - "tt8633088", - "tt6523668", - "tt6910012", - "tt3254710", - "tt6817296", - "tt0985101", - "tt8615816", - "tt6053946", - "tt5138728", - "tt6023110", - "tt4487264", - "tt6054328", - "tt3262990", - "tt6959666", - "tt2199733", - "tt7107342", - "tt5339586", - "tt7046112", - "tt6082614", - "tt1595583", - "tt2123145", - "tt2514162", - "tt7663776", - "tt7606464", - "tt9060526", - "tt10656112", - "tt7587068", - "tt5979874", - "tt7788188", - "tt4920096", - "tt6017922", - "tt5137022", - "tt0107665", - "tt9097148", - "tt9028632", - "tt9150970", - "tt0056234", - "tt3606314", - "tt2546038", - "tt4736576", - "tt4326556", - "tt8103746", - "tt9613316", - "tt4125856", - "tt2771200", - "tt6333088", - "tt1703231", - "tt3808172", - "tt7738134", - "tt4156518", - "tt0106417", - "tt5842792", - "tt6483242", - "tt2147048", - "tt4048186", - "tt1222816", - "tt0107306", - "tt7131060", - "tt4374814", - "tt6318556", - "tt1562910", - "tt3356648", - "tt3695154", - "tt7725144", - "tt1379233", - "tt2091880", - "tt2087696", - "tt5241380", - "tt4339852", - "tt0191801", - "tt1043434", - "tt6039474", - "tt3487446", - "tt2463464", - "tt1233503", - "tt9770590", - "tt7183082", - "tt0287665", - "tt2708922", - "tt2458608", - "tt4566712", - "tt2829108", - "tt2582960", - "tt2753654", - "tt5773474", - "tt7160286", - "tt4226162", - "tt7709710", - "tt6539818", - "tt7924764", - "tt7607558", - "tt4058572", - "tt5378728", - "tt4696502", - "tt6475778", - "tt8028842", - "tt8563704", - "tt9174348", - "tt7607378", - "tt7150482", - "tt7607450", - "tt9861504", - "tt0114952", - "tt7014356", - "tt8101766", - "tt7937168", - "tt0102867", - "tt0070339", - "tt7149066", - "tt0056241", - "tt0087366", - "tt7320482", - "tt3418844", - "tt9820352", - "tt10085338", - "tt5919756", - "tt5599332", - "tt6902676", - "tt2402107", - "tt5506864", - "tt8856470", - "tt4344624", - "tt7431740", - "tt5706294", - "tt8611746", - "tt2532454", - "tt3243664", - "tt9569212", - "tt5461596", - "tt5907916", - "tt7600382", - "tt0086257", - "tt5883022", - "tt5706292", - "tt5520970", - "tt4778500", - "tt0087425", - "tt0139465", - "tt0390272", - "tt5701132", - "tt8324578", - "tt6518634", - "tt0100134", - "tt0417225", - "tt0117271", - "tt3281640", - "tt10369632", - "tt3974972", - "tt3323588", - "tt7016254", - "tt2096615", - "tt5643272", - "tt0307919", - "tt4368086", - "tt4909348", - "tt9676614", - "tt9796226", - "tt5366234", - "tt4994254", - "tt1433775", - "tt3439430", - "tt6459288", - "tt1707375", - "tt1673470", - "tt6402212", - "tt0058698", - "tt1072756", - "tt3293462", - "tt5032026", - "tt5708082", - "tt6427156", - "tt0218388", - "tt1152815", - "tt7076838", - "tt0354234", - "tt6601146", - "tt3826628", - "tt6502534", - "tt2115439", - "tt7297954", - "tt6430360", - "tt3901962", - "tt2448374", - "tt5070076", - "tt3118120", - "tt6385840", - "tt1299362", - "tt7797250", - "tt2713440", - "tt9089908", - "tt5152484", - "tt7607502", - "tt9642038", - "tt2631472", - "tt2036452", - "tt2677368", - "tt0910970", - "tt3589494", - "tt5652620", - "tt6085412", - "tt6759686", - "tt9630196", - "tt0057399", - "tt0065026", - "tt1260351", - "tt5576336", - "tt0124595", - "tt1049413", - "tt0120512", - "tt0062659", - "tt1410261", - "tt0082250", - "tt0069946", - "tt1757796", - "tt3008816", - "tt0118698", - "tt0069957", - "tt5581502", - "tt4915318", - "tt0069312", - "tt0079477", - "tt0060261", - "tt7003976", - "tt0095491", - "tt9356952", - "tt7798644", - "tt5051278", - "tt0030909", - "tt9434836", - "tt2258724", - "tt4194054", - "tt0074472", - "tt9506000", - "tt11474156", - "tt6888132", - "tt5990464", - "tt7491732", - "tt0375669", - "tt0093507", - "tt8890690", - "tt11766318", - "tt3891834", - "tt8820136", - "tt0116676", - "tt1449383", - "tt0990376", - "tt1458939", - "tt6798766", - "tt6318432", - "tt6328116", - "tt2769276", - "tt3588082", - "tt0790810", - "tt8398704", - "tt1390471", - "tt6033150", - "tt2343761", - "tt2935800", - "tt0105108", - "tt4025594", - "tt2992904", - "tt1978491", - "tt6645896", - "tt8775056", - "tt6902018", - "tt8469818", - "tt3635998", - "tt3918650", - "tt3886372", - "tt2353887", - "tt0087055", - "tt6596630", - "tt9425078", - "tt6756464", - "tt2776304", - "tt4286086", - "tt4240704", - "tt3477070", - "tt6984530", - "tt4935898", - "tt2952692", - "tt9174108", - "tt6772524", - "tt8717974", - "tt0927619", - "tt3234126", - "tt2401199", - "tt5566936", - "tt10152200", - "tt0200529", - "tt5579910", - "tt1119621", - "tt0073594", - "tt9251748", - "tt0092884", - "tt11305096", - "tt9635616", - "tt0405061", - "tt0455135", - "tt5323760", - "tt7737394", - "tt0325655", - "tt5073642", - "tt10525174", - "tt9099136", - "tt5976054", - "tt9595506", - "tt0218127", - "tt7410922", - "tt6122540", - "tt0214730", - "tt2759372", - "tt11283990", - "tt0338135", - "tt0064787", - "tt3509078", - "tt0092798", - "tt4838248", - "tt8702008", - "tt0090985", - "tt7288442", - "tt8946378", - "tt0247638", - "tt5745450", - "tt0837562", - "tt0368933", - "tt0091053", - "tt0096438", - "tt0104940", - "tt8287232", - "tt9078374", - "tt7288408", - "tt3295240", - "tt0896816", - "tt0118780", - "tt0211577", - "tt0104943", - "tt0114977", - "tt1227774", - "tt3016748", - "tt11736170", - "tt9587244", - "tt1369571", - "tt0345119", - "tt0085595", - "tt7840316", - "tt0874333", - "tt5794306", - "tt0114065", - "tt1192620", - "tt8443432", - "tt1086777", - "tt0094869", - "tt0081004", - "tt1332033", - "tt1757841", - "tt9119200", - "tt11409576", - "tt6751668", - "tt2248739", - "tt7355708", - "tt5097410", - "tt2370140", - "tt5732482", - "tt6856540", - "tt3717314", - "tt6423408", - "tt4283892", - "tt5990270", - "tt6041030", - "tt2385115", - "tt5883008", - "tt5275844", - "tt6257714", - "tt1334558", - "tt5425144", - "tt5598216", - "tt6710214", - "tt7806998", - "tt6000140", - "tt5037288", - "tt6170130", - "tt4185572", - "tt4930760", - "tt7807000", - "tt6562866", - "tt6090102", - "tt7574286", - "tt6550456", - "tt1791687", - "tt4465220", - "tt6608034", - "tt8257900", - "tt5946232", - "tt6302122", - "tt5374002", - "tt9326056", - "tt8106284", - "tt5571712", - "tt6023444", - "tt6438918", - "tt5222724", - "tt6715992", - "tt5861260", - "tt0120366", - "tt0080427", - "tt0144250", - "tt7344360", - "tt7588752", - "tt5457520", - "tt6854248", - "tt11324534", - "tt0110115", - "tt5709506", - "tt3551400", - "tt1230126", - "tt2150139", - "tt0110392", - "tt0301555", - "tt5065500", - "tt5821256", - "tt3949586", - "tt4687906", - "tt9741588", - "tt8096832", - "tt6820324", - "tt6317016", - "tt0367088", - "tt7103742", - "tt7179102", - "tt2276071", - "tt3091320", - "tt2667714", - "tt2484460", - "tt6225534", - "tt2205762", - "tt10228168", - "tt6499666", - "tt0090098", - "tt8359816", - "tt5233090", - "tt3600760", - "tt2920294", - "tt5817548", - "tt3612008", - "tt0436058", - "tt0052924", - "tt1843207", - "tt0298066", - "tt1337117", - "tt6702308", - "tt10645682", - "tt8949410", - "tt3677840", - "tt3827462", - "tt1820413", - "tt2122355", - "tt2308682", - "tt3121050", - "tt0352190", - "tt1448497", - "tt3586118", - "tt5351044", - "tt5974406", - "tt4690052", - "tt9099938", - "tt1529666", - "tt2392842", - "tt3589968", - "tt6312802", - "tt0136242", - "tt7962890", - "tt0114991", - "tt6148782", - "tt1992268", - "tt7230148", - "tt7046524", - "tt4627224", - "tt1935914", - "tt0102996", - "tt5058148", - "tt4077742", - "tt3280176", - "tt3118696", - "tt1668212", - "tt10964516", - "tt2516326", - "tt5048716", - "tt4454406", - "tt0350079", - "tt5786588", - "tt9436204", - "tt10887846", - "tt3646058", - "tt6794460", - "tt0250310", - "tt0289782", - "tt8178958", - "tt10964532", - "tt2279353", - "tt9071322", - "tt1833657", - "tt0059079", - "tt7995680", - "tt0045077", - "tt6890618", - "tt6173484", - "tt7456312", - "tt10844816", - "tt9133378", - "tt7979142", - "tt7334342", - "tt6190204", - "tt2900822", - "tt6075764", - "tt1636844", - "tt0067634", - "tt5045746", - "tt0073279", - "tt9671918", - "tt5512160", - "tt7335104", - "tt6103812", - "tt8676426", - "tt0012952", - "tt5912470", - "tt8883472", - "tt5778092", - "tt5086446", - "tt5999588", - "tt0059796", - "tt0111070", - "tt0078382", - "tt6181964", - "tt0131449", - "tt0065380", - "tt8907428", - "tt0090103", - "tt4058836", - "tt0042383", - "tt6019068", - "tt0099381", - "tt1226251", - "tt5521724", - "tt2689966", - "tt6258232", - "tt6522678", - "tt3360148", - "tt0107944", - "tt0025731", - "tt5356318", - "tt0120241", - "tt2203881", - "tt3973656", - "tt0366544", - "tt2924590", - "tt8435932", - "tt0039949", - "tt7534054", - "tt1500694", - "tt0105565", - "tt5538118", - "tt0431641", - "tt0058383", - "tt0171357", - "tt81851823", - "tt9514970", - "tt0070136", - "tt2373878", - "tt0057334", - "tt9198974", - "tt0243595", - "tt6733372", - "tt0384819", - "tt7931422", - "tt3415734", - "tt7493804", - "tt6121428", - "tt0091637", - "tt5723056", - "tt2265373", - "tt0065955", - "tt7112158", - "tt7154176", - "tt7743588", - "tt5769440", - "tt7240562", - "tt7399726", - "tt7757028", - "tt2634200", - "tt6568190", - "tt7994070", - "tt6816210", - "tt4734132", - "tt5847760", - "tt3496094", - "tt2379418", - "tt6090190", - "tt1667875", - "tt3687938", - "tt4131594", - "tt6275334", - "tt7228086", - "tt5425488", - "tt0049278", - "tt7128868", - "tt7493472", - "tt6859024", - "tt7162400", - "tt6314906", - "tt3265574", - "tt11780762", - "tt0181739", - "tt1859558", - "tt0103793", - "tt7213936", - "tt8516596", - "tt4630466", - "tt0116839", - "tt0189192", - "tt0067980", - "tt2226437", - "tt6977470", - "tt1787741", - "tt0169299", - "tt11177308", - "tt0090009", - "tt0094882", - "tt2523852", - "tt1621014", - "tt3309038", - "tt0108654", - "tt4199110", - "tt0109675", - "tt0118600", - "tt8102036", - "tt6705640", - "tt0109891", - "tt6398570", - "tt0443489", - "tt0479162", - "tt6466464", - "tt6854672", - "tt1842520", - "tt9850064", - "tt8707922", - "tt4838690", - "tt7852686", - "tt5831668", - "tt3967878", - "tt3329554", - "tt0065636", - "tt6679412", - "tt10176734", - "tt6627682", - "tt10623478", - "tt0202623", - "tt3404246", - "tt0057532", - "tt2093269", - "tt5791732", - "tt0804513", - "tt2378390", - "tt1295021", - "tt0106215", - "tt5547496", - "tt7288084", - "tt3473390", - "tt2625270", - "tt4216890", - "tt1151813", - "tt2358456", - "tt1314270", - "tt1430082", - "tt5686622", - "tt2343600", - "tt7841664", - "tt3074610", - "tt6332764", - "tt6881530", - "tt2522908", - "tt5111550", - "tt2233170", - "tt2380207", - "tt6816388", - "tt8176578", - "tt7752142", - "tt4454648", - "tt5566684", - "tt6120500", - "tt0302674", - "tt0105306", - "tt2398514", - "tt4486122", - "tt2605244", - "tt2318763", - "tt2901584", - "tt4188822", - "tt6576144", - "tt5796986", - "tt0835419", - "tt1619622", - "tt7265806", - "tt7664414", - "tt8834152", - "tt4226446", - "tt2153212", - "tt1185344", - "tt4484636", - "tt6465314", - "tt5706242", - "tt6370616", - "tt5671902", - "tt6678722", - "tt7278738", - "tt6318202", - "tt4648586", - "tt7193448", - "tt2329206", - "tt7850992", - "tt6170268", - "tt6969140", - "tt5567492", - "tt7861698", - "tt9184886", - "tt2796278", - "tt0865482", - "tt0079357", - "tt6191090", - "tt4061848", - "tt7902184", - "tt9170648", - "tt9817258", - "tt5716624", - "tt7434070", - "tt5602922", - "tt7646384", - "tt3667148", - "tt5784340", - "tt8717296", - "tt2772584", - "tt9428026", - "tt0027869", - "tt0033539", - "tt7476418", - "tt0020538", - "tt0013367", - "tt0037154", - "tt0024960", - "tt11410450", - "tt8211258", - "tt0034546", - "tt0034613", - "tt4076756", - "tt4584718", - "tt7979668", - "tt7141520", - "tt2967856", - "tt0252299", - "tt7673930", - "tt2141623", - "tt2042692", - "tt1699746", - "tt5971394", - "tt0251448", - "tt0109370", - "tt0120797", - "tt0090770", - "tt4695548", - "tt6095486", - "tt0377749", - "tt2205561", - "tt7461372", - "tt2768084", - "tt6924650", - "tt1479388", - "tt10696018", - "tt10011232", - "tt2271315", - "tt5663298", - "tt5273720", - "tt6097422", - "tt8028600", - "tt11642302", - "tt0095613", - "tt0092264", - "tt0421135", - "tt1557181", - "tt0106877", - "tt4977524", - "tt8226892", - "tt0097891", - "tt3079222", - "tt1929433", - "tt5946668", - "tt2337686", - "tt9352128", - "tt1823058", - "tt1059317", - "tt5487734", - "tt0266824", - "tt1665743", - "tt3621336", - "tt5884004", - "tt1455061", - "tt3701506", - "tt4225478", - "tt0119166", - "tt3392142", - "tt5661770", - "tt4154126", - "tt7635226", - "tt7121252", - "tt6522634", - "tt2325833", - "tt5849950", - "tt11379322", - "tt0246772", - "tt8513302", - "tt0119733", - "tt1127883", - "tt1621642", - "tt4207094", - "tt4459912", - "tt4222718", - "tt4917862", - "tt2197926", - "tt7609436", - "tt2180317", - "tt6264928", - "tt2255787", - "tt6890582", - "tt5198850", - "tt8383596", - "tt1609160", - "tt8251336", - "tt4867110", - "tt1773687", - "tt2566580", - "tt6830780", - "tt0415838", - "tt3711510", - "tt5140522", - "tt1522748", - "tt10887838", - "tt2374564", - "tt9426186", - "tt4998984", - "tt10161238", - "tt6451304", - "tt7583568", - "tt5475678", - "tt1801123", - "tt4520988", - "tt1623013", - "tt7479540", - "tt6483458", - "tt3691930", - "tt6025626", - "tt8123886", - "tt2525802", - "tt1446678", - "tt4266638", - "tt7550576", - "tt7210252", - "tt0109504", - "tt6828390", - "tt6680962", - "tt5058038", - "tt9445054", - "tt0091765", - "tt8804284", - "tt6017312", - "tt5079382", - "tt5608000", - "tt6338444", - "tt5159204", - "tt6053948", - "tt0159730", - "tt8669354", - "tt1799572", - "tt0088195", - "tt0828151", - "tt0367960", - "tt2009538", - "tt1570983", - "tt5855164", - "tt2962144", - "tt5969714", - "tt5894410", - "tt1487864", - "tt0293357", - "tt2170667", - "tt3822818", - "tt7425520", - "tt3500528", - "tt1418895", - "tt4621470", - "tt3911294", - "tt1584131", - "tt0102175", - "tt5662906", - "tt0841925", - "tt3012832", - "tt6347150", - "tt4771956", - "tt2076216", - "tt7919426", - "tt0149016", - "tt8007436", - "tt4078252", - "tt9069126", - "tt4714896", - "tt0076591", - "tt10799008", - "tt7022402", - "tt2820578", - "tt7775886", - "tt9010900", - "tt2960270", - "tt7620650", - "tt7026370", - "tt6628322", - "tt4883990", - "tt11456366", - "tt8160262", - "tt10975992", - "tt0078227", - "tt8178116", - "tt8976832", - "tt6162762", - "tt8075256", - "tt7977310", - "tt6453158", - "tt9643214", - "tt0014359", - "tt4265500", - "tt5282590", - "tt8755500", - "tt0332626", - "tt9766166", - "tt0099328", - "tt1437364", - "tt0080492", - "tt0072812", - "tt0328099", - "tt8866450", - "tt5488870", - "tt5144072", - "tt0465440", - "tt7095444", - "tt0780536", - "tt8549590", - "tt9703882", - "tt0049088", - "tt9019312", - "tt3472586", - "tt0063552", - "tt8676984", - "tt0045544", - "tt7575778", - "tt0217038", - "tt5665040", - "tt8319778", - "tt9806322", - "tt0029785", - "tt6515458", - "tt0041090", - "tt9575160", - "tt0181966", - "tt9129808", - "tt0047238", - "tt1849751", - "tt3455826", - "tt0024262", - "tt6149282", - "tt0221297", - "tt0083965", - "tt0047205", - "tt0165643", - "tt2137442", - "tt11662610", - "tt1815943", - "tt3363888", - "tt5643398", - "tt6515470", - "tt0119426", - "tt7933282", - "tt3876674", - "tt0479354", - "tt0486639", - "tt1517239", - "tt5479616", - "tt4924942", - "tt6157994", - "tt7109088", - "tt6910020", - "tt3691446", - "tt6914542", - "tt0399072", - "tt4722674", - "tt9095324", - "tt3374034", - "tt7027092", - "tt3076106", - "tt6168298", - "tt5831146", - "tt3349772", - "tt1568926", - "tt6333056", - "tt3628356", - "tt5895892", - "tt7095852", - "tt11404430", - "tt10149756", - "tt7490256", - "tt6985094", - "tt9617710", - "tt6690322", - "tt2836450", - "tt0342778", - "tt4704314", - "tt5562172", - "tt4225092", - "tt7712978", - "tt5930038", - "tt8327492", - "tt5957584", - "tt8647310", - "tt11571902", - "tt5984662", - "tt8745960", - "tt7950334", - "tt9894470", - "tt7187768", - "tt8964214", - "tt10009030", - "tt6722726", - "tt5829032", - "tt7369550", - "tt0450455", - "tt0067750", - "tt8358220", - "tt7653254", - "tt6189372", - "tt7262846", - "tt9614440", - "tt5047458", - "tt6515910", - "tt0074715", - "tt8584722", - "tt0115006", - "tt6413868", - "tt0039020", - "tt0050753", - "tt0295427", - "tt0099772", - "tt0032285", - "tt0101644", - "tt1564559", - "tt0096378", - "tt1167611", - "tt0043263", - "tt0065401", - "tt0049684", - "tt0124198", - "tt0049717", - "tt0045066", - "tt0062760", - "tt9354842", - "tt0039657", - "tt0046878", - "tt0082477", - "tt9062342", - "tt5974044", - "tt0114736", - "tt5176580", - "tt4125222", - "tt5868910", - "tt5210324", - "tt3399916", - "tt0319769", - "tt2077828", - "tt1117394", - "tt6659416", - "tt0319920", - "tt7525778", - "tt2519468", - "tt5236900", - "tt5129818", - "tt0304229", - "tt9036126", - "tt0098313", - "tt3120280", - "tt0073326", - "tt0277744", - "tt3740066", - "tt0338216", - "tt0106552", - "tt0104905", - "tt4575930", - "tt1757800", - "tt1909826", - "tt8033592", - "tt2407418", - "tt7085842", - "tt8465676", - "tt0118750", - "tt3130406", - "tt2933794", - "tt6646998", - "tt7308086", - "tt6699860", - "tt10835790", - "tt3194590", - "tt6373616", - "tt1202579", - "tt3494584", - "tt1015999", - "tt4647788", - "tt8558596", - "tt1705977", - "tt0018526", - "tt6193408", - "tt1847731", - "tt6035294", - "tt6222286", - "tt3240752", - "tt0067961", - "tt3741150", - "tt6651118", - "tt0114787", - "tt2208144", - "tt0079095", - "tt0014142", - "tt0024844", - "tt0106305", - "tt0019071", - "tt1956669", - "tt0367089", - "tt0017075", - "tt0042643", - "tt0342492", - "tt1255953", - "tt0087884", - "tt0086589", - "tt4527430", - "tt0018839", - "tt0107175", - "tt0047101", - "tt0041796", - "tt0015175", - "tt0103186", - "tt0077427", - "tt0418455", - "tt7073522", - "tt2008006", - "tt0038522", - "tt6927316", - "tt0015174", - "tt0097216", - "tt8731042", - "tt0187350", - "tt4516162", - "tt7224328", - "tt1064215", - "tt0292886", - "tt7776030", - "tt1859446", - "tt4777008", - "tt4389006", - "tt8956390", - "tt5862338", - "tt2903370", - "tt1548542", - "tt9584906", - "tt3985616", - "tt8185182", - "tt2132504", - "tt8811474", - "tt7733426", - "tt7943248", - "tt0088814", - "tt11668444", - "tt0304669", - "tt0465234", - "tt0452681", - "tt0100967", - "tt0210945", - "tt5452780", - "tt0089167", - "tt0102167", - "tt0180020", - "tt0072991", - "tt0107664", - "tt0117550", - "tt0037168", - "tt0185429", - "tt6520634", - "tt0037303", - "tt6525872", - "tt0099901", - "tt7297472", - "tt6207236", - "tt6449908", - "tt7184124", - "tt0107057", - "tt8978846", - "tt0043832", - "tt1209367", - "tt3847642", - "tt0096236", - "tt7016522", - "tt4788744", - "tt8385108", - "tt6986606", - "tt2925410", - "tt5536610", - "tt0117891", - "tt3809276", - "tt2252038", - "tt2244222", - "tt0165874", - "tt3150796", - "tt3591436", - "tt2493210", - "tt1591071", - "tt2400435", - "tt2273720", - "tt0182789", - "tt5723416", - "tt7280898", - "tt0415978", - "tt2226050", - "tt5116302", - "tt6611950", - "tt6856186", - "tt3683398", - "tt5979690", - "tt2752724", - "tt5290882", - "tt6114234", - "tt6198246", - "tt2693580", - "tt6328086", - "tt8865580", - "tt2193456", - "tt0138590", - "tt1646877", - "tt0428865", - "tt1025100", - "tt5717194", - "tt3576038", - "tt7830574", - "tt1626637", - "tt2449564", - "tt9711106", - "tt6090044", - "tt1893186", - "tt8983138", - "tt8652584", - "tt3359730", - "tt2845514", - "tt7248518", - "tt9753018", - "tt10964346", - "tt4083682", - "tt10964186", - "tt6980988", - "tt7444706", - "tt6173902", - "tt7990532", - "tt8791968", - "tt6409856", - "tt6099438", - "tt7278702", - "tt0206216", - "tt4682562", - "tt5031388", - "tt9052266", - "tt0081501", - "tt7390080", - "tt5957544", - "tt0094627", - "tt0192788", - "tt3499286", - "tt0107120", - "tt6042334", - "tt6318954", - "tt7678408", - "tt6910006", - "tt10817348", - "tt2584384", - "tt3735216", - "tt6023650", - "tt3921854", - "tt3528574", - "tt7122106", - "tt2277946", - "tt2153416", - "tt2035535", - "tt2734818", - "tt6194978", - "tt6051412", - "tt2450366", - "tt3417866", - "tt4758818", - "tt1863441", - "tt2380029", - "tt1876248", - "tt1517626", - "tt4158590", - "tt2390275", - "tt10305932", - "tt2865380", - "tt6680858", - "tt5480340", - "tt7422822", - "tt4325356", - "tt7057376", - "tt1458397", - "tt3654026", - "tt7309512", - "tt4135218", - "tt5937996", - "tt4357624", - "tt6836406", - "tt3615814", - "tt7239400", - "tt6171672", - "tt3056202", - "tt4807552", - "tt0048764", - "tt3631284", - "tt0055031", - "tt6367782", - "tt1823744", - "tt0249218", - "tt0275225", - "tt2153198", - "tt8019694", - "tt0040970", - "tt1727596", - "tt2850480", - "tt1640605", - "tt1082863", - "tt3220890", - "tt7890274", - "tt2027215", - "tt7615436", - "tt7939428", - "tt9738400", - "tt2354012", - "tt4448304", - "tt1231597", - "tt4460122", - "tt4949162", - "tt1552111", - "tt5101878", - "tt3347518", - "tt3766040", - "tt5472896", - "tt0110966", - "tt3960584", - "tt0249378", - "tt4067578", - "tt1665799", - "tt5974626", - "tt4454834", - "tt5823326", - "tt2711672", - "tt0439544", - "tt4835894", - "tt3212380", - "tt5717184", - "tt4896904", - "tt1855977", - "tt0102202", - "tt3763866", - "tt8883164", - "tt3762766", - "tt1669818", - "tt4853120", - "tt8634256", - "tt4007320", - "tt2836166", - "tt5814512", - "tt2854692", - "tt2827058", - "tt3647328", - "tt6205542", - "tt2184552", - "tt4485806", - "tt0162907", - "tt1314269", - "tt3153634", - "tt3086582", - "tt4958448", - "tt0485061", - "tt3043630", - "tt6122306", - "tt4920274", - "tt7191910", - "tt6908536", - "tt4584814", - "tt0057546", - "tt8119844", - "tt7948854", - "tt2827708", - "tt0056353", - "tt8688634", - "tt2076298", - "tt2291904", - "tt9778190", - "tt1714850", - "tt9735672", - "tt7295568", - "tt0910873", - "tt9038304", - "tt2451110", - "tt7502322", - "tt9135722", - "tt1869470", - "tt7707988", - "tt8543470", - "tt1418353", - "tt8860946", - "tt9501310", - "tt3631298", - "tt5599876", - "tt9261594", - "tt5344876", - "tt3469718", - "tt0290014", - "tt3646592", - "tt7255374", - "tt0386108", - "tt7469672", - "tt5156274", - "tt1514044", - "tt3485800", - "tt5319866", - "tt7308198", - "tt0110399", - "tt2073661", - "tt3057572", - "tt8339704", - "tt0362590", - "tt0192071", - "tt4727010", - "tt6137494", - "tt1781777", - "tt5678732", - "tt2492002", - "tt0119843", - "tt11421870", - "tt4697228", - "tt0379380", - "tt2635824", - "tt1336106", - "tt4686108", - "tt0148421", - "tt4299774", - "tt0445620", - "tt5691084", - "tt0460811", - "tt6156656", - "tt4056574", - "tt1380151", - "tt4229864", - "tt3766382", - "tt0456145", - "tt1330018", - "tt5201882", - "tt6205996", - "tt2136972", - "tt5607782", - "tt3180548", - "tt4254562", - "tt8637922", - "tt1091863", - "tt0122529", - "tt9853686", - "tt2488496", - "tt0121765", - "tt0787462", - "tt11321468", - "tt7549884", - "tt6445414", - "tt6044156", - "tt0105428", - "tt0120915", - "tt0110613", - "tt0079813", - "tt0084695", - "tt3713030", - "tt1798291", - "tt6492186", - "tt5474522", - "tt0096118", - "tt0082431", - "tt0086143", - "tt4365566", - "tt2490432", - "tt1112120", - "tt4038806", - "tt0108137", - "tt6964966", - "tt7379330", - "tt5924114", - "tt6840554", - "tt8597286", - "tt2378145", - "tt0116920", - "tt8539512", - "tt5116504", - "tt3294664", - "tt3519772", - "tt2935390", - "tt5893032", - "tt2179237", - "tt1401621", - "tt6241678", - "tt3252594", - "tt3173758", - "tt6456768", - "tt5216022", - "tt4694366", - "tt5841088", - "tt6445922", - "tt2469760", - "tt3455224", - "tt6851066", - "tt6384998", - "tt4058012", - "tt4851570", - "tt7676992", - "tt5129674", - "tt3285740", - "tt4323536", - "tt3368814", - "tt6106980", - "tt4247440", - "tt1906384", - "tt6519912", - "tt6023386", - "tt5207320", - "tt6673612", - "tt7631320", - "tt9426212", - "tt8000718", - "tt5670842", - "tt8151874", - "tt10370380", - "tt0078740", - "tt0068505", - "tt8236398", - "tt6964562", - "tt0071110", - "tt0052832", - "tt0046358", - "tt7025388", - "tt3224458", - "tt0031804", - "tt3842684", - "tt0049042", - "tt0082966", - "tt11388406", - "tt7095476", - "tt0365617", - "tt5257554", - "tt0234137", - "tt1814727", - "tt2219214", - "tt1125188", - "tt1504397", - "tt5105666", - "tt5075328", - "tt2182256", - "tt3828858", - "tt4329394", - "tt5719076", - "tt6883152", - "tt5879216", - "tt2375443", - "tt8110966", - "tt3485754", - "tt1753449", - "tt8841148", - "tt0098412", - "tt2399648", - "tt3672120", - "tt1039915", - "tt0096074", - "tt5013782", - "tt4170344", - "tt3596842", - "tt2348880", - "tt0486569", - "tt1017465", - "tt0325980", - "tt6404142", - "tt3257550", - "tt1298650", - "tt7014430", - "tt5686062", - "tt0449088", - "tt0383574", - "tt9129406", - "tt6841812", - "tt5690472", - "tt8855852", - "tt5115546", - "tt9170352", - "tt1341718", - "tt4431254", - "tt5076150", - "tt1461698", - "tt2155259", - "tt3014262", - "tt7575660", - "tt8660492", - "tt7831358", - "tt3210258", - "tt1289403", - "tt0082782", - "tt3983738", - "tt5848416", - "tt7193362", - "tt6664120", - "tt0056105", - "tt9206562", - "tt0425326", - "tt9143942", - "tt0089222", - "tt4621256", - "tt7738490", - "tt0424228", - "tt0077241", - "tt4146132", - "tt4563460", - "tt6324278", - "tt0181838", - "tt3760974", - "tt1623745", - "tt4587780", - "tt0461694", - "tt2377752", - "tt5569618", - "tt0191191", - "tt1564571", - "tt6302296", - "tt0036342", - "tt6141048", - "tt3653650", - "tt4250960", - "tt3856300", - "tt2153394", - "tt3163244", - "tt6507954", - "tt0040746", - "tt7672714", - "tt5780484", - "tt3111306", - "tt0422309", - "tt5193408", - "tt6736282", - "tt5340626", - "tt7155576", - "tt3973036", - "tt0035279", - "tt5696326", - "tt6318238", - "tt2516424", - "tt7623988", - "tt5253282", - "tt0315273", - "tt5651458", - "tt0119887", - "tt2179231", - "tt3664992", - "tt1640483", - "tt4421800", - "tt7527912", - "tt5496244", - "tt5973658", - "tt6209960", - "tt6856134", - "tt9038976", - "tt4717208", - "tt4888576", - "tt6772700", - "tt4210934", - "tt3587396", - "tt2514298", - "tt0086190", - "tt0073640", - "tt5471472", - "tt0093051", - "tt0076759", - "tt0147599", - "tt0239948", - "tt5598206", - "tt2184398", - "tt10218674", - "tt3700594", - "tt3823826", - "tt8861786", - "tt6333066", - "tt7217214", - "tt4427060", - "tt1999192", - "tt5288532", - "tt8010354", - "tt8259682", - "tt6290202", - "tt1714196", - "tt1822311", - "tt3481000", - "tt2112999", - "tt5313016", - "tt8005338", - "tt9810420", - "tt3748528", - "tt2292903", - "tt8649186", - "tt0436613", - "tt8380776", - "tt0080684", - "tt0051564", - "tt1502714", - "tt0086310", - "tt0077679", - "tt1223934", - "tt0094374", - "tt6675244", - "tt5176832", - "tt2728984", - "tt0018737", - "tt0019933", - "tt0080658", - "tt0058604", - "tt5911032", - "tt6885502", - "tt5873100", - "tt0093215", - "tt2094195", - "tt0110300", - "tt2087982", - "tt6069126", - "tt7656570", - "tt0770748", - "tt7427356", - "tt4708300", - "tt5032468", - "tt5565806", - "tt4797490", - "tt2481512", - "tt6503230", - "tt3274704", - "tt3562370", - "tt4970294", - "tt3061222", - "tt1753821", - "tt3424914", - "tt5945724", - "tt7216586", - "tt0109480", - "tt4177822", - "tt1786462", - "tt2212778", - "tt3868978", - "tt4082482", - "tt2181282", - "tt1526745", - "tt5718046", - "tt1249439", - "tt4938588", - "tt0199290", - "tt4602074", - "tt0281865", - "tt7039000", - "tt4966046", - "tt6034774", - "tt0319524", - "tt0090956", - "tt6524170", - "tt7078922", - "tt3305176", - "tt4763168", - "tt4503112", - "tt6603378", - "tt2636480", - "tt0472562", - "tt0332136", - "tt1787731", - "tt6155172", - "tt0113729", - "tt9541486", - "tt1311093", - "tt8887784", - "tt6395680", - "tt6140148", - "tt7314630", - "tt5822132", - "tt0058083", - "tt5974030", - "tt0114697", - "tt5367690", - "tt6076208", - "tt3188048", - "tt0191754", - "tt4433360", - "tt7671064", - "tt0365270", - "tt6141246", - "tt1984177", - "tt0048198", - "tt0039090", - "tt0099581", - "tt9882084", - "tt0467426", - "tt1204979", - "tt0138797", - "tt0878652", - "tt0240119", - "tt0080850", - "tt7243754", - "tt0215135", - "tt0382943", - "tt0096875", - "tt0382019", - "tt2955096", - "tt1219820", - "tt8652728", - "tt5904182", - "tt0119709", - "tt4906686", - "tt9652782", - "tt0101507", - "tt0103872", - "tt9198724", - "tt2343549", - "tt1950186", - "tt0109835", - "tt2783020", - "tt5119264", - "tt2946498", - "tt0096405", - "tt0109575", - "tt0037801", - "tt2597760", - "tt6814106", - "tt3120484", - "tt3900796", - "tt7631792", - "tt5090750", - "tt6357074", - "tt4178020", - "tt2503954", - "tt4797436", - "tt6958520", - "tt5066574", - "tt3350376", - "tt2413914", - "tt4387314", - "tt2931376", - "tt2292196", - "tt2392383", - "tt3109188", - "tt5191758", - "tt0100480", - "tt4280540", - "tt7104950", - "tt2330973", - "tt2515242", - "tt1800240", - "tt4552514", - "tt9201634", - "tt0876154", - "tt2197963", - "tt5523004", - "tt4743562", - "tt1701176", - "tt0843353", - "tt3212910", - "tt1858739", - "tt0835802", - "tt4717422", - "tt7038606", - "tt0494746", - "tt4229578", - "tt3645178", - "tt7738550", - "tt7073350", - "tt6406848", - "tt6705838", - "tt7539884", - "tt9358052", - "tt4538632", - "tt2530756", - "tt5178348", - "tt8466562", - "tt1146431", - "tt1447800", - "tt3349578", - "tt5829104", - "tt7364706", - "tt4192066", - "tt10584272", - "tt11274306", - "tt9174334", - "tt3092208", - "tt0082415", - "tt10375886", - "tt0059541", - "tt2634584", - "tt0079083", - "tt1637612", - "tt0067815", - "tt6062774", - "tt0087282", - "tt11379262", - "tt2218080", - "tt3587890", - "tt3649942", - "tt8324462", - "tt0108334", - "tt0038360", - "tt2259122", - "tt5069086", - "tt5498536", - "tt2658192", - "tt7805064", - "tt7736664", - "tt2934844", - "tt6290736", - "tt9369332", - "tt0070212", - "tt5516404", - "tt3689908", - "tt0115643", - "tt2357011", - "tt3593626", - "tt2662218", - "tt1727253", - "tt4513538", - "tt5646992", - "tt3920890", - "tt7130740", - "tt3879074", - "tt4637240", - "tt0116621", - "tt5977536", - "tt0102065", - "tt3863632", - "tt0373416", - "tt6627466", - "tt5634406", - "tt5887650", - "tt3458760", - "tt6237208", - "tt0111704", - "tt4692656", - "tt4149656", - "tt2177228", - "tt3180154", - "tt7237666", - "tt1402213", - "tt4669278", - "tt3063462", - "tt3721602", - "tt6509862", - "tt7178226", - "tt6970616", - "tt0095654", - "tt4264610", - "tt4672272", - "tt5189770", - "tt5898630", - "tt0437503", - "tt4922524", - "tt0465417", - "tt4048628", - "tt2015478", - "tt3186552", - "tt5812510", - "tt3319158", - "tt2049448", - "tt8297300", - "tt1077394", - "tt6762684", - "tt3149900", - "tt2385752", - "tt6079060", - "tt4030560", - "tt5371832", - "tt1206885", - "tt0117407", - "tt0829193", - "tt2642226", - "tt0825283", - "tt1800379", - "tt1780790", - "tt7924798", - "tt5200506", - "tt6495094", - "tt0171227", - "tt5687814", - "tt0117495", - "tt4177498", - "tt4134826", - "tt3074694", - "tt4066000", - "tt0079073", - "tt3733606", - "tt0109254", - "tt0092644", - "tt6353036", - "tt6213952", - "tt5803438", - "tt4255274", - "tt5656126", - "tt3813094", - "tt3809960", - "tt6960220", - "tt0067341", - "tt0481273", - "tt5988216", - "tt7971048", - "tt0086960", - "tt1340425", - "tt2400407", - "tt0044982", - "tt6563012", - "tt4146350", - "tt6488382", - "tt4521686", - "tt0093171", - "tt0177507", - "tt0081286", - "tt0101492", - "tt0093671", - "tt3273434", - "tt0093347", - "tt2763746", - "tt4085456", - "tt4824316", - "tt2530452", - "tt0059837", - "tt0079372", - "tt3422622", - "tt5233558", - "tt4368038", - "tt7027566", - "tt3779382", - "tt8262802", - "tt4444438", - "tt7657972", - "tt1707387", - "tt0084259", - "tt0315312", - "tt9109278", - "tt1476425", - "tt2464812", - "tt1352771", - "tt7222290", - "tt2145637", - "tt0391890", - "tt5950092", - "tt0104526", - "tt5646604", - "tt5051826", - "tt2987806", - "tt2381213", - "tt0467421", - "tt4329806", - "tt7949046", - "tt2993674", - "tt4874350", - "tt6900380", - "tt6849128", - "tt4831810", - "tt1727362", - "tt1891770", - "tt7575400", - "tt0362001", - "tt3844084", - "tt7952840", - "tt3722248", - "tt5205210", - "tt4593196", - "tt2282628", - "tt2063015", - "tt5945946", - "tt8773700", - "tt2076862", - "tt3089272", - "tt4441150", - "tt3496892", - "tt4843358", - "tt4671002", - "tt1687861", - "tt4173306", - "tt8911030", - "tt6164762", - "tt5834278", - "tt7128608", - "tt6371588", - "tt3665760", - "tt4394104", - "tt0102432", - "tt4741768", - "tt5896568", - "tt4010862", - "tt2536846", - "tt4572984", - "tt4044896", - "tt3107166", - "tt6794448", - "tt4864584", - "tt3326892", - "tt7924808", - "tt0097886", - "tt3620120", - "tt0411265", - "tt2525342", - "tt5275128", - "tt7109844", - "tt0105597", - "tt1466054", - "tt1537196", - "tt10380066", - "tt1418757", - "tt7309430", - "tt0043724", - "tt3282858", - "tt6156138", - "tt7493366", - "tt4711724", - "tt1127881", - "tt1843171", - "tt11388580", - "tt0224421", - "tt0074512", - "tt7418824", - "tt7090140", - "tt4346050", - "tt5531298", - "tt1472460", - "tt6456614", - "tt7019560", - "tt2554842", - "tt0049470", - "tt6176138", - "tt2401752", - "tt1588878", - "tt3172126", - "tt0100330", - "tt2012062", - "tt6540984", - "tt0103978", - "tt0120392", - "tt2784020", - "tt2177368", - "tt6688304", - "tt5728684", - "tt0103039", - "tt3973012", - "tt6149802", - "tt3978358", - "tt3709746", - "tt1558259", - "tt2306441", - "tt1826780", - "tt3326096", - "tt4588594", - "tt6218440", - "tt5698320", - "tt4424722", - "tt0109730", - "tt3515318", - "tt9426852", - "tt3890902", - "tt10800758", - "tt4542726", - "tt2088745", - "tt7385782", - "tt1343371", - "tt1877893", - "tt1245734", - "tt6852284", - "tt0166110", - "tt0212380", - "tt5478918", - "tt4894198", - "tt7099566", - "tt2027091", - "tt4881364", - "tt4497978", - "tt3891338", - "tt0828393", - "tt6953896", - "tt3334418", - "tt3538666", - "tt4926656", - "tt6069162", - "tt1320373", - "tt0231448", - "tt8499212", - "tt5822712", - "tt0116471", - "tt11611314", - "tt0308878", - "tt2224966", - "tt0076069", - "tt5228262", - "tt8991200", - "tt3180402", - "tt0065112", - "tt1948079", - "tt0443474", - "tt0068611", - "tt4440114", - "tt7408776", - "tt7134522", - "tt4289298", - "tt5214752", - "tt2393730", - "tt0807747", - "tt4827420", - "tt1213672", - "tt7329810", - "tt6950594", - "tt8219526", - "tt2852460", - "tt5998744", - "tt3482000", - "tt6323858", - "tt7155178", - "tt4657280", - "tt5846628", - "tt0120353", - "tt3986108", - "tt2294679", - "tt6495526", - "tt4648732", - "tt0250687", - "tt4623856", - "tt2375844", - "tt7819860", - "tt0109368", - "tt1379197", - "tt4111826", - "tt4215674", - "tt0251191", - "tt3985516", - "tt3350996", - "tt1950135", - "tt6267964", - "tt2106616", - "tt4561402", - "tt2009432", - "tt8275670", - "tt1905071", - "tt1097636", - "tt6438840", - "tt5224356", - "tt5865046", - "tt6998650", - "tt2370228", - "tt3717316", - "tt2980554", - "tt0114117", - "tt0415141", - "tt1980085", - "tt3027188", - "tt5542878", - "tt2989524", - "tt0106408", - "tt0251005", - "tt6212020", - "tt1928334", - "tt6113122", - "tt7472352", - "tt3226454", - "tt3762834", - "tt2382622", - "tt4160132", - "tt3630800", - "tt7580076", - "tt3693042", - "tt9602666", - "tt0398872", - "tt5848640", - "tt1326219", - "tt5579982", - "tt3924774", - "tt3303020", - "tt3476464", - "tt2275471", - "tt5302658", - "tt3302092", - "tt6028556", - "tt4353376", - "tt9625664", - "tt6966044", - "tt8638420", - "tt1477834", - "tt8623904", - "tt0179148", - "tt7285748", - "tt3881680", - "tt0140767", - "tt7427130", - "tt2836628", - "tt2187322", - "tt4181270", - "tt3752902", - "tt0191655", - "tt1287876", - "tt6688354", - "tt5565254", - "tt1918924", - "tt1410205", - "tt6243274", - "tt3634908", - "tt0462346", - "tt1397502", - "tt6516590", - "tt5579356", - "tt3625136", - "tt3189648", - "tt3773210", - "tt6281242", - "tt0112732", - "tt6043072", - "tt5807628", - "tt6089700", - "tt7130860", - "tt4494094", - "tt4461014", - "tt1878932", - "tt1880415", - "tt2782692", - "tt0160356", - "tt1067773", - "tt1072755", - "tt4187786", - "tt7681970", - "tt2186712", - "tt3843514", - "tt5060166", - "tt0061107", - "tt0765465", - "tt0058329", - "tt6511760", - "tt0907676", - "tt1264906", - "tt2836376", - "tt3289080", - "tt4917224", - "tt0088454", - "tt2075292", - "tt7681868", - "tt4007068", - "tt2118727", - "tt4364338", - "tt1338590", - "tt9288776", - "tt0239496", - "tt0307568", - "tt2513616", - "tt6391282", - "tt11172926", - "tt2413958", - "tt11076480", - "tt2137992", - "tt11518196", - "tt10564446", - "tt9552162", - "tt8353934", - "tt10655652", - "tt0783640", - "tt0043459", - "tt7299298", - "tt0084904", - "tt3309874", - "tt7145708", - "tt7049272", - "tt7087674", - "tt0087795", - "tt8726180", - "tt0054215", - "tt4947738", - "tt0056869", - "tt9134216", - "tt7066546", - "tt0100050", - "tt7293920", - "tt6910380", - "tt5606664", - "tt1570337", - "tt1295093", - "tt3735332", - "tt3059576", - "tt0091836", - "tt4437216", - "tt1934452", - "tt4514646", - "tt7406704", - "tt0101783", - "tt2633014", - "tt2950434", - "tt2912776", - "tt5116248", - "tt5537140", - "tt2901006", - "tt4960764", - "tt0454962", - "tt4856508", - "tt1614430", - "tt5644050", - "tt0115837", - "tt2343601", - "tt1821701", - "tt0101444", - "tt3118920", - "tt5839116", - "tt2147728", - "tt1659192", - "tt1332009", - "tt6388844", - "tt0097244", - "tt2082289", - "tt1183727", - "tt1378238", - "tt4738802", - "tt2406306", - "tt6623390", - "tt3216846", - "tt7858466", - "tt5086046", - "tt3898776", - "tt0784972", - "tt7215388", - "tt3877344", - "tt4513560", - "tt2782868", - "tt1669768", - "tt7493274", - "tt5039994", - "tt1616543", - "tt1049405", - "tt0082095", - "tt9546624", - "tt0072717", - "tt0159443", - "tt0064148", - "tt0093870", - "tt8801584", - "tt7008310", - "tt1467388", - "tt0101763", - "tt0240880", - "tt7818580", - "tt3181588", - "tt6165792", - "tt5563334", - "tt11488724", - "tt3863542", - "tt7802246", - "tt3292080", - "tt1129441", - "tt0092710", - "tt5777802", - "tt5592256", - "tt7465694", - "tt3587064", - "tt11361808", - "tt4624258", - "tt1757927", - "tt1839482", - "tt5524630", - "tt1865573", - "tt1811307", - "tt0052357", - "tt6150962", - "tt3214448", - "tt3361004", - "tt7945098", - "tt7209220", - "tt3579842", - "tt5350512", - "tt1838601", - "tt1791611", - "tt4762592", - "tt2445568", - "tt5195828", - "tt4688294", - "tt2140577", - "tt0085994", - "tt7718636", - "tt3881768", - "tt5521550", - "tt2781612", - "tt2987718", - "tt0088008", - "tt6109874", - "tt4818168", - "tt0263467", - "tt4645358", - "tt4442604", - "tt0166219", - "tt4720596", - "tt7481192", - "tt4568466", - "tt4746102", - "tt6792478", - "tt0196223", - "tt2523096", - "tt6354056", - "tt1410068", - "tt6503354", - "tt4667832", - "tt4837126", - "tt3109072", - "tt5940448", - "tt7647840", - "tt1282142", - "tt1849868", - "tt6150942", - "tt8733014", - "tt0042176", - "tt2816628", - "tt0067595", - "tt5208130", - "tt0077729", - "tt5864238", - "tt0076460", - "tt5675746", - "tt1972766", - "tt0039438", - "tt1584824", - "tt8649636", - "tt1584807", - "tt7967412", - "tt7738048", - "tt0026737", - "tt0047232", - "tt7736478", - "tt0027164", - "tt0032655", - "tt5287914", - "tt0037678", - "tt0027796", - "tt0109440", - "tt0070746", - "tt0041527", - "tt0030066", - "tt0044379", - "tt0036581", - "tt0057541", - "tt0107413", - "tt3759434", - "tt1843303", - "tt0050894", - "tt1776305", - "tt5913968", - "tt0108169", - "tt1426328", - "tt1773690", - "tt2224509", - "tt2989350", - "tt0122338", - "tt0082685", - "tt0138563", - "tt2133243", - "tt8579674", - "tt5873672", - "tt0120389", - "tt5811154", - "tt0110054", - "tt1629762", - "tt3787068", - "tt7218564", - "tt0120813", - "tt1737755", - "tt3781762", - "tt6212210", - "tt5577390", - "tt0417614", - "tt4312882", - "tt2057920", - "tt4405532", - "tt4227204", - "tt5033018", - "tt3130302", - "tt4318696", - "tt5143770", - "tt3207376", - "tt2281317", - "tt7520216", - "tt7304212", - "tt5034122", - "tt1690967", - "tt5653444", - "tt2523756", - "tt3217994", - "tt4566780", - "tt3400058", - "tt3415358", - "tt5936582", - "tt7966994", - "tt2587914", - "tt5142898", - "tt2142987", - "tt1541149", - "tt2190451", - "tt1260704", - "tt5985672", - "tt3394972", - "tt3059046", - "tt0073624", - "tt3484728", - "tt1690542", - "tt11615634", - "tt5459324", - "tt2977158", - "tt1934472", - "tt3510678", - "tt0117898", - "tt8954890", - "tt2084784", - "tt3333864", - "tt2459072", - "tt1935093", - "tt4510896", - "tt3780688", - "tt6740608", - "tt6245540", - "tt6773288", - "tt3826866", - "tt5329134", - "tt7165808", - "tt11082512", - "tt6188002", - "tt7440432", - "tt6920766", - "tt5477402", - "tt0089731", - "tt3438208", - "tt4971346", - "tt2846378", - "tt9357404", - "tt4712516", - "tt6253522", - "tt3953944", - "tt2552666", - "tt4875962", - "tt1826813", - "tt3276632", - "tt3561236", - "tt8976608", - "tt3887208", - "tt4907976", - "tt7610196", - "tt2298186", - "tt4447518", - "tt6603860", - "tt6563576", - "tt1823684", - "tt0036613", - "tt0483812", - "tt1598778", - "tt0030241", - "tt5833658", - "tt4678298", - "tt1879066", - "tt11422214", - "tt0106473", - "tt0393109", - "tt3108570", - "tt4426464", - "tt5007774", - "tt2073600", - "tt2219772", - "tt0481583", - "tt4505666", - "tt1943696", - "tt2716576", - "tt1958053", - "tt5959970", - "tt5791094", - "tt5891642", - "tt0070194", - "tt5222806", - "tt0488757", - "tt3110014", - "tt6107548", - "tt3472210", - "tt2281309", - "tt4471636", - "tt8185442", - "tt4533838", - "tt4360406", - "tt3216086", - "tt3501410", - "tt4074958", - "tt5293604", - "tt5261644", - "tt3896016", - "tt6738046", - "tt4828620", - "tt4296186", - "tt3280522", - "tt1626251", - "tt6207118", - "tt2012665", - "tt8185584", - "tt3876382", - "tt3560492", - "tt0105450", - "tt1411249", - "tt3564860", - "tt8278648", - "tt5457078", - "tt0106273", - "tt2395970", - "tt5369760", - "tt7039326", - "tt4160706", - "tt1337032", - "tt11023922", - "tt6185286", - "tt4893178", - "tt5485578", - "tt6266306", - "tt0109450", - "tt6673964", - "tt4172510", - "tt2093944", - "tt5363736", - "tt5181834", - "tt2231900", - "tt2481500", - "tt1018817", - "tt4034390", - "tt6215208", - "tt2362036", - "tt2926924", - "tt10883506", - "tt6149936", - "tt0194722", - "tt3715296", - "tt8678982", - "tt1587309", - "tt4362646", - "tt4247828", - "tt6333200", - "tt3499358", - "tt10731748", - "tt5969180", - "tt3098998", - "tt7144296", - "tt8668312", - "tt3727120", - "tt1662500", - "tt5809726", - "tt4791276", - "tt5690992", - "tt2914740", - "tt7444708", - "tt3447676", - "tt10525236", - "tt1956534", - "tt6638398", - "tt0100152", - "tt5038134", - "tt4394034", - "tt0113140", - "tt7430654", - "tt7547510", - "tt4396662", - "tt1242658", - "tt2359473", - "tt7557686", - "tt4625316", - "tt2361558", - "tt7419218", - "tt2375763", - "tt6032878", - "tt0289879", - "tt0064471", - "tt0047396", - "tt0139898", - "tt0084887", - "tt7364522", - "tt8170298", - "tt10297640", - "tt0048750", - "tt0090062", - "tt0035962", - "tt5884434", - "tt0242527", - "tt0103617", - "tt5697572", - "tt7587984", - "tt0052141", - "tt0053715", - "tt0032554", - "tt0102631", - "tt0058267", - "tt0079814", - "tt0095981", - "tt0074967", - "tt3276518", - "tt0399095", - "tt8484038", - "tt0093043", - "tt6147240", - "tt4196832", - "tt2974902", - "tt3220100", - "tt5106390", - "tt3289804", - "tt3449322", - "tt6333092", - "tt0053226", - "tt0367151", - "tt3704298", - "tt5716380", - "tt2822864", - "tt2786780", - "tt4250438", - "tt5716848", - "tt2246376", - "tt5637736", - "tt4162860", - "tt7406186", - "tt3835612", - "tt0303017", - "tt3986978", - "tt4560008", - "tt6354166", - "tt0480461", - "tt6172696", - "tt0094188", - "tt5582308", - "tt5896146", - "tt2659190", - "tt1648155", - "tt4526136", - "tt6963592", - "tt6933454", - "tt0331509", - "tt0119717", - "tt3081268", - "tt0120213", - "tt2014225", - "tt4047350", - "tt3007524", - "tt7544820", - "tt5002544", - "tt3496790", - "tt3449658", - "tt3234084", - "tt1376699", - "tt2762970", - "tt1059905", - "tt4687276", - "tt8583930", - "tt7494136", - "tt2385119", - "tt4274788", - "tt1842371", - "tt2089624", - "tt5321568", - "tt6185998", - "tt6077404", - "tt6345080", - "tt10011448", - "tt5938950", - "tt6233592", - "tt3595748", - "tt3174890", - "tt7230054", - "tt3813018", - "tt6644632", - "tt10010368", - "tt8942864", - "tt8910924", - "tt1773389", - "tt4994992", - "tt2535394", - "tt3416674", - "tt3474978", - "tt0455933", - "tt4575782", - "tt3532686", - "tt6015068", - "tt4590092", - "tt4633662", - "tt5673714", - "tt6962204", - "tt2487028", - "tt6182054", - "tt3854372", - "tt2556676", - "tt5278886", - "tt5156532", - "tt0401504", - "tt1762370", - "tt6898162", - "tt2524934", - "tt6061074", - "tt1244093", - "tt5167174", - "tt6912586", - "tt0473445", - "tt5260026", - "tt1137477", - "tt0415877", - "tt1267299", - "tt0472219", - "tt1951133", - "tt1414823", - "tt0317950", - "tt3118442", - "tt6842126", - "tt4374864", - "tt1977919", - "tt4392454", - "tt5179398", - "tt5868924", - "tt7400118", - "tt3076510", - "tt7521846", - "tt6676028", - "tt2515456", - "tt5030452", - "tt0035123", - "tt0052997", - "tt4648786", - "tt4691804", - "tt4916630", - "tt9450768", - "tt4000956", - "tt5593416", - "tt0385887", - "tt9814242", - "tt7590074", - "tt7493810", - "tt2604704", - "tt5025254", - "tt0190520", - "tt5894876", - "tt1222329", - "tt7058618", - "tt8571578", - "tt0112701", - "tt7637350", - "tt10711654", - "tt2769158", - "tt0303101", - "tt0101535", - "tt4191592", - "tt0080905", - "tt1583948", - "tt6985424", - "tt10378926", - "tt2271565", - "tt8140328", - "tt10238708", - "tt8498366", - "tt3219154", - "tt4060544", - "tt3278416", - "tt3731564", - "tt8555260", - "tt0070066", - "tt9161168", - "tt0034591", - "tt4940094", - "tt0285685", - "tt4991786", - "tt0078869", - "tt0026424", - "tt0089420", - "tt3102360", - "tt0055450", - "tt0075382", - "tt4746370", - "tt4147596", - "tt3090882", - "tt5639536", - "tt0770818", - "tt1942922", - "tt2338205", - "tt3621170", - "tt1746153", - "tt0434931", - "tt5526792", - "tt7656706", - "tt4297380", - "tt5791622", - "tt0791178", - "tt6323264", - "tt6582774", - "tt11274564", - "tt5907618", - "tt4704040", - "tt5798330", - "tt3270636", - "tt2083385", - "tt4631048", - "tt8688048", - "tt3253040", - "tt10319778", - "tt6769598", - "tt3763748", - "tt7783966", - "tt5539538", - "tt0080928", - "tt10806810", - "tt0221074", - "tt4121152", - "tt2352488", - "tt3993760", - "tt2318601", - "tt7248490", - "tt2190196", - "tt9810090", - "tt5486818", - "tt5741902", - "tt8014038", - "tt8516550", - "tt10150518", - "tt5672048", - "tt0088782", - "tt8332592", - "tt9397440", - "tt8667972", - "tt2973554", - "tt7612032", - "tt2461030", - "tt6818554", - "tt9419838", - "tt0091995", - "tt7246106", - "tt0351761", - "tt6538102", - "tt6927880", - "tt3886604", - "tt4350998", - "tt3103166", - "tt5815818", - "tt4711924", - "tt1334521", - "tt4872260", - "tt3878146", - "tt1491043", - "tt8716334", - "tt5544224", - "tt2293060", - "tt3480662", - "tt0901487", - "tt3012776", - "tt3415354", - "tt4508932", - "tt0324013", - "tt4177018", - "tt3722052", - "tt1037156", - "tt3315398", - "tt4002884", - "tt2421328", - "tt6411954", - "tt7476236", - "tt4499572", - "tt2481496", - "tt3923004", - "tt6020164", - "tt2374835", - "tt9311062", - "tt6197494", - "tt0125494", - "tt1998400", - "tt5183990", - "tt9313582", - "tt7149916", - "tt5087548", - "tt3103284", - "tt10795784", - "tt10667704", - "tt9028890", - "tt4723724", - "tt6149464", - "tt0298519", - "tt2405612", - "tt3369286", - "tt7654082", - "tt0056677", - "tt0111412", - "tt3347782", - "tt6634632", - "tt5629128", - "tt3169000", - "tt3893826", - "tt2132301", - "tt0060818", - "tt1515208", - "tt5786564", - "tt10061096", - "tt5118014", - "tt1861401", - "tt0415068", - "tt5182120", - "tt0447372", - "tt3828166", - "tt0111488", - "tt5869644", - "tt5919064", - "tt6654090", - "tt5105784", - "tt1567344", - "tt8168884", - "tt1787810", - "tt9093130", - "tt3729394", - "tt6483026", - "tt2988226", - "tt3078752", - "tt8115474", - "tt7573824", - "tt6048414", - "tt7984130", - "tt2395228", - "tt8844044", - "tt7252918", - "tt4460624", - "tt3921454", - "tt5598160", - "tt0060740", - "tt0086265", - "tt5699126", - "tt8255490", - "tt5113028", - "tt0031309", - "tt5320612", - "tt0076432", - "tt0062981", - "tt6585674", - "tt0116596", - "tt10540628", - "tt2731436", - "tt7021536", - "tt7907714", - "tt6425474", - "tt5212122", - "tt0090637", - "tt0058780", - "tt8399690", - "tt6450804", - "tt7080138", - "tt4819560", - "tt0081249", - "tt0050235", - "tt3872958", - "tt0061401", - "tt5180618", - "tt4061360", - "tt4162440", - "tt5843056", - "tt4161396", - "tt3512072", - "tt8094980", - "tt7155170", - "tt5456436", - "tt4949100", - "tt5180856", - "tt0076489", - "tt6835804", - "tt2963974", - "tt3784160", - "tt4057142", - "tt2708764", - "tt3635788", - "tt6782708", - "tt1278153", - "tt4490654", - "tt4765870", - "tt0397401", - "tt5428662", - "tt5039242", - "tt7334352", - "tt8019044", - "tt4887028", - "tt4363250", - "tt2262518", - "tt3856042", - "tt5613902", - "tt5929538", - "tt0098153", - "tt11368116", - "tt1690545", - "tt5706876", - "tt2276000", - "tt2674430", - "tt4942478", - "tt3862762", - "tt5687424", - "tt1720621", - "tt3904272", - "tt1146283", - "tt6398360", - "tt6421118", - "tt4524418", - "tt3546802", - "tt2966754", - "tt3074546", - "tt5874752", - "tt1065060", - "tt6323306", - "tt3693492", - "tt4529524", - "tt5716280", - "tt5973364", - "tt4843208", - "tt6357202", - "tt4768592", - "tt2175470", - "tt9651918", - "tt2226630", - "tt5321088", - "tt5117484", - "tt1942913", - "tt0322282", - "tt4929720", - "tt2737310", - "tt3804448", - "tt10551420", - "tt7575410", - "tt3904986", - "tt10218664", - "tt5679554", - "tt10726604", - "tt4705740", - "tt3396208", - "tt5247026", - "tt5647250", - "tt6459382", - "tt3647110", - "tt0106613", - "tt3418424", - "tt2404465", - "tt5347122", - "tt5555174", - "tt9722848", - "tt6578228", - "tt2660118", - "tt1155630", - "tt7398750", - "tt3671086", - "tt4557956", - "tt0870204", - "tt3685328", - "tt2190492", - "tt2651724", - "tt3359650", - "tt7913394", - "tt4986754", - "tt0103204", - "tt4574654", - "tt1785288", - "tt3057428", - "tt0377992", - "tt5244974", - "tt3530896", - "tt0054412", - "tt5212918", - "tt0100867", - "tt7528150", - "tt0096379", - "tt0076659", - "tt0063571", - "tt0053183", - "tt8310062", - "tt8894018", - "tt2118694", - "tt0054416", - "tt0117608", - "tt4415016", - "tt6964844", - "tt7624932", - "tt4430992", - "tt4396042", - "tt0161010", - "tt6823246", - "tt8851630", - "tt6916872", - "tt5495792", - "tt6721358", - "tt0021750", - "tt5659172", - "tt5238370", - "tt3853452", - "tt5097504", - "tt2013299", - "tt3357178", - "tt5937210", - "tt4473370", - "tt1736552", - "tt0067162", - "tt11433098", - "tt10442360", - "tt2952602", - "tt7535580", - "tt0228493", - "tt0441897", - "tt5952306", - "tt8746192", - "tt5368108", - "tt2709740", - "tt5803492", - "tt4254746", - "tt1793281", - "tt4237208", - "tt2304459", - "tt3574616", - "tt1930322", - "tt3856408", - "tt1832354", - "tt0287934", - "tt4767526", - "tt4952982", - "tt4654472", - "tt4620298", - "tt1786551", - "tt10499426", - "tt9182202", - "tt0097778", - "tt2247816", - "tt7989520", - "tt2463524", - "tt3469330", - "tt0460721", - "tt5723720", - "tt3758334", - "tt8501318", - "tt2815138", - "tt3549566", - "tt10756134", - "tt4020048", - "tt5832906", - "tt1217613", - "tt10499260", - "tt7512632", - "tt5742374", - "tt7923350", - "tt3124680", - "tt7973342", - "tt2340426", - "tt1398028", - "tt10402510", - "tt8845046", - "tt11124992", - "tt11390036", - "tt4549224", - "tt9799992", - "tt9018916", - "tt4742274", - "tt8316568", - "tt9597190", - "tt4354756", - "tt10332854", - "tt7827042", - "tt6341066", - "tt6469344", - "tt8778658", - "tt4801232", - "tt6598072", - "tt3991052", - "tt0167360", - "tt5817022", - "tt6145764", - "tt1095442", - "tt4797160", - "tt0081268", - "tt1063336", - "tt1464606", - "tt3800222", - "tt0149215", - "tt5815858", - "tt4058368", - "tt2231138", - "tt3779414", - "tt7253506", - "tt7192766", - "tt1863173", - "tt3722062", - "tt2215489", - "tt3307852", - "tt2081348", - "tt5903926", - "tt6191390", - "tt2927212", - "tt2091288", - "tt6247064", - "tt3188492", - "tt4282872", - "tt6148766", - "tt1511514", - "tt1959347", - "tt6193470", - "tt4614330", - "tt7679532", - "tt3278988", - "tt5028822", - "tt2366596", - "tt5014528", - "tt7450356", - "tt6881740", - "tt8291806", - "tt5009014", - "tt2797352", - "tt0115693", - "tt0312700", - "tt6029106", - "tt3449006", - "tt0356764", - "tt0118691", - "tt2236686", - "tt7116478", - "tt5371408", - "tt5503512", - "tt5820812", - "tt1655461", - "tt3750238", - "tt3583382", - "tt2558996", - "tt1294144", - "tt0110818", - "tt6671850", - "tt3946960", - "tt3865718", - "tt1509125", - "tt5145662", - "tt3171176", - "tt2241471", - "tt5046632", - "tt2375585", - "tt4126694", - "tt0087452", - "tt6504538", - "tt6294226", - "tt3559180", - "tt0077687", - "tt5432114", - "tt6093618", - "tt7315526", - "tt1283906", - "tt0058917", - "tt2942016", - "tt0049035", - "tt4562728", - "tt8299778", - "tt2265431", - "tt9109620", - "tt4197642", - "tt7732122", - "tt4882174", - "tt3799926", - "tt5810368", - "tt2113683", - "tt5575364", - "tt6320482", - "tt6139626", - "tt4060962", - "tt0089994", - "tt3758738", - "tt7717204", - "tt5451640", - "tt5512872", - "tt1467242", - "tt5827360", - "tt6598626", - "tt3919218", - "tt3546114", - "tt2880528", - "tt2966504", - "tt5192674", - "tt1998395", - "tt4116388", - "tt1505136", - "tt2846938", - "tt7125070", - "tt5178362", - "tt7454138", - "tt4963830", - "tt5822648", - "tt2833398", - "tt3262022", - "tt0079472", - "tt0071970", - "tt6619188", - "tt0326664", - "tt4173614", - "tt8063840", - "tt7702854", - "tt8671462", - "tt4501740", - "tt3799232", - "tt5919216", - "tt1322282", - "tt10534256", - "tt0994917", - "tt9617456", - "tt6423012", - "tt3472714", - "tt4286666", - "tt9361322", - "tt0839991", - "tt3568658", - "tt1034447", - "tt0457523", - "tt3118452", - "tt2852500", - "tt1500512", - "tt2290473", - "tt3281502", - "tt0471711", - "tt2091343", - "tt0869019", - "tt3602588", - "tt2783926", - "tt6259380", - "tt0095803", - "tt0058557", - "tt5086198", - "tt3848600", - "tt0473105", - "tt0102757", - "tt4876952", - "tt0238247", - "tt5220430", - "tt4057146", - "tt1031276", - "tt5052524", - "tt0126707", - "tt0211938", - "tt1830848", - "tt0245356", - "tt6552758", - "tt6944936", - "tt3392740", - "tt5460118", - "tt0114324", - "tt0466771", - "tt2432918", - "tt0112499", - "tt7150410", - "tt0101356", - "tt4184878", - "tt6159518", - "tt5491506", - "tt2917484", - "tt4085696", - "tt0086194", - "tt0096259", - "tt7068818", - "tt3722234", - "tt0094871", - "tt5081304", - "tt0305206", - "tt5226512", - "tt2106529", - "tt2337841", - "tt3283864", - "tt4424292", - "tt5599520", - "tt6174392", - "tt1493287", - "tt5544754", - "tt4287234", - "tt4864624", - "tt8106160", - "tt0080863", - "tt3040964", - "tt6173488", - "tt1978587", - "tt4156972", - "tt0311648", - "tt3647784", - "tt3833682", - "tt0093898", - "tt0239949", - "tt2070597", - "tt1249302", - "tt2562726", - "tt0097731", - "tt4610378", - "tt10101774", - "tt9260980", - "tt0117091", - "tt9379030", - "tt0765451", - "tt5239942", - "tt5319656", - "tt6982562", - "tt5009286", - "tt5667516", - "tt10039344", - "tt8750122", - "tt0097756", - "tt1462897", - "tt2395353", - "tt2380942", - "tt2450258", - "tt6261048", - "tt3603758", - "tt0047595", - "tt3958918", - "tt0104377", - "tt7636672", - "tt1212054", - "tt4626564", - "tt7275334", - "tt5759590", - "tt1458902", - "tt0067119", - "tt2223810", - "tt7825558", - "tt10755502", - "tt6046062", - "tt8757908", - "tt8985240", - "tt1023499", - "tt5587198", - "tt8008266", - "tt5886388", - "tt9887580", - "tt2217895", - "tt11272506", - "tt8840400", - "tt11198898", - "tt1746242", - "tt3812692", - "tt7980152", - "tt2527192", - "tt7293422", - "tt10255374", - "tt10687158", - "tt0080556", - "tt5190846", - "tt0065105", - "tt9207616", - "tt9314934", - "tt2805814", - "tt3173618", - "tt0186835", - "tt3917254", - "tt0044716", - "tt1776167", - "tt2289920", - "tt8366502", - "tt0057329", - "tt2035599", - "tt5492608", - "tt1522827", - "tt7606894", - "tt0061447", - "tt1831726", - "tt1673732", - "tt5375258", - "tt6146812", - "tt1891956", - "tt5881892", - "tt8535180", - "tt4956188", - "tt4152374", - "tt1691926", - "tt3758592", - "tt2463712", - "tt5968588", - "tt5812254", - "tt4041916", - "tt5118024", - "tt10305328", - "tt7309060", - "tt1655432", - "tt6351728", - "tt4289186", - "tt10044000", - "tt6507672", - "tt0249478", - "tt4126434", - "tt5540536", - "tt4220166", - "tt1701215", - "tt4484660", - "tt8377070", - "tt1379223", - "tt0107613", - "tt7745984", - "tt7823906", - "tt5128826", - "tt7321274", - "tt8498198", - "tt2345555", - "tt8975028", - "tt2400291", - "tt5723774", - "tt0243462", - "tt4952044", - "tt9526822", - "tt6096166", - "tt0339642", - "tt4185370", - "tt6087426", - "tt3053122", - "tt1764179", - "tt8144778", - "tt2217777", - "tt1995260", - "tt4815862", - "tt0084006", - "tt4738776", - "tt3501590", - "tt0104609", - "tt4900098", - "tt4794754", - "tt3629032", - "tt3362238", - "tt1871329", - "tt7935784", - "tt3391988", - "tt2998406", - "tt3543258", - "tt6032170", - "tt4506728", - "tt6613878", - "tt2338173", - "tt2375093", - "tt10273384", - "tt10407272", - "tt7310440", - "tt6217052", - "tt0230025", - "tt8973954", - "tt2578066", - "tt6695212", - "tt3509702", - "tt0051948", - "tt8593930", - "tt7390646", - "tt3683144", - "tt9341668", - "tt11534742", - "tt0447999", - "tt8760392", - "tt3455326", - "tt8406660", - "tt3534842", - "tt6853910", - "tt1514833", - "tt4532446", - "tt10290998", - "tt0815456", - "tt1327618", - "tt0796206", - "tt2195566", - "tt1894470", - "tt11058740", - "tt0081590", - "tt5328952", - "tt4116488", - "tt3249124", - "tt5485522", - "tt0024803", - "tt2190796", - "tt7902124", - "tt7116182", - "tt0021576", - "tt5332942", - "tt0076207", - "tt8404272", - "tt0022462", - "tt0017825", - "tt10379012", - "tt7776430", - "tt1223930", - "tt6340640", - "tt5057626", - "tt0436231", - "tt4686862", - "tt4236480", - "tt11248800", - "tt8514508", - "tt8075202", - "tt2187071", - "tt5058316", - "tt0106792", - "tt3675748", - "tt7375556", - "tt3090310", - "tt6821870", - "tt1158935", - "tt0084783", - "tt6087562", - "tt2808986", - "tt6444182", - "tt6090764", - "tt0020960", - "tt4012914", - "tt6070832", - "tt5966750", - "tt3006588", - "tt2486862", - "tt4254046", - "tt6588332", - "tt8485548", - "tt1650028", - "tt7299388", - "tt2231251", - "tt1481576", - "tt2008513", - "tt3165828", - "tt1954977", - "tt0212797", - "tt0059205", - "tt1118040", - "tt5108912", - "tt2241116", - "tt1445208", - "tt4022758", - "tt3830302", - "tt1359554", - "tt3300932", - "tt3549636", - "tt0104412", - "tt5968274", - "tt4884914", - "tt0089304", - "tt1664010", - "tt0106400", - "tt1525838", - "tt0118702", - "tt3154310", - "tt6295112", - "tt4392726", - "tt0409043", - "tt6322522", - "tt0415949", - "tt6360810", - "tt0120321", - "tt1104836", - "tt3503460", - "tt5537600", - "tt1577038", - "tt7984826", - "tt6346162", - "tt10772304", - "tt5111874", - "tt1010403", - "tt3666492", - "tt8567168", - "tt3444312", - "tt6284256", - "tt4456850", - "tt1385492", - "tt7638110", - "tt0113133", - "tt7291268", - "tt7535798", - "tt2278392", - "tt6020094", - "tt1783714", - "tt11091878", - "tt4780662", - "tt6923740", - "tt5291862", - "tt6350736", - "tt4590990", - "tt1249443", - "tt0073340", - "tt10578206", - "tt2736858", - "tt5367592", - "tt3226786", - "tt1339111", - "tt5923752", - "tt0381505", - "tt4087816", - "tt0109439", - "tt6408226", - "tt8605562", - "tt0097429", - "tt0020985", - "tt11107012", - "tt6068978", - "tt0841044", - "tt2721624", - "tt4441098", - "tt8236366", - "tt6521876", - "tt3665498", - "tt5030402", - "tt0283952", - "tt2466830", - "tt1620981", - "tt0365265", - "tt2245218", - "tt3394674", - "tt6185266", - "tt3685236", - "tt0435679", - "tt3291632", - "tt8139850", - "tt0318283", - "tt1536053", - "tt6079100", - "tt1480649", - "tt4558040", - "tt3734354", - "tt9278074", - "tt4206228", - "tt3723750", - "tt0257568", - "tt4357394", - "tt0375785", - "tt5304992", - "tt0086490", - "tt0109021", - "tt0800328", - "tt5664502", - "tt0377752", - "tt5194048", - "tt4347994", - "tt0377818", - "tt0091374", - "tt0338077", - "tt9315848", - "tt3021354", - "tt1946421", - "tt2484254", - "tt0406046", - "tt4651666", - "tt0070599", - "tt0085891", - "tt5618160", - "tt5730898", - "tt0110518", - "tt7243750", - "tt2866774", - "tt6285404", - "tt5031658", - "tt3000458", - "tt8331668", - "tt0396032", - "tt0430211", - "tt0289873", - "tt7133352", - "tt1582465", - "tt0386032", - "tt2011311", - "tt8361028", - "tt5167122", - "tt3142366", - "tt5759434", - "tt3367294", - "tt4076926", - "tt0302889", - "tt4540434", - "tt3302820", - "tt7959500", - "tt2292707", - "tt0455326", - "tt5198570", - "tt4006302", - "tt0163375", - "tt6333052", - "tt7933596", - "tt5706370", - "tt7241926", - "tt0340012", - "tt2205401", - "tt0353489", - "tt3780208", - "tt9354944", - "tt7236034", - "tt8769300", - "tt0430308", - "tt2493402", - "tt5040760", - "tt6880996", - "tt5131842", - "tt9612982", - "tt9440874", - "tt4601180", - "tt8353466", - "tt9217660", - "tt9673140", - "tt6920074", - "tt1568150", - "tt1560220", - "tt2908876", - "tt6110504", - "tt2388886", - "tt5645932", - "tt8094320", - "tt1090750", - "tt0116835", - "tt2545440", - "tt0080671", - "tt1323575", - "tt2118623", - "tt3175794", - "tt0177845", - "tt0116550", - "tt3402232", - "tt1777595", - "tt5636430", - "tt0060661", - "tt2251227", - "tt0075200", - "tt5000240", - "tt0100604", - "tt2165743", - "tt2023765", - "tt0117784", - "tt5428666", - "tt0462519", - "tt0056580", - "tt2546764", - "tt5419676", - "tt3087882", - "tt1065291", - "tt5126654", - "tt1833887", - "tt6032090", - "tt5634962", - "tt0120190", - "tt3469918", - "tt5912454", - "tt0340377", - "tt4772856", - "tt7671846", - "tt2427814", - "tt4179950", - "tt7126776", - "tt0422295", - "tt0109962", - "tt6700846", - "tt0279623", - "tt4516352", - "tt7816596", - "tt6001452", - "tt7214762", - "tt4795624", - "tt5390246", - "tt5016974", - "tt7689924", - "tt8083622", - "tt0265632", - "tt6821012", - "tt10091530", - "tt5228304", - "tt0103243", - "tt8041276", - "tt8805604", - "tt2569088", - "tt1213644", - "tt0099800", - "tt0099832", - "tt0096203", - "tt3317234", - "tt0222850", - "tt5278214", - "tt5658242", - "tt2679066", - "tt5322168", - "tt0110989", - "tt2081374", - "tt2755016", - "tt0247568", - "tt3223636", - "tt0494834", - "tt3842614", - "tt6429934", - "tt0419843", - "tt0205461", - "tt0292261", - "tt3392804", - "tt0231775", - "tt5952382", - "tt0113037", - "tt2349296", - "tt4488840", - "tt5161502", - "tt7322864", - "tt7712746", - "tt8803596", - "tt0076172", - "tt6923858", - "tt1976580", - "tt4858362", - "tt1224378", - "tt4946336", - "tt0150377", - "tt9335666", - "tt9391986", - "tt2243900", - "tt6039284", - "tt7262820", - "tt2268622", - "tt0120800", - "tt4412528", - "tt3108244", - "tt0369735", - "tt1320336", - "tt2534642", - "tt0240402", - "tt8074328", - "tt4235130", - "tt5195540", - "tt0337879", - "tt8362516", - "tt8954732", - "tt7348082", - "tt4465614", - "tt11477684", - "tt9033386", - "tt6188658", - "tt3578022", - "tt3593926", - "tt5792656", - "tt5471258", - "tt10922658", - "tt8432890", - "tt6905402", - "tt2496400", - "tt4678184", - "tt7284202", - "tt8026554", - "tt7946216", - "tt5943936", - "tt2404370", - "tt2210983", - "tt4558200", - "tt0068371", - "tt9097546", - "tt9063902", - "tt9308464", - "tt0044515", - "tt4701426", - "tt0067148", - "tt0063172", - "tt0103859", - "tt0070122", - "tt0056142", - "tt0822833", - "tt0102722", - "tt0103128", - "tt0088176", - "tt0091400", - "tt0835349", - "tt0278488", - "tt11378928", - "tt0093744", - "tt2064745", - "tt0144926", - "tt0103275", - "tt0086593", - "tt5775814", - "tt6066280", - "tt9308458", - "tt0402348", - "tt1859476", - "tt6359600", - "tt9308460", - "tt3377456", - "tt4578000", - "tt4030014", - "tt7133170", - "tt7412508", - "tt0073373", - "tt1773041", - "tt0117104", - "tt0117692", - "tt0408196", - "tt1693110", - "tt0081414", - "tt5740806", - "tt2461262", - "tt0433371", - "tt0118663", - "tt5117106", - "tt6485928", - "tt3141568", - "tt9377260", - "tt1536536", - "tt6718858", - "tt3861144", - "tt1001491", - "tt3517870", - "tt0071908", - "tt0315441", - "tt2204371", - "tt0446048", - "tt0101548", - "tt6068554", - "tt3541524", - "tt6071092", - "tt8974964", - "tt0071565", - "tt0091355", - "tt0078930", - "tt11468536", - "tt0032412", - "tt0116264", - "tt0089963", - "tt10397992", - "tt7311770", - "tt7710360", - "tt0104027", - "tt4177670", - "tt8618718", - "tt8408218", - "tt7456468", - "tt5078886", - "tt10821190", - "tt0213203", - "tt0110259", - "tt10922620", - "tt4012932", - "tt0101746", - "tt2238140", - "tt0337876", - "tt4679576", - "tt0282120", - "tt0113748", - "tt7600294", - "tt5130274", - "tt0457477", - "tt1046245", - "tt2290153", - "tt0090799", - "tt0087065", - "tt0347369", - "tt3569326", - "tt4653950", - "tt0138755", - "tt0083852", - "tt0085183", - "tt0087829", - "tt6737518", - "tt1880293", - "tt0349169", - "tt5854198", - "tt0060464", - "tt9534808", - "tt5748918", - "tt0075710", - "tt0808276", - "tt5017324", - "tt2270168", - "tt0039277", - "tt2746538", - "tt0088224", - "tt4250482", - "tt1392982", - "tt0108555", - "tt7624934", - "tt0123950", - "tt0061856", - "tt1188990", - "tt0100247", - "tt4034450", - "tt0107899", - "tt11439610", - "tt0094921", - "tt8890158", - "tt4333578", - "tt0120036", - "tt4399684", - "tt1869309", - "tt7120010", - "tt1464535", - "tt5704704", - "tt0086349", - "tt0084691", - "tt0098678", - "tt2400555", - "tt0093964", - "tt7542576", - "tt6963278", - "tt4457678", - "tt2388856", - "tt6240470", - "tt3581294", - "tt8560754", - "tt0103253", - "tt0120089", - "tt6460276", - "tt7391194", - "tt9590420", - "tt0109990", - "tt9342846", - "tt0134873", - "tt6068746", - "tt2098669", - "tt6998222", - "tt0082969", - "tt0094827", - "tt5813010", - "tt0271200", - "tt5809020", - "tt0286132", - "tt5779862", - "tt000031088", - "tt5108524", - "tt1047610", - "tt7532392", - "tt0100613", - "tt2433126", - "tt3517776", - "tt0286162", - "tt0479468", - "tt3517044", - "tt3149208", - "tt2326818", - "tt0472205", - "tt0181059", - "tt0756703", - "tt4620246", - "tt7156326", - "tt6028604", - "tt5219972", - "tt4061196", - "tt0248803", - "tt7609034", - "tt10662310", - "tt2782604", - "tt2950844", - "tt0897291", - "tt3205304", - "tt0036627", - "tt7549892", - "tt4426738", - "tt1396227", - "tt1648199", - "tt0118894", - "tt5565200", - "tt0087384", - "tt4629636", - "tt2395247", - "tt4612368", - "tt7260048", - "tt3904186", - "tt5615976", - "tt4529638", - "tt3087968", - "tt4010848", - "tt1411276", - "tt0119684", - "tt10433222", - "tt3859320", - "tt2805676", - "tt0250292", - "tt3777912", - "tt2172001", - "tt0093424", - "tt6091332", - "tt5127192", - "tt7385832", - "tt0049777", - "tt0210584", - "tt6752320", - "tt0054944", - "tt1149583", - "tt0107949", - "tt1691152", - "tt0167247", - "tt5926990", - "tt7114588", - "tt6206204", - "tt0960741", - "tt7689958", - "tt0093186", - "tt0081522", - "tt0080062", - "tt8924518", - "tt0081060", - "tt0082507", - "tt4619908", - "tt6045798", - "tt2787002", - "tt1343115", - "tt7319068", - "tt1713501", - "tt7578566", - "tt5379294", - "tt0070195", - "tt7539078", - "tt3534294", - "tt5951832", - "tt6098512", - "tt7453746", - "tt4368814", - "tt7231776", - "tt9510710", - "tt5213744", - "tt0100649", - "tt8113950", - "tt4923200", - "tt6177752", - "tt7007846", - "tt0284066", - "tt4230192", - "tt0279887", - "tt7335938", - "tt5709852", - "tt1600656", - "tt0051198", - "tt4450562", - "tt5665256", - "tt9647980", - "tt2122460", - "tt3405392", - "tt5286156", - "tt2289098", - "tt5770466", - "tt1691154", - "tt0918628", - "tt0415489", - "tt0102403", - "tt0219400", - "tt7984734", - "tt0393081", - "tt8043038", - "tt0255851", - "tt0362129", - "tt4289062", - "tt0067140", - "tt0092079", - "tt0083365", - "tt1645141", - "tt3867836", - "tt5312612", - "tt0097166", - "tt0115836", - "tt0396873", - "tt0096166", - "tt7390588", - "tt7942736", - "tt2592126", - "tt6469498", - "tt5782160", - "tt1034405", - "tt0084786", - "tt0102573", - "tt0095145", - "tt0103007", - "tt2399406", - "tt4700872", - "tt6264486", - "tt4417768", - "tt1024770", - "tt7655524", - "tt0112692", - "tt0433883", - "tt7134870", - "tt9083724", - "tt8106534", - "tt5588786", - "tt0468580", - "tt1681370", - "tt7851798", - "tt4544696", - "tt4633340", - "tt0111787", - "tt1302576", - "tt6753972", - "tt2070874", - "tt1150947", - "tt5452814", - "tt5354458", - "tt4159698", - "tt1942900", - "tt0085287", - "tt0254703", - "tt1884378", - "tt3918794", - "tt8844888", - "tt7626042", - "tt1597028", - "tt6793524", - "tt2428726", - "tt7746762", - "tt6796028", - "tt0118539", - "tt3382888", - "tt8294204", - "tt5781222", - "tt3552568", - "tt5515374", - "tt5872888", - "tt2877192", - "tt5777708", - "tt0267248", - "tt3004634", - "tt0080139", - "tt5974780", - "tt7290688", - "tt11451280", - "tt11451340", - "tt6012446", - "tt2657058", - "tt7529360", - "tt0095428", - "tt4791780", - "tt6865630", - "tt3091148", - "tt10472008", - "tt6264508", - "tt3127402", - "tt0224816", - "tt6409762", - "tt0181804", - "tt0095736", - "tt8749622", - "tt6458952", - "tt3463848", - "tt0430650", - "tt5928818", - "tt5152460", - "tt5866442", - "tt3026124", - "tt5824910", - "tt7521040", - "tt1597178", - "tt7798844", - "tt0270197", - "tt0328077", - "tt3951206", - "tt6368324", - "tt6490538", - "tt0318181", - "tt1844728", - "tt3823690", - "tt6084676", - "tt9177040", - "tt0242545", - "tt6794374", - "tt2825596", - "tt7759300", - "tt7200076", - "tt9272568", - "tt3096782", - "tt8144850", - "tt1411236", - "tt10622790", - "tt0028299", - "tt8856090", - "tt6316466", - "tt0057879", - "tt8287690", - "tt7877982", - "tt7260818", - "tt0063576", - "tt0049800", - "tt0312841", - "tt2117944", - "tt4323572", - "tt0273923", - "tt0097922", - "tt0074083", - "tt0223897", - "tt2302925", - "tt5709762", - "tt0064217", - "tt3647804", - "tt0098308", - "tt7689960", - "tt0489085", - "tt0235327", - "tt1725885", - "tt4770142", - "tt6756326", - "tt4195336", - "tt2294619", - "tt3507138", - "tt0110656", - "tt3567200", - "tt1401692", - "tt7813060", - "tt1062161", - "tt0117688", - "tt3954288", - "tt5881970", - "tt3597400", - "tt4790076", - "tt0395443", - "tt5176442", - "tt7954694", - "tt0082121", - "tt7897102", - "tt0271461", - "tt7685926", - "tt7233828", - "tt2530316", - "tt6943908", - "tt0073051", - "tt1275786", - "tt5987042", - "tt2928904", - "tt5420406", - "tt0094012", - "tt6582784", - "tt5706420", - "tt6423886", - "tt5883020", - "tt2071648", - "tt0114805", - "tt5607810", - "tt7246942", - "tt1833116", - "tt2352722", - "tt2142027", - "tt1560479", - "tt5703622", - "tt4214024", - "tt0035884", - "tt7666250", - "tt0216651", - "tt6871186", - "tt0055106", - "tt0096472", - "tt0085642", - "tt3245334", - "tt0099902", - "tt0075174", - "tt0122685", - "tt2727322", - "tt1042916", - "tt0055505", - "tt5214690", - "tt9081572", - "tt11100776", - "tt6105880", - "tt3855730", - "tt2921178", - "tt5457222", - "tt5227020", - "tt0790751", - "tt0101984", - "tt3955808", - "tt0339236", - "tt0159401", - "tt8301054", - "tt5431946", - "tt6536668", - "tt7321860", - "tt0356443", - "tt1375790", - "tt5895374", - "tt4675370", - "tt0051174", - "tt1277731", - "tt3324852", - "tt8537692", - "tt7369722", - "tt0110538", - "tt8041916", - "tt2004304", - "tt0097423", - "tt5360018", - "tt2327243", - "tt3776288", - "tt0117776", - "tt6648468", - "tt0298798", - "tt3891538", - "tt2317090", - "tt0120722", - "tt0345074", - "tt6572694", - "tt4698792", - "tt6857374", - "tt7231572", - "tt5752904", - "tt0099904", - "tt9165636", - "tt1737674", - "tt7973916", - "tt4851360", - "tt7365178", - "tt4067106", - "tt5997358", - "tt8551054", - "tt4866768", - "tt7328154", - "tt0234767", - "tt6009582", - "tt0295252", - "tt4881172", - "tt2797190", - "tt0477404", - "tt6342440", - "tt4510218", - "tt0303068", - "tt0344485", - "tt1965262", - "tt5807398", - "tt6038168", - "tt5606268", - "tt0296492", - "tt0274471", - "tt0119779", - "tt1293743", - "tt1922551", - "tt0468526", - "tt4196616", - "tt5741008", - "tt0060437", - "tt0079758", - "tt0146336", - "tt0046951", - "tt0326828", - "tt0252503", - "tt0059909", - "tt2186929", - "tt0088757", - "tt1213663", - "tt5776448", - "tt0086896", - "tt0094656", - "tt5056698", - "tt0765429", - "tt0115875", - "tt0067656", - "tt2123174", - "tt1675439", - "tt4277308", - "tt3272572", - "tt0274321", - "tt1239378", - "tt0876137", - "tt7520980", - "tt5798432", - "tt0162735", - "tt7768846", - "tt5985260", - "tt0099826", - "tt3526542", - "tt4817008", - "tt3358832", - "tt5331084", - "tt2430104", - "tt1104835", - "tt7335732", - "tt6111250", - "tt1524083", - "tt0024617", - "tt0765460", - "tt4538294", - "tt1998179", - "tt8977440", - "tt0960730", - "tt1735181", - "tt1083992", - "tt5212488", - "tt3027994", - "tt0067484", - "tt0097053", - "tt5639898", - "tt0074251", - "tt0271219", - "tt0077350", - "tt4192896", - "tt9178814", - "tt1727381", - "tt10486170", - "tt6560154", - "tt10260534", - "tt0469519", - "tt8888892", - "tt0090570", - "tt1566591", - "tt0120317", - "tt5078220", - "tt0358203", - "tt7625712", - "tt0465616", - "tt3505812", - "tt5673828", - "tt1977739", - "tt0114733", - "tt6086498", - "tt10060386", - "tt2831568", - "tt0183808", - "tt0463953", - "tt1315350", - "tt7429362", - "tt6032718", - "tt4443922", - "tt2620290", - "tt0250081", - "tt2923834", - "tt3458510", - "tt5005462", - "tt0122515", - "tt1646981", - "tt0109920", - "tt3804556", - "tt3330948", - "tt4191054", - "tt6672082", - "tt4943218", - "tt4470288", - "tt0082810", - "tt0878695", - "tt0102220", - "tt0106233", - "tt9154776", - "tt5972196", - "tt5936492", - "tt0401815", - "tt1067765", - "tt6509058", - "tt0107630", - "tt3113386", - "tt2213322", - "tt0796314", - "tt0156639", - "tt9153044", - "tt2965384", - "tt3148856", - "tt5739900", - "tt0118942", - "tt0070557", - "tt6236762", - "tt5033114", - "tt5909334", - "tt0073460", - "tt5257726", - "tt8554826", - "tt0243664", - "tt3044748", - "tt8941056", - "tt1421373", - "tt0326806", - "tt7291132", - "tt0087507", - "tt0090683", - "tt3653132", - "tt0458480", - "tt1156396", - "tt1182887", - "tt7558548", - "tt2508258", - "tt2042449", - "tt2489736", - "tt5990458", - "tt0902952", - "tt9309046", - "tt8742774", - "tt5580602", - "tt4466894", - "tt4106148", - "tt0183288", - "tt4499228", - "tt7094374", - "tt7509538", - "tt0110146", - "tt0104690", - "tt10551160", - "tt0087681", - "tt8517004", - "tt0251021", - "tt2146834", - "tt1729226", - "tt0476396", - "tt0095316", - "tt1320242", - "tt1087798", - "tt1810636", - "tt0128473", - "tt8018008", - "tt3165264", - "tt5322136", - "tt2994382", - "tt5932502", - "tt6594148", - "tt2395219", - "tt8667202", - "tt0119679", - "tt4836580", - "tt6355580", - "tt0104346", - "tt8322908", - "tt4760268", - "tt5301544", - "tt0111470", - "tt3256812", - "tt6264244", - "tt7630164", - "tt4948040", - "tt2246887", - "tt0210094", - "tt4807272", - "tt10249374", - "tt1737794", - "tt1294789", - "tt4218998", - "tt0219126", - "tt0026778", - "tt2084953", - "tt8659750", - "tt2387416", - "tt8829872", - "tt4789822", - "tt5547654", - "tt0307639", - "tt3406296", - "tt3295276", - "tt0059549", - "tt5769006", - "tt11133600", - "tt2433448", - "tt1977892", - "tt1225856", - "tt6303962", - "tt4878482", - "tt0469937", - "tt6491296", - "tt2796792", - "tt5612874", - "tt11247028", - "tt5184272", - "tt7521324", - "tt0236034", - "tt9079304", - "tt0359423", - "tt1564005", - "tt3233704", - "tt4534886", - "tt8749132", - "tt3009530", - "tt2178927", - "tt0069280", - "tt1146321", - "tt0108186", - "tt0096483", - "tt1405412", - "tt2246565", - "tt5844340", - "tt0083598", - "tt1226276", - "tt0093164", - "tt1249169", - "tt2189778", - "tt0090946", - "tt9143304", - "tt5643730", - "tt6359082", - "tt8451938", - "tt0840787", - "tt1599315", - "tt7482508", - "tt0091756", - "tt7900528", - "tt0322422", - "tt7202354", - "tt5840030", - "tt6690910", - "tt0451176", - "tt4698740", - "tt1213825", - "tt5270688", - "tt10466182", - "tt6176928", - "tt1745932", - "tt0857207", - "tt3856504", - "tt6544524", - "tt5922124", - "tt4939156", - "tt7689950", - "tt7657428", - "tt2512528", - "tt4067256", - "tt4765862", - "tt7214842", - "tt0103670", - "tt0086355", - "tt5586362", - "tt1670269", - "tt0111732", - "tt0087268", - "tt1237838", - "tt2125647", - "tt2102508", - "tt5781146", - "tt6543420", - "tt0105001", - "tt0086955", - "tt0109447", - "tt5891260", - "tt0906005", - "tt9290234", - "tt7394816", - "tt3859872", - "tt9404440", - "tt0844768", - "tt6032704", - "tt8638750", - "tt0814130", - "tt3784042", - "tt11385066", - "tt5885106", - "tt0844029", - "tt0082263", - "tt1176095", - "tt4414438", - "tt6566830", - "tt2402114", - "tt5318534", - "tt7232438", - "tt1474456", - "tt2181898", - "tt2180351", - "tt10003978", - "tt5645196", - "tt4526546", - "tt2729236", - "tt6450628", - "tt4130484", - "tt6864090", - "tt2948566", - "tt8187918", - "tt5176878", - "tt4528692", - "tt0161100", - "tt3431016", - "tt4016226", - "tt0384686", - "tt3441700", - "tt5556152", - "tt7052244", - "tt3958964", - "tt2117946", - "tt2788512", - "tt2620792", - "tt5232294", - "tt0804558", - "tt2254010", - "tt0111361", - "tt7149336", - "tt2479384", - "tt7303948", - "tt5814958", - "tt0443450", - "tt0063341", - "tt3833400", - "tt0068200", - "tt6560164", - "tt0378230", - "tt8415352", - "tt10108544", - "tt4079776", - "tt5864904", - "tt8365426", - "tt1974366", - "tt1024724", - "tt0262396", - "tt3317696", - "tt1774591", - "tt3639656", - "tt1698654", - "tt0837803", - "tt2094155", - "tt0235553", - "tt4667854", - "tt4708052", - "tt0822818", - "tt8027322", - "tt1568923", - "tt3007302", - "tt4400028", - "tt6633182", - "tt10977680", - "tt5331878", - "tt6869644", - "tt4512714", - "tt3244466", - "tt6295122", - "tt4622202", - "tt4840666", - "tt7188978", - "tt0119644", - "tt0105670", - "tt0038703", - "tt0038650", - "tt0082601", - "tt0033627", - "tt0088249", - "tt6827388", - "tt0101606", - "tt3798866", - "tt0055008", - "tt3412738", - "tt0069840", - "tt6853580", - "tt3762912", - "tt0157075", - "tt3922474", - "tt0083061", - "tt2407730", - "tt2559214", - "tt0089945", - "tt5557976", - "tt1787660", - "tt1233571", - "tt0116493", - "tt4729790", - "tt4081012", - "tt7307136", - "tt3255590", - "tt1209377", - "tt5065142", - "tt1733733", - "tt1639086", - "tt5563862", - "tt3625516", - "tt6175486", - "tt3882054", - "tt1939686", - "tt4194108", - "tt0267989", - "tt3194678", - "tt5114154", - "tt0182000", - "tt6736782", - "tt0373908", - "tt0113596", - "tt6974888", - "tt1931486", - "tt3462880", - "tt4169390", - "tt3780754", - "tt0461660", - "tt6196936", - "tt11318624", - "tt3387444", - "tt1422189", - "tt7208564", - "tt8970448", - "tt7612748", - "tt5022626", - "tt3797808", - "tt0377800", - "tt8276562", - "tt4209174", - "tt2039412", - "tt7296862", - "tt6086080", - "tt5431890", - "tt2638900", - "tt4117538", - "tt0349416", - "tt0446676", - "tt7562932", - "tt7115980", - "tt1615110", - "tt3774866", - "tt4333210", - "tt4338076", - "tt5657712", - "tt2690226", - "tt6612098", - "tt5579442", - "tt3468316", - "tt4587588", - "tt5011848", - "tt0113158", - "tt4369136", - "tt0119509", - "tt6465940", - "tt2388986", - "tt5441464", - "tt3093286", - "tt0780059", - "tt3754662", - "tt8467788", - "tt0345543", - "tt5817456", - "tt4454078", - "tt5453522", - "tt3127016", - "tt0084654", - "tt5424228", - "tt0054709", - "tt0074888", - "tt0029557", - "tt0093393", - "tt0029453", - "tt0058578", - "tt0021818", - "tt0052016", - "tt0018379", - "tt0066356", - "tt0049189", - "tt0042579", - "tt0335121", - "tt0473434", - "tt2147134", - "tt0283832", - "tt0021654", - "tt0074121", - "tt0075610", - "tt0164312", - "tt0101254", - "tt10011252", - "tt7365040", - "tt6328242", - "tt0179183", - "tt1517805", - "tt0088650", - "tt0043687", - "tt3989744", - "tt0291350", - "tt8629434", - "tt0082639", - "tt5893332", - "tt3458118", - "tt9026184", - "tt9495224", - "tt8142044", - "tt0072201", - "tt4765240", - "tt7256866", - "tt6386352", - "tt1542768", - "tt6289320", - "tt7235038", - "tt7605074", - "tt8479346", - "tt4789192", - "tt2234451", - "tt5232468", - "tt3564858", - "tt2845780", - "tt2838568", - "tt2479478", - "tt2962984", - "tt4606498", - "tt3418064", - "tt3562852", - "tt5278460", - "tt3171832", - "tt4303202", - "tt7608028", - "tt5566790", - "tt1159984", - "tt7608534", - "tt4758646", - "tt3212830", - "tt7257508", - "tt10432050", - "tt3151710", - "tt6412452", - "tt5717492", - "tt2287655", - "tt4537842", - "tt0837156", - "tt0250371", - "tt8709036", - "tt5539052", - "tt3155328", - "tt4827878", - "tt3163238", - "tt5040202", - "tt5732566", - "tt5928396", - "tt5664222", - "tt3475540", - "tt9204352", - "tt4357764", - "tt0853153", - "tt6774914", - "tt10449248", - "tt3839992", - "tt10427010", - "tt7278178", - "tt5750534", - "tt8792630", - "tt7937440", - "tt4058426", - "tt9586294", - "tt7477310", - "tt4632440", - "tt0083271", - "tt0171786", - "tt10295602", - "tt0088083", - "tt0090246", - "tt0171800", - "tt0171789", - "tt5991974", - "tt3398066", - "tt7122516", - "tt1561770", - "tt9165122", - "tt0123927", - "tt3793788", - "tt3530690", - "tt6119856", - "tt0085547", - "tt1135092", - "tt0851530", - "tt4737910", - "tt4329810", - "tt3268340", - "tt0114380", - "tt2214596", - "tt2931072", - "tt0429173", - "tt0486665", - "tt6953974", - "tt4680568", - "tt2201034", - "tt2927178", - "tt0377043", - "tt1638308", - "tt0087089", - "tt4206218", - "tt0758751", - "tt3184212", - "tt7253190", - "tt0428038", - "tt0871867", - "tt0102217", - "tt4871018", - "tt0107688", - "tt0089444", - "tt0119640", - "tt7375304", - "tt7021508", - "tt0902328", - "tt3962828", - "tt8210516", - "tt3342332", - "tt4792648", - "tt5240258", - "tt5710042", - "tt4085044", - "tt5052966", - "tt3591988", - "tt4149732", - "tt4378628", - "tt0980970", - "tt3852028", - "tt3090670", - "tt7286456", - "tt0363771", - "tt2278911", - "tt4224754", - "tt0499448", - "tt0457701", - "tt0114210", - "tt0372784", - "tt2049630", - "tt0120812", - "tt5653514", - "tt8593878", - "tt0052226", - "tt0403537", - "tt2415112", - "tt6169934", - "tt0293564", - "tt0468569", - "tt6127004", - "tt1345836", - "tt0311750", - "tt0103776", - "tt0045989", - "tt0266915", - "tt3036654", - "tt0112462", - "tt7897122", - "tt0113014", - "tt5017220", - "tt0432267", - "tt0361411", - "tt0118688", - "tt4666732", - "tt0096895", - "tt2975590", - "tt0060153", - "tt0463931", - "tt4185152", - "tt3593666", - "tt1046894", - "tt0345461", - "tt0241527", - "tt1393000", - "tt4016588", - "tt0304141", - "tt5612742", - "tt0417741", - "tt0926084", - "tt3517984", - "tt0373889", - "tt8196692", - "tt1201607", - "tt0295297", - "tt0330373", - "tt6140580", - "tt0103827", - "tt0446724", - "tt1523987", - "tt8552226", - "tt3826338", - "tt4765188", - "tt5990444", - "tt3060390", - "tt3441840", - "tt0822849", - "tt0325055", - "tt6212496", - "tt3877092", - "tt0179473", - "tt7457716", - "tt2712758", - "tt2190467", - "tt7690016", - "tt1145144", - "tt0280674", - "tt4269118", - "tt5588416", - "tt3290440", - "tt0112255", - "tt3731580", - "tt5280684", - "tt2533492", - "tt1517249", - "tt0387059", - "tt4658578", - "tt1872082", - "tt1718998", - "tt0262911", - "tt0457090", - "tt4520924", - "tt3563342", - "tt3026144", - "tt4154004", - "tt4417186", - "tt0449581", - "tt7737656", - "tt3756722", - "tt3745906", - "tt4076344", - "tt0491005", - "tt3683072", - "tt2018111", - "tt3834272", - "tt3696358", - "tt8358682", - "tt3074578", - "tt0061080", - "tt0117786", - "tt3824458", - "tt2709692", - "tt10642244", - "tt0338348", - "tt0128853", - "tt10481792", - "tt0762121", - "tt0086005", - "tt1401143", - "tt0058536", - "tt0098115", - "tt0032981", - "tt1711525", - "tt0240890", - "tt0218967", - "tt0110367", - "tt0155753", - "tt0252028", - "tt0099487", - "tt2402927", - "tt0433400", - "tt0037059", - "tt0059026", - "tt1430607", - "tt0116705", - "tt0085334", - "tt0039628", - "tt0034862", - "tt0102493", - "tt5816652", - "tt2120750", - "tt0060345", - "tt8404614", - "tt0337824", - "tt7014694", - "tt0170016", - "tt3521746", - "tt5237552", - "tt5210380", - "tt8367184", - "tt3690174", - "tt4273188", - "tt4882548", - "tt1772373", - "tt5861882", - "tt5806506", - "tt0369053", - "tt7084614", - "tt5162458", - "tt0089410", - "tt5818010", - "tt3901944", - "tt2649680", - "tt10515852", - "tt6674318", - "tt0120257", - "tt11394172", - "tt5815160", - "tt2330654", - "tt7315570", - "tt0114924", - "tt0086465", - "tt5576318", - "tt0110955", - "tt7758866", - "tt0117372", - "tt0047673", - "tt6225520", - "tt3530002", - "tt0373469", - "tt0143338", - "tt2083355", - "tt0039190", - "tt0085936", - "tt2990140", - "tt4443658", - "tt0056211", - "tt0096061", - "tt0032049", - "tt0037795", - "tt0033728", - "tt4616802", - "tt0033397", - "tt0063500", - "tt0033879", - "tt5740852", - "tt3333920", - "tt0113537", - "tt0104714", - "tt0070424", - "tt2308733", - "tt0878647", - "tt0112864", - "tt0122151", - "tt3385398", - "tt0172726", - "tt4560926", - "tt8480782", - "tt6209282", - "tt0099423", - "tt1621427", - "tt1293842", - "tt0337978", - "tt0097733", - "tt0095016", - "tt0093409", - "tt5667052", - "tt8237340", - "tt0087363", - "tt2174896", - "tt10720568", - "tt0329200", - "tt1606378", - "tt2205652", - "tt5559544", - "tt0099700", - "tt0104431", - "tt0113421", - "tt6888938", - "tt0044008", - "tt0314331", - "tt0099785", - "tt3850590", - "tt2117905", - "tt4514660", - "tt0037595", - "tt4902716", - "tt1798603", - "tt0307987", - "tt0120670", - "tt4730006", - "tt0319343", - "tt0064349", - "tt5001426", - "tt5848862", - "tt0071222", - "tt0097958", - "tt1268799", - "tt5846744", - "tt5654600", - "tt0840304", - "tt11324024", - "tt0112606", - "tt5460068", - "tt3175798", - "tt2226309", - "tt5668054", - "tt5050200", - "tt6275674", - "tt5126178", - "tt7281472", - "tt5125620", - "tt7130192", - "tt5347148", - "tt5782040", - "tt1974382", - "tt4344742", - "tt4473806", - "tt10871460", - "tt0102917", - "tt3856972", - "tt1479676", - "tt0073626", - "tt0167107", - "tt7025976", - "tt0059274", - "tt0165854", - "tt10060094", - "tt3433160", - "tt0910847", - "tt6185026", - "tt3464378", - "tt2923780", - "tt6086614", - "tt3831636", - "tt4170186", - "tt2667960", - "tt2855724", - "tt0363504", - "tt1535491", - "tt0419922", - "tt0108311", - "tt0459250", - "tt5537330", - "tt6877088", - "tt7763400", - "tt8998634", - "tt2669212", - "tt6508326", - "tt7588688", - "tt0900916", - "tt9103332", - "tt3159818", - "tt5955112", - "tt6205690", - "tt0093143", - "tt3353060", - "tt0099030", - "tt5610134", - "tt7203520", - "tt4607722", - "tt4835940", - "tt8149090", - "tt3596436", - "tt7281538", - "tt3683386", - "tt8613908", - "tt5242920", - "tt0030442", - "tt7085724", - "tt9674000", - "tt7819506", - "tt1194661", - "tt0094744", - "tt4157728", - "tt0300195", - "tt8327628", - "tt3984432", - "tt3848072", - "tt1626240", - "tt2181853", - "tt2328727", - "tt8850510", - "tt8535852", - "tt10130010", - "tt7642718", - "tt0377057", - "tt8672786", - "tt0120376", - "tt6306564", - "tt0086879", - "tt7709254", - "tt8879926", - "tt1067769", - "tt3646836", - "tt0243925", - "tt0436855", - "tt2289406", - "tt0099472", - "tt0360940", - "tt9271194", - "tt7149254", - "tt11044122", - "tt4360924", - "tt5303442", - "tt9359428", - "tt5360150", - "tt2673388", - "tt7282278", - "tt1043748", - "tt0280870", - "tt5113384", - "tt0206113", - "tt6098486", - "tt1205608", - "tt4592572", - "tt0330768", - "tt2516304", - "tt8178396", - "tt0160236", - "tt6504868", - "tt0896522", - "tt4382376", - "tt9638582", - "tt7022034", - "tt7302488", - "tt6283780", - "tt6557356", - "tt5176536", - "tt3520216", - "tt6567012", - "tt2227004", - "tt4520518", - "tt4587000", - "tt0913413", - "tt3522530", - "tt5692786", - "tt5674368", - "tt0382048", - "tt8050598", - "tt0823195", - "tt3895838", - "tt0172586", - "tt0096376", - "tt7088028", - "tt0106967", - "tt2315806", - "tt4841688", - "tt6236198", - "tt0053454", - "tt9265856", - "tt10986394", - "tt8493776", - "tt4682804", - "tt9149946", - "tt0099934", - "tt6236662", - "tt0041983", - "tt5244588", - "tt4660172", - "tt1626811", - "tt10308474", - "tt0068983", - "tt3548962", - "tt2071526", - "tt0117040", - "tt1003116", - "tt7473716", - "tt0056639", - "tt7549996", - "tt0098019", - "tt1957886", - "tt0102068", - "tt0086428", - "tt0498536", - "tt0799987", - "tt0118788", - "tt0070788", - "tt5442626", - "tt3611124", - "tt3724490", - "tt0065069", - "tt10260810", - "tt3954646", - "tt0383534", - "tt11402600", - "tt3611122", - "tt6339042", - "tt4041476", - "tt5944496", - "tt11197082", - "tt4267108", - "tt4246856", - "tt3583430", - "tt3735810", - "tt0216746", - "tt1133559", - "tt10267396", - "tt4096990", - "tt4723246", - "tt0050841", - "tt4526372", - "tt1421048", - "tt0114786", - "tt4877606", - "tt1176725", - "tt3498956", - "tt10621180", - "tt0105789", - "tt5351000", - "tt1235170", - "tt2475914", - "tt3894958", - "tt1298530", - "tt1621432", - "tt3827540", - "tt4943236", - "tt2458010", - "tt5467554", - "tt4286760", - "tt5069136", - "tt11269704", - "tt7557536", - "tt4137596", - "tt2108593", - "tt0028313", - "tt4065414", - "tt4109632", - "tt0058544", - "tt9815714", - "tt3522138", - "tt3118958", - "tt0058379", - "tt0080983", - "tt7370570", - "tt3509978", - "tt11416686", - "tt0059346", - "tt1467265", - "tt8456396", - "tt2712990", - "tt4567320", - "tt7042800", - "tt0201716", - "tt5775370", - "tt8125466", - "tt7104578", - "tt6098544", - "tt7064954", - "tt3482062", - "tt9412268", - "tt6685776", - "tt6950250", - "tt4757648", - "tt0042949", - "tt7657462", - "tt6868216", - "tt3122608", - "tt7722000", - "tt1396219", - "tt3525346", - "tt7390126", - "tt2644902", - "tt6265620", - "tt0880648", - "tt6973360", - "tt8929142", - "tt3963304", - "tt4289340", - "tt2756910", - "tt4325400", - "tt3067222", - "tt8974850", - "tt5701718", - "tt5969358", - "tt7603290", - "tt3120054", - "tt0164444", - "tt4945490", - "tt0062936", - "tt8732914", - "tt0787470", - "tt8332808", - "tt7468604", - "tt10963986", - "tt1047832", - "tt4712618", - "tt10642154", - "tt8354006", - "tt8498184", - "tt0091002", - "tt0381707", - "tt10345008", - "tt10964168", - "tt0164522", - "tt10471748", - "tt0059418", - "tt5428090", - "tt9087578", - "tt10136898", - "tt0118159", - "tt3908598", - "tt0046031", - "tt2750288", - "tt3177264", - "tt0201196", - "tt6997574", - "tt10921256", - "tt0182295", - "tt5606616", - "tt4935480", - "tt10768278", - "tt3611052", - "tt4045146", - "tt10295168", - "tt0896040", - "tt10482348", - "tt4045732", - "tt0448114", - "tt1776238", - "tt0926110", - "tt2390032", - "tt5023566", - "tt3412784", - "tt1942920", - "tt10887870", - "tt3147284", - "tt10210182", - "tt3908634", - "tt6333054", - "tt1277733", - "tt3253232", - "tt0111359", - "tt5974066", - "tt2123342", - "tt3827868", - "tt3518702", - "tt3953186", - "tt3719320", - "tt6893836", - "tt2314374", - "tt7263664", - "tt5249098", - "tt3555514", - "tt3704416", - "tt6341668", - "tt0314166", - "tt3839880", - "tt3272050", - "tt6196754", - "tt5477566", - "tt9562694", - "tt2854394", - "tt8050266", - "tt3951298", - "tt0218616", - "tt5481010", - "tt6187620", - "tt5255882", - "tt4991112", - "tt10583460", - "tt7135152", - "tt3854262", - "tt10341248", - "tt2378100", - "tt9201720", - "tt3064532", - "tt5365066", - "tt4469518", - "tt4490824", - "tt4280818", - "tt7136736", - "tt2070773", - "tt6231784", - "tt0082362", - "tt0210544", - "tt3168760", - "tt0473389", - "tt6374204", - "tt0087810", - "tt3723788", - "tt6388206", - "tt7441032", - "tt3717016", - "tt1380279", - "tt0035173", - "tt4798956", - "tt5591822", - "tt0044762", - "tt5355726", - "tt1584733", - "tt5176390", - "tt0038694", - "tt0298354", - "tt1827578", - "tt1244666", - "tt3661104", - "tt7323598", - "tt3122390", - "tt7588584", - "tt0161220", - "tt5131914", - "tt7917484", - "tt4082644", - "tt6878820", - "tt0090057", - "tt4180286", - "tt3486210", - "tt0870089", - "tt2636488", - "tt6221540", - "tt6415248", - "tt3529656", - "tt0045469", - "tt0047794", - "tt0042179", - "tt5737408", - "tt5343532", - "tt0039998", - "tt0076354", - "tt0072725", - "tt0343449", - "tt2257284", - "tt5349016", - "tt0109402", - "tt0110157", - "tt0037939", - "tt0113609", - "tt4276834", - "tt8796786", - "tt3915160", - "tt5981802", - "tt1069226", - "tt5884280", - "tt7116248", - "tt3068466", - "tt0092963", - "tt0039037", - "tt7551962", - "tt4278806", - "tt6378710", - "tt6185074", - "tt8295976", - "tt6026014", - "tt4628812", - "tt2334090", - "tt8195518", - "tt10655906", - "tt9275046", - "tt0054013", - "tt8784388", - "tt6478538", - "tt8997134", - "tt3991066", - "tt9815596", - "tt8722440", - "tt11225428", - "tt7913934", - "tt2329032", - "tt0441645", - "tt5533308", - "tt8883498", - "tt0047685", - "tt0120169", - "tt3804730", - "tt3850496", - "tt9765144", - "tt0061655", - "tt0282593", - "tt0840303", - "tt3951252", - "tt4103470", - "tt5093668", - "tt3068192", - "tt0309372", - "tt5691854", - "tt6217664", - "tt2394063", - "tt3130594", - "tt7997256", - "tt1852947", - "tt1335977", - "tt7974234", - "tt1695994", - "tt6981634", - "tt6286216", - "tt3063470", - "tt0428541", - "tt4146410", - "tt10550884", - "tt1350484", - "tt1371160", - "tt0018756", - "tt0116041", - "tt3457508", - "tt3769038", - "tt3702704", - "tt0018876", - "tt8848462", - "tt0068311", - "tt0022395", - "tt0018328", - "tt0020142", - "tt8451018", - "tt0217126", - "tt9135318", - "tt9288486", - "tt0035252", - "tt7831530", - "tt10887880", - "tt8717018", - "tt6897772", - "tt0275277", - "tt11313076", - "tt10873852", - "tt6098794", - "tt8846262", - "tt6179604", - "tt4135326", - "tt9184150", - "tt0087903", - "tt1677082", - "tt6333080", - "tt0457290", - "tt6008686", - "tt3015110", - "tt2654360", - "tt3332282", - "tt6250792", - "tt5796838", - "tt1217590", - "tt4670016", - "tt0775488", - "tt1861439", - "tt6342110", - "tt7316576", - "tt5858580", - "tt0238137", - "tt7158814", - "tt3105662", - "tt9055114", - "tt5170360", - "tt4312842", - "tt0329374", - "tt3818286", - "tt1473345", - "tt1330015", - "tt5243424", - "tt7598968", - "tt8677112", - "tt1927093", - "tt0934981", - "tt0385013", - "tt03395648", - "tt1967688", - "tt5802404", - "tt4956376", - "tt0267657", - "tt8485364", - "tt9537428", - "tt8186318", - "tt0127069", - "tt1407927", - "tt2017733", - "tt3314584", - "tt6396104", - "tt0271285", - "tt3464290", - "tt11334312", - "tt1815899", - "tt0211320", - "tt10332890", - "tt8618412", - "tt9153006", - "tt6692926", - "tt5020188", - "tt2363109", - "tt1588291", - "tt0495682", - "tt1570964", - "tt6170432", - "tt5478446", - "tt3593978", - "tt0100944", - "tt1105740", - "tt7420342", - "tt0105401", - "tt0037771", - "tt4295602", - "tt4052400", - "tt0036953", - "tt4160176", - "tt1954843", - "tt1791681", - "tt1625340", - "tt0464061", - "tt4045384", - "tt6881910", - "tt1787778", - "tt0402230", - "tt5665452", - "tt7093470", - "tt3097956", - "tt2282662", - "tt4580550", - "tt2314886", - "tt4779884", - "tt3977462", - "tt4785640", - "tt6587078", - "tt1821426", - "tt6803170", - "tt6664700", - "tt3852436", - "tt2602338", - "tt3604156", - "tt0178050", - "tt4654016", - "tt1595842", - "tt0284490", - "tt0196106", - "tt2924352", - "tt0222167", - "tt2393805", - "tt1844763", - "tt3891436", - "tt7628146", - "tt0269483", - "tt4941354", - "tt4848010", - "tt6747818", - "tt5922484", - "tt0441881", - "tt3899070", - "tt6984460", - "tt2337280", - "tt6744422", - "tt0120669", - "tt0785032", - "tt6153538", - "tt6385910", - "tt0084370", - "tt0089756", - "tt9617716", - "tt0093509", - "tt0068595", - "tt0085371", - "tt10149506", - "tt8932254", - "tt3100678", - "tt11193888", - "tt4978100", - "tt7423486", - "tt9252508", - "tt2935510", - "tt0032338", - "tt10006006", - "tt4025798", - "tt7689966", - "tt0365229", - "tt1311076", - "tt0963207", - "tt0318761", - "tt0481513", - "tt1835977", - "tt3302160", - "tt1390398", - "tt5278462", - "tt9296692", - "tt8897988", - "tt6958014", - "tt4851758", - "tt4839476", - "tt0322389", - "tt0463935", - "tt4380748", - "tt0365545", - "tt6214468", - "tt0048127", - "tt0197521", - "tt0102932", - "tt6155456", - "tt0041368", - "tt2157045", - "tt0100625", - "tt0106598", - "tt0068276", - "tt9110902", - "tt11142536", - "tt0147800", - "tt0488147", - "tt9657904", - "tt0101458", - "tt1129396", - "tt0160596", - "tt11163008", - "tt0069049", - "tt5540058", - "tt4539828", - "tt3259276", - "tt8106576", - "tt3310896", - "tt10374234", - "tt7875948", - "tt3953626", - "tt6499694", - "tt4334636", - "tt6400674", - "tt5292624", - "tt1644669", - "tt0498348", - "tt0112656", - "tt7188014", - "tt1484521", - "tt0271436", - "tt3687304", - "tt6090268", - "tt8232232", - "tt0232632", - "tt6688022", - "tt6398184", - "tt5108168", - "tt4667084", - "tt0035140", - "tt7139936", - "tt0206588", - "tt6328004", - "tt1141702", - "tt4096638", - "tt9212666", - "tt5480528", - "tt7488036", - "tt8239736", - "tt2359307", - "tt9058944", - "tt2180168", - "tt6649066", - "tt11047498", - "tt8548792", - "tt2728784", - "tt4591226", - "tt6229100", - "tt10022384", - "tt3627488", - "tt3137764", - "tt10551144", - "tt8106584", - "tt9101692", - "tt0192942", - "tt0137141", - "tt0064356", - "tt5667296", - "tt7736656", - "tt0220627", - "tt5749596", - "tt0106580", - "tt6241428", - "tt4643034", - "tt3375972", - "tt3210376", - "tt8609926", - "tt5950094", - "tt11265724", - "tt9165642", - "tt6437346", - "tt6931414", - "tt4488744", - "tt7806518", - "tt10253466", - "tt0038577", - "tt0093217", - "tt8583694", - "tt0071804", - "tt7869070", - "tt7248248", - "tt0036047", - "tt0100172", - "tt1532961", - "tt0091688", - "tt0036004", - "tt6833650", - "tt0377309", - "tt0033781", - "tt2088846", - "tt2270274", - "tt0209958", - "tt1907707", - "tt5087554", - "tt1110626", - "tt6641528", - "tt1213585", - "tt5483172", - "tt0910554", - "tt4323568", - "tt0258273", - "tt2041487", - "tt0453465", - "tt9351746", - "tt4762824", - "tt4974208", - "tt0475998", - "tt3844320", - "tt0306841", - "tt8466648", - "tt0439478", - "tt1864405", - "tt2658538", - "tt0361309", - "tt11286066", - "tt0785077", - "tt0048729", - "tt0090333", - "tt10090796", - "tt3487278", - "tt6833964", - "tt9378360", - "tt6494344", - "tt5969696", - "tt4742556", - "tt1754264", - "tt6379314", - "tt8995254", - "tt0051655", - "tt10650924", - "tt0106343", - "tt11313068", - "tt0365748", - "tt0327162", - "tt1986202", - "tt0106342", - "tt2763790", - "tt2939114", - "tt0439876", - "tt0243554", - "tt1507002", - "tt3710966", - "tt0425112", - "tt0409459", - "tt4900018", - "tt0088885", - "tt3771626", - "tt8079248", - "tt2043801", - "tt0089601", - "tt2386868", - "tt0240468", - "tt5612850", - "tt0086969", - "tt0221799", - "tt2043887", - "tt6268734", - "tt2173248", - "tt0326900", - "tt0268695", - "tt2289182", - "tt0317303", - "tt2936390", - "tt0044391", - "tt0090110", - "tt6096194", - "tt4443838", - "tt1220227", - "tt0338325", - "tt1493127", - "tt6089358", - "tt5513260", - "tt6794376", - "tt0093690", - "tt1850418", - "tt0115927", - "tt0857376", - "tt1459459", - "tt0383060", - "tt3544048", - "tt5462288", - "tt6791238", - "tt0221218", - "tt3237064", - "tt5221184", - "tt0331933", - "tt7656770", - "tt5231992", - "tt1219671", - "tt5676118", - "tt4638148", - "tt4552534", - "tt5435476", - "tt0205177", - "tt1885325", - "tt1139111", - "tt9870402", - "tt1499249", - "tt3962848", - "tt0480271", - "tt2282719", - "tt0418004", - "tt7533152", - "tt5075662", - "tt3115712", - "tt0302640", - "tt3384180", - "tt1460798", - "tt3268850", - "tt6422938", - "tt0479125", - "tt7240568", - "tt0497964", - "tt3479316", - "tt10349372", - "tt7349950", - "tt5699060", - "tt0216165", - "tt6144876", - "tt0295578", - "tt5441282", - "tt5982922", - "tt8924844", - "tt4225622", - "tt6079516", - "tt8634348", - "tt11161374", - "tt3293594", - "tt10514016", - "tt6544220", - "tt9135260", - "tt0427543", - "tt9204204", - "tt8234892", - "tt10141990", - "tt1871391", - "tt4054382", - "tt5431284", - "tt3401026", - "tt2369275", - "tt8983294", - "tt0071838", - "tt7947150", - "tt2783862", - "tt8733256", - "tt1648204", - "tt6443380", - "tt7246408", - "tt5068650", - "tt6097486", - "tt7001906", - "tt3731176", - "tt0050985", - "tt7983712", - "tt7227742", - "tt0091524", - "tt8193396", - "tt4908174", - "tt7013830", - "tt4899528", - "tt6269192", - "tt0076320", - "tt11353562", - "tt11112140", - "tt2566016", - "tt8563466", - "tt3219194", - "tt5901992", - "tt7604980", - "tt8811382", - "tt8179944", - "tt4681432", - "tt2179053", - "tt2771252", - "tt6131712", - "tt0103671", - "tt4068576", - "tt1273219", - "tt4781446", - "tt0261289", - "tt8236336", - "tt0112346", - "tt0417791", - "tt4340072", - "tt0053351", - "tt4211312", - "tt0166158", - "tt0451239", - "tt5068754", - "tt0165477", - "tt5012620", - "tt5709536", - "tt0044851", - "tt0040582", - "tt0098625", - "tt0116165", - "tt0230838", - "tt5578604", - "tt6673098", - "tt0090357", - "tt6051424", - "tt0258470", - "tt0396592", - "tt3313314", - "tt0295455", - "tt0033754", - "tt8758086", - "tt8128188", - "tt0118556", - "tt1846442", - "tt10223052", - "tt1743360", - "tt8617648", - "tt3745558", - "tt5839328", - "tt4410770", - "tt8514564", - "tt2891456", - "tt6449354", - "tt3396820", - "tt5753806", - "tt6828722", - "tt5584796", - "tt9448892", - "tt7857374", - "tt0096189", - "tt0033723", - "tt0055514", - "tt0043425", - "tt7027210", - "tt4956270", - "tt0045468", - "tt0035555", - "tt5821150", - "tt8888808", - "tt10011508", - "tt5000686", - "tt7153134", - "tt0077850", - "tt0106912", - "tt0041085", - "tt8302386", - "tt6959300", - "tt0039226", - "tt0086508", - "tt7850334", - "tt3921694", - "tt0770772", - "tt4594836", - "tt6433880", - "tt4902260", - "tt7335710", - "tt6145232", - "tt7842288", - "tt1000771", - "tt0288415", - "tt0240515", - "tt2894338", - "tt5258074", - "tt8781414", - "tt0120510", - "tt0499554", - "tt0376108", - "tt0123987", - "tt2762506", - "tt5826432", - "tt0217630", - "tt10531134", - "tt5249200", - "tt1899324", - "tt8106596", - "tt1235187", - "tt2084872", - "tt5873216", - "tt0112667", - "tt4453560", - "tt4144504", - "tt0492619", - "tt7176052", - "tt0403217", - "tt4424350", - "tt4912622", - "tt0283084", - "tt7497366", - "tt4279250", - "tt5978724", - "tt3163224", - "tt3666024", - "tt2342700", - "tt2085957", - "tt6970798", - "tt7362370", - "tt3581436", - "tt6054846", - "tt4199898", - "tt3838634", - "tt6105774", - "tt0090713", - "tt7632274", - "tt0472268", - "tt0081032", - "tt0993775", - "tt6473542", - "tt8047262", - "tt0057887", - "tt0086370", - "tt1508274", - "tt5095010", - "tt0818170", - "tt1566503", - "tt0072747", - "tt0107612", - "tt1719030", - "tt4823434", - "tt6856592", - "tt6665988", - "tt2279105", - "tt3686272", - "tt3349884", - "tt2837574", - "tt4794416", - "tt5070130", - "tt2384296", - "tt11156614", - "tt5340300", - "tt6114206", - "tt0064276", - "tt5153588", - "tt4600300", - "tt9398640", - "tt10971520", - "tt6728264", - "tt9725216", - "tt0121766", - "tt8882390", - "tt0116488", - "tt2084977", - "tt0449880", - "tt0259393", - "tt0759612", - "tt0105017", - "tt11310004", - "tt9844368", - "tt0357054", - "tt7303530", - "tt0244803", - "tt6884200", - "tt0096871", - "tt0326901", - "tt0096870", - "tt8764582", - "tt3467914", - "tt1258130", - "tt7764186", - "tt1735190", - "tt7475832", - "tt1999130", - "tt0089002", - "tt3629834", - "tt0095178", - "tt0038777", - "tt0057298", - "tt1506435", - "tt5516586", - "tt7288378", - "tt2362006", - "tt10477858", - "tt0111187", - "tt0114168", - "tt0113097", - "tt1105745", - "tt0082288", - "tt5132392", - "tt6798422", - "tt4948858", - "tt8871254", - "tt3898028", - "tt0117742", - "tt5090828", - "tt5304248", - "tt1245733", - "tt0473333", - "tt0047034", - "tt5275830", - "tt0102782", - "tt0098343", - "tt0119576", - "tt0107941", - "tt0314725", - "tt7356166", - "tt7440524", - "tt0120152", - "tt0183659", - "tt0469835", - "tt0098356", - "tt7207238", - "tt7058016", - "tt0262571", - "tt5536736", - "tt10875028", - "tt7357302", - "tt7026362", - "tt3382636", - "tt3304688", - "tt8618712", - "tt4520340", - "tt0236348", - "tt0960864", - "tt5493944", - "tt0324554", - "tt5420870", - "tt0104695", - "tt0465430", - "tt0313196", - "tt0208874", - "tt0481522", - "tt0095646", - "tt11336698", - "tt6263260", - "tt4615318", - "tt2130048", - "tt3445270", - "tt6214958", - "tt1822395", - "tt6333064", - "tt4694518", - "tt4133102", - "tt0112572", - "tt0115641", - "tt0889595", - "tt1522259", - "tt1855134", - "tt6214722", - "tt2198209", - "tt0361696", - "tt5580392", - "tt0436971", - "tt0089997", - "tt1327763", - "tt0116669", - "tt0099493", - "tt5067958", - "tt1707818", - "tt0466766", - "tt8005336", - "tt3846674", - "tt5562652", - "tt0325596", - "tt0381966", - "tt5775194", - "tt0149691", - "tt2770480", - "tt9169764", - "tt4085238", - "tt0039323", - "tt0011237", - "tt5553962", - "tt9078564", - "tt4756770", - "tt9373386", - "tt0111102", - "tt3383214", - "tt7248144", - "tt0483361", - "tt0296711", - "tt0086110", - "tt0110364", - "tt6250554", - "tt0404203", - "tt0265417", - "tt0972544", - "tt5073652", - "tt0083093", - "tt0109909", - "tt7170950", - "tt4109998", - "tt0883398", - "tt0101635", - "tt0119859", - "tt6014556", - "tt8527036", - "tt0083158", - "tt10003516", - "tt1475149", - "tt4729990", - "tt7543072", - "tt6220290", - "tt0098184", - "tt0033806", - "tt1535080", - "tt5704748", - "tt6910734", - "tt3778354", - "tt0454987", - "tt0096193", - "tt1054118", - "tt6699114", - "tt1229367", - "tt0384504", - "tt0280778", - "tt0281190", - "tt4866214", - "tt0125971", - "tt7426120", - "tt0250202", - "tt0280969", - "tt7310916", - "tt6714534", - "tt6868646", - "tt4263780", - "tt4729642", - "tt3390376", - "tt0035807", - "tt3743068", - "tt0071791", - "tt0205271", - "tt4920360", - "tt6303872", - "tt1144815", - "tt5503686", - "tt0491720", - "tt6874964", - "tt6474040", - "tt2040504", - "tt6348244", - "tt2119463", - "tt2273321", - "tt0082122", - "tt0105107", - "tt1814836", - "tt6142496", - "tt0331488", - "tt1087457", - "tt0116260", - "tt0064875", - "tt6218358", - "tt4827922", - "tt0212910", - "tt0800115", - "tt5931144", - "tt0120390", - "tt0765439", - "tt6959298", - "tt6498644", - "tt7420292", - "tt0330136", - "tt6959310", - "tt4270874", - "tt8396294", - "tt0325258", - "tt1309379", - "tt0827521", - "tt7125498", - "tt0111693", - "tt2069985", - "tt6131208", - "tt7689940", - "tt0780565", - "tt0045478", - "tt3213062", - "tt0044926", - "tt0768172", - "tt0059347", - "tt7042838", - "tt0126916", - "tt0097179", - "tt5420848", - "tt4613254", - "tt0257510", - "tt0208993", - "tt0113737", - "tt0077482", - "tt2188220", - "tt0096735", - "tt0116905", - "tt5566778", - "tt2462764", - "tt9154456", - "tt9356444", - "tt5840448", - "tt0818602", - "tt6896536", - "tt2577990", - "tt6628386", - "tt0272152", - "tt4468600", - "tt8041922", - "tt0279778", - "tt2709656", - "tt5788462", - "tt7169100", - "tt4958390", - "tt7741530", - "tt0184907", - "tt0179116", - "tt0099460", - "tt6333072", - "tt5952526", - "tt6502208", - "tt2499358", - "tt3110982", - "tt0158131", - "tt3980530", - "tt0140697", - "tt4987454", - "tt1587422", - "tt0171580", - "tt0116527", - "tt0117737", - "tt1560959", - "tt7601296", - "tt8009578", - "tt3313182", - "tt1340765", - "tt5541330", - "tt0364343", - "tt5459456", - "tt10292722", - "tt3302636", - "tt3922798", - "tt6436270", - "tt5211694", - "tt7131622", - "tt9178986", - "tt1118687", - "tt11243364", - "tt7945938", - "tt1111876", - "tt9699028", - "tt5113040", - "tt2321269", - "tt6250876", - "tt4898564", - "tt1558250", - "tt6475636", - "tt0778661", - "tt0096321", - "tt0851578", - "tt0072424", - "tt0109015", - "tt5596034", - "tt0066327", - "tt0097332", - "tt1079372", - "tt0112537", - "tt8156742", - "tt7967580", - "tt10410186", - "tt1480660", - "tt0103280", - "tt0240944", - "tt3799372", - "tt0371190", - "tt5431600", - "tt7605084", - "tt1160629", - "tt8163814", - "tt0480268", - "tt0380609", - "tt1202514", - "tt2551894", - "tt1146439", - "tt4105700", - "tt4778424", - "tt4558532", - "tt4643048", - "tt3593916", - "tt5517438", - "tt1671493", - "tt6928060", - "tt3458194", - "tt1340844", - "tt4264544", - "tt7775430", - "tt1813261", - "tt1104006", - "tt0426578", - "tt4585080", - "tt1309449", - "tt1438522", - "tt4853154", - "tt1394259", - "tt11009598", - "tt7056772", - "tt1703938", - "tt0065217", - "tt5163074", - "tt4779518", - "tt10738914", - "tt6163142", - "tt4872078", - "tt1885440", - "tt7183826", - "tt4820278", - "tt11078522", - "tt4693788", - "tt6292874", - "tt0098638", - "tt2668134", - "tt4851852", - "tt11078434", - "tt4880572", - "tt11162974", - "tt0181907", - "tt0300015", - "tt10443844", - "tt1575539", - "tt3754976", - "tt8235296", - "tt3526622", - "tt0089847", - "tt6022946", - "tt1976010", - "tt2370224", - "tt0286152", - "tt0087951", - "tt0219854", - "tt0278731", - "tt5834800", - "tt4076258", - "tt0411195", - "tt0240462", - "tt0105820", - "tt0337812", - "tt7631348", - "tt1362264", - "tt0167203", - "tt0906599", - "tt8569230", - "tt0102951", - "tt6116568", - "tt0472602", - "tt1572306", - "tt2469200", - "tt1423636", - "tt0093857", - "tt4720316", - "tt3073898", - "tt8435268", - "tt1105729", - "tt0113670", - "tt3327086", - "tt0449061", - "tt1694015", - "tt2443356", - "tt4898730", - "tt0927627", - "tt7798634", - "tt1682886", - "tt4882376", - "tt5174234", - "tt2582576", - "tt0106188", - "tt4928814", - "tt0065234", - "tt6170484", - "tt3291148", - "tt0041699", - "tt0424880", - "tt11136006", - "tt0097986", - "tt0196516", - "tt2332623", - "tt1980185", - "tt0361841", - "tt0080839", - "tt0058324", - "tt0095236", - "tt0091188", - "tt1702014", - "tt0498505", - "tt0083967", - "tt8510488", - "tt0188640", - "tt0118301", - "tt7689424", - "tt10810424", - "tt0815244", - "tt0084210", - "tt0067773", - "tt7715070", - "tt6211502", - "tt0119123", - "tt5949038", - "tt0275022", - "tt5361326", - "tt0279286", - "tt0118804", - "tt4209900", - "tt0780486", - "tt3183936", - "tt7140696", - "tt4007248", - "tt0202046", - "tt0942378", - "tt3893664", - "tt0144604", - "tt4179582", - "tt0810823", - "tt4461838", - "tt0109403", - "tt0209322", - "tt0167427", - "tt1132623", - "tt4959876", - "tt0386504", - "tt0120633", - "tt4056808", - "tt9358398", - "tt2102497", - "tt4074296", - "tt4443784", - "tt0293815", - "tt8289196", - "tt7370936", - "tt0107611", - "tt10922508", - "tt3975556", - "tt3771668", - "tt0762115", - "tt6662736", - "tt0985593", - "tt1995346", - "tt0113682", - "tt3663200", - "tt2760202", - "tt7968976", - "tt4080400", - "tt2365580", - "tt7541632", - "tt3505754", - "tt4790268", - "tt3492900", - "tt7498092", - "tt3503924", - "tt5956016", - "tt11163014", - "tt0473308", - "tt6197028", - "tt6659414", - "tt1054485", - "tt10768782", - "tt3864056", - "tt0037536", - "tt1356790", - "tt10794834", - "tt7488288", - "tt5168238", - "tt3663564", - "tt0905627", - "tt2369105", - "tt8169994", - "tt0069761", - "tt7470850", - "tt0384929", - "tt0095846", - "tt0117427", - "tt0157472", - "tt0272147", - "tt5650964", - "tt4911876", - "tt0179098", - "tt0141907", - "tt0120550", - "tt4005510", - "tt8331988", - "tt0141109", - "tt1699231", - "tt2582784", - "tt4144350", - "tt0218043", - "tt0116151", - "tt0420087", - "tt2823574", - "tt2266938", - "tt0093919", - "tt7115500", - "tt4319112", - "tt7043176", - "tt5813808", - "tt4106028", - "tt4218538", - "tt0085689", - "tt2022568", - "tt3243630", - "tt0404030", - "tt8804688", - "tt11067442", - "tt8923482", - "tt8948614", - "tt2114490", - "tt0841032", - "tt0368075", - "tt6499516", - "tt0120823", - "tt10345022", - "tt0081375", - "tt5359048", - "tt2354395", - "tt7216068", - "tt0245238", - "tt3843748", - "tt9082152", - "tt6170202", - "tt0124879", - "tt3496818", - "tt0488349", - "tt0055895", - "tt2237012", - "tt0099623", - "tt5688996", - "tt0191037", - "tt0234829", - "tt0118836", - "tt3401190", - "tt2363483", - "tt0470995", - "tt3628574", - "tt2649882", - "tt0165361", - "tt1967651", - "tt0107117", - "tt3817848", - "tt0361715", - "tt0109035", - "tt0195778", - "tt0414853", - "tt8503170", - "tt6972670", - "tt6640526", - "tt0116552", - "tt2125490", - "tt0384810", - "tt0143261", - "tt0878673", - "tt0044036", - "tt1727825", - "tt9842634", - "tt1836974", - "tt3443208", - "tt9107368", - "tt2710694", - "tt2652118", - "tt0466342", - "tt0293088", - "tt5651952", - "tt3652142", - "tt9742422", - "tt9459550", - "tt9143166", - "tt5937964", - "tt6102062", - "tt7696976", - "tt0138818", - "tt1222818", - "tt6710606", - "tt0041182", - "tt11210886", - "tt2049559", - "tt0253378", - "tt5963066", - "tt1208647", - "tt0368709", - "tt3797276", - "tt7094436", - "tt0093407", - "tt2076346", - "tt0042963", - "tt0386792", - "tt4827442", - "tt2634296", - "tt2369317", - "tt4703182", - "tt6513120", - "tt2615952", - "tt7595276", - "tt1977941", - "tt11096888", - "tt0110213", - "tt5037358", - "tt3756780", - "tt2378587", - "tt0190138", - "tt0098331", - "tt3077108", - "tt9021104", - "tt0046937", - "tt2056663", - "tt0116361", - "tt4769836", - "tt5908294", - "tt7056864", - "tt6152554", - "tt0828158", - "tt0109305", - "tt0299930", - "tt0048624", - "tt4782322", - "tt5849622", - "tt0453548", - "tt2144008", - "tt3244744", - "tt0140796", - "tt3518988", - "tt0417001", - "tt5889292", - "tt0098165", - "tt0117909", - "tt0049762", - "tt5126220", - "tt0317910", - "tt7239700", - "tt5929776", - "tt0119381", - "tt0050974", - "tt0479044", - "tt0102011", - "tt2011300", - "tt0085366", - "tt0141974", - "tt0101669", - "tt0133189", - "tt3615160", - "tt4929038", - "tt0477731", - "tt6472116", - "tt2527050", - "tt3211400", - "tt0396652", - "tt0107870", - "tt0315297", - "tt0076786", - "tt2457324", - "tt1326194", - "tt0015772", - "tt0078907", - "tt0300633", - "tt3589352", - "tt0017162", - "tt0064373", - "tt1679235", - "tt7207478", - "tt4839118", - "tt6582782", - "tt8338940", - "tt0109484", - "tt11057118", - "tt0099750", - "tt0120834", - "tt6428150", - "tt0298408", - "tt0111712", - "tt5291714", - "tt0266452", - "tt0362526", - "tt8772262", - "tt0080853", - "tt6080418", - "tt7444978", - "tt0382073", - "tt1942971", - "tt0091338", - "tt0095488", - "tt8529066", - "tt7029788", - "tt8228172", - "tt0031971", - "tt0099878", - "tt0893367", - "tt0094321", - "tt0048570", - "tt0052877", - "tt0082163", - "tt5670364", - "tt7394770", - "tt0126604", - "tt0338467", - "tt0194368", - "tt0392878", - "tt1754316", - "tt2512236", - "tt8412232", - "tt1152758", - "tt3914332", - "tt8951058", - "tt0212974", - "tt4151094", - "tt2133214", - "tt3085312", - "tt1104733", - "tt4396584", - "tt3512160", - "tt0095687", - "tt3960240", - "tt0272020", - "tt0100486", - "tt3129350", - "tt5492260", - "tt0448120", - "tt3869356", - "tt2384022", - "tt3760162", - "tt7235502", - "tt2119373", - "tt5708154", - "tt0364569", - "tt6698648", - "tt5912600", - "tt3710938", - "tt0456014", - "tt1320347", - "tt3079568", - "tt5737862", - "tt0323120", - "tt0140174", - "tt5355868", - "tt3164754", - "tt3643544", - "tt10172550", - "tt9465600", - "tt6425560", - "tt4462372", - "tt7117594", - "tt6071704", - "tt0167752", - "tt5342090", - "tt7978548", - "tt0266425", - "tt3973724", - "tt0299458", - "tt0069865", - "tt3475058", - "tt7639502", - "tt4286468", - "tt2261427", - "tt6436888", - "tt0110395", - "tt0331953", - "tt0119210", - "tt3552592", - "tt5539284", - "tt1707378", - "tt6260468", - "tt3586044", - "tt0200469", - "tt2163606", - "tt7830584", - "tt8197418", - "tt2492344", - "tt5223878", - "tt8029682", - "tt0298045", - "tt2452386", - "tt1839390", - "tt0097618", - "tt5236424", - "tt0997147", - "tt1091229", - "tt1776143", - "tt0446046", - "tt0084719", - "tt0280665", - "tt0044110", - "tt0256459", - "tt5617916", - "tt7165212", - "tt1323518", - "tt3108970", - "tt8897046", - "tt8009518", - "tt6567708", - "tt2264978", - "tt6937070", - "tt4443974", - "tt0120683", - "tt8665150", - "tt11010272", - "tt0250274", - "tt4295294", - "tt0115493", - "tt0273108", - "tt0180073", - "tt1294161", - "tt0350028", - "tt0084088", - "tt0094027", - "tt0393735", - "tt0117958", - "tt0082992", - "tt0077305", - "tt0087550", - "tt0116913", - "tt0403455", - "tt0097142", - "tt0092638", - "tt1512738", - "tt0110363", - "tt0243232", - "tt0120122", - "tt0084049", - "tt0097570", - "tt6244730", - "tt1059793", - "tt0107443", - "tt1786530", - "tt0297753", - "tt0082822", - "tt0053271", - "tt4792524", - "tt3515524", - "tt2392435", - "tt5072612", - "tt3644258", - "tt0176783", - "tt3711196", - "tt3487610", - "tt5143968", - "tt0072249", - "tt5106042", - "tt7422638", - "tt6874542", - "tt4329516", - "tt6769326", - "tt9352780", - "tt4117338", - "tt0225071", - "tt5369246", - "tt3127902", - "tt0205000", - "tt0253798", - "tt4497416", - "tt10644808", - "tt6744044", - "tt2917506", - "tt3212026", - "tt0144550", - "tt3794552", - "tt8751928", - "tt0367652", - "tt4737992", - "tt3065448", - "tt0850667", - "tt4780578", - "tt6426700", - "tt6184894", - "tt8169942", - "tt9617448", - "tt10883004", - "tt4664460", - "tt4632316", - "tt0233142", - "tt0113533", - "tt6223932", - "tt0068659", - "tt1792576", - "tt0111205", - "tt4552112", - "tt3626436", - "tt3288948", - "tt0280460", - "tt0403016", - "tt5993468", - "tt0425123", - "tt6781498", - "tt3786326", - "tt3065132", - "tt6235008", - "tt0104225", - "tt4034930", - "tt4406298", - "tt0329028", - "tt6384720", - "tt1052024", - "tt5338774", - "tt0111477", - "tt3243772", - "tt1754137", - "tt4431208", - "tt0867149", - "tt7319064", - "tt1650393", - "tt3666644", - "tt3557464", - "tt0274468", - "tt5783956", - "tt0301526", - "tt6387232", - "tt9364406", - "tt7706168", - "tt0314498", - "tt0240900", - "tt0361925", - "tt0376105", - "tt6398496", - "tt2129990", - "tt6535100", - "tt0090852", - "tt8890058", - "tt10156020", - "tt6899068", - "tt0065398", - "tt10203940", - "tt8667120", - "tt10920376", - "tt6412076", - "tt10243678", - "tt7809198", - "tt0074799", - "tt2140507", - "tt5564336", - "tt0069992", - "tt7275352", - "tt7043070", - "tt8378126", - "tt1043904", - "tt4471634", - "tt9248032", - "tt2899142", - "tt5963132", - "tt10262168", - "tt9238392", - "tt7983890", - "tt1881109", - "tt8707008", - "tt0271259", - "tt0970965", - "tt0089543", - "tt0499234", - "tt0106246", - "tt0448663", - "tt0105381", - "tt3983642", - "tt4844288", - "tt0396705", - "tt0086429", - "tt3295244", - "tt6167116", - "tt4093896", - "tt0160495", - "tt5792472", - "tt0095916", - "tt0059287", - "tt0250797", - "tt1285252", - "tt2821314", - "tt6846432", - "tt3552348", - "tt8725518", - "tt7133092", - "tt4979826", - "tt1346973", - "tt3403310", - "tt0118926", - "tt0091869", - "tt7588798", - "tt0345591", - "tt0051687", - "tt1823096", - "tt2766804", - "tt9316022", - "tt2937366", - "tt0110917", - "tt0118708", - "tt0102737", - "tt3021984", - "tt8421698", - "tt0473074", - "tt7948328", - "tt0101924", - "tt1517476", - "tt0489037", - "tt8196200", - "tt0097348", - "tt8634202", - "tt5644740", - "tt0114134", - "tt0090196", - "tt4561398", - "tt1623759", - "tt7609180", - "tt5117428", - "tt0076902", - "tt7240478", - "tt0102328", - "tt0783518", - "tt0290332", - "tt0189456", - "tt0419434", - "tt6803212", - "tt1572008", - "tt0111701", - "tt0099819", - "tt0108065", - "tt0070942", - "tt2339739", - "tt2304583", - "tt1964758", - "tt5492054", - "tt7309384", - "tt3579192", - "tt2125685", - "tt3749926", - "tt7212266", - "tt0433116", - "tt0374536", - "tt3616292", - "tt0285462", - "tt5575258", - "tt7812828", - "tt2429278", - "tt0178988", - "tt4991512", - "tt0493430", - "tt0401410", - "tt2766790", - "tt4267026", - "tt5269968", - "tt8493638", - "tt8707374", - "tt0071199", - "tt6027490", - "tt1319733", - "tt1276434", - "tt0031002", - "tt2362991", - "tt0109053", - "tt1827402", - "tt0441303", - "tt5335244", - "tt6189022", - "tt1832355", - "tt0095409", - "tt0041776", - "tt3074856", - "tt0282687", - "tt6375308", - "tt3735398", - "tt6615426", - "tt4760804", - "tt0118966", - "tt0118887", - "tt4103992", - "tt0065872", - "tt0498900", - "tt4627352", - "tt5791536", - "tt5792468", - "tt1363127", - "tt7474562", - "tt3626504", - "tt0087718", - "tt0120185", - "tt0294345", - "tt0782867", - "tt3675204", - "tt2338454", - "tt3268458", - "tt0378306", - "tt8126390", - "tt2388771", - "tt8858104", - "tt0113028", - "tt5278506", - "tt7683148", - "tt0059501", - "tt3837248", - "tt0108656", - "tt0023249", - "tt0101510", - "tt1454545", - "tt0400497", - "tt0165232", - "tt2631072", - "tt0069426", - "tt0108105", - "tt3159812", - "tt1975368", - "tt0114496", - "tt3952614", - "tt0217756", - "tt3140724", - "tt9028880", - "tt0229002", - "tt0466399", - "tt11015752", - "tt0039895", - "tt0067433", - "tt0372237", - "tt0073605", - "tt0049856", - "tt0024794", - "tt0059232", - "tt0107719", - "tt0048055", - "tt6794424", - "tt0192528", - "tt1355235", - "tt0042379", - "tt0064073", - "tt0039022", - "tt5433114", - "tt6608032", - "tt5834854", - "tt0067774", - "tt2259318", - "tt0116817", - "tt0079753", - "tt5932330", - "tt0118686", - "tt0076044", - "tt0107009", - "tt0295725", - "tt4659728", - "tt0460766", - "tt0075807", - "tt1543511", - "tt0196267", - "tt7605144", - "tt5110386", - "tt2974068", - "tt0069866", - "tt2180571", - "tt2358806", - "tt3266724", - "tt3004852", - "tt6079702", - "tt11023738", - "tt0432291", - "tt5974050", - "tt0119310", - "tt3040528", - "tt8976032", - "tt0094006", - "tt0107107", - "tt6956798", - "tt6843446", - "tt6566768", - "tt3219686", - "tt4206250", - "tt0110712", - "tt6206364", - "tt10577906", - "tt4967298", - "tt5677598", - "tt0104837", - "tt7666724", - "tt4147238", - "tt9384954", - "tt5751588", - "tt1237962", - "tt1735357", - "tt4795730", - "tt6195904", - "tt0118870", - "tt7919810", - "tt1288406", - "tt0981072", - "tt1673381", - "tt7846056", - "tt8178486", - "tt4729430", - "tt0077303", - "tt5066818", - "tt3467440", - "tt2929690", - "tt10938576", - "tt10915826", - "tt0462482", - "tt8963288", - "tt6053440", - "tt1071780", - "tt0339034", - "tt0438123", - "tt0323572", - "tt6175670", - "tt5725368", - "tt1822394", - "tt0412922", - "tt1003165", - "tt0236640", - "tt1639084", - "tt4060244", - "tt0117293", - "tt1813652", - "tt0074205", - "tt0095515", - "tt2352196", - "tt1515195", - "tt0046874", - "tt4682780", - "tt5165878", - "tt0225882", - "tt4532280", - "tt6921496", - "tt1009017", - "tt0058981", - "tt3456784", - "tt0075793", - "tt2403867", - "tt3480056", - "tt0111333", - "tt0112772", - "tt7272948", - "tt0970521", - "tt0102585", - "tt0108640", - "tt0915460", - "tt0067144", - "tt0087134", - "tt0092863", - "tt0119375", - "tt8009314", - "tt5587022", - "tt5758302", - "tt1153690", - "tt2200022", - "tt0058191", - "tt0443737", - "tt6644286", - "tt1354553", - "tt0085356", - "tt10886732", - "tt0201820", - "tt0427411", - "tt1277736", - "tt0214641", - "tt0454808", - "tt0283530", - "tt10413458", - "tt7240298", - "tt5432342", - "tt4188442", - "tt3612320", - "tt0335559", - "tt3373410", - "tt8453538", - "tt0443496", - "tt5246700", - "tt0111418", - "tt5596104", - "tt3762974", - "tt0120604", - "tt9389444", - "tt0283139", - "tt0231402", - "tt6253688", - "tt7707314", - "tt0097481", - "tt0469689", - "tt2619512", - "tt5533228", - "tt5253074", - "tt4031126", - "tt7288562", - "tt0286788", - "tt0072152", - "tt2351417", - "tt4622018", - "tt1140941", - "tt3910512", - "tt10701384", - "tt2191805", - "tt5117876", - "tt1497874", - "tt8167872", - "tt0218378", - "tt0102768", - "tt6078458", - "tt6095472", - "tt0252501", - "tt0076106", - "tt2385211", - "tt6541512", - "tt0430457", - "tt4936176", - "tt0086361", - "tt0092042", - "tt0757361", - "tt0071288", - "tt6338506", - "tt3111864", - "tt7284204", - "tt2340650", - "tt7214470", - "tt0098966", - "tt0066492", - "tt0120662", - "tt0463996", - "tt0131436", - "tt0076059", - "tt0473464", - "tt8488126", - "tt7415466", - "tt0448166", - "tt0083745", - "tt6984258", - "tt0076138", - "tt3711708", - "tt0056596", - "tt0120847", - "tt4702826", - "tt9213244", - "tt7125774", - "tt11062388", - "tt8068768", - "tt7370952", - "tt0082926", - "tt3300542", - "tt6613958", - "tt11108064", - "tt9637246", - "tt2302755", - "tt7422926", - "tt4473054", - "tt0076762", - "tt0120094", - "tt7653006", - "tt1103221", - "tt5472372", - "tt0078326", - "tt6105406", - "tt3983674", - "tt0091019", - "tt0077199", - "tt1964650", - "tt0078024", - "tt2523832", - "tt3884528", - "tt1054588", - "tt3750976", - "tt0282171", - "tt0104487", - "tt3691270", - "tt0365125", - "tt0102687", - "tt5227606", - "tt0359692", - "tt6222300", - "tt1242460", - "tt0240913", - "tt5034212", - "tt6522666", - "tt5989336", - "tt0356680", - "tt0037008", - "tt0054073", - "tt0023427", - "tt1065332", - "tt1646973", - "tt0028096", - "tt0065571", - "tt0246692", - "tt0098253", - "tt0038206", - "tt0384369", - "tt0097396", - "tt0065649", - "tt0092978", - "tt0059619", - "tt0052847", - "tt0091251", - "tt0099776", - "tt0038419", - "tt0032186", - "tt0078054", - "tt6949398", - "tt10262492", - "tt7659018", - "tt6492020", - "tt10499474", - "tt2359085", - "tt8399718", - "tt2516874", - "tt1957867", - "tt1350498", - "tt10691094", - "tt7710160", - "tt1789074", - "tt8069578", - "tt10719844", - "tt0040341", - "tt0040755", - "tt7947624", - "tt5987700", - "tt1137996", - "tt10720474", - "tt5246928", - "tt3431188", - "tt0166674", - "tt10327518", - "tt0368688", - "tt0040197", - "tt7477068", - "tt0155578", - "tt1336621", - "tt6805354", - "tt0067559", - "tt0102517", - "tt7547410", - "tt0093845", - "tt0062885", - "tt10920662", - "tt8022928", - "tt1150934", - "tt0407121", - "tt8760684", - "tt0093342", - "tt0117966", - "tt0478832", - "tt0469810", - "tt0223783", - "tt7908312", - "tt1365050", - "tt3832326", - "tt1183921", - "tt11121556", - "tt0139418", - "tt4027794", - "tt3329654", - "tt0183882", - "tt6576556", - "tt7471706", - "tt4786020", - "tt3840082", - "tt1528792", - "tt4131208", - "tt1323926", - "tt0115434", - "tt7951242", - "tt0314691", - "tt0052765", - "tt2389290", - "tt1261422", - "tt0479852", - "tt1739303", - "tt0117093", - "tt6333086", - "tt2960304", - "tt0206871", - "tt0033722", - "tt0422515", - "tt0293359", - "tt6285672", - "tt6887162", - "tt0234964", - "tt5592878", - "tt3089326", - "tt1124078", - "tt0131356", - "tt5128790", - "tt0156246", - "tt0207961", - "tt0194894", - "tt3146022", - "tt0289374", - "tt0101998", - "tt5047336", - "tt0115438", - "tt0065560", - "tt1764666", - "tt4870510", - "tt5083366", - "tt0130121", - "tt0103850", - "tt0060462", - "tt2216088", - "tt6068406", - "tt0318974", - "tt7546024", - "tt4009728", - "tt0228750", - "tt2124959", - "tt5127214", - "tt0109288", - "tt0314119", - "tt0179471", - "tt3393164", - "tt0079771", - "tt2386237", - "tt8425058", - "tt6964538", - "tt6343988", - "tt0107090", - "tt0326856", - "tt0067650", - "tt0119950", - "tt7528342", - "tt0421090", - "tt7977162", - "tt5952266", - "tt0338556", - "tt7689926", - "tt2278050", - "tt6082630", - "tt0421994", - "tt2766882", - "tt7830428", - "tt5368354", - "tt5715832", - "tt3064356", - "tt0382621", - "tt0091159", - "tt8727494", - "tt2277106", - "tt2091427", - "tt0050181", - "tt5265964", - "tt5266668", - "tt0451094", - "tt3209560", - "tt4680980", - "tt6668974", - "tt0160338", - "tt1054115", - "tt0913399", - "tt0481519", - "tt0082958", - "tt11043546", - "tt3920820", - "tt6464678", - "tt0114466", - "tt6339230", - "tt0091631", - "tt0473692", - "tt1322393", - "tt5873150", - "tt3533612", - "tt6146590", - "tt1426748", - "tt0435617", - "tt0091183", - "tt0119190", - "tt5098712", - "tt2548738", - "tt0079640", - "tt0832318", - "tt0228156", - "tt0077621", - "tt4504438", - "tt0203755", - "tt0079639", - "tt2075352", - "tt0097500", - "tt6948354", - "tt5786184", - "tt3970854", - "tt5834362", - "tt2011325", - "tt0076913", - "tt0186589", - "tt0306734", - "tt8774388", - "tt5158844", - "tt3300712", - "tt7222228", - "tt0250425", - "tt9028784", - "tt8634192", - "tt9032562", - "tt6021694", - "tt3661570", - "tt9033712", - "tt6802950", - "tt7714138", - "tt1950235", - "tt5133572", - "tt7164084", - "tt6992230", - "tt8160744", - "tt7511008", - "tt4477292", - "tt6727816", - "tt6842446", - "tt4054008", - "tt7315484", - "tt8242340", - "tt7428884", - "tt1605782", - "tt6472234", - "tt10691312", - "tt10691126", - "tt2072910", - "tt9866208", - "tt2755860", - "tt0089523", - "tt6163094", - "tt0385700", - "tt0435286", - "tt0015116", - "tt1483421", - "tt0090302", - "tt0107947", - "tt0116743", - "tt6415100", - "tt3500600", - "tt8009906", - "tt7985692", - "tt0244000", - "tt5690810", - "tt8637428", - "tt7935908", - "tt6105098", - "tt8266310", - "tt0060168", - "tt0111845", - "tt7869818", - "tt2375454", - "tt5938190", - "tt8000908", - "tt5851598", - "tt8717590", - "tt3106314", - "tt5664676", - "tt4364194", - "tt0757194", - "tt0489048", - "tt4177856", - "tt1139662", - "tt0938281", - "tt9243946", - "tt0772181", - "tt0398029", - "tt7343762", - "tt0067390", - "tt0454914", - "tt0848281", - "tt0823172", - "tt0437954", - "tt1262945", - "tt0349747", - "tt0043751", - "tt1533089", - "tt0285154", - "tt1267160", - "tt0221889", - "tt7919372", - "tt5687968", - "tt0165859", - "tt1334537", - "tt0118851", - "tt0436629", - "tt2484530", - "tt7445552", - "tt0073911", - "tt0276919", - "tt2071600", - "tt0191133", - "tt0327919", - "tt7358154", - "tt1229791", - "tt0110971", - "tt3165632", - "tt0863136", - "tt5275872", - "tt3721924", - "tt2214863", - "tt0210567", - "tt10613550", - "tt8106568", - "tt5602204", - "tt0090840", - "tt0061591", - "tt0072245", - "tt0113104", - "tt6508770", - "tt0083542", - "tt1956594", - "tt0073903", - "tt3810760", - "tt1927067", - "tt2310316", - "tt6014904", - "tt2076895", - "tt10948366", - "tt10716748", - "tt0219592", - "tt6781982", - "tt5859882", - "tt9257484", - "tt0479937", - "tt0923683", - "tt0050681", - "tt2787302", - "tt0100014", - "tt1611944", - "tt0042052", - "tt0081793", - "tt0066970", - "tt0427968", - "tt4809590", - "tt0047263", - "tt0234105", - "tt1842448", - "tt2156536", - "tt3788052", - "tt7158904", - "tt10147936", - "tt10793634", - "tt7635550", - "tt10771556", - "tt0092796", - "tt0051887", - "tt7030194", - "tt8197058", - "tt5206770", - "tt10763618", - "tt6722976", - "tt0819129", - "tt0178935", - "tt9103028", - "tt1985064", - "tt0435670", - "tt6337910", - "tt4974254", - "tt5514008", - "tt7616148", - "tt2732286", - "tt0128364", - "tt7124092", - "tt6433106", - "tt0166960", - "tt7841536", - "tt11168100", - "tt8893402", - "tt0069989", - "tt0096171", - "tt0060737", - "tt0113967", - "tt9135272", - "tt7212878", - "tt7958644", - "tt6823080", - "tt0388183", - "tt2277840", - "tt6204148", - "tt0071772", - "tt8528334", - "tt0198494", - "tt1369845", - "tt0314412", - "tt5622660", - "tt0314786", - "tt0068639", - "tt2057449", - "tt0079807", - "tt3819718", - "tt1499069", - "tt0977648", - "tt2349677", - "tt2049586", - "tt0323298", - "tt0105698", - "tt0119326", - "tt6654082", - "tt6130118", - "tt2943352", - "tt7779590", - "tt0290296", - "tt1511532", - "tt5242100", - "tt7886614", - "tt3712822", - "tt0448100", - "tt6727598", - "tt0070731", - "tt0060165", - "tt2044040", - "tt0107889", - "tt0082010", - "tt1447482", - "tt0116313", - "tt8161914", - "tt0327036", - "tt10009796", - "tt6197400", - "tt0229553", - "tt4500214", - "tt0057063", - "tt0063625", - "tt0077942", - "tt4522922", - "tt0804551", - "tt0069080", - "tt0142201", - "tt3605266", - "tt1928320", - "tt0058371", - "tt1826550", - "tt3778086", - "tt0063811", - "tt0109206", - "tt2325761", - "tt8244578", - "tt3203290", - "tt0076149", - "tt5159024", - "tt2937390", - "tt0093133", - "tt3654796", - "tt0178431", - "tt2732932", - "tt5155780", - "tt0102910", - "tt0089129", - "tt0367623", - "tt0077289", - "tt0071554", - "tt0094002", - "tt2417912", - "tt1618434", - "tt0161860", - "tt0118040", - "tt0112792", - "tt5752356", - "tt0070358", - "tt5183500", - "tt0016394", - "tt1375669", - "tt0093650", - "tt0119588", - "tt0100974", - "tt0424359", - "tt0063740", - "tt3949644", - "tt0265739", - "tt0031208", - "tt0328049", - "tt1694580", - "tt0168780", - "tt8193978", - "tt0078867", - "tt10608842", - "tt10007978", - "tt0091658", - "tt2061756", - "tt11081044", - "tt0099040", - "tt0226872", - "tt0116516", - "tt9646240", - "tt6414392", - "tt6876788", - "tt10720384", - "tt0066002", - "tt0093800", - "tt0138545", - "tt1602572", - "tt2007360", - "tt0006736", - "tt0072010", - "tt0078087", - "tt8710502", - "tt0074510", - "tt7329656", - "tt0054649", - "tt0099719", - "tt0216767", - "tt9358196", - "tt3228830", - "tt0064243", - "tt0134664", - "tt0453383", - "tt0100827", - "tt0080881", - "tt7895904", - "tt0192111", - "tt0068186", - "tt6447022", - "tt0368447", - "tt0226875", - "tt0105880", - "tt0056289", - "tt6535880", - "tt2980086", - "tt0268397", - "tt0043972", - "tt0060748", - "tt0074798", - "tt0079486", - "tt0294594", - "tt1753597", - "tt3149612", - "tt0052555", - "tt0104839", - "tt6604174", - "tt0933064", - "tt0061931", - "tt0067647", - "tt5275838", - "tt0078288", - "tt0140340", - "tt1016301", - "tt0795352", - "tt0053899", - "tt5087564", - "tt0104014", - "tt0052104", - "tt6450428", - "tt0138078", - "tt3149536", - "tt5844286", - "tt7116548", - "tt7745068", - "tt0387954", - "tt2551516", - "tt0099637", - "tt0097336", - "tt7320560", - "tt0059379", - "tt0053145", - "tt0069124", - "tt0174931", - "tt3242640", - "tt0069073", - "tt0061173", - "tt0059244", - "tt0072827", - "tt7984766", - "tt2047910", - "tt1504489", - "tt7689910", - "tt5325030", - "tt6953526", - "tt3699150", - "tt11127056", - "tt0052655", - "tt3387520", - "tt0058753", - "tt0170054", - "tt9412098", - "tt2091476", - "tt9075778", - "tt7439748", - "tt9664078", - "tt11083568", - "tt0243575", - "tt1560169", - "tt6829222", - "tt3620846", - "tt0430634", - "tt0156647", - "tt0128278", - "tt8541394", - "tt3829884", - "tt4906148", - "tt8327962", - "tt0379306", - "tt3213622", - "tt1966575", - "tt0369441", - "tt7182240", - "tt0120613", - "tt4925028", - "tt0077716", - "tt6262764", - "tt0071514", - "tt0070068", - "tt0466875", - "tt0057905", - "tt0382189", - "tt9121906", - "tt4985906", - "tt3369134", - "tt4568312", - "tt0078856", - "tt6159268", - "tt0052950", - "tt0103678", - "tt0037146", - "tt0075005", - "tt5278464", - "tt6422192", - "tt1092633", - "tt1131727", - "tt3111516", - "tt2245084", - "tt1877647", - "tt0206534", - "tt6236738", - "tt0032232", - "tt7983348", - "tt0047642", - "tt1772263", - "tt1478839", - "tt0057718", - "tt0106262", - "tt1999167", - "tt0056355", - "tt1520392", - "tt4219130", - "tt0100156", - "tt0082045", - "tt0039391", - "tt0115535", - "tt0091396", - "tt0052829", - "tt0285503", - "tt5707754", - "tt0945355", - "tt3265462", - "tt0061549", - "tt0090753", - "tt0026164", - "tt0349205", - "tt3281920", - "tt0105888", - "tt5903088", - "tt0368774", - "tt8079880", - "tt8805702", - "tt5437148", - "tt6692264", - "tt0033804", - "tt6333084", - "tt0116462", - "tt0258255", - "tt0038203", - "tt0059794", - "tt1213574", - "tt0391891", - "tt5144236", - "tt0062980", - "tt0063102", - "tt4883512", - "tt0095262", - "tt0780622", - "tt0433416", - "tt0036290", - "tt6017364", - "tt0280720", - "tt0079965", - "tt0042411", - "tt0050895", - "tt3598178", - "tt2317796", - "tt0096808", - "tt0036232", - "tt7284952", - "tt6213810", - "tt5518168", - "tt8809652", - "tt0096343", - "tt0046534", - "tt6219314", - "tt3682686", - "tt6378942", - "tt7558302", - "tt0164393", - "tt3113836", - "tt5740868", - "tt7468616", - "tt0159508", - "tt0062804", - "tt0082914", - "tt0315824", - "tt7575642", - "tt0073014", - "tt5822564", - "tt8526872", - "tt0037219", - "tt2765192", - "tt9021184", - "tt2113788", - "tt3786198", - "tt0193166", - "tt0022886", - "tt6805862", - "tt3759912", - "tt0158736", - "tt0041308", - "tt0070242", - "tt0110516", - "tt0106753", - "tt0051145", - "tt2377700", - "tt0060420", - "tt1371630", - "tt7313348", - "tt2446990", - "tt1485134", - "tt7218812", - "tt1943873", - "tt0035799", - "tt3607812", - "tt1185836", - "tt1325619", - "tt0062762", - "tt7948818", - "tt0104510", - "tt8556014", - "tt5923026", - "tt5891122", - "tt0412904", - "tt0019130", - "tt1033501", - "tt0067169", - "tt0035376", - "tt5518022", - "tt6891976", - "tt7890408", - "tt4323370", - "tt5001130", - "tt3831344", - "tt0421239", - "tt6269942", - "tt2124162", - "tt9507276", - "tt2702724", - "tt7083846", - "tt8076344", - "tt0057360", - "tt3138664", - "tt5372528", - "tt10150694", - "tt2918988", - "tt5838300", - "tt0094103", - "tt5515814", - "tt8421156", - "tt6380398", - "tt6023560", - "tt4504188", - "tt0069818", - "tt7676816", - "tt8420442", - "tt0074562", - "tt4207112", - "tt0117723", - "tt1836776", - "tt0079239", - "tt0113851", - "tt1110048", - "tt3481232", - "tt3275362", - "tt0186202", - "tt5859140", - "tt0067531", - "tt6096254", - "tt6191876", - "tt0060155", - "tt0054453", - "tt0325537", - "tt0438488", - "tt9189566", - "tt6026700", - "tt0118540", - "tt1374989", - "tt0048304", - "tt6251666", - "tt0095812", - "tt0028346", - "tt0384833", - "tt0052389", - "tt0030418", - "tt0323033", - "tt0110759", - "tt0316824", - "tt6921112", - "tt7044010", - "tt0049026", - "tt0129982", - "tt5691856", - "tt3041032", - "tt11137384", - "tt6050668", - "tt7234202", - "tt5193790", - "tt6642662", - "tt8669212", - "tt5628902", - "tt2160125", - "tt8095862", - "tt7154284", - "tt5848986", - "tt0133089", - "tt3323940", - "tt3488668", - "tt6223974", - "tt7434402", - "tt0113010", - "tt0040795", - "tt2061563", - "tt6967162", - "tt4497846", - "tt0119896", - "tt0032676", - "tt1713991", - "tt0052529", - "tt0036182", - "tt0308152", - "tt7239076", - "tt6391732", - "tt0069729", - "tt0061738", - "tt2490148", - "tt2749282", - "tt4835636", - "tt0079828", - "tt0057473", - "tt4687410", - "tt0175047", - "tt4901304", - "tt0071671", - "tt0264150", - "tt7134296", - "tt8991264", - "tt4457716", - "tt1270296", - "tt3004544", - "tt3966544", - "tt1621641", - "tt0046008", - "tt4543902", - "tt0061795", - "tt0299977", - "tt1900908", - "tt2923256", - "tt0079146", - "tt0317219", - "tt0097527", - "tt0084472", - "tt8239806", - "tt0104449", - "tt1196121", - "tt0091223", - "tt0119675", - "tt1139797", - "tt0069341", - "tt0239641", - "tt0330634", - "tt3289956", - "tt0093220", - "tt0115963", - "tt0114608", - "tt2526422", - "tt10452224", - "tt0108539", - "tt0089885", - "tt10051586", - "tt0144814", - "tt0081334", - "tt0035689", - "tt1228987", - "tt0214388", - "tt0032138", - "tt0070518", - "tt0048634", - "tt1342122", - "tt0837122", - "tt3651804", - "tt0059518", - "tt2317088", - "tt2466320", - "tt0073496", - "tt0074777", - "tt2090629", - "tt0055458", - "tt0899270", - "tt3911554", - "tt0056964", - "tt1474897", - "tt2287170", - "tt0077254", - "tt0060814", - "tt0308208", - "tt5632272", - "tt0251075", - "tt0460812", - "tt0113438", - "tt0065537", - "tt0095638", - "tt1567279", - "tt0044466", - "tt0478802", - "tt0030857", - "tt0059358", - "tt2058620", - "tt1535615", - "tt1016226", - "tt1704721", - "tt0933874", - "tt4459806", - "tt0398286", - "tt2011265", - "tt1742327", - "tt2256826", - "tt0051476", - "tt0218619", - "tt0053957", - "tt3162856", - "tt0119109", - "tt0186253", - "tt1918908", - "tt0494716", - "tt2554274", - "tt0101516", - "tt0031580", - "tt0210070", - "tt4855748", - "tt0103873", - "tt1077368", - "tt0044207", - "tt0134067", - "tt0084787", - "tt0121164", - "tt1682180", - "tt4160840", - "tt1748113", - "tt2254790", - "tt8233874", - "tt2932536", - "tt3592750", - "tt1219834", - "tt2229095", - "tt3991302", - "tt2948356", - "tt5675632", - "tt1579396", - "tt0453729", - "tt0366777", - "tt3894660", - "tt2333998", - "tt1778940", - "tt3302654", - "tt3969208", - "tt0047930", - "tt0114825", - "tt2338027", - "tt2647078", - "tt0460883", - "tt3004572", - "tt1626201", - "tt4474828", - "tt0073801", - "tt0229260", - "tt3899706", - "tt2574666", - "tt5636234", - "tt1419346", - "tt5129156", - "tt3521148", - "tt3589016", - "tt5887630", - "tt3003980", - "tt1038971", - "tt1022571", - "tt1478877", - "tt5059406", - "tt4513074", - "tt0080908", - "tt3014556", - "tt5577742", - "tt3578894", - "tt1303233", - "tt3730162", - "tt0480249", - "tt3466248", - "tt6301784", - "tt0063522", - "tt3521164", - "tt0089175", - "tt2316433", - "tt0087262", - "tt3620452", - "tt1132626", - "tt4263482", - "tt1188729", - "tt5052448", - "tt1477076", - "tt0080749", - "tt2321549", - "tt0890870", - "tt0387564", - "tt0432348", - "tt8236214", - "tt1233227", - "tt5630752", - "tt5360232", - "tt0489270", - "tt10327842", - "tt11052346", - "tt3348730", - "tt0780521", - "tt4712086", - "tt0077773", - "tt0202936", - "tt0102488", - "tt0060440", - "tt0117161", - "tt2472102", - "tt0131013", - "tt1596769", - "tt1645116", - "tt0075944", - "tt2175581", - "tt3160336", - "tt0112342", - "tt0067296", - "tt0070187", - "tt1856053", - "tt0079148", - "tt2192580", - "tt0068281", - "tt0058113", - "tt5670836", - "tt0363587", - "tt0115487", - "tt10326928", - "tt0031867", - "tt0388141", - "tt3606752", - "tt0335185", - "tt0078294", - "tt2066922", - "tt1714205", - "tt2343707", - "tt5334108", - "tt0071115", - "tt5643768", - "tt0119365", - "tt0039357", - "tt1599351", - "tt5779686", - "tt9666394", - "tt0060880", - "tt0356150", - "tt0074285", - "tt1961307", - "tt9848404", - "tt2085741", - "tt3407562", - "tt0048387", - "tt7935392", - "tt0067367", - "tt0167456", - "tt4136008", - "tt0195714", - "tt8326250", - "tt0087799", - "tt1939659", - "tt1909270", - "tt6256978", - "tt5580252", - "tt0414982", - "tt1919184", - "tt0119081", - "tt0790781", - "tt0160127", - "tt0309593", - "tt1772422", - "tt1144884", - "tt0144084", - "tt6644200", - "tt1622979", - "tt0119731", - "tt2094760", - "tt5176648", - "tt3828090", - "tt3915560", - "tt3663890", - "tt0918531", - "tt8727992", - "tt1887746", - "tt5143270", - "tt6436666", - "tt0110099", - "tt0308506", - "tt1038693", - "tt5206170", - "tt1124048", - "tt4662062", - "tt1340418", - "tt2110388", - "tt0250720", - "tt1871420", - "tt2049554", - "tt0413893", - "tt6889806", - "tt0057212", - "tt3443808", - "tt1188474", - "tt0198371", - "tt3302498", - "tt6545220", - "tt0468795", - "tt0088449", - "tt0396445", - "tt4932388", - "tt0055502", - "tt0063822", - "tt0142892", - "tt0287539", - "tt10378798", - "tt0439226", - "tt5020372", - "tt1337671", - "tt0117276", - "tt5545862", - "tt0127349", - "tt8098480", - "tt1991191", - "tt0790804", - "tt0366174", - "tt9048318", - "tt6437228", - "tt3852042", - "tt0119942", - "tt0166792", - "tt0465142", - "tt5875632", - "tt5860852", - "tt5011604", - "tt8806104", - "tt2693610", - "tt4649856", - "tt0120716", - "tt1991180", - "tt0768212", - "tt3910148", - "tt0110066", - "tt2166500", - "tt0202641", - "tt0113089", - "tt1919174", - "tt0216930", - "tt1585660", - "tt1425933", - "tt0139615", - "tt2170499", - "tt7642542", - "tt0116130", - "tt0125454", - "tt1935742", - "tt5333842", - "tt0431021", - "tt0016039", - "tt4844148", - "tt1855325", - "tt2339741", - "tt5280664", - "tt0377109", - "tt0095963", - "tt1745784", - "tt0498381", - "tt1596365", - "tt1220634", - "tt1259521", - "tt0245674", - "tt0815245", - "tt0298130", - "tt0230600", - "tt0404032", - "tt0432021", - "tt0464141", - "tt0318627", - "tt0938330", - "tt2752772", - "tt0120804", - "tt4361050", - "tt2592614", - "tt0092076", - "tt2388715", - "tt4602066", - "tt2023587", - "tt1922777", - "tt1204977", - "tt0099994", - "tt0324216", - "tt0072271", - "tt1572315", - "tt0185937", - "tt2620590", - "tt0420294", - "tt0110978", - "tt0045888", - "tt11131032", - "tt0348836", - "tt2300975", - "tt1127180", - "tt0397065", - "tt7589524", - "tt0110148", - "tt0288477", - "tt0108026", - "tt3345528", - "tt0898098", - "tt3622110", - "tt0806203", - "tt3583186", - "tt6265828", - "tt0795351", - "tt0382628", - "tt4786282", - "tt1540011", - "tt11057912", - "tt4160708", - "tt0119152", - "tt0450385", - "tt8510350", - "tt8685520", - "tt1797498", - "tt2379713", - "tt8883524", - "tt3709718", - "tt5264178", - "tt0997093", - "tt0483826", - "tt1854564", - "tt0985056", - "tt0439115", - "tt4206516", - "tt2275543", - "tt1515179", - "tt3203462", - "tt0118073", - "tt2229301", - "tt0134618", - "tt1183672", - "tt1077252", - "tt4380580", - "tt1757816", - "tt0119848", - "tt4399590", - "tt1748260", - "tt6398054", - "tt10719984", - "tt6645236", - "tt0120906", - "tt2464508", - "tt2570224", - "tt0115907", - "tt1103984", - "tt2164770", - "tt10628006", - "tt0295254", - "tt2170369", - "tt0165336", - "tt3792884", - "tt2304870", - "tt3812722", - "tt0436331", - "tt0044486", - "tt0433405", - "tt3823672", - "tt0079894", - "tt5589212", - "tt7262346", - "tt6954136", - "tt0095889", - "tt10901588", - "tt8282042", - "tt0997184", - "tt0060461", - "tt7362036", - "tt1029360", - "tt0076009", - "tt0091778", - "tt0449086", - "tt0070047", - "tt0101744", - "tt0204313", - "tt0099528", - "tt0084516", - "tt0099720", - "tt2088974", - "tt0100776", - "tt0075922", - "tt0081421", - "tt0099818", - "tt0110832", - "tt1753773", - "tt0060944", - "tt0086199", - "tt0117876", - "tt11127054", - "tt0110530", - "tt0363589", - "tt0057311", - "tt4042994", - "tt0084133", - "tt2569772", - "tt1625350", - "tt1382722", - "tt3526098", - "tt1604115", - "tt0153225", - "tt1774400", - "tt6158692", - "tt1901033", - "tt2265567", - "tt1043877", - "tt2741452", - "tt4771568", - "tt0034272", - "tt1105512", - "tt0089274", - "tt2447908", - "tt1731755", - "tt0047885", - "tt0064353", - "tt1715827", - "tt2520516", - "tt0086137", - "tt0085211", - "tt0082377", - "tt0120135", - "tt0454841", - "tt0466909", - "tt0800069", - "tt0100258", - "tt0077681", - "tt1087431", - "tt7594384", - "tt0077394", - "tt10462646", - "tt1074638", - "tt0091680", - "tt0077402", - "tt4287350", - "tt0063350", - "tt0337592", - "tt0088993", - "tt0489018", - "tt0146675", - "tt0138510", - "tt0116365", - "tt1262416", - "tt0119215", - "tt0134084", - "tt0167404", - "tt1288558", - "tt0117571", - "tt0051588", - "tt0083907", - "tt0092991", - "tt0069938", - "tt0097388", - "tt0251736", - "tt7904606", - "tt0083972", - "tt0061847", - "tt0120082", - "tt5203824", - "tt0211443", - "tt0830515", - "tt0095179", - "tt0082418", - "tt0087298", - "tt0089173", - "tt0758746", - "tt0080761", - "tt0070351", - "tt0091080", - "tt0107254", - "tt10927576", - "tt0329101", - "tt3302078", - "tt4693358", - "tt0082411", - "tt0101917", - "tt0112819", - "tt0115906", - "tt2325014", - "tt0028661", - "tt0087800", - "tt0061407", - "tt0093629", - "tt0103003", - "tt0111686", - "tt0097981", - "tt0089686", - "tt0095742", - "tt1179056", - "tt0381061", - "tt3951732", - "tt0118912", - "tt3021360", - "tt0078517", - "tt0120764", - "tt0105327", - "tt2295712", - "tt3256226", - "tt0032130", - "tt1295085", - "tt0041694", - "tt0116731", - "tt0033766", - "tt0080431", - "tt2506388", - "tt6900644", - "tt5305246", - "tt1278469", - "tt0064782", - "tt0278413", - "tt1934335", - "tt5836576", - "tt1488164", - "tt5068162", - "tt5948944", - "tt0077118", - "tt8726442", - "tt7026230", - "tt10026172", - "tt6899800", - "tt8332666", - "tt6067832", - "tt5929750", - "tt1196339", - "tt6388082", - "tt7455754", - "tt0862856", - "tt2866708", - "tt0049103", - "tt1199557", - "tt0118665", - "tt1966385", - "tt0116240", - "tt0035616", - "tt0065528", - "tt0071973", - "tt0071771", - "tt3859052", - "tt3903416", - "tt0384537", - "tt1270781", - "tt0243931", - "tt0031295", - "tt4335520", - "tt3189862", - "tt0101698", - "tt9151704", - "tt5831936", - "tt0102789", - "tt0127722", - "tt0023464", - "tt2084093", - "tt0028141", - "tt0056062", - "tt1220217", - "tt2273004", - "tt0038622", - "tt0112571", - "tt0886531", - "tt5818782", - "tt1591095", - "tt0162661", - "tt3065204", - "tt7044076", - "tt3195644", - "tt1289401", - "tt0246578", - "tt0119695", - "tt5726086", - "tt1618442", - "tt0385880", - "tt0093560", - "tt0094721", - "tt1457767", - "tt3322940", - "tt5140878", - "tt0087332", - "tt0097428", - "tt2226417", - "tt0112642", - "tt1060253", - "tt6316816", - "tt1127682", - "tt8988748", - "tt1182942", - "tt0182983", - "tt2503990", - "tt3236962", - "tt5865966", - "tt4461390", - "tt7554632", - "tt5913798", - "tt6246534", - "tt10915286", - "tt5865326", - "tt7262990", - "tt1979376", - "tt5294518", - "tt8439204", - "tt0191074", - "tt1787767", - "tt1869416", - "tt4153828", - "tt8663446", - "tt2088871", - "tt1925446", - "tt0116752", - "tt0087020", - "tt4080598", - "tt6733446", - "tt2343475", - "tt0117338", - "tt2131541", - "tt0093139", - "tt0082367", - "tt2281065", - "tt0458242", - "tt1607577", - "tt2072145", - "tt0068776", - "tt5482752", - "tt7951038", - "tt2493466", - "tt2112143", - "tt0098532", - "tt1836210", - "tt1190708", - "tt0091151", - "tt0472230", - "tt3070506", - "tt0325033", - "tt0080996", - "tt9251718", - "tt2325909", - "tt0158692", - "tt9184066", - "tt2192900", - "tt0070078", - "tt1629377", - "tt2724304", - "tt0078437", - "tt2330933", - "tt0078078", - "tt0245562", - "tt1595354", - "tt0071229", - "tt2956666", - "tt0311519", - "tt0159485", - "tt0449073", - "tt3963812", - "tt0415345", - "tt3121122", - "tt5104330", - "tt8965432", - "tt0112681", - "tt1874757", - "tt1049406", - "tt0094675", - "tt0048527", - "tt2506632", - "tt5987374", - "tt3544734", - "tt7214964", - "tt0071762", - "tt7209510", - "tt0177215", - "tt0022905", - "tt0089114", - "tt2327397", - "tt0310933", - "tt4400688", - "tt0119256", - "tt0996979", - "tt0027407", - "tt2346046", - "tt5051150", - "tt5314638", - "tt0441889", - "tt5757520", - "tt1663631", - "tt0023349", - "tt2370686", - "tt7855072", - "tt0042376", - "tt5541140", - "tt6540084", - "tt6140294", - "tt0103247", - "tt5512756", - "tt0077651", - "tt0118892", - "tt5968156", - "tt0046806", - "tt0211181", - "tt1852154", - "tt6848094", - "tt5280018", - "tt0061610", - "tt0048975", - "tt0113253", - "tt0095271", - "tt0220506", - "tt1502407", - "tt1220715", - "tt0120694", - "tt0373883", - "tt0097474", - "tt1311067", - "tt0082495", - "tt6228640", - "tt0085636", - "tt0039312", - "tt4084954", - "tt0044509", - "tt1235548", - "tt1614950", - "tt5797828", - "tt1853533", - "tt1362141", - "tt4158876", - "tt7670212", - "tt1736046", - "tt2232404", - "tt0246592", - "tt2210855", - "tt5901672", - "tt3955230", - "tt1918727", - "tt0114469", - "tt0042677", - "tt7456544", - "tt2624662", - "tt1950192", - "tt4304382", - "tt4057956", - "tt1808339", - "tt0086873", - "tt0035959", - "tt3591836", - "tt7006938", - "tt8578738", - "tt4096810", - "tt0055361", - "tt0117119", - "tt3205630", - "tt0094137", - "tt3279870", - "tt3770272", - "tt2370528", - "tt7645780", - "tt0865907", - "tt0119360", - "tt4779072", - "tt6217306", - "tt0146838", - "tt0035608", - "tt0327437", - "tt0057093", - "tt0119778", - "tt2901582", - "tt2458412", - "tt8752498", - "tt4465572", - "tt10188156", - "tt0029604", - "tt0118147", - "tt0086379", - "tt10548944", - "tt9581518", - "tt3894094", - "tt5080804", - "tt8483272", - "tt0118570", - "tt8398892", - "tt10915930", - "tt9358192", - "tt2088957", - "tt10987544", - "tt1560779", - "tt7657364", - "tt0103016", - "tt0770751", - "tt6302006", - "tt10240438", - "tt2124190", - "tt7476524", - "tt0245120", - "tt2789014", - "tt0057435", - "tt5358014", - "tt9154936", - "tt0107079", - "tt0046331", - "tt0063256", - "tt6043142", - "tt4381382", - "tt0256103", - "tt0077360", - "tt7319822", - "tt10767720", - "tt0036692", - "tt0050500", - "tt8850036", - "tt1956618", - "tt5109302", - "tt0082894", - "tt0026338", - "tt7339248", - "tt7105440", - "tt0032467", - "tt1733729", - "tt3741316", - "tt2102499", - "tt3561818", - "tt0327665", - "tt2273024", - "tt2033981", - "tt0100449", - "tt0095362", - "tt1579956", - "tt2057499", - "tt8484370", - "tt10444096", - "tt4192552", - "tt0035746", - "tt0800325", - "tt5988012", - "tt0051816", - "tt3748354", - "tt6938602", - "tt0026942", - "tt3437996", - "tt1327196", - "tt5582306", - "tt0061433", - "tt0102592", - "tt8697266", - "tt1014807", - "tt1780862", - "tt0373024", - "tt0048603", - "tt2716062", - "tt4919766", - "tt0469111", - "tt0119892", - "tt0102598", - "tt3175350", - "tt0061385", - "tt3692768", - "tt5053156", - "tt0089393", - "tt0022626", - "tt0086250", - "tt0034449", - "tt6388074", - "tt5814530", - "tt10384806", - "tt0032145", - "tt4572116", - "tt0973790", - "tt6263828", - "tt0026421", - "tt0020081", - "tt2042712", - "tt0330602", - "tt1827415", - "tt5541240", - "tt5204636", - "tt2120025", - "tt5806798", - "tt10038028", - "tt6013186", - "tt0104009", - "tt5648966", - "tt0031477", - "tt4701702", - "tt2691040", - "tt4624724", - "tt10843676", - "tt4253360", - "tt1625345", - "tt1935139", - "tt0167190", - "tt0384488", - "tt0066413", - "tt3387560", - "tt1845796", - "tt5209072", - "tt2262157", - "tt0037966", - "tt0372311", - "tt1461395", - "tt2360430", - "tt0038780", - "tt0432373", - "tt0020642", - "tt0109297", - "tt3380800", - "tt2505294", - "tt3995504", - "tt7505148", - "tt0483578", - "tt3655414", - "tt0938341", - "tt1604900", - "tt1434423", - "tt4786802", - "tt5684550", - "tt0020641", - "tt1998393", - "tt0042488", - "tt3615204", - "tt4378066", - "tt0039111", - "tt2313306", - "tt4643670", - "tt0984057", - "tt0286261", - "tt1641398", - "tt0054016", - "tt2817548", - "tt5979556", - "tt5278806", - "tt1552192", - "tt5037296", - "tt0241760", - "tt0104181", - "tt0061380", - "tt0438204", - "tt0039337", - "tt0775529", - "tt2179191", - "tt0475936", - "tt2327507", - "tt0067458", - "tt0024314", - "tt3911850", - "tt3651512", - "tt3156000", - "tt0062706", - "tt0045682", - "tt3472928", - "tt5238824", - "tt3885442", - "tt0039783", - "tt0242888", - "tt2016901", - "tt10958282", - "tt1419318", - "tt3197176", - "tt4332232", - "tt2357770", - "tt0172627", - "tt0096280", - "tt5836262", - "tt0162360", - "tt7476416", - "tt2870306", - "tt0282698", - "tt0388419", - "tt0096223", - "tt5541848", - "tt6438096", - "tt1127228", - "tt0111653", - "tt0160216", - "tt0049902", - "tt2690572", - "tt1918911", - "tt8059382", - "tt0049007", - "tt2326087", - "tt2974726", - "tt0107819", - "tt1916766", - "tt3731792", - "tt0094824", - "tt4219652", - "tt0040919", - "tt0838164", - "tt1470859", - "tt0029010", - "tt0106639", - "tt0066542", - "tt0023196", - "tt2428170", - "tt3783746", - "tt0055811", - "tt2025586", - "tt0046085", - "tt0115710", - "tt0051849", - "tt2342421", - "tt0101757", - "tt10208198", - "tt4042818", - "tt1597070", - "tt4985564", - "tt0104756", - "tt0104187", - "tt7068896", - "tt9064764", - "tt0092268", - "tt5278596", - "tt4872998", - "tt0088286", - "tt2014346", - "tt7164714", - "tt0026205", - "tt4523928", - "tt0388500", - "tt2943946", - "tt0110442", - "tt0043465", - "tt4008566", - "tt8134742", - "tt10579992", - "tt1673376", - "tt5213870", - "tt2892340", - "tt8364368", - "tt7945420", - "tt0048401", - "tt3589172", - "tt7308310", - "tt4463894", - "tt0071212", - "tt0099002", - "tt0018524", - "tt3140958", - "tt0026983", - "tt0208502", - "tt0326769", - "tt3901260", - "tt1406161", - "tt0356176", - "tt6958760", - "tt7229730", - "tt2216748", - "tt0027367", - "tt0051844", - "tt6214928", - "tt0165831", - "tt0426615", - "tt3489996", - "tt2431074", - "tt0055524", - "tt0017584", - "tt0028683", - "tt7399140", - "tt4995858", - "tt0044431", - "tt1734550", - "tt6508408", - "tt0075887", - "tt3108154", - "tt0038104", - "tt2447318", - "tt0091295", - "tt2234315", - "tt7188058", - "tt1964887", - "tt2870350", - "tt9652888", - "tt3180912", - "tt0441782", - "tt1877688", - "tt0088107", - "tt4943998", - "tt0105682", - "tt0200120", - "tt0092260", - "tt0122800", - "tt6448406", - "tt7827658", - "tt0074792", - "tt0085218", - "tt3071192", - "tt2472668", - "tt7981480", - "tt7205942", - "tt7664228", - "tt0085635", - "tt0102545", - "tt5451244", - "tt1797547", - "tt9182284", - "tt0080040", - "tt5536398", - "tt6447952", - "tt7180392", - "tt0052169", - "tt7734218", - "tt0442286", - "tt1572769", - "tt4777004", - "tt5244762", - "tt4820284", - "tt0074419", - "tt0126301", - "tt0212830", - "tt3721070", - "tt0081648", - "tt0076767", - "tt0119223", - "tt0074836", - "tt0045316", - "tt6047298", - "tt2004262", - "tt8739752", - "tt4558830", - "tt9135944", - "tt6014434", - "tt8055324", - "tt8110640", - "tt5061570", - "tt4249710", - "tt0215516", - "tt4042834", - "tt0119783", - "tt0053902", - "tt8657548", - "tt1291547", - "tt0048752", - "tt10378980", - "tt7453418", - "tt0992993", - "tt5739478", - "tt0954541", - "tt5478698", - "tt0049778", - "tt0068245", - "tt0046931", - "tt6627134", - "tt0098471", - "tt0118798", - "tt0167423", - "tt0054652", - "tt8521500", - "tt0023194", - "tt0081283", - "tt2033965", - "tt1704161", - "tt0032612", - "tt5306084", - "tt0211941", - "tt3314958", - "tt8174450", - "tt1935828", - "tt4309834", - "tt7476856", - "tt6597488", - "tt10329696", - "tt9312100", - "tt6963760", - "tt7296606", - "tt10617150", - "tt07455754", - "tt8168966", - "tt3706960", - "tt1683524", - "tt7083208", - "tt0083951", - "tt3733138", - "tt3262534", - "tt7689532", - "tt2158695", - "tt6096414", - "tt7304196", - "tt1413527", - "tt0280760", - "tt1199503", - "tt0083694", - "tt0210075", - "tt0105187", - "tt4089412", - "tt0126917", - "tt0413879", - "tt2510820", - "tt0050560", - "tt0097781", - "tt7790040", - "tt7251048", - "tt0028772", - "tt0465436", - "tt7021088", - "tt0033383", - "tt4200326", - "tt5273284", - "tt7224520", - "tt0036098", - "tt0075845", - "tt4004608", - "tt0198021", - "tt10269016", - "tt2147822", - "tt0090966", - "tt6356228", - "tt0018773", - "tt0047944", - "tt0068658", - "tt3826242", - "tt0043299", - "tt3592340", - "tt0337711", - "tt0042767", - "tt0091129", - "tt5149490", - "tt0234354", - "tt0109067", - "tt8254080", - "tt0289213", - "tt8072488", - "tt0199000", - "tt0059512", - "tt4097116", - "tt7857076", - "tt6275372", - "tt0889671", - "tt4400784", - "tt0094924", - "tt0025878", - "tt0061089", - "tt2520394", - "tt0026667", - "tt5612564", - "tt8738176", - "tt11006464", - "tt0052191", - "tt3394592", - "tt0471561", - "tt0040095", - "tt0037343", - "tt0203230", - "tt9186684", - "tt0074740", - "tt2309260", - "tt0038165", - "tt0086186", - "tt0090945", - "tt1261954", - "tt0060414", - "tt0046269", - "tt0054809", - "tt1268989", - "tt0395972", - "tt9083124", - "tt2891174", - "tt0488380", - "tt5154678", - "tt3662308", - "tt3992752", - "tt3500822", - "tt3980372", - "tt4239548", - "tt5224012", - "tt1640642", - "tt2338356", - "tt1127884", - "tt3204632", - "tt0038264", - "tt5641542", - "tt0045328", - "tt2182057", - "tt10927122", - "tt3450112", - "tt4703660", - "tt3476724", - "tt3561204", - "tt3755706", - "tt0071164", - "tt0914819", - "tt1155508", - "tt6903636", - "tt0081404", - "tt6212934", - "tt2529132", - "tt5175636", - "tt6189676", - "tt1763236", - "tt8503162", - "tt10409666", - "tt2090669", - "tt0066256", - "tt8918746", - "tt0185456", - "tt8998220", - "tt3796388", - "tt5001436", - "tt7916276", - "tt5827496", - "tt4698584", - "tt5225488", - "tt0090095", - "tt0258960", - "tt4687464", - "tt0047203", - "tt0098708", - "tt5714322", - "tt3106868", - "tt6063090", - "tt6320538", - "tt5352846", - "tt9242798", - "tt5013688", - "tt1921149", - "tt0052194", - "tt0065611", - "tt7721542", - "tt0047050", - "tt0038250", - "tt3628334", - "tt4181052", - "tt5233410", - "tt0049815", - "tt2309788", - "tt1308138", - "tt3445306", - "tt0062425", - "tt0120678", - "tt0034485", - "tt0057090", - "tt4033926", - "tt4785662", - "tt1562392", - "tt1530923", - "tt3263306", - "tt1858725", - "tt2719448", - "tt0037366", - "tt0294806", - "tt0420757", - "tt4558042", - "tt0048767", - "tt9737136", - "tt6720618", - "tt0027214", - "tt9020130", - "tt5851904", - "tt1523406", - "tt9737182", - "tt6815320", - "tt2321405", - "tt0436216", - "tt0995739", - "tt9737102", - "tt1700810", - "tt2268732", - "tt0337960", - "tt8609368", - "tt0222713", - "tt2014338", - "tt0089679", - "tt8609374", - "tt3833520", - "tt0023753", - "tt6487050", - "tt0042513", - "tt0071384", - "tt0040869", - "tt1356763", - "tt1929276", - "tt5329376", - "tt0059927", - "tt0062673", - "tt4485246", - "tt4459890", - "tt0808506", - "tt6217368", - "tt0256739", - "tt7643622", - "tt3865850", - "tt9351980", - "tt0095326", - "tt4176776", - "tt10613572", - "tt3206616", - "tt6237512", - "tt0048119", - "tt0053740", - "tt0098600", - "tt0047580", - "tt0025710", - "tt0101272", - "tt2200376", - "tt3379456", - "tt0099364", - "tt7967672", - "tt0078199", - "tt1383251", - "tt0106220", - "tt0074687", - "tt0038574", - "tt0068562", - "tt10467292", - "tt0135706", - "tt6803390", - "tt8639316", - "tt0028669", - "tt3358654", - "tt4625320", - "tt2365416", - "tt2400359", - "tt0025094", - "tt0997264", - "tt0044040", - "tt5797798", - "tt0491044", - "tt1859573", - "tt2008633", - "tt0118113", - "tt0090856", - "tt0026685", - "tt1621819", - "tt0144640", - "tt1516586", - "tt2298304", - "tt2630300", - "tt4966020", - "tt3297586", - "tt0923752", - "tt2396671", - "tt4679136", - "tt0067321", - "tt4687108", - "tt2091398", - "tt2515472", - "tt0031067", - "tt2064713", - "tt8063826", - "tt1837683", - "tt0303353", - "tt6363646", - "tt4385944", - "tt2925664", - "tt2785390", - "tt9097270", - "tt0297181", - "tt6517902", - "tt7169514", - "tt9724076", - "tt8638524", - "tt1682940", - "tt1272051", - "tt1194624", - "tt6201302", - "tt8329290", - "tt0188503", - "tt0107472", - "tt0762114", - "tt2125666", - "tt1438461", - "tt1336619", - "tt7339938", - "tt4300480", - "tt0103994", - "tt1020938", - "tt0081182", - "tt0053374", - "tt1217243", - "tt0091260", - "tt0015768", - "tt6529772", - "tt3163844", - "tt0455857", - "tt2186715", - "tt0087164", - "tt2106403", - "tt1229381", - "tt0050201", - "tt4276206", - "tt0065603", - "tt0057985", - "tt0058007", - "tt0050957", - "tt0059403", - "tt8879946", - "tt0152037", - "tt0457430", - "tt0952682", - "tt0077936", - "tt0298845", - "tt0105063", - "tt0113672", - "tt2093995", - "tt2368182", - "tt3313324", - "tt0447166", - "tt4941032", - "tt6887540", - "tt3906002", - "tt0049619", - "tt0029047", - "tt6801218", - "tt0244970", - "tt0120478", - "tt2944424", - "tt0934706", - "tt0081505", - "tt2934218", - "tt0064240", - "tt8174646", - "tt6884380", - "tt7735930", - "tt2201772", - "tt3878978", - "tt2094883", - "tt7610858", - "tt1534351", - "tt3429774", - "tt1806954", - "tt6281148", - "tt6988208", - "tt8947352", - "tt7107018", - "tt0251654", - "tt1034032", - "tt0089126", - "tt5495294", - "tt0153888", - "tt0102564", - "tt0153815", - "tt0039169", - "tt2649370", - "tt2459160", - "tt6969980", - "tt5069564", - "tt5889372", - "tt0152202", - "tt8553606", - "tt3452710", - "tt6736198", - "tt9826668", - "tt0076649", - "tt0048665", - "tt0338188", - "tt3584496", - "tt9086910", - "tt8785034", - "tt7655142", - "tt0417658", - "tt3777102", - "tt7491968", - "tt2233406", - "tt0415380", - "tt0097530", - "tt4771056", - "tt2476436", - "tt0092671", - "tt0165773", - "tt1212456", - "tt2334593", - "tt0293176", - "tt1071909", - "tt1916719", - "tt2445812", - "tt0790721", - "tt2587366", - "tt2625790", - "tt10687642", - "tt0119951", - "tt0401420", - "tt1156398", - "tt1104684", - "tt0219952", - "tt0032221", - "tt0110365", - "tt0036891", - "tt2455402", - "tt0111739", - "tt7392060", - "tt3388060", - "tt1532958", - "tt0040823", - "tt0042742", - "tt0478970", - "tt0047086", - "tt7438912", - "tt6613952", - "tt3923116", - "tt9593792", - "tt8837018", - "tt0040679", - "tt3129484", - "tt7127700", - "tt0163745", - "tt3448214", - "tt4061760", - "tt0021040", - "tt4052768", - "tt5113868", - "tt8665806", - "tt6393026", - "tt6426028", - "tt0233600", - "tt1521877", - "tt10952752", - "tt1090665", - "tt6332628", - "tt3574822", - "tt1262863", - "tt8757960", - "tt6869362", - "tt6065538", - "tt0097116", - "tt7254768", - "tt0441796", - "tt10495912", - "tt6519762", - "tt8456696", - "tt9469842", - "tt3262168", - "tt10049848", - "tt2925642", - "tt7434324", - "tt8176462", - "tt7620218", - "tt6466058", - "tt1579236", - "tt6064520", - "tt8236848", - "tt0118002", - "tt0042669", - "tt3341448", - "tt8031130", - "tt6112524", - "tt6863222", - "tt3083932", - "tt0076213", - "tt2803424", - "tt0033314", - "tt1801026", - "tt0057940", - "tt2368412", - "tt0250798", - "tt0116823", - "tt0090830", - "tt2719024", - "tt3773386", - "tt0103924", - "tt7094352", - "tt0042893", - "tt1539489", - "tt5016028", - "tt2931920", - "tt9204408", - "tt0114759", - "tt0047985", - "tt2609776", - "tt4512444", - "tt5886420", - "tt7582508", - "tt5539054", - "tt1307442", - "tt5592796", - "tt0041571", - "tt8328716", - "tt2550300", - "tt0076804", - "tt0319901", - "tt5307018", - "tt10847330", - "tt4064912", - "tt0280477", - "tt0048250", - "tt0119734", - "tt0041700", - "tt2912120", - "tt0045557", - "tt0033094", - "tt0042783", - "tt0035441", - "tt0032477", - "tt0384533", - "tt1740002", - "tt0465676", - "tt9465588", - "tt6320628", - "tt6268222", - "tt1980942", - "tt4844348", - "tt2265080", - "tt1990218", - "tt0111835", - "tt0814077", - "tt0074270", - "tt0036872", - "tt3635300", - "tt0296845", - "tt2236358", - "tt0087129", - "tt0092559", - "tt0117781", - "tt2279786", - "tt0188453", - "tt3562966", - "tt2171902", - "tt0070248", - "tt0107131", - "tt8106570", - "tt4841610", - "tt3028418", - "tt3369248", - "tt0104743", - "tt6866006", - "tt2950052", - "tt4073952", - "tt0383694", - "tt2043893", - "tt6338476", - "tt0020827", - "tt0036629", - "tt0380736", - "tt0091877", - "tt4189442", - "tt0211915", - "tt0065134", - "tt0106968", - "tt0120448", - "tt0035209", - "tt0084628", - "tt0103905", - "tt0075177", - "tt0037017", - "tt0110631", - "tt2815072", - "tt0058888", - "tt0054310", - "tt0283509", - "tt0056119", - "tt0116334", - "tt0037824", - "tt0056172", - "tt0039822", - "tt0180748", - "tt0197569", - "tt0049259", - "tt0051790", - "tt0095993", - "tt1403047", - "tt0071315", - "tt0042327", - "tt0140888", - "tt0303325", - "tt2202607", - "tt6264182", - "tt1032846", - "tt1202511", - "tt0473514", - "tt0465670", - "tt5939924", - "tt6037626", - "tt9353586", - "tt0483726", - "tt6895284", - "tt0034778", - "tt2913916", - "tt1984244", - "tt8725958", - "tt0026121", - "tt0040082", - "tt3223480", - "tt4331400", - "tt0065486", - "tt0388838", - "tt2322441", - "tt8394314", - "tt2033239", - "tt1354572", - "tt1345904", - "tt0343663", - "tt0049474", - "tt2216704", - "tt6987652", - "tt4265962", - "tt0091991", - "tt4847454", - "tt0106748", - "tt0079688", - "tt0290747", - "tt1634070", - "tt0094716", - "tt1029432", - "tt6743942", - "tt3038414", - "tt0099615", - "tt2514128", - "tt2745684", - "tt0111667", - "tt0040577", - "tt0078790", - "tt0113612", - "tt0772157", - "tt6759380", - "tt0072403", - "tt0074174", - "tt0462359", - "tt0022353", - "tt3733286", - "tt3899516", - "tt2108629", - "tt0063748", - "tt5669410", - "tt0098221", - "tt0045943", - "tt0371835", - "tt4383196", - "tt6293032", - "tt0055019", - "tt3221910", - "tt2238660", - "tt0449471", - "tt3094236", - "tt0047603", - "tt0120107", - "tt1198199", - "tt0053644", - "tt0260495", - "tt0079376", - "tt0031143", - "tt6019394", - "tt10622136", - "tt1211837", - "tt0024381", - "tt1051213", - "tt4142394", - "tt0052722", - "tt0119832", - "tt4970632", - "tt0068313", - "tt0029942", - "tt0050166", - "tt0113755", - "tt3848036", - "tt5238904", - "tt5895028", - "tt1828163", - "tt0065206", - "tt0047349", - "tt0113936", - "tt0060728", - "tt6126196", - "tt0460793", - "tt2049633", - "tt5710514", - "tt0026174", - "tt0094155", - "tt1666823", - "tt1574600", - "tt4174526", - "tt0199013", - "tt3294206", - "tt3195826", - "tt0022268", - "tt4194392", - "tt0097790", - "tt6917210", - "tt0060980", - "tt0065225", - "tt2951834", - "tt0065775", - "tt2015381", - "tt6649108", - "tt6523440", - "tt8350360", - "tt1212449", - "tt4452210", - "tt0055993", - "tt0119870", - "tt7671414", - "tt5699928", - "tt5196516", - "tt7078658", - "tt6578572", - "tt10720210", - "tt2294629", - "tt10682000", - "tt6023242", - "tt8858420", - "tt5061564", - "tt0060816", - "tt6887624", - "tt0011565", - "tt0469045", - "tt0165473", - "tt0030035", - "tt6462506", - "tt6275296", - "tt0067698", - "tt0095878", - "tt0095853", - "tt0032610", - "tt0312932", - "tt0100605", - "tt0067770", - "tt2125500", - "tt0080931", - "tt3591946", - "tt0085871", - "tt3892618", - "tt0093056", - "tt0084651", - "tt0048640", - "tt0404802", - "tt0235751", - "tt0097982", - "tt9526152", - "tt0395584", - "tt6964076", - "tt0091051", - "tt6151222", - "tt5954556", - "tt5884784", - "tt0070509", - "tt1630311", - "tt4896224", - "tt0070640", - "tt6962906", - "tt5990342", - "tt0026266", - "tt3895884", - "tt3648510", - "tt1734548", - "tt0897249", - "tt2392385", - "tt0079655", - "tt2620204", - "tt0102609", - "tt2461226", - "tt0117332", - "tt1351133", - "tt6289128", - "tt1851922", - "tt2054817", - "tt5818768", - "tt2591720", - "tt0039437", - "tt3597108", - "tt3707284", - "tt0021152", - "tt4139598", - "tt0048705", - "tt3881494", - "tt1535102", - "tt3616986", - "tt1815836", - "tt0304283", - "tt0081353", - "tt1735233", - "tt7058080", - "tt0035019", - "tt5860940", - "tt0347484", - "tt4019346", - "tt9635902", - "tt1587310", - "tt0063465", - "tt0075164", - "tt0269856", - "tt3012214", - "tt0097521", - "tt0818226", - "tt2882426", - "tt8147680", - "tt1945052", - "tt0391877", - "tt2471626", - "tt0275719", - "tt7748076", - "tt0083793", - "tt0028216", - "tt1675761", - "tt0045815", - "tt0023488", - "tt2401037", - "tt3762944", - "tt7527564", - "tt0050837", - "tt2271327", - "tt1410229", - "tt0030149", - "tt0049333", - "tt1871279", - "tt0047264", - "tt0100631", - "tt4799426", - "tt0077663", - "tt0120596", - "tt7164422", - "tt0053675", - "tt10161398", - "tt2016335", - "tt0056096", - "tt5737938", - "tt2215211", - "tt0031212", - "tt0101550", - "tt6269810", - "tt1845273", - "tt0043728", - "tt1865368", - "tt0064382", - "tt0164108", - "tt5119260", - "tt0040553", - "tt0457655", - "tt7790894", - "tt0192080", - "tt7381444", - "tt6281936", - "tt0062898", - "tt4414858", - "tt1885171", - "tt6679794", - "tt0029751", - "tt5883570", - "tt1747960", - "tt0260492", - "tt0841119", - "tt3758162", - "tt10651668", - "tt6094746", - "tt8354582", - "tt0032701", - "tt0041859", - "tt6141334", - "tt4554186", - "tt7832848", - "tt0110939", - "tt10847194", - "tt6980962", - "tt7858616", - "tt4840922", - "tt7987702", - "tt6317236", - "tt7661028", - "tt5903358", - "tt6251390", - "tt6557938", - "tt8329618", - "tt3624210", - "tt4974396", - "tt8418126", - "tt3895908", - "tt0329030", - "tt1286821", - "tt0096754", - "tt0109287", - "tt0085919", - "tt0892899", - "tt0044573", - "tt0418753", - "tt0448179", - "tt0021730", - "tt0046906", - "tt0159421", - "tt0057897", - "tt0040513", - "tt2283740", - "tt3659162", - "tt1016164", - "tt0037313", - "tt0255798", - "tt0084597", - "tt0021508", - "tt0048973", - "tt1238293", - "tt2380123", - "tt0042700", - "tt0112444", - "tt7331424", - "tt0996966", - "tt6358156", - "tt5535726", - "tt5358146", - "tt0035982", - "tt5342950", - "tt0107659", - "tt0078212", - "tt0075152", - "tt0168972", - "tt0309530", - "tt0103157", - "tt0115016", - "tt7520286", - "tt5693562", - "tt3328924", - "tt0330904", - "tt0261833", - "tt10255320", - "tt3110272", - "tt0073518", - "tt1491616", - "tt0172711", - "tt0099757", - "tt0060272", - "tt0061868", - "tt0080469", - "tt2296909", - "tt4809166", - "tt7313350", - "tt7964004", - "tt1801061", - "tt9352426", - "tt0451187", - "tt2630134", - "tt4100252", - "tt8539280", - "tt2184233", - "tt1841792", - "tt1977881", - "tt3764966", - "tt0119594", - "tt2325989", - "tt0041259", - "tt0076426", - "tt0118901", - "tt5729870", - "tt2547650", - "tt1230376", - "tt7046974", - "tt4540384", - "tt2137170", - "tt0015014", - "tt4843344", - "tt3100750", - "tt0104073", - "tt1284973", - "tt6138688", - "tt2245049", - "tt4268722", - "tt4466490", - "tt4704422", - "tt0044014", - "tt0062038", - "tt0054483", - "tt6368132", - "tt6405384", - "tt5425946", - "tt3397430", - "tt2043879", - "tt3917118", - "tt5119268", - "tt1830538", - "tt5480782", - "tt1613092", - "tt1815790", - "tt3257072", - "tt2946084", - "tt0042339", - "tt0183766", - "tt0071247", - "tt3482362", - "tt0071269", - "tt4881430", - "tt6648926", - "tt0430919", - "tt2306511", - "tt4625334", - "tt0036515", - "tt1724597", - "tt8695220", - "tt0107478", - "tt1016315", - "tt3569014", - "tt0093637", - "tt2709766", - "tt3660856", - "tt8633120", - "tt1748062", - "tt0376215", - "tt0082619", - "tt6119504", - "tt0043983", - "tt5716650", - "tt4842646", - "tt2473476", - "tt0051003", - "tt2338251", - "tt2427224", - "tt0150176", - "tt0071532", - "tt0039461", - "tt0082763", - "tt3719452", - "tt0088680", - "tt0026071", - "tt1609113", - "tt8749922", - "tt5754892", - "tt7553766", - "tt6071068", - "tt1440110", - "tt1488606", - "tt0409860", - "tt0416857", - "tt6271806", - "tt1809315", - "tt0037494", - "tt2112868", - "tt0084893", - "tt0118826", - "tt0035751", - "tt0079510", - "tt0347200", - "tt4762758", - "tt0070155", - "tt4269256", - "tt4240878", - "tt0280491", - "tt0098994", - "tt3496286", - "tt0357580", - "tt0053242", - "tt0403508", - "tt0094072", - "tt1884414", - "tt0113538", - "tt1786714", - "tt0243558", - "tt6181974", - "tt0407851", - "tt1831617", - "tt7616974", - "tt0177650", - "tt7321190", - "tt6061610", - "tt0035417", - "tt2261735", - "tt1609962", - "tt0305772", - "tt2112331", - "tt3138024", - "tt2626338", - "tt8351452", - "tt0808435", - "tt4693860", - "tt8549088", - "tt0111512", - "tt0066498", - "tt8204772", - "tt2295318", - "tt6365796", - "tt10954364", - "tt0092563", - "tt5668208", - "tt0067500", - "tt7596220", - "tt0054973", - "tt3511960", - "tt1778338", - "tt4456982", - "tt0425598", - "tt3133722", - "tt2734974", - "tt2004271", - "tt5603620", - "tt2333598", - "tt3924144", - "tt1863203", - "tt3101132", - "tt9358206", - "tt3072182", - "tt2297063", - "tt2821832", - "tt2017711", - "tt3529110", - "tt3699674", - "tt3130776", - "tt1674047", - "tt2186663", - "tt2201548", - "tt2287030", - "tt1922748", - "tt1971397", - "tt3812348", - "tt0285682", - "tt3359872", - "tt1292569", - "tt3503068", - "tt2915134", - "tt8620646", - "tt0486761", - "tt10675136", - "tt5240748", - "tt5503594", - "tt5890998", - "tt5016946", - "tt1799516", - "tt2880448", - "tt3686630", - "tt4846318", - "tt5641138", - "tt5192124", - "tt3646322", - "tt7279188", - "tt0191132", - "tt10791618", - "tt5857874", - "tt5047424", - "tt6209400", - "tt2044856", - "tt4151400", - "tt5087462", - "tt4820702", - "tt3462896", - "tt4152212", - "tt3825450", - "tt3741700", - "tt6565702", - "tt0068295", - "tt7584702", - "tt1016307", - "tt0138393", - "tt0064048", - "tt0082252", - "tt0049804", - "tt0094980", - "tt8351882", - "tt0085859", - "tt0096153", - "tt0068272", - "tt0204745", - "tt0040537", - "tt0013140", - "tt2376442", - "tt0365830", - "tt8663516", - "tt3843532", - "tt6423140", - "tt0393635", - "tt0099316", - "tt0039501", - "tt1853805", - "tt6400614", - "tt4934152", - "tt0060098", - "tt3550078", - "tt1728981", - "tt4637878", - "tt8064262", - "tt5640450", - "tt0101591", - "tt4878526", - "tt0213790", - "tt2437004", - "tt3576048", - "tt2544074", - "tt10847138", - "tt2983602", - "tt4517738", - "tt1079444", - "tt7127976", - "tt2315144", - "tt5160154", - "tt0088103", - "tt5223514", - "tt1198054", - "tt6628234", - "tt6097228", - "tt8337080", - "tt0035195", - "tt10924716", - "tt0069986", - "tt4163224", - "tt1528813", - "tt3340434", - "tt0452685", - "tt0109542", - "tt0095107", - "tt7655590", - "tt0035369", - "tt7925066", - "tt5952138", - "tt0080904", - "tt0035244", - "tt1650058", - "tt0087287", - "tt7350614", - "tt6460046", - "tt0107745", - "tt0057933", - "tt0058382", - "tt6494358", - "tt4983314", - "tt6333090", - "tt4494090", - "tt0431213", - "tt0053717", - "tt0056825", - "tt0055205", - "tt3791268", - "tt3228754", - "tt1680102", - "tt0158583", - "tt0489212", - "tt3891970", - "tt0025423", - "tt1666335", - "tt1112097", - "tt3201722", - "tt0918511", - "tt2704578", - "tt4555594", - "tt5773882", - "tt1019454", - "tt6794380", - "tt0119699", - "tt0100053", - "tt8748236", - "tt10812748", - "tt1761007", - "tt0187512", - "tt1640714", - "tt4807950", - "tt7521370", - "tt2838678", - "tt5449296", - "tt10136840", - "tt0186506", - "tt2442662", - "tt0060175", - "tt4916700", - "tt9006968", - "tt7975674", - "tt4329098", - "tt6321270", - "tt8069048", - "tt3464018", - "tt5456120", - "tt0050653", - "tt0051456", - "tt0052713", - "tt0051081", - "tt0049748", - "tt0070926", - "tt0054058", - "tt0054446", - "tt0051866", - "tt7613996", - "tt7033192", - "tt0050405", - "tt0066549", - "tt4106264", - "tt7144200", - "tt0074811", - "tt0057192", - "tt0050087", - "tt4642192", - "tt7533756", - "tt7456310", - "tt0132381", - "tt0132378", - "tt0132377", - "tt5240372", - "tt0132379", - "tt0132385", - "tt0079661", - "tt5079674", - "tt0087700", - "tt0282179", - "tt0203835", - "tt0222355", - "tt6139732", - "tt0455583", - "tt6868606", - "tt0091278", - "tt0116353", - "tt3729914", - "tt1754750", - "tt0203425", - "tt0120747", - "tt2047885", - "tt7583968", - "tt0132376", - "tt0109783", - "tt4945528", - "tt0078915", - "tt1426320", - "tt0029870", - "tt5987526", - "tt6107570", - "tt2005156", - "tt0930072", - "tt2752736", - "tt2415372", - "tt4828330", - "tt2444092", - "tt6491170", - "tt8111130", - "tt7511368", - "tt2131532", - "tt8084572", - "tt10520800", - "tt0090655", - "tt7403614", - "tt3920060", - "tt6044910", - "tt0195960", - "tt1045889", - "tt0085895", - "tt0138074", - "tt0374639", - "tt0052303", - "tt5636922", - "tt5243900", - "tt6848602", - "tt0473107", - "tt0114113", - "tt4264834", - "tt0138541", - "tt0083193", - "tt3604950", - "tt6450330", - "tt0247527", - "tt7913994", - "tt2638140", - "tt5967066", - "tt8597908", - "tt1382370", - "tt2245884", - "tt5915572", - "tt0083021", - "tt5313906", - "tt1536440", - "tt2043900", - "tt6011454", - "tt3263946", - "tt3078242", - "tt7627782", - "tt0132384", - "tt0132383", - "tt0060277", - "tt0942896", - "tt8228884", - "tt2998364", - "tt0021331", - "tt2080418", - "tt5918090", - "tt8124666", - "tt4223204", - "tt4481066", - "tt0082329", - "tt0087710", - "tt0132380", - "tt0129273", - "tt9176638", - "tt0132382", - "tt0072067", - "tt0063599", - "tt3264194", - "tt0180683", - "tt0072848", - "tt7942742", - "tt4184494", - "tt6333082", - "tt3953274", - "tt3381600", - "tt3314978", - "tt1169829", - "tt1127877", - "tt9203030", - "tt0128137", - "tt0057393", - "tt2461684", - "tt5935072", - "tt1577040", - "tt2023659", - "tt0043646", - "tt0032342", - "tt2419354", - "tt0092948", - "tt0034428", - "tt3097084", - "tt4650516", - "tt3997238", - "tt1091744", - "tt0146984", - "tt0337631", - "tt2458786", - "tt0102571", - "tt4519914", - "tt5509634", - "tt0081176", - "tt2827908", - "tt2179007", - "tt1496460", - "tt2236160", - "tt5581284", - "tt8552406", - "tt5208252", - "tt6947808", - "tt1686027", - "tt5473124", - "tt1433099", - "tt0486651", - "tt7797926", - "tt9352926", - "tt5508108", - "tt0088213", - "tt5651050", - "tt5893906", - "tt0119988", - "tt5141862", - "tt2258685", - "tt5258306", - "tt3678980", - "tt5850176", - "tt7531138", - "tt4420110", - "tt9837502", - "tt0095599", - "tt4597622", - "tt0097964", - "tt0425661", - "tt2996076", - "tt0145048", - "tt0105819", - "tt4761870", - "tt0104291", - "tt0101455", - "tt0043286", - "tt0235737", - "tt4136056", - "tt0025456", - "tt2281215", - "tt0042195", - "tt0096310", - "tt4697742", - "tt2481238", - "tt0334416", - "tt2258233", - "tt0041625", - "tt0051105", - "tt2678448", - "tt4819986", - "tt0026056", - "tt9283302", - "tt4113114", - "tt1698651", - "tt4038052", - "tt0064921", - "tt6280182", - "tt0119305", - "tt0062235", - "tt4382552", - "tt7215262", - "tt0085249", - "tt2308822", - "tt6049106", - "tt2254131", - "tt2709716", - "tt4301440", - "tt7034316", - "tt6571274", - "tt5836706", - "tt0084861", - "tt4632888", - "tt1591584", - "tt0094025", - "tt3548442", - "tt0023181", - "tt6385768", - "tt5787384", - "tt0093840", - "tt6945932", - "tt1745862", - "tt10354036", - "tt0040379", - "tt6773126", - "tt0024481", - "tt2430084", - "tt0080801", - "tt0097728", - "tt2353092", - "tt9042456", - "tt0051141", - "tt2114058", - "tt2322672", - "tt2083294", - "tt0490822", - "tt0044683", - "tt0029120", - "tt4129180", - "tt0042447", - "tt0271367", - "tt4262174", - "tt4172146", - "tt8271188", - "tt0060171", - "tt0097770", - "tt0097443", - "tt5583554", - "tt1648044", - "tt5036924", - "tt8884430", - "tt3584354", - "tt7323546", - "tt1189897", - "tt1895534", - "tt0080012", - "tt0021128", - "tt9419834", - "tt10847306", - "tt0073596", - "tt6734054", - "tt0021165", - "tt0366621", - "tt0216048", - "tt3320550", - "tt8969332", - "tt0120053", - "tt2042583", - "tt0120684", - "tt1731985", - "tt2601044", - "tt7524414", - "tt0061658", - "tt0100491", - "tt2433118", - "tt3918748", - "tt7130110", - "tt7954000", - "tt9165664", - "tt3737840", - "tt8343294", - "tt6590856", - "tt5718764", - "tt1641410", - "tt0048034", - "tt0103639", - "tt10720196", - "tt6570372", - "tt4324916", - "tt2475154", - "tt1852786", - "tt6533240", - "tt0216200", - "tt3032096", - "tt2296697", - "tt3829874", - "tt0114319", - "tt6931984", - "tt0107985", - "tt4120298", - "tt8710040", - "tt0056173", - "tt5057140", - "tt2925730", - "tt5707274", - "tt8202020", - "tt0141369", - "tt8617844", - "tt0053901", - "tt0032209", - "tt0460925", - "tt0301454", - "tt3883234", - "tt0163983", - "tt7473890", - "tt4902216", - "tt1153698", - "tt2452352", - "tt6984456", - "tt0428441", - "tt0094946", - "tt1326869", - "tt0082200", - "tt2520808", - "tt1851900", - "tt6212136", - "tt3654506", - "tt4645636", - "tt5000724", - "tt0022403", - "tt0113114", - "tt6047906", - "tt0380268", - "tt1659261", - "tt5808796", - "tt6151244", - "tt0050861", - "tt0048801", - "tt6547044", - "tt0117918", - "tt1979388", - "tt0064637", - "tt2292148", - "tt4786236", - "tt2512582", - "tt0049096", - "tt7310906", - "tt1753767", - "tt0027686", - "tt0091587", - "tt1079956", - "tt3512956", - "tt0028944", - "tt7156436", - "tt8793990", - "tt0179389", - "tt0448022", - "tt0106539", - "tt0092718", - "tt1954886", - "tt0854678", - "tt4653606", - "tt0248640", - "tt6705860", - "tt8318648", - "tt6677418", - "tt4461676", - "tt0869152", - "tt7398584", - "tt0382932", - "tt3445280", - "tt10510166", - "tt5997492", - "tt4944460", - "tt7978660", - "tt0059415", - "tt7538788", - "tt9174828", - "tt4086024", - "tt5882206", - "tt4569878", - "tt0078788", - "tt1216475", - "tt8200998", - "tt7137640", - "tt5859352", - "tt0112641", - "tt7043534", - "tt5030904", - "tt1525836", - "tt1217209", - "tt10095336", - "tt6798722", - "tt2096673", - "tt3581384", - "tt6106822", - "tt3904360", - "tt0049087", - "tt2403931", - "tt0131149", - "tt2896898", - "tt0071696", - "tt0489007", - "tt3430482", - "tt0030764", - "tt0048724", - "tt0042198", - "tt1326220", - "tt5966990", - "tt0057889", - "tt3312100", - "tt0159784", - "tt2137351", - "tt0065494", - "tt0377091", - "tt0119807", - "tt5034266", - "tt5203320", - "tt2027178", - "tt0083657", - "tt0117092", - "tt3297554", - "tt4542660", - "tt0097257", - "tt0030044", - "tt3138122", - "tt0045566", - "tt5174284", - "tt4683668", - "tt0040446", - "tt5156530", - "tt6048930", - "tt0375173", - "tt5723286", - "tt5267472", - "tt1228953", - "tt3986532", - "tt2396589", - "tt3319212", - "tt5269374", - "tt5352432", - "tt7354868", - "tt7157574", - "tt7133686", - "tt7785392", - "tt6081408", - "tt6343706", - "tt5377658", - "tt7929156", - "tt1277936", - "tt0031385", - "tt3216766", - "tt7983844", - "tt0101545", - "tt6333060", - "tt0477139", - "tt9261574", - "tt0151905", - "tt9541602", - "tt0022153", - "tt0105059", - "tt4187452", - "tt4139588", - "tt2106651", - "tt6567544", - "tt1754853", - "tt0415965", - "tt0055471", - "tt3339354", - "tt0283026", - "tt0097758", - "tt2737304", - "tt0362269", - "tt0144214", - "tt0263238", - "tt4660086", - "tt0054292", - "tt0208074", - "tt6004848", - "tt5893100", - "tt6333096", - "tt0106701", - "tt0120710", - "tt0052809", - "tt0029217", - "tt1034072", - "tt0051221", - "tt7123974", - "tt0043117", - "tt0050680", - "tt1828976", - "tt0048312", - "tt5022702", - "tt7043012", - "tt5492496", - "tt0116311", - "tt3801730", - "tt0083854", - "tt0030287", - "tt0080157", - "tt3440298", - "tt0074179", - "tt0112435", - "tt0037522", - "tt4135896", - "tt5124104", - "tt0037094", - "tt0266543", - "tt4065316", - "tt10309088", - "tt0944101", - "tt0112368", - "tt4338184", - "tt0069131", - "tt2011972", - "tt2318701", - "tt3219678", - "tt4936064", - "tt2081178", - "tt1389098", - "tt0323939", - "tt7521860", - "tt1471346", - "tt1576378", - "tt3576352", - "tt5280980", - "tt1122614", - "tt0045175", - "tt0094747", - "tt0103125", - "tt9082020", - "tt0073470", - "tt2277860", - "tt0054205", - "tt0066448", - "tt0479500", - "tt0119125", - "tt0412366", - "tt0337917", - "tt3815136", - "tt3488184", - "tt0316768", - "tt0119715", - "tt0016220", - "tt1386691", - "tt6446550", - "tt1326264", - "tt7274546", - "tt8783798", - "tt6690860", - "tt0075629", - "tt5981656", - "tt8080302", - "tt1814842", - "tt6143782", - "tt10521814", - "tt2435970", - "tt4006384", - "tt2865618", - "tt9053472", - "tt2871776", - "tt8655738", - "tt4935462", - "tt0054033", - "tt2960470", - "tt0499516", - "tt3102440", - "tt0062144", - "tt2581664", - "tt2071582", - "tt6147514", - "tt0093668", - "tt3091304", - "tt0053457", - "tt4271918", - "tt0052278", - "tt1648035", - "tt2195498", - "tt3186984", - "tt3359754", - "tt0038765", - "tt0089904", - "tt0290210", - "tt5028698", - "tt1227378", - "tt0048719", - "tt0216584", - "tt3772640", - "tt6205994", - "tt3322134", - "tt10902020", - "tt0024069", - "tt0045992", - "tt0101912", - "tt3164198", - "tt0077698", - "tt3701804", - "tt1440756", - "tt3499084", - "tt6710212", - "tt2654522", - "tt0057007", - "tt3332308", - "tt5033790", - "tt1245098", - "tt1465471", - "tt3781476", - "tt8381988", - "tt3689590", - "tt8426594", - "tt3816372", - "tt0433362", - "tt6679242", - "tt5742304", - "tt10907772", - "tt0040495", - "tt2507128", - "tt4310022", - "tt4729426", - "tt0092676", - "tt7715192", - "tt1736049", - "tt3858454", - "tt6146586", - "tt0102558", - "tt0338427", - "tt1579247", - "tt5215486", - "tt1322313", - "tt2977110", - "tt0081738", - "tt0133985", - "tt4026034", - "tt6022898", - "tt1674785", - "tt9063470", - "tt6892378", - "tt0036172", - "tt4201522", - "tt0091934", - "tt4882698", - "tt6432062", - "tt5215088", - "tt8425264", - "tt0058580", - "tt0109190", - "tt5519340", - "tt0221309", - "tt2505938", - "tt0036630", - "tt1823059", - "tt0073133", - "tt0081746", - "tt6052748", - "tt1622563", - "tt1020876", - "tt0174792", - "tt0033105", - "tt0285175", - "tt0043924", - "tt4338138", - "tt1699509", - "tt7697712", - "tt0108515", - "tt9831136", - "tt4353250", - "tt0119670", - "tt0036881", - "tt0177262", - "tt0492494", - "tt6051096", - "tt5755912", - "tt0092074", - "tt0023153", - "tt5936578", - "tt6643608", - "tt0059460", - "tt0032273", - "tt0116589", - "tt1748043", - "tt0087096", - "tt1196165", - "tt5164412", - "tt2041510", - "tt2911666", - "tt0059309", - "tt0406650", - "tt2402200", - "tt0109959", - "tt8861802", - "tt4425200", - "tt0069824", - "tt5773116", - "tt8695030", - "tt0478049", - "tt1920885", - "tt0102958", - "tt0107438", - "tt6874254", - "tt1954299", - "tt0053361", - "tt3660770", - "tt2103159", - "tt1931388", - "tt1945228", - "tt0120238", - "tt0253867", - "tt4629266", - "tt0107937", - "tt8284860", - "tt0050126", - "tt2498626", - "tt1753549", - "tt0033717", - "tt0080948", - "tt0119219", - "tt0093405", - "tt0060560", - "tt4647900", - "tt4819510", - "tt0087968", - "tt0120034", - "tt0138467", - "tt0265010", - "tt4524992", - "tt5690958", - "tt6047388", - "tt9219868", - "tt2177180", - "tt0083449", - "tt0196499", - "tt0462499", - "tt0056632", - "tt6856056", - "tt8585940", - "tt0492492", - "tt1990352", - "tt1513089", - "tt2064960", - "tt1112115", - "tt0037404", - "tt6619250", - "tt0045294", - "tt0139491", - "tt0069349", - "tt1667485", - "tt0082591", - "tt0208850", - "tt2355540", - "tt0064287", - "tt4776324", - "tt0163759", - "tt6739646", - "tt0209274", - "tt2304747", - "tt10810030", - "tt0389326", - "tt1368117", - "tt0077598", - "tt0206190", - "tt0087660", - "tt0285094", - "tt4157220", - "tt6522668", - "tt4219836", - "tt0360033", - "tt2294551", - "tt1974308", - "tt1462014", - "tt5730248", - "tt5510970", - "tt0363282", - "tt1697920", - "tt0209191", - "tt5563100", - "tt1592784", - "tt0099044", - "tt0116016", - "tt5066870", - "tt0372334", - "tt0091790", - "tt0309061", - "tt5076184", - "tt8226078", - "tt3243636", - "tt0082534", - "tt1695831", - "tt2223678", - "tt4524432", - "tt4772396", - "tt2040281", - "tt4729466", - "tt4105466", - "tt0406280", - "tt0393435", - "tt0040019", - "tt0064815", - "tt3824032", - "tt7692966", - "tt0028165", - "tt0461847", - "tt3823018", - "tt0102497", - "tt3640682", - "tt0048575", - "tt0066919", - "tt0028275", - "tt5076032", - "tt1515203", - "tt6169920", - "tt0903618", - "tt0082081", - "tt0209110", - "tt0022080", - "tt0062322", - "tt0434953", - "tt8296608", - "tt0061524", - "tt0056053", - "tt0176684", - "tt4373956", - "tt8559006", - "tt0026394", - "tt0923709", - "tt4144368", - "tt0070809", - "tt0132683", - "tt7205208", - "tt0311599", - "tt0025592", - "tt5788528", - "tt7037544", - "tt5566660", - "tt4711926", - "tt3654964", - "tt1486616", - "tt8499102", - "tt0351540", - "tt4411466", - "tt2136914", - "tt3471440", - "tt0289390", - "tt3741860", - "tt3141954", - "tt1741225", - "tt0265591", - "tt3794392", - "tt2559192", - "tt0972883", - "tt6329716", - "tt3246874", - "tt3699104", - "tt0137799", - "tt0113762", - "tt8483220", - "tt1579361", - "tt9358228", - "tt6077540", - "tt5646136", - "tt7639528", - "tt6423428", - "tt8515700", - "tt7472330", - "tt6998390", - "tt0847817", - "tt1083462", - "tt3813334", - "tt2609912", - "tt3486626", - "tt5097970", - "tt0116095", - "tt0045808", - "tt1860242", - "tt2545428", - "tt0110186", - "tt1312251", - "tt0023876", - "tt0019702", - "tt0494652", - "tt7866702", - "tt0310910", - "tt0038601", - "tt0026008", - "tt0960790", - "tt1032821", - "tt1742081", - "tt5834576", - "tt5776928", - "tt9730648", - "tt0046903", - "tt5692030", - "tt9730640", - "tt9730644", - "tt7999850", - "tt0088178", - "tt0326208", - "tt0180734", - "tt0037150", - "tt0393597", - "tt1091617", - "tt8922118", - "tt3253624", - "tt7203052", - "tt0100740", - "tt5875654", - "tt0086397", - "tt0093660", - "tt0043565", - "tt4188766", - "tt0047123", - "tt0314097", - "tt0116410", - "tt0081964", - "tt0038461", - "tt0110057", - "tt3201640", - "tt1155592", - "tt1283952", - "tt0258038", - "tt9088954", - "tt4861558", - "tt4624852", - "tt2281095", - "tt5783630", - "tt1972663", - "tt5804038", - "tt5638642", - "tt1687247", - "tt6165936", - "tt0083959", - "tt0039416", - "tt0260191", - "tt1241317", - "tt5327410", - "tt0120913", - "tt0171363", - "tt0974959", - "tt0163988", - "tt0005077", - "tt0157191", - "tt0103241", - "tt0808146", - "tt0185014", - "tt0258153", - "tt1371585", - "tt4483100", - "tt3177392", - "tt2459022", - "tt0185431", - "tt6809094", - "tt0940709", - "tt0119137", - "tt0071567", - "tt0130585", - "tt0163978", - "tt3748172", - "tt0284837", - "tt0290095", - "tt0120885", - "tt0120828", - "tt2295034", - "tt0384680", - "tt0398165", - "tt0159568", - "tt0110377", - "tt0172493", - "tt0032762", - "tt0427944", - "tt0454945", - "tt0335245", - "tt3967856", - "tt0067503", - "tt0130908", - "tt0115433", - "tt0061181", - "tt0061023", - "tt0126642", - "tt0092005", - "tt0456554", - "tt7557212", - "tt3188290", - "tt0390384", - "tt2186791", - "tt4110086", - "tt0104534", - "tt0213065", - "tt0060594", - "tt0060143", - "tt0109322", - "tt0065677", - "tt0064647", - "tt0075834", - "tt0060550", - "tt0052667", - "tt1810633", - "tt0208654", - "tt0073869", - "tt0067134", - "tt8433858", - "tt0082570", - "tt0065794", - "tt2644072", - "tt0065812", - "tt0131042", - "tt3692082", - "tt0094274", - "tt0403237", - "tt1024855", - "tt1094249", - "tt0185266", - "tt7932490", - "tt4229298", - "tt0167261", - "tt3822614", - "tt4738912", - "tt2187107", - "tt0167260", - "tt0458364", - "tt0120737", - "tt8708304", - "tt0054020", - "tt8400758", - "tt1986998", - "tt5066616", - "tt2015462", - "tt6400316", - "tt2197240", - "tt0102888", - "tt2726560", - "tt4653818", - "tt7905880", - "tt7363336", - "tt6471090", - "tt0101523", - "tt0119358", - "tt6496816", - "tt2992220", - "tt2576452", - "tt7474914", - "tt2536512", - "tt7036840", - "tt3153806", - "tt7665846", - "tt3767278", - "tt9024106", - "tt5174974", - "tt0028970", - "tt0066017", - "tt5265980", - "tt1489887", - "tt6920356", - "tt7150512", - "tt8300786", - "tt7264462", - "tt0058962", - "tt5774054", - "tt0468536", - "tt6830716", - "tt0295192", - "tt7349910", - "tt0117110", - "tt1798188", - "tt0117002", - "tt1234541", - "tt0062994", - "tt0077588", - "tt0084805", - "tt0046057", - "tt0045616", - "tt0099401", - "tt0048691", - "tt0049038", - "tt0049408", - "tt0379217", - "tt0051622", - "tt1821549", - "tt0055630", - "tt1692486", - "tt0055608", - "tt0062136", - "tt0067372", - "tt0062755", - "tt0069113", - "tt0089092", - "tt0106620", - "tt0443473", - "tt0078754", - "tt0056443", - "tt1014759", - "tt0236784", - "tt2820852", - "tt0091083", - "tt1182350", - "tt5770864", - "tt9860728", - "tt0200138", - "tt0120630", - "tt0098524", - "tt1193631", - "tt9213932", - "tt2103281", - "tt0366551", - "tt1646971", - "tt0047472", - "tt7464188", - "tt0091059", - "tt0021635", - "tt1629757", - "tt0096344", - "tt0428870", - "tt0481369", - "tt0847167", - "tt0105236", - "tt1657284", - "tt0291848", - "tt0852975", - "tt0091225", - "tt2654430", - "tt1549571", - "tt6564620", - "tt4781700", - "tt1078885", - "tt0010323", - "tt3438640", - "tt0240122", - "tt2088714", - "tt5779286", - "tt0099290", - "tt4701546", - "tt0082335", - "tt1506458", - "tt0434541", - "tt0078343", - "tt0237572", - "tt0068654", - "tt1756632", - "tt0062957", - "tt4771932", - "tt0443527", - "tt4217172", - "tt0122037", - "tt10856726", - "tt0090610", - "tt0042531", - "tt0076709", - "tt0784816", - "tt0042315", - "tt0053768", - "tt2986512", - "tt0484439", - "tt3158440", - "tt0052530", - "tt2665228", - "tt0043546", - "tt0079063", - "tt6578116", - "tt4738360", - "tt1976009", - "tt0180093", - "tt3070242", - "tt8842950", - "tt3032274", - "tt4273562", - "tt3833748", - "tt3699372", - "tt0397039", - "tt8497794", - "tt0086872", - "tt0046754", - "tt3652978", - "tt0089572", - "tt7555072", - "tt0006309", - "tt0108053", - "tt0484382", - "tt0146271", - "tt0012364", - "tt0160401", - "tt0080569", - "tt0084090", - "tt5361488", - "tt0320193", - "tt0113703", - "tt0048441", - "tt0192120", - "tt0029381", - "tt0006032", - "tt1869724", - "tt5864236", - "tt0049126", - "tt0005571", - "tt0005044", - "tt0212720", - "tt0075250", - "tt0309150", - "tt3416828", - "tt1860353", - "tt0419984", - "tt0848537", - "tt2172402", - "tt1094666", - "tt0087277", - "tt0864835", - "tt2387499", - "tt7696328", - "tt1911658", - "tt7215444", - "tt1502712", - "tt0046425", - "tt7704762", - "tt3583688", - "tt5348190", - "tt6237314", - "tt1324999", - "tt3323314", - "tt2934696", - "tt1104001", - "tt9109006", - "tt2604224", - "tt6604050", - "tt0820142", - "tt7825514", - "tt10579468", - "tt3696610", - "tt0454864", - "tt8218662", - "tt0454876", - "tt6234016", - "tt0094226", - "tt4731136", - "tt6838918", - "tt2596246", - "tt0107144", - "tt9411860", - "tt10224134", - "tt0120363", - "tt3512900", - "tt2334871", - "tt2267968", - "tt9251326", - "tt1679335", - "tt0435761", - "tt3079380", - "tt1935859", - "tt6184958", - "tt0277434", - "tt8351424", - "tt2224026", - "tt0317705", - "tt5431950", - "tt0114709", - "tt9358084", - "tt2679042", - "tt0397892", - "tt6029796", - "tt6319714", - "tt1431045", - "tt7843600", - "tt9303030", - "tt8354344", - "tt3682448", - "tt2091256", - "tt5782140", - "tt4654844", - "tt8649148", - "tt0065550", - "tt0092099", - "tt7099756", - "tt0069398", - "tt7207006", - "tt3655452", - "tt2267998", - "tt8093094", - "tt7597454", - "tt3512486", - "tt7973608", - "tt6669590", - "tt0063127", - "tt0145955", - "tt0022017", - "tt5595364", - "tt8020378", - "tt6499572", - "tt2374452", - "tt4846340", - "tt4046784", - "tt6294822", - "tt0206827", - "tt1816012", - "tt6770548", - "tt6197848", - "tt0011841", - "tt1529567", - "tt5463088", - "tt0831888", - "tt1111821", - "tt1485796", - "tt2673996", - "tt2235815", - "tt1587157", - "tt3385516", - "tt1790864", - "tt0107681", - "tt0443690", - "tt1512316", - "tt2316204", - "tt2361423", - "tt2417218", - "tt0089374", - "tt0108461", - "tt3402236", - "tt0026185", - "tt0095403", - "tt0142247", - "tt3830998", - "tt0142245", - "tt0418141", - "tt5480520", - "tt0400370", - "tt0035749", - "tt0015202", - "tt0061552", - "tt4400714", - "tt0066517", - "tt0069421", - "tt3726252", - "tt0069783", - "tt2873282", - "tt0074462", - "tt0423977", - "tt3847390", - "tt3916100", - "tt2065952", - "tt1245534", - "tt4774372", - "tt2690718", - "tt1869718", - "tt0255773", - "tt0077740", - "tt0096341", - "tt2190193", - "tt2025516", - "tt6026818", - "tt2833768", - "tt1388595", - "tt1828127", - "tt2011314", - "tt4571194", - "tt1107142", - "tt1713799", - "tt0064866", - "tt7958736", - "tt2283336", - "tt1365540", - "tt2938978", - "tt5328796", - "tt2328922", - "tt6295106", - "tt9759938", - "tt0353164", - "tt8711274", - "tt1976540", - "tt0382301", - "tt2004361", - "tt1107134", - "tt6296148", - "tt0119280", - "tt9647330", - "tt0385568", - "tt5323662", - "tt1739212", - "tt5731132", - "tt1741669", - "tt0113326", - "tt3689910", - "tt2888046", - "tt5973984", - "tt3245794", - "tt4769824", - "tt6099462", - "tt3739614", - "tt6449358", - "tt0347791", - "tt1564058", - "tt2364071", - "tt6035470", - "tt0466947", - "tt0428144", - "tt1831611", - "tt0494222", - "tt0109456", - "tt5871184", - "tt0404286", - "tt2540072", - "tt0060167", - "tt0354210", - "tt4264202", - "tt0104146", - "tt0070288", - "tt0120371", - "tt0127357", - "tt1646232", - "tt1130089", - "tt1206345", - "tt2065968", - "tt08439204", - "tt1690470", - "tt4007502", - "tt5884052", - "tt1505118", - "tt3391348", - "tt5994834", - "tt0063612", - "tt0061515", - "tt0120692", - "tt0104361", - "tt5781006", - "tt0824326", - "tt4698718", - "tt9301146", - "tt0108598", - "tt0037363", - "tt3954876", - "tt10801352", - "tt4448290", - "tt7080960", - "tt1082588", - "tt0390521", - "tt0120245", - "tt10260408", - "tt9184016", - "tt3263598", - "tt5762174", - "tt1411956", - "tt3258142", - "tt0289365", - "tt3231010", - "tt2180529", - "tt0089050", - "tt2111283", - "tt2632708", - "tt1948394", - "tt2224075", - "tt1454110", - "tt0270291", - "tt1018886", - "tt1821374", - "tt0109838", - "tt0100024", - "tt0130445", - "tt0109609", - "tt0436595", - "tt1800759", - "tt0922522", - "tt0109049", - "tt1433813", - "tt0108148", - "tt3579524", - "tt0115952", - "tt4337072", - "tt4016942", - "tt0270444", - "tt0838265", - "tt2636124", - "tt0387412", - "tt0465925", - "tt0813789", - "tt3017864", - "tt0007194", - "tt0823671", - "tt6186940", - "tt0858497", - "tt0140803", - "tt2460976", - "tt0049949", - "tt0005812", - "tt3399998", - "tt0016332", - "tt0005810", - "tt4154796", - "tt0064855", - "tt0005489", - "tt9206798", - "tt0143808", - "tt0083291", - "tt1265587", - "tt0101357", - "tt3120960", - "tt0279919", - "tt0020697", - "tt0036104", - "tt1024215", - "tt3897880", - "tt5572720", - "tt0177240", - "tt2078523", - "tt1849027", - "tt0353515", - "tt7275822", - "tt1629443", - "tt0331068", - "tt0099158", - "tt0095941", - "tt0119595", - "tt3742300", - "tt1675758", - "tt5458888", - "tt3293138", - "tt0465517", - "tt0081366", - "tt0061761", - "tt5320124", - "tt0050872", - "tt4820162", - "tt0898949", - "tt2527560", - "tt7158736", - "tt7776838", - "tt6669086", - "tt2604846", - "tt0425548", - "tt0056406", - "tt2332857", - "tt0376263", - "tt6423362", - "tt8769848", - "tt0048600", - "tt1764454", - "tt0845464", - "tt3378384", - "tt2327948", - "tt0104503", - "tt5328006", - "tt1794886", - "tt7294636", - "tt8991338", - "tt3714492", - "tt1622566", - "tt2592582", - "tt2224073", - "tt1671582", - "tt1117379", - "tt3619972", - "tt1079974", - "tt0133104", - "tt2093928", - "tt2150163", - "tt0366598", - "tt0416051", - "tt0258534", - "tt3576666", - "tt2426266", - "tt8648640", - "tt0362942", - "tt0086606", - "tt1802727", - "tt4804142", - "tt0044876", - "tt0892391", - "tt6029724", - "tt0077332", - "tt0083284", - "tt0135037", - "tt0070119", - "tt2180578", - "tt1259570", - "tt4224478", - "tt2391821", - "tt1703049", - "tt0163494", - "tt0042970", - "tt0072008", - "tt0082525", - "tt0067236", - "tt0075432", - "tt8028526", - "tt0048543", - "tt3455730", - "tt0047087", - "tt6382412", - "tt1578709", - "tt5892486", - "tt4450624", - "tt5931670", - "tt0111293", - "tt4669296", - "tt0117757", - "tt1352386", - "tt5337544", - "tt5580688", - "tt6183104", - "tt5634088", - "tt3949952", - "tt6256872", - "tt0069279", - "tt1536437", - "tt0091902", - "tt2917336", - "tt5589362", - "tt1948563", - "tt1646922", - "tt7614404", - "tt6354568", - "tt0067025", - "tt0297721", - "tt1039651", - "tt0063159", - "tt2411128", - "tt7480958", - "tt3723780", - "tt7051624", - "tt0066612", - "tt0073941", - "tt5969404", - "tt8917964", - "tt0071544", - "tt5699154", - "tt0077373", - "tt4097826", - "tt0015224", - "tt8888186", - "tt2332573", - "tt3830194", - "tt2066051", - "tt1776196", - "tt0075852", - "tt0056012", - "tt5284414", - "tt5216534", - "tt1468322", - "tt1726286", - "tt4307880", - "tt6548966", - "tt0485323", - "tt2476624", - "tt8385474", - "tt1675163", - "tt5519566", - "tt1298644", - "tt6874878", - "tt2085795", - "tt0047937", - "tt5004766", - "tt7752126", - "tt0069753", - "tt0100581", - "tt0071537", - "tt2375379", - "tt0069017", - "tt2396429", - "tt1105263", - "tt0068629", - "tt1485763", - "tt1148261", - "tt1339302", - "tt0090186", - "tt1715210", - "tt9775360", - "tt1599296", - "tt2091885", - "tt2183302", - "tt5251328", - "tt1426325", - "tt0085872", - "tt0810924", - "tt0780492", - "tt0093563", - "tt0068310", - "tt1241330", - "tt0065602", - "tt6542108", - "tt0089206", - "tt0107165", - "tt0870937", - "tt0166789", - "tt0293416", - "tt0193253", - "tt3003668", - "tt0084674", - "tt7046002", - "tt6739094", - "tt0075415", - "tt0232114", - "tt3206074", - "tt4235644", - "tt3306776", - "tt0069540", - "tt3538328", - "tt0102812", - "tt0270933", - "tt2048804", - "tt6848624", - "tt1636780", - "tt1754177", - "tt1235790", - "tt2423504", - "tt3288930", - "tt0806102", - "tt10578106", - "tt4123262", - "tt1869235", - "tt0497633", - "tt1843961", - "tt2935564", - "tt0110153", - "tt0162236", - "tt2230422", - "tt0090197", - "tt0838178", - "tt1232824", - "tt0073031", - "tt0961108", - "tt1922612", - "tt4919484", - "tt8247470", - "tt7692822", - "tt7089628", - "tt6172460", - "tt9657544", - "tt0192701", - "tt4604246", - "tt9100028", - "tt8976710", - "tt0493322", - "tt2230434", - "tt4172746", - "tt0184503", - "tt0049446", - "tt0113142", - "tt5311514", - "tt0062363", - "tt0116390", - "tt0783601", - "tt0087344", - "tt4590806", - "tt0107027", - "tt5396646", - "tt0094884", - "tt1630254", - "tt0314111", - "tt0064860", - "tt0366526", - "tt0399102", - "tt10720098", - "tt7493808", - "tt7487314", - "tt0097444", - "tt10308686", - "tt9904820", - "tt0279112", - "tt3958494", - "tt5066564", - "tt9185816", - "tt0109916", - "tt0071992", - "tt4377918", - "tt9315000", - "tt0113187", - "tt2585736", - "tt0101962", - "tt6143850", - "tt5101956", - "tt10431274", - "tt0255198", - "tt3263758", - "tt5441540", - "tt6890376", - "tt3171784", - "tt7615302", - "tt0470679", - "tt0104352", - "tt0049169", - "tt2188010", - "tt6782276", - "tt0291341", - "tt8819596", - "tt6034164", - "tt6295304", - "tt1037223", - "tt0295529", - "tt0090888", - "tt3190158", - "tt0088256", - "tt2948266", - "tt4188436", - "tt2139919", - "tt10497352", - "tt1229405", - "tt6052206", - "tt2275769", - "tt1727523", - "tt0110123", - "tt10662450", - "tt3484128", - "tt9451848", - "tt3638508", - "tt2837830", - "tt0063308", - "tt9724068", - "tt9840958", - "tt2322296", - "tt0105810", - "tt2234419", - "tt3462676", - "tt0036400", - "tt1347008", - "tt0075109", - "tt2566350", - "tt0119406", - "tt1554966", - "tt2125501", - "tt3204012", - "tt0081432", - "tt1333667", - "tt3457486", - "tt1957996", - "tt1261900", - "tt3053202", - "tt0080159", - "tt0330548", - "tt4102722", - "tt6391356", - "tt0039595", - "tt1462397", - "tt5561598", - "tt7334346", - "tt10087988", - "tt3016642", - "tt0457286", - "tt5753236", - "tt4151002", - "tt6932340", - "tt1560985", - "tt5266456", - "tt6388200", - "tt6704988", - "tt6961862", - "tt3760702", - "tt5845440", - "tt0054377", - "tt4325644", - "tt5505862", - "tt6525952", - "tt5098548", - "tt1358232", - "tt2106514", - "tt0062151", - "tt1698010", - "tt0093871", - "tt2048865", - "tt1093842", - "tt0066924", - "tt1931549", - "tt3178174", - "tt0081696", - "tt0062082", - "tt0069390", - "tt0026246", - "tt0118647", - "tt0108102", - "tt0098513", - "tt0068334", - "tt0278435", - "tt0104265", - "tt0247425", - "tt1981115", - "tt0263734", - "tt4073682", - "tt10240612", - "tt0120772", - "tt3204734", - "tt10644588", - "tt0318411", - "tt0491747", - "tt1764285", - "tt5031332", - "tt7006206", - "tt0286797", - "tt2339703", - "tt6032328", - "tt1810858", - "tt6389316", - "tt1239242", - "tt0800369", - "tt10624458", - "tt1331064", - "tt0050783", - "tt0100589", - "tt0068416", - "tt3227442", - "tt0096332", - "tt7061818", - "tt7266728", - "tt10136908", - "tt1464763", - "tt4875504", - "tt3469592", - "tt0078950", - "tt0077188", - "tt0068152", - "tt0145503", - "tt6545160", - "tt3824950", - "tt0226800", - "tt8985618", - "tt4897358", - "tt0082766", - "tt5116230", - "tt0067429", - "tt2555268", - "tt2400894", - "tt0058631", - "tt2101347", - "tt0116571", - "tt6608386", - "tt0075984", - "tt0083131", - "tt2113007", - "tt0081112", - "tt1534335", - "tt0065997", - "tt0092137", - "tt3686998", - "tt0070039", - "tt8050084", - "tt10638540", - "tt0861772", - "tt0230512", - "tt5777628", - "tt0114011", - "tt5243490", - "tt0085640", - "tt0123324", - "tt3884282", - "tt8961266", - "tt7844166", - "tt0371746", - "tt3113456", - "tt2076850", - "tt7645122", - "tt0092997", - "tt0339412", - "tt7645502", - "tt1009012", - "tt2401147", - "tt0071585", - "tt1300854", - "tt2926926", - "tt2062996", - "tt7737502", - "tt0085328", - "tt1830792", - "tt1293751", - "tt0082000", - "tt6231398", - "tt0031887", - "tt4733736", - "tt0380066", - "tt4857806", - "tt0069809", - "tt6874134", - "tt1228705", - "tt0106926", - "tt5358714", - "tt0988982", - "tt3009772", - "tt0093207", - "tt0114563", - "tt0074360", - "tt0064208", - "tt9144476", - "tt6659936", - "tt0077559", - "tt1525835", - "tt4618398", - "tt1160524", - "tt0092501", - "tt0058567", - "tt0054067", - "tt0093306", - "tt2358911", - "tt1481363", - "tt2210479", - "tt2358913", - "tt1839494", - "tt0142237", - "tt0069191", - "tt0353014", - "tt0286737", - "tt4944658", - "tt0110725", - "tt1121794", - "tt3717532", - "tt5715828", - "tt1414581", - "tt0142236", - "tt1645048", - "tt3361792", - "tt1527788", - "tt0081318", - "tt0055377", - "tt0039402", - "tt2704212", - "tt2371287", - "tt2263944", - "tt0142242", - "tt0142241", - "tt1125254", - "tt3819668", - "tt3541262", - "tt0085127", - "tt1911533", - "tt7689946", - "tt6083230", - "tt0028816", - "tt6290258", - "tt2308711", - "tt6878382", - "tt5878194", - "tt7449376", - "tt6490930", - "tt9153882", - "tt7238634", - "tt3993350", - "tt0107692", - "tt7942746", - "tt0758742", - "tt0810827", - "tt9759612", - "tt0068524", - "tt4839422", - "tt0033740", - "tt0037635", - "tt1043842", - "tt1080926", - "tt0860907", - "tt0069266", - "tt0860906", - "tt0923811", - "tt0910949", - "tt3392330", - "tt0065143", - "tt1694115", - "tt0401233", - "tt8234502", - "tt3886508", - "tt8315128", - "tt6949868", - "tt4255622", - "tt2614776", - "tt0040522", - "tt5097070", - "tt4092774", - "tt3530882", - "tt8318702", - "tt5531032", - "tt2649274", - "tt7116000", - "tt7014234", - "tt8571404", - "tt3865478", - "tt3699354", - "tt4668860", - "tt0072195", - "tt6807324", - "tt8123728", - "tt10369978", - "tt5254198", - "tt0969216", - "tt4875844", - "tt5259184", - "tt8109800", - "tt3966500", - "tt7711764", - "tt1506950", - "tt2198063", - "tt3692652", - "tt0075740", - "tt1891806", - "tt5460858", - "tt4103306", - "tt0065568", - "tt4664568", - "tt2355871", - "tt0049774", - "tt0047926", - "tt5241534", - "tt3461882", - "tt0049693", - "tt6850758", - "tt0047962", - "tt0060311", - "tt0047133", - "tt0048423", - "tt1691832", - "tt0046743", - "tt6315750", - "tt0048077", - "tt0076049", - "tt06064378", - "tt0120576", - "tt0048420", - "tt0054099", - "tt8525560", - "tt0026718", - "tt6075718", - "tt0101439", - "tt0373450", - "tt2256811", - "tt3466476", - "tt8488340", - "tt6513406", - "tt6461526", - "tt8549254", - "tt8420952", - "tt5464204", - "tt8747288", - "tt0087980", - "tt8880188", - "tt4064488", - "tt2762662", - "tt0114885", - "tt0090768", - "tt0821638", - "tt0086366", - "tt0112437", - "tt9013956", - "tt0375104", - "tt0074207", - "tt0460792", - "tt0084675", - "tt0476995", - "tt0081480", - "tt0083170", - "tt0052005", - "tt4063438", - "tt0372279", - "tt10545040", - "tt1284578", - "tt6109168", - "tt4143306", - "tt0380728", - "tt7972178", - "tt0110201", - "tt0924263", - "tt5668850", - "tt0106696", - "tt0114794", - "tt0034478", - "tt7031474", - "tt9737150", - "tt0399019", - "tt0163081", - "tt7124090", - "tt0117221", - "tt0163532", - "tt0075347", - "tt0116866", - "tt7461300", - "tt0089866", - "tt0261739", - "tt1941704", - "tt6107558", - "tt3687316", - "tt0035230", - "tt0084076", - "tt1398991", - "tt1954617", - "tt5403488", - "tt0928125", - "tt6939372", - "tt9049072", - "tt0023902", - "tt0167925", - "tt0109382", - "tt8706988", - "tt0163849", - "tt0036659", - "tt8020896", - "tt0036621", - "tt0103596", - "tt0038222", - "tt5792490", - "tt1625155", - "tt5325492", - "tt2036416", - "tt7851500", - "tt6434022", - "tt0098690", - "tt5056842", - "tt1673423", - "tt0113292", - "tt5167966", - "tt2972098", - "tt4834622", - "tt0071465", - "tt7753158", - "tt0194314", - "tt3752930", - "tt4195368", - "tt7930006", - "tt5622770", - "tt0071232", - "tt0315521", - "tt4788638", - "tt4231508", - "tt0018037", - "tt3952226", - "tt0221007", - "tt3421246", - "tt2097267", - "tt3419894", - "tt0019254", - "tt0019901", - "tt0019725", - "tt0096003", - "tt0026138", - "tt0015532", - "tt0019760", - "tt3721048", - "tt9382396", - "tt7133580", - "tt0974977", - "tt0017765", - "tt9645348", - "tt5190578", - "tt5178264", - "tt0242695", - "tt2899120", - "tt6848930", - "tt1380784", - "tt0039686", - "tt7335324", - "tt3311020", - "tt5769414", - "tt2812356", - "tt5729246", - "tt5278458", - "tt4717204", - "tt0400174", - "tt3673764", - "tt10131230", - "tt4222732", - "tt5514632", - "tt3404158", - "tt8752440", - "tt0048091", - "tt3958276", - "tt1433001", - "tt5556068", - "tt2500670", - "tt3148576", - "tt5467852", - "tt3182620", - "tt0026261", - "tt6047374", - "tt6269434", - "tt0023594", - "tt0386423", - "tt5460986", - "tt10656752", - "tt1977894", - "tt6078842", - "tt1193092", - "tt9534958", - "tt0080472", - "tt1759744", - "tt0053084", - "tt6269368", - "tt0100318", - "tt6038042", - "tt4180560", - "tt0263265", - "tt8444450", - "tt0114690", - "tt2117892", - "tt0065932", - "tt0286049", - "tt2283017", - "tt0469062", - "tt2509902", - "tt9358044", - "tt2713886", - "tt5117372", - "tt5472614", - "tt8618420", - "tt0414951", - "tt2741624", - "tt0119165", - "tt3029558", - "tt6184932", - "tt0163563", - "tt6865728", - "tt0219671", - "tt3029556", - "tt2363564", - "tt4807908", - "tt1686313", - "tt3812366", - "tt3570006", - "tt3084294", - "tt0112913", - "tt3715896", - "tt5633396", - "tt7266388", - "tt3876372", - "tt0090557", - "tt2546434", - "tt0092214", - "tt8060774", - "tt0068286", - "tt0097005", - "tt0093435", - "tt1786503", - "tt2825120", - "tt7262782", - "tt0097441", - "tt6289898", - "tt10349958", - "tt2656588", - "tt0076916", - "tt0064756", - "tt0049849", - "tt3952246", - "tt0073559", - "tt5735464", - "tt0059740", - "tt4840686", - "tt0057163", - "tt7185492", - "tt2653264", - "tt3846972", - "tt3550344", - "tt0006864", - "tt0070884", - "tt1554523", - "tt4287848", - "tt0054940", - "tt0165489", - "tt1985144", - "tt3709442", - "tt7286500", - "tt0155722", - "tt0906765", - "tt3872778", - "tt5271582", - "tt8999864", - "tt2845166", - "tt0090305", - "tt3399024", - "tt0037175", - "tt1683431", - "tt2770290", - "tt0301181", - "tt1185418", - "tt4552118", - "tt3264102", - "tt1714886", - "tt4995776", - "tt2966934", - "tt2938416", - "tt3343350", - "tt3575624", - "tt8511530", - "tt0945356", - "tt0060794", - "tt2126403", - "tt0101020", - "tt1860355", - "tt6215712", - "tt2137267", - "tt2970510", - "tt9872556", - "tt2166804", - "tt2271387", - "tt2509922", - "tt2518788", - "tt0768116", - "tt2332522", - "tt0068444", - "tt0112446", - "tt1845773", - "tt3311384", - "tt0097052", - "tt1244668", - "tt2499076", - "tt1183732", - "tt1824254", - "tt1693039", - "tt0073836", - "tt3421270", - "tt2345864", - "tt3033478", - "tt3120508", - "tt7906262", - "tt0437086", - "tt7038632", - "tt3131532", - "tt10521638", - "tt7528504", - "tt10442108", - "tt7756492", - "tt9695662", - "tt0039871", - "tt9004516", - "tt0075893", - "tt6776300", - "tt0069995", - "tt10461826", - "tt10654432", - "tt0077532", - "tt9038026", - "tt5300154", - "tt10584048", - "tt1226766", - "tt4598848", - "tt7223050", - "tt0067245", - "tt4938484", - "tt1456660", - "tt0056127", - "tt6332276", - "tt3924262", - "tt0071413", - "tt1570583", - "tt3995006", - "tt5168832", - "tt0118818", - "tt1893218", - "tt4284010", - "tt0421199", - "tt3043590", - "tt4460032", - "tt3982706", - "tt0024360", - "tt4626970", - "tt0065760", - "tt0047073", - "tt0074085", - "tt0128142", - "tt0036125", - "tt0035386", - "tt9638206", - "tt0035007", - "tt4911408", - "tt5079362", - "tt2234462", - "tt0110771", - "tt1683048", - "tt6255230", - "tt0847212", - "tt2713938", - "tt7449274", - "tt8925102", - "tt6601502", - "tt7374952", - "tt5125894", - "tt4606514", - "tt7286492", - "tt0106698", - "tt7358686", - "tt7946422", - "tt4113346", - "tt9838372", - "tt1325773", - "tt3157640", - "tt0077924", - "tt0082399", - "tt1737591", - "tt0207359", - "tt3894404", - "tt4477106", - "tt5553436", - "tt0847187", - "tt1754546", - "tt5058340", - "tt2247566", - "tt0040979", - "tt6189344", - "tt2909724", - "tt2182163", - "tt0220507", - "tt3341268", - "tt6692368", - "tt0118662", - "tt3240784", - "tt0047259", - "tt1385633", - "tt5539264", - "tt5644726", - "tt0054906", - "tt5613848", - "tt2331143", - "tt5092272", - "tt4143384", - "tt4162910", - "tt0096114", - "tt0070121", - "tt3125652", - "tt3272570", - "tt3118874", - "tt3504604", - "tt0103262", - "tt5605076", - "tt7007696", - "tt3707114", - "tt4143508", - "tt1598725", - "tt1696192", - "tt2822584", - "tt1827378", - "tt0083281", - "tt7890550", - "tt3785740", - "tt4126312", - "tt0077485", - "tt5309954", - "tt0416207", - "tt2417154", - "tt8236566", - "tt2301147", - "tt3905662", - "tt2937254", - "tt4717798", - "tt0086013", - "tt0867411", - "tt0093175", - "tt1721693", - "tt3630556", - "tt1403854", - "tt1236472", - "tt2350608", - "tt4066748", - "tt3367686", - "tt3484800", - "tt1401664", - "tt2440214", - "tt0490935", - "tt2025526", - "tt3351386", - "tt1297943", - "tt3715406", - "tt0082009", - "tt3544654", - "tt1844025", - "tt2737926", - "tt0041268", - "tt3685922", - "tt0111776", - "tt0807726", - "tt2244889", - "tt1542485", - "tt4229236", - "tt2299368", - "tt4458368", - "tt1600429", - "tt1403129", - "tt0206754", - "tt2440362", - "tt0297144", - "tt0052629", - "tt3546370", - "tt3339376", - "tt3572132", - "tt0040481", - "tt2409300", - "tt2112307", - "tt1384926", - "tt3458236", - "tt2582426", - "tt0077993", - "tt2005363", - "tt2077766", - "tt1401663", - "tt1837494", - "tt2368672", - "tt2466346", - "tt3179402", - "tt2208568", - "tt2086853", - "tt3237154", - "tt0455475", - "tt2854894", - "tt6159734", - "tt0088128", - "tt1885448", - "tt0025037", - "tt1344008", - "tt0064991", - "tt9780416", - "tt0077372", - "tt0077362", - "tt6716912", - "tt0045991", - "tt0040740", - "tt1986089", - "tt6792282", - "tt0122689", - "tt1677603", - "tt4885784", - "tt1806906", - "tt0089501", - "tt7941194", - "tt1504416", - "tt0056417", - "tt1865450", - "tt0064886", - "tt8401820", - "tt2546394", - "tt1572503", - "tt0360032", - "tt2129928", - "tt0053434", - "tt0928406", - "tt2510434", - "tt3861390", - "tt02609758", - "tt0036699", - "tt7177324", - "tt5658240", - "tt2308260", - "tt7561364", - "tt0077838", - "tt9451086", - "tt1869491", - "tt0067457", - "tt1666792", - "tt2583814", - "tt1478841", - "tt4082506", - "tt2396566", - "tt4136828", - "tt0097539", - "tt2393817", - "tt2721152", - "tt2072029", - "tt0093489", - "tt0058294", - "tt0778631", - "tt10532840", - "tt0346578", - "tt2205904", - "tt1816608", - "tt1753967", - "tt3809492", - "tt0064519", - "tt0062301", - "tt1636849", - "tt1242544", - "tt2282917", - "tt1806805", - "tt0484855", - "tt0077800", - "tt3184096", - "tt0078405", - "tt2177827", - "tt0072209", - "tt1703923", - "tt2360446", - "tt1606636", - "tt1350546", - "tt2459156", - "tt1971571", - "tt0065579", - "tt0102458", - "tt1087841", - "tt0412637", - "tt2066048", - "tt0069451", - "tt6284564", - "tt0315930", - "tt0004972", - "tt2295196", - "tt0087803", - "tt8785052", - "tt0107565", - "tt0049083", - "tt1188988", - "tt0140397", - "tt0078269", - "tt4264716", - "tt9146030", - "tt0092641", - "tt0076645", - "tt6522084", - "tt5372350", - "tt0024028", - "tt6126346", - "tt0040370", - "tt0265808", - "tt10009434", - "tt9395794", - "tt1056036", - "tt4764490", - "tt0101761", - "tt1368116", - "tt1226232", - "tt9358204", - "tt1815852", - "tt4986926", - "tt4594286", - "tt2274648", - "tt1447793", - "tt0196708", - "tt0074291", - "tt2106550", - "tt0082416", - "tt0429573", - "tt1172571", - "tt1077262", - "tt1907614", - "tt7262882", - "tt0111201", - "tt0118998", - "tt0073036", - "tt1109574", - "tt2181959", - "tt7775622", - "tt0057345", - "tt1728976", - "tt0057091", - "tt0078058", - "tt1034305", - "tt0354690", - "tt0036055", - "tt0048512", - "tt0120133", - "tt0113552", - "tt0066491", - "tt1956671", - "tt7582890", - "tt1221208", - "tt2403393", - "tt6226908", - "tt0020163", - "tt0053604", - "tt0071487", - "tt0057960", - "tt0074901", - "tt0075824", - "tt0041719", - "tt0066534", - "tt0015841", - "tt0073858", - "tt0021375", - "tt0024216", - "tt0058249", - "tt0322824", - "tt0035881", - "tt0910559", - "tt0079013", - "tt0206394", - "tt0109771", - "tt0034978", - "tt5424984", - "tt0044364", - "tt0022718", - "tt0054599", - "tt0139153", - "tt8546396", - "tt0106364", - "tt0050083", - "tt0143127", - "tt0233298", - "tt1946502", - "tt0086264", - "tt7962932", - "tt1787759", - "tt1194271", - "tt4420040", - "tt5002838", - "tt1712170", - "tt0091168", - "tt1754438", - "tt1131728", - "tt2622988", - "tt0024941", - "tt0770728", - "tt4621398", - "tt0027068", - "tt6493648", - "tt0150926", - "tt1813519", - "tt2196430", - "tt2061822", - "tt0373926", - "tt0331468", - "tt1704201", - "tt1628039", - "tt1618421", - "tt0020447", - "tt1651328", - "tt1718755", - "tt0019701", - "tt0142092", - "tt1762300", - "tt1646967", - "tt0023393", - "tt0023855", - "tt2215719", - "tt2095742", - "tt2402539", - "tt1785389", - "tt2014202", - "tt4859168", - "tt2139881", - "tt0051759", - "tt0130637", - "tt6221660", - "tt1698008", - "tt3270538", - "tt0056196", - "tt8761814", - "tt6187794", - "tt7649620", - "tt1493157", - "tt2339367", - "tt0278295", - "tt0217355", - "tt6166196", - "tt3311588", - "tt0043949", - "tt0117038", - "tt5285494", - "tt0029819", - "tt3282076", - "tt1360767", - "tt0050171", - "tt0258000", - "tt10466908", - "tt10219384", - "tt8666494", - "tt3294732", - "tt7575440", - "tt0038190", - "tt1602098", - "tt1152827", - "tt4444956", - "tt0822868", - "tt1452599", - "tt0044829", - "tt0120176", - "tt1563704", - "tt7268388", - "tt1183251", - "tt1582621", - "tt1231580", - "tt1118045", - "tt1223236", - "tt1560957", - "tt1529635", - "tt1204315", - "tt1503769", - "tt1610528", - "tt8228538", - "tt4459156", - "tt1334512", - "tt1442486", - "tt1247400", - "tt1561768", - "tt1139115", - "tt5613402", - "tt1173907", - "tt6648932", - "tt1143143", - "tt4913966", - "tt2177843", - "tt5837976", - "tt0305396", - "tt6722030", - "tt6675736", - "tt10327712", - "tt0805619", - "tt0837796", - "tt0796368", - "tt0815138", - "tt0120102", - "tt0469640", - "tt1073241", - "tt1042503", - "tt1093824", - "tt0961097", - "tt1086340", - "tt1079964", - "tt0349467", - "tt0405469", - "tt1033468", - "tt0082940", - "tt0816539", - "tt0414055", - "tt0444682", - "tt0808417", - "tt1007018", - "tt1003118", - "tt0050302", - "tt0814131", - "tt0439289", - "tt0431197", - "tt0049224", - "tt0114728", - "tt0102443", - "tt0102994", - "tt0460810", - "tt5350358", - "tt0772193", - "tt0435696", - "tt0395495", - "tt0064664", - "tt0138324", - "tt0484207", - "tt0379557", - "tt0044537", - "tt0479948", - "tt0478337", - "tt0097202", - "tt4283414", - "tt2633666", - "tt0094061", - "tt0082612", - "tt0072136", - "tt0082499", - "tt0093876", - "tt0055318", - "tt1684567", - "tt0075764", - "tt3808102", - "tt0092830", - "tt0057102", - "tt0070782", - "tt5734548", - "tt6126492", - "tt3832126", - "tt4862506", - "tt1068646", - "tt5457484", - "tt0299988", - "tt6772246", - "tt0084099", - "tt0937347", - "tt0062829", - "tt0080066", - "tt0065595", - "tt0100506", - "tt0062732", - "tt1196630", - "tt3853830", - "tt1269734", - "tt0039211", - "tt0053961", - "tt0089269", - "tt2415710", - "tt0496350", - "tt0128232", - "tt0448172", - "tt0051380", - "tt7207398", - "tt0400347", - "tt1078899", - "tt0259288", - "tt2482856", - "tt0052639", - "tt0060866", - "tt0322659", - "tt1386011", - "tt2251306", - "tt0160644", - "tt1684936", - "tt0975673", - "tt0043574", - "tt5113926", - "tt0319531", - "tt0449077", - "tt2814080", - "tt0348505", - "tt0448115", - "tt6418918", - "tt1504385", - "tt3883282", - "tt0071080", - "tt0400944", - "tt7159616", - "tt4076980", - "tt0497116", - "tt0488612", - "tt0199314", - "tt3717234", - "tt0770742", - "tt4241824", - "tt8663942", - "tt10076722", - "tt0251656", - "tt6858002", - "tt6632338", - "tt0405832", - "tt3201736", - "tt0065230", - "tt5421078", - "tt0047680", - "tt8484012", - "tt0250494", - "tt3074952", - "tt1182345", - "tt6411748", - "tt4769214", - "tt4078160", - "tt0435716", - "tt0083096", - "tt3244786", - "tt0067658", - "tt0051114", - "tt6076226", - "tt0070770", - "tt0070687", - "tt3613314", - "tt0047279", - "tt0050771", - "tt5153860", - "tt0074703", - "tt0074608", - "tt1261046", - "tt0100079", - "tt0095286", - "tt3147336", - "tt0068619", - "tt7302054", - "tt0090750", - "tt1785277", - "tt0041332", - "tt0419491", - "tt0057267", - "tt1942831", - "tt1663628", - "tt0071857", - "tt3027716", - "tt0068529", - "tt8998472", - "tt0059503", - "tt7298400", - "tt0078797", - "tt5457926", - "tt0075838", - "tt3465710", - "tt8115320", - "tt0010435", - "tt0002130", - "tt8184202", - "tt0011293", - "tt0028436", - "tt0011144", - "tt7336572", - "tt4717402", - "tt0087246", - "tt0051404", - "tt5258726", - "tt0113464", - "tt0065518", - "tt4331776", - "tt2217790", - "tt3663680", - "tt2040398", - "tt4766342", - "tt7342170", - "tt2949296", - "tt2319739", - "tt0093416", - "tt0092298", - "tt5163286", - "tt1943014", - "tt0058403", - "tt1390539", - "tt0214871", - "tt0045339", - "tt0073615", - "tt0073901", - "tt4937564", - "tt2769828", - "tt1068669", - "tt0077318", - "tt1087524", - "tt0075294", - "tt6336270", - "tt5933560", - "tt3567194", - "tt0049431", - "tt0047947", - "tt4577344", - "tt0099377", - "tt4843046", - "tt0082812", - "tt1651894", - "tt0775543", - "tt0092933", - "tt3899262", - "tt1290472", - "tt1240538", - "tt4509084", - "tt0110307", - "tt6483364", - "tt2807548", - "tt4340720", - "tt2978576", - "tt0096769", - "tt0096464", - "tt5657932", - "tt1367177", - "tt2734110", - "tt0105410", - "tt0411267", - "tt2188831", - "tt4765610", - "tt6268882", - "tt0100618", - "tt3465302", - "tt6741026", - "tt6140354", - "tt7043148", - "tt2553444", - "tt2048905", - "tt3986352", - "tt0075638", - "tt3640710", - "tt3495774", - "tt4110978", - "tt2516500", - "tt2179211", - "tt0796307", - "tt0027905", - "tt3249352", - "tt4624532", - "tt5865284", - "tt4880942", - "tt0055198", - "tt0116922", - "tt3188994", - "tt0301214", - "tt0023245", - "tt0076820", - "tt0027200", - "tt0057463", - "tt5460522", - "tt6198946", - "tt10239930", - "tt3141846", - "tt4183140", - "tt6014472", - "tt0074372", - "tt1440379", - "tt0065851", - "tt2450440", - "tt0070814", - "tt2420166", - "tt6215044", - "tt3042626", - "tt0051565", - "tt0070222", - "tt5152640", - "tt0039931", - "tt1290471", - "tt2298394", - "tt0051028", - "tt0066585", - "tt0084633", - "tt7083526", - "tt4519006", - "tt0113080", - "tt0064694", - "tt1265621", - "tt1922679", - "tt1179071", - "tt5767628", - "tt2461340", - "tt2293750", - "tt0056625", - "tt1394329", - "tt2805976", - "tt0069715", - "tt2069955", - "tt9036998", - "tt0099524", - "tt5610626", - "tt0067309", - "tt0497316", - "tt3350890", - "tt6063648", - "tt6170682", - "tt6581616", - "tt0330795", - "tt5222646", - "tt7049542", - "tt0093456", - "tt8417466", - "tt8900984", - "tt5504222", - "tt0970453", - "tt2909196", - "tt3741188", - "tt5704912", - "tt2024483", - "tt0412523", - "tt5564932", - "tt3040216", - "tt10581102", - "tt2620254", - "tt1590285", - "tt2018136", - "tt5788866", - "tt2294743", - "tt7715988", - "tt7236434", - "tt5281134", - "tt4930242", - "tt2369410", - "tt6740154", - "tt1930308", - "tt1754830", - "tt6015760", - "tt5164238", - "tt0061597", - "tt3295354", - "tt0114743", - "tt3250650", - "tt4072296", - "tt10516390", - "tt0275039", - "tt0077132", - "tt0241687", - "tt0086862", - "tt1509276", - "tt0065895", - "tt0065761", - "tt0058700", - "tt0047376", - "tt1764657", - "tt8717660", - "tt0293324", - "tt0043892", - "tt0043809", - "tt0275309", - "tt0064265", - "tt6164014", - "tt0014532", - "tt0046757", - "tt0069518", - "tt0090213", - "tt0086036", - "tt0049286", - "tt6348138", - "tt0045554", - "tt0051980", - "tt0045296", - "tt0043899", - "tt2664264", - "tt0055082", - "tt0069806", - "tt0053388", - "tt0392908", - "tt0046126", - "tt9089294", - "tt0044685", - "tt6288290", - "tt1650060", - "tt10050766", - "tt10325070", - "tt3504226", - "tt8242812", - "tt8438836", - "tt0042727", - "tt0061814", - "tt0046267", - "tt3014910", - "tt0064473", - "tt0046729", - "tt0061189", - "tt0044941", - "tt0105824", - "tt0046882", - "tt1533817", - "tt0050858", - "tt0042367", - "tt0042310", - "tt0043734", - "tt6754750", - "tt0050631", - "tt1468387", - "tt0072263", - "tt0323808", - "tt0065856", - "tt0056138", - "tt0033467", - "tt0068502", - "tt0016630", - "tt4151192", - "tt0052933", - "tt0047445", - "tt0082138", - "tt7580902", - "tt1709122", - "tt7207890", - "tt2112277", - "tt0104753", - "tt7983678", - "tt7890946", - "tt0069134", - "tt0102067", - "tt3955894", - "tt0106913", - "tt0758740", - "tt0072761", - "tt10254986", - "tt5341032", - "tt5770836", - "tt3084028", - "tt5827590", - "tt5089534", - "tt4415360", - "tt8099132", - "tt6849786", - "tt0077234", - "tt0046250", - "tt1210059", - "tt8660842", - "tt6353976", - "tt0047577", - "tt6490532", - "tt3170458", - "tt0036377", - "tt5425264", - "tt0039017", - "tt0040662", - "tt0088457", - "tt0045659", - "tt0046808", - "tt0052296", - "tt0039074", - "tt0040367", - "tt0044943", - "tt4442130", - "tt1545986", - "tt0045178", - "tt1202222", - "tt3294746", - "tt0040369", - "tt0044754", - "tt0039335", - "tt0034742", - "tt0041737", - "tt2494384", - "tt0298826", - "tt0033533", - "tt0076175", - "tt0065086", - "tt0991167", - "tt3200980", - "tt0042539", - "tt0047029", - "tt0068290", - "tt0037794", - "tt2325517", - "tt0040978", - "tt0093227", - "tt0104812", - "tt2210834", - "tt2911342", - "tt0850677", - "tt0038008", - "tt0040068", - "tt0051879", - "tt1059887", - "tt1276107", - "tt0060884", - "tt0062424", - "tt0038494", - "tt4955566", - "tt0038259", - "tt5958178", - "tt0074597", - "tt1186803", - "tt2611626", - "tt0084938", - "tt4145304", - "tt4950110", - "tt0064393", - "tt0077629", - "tt0119429", - "tt10559318", - "tt0047013", - "tt1168662", - "tt2040578", - "tt0050432", - "tt0036591", - "tt2924442", - "tt0817545", - "tt6230134", - "tt2977090", - "tt0067820", - "tt0101891", - "tt0095904", - "tt0060897", - "tt1340123", - "tt0048990", - "tt0077945", - "tt0075268", - "tt0091829", - "tt0087222", - "tt2130142", - "tt3958780", - "tt3727202", - "tt1090671", - "tt0106689", - "tt5735280", - "tt0050763", - "tt4706888", - "tt0119577", - "tt2724532", - "tt1617620", - "tt3957956", - "tt3093522", - "tt0057918", - "tt3511596", - "tt0047977", - "tt0021079", - "tt0046719", - "tt0035317", - "tt0072737", - "tt0036349", - "tt0139639", - "tt0025586", - "tt0023694", - "tt0035318", - "tt0022941", - "tt0114898", - "tt0029843", - "tt0039220", - "tt0036348", - "tt0086904", - "tt0061683", - "tt5092708", - "tt4838614", - "tt0060474", - "tt0401696", - "tt0092128", - "tt6418778", - "tt2313189", - "tt2949196", - "tt0024991", - "tt0286716", - "tt8242160", - "tt1332134", - "tt7428820", - "tt0061806", - "tt3383262", - "tt8613876", - "tt0043455", - "tt0219466", - "tt0033676", - "tt7069496", - "tt0020768", - "tt0026955", - "tt0031022", - "tt0028818", - "tt0067483", - "tt0057263", - "tt0415160", - "tt2499472", - "tt3534282", - "tt1321861", - "tt0068732", - "tt0024240", - "tt5580536", - "tt0037149", - "tt0031397", - "tt0032146", - "tt1790621", - "tt0031448", - "tt1107859", - "tt0027672", - "tt0027893", - "tt3286560", - "tt0033159", - "tt0027849", - "tt0030663", - "tt0027876", - "tt0086515", - "tt0063293", - "tt0095302", - "tt0091969", - "tt0030545", - "tt1709654", - "tt0066849", - "tt0069005", - "tt4072326", - "tt0046828", - "tt3007132", - "tt0198652", - "tt0083067", - "tt1273675", - "tt1341341", - "tt0098300", - "tt2923088", - "tt4255110", - "tt3531202", - "tt0099292", - "tt1232838", - "tt0067690", - "tt10110872", - "tt0095867", - "tt3704352", - "tt0080732", - "tt0072139", - "tt0098257", - "tt5189894", - "tt0312549", - "tt7287680", - "tt9490414", - "tt0107530", - "tt0106302", - "tt7399170", - "tt0110913", - "tt0118537", - "tt4200442", - "tt5790274", - "tt4397342", - "tt0113720", - "tt4618800", - "tt5936866", - "tt1659208", - "tt1100119", - "tt5268348", - "tt0087265", - "tt0497329", - "tt0161654", - "tt0080140", - "tt1483831", - "tt0085204", - "tt0058155", - "tt0082511", - "tt5486170", - "tt1117581", - "tt1697851", - "tt0110687", - "tt0039224", - "tt1767319", - "tt3677466", - "tt0067217", - "tt7730928", - "tt0065054", - "tt0067248", - "tt1441956", - "tt0100168", - "tt0036910", - "tt0055597", - "tt0493247", - "tt1316616", - "tt0050782", - "tt1352369", - "tt0067482", - "tt0067713", - "tt0323921", - "tt0085276", - "tt0067805", - "tt0073075", - "tt9174388", - "tt2063011", - "tt0049006", - "tt2392830", - "tt0056868", - "tt6485776", - "tt0089798", - "tt0072709", - "tt1907731", - "tt0337881", - "tt3678476", - "tt0061648", - "tt5493706", - "tt6577814", - "tt5816374", - "tt6298780", - "tt0069436", - "tt3308358", - "tt0089652", - "tt4718500", - "tt6455992", - "tt0430779", - "tt0101376", - "tt0096000", - "tt2169274", - "tt0064515", - "tt0052182", - "tt9140306", - "tt6960770", - "tt0099271", - "tt0060761", - "tt0241605", - "tt0106680", - "tt2815902", - "tt0034798", - "tt1648186", - "tt0083678", - "tt0070468", - "tt10238788", - "tt0423505", - "tt0092637", - "tt0075342", - "tt0069050", - "tt0043879", - "tt0483756", - "tt4660980", - "tt2481198", - "tt3488328", - "tt0076636", - "tt6574272", - "tt0058606", - "tt3202890", - "tt0050933", - "tt0044557", - "tt2063666", - "tt0063049", - "tt0077834", - "tt0045963", - "tt0071424", - "tt0106309", - "tt0059084", - "tt2044801", - "tt1490785", - "tt0064328", - "tt0111503", - "tt0064100", - "tt0077275", - "tt6608132", - "tt4230700", - "tt0112643", - "tt0106339", - "tt5173032", - "tt1861421", - "tt4357714", - "tt0113972", - "tt0039158", - "tt0023470", - "tt1293093", - "tt2517044", - "tt3110818", - "tt3026488", - "tt0954990", - "tt0055201", - "tt0101343", - "tt0088007", - "tt2088832", - "tt5637212", - "tt6067462", - "tt3203954", - "tt3112900", - "tt1592503", - "tt4814760", - "tt7087210", - "tt2077886", - "tt0100606", - "tt7134690", - "tt10575038", - "tt1967560", - "tt9251598", - "tt0458471", - "tt5695764", - "tt3091138", - "tt0022689", - "tt0114938", - "tt0017751", - "tt1867101", - "tt4180514", - "tt0058725", - "tt0118859", - "tt8928500", - "tt5460530", - "tt0060177", - "tt4210080", - "tt0095379", - "tt0071675", - "tt0077756", - "tt0040705", - "tt0036261", - "tt0059557", - "tt2048770", - "tt0116344", - "tt0093286", - "tt0111094", - "tt1745672", - "tt0047550", - "tt0039305", - "tt3268668", - "tt1631707", - "tt0114798", - "tt0059012", - "tt2726552", - "tt0357474", - "tt0109415", - "tt0380817", - "tt0040555", - "tt7290778", - "tt7512276", - "tt0043121", - "tt10525592", - "tt1710533", - "tt0058754", - "tt0038922", - "tt0065916", - "tt3495644", - "tt3289606", - "tt1820488", - "tt1845774", - "tt3317562", - "tt0094746", - "tt2160413", - "tt1735433", - "tt2481498", - "tt6704170", - "tt2979638", - "tt0029682", - "tt0118643", - "tt0052415", - "tt0183678", - "tt0079336", - "tt0043067", - "tt0051077", - "tt8109082", - "tt3955618", - "tt0115580", - "tt0104740", - "tt0019777", - "tt1196340", - "tt0076637", - "tt0808526", - "tt0054269", - "tt0042832", - "tt0079100", - "tt0119937", - "tt0091142", - "tt1657283", - "tt0051773", - "tt3638396", - "tt2597242", - "tt1083448", - "tt0075995", - "tt0041163", - "tt1100051", - "tt2274570", - "tt7961060", - "tt0295667", - "tt8179388", - "tt2112303", - "tt1679204", - "tt2377396", - "tt1230478", - "tt0050598", - "tt0019838", - "tt2188723", - "tt7504496", - "tt0075244", - "tt2115388", - "tt1863160", - "tt0069257", - "tt1699140", - "tt0007338", - "tt0038160", - "tt0765447", - "tt2354513", - "tt0151933", - "tt0152216", - "tt0151014", - "tt0067989", - "tt0039645", - "tt1608776", - "tt2870808", - "tt1181935", - "tt0070679", - "tt0429589", - "tt1677730", - "tt0151081", - "tt1769363", - "tt0133412", - "tt9760256", - "tt0844948", - "tt0149660", - "tt0320441", - "tt0042286", - "tt0152235", - "tt0152220", - "tt8014482", - "tt5129682", - "tt2670882", - "tt1855401", - "tt0150571", - "tt0048673", - "tt2118702", - "tt0151228", - "tt0150977", - "tt0057033", - "tt0152374", - "tt0044188", - "tt0080486", - "tt1954900", - "tt0091190", - "tt0106551", - "tt0066075", - "tt0066105", - "tt0048393", - "tt0152263", - "tt6178388", - "tt0460732", - "tt0367813", - "tt0065481", - "tt0152032", - "tt0149625", - "tt0153943", - "tt0109162", - "tt0040202", - "tt0085470", - "tt0098051", - "tt1927152", - "tt0050307", - "tt3745058", - "tt0037800", - "tt8947034", - "tt0103129", - "tt0079271", - "tt0025919", - "tt8517704", - "tt8064392", - "tt6144524", - "tt7558912", - "tt7633666", - "tt3449040", - "tt0111700", - "tt3813404", - "tt0331314", - "tt0071517", - "tt0151775", - "tt1482104", - "tt7254920", - "tt1312953", - "tt0084955", - "tt0080641", - "tt0038988", - "tt0414472", - "tt0086646", - "tt0843843", - "tt0043592", - "tt0040338", - "tt0041498", - "tt0054757", - "tt0058672", - "tt0858419", - "tt4573516", - "tt0056575", - "tt0070077", - "tt0035899", - "tt0042652", - "tt0052585", - "tt0940657", - "tt2597768", - "tt1885265", - "tt6931170", - "tt0117237", - "tt6643972", - "tt0044413", - "tt0061584", - "tt0255274", - "tt1433207", - "tt0052374", - "tt0069222", - "tt0087042", - "tt0320763", - "tt0080724", - "tt0015977", - "tt0059817", - "tt0030063", - "tt0228943", - "tt1220213", - "tt2513864", - "tt0029686", - "tt0055862", - "tt7266800", - "tt0023293", - "tt0030523", - "tt8085790", - "tt0194523", - "tt0041510", - "tt1111833", - "tt0083891", - "tt0058246", - "tt0094793", - "tt0102820", - "tt0090559", - "tt0064807", - "tt0142804", - "tt0049916", - "tt0160210", - "tt0049934", - "tt0062366", - "tt0057146", - "tt0028030", - "tt0804492", - "tt0020523", - "tt0025911", - "tt0057450", - "tt2265257", - "tt0002816", - "tt0001865", - "tt0060914", - "tt0005149", - "tt1556690", - "tt1951239", - "tt0060438", - "tt0452945", - "tt0002506", - "tt8260858", - "tt0059105", - "tt6207878", - "tt0015039", - "tt0174228", - "tt2261319", - "tt0070858", - "tt5002444", - "tt0024894", - "tt0061577", - "tt0061698", - "tt5364010", - "tt0161216", - "tt0066098", - "tt8678108", - "tt4189646", - "tt7257948", - "tt6467274", - "tt0106335", - "tt0066739", - "tt0453207", - "tt0063121", - "tt0221719", - "tt0039677", - "tt2857160", - "tt5604902", - "tt8582254", - "tt9664168", - "tt0053804", - "tt3704854", - "tt7243462", - "tt2981768", - "tt7241484", - "tt0109493", - "tt0484444", - "tt1854506", - "tt0066319", - "tt2120743", - "tt0046247", - "tt0076584", - "tt0063979", - "tt5201934", - "tt5966604", - "tt6103318", - "tt0038499", - "tt3638444", - "tt3139682", - "tt0061391", - "tt0041967", - "tt3638644", - "tt1974420", - "tt0045920", - "tt0035896", - "tt4933238", - "tt2363481", - "tt3325098", - "tt4027504", - "tt3131050", - "tt0031505", - "tt6818874", - "tt0107178", - "tt0089200", - "tt4126438", - "tt0046511", - "tt1710417", - "tt2511428", - "tt4462082", - "tt0116075", - "tt1710396", - "tt7811942", - "tt3052652", - "tt9896916", - "tt3830420", - "tt0896811", - "tt8191502", - "tt4131658", - "tt7769716", - "tt4123650", - "tt5119160", - "tt2556936", - "tt0115645", - "tt0023551", - "tt7986672", - "tt6141886", - "tt2069797", - "tt0096969", - "tt5092484", - "tt4813254", - "tt5746054", - "tt0114594", - "tt0101983", - "tt4714568", - "tt0074906", - "tt1901040", - "tt0050356", - "tt0092115", - "tt0089087", - "tt0103130", - "tt0280380", - "tt0037415", - "tt2474024", - "tt2436682", - "tt1913166", - "tt0055257", - "tt0072951", - "tt0120029", - "tt0045883", - "tt0081207", - "tt0116118", - "tt0100142", - "tt0073092", - "tt0098194", - "tt0090930", - "tt1171222", - "tt0099277", - "tt1718924", - "tt1786751", - "tt0089013", - "tt0355954", - "tt1456060", - "tt0083739", - "tt1736150", - "tt0240772", - "tt0480516", - "tt0378947", - "tt2312890", - "tt3451956", - "tt0025833", - "tt1135525", - "tt0033021", - "tt5252674", - "tt0056194", - "tt1790867", - "tt0052618", - "tt0466845", - "tt4236310", - "tt0050815", - "tt1167319", - "tt0264796", - "tt0896036", - "tt0043069", - "tt0023814", - "tt8111636", - "tt1319712", - "tt0116736", - "tt0255441", - "tt1321862", - "tt0080752", - "tt0069895", - "tt0036670", - "tt0041263", - "tt0080117", - "tt6333000", - "tt0080461", - "tt7266936", - "tt3384938", - "tt2115295", - "tt0087921", - "tt3622120", - "tt8764762", - "tt0049291", - "tt0283897", - "tt0259484", - "tt2150369", - "tt0086631", - "tt0120667", - "tt0030522", - "tt5225338", - "tt2286990", - "tt0099697", - "tt1667307", - "tt0027657", - "tt0249677", - "tt0086205", - "tt0065051", - "tt0783598", - "tt0090315", - "tt0051383", - "tt0084652", - "tt3859304", - "tt0104511", - "tt1181614", - "tt0023238", - "tt1815708", - "tt1233219", - "tt0052151", - "tt0112625", - "tt0780548", - "tt0048342", - "tt0096380", - "tt0059903", - "tt0116502", - "tt5440730", - "tt0118541", - "tt4807408", - "tt0057193", - "tt0356721", - "tt0042332", - "tt0073387", - "tt1274293", - "tt0058947", - "tt0837563", - "tt2520306", - "tt1628841", - "tt0112384", - "tt0061578", - "tt0116629", - "tt7590334", - "tt0104694", - "tt0083184", - "tt0079429", - "tt0059578", - "tt10438648", - "tt2719752", - "tt0093793", - "tt0058461", - "tt0066831", - "tt6175764", - "tt0060196", - "tt8712750", - "tt0089346", - "tt0929860", - "tt2337981", - "tt0040366", - "tt0040536", - "tt0103923", - "tt1441940", - "tt3837196", - "tt1692190", - "tt0042451", - "tt0119142", - "tt1107319", - "tt2217859", - "tt6772804", - "tt4503598", - "tt0073636", - "tt0085271", - "tt0048445", - "tt10100664", - "tt3060492", - "tt3588852", - "tt1132285", - "tt1525890", - "tt2095605", - "tt1802197", - "tt0089901", - "tt1781058", - "tt0270707", - "tt0071910", - "tt0087747", - "tt2570858", - "tt2271563", - "tt0073694", - "tt0286322", - "tt1640484", - "tt0097044", - "tt0816520", - "tt0090660", - "tt2243389", - "tt0037865", - "tt0036027", - "tt8551868", - "tt7146372", - "tt0021885", - "tt6865690", - "tt4126476", - "tt0079988", - "tt9860860", - "tt2538778", - "tt2011271", - "tt3608930", - "tt10514532", - "tt7188002", - "tt5942864", - "tt1855175", - "tt7458872", - "tt0090319", - "tt9537532", - "tt4934870", - "tt6007614", - "tt6198058", - "tt7075594", - "tt0101453", - "tt0101786", - "tt0041298", - "tt4921370", - "tt0139358", - "tt0056059", - "tt0139670", - "tt0101821", - "tt0046313", - "tt5914350", - "tt0139624", - "tt7476946", - "tt0078872", - "tt0034401", - "tt0109198", - "tt0030404", - "tt0040866", - "tt1132449", - "tt0018578", - "tt0445396", - "tt0050330", - "tt0153033", - "tt0151375", - "tt0152575", - "tt0233732", - "tt0233704", - "tt0233703", - "tt0076054", - "tt0139612", - "tt0034424", - "tt0150469", - "tt0152554", - "tt0152255", - "tt0139148", - "tt0152048", - "tt0078492", - "tt0139191", - "tt4958596", - "tt0032723", - "tt0234814", - "tt0090163", - "tt0036644", - "tt0150444", - "tt1518812", - "tt1235448", - "tt0153712", - "tt0151693", - "tt3729920", - "tt0150241", - "tt0037563", - "tt0011742", - "tt0153478", - "tt0150044", - "tt4746506", - "tt7063210", - "tt3152602", - "tt0010962", - "tt7105944", - "tt7278824", - "tt3720788", - "tt0120728", - "tt0081748", - "tt0100594", - "tt0105699", - "tt1059836", - "tt0035405", - "tt2481480", - "tt0067893", - "tt0309912", - "tt0358349", - "tt0279493", - "tt3791216", - "tt3610746", - "tt0023027", - "tt7519174", - "tt2784936", - "tt0113321", - "tt0022158", - "tt0800003", - "tt0061122", - "tt6301452", - "tt0031762", - "tt9783778", - "tt5096928", - "tt10432620", - "tt0103845", - "tt6866224", - "tt6952960", - "tt5275828", - "tt5084204", - "tt0101793", - "tt0494225", - "tt5457582", - "tt7056906", - "tt0107147", - "tt1845866", - "tt4192652", - "tt4838534", - "tt0064843", - "tt0396688", - "tt0419815", - "tt0091786", - "tt8225174", - "tt0424823", - "tt0082464", - "tt1611180", - "tt10468872", - "tt3421614", - "tt0059043", - "tt0454084", - "tt0077655", - "tt3521134", - "tt0437232", - "tt3467412", - "tt0118771", - "tt4702752", - "tt0441007", - "tt0104033", - "tt2258285", - "tt1260502", - "tt0430576", - "tt0166943", - "tt0093209", - "tt1121977", - "tt0085478", - "tt0109842", - "tt0080391", - "tt0423169", - "tt0424993", - "tt0087056", - "tt0053137", - "tt0106341", - "tt1182921", - "tt0071524", - "tt0098097", - "tt0495596", - "tt0056412", - "tt0059885", - "tt3505950", - "tt0048977", - "tt1270835", - "tt0037515", - "tt1705952", - "tt0062407", - "tt2639344", - "tt2193265", - "tt1870419", - "tt4666726", - "tt2376218", - "tt0059825", - "tt1010271", - "tt0099160", - "tt2112096", - "tt10204316", - "tt0088414", - "tt0098663", - "tt5033290", - "tt7537434", - "tt1636817", - "tt0077474", - "tt0110823", - "tt0095863", - "tt0051525", - "tt0145893", - "tt0082474", - "tt1756799", - "tt1878841", - "tt0038057", - "tt0066740", - "tt2043933", - "tt0099204", - "tt1523483", - "tt1725986", - "tt0298744", - "tt0091538", - "tt0099180", - "tt0050658", - "tt1564777", - "tt0064418", - "tt0020640", - "tt0047811", - "tt5522310", - "tt6368508", - "tt8749146", - "tt0082622", - "tt0042994", - "tt2181885", - "tt0280653", - "tt4142364", - "tt1911662", - "tt0099484", - "tt0077369", - "tt0412798", - "tt3662066", - "tt0053172", - "tt0090670", - "tt7058612", - "tt7529650", - "tt1922685", - "tt0075760", - "tt0914797", - "tt3513498", - "tt0080009", - "tt0064603", - "tt0047136", - "tt1183374", - "tt1931602", - "tt0035093", - "tt0093075", - "tt3976144", - "tt5195412", - "tt1742683", - "tt0101969", - "tt0893412", - "tt3722070", - "tt3445702", - "tt1371155", - "tt0083806", - "tt0037441", - "tt8323104", - "tt0057877", - "tt5200368", - "tt8783146", - "tt4249580", - "tt0035575", - "tt10182822", - "tt10017680", - "tt0120724", - "tt0113690", - "tt4067062", - "tt1226240", - "tt0047834", - "tt0089424", - "tt7458762", - "tt0094631", - "tt0052948", - "tt7297156", - "tt2709962", - "tt0119225", - "tt6175078", - "tt0107282", - "tt1661199", - "tt6423998", - "tt8001400", - "tt9103622", - "tt0062376", - "tt6588838", - "tt5172404", - "tt0419946", - "tt0448075", - "tt3733778", - "tt0082517", - "tt0095243", - "tt3528666", - "tt1179891", - "tt0075213", - "tt1266027", - "tt0104549", - "tt3203616", - "tt4935334", - "tt2334841", - "tt0057372", - "tt1047540", - "tt5781798", - "tt2319580", - "tt0060955", - "tt2304771", - "tt0205873", - "tt0041866", - "tt7368186", - "tt0120701", - "tt0377062", - "tt1701990", - "tt0077405", - "tt0118055", - "tt2406658", - "tt0108556", - "tt0062824", - "tt0469021", - "tt0034248", - "tt0105386", - "tt0847879", - "tt8318348", - "tt10048556", - "tt0088855", - "tt0103743", - "tt1823067", - "tt1667150", - "tt0088135", - "tt0099850", - "tt0031886", - "tt0010559", - "tt0079766", - "tt0087852", - "tt0095396", - "tt0203672", - "tt0015016", - "tt0093305", - "tt0953981", - "tt0093185", - "tt0100232", - "tt3835080", - "tt1244659", - "tt0069137", - "tt2247476", - "tt0086950", - "tt0083624", - "tt0058869", - "tt0058349", - "tt7701096", - "tt0381971", - "tt0084807", - "tt1391034", - "tt0043137", - "tt0488870", - "tt0097457", - "tt9600932", - "tt2387469", - "tt6871634", - "tt0288906", - "tt0192731", - "tt0239655", - "tt0105378", - "tt0086373", - "tt2083931", - "tt8582458", - "tt3520418", - "tt9310460", - "tt0087892", - "tt3708886", - "tt0072730", - "tt1320291", - "tt0068768", - "tt0484877", - "tt0073705", - "tt2383068", - "tt0137291", - "tt0076740", - "tt4972062", - "tt1018818", - "tt0093431", - "tt5007760", - "tt0105813", - "tt0997047", - "tt3685490", - "tt4357288", - "tt2447750", - "tt0070334", - "tt5887566", - "tt0023775", - "tt0044519", - "tt0094908", - "tt0127557", - "tt0036855", - "tt10516984", - "tt6044414", - "tt0084788", - "tt0084920", - "tt10195288", - "tt0049248", - "tt0093418", - "tt0088765", - "tt0105211", - "tt0093596", - "tt0120703", - "tt0043660", - "tt0303297", - "tt1232162", - "tt0097722", - "tt0074149", - "tt0105629", - "tt2095649", - "tt0071249", - "tt0073202", - "tt0068315", - "tt0075345", - "tt0071486", - "tt0032484", - "tt6133806", - "tt0041546", - "tt0077355", - "tt1763264", - "tt7380420", - "tt0492912", - "tt0076451", - "tt1436568", - "tt0044837", - "tt0367232", - "tt1152268", - "tt0330181", - "tt0107668", - "tt0413466", - "tt4659490", - "tt0815230", - "tt0396190", - "tt1680114", - "tt1663207", - "tt0087365", - "tt7207158", - "tt3707106", - "tt0457319", - "tt0321961", - "tt0252649", - "tt0119208", - "tt0100107", - "tt0271020", - "tt0391908", - "tt0283015", - "tt0114095", - "tt0097965", - "tt0075223", - "tt2011159", - "tt1555064", - "tt0072926", - "tt0134983", - "tt1798243", - "tt0060397", - "tt0039302", - "tt0482629", - "tt0076257", - "tt3726704", - "tt0493949", - "tt7979492", - "tt0050086", - "tt3733774", - "tt1778924", - "tt2366608", - "tt1185393", - "tt3702652", - "tt4109096", - "tt0341611", - "tt0426501", - "tt0893331", - "tt2706120", - "tt1473179", - "tt3702088", - "tt0071588", - "tt0325214", - "tt10524262", - "tt0424114", - "tt0076788", - "tt0100301", - "tt0108281", - "tt0248845", - "tt4920130", - "tt0078351", - "tt0865957", - "tt1621780", - "tt0459425", - "tt2402091", - "tt0299172", - "tt4667094", - "tt1611840", - "tt1611907", - "tt0027752", - "tt3630276", - "tt0280672", - "tt0247199", - "tt3644730", - "tt0065215", - "tt0034587", - "tt3098654", - "tt1800677", - "tt1291125", - "tt0091375", - "tt0164114", - "tt1572168", - "tt1441951", - "tt0045897", - "tt2235779", - "tt10376958", - "tt0070948", - "tt4030600", - "tt0102943", - "tt0055277", - "tt2725962", - "tt1630036", - "tt2349144", - "tt0417782", - "tt1654523", - "tt0142192", - "tt0100260", - "tt0434124", - "tt0027996", - "tt2183034", - "tt0100212", - "tt0091886", - "tt2304953", - "tt0083833", - "tt0120186", - "tt4185862", - "tt0047849", - "tt1747958", - "tt0116531", - "tt0116704", - "tt0439238", - "tt0214555", - "tt0104897", - "tt1928330", - "tt0117965", - "tt4738626", - "tt3220900", - "tt0090182", - "tt10353560", - "tt2699466", - "tt3499542", - "tt0280438", - "tt10195614", - "tt0800241", - "tt0327643", - "tt2828022", - "tt0064338", - "tt1127177", - "tt0062741", - "tt0279781", - "tt0285728", - "tt3515632", - "tt5885926", - "tt3671052", - "tt0361620", - "tt0117011", - "tt0027800", - "tt0100911", - "tt0032258", - "tt1042424", - "tt0076070", - "tt0115632", - "tt0489281", - "tt0169858", - "tt1467280", - "tt0063665", - "tt0059076", - "tt0145653", - "tt4581576", - "tt4196450", - "tt1468846", - "tt2368553", - "tt0131704", - "tt0026912", - "tt0038991", - "tt0158622", - "tt0105226", - "tt0107473", - "tt1545660", - "tt0095270", - "tt0048356", - "tt0361089", - "tt0089017", - "tt0045891", - "tt7390044", - "tt2140559", - "tt1196204", - "tt0083798", - "tt0101566", - "tt0422774", - "tt3577624", - "tt0058708", - "tt0067848", - "tt8476314", - "tt7424930", - "tt5667650", - "tt0095647", - "tt0245429", - "tt10384404", - "tt8787116", - "tt0103783", - "tt0043012", - "tt0498567", - "tt2677722", - "tt0077892", - "tt8286894", - "tt2288155", - "tt0113442", - "tt0020842", - "tt0095629", - "tt0109498", - "tt0105869", - "tt6490394", - "tt0016028", - "tt2398249", - "tt0045555", - "tt6892400", - "tt2085930", - "tt0900387", - "tt1740047", - "tt0100685", - "tt0070290", - "tt0098141", - "tt0099165", - "tt0081554", - "tt1748207", - "tt0073631", - "tt0107711", - "tt0367093", - "tt0178737", - "tt1767382", - "tt0099726", - "tt0160399", - "tt1634121", - "tt1959332", - "tt0050669", - "tt0088889", - "tt0043671", - "tt6400166", - "tt0271263", - "tt0078902", - "tt2309961", - "tt0106881", - "tt2388637", - "tt9497146", - "tt0049552", - "tt8836988", - "tt0084335", - "tt7461200", - "tt0284034", - "tt6772946", - "tt0088729", - "tt5378092", - "tt0084658", - "tt0074599", - "tt0070716", - "tt0069031", - "tt0066811", - "tt3197802", - "tt0047878", - "tt0087130", - "tt2417970", - "tt0088683", - "tt0448090", - "tt10243660", - "tt0071577", - "tt0301976", - "tt0030993", - "tt0083190", - "tt2799166", - "tt0278500", - "tt1198156", - "tt5977276", - "tt0085701", - "tt0388182", - "tt0086993", - "tt0100135", - "tt2172985", - "tt0073440", - "tt3068194", - "tt0126388", - "tt0086320", - "tt0090021", - "tt2910274", - "tt0418773", - "tt0119115", - "tt0924129", - "tt3352390", - "tt0077523", - "tt0120654", - "tt0060522", - "tt0080377", - "tt0113501", - "tt0094715", - "tt0076670", - "tt0083943", - "tt0061617", - "tt7083870", - "tt6428170", - "tt10358740", - "tt0078908", - "tt6383494", - "tt0114720", - "tt3362670", - "tt1734493", - "tt0051207", - "tt0117420", - "tt0334541", - "tt0110657", - "tt0048281", - "tt0089869", - "tt0405676", - "tt0040525", - "tt0097647", - "tt0046816", - "tt0055018", - "tt3369806", - "tt2872462", - "tt3231054", - "tt0097940", - "tt0089560", - "tt0063135", - "tt4196848", - "tt0113419", - "tt2235108", - "tt0160184", - "tt0120533", - "tt1925431", - "tt0016953", - "tt0058586", - "tt6982794", - "tt0046876", - "tt6338912", - "tt3575954", - "tt1325593", - "tt0114857", - "tt0098319", - "tt3149038", - "tt4255304", - "tt0042041", - "tt0114682", - "tt3308620", - "tt8840882", - "tt1714210", - "tt0258068", - "tt1510938", - "tt0078966", - "tt0388980", - "tt0100419", - "tt1932718", - "tt2023690", - "tt0051036", - "tt2479800", - "tt0107501", - "tt0080319", - "tt0038559", - "tt0077413", - "tt0068762", - "tt0067128", - "tt0106770", - "tt0082869", - "tt0104466", - "tt0093378", - "tt0100140", - "tt1894476", - "tt1441912", - "tt3544082", - "tt2094018", - "tt6873778", - "tt0968264", - "tt2452254", - "tt0175755", - "tt0450340", - "tt4154664", - "tt2326612", - "tt0091954", - "tt1659343", - "tt0078718", - "tt0085811", - "tt0108162", - "tt0037382", - "tt0091828", - "tt0176269", - "tt3813310", - "tt1405365", - "tt0117039", - "tt0082089", - "tt0045810", - "tt0120483", - "tt0093493", - "tt0091499", - "tt1226681", - "tt0066011", - "tt0063518", - "tt3554164", - "tt3835674", - "tt1905041", - "tt4241904", - "tt2458952", - "tt0066765", - "tt0094602", - "tt0218817", - "tt5389736", - "tt2391950", - "tt4653808", - "tt5836432", - "tt7221072", - "tt2386502", - "tt0112527", - "tt7403570", - "tt0046187", - "tt0277296", - "tt6245644", - "tt6107404", - "tt0085244", - "tt1013752", - "tt0092494", - "tt0065724", - "tt0078723", - "tt0360009", - "tt0086491", - "tt1596343", - "tt0192614", - "tt0242445", - "tt0095444", - "tt0093818", - "tt0086216", - "tt1971352", - "tt1204340", - "tt0087995", - "tt2059171", - "tt0426459", - "tt0344854", - "tt0082509", - "tt3247714", - "tt0063374", - "tt0101745", - "tt0802948", - "tt1381404", - "tt0099763", - "tt2088003", - "tt1541160", - "tt0105121", - "tt3787590", - "tt1266029", - "tt0420293", - "tt3499096", - "tt0065988", - "tt0926129", - "tt0263757", - "tt1366365", - "tt0054387", - "tt1594562", - "tt0485851", - "tt0303933", - "tt1032815", - "tt0110167", - "tt0113041", - "tt0089003", - "tt2097307", - "tt0071402", - "tt2261331", - "tt0265298", - "tt2368619", - "tt6428676", - "tt0118636", - "tt3721936", - "tt0086927", - "tt0168786", - "tt2493450", - "tt1828968", - "tt6634646", - "tt7165594", - "tt3512282", - "tt1262981", - "tt4872098", - "tt1261978", - "tt0067093", - "tt0109520", - "tt4370926", - "tt2375779", - "tt3216380", - "tt0804555", - "tt1865567", - "tt3077214", - "tt0095253", - "tt1496422", - "tt0107034", - "tt0078446", - "tt0100477", - "tt0117589", - "tt0464196", - "tt0069947", - "tt0087597", - "tt0101764", - "tt0116242", - "tt0139462", - "tt0195945", - "tt1596345", - "tt0109642", - "tt1234654", - "tt0040506", - "tt0060666", - "tt4191580", - "tt6394244", - "tt0399327", - "tt6621408", - "tt0425571", - "tt5096246", - "tt8530978", - "tt0085382", - "tt4844636", - "tt0899138", - "tt0088758", - "tt2386922", - "tt8160864", - "tt6016744", - "tt8840224", - "tt5450040", - "tt0109830", - "tt7042862", - "tt10206188", - "tt0339147", - "tt7188868", - "tt9044128", - "tt6912580", - "tt6511932", - "tt1869682", - "tt3701862", - "tt7339584", - "tt3949658", - "tt5094192", - "tt8443704", - "tt9130552", - "tt0149624", - "tt5321814", - "tt8717008", - "tt7390536", - "tt3573354", - "tt9866284", - "tt5836246", - "tt4330370", - "tt6167014", - "tt5112424", - "tt8772926", - "tt0212985", - "tt0116745", - "tt6857112", - "tt10215424", - "tt4819544", - "tt3416742", - "tt4695098", - "tt10443324", - "tt0486583", - "tt0337692", - "tt0068555", - "tt0119314", - "tt0419294", - "tt0108238", - "tt0086637", - "tt0070510", - "tt4190530", - "tt8846072", - "tt4876096", - "tt0365929", - "tt0170691", - "tt3205376", - "tt0097027", - "tt0085750", - "tt8346446", - "tt0281322", - "tt1714203", - "tt3387542", - "tt1426329", - "tt1156466", - "tt0810001", - "tt4158096", - "tt0881891", - "tt0093300", - "tt4520364", - "tt6215446", - "tt10376844", - "tt0070707", - "tt6967644", - "tt0047879", - "tt0024055", - "tt0022021", - "tt0099300", - "tt0021092", - "tt0042648", - "tt10136902", - "tt0077189", - "tt2973516", - "tt0022569", - "tt2510998", - "tt0043625", - "tt0022149", - "tt0022243", - "tt0022046", - "tt0021374", - "tt0021377", - "tt0093491", - "tt1053810", - "tt1941705", - "tt3097204", - "tt0065126", - "tt1674784", - "tt0088172", - "tt2828996", - "tt0091149", - "tt0407265", - "tt0202470", - "tt8563452", - "tt1423995", - "tt1598828", - "tt0089457", - "tt0120032", - "tt0051459", - "tt0060390", - "tt0306685", - "tt2034031", - "tt0038109", - "tt0308055", - "tt0387514", - "tt0068327", - "tt0369226", - "tt0398913", - "tt0913951", - "tt0309377", - "tt0077538", - "tt0332580", - "tt2243537", - "tt0088794", - "tt0107076", - "tt0105585", - "tt0155975", - "tt0299213", - "tt0098384", - "tt0266465", - "tt4139124", - "tt0117247", - "tt0079588", - "tt0049366", - "tt0875034", - "tt0107616", - "tt1825157", - "tt1341188", - "tt3099498", - "tt10440380", - "tt0090142", - "tt0110950", - "tt0118789", - "tt0417217", - "tt1038072", - "tt0192122", - "tt0283652", - "tt9114472", - "tt1462769", - "tt1640459", - "tt0109068", - "tt0058621", - "tt6942194", - "tt8243286", - "tt2345737", - "tt0106226", - "tt0096183", - "tt0073240", - "tt0227984", - "tt0076853", - "tt1623757", - "tt8852538", - "tt2461150", - "tt0116126", - "tt0067594", - "tt0848557", - "tt2170299", - "tt1308729", - "tt3169706", - "tt1124037", - "tt0112950", - "tt2967224", - "tt0282163", - "tt0084434", - "tt0947802", - "tt1930421", - "tt2848222", - "tt0094957", - "tt0489318", - "tt0929618", - "tt4893328", - "tt2221484", - "tt0189047", - "tt3532544", - "tt0119171", - "tt1740784", - "tt0222666", - "tt2081213", - "tt0444723", - "tt0978670", - "tt2231253", - "tt0467004", - "tt4004084", - "tt0428390", - "tt0115680", - "tt0118652", - "tt0401711", - "tt0093692", - "tt0893509", - "tt0144528", - "tt0088933", - "tt0460435", - "tt0087015", - "tt7286908", - "tt0113443", - "tt4136084", - "tt0891527", - "tt0395630", - "tt2771372", - "tt0045877", - "tt0088000", - "tt0056576", - "tt1084950", - "tt0091541", - "tt1213648", - "tt1604560", - "tt6732748", - "tt0265651", - "tt6977218", - "tt4817466", - "tt4015500", - "tt6170262", - "tt6220752", - "tt2316479", - "tt0089338", - "tt0089907", - "tt0811138", - "tt7374948", - "tt0096463", - "tt0103060", - "tt1837709", - "tt0102536", - "tt0105151", - "tt0108308", - "tt0117631", - "tt4126340", - "tt0251114", - "tt0245686", - "tt0115956", - "tt2231554", - "tt0093260", - "tt1703199", - "tt0042546", - "tt0103939", - "tt0092493", - "tt1764183", - "tt0086837", - "tt0408345", - "tt0048607", - "tt0078792", - "tt0016654", - "tt0086197", - "tt0047479", - "tt0142453", - "tt0105265", - "tt9407156", - "tt1033492", - "tt0449089", - "tt0046885", - "tt7339826", - "tt5303106", - "tt0327247", - "tt0046036", - "tt0036868", - "tt0073659", - "tt0106387", - "tt0268040", - "tt4653272", - "tt0169951", - "tt0087781", - "tt0039311", - "tt0119918", - "tt0323642", - "tt0247427", - "tt0067800", - "tt1971325", - "tt2105044", - "tt0300969", - "tt0391304", - "tt0097123", - "tt0139414", - "tt2234003", - "tt8498324", - "tt0131857", - "tt0218922", - "tt1748227", - "tt3704538", - "tt0111149", - "tt0060176", - "tt0265029", - "tt0119349", - "tt0844479", - "tt0118972", - "tt0787474", - "tt1043726", - "tt0067302", - "tt0388125", - "tt0023969", - "tt2359024", - "tt0385307", - "tt8119680", - "tt6021482", - "tt0092636", - "tt0067023", - "tt1850457", - "tt1583420", - "tt0091419", - "tt0034786", - "tt0117887", - "tt1742334", - "tt0116683", - "tt0036931", - "tt0472160", - "tt1258972", - "tt0031951", - "tt0390022", - "tt6241270", - "tt0264395", - "tt0285492", - "tt0369436", - "tt0069762", - "tt0377713", - "tt0800308", - "tt0021884", - "tt2390361", - "tt8015080", - "tt8478602", - "tt2295722", - "tt3704700", - "tt1318517", - "tt7655524404", - "tt7250378", - "tt0462485", - "tt0092220", - "tt6469548", - "tt1680133", - "tt0113198", - "tt0208185", - "tt3350436", - "tt0826593", - "tt4824256", - "tt0087050", - "tt0206226", - "tt5338600", - "tt4049956", - "tt9204606", - "tt0349193", - "tt1529240", - "tt7767874", - "tt0051372", - "tt0093854", - "tt2665470", - "tt6506146", - "tt1143110", - "tt4689268", - "tt0092627", - "tt10331828", - "tt10303892", - "tt8155182", - "tt9239888", - "tt1554929", - "tt6975598", - "tt8890582", - "tt6024768", - "tt3496048", - "tt0300051", - "tt0119468", - "tt1591479", - "tt0206314", - "tt0145531", - "tt2039393", - "tt0120177", - "tt2377322", - "tt0084739", - "tt1034389", - "tt0094947", - "tt2085765", - "tt1343046", - "tt0131325", - "tt0097937", - "tt0111301", - "tt1226753", - "tt1602479", - "tt1401690", - "tt4235342", - "tt0139809", - "tt0866439", - "tt0113481", - "tt0119994", - "tt4513674", - "tt1991245", - "tt0075029", - "tt0986233", - "tt0092086", - "tt0105464", - "tt0070393", - "tt0116518", - "tt0103749", - "tt0891592", - "tt0101242", - "tt5833186", - "tt0211792", - "tt0350777", - "tt0242193", - "tt4290974", - "tt0299110", - "tt0082679", - "tt0282482", - "tt2837866", - "tt0185364", - "tt0072405", - "tt6523328", - "tt0120499", - "tt9382596", - "tt0075988", - "tt0083701", - "tt4327418", - "tt0096294", - "tt0085390", - "tt5952594", - "tt0040647", - "tt3576060", - "tt7052108", - "tt3589224", - "tt6472976", - "tt2234534", - "tt6450662", - "tt7054636", - "tt0118607", - "tt8010850", - "tt3514826", - "tt1312156", - "tt1360795", - "tt0056218", - "tt0139239", - "tt1236242", - "tt1756487", - "tt0116225", - "tt1075419", - "tt1054119", - "tt0085794", - "tt0077928", - "tt0272362", - "tt0090863", - "tt0851532", - "tt1491044", - "tt1517633", - "tt0115734", - "tt0975645", - "tt0092675", - "tt0113651", - "tt0067185", - "tt0105812", - "tt0093426", - "tt1173947", - "tt0781084", - "tt1912398", - "tt1270767", - "tt0884732", - "tt0244092", - "tt1528071", - "tt2387433", - "tt1726669", - "tt0051720", - "tt0107808", - "tt9081562", - "tt2870612", - "tt0164181", - "tt1082868", - "tt0120686", - "tt0070051", - "tt0100047", - "tt0971209", - "tt0264429", - "tt0305711", - "tt0491244", - "tt5461944", - "tt0143952", - "tt10377036", - "tt0120646", - "tt9577852", - "tt4002210", - "tt0113500", - "tt5932728", - "tt0119086", - "tt1220198", - "tt0086541", - "tt2501366", - "tt0048424", - "tt0049406", - "tt2179116", - "tt2370248", - "tt1625346", - "tt0038355", - "tt0043456", - "tt0961722", - "tt0132477", - "tt0113161", - "tt0117333", - "tt0089893", - "tt1781922", - "tt1605717", - "tt0087078", - "tt2002718", - "tt1418377", - "tt1056026", - "tt2102496", - "tt0411061", - "tt1600195", - "tt0094862", - "tt1235522", - "tt0377471", - "tt0303816", - "tt0028333", - "tt0112401", - "tt0457510", - "tt0090329", - "tt1456635", - "tt1853739", - "tt2230358", - "tt0099253", - "tt1385867", - "tt0103956", - "tt2980592", - "tt0289848", - "tt0154506", - "tt3280262", - "tt0383216", - "tt0144120", - "tt1020072", - "tt0396555", - "tt1172049", - "tt0098554", - "tt1396218", - "tt1034331", - "tt1322269", - "tt0086034", - "tt0070379", - "tt2357129", - "tt0086979", - "tt0208003", - "tt0072034", - "tt0015864", - "tt0382077", - "tt0270288", - "tt0118615", - "tt0119229", - "tt0090264", - "tt1161864", - "tt0071807", - "tt0070328", - "tt0071360", - "tt0086006", - "tt3063516", - "tt0112818", - "tt0062512", - "tt0479997", - "tt0097742", - "tt0126886", - "tt2431286", - "tt0364970", - "tt0066995", - "tt1142977", - "tt1226273", - "tt0357277", - "tt0174708", - "tt0026385", - "tt9428190", - "tt0174707", - "tt1622547", - "tt0044860", - "tt5968394", - "tt7771454", - "tt0078352", - "tt1327773", - "tt0376136", - "tt0072750", - "tt0058409", - "tt1839492", - "tt0054188", - "tt0068650", - "tt0078969", - "tt0060086", - "tt0063598", - "tt0031566", - "tt1007029", - "tt0044706", - "tt1800246", - "tt0120902", - "tt0780653", - "tt8912932", - "tt0475276", - "tt1408253", - "tt4034354", - "tt0095294", - "tt0113855", - "tt2503944", - "tt0118689", - "tt0064665", - "tt1114740", - "tt0419706", - "tt0093177", - "tt1438176", - "tt0113101", - "tt0256415", - "tt0044081", - "tt0457007", - "tt0499480", - "tt1319718", - "tt0426883", - "tt3205846", - "tt1425257", - "tt0405296", - "tt2474906", - "tt2957774", - "tt0116014", - "tt1611845", - "tt1551621", - "tt0423176", - "tt10452178", - "tt9445114", - "tt1694518", - "tt0036695", - "tt1773370", - "tt8006926", - "tt2969656", - "tt0068676", - "tt0028358", - "tt4034622", - "tt2294677", - "tt2347134", - "tt2599716", - "tt1314170", - "tt0408524", - "tt3070936", - "tt1845838", - "tt1964777", - "tt1723047", - "tt2369205", - "tt2852400", - "tt3144098", - "tt2326204", - "tt1843287", - "tt1718747", - "tt0161081", - "tt2175669", - "tt1924429", - "tt2157346", - "tt0263488", - "tt3117746", - "tt0040897", - "tt2197128", - "tt3414382", - "tt0117438", - "tt2644714", - "tt1307068", - "tt2404311", - "tt0112431", - "tt0365907", - "tt1911644", - "tt0070608", - "tt0109579", - "tt1956620", - "tt0032976", - "tt1179034", - "tt0452594", - "tt0790736", - "tt0325805", - "tt0251160", - "tt0033563", - "tt0765010", - "tt0034492", - "tt2024432", - "tt0184894", - "tt0259446", - "tt0032910", - "tt1524137", - "tt1790886", - "tt0043274", - "tt0257360", - "tt0100150", - "tt0450232", - "tt0427327", - "tt0044079", - "tt0322330", - "tt0429078", - "tt0046183", - "tt0120643", - "tt1298648", - "tt0071230", - "tt4172430", - "tt0079522", - "tt2592808", - "tt0103874", - "tt0475723", - "tt0228094", - "tt1890373", - "tt1193096", - "tt0058331", - "tt0058890", - "tt0069768", - "tt2990738", - "tt0913425", - "tt1534564", - "tt0390221", - "tt5224834", - "tt1160525", - "tt1054122", - "tt0090304", - "tt0118819", - "tt1104123", - "tt0365847", - "tt0318462", - "tt0456743", - "tt0250258", - "tt1351685", - "tt3759298", - "tt1027718", - "tt0106308", - "tt4247618", - "tt0417148", - "tt1764234", - "tt0433386", - "tt0081150", - "tt0060645", - "tt5163226", - "tt4503906", - "tt0424345", - "tt5014122", - "tt5889204", - "tt0990407", - "tt2101441", - "tt0190641", - "tt2371163", - "tt1922561", - "tt1398426", - "tt0228092", - "tt0410297", - "tt0472399", - "tt0242423", - "tt0120647", - "tt0095159", - "tt3086386", - "tt0215129", - "tt0272338", - "tt0100133", - "tt0087998", - "tt0472033", - "tt1100089", - "tt0391198", - "tt0805564", - "tt1935179", - "tt1915581", - "tt0041959", - "tt6301712", - "tt0021749", - "tt0094291", - "tt0389722", - "tt1139328", - "tt0301345", - "tt0070547", - "tt0036775", - "tt0050476", - "tt0346491", - "tt0159097", - "tt1231587", - "tt0452003", - "tt0061852", - "tt1528100", - "tt0283426", - "tt0938283", - "tt2549540", - "tt0051642", - "tt0074521", - "tt0120681", - "tt0075031", - "tt0062850", - "tt0073702", - "tt0063442", - "tt0065462", - "tt0341555", - "tt0056069", - "tt6040806", - "tt0055254", - "tt3002798", - "tt5673432", - "tt0055529", - "tt2318440", - "tt0203433", - "tt0081782", - "tt6892462", - "tt5781458", - "tt0453091", - "tt0058994", - "tt1517451", - "tt0077770", - "tt0156329", - "tt0053720", - "tt0072634", - "tt0070844", - "tt0181956", - "tt2008647", - "tt0986361", - "tt0204360", - "tt0053992", - "tt0055404", - "tt7218804", - "tt2209764", - "tt0079596", - "tt0363547", - "tt0352248", - "tt0241303", - "tt0339291", - "tt0086622", - "tt0010853", - "tt0100157", - "tt1655442", - "tt0027977", - "tt0363988", - "tt1623205", - "tt1284575", - "tt0388482", - "tt10289996", - "tt0914798", - "tt1111422", - "tt1124035", - "tt0117665", - "tt0037469", - "tt1815862", - "tt0043014", - "tt0276751", - "tt0089927", - "tt0029583", - "tt2053463", - "tt3330944", - "tt1701202", - "tt8385976", - "tt1160369", - "tt0327554", - "tt4599588", - "tt2379460", - "tt5562100", - "tt0092001", - "tt0102728", - "tt2388050", - "tt0100438", - "tt9678928", - "tt6612946", - "tt0462160", - "tt3416536", - "tt8693770", - "tt6292852", - "tt6704898", - "tt9556730", - "tt0165543", - "tt1650044", - "tt6408924", - "tt4061944", - "tt5862166", - "tt6360394", - "tt6905676", - "tt0098662", - "tt9139848", - "tt7611944", - "tt0165433", - "tt4982252", - "tt0234817", - "tt2107850", - "tt1125849", - "tt3377798", - "tt1587278", - "tt0082761", - "tt7844450", - "tt0034583", - "tt0031381", - "tt3068544", - "tt3400060", - "tt1799585", - "tt4586114", - "tt3983732", - "tt0196229", - "tt0119396", - "tt3907206", - "tt3484140", - "tt0449059", - "tt2024469", - "tt0425210", - "tt0489099", - "tt1608290", - "tt0066769", - "tt4498760", - "tt0055134", - "tt2004420", - "tt0290002", - "tt3719948", - "tt0091561", - "tt8516544", - "tt1231583", - "tt0068742", - "tt6473402", - "tt0274309", - "tt0486576", - "tt0116367", - "tt0071278", - "tt0105159", - "tt8194318", - "tt4433172", - "tt0056989", - "tt0066900", - "tt0071154", - "tt0065440", - "tt0055534", - "tt1063669", - "tt4484426", - "tt3240102", - "tt0071308", - "tt0075001", - "tt0455841", - "tt4661680", - "tt0066600", - "tt0134821", - "tt0073406", - "tt0154468", - "tt0440003", - "tt0055022", - "tt0093633", - "tt0080166", - "tt0117260", - "tt5167934", - "tt3403194", - "tt3827684", - "tt6940908", - "tt6902696", - "tt0079886", - "tt0097004", - "tt0083526", - "tt5901326", - "tt6846128", - "tt1315419", - "tt4663548", - "tt0056110", - "tt0083146", - "tt6628192", - "tt0042423", - "tt0090093", - "tt1728979", - "tt5538568", - "tt2027255", - "tt3453052", - "tt5810122", - "tt2484224", - "tt8307082", - "tt1978567", - "tt1652287", - "tt1386492", - "tt2990126", - "tt0077534", - "tt4337690", - "tt5281700", - "tt1722638", - "tt0071455", - "tt1340803", - "tt2324928", - "tt0051724", - "tt1740468", - "tt0127045", - "tt0062776", - "tt0120118", - "tt0077270", - "tt1029167", - "tt0105191", - "tt4335650", - "tt4978274", - "tt0065922", - "tt0113674", - "tt1291549", - "tt1178640", - "tt1465478", - "tt3758708", - "tt2710826", - "tt0068897", - "tt1640486", - "tt0099636", - "tt1715320", - "tt5120400", - "tt3397556", - "tt3562786", - "tt0087010", - "tt1289437", - "tt4411618", - "tt0044937", - "tt0109550", - "tt3277624", - "tt0048248", - "tt4653586", - "tt8148018", - "tt1874707", - "tt5497458", - "tt9149786", - "tt2024521", - "tt4638246", - "tt5881522", - "tt3129692", - "tt5618332", - "tt1086794", - "tt6237168", - "tt1776097", - "tt6969814", - "tt0342108", - "tt0217331", - "tt5358948", - "tt2187061", - "tt8025310", - "tt1176410", - "tt1780871", - "tt0119655", - "tt1225698", - "tt0186654", - "tt6095944", - "tt4060480", - "tt9557190", - "tt4225696", - "tt4270060", - "tt3888806", - "tt4416800", - "tt1717229", - "tt6944264", - "tt1735853", - "tt0104987", - "tt6013892", - "tt5525418", - "tt1038902", - "tt5478868", - "tt0225481", - "tt0125988", - "tt0085159", - "tt0180316", - "tt0273041", - "tt0103190", - "tt0047501", - "tt0297284", - "tt8452154", - "tt1393020", - "tt0103757", - "tt0186183", - "tt3759416", - "tt2118775", - "tt0212235", - "tt5195832", - "tt5089786", - "tt8774260", - "tt0315983", - "tt4366830", - "tt0081159", - "tt3169832", - "tt0492931", - "tt7687082", - "tt2147491", - "tt0256858", - "tt0392465", - "tt2171735", - "tt8343312", - "tt4796634", - "tt0929858", - "tt0118945", - "tt0323531", - "tt0086618", - "tt0057581", - "tt1870529", - "tt3603808", - "tt1937449", - "tt1148205", - "tt7200946", - "tt0415856", - "tt0049674", - "tt2548208", - "tt0480011", - "tt1839591", - "tt0097662", - "tt1319694", - "tt2011953", - "tt0102724", - "tt2027064", - "tt1296899", - "tt0078753", - "tt1196338", - "tt0937375", - "tt3776826", - "tt0092752", - "tt3305308", - "tt0102802", - "tt1551630", - "tt6113488", - "tt0073600", - "tt0465997", - "tt2957760", - "tt1247667", - "tt1509803", - "tt0088967", - "tt2624412", - "tt0062708", - "tt1462054", - "tt0089348", - "tt2933544", - "tt3687310", - "tt6386748", - "tt10160814", - "tt0862748", - "tt7587878", - "tt0060640", - "tt0062490", - "tt4267818", - "tt0061715", - "tt0120490", - "tt0224345", - "tt0059462", - "tt0061669", - "tt0098306", - "tt0074968", - "tt9547338", - "tt0075016", - "tt0056095", - "tt0054144", - "tt0053994", - "tt6319654", - "tt0026094", - "tt0033838", - "tt0028378", - "tt0068718", - "tt0487419", - "tt0073796", - "tt0047682", - "tt0114323", - "tt0765849", - "tt0283003", - "tt1772270", - "tt0057869", - "tt0049537", - "tt0102816", - "tt0027964", - "tt7459182", - "tt0029943", - "tt0020475", - "tt0030448", - "tt0029930", - "tt0050567", - "tt0081254", - "tt0091980", - "tt6368028", - "tt0072826", - "tt0073471", - "tt0077547", - "tt1982650", - "tt7765120", - "tt0040009", - "tt0097289", - "tt0082351", - "tt0094663", - "tt0110093", - "tt0091578", - "tt4270516", - "tt0019109", - "tt0276819", - "tt3314376", - "tt0047422", - "tt0068972", - "tt0402850", - "tt2082180", - "tt0074806", - "tt0109384", - "tt0055304", - "tt0117774", - "tt0063568", - "tt1092634", - "tt0021542", - "tt0060268", - "tt2717860", - "tt0064067", - "tt0161083", - "tt0047638", - "tt1368440", - "tt0065499", - "tt2055765", - "tt0080616", - "tt3474600", - "tt0134154", - "tt0995863", - "tt0070756", - "tt0787505", - "tt2967988", - "tt0093304", - "tt0103044", - "tt0075612", - "tt3474602", - "tt2718440", - "tt0107096", - "tt0926063", - "tt0065466", - "tt0069091", - "tt0071512", - "tt0090907", - "tt0079638", - "tt1153706", - "tt3774466", - "tt3303728", - "tt0088915", - "tt1445202", - "tt6182078", - "tt2292959", - "tt0108473", - "tt2911668", - "tt3289728", - "tt0339135", - "tt0057449", - "tt0110006", - "tt2091318", - "tt0369672", - "tt0102388", - "tt0104990", - "tt0063850", - "tt0066819", - "tt1715336", - "tt3299704", - "tt5143226", - "tt3275216", - "tt0094894", - "tt4943322", - "tt2581244", - "tt1620935", - "tt0264761", - "tt0072288", - "tt7922976", - "tt7364566", - "tt0101787", - "tt0810784", - "tt2473794", - "tt7419468", - "tt0067588", - "tt2401097", - "tt2639254", - "tt0102744", - "tt0159382", - "tt4383594", - "tt0062138", - "tt0116324", - "tt4208432", - "tt0765446", - "tt0079207", - "tt2084957", - "tt2218003", - "tt7731512", - "tt6562628", - "tt0352851", - "tt1032746", - "tt0067523", - "tt1535492", - "tt1851871", - "tt0119668", - "tt6493644", - "tt0226018", - "tt0237045", - "tt0100595", - "tt0070246", - "tt0061735", - "tt0095484", - "tt0069041", - "tt0054640", - "tt0073312", - "tt0075720", - "tt0107159", - "tt0069165", - "tt5227746", - "tt0099812", - "tt0075203", - "tt1554522", - "tt0289992", - "tt0112659", - "tt0078300", - "tt0077973", - "tt4824302", - "tt0278723", - "tt2652092", - "tt0105831", - "tt6063024", - "tt1160996", - "tt0367594", - "tt1464174", - "tt0114681", - "tt1181791", - "tt6211976", - "tt5311542", - "tt2244901", - "tt0105275", - "tt2091473", - "tt1441952", - "tt0091090", - "tt1314228", - "tt1932767", - "tt0329717", - "tt1486834", - "tt0228677", - "tt3544112", - "tt0089270", - "tt2404181", - "tt6388090", - "tt1783732", - "tt1196948", - "tt0358135", - "tt0087963", - "tt1117385", - "tt0435665", - "tt0421729", - "tt0329691", - "tt1294688", - "tt0081187", - "tt6391440", - "tt0055256", - "tt1920849", - "tt0328675", - "tt9675192", - "tt2313780", - "tt1414827", - "tt4768160", - "tt0121922", - "tt6091936", - "tt0060903", - "tt0022458", - "tt0038675", - "tt0105851", - "tt0061037", - "tt1404364", - "tt0063668", - "tt0064828", - "tt0074870", - "tt0067487", - "tt0040418", - "tt0068971", - "tt0108650", - "tt0059601", - "tt0060888", - "tt0439654", - "tt0076164", - "tt0071458", - "tt0096885", - "tt0086242", - "tt0165075", - "tt4660800", - "tt1156506", - "tt0435026", - "tt0475355", - "tt0079484", - "tt2904430", - "tt0083156", - "tt2063013", - "tt0067696", - "tt0104155", - "tt6147768", - "tt1662557", - "tt1077094", - "tt0882791", - "tt0485552", - "tt1098226", - "tt4619940", - "tt3108840", - "tt0417072", - "tt1322335", - "tt7282468", - "tt0366292", - "tt1646203", - "tt0296696", - "tt6857282", - "tt2139903", - "tt1373138", - "tt3550748", - "tt0072007", - "tt3145220", - "tt0073168", - "tt3812402", - "tt5034276", - "tt3312962", - "tt0348568", - "tt0065555", - "tt0064897", - "tt5876604", - "tt3025712", - "tt8129794", - "tt0160916", - "tt1948581", - "tt1305730", - "tt5136874", - "tt0041998", - "tt6184402", - "tt0087635", - "tt7867026", - "tt4975498", - "tt0094890", - "tt4830786", - "tt0072759", - "tt0057426", - "tt0067850", - "tt1773768", - "tt0063101", - "tt0089154", - "tt0124565", - "tt0092843", - "tt0848538", - "tt0073259", - "tt0075614", - "tt0029841", - "tt0046851", - "tt0046138", - "tt0058372", - "tt0163989", - "tt0050958", - "tt0244706", - "tt1772399", - "tt7547158", - "tt1189432", - "tt0074477", - "tt0029056", - "tt4475176", - "tt0221269", - "tt0036272", - "tt0064068", - "tt7778680", - "tt1148277", - "tt0097167", - "tt4694546", - "tt0205779", - "tt7001042", - "tt0416675", - "tt0085442", - "tt1016321", - "tt0052006", - "tt8679574", - "tt0070714", - "tt0079917", - "tt1727578", - "tt0120530", - "tt6752992", - "tt8106566", - "tt0103950", - "tt0062345", - "tt0047820", - "tt1123373", - "tt0054209", - "tt1617250", - "tt0069336", - "tt0082220", - "tt0061709", - "tt0054901", - "tt0051349", - "tt8739240", - "tt0048933", - "tt0087644", - "tt4975920", - "tt0045082", - "tt0066735", - "tt0049872", - "tt0093206", - "tt0090756", - "tt0063167", - "tt0082273", - "tt0072324", - "tt0124501", - "tt0250638", - "tt0074941", - "tt0080080", - "tt0119472", - "tt0073735", - "tt0073537", - "tt0105399", - "tt0064169", - "tt0089029", - "tt0045848", - "tt5462906", - "tt0050252", - "tt0074383", - "tt0065656", - "tt0062426", - "tt0081494", - "tt1853614", - "tt0079514", - "tt0077525", - "tt4006794", - "tt0053458", - "tt0056219", - "tt0056725", - "tt0076478", - "tt0082257", - "tt0061733", - "tt0078243", - "tt0021025", - "tt0057358", - "tt0063595", - "tt2423422", - "tt0057611", - "tt6888282", - "tt2639336", - "tt1242422", - "tt0055499", - "tt1388371", - "tt0052207", - "tt0092859", - "tt0054346", - "tt8206940", - "tt0928193", - "tt8535848", - "tt2740984", - "tt4933506", - "tt6087048", - "tt9606548", - "tt0114150", - "tt0040478", - "tt0464837", - "tt1311031", - "tt0050847", - "tt6462084", - "tt4109284", - "tt3096810", - "tt3033160", - "tt6301140", - "tt4765338", - "tt5164664", - "tt0484414", - "tt5258194", - "tt4379480", - "tt0079882", - "tt2259968", - "tt0294852", - "tt0113360", - "tt3120274", - "tt3268288", - "tt2527660", - "tt0792947", - "tt4985848", - "tt0110616", - "tt0077233", - "tt0207957", - "tt5700182", - "tt0252227", - "tt0022753", - "tt0057811", - "tt2245279", - "tt7493818", - "tt3486080", - "tt6236780", - "tt7068878", - "tt0106475", - "tt0056112", - "tt0037638", - "tt0043938", - "tt6241768", - "tt6574700", - "tt7912678", - "tt0055024", - "tt9490990", - "tt0254688", - "tt0405963", - "tt0059573", - "tt0848554", - "tt0058091", - "tt0084485", - "tt7935980", - "tt10335986", - "tt0061520", - "tt0197626", - "tt0041822", - "tt0093562", - "tt0054116", - "tt0043827", - "tt0433696", - "tt0061796", - "tt0107894", - "tt0093628", - "tt0078477", - "tt0088689", - "tt0058166", - "tt0032043", - "tt0041871", - "tt9080630", - "tt0244167", - "tt0074633", - "tt6300886", - "tt0045563", - "tt0079709", - "tt4228294", - "tt0037702", - "tt0054731", - "tt5548284", - "tt0052227", - "tt0175205", - "tt0072960", - "tt0057683", - "tt0062207", - "tt0063260", - "tt0072895", - "tt0058745", - "tt0043959", - "tt0051666", - "tt0034251", - "tt1176416", - "tt0055489", - "tt0049523", - "tt0058500", - "tt0046977", - "tt4450396", - "tt0097015", - "tt0082727", - "tt0059124", - "tt0238948", - "tt0228333", - "tt0067229", - "tt0051649", - "tt1708658", - "tt1477835", - "tt0068950", - "tt0021800", - "tt0051436", - "tt0087263", - "tt0026276", - "tt0065037", - "tt0065036", - "tt0040607", - "tt0065591", - "tt0021890", - "tt0069976", - "tt0061014", - "tt0079138", - "tt0059729", - "tt0170266", - "tt0047417", - "tt0045124", - "tt0039152", - "tt3529198", - "tt0043142", - "tt0337741", - "tt2908228", - "tt0058756", - "tt0067350", - "tt0086374", - "tt0080934", - "tt0051429", - "tt0051713", - "tt2171847", - "tt0032383", - "tt0025746", - "tt0102713", - "tt0022698", - "tt0084489", - "tt0043090", - "tt0061204", - "tt0023940", - "tt0057997", - "tt0073502", - "tt0051496", - "tt0120685", - "tt0050296", - "tt8254556", - "tt0058529", - "tt0055992", - "tt0074455", - "tt0064253", - "tt0064949", - "tt0060182", - "tt0089015", - "tt1015474", - "tt3741834", - "tt0024593", - "tt0064622", - "tt0071598", - "tt0068805", - "tt0064437", - "tt0058390", - "tt1773764", - "tt6864046", - "tt0053719", - "tt4917554", - "tt0072732", - "tt9021234", - "tt1701223", - "tt0024471", - "tt0069834", - "tt0066907", - "tt0151239", - "tt2380342", - "tt7069030", - "tt8920490", - "tt8262226", - "tt0431265", - "tt0162030", - "tt1754648", - "tt8065304", - "tt3365084", - "tt3564924", - "tt6912990", - "tt1531697", - "tt1718763", - "tt0160941", - "tt5975068", - "tt0420231", - "tt5812542", - "tt0146671", - "tt3602660", - "tt4910232", - "tt0050490", - "tt8497714", - "tt0397105", - "tt3804774", - "tt5728374", - "tt1392261", - "tt7946586", - "tt0218426", - "tt1447971", - "tt0105347", - "tt0062006", - "tt0104006", - "tt1999811", - "tt0055798", - "tt6562798", - "tt0069897", - "tt0089280", - "tt0045546", - "tt1699114", - "tt0076245", - "tt0106292", - "tt0051406", - "tt1525366", - "tt2486630", - "tt0066730", - "tt0112760", - "tt2828322", - "tt0978759", - "tt0064840", - "tt0363780", - "tt0084329", - "tt10368652", - "tt0421073", - "tt0048347", - "tt0313792", - "tt1043696", - "tt0022286", - "tt0074554", - "tt0032904", - "tt0324519", - "tt0057495", - "tt3307692", - "tt0035979", - "tt0074749", - "tt0063663", - "tt5001094", - "tt0028597", - "tt0065469", - "tt0057251", - "tt1103982", - "tt1512732", - "tt0277941", - "tt0072979", - "tt0204626", - "tt1186373", - "tt7412066", - "tt0465375", - "tt0032155", - "tt0053085", - "tt0969647", - "tt3710944", - "tt0023458", - "tt0071840", - "tt3152486", - "tt1398941", - "tt0063035", - "tt0068931", - "tt5275926", - "tt0455608", - "tt1683043", - "tt0166485", - "tt1869265", - "tt0060371", - "tt5957018", - "tt1975159", - "tt0071746", - "tt0024857", - "tt0084157", - "tt1174686", - "tt0053580", - "tt1977094", - "tt0398712", - "tt0087003", - "tt0091415", - "tt0308499", - "tt0074891", - "tt5815078", - "tt0984227", - "tt9081188", - "tt0365889", - "tt7772580", - "tt1384590", - "tt6231792", - "tt0380160", - "tt0061749", - "tt1937118", - "tt0462036", - "tt4083124", - "tt3538602", - "tt1174730", - "tt0064748", - "tt0099699", - "tt0095119", - "tt1235778", - "tt0082945", - "tt2396200", - "tt0055807", - "tt0028010", - "tt0299071", - "tt0100828", - "tt6360332", - "tt0095895", - "tt0255819", - "tt1914320", - "tt1225831", - "tt2376726", - "tt0168501", - "tt0277371", - "tt0076543", - "tt1368044", - "tt2626102", - "tt2279346", - "tt9169592", - "tt2302150", - "tt3559422", - "tt5375040", - "tt2048854", - "tt0074254", - "tt0071571", - "tt1667897", - "tt4712754", - "tt2531318", - "tt2504022", - "tt1056101", - "tt2284790", - "tt1249415", - "tt2954474", - "tt0439815", - "tt8917752", - "tt0119362", - "tt6098380", - "tt7422552", - "tt10377024", - "tt10136680", - "tt3602422", - "tt7042024", - "tt6157970", - "tt3800894", - "tt7870578", - "tt0374089", - "tt3882074", - "tt0051714", - "tt3922350", - "tt0093872", - "tt4425064", - "tt4135844", - "tt2072230", - "tt0062395", - "tt1596280", - "tt2486682", - "tt0065834", - "tt4701660", - "tt4294052", - "tt1566946", - "tt4074114", - "tt0059015", - "tt0024184", - "tt0128719", - "tt5147214", - "tt0053133", - "tt0427038", - "tt0073773", - "tt0089643", - "tt1403130", - "tt0083641", - "tt0077321", - "tt0070260", - "tt0080646", - "tt3296658", - "tt2668150", - "tt3201572", - "tt0096094", - "tt0048960", - "tt5037684", - "tt1385956", - "tt4960466", - "tt2771506", - "tt1069242", - "tt0074294", - "tt4965146", - "tt4145178", - "tt2050664", - "tt0068817", - "tt0316465", - "tt0112896", - "tt5457244", - "tt3282174", - "tt7224496", - "tt0143428", - "tt2287663", - "tt0071695", - "tt3526706", - "tt0068815", - "tt0119141", - "tt0108071", - "tt2981746", - "tt7052494", - "tt1199779", - "tt2361700", - "tt0096257", - "tt5888384", - "tt1683981", - "tt1277737", - "tt3953420", - "tt3230608", - "tt0096409", - "tt0218505", - "tt2611026", - "tt4964772", - "tt0479884", - "tt1954612", - "tt2445178", - "tt1464539", - "tt0044078", - "tt1405500", - "tt3828116", - "tt0020080", - "tt2414046", - "tt2486678", - "tt4137324", - "tt1305583", - "tt0119062", - "tt1385912", - "tt1477715", - "tt9376172", - "tt6234120", - "tt1846487", - "tt0116030", - "tt4764974", - "tt3188614", - "tt6523594", - "tt1838571", - "tt0107426", - "tt5213534", - "tt5037840", - "tt7291412", - "tt9267624", - "tt0069467", - "tt0322545", - "tt10108358", - "tt0142996", - "tt2822400", - "tt3079016", - "tt6981046", - "tt0233375", - "tt0790723", - "tt0016481", - "tt5598292", - "tt0067227", - "tt0050225", - "tt0289658", - "tt2898904", - "tt5952522", - "tt6534422", - "tt5982216", - "tt5117222", - "tt3823912", - "tt0115495", - "tt3810486", - "tt1571222", - "tt3170504", - "tt2340888", - "tt7006658", - "tt2375255", - "tt2834944", - "tt5174196", - "tt1928144", - "tt5755622", - "tt0977658", - "tt0940909", - "tt0238924", - "tt3062976", - "tt1787127", - "tt3918686", - "tt2409418", - "tt0077714", - "tt7090040", - "tt0116259", - "tt3155734", - "tt0079153", - "tt1396226", - "tt4386242", - "tt0378793", - "tt3312868", - "tt1691924", - "tt3030970", - "tt0828065", - "tt1326283", - "tt0051899", - "tt2463302", - "tt0107504", - "tt6857250", - "tt1807944", - "tt2715556", - "tt1014774", - "tt6237306", - "tt1684548", - "tt7558166", - "tt5090486", - "tt1727300", - "tt4082314", - "tt0093677", - "tt2349142", - "tt4981292", - "tt0096340", - "tt1813609", - "tt2109127", - "tt0102729", - "tt4465538", - "tt2504640", - "tt0321997", - "tt0068457", - "tt0051690", - "tt1592855", - "tt1027862", - "tt0309291", - "tt0414161", - "tt0119167", - "tt2125472", - "tt0327409", - "tt10079698", - "tt3885932", - "tt0151582", - "tt2536124", - "tt2354205", - "tt3072110", - "tt0101615", - "tt2494032", - "tt0062477", - "tt1884438", - "tt2364659", - "tt2608726", - "tt8547366", - "tt0068863", - "tt0085387", - "tt2554714", - "tt1988621", - "tt0862892", - "tt1839590", - "tt1780888", - "tt0482577", - "tt1745740", - "tt0489070", - "tt0056552", - "tt2503358", - "tt3138192", - "tt1003059", - "tt2302969", - "tt3640226", - "tt2622874", - "tt2290553", - "tt7241800", - "tt2167843", - "tt3981112", - "tt2900624", - "tt0329679", - "tt1087828", - "tt2396711", - "tt2830416", - "tt2675318", - "tt1499948", - "tt2290534", - "tt3311900", - "tt0072625", - "tt0102343", - "tt0034465", - "tt0098368", - "tt0051630", - "tt0066871", - "tt2781516", - "tt3254570", - "tt0496375", - "tt0106504", - "tt2401789", - "tt1723799", - "tt0082323", - "tt2090488", - "tt0094695", - "tt0116756", - "tt1833844", - "tt3339624", - "tt0087789", - "tt0089023", - "tt1931601", - "tt0061411", - "tt0086590", - "tt0095400", - "tt1536019", - "tt0226267", - "tt0245522", - "tt0184310", - "tt3718066", - "tt1890375", - "tt2027154", - "tt2070759", - "tt2427836", - "tt0093006", - "tt0168136", - "tt0495861", - "tt1723124", - "tt0084732", - "tt1995400", - "tt0068911", - "tt2446318", - "tt0090860", - "tt0057078", - "tt0052287", - "tt2343585", - "tt0067794", - "tt2119396", - "tt1454099", - "tt3744428", - "tt4046282", - "tt4021190", - "tt0091859", - "tt1645126", - "tt0282659", - "tt3644202", - "tt2946858", - "tt1665744", - "tt4313216", - "tt3551954", - "tt2366131", - "tt1161449", - "tt1711510", - "tt5210376", - "tt0051895", - "tt3511812", - "tt4768764", - "tt1318516", - "tt0092751", - "tt4135076", - "tt0036057", - "tt2279241", - "tt0064137", - "tt5665022", - "tt0088864", - "tt1218503", - "tt0097561", - "tt1014762", - "tt0182996", - "tt3138344", - "tt0078870", - "tt0067085", - "tt0322725", - "tt2571776", - "tt0043015", - "tt2378177", - "tt0066475", - "tt0071626", - "tt2091956", - "tt0429106", - "tt2983922", - "tt8426808", - "tt1314248", - "tt3072376", - "tt1240941", - "tt0060975", - "tt0430677", - "tt2576852", - "tt4110388", - "tt1647446", - "tt0052733", - "tt1984221", - "tt0057642", - "tt8875622", - "tt0167367", - "tt1239257", - "tt8426800", - "tt0102557", - "tt5859038", - "tt6597612", - "tt0402175", - "tt7616710", - "tt4179338", - "tt1483386", - "tt6652828", - "tt5929226", - "tt4299862", - "tt9366716", - "tt6025356", - "tt6085642", - "tt0762072", - "tt0054745", - "tt2009410", - "tt8267604", - "tt0083264", - "tt2125439", - "tt1446113", - "tt0075975", - "tt0119389", - "tt2415174", - "tt2527186", - "tt4255252", - "tt0309600", - "tt0396096", - "tt6096364", - "tt6095002", - "tt0338559", - "tt1194606", - "tt1622988", - "tt0098512", - "tt4272866", - "tt0284929", - "tt0095368", - "tt0102619", - "tt2547332", - "tt0353625", - "tt1000768", - "tt0106366", - "tt0983213", - "tt2446192", - "tt0048426", - "tt2073016", - "tt1831776", - "tt0102293", - "tt3361068", - "tt1734589", - "tt0089740", - "tt0239570", - "tt2112287", - "tt4105970", - "tt0043435", - "tt2722786", - "tt1375754", - "tt2750632", - "tt0050874", - "tt0067384", - "tt5116940", - "tt3748076", - "tt0066561", - "tt4935446", - "tt1476250", - "tt3186838", - "tt0077587", - "tt2101507", - "tt6451260", - "tt0499464", - "tt2404171", - "tt1598172", - "tt0367555", - "tt0026104", - "tt1373403", - "tt0080903", - "tt0032156", - "tt0131335", - "tt0186508", - "tt1025102", - "tt0071760", - "tt1206881", - "tt5371622", - "tt4270878", - "tt0042281", - "tt1308756", - "tt5712474", - "tt2872570", - "tt1792621", - "tt3913550", - "tt0085937", - "tt0338187", - "tt0060463", - "tt5881528", - "tt1312230", - "tt5981616", - "tt0413108", - "tt2062966", - "tt5503824", - "tt4936398", - "tt0202114", - "tt6876170", - "tt7407296", - "tt0049806", - "tt2044729", - "tt1630529", - "tt1315052", - "tt1534394", - "tt0453376", - "tt5351576", - "tt6299592", - "tt0848587", - "tt3340446", - "tt4117094", - "tt1047102", - "tt0075982", - "tt2625948", - "tt2131556", - "tt2785162", - "tt8381492", - "tt7297960", - "tt0073206", - "tt2258545", - "tt1379169", - "tt2471538", - "tt0050873", - "tt0095825", - "tt1212022", - "tt5748998", - "tt0071722", - "tt3901256", - "tt2334350", - "tt1190617", - "tt1928335", - "tt0236693", - "tt2182071", - "tt2466622", - "tt0091957", - "tt1877890", - "tt2081343", - "tt0858436", - "tt2073131", - "tt2151783", - "tt0020025", - "tt9046576", - "tt9670282", - "tt5900870", - "tt0327753", - "tt0110008", - "tt0064443", - "tt2452244", - "tt1687878", - "tt8743064", - "tt5530838", - "tt0120788", - "tt1512274", - "tt7594584", - "tt1702923", - "tt2395183", - "tt0115820", - "tt2296471", - "tt2197561", - "tt0339716", - "tt1686897", - "tt1998392", - "tt4773854", - "tt0080872", - "tt1580426", - "tt2338190", - "tt1572506", - "tt10171746", - "tt3088036", - "tt0066851", - "tt0140137", - "tt0071742", - "tt1158939", - "tt0070001", - "tt1924334", - "tt4059112", - "tt0046422", - "tt0097351", - "tt1698653", - "tt4911288", - "tt2242975", - "tt3727690", - "tt1129404", - "tt1702929", - "tt0315788", - "tt0272790", - "tt2362102", - "tt1305579", - "tt1621418", - "tt2281159", - "tt2290747", - "tt2238758", - "tt0068657", - "tt3799996", - "tt1331112", - "tt2027231", - "tt2071567", - "tt4274656", - "tt3578504", - "tt1592265", - "tt1498858", - "tt3503840", - "tt4539742", - "tt0061557", - "tt2385195", - "tt2936174", - "tt2419284", - "tt4463120", - "tt0374184", - "tt2178256", - "tt4011010", - "tt1588362", - "tt5227660", - "tt2276860", - "tt0899154", - "tt2570390", - "tt2079571", - "tt0071415", - "tt1762233", - "tt0073190", - "tt0206013", - "tt2468638", - "tt5238368", - "tt2296935", - "tt5618870", - "tt0073700", - "tt2040367", - "tt6090588", - "tt1428556", - "tt1591504", - "tt0035432", - "tt1232207", - "tt0117619", - "tt0097954", - "tt3560546", - "tt2346198", - "tt0091229", - "tt0093229", - "tt0307034", - "tt0082530", - "tt2963232", - "tt0814075", - "tt3611112", - "tt0156701", - "tt3978902", - "tt2873214", - "tt0084488", - "tt9032888", - "tt0044476", - "tt0034116", - "tt3013018", - "tt3324702", - "tt0973836", - "tt1525916", - "tt1941645", - "tt1143141", - "tt2505366", - "tt1730300", - "tt0449488", - "tt7317324", - "tt8172466", - "tt1934195", - "tt1726758", - "tt3429014", - "tt3326846", - "tt0070605", - "tt2265651", - "tt1594505", - "tt0239548", - "tt1073656", - "tt1684921", - "tt0332375", - "tt0431447", - "tt8426846", - "tt0428765", - "tt0808409", - "tt2194748", - "tt8426154", - "tt1879078", - "tt1748018", - "tt1414449", - "tt7972040", - "tt3448124", - "tt3214240", - "tt1247681", - "tt0814150", - "tt9306684", - "tt3181400", - "tt6862864", - "tt2246955", - "tt1543493", - "tt1381505", - "tt1760947", - "tt0259741", - "tt0047085", - "tt0083024", - "tt0129023", - "tt0043278", - "tt1029097", - "tt0101490", - "tt0844457", - "tt2122424", - "tt3380104", - "tt3486392", - "tt0860870", - "tt2391622", - "tt1172587", - "tt2170371", - "tt0431074", - "tt2923076", - "tt1961438", - "tt2091423", - "tt0078780", - "tt0069958", - "tt0088184", - "tt1485761", - "tt1377253", - "tt1730760", - "tt0061800", - "tt0799942", - "tt0107108", - "tt4788736", - "tt0291502", - "tt0111185", - "tt1883184", - "tt8742574", - "tt1982882", - "tt1236254", - "tt3924510", - "tt2641704", - "tt0078508", - "tt2622854", - "tt4708346", - "tt4511394", - "tt0038032", - "tt1885281", - "tt1787797", - "tt2345721", - "tt2888068", - "tt4104022", - "tt3097756", - "tt0032993", - "tt0089689", - "tt5963314", - "tt6328046", - "tt0145937", - "tt2901736", - "tt4968782", - "tt0093223", - "tt0077597", - "tt2048819", - "tt4075322", - "tt4534732", - "tt0105114", - "tt2747908", - "tt2404003", - "tt2488586", - "tt7469972", - "tt2006719", - "tt0083072", - "tt0074570", - "tt1270079", - "tt5024894", - "tt7233726", - "tt0367000", - "tt3721630", - "tt4773642", - "tt4205920", - "tt0346811", - "tt2966728", - "tt3717324", - "tt3867396", - "tt0093978", - "tt0078252", - "tt4943934", - "tt6157600", - "tt0039341", - "tt0137458", - "tt4411234", - "tt0055913", - "tt2124908", - "tt2593392", - "tt1781784", - "tt2393799", - "tt0088153", - "tt9128686", - "tt0098213", - "tt3162938", - "tt0085503", - "tt2506386", - "tt3663644", - "tt4527400", - "tt1313121", - "tt0054866", - "tt1379721", - "tt0079082", - "tt1405413", - "tt0102416", - "tt0128165", - "tt1454542", - "tt0064588", - "tt1181840", - "tt2626090", - "tt2149360", - "tt2914838", - "tt3181886", - "tt1648964", - "tt3295482", - "tt5305352", - "tt6547786", - "tt0076517", - "tt3184720", - "tt3405714", - "tt2846292", - "tt1243955", - "tt0051807", - "tt7471884", - "tt9880234", - "tt4919240", - "tt8315092", - "tt2570436", - "tt0070825", - "tt0357894", - "tt2056757", - "tt0056512", - "tt4943594", - "tt2245151", - "tt3148348", - "tt8334236", - "tt1027874", - "tt5216256", - "tt1042896", - "tt2073029", - "tt0107626", - "tt0073114", - "tt0258489", - "tt2166616", - "tt0171356", - "tt4163020", - "tt1742330", - "tt1353810", - "tt1905010", - "tt3521442", - "tt3374816", - "tt0064536", - "tt1401113", - "tt1674197", - "tt0809504", - "tt3453580", - "tt3317874", - "tt0085626", - "tt4337500", - "tt1470020", - "tt2242176", - "tt2517658", - "tt5042436", - "tt9228950", - "tt2547172", - "tt2622672", - "tt2257216", - "tt3304756", - "tt0025913", - "tt0093276", - "tt0085533", - "tt1231593", - "tt3969972", - "tt3610576", - "tt10207850", - "tt0270394", - "tt3242756", - "tt0085695", - "tt2531362", - "tt1071203", - "tt1516009", - "tt5218486", - "tt6006924", - "tt8289524", - "tt0071389", - "tt2565280", - "tt8614742", - "tt3166406", - "tt5269396", - "tt3676370", - "tt2439190", - "tt6755892", - "tt8387464", - "tt3317522", - "tt2481248", - "tt0041786", - "tt3730518", - "tt5273624", - "tt0263215", - "tt0120115", - "tt2321341", - "tt0105652", - "tt2166934", - "tt2513092", - "tt3433170", - "tt0082481", - "tt0104572", - "tt0311041", - "tt1719583", - "tt3898860", - "tt1340761", - "tt1323973", - "tt5481184", - "tt1159721", - "tt3461828", - "tt2368920", - "tt1837584", - "tt3460252", - "tt0098691", - "tt0103935", - "tt1199550", - "tt0099474", - "tt3085500", - "tt2366572", - "tt0083002", - "tt1723129", - "tt0069331", - "tt0104647", - "tt8986842", - "tt1718199", - "tt6461514", - "tt1585257", - "tt0387808", - "tt2272918", - "tt4951834", - "tt0100881", - "tt0790657", - "tt0109066", - "tt4613272", - "tt1941536", - "tt0074589", - "tt7676544", - "tt0068746", - "tt5882704", - "tt0079094", - "tt0074664", - "tt0104765", - "tt8865562", - "tt2151270", - "tt2322415", - "tt0094969", - "tt1799537", - "tt5719748", - "tt1103963", - "tt5758802", - "tt1595388", - "tt3054776", - "tt4892682", - "tt0187499", - "tt4319698", - "tt0430772", - "tt8985014", - "tt0119263", - "tt8906266", - "tt1890559", - "tt2210451", - "tt3788392", - "tt0048558", - "tt1757944", - "tt0465643", - "tt0455976", - "tt3801934", - "tt3175936", - "tt0095937", - "tt2320030", - "tt1071809", - "tt1634058", - "tt5142784", - "tt2908090", - "tt7473036", - "tt1740762", - "tt7441338", - "tt7316358", - "tt0076271", - "tt6096308", - "tt5139800", - "tt3140024", - "tt3765892", - "tt1045673", - "tt1822203", - "tt4360484", - "tt6164254", - "tt1345503", - "tt2113822", - "tt3385704", - "tt5241840", - "tt1152277", - "tt0068425", - "tt2294705", - "tt2981254", - "tt2402127", - "tt0822831", - "tt2366614", - "tt0887161", - "tt1852904", - "tt2832482", - "tt3696086", - "tt2150371", - "tt0138587", - "tt3672840", - "tt0094021", - "tt0080527", - "tt1356392", - "tt0440939", - "tt2350954", - "tt3121442", - "tt1482989", - "tt2765340", - "tt0248415", - "tt9824674", - "tt1523575", - "tt3099300", - "tt3177226", - "tt4060030", - "tt0111174", - "tt9377684", - "tt0106743", - "tt1185242", - "tt2338341", - "tt1349853", - "tt6234132", - "tt9331434", - "tt4535008", - "tt1710394", - "tt5130442", - "tt0118566", - "tt0099426", - "tt4027270", - "tt0101393", - "tt0427954", - "tt0038715", - "tt0071275", - "tt3197766", - "tt4096608", - "tt0389053", - "tt0080179", - "tt2909116", - "tt1653690", - "tt3037632", - "tt0785035", - "tt3125472", - "tt0101678", - "tt3466816", - "tt1124377", - "tt1925518", - "tt0049661", - "tt0368909", - "tt2386353", - "tt0376098", - "tt0134167", - "tt0107156", - "tt2776344", - "tt2363115", - "tt3469910", - "tt0840406", - "tt3449302", - "tt1496009", - "tt2007388", - "tt2256761", - "tt2016168", - "tt1732169", - "tt0047681", - "tt1525359", - "tt1988816", - "tt1320431", - "tt1716743", - "tt8574212", - "tt0072953", - "tt2120051", - "tt1028525", - "tt1801096", - "tt0201484", - "tt5641246", - "tt6054710", - "tt1629755", - "tt1242861", - "tt8155288", - "tt1365048", - "tt8328740", - "tt8169446", - "tt2372429", - "tt4295258", - "tt5667482", - "tt0062742", - "tt2655734", - "tt0820872", - "tt2950996", - "tt2360586", - "tt1587427", - "tt2097333", - "tt1297925", - "tt3697398", - "tt3484796", - "tt2839312", - "tt0051051", - "tt0102158", - "tt3007924", - "tt0293715", - "tt1762358", - "tt0839856", - "tt2188885", - "tt1869671", - "tt0065790", - "tt6185658", - "tt2182241", - "tt0061670", - "tt3703750", - "tt2523426", - "tt1513076", - "tt2257816", - "tt0057497", - "tt1220625", - "tt0849483", - "tt1393003", - "tt0069162", - "tt1521242", - "tt0054371", - "tt7976208", - "tt3038708", - "tt5756052", - "tt1843866", - "tt1809231", - "tt0411477", - "tt5914630", - "tt0476985", - "tt5475734", - "tt7278120", - "tt5912700", - "tt1266149", - "tt0094632", - "tt3498820", - "tt1537314", - "tt5031108", - "tt0069035", - "tt0458339", - "tt1987680", - "tt3695346", - "tt2166880", - "tt2039380", - "tt1857929", - "tt2558022", - "tt4700756", - "tt6050396", - "tt1886680", - "tt4693418", - "tt2218924", - "tt0055391", - "tt2356500", - "tt0031828", - "tt6231588", - "tt2581480", - "tt0096436", - "tt7754222", - "tt0099366", - "tt0070537", - "tt4182064", - "tt0033836", - "tt0073882", - "tt3137732", - "tt6448192", - "tt6131386", - "tt8531044", - "tt3248132", - "tt4820296", - "tt2941396", - "tt6572608", - "tt1764547", - "tt6158494", - "tt0077904", - "tt10149868", - "tt4432804", - "tt0028950", - "tt1770672", - "tt1529558", - "tt8403246", - "tt2128679", - "tt1662295", - "tt4504044", - "tt4363990", - "tt7634968", - "tt4145836", - "tt0790709", - "tt0099749", - "tt0070205", - "tt0061451", - "tt2406468", - "tt5594444", - "tt0078960", - "tt2446746", - "tt0057476", - "tt1648062", - "tt0074885", - "tt0043389", - "tt2532528", - "tt1900920", - "tt3220528", - "tt0068892", - "tt0091012", - "tt0447635", - "tt2267454", - "tt1103274", - "tt0934446", - "tt0068772", - "tt0084825", - "tt1351186", - "tt2393174", - "tt2352892", - "tt0079367", - "tt4527268", - "tt2632308", - "tt1754455", - "tt1698520", - "tt1581336", - "tt2071445", - "tt2385169", - "tt2235876", - "tt1023490", - "tt1844793", - "tt0047463", - "tt2379715", - "tt0088895", - "tt0072937", - "tt2441232", - "tt1610294", - "tt1409798", - "tt3361186", - "tt3733618", - "tt0364955", - "tt1433343", - "tt0066850", - "tt9657764", - "tt0382637", - "tt0975738", - "tt5880296", - "tt3752766", - "tt1212442", - "tt0018051", - "tt0037549", - "tt1518191", - "tt0092149", - "tt10260132", - "tt0041452", - "tt9056818", - "tt0108583", - "tt1678040", - "tt5151716", - "tt6315010", - "tt1615156", - "tt0029284", - "tt10050782", - "tt7095654", - "tt3202708", - "tt8466804", - "tt6955804", - "tt3396114", - "tt5110344", - "tt8194728", - "tt5170710", - "tt4558194", - "tt0088707", - "tt1865333", - "tt3562266", - "tt6397364", - "tt4067684", - "tt4587740", - "tt5123866", - "tt7069196", - "tt3894188", - "tt6294892", - "tt0342172", - "tt4180032", - "tt4480940", - "tt5675936", - "tt5814408", - "tt5574012", - "tt9173364", - "tt8860786", - "tt5853124", - "tt8713370", - "tt1619832", - "tt7010948", - "tt6215212", - "tt5724948", - "tt1477171", - "tt3399078", - "tt6245488", - "tt1235830", - "tt0080933", - "tt3915566", - "tt2118009", - "tt3655682", - "tt0388098", - "tt4887842", - "tt0451751", - "tt2336104", - "tt1602093", - "tt3144266", - "tt3421616", - "tt1646111", - "tt1674086", - "tt3420392", - "tt0084036", - "tt3557440", - "tt4622340", - "tt9174800", - "tt1891923", - "tt3043194", - "tt1980911", - "tt0057183", - "tt4980812", - "tt2326124", - "tt9144756", - "tt1566938", - "tt2071571", - "tt0110998", - "tt4906164", - "tt7549618", - "tt0116059", - "tt0266747", - "tt5372620", - "tt2957558", - "tt0037075", - "tt2106749", - "tt0059709", - "tt4423984", - "tt0049801", - "tt0048696", - "tt4176964", - "tt1117668", - "tt0097081", - "tt4452144", - "tt0078231", - "tt2273575", - "tt9673648", - "tt0072868", - "tt1374996", - "tt0319126", - "tt0780506", - "tt2375037", - "tt3262252", - "tt2689354", - "tt0837795", - "tt0116959", - "tt0221563", - "tt3097876", - "tt2147225", - "tt0903036", - "tt2525156", - "tt7877276", - "tt2273641", - "tt2380301", - "tt2181298", - "tt2571362", - "tt3026830", - "tt7906260", - "tt0100765", - "tt5038776", - "tt1640220", - "tt0188557", - "tt1887923", - "tt1305008", - "tt2015503", - "tt2188913", - "tt1510925", - "tt5096726", - "tt0086381", - "tt1422653", - "tt2459038", - "tt0197857", - "tt1634055", - "tt2175184", - "tt0079822", - "tt4738238", - "tt2791026", - "tt0034801", - "tt3623002", - "tt2784036", - "tt1235433", - "tt2914892", - "tt2345695", - "tt0090293", - "tt1328633", - "tt0972542", - "tt1479398", - "tt0361679", - "tt0066144", - "tt2063804", - "tt2179239", - "tt2396421", - "tt1446675", - "tt1508698", - "tt1740476", - "tt1536421", - "tt0089299", - "tt0080499", - "tt0087068", - "tt0082193", - "tt0444648", - "tt0092580", - "tt4700190", - "tt1702919", - "tt4045894", - "tt3252786", - "tt0071535", - "tt4141368", - "tt3430634", - "tt0065480", - "tt3913244", - "tt0100623", - "tt0049285", - "tt6131450", - "tt1744760", - "tt2354196", - "tt1239462", - "tt2891234", - "tt0062022", - "tt1237961", - "tt0075654", - "tt0264410", - "tt2141761", - "tt0047935", - "tt0068246", - "tt3293356", - "tt0834900", - "tt0049667", - "tt1243972", - "tt1825728", - "tt0045041", - "tt0046712", - "tt0100205", - "tt1698027", - "tt0081415", - "tt9667876", - "tt1661066", - "tt1678042", - "tt2474984", - "tt1975146", - "tt2916324", - "tt5065810", - "tt5220602", - "tt5356670", - "tt0058164", - "tt7085054", - "tt4586136", - "tt3794204", - "tt0096416", - "tt1595833", - "tt8299654", - "tt9694594", - "tt6946580", - "tt0110200", - "tt3798628", - "tt1429382", - "tt0077769", - "tt0057277", - "tt5475710", - "tt1707821", - "tt3558642", - "tt0119782", - "tt5502946", - "tt0401224", - "tt0053630", - "tt1743994", - "tt0057890", - "tt5898034", - "tt3824344", - "tt1753811", - "tt3652964", - "tt4779496", - "tt2395337", - "tt4401006", - "tt3791266", - "tt2178915", - "tt1977822", - "tt0073338", - "tt3398252", - "tt2751140", - "tt0082479", - "tt6536944", - "tt1361838", - "tt1420568", - "tt2121304", - "tt3565904", - "tt3611432", - "tt1987028", - "tt1068774", - "tt8526576", - "tt3402880", - "tt0047542", - "tt7133384", - "tt2431576", - "tt1663696", - "tt4760656", - "tt0026752", - "tt0086141", - "tt2101307", - "tt1784736", - "tt2920330", - "tt0976095", - "tt3226956", - "tt9024378", - "tt1663956", - "tt7688892", - "tt2462708", - "tt2046166", - "tt10144748", - "tt1192384", - "tt1349616", - "tt0278422", - "tt2303112", - "tt1819601", - "tt6379596", - "tt1744768", - "tt6244196", - "tt1704578", - "tt2303074", - "tt0104545", - "tt1031224", - "tt4096750", - "tt7957694", - "tt6429278", - "tt9033534", - "tt0097236", - "tt4296254", - "tt1608285", - "tt0120534", - "tt1142804", - "tt3038734", - "tt0924518", - "tt0068005", - "tt4257950", - "tt0116771", - "tt2024542", - "tt1772292", - "tt1156300", - "tt3133114", - "tt1159198", - "tt0073511", - "tt0081232", - "tt4117510", - "tt1465496", - "tt2401842", - "tt1623772", - "tt1626135", - "tt0345601", - "tt1697878", - "tt2241475", - "tt3407428", - "tt0067839", - "tt3527772", - "tt5581120", - "tt0110885", - "tt1527823", - "tt0840272", - "tt0069086", - "tt0117611", - "tt5304634", - "tt3565066", - "tt6690176", - "tt7275200", - "tt0215557", - "tt4699624", - "tt7275528", - "tt0166322", - "tt7399124", - "tt3149360", - "tt6543048", - "tt2100376", - "tt0404031", - "tt1335992", - "tt5609302", - "tt3849938", - "tt2580658", - "tt2515086", - "tt0095875", - "tt1176933", - "tt5434972", - "tt1591496", - "tt0068673", - "tt0076598", - "tt5617254", - "tt3207160", - "tt5896962", - "tt2415468", - "tt1043839", - "tt5769586", - "tt3132422", - "tt0045654", - "tt4076934", - "tt3231734", - "tt1486799", - "tt3504064", - "tt4020312", - "tt1385591", - "tt2516610", - "tt2645188", - "tt1353014", - "tt0030881", - "tt4379800", - "tt4908764", - "tt1343740", - "tt4280822", - "tt0366555", - "tt5112622", - "tt1785395", - "tt4379728", - "tt3170972", - "tt0129852", - "tt0907625", - "tt0101483", - "tt5127300", - "tt0056796", - "tt4018492", - "tt0114433", - "tt0359398", - "tt0069820", - "tt1849810", - "tt1864492", - "tt4443856", - "tt0265086", - "tt5555554", - "tt1462044", - "tt0068994", - "tt0066940", - "tt2676710", - "tt1251357", - "tt0091462", - "tt3569374", - "tt1756818", - "tt7390102", - "tt3387432", - "tt0069483", - "tt0094325", - "tt3054840", - "tt0074228", - "tt2108605", - "tt0071295", - "tt0236283", - "tt1444258", - "tt0485601", - "tt1822239", - "tt2254364", - "tt1227927", - "tt0051507", - "tt1905059", - "tt0071663", - "tt0062190", - "tt0067219", - "tt2087720", - "tt1050160", - "tt0142634", - "tt3073490", - "tt0060848", - "tt1874649", - "tt6580394", - "tt0457355", - "tt3700456", - "tt5445444", - "tt3352034", - "tt0421237", - "tt2940482", - "tt2798680", - "tt2133302", - "tt4417522", - "tt1715362", - "tt4840096", - "tt7477820", - "tt2503154", - "tt3973814", - "tt0047074", - "tt4444732", - "tt0063591", - "tt1336253", - "tt8879666", - "tt5246902", - "tt6556576", - "tt0071938", - "tt4530832", - "tt3501492", - "tt1845211", - "tt0071318", - "tt5190950", - "tt4287348", - "tt2243260", - "tt8232016", - "tt2002789", - "tt4959440", - "tt8128970", - "tt0052749", - "tt1411762", - "tt2385189", - "tt0478154", - "tt0106636", - "tt2171809", - "tt3921852", - "tt3312936", - "tt2395123", - "tt0240585", - "tt3061100", - "tt0104516", - "tt3369676", - "tt2040295", - "tt0096920", - "tt4015930", - "tt0086262", - "tt0089109", - "tt1400335", - "tt2095713", - "tt3470656", - "tt1858522", - "tt2065877", - "tt3402594", - "tt1042570", - "tt1460639", - "tt0052771", - "tt2425866", - "tt3892384", - "tt1692235", - "tt2948202", - "tt5280806", - "tt0059116", - "tt1131742", - "tt0047590", - "tt10050780", - "tt3950908", - "tt0063765", - "tt5157030", - "tt6473622", - "tt0076747", - "tt5779372", - "tt0084058", - "tt5096920", - "tt0102555", - "tt0090735", - "tt0091898", - "tt2312184", - "tt4926042", - "tt5344752", - "tt3446330", - "tt0964179", - "tt6491178", - "tt6820256", - "tt2723176", - "tt2390283", - "tt0081235", - "tt4242158", - "tt5525504", - "tt3911074", - "tt6769064", - "tt5303930", - "tt0043408", - "tt3594826", - "tt0338769", - "tt0047281", - "tt5474114", - "tt5500308", - "tt0053344", - "tt1829735", - "tt1343103", - "tt0046532", - "tt3469284", - "tt1478804", - "tt9876426", - "tt1861343", - "tt0075393", - "tt4209802", - "tt0061971", - "tt4215332", - "tt3036676", - "tt0473700", - "tt3160230", - "tt2302601", - "tt3917318", - "tt2364975", - "tt0078277", - "tt2418558", - "tt0054823", - "tt2076826", - "tt0069919", - "tt2205589", - "tt1663625", - "tt2866296", - "tt2014198", - "tt2078549", - "tt2306236", - "tt0048992", - "tt2081253", - "tt0281122", - "tt6235850", - "tt3213078", - "tt0045504", - "tt2057931", - "tt1296077", - "tt1604100", - "tt1323917", - "tt2402213", - "tt3377240", - "tt3959690", - "tt2634414", - "tt0088722", - "tt3592904", - "tt0065478", - "tt2306633", - "tt4610244", - "tt2645164", - "tt1197613", - "tt0042629", - "tt3508840", - "tt1389762", - "tt5941692", - "tt1144797", - "tt0099634", - "tt3169770", - "tt2240966", - "tt0082042", - "tt3864758", - "tt3614922", - "tt1129412", - "tt0047562", - "tt1669814", - "tt3181898", - "tt2376246", - "tt5679402", - "tt2543202", - "tt3654680", - "tt1493798", - "tt4289566", - "tt1784600", - "tt1458503", - "tt4293752", - "tt1729674", - "tt3456206", - "tt2175947", - "tt0075137", - "tt4410798", - "tt5725894", - "tt0965375", - "tt4633694", - "tt1710900", - "tt0051629", - "tt0083560", - "tt2735292", - "tt0494228", - "tt2828884", - "tt1825784", - "tt2228902", - "tt2401211", - "tt2946436", - "tt2016872", - "tt7900820", - "tt2326013", - "tt2209626", - "tt4211516", - "tt7575480", - "tt3397992", - "tt4457852", - "tt6892388", - "tt0090727", - "tt3130734", - "tt3996414", - "tt0092006", - "tt0104870", - "tt0096267", - "tt0075086", - "tt0075229", - "tt1869362", - "tt2179027", - "tt5606742", - "tt2938464", - "tt1916749", - "tt3852066", - "tt2247748", - "tt1032749", - "tt0097874", - "tt1753693", - "tt2377414", - "tt0052820", - "tt1721491", - "tt0969322", - "tt3116438", - "tt0067515", - "tt1705125", - "tt1800734", - "tt0410162", - "tt0902337", - "tt1666187", - "tt0081459", - "tt0046294", - "tt0069795", - "tt3526408", - "tt1565441", - "tt0496673", - "tt0104822", - "tt4145108", - "tt4310772", - "tt3792330", - "tt0056350", - "tt1305800", - "tt6610158", - "tt5199588", - "tt1325743", - "tt2676350", - "tt0104823", - "tt2977672", - "tt0111348", - "tt0043075", - "tt0100261", - "tt4483094", - "tt0047449", - "tt3963640", - "tt2149137", - "tt4368098", - "tt0069179", - "tt0080808", - "tt2184207", - "tt4179512", - "tt2070604", - "tt4655630", - "tt0105645", - "tt0053341", - "tt3919322", - "tt8135494", - "tt0488928", - "tt3560742", - "tt1545103", - "tt3946300", - "tt3789946", - "tt0252480", - "tt1355627", - "tt4817640", - "tt1616092", - "tt8426838", - "tt0273907", - "tt6095090", - "tt0867286", - "tt1791500", - "tt0087538", - "tt2075318", - "tt5742568", - "tt2736254", - "tt0085250", - "tt0088395", - "tt0829421", - "tt0347971", - "tt3099940", - "tt3099370", - "tt1913178", - "tt2389162", - "tt3922754", - "tt4122118", - "tt1213012", - "tt1796607", - "tt1523367", - "tt1728638", - "tt3557406", - "tt2151633", - "tt2246907", - "tt0115965", - "tt0069841", - "tt3111728", - "tt1605803", - "tt0066848", - "tt2853182", - "tt2195552", - "tt1219822", - "tt0090322", - "tt1536374", - "tt1867086", - "tt4285960", - "tt4418398", - "tt4185566", - "tt2456594", - "tt0091339", - "tt0111244", - "tt3602106", - "tt1921111", - "tt2321501", - "tt0047904", - "tt0079278", - "tt2094762", - "tt3204254", - "tt0783492", - "tt1298716", - "tt1345488", - "tt3163336", - "tt4196868", - "tt0080485", - "tt0076665", - "tt1442492", - "tt1808304", - "tt1708534", - "tt0080802", - "tt5582876", - "tt0062159", - "tt0080346", - "tt0831285", - "tt1332119", - "tt2386668", - "tt0460777", - "tt5214224", - "tt0846004", - "tt2672180", - "tt0382443", - "tt1792584", - "tt2387589", - "tt2486278", - "tt0289589", - "tt0051150", - "tt0251806", - "tt0104178", - "tt0079176", - "tt1887676", - "tt0098014", - "tt2076871", - "tt0031225", - "tt2172055", - "tt0316900", - "tt1877797", - "tt0052610", - "tt0923653", - "tt2909124", - "tt3288992", - "tt2066070", - "tt2392846", - "tt2351392", - "tt0056957", - "tt3703148", - "tt1540014", - "tt2718314", - "tt0046375", - "tt1866251", - "tt4077656", - "tt3401338", - "tt0095005", - "tt2574576", - "tt2222062", - "tt3263096", - "tt1070886", - "tt8583190", - "tt0121744", - "tt3341832", - "tt6428912", - "tt1866197", - "tt0423474", - "tt3465456", - "tt7137380", - "tt3552642", - "tt2488366", - "tt7220640", - "tt0835775", - "tt0097455", - "tt0081445", - "tt3353138", - "tt3830812", - "tt4216834", - "tt3636090", - "tt0063242", - "tt3579990", - "tt3878196", - "tt2640674", - "tt1185244", - "tt3560762", - "tt0103802", - "tt2387431", - "tt0050371", - "tt3751084", - "tt3246840", - "tt3865238", - "tt0087260", - "tt0061976", - "tt0062808", - "tt0081759", - "tt0892084", - "tt3504824", - "tt1641401", - "tt3469440", - "tt2290567", - "tt3511542", - "tt0058561", - "tt0069922", - "tt0068182", - "tt3919278", - "tt2529272", - "tt3820450", - "tt0125308", - "tt5237980", - "tt2341308", - "tt0098190", - "tt2246831", - "tt3420064", - "tt3414954", - "tt0082841", - "tt2578608", - "tt2645044", - "tt3444184", - "tt1390397", - "tt2427502", - "tt3251306", - "tt2717558", - "tt2992146", - "tt3951190", - "tt0452703", - "tt0100661", - "tt2165735", - "tt6704038", - "tt3922810", - "tt0092147", - "tt0077912", - "tt0445939", - "tt6268536", - "tt4967094", - "tt1490726", - "tt1754912", - "tt4191486", - "tt0086884", - "tt1082599", - "tt0096246", - "tt4313982", - "tt0119288", - "tt5069110", - "tt4418152", - "tt6417256", - "tt7650198", - "tt0071464", - "tt4094144", - "tt2188907", - "tt2147459", - "tt5611404", - "tt1567227", - "tt4897822", - "tt1308169", - "tt1839426", - "tt3709552", - "tt0446027", - "tt2072979", - "tt0127282", - "tt2624220", - "tt3549656", - "tt0042208", - "tt5339418", - "tt5161658", - "tt4268054", - "tt0978800", - "tt6824456", - "tt0380687", - "tt0275434", - "tt1925466", - "tt0089504", - "tt2363309", - "tt1669268", - "tt2818654", - "tt4621016", - "tt1821617", - "tt3477732", - "tt2375278", - "tt0376196", - "tt1545106", - "tt0040872", - "tt6440916", - "tt0189764", - "tt0070061", - "tt2328490", - "tt2085752", - "tt1562918", - "tt1764636", - "tt0056732", - "tt0064881", - "tt3626440", - "tt0053976", - "tt0093674", - "tt0061049", - "tt3305844", - "tt0061780", - "tt0202483", - "tt1196618", - "tt0073363", - "tt0056141", - "tt0053570", - "tt0055151", - "tt0066904", - "tt0046435", - "tt0294909", - "tt3218094", - "tt3731196", - "tt0119196", - "tt1196134", - "tt0090928", - "tt0097456", - "tt0280486", - "tt0061132", - "tt2623946", - "tt0117089", - "tt1830402", - "tt2175675", - "tt3159412", - "tt0068640", - "tt0083976", - "tt1282147", - "tt0961088", - "tt0067030", - "tt0064111", - "tt1823120", - "tt2926810", - "tt0242508", - "tt6290798", - "tt0441627", - "tt2043971", - "tt0064819", - "tt3950078", - "tt2263942", - "tt2259306", - "tt1935896", - "tt1714828", - "tt1847541", - "tt1596753", - "tt2072220", - "tt1205558", - "tt0063141", - "tt0057286", - "tt1964773", - "tt1837613", - "tt9876408", - "tt3341072", - "tt3740242", - "tt2310792", - "tt3259968", - "tt0059282", - "tt1555110", - "tt0119258", - "tt0089539", - "tt0093550", - "tt1603489", - "tt2115325", - "tt0093146", - "tt2375597", - "tt0031968", - "tt3763790", - "tt0013951", - "tt1284485", - "tt1647477", - "tt2421416", - "tt0808261", - "tt0082968", - "tt0040308", - "tt0091603", - "tt2796678", - "tt0928364", - "tt4422796", - "tt0096402", - "tt3148978", - "tt2332579", - "tt0388139", - "tt7033498", - "tt6902510", - "tt4246854", - "tt2112293", - "tt0088979", - "tt0091848", - "tt0097364", - "tt0068661", - "tt0029992", - "tt3832160", - "tt0037991", - "tt1174739", - "tt0493407", - "tt0090350", - "tt0325965", - "tt4572820", - "tt2193167", - "tt0067919", - "tt3231390", - "tt0157894", - "tt0043511", - "tt0077138", - "tt4858474", - "tt1462900", - "tt4086032", - "tt5992138", - "tt6107412", - "tt0083922", - "tt0108633", - "tt0045061", - "tt0083908", - "tt0048341", - "tt2004211", - "tt0095158", - "tt0087472", - "tt0042851", - "tt0368975", - "tt0072239", - "tt2356464", - "tt3210686", - "tt5717960", - "tt1703125", - "tt3010660", - "tt5861630", - "tt1152403", - "tt0829424", - "tt0070634", - "tt1664873", - "tt2151915", - "tt0055805", - "tt1535098", - "tt2904798", - "tt0426556", - "tt1943710", - "tt5311972", - "tt2007430", - "tt3505800", - "tt2421910", - "tt4897156", - "tt1984116", - "tt0090015", - "tt4763340", - "tt5533664", - "tt0109508", - "tt6099400", - "tt0093991", - "tt3568380", - "tt0060491", - "tt0127759", - "tt0105470", - "tt0203940", - "tt0416481", - "tt0095334", - "tt2386175", - "tt2207484", - "tt1718714", - "tt8531560", - "tt0056945", - "tt4773438", - "tt5050328", - "tt2065945", - "tt2876428", - "tt0060545", - "tt0068883", - "tt0051093", - "tt3119416", - "tt3356682", - "tt0051819", - "tt2287214", - "tt4721404", - "tt0374546", - "tt0057400", - "tt4687848", - "tt0350184", - "tt2245171", - "tt1493815", - "tt0065820", - "tt3518012", - "tt0498361", - "tt0070270", - "tt1734429", - "tt0074235", - "tt0060529", - "tt1118519", - "tt1506459", - "tt0070438", - "tt2521404", - "tt3575258", - "tt2415458", - "tt0048158", - "tt0069687", - "tt2663744", - "tt0039745", - "tt1701218", - "tt1928337", - "tt5478700", - "tt4650624", - "tt1211353", - "tt4827558", - "tt3453772", - "tt0083801", - "tt0033873", - "tt9271164", - "tt0161849", - "tt1024746", - "tt2112210", - "tt9005662", - "tt0083185", - "tt0046714", - "tt3912672", - "tt0090774", - "tt0049793", - "tt2320388", - "tt0065482", - "tt0045112", - "tt4827290", - "tt1298643", - "tt0047919", - "tt0067757", - "tt1285217", - "tt2854876", - "tt0111797", - "tt0069414", - "tt4742670", - "tt0043265", - "tt0048254", - "tt0044103", - "tt1064801", - "tt1764355", - "tt0043292", - "tt2300913", - "tt2923936", - "tt0064451", - "tt2191082", - "tt0195234", - "tt0045758", - "tt3386928", - "tt5797164", - "tt10147546", - "tt0048554", - "tt2291284", - "tt0100728", - "tt2318268", - "tt0046766", - "tt5192278", - "tt1828124", - "tt3341084", - "tt0037913", - "tt4945466", - "tt0049646", - "tt2341971", - "tt0067084", - "tt0051947", - "tt0032599", - "tt1949106", - "tt0045251", - "tt0098645", - "tt0416881", - "tt0053146", - "tt0047876", - "tt0093970", - "tt0047119", - "tt0047094", - "tt7816392", - "tt2966760", - "tt1946177", - "tt0463381", - "tt1949546", - "tt0022879", - "tt0049967", - "tt9368628", - "tt1929449", - "tt0939684", - "tt0038477", - "tt1922544", - "tt1344659", - "tt0404977", - "tt0033712", - "tt9810480", - "tt0040806", - "tt8075260", - "tt1995373", - "tt0045283", - "tt1714917", - "tt1417592", - "tt0064405", - "tt0041958", - "tt0039750", - "tt1947969", - "tt0080479", - "tt1942972", - "tt4802214", - "tt0876563", - "tt1943035", - "tt4785440", - "tt0068816", - "tt0037367", - "tt0038409", - "tt0226874", - "tt0041239", - "tt1946148", - "tt0040257", - "tt0041968", - "tt0226873", - "tt0038396", - "tt0038873", - "tt1986953", - "tt0038392", - "tt2700114", - "tt0019421", - "tt4819498", - "tt1948521", - "tt0047958", - "tt0041787", - "tt0015624", - "tt5954284", - "tt0036824", - "tt0037691", - "tt4935282", - "tt3379814", - "tt5843990", - "tt0015400", - "tt1073240", - "tt0068408", - "tt0037756", - "tt0034891", - "tt0040737", - "tt0039266", - "tt9283056", - "tt1571247", - "tt0042039", - "tt0038468", - "tt2670016", - "tt2227830", - "tt0033405", - "tt1643222", - "tt0038363", - "tt0041996", - "tt0113987", - "tt0039834", - "tt6933206", - "tt2345525", - "tt6616364", - "tt0018192", - "tt3719416", - "tt0035169", - "tt3020226", - "tt0040416", - "tt1510983", - "tt3591944", - "tt0381940", - "tt1510985", - "tt0040946", - "tt1691452", - "tt0034012", - "tt9251614", - "tt0040092", - "tt0038733", - "tt0039208", - "tt0039768", - "tt4019426", - "tt0041841", - "tt0039478", - "tt4038966", - "tt0035966", - "tt2391073", - "tt1290475", - "tt1568921", - "tt4519400", - "tt5891150", - "tt4820418", - "tt0072867", - "tt0035916", - "tt6485304", - "tt0039404", - "tt0055871", - "tt2233492", - "tt0034522", - "tt0034091", - "tt0032455", - "tt0047677", - "tt2677894", - "tt2204340", - "tt2275499", - "tt0040160", - "tt1801063", - "tt1859607", - "tt0040221", - "tt0041094", - "tt2878846", - "tt0156887", - "tt0031359", - "tt9423984", - "tt0040614", - "tt2091229", - "tt6479534", - "tt0045828", - "tt7913172", - "tt0090209", - "tt0036969", - "tt6054290", - "tt0038116", - "tt0047033", - "tt0045911", - "tt2903076", - "tt8560130", - "tt2388759", - "tt0073756", - "tt4882930", - "tt7938092", - "tt2126347", - "tt0073755", - "tt0041587", - "tt0073623", - "tt0422779", - "tt4439342", - "tt1366409", - "tt0475860", - "tt1232775", - "tt0095060", - "tt4694594", - "tt5866732", - "tt0756690", - "tt7562564", - "tt5468016", - "tt1705786", - "tt0065210", - "tt5468018", - "tt6241872", - "tt0218553", - "tt5143704", - "tt0072253", - "tt0050100", - "tt0134928", - "tt10025732", - "tt0094794", - "tt0085473", - "tt0264935", - "tt0086345", - "tt3228088", - "tt0065032", - "tt1470022", - "tt8290698", - "tt0049639", - "tt0060865", - "tt0385846", - "tt3323638", - "tt3640272", - "tt4608574", - "tt1047544", - "tt0088818", - "tt0810817", - "tt1558576", - "tt3855546", - "tt2306836", - "tt0091507", - "tt1156447", - "tt0970529", - "tt0081485", - "tt1137455", - "tt3025994", - "tt0047370", - "tt5574372", - "tt2740538", - "tt1571234", - "tt1596565", - "tt0054271", - "tt1728973", - "tt2364006", - "tt0101497", - "tt4932244", - "tt1016024", - "tt0077450", - "tt0071194", - "tt1910615", - "tt1820400", - "tt1584943", - "tt9481862", - "tt0066952", - "tt0069318", - "tt0097971", - "tt0067671", - "tt1582198", - "tt1210071", - "tt1719068", - "tt9014006", - "tt3108584", - "tt0079580", - "tt4333368", - "tt0065981", - "tt4460854", - "tt0071268", - "tt2414212", - "tt0108277", - "tt1854513", - "tt6851966", - "tt0050470", - "tt3398788", - "tt0845463", - "tt2452470", - "tt7222072", - "tt1543807", - "tt1495776", - "tt9914350", - "tt2898306", - "tt1969062", - "tt0076417", - "tt1572502", - "tt2306342", - "tt1690540", - "tt3585004", - "tt1832516", - "tt1772262", - "tt3139212", - "tt1890455", - "tt1714176", - "tt1535472", - "tt0120224", - "tt1995477", - "tt1238302", - "tt3619102", - "tt0043079", - "tt2243621", - "tt1646212", - "tt1667416", - "tt0069530", - "tt1368870", - "tt3096712", - "tt1582213", - "tt3155654", - "tt1499220", - "tt0035489", - "tt3355510", - "tt1296172", - "tt1656171", - "tt1941627", - "tt1830495", - "tt5481984", - "tt1286800", - "tt3009070", - "tt2463154", - "tt0892094", - "tt0403848", - "tt0056526", - "tt0066258", - "tt6236504", - "tt1786742", - "tt6948600", - "tt5770414", - "tt4299300", - "tt0347246", - "tt4572700", - "tt4503324", - "tt0113568", - "tt1492728", - "tt2145540", - "tt7339930", - "tt2320924", - "tt1622991", - "tt9434772", - "tt1848904", - "tt6164854", - "tt0398033", - "tt1847548", - "tt1475135", - "tt0306011", - "tt2690160", - "tt0084704", - "tt0079027", - "tt0402904", - "tt0343531", - "tt0092850", - "tt0089034", - "tt0105526", - "tt0050085", - "tt0169620", - "tt0040652", - "tt0071788", - "tt3432552", - "tt0043288", - "tt1460643", - "tt2132374", - "tt5143700", - "tt0181012", - "tt0062218", - "tt2972058", - "tt0038854", - "tt0079128", - "tt1640116", - "tt0087127", - "tt0122070", - "tt1535608", - "tt0111216", - "tt0089199", - "tt0086340", - "tt0113982", - "tt1946310", - "tt1577883", - "tt0348121", - "tt0080842", - "tt0046026", - "tt2094146", - "tt0066050", - "tt4815204", - "tt0409999", - "tt0441041", - "tt1757831", - "tt0085224", - "tt1810710", - "tt0061696", - "tt4065552", - "tt1468703", - "tt0094625", - "tt1844643", - "tt1947998", - "tt5886046", - "tt0099384", - "tt4704918", - "tt0094929", - "tt0078764", - "tt0071259", - "tt2297108", - "tt2564978", - "tt1261414", - "tt8752474", - "tt5377654", - "tt1824904", - "tt6628394", - "tt4083052", - "tt0067204", - "tt2486490", - "tt1727824", - "tt4883336", - "tt1942798", - "tt9740572", - "tt0070696", - "tt3130560", - "tt5375434", - "tt3417526", - "tt9811870", - "tt5850588", - "tt6519020", - "tt0050997", - "tt6400280", - "tt8529186", - "tt9618280", - "tt8434380", - "tt1337682", - "tt9279172", - "tt1054564", - "tt8201170", - "tt3480446", - "tt8306022", - "tt3699702", - "tt0822389", - "tt1911600", - "tt2091327", - "tt0103303", - "tt0083070", - "tt0100339", - "tt0228891", - "tt0330152", - "tt0770814", - "tt0456912", - "tt1977001", - "tt1742682", - "tt0070653", - "tt1913042", - "tt1185838", - "tt0054290", - "tt1688704", - "tt1641388", - "tt1409734", - "tt3139756", - "tt2509298", - "tt0124770", - "tt2113681", - "tt1935104", - "tt4132190", - "tt1096997", - "tt1189073", - "tt3268790", - "tt2948530", - "tt1691020", - "tt0072610", - "tt0112843", - "tt2577854", - "tt3510718", - "tt0119238", - "tt0079400", - "tt0932661", - "tt0059094", - "tt0069786", - "tt3148552", - "tt0018684", - "tt2722504", - "tt0443448", - "tt0140859", - "tt3326880", - "tt0076706", - "tt0046087", - "tt0052941", - "tt0481494", - "tt1595637", - "tt3312180", - "tt0079806", - "tt1615885", - "tt5758726", - "tt0064310", - "tt0109831", - "tt4883124", - "tt0091508", - "tt0061989", - "tt0074873", - "tt1229236", - "tt1368860", - "tt0048227", - "tt3836530", - "tt0060754", - "tt2040537", - "tt1187046", - "tt1481573", - "tt1453403", - "tt0063067", - "tt1414374", - "tt0422272", - "tt0064695", - "tt0113318", - "tt1484918", - "tt0065962", - "tt3803664", - "tt2386490", - "tt1884312", - "tt7762748", - "tt0064704", - "tt6811018", - "tt1927172", - "tt1702587", - "tt4154916", - "tt0069489", - "tt0119623", - "tt0078748", - "tt1302001", - "tt2199587", - "tt2325491", - "tt2609326", - "tt6443294", - "tt1874434", - "tt4991652", - "tt0078203", - "tt0143016", - "tt1572777", - "tt0058977", - "tt0073241", - "tt0206553", - "tt6136778", - "tt5468022", - "tt3024324", - "tt0048805", - "tt4433646", - "tt4242100", - "tt5468014", - "tt0405615", - "tt1965118", - "tt1199453", - "tt1430132", - "tt0099313", - "tt3640068", - "tt0118980", - "tt6619330", - "tt0118604", - "tt2088980", - "tt2944980", - "tt1828320", - "tt1674058", - "tt3384870", - "tt0098158", - "tt0104710", - "tt1764366", - "tt4076164", - "tt8726116", - "tt0292109", - "tt1847672", - "tt7903530", - "tt1763305", - "tt3468698", - "tt1551641", - "tt2301592", - "tt3550902", - "tt1610394", - "tt2543336", - "tt1337673", - "tt0073784", - "tt0048047", - "tt2328696", - "tt0054358", - "tt0032728", - "tt0077630", - "tt0366860", - "tt2209792", - "tt0099991", - "tt0117883", - "tt0046040", - "tt1986769", - "tt3793230", - "tt1305806", - "tt0066834", - "tt0081073", - "tt1064953", - "tt1702016", - "tt0077952", - "tt1663999", - "tt2414766", - "tt5155486", - "tt0462373", - "tt0078976", - "tt1130980", - "tt4082524", - "tt0066262", - "tt1844811", - "tt0088157", - "tt0087777", - "tt0070921", - "tt4532818", - "tt1675434", - "tt5292240", - "tt5316540", - "tt0870101", - "tt0050506", - "tt0033317", - "tt6680116", - "tt0067381", - "tt0083677", - "tt1733582", - "tt2942196", - "tt1324058", - "tt2559458", - "tt3597732", - "tt2258399", - "tt2449810", - "tt7834022", - "tt0341569", - "tt2263468", - "tt0780516", - "tt0034928", - "tt0057681", - "tt2099556", - "tt6823368", - "tt0074404", - "tt0052205", - "tt1792643", - "tt0048966", - "tt0974536", - "tt2147521", - "tt0068698", - "tt0070488", - "tt3447592", - "tt0095984", - "tt1587685", - "tt0166996", - "tt2140113", - "tt2620490", - "tt0479341", - "tt1288636", - "tt0395119", - "tt0057643", - "tt0064571", - "tt2639514", - "tt0059641", - "tt2909748", - "tt0195185", - "tt1164999", - "tt0069951", - "tt0074437", - "tt1821355", - "tt2275743", - "tt0025301", - "tt1360832", - "tt6251024", - "tt1536051", - "tt2893780", - "tt1753521", - "tt0065850", - "tt1964634", - "tt7275816", - "tt2313896", - "tt0122111", - "tt3779570", - "tt0426931", - "tt0445934", - "tt0079301", - "tt4669788", - "tt2382090", - "tt0070297", - "tt1596783", - "tt0059160", - "tt1735839", - "tt1535101", - "tt1640219", - "tt0073345", - "tt0284851", - "tt0070839", - "tt2232578", - "tt0066445", - "tt2245277", - "tt0066392", - "tt0069004", - "tt0074849", - "tt0056940", - "tt2265565", - "tt0037449", - "tt1893415", - "tt0419692", - "tt0039735", - "tt0781511", - "tt4699130", - "tt2404555", - "tt0073620", - "tt2081367", - "tt2278870", - "tt1865335", - "tt0408236", - "tt0033729", - "tt3718824", - "tt0902982", - "tt0055283", - "tt2390341", - "tt1852977", - "tt0062868", - "tt3626180", - "tt0407536", - "tt1349646", - "tt9556850", - "tt1347280", - "tt1555069", - "tt0403120", - "tt1748016", - "tt0297884", - "tt4002772", - "tt1121986", - "tt2184267", - "tt1587436", - "tt1341335", - "tt5823690", - "tt0046436", - "tt0046896", - "tt0409379", - "tt1355230", - "tt0809533", - "tt0033370", - "tt1790658", - "tt8671116", - "tt0048465", - "tt1183923", - "tt0928124", - "tt0038214", - "tt2371486", - "tt3921858", - "tt0040395", - "tt0092048", - "tt1327709", - "tt0040109", - "tt1586752", - "tt2260254", - "tt1568338", - "tt2041534", - "tt0075670", - "tt1845804", - "tt0051911", - "tt0081595", - "tt2298274", - "tt2484184", - "tt1888509", - "tt1085469", - "tt6162808", - "tt6733368", - "tt0041838", - "tt1429432", - "tt1252616", - "tt0064122", - "tt1069238", - "tt0070183", - "tt9783876", - "tt2679576", - "tt1780762", - "tt2262270", - "tt8554256", - "tt1173745", - "tt1851006", - "tt1646959", - "tt0073806", - "tt3235880", - "tt1647476", - "tt2325993", - "tt1692504", - "tt0045551", - "tt0080491", - "tt1131743", - "tt1993396", - "tt3121562", - "tt4080728", - "tt0077807", - "tt3781616", - "tt6861980", - "tt2328745", - "tt3398268", - "tt1891905", - "tt1883180", - "tt8920938", - "tt0120594", - "tt3266948", - "tt1954701", - "tt2298224", - "tt5828640", - "tt0352625", - "tt2018108", - "tt0058126", - "tt3208802", - "tt5781724", - "tt0201952", - "tt4780842", - "tt0280933", - "tt5623224", - "tt1221972", - "tt0059163", - "tt3102906", - "tt1444252", - "tt7358302", - "tt0075888", - "tt0104688", - "tt2381317", - "tt1744825", - "tt0014636", - "tt0457517", - "tt7297962", - "tt4193216", - "tt0811011", - "tt0904127", - "tt0109747", - "tt0185714", - "tt0081299", - "tt1593643", - "tt0058319", - "tt0349865", - "tt9455066", - "tt6151714", - "tt0270509", - "tt0080563", - "tt5638952", - "tt9454978", - "tt0106642", - "tt0317321", - "tt9457966", - "tt6709826", - "tt4525270", - "tt1447499", - "tt6012750", - "tt4769430", - "tt1930458", - "tt3150966", - "tt6010518", - "tt1514425", - "tt6805328", - "tt0280096", - "tt2252552", - "tt0058402", - "tt9617546", - "tt2303110", - "tt0096030", - "tt0092288", - "tt2186766", - "tt0033029", - "tt0074412", - "tt1308109", - "tt0082159", - "tt1268208", - "tt1156448", - "tt1492842", - "tt2645670", - "tt0087746", - "tt0043392", - "tt2162574", - "tt0069229", - "tt2091455", - "tt0113194", - "tt1234550", - "tt2726270", - "tt0053390", - "tt0106758", - "tt5843838", - "tt1353997", - "tt1027698", - "tt1867566", - "tt2557256", - "tt0347618", - "tt0085398", - "tt0082956", - "tt1650516", - "tt0281364", - "tt1424045", - "tt3806888", - "tt0089477", - "tt2459028", - "tt2584018", - "tt1477109", - "tt1016090", - "tt1055363", - "tt1204966", - "tt4197006", - "tt4218572", - "tt1334456", - "tt0093881", - "tt2106577", - "tt0068415", - "tt0958824", - "tt7078004", - "tt1345772", - "tt0780500", - "tt0831316", - "tt1151309", - "tt2586070", - "tt0487920", - "tt2524674", - "tt1821352", - "tt0113044", - "tt0072735", - "tt0100680", - "tt0398839", - "tt0313608", - "tt0105219", - "tt5207004", - "tt0047873", - "tt0411058", - "tt9914458", - "tt4641776", - "tt0153930", - "tt2412568", - "tt0080116", - "tt1869425", - "tt0030746", - "tt0055139", - "tt2408734", - "tt0067983", - "tt1190910", - "tt7014110", - "tt1949605", - "tt1241018", - "tt1654833", - "tt1492886", - "tt0065720", - "tt0073634", - "tt5586110", - "tt0082425", - "tt0787495", - "tt0068515", - "tt3924782", - "tt6198412", - "tt4480398", - "tt1119178", - "tt0222425", - "tt2414822", - "tt0195192", - "tt0071721", - "tt1229821", - "tt0817910", - "tt1249453", - "tt0036716", - "tt0907681", - "tt0062652", - "tt0072198", - "tt1931551", - "tt4626160", - "tt4147210", - "tt0810895", - "tt0019509", - "tt0243991", - "tt2179087", - "tt1637713", - "tt0312723", - "tt4641730", - "tt0068268", - "tt0047200", - "tt0073343", - "tt1288367", - "tt2988852", - "tt8569610", - "tt2335732", - "tt4518260", - "tt1117386", - "tt0085409", - "tt0160586", - "tt2363181", - "tt1200852", - "tt0324133", - "tt0031455", - "tt1034415", - "tt7616798", - "tt8115282", - "tt0059263", - "tt0041931", - "tt2202569", - "tt0047336", - "tt2258647", - "tt0043338", - "tt0031725", - "tt0031210", - "tt0914363", - "tt1421383", - "tt0854670", - "tt1382655", - "tt0031235", - "tt1341795", - "tt0040559", - "tt0099969", - "tt0050706", - "tt1176453", - "tt0077711", - "tt0075970", - "tt0092646", - "tt1339191", - "tt1455619", - "tt1552423", - "tt1540761", - "tt1337686", - "tt0085809", - "tt1286746", - "tt0055988", - "tt1230380", - "tt0104489", - "tt0039631", - "tt0047478", - "tt0087028", - "tt0040724", - "tt0046478", - "tt0279331", - "tt2186426", - "tt1496884", - "tt0043132", - "tt1217301", - "tt2385001", - "tt1564369", - "tt0061589", - "tt1734586", - "tt1540803", - "tt0034399", - "tt8774622", - "tt0487176", - "tt0056187", - "tt2354437", - "tt6284404", - "tt0490240", - "tt0076845", - "tt3475596", - "tt0035763", - "tt0439848", - "tt0480919", - "tt0025452", - "tt0453560", - "tt1034010", - "tt2071441", - "tt2701772", - "tt0120753", - "tt2153963", - "tt1160907", - "tt1446208", - "tt0044981", - "tt1307858", - "tt1951218", - "tt1508349", - "tt0068734", - "tt1849899", - "tt1977681", - "tt0033152", - "tt2202750", - "tt2147277", - "tt1847713", - "tt0756729", - "tt6832388", - "tt0065007", - "tt0118840", - "tt1087522", - "tt1520399", - "tt4501706", - "tt1648093", - "tt1984153", - "tt0312329", - "tt1874779", - "tt2027128", - "tt0406158", - "tt1330216", - "tt1342115", - "tt1501652", - "tt1619880", - "tt6627192", - "tt1869315", - "tt0033853", - "tt2320087", - "tt1016241", - "tt0050243", - "tt0115509", - "tt0041767", - "tt4835456", - "tt0290057", - "tt1606189", - "tt0878657", - "tt2654124", - "tt2825924", - "tt7242142", - "tt4820312", - "tt0044446", - "tt3678188", - "tt0100065", - "tt3481210", - "tt2056690", - "tt2652476", - "tt2196236", - "tt0094752", - "tt5113086", - "tt0045846", - "tt3298522", - "tt0059624", - "tt3396166", - "tt0059714", - "tt0303021", - "tt1942787", - "tt1228963", - "tt0080016", - "tt0096071", - "tt1848832", - "tt1541664", - "tt6322422", - "tt4475992", - "tt1876446", - "tt3033080", - "tt1489248", - "tt1965136", - "tt2345761", - "tt0071437", - "tt0455961", - "tt2753048", - "tt0067995", - "tt5605470", - "tt0061865", - "tt0206545", - "tt1381413", - "tt0810772", - "tt0165237", - "tt1160374", - "tt2461736", - "tt0475323", - "tt2403883", - "tt1329404", - "tt0756632", - "tt4086116", - "tt3816614", - "tt0081515", - "tt0181611", - "tt4065340", - "tt0070190", - "tt8332772", - "tt3975510", - "tt2402619", - "tt1887748", - "tt0060288", - "tt2216212", - "tt0073200", - "tt0054724", - "tt1544578", - "tt5495040", - "tt4907174", - "tt0067491", - "tt1461249", - "tt0060091", - "tt0044896", - "tt0985695", - "tt5490470", - "tt0053810", - "tt0105719", - "tt0068739", - "tt1865545", - "tt3358328", - "tt3421124", - "tt0104115", - "tt1971558", - "tt2945892", - "tt9378850", - "tt2475846", - "tt1876283", - "tt3993802", - "tt1523485", - "tt0069952", - "tt1129415", - "tt8386710", - "tt4519312", - "tt0066564", - "tt0087578", - "tt0062859", - "tt0062844", - "tt0808508", - "tt0054295", - "tt2490004", - "tt1376168", - "tt7048676", - "tt1449379", - "tt3280264", - "tt2006181", - "tt0079855", - "tt4405860", - "tt0073107", - "tt0092674", - "tt2909476", - "tt0042265", - "tt2180543", - "tt1117636", - "tt1307926", - "tt1659253", - "tt0023938", - "tt1566637", - "tt6591520", - "tt1562563", - "tt4820224", - "tt0066863", - "tt7549452", - "tt0110668", - "tt0049871", - "tt3289724", - "tt6857958", - "tt1255919", - "tt1715223", - "tt1577065", - "tt0304584", - "tt0091707", - "tt9301884", - "tt2984576", - "tt1179258", - "tt0097263", - "tt9015764", - "tt3913194", - "tt0053334", - "tt0372921", - "tt0078919", - "tt2064905", - "tt2657138", - "tt1082064", - "tt2292182", - "tt0080895", - "tt0064555", - "tt0100139", - "tt1931466", - "tt5822160", - "tt3030354", - "tt0083755", - "tt0052148", - "tt3336368", - "tt8396188", - "tt2396224", - "tt2015261", - "tt1877707", - "tt0077429", - "tt0075617", - "tt0029192", - "tt4949290", - "tt2925768", - "tt5262450", - "tt3219604", - "tt0385639", - "tt0065737", - "tt6729000", - "tt3233972", - "tt0275067", - "tt0828103", - "tt0081031", - "tt0951333", - "tt2072164", - "tt4603210", - "tt0093843", - "tt0043503", - "tt0113241", - "tt0105395", - "tt7232928", - "tt0056405", - "tt0099817", - "tt10068994", - "tt0445409", - "tt1567233", - "tt0048336", - "tt0084287", - "tt6984534", - "tt0298856", - "tt0117108", - "tt0113234", - "tt4557998", - "tt7893992", - "tt2719868", - "tt0086459", - "tt0065182", - "tt0113858", - "tt4595882", - "tt1063111", - "tt0083805", - "tt0059803", - "tt3033948", - "tt1007950", - "tt0065451", - "tt0050208", - "tt2889716", - "tt0079843", - "tt1130983", - "tt0099701", - "tt3735554", - "tt0055797", - "tt2320073", - "tt1727795", - "tt2108535", - "tt1946381", - "tt0049407", - "tt0057168", - "tt0049013", - "tt4578050", - "tt0492881", - "tt0109098", - "tt9685652", - "tt0104879", - "tt1753786", - "tt1151911", - "tt4447108", - "tt0034027", - "tt0046076", - "tt6471628", - "tt1512310", - "tt1242516", - "tt4059702", - "tt0892051", - "tt0071161", - "tt1645916", - "tt1118693", - "tt0084796", - "tt1209361", - "tt3261302", - "tt0043540", - "tt2481554", - "tt0102674", - "tt0076099", - "tt4951982", - "tt2171901", - "tt0070287", - "tt0059470", - "tt0048976", - "tt5470222", - "tt0865560", - "tt0040761", - "tt8075192", - "tt4505830", - "tt0067520", - "tt3198698", - "tt0023825", - "tt1425252", - "tt0103078", - "tt0880570", - "tt4226970", - "tt1679248", - "tt0076888", - "tt1710573", - "tt0370754", - "tt1621426", - "tt0053849", - "tt0057371", - "tt0099606", - "tt0059560", - "tt0915463", - "tt2006801", - "tt2179226", - "tt0040974", - "tt1705790", - "tt1864494", - "tt2331880", - "tt2290709", - "tt0381348", - "tt4644382", - "tt1667439", - "tt0110044", - "tt2053423", - "tt2133333", - "tt1090646", - "tt0419663", - "tt0414344", - "tt4314716", - "tt3034594", - "tt0083619", - "tt4771704", - "tt0243736", - "tt0038395", - "tt0117533", - "tt3481550", - "tt0048260", - "tt0068577", - "tt0097498", - "tt0056585", - "tt0363768", - "tt0103316", - "tt4711762", - "tt0070312", - "tt0100791", - "tt4636022", - "tt0454932", - "tt3699692", - "tt0070184", - "tt2497808", - "tt5072350", - "tt0115851", - "tt4614936", - "tt0174480", - "tt4616250", - "tt0120157", - "tt1716759", - "tt0067535", - "tt0468965", - "tt3236976", - "tt5634960", - "tt2176722", - "tt2312262", - "tt1636629", - "tt0071478", - "tt0083715", - "tt0463960", - "tt4065212", - "tt1249311", - "tt4805816", - "tt2397521", - "tt0056346", - "tt1800671", - "tt0049405", - "tt0082596", - "tt1245735", - "tt2277932", - "tt2822578", - "tt0082279", - "tt4508542", - "tt1797487", - "tt0094899", - "tt1235200", - "tt0816616", - "tt1970077", - "tt2073121", - "tt7077210", - "tt8746914", - "tt4261326", - "tt7112154", - "tt0847526", - "tt6857956", - "tt0041223", - "tt0053577", - "tt9855990", - "tt0056626", - "tt6266538", - "tt2010976", - "tt0478210", - "tt3343868", - "tt0287733", - "tt7959026", - "tt0068271", - "tt0095719", - "tt6682134", - "tt1887703", - "tt0115701", - "tt0067975", - "tt1300155", - "tt1763288", - "tt2215366", - "tt1754506", - "tt1220627", - "tt2510268", - "tt0098333", - "tt0100975", - "tt5373786", - "tt8684556", - "tt0090310", - "tt3564200", - "tt0114272", - "tt1754736", - "tt9493030", - "tt0028784", - "tt0049125", - "tt0063348", - "tt0046035", - "tt1488594", - "tt3187378", - "tt0089665", - "tt1436034", - "tt1229370", - "tt2396495", - "tt4677938", - "tt0082537", - "tt0105871", - "tt0060877", - "tt1502417", - "tt0094850", - "tt0095626", - "tt3382842", - "tt0086886", - "tt0073172", - "tt3488056", - "tt0107384", - "tt1331323", - "tt0062618", - "tt5537228", - "tt5543678", - "tt0045699", - "tt0079173", - "tt0193364", - "tt4701182", - "tt0883391", - "tt9759918", - "tt0070835", - "tt3454574", - "tt0080645", - "tt4431326", - "tt5954892", - "tt2739338", - "tt3685818", - "tt0374584", - "tt0084112", - "tt4636252", - "tt4423778", - "tt0140914", - "tt0068542", - "tt3893038", - "tt2243469", - "tt4935110", - "tt4614940", - "tt3730510", - "tt5612156", - "tt0091035", - "tt0977663", - "tt9109306", - "tt6433832", - "tt1754228", - "tt0074920", - "tt2273657", - "tt1665418", - "tt0098084", - "tt1745958", - "tt3977428", - "tt0235712", - "tt3520714", - "tt0110168", - "tt1650413", - "tt3732950", - "tt0046789", - "tt0092848", - "tt4269238", - "tt4673790", - "tt1790669", - "tt0827735", - "tt0078989", - "tt0315327", - "tt0073234", - "tt5732530", - "tt0055429", - "tt0084191", - "tt0050162", - "tt3657684", - "tt0071167", - "tt1883269", - "tt3215826", - "tt1899285", - "tt7138894", - "tt5584756", - "tt0089835", - "tt0113492", - "tt0046928", - "tt0085868", - "tt0089436", - "tt0178868", - "tt0092690", - "tt0091601", - "tt1321509", - "tt6150184", - "tt2124180", - "tt2239824", - "tt1038011", - "tt1039900", - "tt7478112", - "tt1852036", - "tt7297336", - "tt6734754", - "tt0069890", - "tt0059764", - "tt0303732", - "tt0239510", - "tt2094787", - "tt1880418", - "tt1723123", - "tt3819610", - "tt0014900", - "tt3198000", - "tt8782974", - "tt5822140", - "tt1860238", - "tt0068282", - "tt5985052", - "tt5514674", - "tt1210344", - "tt2477218", - "tt4419596", - "tt0996958", - "tt4703676", - "tt2204315", - "tt1893371", - "tt7913478", - "tt5559586", - "tt3684500", - "tt0067511", - "tt0075035", - "tt3400980", - "tt0120323", - "tt0831280", - "tt0051845", - "tt5543604", - "tt7730102", - "tt1984110", - "tt0968311", - "tt0082084", - "tt3058618", - "tt0379725", - "tt4123430", - "tt8223844", - "tt4119054", - "tt4558396", - "tt1857718", - "tt2062622", - "tt5492906", - "tt0107091", - "tt6095616", - "tt0081662", - "tt2419986", - "tt0094320", - "tt4636254", - "tt0057239", - "tt3303730", - "tt4497338", - "tt4636298", - "tt1429313", - "tt5432712", - "tt4075458", - "tt0102422", - "tt0075999", - "tt1827372", - "tt4912452", - "tt1624996", - "tt0787485", - "tt3059816", - "tt0809432", - "tt3892620", - "tt0085514", - "tt3734678", - "tt1384925", - "tt0024951", - "tt0034965", - "tt3520290", - "tt1815746", - "tt0118163", - "tt7867360", - "tt3393070", - "tt7651078", - "tt2922590", - "tt2901962", - "tt6917242", - "tt2126357", - "tt1761005", - "tt3385524", - "tt4404296", - "tt1618432", - "tt4940780", - "tt1562849", - "tt1989593", - "tt0056315", - "tt4766604", - "tt0058307", - "tt4567486", - "tt4696222", - "tt2180587", - "tt1008010", - "tt6731636", - "tt1361828", - "tt0166314", - "tt5907748", - "tt0043733", - "tt3127698", - "tt0087616", - "tt0095649", - "tt0071507", - "tt7224824", - "tt4478526", - "tt5848714", - "tt5651338", - "tt3479208", - "tt2530392", - "tt0062851", - "tt2405182", - "tt4441422", - "tt0049601", - "tt1692084", - "tt0110805", - "tt0119842", - "tt0078435", - "tt0062852", - "tt6069264", - "tt2250282", - "tt1421378", - "tt1525915", - "tt2338846", - "tt0062853", - "tt3306858", - "tt4227282", - "tt0065968", - "tt3400932", - "tt1319709", - "tt0020686", - "tt0034277", - "tt3697418", - "tt5947416", - "tt7579788", - "tt1504319", - "tt0066827", - "tt3320500", - "tt2916416", - "tt2402179", - "tt0058238", - "tt0071203", - "tt4480494", - "tt3375286", - "tt3298600", - "tt3698118", - "tt4173478", - "tt5161376", - "tt0070957", - "tt1772261", - "tt5032492", - "tt5994894", - "tt1038915", - "tt0066773", - "tt0258766", - "tt4671274", - "tt0307453", - "tt0060429", - "tt0113305", - "tt0048124", - "tt0101831", - "tt0098486", - "tt0048790", - "tt0067017", - "tt0108101", - "tt0062155", - "tt0089562", - "tt2847438", - "tt4621630", - "tt1331329", - "tt1928329", - "tt0097814", - "tt1545985", - "tt6589464", - "tt1566501", - "tt1998204", - "tt5286432", - "tt4511566", - "tt2401181", - "tt1833888", - "tt0051381", - "tt0013496", - "tt1653913", - "tt3003800", - "tt4859034", - "tt1895321", - "tt3952900", - "tt0310357", - "tt1706470", - "tt0050271", - "tt0064074", - "tt0036443", - "tt1203517", - "tt1334536", - "tt0062870", - "tt1618372", - "tt2035670", - "tt0399295", - "tt0119698", - "tt3569970", - "tt0102749", - "tt2790236", - "tt0114296", - "tt0811128", - "tt5991410", - "tt1558575", - "tt0069738", - "tt5369484", - "tt0067176", - "tt1865503", - "tt1656170", - "tt0078975", - "tt6523720", - "tt2041331", - "tt0081467", - "tt1260365", - "tt2215457", - "tt3697946", - "tt5136064", - "tt0050294", - "tt4510398", - "tt2061869", - "tt0017448", - "tt0082094", - "tt1780856", - "tt1422674", - "tt0370244", - "tt0066104", - "tt1935940", - "tt0045814", - "tt1954352", - "tt0326965", - "tt2039399", - "tt0057363", - "tt4010918", - "tt4076058", - "tt0032206", - "tt0071950", - "tt3809308", - "tt3054798", - "tt1734582", - "tt0365658", - "tt1282153", - "tt0066053", - "tt5543600", - "tt0104350", - "tt0051848", - "tt0041969", - "tt0079759", - "tt0033226", - "tt0113376", - "tt4699534", - "tt2474932", - "tt1454505", - "tt0040444", - "tt2887322", - "tt2761578", - "tt0080503", - "tt1425922", - "tt2184227", - "tt2883352", - "tt6412864", - "tt7125860", - "tt3900206", - "tt2848324", - "tt3254796", - "tt5693136", - "tt0057523", - "tt1529235", - "tt4060866", - "tt0069048", - "tt0059678", - "tt0064904", - "tt0048291", - "tt5651840", - "tt2337576", - "tt4806012", - "tt3896100", - "tt1571409", - "tt3685668", - "tt4693464", - "tt0039349", - "tt1467273", - "tt2906276", - "tt5112692", - "tt0113820", - "tt0084935", - "tt1371081", - "tt1756415", - "tt0439771", - "tt1042497", - "tt0073817", - "tt9075656", - "tt0054452", - "tt0050267", - "tt0071521", - "tt3501416", - "tt3531578", - "tt1441373", - "tt1159922", - "tt0120303", - "tt2299248", - "tt0099026", - "tt0055571", - "tt4126394", - "tt0081248", - "tt0120108", - "tt0473364", - "tt0113824", - "tt0012494", - "tt0369903", - "tt2013293", - "tt0104652", - "tt2042447", - "tt0064395", - "tt8490686", - "tt2014319", - "tt1937269", - "tt0061489", - "tt0057986", - "tt1483756", - "tt0092067", - "tt0488962", - "tt0347149", - "tt7874348", - "tt7583152", - "tt2326574", - "tt0115033", - "tt3283556", - "tt0051047", - "tt0079833", - "tt0079858", - "tt0065079", - "tt5788136", - "tt3582020", - "tt1185834", - "tt0096283", - "tt9747392", - "tt5804314", - "tt6174226", - "tt4922692", - "tt0067738", - "tt5929754", - "tt5923962", - "tt5269038", - "tt0066436", - "tt0060893", - "tt0040491", - "tt3305388", - "tt0062792", - "tt4203788", - "tt2194826", - "tt1227183", - "tt0071200", - "tt0057560", - "tt0093820", - "tt1716753", - "tt0959306", - "tt1341340", - "tt0071994", - "tt1288376", - "tt2828954", - "tt4211044", - "tt0079788", - "tt3893280", - "tt2381046", - "tt0047889", - "tt0058335", - "tt0903627", - "tt1411232", - "tt3343784", - "tt0222368", - "tt0035262", - "tt1350512", - "tt2433040", - "tt6086718", - "tt0031260", - "tt0240419", - "tt0089591", - "tt1606390", - "tt8760550", - "tt0041847", - "tt0034946", - "tt0035309", - "tt0090693", - "tt2241676", - "tt3746298", - "tt0280609", - "tt0086232", - "tt6704776", - "tt3183630", - "tt0066892", - "tt6235786", - "tt0089816", - "tt0061429", - "tt0051437", - "tt0459102", - "tt0166843", - "tt6330052", - "tt2106671", - "tt0807028", - "tt2325518", - "tt0047880", - "tt1464191", - "tt3778010", - "tt0085496", - "tt6628102", - "tt0064775", - "tt3702996", - "tt0084684", - "tt0090798", - "tt2113659", - "tt0053220", - "tt2987732", - "tt0034398", - "tt0111002", - "tt0029605", - "tt2238470", - "tt0092910", - "tt0093468", - "tt0067727", - "tt2402985", - "tt0045464", - "tt0110296", - "tt0081613", - "tt0470982", - "tt0082970", - "tt4030442", - "tt0082764", - "tt0076240", - "tt0790612", - "tt5325604", - "tt0092615", - "tt7083826", - "tt2133239", - "tt1185837", - "tt0048593", - "tt1133995", - "tt2992552", - "tt1289419", - "tt2543702", - "tt0088355", - "tt4118606", - "tt4189494", - "tt0120514", - "tt0048087", - "tt0076625", - "tt1684927", - "tt2262161", - "tt0073008", - "tt9149982", - "tt9192942", - "tt0120536", - "tt3513054", - "tt0084740", - "tt4167720", - "tt1321869", - "tt0328007", - "tt0893406", - "tt2837336", - "tt4556370", - "tt0106436", - "tt0048233", - "tt0098725", - "tt0155350", - "tt0302436", - "tt1836987", - "tt0103002", - "tt1562568", - "tt1758575", - "tt3526286", - "tt0371853", - "tt3952108", - "tt0120428", - "tt1482393", - "tt1699147", - "tt0107286", - "tt8515802", - "tt0062790", - "tt0860454", - "tt6985448", - "tt0078259", - "tt0109302", - "tt1361843", - "tt3509114", - "tt8883456", - "tt5265898", - "tt0094008", - "tt3339680", - "tt5028340", - "tt0052876", - "tt0064652", - "tt9409854", - "tt1621046", - "tt0108451", - "tt1273221", - "tt0470993", - "tt0102655", - "tt1298594", - "tt2654572", - "tt2910508", - "tt4074364", - "tt1135968", - "tt4587366", - "tt1650042", - "tt0049452", - "tt3424690", - "tt0056556", - "tt0175790", - "tt7025294", - "tt4871980", - "tt0473102", - "tt1780983", - "tt0036260", - "tt4276752", - "tt2349460", - "tt4537896", - "tt0052911", - "tt0029947", - "tt9815588", - "tt0075330", - "tt0057076", - "tt0357139", - "tt9811332", - "tt1319722", - "tt5276332", - "tt0092549", - "tt5953854", - "tt0094594", - "tt4614612", - "tt7241654", - "tt0411269", - "tt3800796", - "tt2191888", - "tt2325002", - "tt2322517", - "tt0059800", - "tt4661798", - "tt2497980", - "tt5011626", - "tt0058150", - "tt8171080", - "tt4392770", - "tt5160928", - "tt0064757", - "tt0055928", - "tt5241578", - "tt1186788", - "tt0100873", - "tt1324055", - "tt1396523", - "tt0073043", - "tt0015863", - "tt0247303", - "tt0081400", - "tt2815030", - "tt9596638", - "tt1262990", - "tt0165982", - "tt0312004", - "tt0101564", - "tt9282616", - "tt0424095", - "tt1623742", - "tt0067333", - "tt0150090", - "tt6660238", - "tt2364949", - "tt0099240", - "tt0098692", - "tt6905696", - "tt0185371", - "tt2036376", - "tt5222768", - "tt0183704", - "tt0339736", - "tt1587156", - "tt0227197", - "tt0076752", - "tt0073714", - "tt0099399", - "tt0196100", - "tt5540194", - "tt6900448", - "tt0094933", - "tt0094995", - "tt9581760", - "tt2268573", - "tt0079574", - "tt0070672", - "tt0081062", - "tt0981224", - "tt2968804", - "tt5294198", - "tt0082398", - "tt0478125", - "tt8587730", - "tt0093638", - "tt1951095", - "tt0070022", - "tt1230215", - "tt0091814", - "tt0475417", - "tt0110588", - "tt3029476", - "tt0082558", - "tt3687186", - "tt2345613", - "tt3165630", - "tt2078552", - "tt0069822", - "tt0119908", - "tt2402603", - "tt2443822", - "tt3138376", - "tt0102898", - "tt2386285", - "tt0093091", - "tt0093428", - "tt0106466", - "tt0076028", - "tt6592296", - "tt0808285", - "tt0072912", - "tt0094315", - "tt1920945", - "tt5822154", - "tt0073880", - "tt0143145", - "tt0120347", - "tt0097880", - "tt1790834", - "tt2107861", - "tt0113189", - "tt0246460", - "tt2378884", - "tt1776900", - "tt0286306", - "tt6572190", - "tt6591584", - "tt1241316", - "tt2190838", - "tt0255605", - "tt0070895", - "tt7958614", - "tt1064744", - "tt0242998", - "tt2488778", - "tt0105156", - "tt0055963", - "tt2396721", - "tt1699755", - "tt0059712", - "tt0995851", - "tt7019808", - "tt6904272", - "tt0023581", - "tt0096117", - "tt0042209", - "tt0092906", - "tt0115994", - "tt0075620", - "tt0085823", - "tt1496005", - "tt1610525", - "tt0081809", - "tt0289889", - "tt0120383", - "tt2552394", - "tt0083144", - "tt0800027", - "tt3687398", - "tt3261114", - "tt0499570", - "tt0469318", - "tt4796122", - "tt4608402", - "tt3995348", - "tt6060874", - "tt2072193", - "tt0070909", - "tt4837328", - "tt8361196", - "tt2022528", - "tt7627790", - "tt0067630", - "tt0100802", - "tt1234721", - "tt0831387", - "tt0199753", - "tt0338013", - "tt1441395", - "tt0119177", - "tt0074559", - "tt0090948", - "tt3381610", - "tt3905764", - "tt0183523", - "tt0107840", - "tt0120738", - "tt1631867", - "tt2179136", - "tt0307479", - "tt0499549", - "tt8925540", - "tt0181689", - "tt3186318", - "tt0094731", - "tt1242447", - "tt3831810", - "tt0070565", - "tt0109417", - "tt0120402", - "tt3397160", - "tt1034306", - "tt0091166", - "tt5818818", - "tt0086356", - "tt2510028", - "tt3397754", - "tt3433074", - "tt1227177", - "tt0234748", - "tt0118001", - "tt1401631", - "tt0081163", - "tt0117102", - "tt0910885", - "tt0120723", - "tt0047574", - "tt6966692", - "tt1688649", - "tt0056048", - "tt1568343", - "tt0101694", - "tt5182856", - "tt0101902", - "tt0091653", - "tt3499048", - "tt0053270", - "tt0085450", - "tt0493402", - "tt0385017", - "tt2395199", - "tt0206634", - "tt1540767", - "tt0083107", - "tt2723240", - "tt0123755", - "tt0047945", - "tt0050407", - "tt2980708", - "tt0865297", - "tt0077975", - "tt0087592", - "tt0142316", - "tt1735862", - "tt5061814", - "tt2560102", - "tt1143896", - "tt1707391", - "tt0104808", - "tt1577052", - "tt0060588", - "tt1462901", - "tt0102395", - "tt0116414", - "tt3993894", - "tt4077118", - "tt3824412", - "tt2057445", - "tt1579232", - "tt9287206", - "tt1605777", - "tt0099018", - "tt0138703", - "tt1498870", - "tt2996684", - "tt2402085", - "tt4056738", - "tt1629295", - "tt0787523", - "tt4131496", - "tt0058649", - "tt0104139", - "tt1242618", - "tt3093546", - "tt0114745", - "tt2338424", - "tt0023622", - "tt0462329", - "tt0884726", - "tt0084565", - "tt0057609", - "tt9584192", - "tt0047036", - "tt0032670", - "tt0023042", - "tt2233979", - "tt2035630", - "tt0888693", - "tt0054127", - "tt0097757", - "tt0025371", - "tt0023241", - "tt0083232", - "tt0088936", - "tt2948840", - "tt0433349", - "tt1967614", - "tt0113375", - "tt2066176", - "tt5295774", - "tt0099575", - "tt0093737", - "tt0058886", - "tt1470171", - "tt2369396", - "tt0057518", - "tt0088930", - "tt2714380", - "tt0054594", - "tt0094750", - "tt2465140", - "tt5842890", - "tt6081670", - "tt0375604", - "tt0405163", - "tt1807610", - "tt2199238", - "tt3236120", - "tt0097763", - "tt0198871", - "tt4981636", - "tt0368323", - "tt2089750", - "tt0058499", - "tt0116442", - "tt0963965", - "tt4003440", - "tt0052611", - "tt0053141", - "tt0165662", - "tt7966920", - "tt5463162", - "tt0038958", - "tt0046807", - "tt1613062", - "tt1825918", - "tt9759926", - "tt3203620", - "tt2667918", - "tt3442990", - "tt0082467", - "tt3318750", - "tt1483324", - "tt8262592", - "tt8243908", - "tt0177625", - "tt0081568", - "tt1657510", - "tt5464234", - "tt0082776", - "tt0100143", - "tt0068435", - "tt2893490", - "tt0418586", - "tt2474958", - "tt0096454", - "tt0250468", - "tt4054654", - "tt3614530", - "tt1649780", - "tt1878942", - "tt2350892", - "tt0118900", - "tt0090270", - "tt1290135", - "tt0985025", - "tt8671138", - "tt0050556", - "tt0212132", - "tt0262432", - "tt2380331", - "tt0106557", - "tt8065796", - "tt5834760", - "tt7715202", - "tt1242843", - "tt6097798", - "tt7683350", - "tt1242599", - "tt0057490", - "tt0115862", - "tt0063829", - "tt0089122", - "tt1930546", - "tt2126362", - "tt0079826", - "tt0150111", - "tt2034176", - "tt2461520", - "tt1047011", - "tt0087428", - "tt8574252", - "tt0772168", - "tt0065446", - "tt0083336", - "tt2081437", - "tt0052365", - "tt0070791", - "tt1925435", - "tt1930294", - "tt1853643", - "tt0116861", - "tt0490166", - "tt0209095", - "tt1945062", - "tt0110329", - "tt8308174", - "tt0339294", - "tt0066214", - "tt0202677", - "tt5999530", - "tt0113636", - "tt0087727", - "tt4902266", - "tt0094919", - "tt0089604", - "tt0101846", - "tt0089118", - "tt0054195", - "tt0086859", - "tt0068240", - "tt0120907", - "tt3862750", - "tt0083851", - "tt1629705", - "tt0266391", - "tt0425458", - "tt0120112", - "tt5960374", - "tt0088146", - "tt0058092", - "tt0093940", - "tt1837562", - "tt2658428", - "tt1259573", - "tt0134630", - "tt1155076", - "tt2187884", - "tt0060232", - "tt0093036", - "tt1260581", - "tt0102960", - "tt0049456", - "tt0086978", - "tt8108230", - "tt2180994", - "tt1700845", - "tt5072852", - "tt0109279", - "tt1259574", - "tt1274586", - "tt3164256", - "tt0979434", - "tt0092804", - "tt0098621", - "tt1411238", - "tt0096219", - "tt0059797", - "tt0116282", - "tt0090927", - "tt0395125", - "tt0037932", - "tt6360872", - "tt0039694", - "tt0074258", - "tt0181151", - "tt0171768", - "tt6932818", - "tt6343314", - "tt5304996", - "tt0210382", - "tt2318527", - "tt0063323", - "tt6927152", - "tt0104938", - "tt8046144", - "tt1687281", - "tt0093582", - "tt0107927", - "tt0456020", - "tt6893370", - "tt7545524", - "tt0050766", - "tt0356618", - "tt0047437", - "tt0133059", - "tt0937237", - "tt0089961", - "tt0301171", - "tt0057590", - "tt7401588", - "tt0053793", - "tt3714720", - "tt2582500", - "tt2815966", - "tt0119311", - "tt0082361", - "tt1741243", - "tt0052295", - "tt3082898", - "tt0094118", - "tt0061770", - "tt0119227", - "tt6433456", - "tt0101587", - "tt2101570", - "tt6973866", - "tt3263614", - "tt1540741", - "tt3322892", - "tt0113347", - "tt6258766", - "tt0132910", - "tt5465970", - "tt1054580", - "tt0062794", - "tt0051337", - "tt5501104", - "tt1645131", - "tt0063013", - "tt2883434", - "tt3534602", - "tt0151568", - "tt0093278", - "tt2752688", - "tt0175526", - "tt4501454", - "tt0105130", - "tt0120831", - "tt5083738", - "tt1756851", - "tt3167458", - "tt0058333", - "tt0091875", - "tt0279889", - "tt0106941", - "tt2077851", - "tt1575694", - "tt0060424", - "tt1196956", - "tt1658801", - "tt1757742", - "tt7295450", - "tt2091478", - "tt2274752", - "tt0132512", - "tt0097328", - "tt0086619", - "tt1990181", - "tt0051369", - "tt0250323", - "tt2304426", - "tt0476958", - "tt0052918", - "tt1212974", - "tt1838603", - "tt0058213", - "tt3628584", - "tt4854820", - "tt2679552", - "tt8750664", - "tt2234261", - "tt8594624", - "tt0204137", - "tt2093991", - "tt0053318", - "tt0111400", - "tt0099012", - "tt0080388", - "tt1536048", - "tt5540622", - "tt0289635", - "tt1029120", - "tt0102316", - "tt0098575", - "tt2465146", - "tt3707104", - "tt0044399", - "tt1179794", - "tt1770734", - "tt1552224", - "tt1570989", - "tt0051994", - "tt0109936", - "tt0082334", - "tt1781827", - "tt9168816", - "tt1049402", - "tt0054743", - "tt0059017", - "tt0066728", - "tt9381998", - "tt0057920", - "tt0088117", - "tt3991412", - "tt0844671", - "tt9695612", - "tt0107983", - "tt6805366", - "tt0331952", - "tt2265534", - "tt0096945", - "tt0058576", - "tt0203297", - "tt1361318", - "tt0106664", - "tt0056560", - "tt0850253", - "tt1998213", - "tt1698648", - "tt5204020", - "tt2007421", - "tt1316622", - "tt0067277", - "tt0065088", - "tt0091445", - "tt0072226", - "tt0059037", - "tt4712076", - "tt0324296", - "tt5789310", - "tt0246544", - "tt0080474", - "tt3748440", - "tt7343732", - "tt0079240", - "tt2345112", - "tt0088272", - "tt0091983", - "tt0067549", - "tt0122541", - "tt1839593", - "tt1935902", - "tt1152850", - "tt0112966", - "tt2094064", - "tt2063781", - "tt0117128", - "tt1758595", - "tt1594913", - "tt1573483", - "tt0147004", - "tt5848272", - "tt0455323", - "tt3859076", - "tt0803061", - "tt0299117", - "tt2328900", - "tt1498569", - "tt0083169", - "tt0095593", - "tt0098309", - "tt0074899", - "tt4692242", - "tt0065832", - "tt2258345", - "tt1286151", - "tt4645330", - "tt7476116", - "tt2245003", - "tt3844962", - "tt0059243", - "tt4682708", - "tt3284178", - "tt0048261", - "tt1588334", - "tt3141498", - "tt0098987", - "tt0166276", - "tt0057312", - "tt0490075", - "tt5918028", - "tt2980472", - "tt5770430", - "tt0338706", - "tt2917388", - "tt0068154", - "tt0067355", - "tt2325977", - "tt0371572", - "tt4447090", - "tt0210616", - "tt7920024", - "tt0115744", - "tt4692234", - "tt2279339", - "tt0108185", - "tt0118760", - "tt3234672", - "tt2390237", - "tt5442308", - "tt1401656", - "tt1985019", - "tt3766394", - "tt5734576", - "tt1433822", - "tt0857190", - "tt5187886", - "tt9135854", - "tt2195548", - "tt0373283", - "tt1535970", - "tt0122459", - "tt1810683", - "tt6116682", - "tt5030004", - "tt0785006", - "tt1296898", - "tt0112688", - "tt0110265", - "tt8066972", - "tt0057831", - "tt3672640", - "tt0060097", - "tt2513074", - "tt0092666", - "tt0107151", - "tt0100519", - "tt0076112", - "tt3623726", - "tt0457495", - "tt0199626", - "tt0775440", - "tt0107387", - "tt4658324", - "tt3106464", - "tt6476140", - "tt0118158", - "tt2309021", - "tt3685622", - "tt1235796", - "tt0134619", - "tt3345206", - "tt1621039", - "tt0084298", - "tt0084028", - "tt1294970", - "tt1016205", - "tt0067445", - "tt0486674", - "tt0404978", - "tt0078251", - "tt2040560", - "tt1160368", - "tt3642618", - "tt1151359", - "tt0437179", - "tt3106120", - "tt5698568", - "tt0118531", - "tt2167202", - "tt2317524", - "tt0053946", - "tt0072251", - "tt0278823", - "tt3177316", - "tt0310281", - "tt0116999", - "tt0092622", - "tt0281373", - "tt0303361", - "tt0111127", - "tt1288403", - "tt0087945", - "tt0457572", - "tt0404163", - "tt0970468", - "tt1252507", - "tt1566486", - "tt3618822", - "tt0105415", - "tt0388230", - "tt0083033", - "tt1742044", - "tt0083296", - "tt2343793", - "tt0113409", - "tt0166396", - "tt0073820", - "tt0094701", - "tt1772288", - "tt0038975", - "tt0100994", - "tt0200027", - "tt2402105", - "tt0085918", - "tt0267913", - "tt0083590", - "tt0096794", - "tt0267891", - "tt0097499", - "tt1082886", - "tt3442006", - "tt0104613", - "tt0120255", - "tt2567712", - "tt0086636", - "tt1481572", - "tt0318155", - "tt0099517", - "tt0079869", - "tt0096889", - "tt0099085", - "tt0047969", - "tt1837703", - "tt0427229", - "tt2450186", - "tt0114151", - "tt2358925", - "tt0113986", - "tt1967545", - "tt0104389", - "tt0113303", - "tt1311071", - "tt0076723", - "tt6769508", - "tt5177088", - "tt0171433", - "tt0060574", - "tt0162677", - "tt0999913", - "tt0106582", - "tt1480295", - "tt1440345", - "tt0107507", - "tt0012752", - "tt0129280", - "tt5135532", - "tt1694020", - "tt1265990", - "tt0272207", - "tt0814335", - "tt0060665", - "tt0462335", - "tt0108330", - "tt1872818", - "tt9552488", - "tt3319920", - "tt2103254", - "tt1175491", - "tt0765476", - "tt5994166", - "tt1366344", - "tt0977668", - "tt0356634", - "tt0498399", - "tt0280030", - "tt0114473", - "tt1078188", - "tt0313769", - "tt0120832", - "tt1647668", - "tt0131369", - "tt1535438", - "tt0414480", - "tt2404425", - "tt0164318", - "tt1124215", - "tt0977680", - "tt7652452", - "tt0071803", - "tt1135939", - "tt0371246", - "tt0870122", - "tt0048028", - "tt0104057", - "tt1126590", - "tt0322589", - "tt0298228", - "tt1667310", - "tt1698641", - "tt1661382", - "tt2664880", - "tt1881002", - "tt0093966", - "tt0113957", - "tt1430612", - "tt1195478", - "tt0954544", - "tt1219342", - "tt0814022", - "tt1321860", - "tt2265398", - "tt0935075", - "tt0071483", - "tt6777170", - "tt2205697", - "tt1616195", - "tt6516314", - "tt0419704", - "tt0119664", - "tt1462041", - "tt4643844", - "tt4530422", - "tt1438254", - "tt0083767", - "tt2637276", - "tt0138304", - "tt0044121", - "tt6017926", - "tt2364841", - "tt4357170", - "tt8633296", - "tt2734566", - "tt6263618", - "tt0105622", - "tt4899406", - "tt0163787", - "tt0238038", - "tt0109127", - "tt3485166", - "tt0058525", - "tt2147708", - "tt1766175", - "tt3588588", - "tt0118618", - "tt0061636", - "tt0065597", - "tt4532826", - "tt0017048", - "tt0091024", - "tt0110524", - "tt0416220", - "tt0059112", - "tt5591666", - "tt3077060", - "tt0762107", - "tt3345474", - "tt0052106", - "tt1571401", - "tt2090537", - "tt4213806", - "tt3345472", - "tt6085362", - "tt0089038", - "tt0049964", - "tt0284815", - "tt1219828", - "tt1612782", - "tt1430077", - "tt6857040", - "tt0053244", - "tt0451201", - "tt0066412", - "tt0065553", - "tt5815944", - "tt1313244", - "tt9048826", - "tt0057180", - "tt7776050", - "tt0065943", - "tt2972482", - "tt0360139", - "tt0074686", - "tt0085124", - "tt0091799", - "tt3465916", - "tt0120075", - "tt0102050", - "tt3655972", - "tt0222344", - "tt1833878", - "tt0063291", - "tt1403214", - "tt0085297", - "tt2526846", - "tt4721400", - "tt0086154", - "tt0019415", - "tt1996346", - "tt2548396", - "tt1977953", - "tt2371834", - "tt0116320", - "tt1571402", - "tt3445580", - "tt7422506", - "tt1820451", - "tt0113026", - "tt0188527", - "tt0116587", - "tt0090145", - "tt6938828", - "tt2371824", - "tt1270797", - "tt5990066", - "tt0052654", - "tt6675400", - "tt8632844", - "tt1498878", - "tt1655460", - "tt8359848", - "tt0082580", - "tt4439120", - "tt3958014", - "tt7074886", - "tt0048789", - "tt1273222", - "tt1236371", - "tt0058100", - "tt0084424", - "tt0068767", - "tt0089104", - "tt6155194", - "tt2994646", - "tt3466778", - "tt1562872", - "tt0038123", - "tt6268594", - "tt7694738", - "tt1985187", - "tt9679608", - "tt3112572", - "tt0036723", - "tt6493286", - "tt0976247", - "tt0046414", - "tt0081433", - "tt1074643", - "tt0071569", - "tt2964360", - "tt7012864", - "tt0053298", - "tt0053825", - "tt1093355", - "tt1516577", - "tt2363213", - "tt2710614", - "tt1002561", - "tt0053912", - "tt7149192", - "tt1234546", - "tt3263996", - "tt0053877", - "tt0055233", - "tt3815430", - "tt9618532", - "tt9602544", - "tt0073152", - "tt0929742", - "tt0030550", - "tt3697566", - "tt5265960", - "tt1978524", - "tt0285005", - "tt0091214", - "tt3510480", - "tt0365957", - "tt0221111", - "tt4273886", - "tt1230385", - "tt6918674", - "tt6175802", - "tt0080889", - "tt5066556", - "tt1907639", - "tt0082671", - "tt8164012", - "tt4932154", - "tt0053115", - "tt6471264", - "tt0085970", - "tt0053114", - "tt4685940", - "tt0075040", - "tt2563562", - "tt0043469", - "tt1363109", - "tt0330686", - "tt0036244", - "tt3438354", - "tt1919207", - "tt3354222", - "tt3740778", - "tt0103882", - "tt8738964", - "tt0047956", - "tt1224519", - "tt0875696", - "tt2353767", - "tt4416518", - "tt0086443", - "tt2514338", - "tt1817805", - "tt6460308", - "tt0022958", - "tt0071141", - "tt2852376", - "tt1699518", - "tt0048947", - "tt4584800", - "tt1819551", - "tt2241605", - "tt0079495", - "tt0116692", - "tt4939066", - "tt0024852", - "tt1979172", - "tt0039536", - "tt1235800", - "tt2058710", - "tt3775202", - "tt1206488", - "tt3444206", - "tt6233596", - "tt3652098", - "tt1954798", - "tt2771800", - "tt9377760", - "tt3856188", - "tt5614612", - "tt1715324", - "tt7091300", - "tt0080539", - "tt3455740", - "tt0109442", - "tt2951396", - "tt3259178", - "tt0492890", - "tt2404463", - "tt0906016", - "tt0203139", - "tt0770739", - "tt0138749", - "tt0167758", - "tt1587828", - "tt0042593", - "tt0035567", - "tt0029162", - "tt1480658", - "tt0055830", - "tt1196124", - "tt8122018", - "tt6823890", - "tt0082527", - "tt3116548", - "tt0111742", - "tt4298958", - "tt0062736", - "tt1438251", - "tt0082498", - "tt0029310", - "tt2547942", - "tt0220827", - "tt0041361", - "tt0074252", - "tt3147312", - "tt1504443", - "tt0052549", - "tt1564368", - "tt0043882", - "tt0073019", - "tt0092516", - "tt3013610", - "tt1708135", - "tt1540005", - "tt0326429", - "tt0014341", - "tt0085935", - "tt0058405", - "tt0038823", - "tt0067801", - "tt3606756", - "tt2219210", - "tt0076716", - "tt4547076", - "tt7738450", - "tt0052617", - "tt0090130", - "tt0203343", - "tt0277986", - "tt4664244", - "tt4065066", - "tt0117381", - "tt3732280", - "tt0165623", - "tt0073082", - "tt5662550", - "tt2034009", - "tt0076630", - "tt3202202", - "tt0963194", - "tt2369600", - "tt2905772", - "tt0085549", - "tt2457138", - "tt4914580", - "tt0079351", - "tt0062292", - "tt2640474", - "tt7104984", - "tt0084083", - "tt0108432", - "tt3885508", - "tt0057880", - "tt3484324", - "tt6186232", - "tt6803974", - "tt2359417", - "tt0095389", - "tt8116428", - "tt6742252", - "tt6354108", - "tt6053472", - "tt0119744", - "tt2278878", - "tt0075151", - "tt0060453", - "tt2292326", - "tt0828054", - "tt0091042", - "tt0115571", - "tt2741564", - "tt3756788", - "tt0094888", - "tt3253930", - "tt0074148", - "tt0071412", - "tt0105179", - "tt0104083", - "tt2409302", - "tt5221584", - "tt4911940", - "tt5290524", - "tt2006753", - "tt4621872", - "tt3108604", - "tt0088461", - "tt1782440", - "tt5044656", - "tt1979319", - "tt0363226", - "tt3480886", - "tt0021156", - "tt0059635", - "tt4375438", - "tt3384350", - "tt0085601", - "tt1298554", - "tt2425486", - "tt0087796", - "tt0084777", - "tt2650978", - "tt0085404", - "tt0083946", - "tt0056906", - "tt0057379", - "tt6746304", - "tt0114367", - "tt0131636", - "tt0130377", - "tt7475540", - "tt0059942", - "tt0087798", - "tt0057714", - "tt0085764", - "tt1391116", - "tt2691734", - "tt0123334", - "tt1648216", - "tt0057715", - "tt3595848", - "tt0143012", - "tt0199905", - "tt0200309", - "tt0057503", - "tt1555149", - "tt0837800", - "tt0861739", - "tt0092795", - "tt1477855", - "tt1797504", - "tt3532278", - "tt0164984", - "tt0213689", - "tt0123335", - "tt1401236", - "tt0103077", - "tt1260572", - "tt1193507", - "tt0056714", - "tt3796936", - "tt0058001", - "tt2070649", - "tt1541123", - "tt0041735", - "tt0094889", - "tt2394018", - "tt1520956", - "tt3723790", - "tt0191664", - "tt1492959", - "tt0202154", - "tt1572194", - "tt0435434", - "tt6340500", - "tt0049012", - "tt4247682", - "tt1023347", - "tt2215673", - "tt4768656", - "tt2978716", - "tt0076868", - "tt1838475", - "tt2724236", - "tt1743922", - "tt8097306", - "tt1436372", - "tt0090037", - "tt2201251", - "tt0478329", - "tt1981637", - "tt3427772", - "tt0825279", - "tt1748122", - "tt0061882", - "tt0937373", - "tt3701714", - "tt0086102", - "tt3487994", - "tt2375605", - "tt0037514", - "tt3297792", - "tt1287878", - "tt0046359", - "tt0057697", - "tt0817225", - "tt0073589", - "tt9323966", - "tt0456470", - "tt2348394", - "tt0048820", - "tt3404140", - "tt0087464", - "tt0024034", - "tt0058262", - "tt0841150", - "tt0084899", - "tt0041716", - "tt0104770", - "tt0020629", - "tt4374286", - "tt0063173", - "tt2872750", - "tt0045591", - "tt0038824", - "tt0969269", - "tt0098635", - "tt0104771", - "tt0037101", - "tt1449283", - "tt0045537", - "tt2299842", - "tt0028021", - "tt0058715", - "tt0041113", - "tt0164982", - "tt7183578", - "tt3663718", - "tt0038787", - "tt7399158", - "tt0186725", - "tt3424722", - "tt0039689", - "tt0029811", - "tt0045793", - "tt0038669", - "tt0046303", - "tt0032143", - "tt0042788", - "tt0037988", - "tt0039420", - "tt8226904", - "tt0047030", - "tt0164983", - "tt0038890", - "tt0202153", - "tt0042276", - "tt0072439", - "tt0034240", - "tt0201922", - "tt0054749", - "tt0063835", - "tt0054248", - "tt0065778", - "tt0039417", - "tt0102587", - "tt0069704", - "tt0056801", - "tt0040636", - "tt0066603", - "tt0063834", - "tt4457344", - "tt8543788", - "tt2368254", - "tt4189260", - "tt5251438", - "tt0054130", - "tt1606384", - "tt7914416", - "tt0034445", - "tt6411590", - "tt0062518", - "tt2465238", - "tt0913968", - "tt0066602", - "tt0076085", - "tt0373074", - "tt0053134", - "tt0122136", - "tt0110081", - "tt1416336", - "tt0060537", - "tt0053619", - "tt4278962", - "tt1422020", - "tt0346336", - "tt0416044", - "tt0414426", - "tt4482572", - "tt0059459", - "tt0465580", - "tt0460778", - "tt1900893", - "tt3417334", - "tt0039725", - "tt0097074", - "tt1128075", - "tt0053856", - "tt6237268", - "tt1640218", - "tt0070472", - "tt0058279", - "tt1846589", - "tt6118340", - "tt0096152", - "tt5523010", - "tt0110877", - "tt0078801", - "tt0074441", - "tt3530830", - "tt6921996", - "tt7252852", - "tt1916763", - "tt6500934", - "tt1323044", - "tt0061811", - "tt1727252", - "tt2139851", - "tt7167686", - "tt5361064", - "tt0143348", - "tt0047528", - "tt0072157", - "tt0066390", - "tt0091810", - "tt0317248", - "tt0064616", - "tt5612702", - "tt1533117", - "tt3779028", - "tt3205394", - "tt1437357", - "tt0116767", - "tt6127326", - "tt0037508", - "tt2872810", - "tt1811371", - "tt0071358", - "tt1743724", - "tt1079968", - "tt0031507", - "tt0039243", - "tt0282599", - "tt0053062", - "tt0292907", - "tt0023634", - "tt1843840", - "tt1650453", - "tt0053179", - "tt0032842", - "tt0045935", - "tt1876261", - "tt1306964", - "tt0054766", - "tt0387353", - "tt0210587", - "tt0079086", - "tt2756412", - "tt0056010", - "tt1333643", - "tt9059862", - "tt2379386", - "tt0083053", - "tt2131698", - "tt1655441", - "tt0266075", - "tt0370082", - "tt0470967", - "tt0241073", - "tt9556756", - "tt0075276", - "tt1565058", - "tt0301167", - "tt0104376", - "tt0140825", - "tt0080380", - "tt0063198", - "tt0278815", - "tt0034182", - "tt0082700", - "tt3754940", - "tt0054286", - "tt1650407", - "tt1156454", - "tt0418657", - "tt3042800", - "tt0089060", - "tt0478188", - "tt1123894", - "tt4902904", - "tt0037767", - "tt0067327", - "tt0135790", - "tt1773467", - "tt3792452", - "tt2717318", - "tt2622826", - "tt3315380", - "tt0093073", - "tt0074442", - "tt5345298", - "tt3102206", - "tt1065073", - "tt0225535", - "tt8305690", - "tt2465578", - "tt0790604", - "tt0375920", - "tt0038965", - "tt6342062", - "tt9341628", - "tt1111890", - "tt0090887", - "tt0120620", - "tt0093412", - "tt5222918", - "tt0113083", - "tt1588886", - "tt2240312", - "tt4964788", - "tt0066922", - "tt0050803", - "tt0107315", - "tt4411504", - "tt0445336", - "tt3825638", - "tt6098696", - "tt6313378", - "tt2552498", - "tt2188717", - "tt0098360", - "tt6012244", - "tt4025514", - "tt0061176", - "tt0066563", - "tt0079815", - "tt0081001", - "tt0365675", - "tt0083909", - "tt0972857", - "tt4262980", - "tt3849692", - "tt7162416", - "tt1808477", - "tt0100347", - "tt2388705", - "tt0091209", - "tt1547090", - "tt0037280", - "tt3746250", - "tt0071691", - "tt5017936", - "tt1499666", - "tt1203523", - "tt5451118", - "tt0071276", - "tt4285496", - "tt0040766", - "tt0447461", - "tt0037558", - "tt0187696", - "tt2404738", - "tt0312358", - "tt0056606", - "tt8562100", - "tt1291652", - "tt0192757", - "tt6004864", - "tt0307213", - "tt0415679", - "tt1373120", - "tt1535566", - "tt2617828", - "tt0129461", - "tt0286751", - "tt2764784", - "tt0120263", - "tt0108188", - "tt0060135", - "tt5121816", - "tt2178941", - "tt0080436", - "tt0045631", - "tt1588342", - "tt7751192", - "tt0272360", - "tt1719071", - "tt0199683", - "tt0122987", - "tt0079074", - "tt0103704", - "tt0114508", - "tt0058625", - "tt0018455", - "tt0106936", - "tt0049710", - "tt0821442", - "tt0025316", - "tt0050986", - "tt0017925", - "tt0032551", - "tt0109688", - "tt0048579", - "tt0033870", - "tt0047444", - "tt0015324", - "tt3750872", - "tt0881200", - "tt0044741", - "tt7891470", - "tt0196472", - "tt0109592", - "tt4326444", - "tt4971344", - "tt5215952", - "tt0091670", - "tt0084021", - "tt0082176", - "tt0405094", - "tt6730898", - "tt3841424", - "tt1226837", - "tt0055601", - "tt0060637", - "tt0078875", - "tt0308379", - "tt2675914", - "tt4176826", - "tt0108211", - "tt2832470", - "tt0031679", - "tt0042192", - "tt0064513", - "tt0017136", - "tt0095675", - "tt0100998", - "tt5723272", - "tt0951318", - "tt3616916", - "tt1029235", - "tt0095327", - "tt6045466", - "tt0073650", - "tt0063036", - "tt0012349", - "tt0088275", - "tt6020428", - "tt0026029", - "tt0065198", - "tt0032553", - "tt4048272", - "tt0047469", - "tt0046438", - "tt0123648", - "tt0045274", - "tt4682136", - "tt0031650", - "tt0050613", - "tt0050976", - "tt0036112", - "tt0035446", - "tt0093191", - "tt5789976", - "tt0014429", - "tt0040725", - "tt7147540", - "tt5689632", - "tt0065780", - "tt0058652", - "tt7095482", - "tt8601916", - "tt8107464", - "tt0104029", - "tt0053779", - "tt0073076", - "tt0423866", - "tt1740707", - "tt0022100", - "tt0091003", - "tt0093225", - "tt0480669", - "tt0031885", - "tt4494718", - "tt0041154", - "tt0097550", - "tt0347048", - "tt0021810", - "tt5096846", - "tt0365376", - "tt0038762", - "tt0468492", - "tt0097372", - "tt3685870", - "tt3244446", - "tt6869538", - "tt0039192", - "tt0057261", - "tt0083666", - "tt7525514", - "tt0089606", - "tt0034881", - "tt0059895", - "tt0875140", - "tt6409782", - "tt3086442", - "tt0049010", - "tt2078599", - "tt1614989", - "tt0021309", - "tt3011894", - "tt0056709", - "tt0034461", - "tt0056736", - "tt4226388", - "tt6768578", - "tt0024188", - "tt0213847", - "tt0064689", - "tt0961066", - "tt0071129", - "tt1232776", - "tt4834220", - "tt9217772", - "tt0087359", - "tt1153100", - "tt1777612", - "tt2538128", - "tt2140429", - "tt0324572", - "tt9272928", - "tt0063775", - "tt3110770", - "tt2081438", - "tt1376460", - "tt0074776", - "tt2186783", - "tt3920782", - "tt3301196", - "tt0099691", - "tt0093974", - "tt9217732", - "tt1213641", - "tt0874289", - "tt0244283", - "tt0756707", - "tt0067976", - "tt1516002", - "tt2369041", - "tt0087537", - "tt0063678", - "tt1957938", - "tt1663222", - "tt0071566", - "tt1965162", - "tt0787515", - "tt0072886", - "tt1811315", - "tt1577055", - "tt0902967", - "tt1876349", - "tt4472596", - "tt4439102", - "tt1170391", - "tt0085862", - "tt3384904", - "tt1391579", - "tt0087229", - "tt0126848", - "tt2551510", - "tt0128484", - "tt1543459", - "tt0048204", - "tt2381962", - "tt0113429", - "tt4215810", - "tt3743126", - "tt1687889", - "tt0058620", - "tt1716767", - "tt0118799", - "tt7736536", - "tt0084422", - "tt0036940", - "tt0084509", - "tt1807018", - "tt0081344", - "tt5503368", - "tt0082648", - "tt0430239", - "tt0028284", - "tt1175709", - "tt0027166", - "tt9287408", - "tt7546096", - "tt0418879", - "tt6512428", - "tt1531911", - "tt0473393", - "tt7008872", - "tt0903606", - "tt0063808", - "tt1472195", - "tt0265987", - "tt0388473", - "tt1331335", - "tt0083726", - "tt2495104", - "tt0063210", - "tt6223806", - "tt1618445", - "tt0086352", - "tt0353357", - "tt0079727", - "tt0327084", - "tt0062649", - "tt0035153", - "tt5258128", - "tt1368443", - "tt0119592", - "tt0079144", - "tt0038417", - "tt0475286", - "tt6848736", - "tt6162892", - "tt0061094", - "tt0264734", - "tt1562567", - "tt0497432", - "tt0052002", - "tt0082114", - "tt3620762", - "tt1664664", - "tt1550524", - "tt0086050", - "tt5720450", - "tt3221698", - "tt0070337", - "tt5157326", - "tt5580266", - "tt4145324", - "tt0099747", - "tt1686042", - "tt5981304", - "tt2439946", - "tt2784134", - "tt0055230", - "tt2630992", - "tt2437548", - "tt1592576", - "tt0090771", - "tt0056993", - "tt2304517", - "tt2518848", - "tt3477752", - "tt0085248", - "tt2850304", - "tt4000870", - "tt2291606", - "tt1823051", - "tt5664636", - "tt2121377", - "tt0091724", - "tt0270919", - "tt1345734", - "tt3877296", - "tt0071216", - "tt1667418", - "tt0991174", - "tt4028134", - "tt0029030", - "tt0078330", - "tt0301357", - "tt3910814", - "tt3067274", - "tt0108342", - "tt1693679", - "tt2088923", - "tt0070292", - "tt0075913", - "tt3837820", - "tt0417745", - "tt0077421", - "tt2948712", - "tt0098375", - "tt0065224", - "tt0255589", - "tt0068273", - "tt3038142", - "tt2361184", - "tt0087386", - "tt1129427", - "tt1648208", - "tt2797106", - "tt3041550", - "tt0060726", - "tt7689906", - "tt0032080", - "tt0095924", - "tt0053126", - "tt9409846", - "tt4368496", - "tt0114432", - "tt0437072", - "tt0045177", - "tt1453409", - "tt3307774", - "tt0794338", - "tt3698558", - "tt1793223", - "tt0047365", - "tt2825230", - "tt2967578", - "tt1351784", - "tt1835955", - "tt1568139", - "tt3462696", - "tt0085236", - "tt0479773", - "tt1693843", - "tt1307989", - "tt0247613", - "tt0072317", - "tt0084854", - "tt3844876", - "tt3013160", - "tt0780002", - "tt0086113", - "tt0050306", - "tt2088012", - "tt5340882", - "tt1836099", - "tt0029844", - "tt0071935", - "tt0070628", - "tt0120026", - "tt0017668", - "tt1385543", - "tt5736592", - "tt0061420", - "tt0495138", - "tt5502816", - "tt0039294", - "tt3401748", - "tt1640718", - "tt5537686", - "tt0379865", - "tt0080846", - "tt0066212", - "tt0073330", - "tt7073710", - "tt7323600", - "tt5639446", - "tt1544572", - "tt2431332", - "tt0411951", - "tt1072754", - "tt3013528", - "tt0075754", - "tt0053841", - "tt9534518", - "tt1522846", - "tt5095510", - "tt2104837", - "tt1145154", - "tt3307726", - "tt5131906", - "tt0061758", - "tt9105950", - "tt1608368", - "tt0040682", - "tt0101751", - "tt4175888", - "tt1509788", - "tt0046272", - "tt1857842", - "tt4180576", - "tt2991516", - "tt4184252", - "tt6101602", - "tt0061647", - "tt0943326", - "tt0034409", - "tt0037761", - "tt1637728", - "tt2753288", - "tt5782152", - "tt1436432", - "tt0906778", - "tt0039041", - "tt1684555", - "tt6999052", - "tt1366338", - "tt0024727", - "tt0492835", - "tt0053882", - "tt1209378", - "tt1227789", - "tt0097270", - "tt1314652", - "tt7277350", - "tt0047679", - "tt0116447", - "tt4296026", - "tt2217458", - "tt5851014", - "tt0092203", - "tt2308725", - "tt2556114", - "tt1054631", - "tt1937506", - "tt1870527", - "tt0079368", - "tt0043778", - "tt6763252", - "tt0031602", - "tt1626139", - "tt5158522", - "tt0892769", - "tt0064888", - "tt0940642", - "tt1680123", - "tt0475783", - "tt0077617", - "tt2486792", - "tt2123884", - "tt1326238", - "tt0051755", - "tt1733125", - "tt0091990", - "tt2182019", - "tt0075627", - "tt1702429", - "tt1032763", - "tt3598222", - "tt3121332", - "tt1297298", - "tt2518926", - "tt2468774", - "tt0057952", - "tt0083001", - "tt6684884", - "tt3480556", - "tt0120502", - "tt0060708", - "tt0074553", - "tt0081178", - "tt0118117", - "tt0361748", - "tt0105466", - "tt6829180", - "tt1462757", - "tt0062479", - "tt0144239", - "tt0063469", - "tt1447479", - "tt1773020", - "tt4998772", - "tt7875464", - "tt0045465", - "tt2446502", - "tt0082379", - "tt2994948", - "tt0475289", - "tt0082640", - "tt0117193", - "tt0069372", - "tt0034384", - "tt3886076", - "tt0046004", - "tt2199251", - "tt0055200", - "tt0469913", - "tt6543652", - "tt0088402", - "tt0071361", - "tt3069954", - "tt0071198", - "tt5946974", - "tt6346314", - "tt1837574", - "tt2272336", - "tt3032282", - "tt4715356", - "tt1548628", - "tt0066093", - "tt1535565", - "tt2151543", - "tt3044562", - "tt4685096", - "tt1132193", - "tt0050722", - "tt5344794", - "tt0114917", - "tt1419950", - "tt1683970", - "tt0120275", - "tt1846492", - "tt9145818", - "tt0060307", - "tt0057259", - "tt0057608", - "tt1893269", - "tt1478325", - "tt6769280", - "tt0079437", - "tt1844203", - "tt7210348", - "tt0059297", - "tt1694118", - "tt0052896", - "tt1831806", - "tt9029324", - "tt5917576", - "tt1235142", - "tt0115921", - "tt0074226", - "tt0057401", - "tt1619016", - "tt1262413", - "tt0469683", - "tt3399484", - "tt3270108", - "tt3139538", - "tt0120619", - "tt9000560", - "tt6462564", - "tt0119819", - "tt0056478", - "tt0072325", - "tt0090678", - "tt1043844", - "tt4051850", - "tt0084867", - "tt0081764", - "tt0058953", - "tt0996934", - "tt2529918", - "tt9287492", - "tt0058935", - "tt9129734", - "tt0075214", - "tt5890000", - "tt0078490", - "tt0073760", - "tt1993391", - "tt0079227", - "tt0096087", - "tt0089276", - "tt2201532", - "tt3135556", - "tt0075406", - "tt0070694", - "tt0120443", - "tt0113952", - "tt4116030", - "tt0089838", - "tt6502956", - "tt4729754", - "tt7132578", - "tt3279176", - "tt0078067", - "tt3102458", - "tt4973112", - "tt1789810", - "tt1473150", - "tt3977898", - "tt7736144", - "tt0081114", - "tt6417014", - "tt1165293", - "tt2034060", - "tt1764141", - "tt0098373", - "tt0065836", - "tt5950980", - "tt0061913", - "tt0036983", - "tt5048406", - "tt0093235", - "tt2915662", - "tt4576652", - "tt1236471", - "tt0099656", - "tt1934458", - "tt0054938", - "tt4437640", - "tt0094056", - "tt0058384", - "tt0062863", - "tt1448762", - "tt0493076", - "tt1740725", - "tt4146622", - "tt0095022", - "tt6217608", - "tt0044487", - "tt5179598", - "tt0102848", - "tt0092891", - "tt0102212", - "tt4483220", - "tt0088678", - "tt0067388", - "tt0906788", - "tt0098328", - "tt6749318", - "tt0056347", - "tt0068935", - "tt2772092", - "tt1022883", - "tt1827354", - "tt0080100", - "tt3157224", - "tt0105322", - "tt0095990", - "tt2403558", - "tt3663040", - "tt0094834", - "tt0100430", - "tt0098126", - "tt0110777", - "tt0098156", - "tt1533058", - "tt2905674", - "tt1884318", - "tt1540400", - "tt0077594", - "tt0102860", - "tt0084354", - "tt0067824", - "tt7886442", - "tt1679180", - "tt7822178", - "tt4035898", - "tt4269746", - "tt3072732", - "tt0054988", - "tt1934234", - "tt1647483", - "tt7752454", - "tt9547802", - "tt0183306", - "tt3136112", - "tt0068341", - "tt0092809", - "tt0095312", - "tt1756427", - "tt0111218", - "tt0085385", - "tt0040695", - "tt1999890", - "tt3171764", - "tt0079631", - "tt2558318", - "tt8942908", - "tt0780645", - "tt0473075", - "tt1733578", - "tt0102500", - "tt6776106", - "tt1885299", - "tt0685628", - "tt7759626", - "tt0042541", - "tt0093585", - "tt2378191", - "tt2381931", - "tt0089642", - "tt6134274", - "tt5338222", - "tt0092585", - "tt5091014", - "tt1355683", - "tt3622592", - "tt0052564", - "tt1290400", - "tt6993174", - "tt0040834", - "tt0050720", - "tt3125220", - "tt0425743", - "tt0071396", - "tt0043859", - "tt5076792", - "tt0089283", - "tt0033436", - "tt1052040", - "tt4073890", - "tt0037248", - "tt1727885", - "tt0111173", - "tt4060576", - "tt0037166", - "tt0844666", - "tt0039881", - "tt2993848", - "tt0019412", - "tt1124388", - "tt0097670", - "tt1912982", - "tt5255524", - "tt0038492", - "tt1254322", - "tt0046889", - "tt0970926", - "tt0078239", - "tt0114489", - "tt0095877", - "tt0070165", - "tt0097136", - "tt8395220", - "tt0087385", - "tt7690670", - "tt0044533", - "tt8351278", - "tt0012675", - "tt0090729", - "tt0388377", - "tt0048182", - "tt2160105", - "tt1071880", - "tt9033628", - "tt0056279", - "tt1860357", - "tt3774114", - "tt0048667", - "tt1972591", - "tt0491175", - "tt1959563", - "tt0049516", - "tt0100087", - "tt2226597", - "tt6108178", - "tt5439796", - "tt4925292", - "tt4815122", - "tt5109784", - "tt1615160", - "tt2406566", - "tt4547194", - "tt1981128", - "tt1219827", - "tt3640424", - "tt2140479", - "tt3799694", - "tt0101627", - "tt1172998", - "tt2719848", - "tt1853728", - "tt0064747", - "tt0454879", - "tt0101628", - "tt1663202", - "tt0041487", - "tt1386697", - "tt3505712", - "tt3783958", - "tt1355644", - "tt5649108", - "tt3290276", - "tt4975722", - "tt7250206", - "tt1328875", - "tt0060218", - "tt1198408", - "tt1451423", - "tt2992524", - "tt0491046", - "tt2872724", - "tt0082346", - "tt3230660", - "tt0048340", - "tt2395339", - "tt0075783", - "tt0090605", - "tt1446714", - "tt0119116", - "tt0038107", - "tt0093773", - "tt0091173", - "tt0100403", - "tt1473801", - "tt1479847", - "tt0082338", - "tt2600742", - "tt0118583", - "tt0103644", - "tt0370263", - "tt0758730", - "tt1424381", - "tt1468829", - "tt0048216", - "tt0059362", - "tt0936471", - "tt0053290", - "tt0097911", - "tt0060120", - "tt1694508", - "tt1764647", - "tt9182676", - "tt0481390", - "tt0093011", - "tt0085693", - "tt0090881", - "tt0049414", - "tt0104522", - "tt4938050", - "tt0083941", - "tt1127221", - "tt3328716", - "tt0094962", - "tt0063456", - "tt0765487", - "tt0032983", - "tt0088333", - "tt5843670", - "tt1119123", - "tt2638662", - "tt1164647", - "tt3532216", - "tt0110689", - "tt1459013", - "tt5776858", - "tt5362988", - "tt7137846", - "tt1413492", - "tt2239822", - "tt5478478", - "tt1389072", - "tt1961175", - "tt3780500", - "tt2345759", - "tt0847520", - "tt3894312", - "tt4686844", - "tt7784604", - "tt0034162", - "tt5613484", - "tt0988083", - "tt6421110", - "tt7969042", - "tt5164432", - "tt1692098", - "tt4209788", - "tt0081607", - "tt0094801", - "tt2543472", - "tt1881060", - "tt1705134", - "tt0031121", - "tt7786540", - "tt4555426", - "tt2800050", - "tt1365519", - "tt3195742", - "tt1840309", - "tt0070072", - "tt2908446", - "tt6499752", - "tt2704998", - "tt1951264", - "tt3410834", - "tt3263904", - "tt2854926", - "tt5834262", - "tt1951266", - "tt1951265", - "tt1392170", - "tt3411444", - "tt2709768", - "tt1343097", - "tt0803096", - "tt2802144", - "tt0090342", - "tt1216487", - "tt1772341", - "tt2094766", - "tt0089177", - "tt2980516", - "tt2404435", - "tt1132620", - "tt1568346", - "tt4649466", - "tt5052474", - "tt0085980", - "tt3521126", - "tt4500922", - "tt0076809", - "tt3731562", - "tt3397884", - "tt2119532", - "tt5726616", - "tt2740710", - "tt0069792", - "tt0039757", - "tt3602128", - "tt2051894", - "tt0064952", - "tt0115832", - "tt0093029", - "tt1828959", - "tt0082818", - "tt2307002", - "tt0048064", - "tt5686132", - "tt1104126", - "tt0052293", - "tt0083629", - "tt3153582", - "tt0120755", - "tt1545315", - "tt1384927", - "tt1229238", - "tt3076658", - "tt0117060", - "tt1172060", - "tt4630444", - "tt0107290", - "tt0163025", - "tt0119567", - "tt0317919", - "tt4566574", - "tt5758778", - "tt0369610", - "tt3766354", - "tt0455944", - "tt2380307", - "tt2381249", - "tt0038455", - "tt1825683", - "tt5164214", - "tt3152098", - "tt1686018", - "tt0023049", - "tt1510686", - "tt4912910", - "tt1781840", - "tt3183660", - "tt3018070", - "tt0107978", - "tt0070622", - "tt0066450", - "tt1136684", - "tt0258463", - "tt4881806", - "tt0372183", - "tt1194173", - "tt1071875", - "tt0100502", - "tt1663662", - "tt2557478", - "tt0259324", - "tt0967945", - "tt0440963", - "tt0408961", - "tt0475298", - "tt2378453", - "tt0084445", - "tt2290739", - "tt0063557", - "tt1714866", - "tt8851036", - "tt9083646", - "tt0166370", - "tt0376994", - "tt0339334", - "tt8805150", - "tt1709652", - "tt0092133", - "tt0020691", - "tt1327788", - "tt0047795", - "tt3499458", - "tt0181852", - "tt0029808", - "tt1877832", - "tt1270798", - "tt0290334", - "tt0120903", - "tt0037024", - "tt0045094", - "tt0458525", - "tt6615240", - "tt0088247", - "tt0450314", - "tt0031334", - "tt0107606", - "tt0454839", - "tt5709188", - "tt0103064", - "tt1340138", - "tt3680410", - "tt0978764", - "tt0187738", - "tt0120611", - "tt0359013", - "tt0330793", - "tt0401792", - "tt0033028", - "tt0458481", - "tt0800080", - "tt0346156", - "tt0086203", - "tt0097001", - "tt0077235", - "tt0067633", - "tt1241329", - "tt1054478", - "tt1981140", - "tt0100201", - "tt0075147", - "tt0463027", - "tt0029725", - "tt0045205", - "tt0095330", - "tt0341376", - "tt0044905", - "tt0023303", - "tt0113808", - "tt0044744", - "tt0029929", - "tt0070928", - "tt0056016", - "tt3315342", - "tt3333870", - "tt3491962", - "tt5095030", - "tt0040427", - "tt0028980", - "tt0031252", - "tt2341664", - "tt1396484", - "tt0102522", - "tt2544734", - "tt3501632", - "tt0089006", - "tt0068458", - "tt3896198", - "tt1074214", - "tt3627704", - "tt0039776", - "tt1431191", - "tt0320661", - "tt0332452", - "tt0407304", - "tt0187393", - "tt0325710", - "tt0095738", - "tt0021814", - "tt0120201", - "tt3393786", - "tt0816711", - "tt1276104", - "tt0848228", - "tt4154756", - "tt0790724", - "tt1371111", - "tt1785669", - "tt2395427", - "tt0101273", - "tt1483013", - "tt0171410", - "tt0037793", - "tt2713180", - "tt1535108", - "tt0215750", - "tt0369339", - "tt1253863", - "tt0061787", - "tt0343818", - "tt0075860", - "tt0416449", - "tt8367080", - "tt5039088", - "tt0040558", - "tt6708116", - "tt0338097", - "tt0031322", - "tt0090585", - "tt0044789", - "tt0093608", - "tt0497030", - "tt0090644", - "tt0079501", - "tt0451279", - "tt2231461", - "tt3890160", - "tt5580036", - "tt0217869", - "tt5580390", - "tt4972582", - "tt9168416", - "tt0082694", - "tt5027774", - "tt0974015", - "tt1375666", - "tt2283362", - "tt1509787", - "tt5013056", - "tt0089530", - "tt1677720", - "tt0993846", - "tt0046899", - "tt1706620", - "tt1827579", - "tt0095296", - "tt8862524", - "tt1884495", - "tt3271700", - "tt3659388", - "tt1935089", - "tt0059410", - "tt1542482", - "tt0114746", - "tt1454468", - "tt0470752", - "tt2507280", - "tt1136608", - "tt1392190", - "tt2081194", - "tt0816692", - "tt0083658", - "tt3694790", - "tt1477859", - "tt4264426", - "tt0082948", - "tt2798920", - "tt2543164", - "tt2782844", - "tt0127919", - "tt0067921", - "tt1856101", - "tt0876233", - "tt3661298", - "tt0901481", - "tt0075359", - "tt1191971", - "tt0073349", - "tt0092842", - "tt1637976", - "tt0114788", - "tt3541080", - "tt0088044", - "tt1730687", - "tt9413164", - "tt5862902", - "tt2184287", - "tt0100666", - "tt0301924", - "tt0105481", - "tt0092117", - "tt0108592", - "tt0043118", - "tt2284766", - "tt2911674", - "tt0817228", - "tt0067991", - "tt0056368", - "tt0874271", - "tt0050095", - "tt2572632", - "tt0092669", - "tt0074540", - "tt9202096", - "tt1120945", - "tt0354595", - "tt8420670", - "tt5434870", - "tt0026781", - "tt0030944", - "tt9168384", - "tt9217716", - "tt0068264", - "tt0027414", - "tt0110857", - "tt0059956", - "tt0089822", - "tt0110622", - "tt0102510", - "tt1886644", - "tt1285010", - "tt0087928", - "tt0093756", - "tt1829744", - "tt9021374", - "tt1235807", - "tt0446722", - "tt0098105", - "tt0095882", - "tt0091777", - "tt4911996", - "tt0095705", - "tt0073011", - "tt0126029", - "tt0298148", - "tt0268380", - "tt0438097", - "tt1080016", - "tt1667889", - "tt5951164", - "tt0892791", - "tt0413267", - "tt0092860", - "tt0084745", - "tt4048668", - "tt0099128", - "tt1270114", - "tt1991031", - "tt5156910", - "tt0092085", - "tt0109906", - "tt1220706", - "tt0105483", - "tt7040874", - "tt7521990", - "tt2557276", - "tt0084737", - "tt0061398", - "tt1989485", - "tt1673645", - "tt9315426", - "tt3727824", - "tt0078346", - "tt0081573", - "tt0092007", - "tt0102975", - "tt3923388", - "tt0074593", - "tt3904278", - "tt0111280", - "tt0086946", - "tt0348150", - "tt0098382", - "tt0086393", - "tt0084827", - "tt0094074", - "tt0079945", - "tt0088170", - "tt0120844", - "tt0253754", - "tt0084726", - "tt2315596", - "tt0340110", - "tt0796366", - "tt1661220", - "tt0812352", - "tt2364842", - "tt0117731", - "tt8561672", - "tt1408101", - "tt0099578", - "tt7690762", - "tt0082935", - "tt6069668", - "tt1699180", - "tt1819603", - "tt0332344", - "tt4446472", - "tt3278224", - "tt4795546", - "tt4895668", - "tt0839938", - "tt0385705", - "tt2660888", - "tt1821427", - "tt0082350", - "tt3014284", - "tt0105839", - "tt0770828", - "tt0066927", - "tt2226519", - "tt1680138", - "tt0054038", - "tt0477347", - "tt4550420", - "tt0064928", - "tt2758904", - "tt1078912", - "tt2692250", - "tt4116284", - "tt2881698", - "tt1490017", - "tt2082415", - "tt0108339", - "tt0076227", - "tt1788383", - "tt4158624", - "tt0092156", - "tt1376195", - "tt4859032", - "tt0103285", - "tt0091604", - "tt0076915", - "tt0098193", - "tt3208026", - "tt0119723", - "tt0100797", - "tt0329737", - "tt3922816", - "tt0050972", - "tt0060200", - "tt0115530", - "tt3411432", - "tt0316654", - "tt0232500", - "tt1872181", - "tt0413300", - "tt9033640", - "tt0463985", - "tt1485749", - "tt0322259", - "tt0104418", - "tt6182908", - "tt0948470", - "tt1930463", - "tt0056331", - "tt3244992", - "tt4630562", - "tt0084408", - "tt2250912", - "tt0145487", - "tt0102690", - "tt0116033", - "tt0790627", - "tt1399103", - "tt0318374", - "tt0120912", - "tt0800226", - "tt4119278", - "tt3317208", - "tt2109248", - "tt0119654", - "tt0418279", - "tt0378194", - "tt3371366", - "tt1055369", - "tt1480285", - "tt1409024", - "tt0266697", - "tt0134847", - "tt0296572", - "tt1411250", - "tt0101625", - "tt0856778", - "tt0068909", - "tt1489167", - "tt0064916", - "tt1139319", - "tt0075774", - "tt7586752", - "tt3530978", - "tt2448584", - "tt0089629", - "tt0018394", - "tt2991296", - "tt0107594", - "tt6257174", - "tt0097458", - "tt0016373", - "tt1300159", - "tt0446463", - "tt0042210", - "tt2885628", - "tt0172156", - "tt1659216", - "tt5314190", - "tt0065163", - "tt0066745", - "tt0071562", - "tt0940580", - "tt0795361", - "tt0112442", - "tt8632862", - "tt0099674", - "tt1032817", - "tt4238858", - "tt2198956", - "tt5989220", - "tt0107863", - "tt0068646", - "tt0067672", - "tt0077914", - "tt1048159", - "tt2173024", - "tt0491162", - "tt0098090", - "tt9424594", - "tt2573858", - "tt1937339", - "tt1718158", - "tt0093828", - "tt0080130", - "tt5702446", - "tt2226495", - "tt1753496", - "tt1541995", - "tt0100369", - "tt5776208", - "tt3482378", - "tt0280490", - "tt9059806", - "tt1174954", - "tt5834588", - "tt0082971", - "tt0097576", - "tt0031345", - "tt0109443", - "tt1065106", - "tt0087469", - "tt0144142", - "tt1986857", - "tt0367882", - "tt0025922", - "tt0024773", - "tt0025029", - "tt0058743", - "tt0952640", - "tt0025842", - "tt0067570", - "tt0027031", - "tt0068370", - "tt0024162", - "tt0027397", - "tt0026102", - "tt0026111", - "tt0024534", - "tt0027782", - "tt0026037", - "tt0025071", - "tt0028119", - "tt0027448", - "tt0024461", - "tt0064002", - "tt0094293", - "tt0059377", - "tt0079268", - "tt0892109", - "tt0074573", - "tt0072824", - "tt0076342", - "tt0070444", - "tt0071096", - "tt0088242", - "tt1753968", - "tt1712578", - "tt0088763", - "tt0069006", - "tt0091981", - "tt9225108", - "tt0083000", - "tt9344200", - "tt0328031", - "tt1790809", - "tt0099088", - "tt0238414", - "tt0424279", - "tt0107920", - "tt8273258", - "tt1988781", - "tt2071491", - "tt0096874", - "tt0064107", - "tt5302848", - "tt6608138", - "tt0133093", - "tt3836512", - "tt5989218", - "tt5829040", - "tt0234215", - "tt0069289", - "tt5359422", - "tt0242653", - "tt0903624", - "tt2527336", - "tt3311988", - "tt1170358", - "tt0081186", - "tt3778644", - "tt1693872", - "tt8108198", - "tt2310332", - "tt6280608", - "tt6892218", - "tt6390580", - "tt7785090", - "tt8164806", - "tt1013542", - "tt0039589", - "tt4733536", - "tt2565938", - "tt0067952", - "tt3766424", - "tt0040064", - "tt0071824", - "tt0038908", - "tt1220220", - "tt0082332", - "tt0101988", - "tt8830236", - "tt8497680", - "tt2340678", - "tt2616880", - "tt1183733", - "tt9028856", - "tt3608646", - "tt5937770", - "tt0115885", - "tt2321502", - "tt0061405", - "tt0045152", - "tt0051433", - "tt0051786", - "tt0457939", - "tt0809931", - "tt0790663", - "tt2396436", - "tt4254584", - "tt0087805", - "tt9028866", - "tt0120663", - "tt1424003", - "tt1027820", - "tt1615075", - "tt2421662", - "tt0374248", - "tt1781812", - "tt5973626", - "tt4163668", - "tt0138487", - "tt0069121", - "tt0049471", - "tt2967008", - "tt1790869", - "tt1296869", - "tt0116827", - "tt1486670", - "tt7945822", - "tt6228942", - "tt0086192", - "tt3560148", - "tt5815492", - "tt1675161", - "tt0133745", - "tt3824386", - "tt0060214", - "tt3755844", - "tt0027767", - "tt3116154", - "tt8942494", - "tt0165819", - "tt3138558", - "tt0031209", - "tt0036206", - "tt0185578", - "tt0026497", - "tt0033146", - "tt0220558", - "tt0228406", - "tt0031910", - "tt0242535", - "tt1038685", - "tt0243319", - "tt0061791", - "tt0452660", - "tt0076191", - "tt9028872", - "tt0108052", - "tt1562899", - "tt6042392", - "tt2328549", - "tt1259998", - "tt0075194", - "tt0038119", - "tt0082353", - "tt0054476", - "tt1124040", - "tt2141773", - "tt3829266", - "tt0215090", - "tt2119543", - "tt0112438", - "tt0049875", - "tt0075989", - "tt2996648", - "tt4207196", - "tt3478232", - "tt2055709", - "tt2751310", - "tt1135500", - "tt7981492", - "tt1487931", - "tt9179182", - "tt1117646", - "tt9101480", - "tt0486321", - "tt0091575", - "tt9058902", - "tt2041488", - "tt5456798", - "tt0102849", - "tt0054152", - "tt7905466", - "tt3405434", - "tt6859762", - "tt3700804", - "tt2091325", - "tt2268419", - "tt1858481", - "tt3300572", - "tt0097910", - "tt0059125", - "tt1136683", - "tt0022397", - "tt1219836", - "tt1958043", - "tt0036431", - "tt7999950", - "tt0094033", - "tt1376213", - "tt3148834", - "tt0044672", - "tt0114108", - "tt7605066", - "tt0036696", - "tt0094669", - "tt0025318", - "tt0036230", - "tt0023507", - "tt0400771", - "tt0042825", - "tt0995845", - "tt0021840", - "tt0115610", - "tt7833914", - "tt0044320", - "tt1754109", - "tt2404437", - "tt0074937", - "tt0077272", - "tt0095037", - "tt9102152", - "tt3719896", - "tt7872704", - "tt0063592", - "tt0160620", - "tt0036241", - "tt0050839", - "tt4743226", - "tt2814362", - "tt0102603", - "tt0319829", - "tt1323605", - "tt6852872", - "tt6997426", - "tt4074928", - "tt1368858", - "tt0093894", - "tt6205872", - "tt4971408", - "tt0048215", - "tt1014801", - "tt1265998", - "tt0077247", - "tt6337994", - "tt0465940", - "tt2781832", - "tt1906329", - "tt0369918", - "tt6040662", - "tt0056255", - "tt0065593", - "tt0447854", - "tt0054777", - "tt1714833", - "tt0416243", - "tt0053559", - "tt1844770", - "tt1651323", - "tt9059048", - "tt2663812", - "tt0462219", - "tt0149723", - "tt2093977", - "tt0076210", - "tt0102411", - "tt0970462", - "tt3397918", - "tt0076704", - "tt0311110", - "tt0080057", - "tt0072705", - "tt0240219", - "tt0371823", - "tt0257778", - "tt0050084", - "tt1068953", - "tt0349889", - "tt1160317", - "tt1060255", - "tt0095532", - "tt1992258", - "tt0085678", - "tt6592124", - "tt1014806", - "tt1094198", - "tt0477072", - "tt2617456", - "tt0082226", - "tt8382192", - "tt0330691", - "tt0059221", - "tt0046683", - "tt2352802", - "tt0910865", - "tt3128900", - "tt0425253", - "tt4560436", - "tt0307920", - "tt0903135", - "tt1340161", - "tt2394029", - "tt0419724", - "tt0083015", - "tt2043993", - "tt8990334", - "tt0220099", - "tt0097243", - "tt0117057", - "tt8359636", - "tt0035320", - "tt1586261", - "tt0462477", - "tt0063060", - "tt0055152", - "tt1772271", - "tt6595908", - "tt0096324", - "tt0291082", - "tt2111392", - "tt0075704", - "tt7339792", - "tt0958860", - "tt2521436", - "tt3642508", - "tt0381601", - "tt0107212", - "tt1673734", - "tt0783515", - "tt5437928", - "tt0114070", - "tt9033308", - "tt5160938", - "tt0050622", - "tt0996967", - "tt6905442", - "tt5691670", - "tt6850820", - "tt5843780", - "tt2904626", - "tt1711018", - "tt0076535", - "tt4106376", - "tt0111194", - "tt1135095", - "tt1935065", - "tt1799508", - "tt2577172", - "tt1107816", - "tt0119114", - "tt0130236", - "tt1216515", - "tt4191702", - "tt3110960", - "tt0106579", - "tt0071233", - "tt0080771", - "tt0096046", - "tt9028942", - "tt1414361", - "tt1418712", - "tt9067272", - "tt0458438", - "tt2241403", - "tt0070030", - "tt7222304", - "tt0097579", - "tt0086998", - "tt0059821", - "tt1959409", - "tt3791496", - "tt0073260", - "tt7701808", - "tt0071508", - "tt0095489", - "tt0061810", - "tt0049030", - "tt0095215", - "tt0452692", - "tt2306786", - "tt1682246", - "tt4381236", - "tt2767266", - "tt1876547", - "tt0112637", - "tt7460806", - "tt1663187", - "tt2708254", - "tt0051758", - "tt1230213", - "tt1945044", - "tt0092576", - "tt1576440", - "tt1639826", - "tt0028070", - "tt0029747", - "tt8765496", - "tt5814060", - "tt2904608", - "tt1458915", - "tt0096054", - "tt0023613", - "tt0023858", - "tt0109219", - "tt0020643", - "tt0024601", - "tt0057128", - "tt0119095", - "tt4649416", - "tt0022251", - "tt0114609", - "tt4662420", - "tt0029923", - "tt0091472", - "tt0403692", - "tt1568341", - "tt0104779", - "tt1214983", - "tt1129428", - "tt2396333", - "tt0079489", - "tt1707380", - "tt0783608", - "tt0243017", - "tt1347521", - "tt1087578", - "tt0076221", - "tt0108149", - "tt0013427", - "tt0110638", - "tt1827487", - "tt0461795", - "tt0094964", - "tt1029134", - "tt0102800", - "tt2191612", - "tt0116654", - "tt0115658", - "tt3659786", - "tt0071454", - "tt0097987", - "tt0073298", - "tt0060597", - "tt0138414", - "tt0118623", - "tt0173498", - "tt3499424", - "tt2387408", - "tt1587807", - "tt2027136", - "tt1085507", - "tt3923662", - "tt1773753", - "tt0088850", - "tt1615091", - "tt0098068", - "tt2555426", - "tt4281724", - "tt0058530", - "tt0051978", - "tt0057225", - "tt0091055", - "tt1488181", - "tt0193560", - "tt0097883", - "tt1629242", - "tt4061010", - "tt0340331", - "tt1563719", - "tt0046198", - "tt6603812", - "tt2130270", - "tt0086999", - "tt8092252", - "tt0104053", - "tt6302160", - "tt5979872", - "tt0083591", - "tt0974583", - "tt0083564", - "tt0109348", - "tt3399896", - "tt0283503", - "tt0448564", - "tt1830713", - "tt0395571", - "tt0084945", - "tt0846308", - "tt1176161", - "tt0197467", - "tt1465505", - "tt0383353", - "tt1270286", - "tt0085863", - "tt6921076", - "tt7057496", - "tt0061439", - "tt3733678", - "tt0052646", - "tt0092105", - "tt0422783", - "tt2474972", - "tt6747420", - "tt1781781", - "tt1865346", - "tt1568337", - "tt4034452", - "tt0100469", - "tt0094961", - "tt0055207", - "tt1029241", - "tt0077248", - "tt0760187", - "tt1650535", - "tt2845578", - "tt0089981", - "tt0974554", - "tt0075462", - "tt0857295", - "tt0091110", - "tt2824852", - "tt1711458", - "tt1658797", - "tt8088944", - "tt1764625", - "tt1879012", - "tt0089385", - "tt0078350", - "tt6859352", - "tt0643110", - "tt1001562", - "tt1512240", - "tt1738387", - "tt1233192", - "tt0076644", - "tt2140671", - "tt1753422", - "tt1121786", - "tt6690310", - "tt0091178", - "tt0062185", - "tt0484831", - "tt0397853", - "tt1147684", - "tt3273644", - "tt0489244", - "tt3107070", - "tt0643102", - "tt1270291", - "tt0643107", - "tt0084096", - "tt2215267", - "tt2948078", - "tt0433963", - "tt2295564", - "tt1403862", - "tt0094135", - "tt5307272", - "tt1018723", - "tt4771896", - "tt7014382", - "tt0102984", - "tt0087197", - "tt0080180", - "tt6680312", - "tt1582271", - "tt2229511", - "tt1783285", - "tt0090366", - "tt1244658", - "tt4265508", - "tt5457454", - "tt1100053", - "tt1003034", - "tt2463512", - "tt0053363", - "tt7188948", - "tt0446719", - "tt2043757", - "tt0094357", - "tt4547120", - "tt0070531", - "tt4155144", - "tt9033636", - "tt8655708", - "tt0068649", - "tt3514532", - "tt1446072", - "tt0289944", - "tt1880399", - "tt2224004", - "tt0252444", - "tt0109306", - "tt0100211", - "tt0086423", - "tt0085475", - "tt0791303", - "tt0829176", - "tt2097331", - "tt0095177", - "tt3339674", - "tt0065491", - "tt1258137", - "tt0896529", - "tt1142798", - "tt3114132", - "tt3576728", - "tt0060782", - "tt1817676", - "tt1235837", - "tt0071866", - "tt7365604", - "tt0287535", - "tt0094048", - "tt2011276", - "tt0419358", - "tt0062430", - "tt0029322", - "tt2165859", - "tt2392326", - "tt0116671", - "tt0082146", - "tt2962726", - "tt1510906", - "tt2395417", - "tt4176928", - "tt6848114", - "tt0088001", - "tt1694021", - "tt0434215", - "tt6725014", - "tt0074292", - "tt0386588", - "tt0082801", - "tt0051365", - "tt1183911", - "tt1268809", - "tt6470762", - "tt7880466", - "tt0110357", - "tt0985058", - "tt0106873", - "tt0110667", - "tt0060635", - "tt3254930", - "tt5017060", - "tt3330764", - "tt2544472", - "tt1086216", - "tt0914837", - "tt5325452", - "tt0046345", - "tt0060827", - "tt8564902", - "tt2395385", - "tt3703908", - "tt0041827", - "tt6686358", - "tt5275884", - "tt0080421", - "tt0075931", - "tt0075809", - "tt0977214", - "tt9053906", - "tt2386278", - "tt0758781", - "tt0056891", - "tt0031790", - "tt0093072", - "tt3451984", - "tt1661099", - "tt0077215", - "tt5240090", - "tt3525168", - "tt0050439", - "tt0101701", - "tt1667355", - "tt5740866", - "tt7250466", - "tt0053418", - "tt0091276", - "tt1838520", - "tt0052870", - "tt7784788", - "tt0118692", - "tt0104299", - "tt0099091", - "tt4552524", - "tt1837636", - "tt3978720", - "tt0098453", - "tt1697064", - "tt3671542", - "tt0893532", - "tt0076683", - "tt7830888", - "tt3688406", - "tt0417395", - "tt1169809", - "tt0091757", - "tt0119906", - "tt2093270", - "tt0058085", - "tt2272350", - "tt0108442", - "tt0870211", - "tt7736104", - "tt2483208", - "tt0060472", - "tt6987770", - "tt1381767", - "tt0466731", - "tt3533916", - "tt6591652", - "tt2978462", - "tt1071812", - "tt2314824", - "tt2141751", - "tt0948547", - "tt5012394", - "tt2025667", - "tt3816458", - "tt6444140", - "tt7117354", - "tt1986994", - "tt0100973", - "tt7649320", - "tt0066826", - "tt4129870", - "tt2279922", - "tt5481404", - "tt7160176", - "tt5940342", - "tt0079672", - "tt4651410", - "tt3774802", - "tt0102900", - "tt0064615", - "tt0048491", - "tt7473032", - "tt3208936", - "tt8586880", - "tt1792647", - "tt0119484", - "tt0103295", - "tt1555093", - "tt6190348", - "tt0059711", - "tt0063056", - "tt5259598", - "tt6622902", - "tt0090849", - "tt0062909", - "tt0190861", - "tt7393746", - "tt1132130", - "tt0059127", - "tt0064110", - "tt9058820", - "tt0068309", - "tt0938305", - "tt1507563", - "tt1034325", - "tt0063991", - "tt0073896", - "tt0426627", - "tt0064117", - "tt8443810", - "tt0432289", - "tt0105655", - "tt0065073", - "tt0086058", - "tt2088893", - "tt5433884", - "tt0082096", - "tt0082951", - "tt2182972", - "tt1588170", - "tt0768222", - "tt8235660", - "tt1436045", - "tt0363163", - "tt0075132", - "tt4258698", - "tt0090738", - "tt0470000", - "tt0066184", - "tt1133993", - "tt2933474", - "tt0038348", - "tt0110916", - "tt0120610", - "tt4961380", - "tt0047167", - "tt0063759", - "tt3280916", - "tt0063611", - "tt0043048", - "tt0095927", - "tt0094799", - "tt0048641", - "tt0053772", - "tt0044811", - "tt4083572", - "tt7220696", - "tt0073822", - "tt0044060", - "tt7599050", - "tt1645089", - "tt0164052", - "tt0064793", - "tt2330322", - "tt9028802", - "tt8805246", - "tt0087193", - "tt0076686", - "tt8694374", - "tt0076299", - "tt9033632", - "tt0066049", - "tt8734822", - "tt1504467", - "tt0098143", - "tt0050280", - "tt2170427", - "tt0085542", - "tt7543904", - "tt0092746", - "tt1726661", - "tt6728096", - "tt9178222", - "tt0071519", - "tt0804552", - "tt0107818", - "tt0100639", - "tt0099611", - "tt1560970", - "tt8638638", - "tt1418754", - "tt0077889", - "tt0120757", - "tt0102460", - "tt1707392", - "tt0047647", - "tt0107004", - "tt0314676", - "tt0458455", - "tt0093996", - "tt0065738", - "tt5946128", - "tt0097889", - "tt1138489", - "tt0984200", - "tt0067541", - "tt0280707", - "tt3878542", - "tt2885364", - "tt1220628", - "tt0116015", - "tt7286916", - "tt0067334", - "tt0158493", - "tt0071282", - "tt0075261", - "tt1976989", - "tt2554270", - "tt2972362", - "tt0082340", - "tt0408268", - "tt3104988", - "tt1786668", - "tt0070284", - "tt0097967", - "tt2659414", - "tt2106670", - "tt0139151", - "tt9033646", - "tt2224455", - "tt3300980", - "tt0090837", - "tt0109369", - "tt0106500", - "tt0040229", - "tt1083845", - "tt1929308", - "tt0098057", - "tt1977895", - "tt0091772", - "tt2049543", - "tt0052905", - "tt0074157", - "tt7668870", - "tt0086863", - "tt0098519", - "tt2390253", - "tt8031554", - "tt2132405", - "tt0294929", - "tt0052017", - "tt2168910", - "tt1319704", - "tt0080923", - "tt3289712", - "tt4419364", - "tt0107529", - "tt0048272", - "tt3451230", - "tt0103747", - "tt0082242", - "tt0243255", - "tt1541874", - "tt0804507", - "tt2357377", - "tt1718903", - "tt0029087", - "tt1104083", - "tt4144190", - "tt0032699", - "tt6017942", - "tt2343617", - "tt2458106", - "tt0299478", - "tt0116684", - "tt0109552", - "tt4375268", - "tt7681824", - "tt6915100", - "tt5153288", - "tt8755316", - "tt1703048", - "tt1817771", - "tt0084814", - "tt4982870", - "tt0384814", - "tt2315152", - "tt1436559", - "tt0050396", - "tt1020543", - "tt0058124", - "tt6315800", - "tt6556890", - "tt1294969", - "tt9372544", - "tt0435653", - "tt0080397", - "tt0143010", - "tt0416499", - "tt5931802", - "tt0118744", - "tt0117177", - "tt3008014", - "tt0085346", - "tt0030589", - "tt0083987", - "tt6751670", - "tt0123328", - "tt0158489", - "tt0082031", - "tt0030786", - "tt0028325", - "tt0080913", - "tt0094678", - "tt0804505", - "tt0051362", - "tt7535288", - "tt0102303", - "tt6760562", - "tt3908142", - "tt2351310", - "tt0044426", - "tt0088393", - "tt0028389", - "tt2969458", - "tt0031398", - "tt0075148", - "tt7468056", - "tt0105636", - "tt0090065", - "tt0053291", - "tt2962876", - "tt0119324", - "tt7545566", - "tt0117803", - "tt0079700", - "tt0088322", - "tt4065842", - "tt8544568", - "tt3233418", - "tt0119642", - "tt5934564", - "tt2576522", - "tt0104926", - "tt5847286", - "tt0113269", - "tt4935372", - "tt0061613", - "tt3477554", - "tt0116005", - "tt0104530", - "tt0116322", - "tt0054279", - "tt2290840", - "tt0063694", - "tt0099768", - "tt9033634", - "tt0072813", - "tt9103602", - "tt2625030", - "tt1832381", - "tt4591840", - "tt8022676", - "tt0092925", - "tt0096426", - "tt1632547", - "tt0254455", - "tt2828840", - "tt0098967", - "tt0095765", - "tt0097239", - "tt0140581", - "tt3411034", - "tt1031254", - "tt0385004", - "tt0367188", - "tt5990474", - "tt0048937", - "tt0065492", - "tt0100442", - "tt0033582", - "tt0104321", - "tt4578910", - "tt0109424", - "tt2948790", - "tt3551840", - "tt2526514", - "tt0113613", - "tt0058430", - "tt1278340", - "tt0041374", - "tt0455805", - "tt0030192", - "tt0044541", - "tt0119250", - "tt2944198", - "tt0066830", - "tt0260991", - "tt0478024", - "tt0462395", - "tt0445935", - "tt1308728", - "tt0365885", - "tt0120520", - "tt0992911", - "tt0094035", - "tt1038043", - "tt6145612", - "tt0368658", - "tt0819787", - "tt6014166", - "tt0400525", - "tt0085125", - "tt0112702", - "tt0086450", - "tt1267379", - "tt1231287", - "tt0457275", - "tt0105459", - "tt0068786", - "tt4324302", - "tt0075925", - "tt0428251", - "tt1188113", - "tt1059925", - "tt0080513", - "tt2429074", - "tt2215285", - "tt0082806", - "tt2483260", - "tt0290212", - "tt0110647", - "tt1756489", - "tt4930228", - "tt6890836", - "tt0085154", - "tt0490076", - "tt0100029", - "tt0117364", - "tt0097390", - "tt7561086", - "tt7133648", - "tt1220214", - "tt1430626", - "tt0087759", - "tt6957966", - "tt3120408", - "tt0093624", - "tt6224502", - "tt0034303", - "tt3956336", - "tt1185266", - "tt1216516", - "tt1390535", - "tt0086176", - "tt0438859", - "tt0106761", - "tt1932745", - "tt1535612", - "tt1071358", - "tt0088024", - "tt0195968", - "tt1777034", - "tt0455612", - "tt0081506", - "tt1578882", - "tt1258157", - "tt1247662", - "tt2234429", - "tt0070698", - "tt1989511", - "tt0089153", - "tt0086973", - "tt0119272", - "tt0076929", - "tt0066301", - "tt0094138", - "tt0108526", - "tt6085174", - "tt1045655", - "tt0806027", - "tt0974014", - "tt1097013", - "tt3216348", - "tt0119214", - "tt0497323", - "tt2032572", - "tt0093565", - "tt3774790", - "tt4009278", - "tt0081974", - "tt0102351", - "tt1016075", - "tt4244998", - "tt1514041", - "tt0472071", - "tt0395251", - "tt0482603", - "tt2282016", - "tt2903900", - "tt1845806", - "tt1133991", - "tt1981107", - "tt7476494", - "tt0497972", - "tt0246464", - "tt0050192", - "tt7668724", - "tt1097643", - "tt4779682", - "tt1452628", - "tt0275230", - "tt0083630", - "tt4461960", - "tt3387648", - "tt0865559", - "tt0489282", - "tt0295289", - "tt3552620", - "tt0960890", - "tt0492650", - "tt0780607", - "tt0211465", - "tt5761646", - "tt2039345", - "tt1427298", - "tt1175506", - "tt0086617", - "tt2773246", - "tt0409345", - "tt4193394", - "tt1161418", - "tt1646876", - "tt0081777", - "tt0775552", - "tt0763840", - "tt0094739", - "tt2403029", - "tt0061809", - "tt0070294", - "tt0902290", - "tt1142800", - "tt5690360", - "tt2106361", - "tt0892767", - "tt0961728", - "tt1046997", - "tt0095740", - "tt0084809", - "tt0099512", - "tt0053925", - "tt0893402", - "tt1483025", - "tt0092974", - "tt0156812", - "tt0090568", - "tt0783532", - "tt0466856", - "tt4019560", - "tt7057306", - "tt0780534", - "tt0111481", - "tt0274711", - "tt0112750", - "tt0111001", - "tt0389328", - "tt0054850", - "tt1757746", - "tt0829188", - "tt0054462", - "tt7068942", - "tt1407084", - "tt2494376", - "tt7969140", - "tt0144168", - "tt0112483", - "tt1581835", - "tt0285861", - "tt0455362", - "tt0093135", - "tt0106393", - "tt0462229", - "tt0060862", - "tt0080310", - "tt0092534", - "tt0196857", - "tt0105217", - "tt1634136", - "tt0452643", - "tt3181776", - "tt0072448", - "tt1331307", - "tt0309820", - "tt0338512", - "tt0130370", - "tt0066141", - "tt0243278", - "tt0337656", - "tt0089421", - "tt0110137", - "tt0906108", - "tt0087231", - "tt0213149", - "tt0099762", - "tt0235686", - "tt5607096", - "tt6640390", - "tt9243038", - "tt1146438", - "tt0086984", - "tt2667380", - "tt6193454", - "tt0054847", - "tt0471030", - "tt6013156", - "tt0046344", - "tt0418832", - "tt0046374", - "tt0096913", - "tt0038213", - "tt0088708", - "tt0028167", - "tt0038338", - "tt0479647", - "tt0031020", - "tt0412915", - "tt0132451", - "tt0092605", - "tt0092548", - "tt0098622", - "tt0101326", - "tt2474976", - "tt0250934", - "tt1640711", - "tt1391137", - "tt2124787", - "tt0475937", - "tt0111419", - "tt0830681", - "tt0096804", - "tt0089695", - "tt0238552", - "tt6027344", - "tt0400426", - "tt0120741", - "tt3705412", - "tt0060934", - "tt0059742", - "tt1836944", - "tt0106627", - "tt0068421", - "tt0096073", - "tt0964185", - "tt1604171", - "tt0283632", - "tt0110907", - "tt3003996", - "tt0455596", - "tt0098320", - "tt3784652", - "tt1841642", - "tt3391782", - "tt0157171", - "tt0762138", - "tt1609479", - "tt0076953", - "tt0080342", - "tt0057514", - "tt0055308", - "tt0099108", - "tt1482167", - "tt5609734", - "tt0061720", - "tt0082625", - "tt0193431", - "tt2082152", - "tt0473188", - "tt0090583", - "tt0297162", - "tt2172935", - "tt2960930", - "tt0206917", - "tt3327624", - "tt4198186", - "tt0047522", - "tt3043594", - "tt1141261", - "tt0117826", - "tt0103907", - "tt0094860", - "tt0109360", - "tt0048140", - "tt0108517", - "tt0074256", - "tt9233904", - "tt4934990", - "tt0072196", - "tt6566624", - "tt0071186", - "tt0363473", - "tt0083944", - "tt3565668", - "tt0306474", - "tt6021960", - "tt3135424", - "tt0105242", - "tt0462244", - "tt0094383", - "tt0107953", - "tt0906665", - "tt2558556", - "tt3619070", - "tt0110678", - "tt1087853", - "tt0106450", - "tt2268458", - "tt0089880", - "tt0050539", - "tt0105414", - "tt0111345", - "tt1073510", - "tt7349662", - "tt5692390", - "tt0095956", - "tt0103773", - "tt5053508", - "tt0092112", - "tt0103805", - "tt0111143", - "tt0069019", - "tt0102216", - "tt0031983", - "tt0074434", - "tt0039370", - "tt3083008", - "tt2226440", - "tt0040802", - "tt0027630", - "tt2319781", - "tt0037055", - "tt0033098", - "tt1737090", - "tt2244743", - "tt5667696", - "tt1927012", - "tt0139421", - "tt0120860", - "tt0466893", - "tt0780608", - "tt2386404", - "tt0106452", - "tt2535470", - "tt0120695", - "tt0100485", - "tt0093777", - "tt0907678", - "tt0082817", - "tt0386741", - "tt1457765", - "tt0389957", - "tt3137630", - "tt0095655", - "tt0095897", - "tt0095800", - "tt0204175", - "tt0413015", - "tt0059106", - "tt6333070", - "tt0118571", - "tt2345567", - "tt0088194", - "tt1197624", - "tt0064541", - "tt1821641", - "tt2784512", - "tt2965412", - "tt0045347", - "tt1194417", - "tt8579840", - "tt0099385", - "tt1067106", - "tt1018785", - "tt1610996", - "tt0166175", - "tt0049513", - "tt6046314", - "tt0037193", - "tt0025228", - "tt1027747", - "tt2212008", - "tt0025164", - "tt2389182", - "tt8320402", - "tt0041415", - "tt6010628", - "tt0109890", - "tt2249221", - "tt0319061", - "tt9239778", - "tt0051201", - "tt2923316", - "tt5956006", - "tt2238839", - "tt0088851", - "tt0074812", - "tt0042049", - "tt0023198", - "tt0057598", - "tt0046791", - "tt5093026", - "tt0492486", - "tt5254610", - "tt7177754", - "tt0091630", - "tt0024831", - "tt0089489", - "tt0091579", - "tt1711456", - "tt0335563", - "tt4847246", - "tt0083722", - "tt0056085", - "tt0397430", - "tt0068022", - "tt4575576", - "tt0102005", - "tt1054486", - "tt0402057", - "tt0119791", - "tt0824758", - "tt1430615", - "tt1362058", - "tt0896534", - "tt0077742", - "tt5193784", - "tt0060315", - "tt0184791", - "tt0051658", - "tt0435680", - "tt1217616", - "tt0796375", - "tt0353324", - "tt1183665", - "tt1536410", - "tt1867093", - "tt1220888", - "tt5479446", - "tt0467110", - "tt0096256", - "tt0430770", - "tt0115986", - "tt1269706", - "tt0045161", - "tt3297330", - "tt0064072", - "tt1340773", - "tt4870838", - "tt1054487", - "tt0077294", - "tt0110169", - "tt0080716", - "tt0760311", - "tt3993532", - "tt0790623", - "tt8587650", - "tt0318081", - "tt1742650", - "tt2473602", - "tt1780798", - "tt2490326", - "tt1349451", - "tt1263750", - "tt1217070", - "tt0157583", - "tt1573109", - "tt1316037", - "tt1829012", - "tt1928340", - "tt0118589", - "tt0029546", - "tt0314063", - "tt4324274", - "tt0991178", - "tt3139072", - "tt0486051", - "tt0044386", - "tt0057197", - "tt0104850", - "tt0951335", - "tt1487118", - "tt1305591", - "tt2515030", - "tt0042981", - "tt0043030", - "tt0037462", - "tt0443559", - "tt0956038", - "tt1012804", - "tt2355495", - "tt1071804", - "tt0097737", - "tt0806165", - "tt3503406", - "tt0042372", - "tt0222851", - "tt0089841", - "tt0758799", - "tt0462338", - "tt0929629", - "tt1554091", - "tt0397044", - "tt0069002", - "tt0093779", - "tt2018069", - "tt1116184", - "tt1673430", - "tt0055516", - "tt1403988", - "tt0942903", - "tt0041644", - "tt0022834", - "tt0060434", - "tt6116856", - "tt0241025", - "tt1194263", - "tt3204392", - "tt5741304", - "tt0051444", - "tt0872230", - "tt0090986", - "tt1274300", - "tt0881320", - "tt6340090", - "tt1633356", - "tt0097278", - "tt0085198", - "tt4372240", - "tt6169694", - "tt0469641", - "tt0107007", - "tt8461918", - "tt6936350", - "tt5545622", - "tt0101329", - "tt0074119", - "tt0059044", - "tt1978532", - "tt1524170", - "tt3043176", - "tt1538534", - "tt2330458", - "tt1808452", - "tt0086967", - "tt0092632", - "tt0484740", - "tt0770806", - "tt0075930", - "tt1097015", - "tt0093090", - "tt0096453", - "tt2569236", - "tt2301900", - "tt0319970", - "tt1421049", - "tt3450134", - "tt1091751", - "tt0038166", - "tt0099669", - "tt0173771", - "tt0297780", - "tt0077801", - "tt0068716", - "tt1436046", - "tt0099266", - "tt0036326", - "tt0082696", - "tt1763316", - "tt0079482", - "tt5688868", - "tt1339098", - "tt6571636", - "tt2435514", - "tt2204379", - "tt1294213", - "tt0052077", - "tt0094963", - "tt0355473", - "tt5938084", - "tt0073195", - "tt0326905", - "tt0058694", - "tt0091203", - "tt0088066", - "tt0066999", - "tt0081617", - "tt8425332", - "tt0068615", - "tt6254874", - "tt6538402", - "tt0095652", - "tt2106440", - "tt0070868", - "tt7210264", - "tt2064968", - "tt3961394", - "tt4386596", - "tt0073692", - "tt0031851", - "tt0083261", - "tt0086449", - "tt0056056", - "tt5637514", - "tt0120744", - "tt0072225", - "tt0046353", - "tt7532178", - "tt0094761", - "tt0092240", - "tt0024914", - "tt0084556", - "tt0080790", - "tt0051418", - "tt0071627", - "tt0097557", - "tt2168854", - "tt0857265", - "tt0830558", - "tt3608654", - "tt7424200", - "tt0108577", - "tt0844866", - "tt6547170", - "tt3343136", - "tt1204883", - "tt2014264", - "tt0023125", - "tt0080464", - "tt0059792", - "tt0884224", - "tt0900357", - "tt0493405", - "tt1293561", - "tt1885423", - "tt0023761", - "tt0086525", - "tt0985060", - "tt0090203", - "tt0222812", - "tt0080120", - "tt0056875", - "tt0103919", - "tt0055353", - "tt3823098", - "tt5028598", - "tt7338690", - "tt5086308", - "tt0082559", - "tt2955304", - "tt0357507", - "tt3721110", - "tt1716760", - "tt0090327", - "tt6617656", - "tt8031422", - "tt2140403", - "tt0110116", - "tt4086018", - "tt0084573", - "tt0079285", - "tt1767372", - "tt1742336", - "tt3439114", - "tt1603314", - "tt0062622", - "tt2713642", - "tt0082378", - "tt0945580", - "tt1702926", - "tt0111048", - "tt0089730", - "tt2556874", - "tt1766094", - "tt0063696", - "tt2251281", - "tt2401807", - "tt0758766", - "tt3279124", - "tt1691920", - "tt2101383", - "tt0785007", - "tt1085779", - "tt0481141", - "tt0482572", - "tt1606657", - "tt0858486", - "tt0049870", - "tt5613056", - "tt0067446", - "tt1523264", - "tt0469263", - "tt1396221", - "tt0465502", - "tt0331632", - "tt0041923", - "tt0082371", - "tt0108171", - "tt0063654", - "tt1630061", - "tt0489325", - "tt3606888", - "tt1603257", - "tt5765144", - "tt0849470", - "tt4092686", - "tt0372594", - "tt0078831", - "tt0486640", - "tt1787777", - "tt0416185", - "tt1175713", - "tt5867226", - "tt1797469", - "tt6107516", - "tt0072685", - "tt6343058", - "tt0399221", - "tt2928840", - "tt2396489", - "tt6586892", - "tt2139555", - "tt0067224", - "tt0140381", - "tt0074187", - "tt1148200", - "tt6518270", - "tt1131748", - "tt0117473", - "tt0366780", - "tt2785032", - "tt3276924", - "tt0067490", - "tt0374563", - "tt0084237", - "tt0050281", - "tt0116329", - "tt0105488", - "tt0120004", - "tt0107843", - "tt0155776", - "tt2452200", - "tt1255916", - "tt1713476", - "tt4073790", - "tt0140379", - "tt1423894", - "tt6663582", - "tt4453756", - "tt0060959", - "tt0074588", - "tt0455782", - "tt5180888", - "tt1129445", - "tt1640548", - "tt0905372", - "tt4410000", - "tt5581752", - "tt0107952", - "tt0186151", - "tt0489235", - "tt4105584", - "tt0332047", - "tt6179746", - "tt4435082", - "tt1073105", - "tt6793280", - "tt0191915", - "tt0450278", - "tt1015976", - "tt0435625", - "tt0473444", - "tt1564349", - "tt0074768", - "tt0110612", - "tt0455407", - "tt0498353", - "tt0488508", - "tt0454970", - "tt0070215", - "tt1016268", - "tt2332831", - "tt0103976", - "tt0071150", - "tt0058050", - "tt1615918", - "tt1602617", - "tt0321359", - "tt1613023", - "tt1068641", - "tt1682181", - "tt0463034", - "tt1604231", - "tt0055972", - "tt0096119", - "tt0416654", - "tt0359517", - "tt0120184", - "tt0463998", - "tt3450900", - "tt5451690", - "tt0079871", - "tt1258998", - "tt6510332", - "tt0081383", - "tt3499176", - "tt3225318", - "tt2974918", - "tt0380389", - "tt0308508", - "tt0345950", - "tt0101316", - "tt0892318", - "tt2004432", - "tt0247196", - "tt1777608", - "tt0036323", - "tt4779344", - "tt1630603", - "tt0090859", - "tt0064296", - "tt0758053", - "tt0085933", - "tt0089881", - "tt1155053", - "tt1099212", - "tt1167638", - "tt1291580", - "tt0075909", - "tt1708427", - "tt0422401", - "tt0052619", - "tt0059465", - "tt2162709", - "tt6469826", - "tt1104679", - "tt0042707", - "tt1179855", - "tt1727261", - "tt0057480", - "tt1091992", - "tt6072502", - "tt1083456", - "tt1734203", - "tt0065669", - "tt0457433", - "tt2094890", - "tt0074751", - "tt2113075", - "tt0083869", - "tt6764122", - "tt4125206", - "tt0433771", - "tt3173594", - "tt3829920", - "tt2165765", - "tt0105792", - "tt0034902", - "tt1910498", - "tt3532608", - "tt1907779", - "tt1329177", - "tt0066578", - "tt6998518", - "tt1565069", - "tt0036959", - "tt1107812", - "tt6911608", - "tt3004746", - "tt3638012", - "tt0062298", - "tt2372251", - "tt1417032", - "tt0367085", - "tt0082243", - "tt5672286", - "tt1618435", - "tt0070544", - "tt1996264", - "tt0254872", - "tt0163187", - "tt3892434", - "tt0055464", - "tt0079450", - "tt0080440", - "tt0104670", - "tt1003052", - "tt1407061", - "tt0264508", - "tt0063501", - "tt0149367", - "tt1754811", - "tt0156182", - "tt0062883", - "tt0079366", - "tt3458254", - "tt0068522", - "tt0082592", - "tt0120776", - "tt1686782", - "tt1706598", - "tt0057993", - "tt1403075", - "tt0106660", - "tt1704614", - "tt0075950", - "tt0097211", - "tt0093995", - "tt0055073", - "tt6241352", - "tt0071408", - "tt8989870", - "tt5113250", - "tt0227005", - "tt0254871", - "tt0120524", - "tt0067716", - "tt4075804", - "tt0964539", - "tt2235542", - "tt0053848", - "tt6053938", - "tt0466839", - "tt0482546", - "tt1794790", - "tt0762105", - "tt0970472", - "tt0076137", - "tt0051336", - "tt1413489", - "tt0829459", - "tt0117218", - "tt0067927", - "tt7515456", - "tt5427122", - "tt0082348", - "tt5897636", - "tt1486190", - "tt0437405", - "tt0380599", - "tt1426363", - "tt0492389", - "tt2628316", - "tt0438315", - "tt0119485", - "tt0071607", - "tt1334102", - "tt0120458", - "tt0043255", - "tt1278379", - "tt2908856", - "tt7216256", - "tt2171867", - "tt0032637", - "tt0130827", - "tt0032635", - "tt6147512", - "tt3567288", - "tt0262240", - "tt4895740", - "tt0480687", - "tt0227850", - "tt0107193", - "tt0308343", - "tt0884328", - "tt0120577", - "tt1598642", - "tt0780485", - "tt3286052", - "tt2494362", - "tt0424774", - "tt0104409", - "tt1320239", - "tt0842929", - "tt0050105", - "tt2473510", - "tt2412746", - "tt1852770", - "tt1536044", - "tt2072933", - "tt2400463", - "tt0274546", - "tt1623288", - "tt3120944", - "tt0115683", - "tt4062536", - "tt0337636", - "tt1569923", - "tt1778304", - "tt4052882", - "tt1311699", - "tt2473682", - "tt1179933", - "tt2166834", - "tt0057623", - "tt1716747", - "tt5112578", - "tt0446687", - "tt4695012", - "tt0354623", - "tt2409634", - "tt2109184", - "tt3812730", - "tt2359381", - "tt5308322", - "tt4547056", - "tt0451957", - "tt7153766", - "tt0118564", - "tt1285009", - "tt1034385", - "tt1179904", - "tt5628792", - "tt0338094", - "tt0327597", - "tt7055592", - "tt6441072", - "tt0469623", - "tt0101670", - "tt0229440", - "tt2820466", - "tt5886440", - "tt0270980", - "tt0408985", - "tt2238050", - "tt1690455", - "tt1072748", - "tt5091548", - "tt3139086", - "tt0897361", - "tt2313197", - "tt0250347", - "tt0368578", - "tt2114461", - "tt8403680", - "tt4151320", - "tt0116514", - "tt0032641", - "tt0954947", - "tt4853102", - "tt4714782", - "tt0064760", - "tt6104760", - "tt0455957", - "tt1645155", - "tt3060952", - "tt0114852", - "tt0902272", - "tt3504048", - "tt0110527", - "tt0099939", - "tt1127896", - "tt0177876", - "tt0813980", - "tt4280430", - "tt1494772", - "tt0096244", - "tt1750698", - "tt2071550", - "tt0490181", - "tt0479528", - "tt3416744", - "tt0093936", - "tt0488604", - "tt0120008", - "tt2101569", - "tt1232783", - "tt1431181", - "tt0120609", - "tt0067525", - "tt1411704", - "tt3845232", - "tt0093148", - "tt1630626", - "tt0365967", - "tt0087755", - "tt0046672", - "tt0071334", - "tt1411697", - "tt2281587", - "tt0109361", - "tt2498024", - "tt0029222", - "tt4177742", - "tt0160009", - "tt1951261", - "tt1119646", - "tt0074653", - "tt1684226", - "tt6685596", - "tt0460745", - "tt0308383", - "tt2103267", - "tt0346631", - "tt0899106", - "tt0085121", - "tt0485985", - "tt0117331", - "tt9135870", - "tt2403021", - "tt2317225", - "tt0158811", - "tt0257516", - "tt0086014", - "tt0114887", - "tt0117468", - "tt2221648", - "tt2181953", - "tt5783382", - "tt0118747", - "tt0300532", - "tt0076363", - "tt4434688", - "tt5688932", - "tt4568370", - "tt0097637", - "tt3616934", - "tt0120587", - "tt3181822", - "tt2404639", - "tt0091621", - "tt0303929", - "tt0094142", - "tt6364638", - "tt1179069", - "tt0087247", - "tt6710826", - "tt4610748", - "tt0219653", - "tt0118715", - "tt0838247", - "tt2006295", - "tt0213965", - "tt0775489", - "tt0104692", - "tt0449487", - "tt0045578", - "tt0336325", - "tt1937264", - "tt0112691", - "tt0337579", - "tt0115639", - "tt0292644", - "tt0470705", - "tt0410764", - "tt6753206", - "tt0444653", - "tt0402901", - "tt0430912", - "tt2720680", - "tt1316536", - "tt0410377", - "tt2870708", - "tt0100404", - "tt2275946", - "tt5390066", - "tt1251757", - "tt0119535", - "tt0191255", - "tt0116287", - "tt0482527", - "tt0104437", - "tt0808331", - "tt2103217", - "tt0091635", - "tt0065854", - "tt4761916", - "tt0065709", - "tt2420876", - "tt8360902", - "tt0115697", - "tt0098273", - "tt7476438", - "tt2398241", - "tt0094792", - "tt0101473", - "tt0068669", - "tt1172994", - "tt0129332", - "tt0124819", - "tt1112782", - "tt0808510", - "tt2091935", - "tt0090022", - "tt0116191", - "tt0455499", - "tt0115783", - "tt0257756", - "tt0896798", - "tt0184858", - "tt0146291", - "tt0027073", - "tt1118511", - "tt0024782", - "tt2017020", - "tt0062803", - "tt0145809", - "tt0106307", - "tt0191896", - "tt0024721", - "tt0132480", - "tt3203992", - "tt0031964", - "tt0086129", - "tt5910344", - "tt0082677", - "tt0013626", - "tt0425430", - "tt1935929", - "tt0084522", - "tt0113845", - "tt0089826", - "tt0405336", - "tt2515034", - "tt3262342", - "tt6775942", - "tt0112453", - "tt0316732", - "tt0091217", - "tt2140629", - "tt2994190", - "tt1285309", - "tt0288045", - "tt0072308", - "tt1477837", - "tt1031969", - "tt2918436", - "tt4729896", - "tt0421206", - "tt0303714", - "tt8526506", - "tt0455960", - "tt1233301", - "tt1529572", - "tt1067774", - "tt0107969", - "tt1464580", - "tt0123865", - "tt0189998", - "tt0838232", - "tt0454824", - "tt1244754", - "tt2404583", - "tt0436339", - "tt1369706", - "tt0090056", - "tt0139699", - "tt0102307", - "tt2452042", - "tt1055292", - "tt0331811", - "tt0053917", - "tt5607028", - "tt1596346", - "tt0871426", - "tt0073341", - "tt0269347", - "tt0314431", - "tt1130080", - "tt1656186", - "tt0074977", - "tt0450405", - "tt1470023", - "tt0160797", - "tt1850397", - "tt1480656", - "tt0086244", - "tt5539924", - "tt0109045", - "tt0385726", - "tt0073802", - "tt0032884", - "tt0430304", - "tt0102945", - "tt0054953", - "tt1606392", - "tt0364751", - "tt0419677", - "tt0312528", - "tt0098627", - "tt0365485", - "tt0095174", - "tt0089370", - "tt5774450", - "tt1767354", - "tt0475944", - "tt1531663", - "tt1225822", - "tt0116277", - "tt0115857", - "tt0089155", - "tt1441326", - "tt1212436", - "tt5771710", - "tt2382396", - "tt0437863", - "tt0112883", - "tt0804522", - "tt0443536", - "tt0069776", - "tt0281686", - "tt1287468", - "tt0108002", - "tt0120731", - "tt0977855", - "tt0406759", - "tt4547938", - "tt0765120", - "tt0443632", - "tt0062765", - "tt0092691", - "tt0460829", - "tt1176740", - "tt0105435", - "tt0844993", - "tt0355702", - "tt0075784", - "tt0452598", - "tt1578275", - "tt0294870", - "tt0810922", - "tt8457394", - "tt0266489", - "tt0112722", - "tt1414382", - "tt0862467", - "tt0758762", - "tt0360201", - "tt0827782", - "tt0402894", - "tt0271027", - "tt1270262", - "tt0179626", - "tt0375154", - "tt0401997", - "tt0239395", - "tt0491152", - "tt3807900", - "tt0462200", - "tt0988047", - "tt0476964", - "tt0107302", - "tt0111255", - "tt0120693", - "tt0206275", - "tt0427470", - "tt0037445", - "tt1093357", - "tt1687901", - "tt3962984", - "tt0132347", - "tt1222817", - "tt0385267", - "tt2357291", - "tt0116409", - "tt5459382", - "tt1197628", - "tt0039600", - "tt0051744", - "tt0445990", - "tt1038919", - "tt0146309", - "tt0397313", - "tt8989874", - "tt0758794", - "tt0071677", - "tt0039627", - "tt1428538", - "tt0069007", - "tt0465624", - "tt0084173", - "tt4602554", - "tt6723494", - "tt5687040", - "tt1075747", - "tt6522982", - "tt5959952", - "tt0053221", - "tt0421082", - "tt0102057", - "tt0865554", - "tt0450345", - "tt0054086", - "tt0110005", - "tt0089469", - "tt0780583", - "tt0219699", - "tt1130884", - "tt0453556", - "tt1467304", - "tt1210042", - "tt5220122", - "tt0838283", - "tt0027125", - "tt0116908", - "tt0396752", - "tt8541440", - "tt0102940", - "tt0486551", - "tt1323045", - "tt6241390", - "tt0421054", - "tt0119925", - "tt0329575", - "tt0478134", - "tt0035103", - "tt3007512", - "tt0049672", - "tt1883367", - "tt0963794", - "tt1415283", - "tt3312830", - "tt6288124", - "tt0477051", - "tt0110932", - "tt3605418", - "tt7014006", - "tt0175536", - "tt0107822", - "tt0114694", - "tt1095217", - "tt0804461", - "tt5743816", - "tt0120461", - "tt0433387", - "tt1530509", - "tt0083511", - "tt1152398", - "tt0462465", - "tt0209475", - "tt0065214", - "tt0181316", - "tt1294226", - "tt0181536", - "tt0120780", - "tt4938374", - "tt1126591", - "tt0117802", - "tt6532374", - "tt6464360", - "tt0368226", - "tt0455967", - "tt1107365", - "tt0265349", - "tt0328832", - "tt0120794", - "tt1103153", - "tt0398017", - "tt0069754", - "tt0127536", - "tt0068583", - "tt2377132", - "tt1440292", - "tt5648036", - "tt0099582", - "tt1051904", - "tt5988966", - "tt0049730", - "tt1985949", - "tt0137363", - "tt1020558", - "tt0810913", - "tt0185183", - "tt0378109", - "tt3917210", - "tt0335119", - "tt0770752", - "tt1674768", - "tt1216492", - "tt1540133", - "tt0406375", - "tt5595168", - "tt0364045", - "tt5371168", - "tt1646926", - "tt0395699", - "tt0455760", - "tt2170593", - "tt1230414", - "tt0408839", - "tt0267804", - "tt0298814", - "tt1564585", - "tt1532503", - "tt0406816", - "tt0400717", - "tt1297919", - "tt0348333", - "tt1116186", - "tt0120434", - "tt0370032", - "tt1289406", - "tt1229822", - "tt6370614", - "tt0173840", - "tt0457513", - "tt0085995", - "tt0248667", - "tt0061418", - "tt1131734", - "tt1657507", - "tt0430357", - "tt1800741", - "tt0109327", - "tt0116136", - "tt3860916", - "tt1017460", - "tt0422720", - "tt5201246", - "tt1431133", - "tt0795368", - "tt0171804", - "tt7664504", - "tt1034314", - "tt7317494", - "tt1053424", - "tt0080487", - "tt0433383", - "tt0043461", - "tt1924396", - "tt0790686", - "tt0929632", - "tt1478964", - "tt1656190", - "tt0019186", - "tt1172570", - "tt4505670", - "tt1615147", - "tt1509767", - "tt1023481", - "tt8589788", - "tt6133466", - "tt0462590", - "tt0918927", - "tt0443649", - "tt0386117", - "tt1131729", - "tt2180411", - "tt0286499", - "tt0125664", - "tt1234548", - "tt0113627", - "tt1067583", - "tt2561572", - "tt2626350", - "tt0817230", - "tt2096672", - "tt1019452", - "tt2305051", - "tt8780234", - "tt0040723", - "tt1114277", - "tt0453451", - "tt0048473", - "tt6100122", - "tt1462058", - "tt0134033", - "tt0269743", - "tt0052572", - "tt0048956", - "tt0340855", - "tt0167331", - "tt0035462", - "tt0086510", - "tt0056919", - "tt2243123", - "tt0042792", - "tt6624126", - "tt0159365", - "tt0177789", - "tt4974778", - "tt3316960", - "tt5136686", - "tt0099141", - "tt1267297", - "tt0829150", - "tt0947810", - "tt0120657", - "tt0108358", - "tt1192628", - "tt0093822", - "tt4052050", - "tt0112508", - "tt0261392", - "tt1621429", - "tt0398808", - "tt1298649", - "tt0815236", - "tt5397194", - "tt0387131", - "tt0443274", - "tt0079417", - "tt0090184", - "tt0469916", - "tt0111282", - "tt0073018", - "tt5813366", - "tt0081975", - "tt1229340", - "tt1507571", - "tt7334528", - "tt0066080", - "tt0277027", - "tt0324941", - "tt6401004", - "tt5685006", - "tt0029971", - "tt0758752", - "tt0142688", - "tt0115798", - "tt0415306", - "tt1174732", - "tt6055450", - "tt0443680", - "tt0488120", - "tt0257076", - "tt0430105", - "tt0408790", - "tt3892172", - "tt0825232", - "tt0070735", - "tt0442933", - "tt0067116", - "tt0374900", - "tt0413099", - "tt2273648", - "tt0986263", - "tt1013753", - "tt0082533", - "tt0814255", - "tt0183790", - "tt0311429", - "tt0104452", - "tt7681902", - "tt0177971", - "tt5735582", - "tt1564367", - "tt0092890", - "tt0072890", - "tt0097322", - "tt0092297", - "tt5041296", - "tt0462322", - "tt1120985", - "tt1059786", - "tt0064115", - "tt7946836", - "tt1148204", - "tt1458175", - "tt0431308", - "tt0183505", - "tt0289043", - "tt0758774", - "tt0338096", - "tt1313139", - "tt1985966", - "tt0055382", - "tt1243957", - "tt1672723", - "tt0486822", - "tt0080678", - "tt0315733", - "tt0463854", - "tt1436562", - "tt2293640", - "tt0142257", - "tt0050629", - "tt0111257", - "tt0044388", - "tt0478087", - "tt8045978", - "tt1723121", - "tt0063219", - "tt5198796", - "tt0075249", - "tt0328107", - "tt1596350", - "tt1028576", - "tt0421715", - "tt5719232", - "tt0212346", - "tt0114906", - "tt0081259", - "tt6968542", - "tt0380623", - "tt0844471", - "tt0150216", - "tt0175880", - "tt1092026", - "tt0320691", - "tt1033575", - "tt0829482", - "tt0401855", - "tt0947798", - "tt1232829", - "tt0257044", - "tt0396171", - "tt0106977", - "tt0111161", - "tt1605783", - "tt0414387", - "tt0450259", - "tt0093780", - "tt0834001", - "tt0060174", - "tt0405422", - "tt1496025", - "tt0458352", - "tt0079470", - "tt0758758", - "tt0060891", - "tt6558114", - "tt5932800", - "tt0389860", - "tt0343660", - "tt0477348", - "tt0253474", - "tt1951216", - "tt2246549", - "tt0059229", - "tt1641385", - "tt3625352", - "tt1810697", - "tt5654710", - "tt0284262", - "tt1068242", - "tt1754367", - "tt1880209", - "tt1924394", - "tt1684925", - "tt2920540", - "tt2147365", - "tt1683526", - "tt0105411", - "tt1966604", - "tt1185371", - "tt1598873", - "tt0059633", - "tt8912318", - "tt0081184", - "tt1641252", - "tt1329232", - "tt2586120", - "tt0085303", - "tt4117850", - "tt4268850", - "tt2769184", - "tt2509850", - "tt3265262", - "tt2945796", - "tt0057521", - "tt1645074", - "tt0111454", - "tt0067003", - "tt3699684", - "tt1702009", - "tt0055399", - "tt0459327", - "tt6878882", - "tt1673697", - "tt0087451", - "tt3263520", - "tt0093990", - "tt4080956", - "tt1785353", - "tt1883168", - "tt0180999", - "tt0086610", - "tt0073697", - "tt2393827", - "tt0075097", - "tt7158430", - "tt2758890", - "tt2943068", - "tt0085672", - "tt3149640", - "tt2626964", - "tt0125510", - "tt4050596", - "tt0089271", - "tt0022685", - "tt8595574", - "tt6069620", - "tt1605798", - "tt0069495", - "tt0099949", - "tt6043842", - "tt0124014", - "tt0276818", - "tt0297462", - "tt0283534", - "tt0087072", - "tt0098502", - "tt0086248", - "tt0131543", - "tt0098503", - "tt0105150", - "tt0478304", - "tt0212879", - "tt8128866", - "tt6566400", - "tt0083973", - "tt5931388", - "tt0095989", - "tt0110722", - "tt0439630", - "tt1210801", - "tt0094712", - "tt0067357", - "tt0084921", - "tt0079135", - "tt5727282", - "tt8119752", - "tt0094910", - "tt2580382", - "tt0072236", - "tt0109702", - "tt0078749", - "tt0080520", - "tt1389781", - "tt0103116", - "tt3496372", - "tt0805526", - "tt0105632", - "tt0070913", - "tt0057443", - "tt8074486", - "tt1817081", - "tt1879032", - "tt2113792", - "tt2043931", - "tt7944094", - "tt1861279", - "tt1848902", - "tt1545328", - "tt2024506", - "tt1989475", - "tt1020055", - "tt1887814", - "tt7164066", - "tt2347497", - "tt0835418", - "tt1142988", - "tt0234886", - "tt1438173", - "tt0061333", - "tt1684564", - "tt2999390", - "tt0058208", - "tt6774786", - "tt1187041", - "tt3845960", - "tt2005164", - "tt2587198", - "tt2310109", - "tt1222815", - "tt8490838", - "tt1114677", - "tt2112152", - "tt1816642", - "tt0360556", - "tt1638364", - "tt2279864", - "tt2216240", - "tt2920808", - "tt2946582", - "tt1828970", - "tt2461034", - "tt3148890", - "tt0098536", - "tt1662293", - "tt0804463", - "tt2343266", - "tt2012011", - "tt1822381", - "tt3165608", - "tt5913184", - "tt8691808", - "tt0960066", - "tt1942884", - "tt1855199", - "tt3906082", - "tt2910342", - "tt2107648", - "tt2309224", - "tt2085910", - "tt0095354", - "tt1680045", - "tt1720164", - "tt1684233", - "tt0055633", - "tt1611224", - "tt0085694", - "tt1659338", - "tt0065580", - "tt0090192", - "tt2124803", - "tt2331100", - "tt0084060", - "tt0062262", - "tt3138104", - "tt3409848", - "tt0059653", - "tt1210819", - "tt1865393", - "tt3636326", - "tt0091763", - "tt1333125", - "tt1621045", - "tt0372119", - "tt7819394", - "tt1547234", - "tt5747692", - "tt0461604", - "tt0048484", - "tt1838544", - "tt0051471", - "tt0030127", - "tt0083012", - "tt0433442", - "tt0984210", - "tt0393685", - "tt0252866", - "tt0494224", - "tt0054632", - "tt5361596", - "tt1493828", - "tt7941052", - "tt1247683", - "tt2006040", - "tt5338644", - "tt0896031", - "tt0286112", - "tt0972359", - "tt8582162", - "tt1394383", - "tt1361313", - "tt1268987", - "tt1706680", - "tt1407049", - "tt1568323", - "tt0059530", - "tt1012729", - "tt0765128", - "tt0093066", - "tt1571243", - "tt1615480", - "tt2198241", - "tt1407078", - "tt1885300", - "tt0058003", - "tt0035929", - "tt1597033", - "tt0077533", - "tt1156067", - "tt1790825", - "tt2499414", - "tt6701492", - "tt6591554", - "tt1043651", - "tt7313518", - "tt5816712", - "tt1846444", - "tt1519664", - "tt1559549", - "tt0444672", - "tt0471930", - "tt1176251", - "tt0178022", - "tt1198075", - "tt1791658", - "tt1359555", - "tt0847527", - "tt0482461", - "tt0981042", - "tt0798817", - "tt0091844", - "tt0473709", - "tt0430431", - "tt1500140", - "tt1630564", - "tt1410295", - "tt5778098", - "tt6793580", - "tt0159458", - "tt5779540", - "tt2369047", - "tt1053880", - "tt1325723", - "tt0409011", - "tt1401607", - "tt1283546", - "tt1129410", - "tt1105730", - "tt1196170", - "tt1343029", - "tt1259227", - "tt0483719", - "tt4481514", - "tt1400515", - "tt1225302", - "tt1792131", - "tt1403177", - "tt1341710", - "tt0756618", - "tt0463984", - "tt0371257", - "tt0068379", - "tt1327200", - "tt0096740", - "tt1471156", - "tt0896533", - "tt0100114", - "tt0411705", - "tt1692928", - "tt1319744", - "tt1079360", - "tt0081250", - "tt0068605", - "tt0096316", - "tt1680051", - "tt0063462", - "tt1436572", - "tt1047449", - "tt8235966", - "tt0073324", - "tt0086346", - "tt7897478", - "tt0409034", - "tt2124172", - "tt1073246", - "tt1183919", - "tt1678051", - "tt1614456", - "tt0114436", - "tt1702425", - "tt1502420", - "tt0190865", - "tt1415284", - "tt3127022", - "tt6155374", - "tt6494418", - "tt7222296", - "tt1560978", - "tt2689992", - "tt1522262", - "tt6002232", - "tt0109676", - "tt1641831", - "tt0163579", - "tt0113950", - "tt0085333", - "tt2039339", - "tt6213362", - "tt0096487", - "tt0119643", - "tt1870425", - "tt0113965", - "tt0120148", - "tt1663689", - "tt0107211", - "tt0102685", - "tt0120820", - "tt0103074", - "tt0494199", - "tt0116213", - "tt0113949", - "tt0138097", - "tt0103962", - "tt0897347", - "tt0102798", - "tt1734122", - "tt0114614", - "tt0113948", - "tt0106950", - "tt2141875", - "tt0102250", - "tt0955308", - "tt0109813", - "tt2609156", - "tt2376024", - "tt1568802", - "tt2050633", - "tt1037218", - "tt3697626", - "tt1840388", - "tt2381355", - "tt2060525", - "tt2236182", - "tt0068997", - "tt4125654", - "tt1398428", - "tt0796302", - "tt1308748", - "tt2083231", - "tt1007032", - "tt2396701", - "tt1155060", - "tt1995341", - "tt0423455", - "tt2341985", - "tt1673702", - "tt0490499", - "tt0109723", - "tt2417650", - "tt1999995", - "tt0498351", - "tt2401223", - "tt4222028", - "tt0462362", - "tt0063970", - "tt1212451", - "tt0027545", - "tt0036376", - "tt0401085", - "tt1652361", - "tt2545538", - "tt2953196", - "tt1855236", - "tt3062074", - "tt1024733", - "tt2095568", - "tt2173768", - "tt3124476", - "tt0058507", - "tt1545754", - "tt2425886", - "tt1517471", - "tt2569792", - "tt2991532", - "tt1559036", - "tt0093483", - "tt2262175", - "tt2420006", - "tt0350261", - "tt2215151", - "tt1416801", - "tt1778931", - "tt0119173", - "tt0123847", - "tt4008652", - "tt2492664", - "tt2290065", - "tt2620736", - "tt1037222", - "tt0074564", - "tt2793490", - "tt0081237", - "tt0090567", - "tt0072962", - "tt3326366", - "tt0431091", - "tt0466816", - "tt0368222", - "tt3090252", - "tt0413895", - "tt0117107", - "tt0061587", - "tt3092606", - "tt4831420", - "tt3899796", - "tt5291792", - "tt5073620", - "tt2194328", - "tt0049432", - "tt0070445", - "tt0081529", - "tt0080756", - "tt5346228", - "tt0072665", - "tt1610013", - "tt0070511", - "tt5687334", - "tt2229377", - "tt0084698", - "tt3104930", - "tt6227846", - "tt0087032", - "tt2635006", - "tt0077504", - "tt2724064", - "tt0204640", - "tt4180556", - "tt0064923", - "tt0097493", - "tt6903980", - "tt0068473", - "tt0090073", - "tt0118897", - "tt0198386", - "tt0076729", - "tt0132245", - "tt0098093", - "tt0083642", - "tt0116953", - "tt0096787", - "tt0086325", - "tt3014078", - "tt0077524", - "tt3417854", - "tt0361500", - "tt4118932", - "tt0079948", - "tt0070915", - "tt5836316", - "tt0099173", - "tt0068617", - "tt4316236", - "tt4257858", - "tt0117765", - "tt0053108", - "tt0118749", - "tt0460780", - "tt0077696", - "tt0415778", - "tt0087062", - "tt0083064", - "tt0082136", - "tt0082910", - "tt1046947", - "tt4504040", - "tt0069883", - "tt3457734", - "tt2304915", - "tt0102116", - "tt0095925", - "tt0095560", - "tt5773986", - "tt0098205", - "tt0089538", - "tt0046521", - "tt6523174", - "tt3899932", - "tt6793818", - "tt0046535", - "tt1618448", - "tt0086605", - "tt6400632", - "tt4076760", - "tt0055506", - "tt0454919", - "tt3885524", - "tt1085492", - "tt2929652", - "tt0100602", - "tt1567140", - "tt5116410", - "tt5040624", - "tt3858372", - "tt0375568", - "tt5884234", - "tt1465522", - "tt0067454", - "tt1440728", - "tt1403981", - "tt1322312", - "tt1517489", - "tt1314655", - "tt1240982", - "tt0790712", - "tt0117929", - "tt0480255", - "tt0102593", - "tt0472198", - "tt1273678", - "tt0842926", - "tt0403702", - "tt0338459", - "tt1186370", - "tt1023114", - "tt0963966", - "tt0227538", - "tt6313348", - "tt1185416", - "tt0821640", - "tt0762125", - "tt6314690", - "tt0054469", - "tt0152438", - "tt8080578", - "tt5078204", - "tt6186696", - "tt0287717", - "tt6015706", - "tt0116289", - "tt1772240", - "tt0468489", - "tt5018116", - "tt0116384", - "tt7108074", - "tt0489049", - "tt5876412", - "tt2772966", - "tt2288005", - "tt0844286", - "tt0086987", - "tt8522168", - "tt1230204", - "tt0114069", - "tt0120382", - "tt0457419", - "tt2034139", - "tt1152397", - "tt0066206", - "tt0139134", - "tt1320244", - "tt0427152", - "tt2560792", - "tt0364725", - "tt6540078", - "tt5157052", - "tt1715873", - "tt0412536", - "tt0077269", - "tt0452623", - "tt1559040", - "tt0103594", - "tt0090728", - "tt0119164", - "tt0840322", - "tt2375574", - "tt0095088", - "tt0779982", - "tt0419887", - "tt0488085", - "tt0421238", - "tt1410020", - "tt0216216", - "tt0070355", - "tt0443453", - "tt0094077", - "tt5460880", - "tt0107563", - "tt3212904", - "tt0453453", - "tt0117653", - "tt0490086", - "tt1881024", - "tt0061747", - "tt0435705", - "tt0858433", - "tt3779300", - "tt1379177", - "tt0866437", - "tt0405325", - "tt0091949", - "tt0102614", - "tt0065207", - "tt0100514", - "tt0151137", - "tt0960144", - "tt0056197", - "tt1663193", - "tt1919090", - "tt0490204", - "tt1701210", - "tt0061512", - "tt0110490", - "tt0087553", - "tt1109477", - "tt0096101", - "tt0362478", - "tt4216902", - "tt8925724", - "tt0245803", - "tt0129387", - "tt0388795", - "tt7009250", - "tt0195685", - "tt5779650", - "tt7200856", - "tt0308644", - "tt8826626", - "tt4355236", - "tt0068638", - "tt3859310", - "tt0118548", - "tt0053125", - "tt0795493", - "tt1104814", - "tt8595630", - "tt7842764", - "tt1201167", - "tt7936538", - "tt2210463", - "tt8592222", - "tt1078588", - "tt0065938", - "tt1336006", - "tt7620746", - "tt7708146", - "tt0107206", - "tt0119528", - "tt1272886", - "tt0815241", - "tt0079168", - "tt0092783", - "tt0756672", - "tt0079116", - "tt0329162", - "tt3569732", - "tt0473267", - "tt0415833", - "tt0074483", - "tt5618692", - "tt0473553", - "tt0291833", - "tt0245573", - "tt5455410", - "tt1320346", - "tt1198332", - "tt0099871", - "tt1700843", - "tt8163888", - "tt1276110", - "tt0944833", - "tt0292610", - "tt1173687", - "tt4314152", - "tt1148165", - "tt0829098", - "tt1418646", - "tt0307385", - "tt1489246", - "tt0889134", - "tt0790662", - "tt0429115", - "tt0275773", - "tt1299653", - "tt0926380", - "tt1371117", - "tt0814093", - "tt0486652", - "tt0099587", - "tt0775362", - "tt1282024", - "tt0092272", - "tt0428579", - "tt1075746", - "tt0417433", - "tt1176204", - "tt1636539", - "tt0202027", - "tt1560954", - "tt1422032", - "tt1251725", - "tt1376709", - "tt1268970", - "tt0472175", - "tt0790799", - "tt0411475", - "tt1222698", - "tt5618752", - "tt0304636", - "tt0800361", - "tt1313092", - "tt0379240", - "tt1161404", - "tt0795439", - "tt0451102", - "tt1457766", - "tt0081376", - "tt1027683", - "tt0049665", - "tt1261041", - "tt0304711", - "tt1400526", - "tt1477675", - "tt0208298", - "tt0088255", - "tt2243393", - "tt0493451", - "tt1456941", - "tt0302585", - "tt1285216", - "tt3821674", - "tt0107756", - "tt1251761", - "tt0924134", - "tt1283887", - "tt1841594", - "tt0059065", - "tt1237373", - "tt0109809", - "tt1524131", - "tt1473799", - "tt1075749", - "tt0458367", - "tt0245280", - "tt0094671", - "tt5843850", - "tt1730695", - "tt1198396", - "tt1555747", - "tt1571739", - "tt1373149", - "tt0068675", - "tt0118025", - "tt1999141", - "tt4084076", - "tt1260680", - "tt1376404", - "tt6908760", - "tt0096180", - "tt1792799", - "tt4234744", - "tt1686039", - "tt1319699", - "tt0067924", - "tt1839648", - "tt1912981", - "tt1135493", - "tt1438216", - "tt0978762", - "tt2073154", - "tt1433915", - "tt1337137", - "tt0073864", - "tt1738421", - "tt0068713", - "tt1322306", - "tt0131400", - "tt1650056", - "tt1568924", - "tt0133751", - "tt0059095", - "tt3814808", - "tt5516328", - "tt7689964", - "tt0089360", - "tt5436228", - "tt6306064", - "tt1720616", - "tt0133142", - "tt1714861", - "tt6238896", - "tt1742023", - "tt1600207", - "tt1590960", - "tt2140141", - "tt1531914", - "tt2214941", - "tt0092618", - "tt1730294", - "tt1777725", - "tt0110729", - "tt0145547", - "tt1235189", - "tt0076538", - "tt1570559", - "tt0443435", - "tt0284978", - "tt3074780", - "tt2483516", - "tt0109444", - "tt1258922", - "tt2119474", - "tt1668200", - "tt2322641", - "tt3125324", - "tt0458413", - "tt2583690", - "tt1524575", - "tt1776086", - "tt1411664", - "tt1420554", - "tt0072626", - "tt1666801", - "tt1447972", - "tt1620449", - "tt2788716", - "tt0085210", - "tt2279373", - "tt0283111", - "tt2236054", - "tt0092904", - "tt4183692", - "tt2250234", - "tt0072409", - "tt2132285", - "tt0105112", - "tt1372686", - "tt1876451", - "tt1758795", - "tt2150511", - "tt1311060", - "tt0084694", - "tt1716777", - "tt2626460", - "tt0067419", - "tt5568164", - "tt0070736", - "tt7874378", - "tt0070436", - "tt1839654", - "tt1814621", - "tt6484086", - "tt3829378", - "tt5687380", - "tt1972819", - "tt1711425", - "tt0101493", - "tt1205537", - "tt1433811", - "tt0116247", - "tt1210106", - "tt0075433", - "tt1436571", - "tt0083906", - "tt7689908", - "tt0085253", - "tt0068450", - "tt0164184", - "tt0215960", - "tt0099810", - "tt5164184", - "tt3109830", - "tt4334642", - "tt0109858", - "tt5351458", - "tt0108260", - "tt0091560", - "tt0068498", - "tt0090915", - "tt0102043", - "tt0085434", - "tt1743993", - "tt0087100", - "tt0062141", - "tt0053806", - "tt0400146", - "tt0059447", - "tt0061556", - "tt0055779", - "tt1078597", - "tt0110410", - "tt1424432", - "tt0065700", - "tt1465491", - "tt0054698", - "tt0080516", - "tt0460890", - "tt1700263", - "tt0096142", - "tt0095299", - "tt0095774", - "tt0051554", - "tt0317676", - "tt0847825", - "tt0076843", - "tt1555024", - "tt1533013", - "tt0093546", - "tt1429411", - "tt1465519", - "tt0196158", - "tt0067037", - "tt1721677", - "tt1656257", - "tt1219336", - "tt0256524", - "tt1728975", - "tt0054022", - "tt0080798", - "tt1653700", - "tt1865484", - "tt1658851", - "tt0362165", - "tt0049092", - "tt0120851", - "tt1274596", - "tt1032825", - "tt4061908", - "tt2136808", - "tt0462721", - "tt0052724", - "tt0079576", - "tt0369360", - "tt0279111", - "tt0463029", - "tt0102015", - "tt1230206", - "tt1193473", - "tt1703148", - "tt0078456", - "tt6212478", - "tt1365483", - "tt0196216", - "tt0113819", - "tt1730704", - "tt1688653", - "tt7139246", - "tt1747967", - "tt1153106", - "tt1633245", - "tt4114630", - "tt0104802", - "tt6813892", - "tt5619332", - "tt1912996", - "tt1492705", - "tt5165620", - "tt0088206", - "tt1059969", - "tt1680305", - "tt0095801", - "tt4682788", - "tt1743375", - "tt1640570", - "tt0077531", - "tt1727506", - "tt0051398", - "tt0099291", - "tt1389127", - "tt1786497", - "tt0446750", - "tt1221207", - "tt0458485", - "tt2062661", - "tt0035423", - "tt0129775", - "tt0055312", - "tt1820723", - "tt1657299", - "tt2175927", - "tt0099365", - "tt1600197", - "tt0057840", - "tt0465494", - "tt2250054", - "tt2102472", - "tt0066249", - "tt0063415", - "tt0086312", - "tt0046949", - "tt1251743", - "tt1876277", - "tt0091369", - "tt0077921", - "tt0095082", - "tt0072820", - "tt0073906", - "tt0091860", - "tt0072608", - "tt0074695", - "tt5738064", - "tt0889588", - "tt0067803", - "tt6652708", - "tt4158594", - "tt0098546", - "tt0119008", - "tt0238112", - "tt0104107", - "tt0058212", - "tt0077416", - "tt0059575", - "tt6488870", - "tt0055892", - "tt0093200", - "tt0093776", - "tt6505968", - "tt0124298", - "tt0066858", - "tt0079668", - "tt0082432", - "tt0109303", - "tt0068540", - "tt0082846", - "tt0125022", - "tt1130969", - "tt0080408", - "tt0066982", - "tt0061328", - "tt0102103", - "tt0058265", - "tt0084865", - "tt7076834", - "tt0155711", - "tt0075334", - "tt0045302", - "tt0107497", - "tt3548028", - "tt5628302", - "tt0076660", - "tt0102494", - "tt0053579", - "tt0113677", - "tt0056930", - "tt4372390", - "tt0105046", - "tt0049434", - "tt0080025", - "tt0065488", - "tt0360130", - "tt0068575", - "tt0067411", - "tt0039482", - "tt0053729", - "tt0107130", - "tt0076095", - "tt0139668", - "tt0052735", - "tt0061184", - "tt0058571", - "tt1703957", - "tt0118768", - "tt0036092", - "tt0094606", - "tt0087001", - "tt0061789", - "tt7046826", - "tt0100395", - "tt0345061", - "tt0161492", - "tt0108122", - "tt0049966", - "tt0106449", - "tt6053438", - "tt0097100", - "tt1151410", - "tt0119501", - "tt0055100", - "tt3864024", - "tt0088760", - "tt0087594", - "tt0031311", - "tt1210359", - "tt0276329", - "tt3249478", - "tt7328908", - "tt6776572", - "tt2924392", - "tt0094620", - "tt1836212", - "tt6857166", - "tt0079714", - "tt0111309", - "tt0352230", - "tt0087482", - "tt0973785", - "tt0084272", - "tt0047152", - "tt0106673", - "tt0109506", - "tt0151785", - "tt3121474", - "tt4532428", - "tt0098206", - "tt0113243", - "tt0096018", - "tt0243655", - "tt7974772", - "tt3720058", - "tt0066996", - "tt0070674", - "tt0199354", - "tt0055253", - "tt4876334", - "tt0077357", - "tt0071628", - "tt0189584", - "tt0081633", - "tt7675596", - "tt1576699", - "tt2028550", - "tt0118111", - "tt0352277", - "tt0116650", - "tt0433412", - "tt1031241", - "tt1362103", - "tt0054135", - "tt7566244", - "tt0093693", - "tt3364264", - "tt0060164", - "tt0867334", - "tt0020876", - "tt0064688", - "tt0055047", - "tt0264365", - "tt0436364", - "tt0070556", - "tt0062805", - "tt1614408", - "tt0032840", - "tt1273241", - "tt1462758", - "tt1307065", - "tt0059245", - "tt0317132", - "tt1281966", - "tt0052902", - "tt0120199", - "tt1553659", - "tt0084171", - "tt0483154", - "tt5540992", - "tt0055623", - "tt0114666", - "tt0110997", - "tt0059219", - "tt3739110", - "tt3203528", - "tt0327210", - "tt1425253", - "tt0057569", - "tt0069464", - "tt0352394", - "tt0067620", - "tt7167658", - "tt0429591", - "tt0059727", - "tt0051411", - "tt0089308", - "tt7335008", - "tt7341610", - "tt0366762", - "tt7762772", - "tt6608976", - "tt6697760", - "tt0103184", - "tt8236394", - "tt0053041", - "tt0083133", - "tt0380787", - "tt1206082", - "tt0106453", - "tt1554092", - "tt6740584", - "tt1104779", - "tt6410564", - "tt1461677", - "tt0194710", - "tt7220754", - "tt0056983", - "tt1474276", - "tt0067741", - "tt1129442", - "tt2164468", - "tt0091282", - "tt0165929", - "tt0068509", - "tt1434435", - "tt5607714", - "tt1925479", - "tt6190198", - "tt1971403", - "tt0087932", - "tt6383726", - "tt0095288", - "tt0065243", - "tt0071523", - "tt0066540", - "tt0059252", - "tt1641975", - "tt0079550", - "tt0120769", - "tt1137450", - "tt0364990", - "tt0068596", - "tt0462396", - "tt3316302", - "tt0125806", - "tt6173644", - "tt0083628", - "tt0109578", - "tt0448154", - "tt7106414", - "tt0092857", - "tt3464744", - "tt4071086", - "tt0083111", - "tt3717068", - "tt5061162", - "tt4319082", - "tt1381508", - "tt0486541", - "tt2185384", - "tt0844794", - "tt2630336", - "tt0109093", - "tt0095690", - "tt6777370", - "tt1024744", - "tt0260987", - "tt0339840", - "tt0056800", - "tt2387513", - "tt0090094", - "tt6495770", - "tt0268978", - "tt6270524", - "tt1559033", - "tt0089839", - "tt0054997", - "tt2370230", - "tt0082307", - "tt0091647", - "tt0118843", - "tt0356470", - "tt1470021", - "tt0075232", - "tt3465074", - "tt5657280", - "tt1558246", - "tt0123964", - "tt0104040", - "tt6195094", - "tt0097613", - "tt4412082", - "tt0847182", - "tt1504403", - "tt0060904", - "tt1352388", - "tt1253596", - "tt0063157", - "tt0099409", - "tt1148779", - "tt1414378", - "tt5085924", - "tt1438534", - "tt1528718", - "tt5344086", - "tt0092964", - "tt0242622", - "tt4575328", - "tt1020559", - "tt6452332", - "tt0065421", - "tt1629439", - "tt0450336", - "tt1590950", - "tt1727816", - "tt0078935", - "tt5170810", - "tt0858411", - "tt1664894", - "tt1386925", - "tt1410051", - "tt0112541", - "tt1548635", - "tt1781775", - "tt7197298", - "tt1714208", - "tt1764726", - "tt0053935", - "tt0034570", - "tt0025493", - "tt1528312", - "tt0024763", - "tt0039178", - "tt1524134", - "tt0026739", - "tt1422800", - "tt1727358", - "tt2092011", - "tt6210996", - "tt2113809", - "tt1711366", - "tt7238392", - "tt1764198", - "tt1606180", - "tt1590089", - "tt0062377", - "tt1273207", - "tt1623765", - "tt1795702", - "tt0112744", - "tt0103855", - "tt1700844", - "tt1515199", - "tt1642665", - "tt6738136", - "tt0932669", - "tt1658820", - "tt0082427", - "tt5961906", - "tt0025004", - "tt0118308", - "tt1788391", - "tt0077280", - "tt0066122", - "tt0026014", - "tt1727258", - "tt0028873", - "tt1905040", - "tt0063443", - "tt2076897", - "tt0082933", - "tt6172666", - "tt6539470", - "tt1172233", - "tt0042876", - "tt0060841", - "tt0108255", - "tt0047191", - "tt4847546", - "tt0031750", - "tt4103724", - "tt1965065", - "tt1691453", - "tt0033677", - "tt0040474", - "tt0049369", - "tt0054989", - "tt0070656", - "tt0064379", - "tt0050438", - "tt0082484", - "tt0072233", - "tt0080707", - "tt0053677", - "tt0089913", - "tt5610554", - "tt1588398", - "tt0033555", - "tt0062037", - "tt0074991", - "tt0066518", - "tt0030696", - "tt0084234", - "tt0027428", - "tt0054790", - "tt0026184", - "tt0031000", - "tt0028575", - "tt0031133", - "tt0032416", - "tt1181795", - "tt0033554", - "tt0096866", - "tt0497465", - "tt5961314", - "tt0032415", - "tt0354766", - "tt1836808", - "tt0068284", - "tt1002992", - "tt1422136", - "tt2436452", - "tt1440161", - "tt0057226", - "tt0056277", - "tt2902898", - "tt0062833", - "tt1809287", - "tt0068503", - "tt1760967", - "tt0057919", - "tt1602472", - "tt1594917", - "tt5175970", - "tt0059014", - "tt1440732", - "tt4198316", - "tt1042877", - "tt2061712", - "tt0060548", - "tt0049317", - "tt0456144", - "tt5859238", - "tt1767272", - "tt0358082", - "tt0186975", - "tt0465538", - "tt0795438", - "tt0800240", - "tt1920860", - "tt0120894", - "tt1111948", - "tt0493464", - "tt0482599", - "tt3104304", - "tt0416212", - "tt0949731", - "tt1023111", - "tt0981227", - "tt0864761", - "tt2646378", - "tt0852713", - "tt2192016", - "tt0078504", - "tt1073498", - "tt0831887", - "tt0104438", - "tt0029608", - "tt0483607", - "tt0420238", - "tt7529472", - "tt0430922", - "tt0286106", - "tt6645154", - "tt5894846", - "tt0084266", - "tt0817538", - "tt0342769", - "tt0106386", - "tt0048380", - "tt0031608", - "tt0424908", - "tt0995039", - "tt5078188", - "tt0469903", - "tt0033891", - "tt2246953", - "tt1791614", - "tt5882982", - "tt6295898", - "tt0057578", - "tt0119891", - "tt0074739", - "tt0280590", - "tt0145734", - "tt0164212", - "tt0481536", - "tt0087981", - "tt1393742", - "tt0333766", - "tt1129381", - "tt1122775", - "tt0142342", - "tt3063364", - "tt0098180", - "tt0076162", - "tt2114504", - "tt0942384", - "tt0041594", - "tt0057227", - "tt0047148", - "tt0120679", - "tt1231586", - "tt1801552", - "tt0186894", - "tt0048314", - "tt0133046", - "tt0437857", - "tt0274558", - "tt0114660", - "tt0031377", - "tt0301199", - "tt0124179", - "tt0880578", - "tt1315981", - "tt0067418", - "tt0064539", - "tt1583421", - "tt4034228", - "tt2494280", - "tt1323598", - "tt1153040", - "tt6000478", - "tt0095188", - "tt0368563", - "tt1114680", - "tt0117603", - "tt0273517", - "tt1122836", - "tt0091064", - "tt0114287", - "tt0490084", - "tt0075648", - "tt1072437", - "tt1046173", - "tt1238291", - "tt1667321", - "tt0022913", - "tt0032353", - "tt0087957", - "tt8362726", - "tt0875575", - "tt0025028", - "tt1324027", - "tt0067104", - "tt0091474", - "tt0080024", - "tt1303828", - "tt1274273", - "tt0819714", - "tt0071431", - "tt0028203", - "tt0049264", - "tt1226236", - "tt1134664", - "tt0105643", - "tt1200272", - "tt5099660", - "tt7284066", - "tt0054443", - "tt0103759", - "tt0036776", - "tt5427194", - "tt1295072", - "tt5314118", - "tt0374102", - "tt4839414", - "tt3696126", - "tt0031299", - "tt0082186", - "tt0042848", - "tt0264323", - "tt0053622", - "tt0470055", - "tt0144964", - "tt4080768", - "tt0022639", - "tt0028872", - "tt0028757", - "tt0026144", - "tt0039174", - "tt0057254", - "tt5253754", - "tt0102034", - "tt0120484", - "tt1043860", - "tt0073812", - "tt8743180", - "tt0085255", - "tt0049922", - "tt0837106", - "tt0089670", - "tt1210039", - "tt0085384", - "tt0050197", - "tt0101590", - "tt1198403", - "tt1453245", - "tt0028767", - "tt1247704", - "tt0110027", - "tt0038549", - "tt0138524", - "tt0066026", - "tt0086980", - "tt0092530", - "tt0402910", - "tt2413516", - "tt0475394", - "tt0311361", - "tt1319743", - "tt0051196", - "tt0066832", - "tt1642193", - "tt0056262", - "tt0204946", - "tt1079980", - "tt0103035", - "tt1017464", - "tt1349482", - "tt0867295", - "tt0976246", - "tt1252380", - "tt0079103", - "tt0299981", - "tt0108593", - "tt0151073", - "tt1156173", - "tt1509109", - "tt1381512", - "tt0844330", - "tt1179947", - "tt0063715", - "tt0096511", - "tt0107362", - "tt0265662", - "tt0175680", - "tt0108187", - "tt0120109", - "tt0117621", - "tt8327396", - "tt0097531", - "tt0063032", - "tt1157605", - "tt1546036", - "tt2561546", - "tt0111156", - "tt0120111", - "tt0114418", - "tt0117620", - "tt0427528", - "tt0200550", - "tt0130018", - "tt0110255", - "tt0108108", - "tt0117622", - "tt7704710", - "tt0304415", - "tt0114417", - "tt0120110", - "tt2009606", - "tt0119345", - "tt0497137", - "tt0111157", - "tt0033254", - "tt0136376", - "tt0108107", - "tt6039294", - "tt0098022", - "tt0111158", - "tt4685806", - "tt0114416", - "tt7029854", - "tt1181849", - "tt0480002", - "tt0067809", - "tt0062380", - "tt3302706", - "tt0082748", - "tt0048339", - "tt0083550", - "tt3181920", - "tt3593046", - "tt0060736", - "tt0059269", - "tt0062737", - "tt0963178", - "tt3175038", - "tt3155242", - "tt0076504", - "tt1055366", - "tt0099710", - "tt2597718", - "tt1031280", - "tt2404299", - "tt0105391", - "tt0349683", - "tt0078767", - "tt0078158", - "tt0382992", - "tt0074281", - "tt0808244", - "tt0480242", - "tt0365737", - "tt2145829", - "tt1198138", - "tt0073778", - "tt6335734", - "tt2802136", - "tt3704050", - "tt2178470", - "tt0095709", - "tt1135487", - "tt5871318", - "tt0398375", - "tt5670152", - "tt0080861", - "tt1402488", - "tt1082853", - "tt0396707", - "tt0316396", - "tt0910936", - "tt0120890", - "tt7027850", - "tt2402101", - "tt0492956", - "tt0489237", - "tt0486578", - "tt1117563", - "tt1247692", - "tt0292963", - "tt1318044", - "tt2937898", - "tt0473356", - "tt4607748", - "tt0821642", - "tt1095174", - "tt1486193", - "tt0795421", - "tt0841046", - "tt1045778", - "tt0811080", - "tt1226774", - "tt1034303", - "tt0988595", - "tt0467200", - "tt0858479", - "tt0096933", - "tt1033643", - "tt0445953", - "tt1135985", - "tt0857191", - "tt0366548", - "tt5466186", - "tt0457297", - "tt0951216", - "tt0791309", - "tt0481797", - "tt0074963", - "tt0489664", - "tt1014775", - "tt0432402", - "tt1155056", - "tt0059319", - "tt1068680", - "tt1075417", - "tt0467406", - "tt0806147", - "tt4967220", - "tt1129423", - "tt0358273", - "tt0780567", - "tt1313113", - "tt0954981", - "tt0058777", - "tt0988849", - "tt1023500", - "tt1235124", - "tt1082601", - "tt1121931", - "tt0808279", - "tt0758771", - "tt1563742", - "tt1700808", - "tt0423294", - "tt0457400", - "tt0029606", - "tt0815178", - "tt0495208", - "tt0479968", - "tt0758786", - "tt1130088", - "tt1877543", - "tt0768218", - "tt1282041", - "tt0844708", - "tt0901476", - "tt1093908", - "tt0420015", - "tt0870111", - "tt0780571", - "tt1637687", - "tt1323562", - "tt0435528", - "tt1020885", - "tt0393162", - "tt0373051", - "tt1554414", - "tt0375210", - "tt0074954", - "tt1127715", - "tt0381849", - "tt0865556", - "tt0964587", - "tt0839980", - "tt0452625", - "tt1226271", - "tt1131749", - "tt1151922", - "tt0426592", - "tt3302962", - "tt0246894", - "tt0051214", - "tt5545254", - "tt0307072", - "tt2186848", - "tt0416508", - "tt1314177", - "tt0896866", - "tt0284450", - "tt4940416", - "tt0760329", - "tt1182609", - "tt0072281", - "tt2901896", - "tt0050317", - "tt0094057", - "tt2049483", - "tt0429715", - "tt0393394", - "tt1764581", - "tt1990216", - "tt1291150", - "tt0790665", - "tt1331022", - "tt0800367", - "tt1151928", - "tt0902281", - "tt1045191", - "tt6735670", - "tt0094846", - "tt1090360", - "tt1109583", - "tt0076150", - "tt0063581", - "tt0477095", - "tt0057187", - "tt0090060", - "tt1076252", - "tt1183908", - "tt0096764", - "tt7479784", - "tt1185431", - "tt1731697", - "tt0410097", - "tt0087075", - "tt0207201", - "tt0799934", - "tt0480025", - "tt0372873", - "tt1300853", - "tt6399158", - "tt1126596", - "tt0379889", - "tt0445946", - "tt1294699", - "tt0403407", - "tt2467046", - "tt0054756", - "tt0067810", - "tt0335438", - "tt0455538", - "tt0465602", - "tt2518190", - "tt0402743", - "tt3748540", - "tt1068678", - "tt0104145", - "tt0418819", - "tt0219965", - "tt0097138", - "tt8269140", - "tt0099740", - "tt3144226", - "tt0115624", - "tt0068722", - "tt0787475", - "tt1020530", - "tt0416236", - "tt6170804", - "tt0057577", - "tt0499487", - "tt0385752", - "tt0070034", - "tt0137494", - "tt0223208", - "tt0449010", - "tt2039338", - "tt0037099", - "tt1093369", - "tt6772950", - "tt0478073", - "tt0901507", - "tt0037098", - "tt0355295", - "tt0427392", - "tt0292506", - "tt0092772", - "tt0099703", - "tt0035096", - "tt0785012", - "tt0032818", - "tt5805470", - "tt0103772", - "tt0092106", - "tt0427969", - "tt0093137", - "tt0409182", - "tt0074452", - "tt1185264", - "tt0416315", - "tt0446013", - "tt0425413", - "tt0443456", - "tt0210065", - "tt0461770", - "tt0079117", - "tt3037110", - "tt1901024", - "tt3079752", - "tt0419372", - "tt6904062", - "tt0056943", - "tt1172206", - "tt0093605", - "tt7875604", - "tt0188041", - "tt5194504", - "tt2382298", - "tt0102721", - "tt0057693", - "tt0087414", - "tt2784678", - "tt0073026", - "tt0340163", - "tt0061523", - "tt0078056", - "tt0095304", - "tt0094612", - "tt4976192", - "tt6596796", - "tt4494230", - "tt0100530", - "tt0072653", - "tt1276105", - "tt0762073", - "tt5958060", - "tt2796836", - "tt0073113", - "tt0042855", - "tt3480796", - "tt0091306", - "tt1664825", - "tt0454846", - "tt0821486", - "tt2420756", - "tt0065566", - "tt2172584", - "tt0068853", - "tt1661820", - "tt1403241", - "tt2693664", - "tt2073086", - "tt0077539", - "tt0054084", - "tt2924488", - "tt0100842", - "tt0082118", - "tt0053219", - "tt0330229", - "tt0454776", - "tt3344922", - "tt0064030", - "tt0060121", - "tt0098724", - "tt0105477", - "tt0110763", - "tt0053796", - "tt0114214", - "tt1999987", - "tt2193418", - "tt0049055", - "tt8159584", - "tt0338466", - "tt1174042", - "tt0282209", - "tt0260866", - "tt1876330", - "tt3199006", - "tt0384286", - "tt2276069", - "tt0488988", - "tt0117705", - "tt0029611", - "tt3688342", - "tt1839642", - "tt2404461", - "tt0878814", - "tt6989180", - "tt6850968", - "tt0104888", - "tt0065744", - "tt0081562", - "tt0060445", - "tt7167602", - "tt0066767", - "tt0069697", - "tt0067987", - "tt2006810", - "tt0236493", - "tt0102070", - "tt0246989", - "tt0066344", - "tt1726589", - "tt0089791", - "tt1233334", - "tt1312254", - "tt1435513", - "tt0080453", - "tt1130964", - "tt0105691", - "tt0305669", - "tt1212454", - "tt0097714", - "tt0045109", - "tt0111590", - "tt1296373", - "tt1227787", - "tt0117979", - "tt1674775", - "tt1407065", - "tt0126250", - "tt0345551", - "tt0062886", - "tt0098282", - "tt0160611", - "tt0117628", - "tt4983630", - "tt5495726", - "tt0200800", - "tt0101985", - "tt6288650", - "tt1450330", - "tt0112585", - "tt2075340", - "tt0027478", - "tt5432188", - "tt0304262", - "tt2661382", - "tt1538221", - "tt0104254", - "tt1213929", - "tt5517370", - "tt0056195", - "tt0104627", - "tt0104427", - "tt7160070", - "tt0064940", - "tt1720182", - "tt0431420", - "tt0800095", - "tt0498360", - "tt2359137", - "tt1315216", - "tt1064884", - "tt0905345", - "tt5140248", - "tt0108551", - "tt0118956", - "tt1894561", - "tt1921070", - "tt0093277", - "tt2023453", - "tt0269341", - "tt1270277", - "tt5846644", - "tt1196141", - "tt1368491", - "tt0811137", - "tt0036733", - "tt1022603", - "tt1650043", - "tt0051750", - "tt0069332", - "tt1449175", - "tt1628055", - "tt2905082", - "tt0120768", - "tt5083736", - "tt5119116", - "tt4341582", - "tt0051808", - "tt0049117", - "tt1015987", - "tt3168230", - "tt1386588", - "tt0859635", - "tt1078940", - "tt1613750", - "tt0120696", - "tt0404390", - "tt1242545", - "tt0402399", - "tt0065588", - "tt1135503", - "tt0913354", - "tt0158983", - "tt0410403", - "tt1465499", - "tt0252076", - "tt1236484", - "tt1533084", - "tt0494864", - "tt1142433", - "tt3894558", - "tt0811106", - "tt1106860", - "tt1241017", - "tt0796212", - "tt1037004", - "tt1294136", - "tt1131747", - "tt0093886", - "tt0155267", - "tt6802896", - "tt6791096", - "tt1027762", - "tt2137359", - "tt1487275", - "tt0061994", - "tt0100456", - "tt1884457", - "tt0082979", - "tt0883995", - "tt1397498", - "tt0299658", - "tt2707810", - "tt0072354", - "tt5104604", - "tt0385990", - "tt1523372", - "tt1063056", - "tt0412080", - "tt0441774", - "tt1228933", - "tt0912597", - "tt1104806", - "tt0823635", - "tt0365109", - "tt0922547", - "tt1010055", - "tt0765458", - "tt0887719", - "tt0461703", - "tt0119051", - "tt1392197", - "tt0037627", - "tt1125929", - "tt0070684", - "tt0013750", - "tt4026570", - "tt8013990", - "tt0492754", - "tt0384806", - "tt0901504", - "tt0098321", - "tt1205535", - "tt1286147", - "tt0063063", - "tt1146350", - "tt0116483", - "tt0959329", - "tt5729348", - "tt1181919", - "tt3517306", - "tt5270948", - "tt0115736", - "tt1303902", - "tt1421051", - "tt1275861", - "tt0416496", - "tt1320296", - "tt0997152", - "tt0493421", - "tt0104558", - "tt1092082", - "tt0493424", - "tt0896923", - "tt0079946", - "tt0118845", - "tt0464799", - "tt7372728", - "tt0165798", - "tt0059607", - "tt0079642", - "tt0091406", - "tt0875025", - "tt1606339", - "tt0052225", - "tt0358294", - "tt4554212", - "tt0078480", - "tt5247704", - "tt1130981", - "tt1393746", - "tt1535495", - "tt0365686", - "tt4515762", - "tt4537986", - "tt0103305", - "tt4432006", - "tt5752360", - "tt0067950", - "tt4060006", - "tt0094812", - "tt0412019", - "tt0112288", - "tt1250777", - "tt0095776", - "tt0338337", - "tt1202522", - "tt0910905", - "tt0066473", - "tt1374992", - "tt0387877", - "tt1098356", - "tt1248971", - "tt0818165", - "tt0087544", - "tt0120863", - "tt6610574", - "tt0263101", - "tt1121096", - "tt0119432", - "tt1650554", - "tt0974613", - "tt0906734", - "tt4586626", - "tt3465026", - "tt7781732", - "tt0077869", - "tt1227931", - "tt4287470", - "tt0499537", - "tt0073629", - "tt1107860", - "tt0367479", - "tt0065019", - "tt0940656", - "tt1181920", - "tt0464041", - "tt0099348", - "tt0300471", - "tt3986820", - "tt0079540", - "tt0351977", - "tt1103275", - "tt0375063", - "tt1098327", - "tt5198670", - "tt0887971", - "tt0962711", - "tt0294357", - "tt0190374", - "tt0240510", - "tt0861689", - "tt1186830", - "tt0113451", - "tt1119191", - "tt0042004", - "tt0184526", - "tt1666700", - "tt0298203", - "tt5737582", - "tt0824747", - "tt1134674", - "tt0300556", - "tt1567609", - "tt5737536", - "tt0922642", - "tt0065547", - "tt0302886", - "tt1147687", - "tt2333508", - "tt1326260", - "tt1176724", - "tt0058142", - "tt1001548", - "tt1735485", - "tt0438052", - "tt0070109", - "tt1288635", - "tt1478338", - "tt1658837", - "tt0810945", - "tt0479537", - "tt1045670", - "tt0149261", - "tt1001508", - "tt0068833", - "tt0103786", - "tt0076297", - "tt0066167", - "tt0247745", - "tt0065509", - "tt0048919", - "tt0435623", - "tt4652532", - "tt0113228", - "tt0055774", - "tt0107050", - "tt0069109", - "tt0065150", - "tt0473488", - "tt1034302", - "tt0343135", - "tt6298600", - "tt0106266", - "tt4377864", - "tt3652862", - "tt1187064", - "tt0819755", - "tt1259571", - "tt0123122", - "tt0070169", - "tt5700176", - "tt5851786", - "tt1045772", - "tt0055278", - "tt0059896", - "tt1325004", - "tt0057809", - "tt0099892", - "tt0051776", - "tt2268433", - "tt0327137", - "tt0059399", - "tt1286537", - "tt0086022", - "tt0060095", - "tt0116996", - "tt1313104", - "tt0049004", - "tt0285742", - "tt2950418", - "tt0052700", - "tt0050699", - "tt6958212", - "tt0099373", - "tt0351817", - "tt0053645", - "tt0096926", - "tt6964172", - "tt0090274", - "tt3748512", - "tt0058997", - "tt0060355", - "tt6073176", - "tt0068168", - "tt0106965", - "tt0072856", - "tt0109446", - "tt0093713", - "tt0058263", - "tt0093648", - "tt3611002", - "tt0055719", - "tt0384642", - "tt8179218", - "tt5360996", - "tt0410650", - "tt0141897", - "tt0112443", - "tt0110216", - "tt6513656", - "tt0085615", - "tt0071706", - "tt5137986", - "tt6078840", - "tt2531344", - "tt0055558", - "tt0064961", - "tt0062472", - "tt0099743", - "tt0097626", - "tt0084116", - "tt0072274", - "tt6157626", - "tt0116778", - "tt8049858", - "tt0059448", - "tt0069029", - "tt0779276", - "tt4640206", - "tt0844894", - "tt0070013", - "tt0068448", - "tt0327679", - "tt0056217", - "tt0061024", - "tt0120841", - "tt0082158", - "tt5569344", - "tt0243155", - "tt4669264", - "tt0171359", - "tt0783238", - "tt0048545", - "tt0087909", - "tt0098061", - "tt0372588", - "tt4463816", - "tt0425601", - "tt0051055", - "tt0862846", - "tt0062952", - "tt0097815", - "tt0249751", - "tt0120751", - "tt2673812", - "tt0899128", - "tt0264616", - "tt0119738", - "tt0049261", - "tt0088100", - "tt7375578", - "tt0063458", - "tt5795086", - "tt0434139", - "tt4538916", - "tt0068156", - "tt5473090", - "tt0080603", - "tt0452637", - "tt0093771", - "tt3303310", - "tt0158714", - "tt0102138", - "tt0065377", - "tt0420223", - "tt0057427", - "tt1893195", - "tt0349825", - "tt5616294", - "tt3700038", - "tt0069427", - "tt0425061", - "tt0118694", - "tt0188674", - "tt6423776", - "tt0064505", - "tt1482459", - "tt0074156", - "tt0116209", - "tt0338763", - "tt2381941", - "tt8004552", - "tt0065168", - "tt0190332", - "tt6403680", - "tt0266308", - "tt0074896", - "tt0271668", - "tt0804529", - "tt0065622", - "tt8081748", - "tt0078109", - "tt0004936", - "tt0276830", - "tt0042530", - "tt0310793", - "tt1074929", - "tt0052738", - "tt0007476", - "tt0048605", - "tt1465533", - "tt0182260", - "tt0295018", - "tt0819785", - "tt0424205", - "tt8577370", - "tt6071534", - "tt0054428", - "tt8457294", - "tt0097050", - "tt8474090", - "tt6039372", - "tt0970411", - "tt0027511", - "tt0093640", - "tt0108147", - "tt0067756", - "tt0249462", - "tt0089208", - "tt0062168", - "tt0071502", - "tt0105417", - "tt0245712", - "tt0804516", - "tt0099329", - "tt0317198", - "tt0870090", - "tt0056371", - "tt0451079", - "tt0060908", - "tt0067866", - "tt6269658", - "tt0114576", - "tt0056264", - "tt0078916", - "tt0095953", - "tt0073461", - "tt0078034", - "tt0253556", - "tt0085482", - "tt1190539", - "tt0080661", - "tt1582248", - "tt0913445", - "tt1456472", - "tt0101640", - "tt0073012", - "tt0833557", - "tt1521090", - "tt0070849", - "tt0069920", - "tt0310775", - "tt0102803", - "tt0084390", - "tt0056058", - "tt0485947", - "tt0064679", - "tt0092699", - "tt0768120", - "tt0127723", - "tt1302067", - "tt0845046", - "tt0235198", - "tt0103767", - "tt0080902", - "tt0409681", - "tt0096160", - "tt0078721", - "tt0056193", - "tt7167630", - "tt1612774", - "tt0074958", - "tt1054606", - "tt0332280", - "tt0069945", - "tt0059113", - "tt0076725", - "tt1666186", - "tt0109686", - "tt1046183", - "tt0063285", - "tt0113118", - "tt0055184", - "tt0097162", - "tt0067328", - "tt3297382", - "tt1281374", - "tt0181984", - "tt0120891", - "tt6017172", - "tt0427998", - "tt0301727", - "tt5518756", - "tt1512685", - "tt0138704", - "tt0800039", - "tt0081071", - "tt1134629", - "tt1337057", - "tt0138946", - "tt0005074", - "tt0006313", - "tt0048507", - "tt0120188", - "tt1356864", - "tt4399952", - "tt0006177", - "tt0878835", - "tt0005542", - "tt6367558", - "tt3356434", - "tt8483628", - "tt0049223", - "tt6957170", - "tt6791074", - "tt6957104", - "tt0089755", - "tt0116477", - "tt7130994", - "tt3408558", - "tt6528098", - "tt6977830", - "tt1584016", - "tt0073582", - "tt0066279", - "tt0054167", - "tt0396269", - "tt6444838", - "tt2198824", - "tt0832266", - "tt0117666", - "tt1193138", - "tt0074102", - "tt4279116", - "tt0108333", - "tt0089603", - "tt0120877", - "tt5001456", - "tt0496634", - "tt0074211", - "tt1674771", - "tt0808357", - "tt0264472", - "tt0775539", - "tt1024255", - "tt1010035", - "tt0896815", - "tt6654316", - "tt0093010", - "tt0251127", - "tt0104952", - "tt5181852", - "tt1492820", - "tt6131672", - "tt0163818", - "tt5715874", - "tt0088011", - "tt0169547", - "tt4465438", - "tt7205938", - "tt0088258", - "tt1523267", - "tt0108525", - "tt0074851", - "tt0057012", - "tt1124039", - "tt0492044", - "tt1261862", - "tt0914863", - "tt0976051", - "tt0112461", - "tt0970452", - "tt3152624", - "tt1318514", - "tt0117577", - "tt3450958", - "tt0133152", - "tt2397535", - "tt0316356", - "tt1032819", - "tt5655222", - "tt5814592", - "tt3053228", - "tt1381418", - "tt1458169", - "tt5657846", - "tt5649144", - "tt1646987", - "tt0907657", - "tt5715410", - "tt4857264", - "tt4633690", - "tt5420886", - "tt3203606", - "tt0104684", - "tt5476182", - "tt1301990", - "tt1536537", - "tt2674454", - "tt3413018", - "tt1139592", - "tt0105793", - "tt5462602", - "tt1596363", - "tt5721088", - "tt4899370", - "tt5442430", - "tt0349903", - "tt1758810", - "tt2582782", - "tt3564472", - "tt4131800", - "tt0313542", - "tt6304162", - "tt2582502", - "tt0496806", - "tt0114369", - "tt0472062", - "tt0118928", - "tt6538416", - "tt0097775", - "tt6063050", - "tt0357413", - "tt0077631", - "tt0332379", - "tt1399683", - "tt0462538", - "tt0289765", - "tt0460791", - "tt0087182", - "tt0119488", - "tt0449467", - "tt0402022", - "tt0361862", - "tt1306980", - "tt0432283", - "tt0084649", - "tt1190536", - "tt0181875", - "tt0066434", - "tt0120601", - "tt0375912", - "tt6147260", - "tt1139668", - "tt0125439", - "tt0106856", - "tt0093821", - "tt0115012", - "tt1155705", - "tt0110475", - "tt1535616", - "tt0067992", - "tt0108037", - "tt0073486", - "tt1860213", - "tt0233469", - "tt0384793", - "tt1279935", - "tt1186367", - "tt1460743", - "tt1463188", - "tt1734433", - "tt1442571", - "tt1135084", - "tt0309698", - "tt0335266", - "tt0959337", - "tt0434409", - "tt1538401", - "tt0464154", - "tt0962736", - "tt1345525", - "tt1336617", - "tt1185616", - "tt0783233", - "tt0472043", - "tt1152836", - "tt1329101", - "tt1263670", - "tt1038686", - "tt0050562", - "tt1058017", - "tt0092239", - "tt5657856", - "tt4799066", - "tt4400994", - "tt6288250", - "tt0088847", - "tt0211933", - "tt1638002", - "tt7388562", - "tt1588865", - "tt0101798", - "tt0989757", - "tt1592873", - "tt0020269", - "tt0290382", - "tt0337563", - "tt0473705", - "tt0974661", - "tt0221809", - "tt0870984", - "tt1282140", - "tt0311289", - "tt0120784", - "tt1530983", - "tt1704573", - "tt1285016", - "tt0095734", - "tt1465840", - "tt7689052", - "tt0804497", - "tt1191111", - "tt1690953", - "tt6480442", - "tt3469046", - "tt0116695", - "tt1323594", - "tt2381991", - "tt0889583", - "tt1735898", - "tt3332064", - "tt0887883", - "tt1637706", - "tt0822832", - "tt0494238", - "tt1320261", - "tt1013860", - "tt0763831", - "tt8466734", - "tt1010048", - "tt1389137", - "tt6288694", - "tt3447810", - "tt1727776", - "tt3344680", - "tt0362511", - "tt0383010", - "tt3760922", - "tt1131724", - "tt1389139", - "tt5770620", - "tt2504580", - "tt0054642", - "tt0189810", - "tt1091722", - "tt0873886", - "tt4901756", - "tt0383028", - "tt8231086", - "tt1522296", - "tt1570728", - "tt2058673", - "tt2024544", - "tt2788732", - "tt4266076", - "tt3522806", - "tt0960731", - "tt3553976", - "tt3638960", - "tt1261945", - "tt0455824", - "tt1343727", - "tt4550098", - "tt2278388", - "tt0443272", - "tt4799050", - "tt0120338", - "tt1082807", - "tt1895587", - "tt4846232", - "tt0490215", - "tt1014763", - "tt0790628", - "tt1798684", - "tt1206543", - "tt1821658", - "tt2194499", - "tt3488710", - "tt1024715", - "tt2141753", - "tt1000774", - "tt1959490", - "tt1615065", - "tt1397280", - "tt2446042", - "tt0089503", - "tt0964517", - "tt0936501", - "tt0401729", - "tt0790636", - "tt2334873", - "tt1620680", - "tt5226436", - "tt0090904", - "tt0063771", - "tt0060138", - "tt1041804", - "tt3746824", - "tt1211956", - "tt6135348", - "tt3811244", - "tt0808151", - "tt1979320", - "tt1473832", - "tt2199571", - "tt1440129", - "tt2296777", - "tt2361509", - "tt1706593", - "tt1707386", - "tt3062096", - "tt2582802", - "tt3691740", - "tt3874544", - "tt0918940", - "tt1798709", - "tt1016290", - "tt4196776", - "tt0834902", - "tt1693989", - "tt3631112", - "tt3292154", - "tt1772230", - "tt0120783", - "tt1880313", - "tt2011257", - "tt6574146", - "tt4063178", - "tt5360952", - "tt6864864", - "tt1857913", - "tt2948160", - "tt3647498", - "tt8525148", - "tt2316411", - "tt3410054", - "tt3797142", - "tt3105468", - "tt0328538", - "tt2528814", - "tt2938956", - "tt2097298", - "tt4023894", - "tt1726592", - "tt2025690", - "tt4385888", - "tt1560139", - "tt1666185", - "tt0120910", - "tt5143890", - "tt3705822", - "tt4287320", - "tt0102719", - "tt2072233", - "tt1800302", - "tt2649554", - "tt1355631", - "tt2638144", - "tt1472584", - "tt2241351", - "tt1661275", - "tt2597892", - "tt1528854", - "tt6959734", - "tt4572792", - "tt2872518", - "tt3901826", - "tt1619029", - "tt0471041", - "tt0787524", - "tt4411596", - "tt7583464", - "tt4302938", - "tt4501244", - "tt4565520", - "tt7026672", - "tt6164502", - "tt6450186", - "tt1446147", - "tt6678874", - "tt3014866", - "tt3717490", - "tt5884230", - "tt5816682", - "tt5719700", - "tt4986134", - "tt4682786", - "tt2763304", - "tt1293847", - "tt2671706", - "tt5001718", - "tt2034800", - "tt1730768", - "tt1212428", - "tt1469304", - "tt5301662", - "tt2720826", - "tt5962210", - "tt4540710", - "tt3881784", - "tt2776878", - "tt0404364", - "tt0424136", - "tt5825380", - "tt0080836", - "tt1726738", - "tt4481414", - "tt0156588", - "tt5175450", - "tt4565400", - "tt4348012", - "tt3963816", - "tt5689068", - "tt5231726", - "tt4382824", - "tt5442456", - "tt1493842", - "tt0820466", - "tt0271946", - "tt1864288", - "tt0087623", - "tt1895315", - "tt1933667", - "tt0083530", - "tt1545097", - "tt2331047", - "tt0105665", - "tt1637688", - "tt5065822", - "tt0080339", - "tt3722614", - "tt6138228", - "tt3319730", - "tt0075314", - "tt0107048", - "tt0070723", - "tt6264954", - "tt4429194", - "tt3569230", - "tt1535109", - "tt2884018", - "tt0083866", - "tt1935897", - "tt1504320", - "tt3721954", - "tt1229360", - "tt4622512", - "tt0113725", - "tt5666304", - "tt0072684", - "tt4978710", - "tt0887143", - "tt1254978", - "tt0006206", - "tt0408664", - "tt0112922", - "tt0068004", - "tt0060543", - "tt0057207", - "tt0015163", - "tt0464038", - "tt0058080", - "tt0255067", - "tt7829490", - "tt0092546", - "tt4276820", - "tt1152822", - "tt0123948", - "tt0115005", - "tt0165078", - "tt1300563", - "tt0129167", - "tt0756683", - "tt0099685", - "tt3774694", - "tt4698684", - "tt0110413", - "tt0071853", - "tt2378507", - "tt0097165", - "tt5973032", - "tt3949660", - "tt0790770", - "tt4054952", - "tt4795124", - "tt0141098", - "tt5247022", - "tt5635086", - "tt2080374", - "tt5752606", - "tt3464902", - "tt0107065", - "tt6788942", - "tt2547210", - "tt5168192", - "tt4178092", - "tt1307873", - "tt0944835", - "tt1307002", - "tt0790769", - "tt3322364", - "tt3462710", - "tt1910605", - "tt6193424", - "tt6303866", - "tt4651520", - "tt0475290", - "tt4624424", - "tt2404233", - "tt2980210", - "tt3714626", - "tt1988591", - "tt0110891", - "tt0478311", - "tt0452608", - "tt5974388", - "tt0111756", - "tt1833637", - "tt0100935", - "tt1013743", - "tt1500491", - "tt6857988", - "tt3072482", - "tt6318848", - "tt2057392", - "tt3502786", - "tt2120120", - "tt3463106", - "tt2239876", - "tt2361317", - "tt0799949", - "tt1878870", - "tt2674426", - "tt5805752", - "tt4218696", - "tt0491203", - "tt3401882", - "tt6018306", - "tt1935194", - "tt3922818", - "tt3531824", - "tt4776998", - "tt1648190", - "tt0110322", - "tt5622412", - "tt4680182", - "tt0054047", - "tt0285823", - "tt0805570", - "tt0120802", - "tt2005151", - "tt4572514", - "tt1748197", - "tt2062700", - "tt5390504", - "tt6359956", - "tt6133130", - "tt2568862", - "tt5592248", - "tt5716464", - "tt5322012", - "tt0780595", - "tt0100240", - "tt0243609", - "tt4701724", - "tt0077572", - "tt0098439", - "tt0063736", - "tt0265208", - "tt2636522", - "tt1731701", - "tt3721964", - "tt6737766", - "tt1792543", - "tt0409184", - "tt0243133", - "tt0200192", - "tt7263974", - "tt1645080", - "tt1806910", - "tt2316465", - "tt1638355", - "tt0467197", - "tt1800241", - "tt0243585", - "tt1617661", - "tt2562232", - "tt3470600", - "tt0075222", - "tt1964418", - "tt0359950", - "tt5749570", - "tt0099653", - "tt1231277", - "tt0100405", - "tt0130623", - "tt0164912", - "tt2196055", - "tt0094737", - "tt1407053", - "tt1935300", - "tt0120888", - "tt0091167", - "tt2872718", - "tt3170832", - "tt0113071", - "tt3615952", - "tt2872732", - "tt0075968", - "tt1392214", - "tt1270761", - "tt0066495", - "tt1425928", - "tt0131646", - "tt1512235", - "tt0098258", - "tt2297164", - "tt0227445", - "tt8452534", - "tt3344694", - "tt1787067", - "tt0053602", - "tt0101258", - "tt0417976", - "tt0091530", - "tt0203019", - "tt1037850", - "tt1598822", - "tt2390962", - "tt0486655", - "tt0485863", - "tt0107614", - "tt0076141", - "tt1823664", - "tt1748179", - "tt0033253", - "tt3327994", - "tt0111438", - "tt6599742", - "tt0069516", - "tt0041855", - "tt0025617", - "tt0026768", - "tt3896102", - "tt0042998", - "tt7243686", - "tt0109836", - "tt0033107", - "tt0299045", - "tt0032263", - "tt0033980", - "tt0032539", - "tt3700338", - "tt0031106", - "tt0021746", - "tt0122933", - "tt0031108", - "tt0031107", - "tt3212232", - "tt0349710", - "tt0212338", - "tt2249081", - "tt8448708", - "tt8452342", - "tt2191332", - "tt0970866", - "tt0029927", - "tt0780511", - "tt4700248", - "tt0040820", - "tt3677412", - "tt0985694", - "tt0360717", - "tt0120749", - "tt3238502", - "tt5641916", - "tt0116830", - "tt8383152", - "tt1886493", - "tt0119395", - "tt0976238", - "tt0470398", - "tt4656810", - "tt5275780", - "tt0947037", - "tt3625152", - "tt1202517", - "tt0476848", - "tt6336356", - "tt3346224", - "tt0366985", - "tt1816597", - "tt3829170", - "tt3622332", - "tt3609402", - "tt3058674", - "tt5639354", - "tt2493486", - "tt0065173", - "tt0066006", - "tt1137470", - "tt3847958", - "tt1663655", - "tt8370066", - "tt4776564", - "tt0076935", - "tt0925248", - "tt4616014", - "tt0305210", - "tt0084869", - "tt5822148", - "tt7479314", - "tt3783812", - "tt3658772", - "tt0043041", - "tt0122748", - "tt2118624", - "tt0034172", - "tt0075718", - "tt7883022", - "tt3903852", - "tt5039822", - "tt0067235", - "tt0159293", - "tt0123979", - "tt4382872", - "tt0077668", - "tt0088828", - "tt5370442", - "tt0082199", - "tt0200073", - "tt4872162", - "tt3832096", - "tt0114996", - "tt0448157", - "tt4530884", - "tt0112778", - "tt4862468", - "tt0027260", - "tt0074501", - "tt0031047", - "tt2237324", - "tt0066532", - "tt2332883", - "tt0049833", - "tt0360486", - "tt3850544", - "tt4642044", - "tt1214962", - "tt0095250", - "tt1502404", - "tt3286484", - "tt0356910", - "tt0093389", - "tt0118929", - "tt5049302", - "tt0119094", - "tt0187078", - "tt1410063", - "tt3381008", - "tt7392212", - "tt1864461", - "tt3027644", - "tt0120591", - "tt5904244", - "tt3838992", - "tt2048875", - "tt5639650", - "tt4444762", - "tt4969672", - "tt1190080", - "tt0112573", - "tt6964896", - "tt2537176", - "tt0077713", - "tt2918606", - "tt1996310", - "tt7451284", - "tt4935158", - "tt0080920", - "tt5842624", - "tt1544608", - "tt0034175", - "tt6802308", - "tt3563262", - "tt4687782", - "tt7203810", - "tt3113696", - "tt0051484", - "tt0019374", - "tt4578118", - "tt1242432", - "tt0027978", - "tt1935302", - "tt0194201", - "tt2669336", - "tt1515091", - "tt0085852", - "tt1470827", - "tt3450650", - "tt8184850", - "tt2555736", - "tt3172532", - "tt2637294", - "tt3850214", - "tt1869716", - "tt0120856", - "tt5052214", - "tt0161970", - "tt0082245", - "tt2870648", - "tt4104054", - "tt1579951", - "tt4874206", - "tt1594972", - "tt3471098", - "tt2582496", - "tt8152638", - "tt1437358", - "tt0945513", - "tt7672188", - "tt2624866", - "tt3142232", - "tt1531924", - "tt3882082", - "tt0105104", - "tt0770802", - "tt2717822", - "tt4824308", - "tt0450426", - "tt3717252", - "tt3089388", - "tt0101428", - "tt2978102", - "tt5836866", - "tt5471654", - "tt4957538", - "tt0080964", - "tt6456222", - "tt2822672", - "tt6892206", - "tt0386862", - "tt0044671", - "tt6786306", - "tt4451006", - "tt3174918", - "tt3321300", - "tt6015328", - "tt1524930", - "tt4347236", - "tt4818478", - "tt2393845", - "tt3064298", - "tt4477536", - "tt0903657", - "tt1534085", - "tt0287978", - "tt1959438", - "tt1243974", - "tt2334733", - "tt3675568", - "tt1735907", - "tt3294200", - "tt3832914", - "tt1178665", - "tt7048622", - "tt2140037", - "tt6293042", - "tt1641841", - "tt2510894", - "tt4594834", - "tt2752758", - "tt6003368", - "tt1371150", - "tt1002563", - "tt0060415", - "tt6951892", - "tt0443465", - "tt0896872", - "tt1506999", - "tt8342748", - "tt0116250", - "tt0028124", - "tt0062365", - "tt0056860", - "tt0030612", - "tt2625810", - "tt0028127", - "tt1762399", - "tt0343996", - "tt5831402", - "tt0119683", - "tt0377981", - "tt1488555", - "tt6183180", - "tt0028847", - "tt0030667", - "tt5532370", - "tt1464540", - "tt1592525", - "tt6799636", - "tt0068528", - "tt5547910", - "tt1727770", - "tt0120873", - "tt0119707", - "tt0120889", - "tt0129290", - "tt0120815", - "tt1219289", - "tt2084970", - "tt1153546", - "tt5117670", - "tt0102370", - "tt5059782", - "tt0383222", - "tt1568334", - "tt7642326", - "tt0099731", - "tt3919598", - "tt1093906", - "tt0098067", - "tt0101775", - "tt0492466", - "tt0354899", - "tt4986098", - "tt0099938", - "tt0099422", - "tt0090180", - "tt0110366", - "tt3741632", - "tt0071604", - "tt0476735", - "tt0113117", - "tt0112579", - "tt0107322", - "tt6086082", - "tt0104231", - "tt0102926", - "tt0112715", - "tt0082783", - "tt0107798", - "tt0265459", - "tt0140352", - "tt5710688", - "tt0090633", - "tt0057115", - "tt4652650", - "tt0084855", - "tt5085522", - "tt0134273", - "tt1171701", - "tt0133952", - "tt0488905", - "tt0368008", - "tt0218839", - "tt0075265", - "tt0314353", - "tt0825236", - "tt8271714", - "tt0376968", - "tt1599348", - "tt0151804", - "tt0183649", - "tt0266987", - "tt0080360", - "tt0462504", - "tt0078073", - "tt0118880", - "tt0200465", - "tt0159273", - "tt6987760", - "tt0087985", - "tt1924435", - "tt0062711", - "tt0084296", - "tt1178663", - "tt1728217", - "tt0377107", - "tt0172495", - "tt0117500", - "tt0048728", - "tt0256380", - "tt0112697", - "tt1987018", - "tt1582244", - "tt1724962", - "tt0151738", - "tt1462667", - "tt0095519", - "tt1646980", - "tt3477480", - "tt5283288", - "tt0397078", - "tt1124052", - "tt0160862", - "tt6752848", - "tt0414931", - "tt0074084", - "tt7086706", - "tt0109635", - "tt1382642", - "tt0470883", - "tt0090952", - "tt0113153", - "tt4799064", - "tt1587729", - "tt0098694", - "tt0370986", - "tt6427854", - "tt3121200", - "tt0261983", - "tt0065119", - "tt0096461", - "tt0499141", - "tt0112817", - "tt1345834", - "tt0882978", - "tt0165499", - "tt0437777", - "tt1232200", - "tt0095631", - "tt0073453", - "tt0114478", - "tt0190590", - "tt1694019", - "tt0055310", - "tt0068207", - "tt0076855", - "tt0047573", - "tt0066808", - "tt0076666", - "tt5294550", - "tt0110478", - "tt1290138", - "tt0341495", - "tt1716772", - "tt0078249", - "tt0353969", - "tt0101605", - "tt5154288", - "tt0437800", - "tt5796516", - "tt0104573", - "tt3553378", - "tt0485976", - "tt5934402", - "tt0101452", - "tt0110443", - "tt5856594", - "tt2261287", - "tt4537888", - "tt6013154", - "tt0089886", - "tt1412386", - "tt0104348", - "tt0059170", - "tt0106611", - "tt4779026", - "tt0124901", - "tt0064177", - "tt1330607", - "tt4731008", - "tt1310656", - "tt2364897", - "tt0113540", - "tt1611818", - "tt4669986", - "tt0062467", - "tt1590193", - "tt0073918", - "tt2382009", - "tt0482930", - "tt1686784", - "tt5073756", - "tt2076372", - "tt4444798", - "tt3278330", - "tt0101889", - "tt7448180", - "tt5645536", - "tt0995868", - "tt0101410", - "tt0498311", - "tt8295586", - "tt1937390", - "tt4351548", - "tt4552298", - "tt1055300", - "tt0100963", - "tt4257926", - "tt0053459", - "tt0097366", - "tt0090190", - "tt0015136", - "tt0996605", - "tt0097235", - "tt0110456", - "tt0062229", - "tt2017561", - "tt0035753", - "tt3326262", - "tt1813774", - "tt0088658", - "tt1259528", - "tt7311634", - "tt0057710", - "tt0041842", - "tt2133196", - "tt6149818", - "tt0047296", - "tt1185594", - "tt7133554", - "tt1336600", - "tt0105287", - "tt0096320", - "tt2056771", - "tt0114394", - "tt1330525", - "tt6143568", - "tt0386005", - "tt3066630", - "tt5625414", - "tt3543918", - "tt2169322", - "tt0112857", - "tt0058385", - "tt0095348", - "tt0082449", - "tt1681665", - "tt3165612", - "tt2608224", - "tt0080455", - "tt2925278", - "tt0434008", - "tt2332707", - "tt0073766", - "tt2544120", - "tt3395184", - "tt0092929", - "tt2142883", - "tt1216496", - "tt4702346", - "tt4192740", - "tt4003046", - "tt0369060", - "tt0374339", - "tt3235888", - "tt0102915", - "tt1424310", - "tt0338564", - "tt0089461", - "tt0098188", - "tt0107474", - "tt0084917", - "tt3672742", - "tt7128042", - "tt0446059", - "tt0094336", - "tt0452039", - "tt0081070", - "tt6170506", - "tt0088334", - "tt0054357", - "tt6595896", - "tt0106918", - "tt0448011", - "tt0120399", - "tt0165710", - "tt1730764", - "tt0089908", - "tt5503472", - "tt6315872", - "tt1567437", - "tt1764577", - "tt0110308", - "tt0114279", - "tt1865505", - "tt6900092", - "tt0102492", - "tt0401445", - "tt0090181", - "tt0076590", - "tt0119978", - "tt0209470", - "tt0068559", - "tt1441953", - "tt0070585", - "tt0089853", - "tt0199725", - "tt0060921", - "tt0338852", - "tt1809398", - "tt0268995", - "tt1082093", - "tt0050798", - "tt5629524", - "tt0062042", - "tt0038120", - "tt2515134", - "tt0365683", - "tt2655934", - "tt7860890", - "tt0245574", - "tt6101820", - "tt0024368", - "tt0056023", - "tt0853096", - "tt0091557", - "tt0882789", - "tt4050646", - "tt1138002", - "tt0057083", - "tt0109839", - "tt0944849", - "tt0046936", - "tt6573444", - "tt7130262", - "tt0212826", - "tt2937112", - "tt5707304", - "tt0878674", - "tt0089470", - "tt0087910", - "tt1055362", - "tt0027311", - "tt2058107", - "tt0038984", - "tt0068442", - "tt0103112", - "tt1492723", - "tt1951181", - "tt4494382", - "tt1714915", - "tt1976000", - "tt6089564", - "tt0081698", - "tt0090555", - "tt0104237", - "tt0080437", - "tt0164334", - "tt0092654", - "tt5598102", - "tt2636806", - "tt0050468", - "tt0376541", - "tt0120632", - "tt0120866", - "tt0104070", - "tt1391092", - "tt0082934", - "tt0070917", - "tt1450321", - "tt0115685", - "tt0057129", - "tt0107943", - "tt0117008", - "tt6516480", - "tt0080549", - "tt0044442", - "tt6083648", - "tt0230030", - "tt0091431", - "tt1300851", - "tt0144117", - "tt7521400", - "tt0099558", - "tt2005384", - "tt0108160", - "tt0080365", - "tt0084707", - "tt0059749", - "tt0086425", - "tt0061619", - "tt0089941", - "tt0101921", - "tt0110598", - "tt0074860", - "tt0099797", - "tt6977240", - "tt0088161", - "tt0110074", - "tt0113862", - "tt0246677", - "tt0070903", - "tt0070239", - "tt0059260", - "tt0097240", - "tt0419749", - "tt0092263", - "tt2084989", - "tt0120324", - "tt0119099", - "tt6135042", - "tt6333074", - "tt0046912", - "tt0119822", - "tt0309987", - "tt5860084", - "tt0051878", - "tt5678110", - "tt0118971", - "tt0120787", - "tt0166896", - "tt0471042", - "tt1636826", - "tt4560748", - "tt1645170", - "tt0092513", - "tt8111210", - "tt0970179", - "tt0093105", - "tt1448755", - "tt7106928", - "tt5935704", - "tt4953758", - "tt1966359", - "tt0268126", - "tt1397514", - "tt0367027", - "tt5565634", - "tt0098606", - "tt0071615", - "tt4205320", - "tt2073058", - "tt1226229", - "tt3454856", - "tt1031928", - "tt0120789", - "tt5304464", - "tt0055247", - "tt0443701", - "tt0117318", - "tt0099077", - "tt0120595", - "tt0114558", - "tt0096446", - "tt3889156", - "tt5841344", - "tt0080745", - "tt0878804", - "tt0081534", - "tt0475293", - "tt0780504", - "tt0103893", - "tt0120179", - "tt1981677", - "tt2848292", - "tt1334260", - "tt0096928", - "tt1549572", - "tt0810900", - "tt1041829", - "tt6125690", - "tt0119313", - "tt4058122", - "tt0086066", - "tt0301470", - "tt7211972", - "tt0313737", - "tt0477071", - "tt0259711", - "tt0117913", - "tt0375679", - "tt0985699", - "tt0962726", - "tt0072973", - "tt2051879", - "tt0104257", - "tt0765443", - "tt0477302", - "tt1401152", - "tt0099371", - "tt1210166", - "tt3005560", - "tt0086200", - "tt2007993", - "tt0317648", - "tt5294966", - "tt1336608", - "tt0942385", - "tt0070820", - "tt3845670", - "tt5757738", - "tt0104797", - "tt0296042", - "tt1014809", - "tt4765284", - "tt1291584", - "tt7963218", - "tt0446029", - "tt1454523", - "tt1433528", - "tt0478044", - "tt0244479", - "tt2106476", - "tt0066763", - "tt1522857", - "tt0494271", - "tt0061536", - "tt0039739", - "tt1291566", - "tt0975684", - "tt6814080", - "tt2948166", - "tt5162658", - "tt0063555", - "tt0117894", - "tt3230162", - "tt2531334", - "tt0106301", - "tt1031932", - "tt0815092", - "tt1598538", - "tt5711148", - "tt4551318", - "tt0090565", - "tt0338751", - "tt6153962", - "tt0073580", - "tt0050123", - "tt1422675", - "tt0892255", - "tt5751998", - "tt0285531", - "tt0879870", - "tt0364385", - "tt4915672", - "tt4687358", - "tt0374569", - "tt0367913", - "tt1133985", - "tt0106332", - "tt2334649", - "tt8095034", - "tt8140738", - "tt5208216", - "tt1632708", - "tt6684714", - "tt0083789", - "tt1560747", - "tt1714206", - "tt0081059", - "tt2268016", - "tt5146068", - "tt1866249", - "tt2800038", - "tt1663143", - "tt0453562", - "tt1413495", - "tt1517260", - "tt1204342", - "tt0480239", - "tt1985017", - "tt5739586", - "tt1234719", - "tt1840417", - "tt1862079", - "tt5782146", - "tt1521197", - "tt1702439", - "tt3568002", - "tt0770703", - "tt1586265", - "tt1601913", - "tt0089378", - "tt0075686", - "tt4591310", - "tt1758692", - "tt1717715", - "tt1582507", - "tt1407050", - "tt0145660", - "tt5461956", - "tt7017474", - "tt3338436", - "tt7877382", - "tt0328828", - "tt1605630", - "tt0295178", - "tt0163651", - "tt0141926", - "tt0060490", - "tt0256009", - "tt0267626", - "tt0053143", - "tt0276816", - "tt0100814", - "tt1053859", - "tt0118655", - "tt0368891", - "tt0089767", - "tt0482606", - "tt0116253", - "tt0181865", - "tt0105690", - "tt5208950", - "tt6440810", - "tt4451458", - "tt0259685", - "tt2825240", - "tt1057500", - "tt0086383", - "tt0327056", - "tt0101026", - "tt0186566", - "tt0114781", - "tt0068699", - "tt2358891", - "tt0099739", - "tt0091187", - "tt0079182", - "tt0058946", - "tt6772820", - "tt0244316", - "tt0095497", - "tt0067959", - "tt8049772", - "tt0061101", - "tt0120603", - "tt0838221", - "tt0042644", - "tt6791730", - "tt0265666", - "tt0038531", - "tt0102511", - "tt0088987", - "tt0089343", - "tt0037610", - "tt0822827", - "tt4468740", - "tt4536540", - "tt0483979", - "tt3813916", - "tt5540188", - "tt0055032", - "tt0257106", - "tt3130082", - "tt0175142", - "tt0464762", - "tt0117905", - "tt5700672", - "tt2690634", - "tt0795461", - "tt1727388", - "tt1758830", - "tt0362120", - "tt0059646", - "tt0073540", - "tt0306047", - "tt5700648", - "tt0082085", - "tt0057565", - "tt0128445", - "tt1440266", - "tt0050825", - "tt0107653", - "tt6572702", - "tt1859650", - "tt0080979", - "tt0056327", - "tt0052561", - "tt0090967", - "tt1045658", - "tt0929425", - "tt0080855", - "tt0056923", - "tt0104454", - "tt1990314", - "tt5291976", - "tt1389096", - "tt6425734", - "tt2234155", - "tt1659337", - "tt1931533", - "tt2070717", - "tt1538403", - "tt1931435", - "tt1893256", - "tt1817273", - "tt5997928", - "tt2392748", - "tt1559547", - "tt2076220", - "tt1272878", - "tt1649419", - "tt2101341", - "tt1540128", - "tt5629964", - "tt1321870", - "tt2229499", - "tt2005374", - "tt0076618", - "tt0318403", - "tt4847952", - "tt0083791", - "tt1446192", - "tt4513316", - "tt0120131", - "tt1648179", - "tt0240684", - "tt0082406", - "tt0401398", - "tt6413410", - "tt0441773", - "tt1001526", - "tt0166813", - "tt1302011", - "tt0448694", - "tt0481499", - "tt0892782", - "tt0116583", - "tt4292554", - "tt0146316", - "tt0371606", - "tt0279967", - "tt1326972", - "tt0119282", - "tt0230011", - "tt0389790", - "tt0910934", - "tt0053285", - "tt0275847", - "tt1220719", - "tt5001754", - "tt1386932", - "tt0114148", - "tt0457993", - "tt2204080", - "tt0425637", - "tt0328880", - "tt7235270", - "tt1109624", - "tt1641638", - "tt2140373", - "tt0344864", - "tt0048280", - "tt2495118", - "tt4768776", - "tt3402110", - "tt5910280", - "tt2333804", - "tt0067587", - "tt2177771", - "tt2042568", - "tt6220406", - "tt1571249", - "tt2910814", - "tt0060230", - "tt7994012", - "tt0068359", - "tt1091191", - "tt5606538", - "tt1824204", - "tt2239832", - "tt5207262", - "tt0416213", - "tt1086772", - "tt2193215", - "tt2980706", - "tt2582320", - "tt7342204", - "tt2557490", - "tt4992060", - "tt0036403", - "tt0115988", - "tt1179031", - "tt4068586", - "tt1335975", - "tt5706568", - "tt2463288", - "tt2297031", - "tt5287168", - "tt0325703", - "tt1929263", - "tt0307141", - "tt0068326", - "tt2223990", - "tt5669936", - "tt2291540", - "tt0086486", - "tt2980648", - "tt2203939", - "tt2402157", - "tt2582846", - "tt2209418", - "tt1355630", - "tt2318092", - "tt2125435", - "tt1686821", - "tt1980929", - "tt1277953", - "tt0101862", - "tt0101540", - "tt0351283", - "tt7250358", - "tt0061452", - "tt0479952", - "tt4730706", - "tt1321511", - "tt4975280", - "tt0114465", - "tt3772612", - "tt0397535", - "tt6304046", - "tt6741160", - "tt3011960", - "tt0120746", - "tt0021530", - "tt4173170", - "tt0066914", - "tt1726888", - "tt3721112", - "tt5039860", - "tt3469798", - "tt1134854", - "tt0114194", - "tt6397426", - "tt3909336", - "tt0091867", - "tt1961649", - "tt0333780", - "tt0386140", - "tt1600524", - "tt0418689", - "tt0380510", - "tt0089218", - "tt0117998", - "tt0983193", - "tt0099052", - "tt0088939", - "tt4866448", - "tt0104691", - "tt6442978", - "tt4577050", - "tt0498380", - "tt0112851", - "tt0113749", - "tt0469494", - "tt4995790", - "tt6263642", - "tt0274166", - "tt0110632", - "tt0051378", - "tt0120655", - "tt0118842", - "tt1077258", - "tt6333094", - "tt1007028", - "tt1320304", - "tt0305357", - "tt1646114", - "tt5452964", - "tt0013933", - "tt1634122", - "tt5189828", - "tt5534434", - "tt5811808", - "tt1937149", - "tt0109445", - "tt0106489", - "tt2819862", - "tt5462326", - "tt0107554", - "tt0087843", - "tt0272690", - "tt0217505", - "tt0203119", - "tt4900708", - "tt0208988", - "tt0103791", - "tt4217392", - "tt0307901", - "tt0221027", - "tt0399146", - "tt5342650", - "tt0102526", - "tt0108399", - "tt5698496", - "tt1230168", - "tt7131870", - "tt0117509", - "tt4733228", - "tt5159414", - "tt4901306", - "tt1649444", - "tt1245112", - "tt0104868", - "tt1649443", - "tt1038988", - "tt0116000", - "tt0203009", - "tt1486185", - "tt0120791", - "tt3501112", - "tt0074094", - "tt4072418", - "tt0191397", - "tt0120762", - "tt2866360", - "tt5450084", - "tt4291600", - "tt1781896", - "tt3567666", - "tt2090465", - "tt2446980", - "tt6273736", - "tt1352824", - "tt3540136", - "tt4694544", - "tt0395169", - "tt3554178", - "tt7056732", - "tt5722508", - "tt6599340", - "tt0128442", - "tt4016934", - "tt0120917", - "tt7245176", - "tt2174750", - "tt1403865", - "tt6878038", - "tt1753383", - "tt0049782", - "tt3579698", - "tt0033408", - "tt0817177", - "tt0066580", - "tt2252760", - "tt0112471", - "tt1542344", - "tt0024865", - "tt3415992", - "tt0082198", - "tt0054890", - "tt5834660", - "tt0362270", - "tt4283962", - "tt0046000", - "tt0035238", - "tt0053601", - "tt6083388", - "tt6772678", - "tt0094898", - "tt1024648", - "tt0133240", - "tt0109040", - "tt0115491", - "tt2082221", - "tt2172934", - "tt0071411", - "tt0050212", - "tt0056541", - "tt0044687", - "tt0120855", - "tt5866930", - "tt0112281", - "tt6777338", - "tt0061652", - "tt0203953", - "tt0383717", - "tt0042449", - "tt0059737", - "tt0040613", - "tt0063325", - "tt0062974", - "tt3859272", - "tt0025039", - "tt0051732", - "tt0059453", - "tt0264464", - "tt0486292", - "tt0035770", - "tt0059039", - "tt2191701", - "tt0479521", - "tt0061525", - "tt0083717", - "tt1754656", - "tt0054390", - "tt0037593", - "tt6203570", - "tt7525942", - "tt4842814", - "tt0052702", - "tt0049170", - "tt0910555", - "tt0374887", - "tt0059298", - "tt0042369", - "tt0101695", - "tt0039615", - "tt0085529", - "tt0319728", - "tt6039532", - "tt0054447", - "tt1621817", - "tt4273292", - "tt0381681", - "tt5082418", - "tt1095196", - "tt0071999", - "tt5084170", - "tt4518962", - "tt0071635", - "tt0039155", - "tt0119217", - "tt4005402", - "tt1375670", - "tt0054330", - "tt0046065", - "tt4465564", - "tt0063688", - "tt1499658", - "tt2381111", - "tt2869728", - "tt2170439", - "tt6553448", - "tt3174376", - "tt2965466", - "tt2653370", - "tt4527224", - "tt0243794", - "tt5066056", - "tt0064546", - "tt4805316", - "tt0049531", - "tt2989326", - "tt0089960", - "tt1390411", - "tt4438848", - "tt2347411", - "tt0166924", - "tt7272984", - "tt2567026", - "tt2865120", - "tt4412268", - "tt4303340", - "tt2567038", - "tt3553442", - "tt1712261", - "tt0106697", - "tt2180579", - "tt0062384", - "tt5912024", - "tt0114388", - "tt4383288", - "tt4587656", - "tt5560592", - "tt4536768", - "tt2387495", - "tt2253939", - "tt7924820", - "tt0106677", - "tt4729560", - "tt1212419", - "tt0075675", - "tt0162346", - "tt0097368", - "tt0099005", - "tt5126922", - "tt0083618", - "tt0405159", - "tt1663661", - "tt0092965", - "tt0104036", - "tt6237612", - "tt5633706", - "tt6511676", - "tt5999770", - "tt1205489", - "tt0058182", - "tt1018765", - "tt0078841", - "tt0274812", - "tt0087175", - "tt0093437", - "tt0067065", - "tt0122690", - "tt0061722", - "tt0119874", - "tt5023260", - "tt0810819", - "tt6836772", - "tt0368794", - "tt5226984", - "tt5133392", - "tt2101473", - "tt0120660", - "tt6835836", - "tt3715320", - "tt3481634", - "tt7944378", - "tt3548978", - "tt1691916", - "tt1340800", - "tt3321470", - "tt1212450", - "tt2083383", - "tt0119174", - "tt1028528", - "tt0479143", - "tt3419906", - "tt7914148", - "tt1083452", - "tt4486986", - "tt0107977", - "tt0116040", - "tt0329774", - "tt0108550", - "tt5342904", - "tt0084602", - "tt0080929", - "tt0295701", - "tt0079817", - "tt0088944", - "tt0367959", - "tt1616194", - "tt0060942", - "tt0100507", - "tt1852955", - "tt4364862", - "tt0445922", - "tt3037164", - "tt0840361", - "tt0810988", - "tt0071359", - "tt1869347", - "tt3963350", - "tt2852470", - "tt1821694", - "tt0816462", - "tt0882977", - "tt0859163", - "tt1700841", - "tt0094332", - "tt1245526", - "tt2287993", - "tt0482571", - "tt0816556", - "tt1060277", - "tt4837062", - "tt0120616", - "tt4827986", - "tt1691917", - "tt0209163", - "tt1974419", - "tt7934862", - "tt4721124", - "tt1670345", - "tt2823054", - "tt4600952", - "tt0293662", - "tt0072869", - "tt5980798", - "tt0846062", - "tt1659619", - "tt0419773", - "tt6333058", - "tt0800320", - "tt0063026", - "tt1907668", - "tt1253864", - "tt4467626", - "tt0376479", - "tt3416532", - "tt1637725", - "tt5446858", - "tt2975578", - "tt0034890", - "tt4094724", - "tt0338526", - "tt0023362", - "tt1462425", - "tt0107750", - "tt0379786", - "tt0056662", - "tt1195486", - "tt3313054", - "tt2184339", - "tt0207023", - "tt4781612", - "tt0313443", - "tt1588173", - "tt1489889", - "tt2033295", - "tt0454848", - "tt6213284", - "tt0145681", - "tt2935476", - "tt2140379", - "tt0121844", - "tt0249792", - "tt0002160", - "tt0002354", - "tt0277844", - "tt0121532", - "tt0277882", - "tt0277571", - "tt0041828", - "tt0121531", - "tt2401878", - "tt0266841", - "tt0427309", - "tt0277687", - "tt2566858", - "tt3045616", - "tt4164282", - "tt2463842", - "tt1189340", - "tt5716438", - "tt3960412", - "tt0243685", - "tt2126235", - "tt0112740", - "tt0965661", - "tt0453467", - "tt5034474", - "tt0174856", - "tt0963988", - "tt3100274", - "tt3652616", - "tt4778988", - "tt1090199", - "tt1096949", - "tt1095169", - "tt5638094", - "tt1093378", - "tt0080780", - "tt6217804", - "tt1096889", - "tt0118883", - "tt0097523", - "tt2582498", - "tt0109707", - "tt7262026", - "tt0477080", - "tt7266916", - "tt0085959", - "tt1343092", - "tt0443676", - "tt4669186", - "tt7807486", - "tt2937696", - "tt2692904", - "tt0091605", - "tt1772264", - "tt2674358", - "tt3229488", - "tt7879372", - "tt4977530", - "tt2238032", - "tt1626146", - "tt0076500", - "tt0082736", - "tt0247380", - "tt4470266", - "tt0057935", - "tt0049869", - "tt0063633", - "tt0076208", - "tt0049706", - "tt0102377", - "tt0108338", - "tt0111254", - "tt0035258", - "tt0031995", - "tt0030202", - "tt0071381", - "tt0054102", - "tt0027700", - "tt0027421", - "tt3505820", - "tt3735302", - "tt5742932", - "tt2153194", - "tt5279042", - "tt0064806", - "tt0068230", - "tt0117951", - "tt0031593", - "tt4468634", - "tt6168848", - "tt4367350", - "tt1653665", - "tt2375589", - "tt3687898", - "tt5570086", - "tt6497898", - "tt5842218", - "tt2547584", - "tt1741273", - "tt2910904", - "tt2304933", - "tt1412528", - "tt3316948", - "tt3095734", - "tt1995390", - "tt0171719", - "tt1526933", - "tt3685554", - "tt0139654", - "tt1673434", - "tt0085407", - "tt0059255", - "tt2852196", - "tt0366627", - "tt0408306", - "tt0134119", - "tt0081751", - "tt5153236", - "tt3797868", - "tt1164980", - "tt3758172", - "tt0113497", - "tt1737253", - "tt7670216", - "tt3387266", - "tt0086856", - "tt1292566", - "tt0100758", - "tt0988045", - "tt3921314", - "tt0382625", - "tt0245844", - "tt5722234", - "tt0071877", - "tt2347569", - "tt0096734", - "tt1790885", - "tt1763303", - "tt0107207", - "tt1037705", - "tt3266284", - "tt6204340", - "tt5091530", - "tt0120689", - "tt1291570", - "tt0098437", - "tt1327194", - "tt0319262", - "tt0052556", - "tt7660662", - "tt2215363", - "tt5925968", - "tt1129435", - "tt0097108", - "tt0058985", - "tt3304524", - "tt7833652", - "tt0055852", - "tt0057066", - "tt2788710", - "tt0113870", - "tt1823672", - "tt2126355", - "tt6998122", - "tt0050483", - "tt0054367", - "tt1245492", - "tt0079781", - "tt3327140", - "tt3717804", - "tt0063098", - "tt0054934", - "tt0816442", - "tt0038303", - "tt0048239", - "tt0064081", - "tt0127745", - "tt0435651", - "tt0116357", - "tt1600196", - "tt1872194", - "tt1791528", - "tt7479144", - "tt2436386", - "tt1972571", - "tt1204975", - "tt0247443", - "tt2312718", - "tt2334879", - "tt2883512", - "tt2387559", - "tt5702566", - "tt2369135", - "tt1921064", - "tt0429493", - "tt0409847", - "tt4877122", - "tt0472181", - "tt5719108", - "tt0443543", - "tt1172991", - "tt0898367", - "tt5862312", - "tt0454921", - "tt0814314", - "tt3110958", - "tt0317740", - "tt6484982", - "tt3335606", - "tt0066921", - "tt0046268", - "tt0120586", - "tt0093058", - "tt1032755", - "tt1543004", - "tt1724970", - "tt2249278", - "tt0110912", - "tt0105695", - "tt4845940", - "tt6353716", - "tt0208092", - "tt0120735", - "tt0368394", - "tt0081398", - "tt0114814", - "tt0105323", - "tt0407887", - "tt0209144", - "tt0414993", - "tt0113277", - "tt0399201", - "tt6957816", - "tt0371724", - "tt0278504", - "tt0337728", - "tt4726636", - "tt4000936", - "tt0162222", - "tt0822854", - "tt0238380", - "tt0094642", - "tt0887912", - "tt0106519", - "tt7692814", - "tt1680140", - "tt0115738", - "tt0443706", - "tt6054650", - "tt6260218", - "tt0311113", - "tt7136060", - "tt7396738", - "tt2357263", - "tt7643644", - "tt6719524", - "tt7642558", - "tt0056937", - "tt0077530", - "tt0970416", - "tt0452694", - "tt0124344", - "tt0115759", - "tt0244244", - "tt1650062", - "tt1386703", - "tt4248606", - "tt6150944", - "tt0102059", - "tt5613834", - "tt6151042", - "tt0137523", - "tt3758852", - "tt1439572", - "tt6243612", - "tt0822847", - "tt1731141", - "tt0433035", - "tt7546978", - "tt7587242", - "tt7421814", - "tt7281126", - "tt1527186", - "tt7661684", - "tt6294806", - "tt7621886", - "tt7754866", - "tt4397094", - "tt0063800", - "tt0448134", - "tt0035211", - "tt1385826", - "tt0288112", - "tt0044072", - "tt2361150", - "tt0379199", - "tt0120472", - "tt0045332", - "tt0050915", - "tt5931932", - "tt7445510", - "tt2094761", - "tt0119415", - "tt0059846", - "tt0497419", - "tt0406732", - "tt2435458", - "tt0079757", - "tt3725224", - "tt3291860", - "tt1718127", - "tt0053610", - "tt0067109", - "tt0938666", - "tt0062975", - "tt0093855", - "tt0090766", - "tt0050347", - "tt5073018", - "tt5254612", - "tt1284976", - "tt5503688", - "tt5431082", - "tt4141292", - "tt7518466", - "tt5863634", - "tt2112127", - "tt4933782", - "tt3654972", - "tt4181782", - "tt5485456", - "tt5239710", - "tt2024354", - "tt2936884", - "tt6284950", - "tt7624712", - "tt1356395", - "tt2294853", - "tt3707514", - "tt1659612", - "tt6041312", - "tt7264080", - "tt5971724", - "tt6645614", - "tt5156770", - "tt2306775", - "tt5690244", - "tt6148090", - "tt0115751", - "tt0056592", - "tt0097719", - "tt6132948", - "tt0362227", - "tt2884206", - "tt0081455", - "tt0168629", - "tt0119558", - "tt0064116", - "tt2072025", - "tt0097223", - "tt0088846", - "tt0090685", - "tt6764496", - "tt3101386", - "tt5231402", - "tt0272018", - "tt3296908", - "tt7312940", - "tt2153156", - "tt2153202", - "tt5265662", - "tt5974460", - "tt6057032", - "tt2153228", - "tt3505774", - "tt5588850", - "tt5905008", - "tt6791000", - "tt7440948", - "tt3202366", - "tt6496834", - "tt4734102", - "tt5327922", - "tt5294796", - "tt0246002", - "tt4919764", - "tt6634400", - "tt7143370", - "tt6634378", - "tt2153096", - "tt2140619", - "tt0075066", - "tt1051907", - "tt0054331", - "tt5074504", - "tt2153208", - "tt0059183", - "tt6635042", - "tt0056687", - "tt0072081", - "tt0063227", - "tt2369411", - "tt0055824", - "tt1286126", - "tt0066579", - "tt2331053", - "tt2614684", - "tt0057413", - "tt0078163", - "tt7647000", - "tt0077745", - "tt7588790", - "tt7030432", - "tt0074486", - "tt0052311", - "tt0100054", - "tt2306745", - "tt1341167", - "tt1434443", - "tt7647010", - "tt0381270", - "tt6622186", - "tt1668016", - "tt1247690", - "tt7030416", - "tt3892078", - "tt5652606", - "tt7385392", - "tt6678950", - "tt3794028", - "tt0221073", - "tt0460740", - "tt0079261", - "tt0124718", - "tt1723811", - "tt5813916", - "tt0118201", - "tt0091993", - "tt1592281", - "tt6567002", - "tt0050419", - "tt0146882", - "tt0281358", - "tt5737882", - "tt0063823", - "tt3765378", - "tt2580888", - "tt6055082", - "tt0993842", - "tt1375539", - "tt5369578", - "tt1686328", - "tt0120824", - "tt0098577", - "tt0086567", - "tt1126618", - "tt5845712", - "tt0107002", - "tt5705058", - "tt1032751", - "tt0455590", - "tt4685554", - "tt6381328", - "tt5891492", - "tt6142314", - "tt6433246", - "tt0808399", - "tt0465551", - "tt6334884", - "tt5298558", - "tt3530328", - "tt3950072", - "tt6852616", - "tt2262315", - "tt3549206", - "tt4607228", - "tt7258556", - "tt4244162", - "tt1667353", - "tt0119879", - "tt0082813", - "tt1563738", - "tt2221784", - "tt4685428", - "tt1728620", - "tt1606389", - "tt3459674", - "tt1454029", - "tt1568911", - "tt1826590", - "tt6233882", - "tt6104206", - "tt0105523", - "tt6605352", - "tt6647576", - "tt5692622", - "tt0482088", - "tt7038614", - "tt0405629", - "tt0035055", - "tt0034415", - "tt5806688", - "tt0313911", - "tt0035535", - "tt0049656", - "tt0410285", - "tt0084293", - "tt0053131", - "tt0050549", - "tt5971316", - "tt0037884", - "tt5678148", - "tt0057864", - "tt0202471", - "tt0120661", - "tt7427404", - "tt0066875", - "tt0078077", - "tt4826674", - "tt0073835", - "tt0010281", - "tt0399934", - "tt6398464", - "tt4677924", - "tt0010600", - "tt0009893", - "tt4420704", - "tt7126746", - "tt0050383", - "tt1708459", - "tt1980209", - "tt0072431", - "tt0337909", - "tt0076578", - "tt0097262", - "tt0870162", - "tt5129510", - "tt3036548", - "tt1738342", - "tt0064040", - "tt1549920", - "tt0091326", - "tt0055302", - "tt1904996", - "tt1781769", - "tt2294449", - "tt0118884", - "tt0047892", - "tt1830748", - "tt6156336", - "tt3454066", - "tt1814643", - "tt3425332", - "tt3405276", - "tt1830633", - "tt6105934", - "tt6874406", - "tt2931140", - "tt0367478", - "tt2088950", - "tt0067900", - "tt4728386", - "tt5078656", - "tt0054821", - "tt0103251", - "tt4287434", - "tt1975249", - "tt0110428", - "tt1130988", - "tt3910736", - "tt0298296", - "tt4733640", - "tt4994564", - "tt0097659", - "tt0844760", - "tt0119013", - "tt3687872", - "tt0095583", - "tt1667903", - "tt7201382", - "tt4865436", - "tt1714209", - "tt1334553", - "tt3619772", - "tt0094082", - "tt0181876", - "tt0382810", - "tt0087622", - "tt4777584", - "tt5025550", - "tt4741774", - "tt6545506", - "tt0422093", - "tt1478800", - "tt1825006", - "tt4685750", - "tt0910860", - "tt0476240", - "tt0295700", - "tt0120631", - "tt2346048", - "tt7071348", - "tt3800520", - "tt1587707", - "tt5321174", - "tt1264895", - "tt3210602", - "tt5578538", - "tt3612032", - "tt5748392", - "tt1111918", - "tt0117658", - "tt4356480", - "tt1545112", - "tt6322922", - "tt5729066", - "tt6762430", - "tt2444354", - "tt6254808", - "tt1785635", - "tt0104391", - "tt5357556", - "tt0889573", - "tt1361558", - "tt1910501", - "tt5991206", - "tt0070643", - "tt1945084", - "tt6536772", - "tt2186665", - "tt6536776", - "tt6536766", - "tt4865642", - "tt2048877", - "tt3674140", - "tt2960994", - "tt6599216", - "tt0845439", - "tt4596052", - "tt2100573", - "tt0305224", - "tt4768926", - "tt3971764", - "tt4076916", - "tt7204400", - "tt2610194", - "tt4291590", - "tt1140852", - "tt3077150", - "tt0436697", - "tt0418763", - "tt5938234", - "tt3699508", - "tt1258197", - "tt5258904", - "tt1890472", - "tt0102750", - "tt4943620", - "tt3823116", - "tt1017451", - "tt1578118", - "tt5317914", - "tt0350258", - "tt3179568", - "tt1655420", - "tt1935156", - "tt2167266", - "tt0094651", - "tt0384696", - "tt0088323", - "tt3663798", - "tt2016940", - "tt0283877", - "tt1217213", - "tt4720702", - "tt3995140", - "tt1753813", - "tt1216491", - "tt4557208", - "tt4301600", - "tt1972779", - "tt2398231", - "tt3105454", - "tt0106375", - "tt4511200", - "tt3849816", - "tt1361842", - "tt4126568", - "tt0052131", - "tt2967006", - "tt2458776", - "tt4695708", - "tt1791682", - "tt3014666", - "tt4417906", - "tt3713166", - "tt0085461", - "tt0049314", - "tt2378281", - "tt1709143", - "tt0050379", - "tt2756032", - "tt2714900", - "tt0049130", - "tt0049844", - "tt2262227", - "tt3726122", - "tt2870756", - "tt5878476", - "tt3395582", - "tt0058075", - "tt0058764", - "tt0059398", - "tt3804528", - "tt2017038", - "tt0056810", - "tt0056183", - "tt0050414", - "tt5278832", - "tt1720293", - "tt0103150", - "tt2263058", - "tt0052126", - "tt0120879", - "tt3483174", - "tt0082294", - "tt1674773", - "tt0054064", - "tt2366450", - "tt0279730", - "tt3889036", - "tt2637848", - "tt0095662", - "tt0238546", - "tt0060148", - "tt0061585", - "tt4738174", - "tt2545118", - "tt0068323", - "tt0061395", - "tt0070898", - "tt2032557", - "tt0091480", - "tt1531901", - "tt0874863", - "tt0091288", - "tt2130321", - "tt1602613", - "tt2070862", - "tt3696876", - "tt1595656", - "tt0054189", - "tt1772925", - "tt2381335", - "tt0265087", - "tt2103264", - "tt3124292", - "tt3983902", - "tt3738706", - "tt0065063", - "tt0138853", - "tt2925388", - "tt4054004", - "tt4764370", - "tt3205438", - "tt0058230", - "tt0095513", - "tt4073616", - "tt5487524", - "tt5262792", - "tt0094597", - "tt7467368", - "tt0443295", - "tt0077766", - "tt5024050", - "tt0097125", - "tt2385006", - "tt0114048", - "tt0482463", - "tt2967226", - "tt5078214", - "tt2721744", - "tt3863552", - "tt0426911", - "tt6349302", - "tt3214286", - "tt4074342", - "tt0118755", - "tt4789160", - "tt2361042", - "tt0079641", - "tt4515684", - "tt2661644", - "tt4703048", - "tt3896738", - "tt4044364", - "tt1712192", - "tt4382330", - "tt2315582", - "tt2122340", - "tt0098354", - "tt6255746", - "tt0082247", - "tt1422122", - "tt2317337", - "tt4459982", - "tt0085327", - "tt4504626", - "tt0100934", - "tt2027140", - "tt0385002", - "tt0066817", - "tt0093512", - "tt0095031", - "tt1028532", - "tt6680792", - "tt1698652", - "tt0118661", - "tt0023649", - "tt7070496", - "tt7321514", - "tt2704752", - "tt2492916", - "tt1787791", - "tt0070666", - "tt1329454", - "tt0091738", - "tt2449638", - "tt1337061", - "tt0337921", - "tt3354486", - "tt0284363", - "tt7315648", - "tt0396913", - "tt0328589", - "tt0196565", - "tt0416320", - "tt3225558", - "tt1785645", - "tt0385567", - "tt3118746", - "tt2417712", - "tt5003186", - "tt0080736", - "tt1785287", - "tt0117103", - "tt0057023", - "tt0057491", - "tt6003326", - "tt0102266", - "tt3954660", - "tt0059390", - "tt0063385", - "tt0381942", - "tt0064621", - "tt4334266", - "tt1978549", - "tt2937158", - "tt0087233", - "tt7321372", - "tt0063231", - "tt6153126", - "tt0486946", - "tt0427312", - "tt7162324", - "tt0050993", - "tt0418038", - "tt1318001", - "tt0198844", - "tt2343621", - "tt5427450", - "tt7281464", - "tt3905060", - "tt0377092", - "tt0028615", - "tt1740710", - "tt5239972", - "tt2428378", - "tt6857258", - "tt7281972", - "tt1302169", - "tt0063642", - "tt5564148", - "tt0055614", - "tt0239234", - "tt2125608", - "tt0244975", - "tt0056044", - "tt0072417", - "tt0054601", - "tt6618178", - "tt1727790", - "tt1838722", - "tt1216520", - "tt1388359", - "tt0109759", - "tt0209463", - "tt0079652", - "tt4464394", - "tt0162650", - "tt2380333", - "tt0069745", - "tt2574698", - "tt3651326", - "tt2172071", - "tt1807036", - "tt5563330", - "tt0054665", - "tt0195631", - "tt0071634", - "tt0061313", - "tt2569298", - "tt5116644", - "tt0045505", - "tt0073096", - "tt5874398", - "tt0061786", - "tt5794440", - "tt0042429", - "tt0038853", - "tt0085894", - "tt0075209", - "tt2416376", - "tt0097051", - "tt0031503", - "tt5974624", - "tt2069915", - "tt7174160", - "tt0063684", - "tt4935212", - "tt0063634", - "tt2367504", - "tt4937114", - "tt6076700", - "tt7242700", - "tt0059563", - "tt0046451", - "tt2140465", - "tt4914382", - "tt6628790", - "tt1077097", - "tt0138658", - "tt6196406", - "tt2633076", - "tt4405736", - "tt3089904", - "tt1467391", - "tt0054407", - "tt0087034", - "tt3263718", - "tt1891769", - "tt5468728", - "tt6581990", - "tt3530170", - "tt5240878", - "tt0912593", - "tt4775814", - "tt1745686", - "tt0048317", - "tt2565974", - "tt7020272", - "tt5599692", - "tt4927984", - "tt2325741", - "tt4528454", - "tt2618216", - "tt1640145", - "tt5419742", - "tt5278598", - "tt4357368", - "tt5078326", - "tt2905422", - "tt2963866", - "tt3601350", - "tt3263548", - "tt5680678", - "tt3449588", - "tt0082370", - "tt0048021", - "tt1339660", - "tt7174708", - "tt7065674", - "tt4900156", - "tt5647758", - "tt0225818", - "tt3828466", - "tt6691862", - "tt0075939", - "tt6104058", - "tt1426362", - "tt4911780", - "tt0100234", - "tt6095004", - "tt2082517", - "tt4705522", - "tt1292643", - "tt6156476", - "tt0120899", - "tt0075788", - "tt0108624", - "tt3766432", - "tt2586118", - "tt0055809", - "tt4908430", - "tt0056396", - "tt4362764", - "tt5328350", - "tt2953762", - "tt2538610", - "tt5639178", - "tt5921524", - "tt6568188", - "tt1280558", - "tt1423888", - "tt4392266", - "tt0055728", - "tt5106400", - "tt6327400", - "tt5231812", - "tt1260051", - "tt0093371", - "tt7121548", - "tt0053050", - "tt1289396", - "tt5456104", - "tt4849438", - "tt0047563", - "tt4954522", - "tt1278027", - "tt7073614", - "tt1730762", - "tt6782486", - "tt3630228", - "tt6914742", - "tt2848070", - "tt4364860", - "tt5304874", - "tt1937419", - "tt5859090", - "tt3918776", - "tt5212042", - "tt2652948", - "tt6652566", - "tt2107651", - "tt6338374", - "tt5949946", - "tt6131148", - "tt6017594", - "tt5283754", - "tt6948128", - "tt6273004", - "tt6970518", - "tt5096536", - "tt6386526", - "tt6436056", - "tt5902138", - "tt5458812", - "tt5364518", - "tt6839248", - "tt0079944", - "tt3346986", - "tt1702927", - "tt0070790", - "tt6027102", - "tt5733172", - "tt5140182", - "tt1701105", - "tt0050096", - "tt2474310", - "tt1205487", - "tt3953260", - "tt4880926", - "tt4923042", - "tt5278578", - "tt2386140", - "tt2889050", - "tt0046839", - "tt1702924", - "tt0089221", - "tt6392526", - "tt5747168", - "tt0049521", - "tt6575062", - "tt6089002", - "tt0028033", - "tt3019796", - "tt3544014", - "tt6966552", - "tt0044681", - "tt3319844", - "tt0046911", - "tt6426928", - "tt0069293", - "tt0065531", - "tt5633600", - "tt4622818", - "tt5326364", - "tt5945286", - "tt6822400", - "tt0069994", - "tt1618447", - "tt0050634", - "tt0085180", - "tt0079820", - "tt6981066", - "tt5449214", - "tt6680270", - "tt5614984", - "tt2679018", - "tt0096163", - "tt6917656", - "tt4483402", - "tt4217446", - "tt1224366", - "tt4022534", - "tt6973942", - "tt0475984", - "tt1503776", - "tt6794398", - "tt0126261", - "tt0276015", - "tt6145762", - "tt3243464", - "tt5126042", - "tt0104400", - "tt5134870", - "tt6279726", - "tt6722142", - "tt3032090", - "tt1024214", - "tt5946552", - "tt4215828", - "tt7042082", - "tt0285112", - "tt3430548", - "tt4935954", - "tt2414196", - "tt5029608", - "tt0119038", - "tt5864680", - "tt2091258", - "tt6990734", - "tt1106884", - "tt0096161", - "tt0119416", - "tt5328802", - "tt1826627", - "tt0834899", - "tt6521852", - "tt0205872", - "tt0087942", - "tt5001772", - "tt0113691", - "tt0102469", - "tt0105078", - "tt1105355", - "tt0050301", - "tt3529664", - "tt3198544", - "tt2364757", - "tt0047585", - "tt4042814", - "tt1144551", - "tt1986164", - "tt0079777", - "tt2446632", - "tt1258154", - "tt6906362", - "tt0113463", - "tt0113999", - "tt1910649", - "tt2776704", - "tt0107523", - "tt0059300", - "tt1027873", - "tt0104892", - "tt0050704", - "tt0324127", - "tt5811338", - "tt0098042", - "tt0790618", - "tt0491109", - "tt0069528", - "tt0490114", - "tt0099816", - "tt0118174", - "tt0117283", - "tt0114345", - "tt0816436", - "tt0068990", - "tt0180052", - "tt0297037", - "tt0177068", - "tt0070481", - "tt0084268", - "tt1715352", - "tt0066181", - "tt3132714", - "tt0490196", - "tt1274296", - "tt5074352", - "tt1503149", - "tt0460989", - "tt0398378", - "tt0056249", - "tt0118044", - "tt1161064", - "tt0338095", - "tt0417415", - "tt0803057", - "tt1869653", - "tt2702348", - "tt2004419", - "tt1621444", - "tt1153053", - "tt2357453", - "tt0168172", - "tt0156323", - "tt0480269", - "tt0349260", - "tt0109951", - "tt0108170", - "tt0120142", - "tt1833084", - "tt2032452", - "tt0116606", - "tt1319716", - "tt4125710", - "tt0066963", - "tt0119080", - "tt1743334", - "tt0128239", - "tt0112854", - "tt1467134", - "tt0482374", - "tt0080936", - "tt0144715", - "tt0106833", - "tt0052545", - "tt2368635", - "tt0119053", - "tt1842356", - "tt0176426", - "tt0387057", - "tt2280302", - "tt0375735", - "tt5370828", - "tt0103800", - "tt0078812", - "tt0104030", - "tt0115678", - "tt0094900", - "tt0171049", - "tt2357788", - "tt3244512", - "tt0420740", - "tt0790590", - "tt1834234", - "tt2444946", - "tt0168987", - "tt0834941", - "tt2991472", - "tt0269095", - "tt2461104", - "tt1520496", - "tt1247703", - "tt0250224", - "tt0052427", - "tt0101318", - "tt0086582", - "tt0106868", - "tt0061135", - "tt0155388", - "tt2788332", - "tt0318850", - "tt0092210", - "tt0463963", - "tt0117718", - "tt0091554", - "tt1144539", - "tt5761022", - "tt1886542", - "tt1817287", - "tt1531930", - "tt0066064", - "tt5133128", - "tt2370718", - "tt0429177", - "tt2034085", - "tt1462411", - "tt1580346", - "tt2201221", - "tt1618399", - "tt0069097", - "tt2625598", - "tt2075341", - "tt1727357", - "tt0452671", - "tt0795403", - "tt0106350", - "tt0064045", - "tt0112887", - "tt1754351", - "tt0064041", - "tt2234025", - "tt0105572", - "tt0099951", - "tt0172396", - "tt2245195", - "tt0075765", - "tt0119837", - "tt1468381", - "tt4518176", - "tt0446016", - "tt0110557", - "tt0120598", - "tt5606986", - "tt0816545", - "tt0341115", - "tt5377624", - "tt0110684", - "tt0418131", - "tt0057191", - "tt0783234", - "tt0367631", - "tt6806654", - "tt0047840", - "tt0410400", - "tt0109965", - "tt0804452", - "tt0101371", - "tt0367790", - "tt2805748", - "tt0058456", - "tt0119304", - "tt0120836", - "tt0276033", - "tt0257850", - "tt2848252", - "tt2217510", - "tt3407894", - "tt4079902", - "tt2974454", - "tt0203975", - "tt2081311", - "tt0443524", - "tt4266910", - "tt0072229", - "tt5747466", - "tt0117791", - "tt0094318", - "tt0204250", - "tt0478829", - "tt0082853", - "tt0484111", - "tt0105790", - "tt5186714", - "tt0108265", - "tt0093044", - "tt2072045", - "tt0108565", - "tt0092834", - "tt1753666", - "tt0092944", - "tt2697586", - "tt2363870", - "tt2124926", - "tt3228302", - "tt1571565", - "tt0220100", - "tt0301684", - "tt3842724", - "tt1404702", - "tt1822325", - "tt1536458", - "tt1766085", - "tt0112302", - "tt0437325", - "tt0091706", - "tt3875548", - "tt0095496", - "tt3566812", - "tt1722560", - "tt0245046", - "tt2608030", - "tt1507351", - "tt0104550", - "tt0118064", - "tt0117991", - "tt0050240", - "tt0034241", - "tt1500117", - "tt4660736", - "tt0100813", - "tt0161743", - "tt1479534", - "tt1723659", - "tt3528498", - "tt0441869", - "tt1746565", - "tt5730882", - "tt0239612", - "tt2193450", - "tt0247586", - "tt0102882", - "tt1318056", - "tt1454700", - "tt1958088", - "tt2246961", - "tt2189858", - "tt6217830", - "tt1584747", - "tt0080448", - "tt0847221", - "tt2639464", - "tt0964529", - "tt0290657", - "tt5937962", - "tt2706570", - "tt0071855", - "tt0080768", - "tt0059168", - "tt0081107", - "tt2756644", - "tt0060400", - "tt4246894", - "tt4082068", - "tt3037028", - "tt0215704", - "tt0084582", - "tt0092610", - "tt0352526", - "tt0098350", - "tt5909128", - "tt2515656", - "tt1756615", - "tt1699223", - "tt2773382", - "tt0063551", - "tt5813250", - "tt4936450", - "tt1242881", - "tt0411323", - "tt4216908", - "tt5081606", - "tt3123116", - "tt6218048", - "tt6264596", - "tt0222020", - "tt6034048", - "tt5264056", - "tt4434676", - "tt0090993", - "tt4077768", - "tt2036388", - "tt0009915", - "tt5227794", - "tt3954924", - "tt6878486", - "tt6877360", - "tt5211742", - "tt3564794", - "tt3374966", - "tt5643380", - "tt6509214", - "tt5186236", - "tt3341582", - "tt0119361", - "tt5546192", - "tt0035977", - "tt5141060", - "tt6194774", - "tt0071206", - "tt4026562", - "tt0214373", - "tt4305148", - "tt2076959", - "tt6843596", - "tt0276886", - "tt4779036", - "tt4000670", - "tt2094034", - "tt3513180", - "tt3818022", - "tt0073198", - "tt3759568", - "tt2670524", - "tt4120176", - "tt0051005", - "tt4466550", - "tt5918926", - "tt2234428", - "tt0065999", - "tt0047429", - "tt2075192", - "tt6736290", - "tt4835086", - "tt0053931", - "tt6634930", - "tt0036301", - "tt0069393", - "tt0038687", - "tt0487171", - "tt0079219", - "tt5909140", - "tt0035565", - "tt4286432", - "tt4205560", - "tt0067648", - "tt2526898", - "tt0421045", - "tt3718904", - "tt3790012", - "tt4643580", - "tt0867270", - "tt2555652", - "tt3783422", - "tt3398436", - "tt0048791", - "tt5003654", - "tt5840392", - "tt2401099", - "tt5525782", - "tt0069404", - "tt0240736", - "tt6436202", - "tt1510988", - "tt3418972", - "tt1300579", - "tt5307698", - "tt5140244", - "tt6814052", - "tt3283708", - "tt3907394", - "tt3529052", - "tt4952536", - "tt3560166", - "tt3355152", - "tt2847238", - "tt1911553", - "tt5206098", - "tt2184335", - "tt2852394", - "tt3427008", - "tt4119420", - "tt5792762", - "tt1413496", - "tt0040552", - "tt0120018", - "tt0045470", - "tt0228711", - "tt5674842", - "tt0052199", - "tt4497142", - "tt2554856", - "tt5263116", - "tt0109731", - "tt5039028", - "tt6793206", - "tt5688480", - "tt2798456", - "tt3527166", - "tt6793140", - "tt3469674", - "tt5876322", - "tt0361596", - "tt3597510", - "tt4699388", - "tt0066265", - "tt0140751", - "tt3966942", - "tt4004366", - "tt4731148", - "tt4210112", - "tt6410016", - "tt3175888", - "tt0066227", - "tt0366905", - "tt0067699", - "tt1628777", - "tt5525310", - "tt5263876", - "tt1434937", - "tt0226204", - "tt1860226", - "tt4659056", - "tt0181365", - "tt2339351", - "tt5069074", - "tt2317002", - "tt5476094", - "tt4919232", - "tt1989435", - "tt3078932", - "tt1877740", - "tt2008627", - "tt6720442", - "tt0869994", - "tt0050535", - "tt6545154", - "tt0096863", - "tt5461606", - "tt5923040", - "tt6285552", - "tt2820008", - "tt0051544", - "tt1473063", - "tt1653911", - "tt6212346", - "tt5034444", - "tt3413044", - "tt4162992", - "tt0389557", - "tt1545759", - "tt0337566", - "tt4818662", - "tt2953528", - "tt6405354", - "tt0815490", - "tt0070568", - "tt0043409", - "tt4456270", - "tt4422164", - "tt1322333", - "tt0944834", - "tt4156152", - "tt0350124", - "tt0379976", - "tt3849370", - "tt6068960", - "tt0236388", - "tt0070506", - "tt0450188", - "tt4144332", - "tt1135989", - "tt5834036", - "tt4130944", - "tt2124782", - "tt2622390", - "tt0060410", - "tt2217861", - "tt5912052", - "tt0031737", - "tt1723108", - "tt5059126", - "tt2149798", - "tt4138004", - "tt5295802", - "tt4834762", - "tt5227140", - "tt2719094", - "tt3440132", - "tt4505208", - "tt3254656", - "tt6449274", - "tt0168192", - "tt0000417", - "tt1978447", - "tt0120380", - "tt3330774", - "tt0350811", - "tt0196871", - "tt0129871", - "tt6314842", - "tt2316801", - "tt0119784", - "tt3974202", - "tt5198868", - "tt4920094", - "tt6550440", - "tt3221544", - "tt2442526", - "tt0070106", - "tt5302150", - "tt4331970", - "tt5232490", - "tt3196692", - "tt5591458", - "tt2369497", - "tt1233328", - "tt0077613", - "tt0091847", - "tt1124001", - "tt5119048", - "tt3019620", - "tt1227381", - "tt3716530", - "tt0433588", - "tt1843283", - "tt4283358", - "tt1390415", - "tt6212586", - "tt0493361", - "tt0461688", - "tt0049490", - "tt3430416", - "tt3792960", - "tt3006756", - "tt4235476", - "tt0845980", - "tt0039840", - "tt0059798", - "tt4328642", - "tt3318956", - "tt4460176", - "tt3215842", - "tt5270832", - "tt3876702", - "tt1726861", - "tt3043252", - "tt2273673", - "tt5850440", - "tt0042235", - "tt0050112", - "tt4590930", - "tt2711898", - "tt2180335", - "tt2568074", - "tt3358998", - "tt4239726", - "tt0478197", - "tt1510989", - "tt3671676", - "tt0121804", - "tt2077908", - "tt5446610", - "tt2499022", - "tt6392454", - "tt0146247", - "tt0120711", - "tt0146455", - "tt0404254", - "tt1459012", - "tt0871427", - "tt0258100", - "tt0106336", - "tt0280453", - "tt0804539", - "tt0256276", - "tt0191173", - "tt1814614", - "tt3108318", - "tt1091994", - "tt1957913", - "tt0191996", - "tt0227173", - "tt2339647", - "tt1754513", - "tt4609262", - "tt1725969", - "tt2461726", - "tt1570970", - "tt1733147", - "tt2631862", - "tt6439776", - "tt1871241", - "tt3808298", - "tt3102356", - "tt5346890", - "tt0420835", - "tt1270090", - "tt2139725", - "tt0053716", - "tt2399752", - "tt1734580", - "tt2932498", - "tt4228810", - "tt2837296", - "tt0330099", - "tt2321195", - "tt0304356", - "tt1754733", - "tt0202402", - "tt0203929", - "tt0105811", - "tt0117927", - "tt0117924", - "tt1675313", - "tt2214864", - "tt0078736", - "tt0340380", - "tt0284330", - "tt3366000", - "tt0066844", - "tt0102095", - "tt0864959", - "tt1299366", - "tt1213864", - "tt6486190", - "tt2478442", - "tt0836662", - "tt0091613", - "tt0286077", - "tt0457270", - "tt6076802", - "tt0997278", - "tt0085446", - "tt4719158", - "tt2704816", - "tt0099073", - "tt6393222", - "tt5968910", - "tt0144546", - "tt0068920", - "tt3032060", - "tt1208711", - "tt0949379", - "tt5278466", - "tt4718770", - "tt4917622", - "tt0790775", - "tt5022872", - "tt4935084", - "tt4645368", - "tt2672052", - "tt2296747", - "tt3703836", - "tt0383139", - "tt0043301", - "tt0075343", - "tt2245119", - "tt2088748", - "tt5936692", - "tt4494956", - "tt1872102", - "tt1872101", - "tt4746484", - "tt4630550", - "tt1826610", - "tt2262345", - "tt4741170", - "tt0112379", - "tt3531516", - "tt5038358", - "tt1267319", - "tt5024728", - "tt4338434", - "tt2091893", - "tt0086330", - "tt4266370", - "tt0206420", - "tt6484426", - "tt6435824", - "tt5219814", - "tt4882964", - "tt0088392", - "tt0476031", - "tt0119718", - "tt1863192", - "tt0083824", - "tt0420901", - "tt0799954", - "tt5104332", - "tt2193151", - "tt2484120", - "tt4877264", - "tt3946792", - "tt5128712", - "tt0310149", - "tt0092591", - "tt0162866", - "tt0192035", - "tt1713440", - "tt5333110", - "tt1764240", - "tt0287969", - "tt3808342", - "tt5248042", - "tt0113247", - "tt4400174", - "tt1715876", - "tt4193400", - "tt4093410", - "tt5590890", - "tt4663992", - "tt0202832", - "tt0086420", - "tt4156998", - "tt4009232", - "tt0045327", - "tt2632340", - "tt2833580", - "tt3664008", - "tt3357772", - "tt5471480", - "tt6342940", - "tt4795692", - "tt0350194", - "tt3830162", - "tt5824900", - "tt5310410", - "tt0280170", - "tt1068962", - "tt2294917", - "tt4175148", - "tt6393248", - "tt5133308", - "tt4327752", - "tt0123633", - "tt4875456", - "tt0244203", - "tt5779056", - "tt3146360", - "tt0064699", - "tt3080844", - "tt1594503", - "tt0960750", - "tt1879030", - "tt4048168", - "tt0411272", - "tt6323506", - "tt1259014", - "tt3654918", - "tt5544700", - "tt3889642", - "tt0104495", - "tt1854535", - "tt4648986", - "tt4857514", - "tt5934788", - "tt5217256", - "tt1823126", - "tt0061765", - "tt0100263", - "tt5214744", - "tt1832382", - "tt4426656", - "tt1798141", - "tt2302701", - "tt6149120", - "tt4996022", - "tt3326350", - "tt2112129", - "tt4308714", - "tt5278592", - "tt5042426", - "tt4823524", - "tt4585660", - "tt0800058", - "tt2281069", - "tt2668800", - "tt3922320", - "tt5734138", - "tt0993789", - "tt4334482", - "tt2991368", - "tt5249484", - "tt0057543", - "tt2370138", - "tt0047674", - "tt1783780", - "tt3100904", - "tt1642248", - "tt3022458", - "tt6212344", - "tt4837232", - "tt2011971", - "tt1964624", - "tt5096628", - "tt3673000", - "tt4482858", - "tt4838334", - "tt3920572", - "tt4976984", - "tt3399112", - "tt2393917", - "tt1794943", - "tt5774012", - "tt1836869", - "tt6174822", - "tt5127398", - "tt4132250", - "tt3838728", - "tt2932530", - "tt5458792", - "tt1714827", - "tt4558256", - "tt2665200", - "tt1821362", - "tt0137439", - "tt0097106", - "tt5917118", - "tt0077469", - "tt6167646", - "tt5254640", - "tt4428762", - "tt3954294", - "tt5815434", - "tt0038668", - "tt2046090", - "tt4471630", - "tt5805350", - "tt0275947", - "tt5344230", - "tt4110400", - "tt2400311", - "tt3210984", - "tt2327319", - "tt1697075", - "tt2938230", - "tt6104992", - "tt6026094", - "tt5989054", - "tt2527190", - "tt5252624", - "tt2118737", - "tt5735410", - "tt2882854", - "tt4948452", - "tt0181530", - "tt0286038", - "tt3247286", - "tt2070776", - "tt4459770", - "tt2979094", - "tt1283479", - "tt4426182", - "tt1019938", - "tt0004670", - "tt0009611", - "tt0004311", - "tt0010747", - "tt0004693", - "tt1876454", - "tt4730986", - "tt0012304", - "tt0115928", - "tt0013486", - "tt0006497", - "tt0004280", - "tt0004288", - "tt0004282", - "tt0004189", - "tt1890426", - "tt0003805", - "tt0004277", - "tt0003863", - "tt0004101", - "tt0009018", - "tt4809458", - "tt4836736", - "tt4001526", - "tt0056291", - "tt0003679", - "tt6233688", - "tt0100303", - "tt0010057", - "tt0003758", - "tt5086438", - "tt2712884", - "tt2869762", - "tt5278868", - "tt4231686", - "tt0124307", - "tt6208524", - "tt0211259", - "tt6107852", - "tt0015361", - "tt1856057", - "tt4161074", - "tt4063314", - "tt3949216", - "tt1863201", - "tt1130993", - "tt5505532", - "tt4356466", - "tt4229948", - "tt3882000", - "tt0335345", - "tt1192629", - "tt1486608", - "tt2168882", - "tt4328666", - "tt0246135", - "tt4734082", - "tt5639464", - "tt2292820", - "tt0075683", - "tt6136300", - "tt2543698", - "tt3498590", - "tt0284691", - "tt3443788", - "tt0015064", - "tt0114571", - "tt4439852", - "tt1680136", - "tt2866676", - "tt0414923", - "tt0012651", - "tt1179025", - "tt0370904", - "tt0066192", - "tt5673884", - "tt0121500", - "tt4838440", - "tt0189070", - "tt0467671", - "tt3809478", - "tt1509271", - "tt0795554", - "tt6186362", - "tt4551882", - "tt0087797", - "tt0112366", - "tt5375206", - "tt3547682", - "tt0065989", - "tt1261051", - "tt6156350", - "tt0113425", - "tt5540898", - "tt3003470", - "tt0119014", - "tt2239126", - "tt6166250", - "tt4604496", - "tt4686692", - "tt3915966", - "tt3433632", - "tt3268030", - "tt0068924", - "tt4377942", - "tt3790720", - "tt4483460", - "tt5275866", - "tt4644836", - "tt5931726", - "tt4190906", - "tt0056663", - "tt5599206", - "tt1276419", - "tt5076518", - "tt4444446", - "tt0836700", - "tt0046022", - "tt2053425", - "tt0138464", - "tt2069948", - "tt5167942", - "tt2931148", - "tt5007908", - "tt3877718", - "tt3865614", - "tt0084357", - "tt3185602", - "tt2716802", - "tt0075163", - "tt1779076", - "tt3480110", - "tt1531049", - "tt4883758", - "tt1709694", - "tt3453648", - "tt4467714", - "tt3462852", - "tt3402078", - "tt2953182", - "tt4717746", - "tt0312633", - "tt4024210", - "tt5272042", - "tt0108500", - "tt5900592", - "tt0075322", - "tt0120882", - "tt2994832", - "tt0110604", - "tt0470869", - "tt0274789", - "tt0301215", - "tt0058203", - "tt0150251", - "tt0893401", - "tt0286214", - "tt0085912", - "tt0111793", - "tt5952332", - "tt2806390", - "tt3631282", - "tt4396074", - "tt4331718", - "tt2072137", - "tt0122159", - "tt0072241", - "tt2842732", - "tt3096858", - "tt4527254", - "tt3569978", - "tt0960067", - "tt1522203", - "tt1849818", - "tt2308583", - "tt3063072", - "tt3282308", - "tt0879843", - "tt1600419", - "tt0060305", - "tt0065093", - "tt1853548", - "tt0008377", - "tt0007761", - "tt5563932", - "tt4377952", - "tt0010221", - "tt0023563", - "tt0008975", - "tt3891218", - "tt0091534", - "tt0009123", - "tt0309926", - "tt4921846", - "tt0008112", - "tt0093986", - "tt0009899", - "tt3699676", - "tt0092822", - "tt0002423", - "tt5851572", - "tt3443616", - "tt5280984", - "tt2698966", - "tt4370784", - "tt2942620", - "tt4316846", - "tt2621784", - "tt2921338", - "tt6047684", - "tt5051356", - "tt4460598", - "tt3474994", - "tt3791302", - "tt3811986", - "tt0095467", - "tt3863484", - "tt4794512", - "tt0095468", - "tt1442223", - "tt0034210", - "tt0033133", - "tt5889946", - "tt0020442", - "tt0481552", - "tt5116314", - "tt0407776", - "tt3122842", - "tt0033091", - "tt0018742", - "tt3141912", - "tt0034180", - "tt0032598", - "tt0031734", - "tt0031667", - "tt0031793", - "tt5233106", - "tt0032889", - "tt0230238", - "tt0815122", - "tt0023955", - "tt0104882", - "tt3877674", - "tt3951730", - "tt3764122", - "tt1954931", - "tt4358230", - "tt3505682", - "tt0358456", - "tt3904770", - "tt0147060", - "tt0034540", - "tt0152580", - "tt0847474", - "tt4428814", - "tt1853620", - "tt2323264", - "tt0147143", - "tt0034925", - "tt0142349", - "tt0007819", - "tt3215168", - "tt0096412", - "tt0008874", - "tt4085084", - "tt0009466", - "tt0008523", - "tt4269194", - "tt0010155", - "tt0009389", - "tt0096056", - "tt0218611", - "tt0054343", - "tt3293250", - "tt0116275", - "tt0249973", - "tt0820986", - "tt0181275", - "tt0102213", - "tt0088961", - "tt1440309", - "tt0004194", - "tt1683051", - "tt0059831", - "tt0038855", - "tt3444616", - "tt5229082", - "tt0381842", - "tt0207801", - "tt0351920", - "tt0351638", - "tt0005677", - "tt0037030", - "tt0005678", - "tt0263830", - "tt0389292", - "tt0034996", - "tt0033989", - "tt0005315", - "tt0117553", - "tt0004212", - "tt0042183", - "tt1440150", - "tt1440188", - "tt0277755", - "tt0005309", - "tt0233242", - "tt0035663", - "tt0002851", - "tt0005676", - "tt3478962", - "tt4878890", - "tt4953610", - "tt2818178", - "tt2741122", - "tt5223500", - "tt3139764", - "tt2108517", - "tt3760332", - "tt3093618", - "tt3533254", - "tt2220034", - "tt0081246", - "tt4685148", - "tt0076168", - "tt3187094", - "tt0808148", - "tt1681368", - "tt0069851", - "tt0045162", - "tt5103832", - "tt3828796", - "tt1086315", - "tt4844522", - "tt1090282", - "tt1086314", - "tt4440488", - "tt2169414", - "tt1090178", - "tt4957446", - "tt0453382", - "tt2847520", - "tt0027489", - "tt0493151", - "tt0110434", - "tt5959320", - "tt0439719", - "tt0022877", - "tt0487264", - "tt0022125", - "tt0006296", - "tt0006262", - "tt0067580", - "tt1691323", - "tt0939636", - "tt1672621", - "tt0818120", - "tt0363728", - "tt0153752", - "tt0032164", - "tt0066019", - "tt0042872", - "tt0927629", - "tt0058555", - "tt0005316", - "tt0039383", - "tt0047114", - "tt0110010", - "tt0006145", - "tt0005310", - "tt3616894", - "tt4073868", - "tt1235552", - "tt0005313", - "tt4810828", - "tt4937156", - "tt0114753", - "tt0045719", - "tt0042906", - "tt0005312", - "tt2932828", - "tt1717690", - "tt1065086", - "tt2918608", - "tt0115725", - "tt4960242", - "tt0101765", - "tt0054621", - "tt5631422", - "tt1334570", - "tt0775091", - "tt5179576", - "tt5734214", - "tt5655056", - "tt0118756", - "tt4934886", - "tt4741714", - "tt1337642", - "tt3246158", - "tt4935418", - "tt0249868", - "tt0926762", - "tt0120373", - "tt0375160", - "tt1670392", - "tt5917230", - "tt2398159", - "tt0068288", - "tt0087313", - "tt0047821", - "tt5037982", - "tt2277834", - "tt3606698", - "tt3477620", - "tt2018047", - "tt2662764", - "tt3447228", - "tt5541180", - "tt4569240", - "tt4819738", - "tt3986932", - "tt2401715", - "tt2385227", - "tt3136752", - "tt3758564", - "tt2171875", - "tt3566788", - "tt1603900", - "tt0073317", - "tt2343140", - "tt1773067", - "tt2901690", - "tt2247692", - "tt0057336", - "tt3305316", - "tt0090886", - "tt4428788", - "tt3913206", - "tt0048434", - "tt3757218", - "tt4041382", - "tt4183170", - "tt2083972", - "tt5832008", - "tt0205047", - "tt5673202", - "tt1972752", - "tt5773112", - "tt5899100", - "tt5672502", - "tt4122254", - "tt0124707", - "tt0057171", - "tt3583370", - "tt4426130", - "tt2643164", - "tt0188195", - "tt3715122", - "tt3468612", - "tt1294645", - "tt2061682", - "tt3728746", - "tt4421920", - "tt3667792", - "tt3702720", - "tt0055580", - "tt5660556", - "tt4082596", - "tt3018528", - "tt2175535", - "tt1456606", - "tt2625968", - "tt5069090", - "tt3682546", - "tt4048050", - "tt1000716", - "tt1764614", - "tt3422078", - "tt3699572", - "tt3748048", - "tt3646344", - "tt0108327", - "tt0109665", - "tt3605304", - "tt1783422", - "tt0188694", - "tt0104786", - "tt3597448", - "tt0254334", - "tt3007240", - "tt4539136", - "tt0342735", - "tt1239449", - "tt0950780", - "tt1695405", - "tt4428800", - "tt2278871", - "tt0252684", - "tt3249414", - "tt5812306", - "tt3753432", - "tt5828074", - "tt1638979", - "tt0081658", - "tt4709218", - "tt0118849", - "tt0033357", - "tt4400360", - "tt3129892", - "tt0056303", - "tt3451720", - "tt3771510", - "tt0068179", - "tt4238156", - "tt0923956", - "tt2609998", - "tt2073129", - "tt5145840", - "tt0105592", - "tt1474816", - "tt2016153", - "tt1877892", - "tt4292318", - "tt3237128", - "tt3596952", - "tt2496758", - "tt0055191", - "tt3737996", - "tt3512634", - "tt0040214", - "tt0397113", - "tt3317728", - "tt2438818", - "tt4111044", - "tt3173518", - "tt0272606", - "tt0282521", - "tt0074335", - "tt2390630", - "tt0063673", - "tt0092222", - "tt5259692", - "tt1844735", - "tt2974190", - "tt3584390", - "tt2395312", - "tt5668196", - "tt4886308", - "tt4287852", - "tt3000950", - "tt0995850", - "tt0808232", - "tt4074652", - "tt4154728", - "tt5377604", - "tt2145909", - "tt4379180", - "tt0861731", - "tt2781406", - "tt0465589", - "tt0400063", - "tt1436342", - "tt0037330", - "tt0116441", - "tt3800010", - "tt4120210", - "tt3014600", - "tt4085944", - "tt0133848", - "tt4881016", - "tt0095477", - "tt3544218", - "tt3362064", - "tt2713778", - "tt0095478", - "tt0319758", - "tt0115974", - "tt0078895", - "tt0030811", - "tt0068537", - "tt5037902", - "tt3727054", - "tt0055469", - "tt0027342", - "tt0091939", - "tt0060479", - "tt0039821", - "tt2226321", - "tt3257064", - "tt4938602", - "tt5766420", - "tt0108631", - "tt5363648", - "tt0111299", - "tt0058701", - "tt2727732", - "tt3756838", - "tt1243634", - "tt4162012", - "tt0053106", - "tt0446071", - "tt0104857", - "tt0021739", - "tt0101465", - "tt3481826", - "tt2168000", - "tt4164040", - "tt4653370", - "tt2492562", - "tt1157732", - "tt4688342", - "tt4972386", - "tt4867024", - "tt0847830", - "tt0054879", - "tt2260850", - "tt0091433", - "tt4716958", - "tt4741354", - "tt0357111", - "tt0061678", - "tt4677128", - "tt2364774", - "tt0060742", - "tt1338556", - "tt0493450", - "tt2367066", - "tt1712159", - "tt2094825", - "tt2883448", - "tt5000698", - "tt5170338", - "tt1870548", - "tt3704008", - "tt0120487", - "tt3904754", - "tt3770426", - "tt5275886", - "tt2659240", - "tt4247428", - "tt4695462", - "tt1590844", - "tt2375021", - "tt2516274", - "tt5436486", - "tt2950330", - "tt4932436", - "tt4035268", - "tt4096620", - "tt0327951", - "tt3186946", - "tt5707248", - "tt3116054", - "tt4924618", - "tt3587696", - "tt2025570", - "tt4809238", - "tt0060049", - "tt0107521", - "tt5605328", - "tt3743384", - "tt0113362", - "tt4681414", - "tt0414852", - "tt0064227", - "tt4610372", - "tt4651932", - "tt0082175", - "tt3115694", - "tt1247640", - "tt0091552", - "tt1951161", - "tt0207145", - "tt3290882", - "tt3828488", - "tt0217894", - "tt5583930", - "tt0193524", - "tt0030062", - "tt3523852", - "tt3170902", - "tt4122468", - "tt1847529", - "tt2167819", - "tt1546381", - "tt2051872", - "tt0058450", - "tt2007413", - "tt4038670", - "tt2862454", - "tt370375", - "tt0059405", - "tt4908644", - "tt1762308", - "tt4156646", - "tt0056049", - "tt0063213", - "tt0269587", - "tt2078718", - "tt0084239", - "tt0338290", - "tt4466336", - "tt0040643", - "tt4899510", - "tt5561592", - "tt0712523", - "tt3560686", - "tt3966404", - "tt0113398", - "tt3175438", - "tt0046001", - "tt0044067", - "tt0043721", - "tt0042182", - "tt0050692", - "tt0043603", - "tt0045646", - "tt0047675", - "tt0043043", - "tt0712586", - "tt0046366", - "tt0044962", - "tt0048290", - "tt0042679", - "tt0046051", - "tt0048391", - "tt0712374", - "tt0043829", - "tt0044853", - "tt0049477", - "tt0044455", - "tt0044400", - "tt0504306", - "tt0046684", - "tt2505818", - "tt0045604", - "tt0047178", - "tt0712176", - "tt0044330", - "tt0712168", - "tt3737650", - "tt4437298", - "tt3098874", - "tt3621360", - "tt4008758", - "tt0073357", - "tt0046487", - "tt0145400", - "tt0078991", - "tt4453306", - "tt0056846", - "tt0040497", - "tt5589750", - "tt2976864", - "tt0405508", - "tt0055093", - "tt0084843", - "tt3409440", - "tt3603104", - "tt0042895", - "tt0086655", - "tt4106306", - "tt0399104", - "tt1260567", - "tt0453533", - "tt2293276", - "tt0051591", - "tt0072446", - "tt0016847", - "tt5268648", - "tt0486420", - "tt5556144", - "tt3369350", - "tt4159182", - "tt2818252", - "tt0058898", - "tt3252998", - "tt0279353", - "tt0084503", - "tt0094783", - "tt0084269", - "tt3161326", - "tt2165933", - "tt0266850", - "tt0100026", - "tt0046533", - "tt5509732", - "tt0180626", - "tt0800318", - "tt1608516", - "tt0805559", - "tt0294425", - "tt3721082", - "tt3486542", - "tt0055572", - "tt4202970", - "tt0430932", - "tt3830574", - "tt0099572", - "tt3970874", - "tt5106116", - "tt0120491", - "tt4115932", - "tt3146120", - "tt0066380", - "tt0051179", - "tt5001576", - "tt2464690", - "tt0113932", - "tt3696804", - "tt5329524", - "tt0089366", - "tt3172678", - "tt0094087", - "tt0080097", - "tt4292420", - "tt0059250", - "tt3362914", - "tt0226976", - "tt0096028", - "tt4681452", - "tt4163636", - "tt0054156", - "tt0049095", - "tt0140883", - "tt2215395", - "tt4665250", - "tt4536494", - "tt2944970", - "tt4161932", - "tt3317158", - "tt1235166", - "tt2507238", - "tt4875694", - "tt3760966", - "tt3040224", - "tt4288636", - "tt5439464", - "tt3195054", - "tt2005268", - "tt0271271", - "tt2593224", - "tt0098659", - "tt0186726", - "tt0245380", - "tt0387898", - "tt0192618", - "tt2388621", - "tt5347932", - "tt5370376", - "tt0045487", - "tt4924646", - "tt0274636", - "tt1827429", - "tt3590608", - "tt0096465", - "tt5513770", - "tt4524168", - "tt1735495", - "tt3881192", - "tt0091710", - "tt4794814", - "tt5538124", - "tt0196632", - "tt0069225", - "tt0095384", - "tt3234082", - "tt0274761", - "tt0414078", - "tt0063152", - "tt3062742", - "tt0111495", - "tt0077435", - "tt4218644", - "tt1741542", - "tt1745787", - "tt0108394", - "tt0111507", - "tt4396080", - "tt2392672", - "tt4399984", - "tt0059348", - "tt3727982", - "tt3742378", - "tt0093951", - "tt4800418", - "tt4412362", - "tt0310203", - "tt3035858", - "tt0093312", - "tt0117534", - "tt3685586", - "tt1220911", - "tt1074191", - "tt3319508", - "tt5017928", - "tt3948500", - "tt3993730", - "tt1629715", - "tt4359416", - "tt3576044", - "tt3563892", - "tt4994256", - "tt5106298", - "tt5304688", - "tt0059417", - "tt4614654", - "tt3958098", - "tt4481310", - "tt4991632", - "tt2992000", - "tt1238305", - "tt3786530", - "tt2205453", - "tt3701160", - "tt0175777", - "tt0097528", - "tt5340362", - "tt2767366", - "tt3257638", - "tt0054936", - "tt3120916", - "tt5145828", - "tt0103069", - "tt2991224", - "tt0208990", - "tt0032888", - "tt1605765", - "tt3869392", - "tt3907314", - "tt2728086", - "tt5083702", - "tt4079142", - "tt4264754", - "tt0049031", - "tt0053453", - "tt0143746", - "tt5448304", - "tt0101324", - "tt0043992", - "tt1990217", - "tt4498460", - "tt4176750", - "tt2534634", - "tt4296800", - "tt0047860", - "tt4062896", - "tt4084566", - "tt2004279", - "tt2390327", - "tt2288568", - "tt3498950", - "tt5354588", - "tt0305665", - "tt2690560", - "tt3956722", - "tt3825278", - "tt3509662", - "tt5180998", - "tt4668808", - "tt0087016", - "tt3202872", - "tt0228786", - "tt0092020", - "tt3750942", - "tt2100671", - "tt2337470", - "tt0266643", - "tt2545384", - "tt0094813", - "tt3818826", - "tt4341532", - "tt5247042", - "tt1880278", - "tt2380513", - "tt0056370", - "tt2247696", - "tt3417172", - "tt4048964", - "tt3223394", - "tt4702118", - "tt0273799", - "tt4293656", - "tt4242936", - "tt4576246", - "tt3203364", - "tt3732474", - "tt5231268", - "tt2088865", - "tt3753372", - "tt5221208", - "tt0213260", - "tt4102728", - "tt5111790", - "tt3448072", - "tt3377548", - "tt1756750", - "tt0402755", - "tt3605262", - "tt4768190", - "tt3090634", - "tt0040090", - "tt3184934", - "tt0063534", - "tt0299943", - "tt0083557", - "tt0102062", - "tt0173886", - "tt0098718", - "tt3892822", - "tt0052869", - "tt0095640", - "tt5204384", - "tt5046534", - "tt4481934", - "tt1731767", - "tt4838472", - "tt3586930", - "tt3855240", - "tt0112682", - "tt0382142", - "tt3043386", - "tt1754799", - "tt0066516", - "tt3626804", - "tt3560464", - "tt3685756", - "tt2378401", - "tt0365149", - "tt0256466", - "tt2531282", - "tt4304830", - "tt4399942", - "tt1934172", - "tt5317546", - "tt2318625", - "tt0192255", - "tt3210710", - "tt0301485", - "tt4630848", - "tt0038924", - "tt0131986", - "tt4689996", - "tt0128666", - "tt2880472", - "tt0180177", - "tt0034936", - "tt0043362", - "tt0116319", - "tt0440004", - "tt2355132", - "tt0202595", - "tt0097884", - "tt3218368", - "tt0202521", - "tt0073219", - "tt0061002", - "tt5026308", - "tt4530804", - "tt0090019", - "tt2766004", - "tt3826150", - "tt2120857", - "tt1273235", - "tt0113057", - "tt0053198", - "tt2506256", - "tt0209223", - "tt4747354", - "tt0361467", - "tt4944352", - "tt2202798", - "tt4974584", - "tt4075520", - "tt0164648", - "tt5070196", - "tt2315500", - "tt5073746", - "tt0099406", - "tt4982260", - "tt4971480", - "tt2383382", - "tt4717202", - "tt0924527", - "tt0057058", - "tt1611330", - "tt5186076", - "tt0920470", - "tt3064620", - "tt5280366", - "tt0115543", - "tt2018086", - "tt0030628", - "tt3012526", - "tt1542767", - "tt5210048", - "tt2039359", - "tt4502456", - "tt4328196", - "tt2866824", - "tt4556352", - "tt3732518", - "tt2417134", - "tt0356476", - "tt1334278", - "tt4563702", - "tt2124096", - "tt1285239", - "tt0301893", - "tt4720674", - "tt0157016", - "tt2039389", - "tt4374460", - "tt5062762", - "tt2545692", - "tt0438580", - "tt1720276", - "tt0079012", - "tt3462002", - "tt5133810", - "tt2882156", - "tt1410013", - "tt0215167", - "tt0783494", - "tt5062804", - "tt2064865", - "tt2490352", - "tt2039390", - "tt0425468", - "tt0413900", - "tt2400685", - "tt0470023", - "tt0357648", - "tt2039366", - "tt3320502", - "tt2964654", - "tt2256703", - "tt1646894", - "tt1942839", - "tt0491722", - "tt0950740", - "tt4766018", - "tt2006707", - "tt1332026", - "tt0290321", - "tt5171176", - "tt2537390", - "tt1733111", - "tt4767950", - "tt1431115", - "tt2871116", - "tt0099496", - "tt3600588", - "tt0417397", - "tt4767274", - "tt4119590", - "tt1013651", - "tt4462408", - "tt5210078", - "tt0085622", - "tt3709678", - "tt2158649", - "tt3833822", - "tt2464622", - "tt3837162", - "tt4076824", - "tt0816577", - "tt0036384", - "tt0076410", - "tt0906638", - "tt0088318", - "tt1597522", - "tt1167513", - "tt0130298", - "tt0067778", - "tt1802529", - "tt3147106", - "tt0028988", - "tt2481276", - "tt3669520", - "tt2404217", - "tt4040072", - "tt5228440", - "tt4163644", - "tt3708528", - "tt3020666", - "tt0051846", - "tt0040550", - "tt3042408", - "tt4727110", - "tt1554921", - "tt3625952", - "tt2297812", - "tt1264904", - "tt0282223", - "tt0084100", - "tt1655413", - "tt5135978", - "tt0046695", - "tt0332369", - "tt3103632", - "tt3970482", - "tt4144206", - "tt3147930", - "tt4690134", - "tt4011466", - "tt3478510", - "tt1735462", - "tt2405372", - "tt4309612", - "tt2980626", - "tt1460646", - "tt2371399", - "tt2325474", - "tt3624628", - "tt2974520", - "tt1433089", - "tt1242521", - "tt0016232", - "tt0104114", - "tt0060802", - "tt0337103", - "tt3866420", - "tt2381287", - "tt5028778", - "tt4788602", - "tt2638048", - "tt3377996", - "tt0923973", - "tt3578794", - "tt1479668", - "tt1855152", - "tt0079665", - "tt2936180", - "tt3525584", - "tt4009460", - "tt1342403", - "tt0069967", - "tt2219650", - "tt2988490", - "tt3209148", - "tt2630526", - "tt4654328", - "tt4214874", - "tt0051568", - "tt0199763", - "tt0188769", - "tt3179406", - "tt0245920", - "tt4097612", - "tt5031014", - "tt2958390", - "tt0058458", - "tt0084549", - "tt4273170", - "tt3400460", - "tt4246212", - "tt3055402", - "tt4054678", - "tt0275274", - "tt2572330", - "tt3685218", - "tt0066841", - "tt4141260", - "tt3783274", - "tt1587414", - "tt3786474", - "tt4467202", - "tt0089832", - "tt4838316", - "tt2841572", - "tt3871940", - "tt0795441", - "tt5045592", - "tt0080318", - "tt4544008", - "tt0081428", - "tt1029234", - "tt2876906", - "tt4126304", - "tt5056034", - "tt3056040", - "tt0426568", - "tt0250593", - "tt0043915", - "tt0186910", - "tt0089110", - "tt0044370", - "tt2626926", - "tt0087225", - "tt0058374", - "tt0199810", - "tt3442634", - "tt0117275", - "tt3962210", - "tt4265878", - "tt0313634", - "tt3902600", - "tt2263210", - "tt3483194", - "tt1323535", - "tt0094886", - "tt3234196", - "tt0057687", - "tt2710368", - "tt0058751", - "tt2197912", - "tt4188202", - "tt5038216", - "tt0059915", - "tt3132632", - "tt4725904", - "tt0814685", - "tt3762666", - "tt0080144", - "tt4846826", - "tt0036706", - "tt2862392", - "tt1332007", - "tt3218580", - "tt2689958", - "tt1612319", - "tt0077984", - "tt4215766", - "tt2241750", - "tt0299179", - "tt3923082", - "tt4391742", - "tt0126004", - "tt2196488", - "tt3346824", - "tt1343703", - "tt0069072", - "tt2346406", - "tt4938846", - "tt0347909", - "tt2929890", - "tt1343712", - "tt3854104", - "tt0061781", - "tt4216808", - "tt2476552", - "tt0046427", - "tt0118150", - "tt0048355", - "tt0258816", - "tt4197632", - "tt3132244", - "tt0192657", - "tt0033654", - "tt0072149", - "tt0079687", - "tt0050799", - "tt0043946", - "tt0071385", - "tt0053371", - "tt0041209", - "tt0049476", - "tt0051818", - "tt0073698", - "tt0064990", - "tt0051940", - "tt1754406", - "tt4137902", - "tt0762089", - "tt4568166", - "tt1773793", - "tt1368153", - "tt0056021", - "tt0772762", - "tt0080668", - "tt3168808", - "tt5084214", - "tt1961324", - "tt3573598", - "tt0389182", - "tt1362318", - "tt0086087", - "tt0067077", - "tt0075299", - "tt0042298", - "tt2458392", - "tt1587359", - "tt1550533", - "tt5022680", - "tt1279976", - "tt4579410", - "tt4144156", - "tt2311428", - "tt1380078", - "tt0046121", - "tt3972068", - "tt3644570", - "tt2608324", - "tt2387600", - "tt3953834", - "tt2591692", - "tt3204144", - "tt2334896", - "tt0243390", - "tt3500724", - "tt4074502", - "tt0322674", - "tt2707848", - "tt3400286", - "tt4401604", - "tt3509426", - "tt4559742", - "tt2291242", - "tt0095715", - "tt1863943", - "tt0042344", - "tt2611390", - "tt4652128", - "tt1762887", - "tt1878519", - "tt4298966", - "tt3524578", - "tt3163304", - "tt2901516", - "tt4073696", - "tt4648826", - "tt3670782", - "tt0071733", - "tt4510898", - "tt1718915", - "tt1999246", - "tt1954520", - "tt3697270", - "tt0370242", - "tt2936470", - "tt0086026", - "tt3318220", - "tt3137546", - "tt2276258", - "tt0096287", - "tt0078015", - "tt0077640", - "tt2364997", - "tt2428612", - "tt3665860", - "tt0062036", - "tt3088516", - "tt2664712", - "tt3844362", - "tt0086840", - "tt2517300", - "tt1338687", - "tt3044244", - "tt3494676", - "tt1360860", - "tt0086890", - "tt0086542", - "tt2392810", - "tt4128382", - "tt0267287", - "tt4563294", - "tt3574218", - "tt0987918", - "tt4192636", - "tt0070460", - "tt3814486", - "tt2176874", - "tt1528734", - "tt2637378", - "tt2610240", - "tt4382618", - "tt2343473", - "tt4156700", - "tt3271120", - "tt0020815", - "tt3182590", - "tt2473762", - "tt2361602", - "tt3134422", - "tt2594950", - "tt2311948", - "tt4498162", - "tt3508830", - "tt1629374", - "tt3142234", - "tt2861532", - "tt4259658", - "tt3910602", - "tt2705542", - "tt1265294", - "tt0113221", - "tt3146294", - "tt0109551", - "tt0457652", - "tt0028114", - "tt1314280", - "tt2535348", - "tt0052600", - "tt0162211", - "tt0131200", - "tt0060092", - "tt1870543", - "tt0292516", - "tt3309136", - "tt0044928", - "tt1830459", - "tt3700852", - "tt0123221", - "tt4305562", - "tt1176244", - "tt4437046", - "tt0398027", - "tt3362908", - "tt1946347", - "tt3855850", - "tt4125300", - "tt4012432", - "tt3962798", - "tt0162928", - "tt2518294", - "tt3446906", - "tt0128801", - "tt3628898", - "tt0402115", - "tt0033922", - "tt0114663", - "tt4173442", - "tt3784566", - "tt0083366", - "tt0070130", - "tt4289948", - "tt0289181", - "tt4262142", - "tt0027438", - "tt0867418", - "tt2282703", - "tt1714843", - "tt0200669", - "tt2836370", - "tt3248600", - "tt1568816", - "tt0872020", - "tt0052893", - "tt0100436", - "tt0070959", - "tt3924798", - "tt1519461", - "tt0066479", - "tt1322362", - "tt0125946", - "tt2822742", - "tt0123288", - "tt0099546", - "tt0065439", - "tt4440036", - "tt2650646", - "tt3100052", - "tt1588337", - "tt2134170", - "tt2404593", - "tt3772918", - "tt1846479", - "tt2844798", - "tt0035415", - "tt0031862", - "tt3814950", - "tt3455850", - "tt2649194", - "tt2785464", - "tt2446600", - "tt0096098", - "tt3576084", - "tt2621664", - "tt3100636", - "tt4738466", - "tt4561026", - "tt3539664", - "tt0060675", - "tt0058056", - "tt0199733", - "tt1114717", - "tt3950488", - "tt2274604", - "tt3324302", - "tt0020531", - "tt0019686", - "tt3094252", - "tt0020708", - "tt0036427", - "tt0024916", - "tt1180329", - "tt1925421", - "tt0061634", - "tt0117739", - "tt3196684", - "tt2191880", - "tt0069765", - "tt1294977", - "tt1092016", - "tt3138166", - "tt2282737", - "tt0047529", - "tt2562850", - "tt4028826", - "tt4674500", - "tt0121369", - "tt1568799", - "tt3188560", - "tt0080843", - "tt3105418", - "tt2095762", - "tt0293007", - "tt2131674", - "tt3478186", - "tt2328813", - "tt2503768", - "tt1702003", - "tt1320293", - "tt1646887", - "tt0248751", - "tt0347752", - "tt0082927", - "tt3103412", - "tt0423871", - "tt4340888", - "tt0823187", - "tt3667270", - "tt3091772", - "tt2768018", - "tt3150574", - "tt2466654", - "tt2322482", - "tt2243067", - "tt1626648", - "tt3409392", - "tt3620418", - "tt2855026", - "tt1864443", - "tt1573484", - "tt1094584", - "tt0042040", - "tt0063564", - "tt2562870", - "tt1503646", - "tt0032653", - "tt2368926", - "tt4065510", - "tt1864269", - "tt4448648", - "tt2562944", - "tt1864277", - "tt0076065", - "tt4573800", - "tt1730714", - "tt0439591", - "tt0248752", - "tt0382937", - "tt2187444", - "tt0054494", - "tt0270846", - "tt4575100", - "tt3062880", - "tt0287337", - "tt0249535", - "tt0048308", - "tt0051792", - "tt0085692", - "tt0110097", - "tt1544590", - "tt0080610", - "tt1299384", - "tt3538766", - "tt1977087", - "tt2048824", - "tt3172112", - "tt0172348", - "tt2273275", - "tt3238462", - "tt0301777", - "tt4214708", - "tt0080430", - "tt1825901", - "tt2365001", - "tt2974790", - "tt1308094", - "tt3214248", - "tt4008778", - "tt1153543", - "tt4190550", - "tt0874272", - "tt3012340", - "tt3579168", - "tt2544766", - "tt4662412", - "tt2390994", - "tt1827512", - "tt2346720", - "tt0995747", - "tt3121860", - "tt3667152", - "tt4700538", - "tt0139692", - "tt3504542", - "tt2089721", - "tt0306943", - "tt3101474", - "tt0071864", - "tt0079252", - "tt1183276", - "tt1252298", - "tt0065651", - "tt0049177", - "tt0200071", - "tt0825239", - "tt0026922", - "tt3501046", - "tt1130982", - "tt0056514", - "tt1894560", - "tt0070046", - "tt2147589", - "tt4453498", - "tt3472226", - "tt3794422", - "tt2570414", - "tt3447876", - "tt2189978", - "tt0074745", - "tt0092226", - "tt3519192", - "tt0082272", - "tt0069881", - "tt0047213", - "tt3411420", - "tt0258013", - "tt0107762", - "tt0059934", - "tt0056066", - "tt0117477", - "tt0411819", - "tt0104267", - "tt1708524", - "tt0064390", - "tt0139718", - "tt2720726", - "tt0165998", - "tt3600960", - "tt0103030", - "tt0120164", - "tt0025509", - "tt2403981", - "tt3210998", - "tt0054671", - "tt0006689", - "tt2852406", - "tt2950236", - "tt2081314", - "tt3655522", - "tt0080718", - "tt3675486", - "tt0044135", - "tt2948606", - "tt2638104", - "tt1706625", - "tt0981350", - "tt0164422", - "tt3263690", - "tt3594796", - "tt4409852", - "tt0085426", - "tt0314502", - "tt2394003", - "tt2552316", - "tt3160020", - "tt0075696", - "tt3655172", - "tt2723576", - "tt0104732", - "tt1645138", - "tt0470131", - "tt0001371", - "tt1518215", - "tt0099859", - "tt3720794", - "tt1836953", - "tt0477078", - "tt0847743", - "tt0144688", - "tt2293138", - "tt0217749", - "tt3823994", - "tt0361127", - "tt2543508", - "tt1032856", - "tt2815720", - "tt0972374", - "tt0028691", - "tt4621642", - "tt2451550", - "tt3851324", - "tt1737796", - "tt0390833", - "tt2209744", - "tt3420108", - "tt2554648", - "tt0110737", - "tt2531168", - "tt2551396", - "tt2447338", - "tt4328584", - "tt2199543", - "tt2514976", - "tt2075373", - "tt2766268", - "tt3553414", - "tt3626970", - "tt2212670", - "tt3914706", - "tt2704650", - "tt0054473", - "tt0757923", - "tt2400275", - "tt2475454", - "tt0455925", - "tt3842398", - "tt0063381", - "tt3413692", - "tt1854592", - "tt3104656", - "tt0091671", - "tt2330666", - "tt0279475", - "tt0095360", - "tt3215846", - "tt2875926", - "tt0053149", - "tt0045826", - "tt3688018", - "tt2788556", - "tt3674410", - "tt3552892", - "tt3684490", - "tt2705326", - "tt0138664", - "tt0035521", - "tt0060536", - "tt0206692", - "tt1236457", - "tt0142001", - "tt1687221", - "tt2326554", - "tt0094789", - "tt2896036", - "tt3905756", - "tt3593120", - "tt3148952", - "tt0441613", - "tt1784359", - "tt2571502", - "tt0118996", - "tt0047568", - "tt3104818", - "tt0061784", - "tt0081027", - "tt4008606", - "tt0070302", - "tt1035736", - "tt0344510", - "tt3815426", - "tt0128591", - "tt0064816", - "tt0055146", - "tt0090563", - "tt4460190", - "tt3907674", - "tt2780588", - "tt2772762", - "tt2788228", - "tt0401383", - "tt0102988", - "tt3016266", - "tt0795459", - "tt0110620", - "tt3159050", - "tt2004216", - "tt2231630", - "tt2070897", - "tt0058089", - "tt2856930", - "tt3133246", - "tt2409812", - "tt1867091", - "tt1015471", - "tt0117613", - "tt3459472", - "tt0160521", - "tt3202374", - "tt0160522", - "tt3036600", - "tt3545810", - "tt0303678", - "tt4304408", - "tt3212392", - "tt1515088", - "tt3331846", - "tt0062414", - "tt3328442", - "tt4173174", - "tt0490236", - "tt3093520", - "tt0164961", - "tt1861445", - "tt3313908", - "tt2758880", - "tt0090667", - "tt0839846", - "tt0074720", - "tt1413797", - "tt3358296", - "tt0881384", - "tt1907688", - "tt3485702", - "tt4539292", - "tt3090324", - "tt2093867", - "tt1699090", - "tt0473753", - "tt2714410", - "tt0240143", - "tt1956700", - "tt2414040", - "tt3365778", - "tt2098491", - "tt4344878", - "tt2407484", - "tt1333888", - "tt2049589", - "tt2073128", - "tt2275519", - "tt3210388", - "tt0163639", - "tt0337587", - "tt1777610", - "tt2614700", - "tt1899353", - "tt0110150", - "tt0111804", - "tt0424934", - "tt1327601", - "tt0432314", - "tt0844322", - "tt0996382", - "tt0089918", - "tt2089864", - "tt3684484", - "tt2571354", - "tt3566370", - "tt2170403", - "tt3424672", - "tt2571340", - "tt2329459", - "tt2606614", - "tt0027967", - "tt2290113", - "tt0053472", - "tt2991092", - "tt0060544", - "tt0092593", - "tt3612616", - "tt1020773", - "tt2329582", - "tt2751390", - "tt0424942", - "tt3518096", - "tt0113676", - "tt2175665", - "tt2106350", - "tt0264809", - "tt0119682", - "tt3267258", - "tt0972356", - "tt0226648", - "tt0444673", - "tt3254548", - "tt0330044", - "tt0193925", - "tt3379694", - "tt2943974", - "tt3949648", - "tt0225634", - "tt3089922", - "tt0353168", - "tt0263278", - "tt0388474", - "tt0096968", - "tt3587128", - "tt3213222", - "tt0061826", - "tt1699745", - "tt2316868", - "tt0325181", - "tt0062266", - "tt2909932", - "tt0096240", - "tt1724965", - "tt2231489", - "tt2733258", - "tt0451954", - "tt0025903", - "tt2474438", - "tt2111292", - "tt0411270", - "tt0116789", - "tt3881700", - "tt4234734", - "tt0403718", - "tt0023038", - "tt3586634", - "tt3061836", - "tt2406572", - "tt0025830", - "tt0026267", - "tt1984248", - "tt0027087", - "tt3158138", - "tt3314628", - "tt3104572", - "tt1737650", - "tt2290710", - "tt3003758", - "tt0381456", - "tt2093990", - "tt0040465", - "tt2610252", - "tt0047310", - "tt2963344", - "tt1756508", - "tt2165236", - "tt0026558", - "tt1468843", - "tt0808339", - "tt3868150", - "tt3131456", - "tt1096999", - "tt0027042", - "tt2245349", - "tt3569356", - "tt0100200", - "tt2023500", - "tt0068738", - "tt4132598", - "tt0382944", - "tt0067847", - "tt1187043", - "tt3385034", - "tt0004150", - "tt0040142", - "tt2553424", - "tt0116341", - "tt2252304", - "tt0073747", - "tt2852432", - "tt2624316", - "tt4419652", - "tt3627000", - "tt1634003", - "tt1876502", - "tt2942522", - "tt3202306", - "tt1893199", - "tt0060107", - "tt0056111", - "tt2072263", - "tt0020695", - "tt1656192", - "tt0066997", - "tt2141739", - "tt0309799", - "tt1149361", - "tt0996930", - "tt3918368", - "tt1874797", - "tt0814042", - "tt3446852", - "tt2674040", - "tt3655370", - "tt1986161", - "tt4146230", - "tt1727373", - "tt2495778", - "tt3837198", - "tt0101700", - "tt4175742", - "tt3450116", - "tt1603933", - "tt1792806", - "tt2712154", - "tt4196462", - "tt0372532", - "tt0045941", - "tt0024475", - "tt2570738", - "tt0048964", - "tt2091240", - "tt3329350", - "tt0827773", - "tt2788002", - "tt2409818", - "tt0367082", - "tt1379182", - "tt0444182", - "tt0036709", - "tt1966566", - "tt3657420", - "tt2177629", - "tt2363518", - "tt2261434", - "tt3706190", - "tt0085474", - "tt1692301", - "tt1211890", - "tt0039636", - "tt2324384", - "tt2183716", - "tt2934340", - "tt3833470", - "tt3887360", - "tt3430042", - "tt4145350", - "tt2380560", - "tt2224506", - "tt1778357", - "tt2276480", - "tt2940280", - "tt0059894", - "tt1782253", - "tt0062446", - "tt2294963", - "tt2450520", - "tt1609132", - "tt0055910", - "tt0377556", - "tt0024115", - "tt3775614", - "tt1757769", - "tt2062969", - "tt1014805", - "tt2458698", - "tt2701778", - "tt3508590", - "tt0113667", - "tt1675759", - "tt1604589", - "tt0248912", - "tt2357461", - "tt1355638", - "tt0216787", - "tt0425132", - "tt0044958", - "tt0112856", - "tt0315110", - "tt2241691", - "tt0038300", - "tt0022787", - "tt3529260", - "tt3082826", - "tt2271685", - "tt1243939", - "tt3629548", - "tt3825444", - "tt2009406", - "tt2141941", - "tt3001638", - "tt2831404", - "tt3171246", - "tt1625326", - "tt2340076", - "tt2380564", - "tt0426550", - "tt0424867", - "tt1556243", - "tt2600730", - "tt0114268", - "tt0338022", - "tt0039591", - "tt4065336", - "tt0080907", - "tt2465378", - "tt3415872", - "tt0087837", - "tt3107328", - "tt0303668", - "tt1757112", - "tt2373550", - "tt0312409", - "tt2318405", - "tt2076349", - "tt3502284", - "tt0172238", - "tt1213019", - "tt0270560", - "tt4034118", - "tt0071968", - "tt2094877", - "tt0078458", - "tt1854580", - "tt0199128", - "tt4260656", - "tt0244521", - "tt0030396", - "tt0379985", - "tt1217043", - "tt2966560", - "tt0043526", - "tt4150316", - "tt0033902", - "tt2418372", - "tt3512066", - "tt0070338", - "tt1924277", - "tt3911058", - "tt0184309", - "tt2545936", - "tt2912144", - "tt3289944", - "tt0069400", - "tt0065944", - "tt0458436", - "tt3090326", - "tt0815207", - "tt2299206", - "tt2707804", - "tt2787874", - "tt0052027", - "tt0125659", - "tt0028257", - "tt2651214", - "tt0026973", - "tt0372303", - "tt3627780", - "tt0018528", - "tt2837366", - "tt0184915", - "tt3972398", - "tt0468450", - "tt2071620", - "tt3801438", - "tt3547900", - "tt4179824", - "tt1992147", - "tt3460064", - "tt2350852", - "tt0970172", - "tt1576772", - "tt2309764", - "tt0106536", - "tt0100928", - "tt3097490", - "tt3952328", - "tt3122122", - "tt2139843", - "tt3511012", - "tt3596200", - "tt3158306", - "tt0269338", - "tt0220470", - "tt2406038", - "tt2415496", - "tt3103598", - "tt0034167", - "tt0452624", - "tt0415391", - "tt2960450", - "tt0488658", - "tt2194988", - "tt0456836", - "tt1058743", - "tt0142193", - "tt0120481", - "tt1992278", - "tt0963743", - "tt0841101", - "tt2176786", - "tt4208628", - "tt3974790", - "tt0041327", - "tt2821088", - "tt0117101", - "tt0043643", - "tt0114057", - "tt1859530", - "tt2167056", - "tt0958884", - "tt0070464", - "tt2693076", - "tt3220576", - "tt0064155", - "tt2609758", - "tt2314036", - "tt2006721", - "tt2357003", - "tt0097567", - "tt3245656", - "tt0837791", - "tt2294473", - "tt2241047", - "tt2338062", - "tt0071790", - "tt0032325", - "tt0038056", - "tt0033458", - "tt0037826", - "tt2928288", - "tt2640502", - "tt2177336", - "tt0029984", - "tt1639397", - "tt2282058", - "tt0032326", - "tt0082183", - "tt3635852", - "tt0079002", - "tt0031149", - "tt3634940", - "tt2196844", - "tt0114783", - "tt2371158", - "tt1613056", - "tt3302594", - "tt3351428", - "tt2836260", - "tt0028709", - "tt0072267", - "tt0028707", - "tt3918546", - "tt2196059", - "tt2475898", - "tt3520698", - "tt4064460", - "tt2735480", - "tt3958180", - "tt0027441", - "tt3957278", - "tt1549069", - "tt0027439", - "tt2314414", - "tt1410015", - "tt3317942", - "tt2369543", - "tt0026199", - "tt0027442", - "tt2451742", - "tt0040799", - "tt0379357", - "tt2077721", - "tt1929339", - "tt1590013", - "tt2988384", - "tt1324875", - "tt2737050", - "tt1422197", - "tt0026197", - "tt1323933", - "tt1815717", - "tt1247657", - "tt1087527", - "tt2363439", - "tt1809318", - "tt0110189", - "tt0064425", - "tt0027440", - "tt0024968", - "tt0028708", - "tt0144262", - "tt3765746", - "tt0040778", - "tt3715300", - "tt3353690", - "tt0038929", - "tt4087916", - "tt0032324", - "tt2406252", - "tt1871257", - "tt0040394", - "tt0106752", - "tt3688596", - "tt1826753", - "tt0279830", - "tt0212867", - "tt1863323", - "tt0283542", - "tt2957250", - "tt0087814", - "tt0087885", - "tt2907640", - "tt3965714", - "tt1727254", - "tt0114732", - "tt0042352", - "tt2811878", - "tt2976472", - "tt0499469", - "tt1451708", - "tt0073632", - "tt0096288", - "tt3396842", - "tt0025463", - "tt2372222", - "tt2179936", - "tt4045482", - "tt0031514", - "tt0081688", - "tt1914281", - "tt3249524", - "tt0066207", - "tt0082053", - "tt3660850", - "tt0080662", - "tt3317762", - "tt0085956", - "tt2576828", - "tt2945474", - "tt0084003", - "tt0087821", - "tt0045917", - "tt3332122", - "tt2340784", - "tt2836202", - "tt1924273", - "tt1589627", - "tt2072134", - "tt3831400", - "tt0047348", - "tt3074732", - "tt3949650", - "tt0064988", - "tt1429392", - "tt1821593", - "tt0041610", - "tt3307800", - "tt0457437", - "tt2880148", - "tt0375611", - "tt0086551", - "tt1800338", - "tt2865558", - "tt1686865", - "tt2545088", - "tt2199448", - "tt3996536", - "tt3171886", - "tt0922591", - "tt2545338", - "tt3560658", - "tt1847750", - "tt2937752", - "tt0195871", - "tt0964516", - "tt1292594", - "tt2280358", - "tt2238420", - "tt0068428", - "tt0250264", - "tt0047797", - "tt0272766", - "tt2994962", - "tt0776798", - "tt1734438", - "tt0312946", - "tt3202486", - "tt1653064", - "tt0118668", - "tt1336999", - "tt2806908", - "tt1588875", - "tt3595312", - "tt1337090", - "tt0080728", - "tt0062083", - "tt0056101", - "tt3874418", - "tt0021815", - "tt0160484", - "tt0092550", - "tt0456978", - "tt0177852", - "tt2741806", - "tt0318497", - "tt0456980", - "tt2707858", - "tt0456981", - "tt0456982", - "tt0401119", - "tt1135522", - "tt3504158", - "tt2936864", - "tt1650041", - "tt1986806", - "tt2187149", - "tt2336960", - "tt3837154", - "tt1692478", - "tt0091830", - "tt2136689", - "tt1964618", - "tt0856288", - "tt0042256", - "tt3492330", - "tt1704586", - "tt3021744", - "tt2222206", - "tt0061394", - "tt2643394", - "tt0193510", - "tt3331044", - "tt0006684", - "tt3630862", - "tt3013588", - "tt3608848", - "tt2727296", - "tt2123146", - "tt2221404", - "tt0443518", - "tt2912522", - "tt1606829", - "tt0061905", - "tt2403815", - "tt1223082", - "tt0049682", - "tt2559244", - "tt0061495", - "tt0072235", - "tt0064612", - "tt3985472", - "tt0040548", - "tt0218141", - "tt3106926", - "tt3103326", - "tt0106379", - "tt0069158", - "tt0064409", - "tt0486666", - "tt0042782", - "tt0078122", - "tt1738351", - "tt1754708", - "tt0053399", - "tt2793578", - "tt2207050", - "tt2289538", - "tt2407380", - "tt0079371", - "tt0075669", - "tt1653827", - "tt0043262", - "tt0076827", - "tt3554976", - "tt0150614", - "tt0071960", - "tt2247432", - "tt0115940", - "tt3678938", - "tt2393825", - "tt1188996", - "tt0472478", - "tt2014295", - "tt3215844", - "tt0040810", - "tt0056691", - "tt2271671", - "tt3667798", - "tt0358767", - "tt2493456", - "tt0039532", - "tt3234906", - "tt2873250", - "tt1870375", - "tt3807402", - "tt0448906", - "tt2606112", - "tt3769334", - "tt1351770", - "tt0496385", - "tt2787824", - "tt0036166", - "tt0034593", - "tt2714934", - "tt2889844", - "tt0103973", - "tt0856776", - "tt1609492", - "tt3108170", - "tt0190503", - "tt2315588", - "tt2263814", - "tt2057455", - "tt2071424", - "tt2403419", - "tt0062873", - "tt3084836", - "tt3120810", - "tt1233381", - "tt3365338", - "tt2813906", - "tt2945504", - "tt2121782", - "tt2531258", - "tt3691706", - "tt1801071", - "tt0056568", - "tt0185335", - "tt1663698", - "tt2650642", - "tt0040489", - "tt1995304", - "tt0081144", - "tt0064004", - "tt0054474", - "tt2500392", - "tt1705115", - "tt2374902", - "tt1591499", - "tt2137119", - "tt3322420", - "tt2789532", - "tt3558196", - "tt2017634", - "tt2795078", - "tt2374196", - "tt2222192", - "tt0052946", - "tt3057836", - "tt0666194", - "tt1760985", - "tt0069848", - "tt0117070", - "tt3479624", - "tt2614006", - "tt0055020", - "tt0273282", - "tt0051016", - "tt0055261", - "tt1230165", - "tt2871058", - "tt0105227", - "tt0794399", - "tt3091552", - "tt2224313", - "tt2372776", - "tt3560580", - "tt3469420", - "tt0059166", - "tt3335192", - "tt2818448", - "tt0083258", - "tt2557848", - "tt2866660", - "tt3279276", - "tt3185154", - "tt2381319", - "tt0265343", - "tt2405792", - "tt3640822", - "tt0290673", - "tt0099564", - "tt3029570", - "tt3142958", - "tt1951166", - "tt1867611", - "tt0053168", - "tt1993286", - "tt0103110", - "tt3843960", - "tt1270786", - "tt2931194", - "tt3214002", - "tt2156785", - "tt3063996", - "tt2100575", - "tt1170380", - "tt3130506", - "tt0398971", - "tt2350496", - "tt1751720", - "tt1608369", - "tt1472583", - "tt3091282", - "tt0099334", - "tt3142872", - "tt3134060", - "tt0362225", - "tt2798172", - "tt3811920", - "tt2210842", - "tt3345466", - "tt3037406", - "tt1068649", - "tt2955316", - "tt1816518", - "tt2739524", - "tt0402500", - "tt3222720", - "tt0074979", - "tt2700582", - "tt2188734", - "tt0084555", - "tt1176102", - "tt3103576", - "tt3129564", - "tt1723656", - "tt1403987", - "tt3516378", - "tt2679680", - "tt2835548", - "tt2275802", - "tt2511022", - "tt2852458", - "tt2210607", - "tt1217637", - "tt2718492", - "tt1125924", - "tt2671980", - "tt2654738", - "tt0369738", - "tt0235430", - "tt2709784", - "tt1506438", - "tt3506224", - "tt2748546", - "tt3091254", - "tt2515164", - "tt3737782", - "tt2536436", - "tt2622156", - "tt2371315", - "tt0048432", - "tt2595182", - "tt2641866", - "tt1407052", - "tt0361805", - "tt3330206", - "tt3044702", - "tt2265171", - "tt1698647", - "tt0067123", - "tt3259320", - "tt2140381", - "tt1825806", - "tt2708946", - "tt2785288", - "tt1920928", - "tt2717528", - "tt0064360", - "tt0065755", - "tt0059080", - "tt3089778", - "tt0061695", - "tt2363435", - "tt0400514", - "tt0075441", - "tt0143346", - "tt1974393", - "tt0063000", - "tt0081675", - "tt0163777", - "tt1450334", - "tt0081681", - "tt0066806", - "tt0095645", - "tt0310236", - "tt0207709", - "tt0495074", - "tt0063065", - "tt0183307", - "tt1817235", - "tt3386954", - "tt0876294", - "tt2379995", - "tt3112654", - "tt1545319", - "tt3482696", - "tt2459920", - "tt2088924", - "tt0096917", - "tt1555440", - "tt2294965", - "tt1825955", - "tt2180473", - "tt0089860", - "tt0106632", - "tt0072080", - "tt0068655", - "tt1439578", - "tt3742018", - "tt2949626", - "tt1629747", - "tt2543484", - "tt2239866", - "tt2374144", - "tt0326834", - "tt1794801", - "tt1843234", - "tt2747786", - "tt3173910", - "tt3139338", - "tt1188982", - "tt2082156", - "tt3417364", - "tt0033307", - "tt0049933", - "tt3717186", - "tt2218416", - "tt0249516", - "tt2181310", - "tt1784664", - "tt3417360", - "tt1927158", - "tt1240899", - "tt2059255", - "tt2072939", - "tt2312390", - "tt0052135", - "tt1763256", - "tt0389206", - "tt0237534", - "tt1117598", - "tt2763764", - "tt1309374", - "tt0363416", - "tt1242605", - "tt2357866", - "tt2173264", - "tt1305618", - "tt2112124", - "tt2930828", - "tt0045961", - "tt2395246", - "tt3528284", - "tt3296434", - "tt1137436", - "tt1407972", - "tt0289557", - "tt3685836", - "tt1564870", - "tt3024056", - "tt1954364", - "tt0110963", - "tt3077818", - "tt3465208", - "tt3169740", - "tt0047411", - "tt0416073", - "tt2203898", - "tt3684194", - "tt1205587", - "tt3069086", - "tt2565752", - "tt3479250", - "tt3416200", - "tt1864299", - "tt3487082", - "tt0254686", - "tt3187064", - "tt2065898", - "tt3032300", - "tt0113662", - "tt0044722", - "tt1959526", - "tt0099089", - "tt2361348", - "tt1855324", - "tt3530418", - "tt1241226", - "tt2359427", - "tt2366127", - "tt2379318", - "tt2243381", - "tt1235841", - "tt0109020", - "tt0320790", - "tt1225834", - "tt2181941", - "tt2181889", - "tt3176304", - "tt3152130", - "tt2843986", - "tt3315416", - "tt2223824", - "tt2860720", - "tt2257436", - "tt2219514", - "tt0371552", - "tt0319075", - "tt0439567", - "tt2556296", - "tt0211413", - "tt2996804", - "tt3451660", - "tt1660302", - "tt0348003", - "tt3089442", - "tt3469386", - "tt3664510", - "tt3062104", - "tt2274042", - "tt1785612", - "tt3259912", - "tt2375036", - "tt2917646", - "tt2214913", - "tt2358592", - "tt0098327", - "tt3478444", - "tt0079311", - "tt0080002", - "tt0074513", - "tt2304098", - "tt3581276", - "tt0067026", - "tt0075802", - "tt0201924", - "tt0200310", - "tt3280730", - "tt2603496", - "tt0091607", - "tt0086301", - "tt0164882", - "tt2502518", - "tt0058592", - "tt0224098", - "tt0105903", - "tt0187501", - "tt0199023", - "tt0063105", - "tt1292648", - "tt1611823", - "tt0072421", - "tt2239108", - "tt2947832", - "tt0278351", - "tt1982735", - "tt0083352", - "tt3239154", - "tt3354866", - "tt3215286", - "tt0823725", - "tt2189714", - "tt3503838", - "tt2175016", - "tt2437712", - "tt1954930", - "tt2562234", - "tt2846418", - "tt1586525", - "tt2207072", - "tt087", - "tt2457282", - "tt1176096", - "tt0324197", - "tt3106846", - "tt2322674", - "tt3451624", - "tt2444006", - "tt2752200", - "tt2865074", - "tt2584380", - "tt0216625", - "tt3456464", - "tt1109562", - "tt1906443", - "tt1772871", - "tt2235902", - "tt1987681", - "tt1381416", - "tt2066986", - "tt1638353", - "tt2561752", - "tt1590764", - "tt2235248", - "tt0338309", - "tt3037342", - "tt2315200", - "tt2343807", - "tt1826894", - "tt1992193", - "tt3320114", - "tt0425299", - "tt3350228", - "tt2907156", - "tt1852137", - "tt1282156", - "tt1535432", - "tt23951", - "tt3234078", - "tt3203890", - "tt2796782", - "tt0061996", - "tt0425055", - "tt2636814", - "tt2402600", - "tt1928338", - "tt2219792", - "tt2550112", - "tt2265179", - "tt1961580", - "tt1890448", - "tt0052698", - "tt2275656", - "tt2208778", - "tt2542502", - "tt2909482", - "tt0322802", - "tt1905042", - "tt0111800", - "tt3319234", - "tt2152198", - "tt2234032", - "tt3004788", - "tt1156444", - "tt0070801", - "tt2089863", - "tt1186371", - "tt0099809", - "tt0075201", - "tt0080743", - "tt0078128", - "tt0075202", - "tt0077135", - "tt0063596", - "tt0164360", - "tt0112800", - "tt0065102", - "tt0079891", - "tt0084105", - "tt0076939", - "tt0068372", - "tt0065495", - "tt0082174", - "tt0069380", - "tt0067009", - "tt0075833", - "tt0077292", - "tt0045034", - "tt0084267", - "tt0940918", - "tt0070085", - "tt2248805", - "tt1043429", - "tt0080958", - "tt0078360", - "tt0079147", - "tt1533749", - "tt0078393", - "tt0085628", - "tt0083828", - "tt0080172", - "tt0093015", - "tt0073121", - "tt0074300", - "tt0165195", - "tt0367602", - "tt0079432", - "tt0082482", - "tt0188794", - "tt0165363", - "tt0080420", - "tt0079896", - "tt0084014", - "tt0078250", - "tt0082072", - "tt1361529", - "tt0180826", - "tt0065172", - "tt1825735", - "tt0077664", - "tt0080726", - "tt2014351", - "tt0404823", - "tt0080828", - "tt0076692", - "tt0084678", - "tt0079899", - "tt0040917", - "tt0104567", - "tt2317484", - "tt3361152", - "tt2258858", - "tt2421224", - "tt2290151", - "tt1956655", - "tt0046149", - "tt0109969", - "tt2048889", - "tt0107666", - "tt0099395", - "tt0113449", - "tt0488539", - "tt3072668", - "tt0106732", - "tt0125841", - "tt0294631", - "tt0151778", - "tt0109161", - "tt0048333", - "tt1686125", - "tt0059407", - "tt0098681", - "tt2641874", - "tt0085354", - "tt3455214", - "tt2397531", - "tt0106451", - "tt1060256", - "tt3249408", - "tt1686907", - "tt2825716", - "tt2275551", - "tt2954184", - "tt2488740", - "tt2221558", - "tt2827520", - "tt0339579", - "tt2102500", - "tt0446319", - "tt0066277", - "tt0959452", - "tt0412519", - "tt0118721", - "tt0087806", - "tt1647413", - "tt2385074", - "tt0119628", - "tt0420136", - "tt1801085", - "tt3031022", - "tt1545489", - "tt2424752", - "tt2005185", - "tt2234397", - "tt2438644", - "tt0490078", - "tt0076470", - "tt1029231", - "tt2094969", - "tt0076594", - "tt1543055", - "tt0062357", - "tt2073516", - "tt0267785", - "tt0044936", - "tt0037871", - "tt1346669", - "tt2403991", - "tt0096309", - "tt2235682", - "tt0052810", - "tt3042926", - "tt0124102", - "tt1051217", - "tt1064932", - "tt2039369", - "tt0791304", - "tt1978428", - "tt0034922", - "tt0043954", - "tt0050717", - "tt0030581", - "tt0333458", - "tt0035009", - "tt3262722", - "tt2355921", - "tt0088380", - "tt0053241", - "tt3436442", - "tt0305751", - "tt0047211", - "tt0086972", - "tt0051993", - "tt1240284", - "tt2796776", - "tt2359810", - "tt0807521", - "tt1504960", - "tt3281258", - "tt2369154", - "tt1525580", - "tt2231536", - "tt0084340", - "tt2069887", - "tt1815185", - "tt1951176", - "tt1663680", - "tt1406032", - "tt3387320", - "tt0123179", - "tt2099577", - "tt0765432", - "tt0434440", - "tt0337593", - "tt0893382", - "tt0106973", - "tt2452384", - "tt2379082", - "tt2112219", - "tt1754257", - "tt2458820", - "tt3321254", - "tt1477185", - "tt1280013", - "tt2143788", - "tt2186819", - "tt2207778", - "tt2221362", - "tt2779318", - "tt2245188", - "tt2088869", - "tt0980999", - "tt0029638", - "tt1854236", - "tt2060540", - "tt2957680", - "tt2879770", - "tt2318158", - "tt2992590", - "tt2385306", - "tt2071466", - "tt1532538", - "tt2723720", - "tt2325719", - "tt2217936", - "tt0116717", - "tt2343685", - "tt1890486", - "tt1754074", - "tt2147303", - "tt1297301", - "tt2560206", - "tt1922721", - "tt0443678", - "tt3138730", - "tt0461495", - "tt0089026", - "tt2369127", - "tt1976003", - "tt3198244", - "tt2369702", - "tt2661620", - "tt2837602", - "tt2310622", - "tt2739012", - "tt2246520", - "tt3009336", - "tt1876267", - "tt2703958", - "tt1737795", - "tt0102913", - "tt2215215", - "tt2577652", - "tt0072389", - "tt0086494", - "tt0243976", - "tt2275949", - "tt0114928", - "tt1887785", - "tt1900854", - "tt2356999", - "tt2533024", - "tt2191400", - "tt2090497", - "tt2285752", - "tt0101560", - "tt1742178", - "tt2281345", - "tt0068361", - "tt0041724", - "tt0078832", - "tt0061693", - "tt0076852", - "tt2357926", - "tt1073486", - "tt2072078", - "tt3329358", - "tt3279582", - "tt2120160", - "tt0089763", - "tt2503968", - "tt2855648", - "tt2577150", - "tt0088192", - "tt2349854", - "tt2187115", - "tt1884369", - "tt2076223", - "tt2235515", - "tt3334538", - "tt2413338", - "tt2599898", - "tt1992150", - "tt3233548", - "tt2655788", - "tt1294794", - "tt1935201", - "tt1642669", - "tt2480784", - "tt1764645", - "tt1709653", - "tt2941258", - "tt2386327", - "tt2930770", - "tt1978451", - "tt0385690", - "tt1942989", - "tt1680679", - "tt1134665", - "tt0313597", - "tt2853806", - "tt2693114", - "tt0342088", - "tt1242548", - "tt0168492", - "tt2244098", - "tt0289080", - "tt0181317", - "tt0814656", - "tt0875609", - "tt0318034", - "tt1674772", - "tt0337661", - "tt0213704", - "tt2843344", - "tt1075035", - "tt0095714", - "tt0110770", - "tt0424810", - "tt0261203", - "tt0179074", - "tt1582551", - "tt0035755", - "tt1636542", - "tt2668102", - "tt0228438", - "tt0034637", - "tt0064135", - "tt2607336", - "tt0301429", - "tt0122008", - "tt1981059", - "tt2250032", - "tt0039495", - "tt0120699", - "tt0128690", - "tt0128089", - "tt0360985", - "tt1990420", - "tt1667317", - "tt1974254", - "tt2424028", - "tt0128996", - "tt1071820", - "tt1241721", - "tt0035614", - "tt2258212", - "tt2807624", - "tt0122617", - "tt2359347", - "tt2319879", - "tt2075280", - "tt0114393", - "tt2476644", - "tt3257582", - "tt0074569", - "tt1479320", - "tt1680119", - "tt0138792", - "tt2311912", - "tt0062204", - "tt1109582", - "tt1429433", - "tt2511058", - "tt0121841", - "tt1854569", - "tt2553908", - "tt0139687", - "tt0407095", - "tt1866919", - "tt1333994", - "tt3040608", - "tt1411274", - "tt0003286", - "tt0837559", - "tt2722326", - "tt2462758", - "tt1725157", - "tt2536816", - "tt2782646", - "tt0032283", - "tt3157196", - "tt0035612", - "tt0034538", - "tt2058597", - "tt3044782", - "tt1998402", - "tt2324730", - "tt0084750", - "tt2305644", - "tt0128083", - "tt2073520", - "tt0088881", - "tt2274172", - "tt0097935", - "tt0119367", - "tt0072222", - "tt2070852", - "tt1693653", - "tt3120538", - "tt2294923", - "tt0104997", - "tt1018877", - "tt0107704", - "tt0662643", - "tt0093896", - "tt2334178", - "tt0078187", - "tt2234457", - "tt0326923", - "tt2130136", - "tt2887012", - "tt1654829", - "tt2075296", - "tt3105008", - "tt1986951", - "tt1823125", - "tt1663673", - "tt3008034", - "tt2352394", - "tt0057603", - "tt2885536", - "tt1965057", - "tt2290749", - "tt1351177", - "tt2255976", - "tt2140499", - "tt0997179", - "tt2359002", - "tt0122768", - "tt1814905", - "tt1391087", - "tt2197905", - "tt1339161", - "tt2887426", - "tt2592046", - "tt2650986", - "tt2748088", - "tt2404269", - "tt1806827", - "tt2241741", - "tt0072933", - "tt2958484", - "tt2567390", - "tt1872138", - "tt2104985", - "tt2108541", - "tt1409772", - "tt3034278", - "tt2350432", - "tt0194104", - "tt2658768", - "tt2551428", - "tt0074701", - "tt2167715", - "tt2999688", - "tt2125698", - "tt1894616", - "tt1333885", - "tt2912578", - "tt0137890", - "tt2261542", - "tt2814372", - "tt2436516", - "tt0472514", - "tt2806788", - "tt2861320", - "tt1837587", - "tt1899142", - "tt2664080", - "tt0061851", - "tt2237822", - "tt1893326", - "tt2079512", - "tt2385104", - "tt2856272", - "tt0058073", - "tt2369235", - "tt1805454", - "tt3095900", - "tt2190367", - "tt2422212", - "tt1789091", - "tt2358937", - "tt2935888", - "tt3067038", - "tt1826689", - "tt1942876", - "tt1506998", - "tt0105434", - "tt2093280", - "tt0100645", - "tt1233548", - "tt0169707", - "tt2349212", - "tt0102950", - "tt2112131", - "tt1735350", - "tt1759682", - "tt0053171", - "tt2608998", - "tt0070180", - "tt0116607", - "tt2380408", - "tt2056520", - "tt2276778", - "tt1439235", - "tt2521724", - "tt2261629", - "tt2782834", - "tt1313130", - "tt2259392", - "tt2243246", - "tt0254256", - "tt0195209", - "tt0273777", - "tt1054116", - "tt1967697", - "tt0137995", - "tt1797348", - "tt1921119", - "tt2072066", - "tt1787837", - "tt0129831", - "tt0461894", - "tt0782690", - "tt3010462", - "tt0138745", - "tt2132485", - "tt1954811", - "tt2245223", - "tt1937222", - "tt1817276", - "tt1876360", - "tt2324098", - "tt2059193", - "tt1656194", - "tt0934458", - "tt2448704", - "tt1568929", - "tt2308497", - "tt1876373", - "tt0014624", - "tt2669872", - "tt0050709", - "tt1847584", - "tt0111105", - "tt2321257", - "tt0198723", - "tt0114581", - "tt2239078", - "tt2336846", - "tt0024685", - "tt0094066", - "tt2131523", - "tt2204282", - "tt0230825", - "tt0023028", - "tt1303039", - "tt1253565", - "tt1406035", - "tt2337993", - "tt0423034", - "tt1942951", - "tt0059335", - "tt2114440", - "tt2552570", - "tt1128959", - "tt0120125", - "tt2319002", - "tt2393787", - "tt1427689", - "tt0109494", - "tt0120086", - "tt0849258", - "tt0082241", - "tt0370613", - "tt0959880", - "tt1757939", - "tt2942226", - "tt0139060", - "tt2504910", - "tt0023213", - "tt0021735", - "tt0072637", - "tt2626432", - "tt1535975", - "tt0110197", - "tt2332801", - "tt0469965", - "tt0054692", - "tt0179809", - "tt2650718", - "tt2627146", - "tt2170228", - "tt1980033", - "tt2317102", - "tt2927068", - "tt2125653", - "tt2180465", - "tt1333887", - "tt2397425", - "tt0800235", - "tt0098369", - "tt2086830", - "tt0976074", - "tt1957955", - "tt1382728", - "tt2332881", - "tt2386203", - "tt0865557", - "tt2321517", - "tt0132893", - "tt1852040", - "tt1231285", - "tt2395155", - "tt1874789", - "tt2381989", - "tt0084538", - "tt2056740", - "tt1276962", - "tt0023631", - "tt2085888", - "tt2113073", - "tt0119893", - "tt2170301", - "tt1492849", - "tt0397696", - "tt1572146", - "tt2691554", - "tt0357842", - "tt1977817", - "tt1754633", - "tt0082213", - "tt2580928", - "tt2592336", - "tt0020018", - "tt2429870", - "tt2111466", - "tt0059312", - "tt0050174", - "tt1305039", - "tt1587411", - "tt0046006", - "tt1979345", - "tt1934260", - "tt2182001", - "tt2388208", - "tt1666168", - "tt2417568", - "tt1934269", - "tt0839773", - "tt1821449", - "tt2199711", - "tt0156115", - "tt2071458", - "tt2167791", - "tt2649366", - "tt1552436", - "tt2206354", - "tt2375664", - "tt0289320", - "tt2317171", - "tt0065374", - "tt2137818", - "tt1956407", - "tt0287826", - "tt2741136", - "tt0037902", - "tt2248944", - "tt1964630", - "tt0037402", - "tt2099788", - "tt0038936", - "tt1975158", - "tt2108546", - "tt0037053", - "tt2258281", - "tt0135613", - "tt1845283", - "tt2649128", - "tt2387413", - "tt1978480", - "tt2474156", - "tt2493386", - "tt0461674", - "tt1877788", - "tt2328749", - "tt2093255", - "tt1945087", - "tt2391009", - "tt0150742", - "tt2025511", - "tt2265116", - "tt2055593", - "tt0135024", - "tt2082335", - "tt1367236", - "tt2088735", - "tt2485988", - "tt2542544", - "tt1438214", - "tt2162565", - "tt2125423", - "tt2473572", - "tt2312702", - "tt0405022", - "tt1512897", - "tt1696535", - "tt0016545", - "tt0923824", - "tt0060186", - "tt1098326", - "tt2433190", - "tt0061343", - "tt2536030", - "tt1764275", - "tt2579836", - "tt2139965", - "tt2178802", - "tt1856047", - "tt2226178", - "tt0178352", - "tt1405809", - "tt2370378", - "tt2069798", - "tt1856014", - "tt2281267", - "tt2417286", - "tt2397573", - "tt1735200", - "tt0235539", - "tt2288037", - "tt2451374", - "tt2024519", - "tt1735221", - "tt0078868", - "tt1491605", - "tt1833835", - "tt2247134", - "tt2590280", - "tt2358412", - "tt1572491", - "tt0094849", - "tt2667242", - "tt2404519", - "tt2339487", - "tt2064816", - "tt2705666", - "tt2538176", - "tt2240784", - "tt2062559", - "tt1961604", - "tt1961279", - "tt2181989", - "tt1980959", - "tt0060531", - "tt1519663", - "tt1808240", - "tt1893364", - "tt0380277", - "tt0043967", - "tt0056174", - "tt2209414", - "tt0117397", - "tt1091869", - "tt2378000", - "tt1340588", - "tt0120166", - "tt1624413", - "tt1473397", - "tt0865561", - "tt2279083", - "tt0069974", - "tt2617734", - "tt1934436", - "tt1924336", - "tt0387925", - "tt0108495", - "tt2103171", - "tt2053378", - "tt0374621", - "tt0069197", - "tt0069303", - "tt0286516", - "tt0085991", - "tt0049271", - "tt2150332", - "tt0820863", - "tt1700443", - "tt2246673", - "tt0089009", - "tt0282971", - "tt1782453", - "tt2008486", - "tt0084358", - "tt2459496", - "tt2458582", - "tt0046471", - "tt1776088", - "tt1846649", - "tt0053112", - "tt2404153", - "tt1656197", - "tt1507261", - "tt1160012", - "tt1710994", - "tt1659215", - "tt1666800", - "tt2209300", - "tt2380247", - "tt2201083", - "tt0036901", - "tt1540931", - "tt2209386", - "tt2312602", - "tt2281425", - "tt2197849", - "tt0056886", - "tt1117523", - "tt2321901", - "tt0035506", - "tt1930327", - "tt1549584", - "tt2363219", - "tt1815998", - "tt1527813", - "tt1738366", - "tt1674057", - "tt2190475", - "tt2078733", - "tt0082343", - "tt2073693", - "tt0056207", - "tt1786442", - "tt0116348", - "tt0039040", - "tt0454082", - "tt2324544", - "tt0139719", - "tt0142260", - "tt0183717", - "tt0431839", - "tt0990413", - "tt2536086", - "tt2120057", - "tt0077944", - "tt0044698", - "tt0901241", - "tt1795029", - "tt0197273", - "tt1976608", - "tt1955043", - "tt1724982", - "tt2088029", - "tt2183152", - "tt1989712", - "tt2327495", - "tt2219868", - "tt2417854", - "tt1090749", - "tt1508245", - "tt2083379", - "tt2370034", - "tt1414404", - "tt0239969", - "tt0067197", - "tt1986871", - "tt0313532", - "tt0088693", - "tt2406636", - "tt1632477", - "tt2377938", - "tt0045603", - "tt0280185", - "tt2253708", - "tt1375789", - "tt2525450", - "tt0225002", - "tt0280911", - "tt0281354", - "tt0280676", - "tt0113370", - "tt0280022", - "tt0281701", - "tt0280021", - "tt0282269", - "tt0380263", - "tt1928123", - "tt2310157", - "tt0051671", - "tt1787054", - "tt0280499", - "tt2275861", - "tt1239374", - "tt2006894", - "tt2475692", - "tt1964570", - "tt0056693", - "tt2141717", - "tt2293218", - "tt0282393", - "tt1919137", - "tt2592910", - "tt2203951", - "tt2279313", - "tt1877580", - "tt1720073", - "tt0106469", - "tt2650548", - "tt2056778", - "tt2403849", - "tt1497876", - "tt2168938", - "tt1499302", - "tt1626838", - "tt2328505", - "tt2334731", - "tt0198803", - "tt2209426", - "tt2401621", - "tt2610768", - "tt1013607", - "tt2238803", - "tt0422037", - "tt0662647", - "tt0109282", - "tt1628069", - "tt0437806", - "tt0662644", - "tt2327453", - "tt2174072", - "tt0976867", - "tt2009402", - "tt1084683", - "tt0986075", - "tt0783476", - "tt0344777", - "tt1783798", - "tt2355823", - "tt1430116", - "tt1547084", - "tt1860359", - "tt0163178", - "tt1783232", - "tt1319569", - "tt2152887", - "tt2124074", - "tt0111579", - "tt2069708", - "tt1785394", - "tt1329370", - "tt1568892", - "tt1620604", - "tt1891970", - "tt2255735", - "tt1602620", - "tt2622420", - "tt0072204", - "tt0086051", - "tt2212658", - "tt1787988", - "tt0422419", - "tt0199065", - "tt1082577", - "tt0104507", - "tt1435990", - "tt0029957", - "tt2053339", - "tt1555058", - "tt0407783", - "tt0050210", - "tt2081260", - "tt0137004", - "tt0360323", - "tt1507564", - "tt1167660", - "tt2460656", - "tt1872819", - "tt2069100", - "tt2062580", - "tt0030348", - "tt2020110", - "tt2102396", - "tt1728982", - "tt2128694", - "tt2599106", - "tt2321373", - "tt1904887", - "tt1860181", - "tt2297906", - "tt2458314", - "tt1727491", - "tt1756595", - "tt1687856", - "tt1490678", - "tt1730342", - "tt1235853", - "tt2400284", - "tt1664813", - "tt0074916", - "tt0119705", - "tt1493813", - "tt1758610", - "tt1954470", - "tt0142251", - "tt2167970", - "tt1693830", - "tt0278737", - "tt1663321", - "tt0141625", - "tt0278012", - "tt0093891", - "tt0040580", - "tt2633114", - "tt0278885", - "tt0138795", - "tt0279055", - "tt1363091", - "tt1841840", - "tt1954688", - "tt0278930", - "tt2096541", - "tt0490701", - "tt1772984", - "tt1650031", - "tt1845849", - "tt1661067", - "tt0132726", - "tt0372824", - "tt0086168", - "tt1356285", - "tt0974584", - "tt2040608", - "tt1861307", - "tt0091820", - "tt1828972", - "tt2062961", - "tt2308860", - "tt2093109", - "tt1667905", - "tt1582235", - "tt0124899", - "tt2560016", - "tt1935909", - "tt2023367", - "tt1857605", - "tt2209266", - "tt2229842", - "tt0117216", - "tt0175327", - "tt2077826", - "tt0062746", - "tt1114723", - "tt0125591", - "tt2290789", - "tt0048549", - "tt2094854", - "tt1441083", - "tt0302566", - "tt0456069", - "tt1842532", - "tt2123996", - "tt0032359", - "tt2081255", - "tt1329457", - "tt1679332", - "tt1865425", - "tt0089821", - "tt0069027", - "tt0099029", - "tt2044888", - "tt2411024", - "tt2460690", - "tt2306783", - "tt0094011", - "tt2288742", - "tt2546480", - "tt0086650", - "tt1857797", - "tt1891942", - "tt2388725", - "tt0301414", - "tt2323551", - "tt1736636", - "tt1850394", - "tt2414702", - "tt1349486", - "tt0103666", - "tt0378897", - "tt0127932", - "tt1406044", - "tt1510918", - "tt0411234", - "tt0070380", - "tt1194238", - "tt2375417", - "tt0058275", - "tt0427582", - "tt2180333", - "tt0452675", - "tt1822302", - "tt1406042", - "tt1406029", - "tt2063834", - "tt1759660", - "tt0447431", - "tt1303042", - "tt0371739", - "tt2511190", - "tt2075107", - "tt2412338", - "tt2662762", - "tt2064984", - "tt1528510", - "tt2166214", - "tt2112281", - "tt1781773", - "tt2249167", - "tt1664708", - "tt2053352", - "tt1709157", - "tt0110463", - "tt0414879", - "tt1888555", - "tt0092776", - "tt1634286", - "tt2193782", - "tt1854582", - "tt0419198", - "tt0177323", - "tt0862888", - "tt0165494", - "tt1893277", - "tt2234275", - "tt0337907", - "tt2080291", - "tt1582383", - "tt2186933", - "tt1595061", - "tt0281718", - "tt0055609", - "tt2088919", - "tt1803178", - "tt1566541", - "tt0966573", - "tt0074868", - "tt0960801", - "tt2301039", - "tt0059262", - "tt2051850", - "tt1155588", - "tt2077677", - "tt2184211", - "tt1320395", - "tt0058063", - "tt1733525", - "tt0813547", - "tt0056363", - "tt2222550", - "tt0157182", - "tt1748224", - "tt1230161", - "tt1795588", - "tt0054851", - "tt0113249", - "tt2251662", - "tt0997229", - "tt1975320", - "tt1446695", - "tt2404645", - "tt0004395", - "tt1895314", - "tt2388920", - "tt2401575", - "tt0072072", - "tt1840911", - "tt0004284", - "tt0003961", - "tt1323914", - "tt0004091", - "tt1284656", - "tt0004011", - "tt0003934", - "tt0004100", - "tt0007613", - "tt0003733", - "tt0004736", - "tt1671513", - "tt2235988", - "tt0051542", - "tt2370792", - "tt0479257", - "tt2256514", - "tt2296404", - "tt1528225", - "tt1984279", - "tt2120152", - "tt0374807", - "tt1303037", - "tt1482186", - "tt2303104", - "tt2397619", - "tt1601238", - "tt1430625", - "tt1521791", - "tt2078586", - "tt2365776", - "tt1754374", - "tt2091368", - "tt0055578", - "tt1535100", - "tt1476427", - "tt1630052", - "tt1815799", - "tt0055116", - "tt2120779", - "tt0055114", - "tt2069885", - "tt0055564", - "tt2389344", - "tt1753584", - "tt0045037", - "tt0023422", - "tt2294729", - "tt2077772", - "tt2106739", - "tt1500906", - "tt0174577", - "tt1804607", - "tt1656179", - "tt2319760", - "tt0033356", - "tt1980162", - "tt1540816", - "tt0446771", - "tt2113113", - "tt1667691", - "tt1565958", - "tt1130965", - "tt1213921", - "tt0038557", - "tt0057974", - "tt0770753", - "tt1327827", - "tt1632726", - "tt0040751", - "tt2078672", - "tt2302561", - "tt1682186", - "tt0054423", - "tt0057628", - "tt0054289", - "tt0163554", - "tt0054788", - "tt0040430", - "tt1020955", - "tt0046904", - "tt0277657", - "tt0092828", - "tt0180752", - "tt0281325", - "tt0277784", - "tt0281236", - "tt0280574", - "tt0082437", - "tt0058605", - "tt0069507", - "tt1825166", - "tt1859522", - "tt1667133", - "tt1407055", - "tt1650555", - "tt0138624", - "tt1583737", - "tt0178515", - "tt1183939", - "tt1312222", - "tt0805640", - "tt2082197", - "tt1303900", - "tt1864491", - "tt1693107", - "tt2184095", - "tt1233487", - "tt0072260", - "tt2283748", - "tt0014440", - "tt1493858", - "tt1608782", - "tt2171416", - "tt0070569", - "tt1927068", - "tt1720189", - "tt2215273", - "tt1806911", - "tt0071784", - "tt2232446", - "tt1832405", - "tt1997289", - "tt1623660", - "tt2108538", - "tt1684225", - "tt1754478", - "tt2087820", - "tt2476918", - "tt0187819", - "tt1646221", - "tt2273507", - "tt2296692", - "tt1964868", - "tt1604554", - "tt2047891", - "tt1678054", - "tt0021148", - "tt2331066", - "tt2210879", - "tt1217059", - "tt1949554", - "tt1872880", - "tt2008562", - "tt1644503", - "tt2317744", - "tt1918886", - "tt2391843", - "tt0032819", - "tt1023725", - "tt0992360", - "tt2302931", - "tt1673736", - "tt1624376", - "tt0973512", - "tt1783392", - "tt0036161", - "tt1240282", - "tt0036398", - "tt1625562", - "tt0100416", - "tt1939753", - "tt0048459", - "tt2073137", - "tt0808289", - "tt2078613", - "tt0053247", - "tt1279426", - "tt1807892", - "tt2049511", - "tt0086146", - "tt1637656", - "tt1864526", - "tt1394039", - "tt1394038", - "tt1530975", - "tt2140189", - "tt1900942", - "tt1394037", - "tt0985431", - "tt1646979", - "tt0265080", - "tt2174089", - "tt0244046", - "tt1942937", - "tt0166849", - "tt0067283", - "tt0246294", - "tt2256858", - "tt0026684", - "tt2395349", - "tt0350725", - "tt1670638", - "tt1462053", - "tt1579235", - "tt0080947", - "tt1142803", - "tt1675309", - "tt1606382", - "tt0351075", - "tt0247043", - "tt1723126", - "tt1510114", - "tt1830166", - "tt0969031", - "tt0216533", - "tt1393566", - "tt0216719", - "tt0983613", - "tt0070350", - "tt1698551", - "tt1250861", - "tt1776222", - "tt2281111", - "tt1530953", - "tt2091243", - "tt1511425", - "tt1359553", - "tt1831623", - "tt1569931", - "tt0110480", - "tt0337744", - "tt0337721", - "tt1734442", - "tt0087135", - "tt221579", - "tt0089279", - "tt1172957", - "tt0048818", - "tt1600435", - "tt2367036", - "tt1311710", - "tt0035430", - "tt2116909", - "tt1650394", - "tt0893570", - "tt1710354", - "tt0098157", - "tt0174260", - "tt1465513", - "tt0079726", - "tt0465434", - "tt1588374", - "tt2398282", - "tt1529331", - "tt0325857", - "tt0122890", - "tt0082770", - "tt0815498", - "tt1445520", - "tt0192782", - "tt1835920", - "tt1930344", - "tt0143487", - "tt0134275", - "tt0180854", - "tt0183761", - "tt0260049", - "tt0265637", - "tt0265407", - "tt2371411", - "tt1278429", - "tt2226301", - "tt0036093", - "tt1844635", - "tt0037811", - "tt2167873", - "tt1301308", - "tt0045954", - "tt1460641", - "tt1764508", - "tt1918806", - "tt0082487", - "tt1608182", - "tt1833879", - "tt1516593", - "tt1720172", - "tt1737747", - "tt1714127", - "tt0334267", - "tt1233576", - "tt0380625", - "tt0332398", - "tt0054425", - "tt0246567", - "tt2072268", - "tt1918639", - "tt1846526", - "tt0062092", - "tt1244505", - "tt1316540", - "tt1988544", - "tt1776252", - "tt0093578", - "tt0141187", - "tt2024555", - "tt0107604", - "tt1680311", - "tt1857596", - "tt1876901", - "tt0067508", - "tt0138942", - "tt0061017", - "tt0493155", - "tt1821385", - "tt0135361", - "tt0061802", - "tt0481009", - "tt0061833", - "tt1772424", - "tt1913002", - "tt1533053", - "tt2402613", - "tt1754277", - "tt0046846", - "tt2028530", - "tt2090463", - "tt1692227", - "tt1674776", - "tt0808245", - "tt1657885", - "tt1558256", - "tt0893610", - "tt1482991", - "tt1526578", - "tt1784538", - "tt0103336", - "tt1716739", - "tt0228508", - "tt0309379", - "tt1580021", - "tt2234550", - "tt2142955", - "tt2147293", - "tt1763194", - "tt0914368", - "tt1699498", - "tt1034090", - "tt0112906", - "tt2055666", - "tt1937388", - "tt0086369", - "tt0087418", - "tt0485877", - "tt2271135", - "tt1735900", - "tt2336373", - "tt2328503", - "tt0036356", - "tt2093044", - "tt0071477", - "tt2290147", - "tt1557720", - "tt1829041", - "tt1679681", - "tt1525570", - "tt1540262", - "tt1579948", - "tt1846252", - "tt0129358", - "tt2024351", - "tt0072156", - "tt1634524", - "tt0482886", - "tt0320795", - "tt1834614", - "tt1331115", - "tt1813327", - "tt1966594", - "tt2058124", - "tt2246234", - "tt2012645", - "tt1774438", - "tt1899100", - "tt2328841", - "tt0034128", - "tt0034682", - "tt2034741", - "tt0037450", - "tt0034685", - "tt1145157", - "tt0355609", - "tt1969175", - "tt1687254", - "tt1484954", - "tt0310233", - "tt1610516", - "tt1817088", - "tt1628043", - "tt1748051", - "tt0066360", - "tt2125651", - "tt1681666", - "tt2063008", - "tt1430811", - "tt0147347", - "tt0181323", - "tt1582268", - "tt0139288", - "tt1687216", - "tt1127886", - "tt0136823", - "tt0086876", - "tt0126426", - "tt1446673", - "tt1326259", - "tt1331092", - "tt0045466", - "tt0173863", - "tt0160578", - "tt2299577", - "tt2321445", - "tt0191839", - "tt1651337", - "tt2016894", - "tt2393829", - "tt1741694", - "tt0193738", - "tt1169133", - "tt2093951", - "tt1703232", - "tt1552173", - "tt0053732", - "tt2080323", - "tt2322683", - "tt1804508", - "tt1663660", - "tt1645129", - "tt0983250", - "tt2047670", - "tt1620785", - "tt2153406", - "tt1691343", - "tt2191861", - "tt1433817", - "tt2087985", - "tt1319032", - "tt0083561", - "tt2226666", - "tt1706317", - "tt0046049", - "tt1460739", - "tt1667826", - "tt1764664", - "tt0121853", - "tt0036075", - "tt0259621", - "tt0126449", - "tt1866230", - "tt1981568", - "tt0046829", - "tt1941668", - "tt0254749", - "tt0494206", - "tt2221032", - "tt1733118", - "tt1754944", - "tt1516595", - "tt1935749", - "tt0245850", - "tt0117288", - "tt0078313", - "tt1600438", - "tt1954498", - "tt1789724", - "tt1742084", - "tt0478213", - "tt1635659", - "tt1535962", - "tt0036449", - "tt2191641", - "tt1401643", - "tt1887759", - "tt0090925", - "tt0081053", - "tt1922689", - "tt0954348", - "tt2202427", - "tt1753899", - "tt1533818", - "tt2241069", - "tt0875613", - "tt2041321", - "tt1002567", - "tt1109616", - "tt1326277", - "tt1604070", - "tt1519468", - "tt1686126", - "tt1589505", - "tt0929259", - "tt1719634", - "tt1796503", - "tt2404553", - "tt1975205", - "tt2248789", - "tt1670932", - "tt2319889", - "tt0057652", - "tt2136759", - "tt1931470", - "tt1700489", - "tt1258201", - "tt1814790", - "tt1972646", - "tt2106763", - "tt1728986", - "tt2261471", - "tt2043979", - "tt2144938", - "tt2308797", - "tt1384591", - "tt1553199", - "tt2301291", - "tt0096936", - "tt1596264", - "tt1560969", - "tt2386231", - "tt1417067", - "tt1572154", - "tt0433346", - "tt2268617", - "tt1747924", - "tt2125496", - "tt1440136", - "tt0174685", - "tt1295026", - "tt1401636", - "tt0049065", - "tt0238417", - "tt0041772", - "tt0820482", - "tt0769775", - "tt1954780", - "tt0099349", - "tt1816705", - "tt0045696", - "tt1699513", - "tt1550312", - "tt1922751", - "tt1641633", - "tt0180845", - "tt1648154", - "tt1782415", - "tt0077877", - "tt1687900", - "tt1886504", - "tt1657470", - "tt0415727", - "tt1249307", - "tt0511739", - "tt0073327", - "tt0050870", - "tt1701976", - "tt1444680", - "tt0999873", - "tt0325957", - "tt1068243", - "tt0072179", - "tt1606228", - "tt1532384", - "tt0068966", - "tt1785411", - "tt1711465", - "tt1722476", - "tt1606761", - "tt1669277", - "tt1702921", - "tt1954214", - "tt0059464", - "tt0064729", - "tt0130633", - "tt0265587", - "tt0451108", - "tt0418451", - "tt1555218", - "tt2302529", - "tt0972855", - "tt1784575", - "tt2288129", - "tt0063690", - "tt0906013", - "tt0072615", - "tt0076127", - "tt0079636", - "tt0064677", - "tt0310022", - "tt0357201", - "tt2099673", - "tt0447642", - "tt0205782", - "tt2214945", - "tt1514043", - "tt0061060", - "tt1619277", - "tt1434944", - "tt2056501", - "tt1712187", - "tt0847745", - "tt1686902", - "tt1507250", - "tt1687277", - "tt0395713", - "tt1503714", - "tt2137376", - "tt2022347", - "tt1839596", - "tt1206086", - "tt1100906", - "tt1394322", - "tt0483200", - "tt0480775", - "tt1430620", - "tt0265307", - "tt2100546", - "tt1980130", - "tt1846803", - "tt0056452", - "tt0074671", - "tt1679538", - "tt1528313", - "tt1784670", - "tt1582196", - "tt0996952", - "tt0083675", - "tt1710627", - "tt1398999", - "tt1705120", - "tt1194612", - "tt1236370", - "tt0329042", - "tt0477457", - "tt0884214", - "tt0201057", - "tt1647692", - "tt1734578", - "tt1599975", - "tt1542852", - "tt1675197", - "tt1691153", - "tt0166199", - "tt0116791", - "tt0213749", - "tt1698639", - "tt1276988", - "tt1220873", - "tt1604577", - "tt1455618", - "tt1600701", - "tt1390533", - "tt1355640", - "tt1308754", - "tt1400558", - "tt1395183", - "tt0404552", - "tt977855", - "tt1340107", - "tt1241258", - "tt1430137", - "tt0295682", - "tt1506990", - "tt1475549", - "tt1787636", - "tt1589487", - "tt1343110", - "tt1634508", - "tt0489342", - "tt1781069", - "tt1129437", - "tt1566648", - "tt1101031", - "tt1440755", - "tt1285240", - "tt1308182", - "tt1583356", - "tt1382725", - "tt1705773", - "tt1446201", - "tt1212007", - "tt1474889", - "tt1430096", - "tt1456661", - "tt1136688", - "tt1264115", - "tt0421974", - "tt1328909", - "tt1535107", - "tt1018789", - "tt0494826", - "tt1754332", - "tt0988102", - "tt1512201", - "tt1263800", - "tt1003051", - "tt1198153", - "tt1613315", - "tt1305067", - "tt1051241", - "tt1543920", - "tt1573072", - "tt1192422", - "tt1326954", - "tt1458956", - "tt1390543", - "tt1344784", - "tt1352852", - "tt1103255", - "tt1678053", - "tt1334549", - "tt1154826", - "tt1292652", - "tt0969653", - "tt1225703", - "tt1493246", - "tt0106922", - "tt1198101", - "tt1555126", - "tt1451698", - "tt0489210", - "tt1158933", - "tt1059233", - "tt1620549", - "tt1287875", - "tt1273813", - "tt1426383", - "tt1370426", - "tt1235838", - "tt1217426", - "tt1590024", - "tt1629718", - "tt0904128", - "tt0475970", - "tt1124061", - "tt0847215", - "tt0469094", - "tt1183917", - "tt1190894", - "tt1492872", - "tt1568927", - "tt1568916", - "tt1277400", - "tt1070781", - "tt1569369", - "tt1401641", - "tt1292033", - "tt1610301", - "tt1035730", - "tt1459000", - "tt1598440", - "tt1236440", - "tt1345777", - "tt1311082", - "tt1320236", - "tt1378811", - "tt0472073", - "tt1149362", - "tt1251735", - "tt1422201", - "tt1322277", - "tt1254696", - "tt1090674", - "tt1192621", - "tt1215523", - "tt1591585", - "tt0443771", - "tt1451797", - "tt1112784", - "tt0479204", - "tt1501658", - "tt1342964", - "tt1227929", - "tt1526300", - "tt1148229", - "tt1085515", - "tt0386064", - "tt1522835", - "tt1310569", - "tt0974662", - "tt1471846", - "tt1075113", - "tt1274418", - "tt1242539", - "tt1091207", - "tt1489946", - "tt0993841", - "tt1024219", - "tt0499238", - "tt438488", - "tt1135089", - "tt1337040", - "tt1360833", - "tt1094296", - "tt1307456", - "tt0378428", - "tt1266121", - "tt1265993", - "tt1156470", - "tt1046936", - "tt1096991", - "tt0299594", - "tt0066001", - "tt0059114", - "tt1124396", - "tt0826711", - "tt1399952", - "tt0115644", - "tt0420251", - "tt1462651", - "tt1094661", - "tt1233247", - "tt0113368", - "tt1264914", - "tt0339535", - "tt0488763", - "tt1084019", - "tt0120265", - "tt0956208", - "tt1230545", - "tt0488762", - "tt0972558", - "tt0860866", - "tt0448993", - "tt1042499", - "tt0460485", - "tt0261014", - "tt0411795", - "tt1190537", - "tt0499262", - "tt0084156", - "tt1305621", - "tt0300000", - "tt0469838", - "tt0366894", - "tt0343095", - "tt0969754", - "tt0496328", - "tt0275623", - "tt0432103", - "tt0169590", - "tt0403358", - "tt0946998", - "tt1244496", - "tt0407251", - "tt1193516", - "tt0388423", - "tt0441048", - "tt0250223", - "tt0123532", - "tt0071207", - "tt0361240", - "tt1114258", - "tt0110570", - "tt0351461", - "tt0046688", - "tt0119298", - "tt0426236", - "tt0301949", - "tt0133162", - "tt0098063", - "tt0424227", - "tt0056290", - "tt0493393", - "tt0364517", - "tt0416316", - "tt0079315", - "tt0136759", - "tt0057422", - "tt0083109", - "tt0101301", - "tt0107447", - "tt0973844", - "tt1014796", - "tt0823158", - "tt0449338", - "tt0065848", - "tt0892737", - "tt0058135", - "tt0892737", - "tt0449338", - "tt0065848", - "tt0823158", - "tt1014796", - "tt0058135", - "tt0973844", - "tt0892737", - "tt0058135", - "tt0823158", - "tt1014796", - "tt0973844", - "tt0065848", - "tt0449338", - "tt0892737", - "tt0973844", - "tt0823158", - "tt0449338", - "tt0065848", - "tt0058135", - "tt1014796", - "tt1137448", - "tt0043590", - "tt1306953", - "tt0822858", - "tt0131468", - "tt2611060", - "tt1229345", - "tt11415816", - "tt1372692", - "tt0117395", - "tt0083929", - "tt8339444", - "tt4916178", - "tt1998368", - "tt0089537", - "tt5805768", - "tt1243375", - "tt5774060", - "tt1209319", - "tt2476426", - "tt2325908", - "tt0097323", - "tt00281811", - "tt1340798", - "tt10078502", - "tt1562328", - "tt0454792", - "tt7613260", - "tt1836926", - "tt2831118", - "tt10691288", - "tt0404225", - "tt5621712", - "tt3413690", - "tt0040578", - "tt1765660", - "tt0052047", - "tt0097555", - "tt10830086", - "tt0122718", - "tt3261182", - "tt12036096", - "tt10521028", - "tt6668212", - "tt0104745", - "tt3121430", - "tt0142244", - "tt6713802", - "tt5330938", - "tt6782632", - "tt1465518", - "tt0024631", - "tt6208096", - "tt5117326", - "tt7635268", - "tt0108596", - "tt6658510", - "tt0080149", - "tt1852028", - "tt3397266", - "tt0062455", - "tt9358256", - "tt1035733", - "tt3460560", - "tt0045492", - "tt0345967", - "tt1107850", - "tt1754078", - "tt0065104", - "tt0290843", - "tt10919974", - "tt0457482", - "tt6189052", - "tt8089234", - "tt0415167", - "tt7969836", - "tt7304802", - "tt1497617", - "tt1732563", - "tt0072623", - "tt0090866", - "tt0126946", - "tt9663666", - "tt1223932", - "tt5105720", - "tt1780967", - "tt5123896", - "tt1337055", - "tt4208886", - "tt4429160", - "tt0210299", - "tt7998238", - "tt0101817", - "tt9647768", - "tt8228288", - "tt0860462", - "tt10680412", - "tt3169780", - "tt0964586", - "tt9540566", - "tt3142346", - "tt8806886", - "tt3295734", - "tt5332252", - "tt11229886", - "tt9806336", - "tt0491698", - "tt0061162", - "tt11523762", - "tt2741098", - "tt1327701", - "tt2183752", - "tt3612126", - "tt0102795", - "tt0419967", - "tt3949186", - "tt0064417", - "tt6961658", - "tt0325352", - "tt5094990", - "tt0040566", - "tt0202478", - "tt9358160", - "tt7521000", - "tt9759888", - "tt9430698", - "tt0430059", - "tt4855062", - "tt0144681", - "tt0901693", - "tt6388948", - "tt5213016", - "tt0123380", - "tt0093748", - "tt3165218", - "tt0098139", - "tt1483799", - "tt9784068", - "tt0101819", - "tt2388677", - "tt0454224", - "tt8507516", - "tt1234559", - "tt8540100", - "tt5105742", - "tt0050585", - "tt1120889", - "tt6532954", - "tt1145479", - "tt0350659", - "tt6704880", - "tt6990224", - "tt9578746", - "tt11130668", - "tt0084412", - "tt9782756", - "tt9104296", - "tt6568874", - "tt0092897", - "tt0254252", - "tt8710832", - "tt0024352", - "tt0038895", - "tt0073342", - "tt0109699", - "tt2177511", - "tt2819446", - "tt00", - "tt9024292", - "tt1057581", - "tt0117768", - "tt4727514", - "tt1758770", - "tt6108090", - "tt0291832", - "tt0160376", - "tt0384736", - "tt0150021", - "tt0985049", - "tt0457643", - "tt0295721", - "tt9646548", - "tt11952660", - "tt0473658", - "tt9050330", - "tt6712118", - "tt0067513", - "tt0496245", - "tt1707687", - "tt0293573", - "tt0075993", - "tt2048918", - "tt0082556", - "tt4658482", - "tt2916772", - "tt1171220", - "tt0120414", - "tt4506686", - "tt0857275", - "tt2085986", - "tt0385057", - "tt10382610", - "tt1612143", - "tt2319456", - "tt0056963", - "tt7010456", - "tt5785854", - "tt9617582", - "tt1112756", - "tt7801350", - "tt10359764", - "tt0197203", - "tt2657292", - "tt9011916", - "tt10008784", - "tt0235618", - "tt6914122", - "tt10289350", - "tt0396659", - "tt6826526", - "tt10062530", - "tt0287635", - "tt0067324", - "tt5105636", - "tt10132922", - "tt8971476", - "tt1655416", - "tt1422786", - "tt6744360", - "tt0021874", - "tt9000466", - "tt0099254", - "tt9246830", - "tt10055028", - "tt8368406", - "tt0033887", - "tt0486506", - "tt9403508", - "tt0192301", - "tt0157871", - "tt6073760", - "tt6192716", - "tt6285944", - "tt4858674", - "tt0074473", - "tt9173418", - "tt3640100", - "tt4125844", - "tt2630352", - "tt3514810", - "tt0071983", - "tt0042665", - "tt1639082", - "tt2353955", - "tt1268204", - "tt8150698", - "tt7847324", - "tt10269518", - "tt0072024", - "tt0098219", - "tt0066216", - "tt8713448", - "tt10828204", - "tt1059955", - "tt3302266", - "tt0983946", - "tt2076229", - "tt10680114", - "tt11916278", - "tt10579956", - "tt10917276", - "tt8116640", - "tt9261416", - "tt0482473", - "tt8130454", - "tt11934706", - "tt3096908", - "tt0037674", - "tt8025296", - "tt1611913", - "tt8036226", - "tt0758017", - "tt3475020", - "tt10601432", - "tt1825712", - "tt7292306", - "tt6263490", - "tt8926976", - "tt5296086", - "tt7420444", - "tt9341104", - "tt10832236", - "tt8653640", - "tt2835658", - "tt0044718", - "tt8599562", - "tt8497798", - "tt7275840", - "tt0099039", - "tt4949412", - "tt0084182", - "tt1675192", - "tt0063747", - "tt4834150", - "tt9079952", - "tt0100879", - "tt1562450", - "tt0113849", - "tt0261552", - "tt0109262", - "tt3655680", - "tt9214832", - "tt0360140", - "tt10419672", - "tt10890570", - "tt5105650", - "tt2543826", - "tt10892554", - "tt0076024", - "tt0168331", - "tt1433108", - "tt10177634", - "tt1890425", - "tt0075859", - "tt2623502", - "tt11202796", - "tt8159302", - "tt8863066", - "tt4038046", - "tt11616596", - "tt1412334", - "tt6587640", - "tt5950068", - "tt0044881", - "tt10702760", - "tt11652546", - "tt8811348", - "tt0094007", - "tt4765928", - "tt0390042", - "tt5570680", - "tt9001652", - "tt2014271", - "tt10109764", - "tt6739796", - "tt9815998", - "tt8991268", - "tt0082747", - "tt3556590", - "tt9357288", - "tt1022513", - "tt0976060", - "tt1233528", - "tt0076301", - "tt0131461", - "tt0105396", - "tt0142240", - "tt1029238", - "tt10540242", - "tt7159566", - "tt0063054", - "tt3474776", - "tt1079448", - "tt8896224", - "tt0364603", - "tt1132286", - "tt1172069", - "tt0229335", - "tt0127545", - "tt1156479", - "tt1645748", - "tt6076810", - "tt6899324", - "tt0106837", - "tt1611947", - "tt0096154", - "tt0060192", - "tt1543211", - "tt5684728", - "tt6200160", - "tt0060126", - "tt10198072", - "tt4500196", - "tt0499556", - "tt0025238", - "tt0099079", - "tt0152930", - "tt0219058", - "tt11808612", - "tt0082244", - "tt1941438", - "tt3098276", - "tt6317962", - "tt0052817", - "tt0100600", - "tt0339343", - "tt7535290", - "tt0218864", - "tt3633118", - "tt7134096", - "tt0060416", - "tt5377164", - "tt0078295", - "tt0087391", - "tt1241325", - "tt2527338", - "tt0144178", - "tt0293467", - "tt7904182", - "tt0080379", - "tt2739792", - "tt6874188", - "tt0156587", - "tt0168264", - "tt5608918", - "tt10720816", - "tt8544498", - "tt11050682", - "tt0108554", - "tt0071859", - "tt2094052", - "tt0047475", - "tt11014432", - "tt0143334", - "tt5116896", - "tt0879223", - "tt12092784", - "tt9310328", - "tt0070570", - "tt3316122", - "tt6098546", - "tt6961856", - "tt4788910", - "tt0029078", - "tt0870958", - "tt1533114", - "tt10590458", - "tt2259360", - "tt0069959", - "tt6512632", - "tt2007387", - "tt1942871", - "tt6911110", - "tt7697348", - "tt0164528", - "tt0809925", - "tt1756773", - "tt8747304", - "tt0317522", - "tt1643240", - "tt1756447", - "tt1782250", - "tt0176326", - "tt5868630", - "tt1943783", - "tt10129040", - "tt11908078", - "tt8288450", - "tt0036836", - "tt11384542", - "tt4202960", - "tt0070374", - "tt0043554", - "tt0112907", - "tt4074384", - "tt1372710", - "tt1249299", - "tt1874451", - "tt0138444", - "tt10044040", - "tt3701460", - "tt11804772", - "tt0453161", - "tt6961624", - "tt0322645", - "tt8026108", - "tt0074381", - "tt4257940", - "tt0445777", - "tt10095266", - "tt11615038", - "tt3140044", - "tt9537888", - "tt9747954", - "tt0080900", - "tt8854392", - "tt10756374", - "tt4674962", - "tt0048352", - "tt0929261", - "tt11922698", - "tt2771206", - "tt11611650", - "tt0105807", - "tt2214981", - "tt7150126", - "tt0314724", - "tt10648440", - "tt8665898", - "tt7119062", - "tt8064418", - "tt0101442", - "tt2246809", - "tt5325012", - "tt1430622", - "tt1241719", - "tt5770566", - "tt0060220", - "tt8816178", - "tt0274560", - "tt0122158", - "tt9418812", - "tt0120121", - "tt7399138", - "tt1818443", - "tt5941796", - "tt3746176", - "tt1282016", - "tt11952720", - "tt3030920", - "tt1295071", - "tt3243774", - "tt0124315", - "tt8186932", - "tt0077964", - "tt0106538", - "tt1941717", - "tt1003023", - "tt2354247", - "tt1606191", - "tt10510654", - "tt0397101", - "tt12144858", - "tt0984130", - "tt0315488", - "tt0070243", - "tt0854667", - "tt1145446", - "tt9111316", - "tt0076555", - "tt7286836", - "tt0105385", - "tt11597152", - "tt6720680", - "tt3884454", - "tt0216312", - "tt11294784", - "tt11563110", - "tt0068837", - "tt1871360", - "tt7737734", - "tt0107468", - "tt0234805", - "tt5542820", - "tt9127820", - "tt7838654", - "tt6116766", - "tt1505143", - "tt0090349", - "tt7779936", - "tt0978797", - "tt6330246", - "tt0346094", - "tt8634576", - "tt7115168", - "tt0847086", - "tt0014694", - "tt1657517", - "tt0194146", - "tt8403168", - "tt10793604", - "tt10126434", - "tt11661552", - "tt1479686", - "tt0144096", - "tt7146812", - "tt0083702", - "tt8289504", - "tt0446755", - "tt9581076", - "tt0019646", - "tt6143798", - "tt0167116", - "tt3233904", - "tt0443567", - "tt5769528", - "tt8430676", - "tt0124836", - "tt1340795", - "tt2551580", - "tt5527000", - "tt0312941", - "tt0377524", - "tt11861072", - "tt6292658", - "tt0102004", - "tt8759834", - "tt0046872", - "tt2420124", - "tt11143286", - "tt10864124", - "tt3455822", - "tt7520672", - "tt6296274", - "tt4340740", - "tt4962796", - "tt3030928", - "tt1927126", - "tt0104942", - "tt7884738", - "tt7997042", - "tt1246723", - "tt5488974", - "tt9651690", - "tt0378848", - "tt0163816", - "tt3748918", - "tt9898858", - "tt0482122", - "tt1603789", - "tt0058991", - "tt10244008", - "tt2309001", - "tt6926356", - "tt10740584", - "tt1631783", - "tt0080796", - "tt0074650", - "tt1674741", - "tt1718765", - "tt0479943", - "tt9684220", - "tt3746820", - "tt0282543", - "tt0313255", - "tt7879442", - "tt0835876", - "tt0051083", - "tt0057574", - "tt8485772", - "tt0070423", - "tt0848542", - "tt8686136", - "tt0796979", - "tt10709062", - "tt1602500", - "tt7755856", - "tt0479880", - "tt0063233", - "tt2350374", - "tt6745550", - "tt12020764", - "tt8244784", - "tt2404385", - "tt5105702", - "tt7335796", - "tt9779516", - "tt0405821", - "tt6439558", - "tt4693840", - "tt1342378", - "tt8391976", - "tt1272025", - "tt7625678", - "tt1327798", - "tt7772582", - "tt5691024", - "tt3804756", - "tt0217074", - "tt1494775", - "tt1587139", - "tt0054614", - "tt0483022", - "tt0448205", - "tt0804485", - "tt6390668", - "tt3458196", - "tt0223154", - "tt0995036", - "tt5717610", - "tt7357210", - "tt6012380", - "tt6612512", - "tt8395052", - "tt10850450", - "tt1730698", - "tt7842256", - "tt5721654", - "tt11823922", - "tt0222396", - "tt3280186", - "tt8360450", - "tt0414924", - "tt2392674", - "tt2372335", - "tt0882969", - "tt0318649", - "tt1122769", - "tt9016016", - "tt10131762", - "tt6969550", - "tt0234217", - "tt8631800", - "tt0034982", - "tt1199552", - "tt0032032", - "tt0390393", - "tt1151921", - "tt1487896", - "tt7120400", - "tt9378216", - "tt6180608", - "tt6610280", - "tt0452011", - "tt12092836", - "tt7764130", - "tt6843538", - "tt1543299", - "tt3037846", - "tt4171032", - "tt2763400", - "tt3065504", - "tt5474644", - "tt4760186", - "tt6958618", - "tt0342167", - "tt11223288", - "tt2326075", - "tt4438098", - "tt10892530", - "tt11708056", - "tt5192640", - "tt1449183", - "tt0399040", - "tt8826812", - "tt2258731", - "tt0231931", - "tt11990802", - "tt10270966", - "tt0284655", - "tt1328865", - "tt11029976", - "tt0444706", - "tt1577061", - "tt8904630", - "tt5138974", - "tt1153102", - "tt11656836", - "tt4620098", - "tt2481202", - "tt4353996", - "tt0856008", - "tt9787524", - "tt9643408", - "tt9358200", - "tt9402676", - "tt11173480", - "tt6850276", - "tt4960930", - "tt11892646", - "tt1471236", - "tt0342420", - "tt6945500", - "tt2521086", - "tt2309770", - "tt11189596", - "tt0070755", - "tt0067052", - "tt0043313", - "tt3717192", - "tt3838802", - "tt2112206", - "tt0479879", - "tt9244638", - "tt0055282", - "tt0447953", - "tt3613084", - "tt0030341", - "tt1524114", - "tt0104088", - "tt7500618", - "tt6509810", - "tt0073703", - "tt6538150", - "tt0377112", - "tt0386669", - "tt2033425", - "tt4515928", - "tt0072085", - "tt0840999", - "tt8413006", - "tt2916682", - "tt0044828", - "tt1977002", - "tt3612514", - "tt8924580", - "tt0099310", - "tt0102562", - "tt0093733", - "tt6782412", - "tt9345754", - "tt3262450", - "tt9214950", - "tt4287586", - "tt7629818", - "tt6264018", - "tt0470737", - "tt0117445", - "tt5868938", - "tt5269710", - "tt0043913", - "tt0057055", - "tt0117716", - "tt0216399", - "tt2063819", - "tt10167262", - "tt5808370", - "tt1243630", - "tt2953304", - "tt7336470", - "tt1361330", - "tt1486843", - "tt8545634", - "tt4201990", - "tt0097354", - "tt9033432", - "tt10120472", - "tt9803152", - "tt11348950", - "tt5105688", - "tt3266266", - "tt8242084", - "tt9147456", - "tt10294052", - "tt0243885", - "tt5462882", - "tt0988043", - "tt9522080", - "tt0343737", - "tt4572682", - "tt0342258", - "tt11152492", - "tt10575718", - "tt4047704", - "tt2305348", - "tt7334158", - "tt7665428", - "tt2367680", - "tt0119423", - "tt7959296", - "tt7516844", - "tt7545266", - "tt9442842", - "tt1137999", - "tt7858400", - "tt7113678", - "tt6413712", - "tt1340569", - "tt3098812", - "tt8324576", - "tt5588938", - "tt0051472", - "tt7531096", - "tt0142239", - "tt0023410", - "tt11033574", - "tt0892074", - "tt1318025", - "tt3733374", - "tt1570966", - "tt9239422", - "tt0804550", - "tt10027696", - "tt3105428", - "tt0082382", - "tt8902948", - "tt7622584", - "tt7177250", - "tt5174992", - "tt6803242", - "tt1942887", - "tt4574440", - "tt0267573", - "tt0427848", - "tt6400476", - "tt2319142", - "tt1095414", - "tt1502397", - "tt6095808", - "tt0144315", - "tt4136162", - "tt6875564", - "tt0342561", - "tt8580466", - "tt1601475", - "tt5657658", - "tt1226752", - "tt4331488", - "tt2220642", - "tt4449516", - "tt11086254", - "tt10886166", - "tt9010802", - "tt9482786", - "tt0055796", - "tt0109400", - "tt0079048", - "tt6131636", - "tt0033491", - "tt1130091", - "tt9261218", - "tt0053578", - "tt7583274", - "tt7579446", - "tt0410520", - "tt11570218", - "tt4044970", - "tt0061409", - "tt6414632", - "tt5571130", - "tt2316810", - "tt0035015", - "tt8951692", - "tt0462069", - "tt1432078", - "tt9285882", - "tt2981410", - "tt8998896", - "tt0151399", - "tt1412367", - "tt0035039", - "tt10133224", - "tt1422191", - "tt0111199", - "tt9056522", - "tt11160666", - "tt7925798", - "tt0005302", - "tt4840810", - "tt1657448", - "tt0074877", - "tt6626486", - "tt0126016", - "tt9185066", - "tt1602474", - "tt0374324", - "tt0114555", - "tt3263230", - "tt4459424", - "tt1235836", - "tt9621284", - "tt11055922", - "tt1029269", - "tt5864254", - "tt0918554", - "tt8633560", - "tt4669252", - "tt1467088", - "tt1051906", - "tt0780577", - "tt6808310", - "tt0101390", - "tt0814331", - "tt1718898", - "tt0165461", - "tt11747672", - "tt8923484", - "tt0410320", - "tt0065646", - "tt8488518", - "tt3154432", - "tt0073887", - "tt0420128", - "tt0035951", - "tt3905450", - "tt4963900", - "tt0108499", - "tt9794870", - "tt0062456", - "tt0420683", - "tt0059884", - "tt10533570", - "tt1843212", - "tt9869578", - "tt4287598", - "tt6793972", - "tt4729322", - "tt2736032", - "tt8775036", - "tt1373215", - "tt3007072", - "tt2314030", - "tt11921696", - "tt9777914", - "tt11844684", - "tt5582566", - "tt8861826", - "tt8686088", - "tt0029350", - "tt6640384", - "tt0878649", - "tt0202880", - "tt0068235", - "tt1151915", - "tt9247926", - "tt1509268", - "tt7395804", - "tt0498097", - "tt4393206", - "tt0043871", - "tt8466726", - "tt0245479", - "tt11987296", - "tt3451320", - "tt5962096", - "tt2207870", - "tt11609344", - "tt10485690", - "tt11810424", - "tt0091428", - "tt10944744", - "tt0045886", - "tt6824050", - "tt10882126", - "tt6794462", - "tt0085835", - "tt8422628", - "tt9048786", - "tt0440712", - "tt3663020", - "tt0441909", - "tt9148706", - "tt0044326", - "tt1065092", - "tt5580130", - "tt0029706", - "tt0293508", - "tt3477064", - "tt0116001", - "tt8058874", - "tt1349640", - "tt0131046", - "tt0116446", - "tt2113679", - "tt3103350", - "tt11952742", - "tt2181969", - "tt0051102", - "tt0147582", - "tt4506208", - "tt4524436", - "tt8299768", - "tt1486192", - "tt0142233", - "tt3229518", - "tt4623902", - "tt8191944", - "tt11277954", - "tt9597922", - "tt6684976", - "tt0415012", - "tt10071352", - "tt5244812", - "tt1094277", - "tt6408738", - "tt0403885", - "tt6338744", - "tt1235059", - "tt0117496", - "tt5442884", - "tt0056444", - "tt9086228", - "tt2132415", - "tt0043559", - "tt2433408", - "tt9617504", - "tt5761986", - "tt1325753", - "tt4106514", - "tt3494610", - "tt6267926", - "tt6672152", - "tt2552684", - "tt4417352", - "tt9399288", - "tt0118766", - "tt9225192", - "tt7906978", - "tt8332454", - "tt12043620", - "tt3111426", - "tt11136726", - "tt4797182", - "tt1255956", - "tt7901350", - "tt5489276", - "tt5572856", - "tt0116147", - "tt0448965", - "tt8060054", - "tt8906652", - "tt3091258", - "tt0841009", - "tt0099506", - "tt0142235", - "tt1142972", - "tt0215545", - "tt8299862", - "tt0086112", - "tt8221736", - "tt0365938", - "tt1320237", - "tt11810418", - "tt8739582", - "tt0827181", - "tt0074626", - "tt0105856", - "tt10674930", - "tt3907102", - "tt5830000", - "tt0339526", - "tt2815772", - "tt1655629", - "tt4759654", - "tt3612246", - "tt2716382", - "tt0846713", - "tt5096470", - "tt7942116", - "tt6657486", - "tt9876418", - "tt1542903", - "tt11686346", - "tt0455474", - "tt2125584", - "tt7587876", - "tt12078990", - "tt5941336", - "tt1646103", - "tt6022266", - "tt11082984", - "tt1023345", - "tt5815016", - "tt0468547", - "tt4286440", - "tt0084033", - "tt8974576", - "tt4581548", - "tt0065889", - "tt0058773", - "tt0395565", - "tt12109074", - "tt0072206", - "tt0475557", - "tt11565362", - "tt0118617", - "tt8363908", - "tt11656094", - "tt0117882", - "tt9612368", - "tt6856396", - "tt6837832", - "tt8750570", - "tt0095827", - "tt0057580", - "tt3418854", - "tt1650048", - "tt1496002", - "tt1964995", - "tt7120602", - "tt0113236", - "tt8009102", - "tt10384744", - "tt5136700", - "tt3115906", - "tt0038369", - "tt0451166", - "tt1756679", - "tt11169980", - "tt0091511", - "tt1451620", - "tt6472742", - "tt0093522", - "tt3274690", - "tt0177636", - "tt0120742", - "tt8661510", - "tt7537216", - "tt0235221", - "tt4195970", - "tt6094970", - "tt1441259", - "tt10463146", - "tt10925166", - "tt5470448", - "tt11692010", - "tt0804540", - "tt2363495", - "tt2925992", - "tt11374034", - "tt7510346", - "tt0365541", - "tt10151496", - "tt11584600", - "tt9208444", - "tt6151048", - "tt5265974", - "tt1800351", - "tt3327918", - "tt1232825", - "tt10145122", - "tt1519640", - "tt10876506", - "tt9026262", - "tt7504726", - "tt4558376", - "tt9617578", - "tt0327850", - "tt1156395", - "tt3824648", - "tt3282664", - "tt6690836", - "tt0103266", - "tt0061084", - "tt8559826", - "tt8406738", - "tt3110634", - "tt0235546", - "tt8591260", - "tt0078224", - "tt1097649", - "tt1371711", - "tt0090248", - "tt0107305", - "tt10345024", - "tt1896767", - "tt0035583", - "tt12036052", - "tt8258074", - "tt3276648", - "tt7638094", - "tt3557730", - "tt0246748", - "tt6247650", - "tt12038270", - "tt7808118", - "tt2134099", - "tt1346516", - "tt5217608", - "tt4270452", - "tt11583568", - "tt0078345", - "tt11447658", - "tt0304328", - "tt5784708", - "tt0338139", - "tt2103997", - "tt8569578", - "tt0098667", - "tt9662980", - "tt8589474", - "tt7373264", - "tt0057527", - "tt3054496", - "tt0118632", - "tt7520274", - "tt1797514", - "tt9889664", - "tt9786512", - "tt2762738", - "tt0305934", - "tt8367814", - "tt8201996", - "tt10937434", - "tt6924682", - "tt2173222", - "tt3737420", - "tt1634106", - "tt1641253", - "tt1937374", - "tt0074853", - "tt4316472", - "tt9580138", - "tt11045776", - "tt0000000", - "tt0044000", - "tt0374330", - "tt7827944", - "tt0102014", - "tt4137924", - "tt3455082", - "tt6271432", - "tt0183869", - "tt12098392", - "tt0188388", - "tt9389612", - "tt7258372", - "tt4907206", - "tt8791752", - "tt6087964", - "tt10619512", - "tt3342658", - "tt9287778", - "tt0066126", - "tt0053225", - "tt11962590", - "tt6344664", - "tt0039634", - "tt9620830", - "tt0431114", - "tt1198405", - "tt7790498", - "tt0052338", - "tt8555248", - "tt1445729", - "tt8956392", - "tt0364457", - "tt6531506", - "tt4033358", - "tt5577494", - "tt8901942", - "tt2637196", - "tt4515456", - "tt9702698", - "tt0479917", - "tt0351759", - "tt0976222", - "tt1202203", - "tt10151054", - "tt2467442", - "tt7204348", - "tt0109263", - "tt0066820", - "tt1133594", - "tt0039204", - "tt0836685", - "tt0452702", - "tt3607532", - "tt8406744", - "tt9769254" -] \ No newline at end of file diff --git a/scraper/scrapers/rarbg/rargb_series_imdb_ids_2020-04-22.json b/scraper/scrapers/rarbg/rargb_series_imdb_ids_2020-04-22.json deleted file mode 100644 index a0cdb45..0000000 --- a/scraper/scrapers/rarbg/rargb_series_imdb_ids_2020-04-22.json +++ /dev/null @@ -1,6305 +0,0 @@ -[ - "tt9047510", - "tt3831508", - "tt9134336", - "tt2286266", - "tt8170404", - "tt6333104", - "tt3138604", - "tt2769458", - "tt2309405", - "tt6958022", - "tt1845887", - "tt5038678", - "tt10810430", - "tt8660874", - "tt0112230", - "tt0408368", - "tt6507028", - "tt5056958", - "tt3667284", - "tt4095622", - "tt5562058", - "tt4360400", - "tt11168116", - "tt9145880", - "tt6009602", - "tt6167962", - "tt8509922", - "tt6083778", - "tt5761152", - "tt0262990", - "tt0058824", - "tt4154858", - "tt0098798", - "tt7599942", - "tt2406026", - "tt4680444", - "tt4770018", - "tt6416260", - "tt5592230", - "tt10715140", - "tt1884907", - "tt4231140", - "tt1249208", - "tt1840051", - "tt4855578", - "tt10087444", - "tt4649390", - "tt5324986", - "tt0118248", - "tt3432424", - "tt8130432", - "tt0063951", - "tt8080054", - "tt5012644", - "tt8461242", - "tt7695916", - "tt5992164", - "tt9181662", - "tt4995052", - "tt10132958", - "tt3369162", - "tt0808099", - "tt5421602", - "tt7335184", - "tt1885102", - "tt7274440", - "tt1845307", - "tt6128254", - "tt9140352", - "tt5742760", - "tt3761278", - "tt2357547", - "tt6150820", - "tt6840134", - "tt0397306", - "tt3793630", - "tt6529388", - "tt3487410", - "tt9315990", - "tt9169800", - "tt0885761", - "tt9426290", - "tt2132641", - "tt3691462", - "tt6842242", - "tt0262985", - "tt1196946", - "tt4124758", - "tt0053479", - "tt10291112", - "tt2580046", - "tt5530706", - "tt3507484", - "tt5580664", - "tt2373856", - "tt7484994", - "tt6438090", - "tt7555294", - "tt9643158", - "tt6467482", - "tt8518136", - "tt3663490", - "tt3577058", - "tt6936928", - "tt9604400", - "tt10698408", - "tt3816666", - "tt2235942", - "tt8332034", - "tt6236572", - "tt0278866", - "tt0238784", - "tt3317064", - "tt10314462", - "tt2883562", - "tt5043530", - "tt2070443", - "tt0075488", - "tt8682948", - "tt6106704", - "tt4179452", - "tt8063866", - "tt7667038", - "tt4673856", - "tt2891574", - "tt5225764", - "tt4683956", - "tt1462059", - "tt0080221", - "tt2719784", - "tt3419604", - "tt8765446", - "tt7370506", - "tt10621514", - "tt8649378", - "tt5960546", - "tt0275137", - "tt3592718", - "tt2195454", - "tt8412178", - "tt9335658", - "tt1590961", - "tt3560094", - "tt9686194", - "tt8708280", - "tt0364828", - "tt10037034", - "tt5336934", - "tt1598754", - "tt1179817", - "tt5754418", - "tt1190634", - "tt2361849", - "tt7895774", - "tt2129304", - "tt2252938", - "tt4705002", - "tt7660850", - "tt1570957", - "tt5638056", - "tt0445890", - "tt7053188", - "tt8986558", - "tt0115101", - "tt0185103", - "tt6917192", - "tt5489746", - "tt1703925", - "tt7520794", - "tt2948562", - "tt8115560", - "tt1760943", - "tt9899340", - "tt5527612", - "tt8415880", - "tt2575968", - "tt8746478", - "tt8341954", - "tt10196418", - "tt6347484", - "tt1743880", - "tt6001964", - "tt0086662", - "tt3428912", - "tt6708260", - "tt5903724", - "tt2736666", - "tt0084967", - "tt8893498", - "tt9640354", - "tt5227038", - "tt0071054", - "tt2261391", - "tt2738038", - "tt8325314", - "tt0108778", - "tt2777876", - "tt4931888", - "tt6383288", - "tt3796080", - "tt9047042", - "tt4573608", - "tt4577556", - "tt3589872", - "tt5176266", - "tt2746736", - "tt7763662", - "tt0129712", - "tt1778108", - "tt2753110", - "tt5351176", - "tt9028816", - "tt0407362", - "tt5761478", - "tt5882386", - "tt0364779", - "tt8295694", - "tt5874596", - "tt3481544", - "tt9855482", - "tt11742152", - "tt4089276", - "tt1545214", - "tt8072678", - "tt7136584", - "tt6112414", - "tt8178650", - "tt0115109", - "tt6015808", - "tt0112178", - "tt5444332", - "tt8134160", - "tt5606154", - "tt2338232", - "tt2216156", - "tt5693604", - "tt8845238", - "tt0310455", - "tt5182866", - "tt7826108", - "tt8806524", - "tt5772346", - "tt1367709", - "tt5296406", - "tt1748888", - "tt8080122", - "tt8792230", - "tt5034326", - "tt8628426", - "tt1079959", - "tt1592287", - "tt6255500", - "tt6503434", - "tt3216682", - "tt5592146", - "tt0417373", - "tt0460681", - "tt3692064", - "tt7423198", - "tt1588224", - "tt3187578", - "tt8589128", - "tt0344651", - "tt1078394", - "tt0106145", - "tt8385496", - "tt2177491", - "tt6297682", - "tt8746434", - "tt3116086", - "tt9246600", - "tt6957316", - "tt10243692", - "tt7260852", - "tt10284122", - "tt6466208", - "tt6682754", - "tt0835010", - "tt5242220", - "tt2514488", - "tt8310612", - "tt5179808", - "tt7178582", - "tt3743822", - "tt6566480", - "tt5830272", - "tt0397442", - "tt2628232", - "tt5674872", - "tt7490342", - "tt2346091", - "tt0108909", - "tt0080196", - "tt6165532", - "tt5232792", - "tt1124373", - "tt11707368", - "tt0429318", - "tt3640276", - "tt0074053", - "tt0149460", - "tt11654094", - "tt0758790", - "tt3782838", - "tt8323670", - "tt10981666", - "tt4589246", - "tt5330088", - "tt4476574", - "tt4475198", - "tt2247314", - "tt2223298", - "tt8871764", - "tt4716268", - "tt6714616", - "tt0870032", - "tt2342652", - "tt4428038", - "tt10329046", - "tt2994108", - "tt3422854", - "tt2301351", - "tt0419336", - "tt4719894", - "tt8159960", - "tt7203552", - "tt7306102", - "tt1225790", - "tt7157494", - "tt2904656", - "tt0070644", - "tt5779222", - "tt2712740", - "tt3893332", - "tt9717424", - "tt7949606", - "tt1734135", - "tt6069204", - "tt3173854", - "tt0375355", - "tt8285216", - "tt1442566", - "tt2131368", - "tt1604099", - "tt5697642", - "tt6461746", - "tt3321642", - "tt6087072", - "tt0338580", - "tt2244077", - "tt8050740", - "tt2575988", - "tt2710104", - "tt1646043", - "tt5834204", - "tt5396572", - "tt2265572", - "tt8760264", - "tt7948268", - "tt3515512", - "tt6304194", - "tt0068093", - "tt5651844", - "tt0319969", - "tt5559366", - "tt5796728", - "tt2524238", - "tt2293002", - "tt2091498", - "tt3496230", - "tt10065678", - "tt2300923", - "tt10482560", - "tt7623616", - "tt4122068", - "tt4118584", - "tt0437729", - "tt2334429", - "tt7956684", - "tt1382367", - "tt7668518", - "tt9251798", - "tt8359610", - "tt8521728", - "tt3986120", - "tt1943276", - "tt2550284", - "tt7942796", - "tt9769678", - "tt2467372", - "tt2815522", - "tt3012540", - "tt3390892", - "tt0965364", - "tt10750498", - "tt4973548", - "tt8598154", - "tt3602046", - "tt4172154", - "tt2768802", - "tt6385418", - "tt1318007", - "tt10768172", - "tt7057260", - "tt4154452", - "tt7156016", - "tt9073722", - "tt1595859", - "tt3514324", - "tt4363588", - "tt4266116", - "tt7368008", - "tt3696720", - "tt1122770", - "tt0859592", - "tt6524350", - "tt5661410", - "tt7838332", - "tt4455862", - "tt3042608", - "tt10417836", - "tt2646334", - "tt9088596", - "tt10662040", - "tt9632280", - "tt3223004", - "tt1697033", - "tt1342711", - "tt0446241", - "tt4445154", - "tt0111932", - "tt5774044", - "tt1443927", - "tt4181172", - "tt9165776", - "tt3215364", - "tt10228032", - "tt6160506", - "tt3917432", - "tt8385152", - "tt1698441", - "tt5113032", - "tt8103530", - "tt1582350", - "tt6261554", - "tt1727434", - "tt0083497", - "tt8001092", - "tt8146760", - "tt7608238", - "tt4633166", - "tt5926494", - "tt6908976", - "tt1091909", - "tt1866609", - "tt1911883", - "tt1399045", - "tt7430684", - "tt6877772", - "tt8467296", - "tt10370736", - "tt1869454", - "tt5729304", - "tt4501242", - "tt8435344", - "tt11091964", - "tt2220150", - "tt5910786", - "tt8179162", - "tt7737404", - "tt2078576", - "tt1593756", - "tt3231534", - "tt7860116", - "tt0058812", - "tt8263746", - "tt5091820", - "tt6616260", - "tt7909970", - "tt0804425", - "tt6882310", - "tt6078644", - "tt7577814", - "tt9424434", - "tt5344280", - "tt3786966", - "tt11214028", - "tt7320300", - "tt6128376", - "tt2194326", - "tt7121854", - "tt10329028", - "tt2312036", - "tt2215399", - "tt1563280", - "tt4913678", - "tt3168804", - "tt5763748", - "tt2017109", - "tt6136842", - "tt7866098", - "tt2931316", - "tt0373732", - "tt9253866", - "tt10341020", - "tt7239256", - "tt6536348", - "tt0287196", - "tt1257544", - "tt1661526", - "tt5290382", - "tt4651824", - "tt6210192", - "tt1825133", - "tt9698480", - "tt4354650", - "tt1898069", - "tt5857720", - "tt4075386", - "tt4321400", - "tt2170584", - "tt1292576", - "tt2189874", - "tt6853528", - "tt8001226", - "tt9062856", - "tt1825122", - "tt3219170", - "tt3444938", - "tt1476894", - "tt0395843", - "tt8001106", - "tt8147076", - "tt3846642", - "tt0314979", - "tt2660734", - "tt0381798", - "tt2296682", - "tt7449708", - "tt2104573", - "tt5687612", - "tt1454824", - "tt7670568", - "tt0092325", - "tt6175984", - "tt0069637", - "tt0827947", - "tt0340477", - "tt6461794", - "tt1571313", - "tt8068916", - "tt3905286", - "tt5359830", - "tt6110648", - "tt2229129", - "tt8304498", - "tt6021284", - "tt0095388", - "tt8387348", - "tt9654086", - "tt0115086", - "tt3230864", - "tt6856484", - "tt5578086", - "tt5706750", - "tt6394320", - "tt5310358", - "tt2215291", - "tt2322158", - "tt9169870", - "tt5674718", - "tt10243628", - "tt0321021", - "tt0460637", - "tt7520780", - "tt0061287", - "tt7737692", - "tt1596356", - "tt8488494", - "tt1973370", - "tt6203010", - "tt2733510", - "tt5209286", - "tt8417308", - "tt2176609", - "tt7343520", - "tt2103085", - "tt5567424", - "tt2480514", - "tt9567342", - "tt2923816", - "tt2197797", - "tt7867522", - "tt3007572", - "tt7927790", - "tt2319283", - "tt2860378", - "tt7087260", - "tt0118401", - "tt5833082", - "tt4474344", - "tt7817300", - "tt5180504", - "tt5075942", - "tt7627802", - "tt2009826", - "tt8026448", - "tt0414731", - "tt7782022", - "tt6845418", - "tt1830888", - "tt11018358", - "tt6102418", - "tt2271773", - "tt4063608", - "tt3205802", - "tt0758722", - "tt8510382", - "tt5000804", - "tt0455275", - "tt0168596", - "tt2152112", - "tt0439879", - "tt8507402", - "tt2449262", - "tt8324422", - "tt2128016", - "tt7406334", - "tt11237508", - "tt9103932", - "tt7949200", - "tt0096557", - "tt5690224", - "tt4057844", - "tt9169656", - "tt7134194", - "tt1632701", - "tt1981538", - "tt0115355", - "tt5221566", - "tt7286488", - "tt7917984", - "tt4397864", - "tt4209752", - "tt9555104", - "tt6276100", - "tt1884856", - "tt8070516", - "tt4584326", - "tt0092312", - "tt1661102", - "tt1020621", - "tt4592682", - "tt0448300", - "tt4494948", - "tt2177489", - "tt1928328", - "tt0976014", - "tt0759364", - "tt2278605", - "tt7194490", - "tt4955642", - "tt5871092", - "tt7050978", - "tt0426741", - "tt6128300", - "tt6170980", - "tt0141842", - "tt5639976", - "tt6583806", - "tt0213338", - "tt11006320", - "tt1358355", - "tt1765085", - "tt2699226", - "tt6176596", - "tt6101624", - "tt10517426", - "tt8689470", - "tt6474236", - "tt4648424", - "tt1830332", - "tt2677216", - "tt7187044", - "tt0096555", - "tt2215717", - "tt10699146", - "tt7165904", - "tt0880557", - "tt7736572", - "tt1415175", - "tt1567215", - "tt8416494", - "tt7107518", - "tt5548612", - "tt3012894", - "tt11102274", - "tt6768146", - "tt0428134", - "tt8923354", - "tt5340782", - "tt2741950", - "tt6407712", - "tt3520612", - "tt6779076", - "tt0042093", - "tt7748314", - "tt2128212", - "tt2295809", - "tt0883772", - "tt5785564", - "tt4915896", - "tt5301958", - "tt8364940", - "tt3219166", - "tt3425318", - "tt3526078", - "tt9310136", - "tt0204113", - "tt3597854", - "tt0805666", - "tt6729080", - "tt2827536", - "tt0086756", - "tt1475582", - "tt5568438", - "tt10098248", - "tt5073676", - "tt6193336", - "tt4488724", - "tt6038584", - "tt6609842", - "tt7747014", - "tt4742700", - "tt3494220", - "tt7146600", - "tt2498968", - "tt3190722", - "tt7036530", - "tt1582461", - "tt6839788", - "tt6715172", - "tt9636800", - "tt1870479", - "tt5637842", - "tt0235918", - "tt6722926", - "tt8064302", - "tt0421460", - "tt4816058", - "tt1528406", - "tt2309295", - "tt3314218", - "tt10370956", - "tt9203042", - "tt2805912", - "tt7293240", - "tt10833696", - "tt10623954", - "tt11592028", - "tt6453018", - "tt1849622", - "tt9845152", - "tt3042566", - "tt6894020", - "tt1239443", - "tt2091762", - "tt0246734", - "tt6587094", - "tt10313176", - "tt10625028", - "tt9425132", - "tt9212616", - "tt9426390", - "tt2400129", - "tt6709974", - "tt6461736", - "tt8292872", - "tt5149506", - "tt5971920", - "tt7068626", - "tt10590068", - "tt2645122", - "tt7365526", - "tt6131120", - "tt10952558", - "tt0098936", - "tt6128262", - "tt1145500", - "tt7909708", - "tt3216586", - "tt10108664", - "tt7085256", - "tt0094582", - "tt9048368", - "tt11058644", - "tt0338653", - "tt3565412", - "tt6012704", - "tt3186138", - "tt10379670", - "tt3713152", - "tt6768634", - "tt3264836", - "tt0448190", - "tt6782014", - "tt10872880", - "tt0111875", - "tt6953640", - "tt10081406", - "tt0458254", - "tt2564734", - "tt2364582", - "tt0217579", - "tt5323988", - "tt7588316", - "tt6809396", - "tt3513388", - "tt5512570", - "tt8359654", - "tt7017362", - "tt1400819", - "tt7230846", - "tt10269664", - "tt4580372", - "tt2428924", - "tt3513704", - "tt4287280", - "tt8452308", - "tt1405406", - "tt3027156", - "tt2245029", - "tt5027982", - "tt0290988", - "tt1854226", - "tt4218618", - "tt4574708", - "tt9303684", - "tt3554098", - "tt5838282", - "tt2266639", - "tt1948830", - "tt7760676", - "tt5321130", - "tt2721686", - "tt4543056", - "tt2211457", - "tt1542981", - "tt5771150", - "tt7106722", - "tt2548418", - "tt4683342", - "tt0875948", - "tt6987788", - "tt6090814", - "tt0227975", - "tt3232262", - "tt7965956", - "tt3921180", - "tt4145054", - "tt2674806", - "tt4074374", - "tt4759792", - "tt6258050", - "tt3342592", - "tt2708560", - "tt5600406", - "tt5136196", - "tt9314996", - "tt3738872", - "tt1310809", - "tt7686128", - "tt5905038", - "tt5171438", - "tt2402807", - "tt3008828", - "tt0390700", - "tt4793190", - "tt7942806", - "tt3696476", - "tt1875337", - "tt1049244", - "tt7936386", - "tt0094525", - "tt3698892", - "tt7230898", - "tt0358856", - "tt2209649", - "tt2518480", - "tt8530456", - "tt2262532", - "tt4767370", - "tt4677846", - "tt4481920", - "tt0410975", - "tt11215112", - "tt4719586", - "tt5174232", - "tt2215797", - "tt9860664", - "tt0169446", - "tt6078096", - "tt5726128", - "tt1593613", - "tt7949218", - "tt6873926", - "tt2699374", - "tt11305092", - "tt9132960", - "tt0120570", - "tt3916394", - "tt7671068", - "tt5117150", - "tt3155320", - "tt1365047", - "tt7410352", - "tt1798274", - "tt0374463", - "tt2234222", - "tt9068472", - "tt8543390", - "tt5696762", - "tt7569724", - "tt0437741", - "tt2211129", - "tt6110318", - "tt1043813", - "tt3501074", - "tt7573024", - "tt2201416", - "tt2006421", - "tt5869202", - "tt5763648", - "tt7904188", - "tt2930604", - "tt5798078", - "tt8201142", - "tt9167798", - "tt5594440", - "tt8343762", - "tt0361217", - "tt4222646", - "tt2167393", - "tt3104722", - "tt5324944", - "tt8107060", - "tt7768166", - "tt5684430", - "tt2113487", - "tt5260248", - "tt0083437", - "tt8319428", - "tt4481248", - "tt1663676", - "tt2006848", - "tt3648438", - "tt2495154", - "tt4523640", - "tt2442494", - "tt4337894", - "tt4189570", - "tt1678749", - "tt4558858", - "tt5248878", - "tt7212136", - "tt1963853", - "tt1842530", - "tt1262401", - "tt4839610", - "tt8322592", - "tt10555728", - "tt10948316", - "tt4445972", - "tt4716230", - "tt2698984", - "tt5189944", - "tt2311643", - "tt8888532", - "tt0098904", - "tt7108906", - "tt1068912", - "tt0086814", - "tt7204366", - "tt5320618", - "tt9564862", - "tt6110624", - "tt5884018", - "tt8558492", - "tt9135436", - "tt2303687", - "tt9322614", - "tt5505576", - "tt7503800", - "tt6463374", - "tt10687620", - "tt1321865", - "tt9316032", - "tt11189494", - "tt5995728", - "tt7379872", - "tt1819545", - "tt0115082", - "tt1830622", - "tt1657260", - "tt5194792", - "tt0115269", - "tt2192539", - "tt5870340", - "tt5715524", - "tt0348894", - "tt2215842", - "tt5533758", - "tt0411008", - "tt10220152", - "tt0463850", - "tt2152894", - "tt10290274", - "tt0149447", - "tt5650650", - "tt6461824", - "tt6079608", - "tt2657242", - "tt5937940", - "tt6155068", - "tt5057130", - "tt2568868", - "tt8295472", - "tt10404664", - "tt10765680", - "tt0096626", - "tt6663688", - "tt6921882", - "tt2166772", - "tt0059982", - "tt7799008", - "tt4197508", - "tt3706642", - "tt1103968", - "tt5531466", - "tt0072500", - "tt7988900", - "tt8103082", - "tt9704568", - "tt2243788", - "tt10687134", - "tt2752854", - "tt4386224", - "tt4380272", - "tt2937900", - "tt7319038", - "tt9341874", - "tt1518723", - "tt2274282", - "tt5545018", - "tt11352740", - "tt4324796", - "tt0364845", - "tt9541430", - "tt10183798", - "tt8045594", - "tt1647292", - "tt1129029", - "tt3339966", - "tt3487382", - "tt2265544", - "tt0275140", - "tt11274284", - "tt6216718", - "tt5313984", - "tt4612950", - "tt4328676", - "tt2378794", - "tt3664430", - "tt3508050", - "tt7288952", - "tt6121710", - "tt3729770", - "tt7829834", - "tt1515193", - "tt0429422", - "tt0360266", - "tt9816090", - "tt8398600", - "tt8242548", - "tt9742974", - "tt1842127", - "tt5562056", - "tt4856322", - "tt10223910", - "tt0892535", - "tt5788792", - "tt6268466", - "tt4670954", - "tt2172103", - "tt2758770", - "tt2820078", - "tt7440732", - "tt0187664", - "tt8685324", - "tt5233284", - "tt0078579", - "tt8571906", - "tt6316900", - "tt1486217", - "tt0284722", - "tt9278186", - "tt5348176", - "tt0387199", - "tt0096542", - "tt6466948", - "tt5775214", - "tt2576360", - "tt10985806", - "tt6162516", - "tt10332528", - "tt0200276", - "tt1082770", - "tt5687624", - "tt1932099", - "tt1796960", - "tt3102732", - "tt10619444", - "tt4833364", - "tt6233916", - "tt2193041", - "tt8009622", - "tt1723760", - "tt6807662", - "tt9108770", - "tt6987966", - "tt5670764", - "tt5193172", - "tt9817298", - "tt2086606", - "tt6483198", - "tt9865126", - "tt7217374", - "tt11497904", - "tt9690010", - "tt8337490", - "tt5104362", - "tt5037914", - "tt4065694", - "tt6474378", - "tt3596174", - "tt6858064", - "tt1307824", - "tt2951514", - "tt5720168", - "tt2009765", - "tt5361394", - "tt9373836", - "tt3038384", - "tt5363918", - "tt0056775", - "tt1329291", - "tt1954347", - "tt3218114", - "tt11006986", - "tt8118934", - "tt4230076", - "tt9788012", - "tt5820022", - "tt6038946", - "tt0813711", - "tt9139220", - "tt7305166", - "tt9278110", - "tt0412175", - "tt8502456", - "tt5347876", - "tt8372660", - "tt9817220", - "tt6415490", - "tt4649322", - "tt9850952", - "tt6433606", - "tt7042814", - "tt1299368", - "tt7517330", - "tt11101698", - "tt2938522", - "tt7350790", - "tt3976068", - "tt3148194", - "tt0234355", - "tt5433062", - "tt4835514", - "tt8888618", - "tt10207464", - "tt2355844", - "tt5620076", - "tt5621544", - "tt3127020", - "tt6959368", - "tt7218390", - "tt4634400", - "tt4877562", - "tt7282674", - "tt0965415", - "tt5936448", - "tt0426697", - "tt5363720", - "tt3868832", - "tt1839481", - "tt3697842", - "tt0475047", - "tt5016074", - "tt0488262", - "tt2224452", - "tt1411598", - "tt7592254", - "tt2212323", - "tt5580540", - "tt6103712", - "tt8877446", - "tt0493378", - "tt7076630", - "tt3400010", - "tt0147746", - "tt5671700", - "tt6467294", - "tt4925366", - "tt8807058", - "tt0098929", - "tt0085111", - "tt0083422", - "tt4093626", - "tt4647692", - "tt5192050", - "tt8593910", - "tt2196296", - "tt6487482", - "tt6432854", - "tt8652642", - "tt5598192", - "tt7959106", - "tt0756509", - "tt0058806", - "tt4460878", - "tt0458284", - "tt1877368", - "tt9588388", - "tt2084685", - "tt3502248", - "tt11569530", - "tt6601082", - "tt7612548", - "tt3460454", - "tt6246232", - "tt4600502", - "tt6866266", - "tt7282970", - "tt7132032", - "tt0212671", - "tt4052886", - "tt4305162", - "tt8009602", - "tt3078774", - "tt6835252", - "tt5565334", - "tt3145422", - "tt7356206", - "tt2362849", - "tt1622696", - "tt2054938", - "tt6394734", - "tt1183865", - "tt0083390", - "tt11833494", - "tt0163936", - "tt5817374", - "tt1878805", - "tt1685473", - "tt5363912", - "tt4354996", - "tt5515410", - "tt2750688", - "tt1877514", - "tt8129446", - "tt1264363", - "tt8358050", - "tt0815420", - "tt4545902", - "tt1078273", - "tt6052190", - "tt11012086", - "tt2163315", - "tt4283680", - "tt6819788", - "tt4205332", - "tt0914387", - "tt2155025", - "tt2243973", - "tt4607112", - "tt1724700", - "tt7167690", - "tt7697062", - "tt0411027", - "tt8651972", - "tt5023972", - "tt4938084", - "tt3597790", - "tt0085099", - "tt9140500", - "tt6619592", - "tt6591468", - "tt5097258", - "tt5516154", - "tt8004628", - "tt4319118", - "tt10207430", - "tt11433292", - "tt1042872", - "tt0496356", - "tt8128344", - "tt7767422", - "tt6772826", - "tt1001558", - "tt3233452", - "tt3620824", - "tt0756573", - "tt6712390", - "tt10276062", - "tt3573194", - "tt4093826", - "tt0287839", - "tt1247637", - "tt0910812", - "tt5458944", - "tt1737565", - "tt6596634", - "tt4428022", - "tt7448858", - "tt7614442", - "tt0787985", - "tt2191991", - "tt1944942", - "tt5912064", - "tt8594220", - "tt7187776", - "tt9552850", - "tt2262912", - "tt6440422", - "tt7366338", - "tt1225901", - "tt10521644", - "tt5858812", - "tt9118930", - "tt7741824", - "tt7138728", - "tt1492966", - "tt2827412", - "tt1199099", - "tt8201434", - "tt0115674", - "tt3177402", - "tt9703198", - "tt7161862", - "tt1608383", - "tt2568204", - "tt1525018", - "tt4902046", - "tt6386436", - "tt1405799", - "tt4422836", - "tt0086759", - "tt3288518", - "tt0284741", - "tt9203078", - "tt0462085", - "tt2203380", - "tt8210820", - "tt5038900", - "tt9478324", - "tt9140392", - "tt7821480", - "tt4215716", - "tt4544930", - "tt2276589", - "tt5210998", - "tt9648804", - "tt9224216", - "tt6898970", - "tt1673441", - "tt4689402", - "tt9550766", - "tt0460619", - "tt0765425", - "tt8434720", - "tt2137109", - "tt8461284", - "tt2787278", - "tt4474750", - "tt7895706", - "tt3224768", - "tt4424650", - "tt8772088", - "tt9358600", - "tt1638319", - "tt1828327", - "tt4383082", - "tt9889960", - "tt1757812", - "tt8451992", - "tt5614844", - "tt9416960", - "tt0290978", - "tt2338096", - "tt2407838", - "tt3654614", - "tt1730755", - "tt5571102", - "tt4502154", - "tt7985540", - "tt0830165", - "tt6370626", - "tt1812523", - "tt6675542", - "tt5717906", - "tt2281375", - "tt5111414", - "tt5066212", - "tt8022978", - "tt1836195", - "tt9799150", - "tt1587390", - "tt0078678", - "tt1357604", - "tt4354042", - "tt1361787", - "tt5881896", - "tt4270458", - "tt10609888", - "tt0397501", - "tt4428372", - "tt10971532", - "tt6837396", - "tt2170687", - "tt5536400", - "tt7476594", - "tt6333098", - "tt10313066", - "tt5990096", - "tt10234362", - "tt7143388", - "tt4548554", - "tt7018644", - "tt0199257", - "tt1438437", - "tt7768848", - "tt5769588", - "tt3496994", - "tt7820906", - "tt10487072", - "tt5261756", - "tt8314920", - "tt9170386", - "tt5916218", - "tt8447746", - "tt0079844", - "tt10302548", - "tt7949204", - "tt2107314", - "tt2298264", - "tt3501016", - "tt6987476", - "tt2094262", - "tt9548022", - "tt9362790", - "tt5543284", - "tt1703874", - "tt4800624", - "tt6950466", - "tt6010920", - "tt6620620", - "tt1832045", - "tt5292052", - "tt6816530", - "tt2657258", - "tt11193892", - "tt8341266", - "tt5866284", - "tt0108783", - "tt6174224", - "tt2298477", - "tt0772145", - "tt2083423", - "tt10385670", - "tt9304186", - "tt5793034", - "tt3609352", - "tt7371896", - "tt6664638", - "tt3027506", - "tt5372890", - "tt10028418", - "tt5531470", - "tt7598448", - "tt4766568", - "tt5760392", - "tt11822994", - "tt9435662", - "tt0278238", - "tt1146333", - "tt5144776", - "tt0081874", - "tt8106552", - "tt7124372", - "tt5589658", - "tt5591136", - "tt2963070", - "tt6064676", - "tt0103477", - "tt0159186", - "tt3363346", - "tt8461164", - "tt4277922", - "tt5444412", - "tt3231286", - "tt4930646", - "tt8633518", - "tt6121356", - "tt5117058", - "tt2879390", - "tt4577466", - "tt9134194", - "tt0374455", - "tt3729784", - "tt3772506", - "tt4707050", - "tt2592094", - "tt8038720", - "tt6845420", - "tt4272442", - "tt1722512", - "tt0807686", - "tt5114356", - "tt5056196", - "tt0478942", - "tt2543796", - "tt6859806", - "tt3959576", - "tt1583638", - "tt3747574", - "tt1740718", - "tt1821220", - "tt8139862", - "tt8879940", - "tt7401768", - "tt6315640", - "tt1866570", - "tt5821234", - "tt10368596", - "tt4129004", - "tt3636060", - "tt6028632", - "tt4286252", - "tt6946848", - "tt1929678", - "tt0482870", - "tt5112130", - "tt7371666", - "tt10477884", - "tt5900164", - "tt1542800", - "tt5255584", - "tt7610720", - "tt4424318", - "tt9897038", - "tt1621748", - "tt8098956", - "tt0318997", - "tt6258718", - "tt0874936", - "tt6723402", - "tt10394800", - "tt3560084", - "tt2314952", - "tt10050752", - "tt8092942", - "tt5846856", - "tt8362844", - "tt8510328", - "tt3498622", - "tt7403736", - "tt6264286", - "tt4181268", - "tt8050764", - "tt10553806", - "tt7660730", - "tt6225166", - "tt4299972", - "tt10970268", - "tt6961868", - "tt2400736", - "tt9854774", - "tt7534328", - "tt1699440", - "tt4991910", - "tt8593252", - "tt5712314", - "tt1020913", - "tt2087571", - "tt4622776", - "tt2521668", - "tt10062652", - "tt2661044", - "tt0472027", - "tt8558784", - "tt4669522", - "tt1714425", - "tt9073520", - "tt0086770", - "tt0985344", - "tt6091694", - "tt1837855", - "tt0098825", - "tt1850458", - "tt1548850", - "tt6716256", - "tt0799870", - "tt6423184", - "tt0072589", - "tt5905202", - "tt8300932", - "tt8594276", - "tt5468694", - "tt8164794", - "tt0052520", - "tt10477990", - "tt2189461", - "tt6904118", - "tt2716758", - "tt3289378", - "tt8985210", - "tt7644916", - "tt3672590", - "tt2277728", - "tt6003016", - "tt10855726", - "tt2378536", - "tt10441918", - "tt3868860", - "tt2525840", - "tt4566672", - "tt9272514", - "tt0071075", - "tt4117328", - "tt2429840", - "tt2188671", - "tt3236954", - "tt6639066", - "tt8043492", - "tt0068098", - "tt5180734", - "tt6431066", - "tt5807122", - "tt3597470", - "tt4686698", - "tt5097050", - "tt1389371", - "tt8004578", - "tt2222352", - "tt7278232", - "tt8115702", - "tt0412142", - "tt2581458", - "tt0481452", - "tt5467814", - "tt10406826", - "tt3465008", - "tt2390003", - "tt7948998", - "tt1870792", - "tt0423652", - "tt1191056", - "tt7845798", - "tt3042086", - "tt2838492", - "tt6845390", - "tt11540538", - "tt1935298", - "tt0051305", - "tt1705814", - "tt3046010", - "tt3468798", - "tt7643056", - "tt5061384", - "tt0088727", - "tt6118426", - "tt2193053", - "tt5994364", - "tt8001752", - "tt11313054", - "tt0207275", - "tt8688814", - "tt0310460", - "tt8462276", - "tt11824218", - "tt11327454", - "tt9816064", - "tt1710177", - "tt5603140", - "tt3463426", - "tt6905458", - "tt7893262", - "tt3872824", - "tt2255443", - "tt7768346", - "tt2392976", - "tt4419214", - "tt2805096", - "tt11426660", - "tt0229118", - "tt0386676", - "tt9134228", - "tt0081834", - "tt8045690", - "tt0057751", - "tt4718304", - "tt10826064", - "tt4975856", - "tt6416254", - "tt5784958", - "tt7557336", - "tt10732794", - "tt1411254", - "tt4895394", - "tt4651812", - "tt4648556", - "tt5770788", - "tt7921292", - "tt8550800", - "tt1784288", - "tt2708480", - "tt1512813", - "tt3340712", - "tt4496482", - "tt7945720", - "tt0118437", - "tt2490030", - "tt3280150", - "tt10393806", - "tt0158552", - "tt0270118", - "tt6374028", - "tt2394427", - "tt3410350", - "tt8205078", - "tt0160523", - "tt10056648", - "tt6021364", - "tt0098820", - "tt4148744", - "tt2510740", - "tt8987918", - "tt8606894", - "tt6932170", - "tt10038828", - "tt3804114", - "tt10150924", - "tt0206512", - "tt4792480", - "tt4873020", - "tt3186130", - "tt8537104", - "tt5965978", - "tt10833132", - "tt7137906", - "tt6423062", - "tt0062573", - "tt9117882", - "tt7558018", - "tt8363040", - "tt0159847", - "tt1785123", - "tt3508674", - "tt2460420", - "tt4214468", - "tt7725538", - "tt11280636", - "tt5810626", - "tt1219024", - "tt4906064", - "tt10468676", - "tt4397438", - "tt3776412", - "tt1999525", - "tt8130392", - "tt4659174", - "tt5580146", - "tt5025852", - "tt8390342", - "tt1442449", - "tt1441109", - "tt6109562", - "tt0115285", - "tt1843894", - "tt4872768", - "tt6005368", - "tt7728344", - "tt8690890", - "tt6491416", - "tt3973768", - "tt1429449", - "tt8381430", - "tt8041378", - "tt4513868", - "tt1831575", - "tt9134666", - "tt3556944", - "tt8528256", - "tt4465368", - "tt3476576", - "tt7725756", - "tt2207986", - "tt5462720", - "tt11416026", - "tt2431438", - "tt3186162", - "tt1397131", - "tt1839578", - "tt4543708", - "tt3581932", - "tt10558940", - "tt7186126", - "tt7748122", - "tt7197684", - "tt7603552", - "tt1986770", - "tt4355258", - "tt8050586", - "tt2787218", - "tt5906924", - "tt5596468", - "tt3551096", - "tt1721323", - "tt5507340", - "tt4295320", - "tt6473344", - "tt0130414", - "tt3924304", - "tt1492030", - "tt1416765", - "tt1600194", - "tt3629970", - "tt1844923", - "tt7510930", - "tt6656238", - "tt7588054", - "tt3673794", - "tt5835034", - "tt0813715", - "tt0149314", - "tt4719786", - "tt5118450", - "tt4428124", - "tt4543594", - "tt6970700", - "tt4853930", - "tt3610926", - "tt7772602", - "tt1397243", - "tt10801274", - "tt0457146", - "tt6057002", - "tt11137150", - "tt3066242", - "tt3747572", - "tt1464482", - "tt0437005", - "tt4892108", - "tt1332653", - "tt0892700", - "tt9111220", - "tt3713588", - "tt4167914", - "tt2058303", - "tt0260618", - "tt5641200", - "tt8687584", - "tt3469050", - "tt9049820", - "tt0907833", - "tt10918718", - "tt10323338", - "tt2429872", - "tt5491994", - "tt0964941", - "tt2401919", - "tt3596176", - "tt11151704", - "tt9169598", - "tt7140750", - "tt9165462", - "tt6931486", - "tt4118110", - "tt3183264", - "tt2431738", - "tt9731222", - "tt0802821", - "tt5361346", - "tt7949730", - "tt2435216", - "tt1553656", - "tt10050778", - "tt1596561", - "tt9214692", - "tt3062788", - "tt3604232", - "tt5867464", - "tt5501118", - "tt8096690", - "tt4074084", - "tt5564786", - "tt7141150", - "tt0805663", - "tt3566726", - "tt8708736", - "tt5637742", - "tt2737290", - "tt8908110", - "tt0162065", - "tt7456722", - "tt5937754", - "tt6950510", - "tt6257298", - "tt10193046", - "tt5574940", - "tt2396135", - "tt9307028", - "tt9125810", - "tt7252092", - "tt6821540", - "tt2092588", - "tt6742610", - "tt0247729", - "tt8349896", - "tt0083461", - "tt6445112", - "tt4694268", - "tt3882018", - "tt7875628", - "tt5209238", - "tt8972462", - "tt2076566", - "tt6474174", - "tt0077031", - "tt1877005", - "tt3205334", - "tt7712606", - "tt0795129", - "tt1422378", - "tt7482462", - "tt0896527", - "tt7049682", - "tt5917368", - "tt1832979", - "tt0955322", - "tt5881326", - "tt4816626", - "tt1811179", - "tt6959064", - "tt3107288", - "tt2734804", - "tt2372182", - "tt7949244", - "tt1048176", - "tt4719730", - "tt3723820", - "tt4131818", - "tt7467436", - "tt5806964", - "tt3593432", - "tt5170828", - "tt4000676", - "tt4167960", - "tt5520392", - "tt3311582", - "tt0433309", - "tt0163482", - "tt8440450", - "tt3325692", - "tt3169618", - "tt4192786", - "tt1949012", - "tt0095242", - "tt10242848", - "tt6903222", - "tt2528254", - "tt5607976", - "tt4649420", - "tt7349602", - "tt4452688", - "tt2836308", - "tt8220344", - "tt9740998", - "tt5219042", - "tt0778908", - "tt5782486", - "tt3595002", - "tt10305410", - "tt10837476", - "tt3647998", - "tt5127574", - "tt0862614", - "tt1238834", - "tt7547518", - "tt0106080", - "tt0247082", - "tt0279077", - "tt4506998", - "tt10196390", - "tt2534176", - "tt2576046", - "tt1888075", - "tt11152058", - "tt6846982", - "tt2510616", - "tt6785194", - "tt2978518", - "tt3914672", - "tt5099020", - "tt10518856", - "tt6833398", - "tt5770786", - "tt3233442", - "tt2492366", - "tt2772104", - "tt1192169", - "tt4304864", - "tt6163138", - "tt3681794", - "tt2805126", - "tt2402500", - "tt0285335", - "tt9047526", - "tt4424726", - "tt0083399", - "tt8848336", - "tt3053694", - "tt0138967", - "tt5897304", - "tt5302168", - "tt6599482", - "tt0096684", - "tt0369179", - "tt10257404", - "tt3319538", - "tt0435995", - "tt0450920", - "tt2049323", - "tt0105946", - "tt2814800", - "tt5841090", - "tt06675556", - "tt9318588", - "tt0415407", - "tt2232602", - "tt6244192", - "tt10681222", - "tt3815412", - "tt5154068", - "tt2939262", - "tt5428494", - "tt7861612", - "tt4945574", - "tt4719756", - "tt6402362", - "tt6274614", - "tt6710836", - "tt10613532", - "tt1197567", - "tt1758429", - "tt1178180", - "tt7529770", - "tt7821556", - "tt8925088", - "tt6536550", - "tt9129466", - "tt3489184", - "tt3434378", - "tt1355237", - "tt7643900", - "tt1707374", - "tt6974706", - "tt8704178", - "tt1083163", - "tt6416278", - "tt4863504", - "tt0805669", - "tt4911806", - "tt0105604", - "tt4524424", - "tt0287192", - "tt3006802", - "tt2786956", - "tt4534390", - "tt1103973", - "tt1660055", - "tt8006786", - "tt8683790", - "tt1469154", - "tt0914376", - "tt5848038", - "tt7369770", - "tt2406376", - "tt7244118", - "tt3839822", - "tt0118421", - "tt4866982", - "tt11053272", - "tt10999880", - "tt1748277", - "tt10833692", - "tt10306310", - "tt1358522", - "tt3656138", - "tt0066626", - "tt2968404", - "tt7507476", - "tt9731254", - "tt5989844", - "tt6410708", - "tt9196244", - "tt1688606", - "tt2570312", - "tt4380324", - "tt1430509", - "tt5178604", - "tt7249258", - "tt5011296", - "tt8263750", - "tt4906050", - "tt11629570", - "tt4034398", - "tt1829891", - "tt0146386", - "tt9584024", - "tt4269716", - "tt3781670", - "tt10098458", - "tt0115167", - "tt1362673", - "tt10619404", - "tt8500086", - "tt10403090", - "tt0413559", - "tt7885006", - "tt7053920", - "tt6865906", - "tt7552590", - "tt5750932", - "tt2712516", - "tt5582392", - "tt5688730", - "tt3665674", - "tt5507896", - "tt2715870", - "tt2262456", - "tt2104664", - "tt3495652", - "tt7493428", - "tt5618256", - "tt4687880", - "tt7596008", - "tt5057932", - "tt0461727", - "tt10738670", - "tt4711184", - "tt7904158", - "tt2231098", - "tt5788812", - "tt6048644", - "tt5839454", - "tt0809497", - "tt4443988", - "tt6635810", - "tt6913880", - "tt5337038", - "tt8676618", - "tt1745588", - "tt10714776", - "tt1885777", - "tt2560140", - "tt6586318", - "tt7798714", - "tt0176095", - "tt1865740", - "tt3752644", - "tt5191110", - "tt9153270", - "tt6482686", - "tt2396275", - "tt9419282", - "tt0068120", - "tt8633266", - "tt1569544", - "tt1730535", - "tt4561950", - "tt1998816", - "tt10333258", - "tt2746854", - "tt3552166", - "tt4248510", - "tt1610527", - "tt7962984", - "tt5228026", - "tt2053193", - "tt5541030", - "tt2886812", - "tt7740624", - "tt0338616", - "tt1748835", - "tt1492179", - "tt6077258", - "tt1135300", - "tt5635832", - "tt0965404", - "tt1442437", - "tt2789534", - "tt10329024", - "tt0305056", - "tt10343752", - "tt5571524", - "tt6690134", - "tt0296328", - "tt4307902", - "tt6998202", - "tt1319735", - "tt3574652", - "tt11542920", - "tt6749344", - "tt1641349", - "tt9199798", - "tt1807859", - "tt5711280", - "tt6416270", - "tt11534192", - "tt3946492", - "tt6845422", - "tt1827163", - "tt0852863", - "tt7494116", - "tt10795278", - "tt2729716", - "tt1718536", - "tt3829868", - "tt7558708", - "tt0088595", - "tt0784896", - "tt1178618", - "tt4337944", - "tt0213334", - "tt0417299", - "tt0279600", - "tt7752136", - "tt0485301", - "tt8200550", - "tt0165598", - "tt0782374", - "tt2700678", - "tt1260995", - "tt0241383", - "tt6076336", - "tt4229954", - "tt10253244", - "tt8718438", - "tt7067624", - "tt8425310", - "tt0979627", - "tt4680240", - "tt4341500", - "tt11475228", - "tt3681610", - "tt4645614", - "tt0075520", - "tt5743796", - "tt5014882", - "tt5361834", - "tt5200372", - "tt6830318", - "tt11561206", - "tt5982906", - "tt0112112", - "tt0436992", - "tt0936453", - "tt0230534", - "tt4422950", - "tt5223578", - "tt0080274", - "tt7318880", - "tt7531564", - "tt0083395", - "tt5247052", - "tt2983222", - "tt2010090", - "tt6400730", - "tt6762348", - "tt2783314", - "tt4228802", - "tt0108981", - "tt8082124", - "tt1666278", - "tt0092379", - "tt7722262", - "tt5194802", - "tt0446809", - "tt7610744", - "tt4898282", - "tt9647226", - "tt5021206", - "tt1307789", - "tt3597060", - "tt2148200", - "tt0472989", - "tt4067382", - "tt7425366", - "tt7297802", - "tt1215482", - "tt4458594", - "tt2397255", - "tt5865598", - "tt3230854", - "tt6271042", - "tt4110246", - "tt5226698", - "tt6794990", - "tt8465938", - "tt3530232", - "tt8194716", - "tt10370958", - "tt10613832", - "tt6920400", - "tt8808802", - "tt2879552", - "tt0434676", - "tt9233388", - "tt9448468", - "tt7387350", - "tt6492236", - "tt10122594", - "tt4431276", - "tt3450150", - "tt0173587", - "tt8320894", - "tt3549436", - "tt1641247", - "tt9845250", - "tt8845260", - "tt6244108", - "tt8358938", - "tt0103520", - "tt10732150", - "tt8101768", - "tt5093452", - "tt3098942", - "tt2892016", - "tt5425186", - "tt3220976", - "tt6954882", - "tt6965802", - "tt4122348", - "tt2345481", - "tt4367186", - "tt3560060", - "tt5725682", - "tt1352077", - "tt0135659", - "tt8773080", - "tt5310130", - "tt0483603", - "tt6329316", - "tt0096708", - "tt6870990", - "tt5586974", - "tt3010520", - "tt2089467", - "tt11122508", - "tt8819290", - "tt2290339", - "tt0772137", - "tt0460665", - "tt9278162", - "tt6903284", - "tt7914168", - "tt2558816", - "tt4320258", - "tt1212452", - "tt5444526", - "tt3221268", - "tt7755494", - "tt10698546", - "tt8893554", - "tt11766280", - "tt1334573", - "tt4507442", - "tt6932244", - "tt6021260", - "tt1095213", - "tt10359446", - "tt11179888", - "tt9148598", - "tt6905468", - "tt8679236", - "tt6719962", - "tt9813324", - "tt5637544", - "tt2554946", - "tt4905966", - "tt5511512", - "tt1188927", - "tt3737220", - "tt3701166", - "tt1741256", - "tt10473306", - "tt4998212", - "tt7138426", - "tt2372162", - "tt1593823", - "tt5462364", - "tt0092359", - "tt5164196", - "tt3969754", - "tt3778478", - "tt1738340", - "tt10497010", - "tt6139972", - "tt3150144", - "tt1000734", - "tt2750182", - "tt1820166", - "tt4695530", - "tt9663644", - "tt5868826", - "tt2515462", - "tt10192576", - "tt1702042", - "tt2375858", - "tt6498784", - "tt6561400", - "tt0362359", - "tt7115722", - "tt2886708", - "tt8819906", - "tt6648846", - "tt10133226", - "tt4273282", - "tt7804186", - "tt6311972", - "tt3205236", - "tt0094514", - "tt3594982", - "tt2270708", - "tt1717499", - "tt3098856", - "tt6846846", - "tt8036272", - "tt7369974", - "tt5730352", - "tt6780072", - "tt3729144", - "tt3600266", - "tt7871966", - "tt2239949", - "tt2751064", - "tt9708598", - "tt5038858", - "tt4919930", - "tt7535458", - "tt6622316", - "tt6623510", - "tt5366240", - "tt1749004", - "tt3038578", - "tt6528874", - "tt7095194", - "tt6231504", - "tt5350276", - "tt2202488", - "tt10613514", - "tt8845076", - "tt7446914", - "tt2675934", - "tt0348913", - "tt8793210", - "tt9454910", - "tt0783322", - "tt5817158", - "tt1441096", - "tt6534666", - "tt3908868", - "tt5035202", - "tt9376934", - "tt7411444", - "tt5324116", - "tt1967685", - "tt2857312", - "tt6763664", - "tt6963428", - "tt9073898", - "tt1245695", - "tt9165404", - "tt3285626", - "tt3116986", - "tt3088238", - "tt2384799", - "tt5214068", - "tt1991410", - "tt4475060", - "tt5189220", - "tt5759196", - "tt8804656", - "tt4817296", - "tt4592154", - "tt0094416", - "tt3323254", - "tt0098769", - "tt5771332", - "tt4923028", - "tt3485248", - "tt1943524", - "tt5909930", - "tt1747551", - "tt0279550", - "tt6611916", - "tt2113599", - "tt1600757", - "tt5295524", - "tt0443370", - "tt4160920", - "tt6889090", - "tt8050736", - "tt9805708", - "tt8598266", - "tt1463395", - "tt3544556", - "tt3576794", - "tt2189221", - "tt1000955", - "tt8169088", - "tt9863788", - "tt2545498", - "tt5052460", - "tt0983514", - "tt5866048", - "tt6495756", - "tt1299365", - "tt2983796", - "tt5841196", - "tt8972296", - "tt7716606", - "tt1984119", - "tt7562112", - "tt6710612", - "tt7230406", - "tt0059972", - "tt2666270", - "tt9332962", - "tt8888522", - "tt4903406", - "tt7829456", - "tt6439562", - "tt11307176", - "tt11215130", - "tt4354616", - "tt2931524", - "tt2814102", - "tt2244495", - "tt10165608", - "tt8103070", - "tt7639280", - "tt7235466", - "tt6283584", - "tt9316078", - "tt3159736", - "tt5754602", - "tt6254644", - "tt3484406", - "tt2928960", - "tt7661046", - "tt6500572", - "tt2711738", - "tt4861760", - "tt2356777", - "tt5698216", - "tt1819022", - "tt8755712", - "tt0047708", - "tt8858472", - "tt4588068", - "tt7945066", - "tt3709366", - "tt8373190", - "tt3002170", - "tt2402129", - "tt4798814", - "tt1270367", - "tt1474684", - "tt2177877", - "tt8263822", - "tt0103442", - "tt5808318", - "tt2799012", - "tt6548228", - "tt0086798", - "tt9179616", - "tt11600174", - "tt2699128", - "tt6874206", - "tt8425532", - "tt7491982", - "tt7104930", - "tt5512420", - "tt6906110", - "tt2312134", - "tt7847232", - "tt9281190", - "tt7465722", - "tt1321805", - "tt1666205", - "tt5923012", - "tt8876290", - "tt1243815", - "tt5715116", - "tt3787402", - "tt6613768", - "tt0094481", - "tt7543466", - "tt5612722", - "tt0288937", - "tt5305668", - "tt2169245", - "tt2935974", - "tt0303461", - "tt0796264", - "tt1568202", - "tt2245937", - "tt4362342", - "tt11168104", - "tt5809140", - "tt5833846", - "tt3322312", - "tt4906830", - "tt8680560", - "tt6238876", - "tt6970710", - "tt8709928", - "tt6792200", - "tt6497076", - "tt2649356", - "tt1195935", - "tt0496424", - "tt3973820", - "tt0775372", - "tt0112197", - "tt3480830", - "tt3762198", - "tt3454468", - "tt2788282", - "tt3811218", - "tt3431720", - "tt8912384", - "tt7453996", - "tt5807292", - "tt3530726", - "tt4903026", - "tt4206804", - "tt11261994", - "tt5435008", - "tt0805661", - "tt4655474", - "tt4761054", - "tt1596786", - "tt8878996", - "tt0138785", - "tt0057730", - "tt3543072", - "tt7131720", - "tt7218736", - "tt2707504", - "tt9606838", - "tt6834020", - "tt1921712", - "tt4113078", - "tt5881634", - "tt1476750", - "tt6257970", - "tt0809488", - "tt4633680", - "tt4110062", - "tt0758789", - "tt3559124", - "tt2359704", - "tt4971144", - "tt6211586", - "tt7686456", - "tt4168986", - "tt5962190", - "tt0801425", - "tt0062565", - "tt5797772", - "tt0071042", - "tt1971245", - "tt1874066", - "tt9397442", - "tt10344022", - "tt10686814", - "tt5223426", - "tt3799566", - "tt5491846", - "tt0086687", - "tt7939774", - "tt9817218", - "tt4786132", - "tt4447390", - "tt8263804", - "tt7352676", - "tt8946436", - "tt4955480", - "tt5178792", - "tt2647586", - "tt1886866", - "tt5819414", - "tt3973808", - "tt3727822", - "tt2800234", - "tt4361124", - "tt0169414", - "tt4554780", - "tt5480646", - "tt5583512", - "tt1399664", - "tt5672484", - "tt1767256", - "tt3597912", - "tt1073507", - "tt0233044", - "tt4192812", - "tt6874502", - "tt0866442", - "tt11610268", - "tt0402471", - "tt1312171", - "tt2330327", - "tt2955402", - "tt3398228", - "tt0244365", - "tt4051832", - "tt0785036", - "tt3595806", - "tt5194866", - "tt0460649", - "tt6144174", - "tt2699110", - "tt8272292", - "tt4838586", - "tt0423776", - "tt4858114", - "tt7902072", - "tt6410184", - "tt3205302", - "tt0098924", - "tt2963254", - "tt4718676", - "tt7895046", - "tt3597606", - "tt0106156", - "tt0297494", - "tt3485904", - "tt3078602", - "tt2249364", - "tt1000022", - "tt7318382", - "tt5647076", - "tt4363582", - "tt9460582", - "tt2191613", - "tt3741346", - "tt6428144", - "tt6249134", - "tt1307510", - "tt0346293", - "tt4306696", - "tt9883888", - "tt1267227", - "tt5470756", - "tt5345490", - "tt4384086", - "tt1797404", - "tt7704512", - "tt3502470", - "tt4358188", - "tt0096579", - "tt2647548", - "tt7804132", - "tt7482186", - "tt8991526", - "tt5540054", - "tt0355987", - "tt8241514", - "tt10127422", - "tt5327216", - "tt3907516", - "tt0368530", - "tt9466990", - "tt5402696", - "tt4898002", - "tt4902964", - "tt8164086", - "tt5475704", - "tt1492088", - "tt5674704", - "tt10145110", - "tt2328067", - "tt0318871", - "tt0115227", - "tt2492296", - "tt5197820", - "tt7808608", - "tt2006374", - "tt8629150", - "tt0255734", - "tt10845908", - "tt0176385", - "tt2281583", - "tt1538145", - "tt0058796", - "tt7555554", - "tt7736544", - "tt0329824", - "tt1319260", - "tt5016662", - "tt7765404", - "tt7531644", - "tt4946972", - "tt5178678", - "tt5917372", - "tt4539954", - "tt6588218", - "tt2141913", - "tt1967678", - "tt2939122", - "tt0157246", - "tt7119536", - "tt8164448", - "tt4939950", - "tt4827774", - "tt0313043", - "tt1637574", - "tt3824018", - "tt0383126", - "tt6038226", - "tt11498422", - "tt6459424", - "tt1978355", - "tt2458640", - "tt8201656", - "tt3839758", - "tt5612192", - "tt9145476", - "tt4199038", - "tt6056090", - "tt4944090", - "tt1973692", - "tt5755206", - "tt4159604", - "tt6133034", - "tt6040412", - "tt4288182", - "tt2069270", - "tt6075002", - "tt9000424", - "tt2128103", - "tt4417412", - "tt2874692", - "tt7808370", - "tt0370053", - "tt7280804", - "tt2582590", - "tt9131136", - "tt1069207", - "tt1307224", - "tt0437043", - "tt3891014", - "tt1641384", - "tt4145760", - "tt0460091", - "tt1442065", - "tt0062568", - "tt8635860", - "tt9348716", - "tt5730328", - "tt1439629", - "tt0088621", - "tt3309014", - "tt8792866", - "tt1720601", - "tt10936342", - "tt2709190", - "tt4797212", - "tt10882950", - "tt9780390", - "tt9433014", - "tt4176370", - "tt4954728", - "tt8888168", - "tt11243536", - "tt4295140", - "tt1561755", - "tt6036728", - "tt0115147", - "tt0446847", - "tt2678354", - "tt1655078", - "tt6142940", - "tt1839497", - "tt8305372", - "tt4326894", - "tt0363307", - "tt5651762", - "tt9679542", - "tt2395482", - "tt7958782", - "tt1140100", - "tt6905756", - "tt4834206", - "tt2498076", - "tt4600360", - "tt1637756", - "tt6181672", - "tt0318883", - "tt4718570", - "tt7043380", - "tt2794380", - "tt2094220", - "tt4116046", - "tt5083928", - "tt1597420", - "tt1470837", - "tt8367694", - "tt6495880", - "tt0118254", - "tt1480684", - "tt8680006", - "tt8146754", - "tt6416330", - "tt6337766", - "tt1684397", - "tt4532368", - "tt6923968", - "tt10485750", - "tt0373474", - "tt2980734", - "tt8002604", - "tt2475150", - "tt5860892", - "tt10968530", - "tt0362357", - "tt6441720", - "tt0396991", - "tt1837654", - "tt0835434", - "tt0167743", - "tt2653692", - "tt3598030", - "tt5957066", - "tt2365269", - "tt0133318", - "tt8358976", - "tt4515676", - "tt6461706", - "tt7833530", - "tt4604612", - "tt7210448", - "tt1436544", - "tt6416310", - "tt5839960", - "tt9654080", - "tt1637727", - "tt1222663", - "tt0198190", - "tt0098492", - "tt11337810", - "tt7721046", - "tt8451638", - "tt1772493", - "tt10327440", - "tt1756988", - "tt7924812", - "tt1933854", - "tt4150884", - "tt6681426", - "tt9397640", - "tt0115083", - "tt3143398", - "tt4903514", - "tt3831402", - "tt8129450", - "tt3984348", - "tt5195338", - "tt9068332", - "tt8693362", - "tt6516076", - "tt4254242", - "tt0101205", - "tt6938394", - "tt4191478", - "tt4016454", - "tt9533596", - "tt2186101", - "tt10155470", - "tt5542294", - "tt6348126", - "tt1699208", - "tt0096639", - "tt2505072", - "tt5761496", - "tt2862164", - "tt4312400", - "tt5607658", - "tt0284712", - "tt2074621", - "tt6443078", - "tt1652216", - "tt6463886", - "tt5347906", - "tt8141458", - "tt9324726", - "tt1258216", - "tt2443340", - "tt1985443", - "tt2226397", - "tt7703440", - "tt5940390", - "tt10813648", - "tt2980696", - "tt0421459", - "tt1657505", - "tt1013873", - "tt3579018", - "tt5676590", - "tt1333050", - "tt0118460", - "tt0434672", - "tt1453159", - "tt2889186", - "tt10327294", - "tt1340758", - "tt1422182", - "tt7211840", - "tt1650552", - "tt7892738", - "tt1319636", - "tt10334498", - "tt1618371", - "tt0083501", - "tt4918098", - "tt4189492", - "tt4790548", - "tt1715258", - "tt0397194", - "tt7608248", - "tt2828960", - "tt6470396", - "tt11165002", - "tt8105958", - "tt7563270", - "tt6045840", - "tt11164368", - "tt1724587", - "tt5165368", - "tt0286486", - "tt11503082", - "tt3847626", - "tt0060028", - "tt0068149", - "tt0094540", - "tt5179408", - "tt4007694", - "tt2710394", - "tt1578873", - "tt10165710", - "tt9316002", - "tt4481322", - "tt2057544", - "tt5690880", - "tt8680646", - "tt7875794", - "tt2788780", - "tt0331136", - "tt0086817", - "tt4643084", - "tt0251497", - "tt10614130", - "tt7935522", - "tt11333564", - "tt0072515", - "tt5862660", - "tt8199790", - "tt7895644", - "tt0086739", - "tt1807165", - "tt3087752", - "tt4146128", - "tt0090501", - "tt5711138", - "tt4049426", - "tt1366312", - "tt1596589", - "tt1800864", - "tt4474310", - "tt2708572", - "tt5608708", - "tt0053494", - "tt0092455", - "tt1863526", - "tt7623324", - "tt1094229", - "tt5116280", - "tt7821582", - "tt7452964", - "tt5595688", - "tt9893174", - "tt7942794", - "tt1837576", - "tt4698826", - "tt4591680", - "tt2022170", - "tt2497788", - "tt4687892", - "tt4174574", - "tt1546360", - "tt3327208", - "tt5884424", - "tt1008108", - "tt0126170", - "tt0472954", - "tt1442550", - "tt7572950", - "tt2245117", - "tt0103569", - "tt8289480", - "tt6938856", - "tt11569628", - "tt2014681", - "tt2151454", - "tt4979474", - "tt1942683", - "tt6911516", - "tt10585042", - "tt2288064", - "tt4258440", - "tt7907918", - "tt3323824", - "tt10075244", - "tt7877070", - "tt7122766", - "tt4574334", - "tt2248977", - "tt10687170", - "tt0398417", - "tt1865572", - "tt10614024", - "tt8840048", - "tt1751105", - "tt0099864", - "tt10534980", - "tt11142824", - "tt2334302", - "tt4121024", - "tt5152264", - "tt3915918", - "tt8499046", - "tt9174576", - "tt5843072", - "tt8019790", - "tt1842973", - "tt4677934", - "tt3673456", - "tt1460746", - "tt3684684", - "tt7889590", - "tt6560040", - "tt5193358", - "tt5730690", - "tt2262308", - "tt6931604", - "tt9165752", - "tt5625066", - "tt7343832", - "tt8905948", - "tt0384013", - "tt3715438", - "tt2297520", - "tt7099334", - "tt6232560", - "tt0489606", - "tt4567314", - "tt3012532", - "tt1433058", - "tt9077530", - "tt10675190", - "tt6397256", - "tt3520702", - "tt1728860", - "tt5378198", - "tt5270356", - "tt11304750", - "tt2733252", - "tt5596646", - "tt11348378", - "tt1711420", - "tt4922804", - "tt7441658", - "tt11617414", - "tt4175634", - "tt5363650", - "tt5500906", - "tt1242773", - "tt4312418", - "tt0804503", - "tt3132738", - "tt6024868", - "tt5376862", - "tt1297754", - "tt2122954", - "tt5451180", - "tt9755726", - "tt7725422", - "tt4728244", - "tt6164872", - "tt7645846", - "tt2184980", - "tt4378456", - "tt0839188", - "tt6744266", - "tt6674310", - "tt6621102", - "tt3216608", - "tt10515488", - "tt7186588", - "tt4953128", - "tt9303692", - "tt4141954", - "tt2147995", - "tt2256592", - "tt11497922", - "tt8115460", - "tt0103584", - "tt7361424", - "tt5096916", - "tt3463606", - "tt0452573", - "tt5327970", - "tt4843640", - "tt8165086", - "tt8808524", - "tt6389490", - "tt10738718", - "tt9387570", - "tt11194508", - "tt4036886", - "tt1601141", - "tt2762476", - "tt3268200", - "tt4591316", - "tt0072584", - "tt8595140", - "tt1566154", - "tt2391224", - "tt0068103", - "tt6811236", - "tt8032884", - "tt1758772", - "tt9327146", - "tt0058801", - "tt6176812", - "tt0190919", - "tt9307990", - "tt9886950", - "tt7375404", - "tt5277914", - "tt7524382", - "tt7410974", - "tt9080978", - "tt8394476", - "tt9083140", - "tt7180738", - "tt5669272", - "tt4035574", - "tt1552112", - "tt1379690", - "tt1458521", - "tt0495055", - "tt1478503", - "tt2770994", - "tt4508624", - "tt4574700", - "tt7138040", - "tt5615874", - "tt7243884", - "tt5705956", - "tt8887828", - "tt0078607", - "tt9314120", - "tt1034007", - "tt2818496", - "tt7094780", - "tt6222202", - "tt1197649", - "tt3909280", - "tt1569972", - "tt2707408", - "tt2183404", - "tt4424852", - "tt7078710", - "tt7178034", - "tt8001788", - "tt1332030", - "tt6116060", - "tt10720914", - "tt8430356", - "tt1806688", - "tt3556920", - "tt4779762", - "tt8650734", - "tt5028002", - "tt2249007", - "tt4367560", - "tt2049116", - "tt8594510", - "tt1327801", - "tt4970456", - "tt4511974", - "tt11018282", - "tt8430234", - "tt1835129", - "tt0465316", - "tt4719744", - "tt1615926", - "tt8784324", - "tt0106126", - "tt0287198", - "tt4145384", - "tt1563069", - "tt7720702", - "tt4941240", - "tt5905354", - "tt11621718", - "tt1821681", - "tt3292726", - "tt0072562", - "tt6814144", - "tt3900614", - "tt7680844", - "tt3447440", - "tt9812514", - "tt4594958", - "tt9078908", - "tt0863046", - "tt3214310", - "tt6675712", - "tt1740717", - "tt10919902", - "tt7671598", - "tt3807034", - "tt7503766", - "tt1255913", - "tt4958538", - "tt5482406", - "tt10539484", - "tt10919454", - "tt5617060", - "tt3011234", - "tt5024912", - "tt6100948", - "tt7510830", - "tt1549918", - "tt2402321", - "tt9674954", - "tt0313038", - "tt3842964", - "tt6696736", - "tt9530198", - "tt1138645", - "tt10329042", - "tt0499410", - "tt9170224", - "tt4857508", - "tt7386600", - "tt0094574", - "tt8111088", - "tt2656614", - "tt3069212", - "tt7587362", - "tt8140732", - "tt9287050", - "tt0478947", - "tt4419496", - "tt7188964", - "tt1243719", - "tt7426142", - "tt2871832", - "tt5397520", - "tt7503792", - "tt0080231", - "tt0965394", - "tt2477230", - "tt3900828", - "tt2402137", - "tt2310212", - "tt0057748", - "tt0944947", - "tt9418676", - "tt1043090", - "tt3314228", - "tt5460226", - "tt7620702", - "tt5691130", - "tt2268019", - "tt2189258", - "tt10369876", - "tt8457940", - "tt5995370", - "tt5580386", - "tt1059475", - "tt6215600", - "tt8271124", - "tt6461812", - "tt7826126", - "tt6172806", - "tt2226342", - "tt6971054", - "tt4428122", - "tt7955626", - "tt1877895", - "tt5500158", - "tt7449828", - "tt5863126", - "tt8510610", - "tt2433570", - "tt6352180", - "tt5432548", - "tt5963958", - "tt7358910", - "tt0264235", - "tt6101862", - "tt8403536", - "tt1567432", - "tt7293754", - "tt2390276", - "tt0060036", - "tt2202713", - "tt8316986", - "tt6059460", - "tt6353368", - "tt1837642", - "tt7310890", - "tt7010622", - "tt4276618", - "tt0810788", - "tt2368645", - "tt4324330", - "tt4180738", - "tt0465326", - "tt4903242", - "tt1625724", - "tt4168608", - "tt0487831", - "tt0280330", - "tt4355188", - "tt3679166", - "tt2149175", - "tt0295064", - "tt2321596", - "tt11122470", - "tt5512352", - "tt8010342", - "tt5722190", - "tt8591984", - "tt2389845", - "tt3451690", - "tt9039142", - "tt6636246", - "tt10753590", - "tt7699414", - "tt3326054", - "tt7645192", - "tt0892700", - "tt2136138", - "tt5337806", - "tt2885556", - "tt4270492", - "tt9773260", - "tt6390538", - "tt4970276", - "tt5189670", - "tt6845424", - "tt4568108", - "tt5071412", - "tt0491603", - "tt2577192", - "tt0106102", - "tt1832207", - "tt0136658", - "tt1833285", - "tt2074248", - "tt0472023", - "tt8425308", - "tt8778064", - "tt3502172", - "tt2375720", - "tt4003966", - "tt2344781", - "tt9056536", - "tt6510950", - "tt3012698", - "tt9621146", - "tt2057193", - "tt4912992", - "tt0324924", - "tt3286608", - "tt5957766", - "tt4634294", - "tt2709648", - "tt0112167", - "tt4194110", - "tt9812894", - "tt7296380", - "tt7423526", - "tt1699659", - "tt10449632", - "tt6358878", - "tt2583620", - "tt4960458", - "tt2753166", - "tt7976568", - "tt3780132", - "tt3865236", - "tt2788432", - "tt0780438", - "tt7211618", - "tt5665418", - "tt0426769", - "tt3922704", - "tt2043143", - "tt1181541", - "tt2782214", - "tt0074074", - "tt3010856", - "tt4231432", - "tt2176287", - "tt7094798", - "tt0195455", - "tt8524448", - "tt4094300", - "tt4855114", - "tt2231644", - "tt8548870", - "tt1695366", - "tt3690362", - "tt4699514", - "tt3044834", - "tt4997250", - "tt8201814", - "tt1733785", - "tt6517320", - "tt4132692", - "tt3683038", - "tt5812294", - "tt1669774", - "tt8880894", - "tt3499954", - "tt8594496", - "tt6092060", - "tt7944664", - "tt6332568", - "tt6453190", - "tt6934964", - "tt5462936", - "tt4719888", - "tt1034201", - "tt7116050", - "tt2151337", - "tt2069135", - "tt4667710", - "tt0830161", - "tt5618284", - "tt6488862", - "tt5958514", - "tt4939064", - "tt5338744", - "tt7242816", - "tt2128211", - "tt3147316", - "tt5447830", - "tt7411098", - "tt8342862", - "tt0844203", - "tt11000526", - "tt4999820", - "tt1936696", - "tt2657262", - "tt4442462", - "tt4733278", - "tt8075272", - "tt11302324", - "tt10133418", - "tt9046520", - "tt6403968", - "tt3148302", - "tt1190689", - "tt2788518", - "tt8263666", - "tt7958326", - "tt5675620", - "tt1583607", - "tt10085386", - "tt5663062", - "tt0799862", - "tt6131920", - "tt3186894", - "tt2523506", - "tt2336630", - "tt7344644", - "tt8966970", - "tt0934320", - "tt1718437", - "tt11301834", - "tt6873658", - "tt0274988", - "tt5895884", - "tt6882202", - "tt7924854", - "tt5031234", - "tt1458809", - "tt5420376", - "tt4568372", - "tt5126414", - "tt8634332", - "tt6264432", - "tt0759475", - "tt3787754", - "tt10540562", - "tt9322904", - "tt2073664", - "tt5765188", - "tt9078960", - "tt1821032", - "tt10220588", - "tt5849156", - "tt2603568", - "tt1178636", - "tt8439492", - "tt0358796", - "tt2647544", - "tt7205264", - "tt8243158", - "tt8421152", - "tt5692740", - "tt6392176", - "tt0106053", - "tt2609546", - "tt6214876", - "tt8271176", - "tt2950342", - "tt5865052", - "tt6294402", - "tt7493176", - "tt2057511", - "tt10580092", - "tt1659175", - "tt3038546", - "tt7391648", - "tt2714046", - "tt8001146", - "tt1685401", - "tt3727552", - "tt5900600", - "tt9690302", - "tt0458253", - "tt1558182", - "tt2943110", - "tt10486740", - "tt5271054", - "tt3615538", - "tt8035424", - "tt8336340", - "tt5599272", - "tt7518558", - "tt9165134", - "tt0969654", - "tt2272367", - "tt0071039", - "tt3052478", - "tt3595776", - "tt0206501", - "tt5320160", - "tt0103359", - "tt6487416", - "tt8548830", - "tt0412253", - "tt7336778", - "tt1440346", - "tt0063893", - "tt8328460", - "tt5151816", - "tt2402569", - "tt1584150", - "tt6086806", - "tt5419200", - "tt1586680", - "tt1124354", - "tt7402414", - "tt1031283", - "tt2204345", - "tt2983606", - "tt5628334", - "tt8783862", - "tt4196686", - "tt2548200", - "tt11191198", - "tt4126382", - "tt2593336", - "tt7947854", - "tt5292622", - "tt2654620", - "tt1127205", - "tt0772139", - "tt7160640", - "tt10065544", - "tt10477528", - "tt0098740", - "tt8597326", - "tt9698520", - "tt1833403", - "tt8136292", - "tt3909224", - "tt7174764", - "tt1567254", - "tt1266020", - "tt3596178", - "tt2829558", - "tt9077196", - "tt2761630", - "tt7255502", - "tt0995832", - "tt6928052", - "tt1688612", - "tt1364951", - "tt10715148", - "tt9708550", - "tt3261308", - "tt7142738", - "tt9131050", - "tt2745774", - "tt7893758", - "tt0097553", - "tt0118375", - "tt2731624", - "tt1864017", - "tt1756927", - "tt8305310", - "tt7551216", - "tt4145454", - "tt2623754", - "tt7134506", - "tt10687510", - "tt5787720", - "tt8602408", - "tt4147780", - "tt7324540", - "tt5338544", - "tt9425126", - "tt1213404", - "tt1059455", - "tt6329790", - "tt7422812", - "tt3893314", - "tt0085017", - "tt10659518", - "tt8004848", - "tt8344332", - "tt9067020", - "tt1832668", - "tt10050772", - "tt2374617", - "tt7428106", - "tt3514798", - "tt7464074", - "tt8425404", - "tt7188736", - "tt9310400", - "tt1780441", - "tt6048596", - "tt7413448", - "tt1628033", - "tt4916574", - "tt7712598", - "tt2618986", - "tt0165052", - "tt1442553", - "tt10181132", - "tt2012383", - "tt9046782", - "tt2099034", - "tt7971476", - "tt8531538", - "tt1720619", - "tt3435532", - "tt8417266", - "tt1579295", - "tt3532050", - "tt9062846", - "tt7235406", - "tt1740299", - "tt3642902", - "tt5691552", - "tt10559276", - "tt6522758", - "tt2408444", - "tt4642170", - "tt0341855", - "tt7658402", - "tt1166709", - "tt4264096", - "tt7554052", - "tt4193662", - "tt1802968", - "tt1691602", - "tt7083006", - "tt6294706", - "tt2674484", - "tt8381724", - "tt9077194", - "tt5899470", - "tt2220768", - "tt6632666", - "tt10466426", - "tt2861424", - "tt0055708", - "tt4049416", - "tt3147692", - "tt8697554", - "tt4878488", - "tt0203259", - "tt8297022", - "tt0948538", - "tt1332150", - "tt1195419", - "tt4144890", - "tt1051155", - "tt2071236", - "tt3749900", - "tt8390274", - "tt4277268", - "tt3061830", - "tt4210022", - "tt5486088", - "tt9686380", - "tt4481266", - "tt11318602", - "tt8873996", - "tt7470116", - "tt2245283", - "tt3869500", - "tt7822618", - "tt6659624", - "tt7539608", - "tt2872488", - "tt0960136", - "tt0149437", - "tt5094928", - "tt2346169", - "tt4786824", - "tt2188931", - "tt6021408", - "tt9704798", - "tt6229656", - "tt4938700", - "tt5574490", - "tt4715246", - "tt6256616", - "tt1408430", - "tt0111999", - "tt3229454", - "tt2647420", - "tt7502274", - "tt0421030", - "tt7740574", - "tt4905554", - "tt3322314", - "tt9077192", - "tt7468900", - "tt5015928", - "tt4159076", - "tt11011366", - "tt9780458", - "tt6483836", - "tt5459976", - "tt3652662", - "tt0770762", - "tt3037520", - "tt0388644", - "tt10332322", - "tt11053220", - "tt10665386", - "tt11178330", - "tt10474088", - "tt3824414", - "tt8817836", - "tt1044418", - "tt0815063", - "tt2825020", - "tt4941288", - "tt7678910", - "tt7510024", - "tt10327354", - "tt1086761", - "tt10027990", - "tt9170638", - "tt3337596", - "tt6539502", - "tt0094535", - "tt9656532", - "tt3891038", - "tt11541444", - "tt6470478", - "tt1554356", - "tt7649694", - "tt3487356", - "tt8456094", - "tt3585270", - "tt4800878", - "tt7050910", - "tt1591493", - "tt1997999", - "tt0830361", - "tt6304534", - "tt3434132", - "tt4158110", - "tt1442109", - "tt9557812", - "tt11658046", - "tt2181219", - "tt3413236", - "tt6150576", - "tt0185906", - "tt7153034", - "tt10730508", - "tt10023178", - "tt11004134", - "tt8289758", - "tt1442464", - "tt6684226", - "tt8906172", - "tt7306056", - "tt6040674", - "tt2109059", - "tt3718778", - "tt2228547", - "tt4651448", - "tt10555674", - "tt9113406", - "tt1484823", - "tt8257674", - "tt8548866", - "tt7472896", - "tt2521978", - "tt1830379", - "tt2033616", - "tt4354880", - "tt7440784", - "tt6807442", - "tt0460690", - "tt2960796", - "tt2084712", - "tt4908908", - "tt4680360", - "tt0118276", - "tt8475274", - "tt9359222", - "tt0486657", - "tt8728268", - "tt4635208", - "tt4908956", - "tt7861584", - "tt7997214", - "tt5361426", - "tt2193743", - "tt11208504", - "tt8961828", - "tt0454349", - "tt8680948", - "tt5512658", - "tt8792570", - "tt4424758", - "tt1830924", - "tt3953642", - "tt3727036", - "tt5952634", - "tt7488702", - "tt0318236", - "tt1495708", - "tt6437276", - "tt4600404", - "tt7364546", - "tt9879074", - "tt6268052", - "tt5830254", - "tt1765622", - "tt0088559", - "tt2351868", - "tt4132196", - "tt8961508", - "tt0484243", - "tt10681670", - "tt0292414", - "tt1519931", - "tt2232345", - "tt7120662", - "tt7526498", - "tt0460644", - "tt0383795", - "tt5748116", - "tt3117322", - "tt2709224", - "tt7712594", - "tt10584446", - "tt6203758", - "tt8027624", - "tt7646318", - "tt2245988", - "tt3250026", - "tt4688156", - "tt1820742", - "tt6905542", - "tt1974470", - "tt4396862", - "tt4341996", - "tt6658720", - "tt0278191", - "tt8372778", - "tt6890566", - "tt4608812", - "tt2342499", - "tt5712554", - "tt0977628", - "tt0844441", - "tt1327810", - "tt3484180", - "tt0437714", - "tt1806234", - "tt4338988", - "tt6289132", - "tt0296310", - "tt9615014", - "tt2712966", - "tt7818686", - "tt7514746", - "tt0490035", - "tt3484274", - "tt4338336", - "tt5901348", - "tt2315850", - "tt8462412", - "tt1281256", - "tt9808680", - "tt0353115", - "tt2224645", - "tt0413573", - "tt8119642", - "tt4396630", - "tt5467332", - "tt0773262", - "tt3920814", - "tt5813158", - "tt2705602", - "tt6791846", - "tt0380136", - "tt0115288", - "tt4040530", - "tt2402207", - "tt1720019", - "tt7772588", - "tt1105711", - "tt6283542", - "tt0290111", - "tt4899548", - "tt2543312", - "tt3097686", - "tt0454731", - "tt10228276", - "tt8365054", - "tt11018018", - "tt3106400", - "tt4575056", - "tt3473134", - "tt4640050", - "tt1587934", - "tt8888322", - "tt7016936", - "tt1530848", - "tt8531222", - "tt10019004", - "tt1378167", - "tt9765222", - "tt8502560", - "tt10265158", - "tt10608396", - "tt11390530", - "tt3591200", - "tt0437700", - "tt6980394", - "tt0050079", - "tt5730102", - "tt1520211", - "tt10055734", - "tt6170874", - "tt2466292", - "tt10243640", - "tt4520992", - "tt1790939", - "tt0159206", - "tt4331478", - "tt8098384", - "tt5396928", - "tt9108604", - "tt1839337", - "tt2555880", - "tt7599936", - "tt2524222", - "tt4236770", - "tt2869898", - "tt1719837", - "tt3232102", - "tt8738580", - "tt3559912", - "tt5816568", - "tt3496764", - "tt6926374", - "tt6097696", - "tt0159876", - "tt5257744", - "tt8068860", - "tt6916746", - "tt0770659", - "tt6226232", - "tt2244871", - "tt0259153", - "tt0462128", - "tt1280822", - "tt0289825", - "tt7439546", - "tt1790914", - "tt6319696", - "tt3542324", - "tt0086675", - "tt2832756", - "tt0350448", - "tt1630574", - "tt11007040", - "tt5068750", - "tt7396134", - "tt2361094", - "tt3341382", - "tt1278016", - "tt6241856", - "tt8362852", - "tt6628364", - "tt8404094", - "tt1794147", - "tt2621446", - "tt1721666", - "tt6509474", - "tt1600690", - "tt0179552", - "tt5538644", - "tt7981232", - "tt2649522", - "tt1771072", - "tt1149608", - "tt6953912", - "tt6968586", - "tt0814164", - "tt10323232", - "tt8882486", - "tt7772610", - "tt1232320", - "tt3098842", - "tt6659572", - "tt6459410", - "tt7411686", - "tt4791250", - "tt8893810", - "tt0826760", - "tt0063878", - "tt3906560", - "tt2919910", - "tt5626028", - "tt8938060", - "tt1553620", - "tt0364151", - "tt6316862", - "tt1865718", - "tt5734342", - "tt2049036", - "tt5369352", - "tt7559438", - "tt2400631", - "tt4816364", - "tt5329344", - "tt7261310", - "tt0070904", - "tt9690214", - "tt7333970", - "tt5705416", - "tt0257295", - "tt3593456", - "tt0094484", - "tt2474952", - "tt8494614", - "tt5897570", - "tt2382108", - "tt0299285", - "tt5209280", - "tt10594194", - "tt0075500", - "tt6816780", - "tt6903256", - "tt6517102", - "tt11602670", - "tt4635922", - "tt5023666", - "tt3021686", - "tt1131746", - "tt2177461", - "tt2407574", - "tt5212822", - "tt5133742", - "tt8235236", - "tt6565892", - "tt1955311", - "tt1322240", - "tt7879820", - "tt10332508", - "tt3704280", - "tt5511582", - "tt6613246", - "tt5503718", - "tt8762206", - "tt6974848", - "tt3138900", - "tt4667888", - "tt6101726", - "tt3810832", - "tt4644488", - "tt7034646", - "tt10474124", - "tt0075561", - "tt1461312", - "tt7938588", - "tt10687236", - "tt4192766", - "tt7616830", - "tt9814900", - "tt3218680", - "tt1837492", - "tt5603868", - "tt7766172", - "tt5853176", - "tt4041694", - "tt0491738", - "tt9824096", - "tt1885032", - "tt2297604", - "tt8069036", - "tt2701582", - "tt10999912", - "tt7026882", - "tt10058722", - "tt1841321", - "tt9024590", - "tt3544772", - "tt0285333", - "tt9628244", - "tt2815618", - "tt0085106", - "tt4322334", - "tt3231380", - "tt2319282", - "tt6064882", - "tt11079096", - "tt11091524", - "tt6600720", - "tt5734106", - "tt7008682", - "tt8560732", - "tt10327830", - "tt4196822", - "tt2571774", - "tt10370734", - "tt2182427", - "tt5664952", - "tt8300324", - "tt2260666", - "tt2735544", - "tt0112173", - "tt4387170", - "tt1190931", - "tt2368005", - "tt10133864", - "tt8840790", - "tt3496824", - "tt0850642", - "tt2386354", - "tt10163846", - "tt5515212", - "tt0103428", - "tt7126878", - "tt0086765", - "tt5266278", - "tt9145334", - "tt0476918", - "tt3766376", - "tt1466074", - "tt5651776", - "tt7889220", - "tt9657538", - "tt7988304", - "tt2608368", - "tt1181320", - "tt1489428", - "tt4193176", - "tt5564124", - "tt3107224", - "tt6186672", - "tt1898575", - "tt5665928", - "tt0227972", - "tt4167694", - "tt2242025", - "tt8714904", - "tt5752322", - "tt0090500", - "tt5519574", - "tt2314792", - "tt3746010", - "tt3924978", - "tt2802850", - "tt6522580", - "tt1266003", - "tt5640558", - "tt8123920", - "tt3017438", - "tt6503244", - "tt8259142", - "tt2442560", - "tt3655448", - "tt0073965", - "tt7259746", - "tt7631146", - "tt2395695", - "tt3062328", - "tt5555260", - "tt1870946", - "tt6688750", - "tt0283203", - "tt3182934", - "tt6077448", - "tt2006005", - "tt7509270", - "tt1717455", - "tt0098898", - "tt5874840", - "tt2287307", - "tt8893502", - "tt2056366", - "tt1818912", - "tt0787490", - "tt1643266", - "tt2257959", - "tt8815200", - "tt0314979", - "tt1119644", - "tt6538064", - "tt4791174", - "tt4112184", - "tt2406986", - "tt10554898", - "tt0156205", - "tt0389564", - "tt4374208", - "tt3904962", - "tt4576012", - "tt3859618", - "tt3551980", - "tt8655736", - "tt3499120", - "tt8273006", - "tt0934814", - "tt11463862", - "tt3598496", - "tt8650772", - "tt7492122", - "tt6264964", - "tt5657014", - "tt7439552", - "tt9204128", - "tt3475084", - "tt2654580", - "tt1492627", - "tt0364782", - "tt2738096", - "tt0402711", - "tt8694364", - "tt9702106", - "tt0239195", - "tt0972412", - "tt4269898", - "tt6416240", - "tt8996534", - "tt8201186", - "tt0976192", - "tt0369117", - "tt2378020", - "tt8001718", - "tt4777214", - "tt5344382", - "tt4341348", - "tt0489974", - "tt5932548", - "tt5363872", - "tt6149182", - "tt8660526", - "tt0482857", - "tt7558108", - "tt3281796", - "tt1808757", - "tt4370528", - "tt5987254", - "tt5311790", - "tt7229296", - "tt10106108", - "tt0362192", - "tt2402061", - "tt11261424", - "tt11230262", - "tt2632424", - "tt10098580", - "tt7538868", - "tt4228724", - "tt1361839", - "tt6660498", - "tt5105306", - "tt7801964", - "tt3828162", - "tt7948996", - "tt1759761", - "tt3068894", - "tt1770959", - "tt0944820", - "tt0072564", - "tt8594324", - "tt2174367", - "tt9169602", - "tt4726480", - "tt3305096", - "tt2362694", - "tt4276624", - "tt10312776", - "tt5637292", - "tt6035850", - "tt2357908", - "tt6769208", - "tt11110622", - "tt2758950", - "tt4791170", - "tt1960255", - "tt3216832", - "tt5820530", - "tt0785062", - "tt2390334", - "tt8311576", - "tt2198439", - "tt5464086", - "tt9098432", - "tt6147214", - "tt2649588", - "tt9516768", - "tt2392179", - "tt2393813", - "tt1772752", - "tt0086734", - "tt5673782", - "tt1600199", - "tt2480498", - "tt7745956", - "tt0108941", - "tt0795176", - "tt0496343", - "tt10426684", - "tt3019170", - "tt2484950", - "tt6358456", - "tt2693776", - "tt3032476", - "tt0073972", - "tt5360472", - "tt5335606", - "tt5990044", - "tt0182576", - "tt8450534", - "tt0408381", - "tt9454736", - "tt1710295", - "tt3986852", - "tt1186342", - "tt3315386", - "tt0758745", - "tt1320066", - "tt8305276", - "tt2763296", - "tt1200227", - "tt2647258", - "tt1409008", - "tt0115097", - "tt6186402", - "tt3063454", - "tt6845434", - "tt6304676", - "tt4168956", - "tt8046482", - "tt6473300", - "tt1125758", - "tt3118014", - "tt1958961", - "tt8565136", - "tt7292950", - "tt1830154", - "tt2316306", - "tt2325846", - "tt0346314", - "tt1885780", - "tt2561882", - "tt3629782", - "tt5174766", - "tt5057054", - "tt4636870", - "tt0101206", - "tt0068037", - "tt10608476", - "tt7689460", - "tt8887956", - "tt0924651", - "tt1493239", - "tt5160872", - "tt0106179", - "tt5079788", - "tt3467018", - "tt7661384", - "tt8791742", - "tt1861510", - "tt1954804", - "tt7768192", - "tt2394340", - "tt11458672", - "tt0063936", - "tt7178298", - "tt6053538", - "tt7493974", - "tt1663654", - "tt9516466", - "tt1220617", - "tt0320037", - "tt0238781", - "tt6233884", - "tt10186846", - "tt8649216", - "tt6148376", - "tt5478730", - "tt7677740", - "tt3080030", - "tt0115270", - "tt4450826", - "tt10516874", - "tt6100640", - "tt0445912", - "tt1396212", - "tt7900174", - "tt7759016", - "tt8893566", - "tt0446622", - "tt1313176", - "tt5737466", - "tt4532640", - "tt1790233", - "tt2100976", - "tt11822998", - "tt7768836", - "tt5615840", - "tt5797374", - "tt8146868", - "tt7620312", - "tt8001214", - "tt8810398", - "tt1538039", - "tt8845444", - "tt1608180", - "tt5834256", - "tt4787000", - "tt8367736", - "tt6415656", - "tt6233054", - "tt7183074", - "tt2455546", - "tt7024616", - "tt6269080", - "tt3230454", - "tt9425082", - "tt5512432", - "tt10777024", - "tt6664704", - "tt9817236", - "tt1449940", - "tt11000396", - "tt4766594", - "tt4977374", - "tt8050858", - "tt1919418", - "tt1074206", - "tt0310416", - "tt10207090", - "tt5424556", - "tt2147632", - "tt3315102", - "tt3967910", - "tt2882076", - "tt8826128", - "tt2341762", - "tt5473364", - "tt2301643", - "tt2176353", - "tt5936838", - "tt0166428", - "tt7942774", - "tt1433870", - "tt10380884", - "tt4488404", - "tt0319960", - "tt1804155", - "tt1319900", - "tt2343157", - "tt5569062", - "tt2715776", - "tt2334524", - "tt2297757", - "tt0063946", - "tt6404896", - "tt8303084", - "tt10087022", - "tt5779830", - "tt6439752", - "tt9576820", - "tt6423364", - "tt2349440", - "tt7604446", - "tt4934214", - "tt1945727", - "tt2374744", - "tt3722332", - "tt0105986", - "tt5485566", - "tt6394324", - "tt4520906", - "tt5635260", - "tt0062588", - "tt7601732", - "tt0213327", - "tt1856010", - "tt8641686", - "tt7153382", - "tt1726839", - "tt5101192", - "tt1685313", - "tt5496320", - "tt7158972", - "tt5938484", - "tt0098878", - "tt1989062", - "tt1236246", - "tt11744632", - "tt5640060", - "tt9777918", - "tt1124014", - "tt11399212", - "tt3706628", - "tt3335074", - "tt7425626", - "tt5299008", - "tt6416314", - "tt5932466", - "tt5691156", - "tt7635308", - "tt6937242", - "tt7637506", - "tt5462886", - "tt7572868", - "tt0133302", - "tt2227610", - "tt1192302", - "tt3333880", - "tt8543258", - "tt2057856", - "tt11141900", - "tt4688512", - "tt3502262", - "tt0318959", - "tt1582459", - "tt4986084", - "tt2010806", - "tt3952772", - "tt1626459", - "tt2543328", - "tt8448018", - "tt2427220", - "tt3951238", - "tt0078701", - "tt7161312", - "tt1851040", - "tt5721172", - "tt7286078", - "tt7459986", - "tt8894324", - "tt8610212", - "tt7673112", - "tt8892926", - "tt3038248", - "tt4422756", - "tt9412802", - "tt5195114", - "tt6775816", - "tt6156654", - "tt3839272", - "tt4006826", - "tt0972534", - "tt0115392", - "tt8959856", - "tt9466968", - "tt2203143", - "tt7234598", - "tt9250894", - "tt8019444", - "tt5966964", - "tt5085832", - "tt8575476", - "tt8860450", - "tt0376390", - "tt8289292", - "tt3061050", - "tt4549142", - "tt11138524", - "tt5619658", - "tt5066664", - "tt7733422", - "tt6586344", - "tt4928166", - "tt0463398", - "tt8276298", - "tt4522400", - "tt2262383", - "tt6946984", - "tt3983112", - "tt4267002", - "tt5458832", - "tt4991674", - "tt9378632", - "tt8773338", - "tt4658614", - "tt5869342", - "tt8787756", - "tt8265286", - "tt8319644", - "tt2229907", - "tt9054904", - "tt9165706", - "tt3843168", - "tt0343314", - "tt4397866", - "tt0112111", - "tt7214622", - "tt9237632", - "tt6174216", - "tt2655470", - "tt2057611", - "tt1336911", - "tt10709178", - "tt0366025", - "tt6786518", - "tt10583412", - "tt5640416", - "tt0068040", - "tt9199168", - "tt9787504", - "tt7414954", - "tt8509962", - "tt2603414", - "tt4334446", - "tt2350779", - "tt4421578", - "tt3199398", - "tt10711784", - "tt8905964", - "tt6675556", - "tt1128727", - "tt4895568", - "tt0821375", - "tt2333420", - "tt0207919", - "tt7656606", - "tt1240976", - "tt0318224", - "tt2401256", - "tt2933118", - "tt0875149", - "tt4789576", - "tt2509804", - "tt9331982", - "tt0248654", - "tt8267440", - "tt2957824", - "tt7718088", - "tt2699780", - "tt4803766", - "tt5233094", - "tt3910804", - "tt7653274", - "tt9064792", - "tt7776244", - "tt7205552", - "tt7586086", - "tt9327348", - "tt5116962", - "tt3103340", - "tt10675488", - "tt5011816", - "tt2293529", - "tt5546352", - "tt5884792", - "tt1809014", - "tt0452718", - "tt3514886", - "tt8403622", - "tt5193662", - "tt1934673", - "tt0845746", - "tt7532674", - "tt0460666", - "tt7613210", - "tt8787746", - "tt0066667", - "tt8712664", - "tt7683300", - "tt4716164", - "tt6684082", - "tt6153318", - "tt11497386", - "tt2133695", - "tt3788022", - "tt9397406", - "tt2014553", - "tt1830617", - "tt0088641", - "tt9261290", - "tt1082583", - "tt8421554", - "tt2136396", - "tt3996158", - "tt2543378", - "tt1495950", - "tt8694866", - "tt1759136", - "tt1663641", - "tt4291722", - "tt3039270", - "tt2365946", - "tt3444278", - "tt11111164", - "tt9601246", - "tt7674544", - "tt5969074", - "tt2662810", - "tt7395992", - "tt1649194", - "tt6130902", - "tt2372220", - "tt1366321", - "tt1024932", - "tt3735164", - "tt7654820", - "tt8755226", - "tt8337704", - "tt1695989", - "tt1877010", - "tt7913450", - "tt0121955", - "tt0452046", - "tt7907916", - "tt5108952", - "tt5202520", - "tt5714712", - "tt8128854", - "tt5098926", - "tt8994238", - "tt6117020", - "tt0112040", - "tt2968902", - "tt2191671", - "tt1844624", - "tt0983334", - "tt1001482", - "tt3175512", - "tt6082618", - "tt7979042", - "tt3079768", - "tt4568288", - "tt7801780", - "tt5809150", - "tt9654082", - "tt6246500", - "tt4519292", - "tt0118480", - "tt1693592", - "tt0280277", - "tt5275894", - "tt11120674", - "tt2377081", - "tt0844653", - "tt6387572", - "tt1315063", - "tt10850888", - "tt1936714", - "tt8014232", - "tt5437394", - "tt0178149", - "tt2152721", - "tt5686194", - "tt1586676", - "tt3585200", - "tt8888656", - "tt10734254", - "tt6647696", - "tt2022713", - "tt7911424", - "tt5957358", - "tt0060009", - "tt7263064", - "tt1836237", - "tt8336664", - "tt6038954", - "tt10183430", - "tt5674272", - "tt4715134", - "tt3549044", - "tt2761354", - "tt0443412", - "tt0105943", - "tt5518198", - "tt3748704", - "tt4785472", - "tt3807022", - "tt0439100", - "tt1441135", - "tt0935095", - "tt10659366", - "tt3310544", - "tt1704292", - "tt0955346", - "tt0180241", - "tt6340730", - "tt0312172", - "tt0840196", - "tt3149010", - "tt6902652", - "tt7737500", - "tt1757202", - "tt6264782", - "tt10271544", - "tt8650584", - "tt5805254", - "tt6821044", - "tt4836266", - "tt2746566", - "tt5165412", - "tt8681676", - "tt10023174", - "tt9055008", - "tt6014022", - "tt5536354", - "tt3168978", - "tt5336698", - "tt9614090", - "tt0090424", - "tt2193021", - "tt2183641", - "tt5159916", - "tt0943690", - "tt8369840", - "tt6544166", - "tt9099570", - "tt7529610", - "tt6570046", - "tt10675716", - "tt0088580", - "tt0959601", - "tt4111430", - "tt2520946", - "tt9066034", - "tt4944694", - "tt2514438", - "tt4224588", - "tt2346273", - "tt2361621", - "tt6743832", - "tt1819509", - "tt3879306", - "tt5067282", - "tt7752034", - "tt1283456", - "tt0080240", - "tt2964118", - "tt6145878", - "tt6237046", - "tt8772296", - "tt1235099", - "tt3052798", - "tt1430587", - "tt1772157", - "tt0273855", - "tt4047038", - "tt0063950", - "tt7439554", - "tt5875646", - "tt1489403", - "tt10079760", - "tt9315008", - "tt2630716", - "tt6111130", - "tt5260528", - "tt1709198", - "tt6287684", - "tt1983079", - "tt7431790", - "tt1513168", - "tt10257338", - "tt2748608", - "tt3522052", - "tt1403966", - "tt1319690", - "tt3121722", - "tt6107486", - "tt3181672", - "tt0144700", - "tt6546758", - "tt2069449", - "tt0988824", - "tt6021862", - "tt3665292", - "tt6775794", - "tt5722072", - "tt8050756", - "tt3877200", - "tt0259127", - "tt8077544", - "tt8134186", - "tt8069360", - "tt2219622", - "tt3955680", - "tt9552658", - "tt4877736", - "tt8611524", - "tt3054698", - "tt11650204", - "tt6317068", - "tt2058221", - "tt9770286", - "tt2707792", - "tt0983983", - "tt8962130", - "tt3777108", - "tt8115462", - "tt4947608", - "tt4594334", - "tt2805574", - "tt3864896", - "tt4212188", - "tt8005374", - "tt6423884", - "tt5275892", - "tt0092400", - "tt10981266", - "tt0129712", - "tt7661368", - "tt3370324", - "tt0184122", - "tt5432988", - "tt0499383", - "tt3713822", - "tt1361778", - "tt2071322", - "tt8101850", - "tt1734192", - "tt0451461", - "tt2734532", - "tt3582458", - "tt5117072", - "tt1731601", - "tt6926044", - "tt8566938", - "tt7913564", - "tt7644680", - "tt6692188", - "tt0460627", - "tt8543080", - "tt3636914", - "tt0898266", - "tt6063716", - "tt4477976", - "tt7334894", - "tt5335658", - "tt8567856", - "tt1379164", - "tt5777020", - "tt5871246", - "tt3279494", - "tt4378376", - "tt1930123", - "tt8668706", - "tt6143796", - "tt3688530", - "tt3141172", - "tt8115666", - "tt6027096", - "tt0090390", - "tt11063952", - "tt1725902", - "tt2558662", - "tt4457140", - "tt5815282", - "tt4592410", - "tt3516878", - "tt3952774", - "tt2546024", - "tt7345380", - "tt6881158", - "tt6328652", - "tt1728102", - "tt0842904", - "tt4061080", - "tt8923396", - "tt7741830", - "tt5376864", - "tt2758692", - "tt0072506", - "tt4641870", - "tt8304608", - "tt2375692", - "tt1710308", - "tt10394770", - "tt4635282", - "tt5000634", - "tt7374508", - "tt2191567", - "tt7491974", - "tt6027168", - "tt6926280", - "tt4523638", - "tt4587946", - "tt5020352", - "tt1183335", - "tt0903747", - "tt3228904", - "tt7498290", - "tt1551632", - "tt5707802", - "tt2741602", - "tt7134908", - "tt3480144", - "tt8159596", - "tt0758737", - "tt1189346", - "tt9637536", - "tt1587669", - "tt0379623", - "tt4158012", - "tt6282620", - "tt5620962", - "tt0367279", - "tt1843678", - "tt10267798", - "tt9418572", - "tt7424250", - "tt7738290", - "tt5665732", - "tt10183688", - "tt1497563", - "tt2294227", - "tt4160686", - "tt3163562", - "tt7632608", - "tt7161218", - "tt1842793", - "tt8429752", - "tt0086791", - "tt6819600", - "tt6343514", - "tt9184970", - "tt9169658", - "tt3768572", - "tt2139371", - "tt1595860", - "tt7157248", - "tt4960916", - "tt5095238", - "tt5797220", - "tt5368542", - "tt2340036", - "tt6233538", - "tt8699270", - "tt10023306", - "tt4218824", - "tt0062583", - "tt11576960", - "tt6903230", - "tt4171176", - "tt0437745", - "tt8577458", - "tt1444382", - "tt2616280", - "tt0112095", - "tt8559538", - "tt8200004", - "tt5762118", - "tt5780516", - "tt5027882", - "tt8523042", - "tt8332438", - "tt7983796", - "tt9641192", - "tt0086815", - "tt5430288", - "tt1684910", - "tt2850332", - "tt6269142", - "tt1286039", - "tt6725736", - "tt3973786", - "tt2578560", - "tt6626676", - "tt6477194", - "tt9549930", - "tt5637798", - "tt7872986", - "tt0386950", - "tt0187636", - "tt1558128", - "tt5612866", - "tt6375720", - "tt6233618", - "tt1535715", - "tt6769236", - "tt4118466", - "tt7052394", - "tt3007640", - "tt5987842", - "tt7414406", - "tt1606375", - "tt4085584", - "tt11083450", - "tt3293184", - "tt4568130", - "tt2299207", - "tt7619858", - "tt7816792", - "tt6563112", - "tt7557574", - "tt6101574", - "tt3097642", - "tt8098164", - "tt0996614", - "tt2322784", - "tt7487358", - "tt2229167", - "tt0950701", - "tt0840094", - "tt3489236", - "tt3074646", - "tt2384811", - "tt5350248", - "tt6772336", - "tt7026436", - "tt4322056", - "tt0948538", - "tt1836037", - "tt6303080", - "tt7781934", - "tt2415958", - "tt2343137", - "tt0429305", - "tt1353056", - "tt2660806", - "tt5673912", - "tt9130692", - "tt7386598", - "tt1137462", - "tt5237932", - "tt3975368", - "tt2057880", - "tt0056777", - "tt6006350", - "tt5541800", - "tt3475734", - "tt1305826", - "tt6945708", - "tt0112130", - "tt7555000", - "tt4878612", - "tt0069658", - "tt6961912", - "tt1657563", - "tt5269594", - "tt1132290", - "tt5648202", - "tt7768840", - "tt3986586", - "tt2433738", - "tt0069557", - "tt8189054", - "tt8289930", - "tt2070791", - "tt10098498", - "tt0192774", - "tt10406934", - "tt5022298", - "tt4266120", - "tt6461726", - "tt8959860", - "tt1548331", - "tt8115582", - "tt4687882", - "tt4102726", - "tt1117552", - "tt7192290", - "tt1843675", - "tt9742936", - "tt2493352", - "tt3231564", - "tt10608354", - "tt3952746", - "tt9016022", - "tt1723816", - "tt10937632", - "tt4976512", - "tt0783328", - "tt0135733", - "tt9530782", - "tt4983204", - "tt1699748", - "tt9271466", - "tt5056408", - "tt0103405", - "tt1587000", - "tt0271894", - "tt2432822", - "tt1420152", - "tt0319931", - "tt8712204", - "tt7758552", - "tt7908628", - "tt2397379", - "tt4842406", - "tt2497834", - "tt4108134", - "tt3101352", - "tt8463186", - "tt11399844", - "tt4452630", - "tt6342012", - "tt4264304", - "tt7965440", - "tt4791440", - "tt6385540", - "tt7942804", - "tt10065930", - "tt7090918", - "tt1642620", - "tt6135682", - "tt9641008", - "tt2546866", - "tt5235950", - "tt3958022", - "tt9265682", - "tt6015820", - "tt0959086", - "tt1777715", - "tt4699982", - "tt1105469", - "tt0497079", - "tt4189022", - "tt1186356", - "tt8000638", - "tt6466972", - "tt2261227", - "tt5978570", - "tt4847092", - "tt0193676", - "tt1051220", - "tt9348692", - "tt1877889", - "tt1991564", - "tt7371868", - "tt5038276", - "tt0979432", - "tt1981558", - "tt0103524", - "tt0457229", - "tt3597660", - "tt7686464", - "tt5016504", - "tt6068620", - "tt0233041", - "tt5722298", - "tt3108438", - "tt5209274", - "tt1078267", - "tt1819654", - "tt9165444", - "tt0458290", - "tt0925266", - "tt8865058", - "tt2776888", - "tt7298596", - "tt3562366", - "tt0123338", - "tt9695266", - "tt6088922", - "tt0120949", - "tt5490630", - "tt5776730", - "tt0805978", - "tt1220111", - "tt5200330", - "tt0059968", - "tt0330251", - "tt6416312", - "tt0285331", - "tt1103987", - "tt10219330", - "tt5634988", - "tt8845428", - "tt5239494", - "tt1833296", - "tt9185110", - "tt2190731", - "tt4480608", - "tt7713450", - "tt1460205", - "tt6712476", - "tt10344526", - "tt0823333", - "tt5103758", - "tt2802008", - "tt4799404", - "tt11344038", - "tt11305746", - "tt0103491", - "tt2817246", - "tt1298827", - "tt7850154", - "tt2533174", - "tt0086661", - "tt7440274", - "tt5176246", - "tt0956036", - "tt11301384", - "tt3069894", - "tt4226226", - "tt5219012", - "tt7692572", - "tt7131688", - "tt3230780", - "tt3893044", - "tt6713768", - "tt1869152", - "tt8496508", - "tt0131664", - "tt3521074", - "tt2771780", - "tt9319680", - "tt3488298", - "tt4079926", - "tt2762564", - "tt10715172", - "tt4576052", - "tt7141916", - "tt2210101", - "tt7278862", - "tt9130788", - "tt5610210", - "tt1506332", - "tt7878864", - "tt8845196", - "tt8564914", - "tt6398232", - "tt3910690", - "tt2452242", - "tt6110430", - "tt8680902", - "tt0285370", - "tt2432604", - "tt7569592", - "tt8111476", - "tt2782710", - "tt2712612", - "tt3002598", - "tt9581768", - "tt2401525", - "tt4350804", - "tt1620950", - "tt3204810", - "tt9140108", - "tt11006714", - "tt9067976", - "tt1307823", - "tt5968748", - "tt9278032", - "tt0450897", - "tt3830558", - "tt5753856", - "tt10054588", - "tt0364784", - "tt0055683", - "tt4595498", - "tt4071576", - "tt7984802", - "tt5763680", - "tt0164289", - "tt8001366", - "tt0429455", - "tt6524440", - "tt6412478", - "tt0095678", - "tt3328268", - "tt1932308", - "tt1879599", - "tt5672036", - "tt2828514", - "tt6921524", - "tt3637900", - "tt9908860", - "tt9099368", - "tt7749176", - "tt4859164", - "tt5457178", - "tt10584792", - "tt3853494", - "tt3056472", - "tt9145372", - "tt3441810", - "tt5547946", - "tt4192782", - "tt10376904", - "tt1695360", - "tt10380934", - "tt4847134", - "tt10715202", - "tt8796068", - "tt9776008", - "tt4152216", - "tt1660673", - "tt4465472", - "tt10443972", - "tt1538296", - "tt7978912", - "tt1839683", - "tt8417946", - "tt3148266", - "tt4335742", - "tt10049610", - "tt8014176", - "tt10262752", - "tt4644822", - "tt10738706", - "tt7183282", - "tt8619822", - "tt5866252", - "tt0324679", - "tt6849940", - "tt11252544", - "tt4614532", - "tt5363766", - "tt7262218", - "tt1561756", - "tt7838238", - "tt0096563", - "tt0088512", - "tt9561862", - "tt7981052", - "tt6086974", - "tt1380596", - "tt2845786", - "tt8893550", - "tt8686106", - "tt3289340", - "tt2668178", - "tt1043714", - "tt4602768", - "tt1956017", - "tt6917254", - "tt1388782", - "tt10327412", - "tt10691888", - "tt4591390", - "tt3503520", - "tt11203896", - "tt8560884", - "tt9204142", - "tt3986390", - "tt0222619", - "tt4998350", - "tt1534083", - "tt8382834", - "tt9486226", - "tt0424600", - "tt1645200", - "tt8842356", - "tt0056751", - "tt9741272", - "tt5706996", - "tt7239028", - "tt5214372", - "tt7603386", - "tt3645318", - "tt7841526", - "tt3689584", - "tt8144760", - "tt9578468", - "tt3455408", - "tt3868848", - "tt2294189", - "tt4459206", - "tt4511898", - "tt1417834", - "tt7817340", - "tt6834076", - "tt0103469", - "tt8425346", - "tt4789300", - "tt4484722", - "tt2380303", - "tt3920596", - "tt4655480", - "tt1479978", - "tt6714408", - "tt6997450", - "tt0370194", - "tt5765938", - "tt1828238", - "tt0068069", - "tt5790102", - "tt7412482", - "tt2742174", - "tt7298976", - "tt7356518", - "tt5050114", - "tt8965666", - "tt6734482", - "tt3018878", - "tt2258904", - "tt8201924", - "tt1942919", - "tt1933073", - "tt2527680", - "tt5099222", - "tt0851851", - "tt10312964", - "tt2182229", - "tt9117054", - "tt8845170", - "tt11168226", - "tt6538034", - "tt1520150", - "tt5342844", - "tt3952194", - "tt6484002", - "tt4033696", - "tt0299368", - "tt0475784", - "tt2076610", - "tt3216868", - "tt7967262", - "tt0306414", - "tt3855058", - "tt6597216", - "tt1219817", - "tt6819260", - "tt3713810", - "tt1100959", - "tt4364202", - "tt0081873", - "tt8421350", - "tt0083452", - "tt5339440", - "tt8233142", - "tt1493923", - "tt2217759", - "tt8116380", - "tt5840122", - "tt6808334", - "tt8974594", - "tt1843230", - "tt9104172", - "tt4478002", - "tt4597870", - "tt9336906", - "tt2188249", - "tt1353281", - "tt11833446", - "tt5137338", - "tt8000674", - "tt3869122", - "tt11444082", - "tt8201502", - "tt5594490", - "tt7845644", - "tt0914829", - "tt0902076", - "tt2012511", - "tt1695353", - "tt6467568", - "tt2289131", - "tt4777140", - "tt6897014", - "tt8879238", - "tt0118300", - "tt0941372", - "tt5722214", - "tt1118697", - "tt7768092", - "tt2059031", - "tt1714204", - "tt5834198", - "tt9081930", - "tt0465353", - "tt7622902", - "tt0063929", - "tt6877370", - "tt7587890", - "tt10608564", - "tt3061046", - "tt1127876", - "tt5541338", - "tt5650574", - "tt4015216", - "tt2399794", - "tt1433495", - "tt8413062", - "tt3501584", - "tt3070014", - "tt3231022", - "tt1530541", - "tt0071050", - "tt2242910", - "tt9381622", - "tt8285922", - "tt1954332", - "tt3449528", - "tt10274462", - "tt3012160", - "tt7853026", - "tt1871731", - "tt1786203", - "tt6760366", - "tt5687446", - "tt1595680", - "tt7616752", - "tt10895588", - "tt8888210", - "tt1978940", - "tt10038720", - "tt9247490", - "tt1229401", - "tt2337840", - "tt0078622", - "tt1409055", - "tt7984324", - "tt6843558", - "tt3528306", - "tt3971974", - "tt7720790", - "tt3551796", - "tt4555364", - "tt7708956", - "tt5951152", - "tt4235048", - "tt5226884", - "tt2446726", - "tt6823138", - "tt5694248", - "tt1821877", - "tt8923854", - "tt4696944", - "tt5060048", - "tt4531728", - "tt2520512", - "tt0106079", - "tt0306274", - "tt5172468", - "tt6852582", - "tt8725166", - "tt5924572", - "tt1503519", - "tt5459566", - "tt0071007", - "tt3781836", - "tt4508902", - "tt0092355", - "tt5439480", - "tt3322310", - "tt10637964", - "tt7042146", - "tt5646172", - "tt8049666", - "tt9184592", - "tt4223968", - "tt8021824", - "tt0076984", - "tt6645582", - "tt11024084", - "tt0115215", - "tt4676574", - "tt0427042", - "tt0165042", - "tt8498114", - "tt0320022", - "tt10977486", - "tt2085059", - "tt7721986", - "tt0369081", - "tt8526988", - "tt2902088", - "tt2769470", - "tt8995604", - "tt1536749", - "tt6468322", - "tt1822448", - "tt7444776", - "tt1587678", - "tt8005176", - "tt4210666", - "tt5141658", - "tt0841928", - "tt1936532", - "tt7221388", - "tt1442462", - "tt6459472", - "tt7050084", - "tt0475043", - "tt4878326", - "tt10375354", - "tt0098800", - "tt1064899", - "tt7492116", - "tt5583410", - "tt4313960", - "tt1279972", - "tt6483832", - "tt2306299", - "tt7651892", - "tt4947580", - "tt5864498", - "tt5785770", - "tt9170584", - "tt4388486", - "tt1685471", - "tt5615700", - "tt5788814", - "tt5726906", - "tt0108757", - "tt7446826", - "tt8427140", - "tt0387764", - "tt6410966", - "tt8785514", - "tt10364808", - "tt0429434", - "tt4406248", - "tt1508238", - "tt9548664", - "tt8001036", - "tt8005322", - "tt0491758", - "tt6478318", - "tt6286394", - "tt6287492", - "tt5135336", - "tt3334148", - "tt2071645", - "tt1295036", - "tt6949590", - "tt7246394", - "tt1582457", - "tt6856620", - "tt3300126", - "tt1885855", - "tt0324692", - "tt7603564", - "tt5015548", - "tt8681362", - "tt2751074", - "tt5607970", - "tt2009776", - "tt9256586", - "tt3453512", - "tt9446688", - "tt6416262", - "tt0370053", - "tt5820976", - "tt8036816", - "tt0348914", - "tt4605814", - "tt1611787", - "tt5699846", - "tt10167284", - "tt1450143", - "tt1117667", - "tt7614908", - "tt3952222", - "tt3729898", - "tt8517780", - "tt0493093", - "tt0077097", - "tt0096697", - "tt4630676", - "tt6416316", - "tt3791516", - "tt3581654", - "tt5934392", - "tt1375710", - "tt5707408", - "tt9174582", - "tt1586914", - "tt2185885", - "tt1489097", - "tt2727600", - "tt0276656", - "tt9644058", - "tt5789958", - "tt1173427", - "tt4209256", - "tt11474008", - "tt5788748", - "tt3012184", - "tt5827228", - "tt6643540", - "tt5645790", - "tt4192650", - "tt4781350", - "tt4647734", - "tt7293158", - "tt1743275", - "tt0870973", - "tt3923774", - "tt1325113", - "tt10233448", - "tt2400391", - "tt1592154", - "tt8961652", - "tt1582454", - "tt3574152", - "tt3571848", - "tt0264234", - "tt6905508", - "tt2980110", - "tt6846022", - "tt7150060", - "tt3228420", - "tt5973720", - "tt1615919", - "tt3069720", - "tt3551966", - "tt8914684", - "tt11189248", - "tt5973164", - "tt0904208", - "tt4061482", - "tt3315020", - "tt6059726", - "tt8911552", - "tt2964642", - "tt5568740", - "tt1839417", - "tt3247786", - "tt3105674", - "tt7661472", - "tt5705192", - "tt5793948", - "tt4280606", - "tt1826940", - "tt8594028", - "tt5396394", - "tt3906732", - "tt3157232", - "tt7626764", - "tt2914762", - "tt1553644", - "tt2329077", - "tt1749056", - "tt4578474", - "tt6980438", - "tt0281491", - "tt2163354", - "tt4370596", - "tt8891990", - "tt2740518", - "tt5075360", - "tt3277670", - "tt2578508", - "tt1252370", - "tt0384766", - "tt4730064", - "tt8839578", - "tt4951098", - "tt7370908", - "tt9780442", - "tt1170858", - "tt5149528", - "tt0118266", - "tt7217498", - "tt2060305", - "tt0484082", - "tt3889094", - "tt10016814", - "tt5030558", - "tt1941774", - "tt8463714", - "tt0396347", - "tt3095080", - "tt6396094", - "tt3337194", - "tt10069398", - "tt6881870", - "tt10704300", - "tt4635276", - "tt1626038", - "tt5459618", - "tt11122204", - "tt11024028", - "tt8129694", - "tt5734140", - "tt4082744", - "tt2126154", - "tt6826108", - "tt7252220", - "tt5095514", - "tt0142032", - "tt0135095", - "tt8261918", - "tt4565380", - "tt7956274", - "tt0377156", - "tt1694423", - "tt8824648", - "tt4443898", - "tt8870610", - "tt4820370", - "tt2097386", - "tt11861362", - "tt6953936", - "tt8332130", - "tt10773420", - "tt9826984", - "tt2641254", - "tt6283636", - "tt3967028", - "tt3636094", - "tt6129912", - "tt8741648", - "tt8074474", - "tt0168391", - "tt1205793", - "tt11092086", - "tt11239552", - "tt8390918", - "tt9696162", - "tt8068900", - "tt0115317", - "tt8078816", - "tt10098620", - "tt11833388", - "tt3243098", - "tt10141612", - "tt10648730", - "tt0329476", - "tt9308346", - "tt9815502", - "tt8619594", - "tt9905660", - "tt11819198", - "tt1275472", - "tt11246974", - "tt8242904", - "tt11891220", - "tt10623714", - "tt6289504", - "tt11983342", - "tt7050996", - "tt12080818", - "tt9130542", - "tt10549212", - "tt10525048", - "tt6898698", - "tt11685264", - "tt3914520", - "tt11829330", - "tt2835830", - "tt11857512", - "tt10228230", - "tt2203252", - "tt10394778", - "tt5813208", - "tt11823088", - "tt2244001", - "tt1794050", - "tt1102732", - "tt8403664", - "tt6950460", - "tt8266048", - "tt0364865", - "tt7020712", - "tt10088086", - "tt9625944", - "tt10366494", - "tt12093796", - "tt11266702", - "tt6251076", - "tt11398870", - "tt11547684", - "tt9177338", - "tt0083466", - "tt11958942", - "tt9244556", - "tt9059594", - "tt5993484", - "tt3365456", - "tt3072988", - "tt3909706", - "tt10846750", - "tt2650536", - "tt3775262", - "tt3027538", - "tt8741290", - "tt12030356", - "tt8236528", - "tt9041792", - "tt2834032", - "tt1705096", - "tt3852258", - "tt1929543", - "tt11097072", - "tt9018490", - "tt3147968", - "tt0368730", - "tt0928173", - "tt5467498", - "tt11929804", - "tt9900092", - "tt1374983", - "tt11460744", - "tt10726356", - "tt9015252", - "tt8771910", - "tt10370952", - "tt11815958", - "tt2842614", - "tt11193832", - "tt3239918", - "tt7862544", - "tt10036104", - "tt6357262", - "tt8000970", - "tt1393908", - "tt10293938", - "tt6000432", - "tt9812788", - "tt9348718", - "tt6374258", - "tt1752127", - "tt12004280", - "tt0379632", - "tt0309141", - "tt1517749", - "tt8991740", - "tt8045468", - "tt8856340", - "tt2170392", - "tt1471868", - "tt12098550", - "tt1996620", - "tt11056000", - "tt8139666", - "tt7694276", - "tt12018426", - "tt6040512", - "tt6352754", - "tt9642982", - "tt2286877", - "tt11718720", - "tt0046658", - "tt8594528", - "tt6139710", - "tt2795864", - "tt2492484", - "tt8667956", - "tt2197519", - "tt8452334", - "tt10311562", - "tt2364322", - "tt2724068", - "tt0312081", - "tt7207430", - "tt4547656", - "tt0098674", - "tt11969746", - "tt10589968", - "tt9165830", - "tt6053512", - "tt8160890", - "tt9164986", - "tt11098768", - "tt9357248", - "tt10437218", - "tt2477858", - "tt10814382", - "tt11633010", - "tt8962394", - "tt11958922", - "tt9780434", - "tt9077184", - "tt1592254", - "tt9530156", - "tt4883194", - "tt4201628", - "tt9397484", - "tt10050618", - "tt10930958", - "tt1419888", - "tt0830900", - "tt6150252", - "tt11783536", - "tt1794595", - "tt10375742", - "tt2527282", - "tt3540374", - "tt7056766", - "tt6612200", - "tt10918826", - "tt6988884", - "tt4993722", - "tt5125400", - "tt8089592", - "tt11818408", - "tt2297810", - "tt3693414", - "tt11347692", - "tt3615474", - "tt3141190", - "tt1726832", - "tt3184674", - "tt9615340", - "tt2968430", - "tt11324616", - "tt11330500", - "tt10394790", - "tt2634230", - "tt5078860", - "tt6435118", - "tt10383558", - "tt11271956", - "tt7070302", - "tt11867592", - "tt3343582", - "tt11829340", - "tt9448006", - "tt11183572", - "tt11170862", - "tt9815454", - "tt0879688", - "tt5252734", - "tt9059820", - "tt5766086" -] \ No newline at end of file diff --git a/scraper/scrapers/rutor/rutor_api.js b/scraper/scrapers/rutor/rutor_api.js deleted file mode 100644 index 2bb9175..0000000 --- a/scraper/scrapers/rutor/rutor_api.js +++ /dev/null @@ -1,207 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const decode = require('magnet-uri'); -const { defaultOptionsWithProxy } = require('../../lib/requestHelper'); - -const baseUrl = 'http://www.rutor.info'; -const defaultTimeout = 10000; - -const Categories = { - ALL: '0', - FOREIGN_FILMS: '1', - RUSSIAN_FILMS: '5', - SCIENCE_FILMS: '12', - FOREIGN_SERIES: '4', - RUSSIAN_SERIES: '16', - RUSSIAN_TV: '6', - RUSSIAN_ANIMATION: '7', - ANIME: '10', - FOREIGN_RELEASES: '17' -}; - -function torrent(torrentId, config = {}, retries = 2, error = null) { - if (!torrentId || retries === 0) { - return Promise.reject(error || new Error(`Failed ${torrentId} search`)); - } - - return singleRequest(`${baseUrl}/torrent/${torrentId}`) - .then((body) => parseTorrentPage(body, torrentId)) - .catch((err) => torrent(torrentId, config, retries - 1, err)); -} - -function search(query, retries = 2, error = null) { - if (retries === 0) { - return Promise.reject(error || new Error(`Failed browse request`)); - } - - return singleRequest(`${baseUrl}/search/0/0/0/0/${encodeURIComponent(query)}`) - .then((body) => parseTableBody(body)) - .catch((err) => search(query, retries - 1, err)); -} - -function browse(config = {}, retries = 2, error = null) { - if (retries === 0) { - return Promise.reject(error || new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - - return singleRequest(`${baseUrl}/browse/${page - 1}/${category}/0/0`) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1, err)); -} - -function files(torrentId) { - return singleRequest(`${baseUrl}/descriptions/${torrentId}.files`) - .then((body) => parseFiles(body)); -} - -function singleRequest(requestUrl) { - const options = { ...defaultOptionsWithProxy(), timeout: defaultTimeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl} with status ${response.status}`); - } else if (body.includes('Access Denied')) { - console.log(`Access Denied: ${requestUrl}`); - throw new Error(`Access Denied: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden') || - body.includes('Origin DNS error')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = $('#index').find('tr:not(.backgr)').map((i, elem) => { - const row = $(elem).find('td'); - const links = $(row[1]).find('a'); - const peers = $(row[row.length - 1]); - const magnetLink = $(links[1]).attr('href'); - - return { - title: $(links[2]).text(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - torrentLink: $(links[0]).attr('href'), - torrentId: $(links[2]).attr('href').match(/torrent\/(\d+)/)[1], - seeders: parseInt(peers.find('.green').text()), - leechers: parseInt(peers.find('.red').text()), - uploadDate: parseRussianDate($(row[0]).text()), - size: $(row[row.length - 2]).html().replace(' ', ' '), - } - }).get(); - - resolve(torrents); - }); -} - -function parseTorrentPage(body, torrentId) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const rows = $('#details > tr') - const details = $(rows[0]).find('td:nth-of-type(2)'); - const magnetLink = $('#download a:nth-of-type(1)').attr('href'); - const imdbIdMatch = details.html().match(/imdb\.com\/title\/(tt\d+)/i); - - const parsedTorrent = { - title: $('#all h1').first().text(), - torrentId: torrentId, - infoHash: decode(magnetLink).infoHash, - trackers: Array.from(new Set(decode(magnetLink).tr)).join(','), - magnetLink: magnetLink, - torrentLink: $('#download a:nth-of-type(2)').attr('href'), - seeders: parseInt($(rows[rows.length - 8]).find('td:nth-of-type(2)').first().text(), 10), - category: $('tr:contains(\'Категория\') a').first().attr('href').match(/\/([\w-]+)$/)[1], - languages: parseLanguages(details.text()), - size: parseSize($(rows[rows.length - 4]).find('td:nth-of-type(2)').text()), - uploadDate: parseDate($(rows[rows.length - 5]).find('td:nth-of-type(2)').first().text()), - imdbId: imdbIdMatch && imdbIdMatch[1] - }; - resolve(parsedTorrent); - }); -} - -function parseFiles(body) { - if (!body) { - throw new Error("No files in the body"); - } - return body.split('\n') - .map((item) => item.match(/([^<]+)<\/td>/g).slice(1)) - .map((item, index) => ({ - fileIndex: index, - name: item[0].replace(/^.+\//g, ''), - path: item[0].replace(/^.+\//, ''), - size: parseSize(item[1]) - })); -} - -function parseDate(dateString) { - const preparedDate = dateString.replace(/\s\(.*\)/, '') - return moment(preparedDate, 'DD-MM-YYYY HH:mm:ss').toDate(); -} - -const russianMonths = { - 'Янв': 'Jan', - 'Фев': 'Feb', - 'Мар': 'Mar', - 'Апр': 'Apr', - 'Май': 'May', - 'Июн': 'Jun', - 'Июл': 'Jul', - 'Авг': 'Aug', - 'Сен': 'Sep', - 'Окт': 'Oct', - 'Ноя': 'Nov', - 'Дек': 'Dec' -}; - -function parseRussianDate(dateString) { - const rusMonth = Object.keys(russianMonths).find(month => dateString.includes(month)); - const preparedDate = dateString.trim().replace(rusMonth, russianMonths[rusMonth]).replace(/\u00a0/g, ' '); - return moment(preparedDate, 'DD MMM YY').toDate(); -} - -function parseSize(sizeString) { - return parseInt(sizeString.match(/\((\d+) Bytes\)/)[1], 10); -} - -const languageMatchers = { - 'russian': /(?:Язык|Звук|Аудио|audio|language).*(russian|\brus?\b|[Рр]усский)/i, - 'english': /(?:Язык|Звук|Аудио|audio|language).*(english|\beng?\b|[Аа]нглийский)/i, - 'ukrainian': /(?:Язык|Звук|Аудио|audio|language).*(ukrainian|\bukr\b|украинский)/i, - 'french': /(?:Язык|Звук|Аудио|audio|language).*(french|\bfr\b|французский)/i, - 'spanish': /(?:Язык|Звук|Аудио|audio|language).*(spanish|\bspa\b|испанский)/i, - 'italian': /(?:Язык|Звук|Аудио|audio|language).*(italian|\bita\b|итальянский)/i, - 'german': /(?:Язык|Звук|Аудио|audio|language).*(german|\bger\b|Немецкий)/i, - 'korean': /(?:Язык|Звук|Аудио|audio|language).*(korean|Корейский)/i, - 'arabic': /(?:Язык|Звук|Аудио|audio|language).*(arabic|Арабский)/i, - 'portuguese': /(?:Язык|Звук|Аудио|audio|language).*(portuguese|Португальский)/i, - 'japanese': /(?:Язык|Звук|Аудио|audio|language).*(japanese|\bjap\b|\bjp\b|[Яя]понский)/i, -} - -function parseLanguages(details) { - const subsInfoMatch = details.match(/\r?\n(Text|Текст)(?:\s?#?\d{1,2})?\r?\n/i); - const detailsPart = subsInfoMatch ? details.substring(0, subsInfoMatch.index) : details; - const matchedLanguages = Object.keys(languageMatchers).filter(lang => languageMatchers[lang].test(detailsPart)); - const languages = Array.from(new Set(['russian'].concat(matchedLanguages))); - return languages.length > 4 ? 'multi-audio' : languages.join(','); -} - -module.exports = { torrent, browse, search, Categories }; diff --git a/scraper/scrapers/rutor/rutor_scraper.js b/scraper/scrapers/rutor/rutor_scraper.js deleted file mode 100644 index e7bf485..0000000 --- a/scraper/scrapers/rutor/rutor_scraper.js +++ /dev/null @@ -1,133 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const { parse } = require('parse-torrent-title'); -const rutor = require('./rutor_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'Rutor'; -const TYPE_MAPPING = { - 'kino': Type.MOVIE, - 'nashe_kino': Type.MOVIE, - 'nauchno_popularnoe': Type.MOVIE, - 'inostrannoe': Type.MOVIE, - 'seriali': Type.SERIES, - 'nashi_seriali': Type.SERIES, - 'tv': Type.SERIES, - 'multiki': Type.MOVIE, - 'anime': Type.ANIME -}; - -const api_limiter = new Bottleneck({ maxConcurrent: 1, minTime: 5000 }); -const api_entry_limiter = new Bottleneck({ maxConcurrent: 1, minTime: 2500 }); -const limiter = new Bottleneck({ maxConcurrent: 10 }); -const allowedCategories = [ - rutor.Categories.FOREIGN_FILMS, - rutor.Categories.FOREIGN_RELEASES, - rutor.Categories.RUSSIAN_FILMS, - rutor.Categories.FOREIGN_SERIES, - rutor.Categories.RUSSIAN_SERIES, - rutor.Categories.SCIENCE_FILMS, - rutor.Categories.RUSSIAN_ANIMATION, - rutor.Categories.ANIME -]; - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - // const ids = [ - // '637799' - // ]; - // return Promise.all(ids.map(id => api_entry_limiter.schedule(() => rutor.torrent(id)) - // .then(torrent => processTorrentRecord(torrent)))) - // .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return Promise.resolve([]); -} - -async function scrapeLatestTorrents() { - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return api_limiter.schedule(() => rutor.browse({ category, page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < getMaxPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - const isOld = moment(record.uploadDate).isBefore(moment().subtract(18, 'month')); - if (record.seeders === 0 && isOld) { - console.log(`Skipping old unseeded torrent [${record.infoHash}] ${record.title}`) - return record; - } - - const foundTorrent = await api_entry_limiter.schedule(() => rutor.torrent(record.torrentId).catch(() => undefined)); - - if (!foundTorrent || !TYPE_MAPPING[foundTorrent.category]) { - return Promise.resolve(`${NAME}: Invalid torrent record: ${record.torrentId}`); - } - if (!foundTorrent.imdbId && disallowWithoutImdbId(foundTorrent)) { - return Promise.resolve(`${NAME}: No imdbId defined: ${record.torrentId}`); - } - - const torrent = { - provider: NAME, - infoHash: foundTorrent.infoHash, - torrentId: foundTorrent.torrentId, - torrentLink: foundTorrent.torrentLink, - trackers: foundTorrent.trackers, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - size: foundTorrent.size, - seeders: foundTorrent.seeders, - uploadDate: foundTorrent.uploadDate, - imdbId: foundTorrent.imdbId, - languages: foundTorrent.languages || undefined, - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -function getMaxPage(category) { - switch (category) { - case rutor.Categories.FOREIGN_FILMS: - case rutor.Categories.FOREIGN_SERIES: - return 2; - default: - return 1; - } -} - -function disallowWithoutImdbId(torrent) { - if (['kino', 'anime'].includes(torrent.category)) { - return false; // allow to search foreign movie and anime ids via search - } - // allow to search id for non russian series titles via search - return !(torrent.category === 'seriali' && !parse(torrent.title).title.match(/[\u0400-\u04ff]/i)); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/scraperHelper.js b/scraper/scrapers/scraperHelper.js deleted file mode 100644 index 44aa0d0..0000000 --- a/scraper/scrapers/scraperHelper.js +++ /dev/null @@ -1,41 +0,0 @@ -function isPtDubbed(name) { - return name.toLowerCase().match(/dublado|dual|nacional|multi/); -} - -function sanitizePtName(name) { - return name - .replace(/(.*)\b(\d{3,4}P)\b(?!.*\d{3,4}[Pp])(.*)/, '$1$3 $2') // add resolution to the end if missing - .replace(/^[\[{]?(?:ACESSE.*|WWW\.)?[A-Z]+\.(COM|NET|ORG|TO|TV|ME)\b\s*[-\]}]+[\s.]*/i, '') // replace watermarks - .replace(/^(\d*(?:\.\d{1,2})?(?:[4A-Z-]{3,}|P)[-.]+)+/, '') // replace metadata prefixes - .replace(/^[\[{]?(?:ACESSE.*|WWW\.)?[A-Z]+\.(COM|NET|ORG|TO|TV|ME)\b\s*[-\]}]+[\s.]*/i, '') // replace watermarks2 - .replace(/^(COM|NET|ORG|TO|TV|ME)\b\s*-+[\s.]*/, '') // replace dangling site endings - .trim(); -} - -function sanitizePtOriginalName(name) { - return name.trim().replace(/S\d+$|\d.\s?[Tt]emporada/, ''); -} - -function sanitizePtLanguages(languages) { - return languages - .replace(/��/g, 'ê') - .replace(/ /g, '') - .trim(); -} - -function parseSize(sizeText) { - if (!sizeText) { - return undefined; - } - let scale = 1; - if (/Gi?B|Go/.test(sizeText)) { - scale = 1024 * 1024 * 1024 - } else if (/Mi?B|Mo/.test(sizeText)) { - scale = 1024 * 1024; - } else if (/[Kk]i?B|Ko/.test(sizeText)) { - scale = 1024; - } - return Math.floor(parseFloat(sizeText.replace(/[',]/g, '')) * scale); -} - -module.exports = { parseSize, isPtDubbed, sanitizePtName, sanitizePtOriginalName, sanitizePtLanguages } \ No newline at end of file diff --git a/scraper/scrapers/thepiratebay/thepiratebay_api.js b/scraper/scrapers/thepiratebay/thepiratebay_api.js deleted file mode 100644 index 4ff6a42..0000000 --- a/scraper/scrapers/thepiratebay/thepiratebay_api.js +++ /dev/null @@ -1,129 +0,0 @@ -const axios = require('axios'); -const { escapeHTML } = require('../../lib/metadata'); - -const baseUrl = 'https://apibay.org'; -const timeout = 5000; - -const Categories = { - AUDIO: { - ALL: 100, - MUSIC: 101, - AUDIO_BOOKS: 102, - SOUND_CLIPS: 103, - FLAC: 104, - OTHER: 199 - }, - VIDEO: { - ALL: 200, - MOVIES: 201, - MOVIES_DVDR: 202, - MUSIC_VIDEOS: 203, - MOVIE_CLIPS: 204, - TV_SHOWS: 205, - HANDHELD: 206, - MOVIES_HD: 207, - TV_SHOWS_HD: 208, - MOVIES_3D: 209, - OTHER: 299 - }, - APPS: { - ALL: 300, - WINDOWS: 301, - MAC: 302, - UNIX: 303, - HANDHELD: 304, - IOS: 305, - ANDROID: 306, - OTHER_OS: 399 - }, - GAMES: { - ALL: 400, - PC: 401, - MAC: 402, - PSx: 403, - XBOX360: 404, - Wii: 405, - HANDHELD: 406, - IOS: 407, - ANDROID: 408, - OTHER: 499 - }, - PORN: { - ALL: 500, - MOVIES: 501, - MOVIES_DVDR: 502, - PICTURES: 503, - GAMES: 504, - MOVIES_HD: 505, - MOVIE_CLIPS: 506, - OTHER: 599 - }, - OTHER: { - ALL: 600, - E_BOOKS: 601, - COMICS: 602, - PICTURES: 603, - COVERS: 604, - PHYSIBLES: 605, - OTHER: 699 - } -}; - -function torrent(torrentId, retries = 2) { - if (!torrentId) { - return Promise.reject(new Error('No valid torrentId provided')); - } - - return _request(`t.php?id=${torrentId}`) - .then(result => toTorrent(result)) - .catch(error => retries ? torrent(torrentId, retries - 1) : Promise.reject(error)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword) { - return Promise.reject(new Error('No valid keyword provided')); - } - const q = keyword; - const cat = config.category || Categories.VIDEO.ALL; - - return _request(`q.php?q=${q}&cat=${cat}`) - .then(results => results.map((result) => toTorrent(result))) - .catch(error => retries ? search(keyword, config, retries - 1) : Promise.reject(error)); -} - -function browse(config = {}, retries = 2) { - const category = config.category || 0; - const page = config.page - 1 || 0; - - return _request(`q.php?q=category:${category}:${page}`) - .then(results => results.map((result) => toTorrent(result))) - .catch(error => retries ? browse(config, retries - 1) : Promise.reject(error)); -} - -async function _request(endpoint) { - const url = `${baseUrl}/${endpoint}`; - return axios.get(url, { timeout: timeout }) - .then(response => { - if (typeof response.data === 'object') { - return response.data; - } - return Promise.reject(`Unexpected response body`); - }); -} - -function toTorrent(result) { - return { - torrentId: result.id, - name: escapeHTML(result.name), - infoHash: result.info_hash.toLowerCase(), - size: parseInt(result.size), - seeders: parseInt(result.seeders), - leechers: parseInt(result.leechers), - subcategory: parseInt(result.category), - uploadDate: new Date(result.added * 1000), - imdbId: result.imdb || undefined, - filesCount: result.num_files && parseInt(result.num_files) || undefined - }; -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/thepiratebay/thepiratebay_dump_scraper.js b/scraper/scrapers/thepiratebay/thepiratebay_dump_scraper.js deleted file mode 100644 index 8754298..0000000 --- a/scraper/scrapers/thepiratebay/thepiratebay_dump_scraper.js +++ /dev/null @@ -1,175 +0,0 @@ -const axios = require('axios'); -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const { ungzip } = require('node-gzip'); -const LineByLineReader = require('line-by-line'); -const fs = require('fs'); -const thepiratebay = require('./thepiratebay_api.js'); -const bing = require('nodejs-bing'); -const { Type } = require('../../lib/types'); -const { escapeHTML } = require('../../lib/metadata'); -const { createTorrentEntry, createSkipTorrentEntry, getStoredTorrentEntry } = require('../../lib/torrentEntries'); - -const NAME = 'ThePirateBay'; -const CSV_FILE_PATH = '/tmp/tpb_dump.csv'; - -const limiter = new Bottleneck({ maxConcurrent: 40 }); - -async function scrape() { - const lastDump = { updatedAt: 2147000000 }; - //const checkPoint = moment('2016-06-17 00:00:00', 'YYYY-MMM-DD HH:mm:ss').toDate(); - //const lastDump = await thepiratebay.dumps().then((dumps) => dumps.sort((a, b) => b.updatedAt - a.updatedAt)[0]); - const checkPoint = 0; - - if (lastDump) { - console.log(`starting to scrape tpb dump: ${JSON.stringify(lastDump)}`); - await downloadDump(lastDump); - - let entriesProcessed = 0; - const lr = new LineByLineReader(CSV_FILE_PATH); - lr.on('line', (line) => { - if (line.includes("#ADDED")) { - return; - } - if (entriesProcessed % 1000 === 0) { - console.log(`Processed ${entriesProcessed} entries`); - } - if (entriesProcessed <= checkPoint) { - entriesProcessed++; - return; - } - - const row = line.match(/(?<=^|;)(".*"|[^;]+)(?=;|$)/g); - if (row.length !== 4) { - console.log(`Invalid row: ${line}`); - return; - } - const torrent = { - uploadDate: moment(row[0], 'YYYY-MMM-DD HH:mm:ss').toDate(), - infoHash: Buffer.from(row[1], 'base64').toString('hex'), - title: escapeHTML(row[2]) - .replace(/^"|"$/g, '') - .replace(/&#?\w{2,6};/g, ' ') - .replace(/\s+/g, ' ') - .trim(), - size: parseInt(row[3], 10) - }; - - if (!limiter.empty()) { - lr.pause() - } - - limiter.schedule(() => processTorrentRecord(torrent) - .catch((error) => console.log(`failed ${torrent.title} due: ${error}`))) - .then(() => limiter.empty()) - .then((empty) => empty && lr.resume()) - .then(() => entriesProcessed++); - }); - lr.on('error', (err) => { - console.log(err); - }); - lr.on('end', () => { - console.log(`finished to scrape tpb dump: ${JSON.stringify(lastDump)}!`); - }); - } -} - -const allowedCategories = [ - thepiratebay.Categories.VIDEO.MOVIES, - thepiratebay.Categories.VIDEO.MOVIES_HD, - thepiratebay.Categories.VIDEO.MOVIES_DVDR, - thepiratebay.Categories.VIDEO.MOVIES_3D, - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; -const seriesCategories = [ - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; - -async function processTorrentRecord(record) { - if (await getStoredTorrentEntry(record)) { - return; - } - - const torrentFound = await findTorrent(record); - - if (!torrentFound || !allowedCategories.includes(torrentFound.subcategory)) { - return createSkipTorrentEntry(record); - } - - const torrent = { - infoHash: torrentFound.infoHash, - provider: NAME, - torrentId: torrentFound.torrentId, - title: torrentFound.name, - size: torrentFound.size, - type: seriesCategories.includes(torrentFound.subcategory) ? Type.SERIES : Type.MOVIE, - imdbId: seriesCategories.includes(torrentFound.subcategory) && torrentFound.imdbId || undefined, - uploadDate: torrentFound.uploadDate || record.uploadDate, - seeders: torrentFound.seeders, - }; - - return createTorrentEntry(torrent); -} - -async function findTorrent(record) { - return findTorrentInSource(record) - .catch(() => findTorrentViaBing(record)); -} - -async function findTorrentInSource(record) { - let page = 0; - let torrentFound; - while (!torrentFound && page < 5) { - const torrents = await thepiratebay.search(record.title.replace(/[\W\s]+/, ' '), { page: page }); - torrentFound = torrents.filter(torrent => torrent.magnetLink.toLowerCase().includes(record.infoHash))[0]; - page = torrents.length === 0 ? 1000 : page + 1; - } - if (!torrentFound) { - return Promise.reject(new Error(`Failed to find torrent ${record.title}`)); - } - return Promise.resolve(torrentFound) - .then((torrent) => thepiratebay.torrent(torrent.torrentId) - .catch(() => thepiratebay.torrent(torrent.torrentId))); -} - -async function findTorrentViaBing(record) { - return bing.web(`${record.infoHash}`) - .then((results) => results - .find(result => result.description.includes('Direct download via magnet link') || - result.description.includes('Get this torrent'))) - .then((result) => { - if (!result) { - console.warn(`Failed to find torrent ${record.title}`); - return Promise.resolve(undefined); - } - return result.link.match(/torrent\/(\w+)\//)[1]; - }) - .then((torrentId) => torrentId && thepiratebay.torrent(torrentId)) -} - -function downloadDump(dump) { - try { - if (fs.existsSync(CSV_FILE_PATH)) { - console.log('dump file already exist...'); - return; - } - } catch (err) { - console.error(err) - } - - console.log('downloading dump file...'); - return axios.get(dump.url, { timeout: 2000, responseType: 'stream' }) - .then((response) => response.data) - .then((body) => { - console.log('unzipping dump file...'); - return ungzip(body); - }) - .then((unzipped) => { - console.log('writing dump file...'); - return fs.promises.writeFile(CSV_FILE_PATH, unzipped); - }) -} - -module.exports = { scrape, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/thepiratebay/thepiratebay_fakes_removal.js b/scraper/scrapers/thepiratebay/thepiratebay_fakes_removal.js deleted file mode 100644 index 93917ad..0000000 --- a/scraper/scrapers/thepiratebay/thepiratebay_fakes_removal.js +++ /dev/null @@ -1,43 +0,0 @@ -const moment = require('moment'); -const { Sequelize } = require('sequelize'); -const Bottleneck = require('bottleneck'); -const thepiratebay = require('./thepiratebay_api.js'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); - -const NAME = 'ThePirateBay'; -const EMPTY_HASH = '0000000000000000000000000000000000000000'; - -const Op = Sequelize.Op; -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape() { - console.log(`Starting ${NAME} fake removal...`); - const startCreatedAt = moment().subtract(14, 'day'); - const endCreatedAt = moment(); - const whereQuery = { - provider: NAME, - type: Type.MOVIE, - createdAt: { [Op.between]: [startCreatedAt, endCreatedAt] } - }; - return repository.getTorrentsBasedOnQuery(whereQuery) - .then(torrents => { - console.log(`Checking for ${NAME} fake entries in ${torrents.length} torrents`); - return Promise.all(torrents.map(torrent => limiter.schedule(() => removeIfFake(torrent)))) - }) - .then(results => { - const removed = results.filter(result => result); - console.log(`Finished ${NAME} fake removal with ${removed.length} removals in ${results.length} torrents`); - }); -} - -async function removeIfFake(torrent) { - const tpbTorrentInfo = await thepiratebay.torrent(torrent.torrentId).catch(() => null); - if (tpbTorrentInfo && tpbTorrentInfo.infoHash === EMPTY_HASH) { - console.log(`Removing ${NAME} fake torrent [${torrent.torrentId}][${torrent.infoHash}] ${torrent.title}`); - return repository.deleteTorrent(torrent).catch(() => null); - } - return Promise.resolve(null); -} - -module.exports = { scrape, NAME }; diff --git a/scraper/scrapers/thepiratebay/thepiratebay_scraper.js b/scraper/scrapers/thepiratebay/thepiratebay_scraper.js deleted file mode 100644 index 33cc493..0000000 --- a/scraper/scrapers/thepiratebay/thepiratebay_scraper.js +++ /dev/null @@ -1,98 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const thepiratebay = require('./thepiratebay_api.js'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'ThePirateBay'; - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -const allowedCategories = [ - thepiratebay.Categories.VIDEO.MOVIES, - thepiratebay.Categories.VIDEO.MOVIES_HD, - thepiratebay.Categories.VIDEO.MOVIES_3D, - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; -const seriesCategories = [ - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - // return limiter.schedule(() => thepiratebay.torrent(torrent.torrentId)); - return Promise.resolve([]); -} - -async function scrapeLatestTorrents() { - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return thepiratebay.browse({ category, page }) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < getUntilPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - if (!record || !allowedCategories.includes(record.subcategory)) { - return Promise.resolve('Invalid torrent record'); - } - - const torrent = { - infoHash: record.infoHash, - provider: NAME, - torrentId: record.torrentId, - title: record.name.replace(/\t|\s+/g, ' '), - type: seriesCategories.includes(record.subcategory) ? Type.SERIES : Type.MOVIE, - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - imdbId: seriesCategories.includes(record.subcategory) && record.imdbId || undefined, - languages: record.languages && record.languages.trim() || undefined - }; - - return createTorrentEntry(torrent); -} - -function getUntilPage(category) { - switch (category) { - case thepiratebay.Categories.VIDEO.MOVIES_3D: - return 1; - case thepiratebay.Categories.VIDEO.TV_SHOWS: - case thepiratebay.Categories.VIDEO.TV_SHOWS_HD: - return 10; - default: - return 5; - } -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/thepiratebay/thepiratebay_unofficial_dump_scraper.js b/scraper/scrapers/thepiratebay/thepiratebay_unofficial_dump_scraper.js deleted file mode 100644 index 31e6ae1..0000000 --- a/scraper/scrapers/thepiratebay/thepiratebay_unofficial_dump_scraper.js +++ /dev/null @@ -1,112 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const LineByLineReader = require('line-by-line'); -const decode = require('magnet-uri'); -const thepiratebay = require('./thepiratebay_api.js'); -const { Type } = require('../../lib/types'); -const { createTorrentEntry, createSkipTorrentEntry, getStoredTorrentEntry } = require('../../lib/torrentEntries'); - -const NAME = 'ThePirateBay'; -const CSV_FILE_PATH = '/tmp/tpb.csv'; - -const limiter = new Bottleneck({ maxConcurrent: 40 }); - -async function scrape() { - // await processTorrentRecord({ torrentId: 26877339, category: 'Video' }); - console.log(`starting to scrape tpb dump...`); - //const checkPoint = moment('2013-06-16 00:00:00', 'YYYY-MMM-DD HH:mm:ss').toDate(); - const checkPoint = 4115000; - - let entriesProcessed = 0; - const lr = new LineByLineReader(CSV_FILE_PATH); - lr.on('line', (line) => { - if (entriesProcessed % 1000 === 0) { - console.log(`Processed ${entriesProcessed} entries`); - } - if (entriesProcessed <= checkPoint) { - entriesProcessed++; - return; - } - - const row = line.match(/(?<=^|,)(".*"|[^,]*)(?=,|$)/g); - if (row.length !== 10) { - console.log(`Invalid row: ${line}`); - return; - } - const torrent = { - torrentId: row[0], - title: row[1] - .replace(/^"|"$/g, '') - .replace(/&/g, '&') - .replace(/&\w{2,6};/g, ' ') - .replace(/\s+/g, ' ') - .trim(), - size: parseInt(row[2], 10), - category: row[4], - subcategory: row[5], - infoHash: row[7].toLowerCase() || decode(row[9]).infoHash, - magnetLink: row[9], - uploadDate: moment(row[8]).toDate(), - }; - - if (!limiter.empty()) { - lr.pause() - } - - limiter.schedule(() => processTorrentRecord(torrent) - .catch((error) => console.log(`failed ${torrent.title} due: ${error}`))) - .then(() => limiter.empty()) - .then((empty) => empty && lr.resume()) - .then(() => entriesProcessed++); - }); - lr.on('error', (err) => { - console.log(err); - }); - lr.on('end', () => { - console.log(`finished to scrape tpb dump!`); - }); -} - -const allowedCategories = [ - thepiratebay.Categories.VIDEO.MOVIES, - thepiratebay.Categories.VIDEO.MOVIES_HD, - thepiratebay.Categories.VIDEO.MOVIES_DVDR, - thepiratebay.Categories.VIDEO.MOVIES_3D, - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; -const seriesCategories = [ - thepiratebay.Categories.VIDEO.TV_SHOWS, - thepiratebay.Categories.VIDEO.TV_SHOWS_HD -]; - -async function processTorrentRecord(record) { - if (record.category !== 'Video') { - return createSkipTorrentEntry(record); - } - if (await getStoredTorrentEntry(record)) { - return; - } - - const torrentFound = await thepiratebay.torrent(record.torrentId); - - if (!torrentFound || !allowedCategories.includes(torrentFound.subcategory)) { - return createSkipTorrentEntry(record); - } - - const torrent = { - infoHash: torrentFound.infoHash, - provider: NAME, - torrentId: torrentFound.torrentId, - title: torrentFound.name, - size: torrentFound.size, - type: seriesCategories.includes(torrentFound.subcategory) ? Type.SERIES : Type.MOVIE, - imdbId: torrentFound.imdbId, - uploadDate: torrentFound.uploadDate, - seeders: torrentFound.seeders, - }; - - return createTorrentEntry(torrent); -} - -module.exports = { scrape, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/torrent9/torrent9_api.js b/scraper/scrapers/torrent9/torrent9_api.js deleted file mode 100644 index 2f435aa..0000000 --- a/scraper/scrapers/torrent9/torrent9_api.js +++ /dev/null @@ -1,119 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const decode = require('magnet-uri'); -const { parse } = require('parse-torrent-title'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { parseSize } = require("../scraperHelper"); - -const baseUrl = 'https://www.torrent9.st' -const defaultTimeout = 10000; -const pageSize = 50; - -const Categories = { - MOVIE: 'films', - TV: 'series', -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return singleRequest(`${baseUrl}/torrent/${torrentId}`) - .then((body) => parseTorrentPage(body)) - .then((torrent) => ({ torrentId, ...torrent })) - .catch((err) => { - console.warn(`Failed Torrent9 ${torrentId} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function browse(config = {}, retries = 2, error = null) { - if (retries === 0) { - return Promise.reject(error || new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - const offset = (page - 1) * pageSize + 1; - - return singleRequest(`${baseUrl}/torrents/${category}/${offset}`) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1, err)); -} - -function singleRequest(requestUrl) { - const headers = { - 'user-agent': getRandomUserAgent(), - 'accept-encoding': 'gzip, deflate', - 'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,lt;q=0.7,ar;q=0.6,fr;q=0.5,de;q=0.4' - }; - const options = { headers, timeout: defaultTimeout }; - - return axios.get(requestUrl, options) - .then(response => { - const body = response.data; - if (!body || !body.length) { - throw new Error(`No body: ${requestUrl} with status ${response.status}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('tbody tr').each((i, element) => { - const row = $(element); - const titleElement = row.find('td a'); - try { - torrents.push({ - name: titleElement.text().trim(), - torrentId: titleElement.attr('href').match(/torrent\/(.*)/)[1], - seeders: parseInt(row.find('span.seed_ok').first().text()), - }); - } catch (e) { - console.error('Failed parsing TorrentGalaxy row: ', e); - } - }); - - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const details = $('.movie-detail'); - const magnetLink = details.find('a[href^="magnet"]').first().attr('href'); - const torrentLink = details.find('div.download-btn:nth-of-type(1) a').first().attr('href'); - const name = details.find('p strong').contents().filter((_, e) => e.type === 'text').text() || $('h5, h1').text(); - const languages = parse(name).languages; - const torrent = { - title: name.trim(), - infoHash: magnetLink ? decode(magnetLink).infoHash : undefined, - magnetLink: magnetLink, - torrentLink: torrentLink ? `${baseUrl}${torrentLink}` : undefined, - seeders: parseInt(details.find('.movie-information ul:nth-of-type(1) li:nth-of-type(3)').text(), 10), - category: details.find('ul:nth-of-type(4) a').attr('href').match(/\/(\w+)$/)[1], - size: parseSize(details.find('ul:nth-of-type(2) li:nth-of-type(3)').text()), - uploadDate: moment(details.find('ul:nth-of-type(3) li:nth-of-type(3)').text(), 'DD/MM/YYYY').toDate(), - languages: languages && languages.includes('french') ? undefined : 'french', - }; - resolve(torrent); - }); -} - -module.exports = { torrent, browse, Categories }; diff --git a/scraper/scrapers/torrent9/torrent9_scraper.js b/scraper/scrapers/torrent9/torrent9_scraper.js deleted file mode 100644 index ac6fd79..0000000 --- a/scraper/scrapers/torrent9/torrent9_scraper.js +++ /dev/null @@ -1,104 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const torrent9 = require('./torrent9_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'Torrent9'; -const TYPE_MAPPING = typeMapping(); - -const api_limiter = new Bottleneck({ maxConcurrent: 1, minTime: 5000 }); -const limiter = new Bottleneck({ maxConcurrent: 10 }); -const allowedCategories = [ - torrent9.Categories.MOVIE, - torrent9.Categories.TV, -]; -const clients = [ - torrent9 -]; - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function scrapeLatestTorrents() { - const scrapeFunctions = allowedCategories - .map(category => clients.map(client => () => scrapeLatestTorrentsForCategory(client, category))) - .reduce((a, b) => a.concat(b), []); - return Promises.sequence(scrapeFunctions) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(client, category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return api_limiter.schedule(() => client.browse({ category, page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(results => Promise.all(results.map(r => limiter.schedule(() => processTorrentRecord(client, r))))) - .then(resolved => resolved.length > 0 && page < getUntilPage(category) - ? scrapeLatestTorrentsForCategory(client, category, page + 1) - : Promise.resolve([])); -} - -async function processTorrentRecord(client, record) { - if (await checkAndUpdateTorrent({ provider: NAME, torrentId: record.torrentId })) { - return record; - } - - const foundTorrent = await api_limiter.schedule(() => client.torrent(record.torrentId)).catch(() => undefined); - if (!foundTorrent || !foundTorrent.infoHash) { - console.warn(`Failed retrieving torrent ${record.torrentId}`); - return record; - } - - const torrent = { - provider: NAME, - infoHash: foundTorrent.infoHash, - magnetLink: foundTorrent.magnetLink, - torrentLink: foundTorrent.torrentLink, - torrentId: foundTorrent.torrentId, - title: foundTorrent.title, - type: TYPE_MAPPING[foundTorrent.category], - size: foundTorrent.size, - seeders: foundTorrent.seeders, - uploadDate: foundTorrent.uploadDate, - imdbId: foundTorrent.imdbId, - languages: foundTorrent.languages - }; - - if (await checkAndUpdateTorrent(torrent)) { - console.info(`Skipping torrent ${torrent.torrentId} - [${torrent.infoHash}] ${torrent.title}`); - return torrent; - } - - return createTorrentEntry(torrent).then(() => torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[torrent9.Categories.MOVIE] = Type.MOVIE; - mapping[torrent9.Categories.TV] = Type.SERIES; - return mapping; -} - -function getUntilPage(category) { - if (category === torrent9.Categories.TV) { - return 2; - } - return 1; -} - -module.exports = { scrape, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/torrent9/torrent9v2_api.js b/scraper/scrapers/torrent9/torrent9v2_api.js deleted file mode 100644 index 1faef38..0000000 --- a/scraper/scrapers/torrent9/torrent9v2_api.js +++ /dev/null @@ -1,124 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const decode = require('magnet-uri'); -const { parse } = require('parse-torrent-title'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { parseSize } = require("../scraperHelper"); - -const baseUrl = 'https://www.torrent9.st' -const defaultTimeout = 10000; - -const Categories = { - MOVIE: 'films', - TV: 'series', -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return singleRequest(`${baseUrl}/torrent/${torrentId}`) - .then((body) => parseTorrentPage(body)) - .then((torrent) => ({ torrentId, ...torrent })) - .catch((err) => { - console.warn(`Failed Torrent9 ${torrentId} request: `, err); - return torrent(torrentId, config, retries - 1) - }); -} - -function browse(config = {}, retries = 2, error = null) { - if (retries === 0) { - return Promise.reject(error || new Error(`Failed browse request`)); - } - const page = config.page || 1; - const category = config.category; - - return singleRequest(`${baseUrl}/torrents_${category}.html,page-${page}`) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1, err)); -} - -function singleRequest(requestUrl) { - const headers = { - 'user-agent': getRandomUserAgent(), - 'accept-encoding': 'gzip, deflate', - 'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,lt;q=0.7,ar;q=0.6,fr;q=0.5,de;q=0.4' - }; - const options = { headers, timeout: defaultTimeout }; - - return axios.get(requestUrl, options) - .then(response => { - const body = response.data; - if (!body || !body.length) { - throw new Error(`No body: ${requestUrl} with status ${response.status}`); - } - return body; - }) - .catch(error => Promise.reject(error.message || error)); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('tr').each((i, element) => { - const row = $(element); - const titleElement = row.find('td a'); - if (titleElement.length) { - torrents.push({ - title: titleElement.attr('title').trim(), - torrentId: titleElement.attr('href').match(/torrent\/(.*)/)[1], - seeders: parseInt(row.find('span.seed_ok').first().text()), - }); - } - }); - - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const details = $('.movie-detail'); - const magnetLink = details.find('a[href^="magnet"]').first().attr('href'); - const name = getName(details) || $('h1').text(); - const languages = parse(name).languages; - const torrent = { - title: name.trim(), - infoHash: magnetLink ? decode(magnetLink).infoHash : undefined, - magnetLink: magnetLink, - seeders: parseInt(details.find('.movie-information ul:nth-of-type(1) li:nth-of-type(3)').text(), 10), - category: details.find('ul:nth-of-type(4) a').attr('href').match(/_(\w+)\.html$/)[1], - size: parseSize(details.find('ul:nth-of-type(2) li:nth-of-type(3)').text()), - uploadDate: moment(details.find('ul:nth-of-type(3) li:nth-of-type(3)').text(), 'DD/MM/YYYY').toDate(), - languages: languages && languages.includes('french') ? undefined : 'french', - }; - resolve(torrent); - }); -} - -function getName(details) { - const nameElement = details.find('p strong'); - if (nameElement.length === 1) { - return nameElement.contents().filter((_, elem) => elem.type === 'text').text() - } - const description = nameElement.parent().text(); - const nameMatch = description.match( - /(?:[A-Z]+[^A-Z0-9]*|[A-Z0-9-]+(?:[a-z]+\d+)?)\.([\w-]+\.){3,}\w+(?:-\w+)?(?=[A-Z])/); - return nameMatch && nameMatch[0]; -} - -module.exports = { torrent, browse, Categories }; diff --git a/scraper/scrapers/torrentgalaxy/torrentgalaxy_api.js b/scraper/scrapers/torrentgalaxy/torrentgalaxy_api.js deleted file mode 100644 index 7cbf610..0000000 --- a/scraper/scrapers/torrentgalaxy/torrentgalaxy_api.js +++ /dev/null @@ -1,171 +0,0 @@ -const axios = require('axios'); -const cheerio = require('cheerio'); -const moment = require('moment'); -const decode = require('magnet-uri'); -const Promises = require('../../lib/promises'); -const { getRandomUserAgent } = require('../../lib/requestHelper'); -const { parseSize } = require("../scraperHelper"); - -const defaultProxies = [ - // 'https://torrentgalaxy.to', - // 'https://torrentgalaxy.mx', - 'https://torrentgalaxy.su' -]; -const defaultTimeout = 10000; - -const Categories = { - ANIME: '28', - MOVIE_4K: '3', - MOVIE_PACKS: '4', - MOVIE_SD: '1', - MOVIE_HD: '42', - MOVIE_CAM: '45', - MOVIE_BOLLYWOOD: '46', - TV_SD: '5', - TV_HD: '41', - TV_PACKS: '6', - TV_SPORT: '7', - DOCUMENTARIES: '9' -}; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - const proxyList = config.proxyList || defaultProxies; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/torrent/${torrentId}`))) - .then((body) => parseTorrentPage(body)) - .then((torrent) => ({ torrentId, ...torrent })) - .catch((err) => torrent(torrentId, config, retries - 1)); -} - -function search(keyword, config = {}, retries = 2) { - if (!keyword || retries === 0) { - return Promise.reject(new Error(`Failed ${keyword} search`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/torrents.php?cat=${category}&page=${page - 1}&search=${keyword}`))) - .then((body) => parseTableBody(body)) - .catch(() => search(keyword, config, retries - 1)); -} - -function browse(config = {}, retries = 2, error = null) { - if (retries === 0) { - return Promise.reject(error || new Error(`Failed browse request`)); - } - const proxyList = config.proxyList || defaultProxies; - const page = config.page || 1; - const category = config.category; - - return Promises.first(proxyList - .map((proxyUrl) => singleRequest(`${proxyUrl}/torrents.php?cat=${category}&page=${page - 1}`))) - .then((body) => parseTableBody(body)) - .catch((err) => browse(config, retries - 1, err)); -} - -function singleRequest(requestUrl) { - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: defaultTimeout }; - - return axios.get(requestUrl, options) - .then((response) => { - const body = response.data; - if (!body) { - throw new Error(`No body: ${requestUrl} with status ${response.status}`); - } else if (body.includes('Access Denied')) { - console.log(`Access Denied: ${requestUrl}`); - throw new Error(`Access Denied: ${requestUrl}`); - } else if (body.includes('502: Bad gateway') || - body.includes('403 Forbidden') || - body.includes('Origin DNS error')) { - throw new Error(`Invalid body contents: ${requestUrl}`); - } - return body; - }); -} - -function parseTableBody(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - - const torrents = []; - - $('.tgxtable > div').each((i, element) => { - if (i === 0) return; - const row = $(element); - const magnetLink = row.find('div:nth-of-type(n+2) .collapsehide > a:nth-of-type(2)').attr('href'); - const imdbIdMatch = row.html().match(/search=(tt\d+)/i); - try { - torrents.push({ - name: row.find('.tgxtablecell div a[title]').first().text(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - torrentLink: row.find('div:nth-of-type(n+2) .collapsehide > a:nth-of-type(1)').first().attr('href'), - torrentId: row.find('.tgxtablecell div a[title]').first().attr('href').match(/torrent\/(\d+)/)[1], - verified: !!row.find('i.fa-check').length, - category: row.find('div:nth-of-type(n+2) .shrink a').first().attr('href').match(/cat=(\d+)$/)[1], - seeders: parseInt(row.find('div:nth-of-type(n+2) .collapsehide [color=\'green\'] b').first().text()), - leechers: parseInt(row.find('div:nth-of-type(n+2) .collapsehide [color=\'#ff0000\'] b').first().text()), - languages: row.find('.tgxtablecell img[title]').first().attr('title'), - size: parseSize(row.find('.collapsehide span.badge-secondary').first().text()), - uploadDate: parseDate(row.find('div.collapsehide:nth-of-type(12)').first().text()), - imdbId: imdbIdMatch && imdbIdMatch[1], - }); - } catch (e) { - console.error('Failed parsing TorrentGalaxy row: ', e); - } - }); - - resolve(torrents); - }); -} - -function parseTorrentPage(body) { - return new Promise((resolve, reject) => { - const $ = cheerio.load(body); - - if (!$) { - reject(new Error('Failed loading body')); - } - const content = $('div[class="torrentpagetable limitwidth"]').first(); - const magnetLink = $('a[class="btn btn-danger"]').attr('href'); - const imdbIdContent = $('a[title="IMDB link"]').attr('href'); - const imdbIdMatch = imdbIdContent && imdbIdContent.match(/imdb\.com\/title\/(tt\d+)/i); - - const torrent = { - name: content.find('.linebreakup a').first().text(), - infoHash: decode(magnetLink).infoHash, - magnetLink: magnetLink, - verified: !content.find('i.fa-exclamation-triangle').length, - torrentLink: $('a[class="btn btn-success"]').attr('href'), - seeders: parseInt(content.find('font[color=\'green\']').first().text(), 10), - category: content.find('div:nth-of-type(4) a:nth-of-type(2)').first().attr('href').match(/cat=(\d+)$/)[1], - languages: content.find('div:nth-of-type(5) div:nth-of-type(2)').first().text().trim(), - size: parseSize(content.find('div:nth-of-type(6) div:nth-of-type(2)').first().text()), - uploadDate: parseDate(content.find('div:nth-of-type(9) div:nth-of-type(2)').first().text()), - imdbId: imdbIdMatch && imdbIdMatch[1], - }; - resolve(torrent); - }); -} - -function parseDate(dateString) { - if (dateString.includes('ago')) { - const amount = parseInt(dateString, 10); - const unit = dateString.includes('Min') ? 'minutes' : 'hours'; - return moment().subtract(amount, unit).toDate(); - } - const preparedDate = dateString.replace(/\//g, '-').replace(/-(\d{2})\s/, '-20$1 ') - return moment(preparedDate, 'DD-MM-YYYY HH:mm').toDate(); -} - -module.exports = { torrent, search, browse, Categories }; diff --git a/scraper/scrapers/torrentgalaxy/torrentgalaxy_scraper.js b/scraper/scrapers/torrentgalaxy/torrentgalaxy_scraper.js deleted file mode 100644 index 35c5603..0000000 --- a/scraper/scrapers/torrentgalaxy/torrentgalaxy_scraper.js +++ /dev/null @@ -1,132 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const torrentGalaxy = require('./torrentgalaxy_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const Promises = require('../../lib/promises'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'TorrentGalaxy'; -const TYPE_MAPPING = typeMapping(); - -const api_limiter = new Bottleneck({ maxConcurrent: 1, minTime: 5000 }); -const limiter = new Bottleneck({ maxConcurrent: 10 }); -const allowedCategories = [ - torrentGalaxy.Categories.ANIME, - torrentGalaxy.Categories.MOVIE_4K, - torrentGalaxy.Categories.MOVIE_PACKS, - torrentGalaxy.Categories.MOVIE_SD, - torrentGalaxy.Categories.MOVIE_HD, - torrentGalaxy.Categories.MOVIE_CAM, - torrentGalaxy.Categories.MOVIE_BOLLYWOOD, - torrentGalaxy.Categories.TV_SD, - torrentGalaxy.Categories.TV_HD, - torrentGalaxy.Categories.TV_PACKS, - torrentGalaxy.Categories.DOCUMENTARIES, -]; -const packCategories = [ - torrentGalaxy.Categories.MOVIE_PACKS, - torrentGalaxy.Categories.TV_PACKS -]; - -async function scrape() { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - // const ids = ['14212584']; - // return Promise.all(ids.map(id => limiter.schedule(() => torrentGalaxy.torrent(id) - // .then(torrent => processTorrentRecord(torrent))))) - // .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); - return scrapeLatestTorrents() - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => torrentGalaxy.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrents() { - return Promises.sequence(allowedCategories.map(category => () => scrapeLatestTorrentsForCategory(category))) - .then(entries => entries.reduce((a, b) => a.concat(b), [])); -} - -async function scrapeLatestTorrentsForCategory(category, page = 1) { - console.log(`Scrapping ${NAME} ${category} category page ${page}`); - return api_limiter.schedule(() => torrentGalaxy.browse({ category, page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] ${category} due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < getMaxPage(category) - ? scrapeLatestTorrentsForCategory(category, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (!record || !TYPE_MAPPING[record.category] || !record.verified) { - return Promise.resolve('Invalid torrent record'); - } - - const torrent = { - provider: NAME, - infoHash: record.infoHash, - torrentId: record.torrentId, - torrentLink: record.torrentLink, - title: record.name.replace(/\t|\s+/g, ' '), - type: TYPE_MAPPING[record.category], - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - imdbId: record.imdbId, - pack: packCategories.includes(record.category), - languages: !(record.languages || '').includes('Other') ? record.languages : undefined - }; - - if (await checkAndUpdateTorrent(torrent)) { - return torrent; - } - const isOld = moment(torrent.uploadDate).isBefore(moment().subtract(18, 'month')); - if (torrent.seeders === 0 && isOld && !torrent.pack) { - console.log(`Skipping old unseeded torrent [${torrent.infoHash}] ${torrent.title}`) - return torrent; - } - - return createTorrentEntry(torrent).then(() => torrent); -} - -function typeMapping() { - const mapping = {}; - mapping[torrentGalaxy.Categories.MOVIE_SD] = Type.MOVIE; - mapping[torrentGalaxy.Categories.MOVIE_HD] = Type.MOVIE; - mapping[torrentGalaxy.Categories.MOVIE_4K] = Type.MOVIE; - mapping[torrentGalaxy.Categories.MOVIE_CAM] = Type.MOVIE; - mapping[torrentGalaxy.Categories.MOVIE_PACKS] = Type.MOVIE; - mapping[torrentGalaxy.Categories.MOVIE_BOLLYWOOD] = Type.MOVIE; - mapping[torrentGalaxy.Categories.DOCUMENTARIES] = Type.MOVIE; - mapping[torrentGalaxy.Categories.TV_SD] = Type.SERIES; - mapping[torrentGalaxy.Categories.TV_HD] = Type.SERIES; - mapping[torrentGalaxy.Categories.TV_PACKS] = Type.SERIES; - mapping[torrentGalaxy.Categories.TV_SPORT] = Type.SERIES; - mapping[torrentGalaxy.Categories.ANIME] = Type.ANIME; - return mapping; -} - -function getMaxPage(category) { - switch (category) { - case torrentGalaxy.Categories.TV_SD: - case torrentGalaxy.Categories.TV_HD: - case torrentGalaxy.Categories.MOVIE_SD: - case torrentGalaxy.Categories.MOVIE_HD: - return 5; - default: - return 1; - } -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/scraper/scrapers/yts/yts_api.js b/scraper/scrapers/yts/yts_api.js deleted file mode 100644 index 3e77095..0000000 --- a/scraper/scrapers/yts/yts_api.js +++ /dev/null @@ -1,98 +0,0 @@ -const axios = require('axios'); -const Promises = require('../../lib/promises'); -const { getRandomUserAgent } = require('./../../lib/requestHelper'); - -const defaultProxies = [ - 'https://yts.mx' -]; -const defaultTimeout = 30000; -const limit = 50; - -function torrent(torrentId, config = {}, retries = 2) { - if (!torrentId || retries === 0) { - return Promise.reject(new Error(`Failed ${torrentId} search`)); - } - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/v2/movie_details.json?movie_id=${torrentId}`, config))) - .then(body => parseResults(body)) - .catch(error => torrent(torrentId, config, retries - 1)); -} - -function search(query, config = {}, retries = 2) { - if (!query || retries === 0) { - return Promise.reject(new Error(`Failed ${query} search`)); - } - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/v2/list_movies.json?limit=${limit}&query_term=${query}`, config))) - .then(results => parseResults(results)) - .catch(error => search(query, config, retries - 1)); -} - -function browse(config = {}, retries = 2) { - if (retries === 0) { - return Promise.reject(new Error(`Failed browse request`)); - } - const page = config.page || 1; - - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/v2/list_movies.json?limit=${limit}&page=${page}`, config))) - .then(results => parseResults(results)) - .catch(error => browse(config, retries - 1)); -} - -function maxPage() { - return Promises.first(defaultProxies - .map(proxyUrl => singleRequest(`${proxyUrl}/api/v2/list_movies.json?limit=${limit}`))) - .then(results => Math.round((results?.data?.movie_count || 0) / limit)) -} - -function singleRequest(requestUrl, config = {}) { - const timeout = config.timeout || defaultTimeout; - const options = { headers: { 'User-Agent': getRandomUserAgent() }, timeout: timeout }; - - return axios.get(requestUrl, options) - .then(response => { - if (!response.data) { - return Promise.reject(`No body: ${requestUrl}`); - } - return Promise.resolve(response.data); - }); -} - -function parseResults(results) { - if (!results || !results.data || (!results.data.movie && !Array.isArray(results.data.movies))) { - console.log('Incorrect results: ', results); - return Promise.reject('Incorrect results') - } - return (results.data.movies || [results.data.movie]) - .filter(movie => Array.isArray(movie.torrents)) - .map(movie => parseMovie(movie)) - .reduce((a, b) => a.concat(b), []); -} - -function parseMovie(movie) { - return movie.torrents.map(torrent => ({ - name: `${movie.title} ${movie.year} ${torrent.quality} ${formatType(torrent.type)} `, - torrentId: `${movie.id}-${torrent.hash.trim().toLowerCase()}`, - infoHash: torrent.hash.trim().toLowerCase(), - torrentLink: torrent.url, - seeders: torrent.seeds, - size: torrent.size_bytes, - uploadDate: new Date(torrent.date_uploaded_unix * 1000), - imdbId: movie.imdb_code - })); -} - -function formatType(type) { - if (type === 'web') { - return 'WEBRip'; - } - if (type === 'bluray') { - return 'BluRay'; - } - return type.toUpperCase(); -} - -module.exports = { torrent, search, browse, maxPage }; \ No newline at end of file diff --git a/scraper/scrapers/yts/yts_full_scraper.js b/scraper/scrapers/yts/yts_full_scraper.js deleted file mode 100644 index b6af91d..0000000 --- a/scraper/scrapers/yts/yts_full_scraper.js +++ /dev/null @@ -1,15 +0,0 @@ -const moment = require("moment"); -const yts = require('./yts_api'); -const scraper = require('./yts_scraper') - - -async function scrape() { - const scrapeStart = moment(); - console.log(`[${scrapeStart}] starting ${scraper.NAME} full scrape...`); - - return yts.maxPage() - .then(maxPage => scraper.scrape(maxPage)) - .then(() => console.log(`[${moment()}] finished ${scraper.NAME} full scrape`)); -} - -module.exports = { scrape, NAME: scraper.NAME }; \ No newline at end of file diff --git a/scraper/scrapers/yts/yts_scraper.js b/scraper/scrapers/yts/yts_scraper.js deleted file mode 100644 index 7e26620..0000000 --- a/scraper/scrapers/yts/yts_scraper.js +++ /dev/null @@ -1,67 +0,0 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const yts = require('./yts_api'); -const { Type } = require('../../lib/types'); -const repository = require('../../lib/repository'); -const { createTorrentEntry, checkAndUpdateTorrent } = require('../../lib/torrentEntries'); - -const NAME = 'YTS'; -const UNTIL_PAGE = 10; - -const limiter = new Bottleneck({ maxConcurrent: 10 }); - -async function scrape(maxPage) { - const scrapeStart = moment(); - const lastScrape = await repository.getProvider({ name: NAME }); - console.log(`[${scrapeStart}] starting ${NAME} scrape...`); - - return scrapeLatestTorrentsForCategory(maxPage) - .then(() => { - lastScrape.lastScraped = scrapeStart; - return lastScrape.save(); - }) - .then(() => console.log(`[${moment()}] finished ${NAME} scrape`)); -} - -async function updateSeeders(torrent) { - return limiter.schedule(() => yts.torrent(torrent.torrentId)); -} - -async function scrapeLatestTorrentsForCategory(maxPage = UNTIL_PAGE, page = 1) { - console.log(`Scrapping ${NAME} page ${page}`); - return yts.browse(({ page })) - .catch(error => { - console.warn(`Failed ${NAME} scrapping for [${page}] due: `, error); - return Promise.resolve([]); - }) - .then(torrents => Promise.all(torrents.map(torrent => limiter.schedule(() => processTorrentRecord(torrent))))) - .then(resolved => resolved.length > 0 && page < maxPage - ? scrapeLatestTorrentsForCategory(maxPage, page + 1) - : Promise.resolve()); -} - -async function processTorrentRecord(record) { - if (await checkAndUpdateTorrent(record)) { - return record; - } - - if (!record || !record.size) { - return Promise.resolve('Invalid torrent record'); - } - - const torrent = { - infoHash: record.infoHash, - provider: NAME, - torrentId: record.torrentId, - title: record.name.replace(/\t|\s+/g, ' ').trim(), - type: Type.MOVIE, - size: record.size, - seeders: record.seeders, - uploadDate: record.uploadDate, - imdbId: record.imdbId, - }; - - return createTorrentEntry(torrent).then(() => torrent); -} - -module.exports = { scrape, updateSeeders, NAME }; \ No newline at end of file diff --git a/addon/.dockerignore b/src/node/addon/.dockerignore similarity index 100% rename from addon/.dockerignore rename to src/node/addon/.dockerignore diff --git a/src/node/addon/Dockerfile b/src/node/addon/Dockerfile new file mode 100644 index 0000000..c579bb5 --- /dev/null +++ b/src/node/addon/Dockerfile @@ -0,0 +1,17 @@ +FROM node:16-alpine + +RUN apk update && apk upgrade && \ + apk add --no-cache nodejs npm git curl && \ + rm -fr /var/cache/apk/* + +WORKDIR /app + +COPY package*.json . + +RUN npm ci --only-production + +COPY . . + +EXPOSE 7000 + +CMD ["/usr/bin/node", "--insecure-http-parser", "/app/index.js" ] \ No newline at end of file diff --git a/addon/addon.js b/src/node/addon/addon.js similarity index 84% rename from addon/addon.js rename to src/node/addon/addon.js index 0492989..1e1a8d7 100644 --- a/addon/addon.js +++ b/src/node/addon/addon.js @@ -1,3 +1,4 @@ +import Bottleneck from 'bottleneck'; import { addonBuilder } from 'stremio-addon-sdk'; import { Type } from './lib/types.js'; import { dummyManifest } from './lib/manifest.js'; @@ -5,11 +6,8 @@ import { cacheWrapStream } from './lib/cache.js'; import { toStreamInfo, applyStaticInfo } from './lib/streamInfo.js'; import * as repository from './lib/repository.js'; import applySorting from './lib/sort.js'; -import applyFilters from './lib/filter.js'; import { applyMochs, getMochCatalog, getMochItemMeta } from './moch/moch.js'; import StaticLinks from './moch/static.js'; -import { createNamedQueue } from "./lib/namedQueue.js"; -import pLimit from "p-limit"; const CACHE_MAX_AGE = parseInt(process.env.CACHE_MAX_AGE) || 60 * 60; // 1 hour in seconds const CACHE_MAX_AGE_EMPTY = 60; // 60 seconds @@ -18,27 +16,35 @@ const STALE_REVALIDATE_AGE = 4 * 60 * 60; // 4 hours const STALE_ERROR_AGE = 7 * 24 * 60 * 60; // 7 days const builder = new addonBuilder(dummyManifest()); -const requestQueue = createNamedQueue(Infinity); -const newLimiter = pLimit(30) +const limiter = new Bottleneck({ + maxConcurrent: process.env.LIMIT_MAX_CONCURRENT || 200, + highWater: process.env.LIMIT_QUEUE_SIZE || 220, + strategy: Bottleneck.strategy.OVERFLOW +}); builder.defineStreamHandler((args) => { if (!args.id.match(/tt\d+/i) && !args.id.match(/kitsu:\d+/i)) { return Promise.resolve({ streams: [] }); } - - return requestQueue.wrap(args.id, () => resolveStreams(args)) - .then(streams => applyFilters(streams, args.extra)) - .then(streams => applySorting(streams, args.extra, args.type)) + + return cacheWrapStream(args.id, () => limiter.schedule(() => + streamHandler(args) + .then(records => records + .sort((a, b) => b.torrent.seeders - a.torrent.seeders || b.torrent.uploadDate - a.torrent.uploadDate) + .map(record => toStreamInfo(record))))) + .then(streams => applySorting(streams, args.extra)) .then(streams => applyStaticInfo(streams)) .then(streams => applyMochs(streams, args.extra)) .then(streams => enrichCacheParams(streams)) .catch(error => { + console.log(`Failed request ${args.id}: ${error}`); return Promise.reject(`Failed request ${args.id}: ${error}`); }); }); + builder.defineCatalogHandler((args) => { - const mochKey = args.id.replace("torrentio-", ''); + const mochKey = args.id.replace("selfhostio-", ''); console.log(`Incoming catalog ${args.id} request with skip=${args.extra.skip || 0}`) return getMochCatalog(mochKey, args.extra) .then(metas => ({ @@ -63,15 +69,7 @@ builder.defineMetaHandler((args) => { }); }) -async function resolveStreams(args) { - return cacheWrapStream(args.id, () => newLimiter(() => streamHandler(args) - .then(records => records - .sort((a, b) => b.torrent.seeders - a.torrent.seeders || b.torrent.uploadDate - a.torrent.uploadDate) - .map(record => toStreamInfo(record))))); -} - async function streamHandler(args) { - // console.log(`Pending count: ${newLimiter.pendingCount}, active count: ${newLimiter.activeCount}`, ) if (args.type === Type.MOVIE) { return movieRecordsHandler(args); } else if (args.type === Type.SERIES) { @@ -102,6 +100,7 @@ async function movieRecordsHandler(args) { if (args.id.match(/^tt\d+$/)) { const parts = args.id.split(':'); const imdbId = parts[0]; + console.log("imdbId", imdbId); return repository.getImdbIdMovieEntries(imdbId); } else if (args.id.match(/^kitsu:\d+(?::\d+)?$/i)) { return seriesRecordsHandler(args); diff --git a/addon/index.js b/src/node/addon/index.js similarity index 52% rename from addon/index.js rename to src/node/addon/index.js index ab0f0a4..d44719f 100644 --- a/addon/index.js +++ b/src/node/addon/index.js @@ -1,22 +1,11 @@ import express from 'express'; -import swStats from 'swagger-stats'; import serverless from './serverless.js'; -import { manifest } from './lib/manifest.js'; import { initBestTrackers } from './lib/magnetHelper.js'; +import {ipFilter} from "./lib/ipFilter.js"; const app = express(); app.enable('trust proxy'); -app.use(swStats.getMiddleware({ - name: manifest().name, - version: manifest().version, - timelineBucketDuration: 60 * 60 * 1000, - apdexThreshold: 100, - authentication: true, - onAuthenticate: (req, username, password) => { - return username === process.env.METRICS_USER - && password === process.env.METRICS_PASSWORD - }, -})) +app.use(ipFilter); app.use(express.static('static', { maxAge: '1y' })); app.use((req, res, next) => serverless(req, res, next)); app.listen(process.env.PORT || 7000, () => { diff --git a/addon/lib/cache.js b/src/node/addon/lib/cache.js similarity index 85% rename from addon/lib/cache.js rename to src/node/addon/lib/cache.js index 72a2c3a..00400c7 100644 --- a/addon/lib/cache.js +++ b/src/node/addon/lib/cache.js @@ -2,14 +2,13 @@ import cacheManager from 'cache-manager'; import mangodbStore from 'cache-manager-mongodb'; import { isStaticUrl } from '../moch/static.js'; -const GLOBAL_KEY_PREFIX = 'torrentio-addon'; +const GLOBAL_KEY_PREFIX = 'selfhostio-addon'; const STREAM_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|stream`; const AVAILABILITY_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|availability`; const RESOLVED_URL_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|resolved`; -const STREAM_TTL = process.env.STREAM_TTL || 24 * 60 * 60; // 24 hours -const STREAM_EMPTY_TTL = process.env.STREAM_EMPTY_TTL || 60; // 1 minute -const RESOLVED_URL_TTL = 3 * 60 * 60; // 3 hours +const STREAM_TTL = process.env.STREAM_TTL || 60 * 60; // 1 Hour +const STREAM_EMPTY_TTL = process.env.STREAM_EMPTY_TTL || 30; // 1 minute const AVAILABILITY_TTL = 8 * 60 * 60; // 8 hours const AVAILABILITY_EMPTY_TTL = 30 * 60; // 30 minutes const MESSAGE_VIDEO_URL_TTL = 60; // 1 minutes @@ -29,9 +28,8 @@ function initiateRemoteCache() { store: mangodbStore, uri: MONGO_URI, options: { - collection: 'torrentio_addon_collection', - socketTimeoutMS: 30000, - poolSize: 200, + collection: 'selfhostio_addon_collection', + socketTimeoutMS: 120000, useNewUrlParser: true, useUnifiedTopology: false, ttl: STREAM_EMPTY_TTL @@ -69,8 +67,8 @@ export function cacheWrapStream(id, method) { } export function cacheWrapResolvedUrl(id, method) { - return cacheWrap(remoteCache, `${RESOLVED_URL_KEY_PREFIX}:${id}`, method, { - ttl: (url) => isStaticUrl(url) ? MESSAGE_VIDEO_URL_TTL : RESOLVED_URL_TTL + return cacheWrap(memoryCache, `${RESOLVED_URL_KEY_PREFIX}:${id}`, method, { + ttl: (url) => isStaticUrl(url) ? MESSAGE_VIDEO_URL_TTL : STREAM_TTL }); } diff --git a/src/node/addon/lib/configuration.js b/src/node/addon/lib/configuration.js new file mode 100644 index 0000000..50b5f6b --- /dev/null +++ b/src/node/addon/lib/configuration.js @@ -0,0 +1,32 @@ +import { DebridOptions } from '../moch/options.js'; +import { QualityFilter, Providers, SizeFilter } from './filter.js'; +import { LanguageOptions } from './languages.js'; + +const keysToSplit = [Providers.key, LanguageOptions.key, QualityFilter.key, SizeFilter.key, DebridOptions.key]; +const keysToUppercase = [SizeFilter.key]; + +export function parseConfiguration(configuration) { + if (!configuration) { + return undefined; + } + + const configValues = configuration.split('|') + .reduce((map, next) => { + const parameterParts = next.split('='); + if (parameterParts.length === 2) { + map[parameterParts[0].toLowerCase()] = parameterParts[1]; + } + return map; + }, {}); + keysToSplit + .filter(key => configValues[key]) + .forEach(key => configValues[key] = configValues[key].split(',') + .map(value => keysToUppercase.includes(key) ? value.toUpperCase() : value.toLowerCase())) + return configValues; +} + +function configValue(config) { + return Object.entries(config) + .map(([key, value]) => `${key}=${Array.isArray(value) ? value.join(',') : value}`) + .join('|'); +} \ No newline at end of file diff --git a/addon/lib/extension.js b/src/node/addon/lib/extension.js similarity index 100% rename from addon/lib/extension.js rename to src/node/addon/lib/extension.js diff --git a/addon/lib/filter.js b/src/node/addon/lib/filter.js similarity index 75% rename from addon/lib/filter.js rename to src/node/addon/lib/filter.js index b7f6c39..f039d38 100644 --- a/addon/lib/filter.js +++ b/src/node/addon/lib/filter.js @@ -4,92 +4,25 @@ export const Providers = { key: 'providers', options: [ { - key: 'yts', + key: 'YTS', label: 'YTS' }, { - key: 'eztv', + key: 'EZTV', label: 'EZTV' }, { - key: 'rarbg', - label: 'RARBG' + key: 'DMM', + label: 'DMM' }, { - key: '1337x', - label: '1337x' + key: 'TPB', + label: 'TPB' }, { - key: 'thepiratebay', - label: 'ThePirateBay' - }, - { - key: 'kickasstorrents', - label: 'KickassTorrents' - }, - { - key: 'torrentgalaxy', + key: 'TorrentGalaxy', label: 'TorrentGalaxy' - }, - { - key: 'magnetdl', - label: 'MagnetDL' - }, - { - key: 'horriblesubs', - label: 'HorribleSubs', - anime: true - }, - { - key: 'nyaasi', - label: 'NyaaSi', - anime: true - }, - { - key: 'tokyotosho', - label: 'TokyoTosho', - anime: true - }, - { - key: 'anidex', - label: 'AniDex', - anime: true - }, - { - key: 'rutor', - label: 'Rutor', - foreign: '🇷🇺' - }, - { - key: 'rutracker', - label: 'Rutracker', - foreign: '🇷🇺' - }, - { - key: 'comando', - label: 'Comando', - foreign: '🇵🇹' - }, - { - key: 'bludv', - label: 'BluDV', - foreign: '🇵🇹' - }, - { - key: 'torrent9', - label: 'Torrent9', - foreign: '🇫🇷' - }, - { - key: 'mejortorrent', - label: 'MejorTorrent', - foreign: '🇪🇸' - }, - { - key: 'cinecalidad', - label: 'Cinecalidad', - foreign: '🇲🇽' - }, + } ] }; export const QualityFilter = { diff --git a/src/node/addon/lib/ipFilter.js b/src/node/addon/lib/ipFilter.js new file mode 100644 index 0000000..83e830d --- /dev/null +++ b/src/node/addon/lib/ipFilter.js @@ -0,0 +1,49 @@ +import fs from 'fs'; +import path from 'path'; +import requestIp from 'request-ip'; +import ip from 'ip'; + +const filePath = path.join(process.cwd(), 'allowed_ips.json'); + +let ALLOWED_ADDRESSES = []; +let ALLOWED_SUBNETS = []; + +if (fs.existsSync(filePath)) { + const allowedAddresses = JSON.parse(fs.readFileSync(filePath, 'utf8')); + + allowedAddresses.forEach(address => { + if (address.indexOf('/') === -1) { + ALLOWED_ADDRESSES.push(address); + } else { + ALLOWED_SUBNETS.push(address); + } + }); +} + +const IpIsAllowed = function(ipAddress) { + if (ALLOWED_ADDRESSES.indexOf(ipAddress) > -1) { + return true; + } + + for (let i = 0; i < ALLOWED_SUBNETS.length; i++) { + if (ip.cidrSubnet(ALLOWED_SUBNETS[i]).contains(ipAddress)) { + return true; + } + } + return false; +}; + +export const ipFilter = function (req, res, next) { + const ipAddress = requestIp.getClientIp(req); + + if (ALLOWED_ADDRESSES.length === 0 && ALLOWED_SUBNETS.length === 0) { + return next(); + } + + if (IpIsAllowed(ipAddress)) { + return next(); + } else { + console.log(`IP ${ipAddress} is not allowed`); + res.status(404).send(null); + } +}; \ No newline at end of file diff --git a/addon/lib/landingTemplate.js b/src/node/addon/lib/landingTemplate.js similarity index 97% rename from addon/lib/landingTemplate.js rename to src/node/addon/lib/landingTemplate.js index ba98f9f..26f1c76 100644 --- a/addon/lib/landingTemplate.js +++ b/src/node/addon/lib/landingTemplate.js @@ -189,7 +189,6 @@ import { SortOptions } from './sort.js'; import { LanguageOptions } from './languages.js'; import { DebridOptions } from '../moch/options.js'; import { MochOptions } from '../moch/moch.js'; -import { PreConfigurations } from './configuration.js'; export default function landingTemplate(manifest, config = {}) { const providers = config[Providers.key] || Providers.options.map(provider => provider.key); @@ -232,10 +231,7 @@ export default function landingTemplate(manifest, config = {}) { .join('\n'); const stylizedTypes = manifest.types .map(t => t[0].toUpperCase() + t.slice(1) + (t !== 'series' ? 's' : '')); - const preConfigurationObject = Object.entries(PreConfigurations) - .map(([key, config]) => `${key}: '${config.serialized}'`) - .join(','); - + return ` @@ -459,9 +455,6 @@ export default function landingTemplate(manifest, config = {}) { const offcloud = offcloudValue.length && offcloudValue.trim(); const putio = putioClientIdValue.length && putioTokenValue.length && putioClientIdValue.trim() + '@' + putioTokenValue.trim(); - const preConfigurations = { - ${preConfigurationObject} - }; let configurationValue = [ ['${Providers.key}', providers], ['${SortOptions.key}', sort], @@ -477,12 +470,10 @@ export default function landingTemplate(manifest, config = {}) { ['${MochOptions.offcloud.key}', offcloud], ['${MochOptions.putio.key}', putio] ].filter(([_, value]) => value.length).map(([key, value]) => key + '=' + value).join('|'); - configurationValue = Object.entries(preConfigurations) - .filter(([key, value]) => value === configurationValue) - .map(([key, value]) => key)[0] || configurationValue; const configuration = configurationValue && configurationValue.length ? '/' + configurationValue : ''; const location = window.location.host + configuration + '/manifest.json' installLink.href = 'stremio://' + location; + console.log("Install link: " + installLink.href.replace('stremio://', 'https://')); } installLink.addEventListener('click', function() { diff --git a/addon/lib/languages.js b/src/node/addon/lib/languages.js similarity index 100% rename from addon/lib/languages.js rename to src/node/addon/lib/languages.js diff --git a/addon/lib/magnetHelper.js b/src/node/addon/lib/magnetHelper.js similarity index 98% rename from addon/lib/magnetHelper.js rename to src/node/addon/lib/magnetHelper.js index 8ce6063..790e3a0 100644 --- a/addon/lib/magnetHelper.js +++ b/src/node/addon/lib/magnetHelper.js @@ -73,7 +73,6 @@ export async function initBestTrackers() { BEST_TRACKERS = await getBestTrackers(); ALL_ANIME_TRACKERS = unique(BEST_TRACKERS.concat(DEFAULT_TRACKERS).concat(ANIME_TRACKERS)); ALL_RUSSIAN_TRACKERS = unique(BEST_TRACKERS.concat(DEFAULT_TRACKERS).concat(RUSSIAN_TRACKERS)); - console.log('Retrieved best trackers: ', BEST_TRACKERS); } async function getBestTrackers(retry = 2) { diff --git a/addon/lib/manifest.js b/src/node/addon/lib/manifest.js similarity index 53% rename from addon/lib/manifest.js rename to src/node/addon/lib/manifest.js index 0f5077a..00dd4cf 100644 --- a/addon/lib/manifest.js +++ b/src/node/addon/lib/manifest.js @@ -1,30 +1,23 @@ import { MochOptions } from '../moch/moch.js'; -import { Providers } from './filter.js'; import { showDebridCatalog } from '../moch/options.js'; -import { getManifestOverride } from './configuration.js'; import { Type } from './types.js'; -const DefaultProviders = Providers.options.map(provider => provider.key); const CatalogMochs = Object.values(MochOptions).filter(moch => moch.catalog); export function manifest(config = {}) { - const overrideManifest = getManifestOverride(config); - const baseManifest = { - id: 'com.stremio.torrentio-sh.addon', - version: '0.0.14', - name: getName(overrideManifest, config), + return { + id: 'com.stremio.selfhostio.selfhostio', + version: '0.0.1', + name: getName(config), description: getDescription(config), catalogs: getCatalogs(config), resources: getResources(config), types: [Type.MOVIE, Type.SERIES, Type.ANIME, Type.OTHER], - background: `https://images6.alphacoders.com/134/1344105.png`, - logo: `https://i.ibb.co/w4BnkC9/GwxAcDV.png`, behaviorHints: { configurable: true, - configurationRequired: false + configurationRequired: false, } }; - return Object.assign(baseManifest, overrideManifest); } export function dummyManifest() { @@ -34,8 +27,8 @@ export function dummyManifest() { return manifestDefault; } -function getName(manifest, config) { - const rootName = manifest?.name || 'Torrentio-sh'; +function getName(config) { + const rootName = 'selfhostio'; const mochSuffix = Object.values(MochOptions) .filter(moch => config[moch.key]) .map(moch => moch.shortName) @@ -44,26 +37,14 @@ function getName(manifest, config) { } function getDescription(config) { - const providersList = config[Providers.key] || DefaultProviders; - const enabledProvidersDesc = Providers.options - .map(provider => `${provider.label}${providersList.includes(provider.key) ? '(+)' : '(-)'}`) - .join(', ') - const enabledMochs = Object.values(MochOptions) - .filter(moch => config[moch.key]) - .map(moch => moch.name) - .join(' & '); - const possibleMochs = Object.values(MochOptions).map(moch => moch.name).join('/') - const mochsDesc = enabledMochs ? ` and ${enabledMochs} enabled` : ''; - return 'Provides torrent streams from scraped torrent providers.' - + ` Currently supports ${enabledProvidersDesc}${mochsDesc}.` - + ` To configure providers, ${possibleMochs} support and other settings visit https://torrentio.strem.fun` + return 'Selfhostio the Torrentio brings you much Funio'; } function getCatalogs(config) { return CatalogMochs .filter(moch => showDebridCatalog(config) && config[moch.key]) .map(moch => ({ - id: `torrentio-${moch.key}`, + id: `selfhostio-${moch.key}`, name: `${moch.name}`, type: 'other', extra: [{ name: 'skip' }], diff --git a/addon/lib/promises.js b/src/node/addon/lib/promises.js similarity index 100% rename from addon/lib/promises.js rename to src/node/addon/lib/promises.js diff --git a/addon/lib/repository.js b/src/node/addon/lib/repository.js similarity index 91% rename from addon/lib/repository.js rename to src/node/addon/lib/repository.js index e1a6121..af82240 100644 --- a/addon/lib/repository.js +++ b/src/node/addon/lib/repository.js @@ -1,9 +1,9 @@ import { Sequelize } from 'sequelize'; const Op = Sequelize.Op; -const DATABASE_URI = process.env.DATABASE_URI; +const DATABASE_URI = process.env.DATABASE_URI || 'postgres://postgres:postgres@localhost:5432/postgres'; -const database = new Sequelize(DATABASE_URI, { logging: false, pool: { max: 30, min: 5, idle: 20 * 60 * 1000 } }); +const database = new Sequelize(DATABASE_URI, { logging: false }); const Torrent = database.define('torrent', { @@ -83,7 +83,7 @@ export function getImdbIdMovieEntries(imdbId) { include: [Torrent], limit: 500, order: [ - [Torrent, 'seeders', 'DESC'] + [Torrent, 'size', 'DESC'] ] }); } @@ -98,7 +98,7 @@ export function getImdbIdSeriesEntries(imdbId, season, episode) { include: [Torrent], limit: 500, order: [ - [Torrent, 'seeders', 'DESC'] + [Torrent, 'size', 'DESC'] ] }); } @@ -111,7 +111,7 @@ export function getKitsuIdMovieEntries(kitsuId) { include: [Torrent], limit: 500, order: [ - [Torrent, 'seeders', 'DESC'] + [Torrent, 'size', 'DESC'] ] }); } @@ -125,7 +125,7 @@ export function getKitsuIdSeriesEntries(kitsuId, episode) { include: [Torrent], limit: 500, order: [ - [Torrent, 'seeders', 'DESC'] + [Torrent, 'size', 'DESC'] ] }); } diff --git a/addon/lib/requestHelper.js b/src/node/addon/lib/requestHelper.js similarity index 100% rename from addon/lib/requestHelper.js rename to src/node/addon/lib/requestHelper.js diff --git a/src/node/addon/lib/sort.js b/src/node/addon/lib/sort.js new file mode 100644 index 0000000..7f12bd7 --- /dev/null +++ b/src/node/addon/lib/sort.js @@ -0,0 +1,50 @@ +import { containsLanguage, LanguageOptions } from './languages.js'; +import { extractSize } from './titleHelper.js'; + +export const SortOptions = { + key: 'sort', + options: { + qualitySeeders: { + key: 'quality', + description: 'By quality then seeders' + }, + qualitySize: { + key: 'qualitysize', + description: 'By quality then size' + }, + seeders: { + key: 'seeders', + description: 'By seeders' + }, + size: { + key: 'size', + description: 'By size' + }, + } +} + +export default function sortStreams(streams, config) { + const languages = config[LanguageOptions.key]; + if (languages?.length && languages[0] !== 'english') { + // No need to filter english since it's hard to predict which entries are english + const streamsWithLanguage = streams.filter(stream => containsLanguage(stream, languages)); + const streamsNoLanguage = streams.filter(stream => !streamsWithLanguage.includes(stream)); + return _sortStreams(streamsWithLanguage, config).concat(_sortStreams(streamsNoLanguage, config)); + } + return _sortStreams(streams, config); +} + +function _sortStreams(streams, config) { + const limit = /^[1-9][0-9]*$/.test(config.limit) && parseInt(config.limit) || undefined; + + return sortBySize(streams, limit); +} + +function sortBySize(streams, limit) { + return streams + .sort((a, b) => { + const aSize = extractSize(a.title); + const bSize = extractSize(b.title); + return bSize - aSize; + }).slice(0, limit); +} diff --git a/addon/lib/streamInfo.js b/src/node/addon/lib/streamInfo.js similarity index 94% rename from addon/lib/streamInfo.js rename to src/node/addon/lib/streamInfo.js index 61c31e2..b06f7e9 100644 --- a/addon/lib/streamInfo.js +++ b/src/node/addon/lib/streamInfo.js @@ -4,7 +4,7 @@ import { mapLanguages } from './languages.js'; import { enrichStreamSources, getSources } from './magnetHelper.js'; import { getSubtitles } from './subtitles.js'; -const ADDON_NAME = 'Torrentio-sh'; +const ADDON_NAME = 'selfhostio'; const SIZE_DELTA = 0.02; const UNKNOWN_SIZE = 300000000; const CAM_SOURCES = ['CAM', 'TeleSync', 'TeleCine', 'SCR']; @@ -22,9 +22,7 @@ export function toStreamInfo(record) { joinDetailParts([record.torrent.title.replace(/[, ]+/g, ' ')]), joinDetailParts([!sameInfo && record.title || undefined]), joinDetailParts([ - joinDetailParts([record.torrent.seeders], '👤 '), - joinDetailParts([formatSize(record.size)], '💾 '), - joinDetailParts([record.torrent.provider], '⚙️ ') + joinDetailParts([formatSize(record.size)], '💾 ') ]), joinDetailParts(getLanguages(record, torrentInfo, fileInfo), '', ' / '), ], @@ -40,7 +38,7 @@ export function toStreamInfo(record) { '\n' ); const bingeGroupParts = getBingeGroupParts(record, sameInfo, quality, torrentInfo, fileInfo); - const bingeGroup = joinDetailParts(bingeGroupParts, "torrentio|", "|") + const bingeGroup = joinDetailParts(bingeGroupParts, "selfhostio|", "|") const behaviorHints = bingeGroup ? { bingeGroup } : undefined; return cleanOutputObject({ diff --git a/addon/lib/subtitles.js b/src/node/addon/lib/subtitles.js similarity index 100% rename from addon/lib/subtitles.js rename to src/node/addon/lib/subtitles.js diff --git a/addon/lib/titleHelper.js b/src/node/addon/lib/titleHelper.js similarity index 100% rename from addon/lib/titleHelper.js rename to src/node/addon/lib/titleHelper.js diff --git a/addon/lib/types.js b/src/node/addon/lib/types.js similarity index 100% rename from addon/lib/types.js rename to src/node/addon/lib/types.js diff --git a/addon/moch/alldebrid.js b/src/node/addon/moch/alldebrid.js similarity index 99% rename from addon/moch/alldebrid.js rename to src/node/addon/moch/alldebrid.js index af217e4..693591b 100644 --- a/addon/moch/alldebrid.js +++ b/src/node/addon/moch/alldebrid.js @@ -6,7 +6,7 @@ import { getMagnetLink } from '../lib/magnetHelper.js'; import { BadTokenError, AccessDeniedError, sameFilename } from './mochHelper.js'; const KEY = 'alldebrid'; -const AGENT = 'torrentio'; +const AGENT = 'selfhostio'; export async function getCachedStreams(streams, apiKey) { const options = await getDefaultOptions(); diff --git a/addon/moch/debridlink.js b/src/node/addon/moch/debridlink.js similarity index 100% rename from addon/moch/debridlink.js rename to src/node/addon/moch/debridlink.js diff --git a/addon/moch/moch.js b/src/node/addon/moch/moch.js similarity index 93% rename from addon/moch/moch.js rename to src/node/addon/moch/moch.js index 82376bf..ada8c38 100644 --- a/addon/moch/moch.js +++ b/src/node/addon/moch/moch.js @@ -10,7 +10,6 @@ import StaticResponse, { isStaticUrl } from './static.js'; import { cacheWrapResolvedUrl } from '../lib/cache.js'; import { timeout } from '../lib/promises.js'; import { BadTokenError, streamFilename, AccessDeniedError, enrichMeta } from './mochHelper.js'; -import { createNamedQueue } from "../lib/namedQueue.js"; const RESOLVE_TIMEOUT = 2 * 60 * 1000; // 2 minutes const MIN_API_KEY_SYMBOLS = 15; @@ -63,7 +62,9 @@ export const MochOptions = { const unrestrictQueues = {} Object.values(MochOptions) .map(moch => moch.key) - .forEach(mochKey => unrestrictQueues[mochKey] = createNamedQueue(50)); + .forEach(mochKey => unrestrictQueues[mochKey] = new namedQueue((task, callback) => task.method() + .then(result => callback(false, result)) + .catch((error => callback(error))), 200)); export function hasMochConfigured(config) { return Object.keys(MochOptions).find(moch => config?.[moch]) @@ -109,7 +110,10 @@ export async function resolve(parameters) { return StaticResponse.FAILED_UNEXPECTED; }) .then(url => isStaticUrl(url) ? `${parameters.host}/${url}` : url); - return unrestrictQueues[moch.key].wrap(id, method); + const unrestrictQueue = unrestrictQueues[moch.key]; + return new Promise(((resolve, reject) => { + unrestrictQueue.push({ id, method }, (error, result) => result ? resolve(result) : reject(error)); + })); } export async function getMochCatalog(mochKey, config) { @@ -220,14 +224,14 @@ function blackListToken(token, mochKey) { function errorStreamResponse(mochKey, error, config) { if (error === BadTokenError) { return { - name: `Torrentio\n${MochOptions[mochKey].shortName} error`, + name: `Selfhostio\n${MochOptions[mochKey].shortName} error`, title: `Invalid ${MochOptions[mochKey].name} ApiKey/Token!`, url: `${config.host}/${StaticResponse.FAILED_ACCESS}` }; } if (error === AccessDeniedError) { return { - name: `Torrentio\n${MochOptions[mochKey].shortName} error`, + name: `Selfhostio\n${MochOptions[mochKey].shortName} error`, title: `Expired/invalid ${MochOptions[mochKey].name} subscription!`, url: `${config.host}/${StaticResponse.FAILED_ACCESS}` }; diff --git a/addon/moch/mochHelper.js b/src/node/addon/moch/mochHelper.js similarity index 100% rename from addon/moch/mochHelper.js rename to src/node/addon/moch/mochHelper.js diff --git a/addon/moch/offcloud.js b/src/node/addon/moch/offcloud.js similarity index 100% rename from addon/moch/offcloud.js rename to src/node/addon/moch/offcloud.js diff --git a/addon/moch/options.js b/src/node/addon/moch/options.js similarity index 100% rename from addon/moch/options.js rename to src/node/addon/moch/options.js diff --git a/addon/moch/premiumize.js b/src/node/addon/moch/premiumize.js similarity index 100% rename from addon/moch/premiumize.js rename to src/node/addon/moch/premiumize.js diff --git a/addon/moch/putio.js b/src/node/addon/moch/putio.js similarity index 100% rename from addon/moch/putio.js rename to src/node/addon/moch/putio.js diff --git a/addon/moch/realdebrid.js b/src/node/addon/moch/realdebrid.js similarity index 99% rename from addon/moch/realdebrid.js rename to src/node/addon/moch/realdebrid.js index 54ea857..6aaa7a3 100644 --- a/addon/moch/realdebrid.js +++ b/src/node/addon/moch/realdebrid.js @@ -395,5 +395,5 @@ function infringingFile(error) { } async function getDefaultOptions(ip) { - return { ip, timeout: 15000 }; + return { ip, timeout: 10000 }; } diff --git a/addon/moch/static.js b/src/node/addon/moch/static.js similarity index 100% rename from addon/moch/static.js rename to src/node/addon/moch/static.js diff --git a/addon/package-lock.json b/src/node/addon/package-lock.json similarity index 98% rename from addon/package-lock.json rename to src/node/addon/package-lock.json index 5d7445c..82f7fc0 100644 --- a/addon/package-lock.json +++ b/src/node/addon/package-lock.json @@ -1,11 +1,11 @@ { - "name": "stremio-torrentio", + "name": "stremio-selfhostio", "version": "1.0.14", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "stremio-torrentio", + "name": "stremio-selfhostio", "version": "1.0.14", "license": "MIT", "dependencies": { @@ -18,11 +18,12 @@ "cors": "^2.8.5", "debrid-link-api": "^1.0.1", "express-rate-limit": "^6.7.0", + "ip": "^1.1.8", + "ip6": "^0.2.10", "magnet-uri": "^6.2.0", "name-to-imdb": "^3.0.4", "named-queue": "^2.2.1", "offcloud-api": "^1.0.2", - "p-limit": "^5.0.0", "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", "pg": "^8.11.3", "pg-hstore": "^2.3.4", @@ -1020,6 +1021,19 @@ "node": ">=6.0.0" } }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/ip6": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/ip6/-/ip6-0.2.10.tgz", + "integrity": "sha512-1LdpyKjhvepd6EbAU6rW4g14vuYtx5TnJX9TfZZBhsM6DsyPQLNzW12rtbUqXBMwqFrLVV/Gcxv0GNFvJp2cYA==", + "bin": { + "ip6": "ip6-cli.js" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -1317,12 +1331,7 @@ "node-fetch": "^2.2.0" } }, - "node_modules/named-queue": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/named-queue/-/named-queue-2.2.1.tgz", - "integrity": "sha1-GBRURVNZnVqeQD0N+pN6TODR5qc=" - }, - "node_modules/needle": { + "node_modules/name-to-imdb/node_modules/needle": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", "integrity": "sha512-ogVK1D/Cgemw2vM1KJN6B83DwcKbDepdkMNtVJcXIe+xoaCOdC+aJHzhEov7xjsY9S7rBIuHP59W1fLsbGqDhA==", @@ -1337,6 +1346,11 @@ "node": ">= 0.10.x" } }, + "node_modules/named-queue": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/named-queue/-/named-queue-2.2.1.tgz", + "integrity": "sha1-GBRURVNZnVqeQD0N+pN6TODR5qc=" + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1453,20 +1467,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", @@ -2563,17 +2563,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/addon/package.json b/src/node/addon/package.json similarity index 89% rename from addon/package.json rename to src/node/addon/package.json index ef95f2e..7f68b2c 100644 --- a/addon/package.json +++ b/src/node/addon/package.json @@ -1,12 +1,11 @@ { - "name": "stremio-torrentio", - "version": "1.0.14", + "name": "selfhostio-selfhostio", + "version": "1.0.0", "exports": "./index.js", "type": "module", "scripts": { "start": "node index.js" }, - "author": "TheBeastLT ", "license": "MIT", "dependencies": { "@putdotio/api-client": "^8.42.0", @@ -18,11 +17,11 @@ "cors": "^2.8.5", "debrid-link-api": "^1.0.1", "express-rate-limit": "^6.7.0", + "ip": "^1.1.8", "magnet-uri": "^6.2.0", "name-to-imdb": "^3.0.4", "named-queue": "^2.2.1", "offcloud-api": "^1.0.2", - "p-limit": "^5.0.0", "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", "pg": "^8.11.3", "pg-hstore": "^2.3.4", diff --git a/addon/serverless.js b/src/node/addon/serverless.js similarity index 92% rename from addon/serverless.js rename to src/node/addon/serverless.js index 7455a21..6ca961a 100644 --- a/addon/serverless.js +++ b/src/node/addon/serverless.js @@ -6,14 +6,14 @@ import userAgentParser from 'ua-parser-js'; import addonInterface from './addon.js'; import qs from 'querystring'; import { manifest } from './lib/manifest.js'; -import { parseConfiguration, PreConfigurations } from './lib/configuration.js'; +import { parseConfiguration } from './lib/configuration.js'; import landingTemplate from './lib/landingTemplate.js'; import * as moch from './moch/moch.js'; const router = new Router(); const limiter = rateLimit({ windowMs: 60 * 60 * 1000, // 1 hour - max: 300, // limit each IP to 300 requests per windowMs + max: 3000000, // limit each IP to 300 requests per windowMs headers: false, keyGenerator: (req) => requestIp.getClientIp(req) }) @@ -24,11 +24,6 @@ router.get('/', (_, res) => { res.end(); }); -router.get(`/:preconfiguration(${Object.keys(PreConfigurations).join('|')})`, (req, res) => { - res.redirect(`/${req.params.preconfiguration}/configure`) - res.end(); -}); - router.get('/:configuration?/configure', (req, res) => { const configValues = parseConfiguration(req.params.configuration || ''); const landingHTML = landingTemplate(manifest(configValues), configValues); diff --git a/addon/static/videos/download_failed_v2.mp4 b/src/node/addon/static/videos/download_failed_v2.mp4 similarity index 100% rename from addon/static/videos/download_failed_v2.mp4 rename to src/node/addon/static/videos/download_failed_v2.mp4 diff --git a/addon/static/videos/downloading_v2.mp4 b/src/node/addon/static/videos/downloading_v2.mp4 similarity index 100% rename from addon/static/videos/downloading_v2.mp4 rename to src/node/addon/static/videos/downloading_v2.mp4 diff --git a/addon/static/videos/failed_access_v2.mp4 b/src/node/addon/static/videos/failed_access_v2.mp4 similarity index 100% rename from addon/static/videos/failed_access_v2.mp4 rename to src/node/addon/static/videos/failed_access_v2.mp4 diff --git a/addon/static/videos/failed_infringement_v2.mp4 b/src/node/addon/static/videos/failed_infringement_v2.mp4 similarity index 100% rename from addon/static/videos/failed_infringement_v2.mp4 rename to src/node/addon/static/videos/failed_infringement_v2.mp4 diff --git a/addon/static/videos/failed_opening_v2.mp4 b/src/node/addon/static/videos/failed_opening_v2.mp4 similarity index 100% rename from addon/static/videos/failed_opening_v2.mp4 rename to src/node/addon/static/videos/failed_opening_v2.mp4 diff --git a/addon/static/videos/failed_rar_v2.mp4 b/src/node/addon/static/videos/failed_rar_v2.mp4 similarity index 100% rename from addon/static/videos/failed_rar_v2.mp4 rename to src/node/addon/static/videos/failed_rar_v2.mp4 diff --git a/addon/static/videos/failed_unexpected_v2.mp4 b/src/node/addon/static/videos/failed_unexpected_v2.mp4 similarity index 100% rename from addon/static/videos/failed_unexpected_v2.mp4 rename to src/node/addon/static/videos/failed_unexpected_v2.mp4 diff --git a/src/node/consumer/.dockerignore b/src/node/consumer/.dockerignore new file mode 100644 index 0000000..886cfa9 --- /dev/null +++ b/src/node/consumer/.dockerignore @@ -0,0 +1,2 @@ +build.sh +node_modules/ \ No newline at end of file diff --git a/src/node/consumer/.eslintrc.yml b/src/node/consumer/.eslintrc.yml new file mode 100644 index 0000000..6898091 --- /dev/null +++ b/src/node/consumer/.eslintrc.yml @@ -0,0 +1,16 @@ +env: + es2021: true + node: true +extends: eslint:recommended +plugins: + - import +rules: + import/no-unresolved: 2 + import/no-commonjs: 2 + import/extensions: + - 2 + - ignorePackages +parserOptions: + ecmaVersion: latest + sourceType: module + \ No newline at end of file diff --git a/src/node/consumer/Dockerfile b/src/node/consumer/Dockerfile new file mode 100644 index 0000000..d28e610 --- /dev/null +++ b/src/node/consumer/Dockerfile @@ -0,0 +1,18 @@ +FROM node:lts-buster-slim + +# RUN apk update && apk upgrade && \ +# apk add --no-cache git curl + +RUN apt-get update && \ + apt-get install -y curl git && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /home/node/app + +COPY package*.json ./ +RUN npm ci --only-production +COPY . . +RUN chmod a+x ./check-ip.sh + +CMD [ "node", "--no-warnings=ExperimentalWarning", "index.js" ] \ No newline at end of file diff --git a/src/node/consumer/check-ip.sh b/src/node/consumer/check-ip.sh new file mode 100644 index 0000000..9af1414 --- /dev/null +++ b/src/node/consumer/check-ip.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +CURRENT_IP="$(curl -s http://whatismyip.akamai.com)" +clear +echo "Current IP: $CURRENT_IP" diff --git a/src/node/consumer/index.js b/src/node/consumer/index.js new file mode 100644 index 0000000..49cf520 --- /dev/null +++ b/src/node/consumer/index.js @@ -0,0 +1,11 @@ +import { getTrackers } from "./lib/trackerService.js"; +import { connect } from './lib/repository.js'; +import { listenToQueue } from './jobs/processTorrents.js'; +import { jobConfig } from "./lib/config.js"; + +await getTrackers(); +await connect(); + +if (jobConfig.JOBS_ENABLED) { + await listenToQueue(); +} \ No newline at end of file diff --git a/src/node/consumer/jobs/processTorrents.js b/src/node/consumer/jobs/processTorrents.js new file mode 100644 index 0000000..1e81973 --- /dev/null +++ b/src/node/consumer/jobs/processTorrents.js @@ -0,0 +1,34 @@ +import { rabbitConfig, jobConfig } from '../lib/config.js' +import { processTorrentRecord } from "../lib/ingestedTorrent.js"; +import amqp from 'amqplib' +import Promise from 'bluebird' + +const assertQueueOptions = { durable: true } +const consumeQueueOptions = { noAck: false } + +const processMessage = msg => + Promise.resolve(getMessageAsJson(msg)) + .then(torrent => processTorrentRecord(torrent)) + .then(() => Promise.resolve(msg)); + +const getMessageAsJson = msg => { + const torrent = JSON.parse(msg.content.toString()); + return Promise.resolve(torrent.message); +} + +const assertAndConsumeQueue = channel => { + console.log('Worker is running! Waiting for new torrents...') + + const ackMsg = msg => Promise.resolve(msg) + .then(msg => processMessage(msg)) + .then(msg => channel.ack(msg)) + .catch(error => console.error('Failed processing torrent', error)); + + return channel.assertQueue(rabbitConfig.QUEUE_NAME, assertQueueOptions) + .then(() => channel.prefetch(jobConfig.JOB_CONCURRENCY)) + .then(() => channel.consume(rabbitConfig.QUEUE_NAME, ackMsg, consumeQueueOptions)) +} + +export const listenToQueue = () => amqp.connect(rabbitConfig.URI) + .then(connection => connection.createChannel()) + .then(channel => assertAndConsumeQueue(channel)) \ No newline at end of file diff --git a/src/node/consumer/lib/cache.js b/src/node/consumer/lib/cache.js new file mode 100644 index 0000000..6c32394 --- /dev/null +++ b/src/node/consumer/lib/cache.js @@ -0,0 +1,72 @@ +import { cacheConfig } from './config.js'; +import cacheManager from 'cache-manager'; +import mangodbStore from 'cache-manager-mongodb'; + +const GLOBAL_KEY_PREFIX = 'selfhostio-consumer'; +const IMDB_ID_PREFIX = `${GLOBAL_KEY_PREFIX}|imdb_id`; +const KITSU_ID_PREFIX = `${GLOBAL_KEY_PREFIX}|kitsu_id`; +const METADATA_PREFIX = `${GLOBAL_KEY_PREFIX}|metadata`; +const TRACKERS_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|trackers`; + +const GLOBAL_TTL = process.env.METADATA_TTL || 7 * 24 * 60 * 60; // 7 days +const MEMORY_TTL = process.env.METADATA_TTL || 2 * 60 * 60; // 2 hours +const TRACKERS_TTL = 2 * 24 * 60 * 60; // 2 days + +const memoryCache = initiateMemoryCache(); +const remoteCache = initiateRemoteCache(); + +function initiateRemoteCache() { + if (cacheConfig.NO_CACHE) { + return null; + } else if (cacheConfig.MONGO_URI) { + return cacheManager.caching({ + store: mangodbStore, + uri: cacheConfig.MONGO_URI, + options: { + collection: cacheConfig.COLLECTION_NAME, + socketTimeoutMS: 120000, + useNewUrlParser: true, + useUnifiedTopology: false, + ttl: GLOBAL_TTL + }, + ttl: GLOBAL_TTL, + ignoreCacheErrors: true + }); + } else { + return cacheManager.caching({ + store: 'memory', + ttl: MEMORY_TTL + }); + } +} + +function initiateMemoryCache() { + return cacheManager.caching({ + store: 'memory', + ttl: MEMORY_TTL, + max: Infinity // infinite LRU cache size + }); +} + +function cacheWrap(cache, key, method, options) { + if (cacheConfig.NO_CACHE || !cache) { + return method(); + } + return cache.wrap(key, method, options); +} + +export function cacheWrapImdbId(key, method) { + return cacheWrap(remoteCache, `${IMDB_ID_PREFIX}:${key}`, method, { ttl: GLOBAL_TTL }); +} + +export function cacheWrapKitsuId(key, method) { + return cacheWrap(remoteCache, `${KITSU_ID_PREFIX}:${key}`, method, { ttl: GLOBAL_TTL }); +} + +export function cacheWrapMetadata(id, method) { + return cacheWrap(memoryCache, `${METADATA_PREFIX}:${id}`, method, { ttl: MEMORY_TTL }); +} + +export function cacheTrackers(method) { + return cacheWrap(memoryCache, `${TRACKERS_KEY_PREFIX}`, method, { ttl: TRACKERS_TTL }); +} \ No newline at end of file diff --git a/src/node/consumer/lib/config.js b/src/node/consumer/lib/config.js new file mode 100644 index 0000000..ecd7d54 --- /dev/null +++ b/src/node/consumer/lib/config.js @@ -0,0 +1,45 @@ +export const rabbitConfig = { + URI: process.env.RABBIT_URI || 'amqp://localhost', + QUEUE_NAME: process.env.QUEUE_NAME || 'test-queue' +} + +export const cacheConfig = { + MONGO_URI: process.env.MONGODB_URI || 'mongodb://mongo:mongo@localhost:27017/selfhostio?authSource=admin', + NO_CACHE: parseBool(process.env.NO_CACHE, false), + COLLECTION_NAME: process.env.MONGODB_COLLECTION || 'selfhostio_consumer_collection' +} + +export const databaseConfig = { + DATABASE_URI: process.env.POSTGRES_DATABASE_URI || 'postgres://postgres:postgres@localhost:5432/selfhostio', + ENABLE_SYNC: parseBool(process.env.ENABLE_SYNC, true) +} + +export const jobConfig = { + JOB_CONCURRENCY: parseInt(process.env.JOB_CONCURRENCY || 1), + JOBS_ENABLED: parseBool(process.env.JOBS_ENABLED || true) +} + +export const metadataConfig = { + IMDB_CONCURRENT: parseInt(process.env.IMDB_CONCURRENT || 1), + IMDB_INTERVAL_MS: parseInt(process.env.IMDB_INTERVAL_MS || 1000), +} + +export const trackerConfig = { + TRACKERS_URL: process.env.TRACKERS_URL || 'https://ngosang.github.io/trackerslist/trackers_all.txt', + UDP_ENABLED: parseBool(process.env.UDP_TRACKERS_ENABLED || false), +} + +export const torrentConfig = { + MAX_CONNECTIONS_PER_TORRENT: parseInt(process.env.MAX_SINGLE_TORRENT_CONNECTIONS || 20), + TIMEOUT: parseInt(process.env.TORRENT_TIMEOUT || 30000), +} + +function parseBool(boolString, defaultValue) { + const isString = typeof boolString === 'string' || boolString instanceof String; + + if (!isString) { + return defaultValue; + } + + return boolString.toLowerCase() === 'true' ? true : defaultValue; +} \ No newline at end of file diff --git a/scraper/lib/extension.js b/src/node/consumer/lib/extension.js similarity index 80% rename from scraper/lib/extension.js rename to src/node/consumer/lib/extension.js index a38787b..6c11617 100644 --- a/scraper/lib/extension.js +++ b/src/node/consumer/lib/extension.js @@ -44,21 +44,19 @@ const DISK_EXTENSIONS = [ "vob" ] -function isVideo(filename) { +export function isVideo(filename) { return isExtension(filename, VIDEO_EXTENSIONS); } -function isSubtitle(filename) { +export function isSubtitle(filename) { return isExtension(filename, SUBTITLE_EXTENSIONS); } -function isDisk(filename) { +export function isDisk(filename) { return isExtension(filename, DISK_EXTENSIONS); } -function isExtension(filename, extensions) { +export function isExtension(filename, extensions) { const extensionMatch = filename.match(/\.(\w{2,4})$/); return extensionMatch && extensions.includes(extensionMatch[1].toLowerCase()); -} - -module.exports = { isVideo, isSubtitle, isDisk } \ No newline at end of file +} \ No newline at end of file diff --git a/src/node/consumer/lib/ingestedTorrent.js b/src/node/consumer/lib/ingestedTorrent.js new file mode 100644 index 0000000..2d2b767 --- /dev/null +++ b/src/node/consumer/lib/ingestedTorrent.js @@ -0,0 +1,45 @@ +import { Type } from './types.js'; +import { createTorrentEntry, checkAndUpdateTorrent } from './torrentEntries.js'; +import {getTrackers} from "./trackerService.js"; + +export async function processTorrentRecord(torrent) { + const category = torrent.category; + const type = category === 'tv' ? Type.SERIES : Type.MOVIE; + const torrentInfo = await parseTorrent(torrent, type); + console.log(`Processing torrent ${torrentInfo.title} with infoHash ${torrentInfo.infoHash}`) + + if (await checkAndUpdateTorrent(torrentInfo)) { + return torrentInfo; + } + + return createTorrentEntry(torrentInfo); +} + +async function assignTorrentTrackers() { + const trackers = await getTrackers(); + return trackers.join(','); +} + +async function parseTorrent(torrent, category) { + const infoHash = torrent.infoHash?.trim().toLowerCase() + return { + title: torrent.name, + torrentId: `${torrent.name}_${infoHash}`, + infoHash: infoHash, + seeders: 100, + size: torrent.size, + uploadDate: torrent.createdAt, + imdbId: parseImdbId(torrent), + type: category, + provider: torrent.source, + trackers: await assignTorrentTrackers(), + } +} + +function parseImdbId(torrent) { + if (torrent.imdb === undefined || torrent.imdb === null) { + return undefined; + } + + return torrent.imdb; +} \ No newline at end of file diff --git a/scraper/lib/metadata.js b/src/node/consumer/lib/metadata.js similarity index 66% rename from scraper/lib/metadata.js rename to src/node/consumer/lib/metadata.js index 25f4f29..832e5f3 100644 --- a/scraper/lib/metadata.js +++ b/src/node/consumer/lib/metadata.js @@ -1,19 +1,14 @@ -const axios = require('axios'); -const nameToImdb = require('name-to-imdb'); -const googleSr = require('google-sr'); -const he = require('he'); -const { cacheWrapImdbId, cacheWrapKitsuId, cacheWrapMetadata } = require('./cache'); -const { Type } = require('./types'); +import axios from 'axios'; +import nameToImdb from 'name-to-imdb'; +import { search } from 'google-sr'; +import { cacheWrapImdbId, cacheWrapKitsuId, cacheWrapMetadata } from './cache.js'; +import { Type } from './types.js'; const CINEMETA_URL = 'https://v3-cinemeta.strem.io'; const KITSU_URL = 'https://anime-kitsu.strem.fun'; const TIMEOUT = 20000; -const selectors = { - ...googleSr.defaultSelectors, - LinkSelector: 'a:has(h3)' -} -function getMetadata(id, type = Type.SERIES) { +export function getMetadata(id, type = Type.SERIES) { if (!id) { return Promise.reject("no valid id provided"); } @@ -80,7 +75,7 @@ function _requestMetadata(url) { }); } -function escapeTitle(title) { +export function escapeTitle(title) { return title.toLowerCase() .normalize('NFKD') // normalize non-ASCII characters .replace(/[\u0300-\u036F]/g, '') @@ -92,37 +87,56 @@ function escapeTitle(title) { .trim(); } -function escapeHTML(title) { - return he.decode(title) - .replace(/&/g, "&"); +export async function getImdbId(info, type) { + const name = escapeTitle(info.title); + const year = info.year || (info.date && info.date.slice(0, 4)); + const key = `${name}_${year || 'NA'}_${type}`; + const query = `${name} ${year || ''} ${type} imdb`; + const fallbackQuery = `${name} ${type} imdb`; + const googleQuery = year ? query : fallbackQuery; + + try { + const imdbId = await cacheWrapImdbId(key, + () => getIMDbIdFromNameToImdb(name, info.year, type) + ); + return imdbId && 'tt' + imdbId.replace(/tt0*([1-9][0-9]*)$/, '$1').padStart(7, '0'); + } catch (error) { + const imdbIdFallback = await getIMDbIdFromGoogle(googleQuery); + return imdbIdFallback && 'tt' + imdbIdFallback.replace(/tt0*([1-9][0-9]*)$/, '$1').padStart(7, '0'); + } } -async function getImdbId(info, type) { - const name = escapeTitle(info.title); - const year = info.year || info.date && info.date.slice(0, 4); - const key = `${name}_${year}_${type}`; - const query = `${name} ${year || ''} ${type} imdb`; - - return cacheWrapImdbId(key, - () => new Promise((resolve, reject) => { - nameToImdb({ name: encodeURIComponent(name), year: info.year, type }, function (err, res) { - if (res) { - resolve(res); - } else { - reject(err || new Error('failed imdbId search')); - } +function getIMDbIdFromNameToImdb(name, year, type) { + return new Promise((resolve, reject) => { + nameToImdb({ name, year, type }, function(err, res) { + if (res) { + resolve(res); + } else { + reject(err || new Error('Failed IMDbId search')); + } }); - }).catch(() => googleSr.search(query, { selectors }) - .then(response => response.length ? response : Promise.reject('No results')) - .then(results => results - .map(result => result.Link) - .find(result => result.includes('imdb.com/title/'))) - .then(result => result && result.match(/imdb\.com\/title\/(tt\d+)/)) - .then(match => match && match[1]))) - .then(imdbId => imdbId && 'tt' + imdbId.replace(/tt0*([1-9][0-9]*)$/, '$1').padStart(7, '0')); + }); } -async function getKitsuId(info) { +async function getIMDbIdFromGoogle(query) { + try { + const searchResults = await search({ query: query }); + for (const result of searchResults) { + if (result.link.includes('imdb.com/title/')) { + const match = result.link.match(/imdb\.com\/title\/(tt\d+)/); + if (match) { + return match[1]; + } + } + } + return undefined; + } + catch (error) { + throw new Error('Failed to find IMDb ID from Google search'); + } +} + +export async function getKitsuId(info) { const title = escapeTitle(info.title.replace(/\s\|\s.*/, '')); const year = info.year ? ` ${info.year}` : ''; const season = info.season > 1 ? ` S${info.season}` : ''; @@ -141,13 +155,11 @@ async function getKitsuId(info) { })); } -async function isEpisodeImdbId(imdbId) { +export async function isEpisodeImdbId(imdbId) { if (!imdbId) { return false; } return axios.get(`https://www.imdb.com/title/${imdbId}/`, { timeout: 10000 }) .then(response => !!(response.data && response.data.includes('video.episode'))) - .catch((err) => false); -} - -module.exports = { getMetadata, getImdbId, getKitsuId, isEpisodeImdbId, escapeHTML, escapeTitle }; + .catch(() => false); +} \ No newline at end of file diff --git a/scraper/lib/parseHelper.js b/src/node/consumer/lib/parseHelper.js similarity index 95% rename from scraper/lib/parseHelper.js rename to src/node/consumer/lib/parseHelper.js index 6304946..bfb9c5d 100644 --- a/scraper/lib/parseHelper.js +++ b/src/node/consumer/lib/parseHelper.js @@ -1,9 +1,9 @@ -const { parse } = require('parse-torrent-title'); -const { Type } = require('./types'); +import { parse } from 'parse-torrent-title'; +import { Type } from './types.js'; const MULTIPLE_FILES_SIZE = 4 * 1024 * 1024 * 1024; // 4 GB -function parseSeriesVideos(torrent, videos) { +export function parseSeriesVideos(torrent, videos) { const parsedTorrentName = parse(torrent.title); const hasMovies = parsedTorrentName.complete || !!torrent.title.match(/movies?(?:\W|$)/i); const parsedVideos = videos.map(video => parseSeriesVideo(video, parsedTorrentName)); @@ -80,7 +80,7 @@ function isMovieVideo(video, otherVideos, type, hasMovies) { && otherVideos.filter(other => other.title === video.title && other.year === video.year) < 3; } -function isPackTorrent(torrent) { +export function isPackTorrent(torrent) { if (torrent.pack) { return true; } @@ -95,6 +95,4 @@ function isPackTorrent(torrent) { (parsedInfo.seasons && !parsedInfo.episodes); const hasSingleEpisode = Number.isInteger(parsedInfo.episode) || (!parsedInfo.episodes && parsedInfo.date); return hasMultipleEpisodes && !hasSingleEpisode; -} - -module.exports = { parseSeriesVideos, isPackTorrent } \ No newline at end of file +} \ No newline at end of file diff --git a/scraper/lib/promises.js b/src/node/consumer/lib/promises.js similarity index 82% rename from scraper/lib/promises.js rename to src/node/consumer/lib/promises.js index 042fedb..33e3dae 100644 --- a/scraper/lib/promises.js +++ b/src/node/consumer/lib/promises.js @@ -1,7 +1,7 @@ /** * Execute promises in sequence one after another. */ -async function sequence(promises) { +export async function sequence(promises) { return promises.reduce((promise, func) => promise.then(result => func().then(Array.prototype.concat.bind(result))), Promise.resolve([])); } @@ -9,7 +9,7 @@ async function sequence(promises) { /** * Return first resolved promise as the result. */ -async function first(promises) { +export async function first(promises) { return Promise.all(promises.map((p) => { // If a request fails, count that as a resolution so it will keep // waiting for other possible successes. If a request succeeds, @@ -29,14 +29,14 @@ async function first(promises) { /** * Delay promise */ -async function delay(duration) { +export async function delay(duration) { return new Promise((resolve) => setTimeout(resolve, duration)); } /** * Timeout promise after a set time in ms */ -async function timeout(timeoutMs, promise, message = 'Timed out') { +export async function timeout(timeoutMs, promise, message = 'Timed out') { return Promise.race([ promise, new Promise(function (resolve, reject) { @@ -50,8 +50,6 @@ async function timeout(timeoutMs, promise, message = 'Timed out') { /** * Return most common value from given array. */ -function mostCommonValue(array) { +export function mostCommonValue(array) { return array.sort((a, b) => array.filter(v => v === a).length - array.filter(v => v === b).length).pop(); -} - -module.exports = { sequence, first, delay, timeout, mostCommonValue }; \ No newline at end of file +} \ No newline at end of file diff --git a/scraper/lib/repository.js b/src/node/consumer/lib/repository.js similarity index 72% rename from scraper/lib/repository.js rename to src/node/consumer/lib/repository.js index 62fb6d6..e2e5ebf 100644 --- a/scraper/lib/repository.js +++ b/src/node/consumer/lib/repository.js @@ -1,11 +1,10 @@ -const moment = require('moment'); -const Promises = require('./promises') -const { Sequelize, Op, DataTypes, fn, col, literal } = require('sequelize'); - -const DATABASE_URI = process.env.DATABASE_URI; +import moment from 'moment'; +import * as Promises from './promises.js'; +import { Sequelize, Op, DataTypes, fn, col, literal } from 'sequelize'; +import { databaseConfig } from './config.js'; const database = new Sequelize( - DATABASE_URI, + databaseConfig.DATABASE_URI, { logging: false } @@ -17,6 +16,44 @@ const Provider = database.define('provider', { lastScrapedId: { type: DataTypes.STRING(128) } }); +const IngestedTorrent = database.define('ingested_torrent', { + id: { type: DataTypes.BIGINT, autoIncrement: true, primaryKey: true }, + name: DataTypes.STRING, + source: DataTypes.STRING, + category: DataTypes.STRING, + info_hash: DataTypes.STRING, + size: DataTypes.STRING, + seeders: DataTypes.INTEGER, + leechers: DataTypes.INTEGER, + imdb: DataTypes.STRING, + processed: { + type: DataTypes.BOOLEAN, + defaultValue: false + }}, + { + indexes: [ + { + unique: true, + fields: ['source', 'info_hash'] + } + ] + }) + +/* eslint-disable no-unused-vars */ +const IngestedPage = database.define('ingested_page', { + id: { type: DataTypes.BIGINT, autoIncrement: true, primaryKey: true }, + url: { type: DataTypes.STRING, allowNull: false }, + }, + { + indexes: [ + { + unique: true, + fields: ['url'] + } + ] + }) +/* eslint-enable no-unused-vars */ + const Torrent = database.define('torrent', { infoHash: { type: DataTypes.STRING(64), primaryKey: true }, @@ -27,7 +64,7 @@ const Torrent = database.define('torrent', type: { type: DataTypes.STRING(16), allowNull: false }, uploadDate: { type: DataTypes.DATE, allowNull: false }, seeders: { type: DataTypes.SMALLINT }, - trackers: { type: DataTypes.STRING(4096) }, + trackers: { type: DataTypes.STRING(8000) }, languages: { type: DataTypes.STRING(4096) }, resolution: { type: DataTypes.STRING(16) }, reviewed: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, @@ -144,8 +181,8 @@ Content.belongsTo(Torrent, { foreignKey: 'infoHash', constraints: false }); File.hasMany(Subtitle, { foreignKey: 'fileId', constraints: false }); Subtitle.belongsTo(File, { foreignKey: 'fileId', constraints: false }); -function connect() { - if (process.env.ENABLE_SYNC) { +export function connect() { + if (databaseConfig.ENABLE_SYNC) { return database.sync({ alter: true }) .catch(error => { console.error('Failed syncing database: ', error); @@ -155,32 +192,52 @@ function connect() { return Promise.resolve(); } -function getProvider(provider) { +export function getProvider(provider) { return Provider.findOrCreate({ where: { name: { [Op.eq]: provider.name } }, defaults: provider }) .then((result) => result[0]) .catch(() => provider); } -function getTorrent(torrent) { +export function getTorrent(torrent) { const where = torrent.infoHash ? { infoHash: torrent.infoHash } : { provider: torrent.provider, torrentId: torrent.torrentId } return Torrent.findOne({ where: where }); } -function getTorrentsBasedOnTitle(titleQuery, type) { +export function getTorrentsBasedOnTitle(titleQuery, type) { return getTorrentsBasedOnQuery({ title: { [Op.regexp]: `${titleQuery}` }, type: type }); } -function getTorrentsBasedOnQuery(where) { +export function getTorrentsBasedOnQuery(where) { return Torrent.findAll({ where: where }); } -function getFilesBasedOnQuery(where) { +export function getFilesBasedOnQuery(where) { return File.findAll({ where: where }); } -function getTorrentsWithoutSize() { +export function getUnprocessedIngestedTorrents() { + return IngestedTorrent.findAll({ + where: { + processed: false, + category: { + [Op.or]: ['tv', 'movies'] + } + }, + + }); +} + +export function setIngestedTorrentsProcessed(ingestedTorrents) { + return Promises.sequence(ingestedTorrents + .map(ingestedTorrent => () => { + ingestedTorrent.processed = true; + return ingestedTorrent.save(); + })); +} + +export function getTorrentsWithoutSize() { return Torrent.findAll({ where: literal( 'exists (select 1 from files where files."infoHash" = torrent."infoHash" and files.size = 300000000)'), @@ -190,10 +247,10 @@ function getTorrentsWithoutSize() { }); } -function getUpdateSeedersTorrents(limit = 50) { +export function getUpdateSeedersTorrents(limit = 50) { const until = moment().subtract(7, 'days').format('YYYY-MM-DD'); return Torrent.findAll({ - where: literal(`torrent."updatedAt" < \'${until}\'`), + where: literal(`torrent."updatedAt" < '${until}'`), limit: limit, order: [ ['seeders', 'DESC'], @@ -202,11 +259,11 @@ function getUpdateSeedersTorrents(limit = 50) { }); } -function getUpdateSeedersNewTorrents(limit = 50) { +export function getUpdateSeedersNewTorrents(limit = 50) { const lastUpdate = moment().subtract(12, 'hours').format('YYYY-MM-DD'); const createdAfter = moment().subtract(4, 'days').format('YYYY-MM-DD'); return Torrent.findAll({ - where: literal(`torrent."updatedAt" < \'${lastUpdate}\' AND torrent."createdAt" > \'${createdAfter}\'`), + where: literal(`torrent."updatedAt" < '${lastUpdate}' AND torrent."createdAt" > '${createdAfter}'`), limit: limit, order: [ ['seeders', 'ASC'], @@ -215,7 +272,7 @@ function getUpdateSeedersNewTorrents(limit = 50) { }); } -function getNoContentsTorrents() { +export function getNoContentsTorrents() { return Torrent.findAll({ where: { opened: false, seeders: { [Op.gte]: 1 } }, limit: 500, @@ -223,13 +280,13 @@ function getNoContentsTorrents() { }); } -function createTorrent(torrent) { +export function createTorrent(torrent) { return Torrent.upsert(torrent) .then(() => createContents(torrent.infoHash, torrent.contents)) .then(() => createSubtitles(torrent.infoHash, torrent.subtitles)); } -function setTorrentSeeders(torrent, seeders) { +export function setTorrentSeeders(torrent, seeders) { const where = torrent.infoHash ? { infoHash: torrent.infoHash } : { provider: torrent.provider, torrentId: torrent.torrentId } @@ -239,11 +296,11 @@ function setTorrentSeeders(torrent, seeders) { ); } -function deleteTorrent(torrent) { +export function deleteTorrent(torrent) { return Torrent.destroy({ where: { infoHash: torrent.infoHash } }) } -function createFile(file) { +export function createFile(file) { if (file.id) { return (file.dataValues ? file.save() : File.upsert(file)) .then(() => upsertSubtitles(file, file.subtitles)); @@ -254,26 +311,26 @@ function createFile(file) { return File.create(file, { include: [Subtitle], ignoreDuplicates: true }); } -function getFiles(torrent) { +export function getFiles(torrent) { return File.findAll({ where: { infoHash: torrent.infoHash } }); } -function getFilesBasedOnTitle(titleQuery) { +export function getFilesBasedOnTitle(titleQuery) { return File.findAll({ where: { title: { [Op.regexp]: `${titleQuery}` } } }); } -function deleteFile(file) { +export function deleteFile(file) { return File.destroy({ where: { id: file.id } }) } -function createSubtitles(infoHash, subtitles) { +export function createSubtitles(infoHash, subtitles) { if (subtitles && subtitles.length) { return Subtitle.bulkCreate(subtitles.map(subtitle => ({ infoHash, title: subtitle.path, ...subtitle }))); } return Promise.resolve(); } -function upsertSubtitles(file, subtitles) { +export function upsertSubtitles(file, subtitles) { if (file.id && subtitles && subtitles.length) { return Promises.sequence(subtitles .map(subtitle => { @@ -287,15 +344,15 @@ function upsertSubtitles(file, subtitles) { return Promise.resolve(); } -function getSubtitles(torrent) { +export function getSubtitles(torrent) { return Subtitle.findAll({ where: { infoHash: torrent.infoHash } }); } -function getUnassignedSubtitles() { +export function getUnassignedSubtitles() { return Subtitle.findAll({ where: { fileId: null } }); } -function createContents(infoHash, contents) { +export function createContents(infoHash, contents) { if (contents && contents.length) { return Content.bulkCreate(contents.map(content => ({ infoHash, ...content })), { ignoreDuplicates: true }) .then(() => Torrent.update({ opened: true }, { where: { infoHash: infoHash }, silent: true })); @@ -303,11 +360,11 @@ function createContents(infoHash, contents) { return Promise.resolve(); } -function getContents(torrent) { +export function getContents(torrent) { return Content.findAll({ where: { infoHash: torrent.infoHash } }); } -function getSkipTorrent(torrent) { +export function getSkipTorrent(torrent) { return SkipTorrent.findByPk(torrent.infoHash) .then((result) => { if (!result) { @@ -317,34 +374,6 @@ function getSkipTorrent(torrent) { }) } -function createSkipTorrent(torrent) { +export function createSkipTorrent(torrent) { return SkipTorrent.upsert({ infoHash: torrent.infoHash }); } - -module.exports = { - connect, - getProvider, - createTorrent, - setTorrentSeeders, - getTorrent, - getTorrentsBasedOnTitle, - getTorrentsBasedOnQuery, - getFilesBasedOnQuery, - deleteTorrent, - getUpdateSeedersTorrents, - getUpdateSeedersNewTorrents, - getNoContentsTorrents, - createFile, - getFiles, - getFilesBasedOnTitle, - deleteFile, - createSubtitles, - upsertSubtitles, - getSubtitles, - getUnassignedSubtitles, - createContents, - getContents, - getSkipTorrent, - createSkipTorrent, - getTorrentsWithoutSize -}; diff --git a/src/node/consumer/lib/torrent.js b/src/node/consumer/lib/torrent.js new file mode 100644 index 0000000..b97d67e --- /dev/null +++ b/src/node/consumer/lib/torrent.js @@ -0,0 +1,82 @@ +import torrentStream from 'torrent-stream'; +import {isSubtitle, isVideo} from './extension.js'; +import { torrentConfig } from './config.js'; +import { decode } from 'magnet-uri'; + +export async function torrentFiles(torrent, timeout) { + return filesFromTorrentStream(torrent, timeout) + .then(files => ({ + contents: files, + videos: filterVideos(files), + subtitles: filterSubtitles(files) + })); +} + +async function filesFromTorrentStream(torrent, timeout) { + return filesAndSizeFromTorrentStream(torrent, timeout).then(result => result.files); +} + +const engineOptions = { + connections: torrentConfig.MAX_CONNECTIONS_PER_TORRENT, + uploads: 0, + verify: false, + dht: false, + tracker: true +} + +function filesAndSizeFromTorrentStream(torrent, timeout = 30000) { + if (!torrent.infoHash) { + return Promise.reject(new Error("no infoHash...")); + } + const magnet = decode.encode({ infoHash: torrent.infoHash, announce: torrent.trackers }); + return new Promise((resolve, rejected) => { + const timeoutId = setTimeout(() => { + engine.destroy(); + rejected(new Error('No available connections for torrent!')); + }, timeout); + + const engine = new torrentStream(magnet, engineOptions); + + engine.ready(() => { + const files = engine.files + .map((file, fileId) => ({ + fileIndex: fileId, + name: file.name, + path: file.path.replace(/^[^/]+\//, ''), + size: file.length + })); + const size = engine.torrent.length; + resolve({ files, size }); + engine.destroy(); + clearTimeout(timeoutId); + }); + }); +} + +function filterVideos(files) { + if (files.length === 1 && !Number.isInteger(files[0].fileIndex)) { + return files; + } + const videos = files.filter(file => isVideo(file.path)); + const maxSize = Math.max(...videos.map(video => video.size)); + const minSampleRatio = videos.length <= 3 ? 3 : 10; + const minAnimeExtraRatio = 5; + const minRedundantRatio = videos.length <= 3 ? 30 : Number.MAX_VALUE; + const isSample = video => video.path.match(/sample|bonus|promo/i) && maxSize / parseInt(video.size) > minSampleRatio; + const isRedundant = video => maxSize / parseInt(video.size) > minRedundantRatio; + const isExtra = video => video.path.match(/extras?\//i); + const isAnimeExtra = video => video.path.match(/(?:\b|_)(?:NC)?(?:ED|OP|PV)(?:v?\d\d?)?(?:\b|_)/i) + && maxSize / parseInt(video.size) > minAnimeExtraRatio; + const isWatermark = video => video.path.match(/^[A-Z-]+(?:\.[A-Z]+)?\.\w{3,4}$/) + && maxSize / parseInt(video.size) > minAnimeExtraRatio + return videos + .filter(video => !isSample(video)) + .filter(video => !isExtra(video)) + .filter(video => !isAnimeExtra(video)) + .filter(video => !isRedundant(video)) + .filter(video => !isWatermark(video)); +} + +function filterSubtitles(files) { + return files.filter(file => isSubtitle(file.path)); +} diff --git a/scraper/lib/torrentEntries.js b/src/node/consumer/lib/torrentEntries.js similarity index 85% rename from scraper/lib/torrentEntries.js rename to src/node/consumer/lib/torrentEntries.js index 70a1d9f..5229d5e 100644 --- a/scraper/lib/torrentEntries.js +++ b/src/node/consumer/lib/torrentEntries.js @@ -1,19 +1,15 @@ -const { parse } = require('parse-torrent-title'); -const { Type } = require('./types'); -const Promises = require('./promises'); -const repository = require('./repository'); -const { getImdbId, getKitsuId } = require('./metadata'); -const { parseTorrentFiles } = require('./torrentFiles'); -const { assignSubtitles } = require('./torrentSubtitles'); -const { isPackTorrent } = require('./parseHelper') +import { parse } from 'parse-torrent-title'; +import { Type } from './types.js'; +import * as Promises from './promises.js'; +import * as repository from './repository.js'; +import { getImdbId, getKitsuId } from './metadata.js'; +import { parseTorrentFiles } from './torrentFiles.js'; +import { assignSubtitles } from './torrentSubtitles.js'; +import { isPackTorrent } from './parseHelper.js'; -async function createTorrentEntry(torrent, overwrite = false) { +export async function createTorrentEntry(torrent, overwrite = false) { const titleInfo = parse(torrent.title); - - if ((titleInfo.seasons || torrent.title.match(/\[\d+-\d+/)) && torrent.type === Type.MOVIE) { - // sometimes series torrent might be put into movies category - torrent.type = Type.SERIES; - } + if (!torrent.imdbId && torrent.type !== Type.ANIME) { torrent.imdbId = await getImdbId(titleInfo, torrent.type) .catch(() => undefined); @@ -83,37 +79,40 @@ async function overwriteExistingFiles(torrent, torrentContents) { return Promise.reject(`No video files found for: ${torrent.title}`); } -async function createSkipTorrentEntry(torrent) { +export async function createSkipTorrentEntry(torrent) { return repository.createSkipTorrent(torrent); } -async function getStoredTorrentEntry(torrent) { +export async function getStoredTorrentEntry(torrent) { return repository.getSkipTorrent(torrent) .catch(() => repository.getTorrent(torrent)) .catch(() => undefined); } -async function checkAndUpdateTorrent(torrent) { +export async function checkAndUpdateTorrent(torrent) { const storedTorrent = torrent.dataValues ? torrent : await repository.getTorrent(torrent).catch(() => undefined); if (!storedTorrent) { return false; } + if (storedTorrent.provider === 'RARBG') { + return true; + } if (storedTorrent.provider === 'KickassTorrents' && torrent.provider) { storedTorrent.provider = torrent.provider; storedTorrent.torrentId = torrent.torrentId; } if (!storedTorrent.languages && torrent.languages && storedTorrent.provider !== 'RARBG') { storedTorrent.languages = torrent.languages; - storedTorrent.save(); + await storedTorrent.save(); console.log(`Updated [${storedTorrent.infoHash}] ${storedTorrent.title} language to ${torrent.languages}`); } return createTorrentContents({ ...storedTorrent.get(), torrentLink: torrent.torrentLink }) .then(() => updateTorrentSeeders(torrent)); } -async function createTorrentContents(torrent) { +export async function createTorrentContents(torrent) { if (torrent.opened) { return; } @@ -160,7 +159,7 @@ async function createTorrentContents(torrent) { .catch(error => console.error(`Failed saving contents for [${torrent.infoHash}] ${torrent.title}`, error)); } -async function updateTorrentSeeders(torrent) { +export async function updateTorrentSeeders(torrent) { if (!(torrent.infoHash || (torrent.provider && torrent.torrentId)) || !Number.isInteger(torrent.seeders)) { return torrent; } @@ -171,12 +170,3 @@ async function updateTorrentSeeders(torrent) { return undefined; }); } - -module.exports = { - createTorrentEntry, - createTorrentContents, - createSkipTorrentEntry, - getStoredTorrentEntry, - updateTorrentSeeders, - checkAndUpdateTorrent -}; diff --git a/scraper/lib/torrentFiles.js b/src/node/consumer/lib/torrentFiles.js similarity index 96% rename from scraper/lib/torrentFiles.js rename to src/node/consumer/lib/torrentFiles.js index ab5eda7..a340ec2 100644 --- a/scraper/lib/torrentFiles.js +++ b/src/node/consumer/lib/torrentFiles.js @@ -1,18 +1,19 @@ -const moment = require('moment'); -const Bottleneck = require('bottleneck'); -const distance = require('jaro-winkler'); -const { parse } = require('parse-torrent-title'); -const Promises = require('../lib/promises'); -const { torrentFiles } = require('../lib/torrent'); -const { getMetadata, getImdbId, getKitsuId } = require('../lib/metadata'); -const { parseSeriesVideos, isPackTorrent } = require('../lib/parseHelper'); -const { Type } = require('./types'); -const { isDisk } = require('./extension'); +import moment from 'moment'; +import Bottleneck from 'bottleneck'; +import distance from 'jaro-winkler'; +import { parse } from 'parse-torrent-title'; +import * as Promises from './promises.js'; +import { getMetadata, getImdbId, getKitsuId } from './metadata.js'; +import { parseSeriesVideos, isPackTorrent } from './parseHelper.js'; +import { Type } from './types.js'; +import { isDisk } from './extension.js'; +import {torrentFiles} from "./torrent.js"; +import { metadataConfig } from './config.js'; const MIN_SIZE = 5 * 1024 * 1024; // 5 MB -const imdb_limiter = new Bottleneck({ maxConcurrent: 1, minTime: 1000 }); +const imdb_limiter = new Bottleneck({ maxConcurrent: metadataConfig.IMDB_CONCURRENT, minTime: metadataConfig.IMDB_INTERVAL_MS }); -async function parseTorrentFiles(torrent) { +export async function parseTorrentFiles(torrent) { const parsedTorrentName = parse(torrent.title); const metadata = await getMetadata(torrent.kitsuId || torrent.imdbId, torrent.type || Type.MOVIE) .then(meta => Object.assign({}, meta)) @@ -321,6 +322,8 @@ function decomposeDateEpisodeFiles(torrent, files, metadata) { }); } + +/* eslint-disable no-unused-vars */ function decomposeEpisodeTitleFiles(torrent, files, metadata) { files // .filter(file => !file.season) @@ -338,6 +341,7 @@ function decomposeEpisodeTitleFiles(torrent, files, metadata) { } }) } +/* eslint-enable no-unused-vars */ function getTimeZoneOffset(country) { switch (country) { @@ -466,6 +470,7 @@ async function updateToCinemetaMetadata(metadata) { function findMovieImdbId(title) { const parsedTitle = typeof title === 'string' ? parse(title) : title; + console.log(`Finding movie imdbId for ${title}`); return imdb_limiter.schedule(() => getImdbId(parsedTitle, Type.MOVIE).catch(() => undefined)); } @@ -504,6 +509,4 @@ function div100(episode) { function mod100(episode) { return episode % 100; -} - -module.exports = { parseTorrentFiles }; \ No newline at end of file +} \ No newline at end of file diff --git a/scraper/lib/torrentSubtitles.js b/src/node/consumer/lib/torrentSubtitles.js similarity index 95% rename from scraper/lib/torrentSubtitles.js rename to src/node/consumer/lib/torrentSubtitles.js index 879c182..7bd9ab4 100644 --- a/scraper/lib/torrentSubtitles.js +++ b/src/node/consumer/lib/torrentSubtitles.js @@ -1,6 +1,6 @@ -const { parse } = require('parse-torrent-title'); +import { parse } from 'parse-torrent-title'; -function assignSubtitles({ contents, videos, subtitles }) { +export function assignSubtitles({ contents, videos, subtitles }) { if (videos && videos.length && subtitles && subtitles.length) { if (videos.length === 1) { videos[0].subtitles = subtitles; @@ -86,6 +86,4 @@ function parseFilename(filename) { function arrayEquals(array1, array2) { if (!array1 || !array2) return array1 === array2; return array1.length === array2.length && array1.every((value, index) => value === array2[index]) -} - -module.exports = { assignSubtitles } \ No newline at end of file +} \ No newline at end of file diff --git a/src/node/consumer/lib/trackerService.js b/src/node/consumer/lib/trackerService.js new file mode 100644 index 0000000..2f9b496 --- /dev/null +++ b/src/node/consumer/lib/trackerService.js @@ -0,0 +1,25 @@ +import axios from 'axios'; +import {cacheTrackers} from "./cache.js"; +import { trackerConfig } from './config.js'; + +const downloadTrackers = async () => { + const response = await axios.get(trackerConfig.TRACKERS_URL); + const trackersListText = response.data; + // Trackers are separated by a newline character + let urlTrackers = trackersListText.split("\n"); + // remove blank lines + urlTrackers = urlTrackers.filter(line => line.trim() !== ''); + + if (!trackerConfig.UDP_ENABLED) { + // remove any udp trackers + urlTrackers = urlTrackers.filter(line => !line.startsWith('udp://')); + } + + console.log(`Trackers updated at ${Date.now()}: ${urlTrackers.length} trackers`); + + return urlTrackers; +}; + +export const getTrackers = async () => { + return cacheTrackers(downloadTrackers); +}; \ No newline at end of file diff --git a/src/node/consumer/lib/types.js b/src/node/consumer/lib/types.js new file mode 100644 index 0000000..e4f61a4 --- /dev/null +++ b/src/node/consumer/lib/types.js @@ -0,0 +1,6 @@ +export const Type = { + MOVIE: 'movie', + SERIES: 'series', + ANIME: 'anime', + PORN: 'xxx', +}; \ No newline at end of file diff --git a/src/node/consumer/package-lock.json b/src/node/consumer/package-lock.json new file mode 100644 index 0000000..1c0da8b --- /dev/null +++ b/src/node/consumer/package-lock.json @@ -0,0 +1,5736 @@ +{ + "name": "consumer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "consumer", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "amqplib": "^0.10.3", + "axios": "^1.6.1", + "bluebird": "^3.7.2", + "bottleneck": "^2.19.5", + "cache-manager": "^3.4.4", + "cache-manager-mongodb": "^0.3.0", + "google-sr": "^3.2.1", + "jaro-winkler": "^0.2.8", + "magnet-uri": "^6.2.0", + "moment": "^2.30.1", + "name-to-imdb": "^3.0.4", + "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", + "pg": "^8.11.3", + "sequelize": "^6.31.1", + "torrent-stream": "^1.2.1", + "user-agents": "^1.0.1444", + "webtorrent": "^2.1.34" + }, + "devDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-import": "^2.29.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@acuminous/bitsyntax": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz", + "integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==", + "dependencies": { + "buffer-more-ints": "~1.0.0", + "debug": "^4.3.4", + "safe-buffer": "~5.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@silentbot1/nat-api": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.7.tgz", + "integrity": "sha512-6aKXUf4AY6ETBdwjswQOekY6HGj3eZTAUhJx1oYicBqpMJcsphIydEQKp/Hooz6Y070MOI6tD/oT1MgS7bP3Vg==", + "dependencies": { + "chrome-dgram": "^3.0.6", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "default-gateway": "^6.0.3", + "unordered-array-remove": "^1.0.2", + "xml2js": "^0.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@thaunknown/idb-chunk-store": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@thaunknown/idb-chunk-store/-/idb-chunk-store-1.0.2.tgz", + "integrity": "sha512-UdKshbKdHDP+p0XPdv55QiU/scdB9TzvovGFSgXThf+7Yd3noLeYp6KpkYyc1jzUXvI3/8+TemPeASOimrOXvw==", + "dependencies": { + "idb": "^6.1.2", + "queue-microtask": "^1.2.3" + } + }, + "node_modules/@thaunknown/simple-peer": { + "version": "9.12.1", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-peer/-/simple-peer-9.12.1.tgz", + "integrity": "sha512-IS5BXvXx7cvBAzaxqotJf4s4rJCPk5JABLK6Gbnn7oAmWVcH4hYABabBBrvvJtv/xyUqR4v/H3LalnGRJJfEog==", + "dependencies": { + "debug": "^4.3.2", + "err-code": "^3.0.1", + "get-browser-rtc": "^1.1.0", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9" + } + }, + "node_modules/@thaunknown/simple-websocket": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@thaunknown/simple-websocket/-/simple-websocket-9.1.1.tgz", + "integrity": "sha512-vzQloFWRodRZqZhpxMpBljFtISesY8TihA8T5uKwCYdj2I1ImMhE/gAeTCPsCGOtxJfGKu3hw/is6MXauWLjOg==", + "dependencies": { + "debug": "^4.3.4", + "queue-microtask": "^1.2.3", + "streamx": "^2.13.2", + "uint8-util": "^2.1.9", + "ws": "^8.12.0" + } + }, + "node_modules/@thaunknown/thirty-two": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@thaunknown/thirty-two/-/thirty-two-1.0.3.tgz", + "integrity": "sha512-bD6PvWbaf53JC04O7WnGDjqZBDgja/KT2Jd/6I2vJBIy+DLmQfQJZZ/G+16nAkVq1yGTIkO4rfc4RlH0DmEEqA==", + "dependencies": { + "uint8-util": "^2.1.9" + }, + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.6.tgz", + "integrity": "sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/validator": { + "version": "13.11.8", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.8.tgz", + "integrity": "sha512-c/hzNDBh7eRF+KbCf+OoZxKbnkpaK/cKp9iLQWqB7muXtM+MtL9SUUH8vCFcLn6dH1Qm05jiexK0ofWY7TfOhQ==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webtorrent/http-node": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz", + "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==", + "dependencies": { + "freelist": "^1.0.3", + "http-parser-js": "^0.4.3" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/addr-to-ip-port": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-2.0.0.tgz", + "integrity": "sha512-9bYbtjamtdLHZSqVIUXhilOryNPiL+x+Q5J/Unpg4VY3ZIkK3fT52UoErj1NdUeVm3J1t2iBEAur4Ywbl/bahw==", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/amqplib": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.3.tgz", + "integrity": "sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==", + "dependencies": { + "@acuminous/bitsyntax": "^0.1.2", + "buffer-more-ints": "~1.0.0", + "readable-stream": "1.x >=1.1.9", + "url-parse": "~1.5.10" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/bencode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-4.0.0.tgz", + "integrity": "sha512-AERXw18df0pF3ziGOCyUjqKZBVNH8HV3lBxnx5w0qtgMIk4a1wb9BkcCQbkp9Zstfrn/dzRwl7MmUHHocX3sRQ==", + "dependencies": { + "uint8-util": "^2.2.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bep53-range": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-1.1.1.tgz", + "integrity": "sha512-ct6s33iiwRCUPp9KXnJ4QMWDgHIgaw36caK/5XEQ9L8dCzSQlJt1Vk6VmHh1VD4AlGCAI4C2zmtfItifBBPrhQ==" + }, + "node_modules/bitfield": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-0.1.0.tgz", + "integrity": "sha512-M15ypXCxXd81FSOWL2ejHpB1TDKmz7Y55/VuqfExJi72sHW0JzE5dfV+hrSZafZtWRg/tdMsdte5dgwrlOM7nA==" + }, + "node_modules/bittorrent-dht": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-6.4.2.tgz", + "integrity": "sha512-DeBunF1nL/ckThYyU3AVtHFR195zNV06Ob6bKNXA1y6X56GSKMfkNCABB45YcbZevGMW1dytFlm59D/fws5lTg==", + "dependencies": { + "bencode": "^0.7.0", + "buffer-equals": "^1.0.3", + "debug": "^2.2.0", + "inherits": "^2.0.1", + "k-bucket": "^0.6.0", + "k-rpc": "^3.6.0", + "lru": "^2.0.0" + } + }, + "node_modules/bittorrent-dht/node_modules/bencode": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-0.7.0.tgz", + "integrity": "sha512-MG5AM/hkQIZoz/layZ1JK3xBTfqkLcJ3dJ7u2lx+6vZT1JWyK3OgEFGx1WFzWt6grGH6OSGQvRcCnhWKLp4f1Q==" + }, + "node_modules/bittorrent-dht/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/bittorrent-dht/node_modules/lru": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lru/-/lru-2.0.1.tgz", + "integrity": "sha512-JGRd3IHM64MPsGVw1Mqbz2Y2HDIePqi/MLfPtdrkHQwvvJnSrS9b6gM3KS9PFR5xJnufXJczHHZSmGqfuII1ew==", + "dependencies": { + "inherits": "^2.0.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/bittorrent-dht/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bittorrent-lsd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-2.0.0.tgz", + "integrity": "sha512-jV+SMTGNY1iGWjf5cPA2HMeA6axuMQRWwWELtsuZ1FmQmZwC74we92nwtDTfv1WMnLx+oqEjWRri42IHjZitSQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "chrome-dgram": "^3.0.6", + "debug": "^4.2.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bittorrent-peerid": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.6.tgz", + "integrity": "sha512-VyLcUjVMEOdSpHaCG/7odvCdLbAB1y3l9A2V6WIje24uV7FkJPrQrH/RrlFmKxP89pFVDEnE+YlHaFujlFIZsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bittorrent-protocol": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-4.1.11.tgz", + "integrity": "sha512-8ehCNnnRpxB6wrqDzYdLY6Bx0k1ZcXwHmxfVsU9xljolgfd4jhUq9gKcbnnUj4yR8I5/qHJ5fYVoGIfrmUlAAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "bitfield": "^4.1.0", + "debug": "^4.3.4", + "rc4": "^0.1.5", + "streamx": "^2.15.1", + "throughput": "^1.0.1", + "uint8-util": "^2.2.2", + "unordered-array-remove": "^1.0.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/bittorrent-protocol/node_modules/bitfield": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.2.0.tgz", + "integrity": "sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/bittorrent-tracker": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-11.0.1.tgz", + "integrity": "sha512-WDvixbEkLgnEeVk8iiF2/LwB2zsuxehir3wBFkHskB/LvYE4HQI+6RoWPHjwGqi9POPJdeOnSPFa8pZvB0Bd8A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "@thaunknown/simple-peer": "^9.12.1", + "@thaunknown/simple-websocket": "^9.1.0", + "bencode": "^4.0.0", + "bittorrent-peerid": "^1.3.3", + "chrome-dgram": "^3.0.6", + "clone": "^2.0.0", + "compact2string": "^1.4.1", + "cross-fetch-ponyfill": "^1.0.1", + "debug": "^4.1.1", + "ip": "^1.1.5", + "lru": "^3.1.0", + "minimist": "^1.2.5", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "run-parallel": "^1.2.0", + "run-series": "^1.1.9", + "socks": "^2.0.0", + "string2compact": "^2.0.0", + "uint8-util": "^2.1.9", + "unordered-array-remove": "^1.0.2", + "ws": "^8.0.0" + }, + "bin": { + "bittorrent-tracker": "bin/cmd.js" + }, + "engines": { + "node": ">=12.20.0" + }, + "optionalDependencies": { + "bufferutil": "^4.0.3", + "utf-8-validate": "^5.0.5" + } + }, + "node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bl/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/block-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.1.1.tgz", + "integrity": "sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/bncode": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/bncode/-/bncode-0.5.3.tgz", + "integrity": "sha512-0P5VuWobU5Gwbeio8n9Jsdv0tE1IikrV9n4f7RsnXHNtxmdd/oeIO6QyoSEUAEyo5P6i3XMfBppi82WqNsT4JA==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-equals": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz", + "integrity": "sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-more-ints": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" + }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/cache-chunk-store": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz", + "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "lru": "^3.1.0", + "queue-microtask": "^1.2.3" + } + }, + "node_modules/cache-manager": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.6.3.tgz", + "integrity": "sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==", + "dependencies": { + "async": "3.2.3", + "lodash.clonedeep": "^4.5.0", + "lru-cache": "6.0.0" + } + }, + "node_modules/cache-manager-mongodb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/cache-manager-mongodb/-/cache-manager-mongodb-0.3.0.tgz", + "integrity": "sha512-r+piWvu8XD8ceBWflZBEQZKemksoaL1V5zSHWyviVTXiGBSVQAf18b4S1v5UwGZMJnrMk8YNFgpBlugF0nuhvg==", + "dependencies": { + "bluebird": "^3.5.3", + "cache-manager": "^2.9.0", + "lodash": "^4.17.15", + "mongodb": "^3.6.3" + } + }, + "node_modules/cache-manager-mongodb/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + }, + "node_modules/cache-manager-mongodb/node_modules/cache-manager": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", + "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", + "dependencies": { + "async": "1.5.2", + "lodash.clonedeep": "4.5.0", + "lru-cache": "4.0.0" + } + }, + "node_modules/cache-manager-mongodb/node_modules/lru-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", + "integrity": "sha512-WKhDkjlLwzE8jAQdQlsxLUQTPXLCKX/4cJk6s5AlRtJkDBk0IKH5O51bVDH61K9N4bhbbyvLM6EiOuE8ovApPA==", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "node_modules/cache-manager-mongodb/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/cache-manager/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chrome-dgram": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", + "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "inherits": "^2.0.4", + "run-series": "^1.1.9" + } + }, + "node_modules/chrome-dns": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz", + "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==", + "dependencies": { + "chrome-net": "^3.3.2" + } + }, + "node_modules/chrome-net": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz", + "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/chunk-store-iterator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chunk-store-iterator/-/chunk-store-iterator-1.0.3.tgz", + "integrity": "sha512-JcSaB5h3wQstQKnaJi8sET40f0m+6Kh4mhKIr05lrWKi+EiQzn6XUoi6LipgRGMqXWNZZJaMz2tH4aeg4ptBDA==", + "dependencies": { + "block-iterator": "^1.1.1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compact2string": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", + "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", + "dependencies": { + "ipaddr.js": ">= 0.1.5" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cpus": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz", + "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/create-torrent": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-6.0.16.tgz", + "integrity": "sha512-oO0M9KMPwEk825G7vLLUttgxBl/zwlsNdtPc9RnjFS6gQeq8sqJqlBmHcIA8sDwaYbu0mpIcARPokUgsRxjiaw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "block-iterator": "^1.1.1", + "fast-readable-async-iterator": "^2.0.0", + "is-file": "^1.0.0", + "join-async-iterator": "^1.1.1", + "junk": "^4.0.1", + "minimist": "^1.2.8", + "once": "^1.4.0", + "piece-length": "^2.0.1", + "queue-microtask": "^1.2.3", + "run-parallel": "^1.2.0", + "uint8-util": "^2.2.2" + }, + "bin": { + "create-torrent": "bin/cmd.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cross-fetch-ponyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz", + "integrity": "sha512-uOBkDhUAGAbx/FEzNKkOfx3w57H8xReBBXoZvUnOKTI0FW0Xvrj3GrYv2iZXUqlffC1LMGfQzhmBM/ke+6eTDA==", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.3.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cyclist": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.1.1.tgz", + "integrity": "sha512-w8a8nQk9YSCkMmH2wDbFqpH1XMz7l409mSvWnnG6Iu6D0Ydhvq61XASE7QIaA46FxfG2Ag524ZuGgAy2cXPfsw==" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge-ts": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", + "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diacritics": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", + "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha512-go5TQkd0YRXYhX+Lc3UrXkoKU5j+m72jEP5lHWr2Nh82L8wfZtH8toKgcg4T10o23ELIMGXQdwCbl+qAXIPDrw==", + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/end-of-stream/node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-readable-async-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-readable-async-iterator/-/fast-readable-async-iterator-2.0.0.tgz", + "integrity": "sha512-8Sld+DuyWRIftl86ZguJxR2oXCBccOiJxrY/Rj9/7ZBynW8pYMWzIcqxFL1da+25jaWJZVa+HHX/8SsA21JdTA==" + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fifo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fifo/-/fifo-0.1.4.tgz", + "integrity": "sha512-CpKgwraLo4YWY9cUEICNJ1WcOVR2WE1Jvot3Nvr7FGBiGOKgkn1CmF4zuCl9VxvEh1nQsdYXtQg+V0etPiED6g==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/flatten": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-0.0.1.tgz", + "integrity": "sha512-pzNZh42/A2HmcRIpddSP0T+zBofd119o5rNB2u1YHv36CM2C/ietI2ZsjWZ2LSL7J0BNVkFn1a9Ad+cmO2lDQg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", + "engines": { + "node": "*" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/freelist": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz", + "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg==" + }, + "node_modules/fs-chunk-store": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-1.7.0.tgz", + "integrity": "sha512-KhjJmZAs2eqfhCb6PdPx4RcZtheGTz86tpTC5JTvqBn/xda+Nb+0C7dCyjOSN7T76H6a56LvH0SVXQMchLXDRw==", + "dependencies": { + "mkdirp": "^0.5.1", + "random-access-file": "^2.0.1", + "randombytes": "^2.0.3", + "rimraf": "^2.4.2", + "run-parallel": "^1.1.2", + "thunky": "^1.0.1" + } + }, + "node_modules/fs-chunk-store/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fs-chunk-store/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fs-native-extensions": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.2.4.tgz", + "integrity": "sha512-TtrMxQN+N9Kb/1jjMttHrVmpPG4DrlDOQwgS+mnij5eRMv4KmBlCHGi8U2DtAo1acQhCYG+ZZpgUCKfLVMtzMQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "napi-macros": "^2.0.0", + "node-gyp-build": "^4.2.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsa-chunk-store": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fsa-chunk-store/-/fsa-chunk-store-1.1.4.tgz", + "integrity": "sha512-Z4SJTYxZIta37RXJofM6HsKrgM9W+pQxiyQuw0bpvsfn1HGXcBWyXZWhsCfi7wbNb6GIlykXZ9Jxwc95IiPMzA==", + "dependencies": { + "filename-reserved-regex": "^3.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-browser-rtc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/google-sr": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/google-sr/-/google-sr-3.2.1.tgz", + "integrity": "sha512-1WGy6mxMTKo+jbIrmq1mwm+2Egvmx9ttsXzCiR0Y2LMcpeG4shqc8C4g12msi4arRn9qEwG1qrFQ1W9jo3dDzw==", + "dependencies": { + "axios": "^1.4.0", + "cheerio": "1.0.0-rc.12", + "deepmerge-ts": "^5.1.0", + "google-sr-selectors": "^0.0.2", + "tslib": "^2.6.1" + } + }, + "node_modules/google-sr-selectors": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-sr-selectors/-/google-sr-selectors-0.0.2.tgz", + "integrity": "sha512-7h+vo7NSDf+pZB/InDon4mwhXeTvy/9yvAChGnjppcdHgTwlUWDpYPWGUn781J3PrjBj6rZAginsSTGqG5uUZw==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hat": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz", + "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==", + "engines": { + "node": "*" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha512-u8u5ZaG0Tr/VvHlucK2ufMuOp4/5bvwgneXle+y228K5rMbJOlVjThONcaAw3ikAy8b2OO9RfEucdMHFz3UWMA==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hybrid-chunk-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/hybrid-chunk-store/-/hybrid-chunk-store-1.2.2.tgz", + "integrity": "sha512-oZtxLfVHWKVKPS8KoYpWgVohEKbq3s90s7a1FwG7+EZFC/8bqZrdX4axlH5tO/g2PnGpZTVxS2YnftyCpydKSw==", + "dependencies": { + "@thaunknown/idb-chunk-store": "^1.0.2", + "cache-chunk-store": "^3.2.2", + "fsa-chunk-store": "^1.1.4", + "memory-chunk-store": "^1.3.5" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==" + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate-chunk-store": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-1.0.8.tgz", + "integrity": "sha512-0tQyTytUaIUskpv5j5L5ZeQuEjYDl9QIekwDUisdqpAM81OZjBaEIriW7hoiRLaLNxj1fXE8e1yx5JaCGrrE7A==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/ip-set": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-1.0.2.tgz", + "integrity": "sha512-Mb6kv78bTi4RNAIIWL8Bbre7hXOR2pNUi3j8FaQkLaitf/ZWxkq3/iIwXNYk2ACO3IMfdVdQrOkUtwZblO7uBA==", + "dependencies": { + "ip": "^1.1.3" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", + "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ==" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jaro-winkler": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/jaro-winkler/-/jaro-winkler-0.2.8.tgz", + "integrity": "sha512-yr+mElb6dWxA1mzFu0+26njV5DWAQRNTi5pB6fFMm79zHrfAs3d0qjhe/IpZI4AHIUJkzvu5QXQRWOw2O0GQyw==" + }, + "node_modules/join-async-iterator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz", + "integrity": "sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/k-bucket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-0.6.0.tgz", + "integrity": "sha512-1zJpqkrLYgolqdO1TE1/FWf+mHfhJKLC2Wpi4JaMFZKi4b6tFEn9/d+JqscBIJw5auWFewp16CSAEetFGEC4NQ==", + "dependencies": { + "buffer-equal": "0.0.1", + "inherits": "^2.0.1" + } + }, + "node_modules/k-rpc": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-3.7.0.tgz", + "integrity": "sha512-XFL8PatIToQ/qhSSAq9FSK73wk4fX4DcHqjnkvSCrWC59PV02Oj1KeYa3KnREAXgA1DlCSzcKjk7M8usnT/dUw==", + "dependencies": { + "buffer-equals": "^1.0.3", + "k-bucket": "^2.0.0", + "k-rpc-socket": "^1.5.0" + } + }, + "node_modules/k-rpc-socket": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz", + "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==", + "dependencies": { + "bencode": "^2.0.0", + "chrome-dgram": "^3.0.2", + "chrome-dns": "^1.0.0", + "chrome-net": "^3.3.2" + } + }, + "node_modules/k-rpc-socket/node_modules/bencode": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", + "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==" + }, + "node_modules/k-rpc/node_modules/k-bucket": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-2.0.1.tgz", + "integrity": "sha512-Xuye90xBBDJJbvNSuy3z/Yl8ceVX02/sopqGUEwJkMgRw+//TQXx0/Hbgp60GsoVfZcCBllQXXp6AWe2INu8pw==", + "dependencies": { + "buffer-equal": "0.0.1", + "randombytes": "^2.0.3" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/last-one-wins": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz", + "integrity": "sha512-t+KLJFkHPQk8lfN6WBOiGkiUXoub+gnb2XTYI2P3aiISL+94xgZ1vgz1SXN/N4hthuOoLXarXfBZPUruyjQtfA==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/load-ip-set": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-3.0.1.tgz", + "integrity": "sha512-ZFZt1g4Exq01SFtKjffqau+L4Qibt+51utymHHiWo8Iu/W7LYSqE7fiZ/iAZ6dIqbmeU6ICSIK02IizSScBkLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "cross-fetch-ponyfill": "^1.0.1", + "ip-set": "^2.1.0", + "netmask": "^2.0.1", + "once": "^1.4.0", + "queue-microtask": "^1.2.3", + "split": "^1.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/load-ip-set/node_modules/ip-set": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.1.0.tgz", + "integrity": "sha512-JdHz4tSMx1IeFj8yEcQU0i58qiSkOlmZXkZ8+HJ0ROV5KcgLRDO9F703oJ1GeZCvqggrcCbmagD/V7hghY62wA==", + "dependencies": { + "ip": "^1.1.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", + "integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==", + "dependencies": { + "inherits": "^2.0.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lt_donthave": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-2.0.0.tgz", + "integrity": "sha512-qrNtq9faD5ycTM8Of7OUqPHPMv0H8NONf+dTAxUsAr0bAgPnD56BBhhBlskJVNL4WO+Dl/qmqWHF9eQb7+2lNA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "debug": "^4.2.0", + "unordered-array-remove": "^1.0.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/magnet-uri": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-6.2.0.tgz", + "integrity": "sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bep53-range": "^1.1.0", + "thirty-two": "^1.0.2" + } + }, + "node_modules/memory-chunk-store": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz", + "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==", + "dependencies": { + "queue-microtask": "^1.2.3" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)" + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.44", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz", + "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz", + "integrity": "sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==", + "dependencies": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "optional-require": "^1.1.8", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + }, + "peerDependenciesMeta": { + "aws4": { + "optional": true + }, + "bson-ext": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "mongodb-extjson": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/name-to-imdb": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/name-to-imdb/-/name-to-imdb-3.0.4.tgz", + "integrity": "sha512-OVmDvWoAZso2eHxK51UK7TMIpUpM4LnI3KhvvZe+JkDatEda9WS3/YXZVQnand5skI38shoniOFcyrw08QsNeA==", + "dependencies": { + "diacritics": "~1.3.0", + "named-queue": "^2.1.0", + "needle": "^1.1.2", + "node-fetch": "^2.2.0" + } + }, + "node_modules/name-to-imdb/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/name-to-imdb/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/name-to-imdb/node_modules/needle": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", + "integrity": "sha512-ogVK1D/Cgemw2vM1KJN6B83DwcKbDepdkMNtVJcXIe+xoaCOdC+aJHzhEov7xjsY9S7rBIuHP59W1fLsbGqDhA==", + "dependencies": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/name-to-imdb/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/named-queue": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/named-queue/-/named-queue-2.2.1.tgz", + "integrity": "sha512-ssW6R5DZza+ixfGgu+piZAqszqRViHNZjjazXknCWyRYZfRJkBmbSPd1nIcH29aejsyBNPNrn3AdMfB+qvb2Hw==" + }, + "node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optional-require": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", + "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", + "dependencies": { + "require-at": "^1.0.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-torrent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-4.1.0.tgz", + "integrity": "sha512-FeoGe8bOYmSzxO31kYy44A03FjuULCMOIMom8KyuGvO8/lLVPJyo2nr9CwH/iYmNHm74hk7h70o59DOfk9Rq+A==", + "dependencies": { + "magnet-uri": "^4.0.0", + "parse-torrent-file": "^2.0.0" + }, + "bin": { + "parse-torrent": "bin/cmd.js" + } + }, + "node_modules/parse-torrent-file": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/parse-torrent-file/-/parse-torrent-file-2.1.4.tgz", + "integrity": "sha512-u2MgLOjZPDDer1oRg1c+H/+54iIQYY5TKgQ5G8KrGLT1Dcwdo7Lj+QfQR123+u8J0AMSFGbQUvsBlSB7uIJcCA==", + "deprecated": "Use the parse-torrent package instead", + "dependencies": { + "bencode": "^0.7.0", + "simple-sha1": "^2.0.0" + }, + "bin": { + "parse-torrent-file": "bin/cmd.js" + } + }, + "node_modules/parse-torrent-file/node_modules/bencode": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-0.7.0.tgz", + "integrity": "sha512-MG5AM/hkQIZoz/layZ1JK3xBTfqkLcJ3dJ7u2lx+6vZT1JWyK3OgEFGx1WFzWt6grGH6OSGQvRcCnhWKLp4f1Q==" + }, + "node_modules/parse-torrent-title": { + "version": "1.3.0", + "resolved": "git+ssh://git@github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", + "integrity": "sha512-2Y0gkYUyrT5sRo5cnpOt90HpciJk7oqa1iOt/AQxr186oOvth7Llj2+aqDB9MzNHX7IZ3QpfRs5fr9TZ2zAIfg==", + "license": "MIT", + "dependencies": { + "moment": "^2.24.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse-torrent/node_modules/magnet-uri": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-4.2.3.tgz", + "integrity": "sha512-aHhR49CRBOq3BX6jQOBdGMXhNT2+9LIH3CCIwHlR+aFE8nWMfBD1aNYxfm2u2LsCOwvfPeyCsdIg9KXSwdsOLQ==", + "dependencies": { + "flatten": "0.0.1", + "thirty-two": "^0.0.2", + "xtend": "^4.0.0" + } + }, + "node_modules/parse-torrent/node_modules/thirty-two": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-0.0.2.tgz", + "integrity": "sha512-0j1A9eqbP8dSEtkqqEJGpYFN2lPgQR1d0qKS2KNAmIxkK6gV37D5hRa5b/mYzVL1fyAVWBkeUDIXybZdCLVBzA==", + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/peer-wire-protocol": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/peer-wire-protocol/-/peer-wire-protocol-0.7.1.tgz", + "integrity": "sha512-V9oTa/ZcfNNz9fAST28Gg0fXbPeFPk3SBImsYO8GDDG5D0E195vxXmjZ+SPrzr4BJyMQmdDmwUfTf9MZ62z4mw==", + "dependencies": { + "bitfield": "^0.1.0", + "bncode": "^0.2.3", + "buffer-alloc": "^1.1.0", + "buffer-from": "^1.0.0", + "readable-stream": "^1.0.2", + "speedometer": "^0.1.2" + } + }, + "node_modules/peer-wire-protocol/node_modules/bncode": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/bncode/-/bncode-0.2.3.tgz", + "integrity": "sha512-IXGfySD68R/J2X/it8GZqAM+Vb3ByZvAlUi0Gysq4ZACq6hXGQ3YshKo0QS/f3S9wOWKjJnEjP6x3ELxqBnAOA==" + }, + "node_modules/peer-wire-swarm": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/peer-wire-swarm/-/peer-wire-swarm-0.12.2.tgz", + "integrity": "sha512-sIWZ1nTL9l6mI9J18kW1AeByBwagvNzGJlMmQA9pM+otKQtTIwnigK8SR0nEFrNZYqZelI6RQ6g4udvtQ2TI1g==", + "dependencies": { + "buffer-from": "^1.0.0", + "fifo": "^0.1.4", + "once": "^1.1.1", + "peer-wire-protocol": "^0.7.0", + "speedometer": "^0.1.2", + "utp": "0.0.7" + } + }, + "node_modules/pg": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", + "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/piece-length": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz", + "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug==" + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pump/node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "node_modules/random-access-file": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.2.1.tgz", + "integrity": "sha512-RGU0xmDqdOyEiynob1KYSeh8+9c9Td1MJ74GT1viMEYAn8SJ9oBtWCXLsYZukCF46yududHOdM449uRYbzBrZQ==", + "dependencies": { + "mkdirp-classic": "^0.5.2", + "random-access-storage": "^1.1.1" + } + }, + "node_modules/random-access-storage": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.4.3.tgz", + "integrity": "sha512-D5e2iIC5dNENWyBxsjhEnNOMCwZZ64TARK6dyMN+3g4OTC4MJxyjh9hKLjTGoNhDOPrgjI+YlFEHFnrp/cSnzQ==", + "dependencies": { + "events": "^3.3.0", + "inherits": "^2.0.3", + "queue-tick": "^1.0.0" + } + }, + "node_modules/random-iterate": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", + "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc4": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz", + "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/re-emitter": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.4.tgz", + "integrity": "sha512-C0SIXdXDSus2yqqvV7qifnb4NoWP7mEBXJq3axci301mXHCZb8Djwm4hrEZo4UeXRaEnfjH98uQ8EBppk2oNWA==" + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/record-cache": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz", + "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==", + "dependencies": { + "b4a": "^1.3.1" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-at": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", + "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", + "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize": { + "version": "6.35.2", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.35.2.tgz", + "integrity": "sha512-EdzLaw2kK4/aOnWQ7ed/qh3B6/g+1DvmeXr66RwbcqSm/+QRS9X0LDI5INBibsy4eNJHWIRPo3+QK0zL+IPBHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-peer": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-6.4.4.tgz", + "integrity": "sha512-sY35UHankz0ba02Dd8YzdyXhEeTAnW6ZUyDfKOSwUht1GLp9VuMT4jQUXF/wG7C9vpwvitV7Ig7a6IkY/qizwg==", + "dependencies": { + "debug": "^2.1.0", + "get-browser-rtc": "^1.0.0", + "inherits": "^2.0.1", + "randombytes": "^2.0.3", + "readable-stream": "^2.0.5" + } + }, + "node_modules/simple-peer/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/simple-peer/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/simple-peer/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/simple-peer/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/simple-peer/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/simple-sha1": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-2.1.2.tgz", + "integrity": "sha512-TQl9rm4rdKAVmhO++sXAb8TNN0D6JAD5iyI1mqEPNpxUzTRrtm4aOG1pDf/5W/qCFihiaoK6uuL9rvQz1x1VKw==", + "dependencies": { + "rusha": "^0.8.1" + } + }, + "node_modules/simple-websocket": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-4.3.1.tgz", + "integrity": "sha512-knEO6ub2Pw00c7ueOV6snKE1hr7jIdY068+239v0I8DVKofyd7IQmYHXrM9pZL1zuI0H7sd+Y5kedndBi5GXIA==", + "dependencies": { + "debug": "^2.1.3", + "inherits": "^2.0.1", + "randombytes": "^2.0.3", + "readable-stream": "^2.0.5", + "ws": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/simple-websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/simple-websocket/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/simple-websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/simple-websocket/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/simple-websocket/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/simple-websocket/node_modules/ws": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", + "integrity": "sha512-61a+9LgtYZxTq1hAonhX8Xwpo2riK4IOR/BIVxioFbCfc3QFKmpE4x9dLExfLHKtUfVZigYa36tThVhO57erEw==", + "dependencies": { + "safe-buffer": "~5.0.1", + "ultron": "~1.1.0" + } + }, + "node_modules/simple-websocket/node_modules/ws/node_modules/safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha512-cr7dZWLwOeaFBLTIuZeYdkfO7UzGIKhjYENJFAxUOMKWGaWDm2nJM2rzxNRm5Owu0DH3ApwNo6kx5idXZfb/Iw==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/speed-limiter": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz", + "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==", + "dependencies": { + "limiter": "^1.1.5", + "streamx": "^2.10.3" + } + }, + "node_modules/speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha512-phdEoDlA6EUIVtzwq1UiNMXDUogczp204aYF/yfOhjNePWFfIpBJ1k5wLMuXQhEOOMjuTJEcc4vdZa+vuP+n/Q==" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string2compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-2.0.1.tgz", + "integrity": "sha512-Bm/T8lHMTRXw+u83LE+OW7fXmC/wM+Mbccfdo533ajSBNxddDHlRrvxE49NdciGHgXkUQM5WYskJ7uTkbBUI0A==", + "dependencies": { + "addr-to-ip-port": "^2.0.0", + "ipaddr.js": "^2.0.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thirty-two": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", + "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==", + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/throughput": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throughput/-/throughput-1.0.1.tgz", + "integrity": "sha512-4Mvv5P4xyVz6RM07wS3tGyZ/kPAiKtLeqznq3hK4pxDiTUSyQ5xeFlBiWxflCWexvSnxo2aAfedzKajJqihz4Q==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timeout-refresh": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz", + "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==", + "optional": true + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/torrent-discovery": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-5.4.0.tgz", + "integrity": "sha512-bPTDIA7XEjRlw6vQyt7kM/h1mg1INBsibjbujISITonx4POENZgxfyCSEXZpDhbAkluSPH4HKRKs4/YTmNLC6w==", + "dependencies": { + "bittorrent-dht": "^6.0.0", + "bittorrent-tracker": "^7.0.0", + "debug": "^2.0.0", + "inherits": "^2.0.1", + "re-emitter": "^1.0.0", + "run-parallel": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "node_modules/torrent-discovery/node_modules/addr-to-ip-port": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz", + "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg==" + }, + "node_modules/torrent-discovery/node_modules/bencode": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/bencode/-/bencode-0.8.0.tgz", + "integrity": "sha512-MWs3FqaWOGg5l+quIT9JTx7+SlcMbfPqqpWy+GOYi5rjZkX8i03tkNhAQn3pD2GAKENPpP3ScUR97ZUMffhHZA==" + }, + "node_modules/torrent-discovery/node_modules/bittorrent-tracker": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-7.7.0.tgz", + "integrity": "sha512-YFgPTVRhUMncZr8tM3ige7gnViMGhKoGF23qaiISRG8xtYebTGHrMSMXsTXo6O1KbtdEI+4jzvGY1K/wdT9GUA==", + "dependencies": { + "bencode": "^0.8.0", + "bn.js": "^4.4.0", + "compact2string": "^1.2.0", + "debug": "^2.0.0", + "hat": "0.0.3", + "inherits": "^2.0.1", + "ip": "^1.0.1", + "minimist": "^1.1.1", + "once": "^1.3.0", + "random-iterate": "^1.0.1", + "run-parallel": "^1.1.2", + "run-series": "^1.0.2", + "simple-get": "^2.0.0", + "simple-peer": "^6.0.0", + "simple-websocket": "^4.0.0", + "string2compact": "^1.1.1", + "uniq": "^1.0.1", + "ws": "^1.0.0", + "xtend": "^4.0.0" + }, + "bin": { + "bittorrent-tracker": "bin/cmd.js" + } + }, + "node_modules/torrent-discovery/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/torrent-discovery/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/torrent-discovery/node_modules/string2compact": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-1.3.2.tgz", + "integrity": "sha512-3XUxUgwhj7Eqh2djae35QHZZT4mN3fsO7kagZhSGmhhlrQagVvWSFuuFIWnpxFS0CdTB2PlQcaL16RDi14I8uw==", + "dependencies": { + "addr-to-ip-port": "^1.0.1", + "ipaddr.js": "^2.0.0" + } + }, + "node_modules/torrent-discovery/node_modules/ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==" + }, + "node_modules/torrent-discovery/node_modules/ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dependencies": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "node_modules/torrent-piece": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-1.1.2.tgz", + "integrity": "sha512-ElXPyXKKG73o+uziHJ8qlYE9EuyDVxnK2zWL+pW/2bma7RsLpSwFFIJAb8Qui7/tel2hsHQW1z3zBnfQNREpWA==" + }, + "node_modules/torrent-stream": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/torrent-stream/-/torrent-stream-1.2.1.tgz", + "integrity": "sha512-F+3tYmXnpO2gyhZQ7o8yakELJH3FtKISI/FU0iWvchOWFUXiFnjbEBoumSzfcK1P71Qxzx2az4lVK4Dkq4KSew==", + "dependencies": { + "bitfield": "^0.1.0", + "bncode": "^0.5.2", + "buffer-from": "^1.0.0", + "end-of-stream": "^0.1.4", + "fs-chunk-store": "^1.3.0", + "hat": "0.0.3", + "immediate-chunk-store": "^1.0.5", + "ip-set": "^1.0.0", + "mkdirp": "^0.3.5", + "parse-torrent": "^4.0.0", + "peer-wire-swarm": "^0.12.0", + "rimraf": "^2.2.5", + "torrent-discovery": "^5.2.0", + "torrent-piece": "^1.0.0" + } + }, + "node_modules/torrent-stream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uint8-util": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/uint8-util/-/uint8-util-2.2.4.tgz", + "integrity": "sha512-uEI5lLozmKQPYEevfEhP9LY3Je5ZmrQhaWXrzTVqrLNQl36xsRh8NiAxYwB9J+2BAt99TRbmCkROQB2ZKhx4UA==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" + }, + "node_modules/unordered-array-remove": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", + "integrity": "sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw==" + }, + "node_modules/unordered-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", + "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", + "optional": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/user-agents": { + "version": "1.1.94", + "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.1.94.tgz", + "integrity": "sha512-5BODncd419/jRWy/emkST2Dd/m0q9Z2mzPgAEmHZsZ4gphJ3/2Hw80kzbukDUiVYx9s+ZuIv0He2HbxbfD284A==", + "dependencies": { + "lodash.clonedeep": "^4.5.0" + } + }, + "node_modules/ut_metadata": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-4.0.3.tgz", + "integrity": "sha512-2tovup0VDYpT8t8+EhhhKBmbgIyiYyJQZ+Hf+/61+SvjuRS2MEeA5CiSARP4q+9/83Wu09OsGrUre/Zv6OI5NA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "bitfield": "^4.0.0", + "debug": "^4.2.0", + "uint8-util": "^2.1.3" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/ut_metadata/node_modules/bitfield": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.2.0.tgz", + "integrity": "sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/ut_pex": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-4.0.4.tgz", + "integrity": "sha512-isVTbp2TKGoMOu+4Zh/i6ijpYr0VG83xjRPgCXaUjKzgXXndjCMWg32/9kZjubD+kxEXcmXMkoS8IttS9FZE8g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "compact2string": "^1.4.1", + "string2compact": "^2.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utp": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/utp/-/utp-0.0.7.tgz", + "integrity": "sha512-2ZLjisH0HQkpqZTg2m7TK0Yn7TETTg7DxM0EpCKIIIV2ky9w9nSxW5a7gzdk4nH2h+pomrrGw0uywrUJfsm2eA==", + "dependencies": { + "cyclist": "~0.1.0" + } + }, + "node_modules/utp-native": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz", + "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "napi-macros": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.0.2", + "timeout-refresh": "^1.0.0", + "unordered-set": "^2.0.1" + }, + "bin": { + "ucat": "ucat.js" + }, + "engines": { + "node": ">=8.12" + } + }, + "node_modules/utp-native/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/utp-native/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true + }, + "node_modules/utp-native/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz", + "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webtorrent": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-2.1.34.tgz", + "integrity": "sha512-YwUEzViZd5zwV41Ra0nPUdBxAsqhoE+xtlAr2uNW7w9pvu3B4iAqvzkGoZT8qX+IdDGCqDSazAx/O6/Q4Jj2gw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "@silentbot1/nat-api": "^0.4.7", + "@thaunknown/simple-peer": "^9.12.1", + "@webtorrent/http-node": "^1.3.0", + "addr-to-ip-port": "^2.0.0", + "bitfield": "^4.1.0", + "bittorrent-dht": "^11.0.5", + "bittorrent-protocol": "^4.1.11", + "cache-chunk-store": "^3.2.2", + "chunk-store-iterator": "^1.0.3", + "cpus": "^1.0.3", + "create-torrent": "^6.0.16", + "cross-fetch-ponyfill": "^1.0.3", + "debug": "^4.3.4", + "escape-html": "^1.0.3", + "fs-chunk-store": "^4.1.0", + "hybrid-chunk-store": "^1.2.2", + "immediate-chunk-store": "^2.2.0", + "join-async-iterator": "^1.1.1", + "load-ip-set": "^3.0.1", + "lt_donthave": "^2.0.0", + "memory-chunk-store": "^1.3.5", + "mime": "^3.0.0", + "once": "^1.4.0", + "parse-torrent": "^11.0.16", + "pump": "^3.0.0", + "queue-microtask": "^1.2.3", + "random-iterate": "^1.0.1", + "range-parser": "^1.2.1", + "run-parallel": "^1.2.0", + "run-parallel-limit": "^1.1.0", + "speed-limiter": "^1.0.2", + "streamx": "^2.15.6", + "throughput": "^1.0.1", + "torrent-discovery": "^11.0.1", + "torrent-piece": "^3.0.0", + "uint8-util": "^2.2.4", + "unordered-array-remove": "^1.0.2", + "ut_metadata": "^4.0.3", + "ut_pex": "^4.0.4" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "utp-native": "^2.5.3" + } + }, + "node_modules/webtorrent/node_modules/bep53-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz", + "integrity": "sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/bitfield": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.2.0.tgz", + "integrity": "sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/webtorrent/node_modules/bittorrent-dht": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-11.0.5.tgz", + "integrity": "sha512-R09D6uNaziRqsc+B/j5QzkjceTak+wH9vcNLnkmt8A52EWF9lQwBP0vvCKgSA3AJOYYl+41n3osA2KYYn/z5uQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "debug": "^4.3.4", + "k-bucket": "^5.1.0", + "k-rpc": "^5.1.0", + "last-one-wins": "^1.0.4", + "lru": "^3.1.0", + "randombytes": "^2.1.0", + "record-cache": "^1.2.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/fs-chunk-store": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-4.1.0.tgz", + "integrity": "sha512-8apaYPaENIVUjVGqjo+Yg5/Hv7qL2fijWV+XGMCs3MR07o9DZZVMpF7dclxdjYotSjLdUGVPhqaJn+eAx6NLYQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "filename-reserved-regex": "^3.0.0", + "queue-microtask": "^1.2.2", + "random-access-file": "^4.0.0", + "randombytes": "^2.0.3", + "run-parallel": "^1.1.2", + "thunky": "^1.0.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/immediate-chunk-store": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz", + "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.3" + } + }, + "node_modules/webtorrent/node_modules/k-bucket": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", + "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/webtorrent/node_modules/k-rpc": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz", + "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==", + "dependencies": { + "k-bucket": "^5.0.0", + "k-rpc-socket": "^1.7.2", + "randombytes": "^2.0.5" + } + }, + "node_modules/webtorrent/node_modules/magnet-uri": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.5.tgz", + "integrity": "sha512-Ke+dDiYHK1Rq/ZyGUAgk7NIkoypivxolTj/A0qr60ypP0FjeP+NTUNEhr965HsRan0zGxKEBK73+SsjRyJWkXg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "@thaunknown/thirty-two": "^1.0.3", + "bep53-range": "^2.0.0", + "uint8-util": "^2.1.9" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/parse-torrent": { + "version": "11.0.16", + "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-11.0.16.tgz", + "integrity": "sha512-5GoOdmW0HpiB78aQpBz8/5V3V1LjBRDNiL7DOs33pKeCLOzFnfMrsRD6CYmaUBT5Vi/dXE0hfePsjDGJSMF48w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bencode": "^4.0.0", + "cross-fetch-ponyfill": "^1.0.3", + "get-stdin": "^9.0.0", + "magnet-uri": "^7.0.5", + "queue-microtask": "^1.2.3", + "uint8-util": "^2.2.4" + }, + "bin": { + "parse-torrent": "bin/cmd.js" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/random-access-file": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-4.0.4.tgz", + "integrity": "sha512-1W21gZ8ne3RgPyTNpq8INr7feTY0+hPpV4X59yL9Miv5QiZV7U1QpRb/zEG2IuaojW9qVTeWBC19Ty0m0uqFBg==", + "dependencies": { + "random-access-storage": "^3.0.0" + }, + "optionalDependencies": { + "fs-native-extensions": "^1.1.0" + } + }, + "node_modules/webtorrent/node_modules/random-access-storage": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-3.0.1.tgz", + "integrity": "sha512-raFoHJ/orMyur04GKrA+5ThOwhX9wICdqMDLqTM7bHEXPz7zi5MxLsLUaybxGu3b4mJTt8zhCpZHgjlu0x4wpg==", + "dependencies": { + "events": "^3.3.0", + "queue-tick": "^1.0.0" + } + }, + "node_modules/webtorrent/node_modules/torrent-discovery": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-11.0.1.tgz", + "integrity": "sha512-+QhOUWRxhR8Y6e5z5I0qil812q11Xz9Yaj1pfYwVkereTBQT1THBCeSHxWZEHuGjKLiIBueVzPP7+wiPtedXKg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "bittorrent-dht": "^11.0.5", + "bittorrent-lsd": "^2.0.0", + "bittorrent-tracker": "^11.0.1", + "debug": "^4.3.4", + "run-parallel": "^1.2.0" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/webtorrent/node_modules/torrent-piece": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-3.0.0.tgz", + "integrity": "sha512-j0tRX7qq22nIuVFF57Tg/wAvFq79F1eM9pcMxY+b0qCCe7yXJnIrqF+Q5YEJ94tNisDnJzcqDHNrPmD9X/yAIg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "uint8-util": "^2.1.9" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/src/node/consumer/package.json b/src/node/consumer/package.json new file mode 100644 index 0000000..9ade207 --- /dev/null +++ b/src/node/consumer/package.json @@ -0,0 +1,34 @@ +{ + "name": "consumer", + "version": "1.0.0", + "exports": "./index.js", + "type": "module", + "scripts": { + "start": "node index.js", + "lint": "eslint . --ext .js" + }, + "author": "A Dude", + "license": "MIT", + "dependencies": { + "amqplib": "^0.10.3", + "axios": "^1.6.1", + "bluebird": "^3.7.2", + "bottleneck": "^2.19.5", + "cache-manager": "^3.4.4", + "cache-manager-mongodb": "^0.3.0", + "google-sr": "^3.2.1", + "jaro-winkler": "^0.2.8", + "magnet-uri": "^6.2.0", + "moment": "^2.30.1", + "name-to-imdb": "^3.0.4", + "parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#022408972c2a040f846331a912a6a8487746a654", + "pg": "^8.11.3", + "sequelize": "^6.31.1", + "torrent-stream": "^1.2.1", + "user-agents": "^1.0.1444" + }, + "devDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-import": "^2.29.1" + } +} diff --git a/src/producer/Configuration/github.json b/src/producer/Configuration/github.json new file mode 100644 index 0000000..1660747 --- /dev/null +++ b/src/producer/Configuration/github.json @@ -0,0 +1,5 @@ +{ + "GithubSettings": { + "PAT": "" + } +} \ No newline at end of file diff --git a/src/producer/Configuration/logging.json b/src/producer/Configuration/logging.json new file mode 100644 index 0000000..3dd8195 --- /dev/null +++ b/src/producer/Configuration/logging.json @@ -0,0 +1,31 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.Console" ], + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "System": "Warning", + "System.Net.Http.HttpClient.Scraper.LogicalHandler": "Warning", + "System.Net.Http.HttpClient.Scraper.ClientHandler": "Warning", + "Quartz.Impl.StdSchedulerFactory": "Warning", + "Quartz.Core.QuartzScheduler": "Warning", + "Quartz.Simpl.RAMJobStore": "Warning", + "Quartz.Core.JobRunShell": "Warning", + "Quartz.Core.SchedulerSignalerImpl": "Warning" + } + }, + "WriteTo": [ + { + "Name": "Console", + "Args": { + "outputTemplate": "{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" + } + } + ], + "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], + "Properties": { + "Application": "Producer" + } + } +} \ No newline at end of file diff --git a/src/producer/Configuration/rabbitmq.json b/src/producer/Configuration/rabbitmq.json new file mode 100644 index 0000000..632af04 --- /dev/null +++ b/src/producer/Configuration/rabbitmq.json @@ -0,0 +1,9 @@ +{ + "RabbitMqConfiguration": { + "Host": "localhost", + "Username": "guest", + "Password": "guest", + "QueueName": "test-queue", + "Durable": true + } +} \ No newline at end of file diff --git a/src/producer/Configuration/scrapers.json b/src/producer/Configuration/scrapers.json new file mode 100644 index 0000000..aa30591 --- /dev/null +++ b/src/producer/Configuration/scrapers.json @@ -0,0 +1,32 @@ +{ + "ScrapeConfiguration": { + "StorageConnectionString": "", + "Scrapers": [ + { + "Name": "SyncEzTvJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncTpbJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncYtsJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncTgxJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncDmmJob", + "IntervalSeconds": 1800, + "Enabled": true + } + ] + } +} \ No newline at end of file diff --git a/src/producer/Crawlers/BaseCrawler.cs b/src/producer/Crawlers/BaseCrawler.cs new file mode 100644 index 0000000..bf33c2e --- /dev/null +++ b/src/producer/Crawlers/BaseCrawler.cs @@ -0,0 +1,25 @@ +namespace Scraper.Crawlers; + +public abstract class BaseCrawler(ILogger logger, IDataStorage storage) : ICrawler +{ + protected abstract IReadOnlyDictionary Mappings { get; } + protected abstract string Url { get; } + protected abstract string Source { get; } + protected IDataStorage Storage => storage; + + public virtual Task Execute() => Task.CompletedTask; + + protected async Task InsertTorrents(IReadOnlyCollection torrent) + { + var result = await storage.InsertTorrents(torrent); + + if (!result.Success) + { + logger.LogWarning("Ingestion Failed: [{Error}]", result.ErrorMessage); + return result; + } + + logger.LogInformation("Ingestion Successful - Wrote {Count} new torrents", result.InsertedCount); + return result; + } +} \ No newline at end of file diff --git a/src/producer/Crawlers/BaseJsonCrawler.cs b/src/producer/Crawlers/BaseJsonCrawler.cs new file mode 100644 index 0000000..327b8ec --- /dev/null +++ b/src/producer/Crawlers/BaseJsonCrawler.cs @@ -0,0 +1,45 @@ +namespace Scraper.Crawlers; + +public abstract class BaseJsonCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseCrawler(logger, storage) +{ + private readonly HttpClient _client = httpClientFactory.CreateClient("Scraper"); + + protected virtual async Task Execute(string collectionName) + { + logger.LogInformation("Starting {Source} crawl", Source); + + using var client = httpClientFactory.CreateClient("Scraper"); + var jsonBody = await _client.GetStringAsync(Url); + using var json = JsonDocument.Parse(jsonBody); + + var torrents = json.RootElement.EnumerateArray() + .Select(ParseTorrent) + .Where(x => x is not null) + .ToList(); + + if (torrents.Count == 0) + { + logger.LogWarning("No torrents found in {Source} response", Source); + return; + } + + await InsertTorrents(torrents!); + } + + protected virtual void HandleInfoHash(JsonElement item, Torrent torrent, string infoHashKey) + { + if (!Mappings.ContainsKey(infoHashKey)) + { + return; + } + + var infoHash = item.GetProperty(Mappings[infoHashKey]).GetString(); + + if (infoHash is not null) + { + torrent.InfoHash = infoHash; + } + } + + protected abstract Torrent? ParseTorrent(JsonElement item); +} \ No newline at end of file diff --git a/src/producer/Crawlers/BaseXmlCrawler.cs b/src/producer/Crawlers/BaseXmlCrawler.cs new file mode 100644 index 0000000..2d83d21 --- /dev/null +++ b/src/producer/Crawlers/BaseXmlCrawler.cs @@ -0,0 +1,43 @@ +namespace Scraper.Crawlers; + +public abstract class BaseXmlCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseCrawler(logger, storage) +{ + public override async Task Execute() + { + logger.LogInformation("Starting {Source} crawl", Source); + + using var client = httpClientFactory.CreateClient("Scraper"); + var xml = await client.GetStringAsync(Url); + var xmlRoot = XElement.Parse(xml); + + var torrents = xmlRoot.Descendants("item") + .Select(ParseTorrent) + .Where(x => x is not null) + .ToList(); + + if (torrents.Count == 0) + { + logger.LogWarning("No torrents found in {Source} response", Source); + return; + } + + await InsertTorrents(torrents!); + } + + protected virtual void HandleInfoHash(XElement itemNode, Torrent torrent, string infoHashKey) + { + if (!Mappings.ContainsKey(infoHashKey)) + { + return; + } + + var infoHash = itemNode.Element(Mappings[infoHashKey])?.Value; + + if (infoHash is not null) + { + torrent.InfoHash = infoHash; + } + } + + protected abstract Torrent? ParseTorrent(XElement itemNode); +} \ No newline at end of file diff --git a/src/producer/Crawlers/CrawlerProvider.cs b/src/producer/Crawlers/CrawlerProvider.cs new file mode 100644 index 0000000..b84ce14 --- /dev/null +++ b/src/producer/Crawlers/CrawlerProvider.cs @@ -0,0 +1,11 @@ +namespace Scraper.Crawlers; + +public class CrawlerProvider(IServiceProvider serviceProvider) : ICrawlerProvider +{ + public IEnumerable GetAll() => + serviceProvider.GetServices(); + + public ICrawler Get(string name) => + serviceProvider.GetRequiredKeyedService(name); + +} \ No newline at end of file diff --git a/src/producer/Crawlers/Sites/DebridMediaManagerCrawler.cs b/src/producer/Crawlers/Sites/DebridMediaManagerCrawler.cs new file mode 100644 index 0000000..a3d5c83 --- /dev/null +++ b/src/producer/Crawlers/Sites/DebridMediaManagerCrawler.cs @@ -0,0 +1,141 @@ +namespace Scraper.Crawlers.Sites; + +public partial class DebridMediaManagerCrawler( + IHttpClientFactory httpClientFactory, + ILogger logger, + IDataStorage storage, + GithubConfiguration githubConfiguration) : BaseCrawler(logger, storage) +{ + [GeneratedRegex("""""")] + private static partial Regex HashCollectionMatcher(); + + [GeneratedRegex(@"[sS]([0-9]{1,2})|seasons?[\s-]?([0-9]{1,2})", RegexOptions.IgnoreCase, "en-GB")] + private static partial Regex SeasonMatcher(); + + protected override IReadOnlyDictionary Mappings => new Dictionary(); + protected override string Url => "https://api.github.com/repos/debridmediamanager/hashlists/contents"; + protected override string Source => "DMM"; + + public override async Task Execute() + { + var client = httpClientFactory.CreateClient("Scraper"); + client.DefaultRequestHeaders.Authorization = new("Bearer", githubConfiguration.PAT); + client.DefaultRequestHeaders.UserAgent.ParseAdd("curl"); + + var jsonBody = await client.GetStringAsync(Url); + + var json = JsonDocument.Parse(jsonBody); + + foreach (var entry in json.RootElement.EnumerateArray()) + { + await ParsePage(entry, client); + } + } + + private async Task ParsePage(JsonElement entry, HttpClient client) + { + var (pageIngested, name) = await IsAlreadyIngested(entry); + + if (string.IsNullOrEmpty(name) || pageIngested) + { + return; + } + + var url = entry.GetProperty("download_url").GetString(); + + var pageSource = await client.GetStringAsync(url); + + await ExtractPageContents(pageSource, name); + } + + private async Task ExtractPageContents(string pageSource, string name) + { + var match = HashCollectionMatcher().Match(pageSource); + + if (!match.Success) + { + logger.LogWarning("Failed to match hash collection for {Name}", name); + await Storage.MarkPageAsIngested(name); + return; + } + + var encodedJson = match.Groups.Values.ElementAtOrDefault(1); + + if (string.IsNullOrEmpty(encodedJson?.Value)) + { + logger.LogWarning("Failed to extract encoded json for {Name}", name); + return; + } + + await ProcessExtractedContentsAsTorrentCollection(encodedJson.Value, name); + } + + private async Task ProcessExtractedContentsAsTorrentCollection(string encodedJson, string name) + { + var decodedJson = LZString.DecompressFromEncodedURIComponent(encodedJson); + + var json = JsonDocument.Parse(decodedJson); + + await InsertTorrentsForPage(json); + + var result = await Storage.MarkPageAsIngested(name); + + if (!result.Success) + { + logger.LogWarning("Failed to mark page as ingested: [{Error}]", result.ErrorMessage); + } + + logger.LogInformation("Successfully marked page as ingested"); + } + + private Torrent? ParseTorrent(JsonElement item) + { + var torrent = new Torrent + { + Source = Source, + Name = item.GetProperty("filename").GetString(), + Size = item.GetProperty("bytes").GetInt64().ToString(), + InfoHash = item.GetProperty("hash").ToString(), + Seeders = 0, + Leechers = 0, + }; + + if (string.IsNullOrEmpty(torrent.Name)) + { + return null; + } + + torrent.Category = SeasonMatcher().IsMatch(torrent.Name) ? "tv" : "movies"; + + return torrent; + } + + private async Task InsertTorrentsForPage(JsonDocument json) + { + var torrents = json.RootElement.EnumerateArray() + .Select(ParseTorrent) + .ToList(); + + if (torrents.Count == 0) + { + logger.LogWarning("No torrents found in {Source} response", Source); + return; + } + + await InsertTorrents(torrents!); + } + + private async Task<(bool Success, string? Name)> IsAlreadyIngested(JsonElement entry) + { + var name = entry.GetProperty("name").GetString(); + + if (string.IsNullOrEmpty(name)) + { + return (false, null); + } + + var pageIngested = await Storage.PageIngested(name); + + return (pageIngested, name); + } +} \ No newline at end of file diff --git a/src/producer/Crawlers/Sites/EzTvCrawler.cs b/src/producer/Crawlers/Sites/EzTvCrawler.cs new file mode 100644 index 0000000..25de36f --- /dev/null +++ b/src/producer/Crawlers/Sites/EzTvCrawler.cs @@ -0,0 +1,32 @@ +namespace Scraper.Crawlers.Sites; + +public class EzTvCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseXmlCrawler(httpClientFactory, logger, storage) +{ + protected override string Url => "https://eztv1.xyz/ezrss.xml"; + protected override string Source => "EZTV"; + + private static readonly XNamespace XmlNamespace = "http://xmlns.ezrss.it/0.1/"; + + protected override IReadOnlyDictionary Mappings => + new Dictionary + { + [nameof(Torrent.Name)] = "title", + [nameof(Torrent.Size)] = "contentLength", + [nameof(Torrent.Seeders)] = "seeds", + [nameof(Torrent.Leechers)] = "peers", + [nameof(Torrent.InfoHash)] = "infoHash", + [nameof(Torrent.Category)] = "category", + }; + + protected override Torrent ParseTorrent(XElement itemNode) => + new() + { + Source = Source, + Name = itemNode.Element(Mappings[nameof(Torrent.Name)])?.Value, + Size = itemNode.Element(XmlNamespace + Mappings[nameof(Torrent.Size)])?.Value, + Seeders = int.Parse(itemNode.Element(XmlNamespace + Mappings[nameof(Torrent.Seeders)])?.Value ?? "0"), + Leechers = int.Parse(itemNode.Element(XmlNamespace + Mappings[nameof(Torrent.Leechers)])?.Value ?? "0"), + InfoHash = itemNode.Element(XmlNamespace + Mappings[nameof(Torrent.InfoHash)])?.Value, + Category = itemNode.Element(Mappings[nameof(Torrent.Category)])?.Value.ToLowerInvariant(), + }; +} \ No newline at end of file diff --git a/src/producer/Crawlers/Sites/TgxCrawler.cs b/src/producer/Crawlers/Sites/TgxCrawler.cs new file mode 100644 index 0000000..418cdd2 --- /dev/null +++ b/src/producer/Crawlers/Sites/TgxCrawler.cs @@ -0,0 +1,143 @@ +namespace Scraper.Crawlers.Sites; + +public partial class TgxCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseXmlCrawler(httpClientFactory, logger, storage) +{ + [GeneratedRegex(@"Size:\s+(.+?)\s+Added")] + private static partial Regex SizeStringExtractor(); + [GeneratedRegex(@"(?i)\b(\d+(\.\d+)?)\s*([KMGT]?B)\b", RegexOptions.None, "en-GB")] + private static partial Regex SizeStringParser(); + + protected override string Url => "https://tgx.rs/rss"; + + protected override string Source => "TorrentGalaxy"; + protected override IReadOnlyDictionary Mappings + => new Dictionary + { + [nameof(Torrent.Name)] = "title", + [nameof(Torrent.Size)] = "description", + [nameof(Torrent.InfoHash)] = "guid", + [nameof(Torrent.Category)] = "category", + }; + + private static readonly HashSet AllowedCategories = + [ + "movies", + "tv", + ]; + + protected override Torrent? ParseTorrent(XElement itemNode) + { + var category = itemNode.Element(Mappings["Category"])?.Value.ToLowerInvariant(); + + if (category is null) + { + return null; + } + + if (!IsAllowedCategory(category)) + { + return null; + } + + + var torrent = new Torrent + { + Source = Source, + Name = itemNode.Element(Mappings["Name"])?.Value, + InfoHash = itemNode.Element(Mappings[nameof(Torrent.InfoHash)])?.Value, + Size = "0", + Seeders = 0, + Leechers = 0, + }; + + HandleSize(itemNode, torrent, "Size"); + + torrent.Category = SetCategory(category); + + return torrent; + } + + private static string SetCategory(string category) => + category.Contains("tv") switch + { + true => "tv", + _ => category.Contains("movies") switch + { + true => "movies", + _ => "xxx", + }, + }; + + private void HandleSize(XContainer itemNode, Torrent torrent, string key) + { + var description = itemNode.Element(Mappings[key])?.Value; + + if (description is null) + { + return; + } + + var size = ExtractSizeFromDescription(description); + + if (size is not null) + { + torrent.Size = size.ToString(); + } + } + + private long? ExtractSizeFromDescription(string input) + { + var sizeMatch = SizeStringExtractor().Match(input); + + if (!sizeMatch.Success) + { + throw new FormatException("Unable to parse size from the input."); + } + + var sizeString = sizeMatch.Groups[1].Value; + + var units = new Dictionary + { + { "B", 1 }, + { "KB", 1L << 10 }, + { "MB", 1L << 20 }, + { "GB", 1L << 30 }, + { "TB", 1L << 40 }, + }; + + var match = SizeStringParser().Match(sizeString); + + if (match.Success) + { + var val = double.Parse(match.Groups[1].Value); + var unit = match.Groups[3].Value.ToUpper(); + + if (units.TryGetValue(unit, out var multiplier)) + { + try + { + var bytes = checked((long)(val * multiplier)); + return bytes; + } + catch (OverflowException) + { + logger.LogWarning("The size '{Size}' is too large.", sizeString); + return null; + } + } + + logger.LogWarning("The size unit '{Unit}' is not supported.", unit); + return null; + } + + logger.LogWarning("The size '{Size}' is not in a supported format.", sizeString); + return null; + } + + private static bool IsAllowedCategory(string category) + { + var parsedCategory = category.Split(':').ElementAtOrDefault(0)?.Trim().ToLower(); + + return parsedCategory is not null && AllowedCategories.Contains(parsedCategory); + } +} \ No newline at end of file diff --git a/src/producer/Crawlers/Sites/TpbCrawler.cs b/src/producer/Crawlers/Sites/TpbCrawler.cs new file mode 100644 index 0000000..badd000 --- /dev/null +++ b/src/producer/Crawlers/Sites/TpbCrawler.cs @@ -0,0 +1,92 @@ +namespace Scraper.Crawlers.Sites; + +public class TpbCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseJsonCrawler(httpClientFactory, logger, storage) +{ + protected override string Url => "https://apibay.org/precompiled/data_top100_recent.json"; + + protected override string Source => "TPB"; + + // ReSharper disable once UnusedMember.Local + private readonly Dictionary> TpbCategories = new() + { + {"VIDEO", new() { + {"ALL", 200}, + {"MOVIES", 201}, + {"MOVIES_DVDR", 202}, + {"MUSIC_VIDEOS", 203}, + {"MOVIE_CLIPS", 204}, + {"TV_SHOWS", 205}, + {"HANDHELD", 206}, + {"MOVIES_HD", 207}, + {"TV_SHOWS_HD", 208}, + {"MOVIES_3D", 209}, + {"OTHER", 299}, + }}, + {"PORN", new() { + {"ALL", 500}, + {"MOVIES", 501}, + {"MOVIES_DVDR", 502}, + {"PICTURES", 503}, + {"GAMES", 504}, + {"MOVIES_HD", 505}, + {"MOVIE_CLIPS", 506}, + {"OTHER", 599}, + }}, + }; + + private static readonly HashSet TvSeriesCategories = [ 205, 208 ]; + private static readonly HashSet MovieCategories = [ 201, 202, 207, 209 ]; + private static readonly HashSet PornCategories = [ 500, 501, 502, 505, 506 ]; + private static readonly HashSet AllowedCategories = [ ..MovieCategories, ..TvSeriesCategories ]; + + protected override IReadOnlyDictionary Mappings + => new Dictionary + { + [nameof(Torrent.Name)] = "name", + [nameof(Torrent.Size)] = "size", + [nameof(Torrent.Seeders)] = "seeders", + [nameof(Torrent.Leechers)] = "leechers", + [nameof(Torrent.InfoHash)] = "info_hash", + [nameof(Torrent.Imdb)] = "imdb", + [nameof(Torrent.Category)] = "category", + }; + + protected override Torrent? ParseTorrent(JsonElement item) + { + var incomingCategory = item.GetProperty(Mappings["Category"]).GetInt32(); + + if (!AllowedCategories.Contains(incomingCategory)) + { + return null; + } + + var torrent = new Torrent + { + Source = Source, + Name = item.GetProperty(Mappings["Name"]).GetString(), + Size = item.GetProperty(Mappings["Size"]).GetInt64().ToString(), + Seeders = item.GetProperty(Mappings["Seeders"]).GetInt32(), + Leechers = item.GetProperty(Mappings["Leechers"]).GetInt32(), + Imdb = item.GetProperty(Mappings["Imdb"]).GetString(), + }; + + HandleInfoHash(item, torrent, "InfoHash"); + + torrent.Category = HandleCategory(incomingCategory); + + return torrent; + } + + private static string HandleCategory(int category) => + MovieCategories.Contains(category) switch + { + true => "movies", + _ => TvSeriesCategories.Contains(category) switch + { + true => "tv", + _ => "xxx", + }, + }; + + public override Task Execute() => Execute("items"); +} \ No newline at end of file diff --git a/src/producer/Crawlers/Sites/YtsCrawler.cs b/src/producer/Crawlers/Sites/YtsCrawler.cs new file mode 100644 index 0000000..9fbbbe0 --- /dev/null +++ b/src/producer/Crawlers/Sites/YtsCrawler.cs @@ -0,0 +1,44 @@ +namespace Scraper.Crawlers.Sites; + +public class YtsCrawler(IHttpClientFactory httpClientFactory, ILogger logger, IDataStorage storage) : BaseXmlCrawler(httpClientFactory, logger, storage) +{ + protected override string Url => "https://yts.am/rss"; + + protected override string Source => "YTS"; + protected override IReadOnlyDictionary Mappings + => new Dictionary + { + [nameof(Torrent.Name)] = "title", + [nameof(Torrent.Size)] = "size", + [nameof(Torrent.Seeders)] = "seeders", + [nameof(Torrent.Leechers)] = "leechers", + [nameof(Torrent.InfoHash)] = "enclosure", + }; + + protected override Torrent? ParseTorrent(XElement itemNode) + { + var torrent = new Torrent + { + Source = Source, + Name = itemNode.Element(Mappings["Name"])?.Value, + Category = "movies", + Size = "0", + Seeders = 0, + Leechers = 0, + }; + + HandleInfoHash(itemNode, torrent, "InfoHash"); + + return torrent; + } + + protected override void HandleInfoHash(XElement itemNode, Torrent torrent, string infoHashKey) + { + var infoHash = itemNode.Element(Mappings[infoHashKey])?.Attribute("url")?.Value.Split("/download/").ElementAtOrDefault(1); + + if (infoHash is not null) + { + torrent.InfoHash = infoHash; + } + } +} \ No newline at end of file diff --git a/src/producer/Dockerfile b/src/producer/Dockerfile new file mode 100644 index 0000000..9c4d969 --- /dev/null +++ b/src/producer/Dockerfile @@ -0,0 +1,10 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +WORKDIR /App +COPY . ./ +RUN dotnet restore +RUN dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 +WORKDIR /App +COPY --from=build-env /App/out . +ENTRYPOINT ["dotnet", "Producer.dll"] \ No newline at end of file diff --git a/src/producer/Extensions/ConfigurationExtensions.cs b/src/producer/Extensions/ConfigurationExtensions.cs new file mode 100644 index 0000000..201c998 --- /dev/null +++ b/src/producer/Extensions/ConfigurationExtensions.cs @@ -0,0 +1,23 @@ +namespace Scraper.Extensions; + +public static class ConfigurationExtensions +{ + private const string ConfigurationFolder = "Configuration"; + private const string LoggingConfig = "logging.json"; + + public static IConfigurationBuilder AddScrapeConfiguration(this IConfigurationBuilder configuration) + { + configuration.SetBasePath(Path.Combine(AppContext.BaseDirectory, ConfigurationFolder)); + + configuration.AddJsonFile(LoggingConfig, false, true); + configuration.AddJsonFile(ScrapeConfiguration.Filename, false, true); + configuration.AddJsonFile(RabbitMqConfiguration.Filename, false, true); + configuration.AddJsonFile(GithubConfiguration.Filename, false, true); + + configuration.AddEnvironmentVariables(); + + configuration.AddUserSecrets(); + + return configuration; + } +} \ No newline at end of file diff --git a/src/producer/Extensions/ConfigureHostBuilderExtensions.cs b/src/producer/Extensions/ConfigureHostBuilderExtensions.cs new file mode 100644 index 0000000..7a3601e --- /dev/null +++ b/src/producer/Extensions/ConfigureHostBuilderExtensions.cs @@ -0,0 +1,8 @@ +namespace Scraper.Extensions; + +internal static class ConfigureHostBuilderExtensions +{ + internal static IHostBuilder SetupSerilog(this ConfigureHostBuilder builder, IConfiguration configuration) => + builder.UseSerilog((_, c) => + c.ReadFrom.Configuration(configuration)); +} \ No newline at end of file diff --git a/src/producer/Extensions/ServiceCollectionExtensions.cs b/src/producer/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..e8406cd --- /dev/null +++ b/src/producer/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,157 @@ +namespace Scraper.Extensions; + +public static class ServiceCollectionExtensions +{ + internal static IServiceCollection AddCrawlers(this IServiceCollection services) + { + services.AddHttpClient("Scraper"); + + services + .AddKeyedTransient(nameof(EzTvCrawler)) + .AddKeyedTransient(nameof(YtsCrawler)) + .AddKeyedTransient(nameof(TpbCrawler)) + .AddKeyedTransient(nameof(TgxCrawler)) + .AddKeyedTransient(nameof(DebridMediaManagerCrawler)) + .AddSingleton() + .AddTransient(); + + return services; + } + + internal static IServiceCollection AddDataStorage(this IServiceCollection services) + { + services.AddTransient(); + services.AddTransient(); + return services; + } + + internal static IServiceCollection RegisterMassTransit(this IServiceCollection services, IConfiguration configuration) + { + var rabbitConfig = configuration.GetSection(RabbitMqConfiguration.SectionName).Get(); + + ArgumentNullException.ThrowIfNull(rabbitConfig, nameof(rabbitConfig)); + + services.AddSingleton(rabbitConfig); + + services.AddMassTransit(busConfigurator => + { + busConfigurator.SetKebabCaseEndpointNameFormatter(); + busConfigurator.UsingRabbitMq((context, busFactoryConfigurator) => + { + busFactoryConfigurator.Host(rabbitConfig!.Host, hostConfigurator => + { + hostConfigurator.Username(rabbitConfig.Username); + hostConfigurator.Password(rabbitConfig.Password); + }); + }); + }); + + return services; + } + + internal static IServiceCollection AddQuartz(this IServiceCollection services, IConfiguration configuration) + { + var scrapeConfiguration = LoadScrapeConfiguration(services, configuration); + var githubConfiguration = LoadGithubConfiguration(services, configuration); + + services + .AddTransient() + .AddTransient() + .AddTransient() + .AddTransient() + .AddTransient() + .AddTransient(); + + if (!string.IsNullOrEmpty(githubConfiguration.PAT)) + { + services.AddTransient(); + } + + services.AddQuartz( + quartz => + { + AddJobWithTrigger(quartz, SyncEzTvJob.Key, SyncEzTvJob.Trigger, scrapeConfiguration); + AddJobWithTrigger(quartz, SyncTpbJob.Key, SyncTpbJob.Trigger, scrapeConfiguration); + AddJobWithTrigger(quartz, SyncYtsJob.Key, SyncYtsJob.Trigger, scrapeConfiguration); + AddJobWithTrigger(quartz, SyncTgxJob.Key, SyncTgxJob.Trigger, scrapeConfiguration); + AddJobWithTrigger(quartz, IPJob.Key, IPJob.Trigger, 60 * 5); + AddJobWithTrigger(quartz, PublisherJob.Key, PublisherJob.Trigger, 10); + + if (!string.IsNullOrEmpty(githubConfiguration.PAT)) + { + AddJobWithTrigger(quartz, SyncDmmJob.Key, SyncDmmJob.Trigger, scrapeConfiguration); + } + }); + + services.AddQuartzHostedService( + options => + { + options.WaitForJobsToComplete = true; + }); + + return services; + } + + private static GithubConfiguration LoadGithubConfiguration(IServiceCollection services, IConfiguration configuration) + { + var githubConfiguration = configuration.GetSection(GithubConfiguration.SectionName).Get(); + + ArgumentNullException.ThrowIfNull(githubConfiguration, nameof(githubConfiguration)); + + services.AddSingleton(githubConfiguration); + + return githubConfiguration; + } + + private static ScrapeConfiguration LoadScrapeConfiguration(IServiceCollection services, IConfiguration configuration) + { + var scrapeConfiguration = configuration.GetSection(ScrapeConfiguration.SectionName).Get(); + + ArgumentNullException.ThrowIfNull(scrapeConfiguration, nameof(scrapeConfiguration)); + + services.AddSingleton(scrapeConfiguration); + + return scrapeConfiguration; + } + + private static void AddJobWithTrigger( + IServiceCollectionQuartzConfigurator quartz, + JobKey key, + TriggerKey trigger, + ScrapeConfiguration scrapeConfiguration) where TJobType : IJob + { + var scraper = scrapeConfiguration.Scrapers + .FirstOrDefault(x => x.Name != null && + x.Name.Equals(typeof(TJobType).Name, StringComparison.OrdinalIgnoreCase)); + + if (scraper is null || !scraper.Enabled) + { + return; + } + + quartz.AddJob(opts => opts.WithIdentity(key).StoreDurably()); + + quartz.AddTrigger( + opts => opts + .ForJob(key) + .WithIdentity(trigger) + .StartAt(DateTimeOffset.Now.AddSeconds(20)) + .WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromSeconds(scraper.IntervalSeconds)).RepeatForever())); + } + + private static void AddJobWithTrigger( + IServiceCollectionQuartzConfigurator quartz, + JobKey key, + TriggerKey trigger, + int interval) where TJobType : IJob + { + quartz.AddJob(opts => opts.WithIdentity(key).StoreDurably()); + + quartz.AddTrigger( + opts => opts + .ForJob(key) + .WithIdentity(trigger) + .StartAt(DateTimeOffset.Now.AddSeconds(20)) + .WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromSeconds(interval)).RepeatForever())); + } +} \ No newline at end of file diff --git a/src/producer/GlobalUsings.cs b/src/producer/GlobalUsings.cs new file mode 100644 index 0000000..2c9d39e --- /dev/null +++ b/src/producer/GlobalUsings.cs @@ -0,0 +1,22 @@ +// Global using directives + +global using System.Text; +global using System.Text.Json; +global using System.Text.RegularExpressions; +global using System.Xml.Linq; +global using Dapper; +global using LZStringCSharp; +global using MassTransit; +global using Microsoft.AspNetCore.Builder; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Logging; +global using Npgsql; +global using Quartz; +global using Scraper.Crawlers; +global using Scraper.Crawlers.Sites; +global using Scraper.Extensions; +global using Scraper.Interfaces; +global using Scraper.Jobs; +global using Scraper.Models; +global using Scraper.Services; +global using Serilog; \ No newline at end of file diff --git a/src/producer/Interfaces/ICrawler.cs b/src/producer/Interfaces/ICrawler.cs new file mode 100644 index 0000000..8fdac6f --- /dev/null +++ b/src/producer/Interfaces/ICrawler.cs @@ -0,0 +1,6 @@ +namespace Scraper.Interfaces; + +public interface ICrawler +{ + Task Execute(); +} \ No newline at end of file diff --git a/src/producer/Interfaces/ICrawlerProvider.cs b/src/producer/Interfaces/ICrawlerProvider.cs new file mode 100644 index 0000000..81c2832 --- /dev/null +++ b/src/producer/Interfaces/ICrawlerProvider.cs @@ -0,0 +1,8 @@ +namespace Scraper.Interfaces; + +public interface ICrawlerProvider +{ + IEnumerable GetAll(); + + ICrawler Get(string name); +} \ No newline at end of file diff --git a/src/producer/Interfaces/IDataStorage.cs b/src/producer/Interfaces/IDataStorage.cs new file mode 100644 index 0000000..cb28191 --- /dev/null +++ b/src/producer/Interfaces/IDataStorage.cs @@ -0,0 +1,10 @@ +namespace Scraper.Interfaces; + +public interface IDataStorage +{ + Task InsertTorrents(IReadOnlyCollection torrents, CancellationToken cancellationToken = default); + Task> GetPublishableTorrents(CancellationToken cancellationToken = default); + Task SetTorrentsProcessed(IReadOnlyCollection torrents, CancellationToken cancellationToken = default); + Task PageIngested(string pageId, CancellationToken cancellationToken = default); + Task MarkPageAsIngested(string pageId, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/producer/Interfaces/IIpService.cs b/src/producer/Interfaces/IIpService.cs new file mode 100644 index 0000000..1c1f711 --- /dev/null +++ b/src/producer/Interfaces/IIpService.cs @@ -0,0 +1,6 @@ +namespace Scraper.Interfaces; + +public interface IIpService +{ + Task GetPublicIpAddress(); +} \ No newline at end of file diff --git a/src/producer/Interfaces/IMessagePublisher.cs b/src/producer/Interfaces/IMessagePublisher.cs new file mode 100644 index 0000000..0eb2bdb --- /dev/null +++ b/src/producer/Interfaces/IMessagePublisher.cs @@ -0,0 +1,6 @@ +namespace Scraper.Interfaces; + +public interface IMessagePublisher +{ + Task PublishAsync(IEnumerable torrents, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/producer/Jobs/BaseJob.cs b/src/producer/Jobs/BaseJob.cs new file mode 100644 index 0000000..5745801 --- /dev/null +++ b/src/producer/Jobs/BaseJob.cs @@ -0,0 +1,23 @@ +namespace Scraper.Jobs; + +public abstract class BaseJob(ICrawlerProvider crawlerProvider) : IJob +{ + public async Task Execute(IJobExecutionContext context) + { + if (context.RefireCount > 5) + { + throw new InvalidOperationException("Job failed too many times"); + } + + try + { + await crawlerProvider.Get(Crawler).Execute(); + } + catch (Exception ex) + { + throw new JobExecutionException(msg: "", refireImmediately: true, cause: ex); + } + } + + protected abstract string Crawler { get; } +} \ No newline at end of file diff --git a/src/producer/Jobs/ICrawlerJob.cs b/src/producer/Jobs/ICrawlerJob.cs new file mode 100644 index 0000000..7b1429b --- /dev/null +++ b/src/producer/Jobs/ICrawlerJob.cs @@ -0,0 +1,7 @@ +namespace Scraper.Jobs; + +public interface ICrawlerJob : IJob + where TCrawler : ICrawler +{ + TCrawler CrawlerType { get; } +} \ No newline at end of file diff --git a/src/producer/Jobs/IPJob.cs b/src/producer/Jobs/IPJob.cs new file mode 100644 index 0000000..1619caf --- /dev/null +++ b/src/producer/Jobs/IPJob.cs @@ -0,0 +1,14 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class IPJob(IIpService ipService) : IJob +{ + private const string JobName = nameof(IPJob); + public static readonly JobKey Key = new(JobName, nameof(Jobs)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Jobs)); + + public Task Execute(IJobExecutionContext context) + { + return ipService.GetPublicIpAddress(); + } +} \ No newline at end of file diff --git a/src/producer/Jobs/PublisherJob.cs b/src/producer/Jobs/PublisherJob.cs new file mode 100644 index 0000000..83c285f --- /dev/null +++ b/src/producer/Jobs/PublisherJob.cs @@ -0,0 +1,31 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class PublisherJob(IMessagePublisher publisher, IDataStorage storage, ILogger logger) : IJob +{ + private const string JobName = nameof(PublisherJob); + public static readonly JobKey Key = new(JobName, nameof(Jobs)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Jobs)); + + public async Task Execute(IJobExecutionContext context) + { + var cancellationToken = context.CancellationToken; + var torrents = await storage.GetPublishableTorrents(cancellationToken); + + if (torrents.Count == 0) + { + return; + } + + await publisher.PublishAsync(torrents, cancellationToken); + var result = await storage.SetTorrentsProcessed(torrents, cancellationToken); + + if (!result.Success) + { + logger.LogWarning("Failed to set torrents as processed: [{Error}]", result.ErrorMessage); + return; + } + + logger.LogInformation("Successfully set {Count} torrents as processed", result.UpdatedCount); + } +} \ No newline at end of file diff --git a/src/producer/Jobs/SyncDmmJob.cs b/src/producer/Jobs/SyncDmmJob.cs new file mode 100644 index 0000000..fbba396 --- /dev/null +++ b/src/producer/Jobs/SyncDmmJob.cs @@ -0,0 +1,10 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class SyncDmmJob(ICrawlerProvider crawlerProvider) : BaseJob(crawlerProvider) +{ + private const string JobName = nameof(DebridMediaManagerCrawler); + public static readonly JobKey Key = new(JobName, nameof(Crawlers)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Crawlers)); + protected override string Crawler => nameof(DebridMediaManagerCrawler); +} \ No newline at end of file diff --git a/src/producer/Jobs/SyncEzTvJob.cs b/src/producer/Jobs/SyncEzTvJob.cs new file mode 100644 index 0000000..c8d7bec --- /dev/null +++ b/src/producer/Jobs/SyncEzTvJob.cs @@ -0,0 +1,10 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class SyncEzTvJob(ICrawlerProvider crawlerProvider) : BaseJob(crawlerProvider) +{ + private const string JobName = nameof(EzTvCrawler); + public static readonly JobKey Key = new(JobName, nameof(Crawlers)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Crawlers)); + protected override string Crawler => nameof(EzTvCrawler); +} \ No newline at end of file diff --git a/src/producer/Jobs/SyncTgxJob.cs b/src/producer/Jobs/SyncTgxJob.cs new file mode 100644 index 0000000..60dd908 --- /dev/null +++ b/src/producer/Jobs/SyncTgxJob.cs @@ -0,0 +1,10 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class SyncTgxJob(ICrawlerProvider crawlerProvider) : BaseJob(crawlerProvider) +{ + private const string JobName = nameof(TgxCrawler); + public static readonly JobKey Key = new(JobName, nameof(Crawlers)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Crawlers)); + protected override string Crawler => nameof(TgxCrawler); +} \ No newline at end of file diff --git a/src/producer/Jobs/SyncTpbJob.cs b/src/producer/Jobs/SyncTpbJob.cs new file mode 100644 index 0000000..47d80c0 --- /dev/null +++ b/src/producer/Jobs/SyncTpbJob.cs @@ -0,0 +1,10 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class SyncTpbJob(ICrawlerProvider crawlerProvider) : BaseJob(crawlerProvider) +{ + private const string JobName = nameof(TpbCrawler); + public static readonly JobKey Key = new(JobName, nameof(Crawlers)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Crawlers)); + protected override string Crawler => nameof(TpbCrawler); +} \ No newline at end of file diff --git a/src/producer/Jobs/SyncYtsJob.cs b/src/producer/Jobs/SyncYtsJob.cs new file mode 100644 index 0000000..2c8fc54 --- /dev/null +++ b/src/producer/Jobs/SyncYtsJob.cs @@ -0,0 +1,10 @@ +namespace Scraper.Jobs; + +[DisallowConcurrentExecution] +public class SyncYtsJob(ICrawlerProvider crawlerProvider) : BaseJob(crawlerProvider) +{ + private const string JobName = nameof(YtsCrawler); + public static readonly JobKey Key = new(JobName, nameof(Crawlers)); + public static readonly TriggerKey Trigger = new($"{JobName}-trigger", nameof(Crawlers)); + protected override string Crawler => nameof(YtsCrawler); +} \ No newline at end of file diff --git a/src/producer/Models/GithubConfiguration.cs b/src/producer/Models/GithubConfiguration.cs new file mode 100644 index 0000000..26d67a7 --- /dev/null +++ b/src/producer/Models/GithubConfiguration.cs @@ -0,0 +1,9 @@ +namespace Scraper.Models; + +public class GithubConfiguration +{ + public const string SectionName = "GithubSettings"; + public const string Filename = "github.json"; + + public string? PAT { get; set; } +} \ No newline at end of file diff --git a/src/producer/Models/RabbitMqConfiguration.cs b/src/producer/Models/RabbitMqConfiguration.cs new file mode 100644 index 0000000..a7922d2 --- /dev/null +++ b/src/producer/Models/RabbitMqConfiguration.cs @@ -0,0 +1,13 @@ +namespace Scraper.Models; + +public class RabbitMqConfiguration +{ + public const string SectionName = "RabbitMqConfiguration"; + public const string Filename = "rabbitmq.json"; + + public string? Host { get; set; } + public string? Username { get; set; } + public string? Password { get; set; } + public string? QueueName { get; set; } + public bool Durable { get; set; } +} \ No newline at end of file diff --git a/src/producer/Models/Results.cs b/src/producer/Models/Results.cs new file mode 100644 index 0000000..6128049 --- /dev/null +++ b/src/producer/Models/Results.cs @@ -0,0 +1,5 @@ +namespace Scraper.Models; + +public record InsertTorrentResult(bool Success, int InsertedCount = 0, string? ErrorMessage = null); +public record UpdatedTorrentResult(bool Success, int UpdatedCount = 0, string? ErrorMessage = null); +public record PageIngestedResult(bool Success, string? ErrorMessage = null); \ No newline at end of file diff --git a/src/producer/Models/ScrapeConfiguration.cs b/src/producer/Models/ScrapeConfiguration.cs new file mode 100644 index 0000000..892f2ce --- /dev/null +++ b/src/producer/Models/ScrapeConfiguration.cs @@ -0,0 +1,10 @@ +namespace Scraper.Models; + +public class ScrapeConfiguration +{ + public const string SectionName = "ScrapeConfiguration"; + public const string Filename = "scrapers.json"; + + public List Scrapers { get; set; } = []; + public string StorageConnectionString { get; set; } = ""; +} \ No newline at end of file diff --git a/src/producer/Models/Scraper.cs b/src/producer/Models/Scraper.cs new file mode 100644 index 0000000..2d2084b --- /dev/null +++ b/src/producer/Models/Scraper.cs @@ -0,0 +1,10 @@ +namespace Scraper.Models; + +public class Scraper +{ + public string? Name { get; set; } + + public int IntervalSeconds { get; set; } = 60; + + public bool Enabled { get; set; } = true; +} \ No newline at end of file diff --git a/src/producer/Models/Torrent.cs b/src/producer/Models/Torrent.cs new file mode 100644 index 0000000..fd36256 --- /dev/null +++ b/src/producer/Models/Torrent.cs @@ -0,0 +1,20 @@ +namespace Scraper.Models; + +// Torrent represents a crawled torrent from one of our +// supported sources. +public class Torrent +{ + public long? Id { get; set; } + public string? Name { get; set; } + public string? Source { get; set; } + public string? Category { get; set; } + public string? InfoHash { get; set; } + public string? Size { get; set; } + public int Seeders { get; set; } + public int Leechers { get; set; } + public string? Imdb { get; set; } + + public bool Processed { get; set; } = false; + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; +} \ No newline at end of file diff --git a/src/producer/Producer.csproj b/src/producer/Producer.csproj new file mode 100644 index 0000000..d54c9ec --- /dev/null +++ b/src/producer/Producer.csproj @@ -0,0 +1,45 @@ + + + + Exe + net8.0 + enable + enable + 54cad2ee-57df-4bb2-a192-d5d501448e0a + + + + + + + + + + + + + + + + + + + + + Always + + + + Always + + + + Always + + + + Always + + + + diff --git a/src/producer/Program.cs b/src/producer/Program.cs new file mode 100644 index 0000000..6b7b151 --- /dev/null +++ b/src/producer/Program.cs @@ -0,0 +1,17 @@ +var builder = WebApplication.CreateBuilder(args); + +builder.Configuration + .AddScrapeConfiguration(); + +builder.Host + .SetupSerilog(builder.Configuration); + +builder.Services + .RegisterMassTransit(builder.Configuration) + .AddDataStorage() + .AddCrawlers() + .AddQuartz(builder.Configuration); + +var host = builder.Build(); + +await host.RunAsync(); \ No newline at end of file diff --git a/src/producer/Services/DapperDataStorage.cs b/src/producer/Services/DapperDataStorage.cs new file mode 100644 index 0000000..4da2671 --- /dev/null +++ b/src/producer/Services/DapperDataStorage.cs @@ -0,0 +1,133 @@ +namespace Scraper.Services; + +public class DapperDataStorage(ScrapeConfiguration configuration, ILogger logger) : IDataStorage +{ + private const string InsertTorrentSql = + """ + INSERT INTO ingested_torrents (name, source, category, info_hash, size, seeders, leechers, imdb, processed, "createdAt", "updatedAt") + VALUES (@Name, @Source, @Category, @InfoHash, @Size, @Seeders, @Leechers, @Imdb, @Processed, @CreatedAt, @UpdatedAt) + ON CONFLICT (source, info_hash) DO NOTHING + """; + + private const string InsertIngestedPageSql = + """ + INSERT INTO ingested_pages (url, "createdAt", "updatedAt") + VALUES (@Url, @CreatedAt, @UpdatedAt) + """; + + private const string GetMovieAndSeriesTorrentsNotProcessedSql = + """ + SELECT + id as "Id", + name as "Name", + source as "Source", + category as "Category", + info_hash as "InfoHash", + size as "Size", + seeders as "Seeders", + leechers as "Leechers", + imdb as "Imdb", + processed as "Processed", + "createdAt" as "CreatedAt", + "updatedAt" as "UpdatedAt" + FROM ingested_torrents + WHERE processed = false AND category != 'xxx' + """; + + private const string UpdateProcessedSql = + """ + UPDATE ingested_torrents + Set + processed = true, + "updatedAt" = @UpdatedAt + WHERE id = @Id + """; + + public async Task InsertTorrents(IReadOnlyCollection torrents, CancellationToken cancellationToken = default) + { + try + { + await using var connection = new NpgsqlConnection(configuration.StorageConnectionString); + await connection.OpenAsync(cancellationToken); + var inserted = await connection.ExecuteAsync(InsertTorrentSql, torrents); + return new(true, inserted); + } + catch (Exception e) + { + return new(false, 0, e.Message); + } + } + + public async Task> GetPublishableTorrents(CancellationToken cancellationToken = default) + { + try + { + await using var connection = new NpgsqlConnection(configuration.StorageConnectionString); + await connection.OpenAsync(cancellationToken); + var torrents = await connection.QueryAsync(GetMovieAndSeriesTorrentsNotProcessedSql); + return torrents.ToList(); + } + catch (Exception e) + { + logger.LogError(e, "Error while getting publishable torrents from database"); + return new List(); + } + } + + public async Task SetTorrentsProcessed(IReadOnlyCollection torrents, CancellationToken cancellationToken = default) + { + try + { + await using var connection = new NpgsqlConnection(configuration.StorageConnectionString); + await connection.OpenAsync(cancellationToken); + + foreach (var torrent in torrents) + { + torrent.UpdatedAt = DateTime.UtcNow; + } + + var updated = await connection.ExecuteAsync(UpdateProcessedSql, torrents); + return new(true, updated); + } + catch (Exception e) + { + return new(false, 0, e.Message); + } + } + + public async Task PageIngested(string pageId, CancellationToken cancellationToken = default) + { + await using var connection = new NpgsqlConnection(configuration.StorageConnectionString); + await connection.OpenAsync(cancellationToken); + + const string query = "SELECT EXISTS (SELECT 1 FROM ingested_pages WHERE url = @Url)"; + + var result = await connection.ExecuteScalarAsync(query, new { Url = pageId }); + + return result; + } + + public async Task MarkPageAsIngested(string pageId, CancellationToken cancellationToken = default) + { + await using var connection = new NpgsqlConnection(configuration.StorageConnectionString); + await connection.OpenAsync(cancellationToken); + + try + { + var date = DateTime.UtcNow; + + await connection.ExecuteAsync(InsertIngestedPageSql, new + { + Url = pageId, + CreatedAt = date, + UpdatedAt = date, + }); + + return new(true, "Page successfully marked as ingested"); + } + catch (Exception e) + { + return new(false, $"Failed to mark page as ingested: {e.Message}"); + } + } +} \ No newline at end of file diff --git a/src/producer/Services/IpService.cs b/src/producer/Services/IpService.cs new file mode 100644 index 0000000..241ca24 --- /dev/null +++ b/src/producer/Services/IpService.cs @@ -0,0 +1,13 @@ +namespace Scraper.Services; + +public class IpService(ILogger logger, IHttpClientFactory httpClientFactory) : IIpService +{ + public async Task GetPublicIpAddress() + { + var client = httpClientFactory.CreateClient("Scraper"); + client.DefaultRequestHeaders.UserAgent.ParseAdd("curl"); + var request = await client.GetStringAsync("http://ifconfig.me"); + + logger.LogInformation("Public IP Address: {PublicIPAddress}", request); + } +} \ No newline at end of file diff --git a/src/producer/Services/TorrentPublisher.cs b/src/producer/Services/TorrentPublisher.cs new file mode 100644 index 0000000..c087fc0 --- /dev/null +++ b/src/producer/Services/TorrentPublisher.cs @@ -0,0 +1,22 @@ +namespace Scraper.Services; + +public class TorrentPublisher(ISendEndpointProvider sendEndpointProvider, RabbitMqConfiguration configuration) : IMessagePublisher +{ + public async Task PublishAsync(IEnumerable torrents, CancellationToken cancellationToken = default) + { + var queueAddress = ConstructQueue(); + var sendEndpoint = await sendEndpointProvider.GetSendEndpoint(new(queueAddress)); + await sendEndpoint.SendBatch(torrents, cancellationToken: cancellationToken); + } + + private string ConstructQueue() + { + var queueBuilder = new StringBuilder(); + queueBuilder.Append("queue:"); + queueBuilder.Append(configuration.QueueName); + queueBuilder.Append("?durable="); + queueBuilder.Append(configuration.Durable ? "true" : "false"); + + return queueBuilder.ToString(); + } +} \ No newline at end of file diff --git a/src/producer/bin/Debug/net8.0/Configuration/github.json b/src/producer/bin/Debug/net8.0/Configuration/github.json new file mode 100644 index 0000000..1660747 --- /dev/null +++ b/src/producer/bin/Debug/net8.0/Configuration/github.json @@ -0,0 +1,5 @@ +{ + "GithubSettings": { + "PAT": "" + } +} \ No newline at end of file diff --git a/src/producer/bin/Debug/net8.0/Configuration/logging.json b/src/producer/bin/Debug/net8.0/Configuration/logging.json new file mode 100644 index 0000000..3dd8195 --- /dev/null +++ b/src/producer/bin/Debug/net8.0/Configuration/logging.json @@ -0,0 +1,31 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.Console" ], + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "System": "Warning", + "System.Net.Http.HttpClient.Scraper.LogicalHandler": "Warning", + "System.Net.Http.HttpClient.Scraper.ClientHandler": "Warning", + "Quartz.Impl.StdSchedulerFactory": "Warning", + "Quartz.Core.QuartzScheduler": "Warning", + "Quartz.Simpl.RAMJobStore": "Warning", + "Quartz.Core.JobRunShell": "Warning", + "Quartz.Core.SchedulerSignalerImpl": "Warning" + } + }, + "WriteTo": [ + { + "Name": "Console", + "Args": { + "outputTemplate": "{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}" + } + } + ], + "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], + "Properties": { + "Application": "Producer" + } + } +} \ No newline at end of file diff --git a/src/producer/bin/Debug/net8.0/Configuration/rabbitmq.json b/src/producer/bin/Debug/net8.0/Configuration/rabbitmq.json new file mode 100644 index 0000000..632af04 --- /dev/null +++ b/src/producer/bin/Debug/net8.0/Configuration/rabbitmq.json @@ -0,0 +1,9 @@ +{ + "RabbitMqConfiguration": { + "Host": "localhost", + "Username": "guest", + "Password": "guest", + "QueueName": "test-queue", + "Durable": true + } +} \ No newline at end of file diff --git a/src/producer/bin/Debug/net8.0/Configuration/scrapers.json b/src/producer/bin/Debug/net8.0/Configuration/scrapers.json new file mode 100644 index 0000000..aa30591 --- /dev/null +++ b/src/producer/bin/Debug/net8.0/Configuration/scrapers.json @@ -0,0 +1,32 @@ +{ + "ScrapeConfiguration": { + "StorageConnectionString": "", + "Scrapers": [ + { + "Name": "SyncEzTvJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncTpbJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncYtsJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncTgxJob", + "IntervalSeconds": 60, + "Enabled": true + }, + { + "Name": "SyncDmmJob", + "IntervalSeconds": 1800, + "Enabled": true + } + ] + } +} \ No newline at end of file diff --git a/src/producer/bin/Debug/net8.0/Dapper.dll b/src/producer/bin/Debug/net8.0/Dapper.dll new file mode 100755 index 0000000000000000000000000000000000000000..8a6dbe0a54443a5ff88855a2b75d0398a020242b GIT binary patch literal 243200 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%0Df|sgt>ncHqQiz6GYXmh2l`+;@LCfLq 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𝔞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