diff --git a/server/web/pages/template/html.go b/server/web/pages/template/html.go
new file mode 100644
index 0000000..bd52bfc
--- /dev/null
+++ b/server/web/pages/template/html.go
@@ -0,0 +1,140 @@
+package template
+
+import (
+ _ "embed"
+)
+
+//go:embed pages/apple-splash-1125-2436.jpg
+var Applesplash11252436jpg []byte
+
+//go:embed pages/apple-splash-1136-640.jpg
+var Applesplash1136640jpg []byte
+
+//go:embed pages/apple-splash-1170-2532.jpg
+var Applesplash11702532jpg []byte
+
+//go:embed pages/apple-splash-1242-2208.jpg
+var Applesplash12422208jpg []byte
+
+//go:embed pages/apple-splash-1242-2688.jpg
+var Applesplash12422688jpg []byte
+
+//go:embed pages/apple-splash-1284-2778.jpg
+var Applesplash12842778jpg []byte
+
+//go:embed pages/apple-splash-1334-750.jpg
+var Applesplash1334750jpg []byte
+
+//go:embed pages/apple-splash-1536-2048.jpg
+var Applesplash15362048jpg []byte
+
+//go:embed pages/apple-splash-1620-2160.jpg
+var Applesplash16202160jpg []byte
+
+//go:embed pages/apple-splash-1668-2224.jpg
+var Applesplash16682224jpg []byte
+
+//go:embed pages/apple-splash-1668-2388.jpg
+var Applesplash16682388jpg []byte
+
+//go:embed pages/apple-splash-1792-828.jpg
+var Applesplash1792828jpg []byte
+
+//go:embed pages/apple-splash-2048-1536.jpg
+var Applesplash20481536jpg []byte
+
+//go:embed pages/apple-splash-2048-2732.jpg
+var Applesplash20482732jpg []byte
+
+//go:embed pages/apple-splash-2160-1620.jpg
+var Applesplash21601620jpg []byte
+
+//go:embed pages/apple-splash-2208-1242.jpg
+var Applesplash22081242jpg []byte
+
+//go:embed pages/apple-splash-2224-1668.jpg
+var Applesplash22241668jpg []byte
+
+//go:embed pages/apple-splash-2388-1668.jpg
+var Applesplash23881668jpg []byte
+
+//go:embed pages/apple-splash-2436-1125.jpg
+var Applesplash24361125jpg []byte
+
+//go:embed pages/apple-splash-2532-1170.jpg
+var Applesplash25321170jpg []byte
+
+//go:embed pages/apple-splash-2688-1242.jpg
+var Applesplash26881242jpg []byte
+
+//go:embed pages/apple-splash-2732-2048.jpg
+var Applesplash27322048jpg []byte
+
+//go:embed pages/apple-splash-2778-1284.jpg
+var Applesplash27781284jpg []byte
+
+//go:embed pages/apple-splash-640-1136.jpg
+var Applesplash6401136jpg []byte
+
+//go:embed pages/apple-splash-750-1334.jpg
+var Applesplash7501334jpg []byte
+
+//go:embed pages/apple-splash-828-1792.jpg
+var Applesplash8281792jpg []byte
+
+//go:embed pages/asset-manifest.json
+var Assetmanifestjson []byte
+
+//go:embed pages/browserconfig.xml
+var Browserconfigxml []byte
+
+//go:embed pages/dlnaicon-120.png
+var Dlnaicon120png []byte
+
+//go:embed pages/dlnaicon-48.png
+var Dlnaicon48png []byte
+
+//go:embed pages/favicon-16x16.png
+var Favicon16x16png []byte
+
+//go:embed pages/favicon-32x32.png
+var Favicon32x32png []byte
+
+//go:embed pages/favicon.ico
+var Faviconico []byte
+
+//go:embed pages/icon.png
+var Iconpng []byte
+
+//go:embed pages/index.html
+var Indexhtml []byte
+
+//go:embed pages/logo.png
+var Logopng []byte
+
+//go:embed pages/mstile-150x150.png
+var Mstile150x150png []byte
+
+//go:embed pages/site.webmanifest
+var Sitewebmanifest []byte
+
+//go:embed pages/static/js/2.a4cb6022.chunk.js
+var Staticjs2a4cb6022chunkjs []byte
+
+//go:embed pages/static/js/2.a4cb6022.chunk.js.LICENSE.txt
+var Staticjs2a4cb6022chunkjsLICENSEtxt []byte
+
+//go:embed pages/static/js/2.a4cb6022.chunk.js.map
+var Staticjs2a4cb6022chunkjsmap []byte
+
+//go:embed pages/static/js/main.489fa76c.chunk.js
+var Staticjsmain489fa76cchunkjs []byte
+
+//go:embed pages/static/js/main.489fa76c.chunk.js.map
+var Staticjsmain489fa76cchunkjsmap []byte
+
+//go:embed pages/static/js/runtime-main.64d07802.js
+var Staticjsruntimemain64d07802js []byte
+
+//go:embed pages/static/js/runtime-main.64d07802.js.map
+var Staticjsruntimemain64d07802jsmap []byte
diff --git a/server/web/pages/template/pages/asset-manifest.json b/server/web/pages/template/pages/asset-manifest.json
index afe109e..6d4f79c 100644
--- a/server/web/pages/template/pages/asset-manifest.json
+++ b/server/web/pages/template/pages/asset-manifest.json
@@ -1,7 +1,7 @@
{
"files": {
- "main.js": "/static/js/main.2ccffc2f.chunk.js",
- "main.js.map": "/static/js/main.2ccffc2f.chunk.js.map",
+ "main.js": "/static/js/main.489fa76c.chunk.js",
+ "main.js.map": "/static/js/main.489fa76c.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.64d07802.js",
"runtime-main.js.map": "/static/js/runtime-main.64d07802.js.map",
"static/js/2.a4cb6022.chunk.js": "/static/js/2.a4cb6022.chunk.js",
@@ -12,6 +12,6 @@
"entrypoints": [
"static/js/runtime-main.64d07802.js",
"static/js/2.a4cb6022.chunk.js",
- "static/js/main.2ccffc2f.chunk.js"
+ "static/js/main.489fa76c.chunk.js"
]
}
\ No newline at end of file
diff --git a/server/web/pages/template/pages/index.html b/server/web/pages/template/pages/index.html
index 02d2fe5..ffd9fd2 100644
--- a/server/web/pages/template/pages/index.html
+++ b/server/web/pages/template/pages/index.html
@@ -1 +1 @@
-
TorrServer MatriX
\ No newline at end of file
+TorrServer MatriX
\ No newline at end of file
diff --git a/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js b/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js
deleted file mode 100644
index e9c97b1..0000000
--- a/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this.webpackJsonptorrserver_web=this.webpackJsonptorrserver_web||[]).push([[0],{190:function(e){e.exports=JSON.parse('{"About":"About","Actions":"Actions","Add":"Add","AddDialog":{"AddPosterLinkInput":"Poster link","AddTorrentSourceNotification":"First add your torrent source","AppendFile":{"Or":"OR","ClickOrDrag":"CLICK / DRAG & DROP (.torrent)"},"CustomTorrentTitle":"Custom title (optional)","CustomTorrentTitleHelperText":"Write custom title to find poster","HashExists":"This torrent is already in database","OriginalTorrentTitle":"Original torrent title","TitleBlank":"Title","TitleBlankHelperText":"Blank for orig. torrent title","TorrentSourceLink":"Torrent source","TorrentSourceOptions":"magnet / hash / .torrent file link","WrongTorrentSource":"Wrong torrent source"},"AddFromLink":"Add Torrent","AddNewTorrent":"Add new torrent","B":"B","bps":"bps","Buffer":"Preload Buffer / Cache","BufferNote":"Set Preload Cache Before Play > 32 MB in settings to change preload size","Cache":"Cache","Cancel":"Cancel","Clear":"Clear","Close":"Close","CloseServer?":"Do you want to turn off server?","CloseServer":"Turn Off","CopyHash":"Copy Hash","CopyLink":"Copy link","Data":"Data","DebugMode":"Download priorities","Delete":"Delete","DeleteTorrent?":"Delete Torrent?","DeleteTorrents?":"Delete All Torrents?","DetailedCacheView":{"button":"Cache Details View","header":"$t(DetailedCacheView.button)"},"Details":"Details","Donate?":"Want to donate?","Donate":"Donate","DownloadPlaylist":"Download Playlist","DownloadSpeed":"Download speed","Drop":"Drop","DropTorrent":"Reset Torrent","Edit":"Edit","EditTorrent":"Edit torrent","Episode":"Episode","FromLatestFile":"From Latest File","Full":"Full","GB":"GB","Gbps":"Gbps","Host":"Host","Info":"Info","KB":"KB","kbps":"kbps","Kilobytes":"Kilobytes","LatestFilePlayed":"Latest file played:","Links":"Links","MB":"MB","Mbps":"Mbps","Name":"Name","NoTorrentsAdded":"No torrents added","Offline":"Offline","OK":"OK","OpenLink":"Open link","Peers":"Peers","PiecesCount":"Pieces count","PiecesLength":"Pieces length","Playlist":"Playlist","Preload":"Preload","ProjectSource":"Project GitHub","PWAGuide":{"Header":"Install application","Description":"Install the app on your device to easily access it anytime. No app store. No download.","VLC":"VLC button will be added to open video instantly on the phone","FirstStep":"Tap on","SecondStep":{"Select":"Select","AddToHomeScreen":"Add to Home Screen"}},"Releases":"TorrServer Releases","RemoveAll":"Remove All","RemoveViews":"Remove View States","Resolution":"Resolution","Save":"Save","ScrollDown":"scroll down","Season":"Season","Sec":"s","Seconds":"Seconds","SelectSeason":"Select Season","SettingsDialog":{"AddRetrackers":"Add retrackers","AdditionalSettings":"Additional Settings","MobileAppSettings":"Mobile app settings","CacheBeforeReaderDesc":"from cache will be saved before currently played frame","CacheAfterReaderDesc":"from cache will be loaded after currently played frame","CacheSize":"Cache Size","CacheSettings":"Cache Settings","CacheStorageLocation":"Cache Storage Location","ConnectionsLimit":"Connections Limit","ConnectionsLimitHint":"20-25 recommended","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"Disable if there is no network after starting the server","DisablePEXHint":"Better leave enabled","DisableTCPHint":"Don\'t disable without \u03bcTP enabled","DisableUPNPHint":"Auto-open port on router","DisableUTPHint":"Recommended to disable in Windows OS","Disk":"Disk","DLNA":"DLNA Media Server","DontAddRetrackers":"Don`t add retrackers","DownloadRateLimit":"Download Rate Limit","EnableDebug":"Enable Debug Server Log","EnableIPv6Hint":"Enable only if supported by ISP","ForceEncrypt":"Force Encrypt Headers","ForceEncryptHint":"Can help with torrent blocking providers","FriendlyName":"DLNA Server Name","FriendlyNameHint":"Leave blank to use default","EnableRutorSearch":"Turn on torrents search by RuTor","EnableRutorSearchHint":"You can search torrents by RuTor, even if the RuTor is not available. NOTE: The database takes about 500 MB of RAM.","PeersListenPort":"Peers Listen Port","PeersListenPortHint":"1024 - 65535, 0 - random","PreloadCache":"Preload Cache Before Play","ProMode":"PRO mode","RAM":"RAM","ReaderReadAHead":"Readahead Cache (5-100%, rec. 95%)","RemoveCacheOnDrop":"Remove Cache from Disk on Drop Torrent","RemoveCacheOnDropDesc":"If disabled, cache removed on delete torrent.","RemoveRetrackers":"Remove retrackers","ReplaceRetrackers":"Replace retrackers","RetrackersMode":"Retrackers Mode","ResetToDefault":"Reset to default","Settings":"Settings","TorrentDisconnectTimeout":"Torrent Disconnect Timeout","TorrentsSavePath":"Torrents Save Path","Upload":"Upload","UploadHint":"Not recommended to disable","UploadRateLimit":"Upload Rate Limit","UseDiskDesc":"Better use RAM or external storage on flash-based devices","Tabs":{"Main":"Main","Additional":"Additional","AdditionalDisabled":"(enable PRO mode)","App":"App"},"UseVLC":"Prompt to open video in VLC","UseVLCHint":"Add VLC player button to torrent content list"},"Size":"Size","SpecialThanks":"Special Thanks","Speed":"Speed","Support":"Support","TB":"TB","Tbps":"Tbps","ThanksToEveryone":"Thanks to everyone who tested and helped.","TorrentAdded":"Added","TorrentClosed":"\u0421losed","TorrentContent":"Torrent Content","TorrentDetails":"Torrent Details","TorrentGettingInfo":"Getting Info","TorrentInDb":"In DB","TorrentPreload":"Preload","TorrentSize":"Torrent size","TorrentState":"Torrent State","TorrentStatus":"Torrent Status","TorrentWorking":"Active","TurnOff":"Turn Off","UploadFile":"Upload File","UploadSpeed":"Upload speed","Viewed":"Viewed"}')},191:function(e){e.exports=JSON.parse('{"About":"\u041e \u0441\u0435\u0440\u0432\u0435\u0440\u0435","Actions":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f","Add":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","AddDialog":{"AddPosterLinkInput":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0441\u0442\u0435\u0440","AddTorrentSourceNotification":"\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442","AppendFile":{"Or":"\u0418\u041b\u0418","ClickOrDrag":"\u041d\u0410\u0416\u041c\u0418\u0422\u0415 / \u041f\u0415\u0420\u0415\u0422\u0410\u0429\u0418\u0422\u0415 \u0424\u0410\u0419\u041b (.torrent)"},"CustomTorrentTitle":"C\u0432\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","CustomTorrentTitleHelperText":"\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0432\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u0440","HashExists":"\u042d\u0442\u043e\u0442 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445","OriginalTorrentTitle":"\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TitleBlank":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","TitleBlankHelperText":"\u041f\u0443\u0441\u0442\u043e\u0435 - \u043e\u0440\u0438\u0433. \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentSourceLink":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentSourceOptions":"magnet-\u0441\u0441\u044b\u043b\u043a\u0430 / \u0445\u0435\u0448 / \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 .torrent \u0444\u0430\u0439\u043b","WrongTorrentSource":"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u0440\u0440\u0435\u043d\u0442"},"AddFromLink":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","AddNewTorrent":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u0440\u0440\u0435\u043d\u0442","B":"\u0411","bps":"\u0431\u0438\u0442/c","Buffer":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 / \u041a\u0435\u0448","BufferNote":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0411\u0443\u0444\u0435\u0440 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 > 32 \u041c\u0411 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","Cache":"\u041a\u0435\u0448","Cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","Clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c","Close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","CloseServer?":"\u0425\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440?","CloseServer":"\u0412\u044b\u043a\u043b. \u0441\u0435\u0440\u0432\u0435\u0440","CopyHash":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0445\u0435\u0448","CopyLink":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","Data":"\u0414\u0430\u043d\u043d\u044b\u0435","DebugMode":"\u041c\u0435\u0442\u043a\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432","Delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","DeleteTorrent?":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442?","DeleteTorrents?":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b?","DetailedCacheView":{"button":"\u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0435\u0448\u0430","header":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u0435\u0448\u0435"},"Details":"\u0418\u043d\u0444\u043e","Donate?":"\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442?","Donate":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430","DownloadPlaylist":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","DownloadSpeed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","Drop":"\u0421\u0431\u0440\u043e\u0441","DropTorrent":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442","Edit":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c","EditTorrent":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442","Episode":"\u0421\u0435\u0440\u0438\u044f","FromLatestFile":"C \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430","Full":"\u041f\u043e\u043b\u043d\u044b\u0439","GB":"\u0413\u0411","Gbps":"\u0413\u0431\u0438\u0442/c","Host":"\u0425\u043e\u0441\u0442","Info":"\u0418\u043d\u0444\u043e","KB":"\u041a\u0411","kbps":"\u043a\u0431\u0438\u0442/\u0441","Kilobytes":"\u041a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u044b","LatestFilePlayed":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:","Links":"\u0421\u0441\u044b\u043b\u043a\u0438","MB":"\u041c\u0411","Mbps":"\u041c\u0431\u0438\u0442/c","Name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","NoTorrentsAdded":"\u041d\u0435\u0442 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432","Offline":"\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d","OK":"OK","OpenLink":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","Peers":"\u041f\u0438\u0440\u044b","PiecesCount":"\u041a\u043e\u043b-\u0432\u043e \u0431\u043b\u043e\u043a\u043e\u0432","PiecesLength":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430","Playlist":"\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","Preload":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440.","ProjectSource":"GitHub \u043f\u0440\u043e\u0435\u043a\u0442\u0430","PWAGuide":{"Header":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435","Description":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0411\u0435\u0437 AppStore. \u0411\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.","VLC":"\u041a\u043d\u043e\u043f\u043a\u0430 VLC \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435","FirstStep":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430","SecondStep":{"Select":"\u0412\u044b\u0431\u0438\u0440\u0438\u0442\u0435","AddToHomeScreen":"\u041d\u0430 \u044d\u043a\u0440\u0430\u043d \xab\u0414\u043e\u043c\u043e\u0439\xbb"}},"Releases":"\u0420\u0435\u043b\u0438\u0437\u044b TorrServer","RemoveAll":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435","RemoveViews":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b","Resolution":"\u0420\u0430\u0437\u0440\u0435\u0448.","Save":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","ScrollDown":"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u0437","Season":"\u0421\u0435\u0437\u043e\u043d","Sec":"c","Seconds":"\u0421\u0435\u043a\u0443\u043d\u0434\u044b","SelectSeason":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0435\u0437\u043e\u043d\u0430","SettingsDialog":{"AddRetrackers":"\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c","AdditionalSettings":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","MobileAppSettings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f","CacheBeforeReaderDesc":"\u043e\u0442 \u043a\u0435\u0448\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0437\u0430\u0434\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430","CacheAfterReaderDesc":"\u043a\u0435\u0448\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u0435\u0440\u0435\u0434\u0438 \u043e\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430","CacheSize":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0435\u0448\u0430","CacheSettings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0435\u0448\u0430","CacheStorageLocation":"\u041c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0448\u0430","ConnectionsLimit":"\u0422\u043e\u0440\u0440\u0435\u043d\u0442-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f","ConnectionsLimitHint":"\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f 20-25","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 - \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u0435\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","DisablePEXHint":"\u041e\u0431\u043c\u0435\u043d \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 - \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c","DisableTCPHint":"\u041d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0431\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u03bcTP","DisableUPNPHint":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u0430 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435","DisableUTPHint":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u041e\u0421 Windows","Disk":"\u041f\u0417\u0423 / \u041d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c","DLNA":"DLNA-\u043c\u0435\u0434\u0438\u0430\u0441\u0435\u0440\u0432\u0435\u0440","DontAddRetrackers":"\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c","DownloadRateLimit":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","EnableDebug":"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u0430","EnableIPv6Hint":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f","ForceEncrypt":"\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432","ForceEncryptHint":"\u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438","FriendlyName":"\u0418\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 DLNA","FriendlyNameHint":"\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.","EnableRutorSearch":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e RuTor","EnableRutorSearchHint":"\u041f\u043e\u0438\u0441\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 RuTor, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 RuTor \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0431\u0430\u0437\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e 500 \u041c\u0411 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.","PeersListenPort":"\u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439","PeersListenPortHint":"1024 - 65535, 0 - \u0430\u0432\u0442\u043e","PreloadCache":"\u0411\u0443\u0444\u0435\u0440 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","ProMode":"\u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c","RAM":"\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c","ReaderReadAHead":"\u041e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u0435\u0448 (5-100%, \u0440\u0435\u043a. 95%)","RemoveCacheOnDrop":"\u041e\u0447\u0438\u0449\u0430\u0442\u044c \u043a\u0435\u0448 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","RemoveCacheOnDropDesc":"\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u043a\u0435\u0448 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430.","RemoveRetrackers":"\u0423\u0434\u0430\u043b\u044f\u0442\u044c","ReplaceRetrackers":"\u0417\u0430\u043c\u0435\u043d\u044f\u0442\u044c","RetrackersMode":"\u0420\u0435\u0442\u0440\u0435\u043a\u0435\u0440\u044b","ResetToDefault":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Settings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","TorrentDisconnectTimeout":"\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentsSavePath":"\u041f\u0443\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0448\u0430","Upload":"\u041e\u0442\u0434\u0430\u0447\u0430","UploadHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c","UploadRateLimit":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u0447\u0438","UseDiskDesc":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0441 flash-\u043f\u0430\u043c\u044f\u0442\u044c\u044e","Tabs":{"Main":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435","Additional":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435","AdditionalDisabled":"(\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c)","App":"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435"},"UseVLC":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0432 VLC","UseVLCHint":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f VLC \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"},"Size":"\u0420\u0430\u0437\u043c\u0435\u0440","SpecialThanks":"\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e","Speed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c","Support":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c","TB":"\u0422\u0411","Tbps":"\u0422\u0431\u0438\u0442/\u0441","ThanksToEveryone":"\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u043b!","TorrentAdded":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d","TorrentClosed":"\u0417\u0430\u043a\u0440\u044b\u0442","TorrentContent":"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentDetails":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0435","TorrentGettingInfo":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e","TorrentInDb":"\u0422\u043e\u0440\u0440\u0435\u043d\u0442 \u0432 \u0411\u0414","TorrentPreload":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430","TorrentSize":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentState":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentStatus":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentWorking":"\u0410\u043a\u0442\u0438\u0432\u0435\u043d","TurnOff":"\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c","UploadFile":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b","UploadSpeed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0442\u0434\u0430\u0447\u0438","Viewed":"\u041f\u0440\u043e\u0441\u043c."}')},192:function(e){e.exports=JSON.parse('{"About":"\u041f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440","Actions":"\u0414\u0456\u0457","Add":"\u0414\u043e\u0434\u0430\u0442\u0438","AddDialog":{"AddPosterLinkInput":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043b\u0430\u043a\u0430\u0442","AddTorrentSourceNotification":"\u0421\u043f\u043e\u0447\u0430\u0442\u043a\u0443 \u0434\u043e\u0434\u0430\u0439\u0442\u0435 torrent-\u0434\u0436\u0435\u0440\u0435\u043b\u043e","AppendFile":{"Or":"\u0427\u0418","ClickOrDrag":"\u041d\u0410\u0422\u0418\u0421\u041d\u0406\u0422\u042c / \u041f\u0415\u0420\u0415\u0422\u042f\u0413\u041d\u0406\u0422\u042c \u0424\u0410\u0419\u041b (.torrent)"},"CustomTorrentTitle":"\u0412\u043b\u0430\u0441\u043d\u0430 \u043d\u0430\u0437\u0432\u0430 (\u043e\u043f\u0446\u0456\u0439\u043d\u043e)","CustomTorrentTitleHelperText":"\u041d\u0430\u043f\u0438\u0448\u0456\u0442\u044c \u0432\u043b\u0430\u0441\u043d\u0443 \u043d\u0430\u0437\u0432\u0443, \u0449\u043e\u0431 \u0437\u043d\u0430\u0439\u0442\u0438 \u043f\u043b\u0430\u043a\u0430\u0442","HashExists":"\u0414\u0430\u043d\u0438\u0439 \u0442\u043e\u0440\u0435\u043d\u0442 \u0432\u0436\u0435 \u0454 \u0443 \u0431\u0430\u0437\u0456 \u0434\u0430\u043d\u0438\u0445","OriginalTorrentTitle":"\u041e\u0440\u0438\u0433\u0456\u043d\u0430\u043b\u044c\u043d\u0430 \u043d\u0430\u0437\u0432\u0430 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TitleBlank":"\u041d\u0430\u0437\u0432\u0430","TitleBlankHelperText":"\u041f\u043e\u0440\u043e\u0436\u043d\u0454 - \u043e\u0440\u0438\u0433. \u043d\u0430\u0437\u0432\u0430 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentSourceLink":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0434\u0436\u0435\u0440\u0435\u043b\u043e \u0442\u0435\u0440\u0435\u043d\u0442\u0430","TorrentSourceOptions":"magnet-\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f / \u0445\u0435\u0448 / \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 .torrent \u0444\u0430\u0439\u043b","WrongTorrentSource":"\u0425\u0438\u0431\u043d\u0435 torrent-\u0434\u0436\u0435\u0440\u0435\u043b\u043e"},"AddFromLink":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","AddNewTorrent":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0442\u043e\u0440\u0435\u043d\u0442","B":"\u0411","bps":"\u0431\u0456\u0442/c","Buffer":"\u0411\u0443\u0444\u0435\u0440","BufferNote":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u0433\u043e \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f > 32 \u041c\u0411 \u0432 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f\u0445, \u0449\u043e\u0431 \u0439\u043e\u0433\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438.","Cache":"\u041a\u0435\u0448","Cancel":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438","Clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438","Close":"\u0417\u0430\u043a\u0440\u0438\u0442\u0438","CloseServer?":"\u0425\u043e\u0447\u0435\u0442\u0435 \u0432\u0438\u043c\u043a\u043d\u0443\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440?","CloseServer":"\u0412\u0438\u043c\u043a. \u0441\u0435\u0440\u0432\u0435\u0440","CopyHash":"\u0421\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0445\u0435\u0448","CopyLink":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438","Data":"\u0414\u0430\u043d\u0456","DebugMode":"\u041c\u0456\u0442\u043a\u0438 \u043f\u0440\u0456\u043e\u0440\u0438\u0442\u0435\u0442\u0456\u0432","Delete":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","DeleteTorrent?":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442?","DeleteTorrents?":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0432\u0441\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0438?","DetailedCacheView":{"button":"\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0430","header":"\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u043a\u0435\u0448"},"Details":"\u0414\u0435\u0442\u0430\u043b\u0456","Donate?":"\u0411\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043f\u0440\u043e\u0454\u043a\u0442?","Donate":"\u041f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0430","DownloadPlaylist":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f","DownloadSpeed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","Drop":"\u0421\u043a\u0438\u043d\u0443\u0442\u0438","DropTorrent":"\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","Edit":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438","EditTorrent":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","Episode":"\u0421\u0435\u0440\u0456\u044f","FromLatestFile":"\u0417 \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0443","Full":"\u041f\u043e\u0432\u043d\u0438\u0439","GB":"\u0413\u0411","Gbps":"\u0413\u0431\u0456\u0442/c","Host":"\u0425\u043e\u0441\u0442","Info":"\u0406\u043d\u0444\u043e","KB":"\u041a\u0411","kbps":"\u043a\u0431\u0456\u0442/\u0441","Kilobytes":"\u041a\u0456\u043b\u043e\u0431\u0430\u0439\u0442","LatestFilePlayed":"\u041e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u0444\u0430\u0439\u043b, \u0449\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0432\u0441\u044f:","Links":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","MB":"\u041c\u0411","Mbps":"\u041c\u0431\u0456\u0442/c","Name":"\u041d\u0430\u0437\u0432\u0430","NoTorrentsAdded":"\u041d\u0435\u043c\u0430\u0454 \u0442\u043e\u0440\u0435\u043d\u0442\u0456\u0432","Offline":"\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439","OK":"OK","OpenLink":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438","Peers":"\u041f\u0456\u0440\u0438","PiecesCount":"\u041a-\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u0456\u0432","PiecesLength":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0431\u043b\u043e\u043a\u0443","Playlist":"\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","Preload":"\u041f\u0435\u0440\u0435\u0434\u0437\u0430\u0432.","ProjectSource":"\u0421\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0443","PWAGuide":{"Header":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0434\u043e\u0434\u0430\u0442\u043e\u043a","Description":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0443 \u043d\u0430 \u0441\u0432\u0456\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439, \u0449\u043e\u0431 \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0434\u043e \u043d\u0435\u0457 \u0434\u043e\u0441\u0442\u0443\u043f \u0443 \u0431\u0443\u0434\u044c-\u044f\u043a\u0438\u0439 \u0447\u0430\u0441. \u041d\u0435\u043c\u0430\u0454 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0443 \u0434\u043e\u0434\u0430\u0442\u043a\u0456\u0432. \u041d\u0435\u043c\u0430\u0454 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f.","VLC":"\u041a\u043d\u043e\u043f\u043a\u0430 VLC \u0431\u0443\u0434\u0435 \u0434\u043e\u0434\u0430\u043d\u0430, \u0449\u043e\u0431 \u043c\u0438\u0442\u0442\u0454\u0432\u043e \u0432\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0456","FirstStep":"\u0422\u043e\u0440\u043a\u043d\u0456\u0442\u044c\u0441\u044f","SecondStep":{"Select":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c","AddToHomeScreen":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0438\u0439 \u0435\u043a\u0440\u0430\u043d"}},"Releases":"\u0420\u0435\u043b\u0456\u0437\u0438 TorrServer","RemoveAll":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0432\u0441\u0435","RemoveViews":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0438","Resolution":"\u0414\u043e\u0437\u0432\u043e\u043b\u0438","Save":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438","ScrollDown":"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0456\u0442\u044c \u0432\u043d\u0438\u0445","Season":"\u0421\u0435\u0437\u043e\u043d","Sec":"c","Seconds":"\u0421\u0435\u043a\u0443\u043d\u0434\u0438","SelectSeason":"\u0412\u0438\u0431\u0456\u0440 \u0441\u0435\u0437\u043e\u043d\u0443","SettingsDialog":{"AddRetrackers":"\u0414\u043e\u0434\u0430\u0432\u0430\u0442\u0438","AdditionalSettings":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","MobileAppSettings":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0431. \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438","CacheBeforeReaderDesc":"\u0437 \u043a\u0435\u0448\u0443 \u0431\u0443\u0434\u0435 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e \u0434\u043e \u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0443","CacheAfterReaderDesc":"\u0437 \u043a\u0435\u0448\u0443 \u0431\u0443\u0434\u0435 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043e \u043f\u0456\u0441\u043b\u044f \u043f\u043e\u0442\u043e\u0447\u043d\u043e \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0443","CacheSize":"\u0420\u0430\u0437\u043c\u0456\u0440 \u043a\u0435\u0448\u0443","CacheSettings":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u0435\u0448\u0443","CacheStorageLocation":"\u041c\u0456\u0441\u0446\u0435 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0443","ConnectionsLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0437\'\u0454\u0434\u0430\u043d\u044c","ConnectionsLimitHint":"\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e 20-25","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"\u0412\u0456\u0434\u043a\u043b\u044e\u0447\u0456\u0442\u044c \u043f\u0440\u0438 \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456 \u043c\u0435\u0440\u0435\u0436\u0456 \u043f\u0456\u0441\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","DisablePEXHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u0438","DisableTCPHint":"\u041d\u0435 \u0432\u0438\u043c\u0438\u043a\u0430\u0439\u0442\u0435 \u0431\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\u0433\u043e \u03bcTP","DisableUPNPHint":"\u0410\u0432\u0442\u043e\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0442\u044f \u043f\u043e\u0440\u0442\u0443 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0456","DisableUTPHint":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0432 \u041e\u0421 Windows","Disk":"\u041f\u0417\u041f / \u041d\u043e\u0441\u0456\u0439","DLNA":"DLNA-\u043c\u0435\u0434\u0438\u0430\u0441\u0435\u0440\u0432\u0435\u0440","DontAddRetrackers":"\u041d\u0456\u0447\u043e\u0433\u043e \u043d\u0435 \u0440\u043e\u0431\u0438\u0442\u0438","DownloadRateLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0448\u0432\u0438\u0434\u043a\u043e\u0441\u0442\u0456 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","EnableDebug":"\u0416\u0443\u0440\u043d\u0430\u043b \u043d\u0430\u043b\u0430\u0433\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430","EnableIPv6Hint":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044f\u043a\u0449\u043e \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u044c\u0441\u044f","ForceEncrypt":"\u041f\u0440\u0438\u043c\u0443\u0441\u043e\u0432\u043e \u0448\u0438\u0444\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","ForceEncryptHint":"\u041c\u043e\u0436\u0435 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0442\u0438 \u0437 \u0431\u043b\u043e\u043a\u0443\u044e\u0447\u0438\u043c\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438","FriendlyName":"\u0406\u043c\'\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 DLNA","FriendlyNameHint":"\u0417\u0430\u043b\u0438\u0448\u0442\u0435 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u043c, \u0449\u043e\u0431 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u043f\u0440\u043e\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c.","EnableRutorSearch":"\u0423\u0432\u0456\u043c\u043a\u043d\u0456\u0442\u044c \u043f\u043e\u0448\u0443\u043a RuTor","EnableRutorSearchHint":"\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0443\u043a\u0430\u0442\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0438 \u043e\u0442 RuTor, \u043d\u0430\u0432\u0456\u0442\u044c \u044f\u043a\u0449\u043e RuTor \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439. \u0423\u0412\u0410\u0413\u0410: \u041e\u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0439\u043c\u0430\u0454 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0457 \u043f\u0430\u043c\'\u044f\u0442\u0456 \u0431\u043b\u0438\u0437\u044c\u043a\u043e 500 \u041c\u0411.","PeersListenPort":"\u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0445\u0456\u0434\u043d\u0438\u0445 \u0437\'\u0454\u0434\u043d\u0430\u043d\u044c","PeersListenPortHint":"1024 - 65535, 0 - \u0430\u0432\u0442\u043e","PreloadCache":"\u0411\u0443\u0444\u0435\u0440 \u043f\u043e\u043f\u0435\u0440. \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","ProMode":"\u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c","RAM":"\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430 \u043f\u0430\u043c\'\u044f\u0442\u044c","ReaderReadAHead":"\u041a\u0430\u0447\u0430\u0442\u0438 \u043a\u0435\u0448 \u0437\u0430\u0437\u0434\u0435\u043b\u0435\u0433\u0456\u0434\u044c (5-100%, \u0440\u0435\u043a. 95%)","RemoveCacheOnDrop":"\u0412\u0438\u0434\u0430\u043b\u044f\u0442\u0438 \u043a\u0435\u0448 \u043f\u0440\u0438 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0456 \u0432\u0456\u0434 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","RemoveCacheOnDropDesc":"\u042f\u043a\u0449\u043e \u0432\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442\u043e\u0434\u0456 \u043a\u0435\u0448 \u0432\u0438\u0434\u0430\u043b\u044f\u0454\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0443.","RemoveRetrackers":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","ReplaceRetrackers":"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438","RetrackersMode":"\u0420\u0435\u0442\u0440\u0435\u043a\u0435\u0440\u0438","ResetToDefault":"\u0411\u0430\u0437\u043e\u0432\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","Settings":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","TorrentDisconnectTimeout":"\u0427\u0430\u0441 \u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentsSavePath":"\u0428\u043b\u044f\u0445 \u0434\u043b\u044f \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0443","Upload":"\u0412\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","UploadHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0438\u043c\u0438\u043a\u0430\u0442\u0438","UploadRateLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0448\u0432\u0438\u0434\u043a\u043e\u0441\u0442\u0456 \u0432\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","UseDiskDesc":"\u041a\u0440\u0430\u0449\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443 \u043f\u0430\u043c\'\u044f\u0442\u044c \u0430\u0431\u043e \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u044e \u043f\u0430\u043c\'\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044f\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 flash-\u043f\u0430\u043c\'\u044f\u0442\u0442\u044e","Tabs":{"Main":"\u041e\u0441\u043d\u043e\u0432\u043d\u0456","Additional":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0456","AdditionalDisabled":"(\u0432\u043a\u043b\u044e\u0447\u0456\u0442\u044c \u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c)","App":"\u0414\u043e\u0434\u0430\u0442\u043e\u043a"},"UseVLC":"\u041f\u0440\u043e\u043f\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u0443 VLC","UseVLCHint":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0447\u0430 VLC \u0434\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443"},"Size":"\u0420\u043e\u0437\u043c\u0456\u0440","SpecialThanks":"\u041e\u043a\u0440\u0435\u043c\u0430 \u043f\u043e\u0434\u044f\u043a\u0430","Speed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c","Support":"\u041f\u0456\u0434\u0442\u0440\u0438\u043c\u0430\u0442\u0438","TB":"\u0422\u0411","Tbps":"\u0422\u0431\u0456\u0442/\u0441","ThanksToEveryone":"\u0414\u044f\u043a\u0443\u0454\u043c\u043e \u0432\u0441\u0456\u043c, \u0445\u0442\u043e \u0442\u0435\u0441\u0442\u0443\u0432\u0430\u0432 \u0456 \u0434\u043e\u043f\u043e\u043c\u0430\u0433\u0430\u0432!","TorrentAdded":"\u0414\u043e\u0434\u0430\u043d\u0438\u0439","TorrentClosed":"\u0417\u0430\u043a\u0440\u0438\u0442\u0438\u0439","TorrentContent":"\u0412\u043c\u0456\u0441\u0442 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentDetails":"\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u0442\u043e\u0440\u0435\u043d\u0442","TorrentGettingInfo":"\u041e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457","TorrentInDb":"\u0422\u043e\u0440\u0435\u043d\u0442 \u0432 \u0411\u0414","TorrentPreload":"\u041f\u0435\u0440\u0435\u0434\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","TorrentSize":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentState":"\u0414\u0430\u043d\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentStatus":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentWorking":"\u0410\u043a\u0442\u0438\u0432\u043d\u0438\u0439","TurnOff":"\u0412\u0438\u043a\u043b\u044e\u0447\u0438\u0442\u0438","UploadFile":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u0430\u0439\u043b","UploadSpeed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0432\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","Viewed":"\u041f\u0435\u0440\u0435\u0433\u043b."}')},193:function(e){e.exports=JSON.parse('{"About":"\u5173\u4e8e","Actions":"\u64cd\u4f5c","Add":"\u6dfb\u52a0","AddDialog":{"AddPosterLinkInput":"\u6d77\u62a5\u94fe\u63a5","AddTorrentSourceNotification":"\u5148\u6dfb\u52a0\u4f60\u7684\u79cd\u5b50","AppendFile":{"Or":"\u6216","ClickOrDrag":"\u70b9\u51fb/\u62d6\u653e\u4e0a\u4f20 (.torrent)"},"CustomTorrentTitle":"\u81ea\u5b9a\u4e49\u6807\u9898\uff08\u53ef\u9009\uff09","CustomTorrentTitleHelperText":"\u7f16\u5199\u81ea\u5b9a\u4e49\u6807\u9898\u4ee5\u67e5\u627e\u6d77\u62a5","HashExists":"\u8fd9\u4e2a\u79cd\u5b50\u5df2\u7ecf\u5728\u6570\u636e\u5e93\u4e2d","OriginalTorrentTitle":"\u539f\u59cb\u79cd\u5b50\u6807\u9898","TitleBlank":"\u6807\u9898","TitleBlankHelperText":"\u7559\u7a7a\u5219\u4f7f\u7528\u79cd\u5b50\u539f\u59cb\u6807\u9898","TorrentSourceLink":"\u79cd\u5b50\u5730\u5740","TorrentSourceOptions":"magnet / hash / .torrent\u6587\u4ef6\u94fe\u63a5","WrongTorrentSource":"\u9519\u8bef\u7684\u79cd\u5b50\u6765\u6e90"},"AddFromLink":"\u6dfb\u52a0\u79cd\u5b50","AddNewTorrent":"\u6dfb\u52a0\u65b0\u79cd\u5b50","B":"B","bps":"bps","Buffer":"\u9884\u52a0\u8f7d\u7f13\u51b2\u533a/\u7f13\u5b58","BufferNote":"\u5728\u8bbe\u7f6e\u4e2d\u5c06\u64ad\u653e\u524d\u9884\u52a0\u8f7d\u7f13\u5b58\u8bbe\u7f6e\u4e3a\u5927\u4e8e 32 MB \u4ee5\u66f4\u6539\u9884\u52a0\u8f7d\u5927\u5c0f","Cache":"\u7f13\u5b58","Cancel":"\u53d6\u6d88","Clear":"\u6e05\u9664","Close":"\u5173\u95ed","CloseServer?":"\u4f60\u60f3\u5173\u95ed\u670d\u52a1\u5668\u5417\uff1f","CloseServer":"\u5173\u95ed","CopyHash":"\u590d\u5236\u54c8\u5e0c","CopyLink":"\u590d\u5236\u94fe\u63a5","Data":"\u6570\u636e","DebugMode":"\u4f18\u5148\u7ea7\u6807\u8bb0","Delete":"\u5220\u9664","DeleteTorrent?":"\u5220\u9664\u79cd\u5b50\uff1f","DeleteTorrents?":"\u5220\u9664\u6240\u6709\u79cd\u5b50\uff1f","DetailedCacheView":{"button":"\u67e5\u770b\u7f13\u5b58\u8be6\u60c5","header":"$t(DetailedCacheView.button)"},"Details":"\u8be6\u7ec6\u4fe1\u606f","Donate?":"\u60f3\u8981\u6350\u8d60\uff1f","Donate":"\u6350\u8d60","DownloadPlaylist":"\u4e0b\u8f7d\u64ad\u653e\u5217\u8868","DownloadSpeed":"\u4e0b\u8f7d\u901f\u5ea6","Drop":"\u505c\u6b62","DropTorrent":"\u505c\u6b62\u79cd\u5b50","Edit":"\u7f16\u8f91","EditTorrent":"\u7f16\u8f91\u79cd\u5b50","Episode":"\u5267\u96c6","FromLatestFile":"\u6765\u81ea\u6700\u65b0\u6587\u4ef6","Full":"\u5168\u90e8","GB":"GB","Gbps":"Gbps","Host":"\u4e3b\u673a","Info":"\u4fe1\u606f","KB":"KB","kbps":"kbps","Kilobytes":"\u5343\u5b57\u8282","LatestFilePlayed":"\u6700\u8fd1\u64ad\u653e\u7684\u6587\u4ef6\uff1a","Links":"\u94fe\u63a5","MB":"MB","Mbps":"Mbps","Name":"\u540d\u79f0","NoTorrentsAdded":"\u6ca1\u6709\u6dfb\u52a0\u79cd\u5b50","Offline":"\u79bb\u7ebf","OK":"\u786e\u5b9a","OpenLink":"\u6253\u5f00\u94fe\u63a5","Peers":"Peers","PiecesCount":"\u5757\u6570\u91cf","PiecesLength":"\u5757\u957f\u5ea6","Playlist":"\u64ad\u653e\u5217\u8868","Preload":"\u9884\u52a0\u8f7d","ProjectSource":"\u9879\u76eeGitHub","PWAGuide":{"Header":"\u5b89\u88c5\u5e94\u7528\u7a0b\u5e8f","Description":"\u5c06\u5e94\u7528\u7a0b\u5e8f\u5b89\u88c5\u5230\u60a8\u7684\u8bbe\u5907\u4e0a\uff0c\u4ee5\u4fbf\u968f\u65f6\u65b9\u4fbf\u5730\u8bbf\u95ee\u3002\u65e0\u9700\u5e94\u7528\u5546\u5e97\u3001\u65e0\u9700\u4e0b\u8f7d\u3002","VLC":"\u6dfb\u52a0VLC\u6309\u94ae\u4ee5\u5728\u624b\u673a\u4e0a\u7acb\u5373\u6253\u5f00\u89c6\u9891","FirstStep":"\u70b9\u51fb","SecondStep":{"Select":"\u9009\u62e9","AddToHomeScreen":"\u6dfb\u52a0\u5230\u4e3b\u5c4f\u5e55"}},"Releases":"TorrServer\u53d1\u884c\u7248","RemoveAll":"\u5168\u90e8\u5220\u9664","RemoveViews":"\u79fb\u9664\u89c6\u56fe\u72b6\u6001","Resolution":"\u5206\u8fa8\u7387","Save":"\u4fdd\u5b58","ScrollDown":"\u5411\u4e0b\u6eda\u52a8","Season":"\u5b63","Sec":"\u79d2","Seconds":"\u79d2","SelectSeason":"\u9009\u62e9\u5b63","SettingsDialog":{"AddRetrackers":"\u6dfb\u52a0retrackers","AdditionalSettings":"\u9644\u52a0\u8bbe\u7f6e","MobileAppSettings":"\u79fb\u52a8APP\u8bbe\u7f6e","CacheBeforeReaderDesc":"\u5728\u64ad\u653e\u5e27\u524d\u9762\u7684\u7f13\u5b58","CacheAfterReaderDesc":"\u5728\u64ad\u653e\u5e27\u540e\u9762\u7684\u7f13\u5b58","CacheSize":"\u7f13\u5b58\u5927\u5c0f","CacheSettings":"\u7f13\u5b58\u8bbe\u7f6e","CacheStorageLocation":"\u7f13\u5b58\u5b58\u50a8\u4f4d\u7f6e","ConnectionsLimit":"\u8fde\u63a5\u9650\u5236","ConnectionsLimitHint":"\u63a8\u835020-25","DHT":"DHT\uff08\u5206\u5e03\u5f0f\u54c8\u5e0c\u8868\uff09","DisableDHTHint":"\u542f\u52a8\u670d\u52a1\u5668\u540e\u65e0\u7f51\u7edc\u65f6\u7981\u7528","DisablePEXHint":"\u6700\u597d\u4fdd\u6301\u542f\u7528\u72b6\u6001","DisableTCPHint":"\u5728\u672a\u542f\u7528\u03bcTP\u7684\u60c5\u51b5\u4e0b\u4e0d\u8981\u7981\u7528","DisableUPNPHint":"\u5728\u8def\u7531\u5668\u4e0a\u81ea\u52a8\u6253\u5f00\u7aef\u53e3","DisableUTPHint":"\u5efa\u8bae\u5728 Windows \u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7981\u7528","Disk":"\u78c1\u76d8","DLNA":"DLNA\u5a92\u4f53\u670d\u52a1\u5668","DontAddRetrackers":"\u4e0d\u52a0retrackers","DownloadRateLimit":"\u4e0b\u8f7d\u901f\u5ea6\u9650\u5236","EnableDebug":"\u542f\u7528\u8c03\u8bd5\u670d\u52a1\u5668\u65e5\u5fd7","EnableIPv6Hint":"\u4ec5\u5728ISP\u652f\u6301\u65f6\u542f\u7528","ForceEncrypt":"\u5f3a\u5236\u52a0\u5bc6\u6807\u5934","ForceEncryptHint":"\u53ef\u4ee5\u9632\u6b62\u8fd0\u8425\u5546\u963b\u6b62\u79cd\u5b50","FriendlyName":"DLNA\u670d\u52a1\u5668\u540d\u79f0","FriendlyNameHint":"\u7559\u7a7a\u4f7f\u7528\u9ed8\u8ba4\u503c","EnableRutorSearch":"\u6253\u5f00RuTor\u79cd\u5b50\u641c\u7d22","EnableRutorSearchHint":"\u60a8\u53ef\u4ee5\u901a\u8fc7RuTor\u641c\u7d22\u79cd\u5b50\uff0c\u5373\u4f7fRuTor\u4e0d\u53ef\u7528\u3002\u6ce8\u610f\uff1a\u6570\u636e\u5e93\u5360\u7528\u5927\u7ea6500 MB\u7684\u5b58\u50a8\u3002","PeersListenPort":"Peers\u76d1\u542c\u7aef\u53e3","PeersListenPortHint":"1024 - 65535\uff0c0 - \u81ea\u52a8","PreloadCache":"\u64ad\u653e\u524d\u9884\u52a0\u8f7d\u7f13\u5b58","ProMode":"\u4e13\u4e1a\u6a21\u5f0f","RAM":"\u5185\u5b58","ReaderReadAHead":"\u9884\u8bfb\u7f13\u5b58 (5-100%, rec. 95%)","RemoveCacheOnDrop":"\u5220\u9664\u5df2\u505c\u7528\u79cd\u5b50\u5728\u78c1\u76d8\u4e0a\u7684\u7f13\u5b58","RemoveCacheOnDropDesc":"\u5982\u679c\u7981\u7528\uff0c\u7f13\u5b58\u4f1a\u5728\u5220\u9664\u79cd\u5b50\u65f6\u79fb\u9664\u3002","RemoveRetrackers":"\u5220\u9664retrackers","ReplaceRetrackers":"\u66ff\u6362retrackers","RetrackersMode":"Retrackers\u6a21\u5f0f","ResetToDefault":"\u91cd\u7f6e\u4e3a\u9ed8\u8ba4\u503c","Settings":"\u8bbe\u7f6e","TorrentDisconnectTimeout":"\u79cd\u5b50\u65ad\u5f00\u8d85\u65f6","TorrentsSavePath":"\u79cd\u5b50\u7f13\u5b58\u4fdd\u5b58\u8def\u5f84","Upload":"\u4e0a\u4f20","UploadHint":"\u4e0d\u5efa\u8bae\u7981\u7528","UploadRateLimit":"\u4e0a\u4f20\u901f\u5ea6\u9650\u5236","UseDiskDesc":"\u6700\u597d\u4f7f\u7528\u5185\u5b58\u6216\u56fa\u6001\u5b58\u50a8\u4f5c\u4e3a\u7f13\u5b58","Tabs":{"Main":"\u4e3b\u8981","Additional":"\u9644\u52a0","AdditionalDisabled":"\uff08\u542f\u7528\u4e13\u4e1a\u6a21\u5f0f\uff09","App":"App"},"UseVLC":"\u63d0\u793a\u5728VLC\u4e2d\u6253\u5f00\u89c6\u9891","UseVLCHint":"\u5c06VLC\u64ad\u653e\u5668\u6309\u94ae\u6dfb\u52a0\u5230\u79cd\u5b50\u5185\u5bb9\u5217\u8868"},"Size":"\u5927\u5c0f","SpecialThanks":"\u7279\u522b\u611f\u8c22","Speed":"\u901f\u5ea6","Support":"\u652f\u6301","TB":"TB","Tbps":"Tbps","ThanksToEveryone":"\u611f\u8c22\u6240\u6709\u6d4b\u8bd5\u548c\u5e2e\u52a9\u7684\u4eba\u3002","TorrentAdded":"\u5df2\u6dfb\u52a0","TorrentClosed":"\u5df2\u5173\u95ed","TorrentContent":"\u79cd\u5b50\u5185\u5bb9","TorrentDetails":"\u79cd\u5b50\u8be6\u60c5","TorrentGettingInfo":"\u83b7\u53d6\u4fe1\u606f","TorrentInDb":"\u5728\u6570\u636e\u5e93\u4e2d","TorrentPreload":"\u9884\u52a0\u8f7d","TorrentSize":"\u79cd\u5b50\u5927\u5c0f","TorrentState":"\u63a7\u5236","TorrentStatus":"\u79cd\u5b50\u72b6\u6001","TorrentWorking":"\u6d3b\u8dc3","TurnOff":"\u5173\u95ed","UploadFile":"\u4e0a\u4f20\u6587\u4ef6","UploadSpeed":"\u4e0a\u4f20\u901f\u5ea6","Viewed":"\u67e5\u770b"}')},343:function(e,t){},346:function(e,t){},348:function(e,t){},350:function(e,t){},396:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n(17),i=n.n(r),o=n(63),c=n(9),s=n(487),l=n(66),d=n(471),b=n(488),p=n(489),j=n(490),u=n(491),h=n(492),x=n(493),g=window.location,O=g.protocol,m=g.hostname,f=g.port,C="".concat(O,"//").concat(m).concat(f?":".concat(f):""),v=function(){return"".concat(C,"/torrents")},S=function(){return"".concat(C,"/viewed")},y=function(){return"".concat(C,"/settings")},w=function(){return"".concat(C,"/stream")},D=function(){return"".concat(C,"/echo")},T=function(){return"".concat(C,"/stream")},k=n(187),P=n(23),M=n.n(P),L=n(12),R=n(22),A=n(469),B=n(470),F=n(472),E=n(75),H=n(105),N=n(33),z=n(133),G=n(89),I=n(189),U=n(190),V=n(191),W=n(192),Z=n(193);z.a.use(I.a).use(G.e).init({fallbackLng:"en",interpolation:{escapeValue:!1},resources:{en:{translation:U},ru:{translation:V},ua:{translation:W},zh:{translation:Z}}});var _=z.a;function K(e){if(!e)return"";var t=Math.floor(Math.log(e)/Math.log(1024));return"".concat(1*(e/Math.pow(1024,t)).toFixed(2)," ").concat([_.t("B"),_.t("KB"),_.t("MB"),_.t("GB"),_.t("TB")][t])}function J(e){if(!e)return"";var t=Math.floor(Math.log(8*e)/Math.log(1e3));return"".concat(1*(8*e/Math.pow(1e3,t)).toFixed(0)," ").concat([_.t("bps"),_.t("kbps"),_.t("Mbps"),_.t("Gbps"),_.t("Tbps")][t])}function X(e){return e&&e.connected_seeders?"".concat(e.connected_seeders," \xb7 ").concat(e.active_peers," / ").concat(e.total_peers):null}var Y=function(e){var t=e;[["(",")"],["[","]"],["{","}"]].forEach((function(e){var n="\\".concat(e[0]),a=new RegExp(n,"g"),r=Object(N.a)(t.matchAll(a)).length,i="\\".concat(e[1]),o=new RegExp(i,"g");if(r!==Object(N.a)(t.matchAll(o)).length){var c="(\\".concat(e[0],")(?!.*\\1).*"),s=new RegExp(c,"g");t=t.replace(s,"")}}));var n=!!t.match(/\.{3}$/g),a=t.replace(/[\\.| ]+$/g,"").trim();return n?"".concat(a,".."):a},$=function(){var e=Object(H.a)(Object(E.a)().mark((function e(){var t,n;return Object(E.a)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,M.a.post(v(),{action:"list"});case 3:return t=e.sent,n=t.data,e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),new Error(null);case 11:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(){return e.apply(this,arguments)}}(),Q=window.matchMedia("screen and (display-mode: standalone)").matches,q=n(36),ee=n(1),te=function(e){var t=e.color,n=Object(q.a)().palette.primary.main;return Object(ee.jsx)("svg",{height:"80px",width:"80px",fill:t||n,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1",x:"0px",y:"0px",viewBox:"0 0 100 100",enableBackground:"new 0 0 100 100",xmlSpace:"preserve",children:Object(ee.jsxs)("g",{children:[Object(ee.jsx)("path",{d:"M18.293,93.801c0.066,0.376,0.284,0.718,0.597,0.937c0.313,0.219,0.708,0.307,1.085,0.241l70.058-12.353 c0.376-0.066,0.718-0.284,0.937-0.597c0.219-0.313,0.307-0.708,0.24-1.085l-9.502-53.891c-0.139-0.79-0.892-1.317-1.682-1.178 l-19.402,3.421L47.997,14.16c0.241-0.706,0.375-1.456,0.375-2.229c0-0.399-0.035-0.804-0.106-1.209C47.671,7.363,44.757,5,41.455,5 c-0.4,0-0.804,0.035-1.209,0.106h0c-3.359,0.595-5.723,3.509-5.723,6.812c0,0.4,0.035,0.804,0.106,1.209 c0.178,1.005,0.567,1.918,1.109,2.709l-6.875,19.061L9.968,38.228c-0.79,0.139-1.317,0.892-1.177,1.682L18.293,93.801z M40.75,7.966L40.75,7.966c0.239-0.042,0.474-0.062,0.705-0.062c1.909,0,3.612,1.373,3.953,3.324v0 c0.042,0.238,0.062,0.473,0.062,0.704c0,1.908-1.373,3.612-3.323,3.953h0.001c-0.238,0.042-0.473,0.062-0.705,0.062 c-1.908,0-3.612-1.373-3.953-3.323c-0.042-0.238-0.062-0.473-0.062-0.705C37.427,10.01,38.799,8.306,40.75,7.966z M38.059,17.96 c1.012,0.569,2.17,0.89,3.383,0.89c0.399,0,0.804-0.034,1.208-0.106h0.001c1.48-0.263,2.766-0.976,3.743-1.974l10.935,13.108 L32.16,34.315L38.059,17.96z M29.978,37.648c0.136-0.004,0.268-0.029,0.396-0.07l29.75-5.246c0.134-0.006,0.266-0.027,0.395-0.07 l18.582-3.277l8.998,51.031L20.9,91.867l-8.998-51.032L29.978,37.648z"}),Object(ee.jsx)("path",{d:"M49.984,75.561c0.809,0,1.627-0.065,2.449-0.199l0.001,0c7.425-1.213,12.701-7.627,12.701-14.919 c0-0.809-0.065-1.627-0.199-2.449c-1.213-7.425-7.626-12.701-14.919-12.701c-0.808,0-1.627,0.065-2.45,0.199 c-7.425,1.213-12.701,7.626-12.701,14.918c0,0.808,0.065,1.627,0.199,2.449C36.278,70.284,42.692,75.561,49.984,75.561z M51.967,72.496c-0.668,0.109-1.33,0.161-1.983,0.161c-5.883,0-11.079-4.265-12.053-10.265c-0.109-0.668-0.161-1.33-0.161-1.983 c0-2.108,0.555-4.123,1.534-5.892l19.693,14.176C57.206,70.645,54.782,72.039,51.967,72.496z M48.034,48.357L48.034,48.357 c0.668-0.109,1.329-0.161,1.983-0.161c5.882,0,11.079,4.265,12.053,10.265c0.109,0.667,0.161,1.329,0.161,1.983 c0,2.109-0.556,4.127-1.536,5.897L41.001,52.163C42.791,50.21,45.217,48.814,48.034,48.357z"}),Object(ee.jsx)("polygon",{points:"47.567,45.492 47.567,45.492 47.568,45.491 "})]})})},ne=function(){var e=Object(q.a)().palette.primary.main;return Object(ee.jsx)("svg",{height:"100px",width:"100px",fill:e,viewBox:"0 0 452 452",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:Object(ee.jsxs)("g",{id:"#000000",children:[Object(ee.jsx)("path",{opacity:"1.00",d:" M 210.49 18.69 C 244.92 16.12 280.02 22.13 311.46 36.47 C 344.90 51.54 374.16 75.69 395.41 105.58 C 415.62 133.87 428.55 167.34 432.48 201.89 C 438.07 248.86 427.02 297.61 401.45 337.43 C 382.92 366.59 357.02 391.04 326.80 407.80 C 300.81 422.31 271.64 431.08 241.96 433.26 C 207.37 435.97 172.14 429.83 140.54 415.51 C 109.95 401.69 82.82 380.33 62.16 353.86 C 39.25 324.67 24.38 289.21 19.78 252.38 C 14.94 214.51 20.65 175.31 36.47 140.54 C 54.11 101.38 84.24 67.99 121.37 46.39 C 148.44 30.52 179.19 20.98 210.49 18.69 M 213.46 36.60 C 178.91 38.80 145.03 50.71 116.76 70.72 C 84.67 93.21 59.84 125.88 46.91 162.88 C 34.87 196.99 32.96 234.54 41.25 269.73 C 48.89 302.45 65.53 332.98 88.79 357.21 C 113.91 383.56 146.78 402.45 182.25 410.72 C 216.67 418.86 253.37 417.21 286.87 405.85 C 329.85 391.49 367.13 361.01 389.89 321.85 C 406.02 294.41 414.96 262.84 415.73 231.03 C 416.71 196.59 408.11 161.91 390.97 132.00 C 372.31 99.13 343.57 72.09 309.61 55.49 C 279.95 40.89 246.43 34.40 213.46 36.60 Z"}),Object(ee.jsx)("path",{opacity:"1.00",d:" M 217.02 117.63 C 223.01 117.45 228.99 117.45 234.98 117.63 C 235.16 150.72 234.93 183.81 235.09 216.89 C 268.18 217.03 301.28 216.82 334.38 216.99 C 334.57 222.99 334.57 229.00 334.38 235.01 C 301.28 235.18 268.18 234.97 235.09 235.11 C 234.93 268.19 235.16 301.28 234.98 334.37 C 228.99 334.55 223.00 334.55 217.02 334.37 C 216.84 301.28 217.07 268.19 216.92 235.11 C 183.82 234.97 150.72 235.17 117.62 235.01 C 117.43 229.00 117.43 222.99 117.62 216.99 C 150.72 216.82 183.82 217.03 216.91 216.89 C 217.07 183.81 216.84 150.72 217.02 117.63 Z"})]})})},ae=function(e){var t=e.color,n=e.width,a=Object(q.a)().palette.primary.main;return Object(ee.jsxs)("svg",{width:n||"100%",height:"100%",viewBox:"96.96632385253906 377.9800109863281 873.03369140625 310.9999694824219",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 603.05 378.50 C 648.01 378.10 692.99 378.30 737.96 378.24 C 746.80 377.82 755.66 378.04 764.51 378.02 C 764.49 396.01 764.50 414.00 764.50 432.00 C 833.00 432.01 901.50 431.99 970.00 432.00 C 970.00 499.67 970.00 567.33 970.00 635.00 C 941.01 635.01 912.02 634.98 883.04 635.01 C 868.37 635.70 853.70 634.86 839.03 635.00 C 814.19 635.00 789.35 634.99 764.50 635.00 C 764.50 652.99 764.49 670.99 764.51 688.98 C 722.02 688.64 679.51 688.76 637.01 688.76 C 610.36 688.24 583.70 688.61 557.04 688.50 C 535.36 688.64 513.69 688.06 492.00 688.25 C 467.01 688.45 442.03 687.89 417.04 688.00 C 393.35 688.06 369.67 687.54 345.97 687.76 C 331.65 687.28 317.32 687.58 303.00 687.51 C 287.69 686.89 272.35 687.61 257.03 686.99 C 244.25 687.26 231.37 686.92 218.84 684.09 C 183.39 676.56 151.36 655.48 129.16 627.00 C 110.45 603.11 98.57 573.55 97.40 543.09 C 95.46 518.81 100.09 494.17 110.06 471.99 C 126.89 434.21 159.00 403.08 198.12 389.13 C 227.91 377.22 260.63 379.63 292.01 379.76 C 308.00 379.13 324.02 379.87 340.01 379.25 C 355.65 379.17 371.30 379.41 386.95 379.13 C 409.62 378.70 432.32 379.37 455.00 378.74 C 504.35 378.92 553.69 378.31 603.05 378.50 M 348.01 411.51 C 320.98 411.52 293.95 411.45 266.93 411.54 C 256.91 412.17 246.82 411.10 236.84 412.46 C 208.12 415.88 181.14 430.38 161.51 451.48 C 144.71 469.43 133.29 492.57 130.42 517.07 C 124.64 554.31 138.80 593.31 165.32 619.73 C 177.83 632.43 193.39 641.88 210.05 648.05 C 228.40 654.56 248.11 655.87 267.42 655.59 C 319.94 655.19 372.45 655.94 424.97 655.75 C 450.32 655.57 475.67 656.17 501.02 656.00 C 525.32 656.12 549.63 655.73 573.92 656.26 C 626.62 656.05 679.30 656.63 732.00 656.50 C 732.00 574.50 732.00 492.50 732.00 410.51 C 689.66 410.38 647.34 410.94 605.01 410.75 C 587.68 410.55 570.37 411.13 553.05 411.00 C 526.36 411.00 499.67 411.01 472.98 411.00 C 431.33 411.69 389.65 410.81 348.01 411.51 M 764.49 464.27 C 764.51 510.42 764.51 556.58 764.49 602.73 C 822.24 602.77 879.99 602.74 937.74 602.75 C 938.25 556.59 937.90 510.41 937.99 464.25 C 880.16 464.27 822.32 464.23 764.49 464.27 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 842.49 484.02 C 853.57 483.79 864.63 484.32 875.71 484.25 C 876.25 495.35 875.68 506.46 875.04 517.54 C 864.40 517.59 853.77 516.92 843.13 517.38 C 842.74 516.32 842.40 515.20 842.48 514.06 C 842.50 504.04 842.50 494.03 842.49 484.02 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 287.02 517.49 C 345.02 517.51 403.02 517.49 461.02 517.50 C 499.18 517.57 537.34 517.29 575.49 517.75 C 575.51 528.25 575.51 538.75 575.49 549.25 C 531.01 549.74 486.52 549.41 442.04 549.50 C 390.37 549.51 338.69 549.49 287.02 549.51 C 286.99 538.84 286.99 528.16 287.02 517.49 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 842.78 549.74 C 853.53 549.91 864.26 549.51 875.01 549.44 C 875.73 560.52 876.27 571.65 875.71 582.75 C 864.63 582.80 853.57 583.17 842.49 582.99 C 842.69 571.91 842.12 560.80 842.78 549.74 Z"})]})},re=function(e){var t=e.color,n=e.width,a=Object(q.a)().palette.primary.main;return Object(ee.jsxs)("svg",{width:n||"100%",height:"100%",viewBox:"13.928732872009277 69.97769927978516 172.15252685546875 60.067893981933594",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 18.20 70.32 C 19.46 70.07 20.73 69.96 22.01 69.98 C 74.36 70.03 126.72 69.97 179.08 70.01 C 182.16 69.72 185.50 71.74 185.82 74.99 C 186.15 79.61 186.20 84.29 185.78 88.91 C 183.66 90.31 179.87 90.73 180.00 93.99 C 179.86 97.27 183.68 97.69 185.79 99.12 C 186.27 107.07 185.91 115.06 185.99 123.03 C 186.29 126.14 184.25 129.52 180.97 129.83 C 175.33 130.27 169.65 129.88 164.00 130.00 C 147.71 129.85 131.39 130.31 115.12 129.78 C 112.92 127.53 114.51 123.74 113.95 120.86 C 114.67 118.55 111.27 116.64 110.24 119.19 C 109.73 122.42 110.24 125.71 109.79 128.95 C 108.65 130.43 106.57 129.83 104.96 130.03 C 76.94 129.95 48.93 130.04 20.91 129.99 C 17.47 130.37 13.95 127.70 14.07 124.10 C 14.02 115.76 13.75 107.39 14.22 99.07 C 16.33 97.68 20.10 97.27 20.00 94.03 C 20.17 90.71 16.28 90.35 14.20 88.85 C 13.80 84.56 13.92 80.24 14.07 75.94 C 14.03 73.43 15.75 70.97 18.20 70.32 M 18.23 75.15 C 17.73 78.78 18.05 82.46 18.02 86.11 C 21.05 87.67 24.20 90.21 23.99 94.00 C 24.20 97.79 21.03 100.31 18.01 101.89 C 18.15 109.55 17.67 117.24 18.22 124.87 C 18.45 125.10 18.90 125.56 19.13 125.78 C 26.06 126.33 33.03 125.84 39.98 126.00 C 39.99 123.36 40.01 120.72 40.09 118.08 C 62.07 117.87 84.05 118.10 106.03 117.96 C 107.62 116.17 109.32 113.83 112.02 114.00 C 114.70 113.85 116.37 116.19 117.96 117.96 C 131.94 118.09 145.93 117.88 159.91 118.08 C 159.98 120.72 160.01 123.36 160.02 126.00 C 166.94 125.83 173.90 126.34 180.80 125.78 C 181.05 125.57 181.54 125.14 181.78 124.93 C 182.32 117.28 181.85 109.57 181.99 101.90 C 178.96 100.31 175.78 97.79 176.01 93.99 C 175.79 90.20 178.94 87.66 181.98 86.11 C 181.94 82.47 182.27 78.80 181.77 75.19 C 181.16 73.66 179.34 74.17 178.06 73.99 C 126.04 74.00 74.01 74.01 21.99 73.99 C 20.69 74.16 18.91 73.67 18.23 75.15 M 42.00 120.00 C 42.00 122.00 42.00 124.00 42.00 126.00 C 43.33 126.00 44.67 126.00 46.00 126.00 C 46.00 124.00 46.00 122.00 46.00 120.00 C 44.67 120.00 43.33 120.00 42.00 120.00 M 48.00 120.00 C 48.00 122.00 48.00 124.00 48.00 126.00 C 49.33 126.00 50.67 126.00 52.00 126.00 C 52.00 124.00 52.00 122.00 52.00 120.00 C 50.67 120.00 49.33 120.00 48.00 120.00 M 54.00 120.00 C 54.00 122.00 54.00 124.00 54.00 126.00 C 55.33 126.00 56.67 126.00 58.00 126.00 C 58.00 124.00 58.00 122.00 58.00 120.00 C 56.67 120.00 55.33 120.00 54.00 120.00 M 60.00 120.00 C 60.00 122.00 60.00 124.00 60.00 126.00 C 61.33 126.00 62.67 126.00 64.00 126.00 C 64.00 124.00 64.00 122.00 64.00 120.00 C 62.67 120.00 61.33 120.00 60.00 120.00 M 66.00 120.00 C 66.00 122.00 66.00 124.00 66.00 126.00 C 67.33 126.00 68.67 126.00 70.00 126.00 C 70.00 124.00 70.00 122.00 70.00 120.00 C 68.67 120.00 67.33 120.00 66.00 120.00 M 72.00 120.00 C 72.00 122.00 72.00 124.00 72.00 126.00 C 73.33 126.00 74.67 126.00 76.00 126.00 C 76.00 124.00 76.00 122.00 76.00 120.00 C 74.67 120.00 73.33 120.00 72.00 120.00 M 78.00 120.00 C 78.00 122.00 78.00 124.00 78.00 126.00 C 79.33 126.00 80.67 126.00 82.00 126.00 C 82.00 124.00 82.00 122.00 82.00 120.00 C 80.67 120.00 79.33 120.00 78.00 120.00 M 84.00 120.00 C 84.00 122.00 84.00 124.00 84.00 126.00 C 85.33 126.00 86.67 126.00 88.00 126.00 C 88.00 124.00 88.00 122.00 88.00 120.00 C 86.67 120.00 85.33 120.00 84.00 120.00 M 90.00 120.00 C 90.00 122.00 90.00 124.00 90.00 126.00 C 91.33 126.00 92.67 126.00 94.00 126.00 C 94.00 124.00 94.00 122.00 94.00 120.00 C 92.67 120.00 91.33 120.00 90.00 120.00 M 96.00 120.00 C 96.00 122.00 96.00 124.00 96.00 126.00 C 97.33 126.00 98.67 126.00 100.00 126.00 C 100.00 124.00 100.00 122.00 100.00 120.00 C 98.67 120.00 97.33 120.00 96.00 120.00 M 102.00 120.00 C 102.00 122.00 102.00 124.00 102.00 126.00 C 103.33 126.00 104.67 126.00 106.00 126.00 C 106.00 124.00 106.00 122.00 106.00 120.00 C 104.67 120.00 103.33 120.00 102.00 120.00 M 118.00 120.00 C 118.00 122.00 118.00 124.00 118.00 126.00 C 119.33 126.00 120.67 126.00 122.00 126.00 C 122.00 124.00 122.00 122.00 122.00 120.00 C 120.67 120.00 119.33 120.00 118.00 120.00 M 124.00 120.00 C 124.00 122.00 124.00 124.00 124.00 126.00 C 125.33 126.00 126.67 126.00 128.00 126.00 C 128.00 124.00 128.00 122.00 128.00 120.00 C 126.67 120.00 125.33 120.00 124.00 120.00 M 130.00 120.00 C 130.00 122.00 130.00 124.00 130.00 126.00 C 131.33 126.00 132.67 126.00 134.00 126.00 C 134.00 124.00 134.00 122.00 134.00 120.00 C 132.67 120.00 131.33 120.00 130.00 120.00 M 136.00 120.00 C 136.00 122.00 136.00 124.00 136.00 126.00 C 137.33 126.00 138.67 126.00 140.00 126.00 C 140.00 124.00 140.00 122.00 140.00 120.00 C 138.67 120.00 137.33 120.00 136.00 120.00 M 142.00 120.00 C 142.00 122.00 142.00 124.00 142.00 126.00 C 143.33 126.00 144.66 126.00 146.00 126.00 C 146.00 124.00 146.00 122.00 146.00 120.00 C 144.67 120.00 143.33 120.00 142.00 120.00 M 148.00 120.00 C 148.00 122.00 148.00 124.00 148.00 126.00 C 149.33 126.00 150.66 126.00 152.00 126.00 C 152.00 124.00 152.00 122.00 152.00 120.00 C 150.67 120.00 149.33 120.00 148.00 120.00 M 154.00 120.00 C 154.00 122.00 154.00 124.00 154.00 126.00 C 155.33 126.00 156.66 126.00 158.00 126.00 C 158.00 124.00 158.00 122.00 158.00 120.00 C 156.67 120.00 155.33 120.00 154.00 120.00 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 30.03 81.93 C 29.85 80.12 30.82 77.95 32.93 78.11 C 37.91 77.93 42.93 77.74 47.89 78.25 C 50.98 79.21 49.68 83.33 50.10 85.77 C 49.59 85.78 48.57 85.80 48.06 85.80 C 48.01 83.89 47.96 81.98 47.90 80.08 C 42.62 79.96 37.35 79.96 32.08 80.08 C 31.95 89.36 31.95 98.64 32.08 107.91 C 37.36 108.05 42.64 108.05 47.92 107.91 C 48.02 104.01 48.01 100.11 48.02 96.21 C 48.51 96.21 49.48 96.21 49.97 96.20 C 49.93 100.09 50.29 104.01 49.76 107.87 C 49.40 110.05 46.77 109.95 45.09 110.01 C 40.74 109.96 36.36 110.29 32.04 109.74 C 29.91 109.31 30.07 106.74 29.99 105.08 C 30.02 97.37 29.93 89.65 30.03 81.93 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 56.08 78.25 C 61.33 77.80 66.67 77.79 71.92 78.25 C 74.45 78.84 73.88 82.03 74.03 83.96 C 73.88 91.66 74.20 99.37 73.89 107.07 C 73.99 110.35 68.80 111.17 67.40 108.44 C 68.91 108.19 70.43 107.96 71.95 107.75 C 72.01 98.53 72.08 89.30 71.91 80.08 C 66.64 79.96 61.36 79.96 56.08 80.08 C 55.95 89.35 55.95 98.63 56.08 107.90 C 58.65 107.98 61.23 108.01 63.80 108.04 C 63.80 108.54 63.78 109.52 63.78 110.02 C 60.75 109.51 55.74 111.45 54.25 107.89 C 53.63 99.96 54.19 91.96 53.97 84.00 C 54.13 82.06 53.53 78.84 56.08 78.25 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 79.38 78.49 C 84.51 77.49 89.88 78.03 95.10 78.12 C 97.17 77.98 98.14 80.11 97.97 81.89 C 98.04 89.96 98.04 98.04 97.97 106.11 C 98.13 107.87 97.20 109.99 95.14 109.88 C 90.11 110.08 85.02 110.27 80.01 109.73 C 77.91 109.26 78.05 106.71 77.99 105.04 C 77.99 97.70 77.99 90.35 77.99 83.01 C 78.12 81.47 77.82 79.41 79.38 78.49 M 80.08 80.08 C 79.95 89.36 79.95 98.64 80.08 107.92 C 85.36 108.04 90.64 108.04 95.92 107.92 C 96.05 98.64 96.05 89.36 95.92 80.08 C 90.64 79.96 85.36 79.96 80.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 103.34 78.52 C 108.47 77.46 113.88 78.05 119.12 78.12 C 121.20 77.99 122.14 80.13 121.97 81.91 C 122.04 89.97 122.04 98.04 121.97 106.10 C 122.14 107.87 121.19 110.00 119.12 109.88 C 114.37 110.13 109.59 110.13 104.85 109.88 C 102.80 109.99 101.86 107.88 102.03 106.13 C 101.92 98.40 102.03 90.66 101.99 82.93 C 102.13 81.44 101.84 79.43 103.34 78.52 M 104.08 80.08 C 103.95 89.36 103.95 98.64 104.08 107.92 C 109.36 108.05 114.64 108.04 119.92 107.92 C 120.06 98.64 120.05 89.36 119.92 80.08 C 114.64 79.96 109.36 79.95 104.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 127.43 78.45 C 131.88 77.51 136.52 78.12 141.04 77.99 C 143.01 77.87 145.98 78.22 145.88 80.86 C 146.19 88.89 145.92 96.94 146.01 104.98 C 145.93 106.67 146.12 109.28 143.96 109.74 C 141.40 110.19 138.79 109.99 136.21 110.02 C 136.21 109.52 136.21 108.53 136.21 108.04 C 138.78 108.01 141.35 107.98 143.92 107.91 C 144.05 98.63 144.06 89.35 143.92 80.08 C 138.64 79.96 133.36 79.96 128.09 80.08 C 128.02 82.64 127.99 85.21 127.96 87.78 C 127.47 87.79 126.48 87.79 125.99 87.79 C 126.38 84.77 124.90 80.72 127.43 78.45 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 151.38 78.48 C 155.82 77.48 160.48 78.14 165.01 77.99 C 167.01 77.85 170.02 78.25 169.89 80.92 C 170.18 88.94 169.92 96.98 170.01 105.01 C 170.13 107.00 169.77 109.99 167.12 109.88 C 162.10 110.07 157.02 110.27 152.02 109.74 C 149.89 109.27 150.05 106.67 149.99 104.99 C 149.99 97.64 149.99 90.30 149.99 82.95 C 150.12 81.43 149.84 79.39 151.38 78.48 M 152.08 80.08 C 151.95 89.36 151.95 98.64 152.08 107.92 C 157.36 108.04 162.64 108.04 167.92 107.92 C 168.05 98.64 168.05 89.36 167.92 80.08 C 162.64 79.96 157.36 79.96 152.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 48.01 88.19 C 48.50 88.19 49.49 88.19 49.99 88.19 C 49.98 90.06 49.98 91.92 49.99 93.78 C 49.49 93.79 48.51 93.79 48.01 93.79 C 48.01 91.92 48.01 90.06 48.01 88.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 126.01 92.19 C 126.51 92.19 127.49 92.19 127.99 92.19 C 127.98 94.06 127.98 95.93 127.98 97.80 C 127.49 97.79 126.50 97.78 126.01 97.78 C 126.01 95.91 126.01 94.05 126.01 92.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 125.98 100.19 C 126.48 100.19 127.47 100.19 127.96 100.19 C 127.99 102.75 128.02 105.32 128.08 107.88 C 129.98 107.95 131.89 108.01 133.81 108.07 C 133.80 108.57 133.78 109.59 133.77 110.10 C 131.39 109.71 128.07 110.79 126.45 108.53 C 125.66 105.83 126.07 102.96 125.98 100.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 24.41 112.66 C 27.59 110.67 32.28 113.20 32.00 117.04 C 32.18 120.52 28.24 123.02 25.11 121.66 C 21.33 120.42 20.93 114.50 24.41 112.66 M 26.15 114.12 C 24.25 114.47 23.50 116.93 24.38 118.50 C 25.45 120.81 29.45 120.37 29.89 117.81 C 30.58 115.59 28.37 113.39 26.15 114.12 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 170.48 112.62 C 173.67 110.70 178.29 113.25 178.00 117.06 C 178.16 120.55 174.19 123.04 171.06 121.64 C 167.28 120.35 166.95 114.41 170.48 112.62 M 172.11 114.13 C 169.72 114.60 169.28 118.30 171.30 119.51 C 173.13 120.90 176.17 119.39 175.97 117.02 C 176.16 114.97 173.98 113.54 172.11 114.13 Z"})]})},ie=function(){var e=Object(q.a)().palette.primary.main,t="#00a572"===e?"#74c39c":"#4a5255";return Object(ee.jsxs)("svg",{width:"150px",height:"150px",viewBox:"0 0 512 512",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsxs)("g",{id:e,children:[Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 102.41 0.00 L 319.87 0.00 C 320.21 29.68 319.87 59.37 320.04 89.05 C 320.29 97.32 323.88 105.47 329.94 111.12 C 336.01 117.07 344.56 120.18 353.01 120.01 C 382.02 119.87 411.04 120.22 440.05 119.83 C 439.94 236.88 440.04 353.93 440.00 470.98 C 440.01 478.16 440.50 485.68 437.47 492.41 C 432.79 503.85 421.05 511.80 408.71 512.00 L 103.28 512.00 C 90.95 511.79 79.20 503.84 74.53 492.42 C 72.06 486.96 71.87 480.87 71.99 474.97 C 72.01 327.63 71.99 180.30 72.00 32.96 C 71.95 27.61 73.03 22.22 75.52 17.46 C 80.55 7.39 91.19 0.57 102.41 0.00 M 360.00 382.07 C 358.69 383.73 359.01 385.99 358.90 387.97 C 358.95 396.36 358.91 404.75 358.93 413.14 C 352.50 403.51 346.13 393.83 339.77 384.16 C 338.65 382.47 337.13 380.65 334.92 380.63 C 331.97 380.41 329.13 382.87 329.22 385.89 C 328.94 396.58 329.24 407.28 329.08 417.98 C 329.14 420.43 328.85 422.98 329.54 425.38 C 330.75 429.14 337.11 428.63 337.54 424.63 C 338.19 415.09 337.55 405.51 337.83 395.95 C 343.71 404.78 349.41 413.73 355.26 422.58 C 356.92 424.93 358.74 427.96 362.00 428.00 C 365.02 428.51 367.54 425.83 367.40 422.90 C 367.55 411.27 367.39 399.62 367.48 387.99 C 367.40 386.11 367.63 384.06 366.61 382.38 C 365.24 380.16 361.58 380.00 360.00 382.07 M 100.79 382.81 C 98.94 384.82 100.19 388.63 103.01 388.89 C 106.91 389.29 110.85 388.97 114.77 389.07 C 114.77 399.73 114.78 410.39 114.75 421.05 C 114.76 423.37 114.89 426.34 117.28 427.52 C 119.95 429.02 123.67 427.14 123.86 424.04 C 124.22 412.40 123.84 400.72 124.04 389.07 C 128.25 388.87 132.57 389.54 136.71 388.62 C 140.15 387.40 139.25 381.72 135.61 381.56 C 126.10 381.14 116.55 381.57 107.03 381.37 C 104.95 381.53 102.34 381.06 100.79 382.81 M 156.46 381.58 C 150.26 383.15 145.11 388.05 143.12 394.11 C 140.49 401.86 140.79 410.83 144.81 418.06 C 151.07 429.05 167.20 430.79 177.27 424.26 C 183.48 420.06 186.24 412.28 186.28 405.03 C 186.43 398.11 184.59 390.56 179.19 385.85 C 173.03 380.52 164.12 379.62 156.46 381.58 M 197.74 381.67 C 195.24 381.99 194.12 384.61 194.23 386.87 C 194.06 397.92 194.27 408.97 194.15 420.02 C 194.24 422.43 193.92 425.36 195.97 427.11 C 198.62 429.25 203.28 427.47 203.31 423.89 C 203.66 418.45 203.32 412.99 203.49 407.54 C 206.76 407.72 210.68 407.24 213.15 409.89 C 217.60 414.61 220.01 420.80 223.85 425.97 C 225.63 428.66 230.20 428.72 231.83 425.86 C 232.87 424.27 231.80 422.43 231.24 420.89 C 228.63 415.38 225.17 409.99 220.02 406.56 C 223.42 405.53 227.11 404.31 229.29 401.31 C 233.14 395.94 231.83 387.34 226.14 383.76 C 221.99 381.01 216.77 381.52 212.04 381.39 C 207.28 381.52 202.48 381.08 197.74 381.67 M 240.23 386.91 C 240.19 398.28 240.20 409.66 240.22 421.03 C 240.25 423.12 240.14 425.65 241.97 427.09 C 244.58 429.23 249.25 427.52 249.33 423.98 C 249.76 418.50 249.34 413.00 249.49 407.51 C 252.77 407.64 256.62 407.29 259.13 409.85 C 263.88 414.69 266.10 421.38 270.41 426.55 C 272.74 429.20 278.48 428.00 278.28 424.04 C 276.28 417.09 271.87 410.81 266.09 406.46 C 269.75 405.55 273.64 404.05 275.74 400.71 C 278.91 395.49 277.81 387.82 272.73 384.18 C 268.85 381.14 263.64 381.44 259.00 381.41 C 254.02 381.52 249.02 381.13 244.05 381.58 C 241.41 381.77 240.05 384.51 240.23 386.91 M 286.38 386.01 C 286.17 397.35 286.39 408.70 286.27 420.04 C 286.31 422.30 286.17 425.31 288.52 426.53 C 291.20 427.60 294.20 427.07 297.03 427.21 C 304.36 427.04 311.73 427.52 319.04 426.95 C 322.44 426.37 322.43 420.75 319.05 420.15 C 311.25 419.44 303.38 420.13 295.56 419.82 C 295.59 415.47 295.58 411.12 295.58 406.78 C 302.60 406.71 309.65 407.09 316.66 406.54 C 320.07 405.84 319.57 399.91 315.98 399.96 C 309.20 399.54 302.39 399.95 295.59 399.80 C 295.57 396.05 295.57 392.30 295.58 388.55 C 303.03 388.43 310.50 388.74 317.94 388.37 C 321.67 388.25 321.80 381.95 318.11 381.66 C 309.41 381.03 300.65 381.57 291.93 381.42 C 289.16 381.15 286.27 383.00 286.38 386.01 M 375.06 381.95 C 372.19 383.34 372.77 388.27 375.95 388.84 C 379.96 389.33 384.02 388.96 388.05 389.08 C 387.92 400.08 388.05 411.07 387.99 422.07 C 387.75 424.61 389.07 427.71 391.95 427.92 C 394.85 428.51 397.33 425.86 397.14 423.05 C 397.37 411.73 397.16 400.40 397.23 389.08 C 401.42 388.89 405.69 389.52 409.82 388.64 C 413.41 387.46 412.48 381.48 408.64 381.52 C 400.79 381.23 392.93 381.50 385.08 381.39 C 381.74 381.50 378.31 381.05 375.06 381.95 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 160.39 388.45 C 164.79 387.33 170.01 388.38 173.03 391.97 C 176.12 395.52 177.00 400.46 176.87 405.04 C 176.76 409.47 175.56 414.16 172.29 417.34 C 167.50 421.98 158.82 421.68 154.58 416.43 C 150.59 411.44 150.26 404.45 151.51 398.43 C 152.46 393.85 155.68 389.57 160.39 388.45 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 203.47 388.42 C 208.28 388.55 213.18 387.93 217.93 388.93 C 222.82 390.10 223.71 398.14 218.81 399.89 C 213.88 401.57 208.52 400.89 203.40 400.90 C 203.44 396.73 203.45 392.57 203.47 388.42 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 249.45 388.38 C 254.29 388.56 259.22 387.96 264.00 388.94 C 268.52 390.07 269.67 397.04 265.66 399.44 C 260.63 401.83 254.85 400.80 249.47 400.94 C 249.51 396.75 249.48 392.57 249.45 388.38 Z"})]}),Object(ee.jsx)("g",{id:t,children:Object(ee.jsx)("path",{fill:t,opacity:"1.00",d:" M 319.87 0.00 L 320.20 0.00 C 360.20 39.89 400.19 79.79 440.05 119.83 C 411.04 120.22 382.02 119.87 353.01 120.01 C 344.56 120.18 336.01 117.07 329.94 111.12 C 323.88 105.47 320.29 97.32 320.04 89.05 C 319.87 59.37 320.21 29.68 319.87 0.00 Z"})}),Object(ee.jsxs)("g",{id:"#fdfdfd",children:[Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 360.00 382.07 C 361.58 380.00 365.24 380.16 366.61 382.38 C 367.63 384.06 367.40 386.11 367.48 387.99 C 367.39 399.62 367.55 411.27 367.40 422.90 C 367.54 425.83 365.02 428.51 362.00 428.00 C 358.74 427.96 356.92 424.93 355.26 422.58 C 349.41 413.73 343.71 404.78 337.83 395.95 C 337.55 405.51 338.19 415.09 337.54 424.63 C 337.11 428.63 330.75 429.14 329.54 425.38 C 328.85 422.98 329.14 420.43 329.08 417.98 C 329.24 407.28 328.94 396.58 329.22 385.89 C 329.13 382.87 331.97 380.41 334.92 380.63 C 337.13 380.65 338.65 382.47 339.77 384.16 C 346.13 393.83 352.50 403.51 358.93 413.14 C 358.91 404.75 358.95 396.36 358.90 387.97 C 359.01 385.99 358.69 383.73 360.00 382.07 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 100.79 382.81 C 102.34 381.06 104.95 381.53 107.03 381.37 C 116.55 381.57 126.10 381.14 135.61 381.56 C 139.25 381.72 140.15 387.40 136.71 388.62 C 132.57 389.54 128.25 388.87 124.04 389.07 C 123.84 400.72 124.22 412.40 123.86 424.04 C 123.67 427.14 119.95 429.02 117.28 427.52 C 114.89 426.34 114.76 423.37 114.75 421.05 C 114.78 410.39 114.77 399.73 114.77 389.07 C 110.85 388.97 106.91 389.29 103.01 388.89 C 100.19 388.63 98.94 384.82 100.79 382.81 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 156.46 381.58 C 164.12 379.62 173.03 380.52 179.19 385.85 C 184.59 390.56 186.43 398.11 186.28 405.03 C 186.24 412.28 183.48 420.06 177.27 424.26 C 167.20 430.79 151.07 429.05 144.81 418.06 C 140.79 410.83 140.49 401.86 143.12 394.11 C 145.11 388.05 150.26 383.15 156.46 381.58 M 160.39 388.45 C 155.68 389.57 152.46 393.85 151.51 398.43 C 150.26 404.45 150.59 411.44 154.58 416.43 C 158.82 421.68 167.50 421.98 172.29 417.34 C 175.56 414.16 176.76 409.47 176.87 405.04 C 177.00 400.46 176.12 395.52 173.03 391.97 C 170.01 388.38 164.79 387.33 160.39 388.45 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 197.74 381.67 C 202.48 381.08 207.28 381.52 212.04 381.39 C 216.77 381.52 221.99 381.01 226.14 383.76 C 231.83 387.34 233.14 395.94 229.29 401.31 C 227.11 404.31 223.42 405.53 220.02 406.56 C 225.17 409.99 228.63 415.38 231.24 420.89 C 231.80 422.43 232.87 424.27 231.83 425.86 C 230.20 428.72 225.63 428.66 223.85 425.97 C 220.01 420.80 217.60 414.61 213.15 409.89 C 210.68 407.24 206.76 407.72 203.49 407.54 C 203.32 412.99 203.66 418.45 203.31 423.89 C 203.28 427.47 198.62 429.25 195.97 427.11 C 193.92 425.36 194.24 422.43 194.15 420.02 C 194.27 408.97 194.06 397.92 194.23 386.87 C 194.12 384.61 195.24 381.99 197.74 381.67 M 203.47 388.42 C 203.45 392.57 203.44 396.73 203.40 400.90 C 208.52 400.89 213.88 401.57 218.81 399.89 C 223.71 398.14 222.82 390.10 217.93 388.93 C 213.18 387.93 208.28 388.55 203.47 388.42 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 240.23 386.91 C 240.05 384.51 241.41 381.77 244.05 381.58 C 249.02 381.13 254.02 381.52 259.00 381.41 C 263.64 381.44 268.85 381.14 272.73 384.18 C 277.81 387.82 278.91 395.49 275.74 400.71 C 273.64 404.05 269.75 405.55 266.09 406.46 C 271.87 410.81 276.28 417.09 278.28 424.04 C 278.48 428.00 272.74 429.20 270.41 426.55 C 266.10 421.38 263.88 414.69 259.13 409.85 C 256.62 407.29 252.77 407.64 249.49 407.51 C 249.34 413.00 249.76 418.50 249.33 423.98 C 249.25 427.52 244.58 429.23 241.97 427.09 C 240.14 425.65 240.25 423.12 240.22 421.03 C 240.20 409.66 240.19 398.28 240.23 386.91 M 249.45 388.38 C 249.48 392.57 249.51 396.75 249.47 400.94 C 254.85 400.80 260.63 401.83 265.66 399.44 C 269.67 397.04 268.52 390.07 264.00 388.94 C 259.22 387.96 254.29 388.56 249.45 388.38 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 286.38 386.01 C 286.27 383.00 289.16 381.15 291.93 381.42 C 300.65 381.57 309.41 381.03 318.11 381.66 C 321.80 381.95 321.67 388.25 317.94 388.37 C 310.50 388.74 303.03 388.43 295.58 388.55 C 295.57 392.30 295.57 396.05 295.59 399.80 C 302.39 399.95 309.20 399.54 315.98 399.96 C 319.57 399.91 320.07 405.84 316.66 406.54 C 309.65 407.09 302.60 406.71 295.58 406.78 C 295.58 411.12 295.59 415.47 295.56 419.82 C 303.38 420.13 311.25 419.44 319.05 420.15 C 322.43 420.75 322.44 426.37 319.04 426.95 C 311.73 427.52 304.36 427.04 297.03 427.21 C 294.20 427.07 291.20 427.60 288.52 426.53 C 286.17 425.31 286.31 422.30 286.27 420.04 C 286.39 408.70 286.17 397.35 286.38 386.01 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 375.06 381.95 C 378.31 381.05 381.74 381.50 385.08 381.39 C 392.93 381.50 400.79 381.23 408.64 381.52 C 412.48 381.48 413.41 387.46 409.82 388.64 C 405.69 389.52 401.42 388.89 397.23 389.08 C 397.16 400.40 397.37 411.73 397.14 423.05 C 397.33 425.86 394.85 428.51 391.95 427.92 C 389.07 427.71 387.75 424.61 387.99 422.07 C 388.05 411.07 387.92 400.08 388.05 389.08 C 384.02 388.96 379.96 389.33 375.95 388.84 C 372.77 388.27 372.19 383.34 375.06 381.95 Z"})]})]})},oe=n(403),ce=n(458),se=n(26),le=n.n(se),de=n(457),be=n(500),pe=function(e){var t=Object(a.useState)({}),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useRef)(!0),s=Object(a.useRef)(null);return Object(a.useEffect)((function(){return function(){o.current=!1}}),[]),Object(a.useEffect)((function(){return e?s.current=setInterval((function(){var t=function(e){return o.current&&i(e)};M.a.post("".concat(C,"/cache"),{action:"get",hash:e}).then((function(e){var n=e.data;return t(n)})).catch((function(){return t({})}))}),100):clearInterval(s.current),function(){return clearInterval(s.current)}}),[e]),r},je=n(443),ue=n(445),he=n(446),xe=n(402),ge=n(74),Oe=n.n(ge),me=n(447),fe=Object(je.a)({appBar:Object(R.a)({position:"relative"},Q&&{paddingTop:"30px"}),title:{marginLeft:"5px",flex:1}});function Ce(e){var t=e.title,n=e.onClose,a=e.onBack,r=fe();return Object(ee.jsx)(ue.a,{className:r.appBar,children:Object(ee.jsxs)(he.a,{children:[a&&Object(ee.jsx)(xe.a,{edge:"start",color:"inherit",onClick:a,"aria-label":"back",children:Object(ee.jsx)(me.a,{})}),Object(ee.jsx)(l.a,{variant:"h6",className:r.title,children:t}),Object(ee.jsx)(xe.a,{autoFocus:!0,color:"inherit",onClick:n,"aria-label":"close",style:{marginRight:"-10px"},children:Object(ee.jsx)(Oe.a,{})})]})})}var ve,Se,ye,we,De,Te,ke,Pe,Me,Le,Re,Ae=n(194),Be=n(87),Fe=n.n(Be),Ee=n(205),He=n(448),Ne=n(27),ze={light:{app:{headerToggleColor:"#4db380",appSecondaryColor:"#cbe8d9",sidebarBGColor:"#575757",sidebarFillColor:"#dee3e5",paperColor:"#eeeeee"},torrentCard:{accentCardColor:"#337a57",buttonBGColor:Object(Ne.a)("#337a57",.5),cardPrimaryColor:"#00a572",cardSecondaryColor:"#74c39c"},dialogTorrentDetailsContent:{posterBGColor:"#74c39c",gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",chacheSectionBGColor:"#88cdaa",widgetFontColor:"#fff",titleFontColor:"#000",subNameFontColor:"#7c7b7c",torrentFilesSectionBGColor:"#f1eff3"},detailedView:{gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",cacheSectionBGColor:"#fff"},addDialog:{gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",fontColor:"#000",notificationErrorBGColor:"#cda184",notificationSuccessBGColor:"#88cdaa",languageSwitchBGColor:"#74c39c",languageSwitchFontColor:"#e4f6ed",posterBGColor:"#74c39c"},torrentFunctions:{fontColor:"#000"},table:{defaultPrimaryColor:"#009879",defaultSecondaryColor:"#00a383",defaultTertiaryColor:"#03aa89"},settingsDialog:{contentBG:"#f1eff3",footerBG:"#fff"}},dark:{app:{headerToggleColor:"#545a5e",appSecondaryColor:"#545a5e",sidebarBGColor:"#323637",sidebarFillColor:"#dee3e5",paperColor:"#323637"},torrentCard:{accentCardColor:"#323637",buttonBGColor:Object(Ne.a)("#323637",.5),cardPrimaryColor:"#545a5e",cardSecondaryColor:Object(Ne.a)("#dee3e5",.4)},dialogTorrentDetailsContent:{posterBGColor:Object(Ne.a)("#dee3e5",.4),gradientStartColor:"#656f76",gradientEndColor:"#545a5e",chacheSectionBGColor:"#3c4244",widgetFontColor:Object(Ne.a)("#fff",.8),titleFontColor:"#f1eff3",subNameFontColor:"#dee3e5",torrentFilesSectionBGColor:Object(Ne.a)("#545a5e",.9)},detailedView:{gradientStartColor:"#656f76",gradientEndColor:"#545a5e",cacheSectionBGColor:"#949ca0"},addDialog:{gradientStartColor:"#656f76",gradientEndColor:"#545a5e",fontColor:"#fff",notificationErrorBGColor:"#c82e3f",notificationSuccessBGColor:"#323637",languageSwitchBGColor:"#545a5e",languageSwitchFontColor:"#dee3e5",posterBGColor:"#dee3e5"},torrentFunctions:{fontColor:"#f1eff3"},table:{defaultPrimaryColor:"#323637",defaultSecondaryColor:Object(Ne.a)("#545a5e",.9),defaultTertiaryColor:"#545a5e"},settingsDialog:{contentBG:"#5a6166",footerBG:"#323637"}}},Ge={light:{primary:"#00a572",secondary:"#00a572",labels:Object(Ne.a)("#000",.9)},dark:{primary:"#323637",secondary:"#dee3e5",labels:Object(Ne.a)("#fff",.9)}},Ie="light",Ue="dark",Ve="auto",We={fontFamily:"Open Sans, sans-serif"},Ze=(Object(Ee.a)({typography:We,palette:{type:Ue,primary:{main:Ge.dark.primary},secondary:{main:Ge.dark.secondary}}}),Object(Ee.a)({typography:We,palette:{type:Ie,primary:{main:Ge.light.primary},secondary:{main:Ge.light.secondary}}}),n(4)),_e=n(3),Ke={dark:{default:{borderWidth:1,pieceSize:14,gapBetweenPieces:3,borderColor:Object(Ne.a)("#fff",.2),completeColor:Object(Ne.a)(Ge.dark.primary,.5),backgroundColor:"#949ca0",progressColor:Object(Ne.a)("#fff",.2),readerColor:"#8f0405",rangeColor:"#cda184"},mini:{cacheMaxHeight:340,borderWidth:2,pieceSize:23,gapBetweenPieces:6,borderColor:"#5c6469",completeColor:"#5c6469",backgroundColor:"#949ca0",progressColor:"#949ca0",readerColor:"#ccc",rangeColor:"#cda184"}},light:{default:{borderWidth:1,pieceSize:14,gapBetweenPieces:3,borderColor:"#dbf2e8",completeColor:Ge.light.primary,backgroundColor:"#fff",progressColor:"#b3dfc9",readerColor:"#000",rangeColor:"#afa6e3"},mini:{cacheMaxHeight:340,borderWidth:2,pieceSize:23,gapBetweenPieces:6,borderColor:"#4db380",completeColor:"#4db380",backgroundColor:"#dbf2e8",progressColor:"#dbf2e8",readerColor:"#0a0a0a",rangeColor:"#afa6e3"}}},Je=_e.d.div(ve||(ve=Object(Ze.a)(["\n margin-top: 10px;\n text-transform: uppercase;\n color: rgba(0, 0, 0, 0.5);\n align-self: center;\n"]))),Xe=_e.d.div(Se||(Se=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isMini,n=e.themeType;return Object(_e.c)(ye||(ye=Object(Ze.a)(["\n ","\n\n canvas {\n display: block;\n }\n "])),t&&Object(_e.c)(we||(we=Object(Ze.a)(["\n display: grid;\n justify-content: center;\n max-height: ","px;\n overflow: auto;\n "])),Ke[n].mini.cacheMaxHeight))})),Ye=function(e){var t,n=e.cache,r=e.isMini,i=e.isSnakeDebugMode,o=Object(be.a)().t,s=Object(a.useState)({width:0,height:0}),l=Object(c.a)(s,2),d=l[0],b=l[1],p=d.width,j=Object(a.useRef)(null),u=Object(a.useRef)(null),h=function(e){var t=Object(a.useState)([]),n=Object(c.a)(t,2),r=n[0],i=n[1];return Object(a.useEffect)((function(){for(var t=e.PiecesCount,n=e.Pieces,a=e.Readers,r=[],o=function(e){var t=n[e]||{},i=t.Size,o=t.Length,c=t.Priority,s={id:e,percentage:i/o*100||0,priority:c||0};a.forEach((function(t){e===t.Reader&&(s.isReader=!0),e>=t.Start&&e<=t.End&&(s.isReaderRange=!0)})),r.push(s)},c=0;c0})),i=function(e){return e%a===0?e-1:e+a-e%a-1||0},o=i(n),c=i(r.length),s=Math.max(c,o)-r.length+1,l=s?new Array(s).fill({}):[];return[].concat(Object(N.a)(r),Object(N.a)(l))}({cacheMap:h,preloadPiecesAmount:Math.round(n.Capacity/n.PiecesLength-1),piecesInOneRow:M}));var L=r?t:h,R=Math.ceil((k-P*M)/2),A=Math.ceil(L.length/M)*P;return Object(a.useEffect)((function(){if(k&&A){var e=j.current;e.width=k,e.height=A,u.current=e.getContext("2d")}}),[j,A,k]),Object(a.useEffect)((function(){var e=u.current;e&&(e.clearRect(0,0,k,A),L.forEach((function(t,n){var a=t.percentage,o=t.priority,c=t.isReader,s=t.isReaderRange,l=a>0&&a<100,d=100===a,b=n%M,p=Math.floor(n/M),j=C%2===0?0:.5,u=Math.ceil(C/2)+1+j,h=b*v+b*S+R+u,O=p*v+p*S+u;if(e.lineWidth=C,e.fillStyle=l?function(e,t,n,a){var r=Ke[n][a],i=r.pieceSize,o=r.completeColor,c=r.progressColor,s=e.createLinearGradient(0,i,0,0);return s.addColorStop(0,o),s.addColorStop(t/100,o),s.addColorStop(t/100,c),s.addColorStop(1,c),s}(e,a,g,x):d?T:y,e.strokeStyle=c?m:l||d?T:s?f:w,e.translate(h,O),e.fillRect(0,0,v,v),e.strokeRect(0,0,v,v),e.setTransform(1,0,0,1,0,0),i&&o>0){var D="";1===o?D="":2===o?D="H":3===o?D="R":4===o?D="N":5===o&&(D="A"),e.font=r?"13px monospace":"10px monospace";var k=r?.35*v:.29*v,P=r?.69*v:.78*v;e.fillStyle="black",e.fillText(D,h+k,O+P)}})))}),[h,A,k,M,R,v,S,L,y,w,C,x,T,m,f,r,g,i]),Object(ee.jsx)(Ae.a,{bounds:!0,onResize:function(e){var t=e.bounds;return b(t)},children:function(e){var t=e.measureRef;return Object(ee.jsxs)("div",{style:{display:"flex",flexDirection:"column"},ref:t,children:[Object(ee.jsx)(Xe,{themeType:g,isMini:r,children:Object(ee.jsx)("canvas",{ref:j})}),r&&A>=D&&Object(ee.jsx)(Je,{children:o("ScrollDown")})]})}})},$e=Object(a.memo)(Ye,(function(e,t){return Fe()(e.cache.Pieces,t.cache.Pieces)&&Fe()(e.cache.Readers,t.cache.Readers)})),Qe=n(88),qe=n.n(Qe),et="#858c90",tt=Object(_e.c)(De||(De=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.table.defaultPrimaryColor;return Object(_e.c)(Te||(Te=Object(Ze.a)(["\n :before {\n content: '';\n width: 10px;\n height: 10px;\n background: ",";\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "])),t)})),nt=_e.d.table(ke||(ke=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.table.defaultPrimaryColor;return Object(_e.c)(Pe||(Pe=Object(Ze.a)(["\n border-collapse: collapse;\n margin: 25px 0;\n font-size: 0.9em;\n width: 100%;\n border-radius: 5px 5px 0 0;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n color: #000;\n\n thead tr {\n background: ",";\n color: #fff;\n text-align: left;\n text-transform: uppercase;\n }\n\n th,\n td {\n padding: 12px 15px;\n }\n\n tbody tr {\n border-bottom: 1px solid ",";\n background: ",";\n\n :last-of-type {\n border-bottom: 2px solid ",";\n }\n\n &.viewed-file-row {\n background: ",";\n }\n }\n\n td {\n &.viewed-file-indicator {\n position: relative;\n\n ","\n }\n }\n\n .button-cell {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 10px;\n }\n\n @media (max-width: 970px) {\n display: none;\n }\n "])),t,"#d2d2d2","#f3f3f3",t,"#ddd",tt)})),at=_e.d.div(Me||(Me=Object(Ze.a)(["\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(2, 1fr);\n display: none;\n\n @media (max-width: 970px) {\n display: grid;\n }\n\n @media (max-width: 820px) {\n gap: 15px;\n grid-template-columns: 1fr;\n }\n"]))),rt=_e.d.div(Le||(Le=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isViewed,n=e.theme.table,a=n.defaultPrimaryColor,r=n.defaultSecondaryColor,i=n.defaultTertiaryColor;return Object(_e.c)(Re||(Re=Object(Ze.a)(["\n width: 100%;\n grid-template-rows: repeat(3, max-content);\n border-radius: 5px;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n\n .short-table {\n &-name {\n background: ",";\n display: grid;\n place-items: center;\n padding: 15px;\n color: #fff;\n text-transform: uppercase;\n font-size: 15px;\n font-weight: bold;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 10px;\n }\n }\n &-data {\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: ",";\n grid-auto-columns: 1fr;\n }\n &-field {\n display: grid;\n grid-template-rows: 30px 1fr;\n background: black;\n :not(:last-child) {\n border-right: 1px solid ",";\n }\n\n &-name {\n background: ",";\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 500;\n display: grid;\n place-items: center;\n padding: 0 10px;\n\n @media (max-width: 880px) {\n font-size: 11px;\n }\n }\n\n &-value {\n background: ",";\n display: grid;\n place-items: center;\n color: #fff;\n font-size: 15px;\n padding: 15px 10px;\n position: relative;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 12px 8px;\n }\n }\n }\n\n &-viewed-indicator {\n ","\n }\n\n &-buttons {\n padding: 20px;\n border-bottom: 2px solid ",";\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n align-items: center;\n gap: 20px;\n background: #f3f3f3;\n\n @media (max-width: 410px) {\n gap: 10px;\n grid-template-columns: 1fr;\n }\n }\n }\n "])),t?et:a,t?"max-content":"1fr",t?et:a,t?"#8c9498":r,t?"#949ca0":i,t&&tt,t?et:a)})),it=n(0).memo;le.a.addHandler("episode",/(\d{1,4})[- |. ]\u0441\u0435\u0440\u0438\u044f|\u0441\u0435\u0440\u0438\u044f[- |. ](\d{1,4})/i,{type:"integer"}),le.a.addHandler("season",/sezon[- |. ](\d{1,3})|(\d{1,3})[- |. ]sezon/i,{type:"integer"}),le.a.addHandler("season",/\u0441\u0435\u0437\u043e\u043d[- |. ](\d{1,3})|(\d{1,3})[- |. ]\u0441\u0435\u0437\u043e\u043d/i,{type:"integer"});var ot,ct,st,lt,dt,bt,pt,jt,ut,ht,xt,gt,Ot,mt,ft,Ct,vt,St,yt,wt,Dt,Tt,kt,Pt,Mt,Lt,Rt,At,Bt,Ft,Et,Ht,Nt,zt,Gt,It,Ut,Vt=it((function(e){var t,n=e.playableFileList,a=e.viewedFileList,r=e.selectedSeason,i=e.seasonAmount,o=e.hash,c=Object(be.a)().t,s=function(e){return fetch("".concat(w(),"?link=").concat(o,"&index=").concat(e,"&preload"))},l=function(e,t){return"".concat(w(),"/").concat(encodeURIComponent(e.split("\\").pop().split("/").pop()),"?link=").concat(o,"&index=").concat(t,"&play")},d=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).episode}))),b=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).season}))),p=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).resolution}))),j=(null===n||void 0===n?void 0:n.length)>1&&!d,u=null!==(t=JSON.parse(localStorage.getItem("isVlcUsed")))&&void 0!==t&&t;return null!==n&&void 0!==n&&n.length?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(nt,{children:[Object(ee.jsx)("thead",{children:Object(ee.jsxs)("tr",{children:[Object(ee.jsx)("th",{style:{width:"0"},children:c("Viewed")}),Object(ee.jsx)("th",{children:c("Name")}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Season")}),d&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Episode")}),p&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Resolution")}),Object(ee.jsx)("th",{style:{width:"100px"},children:c("Size")}),Object(ee.jsx)("th",{style:{width:"400px"},children:c("Actions")})]})}),Object(ee.jsx)("tbody",{children:n.map((function(e){var t=e.id,n=e.path,o=e.length,u=le.a.parse(n),h=u.title,x=u.resolution,g=u.episode,O=u.season,m=null===a||void 0===a?void 0:a.includes(t),f=l(n,t);return(O===r||!(null!==i&&void 0!==i&&i.length))&&Object(ee.jsxs)("tr",{className:m?"viewed-file-row":null,children:[Object(ee.jsx)("td",{"data-label":"viewed",className:m?"viewed-file-indicator":null}),Object(ee.jsx)("td",{"data-label":"name",children:j?n:h}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsx)("td",{"data-label":"season",children:O}),d&&Object(ee.jsx)("td",{"data-label":"episode",children:g}),p&&Object(ee.jsx)("td",{"data-label":"resolution",children:x}),Object(ee.jsx)("td",{"data-label":"size",children:K(o)}),Object(ee.jsx)("td",{children:Object(ee.jsxs)("div",{className:"button-cell",children:[Object(ee.jsx)(oe.a,{onClick:function(){return s(t)},variant:"outlined",color:"primary",size:"small",children:c("Preload")}),Object(ee.jsx)("a",{style:{textDecoration:"none"},href:f,target:"_blank",rel:"noreferrer",children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:c("OpenLink")})}),Object(ee.jsx)(qe.a,{text:f,children:Object(ee.jsx)(oe.a,{variant:"outlined",color:"primary",size:"small",children:c("CopyLink")})})]})})]},t)}))})]}),Object(ee.jsx)(at,{children:n.map((function(e){var t=e.id,n=e.path,o=e.length,h=le.a.parse(n),x=h.title,g=h.resolution,O=h.episode,m=h.season,f=null===a||void 0===a?void 0:a.includes(t),C=l(n,t);return(m===r||!(null!==i&&void 0!==i&&i.length))&&Object(ee.jsxs)(rt,{isViewed:f,children:[Object(ee.jsx)("div",{className:"short-table-name",children:j?n:x}),Object(ee.jsxs)("div",{className:"short-table-data",children:[f&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Viewed")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:Object(ee.jsx)("div",{className:"short-table-viewed-indicator"})})]}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Season")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:m})]}),d&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Episode")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:O})]}),p&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Resolution")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:g})]}),Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Size")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:K(o)})]})]}),Object(ee.jsxs)("div",{className:"short-table-buttons",children:[Object(ee.jsx)(oe.a,{onClick:function(){return s(t)},variant:"outlined",color:"primary",size:"small",children:c("Preload")}),u&&Q?Object(ee.jsx)("a",{style:{textDecoration:"none"},href:"vlc://".concat(C),children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:"VLC"})}):Object(ee.jsx)("a",{style:{textDecoration:"none"},href:C,target:"_blank",rel:"noreferrer",children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:c("OpenLink")})}),Object(ee.jsx)(qe.a,{text:C,children:Object(ee.jsx)(oe.a,{variant:"outlined",color:"primary",size:"small",children:c("CopyLink")})})]})]},t)}))})]}):"No playable files in this torrent"}),(function(e,t){return Fe()(e,t)})),Wt=n(456),Zt=n(497),_t=_e.d.div(ot||(ot=Object(Ze.a)(["\n display: grid;\n grid-template-columns: 70% 1fr;\n grid-template-rows: repeat(2, min-content);\n grid-template-areas:\n 'main cache'\n 'file-list file-list';\n\n @media (max-width: 1450px) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(3, min-content);\n grid-template-areas:\n 'main'\n 'cache'\n 'file-list';\n }\n"]))),Kt=_e.d.div(ct||(ct=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.poster,n=e.theme.dialogTorrentDetailsContent.posterBGColor;return Object(_e.c)(st||(st=Object(Ze.a)(["\n height: 400px;\n border-radius: 5px;\n overflow: hidden;\n align-self: center;\n\n ","\n\n @media (max-width: 1280px) {\n align-self: start;\n }\n\n @media (max-width: 840px) {\n ","\n }\n "])),t?Object(_e.c)(lt||(lt=Object(Ze.a)(["\n img {\n border-radius: 5px;\n height: 100%;\n }\n "]))):Object(_e.c)(dt||(dt=Object(Ze.a)(["\n width: 300px;\n display: grid;\n place-items: center;\n background: ",";\n\n svg {\n transform: scale(2.5) translateY(-3px);\n }\n "])),n),t?Object(_e.c)(bt||(bt=Object(Ze.a)(["\n height: 200px;\n "]))):Object(_e.c)(pt||(pt=Object(Ze.a)(["\n display: none;\n "]))))})),Jt=_e.d.section(jt||(jt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent,n=t.gradientStartColor,a=t.gradientEndColor;return Object(_e.c)(ut||(ut=Object(Ze.a)(["\n grid-area: main;\n padding: 40px;\n display: grid;\n grid-template-columns: min-content 1fr;\n gap: 30px;\n background: linear-gradient(145deg, ",", ",");\n\n @media (max-width: 840px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),n,a)})),Xt=_e.d.section(ht||(ht=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.chacheSectionBGColor;return Object(_e.c)(xt||(xt=Object(Ze.a)(["\n grid-area: cache;\n padding: 40px;\n display: grid;\n align-content: start;\n grid-template-rows: min-content 1fr min-content;\n background: ",";\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),Yt=_e.d.section(gt||(gt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.torrentFilesSectionBGColor;return Object(_e.c)(Ot||(Ot=Object(Ze.a)(["\n grid-area: file-list;\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ",";\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),$t=_e.d.div(mt||(mt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.subNameFontColor;return Object(_e.c)(ft||(ft=Object(Ze.a)(["\n ","\n "])),(function(e){var n=e.mb;return Object(_e.c)(Ct||(Ct=Object(Ze.a)(["\n ",";\n ",";\n line-height: 1.2;\n color: ",";\n\n @media (max-width: 800px) {\n ",";\n ",";\n font-size: 14px;\n }\n "])),n&&"margin-top: ".concat(n/3,"px"),n&&"margin-bottom: ".concat(n,"px"),t,n&&"margin-top: ".concat(n/4,"px"),n&&"margin-bottom: ".concat(n/2,"px"))}))})),Qt=_e.d.div(vt||(vt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color,n=e.theme.dialogTorrentDetailsContent.titleFontColor;return Object(_e.c)(St||(St=Object(Ze.a)(["\n ","\n "])),(function(e){var a=e.mb;return Object(_e.c)(yt||(yt=Object(Ze.a)(["\n ",";\n font-size: 34px;\n font-weight: 300;\n line-height: 1;\n word-break: break-word;\n color: ",";\n\n @media (max-width: 800px) {\n font-size: 24px;\n line-height: 1.1;\n ",";\n }\n "])),a&&"margin-bottom: ".concat(a,"px"),t||n,a&&"margin-bottom: ".concat(a/2,"px"))}))})),qt=_e.d.div(wt||(wt=Object(Ze.a)(["\n margin-bottom: 20px;\n"]))),en=_e.d.div(Dt||(Dt=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 220px));\n gap: 20px;\n\n @media (max-width: 800px) {\n gap: 15px;\n }\n @media (max-width: 410px) {\n gap: 10px;\n }\n\n ","\n"])),(function(e){return e.detailedView?Object(_e.c)(Tt||(Tt=Object(Ze.a)(["\n @media (max-width: 800px) {\n grid-template-columns: repeat(2, 1fr);\n }\n @media (max-width: 410px) {\n grid-template-columns: 1fr;\n }\n "]))):Object(_e.c)(kt||(kt=Object(Ze.a)(["\n @media (max-width: 800px) {\n grid-template-columns: repeat(auto-fit, minmax(max-content, 185px));\n }\n @media (max-width: 480px) {\n grid-template-columns: 1fr 1fr;\n }\n @media (max-width: 390px) {\n grid-template-columns: 1fr;\n }\n "])))})),tn=_e.d.div(Pt||(Pt=Object(Ze.a)(["\n display: grid;\n grid-template-columns: 40px 1fr;\n grid-template-rows: min-content 50px;\n grid-template-areas:\n 'title title'\n 'icon value';\n\n > * {\n display: grid;\n place-items: center;\n }\n\n @media (max-width: 800px) {\n grid-template-columns: 30px 1fr;\n grid-template-rows: min-content 40px;\n }\n"]))),nn=_e.d.div(Mt||(Mt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.titleFontColor;return Object(_e.c)(Lt||(Lt=Object(Ze.a)(["\n grid-area: title;\n justify-self: start;\n text-transform: uppercase;\n font-size: 11px;\n margin-bottom: 2px;\n font-weight: 600;\n color: ",";\n "])),t)})),an=_e.d.div(Rt||(Rt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.bgColor;return Object(_e.c)(At||(At=Object(Ze.a)(["\n grid-area: icon;\n color: ",";\n background: ",";\n border-radius: 5px 0 0 5px;\n\n @media (max-width: 800px) {\n > svg {\n width: 50%;\n }\n }\n "])),Object(Ne.a)("#fff",.8),t)})),rn=_e.d.div(Bt||(Bt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.bgColor,n=e.theme.dialogTorrentDetailsContent.widgetFontColor;return Object(_e.c)(Ft||(Ft=Object(Ze.a)(["\n grid-area: value;\n font-size: 24px;\n padding: 0 20px 0 0;\n color: ",";\n background: ",";\n border-radius: 0 5px 5px 0;\n white-space: nowrap;\n\n @media (max-width: 800px) {\n font-size: 18px;\n padding: 0 16px 0 0;\n }\n "])),n,t)})),on=_e.d.div.attrs((function(e){var t=e.value,n=e.fullAmount,a=e.theme.dialogTorrentDetailsContent,r=a.gradientStartColor,i=a.gradientEndColor,o=Math.min(100,100*t/n);return{style:{background:"linear-gradient(to right, ".concat(r," 0%, ").concat(i," ").concat(o,"%, #eee ").concat(o,"%, #fff 100%)")}}}))(Et||(Et=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.label;return Object(_e.c)(Ht||(Ht=Object(Ze.a)(["\n border: 1px solid;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n\n :before {\n content: '","';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n "])),t)})),cn=_e.d.div(Nt||(Nt=Object(Ze.a)(["\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n"]))),sn=_e.d.section(zt||(zt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.detailedView,n=t.gradientStartColor,a=t.gradientEndColor;return Object(_e.c)(Gt||(Gt=Object(Ze.a)(["\n padding: 40px;\n background: linear-gradient(145deg, ",", ",");\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),n,a)})),ln=_e.d.section(It||(It=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.detailedView.cacheSectionBGColor;return Object(_e.c)(Ut||(Ut=Object(Ze.a)(["\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ",";\n flex: 1;\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),dn=n(449),bn=n(450),pn=n(451),jn=n(452),un=n(453),hn=n(454),xn=n(455);function gn(e){var t=e.icon,n=e.title,a=e.value,r=e.iconBg,i=e.valueBg;return Object(ee.jsxs)(tn,{children:[Object(ee.jsx)(nn,{children:n}),Object(ee.jsx)(an,{bgColor:r,children:Object(ee.jsx)(t,{})}),Object(ee.jsx)(rn,{bgColor:i,children:a})]})}var On=Ie,mn=Ue,fn={light:{downloadSpeed:{iconBGColor:"#118f00",valueBGColor:"#13a300"},uploadSpeed:{iconBGColor:"#0146ad",valueBGColor:"#0058db"},peers:{iconBGColor:"#cdc118",valueBGColor:"#d8cb18"},piecesCount:{iconBGColor:"#b6c95e",valueBGColor:"#c0d076"},piecesLength:{iconBGColor:"#0982c8",valueBGColor:"#098cd7"},status:{iconBGColor:"#aea25b",valueBGColor:"#b4aa6e"},size:{iconBGColor:"#9b01ad",valueBGColor:"#ac03bf"}},dark:{downloadSpeed:{iconBGColor:"#0c6600",valueBGColor:"#0d7000"},uploadSpeed:{iconBGColor:"#003f9e",valueBGColor:"#0047b3"},peers:{iconBGColor:"#a69c11",valueBGColor:"#b4a913"},piecesCount:{iconBGColor:"#8da136",valueBGColor:"#99ae3d"},piecesLength:{iconBGColor:"#07659c",valueBGColor:"#0872af"},status:{iconBGColor:"#938948",valueBGColor:"#9f9450"},size:{iconBGColor:"#81008f",valueBGColor:"#9102a1"}}};function Cn(e){var t=Object(a.useContext)(Nc).isDarkMode;return fn[t?mn:On][e]}var vn,Sn,yn,wn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("downloadSpeed"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("DownloadSpeed"),value:J(t)||"0 ".concat(n("bps")),iconBg:r,valueBg:i,icon:dn.a})},Dn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("uploadSpeed"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("UploadSpeed"),value:J(t)||"0 ".concat(n("bps")),iconBg:r,valueBg:i,icon:bn.a})},Tn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("peers"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("Peers"),value:X(t)||"0 \xb7 0 / 0",iconBg:r,valueBg:i,icon:pn.a})},kn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("piecesCount"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("PiecesCount"),value:t,iconBg:r,valueBg:i,icon:jn.a})},Pn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("piecesLength"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("PiecesLength"),value:K(t),iconBg:r,valueBg:i,icon:un.a})},Mn=function(e){var t,n=e.stat,a=Object(be.a)().t,r=(t={},Object(L.a)(t,1,a("TorrentGettingInfo")),Object(L.a)(t,2,a("TorrentPreload")),Object(L.a)(t,3,a("TorrentWorking")),Object(L.a)(t,4,a("TorrentClosed")),Object(L.a)(t,5,a("TorrentInDb")),t),i=Cn("status"),o=i.iconBGColor,c=i.valueBGColor;return Object(ee.jsx)(gn,{title:a("TorrentStatus"),value:r[n],iconBg:o,valueBg:c,icon:hn.a})},Ln=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("size"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("TorrentSize"),value:K(t),iconBg:r,valueBg:i,icon:xn.a})};function Rn(e){var t=e.downloadSpeed,n=e.uploadSpeed,r=e.torrent,i=e.torrentSize,o=e.PiecesCount,s=e.PiecesLength,l=e.stat,d=e.cache,b=Object(be.a)().t,p=Object(a.useState)(JSON.parse(localStorage.getItem("isSnakeDebugMode"))||!1),j=Object(c.a)(p,2),u=j[0],h=j[1];return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(sn,{children:[Object(ee.jsx)(Qt,{mb:20,children:b("Data")}),Object(ee.jsxs)(en,{detailedView:!0,children:[Object(ee.jsx)(wn,{data:t}),Object(ee.jsx)(Dn,{data:n}),Object(ee.jsx)(Tn,{data:r}),Object(ee.jsx)(Ln,{data:i}),Object(ee.jsx)(kn,{data:o}),Object(ee.jsx)(Pn,{data:s}),Object(ee.jsx)(Mn,{stat:l})]})]}),Object(ee.jsxs)(ln,{children:[Object(ee.jsx)(Qt,{color:"#000",mb:20,children:Object(ee.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[Object(ee.jsx)("span",{children:b("Cache")}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(Zt.a,{color:"primary",checked:u,disableRipple:!0,onChange:function(e){var t=e.target.checked;h(t),localStorage.setItem("isSnakeDebugMode",t)}}),label:b("DebugMode"),labelPlacement:"start"})]})}),Object(ee.jsx)($e,{cache:d,isSnakeDebugMode:u})]})]})}var An=_e.d.div(vn||(vn=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n\n :not(:last-child) {\n margin-bottom: 30px;\n }\n\n @media (max-width: 1580px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 880px) {\n grid-template-columns: 1fr;\n }\n"]))),Bn=_e.d.div(Sn||(Sn=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.mb,n=e.theme.torrentFunctions.fontColor;return Object(_e.c)(yn||(yn=Object(Ze.a)(["\n ",";\n font-size: 20px;\n font-weight: 300;\n line-height: 1;\n color: ",";\n\n @media (max-width: 800px) {\n font-size: 18px;\n ",";\n }\n "])),t&&"margin-bottom: ".concat(t,"px"),n,t&&"margin-bottom: ".concat(t/1.5,"px"))})),Fn=Object(a.memo)((function(e){var t,n=e.hash,a=e.viewedFileList,r=e.playableFileList,i=e.name,o=e.title,c=e.setViewedFileList,s=Object(be.a)().t,l=null===a||void 0===a?void 0:a[(null===a||void 0===a?void 0:a.length)-1],d=null===r||void 0===r||null===(t=r.find((function(e){return e.id===l})))||void 0===t?void 0:t.path,b=1===(null===r||void 0===r?void 0:r.length),p=d&&le.a.parse(d),j="".concat(T(),"/").concat(encodeURIComponent(i||o||"file"),".m3u?link=").concat(n,"&m3u"),u="".concat(j,"&fromlast");return Object(ee.jsxs)(ee.Fragment,{children:[!b&&!(null===a||void 0===a||!a.length)&&Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bn,{children:s("DownloadPlaylist")}),Object(ee.jsxs)($t,{mb:10,children:[s("LatestFilePlayed")," ",Object(ee.jsxs)("strong",{children:[null===p||void 0===p?void 0:p.title,".",(null===p||void 0===p?void 0:p.season)&&Object(ee.jsxs)(ee.Fragment,{children:[" ",s("Season"),": ",null===p||void 0===p?void 0:p.season,". ",s("Episode"),": ",null===p||void 0===p?void 0:p.episode,"."]})]})]}),Object(ee.jsxs)(An,{children:[Object(ee.jsx)("a",{style:{textDecoration:"none"},href:j,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("Full")})}),Object(ee.jsx)("a",{style:{textDecoration:"none"},href:u,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("FromLatestFile")})})]})]}),Object(ee.jsx)(Bn,{mb:10,children:s("TorrentState")}),Object(ee.jsxs)(An,{children:[Object(ee.jsx)(oe.a,{onClick:function(){return M.a.post(S(),{action:"rem",hash:n,file_index:-1}).then((function(){return c()}))},variant:"contained",color:"primary",size:"large",children:s("RemoveViews")}),Object(ee.jsx)(oe.a,{onClick:function(){return M.a.post(v(),{action:"drop",hash:n})},variant:"contained",color:"primary",size:"large",children:s("DropTorrent")})]}),Object(ee.jsx)(Bn,{mb:10,children:s("Info")}),Object(ee.jsxs)(An,{children:[(b||!(null!==a&&void 0!==a&&a.length))&&Object(ee.jsx)("a",{style:{textDecoration:"none"},href:j,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("DownloadPlaylist")})}),Object(ee.jsx)(Qe.CopyToClipboard,{text:n,children:Object(ee.jsx)(oe.a,{variant:"contained",color:"primary",size:"large",children:s("CopyHash")})})]})]})}),(function(){return!0})),En=["3g2","3gp","aaf","asf","avchd","avi","drc","flv","iso","m2v","m2ts","m4p","m4v","mkv","mng","mov","mp2","mp4","mpe","mpeg","mpg","mpv","mxf","nsv","ogg","ogv","ts","qt","rm","rmvb","roq","svi","vob","webm","wmv","yuv","aac","aiff","ape","au","flac","gsm","it","m3u","m4a","mid","mod","mp3","mpa","pls","ra","s3m","sid","wav","wma","xm"],Hn=function(){return Object(ee.jsx)("div",{style:{minHeight:"80vh",display:"grid",placeItems:"center"},children:Object(ee.jsx)(de.a,{color:"secondary"})})};function Nn(e){var t,n=e.closeDialog,r=e.torrent,i=Object(be.a)().t,o=Object(a.useState)(!0),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(a.useState)(!1),p=Object(c.a)(b,2),j=p[0],u=p[1],h=Object(a.useState)(),x=Object(c.a)(h,2),g=x[0],O=x[1],m=Object(a.useState)(),f=Object(c.a)(m,2),C=f[0],v=f[1],w=Object(a.useState)(null),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(),L=Object(c.a)(P,2),A=L[0],B=L[1],F=Object(a.useState)(JSON.parse(localStorage.getItem("isSnakeDebugMode"))||!1),E=Object(c.a)(F,1)[0],H=r.poster,N=r.hash,z=r.title,G=r.name,I=r.stat,U=r.download_speed,V=r.upload_speed,W=r.torrent_size,Z=r.file_stats,_=pe(N),J=function(e){var t=Object(a.useState)(),n=Object(c.a)(t,2),r=n[0],i=n[1];return Object(a.useEffect)((function(){M.a.post(y(),{action:"get"}).then((function(e){var t=e.data;return i(t)}))}),[e]),r}(_),X=_.Capacity,$=_.PiecesCount,Q=_.PiecesLength,q=_.Filled;Object(a.useEffect)((function(){if(C&&null===T){var e=[];C.forEach((function(t){var n=t.path,a=le.a.parse(n).season;a&&!e.includes(a)&&e.push(a)})),e.length&&B(e[0]),k(e.sort((function(e,t){return e-t})))}}),[C,T]),Object(a.useEffect)((function(){v(null===Z||void 0===Z?void 0:Z.filter((function(e){var t,n=e.path;return t=n,En.includes(function(e){var t=e.split(".").pop();return t===e?"":t.toLowerCase()}(t))})))}),[Z]),Object(a.useEffect)((function(){var e=!!Object.entries(_).length,t=1!==I&&5!==I;e||l||d(!0),e&&l&&t&&d(!1)}),[I,_,l]),Object(a.useEffect)((function(){M.a.post(S(),{action:"list",hash:N}).then((function(e){var t=e.data;if(t){var n=t.map((function(e){return e.file_index})).sort((function(e,t){return e-t}));O(n)}else O()}))}),[N]);var ne=X/100*(null===J||void 0===J?void 0:J.PreloadCache),ae=ne>33554432?ne:33554432,re=function(){var e=[],t=G&&le.a.parse(G);z!==G?e.push(Y(z)):null!==t&&void 0!==t&&t.title&&e.push(Y(null===t||void 0===t?void 0:t.title)),null!==t&&void 0!==t&&t.year&&!e[0].includes(null===t||void 0===t?void 0:t.year)&&e.push(null===t||void 0===t?void 0:t.year),null!==t&&void 0!==t&&t.resolution&&!e[0].includes(null===t||void 0===t?void 0:t.resolution)&&e.push(null===t||void 0===t?void 0:t.resolution);var n=e.join(". ");return"."===n[n.length-1]&&"."===n[n.length-2]?"".concat(n,"."):n};return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Ce,Object(R.a)({onClose:n,title:i(j?"DetailedCacheView.header":"TorrentDetails")},j&&{onBack:function(){return u(!1)}})),Object(ee.jsx)("div",{style:Object(R.a)({minHeight:"80vh",overflow:"auto"},j&&{display:"flex",flexDirection:"column"}),children:l?Object(ee.jsx)(Hn,{}):j?Object(ee.jsx)(Rn,{downloadSpeed:U,uploadSpeed:V,torrent:r,torrentSize:W,PiecesCount:$,PiecesLength:Q,stat:I,cache:_}):Object(ee.jsxs)(_t,{children:[Object(ee.jsxs)(Jt,{children:[Object(ee.jsx)(Kt,{poster:H,children:H?Object(ee.jsx)("img",{alt:"poster",src:H}):Object(ee.jsx)(te,{})}),Object(ee.jsxs)("div",{children:[z&&G!==z?re().length>90?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Qt,{children:le.a.parse(G).title}),Object(ee.jsx)($t,{mb:20,children:re()})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Qt,{children:re()}),Object(ee.jsx)($t,{mb:20,children:null===(t=le.a.parse(G||""))||void 0===t?void 0:t.title})]}):Object(ee.jsx)(Qt,{mb:20,children:re()}),Object(ee.jsxs)(en,{children:[Object(ee.jsx)(wn,{data:U}),Object(ee.jsx)(Dn,{data:V}),Object(ee.jsx)(Tn,{data:r}),Object(ee.jsx)(Ln,{data:W}),Object(ee.jsx)(Mn,{stat:I})]}),Object(ee.jsx)(cn,{}),Object(ee.jsx)(Fn,{hash:N,viewedFileList:g,playableFileList:C,name:G,title:z,setViewedFileList:O})]})]}),Object(ee.jsxs)(Xt,{children:[Object(ee.jsxs)(qt,{children:[Object(ee.jsx)(Qt,{mb:20,children:i("Buffer")}),ae<=33554432&&Object(ee.jsx)($t,{children:i("BufferNote")}),Object(ee.jsx)(on,{value:q,style:{marginTop:"5px"},fullAmount:ae,label:"".concat(K(ae)," / ").concat(K(q)||"0 ".concat(i("B")))})]}),Object(ee.jsx)($e,{isMini:!0,cache:_,isSnakeDebugMode:E}),Object(ee.jsx)(oe.a,{style:{marginTop:"30px"},variant:"contained",color:"primary",size:"large",onClick:function(){return u(!0)},children:i("DetailedCacheView.button")})]}),Object(ee.jsxs)(Yt,{children:[Object(ee.jsx)(Qt,{mb:20,children:i("TorrentContent")}),(null===T||void 0===T?void 0:T.length)>1&&Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)($t,{mb:7,children:i("SelectSeason")}),Object(ee.jsx)(ce.a,{style:{marginBottom:"30px"},color:"secondary",children:T.map((function(e){return Object(ee.jsx)(oe.a,{variant:A===e?"contained":"outlined",onClick:function(){return B(e)},children:e},e)}))}),Object(ee.jsxs)(Qt,{mb:20,children:[i("Season")," ",A]})]}),Object(ee.jsx)(Vt,{hash:N,playableFileList:C,viewedFileList:g,selectedSeason:A,seasonAmount:T})]})]})})]})}var zn=n(499),Gn=n(468),In=n(473),Un=n(474),Vn=n(199),Wn=n.n(Vn),Zn=function(){var e=Object(be.a)().i18n;return[e.language.substr(0,2),function(t){return e.changeLanguage(t)}]};function _n(e){var t=Object(a.useRef)(e);return Object(a.useEffect)((function(){t.current=e}),[e]),t.current}var Kn,Jn,Xn,Yn,$n,Qn,qn,ea,ta,na,aa,ra,ia=n(111),oa=n.n(ia),ca=_e.d.div(Kn||(Kn=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.primary;return Object(_e.c)(Jn||(Jn=Object(Ze.a)(["\n background: ",";\n color: rgba(0, 0, 0, 0.87);\n font-size: 20px;\n color: #fff;\n font-weight: 600;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 15px 24px;\n position: relative;\n "])),t)})),sa=_e.d.div(Xn||(Xn=Object(Ze.a)(["\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n\n > :not(:last-child) {\n margin-right: 10px;\n }\n"]))),la=n(459),da=function(e){return Object(_e.c)(Yn||(Yn=Object(Ze.a)(["\n @media screen and (display-mode: standalone) {\n ",";\n }\n"])),e)},ba=90,pa=_e.d.div($n||($n=Object(Ze.a)(["\n background: #575757;\n color: #fff;\n position: fixed;\n bottom: 0;\n width: 100%;\n height: ","px;\n\n display: none;\n\n ","\n"])),ba,da(Object(_e.c)(Qn||(Qn=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(5, calc(100% / 5));\n justify-items: center;\n "]))))),ja=Object(_e.d)(la.a).attrs({button:!0})(qn||(qn=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(ea||(ea=Object(Ze.a)(["\n width: 100%;\n height: 60px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n "]))))),ua=Object(_e.d)(zn.a).attrs(Object(R.a)({},Q&&{hideBackdrop:!0,transitionDuration:0}))(ta||(ta=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(na||(na=Object(Ze.a)(["\n margin-bottom: ","px;\n\n .MuiDialog-container .MuiPaper-root {\n box-shadow: none;\n }\n "])),ba))),ha=Object(_e.d)(ca)(aa||(aa=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(ra||(ra=Object(Ze.a)(["\n padding-top: 47px;\n "])))));function xa(e){var t=Object(a.useRef)();return Object(a.useEffect)((function(){if(Q){var n=function(n){t.current&&!t.current.contains(n.target)&&e&&e()};return document.addEventListener("click",n,!0),function(){document.removeEventListener("click",n,!0)}}})),t}var ga,Oa,ma,fa,Ca,va,Sa,ya,wa,Da,Ta,ka,Pa,Ma,La,Ra,Aa,Ba,Fa,Ea,Ha,Na,za,Ga,Ia,Ua,Va,Wa=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n="http://api.themoviedb.org/3/search/multi",a="ru"===t?"http://imagetmdb.com":"http://image.tmdb.org";return M.a.get(n,{params:{api_key:"45ddf563ac3fb845f2d5c363190d1a33",language:t,include_image_language:"".concat(t,",null,en"),query:e}}).then((function(e){return e.data.results.filter((function(e){return e.poster_path})).map((function(e){return"".concat(a,"/t/p/w300").concat(e.poster_path)}))})).catch((function(){return null}))},Za=function(){var e=Object(H.a)(Object(E.a)().mark((function e(t){return Object(E.a)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&t.match(/.(\.jpg|\.jpeg|\.png|\.gif|\.svg||\.webp).*$/i)){e.next=2;break}return e.abrupt("return",!1);case 2:return e.abrupt("return",!0);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),_a=/^magnet:\?xt=urn:[a-z0-9].*/i,Ka=/^\b[0-9a-f]{32}\b$|^\b[0-9a-f]{40}\b$|^\b[0-9a-f]{64}\b$/i,Ja=/^.*\.(torrent)$/i,Xa=/^(http(s?)):\/\/.*/i,Ya=_e.d.div(ga||(ga=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isEditMode,n=e.theme.addDialog,a=n.gradientStartColor,r=n.gradientEndColor,i=n.fontColor;return Object(_e.c)(Oa||(Oa=Object(Ze.a)(["\n height: 550px;\n background: linear-gradient(145deg, ",", ",");\n flex: 1;\n display: grid;\n grid-template-columns: repeat(",", 1fr);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n overflow: auto;\n color: ",";\n\n @media (max-width: 540px) {\n ","\n overflow: scroll;\n }\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 500px) {\n align-content: start;\n }\n "])),a,r,t?"1":"2",i,"")})),$a=_e.d.div(ma||(ma=Object(Ze.a)(["\n padding: 0 20px 20px 20px;\n"]))),Qa=_e.d.div(fa||(fa=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isHidden,n=e.notificationMessage,a=e.isError,r=e.theme.addDialog,i=r.notificationErrorBGColor,o=r.notificationSuccessBGColor;return Object(_e.c)(Ca||(Ca=Object(Ze.a)(["\n height: 530px;\n\n ",";\n\n ",";\n\n @media (max-width: 500px) {\n height: 170px;\n }\n "])),n&&Object(_e.c)(va||(va=Object(Ze.a)(["\n position: relative;\n white-space: nowrap;\n\n :before {\n font-size: 20px;\n font-weight: 300;\n content: '","';\n display: grid;\n place-items: center;\n background: ",";\n padding: 10px 15px;\n position: absolute;\n top: 52%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 5px;\n }\n "])),n,a?i:o),t&&Object(_e.c)(Sa||(Sa=Object(Ze.a)(["\n display: none;\n "]))))})),qa=_e.d.div(ya||(ya=Object(Ze.a)(["\n display: flex;\n flex-direction: column;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n"]))),er=Object(_e.c)(wa||(wa=Object(Ze.a)(["\n transition: transform 0.3s;\n padding: 20px;\n height: 100%;\n display: grid;\n"]))),tr=_e.d.div(Da||(Da=Object(Ze.a)(["\n ","\n border: 4px dashed rgba(0,0,0,0.1);\n text-align: center;\n outline: none;\n\n ",";\n\n justify-items: center;\n grid-template-rows: 130px 1fr;\n cursor: pointer;\n\n :hover {\n background-color: rgba(0, 0, 0, 0.04);\n svg {\n transform: translateY(-4%);\n }\n }\n\n @media (max-width: 930px) {\n border: 4px dashed transparent;\n height: 400px;\n place-items: center;\n grid-template-rows: 40% 1fr;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n grid-template-rows: 1fr;\n\n > div:first-of-type {\n display: none;\n }\n }\n"])),er,(function(e){return e.isDragActive&&"border: 4px dashed green"})),nr=_e.d.div(Ta||(Ta=Object(Ze.a)(["\n ","\n place-items: center;\n\n @media (max-width: 930px) {\n height: 400px;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n }\n"])),er),ar=_e.d.div(ka||(ka=Object(Ze.a)(["\n position: relative;\n"]))),rr=_e.d.div(Pa||(Pa=Object(Ze.a)(["\n position: absolute;\n top: -9px;\n left: 10px;\n cursor: pointer;\n\n > svg {\n transition: all 0.3s;\n fill: rgba(0, 0, 0, 0.7);\n\n :hover {\n fill: rgba(0, 0, 0, 0.6);\n }\n }\n"]))),ir=_e.d.div(Ma||(Ma=Object(Ze.a)(["\n display: grid;\n justify-items: center;\n align-content: start;\n gap: 10px;\n align-self: start;\n\n svg {\n transition: all 0.3s;\n }\n"]))),or=_e.d.div(La||(La=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.active,n=e.theme.addDialog.gradientStartColor;return Object(_e.c)(Ra||(Ra=Object(Ze.a)(["\n background: ",";\n padding: 0 20px 20px 20px;\n transition: all 0.3s;\n\n ",";\n "])),n,t&&"box-shadow: 0 8px 10px -9px rgba(0, 0, 0, 0.5)")})),cr=_e.d.div(Aa||(Aa=Object(Ze.a)(["\n margin-top: 20px;\n display: grid;\n grid-template-columns: max-content 1fr;\n grid-template-rows: 300px max-content;\n column-gap: 5px;\n position: relative;\n margin-bottom: 20px;\n\n grid-template-areas:\n 'poster suggestions'\n 'clear empty';\n\n @media (max-width: 540px) {\n grid-template-columns: 1fr;\n gap: 5px 0;\n justify-items: center;\n grid-template-areas:\n 'poster'\n 'clear'\n 'suggestions';\n }\n"]))),sr=_e.d.div(Ba||(Ba=Object(Ze.a)(["\n display: grid;\n grid-area: suggestions;\n grid-auto-flow: column;\n grid-template-columns: repeat(3, max-content);\n grid-template-rows: repeat(4, max-content);\n gap: 5px;\n\n @media (max-width: 540px) {\n grid-auto-flow: row;\n grid-template-columns: repeat(5, max-content);\n }\n @media (max-width: 375px) {\n grid-template-columns: repeat(4, max-content);\n }\n"]))),lr=_e.d.div(Fa||(Fa=Object(Ze.a)(["\n cursor: pointer;\n width: 71px;\n height: 71px;\n\n @media (max-width: 430px) {\n width: 60px;\n height: 60px;\n }\n\n @media (max-width: 375px) {\n width: 71px;\n height: 71px;\n }\n\n @media (max-width: 355px) {\n width: 60px;\n height: 60px;\n }\n\n img {\n transition: all 0.3s;\n border-radius: 5px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n :hover {\n filter: brightness(130%);\n }\n }\n"]))),dr=_e.d.div(Ea||(Ea=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.poster,n=e.theme.addDialog.posterBGColor;return Object(_e.c)(Ha||(Ha=Object(Ze.a)(["\n border-radius: 5px;\n overflow: hidden;\n width: 200px;\n grid-area: poster;\n\n ","\n "])),t?Object(_e.c)(Na||(Na=Object(Ze.a)(["\n img {\n width: 200px;\n object-fit: cover;\n border-radius: 5px;\n height: 100%;\n }\n "]))):Object(_e.c)(za||(za=Object(Ze.a)(["\n display: grid;\n place-items: center;\n background: ",";\n\n svg {\n transform: scale(1.5) translateY(-3px);\n }\n "])),n))})),br=Object(_e.d)(oe.a)(Ga||(Ga=Object(Ze.a)(["\n grid-area: clear;\n justify-self: center;\n transform: translateY(-50%);\n position: absolute;\n ",";\n\n @media (max-width: 540px) {\n transform: translateY(-140%);\n }\n"])),(function(e){return!e.showbutton&&"display: none"})),pr=_e.d.div(Ia||(Ia=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.showbutton,n=e.theme.addDialog,a=n.languageSwitchBGColor,r=n.languageSwitchFontColor;return Object(_e.c)(Ua||(Ua=Object(Ze.a)(["\n grid-area: poster;\n z-index: 5;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 30px;\n height: 30px;\n background: ",";\n border-radius: 50%;\n display: grid;\n place-items: center;\n color: ",";\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s;\n\n ",";\n\n :hover {\n filter: brightness(1.1);\n }\n "])),a,r,!t&&"display: none")})),jr=_e.d.div(Va||(Va=Object(Ze.a)(["\n border: 2px solid white;\n border-radius: 50%;\n height: 45px;\n width: 45px;\n position: relative;\n\n :before,\n :after {\n content: '';\n background: white;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n :before {\n width: 2px;\n height: 25px;\n }\n :after {\n width: 25px;\n height: 2px;\n }\n"]))),ur=n(501),hr=n(465),xr=n(466);function gr(e){var t=e.setTitle,n=e.setPosterUrl,a=e.setIsPosterUrlCorrect,r=e.setIsUserInteractedWithPoster,i=e.setPosterList,o=e.isTorrentSourceCorrect,c=e.isHashAlreadyExists,s=e.title,l=e.parsedTitle,d=e.posterUrl,b=e.isPosterUrlCorrect,p=e.posterList,j=e.currentLang,u=e.posterSearchLanguage,h=e.setPosterSearchLanguage,x=e.posterSearch,g=e.removePoster,O=e.torrentSource,m=e.originalTorrentTitle,f=e.updateTitleFromSource,C=e.isCustomTitleEnabled,v=e.setIsCustomTitleEnabled,S=e.isEditMode,y=Object(be.a)().t,w=Object(q.a)().palette.primary.main,D=function(e){var n=e.target.value;return t(n)};return Object(ee.jsxs)($a,{children:[Object(ee.jsxs)(Qa,{isHidden:!o||c&&!S,children:[m?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ur.a,{value:m,margin:"dense",label:y("AddDialog.OriginalTorrentTitle"),type:"text",variant:"outlined",fullWidth:!0,disabled:C,InputProps:{readOnly:!0}}),Object(ee.jsx)(ur.a,{onChange:D,onFocus:function(){return v(!0)},onBlur:function(e){return!e.target.value&&v(!1)},value:s,margin:"dense",label:y("AddDialog.CustomTorrentTitle"),type:"text",variant:"outlined",fullWidth:!0,helperText:y("AddDialog.CustomTorrentTitleHelperText"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:Object(ee.jsx)(xe.a,{style:{padding:"1px"},onClick:function(){t(""),v(!C),f(),r(!1)},children:Object(ee.jsx)(xr.a,{style:{color:C?w:Object(Ne.a)("#ccc",.5)}})})})}})]}):Object(ee.jsx)(ur.a,{onChange:D,value:s,margin:"dense",label:y("AddDialog.TitleBlank"),type:"text",variant:"outlined",fullWidth:!0,helperText:y("AddDialog.TitleBlankHelperText")}),Object(ee.jsx)(ur.a,{onChange:function(e){var t=e.target.value;n(t),Za(t).then(a),r(!!t),i()},value:d,margin:"dense",label:y("AddDialog.AddPosterLinkInput"),type:"url",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(cr,{children:[Object(ee.jsx)(dr,{poster:+b,children:b?Object(ee.jsx)("img",{src:d,alt:"poster"}):Object(ee.jsx)(te,{})}),Object(ee.jsx)(sr,{children:null===p||void 0===p?void 0:p.filter((function(e){return e!==d})).slice(0,12).map((function(e){return Object(ee.jsx)(lr,{onClick:function(){return function(e){n(e),Za(e).then(a),r(!0)}(e)},children:Object(ee.jsx)("img",{src:e,alt:"poster"})},e)}))}),"en"!==j&&Object(ee.jsx)(pr,{onClick:function(){var e="en"===u?"ru":"en";h(e),x(C?s:m?l:s,e,{shouldRefreshMainPoster:!0})},showbutton:+b,color:"primary",variant:"contained",size:"small",children:"en"===u?"EN":"RU"}),Object(ee.jsx)(br,{showbutton:+b,onClick:function(){g(),r(!0)},color:"primary",variant:"contained",size:"small",children:y("Clear")})]})]}),Object(ee.jsx)(Qa,{isError:O&&(!o||c),notificationMessage:O?o?c&&y("AddDialog.HashExists"):y("AddDialog.WrongTorrentSource"):y("AddDialog.AddTorrentSourceNotification"),isHidden:S||o&&!c})]})}var Or,mr,fr,Cr,vr,Sr,yr,wr,Dr,Tr,kr,Pr,Mr=n(206),Lr=n(467);function Rr(e){var t=e.setIsUserInteractedWithPoster,n=e.setSelectedFile,r=e.torrentSource,i=e.setTorrentSource,o=e.selectedFile,s=Object(be.a)().t,l=Object(a.useState)(!1),d=Object(c.a)(l,2),b=d[0],p=d[1],j=Object(Mr.a)({onDrop:function(e){var a=Object(c.a)(e,1)[0];a&&(t(!1),n(a),i(a.name))},accept:".torrent"}),u=j.getRootProps,h=j.getInputProps,x=j.isDragActive;return Object(ee.jsxs)(qa,{children:[Object(ee.jsx)(or,{active:b,children:Object(ee.jsx)(ur.a,{onChange:function(e){var t=e.target.value;return i(t)},value:r,margin:"dense",label:s("AddDialog.TorrentSourceLink"),helperText:s("AddDialog.TorrentSourceOptions"),type:"text",fullWidth:!0,variant:"outlined",onFocus:function(){return p(!0)},onBlur:function(){return p(!1)},inputProps:{autoComplete:"off"},disabled:!!o})}),o?Object(ee.jsx)(nr,{children:Object(ee.jsxs)(ar,{children:[Object(ee.jsx)(ie,{}),Object(ee.jsx)(rr,{onClick:function(){n(),i("")},children:Object(ee.jsx)(Lr.a,{})})]})}):Object(ee.jsxs)(tr,Object(R.a)(Object(R.a)({isDragActive:x},u()),{},{children:[Object(ee.jsx)("input",Object(R.a)({},h())),Object(ee.jsx)("div",{children:s("AddDialog.AppendFile.Or")}),Object(ee.jsxs)(ir,{children:[Object(ee.jsx)(ne,{color:"primary"}),Object(ee.jsx)("div",{children:s("AddDialog.AppendFile.ClickOrDrag")})]})]}))]})}function Ar(e){var t=e.handleClose,n=e.hash,r=e.title,i=e.name,s=e.poster,l=Object(be.a)().t,d=!!n,b=Object(a.useState)(n||""),p=Object(c.a)(b,2),j=p[0],u=p[1],h=Object(a.useState)(r||""),x=Object(c.a)(h,2),g=x[0],O=x[1],m=Object(a.useState)(""),f=Object(c.a)(m,2),S=f[0],y=f[1],w=Object(a.useState)(""),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(s||""),L=Object(c.a)(P,2),R=L[0],A=L[1],B=Object(a.useState)(!1),F=Object(c.a)(B,2),E=F[0],H=F[1],N=Object(a.useState)(!1),z=Object(c.a)(N,2),G=z[0],I=z[1],U=Object(a.useState)(!1),V=Object(c.a)(U,2),W=V[0],Z=V[1],_=Object(a.useState)(),K=Object(c.a)(_,2),J=K[0],X=K[1],Y=Object(a.useState)(d),Q=Object(c.a)(Y,2),q=Q[0],te=Q[1],ne=Zn(),ae=Object(c.a)(ne,1)[0],re=Object(a.useState)(),ie=Object(c.a)(re,2),ce=ie[0],se=ie[1],pe=Object(a.useState)("ru"===ae?"ru":"en"),je=Object(c.a)(pe,2),ue=je[0],he=je[1],xe=Object(a.useState)(!1),ge=Object(c.a)(xe,2),Oe=ge[0],me=ge[1],fe=Object(a.useState)(!1),Ce=Object(c.a)(fe,2),ve=Ce[0],Se=Ce[1],ye=Object(a.useState)(!1),we=Object(c.a)(ye,2),De=we[0],Te=we[1],ke=Object(a.useState)(),Pe=Object(c.a)(ke,2),Me=Pe[0],Le=Pe[1],Re=xa(t),Ae=Object(o.useQuery)("torrents",$,{retry:1,refetchInterval:1e3}).data;Object(a.useEffect)((function(){oa.a.remote(ce||j,(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.infoHash;return Le(n)}))}),[ce,j]),Object(a.useEffect)((function(){if(Le){var e=Ae.map((function(e){return e.hash}));Z(e.includes(Me))}}),[Me,Ae]),Object(a.useEffect)((function(){if(Oe){Ae.map((function(e){return e.hash})).includes(Me)&&t();null!==j.match(/^(http(s?)):\/\/.*/i)&&t()}}),[Oe,Ae,j,Me,t]);var Be=Object(He.a)("@media (max-width:930px)"),Fe=Object(a.useCallback)((function(){var e,t;e=ce||j,t=function(e){var t=e.parsedTitle,n=e.originalName;n&&(Se(!0),O(""),Te(!1),y(n),k(t))},oa.a.remote(e,(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.name,r=n.files;if(!a||e)return t({parsedTitle:null,originalName:null});var i=le.a.parse(a).title,o=r?le.a.parse(r[0].name).title:null,c=i;o&&(c=i.length2&&void 0!==arguments[2]?arguments[2]:{},a=n.shouldRefreshMainPoster,r=void 0!==a&&a;if(!e)return X(),void Ee();Wa(e,t).then((function(e){if(e){if(X(e),!r&&q)return;var t=Object(c.a)(e,1)[0];Za(t).then((function(e){e?(H(!0),A(t)):Ee()}))}else{if(X(),q)return;Ee()}}))}}),[q]),ze=Object(a.useMemo)((function(){return Wn()(Ne,700)}),[Ne]),Ge=_n(j);Object(a.useEffect)((function(){var e;if(!(null!==(e=j).match(Ka)||null!==e.match(_a)||null!==e.match(Ja)||null!==e.match(Xa)))return I(!1);I(!0),j!==Ge&&Fe()}),[Ge,ce,j,Fe]);var Ie=_n(g);Object(a.useEffect)((function(){(g!==Ie||T)&&(ve?(Ne(g||T,ue),Se(!1)):g?ze(g,ue):(ze.cancel(),T?Ne(T,ue):!q&&Ee()))}),[g,T,Ie,ze,Ne,ue,ve,q]);return Object(ee.jsxs)(ua,{open:!0,onClose:t,fullScreen:Be,fullWidth:!0,maxWidth:"md",ref:Re,children:[Object(ee.jsx)(ha,{children:l(d?"EditTorrent":"AddNewTorrent")}),Object(ee.jsxs)(Ya,{isEditMode:d,children:[!d&&Object(ee.jsx)(Rr,{setIsUserInteractedWithPoster:te,selectedFile:ce,setSelectedFile:se,torrentSource:j,setTorrentSource:u}),Object(ee.jsx)(gr,{originalTorrentTitle:S,setTitle:O,setPosterUrl:A,setIsPosterUrlCorrect:H,setIsUserInteractedWithPoster:te,setPosterList:X,isTorrentSourceCorrect:G,isHashAlreadyExists:W,title:g,parsedTitle:T,posterUrl:R,isPosterUrlCorrect:E,posterList:J,currentLang:ae,posterSearchLanguage:ue,setPosterSearchLanguage:he,posterSearch:Ne,removePoster:Ee,updateTitleFromSource:Fe,torrentSource:j,isCustomTitleEnabled:De,setIsCustomTitleEnabled:Te,isEditMode:d})]}),Object(ee.jsxs)(sa,{children:[Object(ee.jsx)(oe.a,{onClick:t,color:"secondary",variant:"outlined",children:l("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",style:{minWidth:"110px"},disabled:!j||W&&!d||!G,onClick:function(){if(me(!0),d)M.a.post(v(),{action:"set",hash:n,title:g||i,poster:R}).finally(t);else if(ce){var e=new FormData;e.append("save","true"),e.append("file",ce),g&&e.append("title",g),R&&e.append("poster",R),M.a.post("".concat(C,"/torrent/upload"),e).catch(t)}else M.a.post(v(),{action:"add",link:j,title:g,poster:R,save_to_db:!0}).catch(t)},color:"secondary",children:Oe?Object(ee.jsx)(de.a,{style:{color:"white"},size:20}):l(d?"Save":"Add")})]})]})}var Br,Fr,Er,Hr,Nr,zr,Gr,Ir,Ur,Vr,Wr,Zr,_r,Kr,Jr,Xr,Yr,$r,Qr,qr,ei=_e.d.div(Or||(Or=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard.cardPrimaryColor;return Object(_e.c)(mr||(mr=Object(Ze.a)(["\n border-radius: 5px;\n display: grid;\n grid-template-columns: 120px 260px 1fr;\n grid-template-rows: 180px;\n grid-template-areas: 'poster description buttons';\n gap: 10px;\n padding: 10px;\n background: ",";\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-areas:\n 'poster description'\n 'buttons buttons';\n\n grid-template-columns: 70px 1fr;\n grid-template-rows: 110px max-content;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 60px 1fr;\n grid-template-rows: 90px max-content;\n }\n "])),t)})),ti=_e.d.div(fr||(fr=Object(Ze.a)(["\n grid-area: poster;\n border-radius: 5px;\n overflow: hidden;\n text-align: center;\n cursor: pointer;\n transition: 0.2s;\n position: relative;\n\n :hover {\n filter: brightness(0.7);\n }\n\n ",";\n\n @media (max-width: 1260px), (max-height: 500px) {\n svg {\n width: 50%;\n }\n }\n"])),(function(e){var t=e.isPoster,n=e.theme.torrentCard,a=n.cardSecondaryColor,r=n.accentCardColor;return t?Object(_e.c)(Cr||(Cr=Object(Ze.a)(["\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 5px;\n }\n "]))):Object(_e.c)(vr||(vr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n background: ",";\n border: 1px solid ",";\n\n svg {\n transform: translateY(-3px);\n }\n "])),a,r)})),ni=_e.d.div(Sr||(Sr=Object(Ze.a)(["\n grid-area: buttons;\n display: grid;\n gap: 10px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: repeat(4, 1fr);\n }\n\n @media (max-width: 340px) {\n gap: 5px;\n }\n"]))),ai=_e.d.div(yr||(yr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard,n=t.cardSecondaryColor,a=t.accentCardColor;return Object(_e.c)(wr||(wr=Object(Ze.a)(["\n grid-area: description;\n background: ",";\n border-radius: 5px;\n padding: 5px;\n display: grid;\n grid-template-rows: 55% 1fr;\n gap: 10px;\n\n @media (max-width: 770px) {\n grid-template-rows: 60% 1fr;\n gap: 3px;\n }\n\n .description-title-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .description-section-name {\n text-transform: uppercase;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.4px;\n color: ",";\n\n @media (max-width: 770px) {\n font-size: 0.5rem;\n line-height: 10px;\n }\n }\n\n .description-status-wrapper {\n display: inline-block;\n height: 8px;\n margin-inline-end: 4px;\n vertical-align: baseline;\n }\n\n .description-torrent-title {\n overflow: auto;\n word-break: break-all;\n }\n\n .description-statistics-wrapper {\n display: grid;\n grid-template-columns: 80px 80px 1fr;\n align-self: end;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: 70px 70px 1fr;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 65px 65px 1fr;\n }\n\n @media (max-width: 700px) {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .description-statistics-element-wrapper {\n }\n\n .description-statistics-element-value {\n margin-bottom: 10px;\n margin-left: 0;\n word-break: break-all;\n\n @media (max-width: 1260px), (max-height: 500px) {\n font-size: 0.7rem;\n margin-bottom: 0;\n margin-left: 0;\n }\n }\n\n .description-torrent-title,\n .description-statistics-element-value {\n @media (max-width: 770px) {\n font-size: 0.6rem;\n }\n\n @media (max-width: 410px) {\n font-size: 10px;\n }\n }\n "])),n,a)})),ri=_e.d.button(Dr||(Dr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard,n=t.buttonBGColor,a=t.accentCardColor;return Object(_e.c)(Tr||(Tr=Object(Ze.a)(["\n border-radius: 5px;\n border: none;\n cursor: pointer;\n transition: 0.2s;\n display: flex;\n align-items: center;\n text-transform: uppercase;\n background: ",";\n color: #fff;\n font-size: 0.9rem;\n letter-spacing: 0.009em;\n padding: 0 12px;\n svg {\n width: 20px;\n }\n\n :hover {\n background: ",";\n }\n\n > :first-child {\n margin-right: 10px;\n }\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 7px 10px;\n justify-content: center;\n font-size: 0.8rem;\n\n svg {\n display: none;\n }\n }\n\n @media (max-width: 770px) {\n font-size: 0.7rem;\n }\n\n @media (max-width: 420px) {\n font-size: 0.6rem;\n padding: 7px 5px;\n }\n "])),n,a)})),ii=_e.d.div(kr||(kr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color;return Object(_e.c)(Pr||(Pr=Object(Ze.a)(["\n height: 8px;\n width: 8px;\n background-color: ",";\n border-radius: 50%;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n "])),t)})),oi=Object(a.forwardRef)((function(e,t){return Object(ee.jsx)(Gn.a,Object(R.a)({direction:"up",ref:t},e))})),ci=function(e){var t=e.torrent,n=Object(be.a)().t,r=Object(a.useState)(!1),i=Object(c.a)(r,2),o=i[0],s=i[1],l=Object(a.useState)(!1),b=Object(c.a)(l,2),p=b[0],j=b[1],u=Object(q.a)(),h=Object(He.a)(u.breakpoints.down("md")),x=function(){return s(!1)},g=function(){return j(!1)},O=t.title,m=t.name,f=t.poster,C=t.torrent_size,S=t.download_speed,y=t.hash,w=t.stat,D=function(){var e=function(e){var t,n;return(null===(t=le.a.parse(O||""))||void 0===t?void 0:t[e])||(null===(n=le.a.parse(m||""))||void 0===n?void 0:n[e])},t=[],n=Y(e("title")),a=e("year"),r=e("resolution");return n&&t.push(n),a&&t.push("(".concat(a,")")),r&&t.push("[".concat(r,"]")),{parsedTitle:n=t.join(" ")}}(),k=D.parsedTitle,P=Object(a.useState)(!1),L=Object(c.a)(P,2),R=L[0],E=L[1],H="".concat(T(),"/").concat(encodeURIComponent(k||"file"),".m3u?link=").concat(y,"&m3u"),N=xa(x);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(ei,{children:[Object(ee.jsx)(ti,{isPoster:f,onClick:function(){return E(!0)},children:f?Object(ee.jsx)("img",{src:f,alt:"poster"}):Object(ee.jsx)(te,{})}),Object(ee.jsxs)(ni,{children:[Object(ee.jsxs)(ri,{onClick:function(){return s(!0)},children:[Object(ee.jsx)(A.a,{}),Object(ee.jsx)("span",{children:n("Details")})]}),Object(ee.jsxs)(ri,{onClick:function(){window.open(H,"_blank")},children:[Object(ee.jsx)(B.a,{}),Object(ee.jsx)("span",{children:n("Playlist")})]}),Object(ee.jsxs)(ri,{onClick:function(){return M.a.post(v(),{action:"drop",hash:y})},children:[Object(ee.jsx)(d.a,{}),Object(ee.jsx)("span",{children:n("Drop")})]}),Object(ee.jsxs)(ri,{onClick:function(){return j(!0)},children:[Object(ee.jsx)(F.a,{}),Object(ee.jsx)("span",{children:n("Delete")})]})]}),Object(ee.jsxs)(ai,{children:[Object(ee.jsxs)("div",{className:"description-title-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Name")}),Object(ee.jsx)("div",{className:"description-torrent-title",children:k})]}),Object(ee.jsxs)("div",{className:"description-statistics-wrapper",children:[Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsxs)("div",{className:"description-section-name",children:[Object(ee.jsx)(si,{stat:w}),n("Size")]}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:C>0&&K(C)})]}),Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Speed")}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:S>0?J(S):"---"})]}),Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Peers")}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:X(t)||"---"})]})]})]})]}),Object(ee.jsx)(ua,{open:o,onClose:x,fullScreen:h,fullWidth:!0,maxWidth:"xl",TransitionComponent:oi,ref:N,children:Object(ee.jsx)(Nn,{closeDialog:x,torrent:t})}),Object(ee.jsxs)(zn.a,{open:p,onClose:g,children:[Object(ee.jsx)(In.a,{children:n("DeleteTorrent?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:g,color:"secondary",children:n("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){M.a.post(v(),{action:"rem",hash:y}),g()},color:"secondary",autoFocus:!0,children:n("OK")})]})]}),R&&Object(ee.jsx)(Ar,{hash:y,title:O,name:m,poster:f,handleClose:function(){return E(!1)}})]})},si=function(e){var t,n,a=e.stat,r=Object(be.a)().t,i=(t={},Object(L.a)(t,1,r("TorrentGettingInfo")),Object(L.a)(t,2,r("TorrentPreload")),Object(L.a)(t,3,r("TorrentWorking")),Object(L.a)(t,4,r("TorrentClosed")),Object(L.a)(t,5,r("TorrentInDb")),t),o=(n={},Object(L.a)(n,1,"#2196F3"),Object(L.a)(n,2,"#FFC107"),Object(L.a)(n,3,"#CDDC39"),Object(L.a)(n,4,"#E57373"),Object(L.a)(n,5,"#9E9E9E"),n);return Object(ee.jsx)("span",{className:"description-status-wrapper",children:Object(ee.jsx)(ii,{color:o[a],title:i[a]})})},li=Object(a.memo)(ci),di=_e.d.div(Br||(Br=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.app.appSecondaryColor;return Object(_e.c)(Fr||(Fr=Object(Ze.a)(["\n height: 100%;\n background: ",";\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-rows: 60px 1fr;\n grid-template-areas:\n 'head head'\n 'side content';\n\n ","\n "])),Object(Ne.a)(t,.8),da(Object(_e.c)(Er||(Er=Object(Ze.a)(["\n grid-template-columns: 0 1fr;\n grid-template-rows: ","px 1fr ","px;\n height: 100vh;\n "])),ba,ba)))})),bi=_e.d.div(Hr||(Hr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n\n ","\n"])),da(Object(_e.c)(Nr||(Nr=Object(Ze.a)(["\n height: 100vh;\n width: 100vw;\n "]))))),pi=_e.d.div(zr||(zr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.primary;return Object(_e.c)(Gr||(Gr=Object(Ze.a)(["\n background: ",";\n color: #fff;\n grid-area: head;\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n grid-template-columns: repeat(2, max-content) 1fr;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 0 16px;\n z-index: 3;\n\n ","\n "])),t,da(Object(_e.c)(Ir||(Ir=Object(Ze.a)(["\n grid-template-columns: max-content 1fr;\n align-items: end;\n padding: 7px 16px;\n position: fixed;\n width: 100%;\n height: ","px;\n "])),ba)))})),ji=_e.d.div(Ur||(Ur=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isDrawerOpen,n=e.theme.app,a=n.appSecondaryColor,r=n.sidebarBGColor,i=n.sidebarFillColor;return Object(_e.c)(Vr||(Vr=Object(Ze.a)(["\n grid-area: side;\n width: ",";\n z-index: 2;\n overflow-x: hidden;\n transition: width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms;\n border-right: 1px solid ",";\n background: ",";\n color: ",";\n white-space: nowrap;\n\n svg {\n fill: ",";\n }\n\n ","\n "])),t?"400%":"100%",Object(Ne.a)(a,.12),r,i,i,da(Object(_e.c)(Wr||(Wr=Object(Ze.a)(["\n display: none;\n "])))))})),ui=_e.d.div(Zr||(Zr=Object(Ze.a)(["\n grid-area: content;\n padding: 20px;\n overflow: auto;\n\n display: grid;\n place-content: start;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 570px));\n gap: 20px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 10px;\n gap: 15px;\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 1100px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 700px) {\n grid-template-columns: 1fr;\n }\n\n ","\n"])),da(Object(_e.c)(_r||(_r=Object(Ze.a)(["\n height: calc(100vh - ","px);\n padding-bottom: 105px;\n "])),ba))),hi=_e.d.div(Kr||(Kr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.app.headerToggleColor;return Object(_e.c)(Jr||(Jr=Object(Ze.a)(["\n cursor: pointer;\n border-radius: 50%;\n background: ",";\n height: 35px;\n width: 35px;\n transition: all 0.2s;\n font-weight: 600;\n display: grid;\n place-items: center;\n color: #fff;\n\n :hover {\n background: ",";\n }\n\n @media (max-width: 700px) {\n height: 28px;\n width: 28px;\n font-size: 12px;\n\n svg {\n width: 17px;\n }\n }\n "])),t,Object(Ne.a)(t,.7))})),xi=Object(_e.d)(xe.a)(Xr||(Xr=Object(Ze.a)(["\n margin-right: 6px;\n\n ","\n"])),da(Object(_e.c)(Yr||(Yr=Object(Ze.a)(["\n display: none;\n "]))))),gi=_e.d.div($r||($r=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isButton,n=e.theme.addDialog,a=n.notificationSuccessBGColor,r=n.languageSwitchBGColor;return Object(_e.c)(Qr||(Qr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n padding: 20px 40px;\n border-radius: 5px;\n\n ","\n\n lord-icon {\n width: 200px;\n height: 200px;\n }\n\n .icon-label {\n font-size: 20px;\n }\n "])),t&&Object(_e.c)(qr||(qr=Object(Ze.a)(["\n background: ",";\n transition: 0.2s;\n cursor: pointer;\n\n :hover {\n background: ",";\n }\n "])),a,r))}));function Oi(){var e=Object(be.a)().t,t=Object(q.a)().palette.primary.main;return Object(ee.jsxs)(gi,{children:[Object(ee.jsx)("lord-icon",{src:"https://cdn.lordicon.com/wrprwmwt.json",trigger:"loop",colors:"primary:#121331,secondary:".concat(t),stroke:"26",scale:"60"}),Object(ee.jsx)("div",{className:"icon-label",children:e("Offline")})]})}function mi(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(q.a)().palette.primary.main;return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(gi,{onClick:function(){return i(!0)},isButton:!0,children:[Object(ee.jsx)("lord-icon",{src:"https://cdn.lordicon.com/bbnkwdur.json",trigger:"loop",colors:"primary:#121331,secondary:".concat(o),stroke:"26",scale:"60"}),Object(ee.jsx)("div",{className:"icon-label",children:e("NoTorrentsAdded")})]}),r&&Object(ee.jsx)(Ar,{handleClose:function(){return i(!1)}})]})}function fi(e){var t=e.isOffline,n=e.isLoading,a=e.sortABC,r=e.torrents;return n||t||!r.length?Object(ee.jsx)(bi,{children:t?Object(ee.jsx)(Oi,{}):n?Object(ee.jsx)(de.a,{color:"secondary"}):!r.length&&Object(ee.jsx)(mi,{})}):a?Object(ee.jsx)(ui,{children:r.sort((function(e,t){return e.title>t.title})).map((function(e){return Object(ee.jsx)(li,{torrent:e},e.hash)}))}):Object(ee.jsx)(ui,{children:r.map((function(e){return Object(ee.jsx)(li,{torrent:e},e.hash)}))})}var Ci,vi=n(498),Si=n(201),yi=n.n(Si),wi=n(475);function Di(e){var t=e.onClose,n=Object(be.a)().t,a=xa(t);return Object(ee.jsxs)(ua,{open:!0,onClose:t,"aria-labelledby":"form-dialog-title",fullWidth:!0,maxWidth:"xs",ref:a,children:[Object(ee.jsx)(In.a,{id:"form-dialog-title",children:n("Donate")}),Object(ee.jsx)(wi.a,{children:Object(ee.jsxs)(ce.a,{variant:"outlined",color:"secondary","aria-label":"contained primary button group",children:[Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://boosty.to/yourok","_blank")},children:"Boosty"}),Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://yoomoney.ru/to/410013733697114","_blank")},children:"IO.Money"}),Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://qiwi.com/n/YOUROK85","_blank")},children:"QIWI"})]})}),Object(ee.jsx)(Un.a,{children:Object(ee.jsx)(oe.a,{onClick:t,color:"secondary",variant:"contained",children:"Ok"})})]})}var Ti=Object(_e.d)(vi.a)(Ci||(Ci=Object(Ze.a)(["\n ",";\n"])),da("margin-bottom: 90px"));function ki(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(!0),s=Object(c.a)(o,2),l=s[0],d=s[1],b=function(){d(!1),localStorage.setItem("snackbarIsClosed",!0)};return Object(ee.jsxs)(ee.Fragment,{children:[r&&Object(ee.jsx)(Di,{onClose:function(){return i(!1)}}),Object(ee.jsx)(Ti,{anchorOrigin:{vertical:"bottom",horizontal:"center"},open:l,onClose:b,message:e("Donate?"),action:Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(oe.a,{style:{marginRight:"10px"},color:"secondary",size:"small",onClick:function(){i(!0),b()},children:[Object(ee.jsx)(yi.a,{style:{marginRight:"10px"},fontSize:"small"}),e("Support")]}),Object(ee.jsx)(xe.a,{size:"small","aria-label":"close",color:"inherit",onClick:b,children:Object(ee.jsx)(Oe.a,{fontSize:"small"})})]})})]})}var Pi,Mi,Li=n(486),Ri=Object(_e.b)(Pi||(Pi=Object(Ze.a)(['\n *,\n *::before,\n *::after { \n margin: 0;\n padding: 0;\n box-sizing: inherit;\n }\n\n body { \n font-family: "Open Sans", sans-serif;\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.1px;\n -webkit-tap-highlight-color: transparent;\n\n\n ','\n }\n\n button {\n font-family: "Open Sans", sans-serif;\n letter-spacing: -0.1px;\n }\n'])),da(Object(_e.c)(Mi||(Mi=Object(Ze.a)(["\n height: 100vh;\n "]))))),Ai=n(484),Bi=n(476),Fi=n(477),Ei=n(485),Hi=n(463),Ni=n(202),zi=n.n(Ni);function Gi(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1];return Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsx)(jr,{}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(zi.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("AddFromLink")})]})}),s&&Object(ee.jsx)(Ar,{handleClose:function(){return l(!1)}})]})}var Ii,Ui,Vi,Wi,Zi,_i,Ki,Ji,Xi,Yi,$i,Qi,qi,eo,to,no,ao,ro,io,oo,co,so,lo=n(131),bo=n.n(lo),po=n(479),jo=n(495),uo=n(481),ho=n(203),xo=n.n(ho),go="#b3dfc9",Oo=Ge.light.primary,mo=Object(_e.d)(ha)(Ii||(Ii=Object(Ze.a)(["\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 340px) {\n grid-auto-flow: row;\n }\n"]))),fo=_e.d.div(Ui||(Ui=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.settingsDialog.footerBG;return Object(_e.c)(Vi||(Vi=Object(Ze.a)(["\n padding: 20px;\n display: grid;\n grid-auto-flow: column;\n justify-content: end;\n gap: 10px;\n align-items: center;\n background: ",";\n\n @media (max-width: 500px) {\n grid-auto-flow: row;\n justify-content: stretch;\n }\n "])),t)})),Co=(_e.d.div(Wi||(Wi=Object(Ze.a)(["\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n"]))),_e.d.div(Zi||(Zi=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isLoading,n=e.theme.settingsDialog.contentBG;return Object(_e.c)(_i||(_i=Object(Ze.a)(["\n background: ",";\n overflow: auto;\n flex: 1;\n\n ","\n "])),n,t&&Object(_e.c)(Ki||(Ki=Object(Ze.a)(["\n min-height: 500px;\n display: grid;\n place-items: center;\n "]))))}))),vo=_e.d.div(Ji||(Ji=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color;return Object(_e.c)(Xi||(Xi=Object(Ze.a)(["\n display: grid;\n grid-template-columns: max-content 100px 1fr;\n gap: 10px;\n align-items: flex-start;\n\n :not(:last-child) {\n margin-bottom: 5px;\n }\n\n :before {\n content: '';\n background: ",";\n width: 16px;\n height: 16px;\n border-radius: 50%;\n margin-top: 2px;\n }\n "])),t)})),So=_e.d.div(Yi||(Yi=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 40px;\n padding: 20px;\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n"]))),yo=_e.d.div($i||($i=Object(Ze.a)(["\n padding: 20px;\n"]))),wo=_e.d.div(Qi||(Qi=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.small,n=e.selected;return Object(_e.c)(qi||(qi=Object(Ze.a)(["\n transition: 0.2s;\n cursor: default;\n text-align: center;\n\n ","\n\n ","\n "])),!n&&Object(_e.c)(eo||(eo=Object(Ze.a)(["\n cursor: pointer;\n\n :hover {\n filter: brightness(0.8);\n }\n "]))),t?Object(_e.c)(to||(to=Object(Ze.a)(["\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 20px;\n align-items: center;\n justify-items: start;\n margin-bottom: 20px;\n "]))):Object(_e.c)(no||(no=Object(Ze.a)(["\n display: grid;\n place-items: center;\n gap: 10px;\n "]))))})),Do=_e.d.div(ao||(ao=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.selected,n=e.small;return Object(_e.c)(ro||(ro=Object(Ze.a)(["\n width: ",";\n height: ",";\n border-radius: 50%;\n background: ",";\n\n svg {\n transform: rotate(-45deg) scale(0.75);\n }\n\n @media (max-width: 930px) {\n width: ",";\n height: ",";\n }\n "])),n?"60px":"150px",n?"60px":"150px",t?"#323637":"#dee3e5",n?"50px":"90px",n?"50px":"90px")})),To=_e.d.div(io||(io=Object(Ze.a)(["\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-template-areas: 'label label';\n place-items: center;\n\n @media (max-width: 930px) {\n justify-content: start;\n column-gap: 30px;\n }\n"]))),ko=_e.d.div(oo||(oo=Object(Ze.a)(["\n font-size: 25px;\n padding-bottom: 20px;\n\n small {\n display: block;\n font-size: 11px;\n }\n"]))),Po=_e.d.div.attrs((function(e){var t=e.value;return{style:{background:"linear-gradient(to right, ".concat(go," 0%, ").concat(go," ").concat(t,"%, ").concat(Oo," ").concat(t,"%, ").concat(Oo," 100%)")}}}))(co||(co=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.label,n=e.preloadCachePercentage;return Object(_e.c)(so||(so=Object(Ze.a)(["\n border: 1px solid #323637;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n margin-bottom: 10px;\n position: relative;\n\n :before {\n content: '","';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n\n :after {\n content: '';\n width: ","%;\n height: 100%;\n background: #323637;\n position: absolute;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n filter: opacity(0.15);\n }\n "])),t,n)})),Mo={CacheSize:64,ReaderReadAHead:95,PreloadCache:50,UseDisk:!1,TorrentsSavePath:"",RemoveCacheOnDrop:!1,ForceEncrypt:!1,RetrackersMode:1,TorrentDisconnectTimeout:30,EnableDebug:!1,EnableDLNA:!1,FriendlyName:"",EnableRutorSearch:!1,EnableIPv6:!1,DisableTCP:!1,DisableUTP:!1,DisableUPNP:!1,DisableDHT:!1,DisablePEX:!1,DisableUpload:!1,DownloadRateLimit:0,UploadRateLimit:0,ConnectionsLimit:25,PeersListenPort:0},Lo=n(5),Ro=["children","value","index"],Ao=function(e){return{id:"full-width-tab-".concat(e),"aria-controls":"full-width-tabpanel-".concat(e)}},Bo=function(e){var t=e.children,n=e.value,a=e.index,r=Object(Lo.a)(e,Ro);return Object(ee.jsx)("div",Object(R.a)(Object(R.a)({role:"tabpanel",hidden:n!==a,id:"full-width-tabpanel-".concat(a)},r),{},{children:n===a&&Object(ee.jsx)(ee.Fragment,{children:t})}))},Fo=n(478),Eo=n(504),Ho=n(502);function No(e){var t=e.isProMode,n=e.title,a=e.value,r=e.setValue,i=e.sliderMin,o=e.sliderMax,c=e.inputMin,s=e.inputMax,l=e.step,d=void 0===l?1:l,b=e.onBlurCallback;return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)("div",{children:n}),Object(ee.jsxs)(Fo.a,{container:!0,spacing:2,alignItems:"center",children:[Object(ee.jsx)(Fo.a,{item:!0,xs:!0,children:Object(ee.jsx)(Eo.a,{min:i,max:o,value:a,onChange:function(e,t){return r(t)},step:d,color:"secondary"})}),t&&Object(ee.jsx)(Fo.a,{item:!0,children:Object(ee.jsx)(Ho.a,{value:a,margin:"dense",onChange:function(e){var t=e.target.value;return r(""===t?"":Number(t))},onBlur:function(e){var t=e.target.value;return ts?r(s):void(b&&b(t))},style:{width:"91px",marginTop:"-6px"},inputProps:{step:d,min:c,max:s,type:"number"}})})]})]})}var zo=function(e){var t=e.style,n=Object(be.a)().t;return Object(ee.jsxs)(ko,{style:t,children:[n("SettingsDialog.CacheStorageLocation"),Object(ee.jsx)("small",{children:n("SettingsDialog.UseDiskDesc")})]})};function Go(e){var t=e.settings,n=e.inputForm,a=e.cachePercentage,r=e.preloadCachePercentage,i=e.cacheSize,o=e.isProMode,c=e.setCacheSize,s=e.setCachePercentage,l=e.setPreloadCachePercentage,d=e.updateSettings,b=Object(be.a)().t,p=t||{},j=p.UseDisk,u=p.TorrentsSavePath,h=p.RemoveCacheOnDrop,x=Math.round(i/100*r);return Object(ee.jsxs)(So,{children:[Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ko,{children:b("SettingsDialog.CacheSettings")}),Object(ee.jsx)(Po,{value:100-a,label:"".concat(b("Cache")," ").concat(i," ").concat(b("MB")),preloadCachePercentage:r}),Object(ee.jsxs)(vo,{color:go,children:[Object(ee.jsxs)("div",{children:[100-a,"% (",Math.round(i/100*(100-a))," ",b("MB"),")"]}),Object(ee.jsx)("div",{children:b("SettingsDialog.CacheBeforeReaderDesc")})]}),Object(ee.jsxs)(vo,{color:Oo,children:[Object(ee.jsxs)("div",{children:[a,"% (",Math.round(i/100*a)," ",b("MB"),")"]}),Object(ee.jsx)("div",{children:b("SettingsDialog.CacheAfterReaderDesc")})]}),Object(ee.jsx)("br",{}),Object(ee.jsx)(No,{isProMode:o,title:b("SettingsDialog.CacheSize"),value:i,setValue:c,sliderMin:32,sliderMax:1024,inputMin:32,inputMax:999999,step:4,onBlurCallback:function(e){return c(4*Math.round(e/4))}}),Object(ee.jsx)(No,{isProMode:o,title:b("SettingsDialog.ReaderReadAHead"),value:a,setValue:s,sliderMin:40,sliderMax:95,inputMin:0,inputMax:100}),Object(ee.jsx)(No,{isProMode:o,title:"".concat(b("SettingsDialog.PreloadCache")," - ").concat(r,"% (").concat(x," ").concat(b("MB"),")"),value:r,setValue:l,sliderMin:0,sliderMax:100,inputMin:0,inputMax:100})]}),j?Object(ee.jsxs)("div",{children:[Object(ee.jsx)(zo,{}),Object(ee.jsxs)("div",{style:{display:"grid",gridAutoFlow:"column"},children:[Object(ee.jsxs)(wo,{small:!0,onClick:function(){return d({UseDisk:!1})},children:[Object(ee.jsx)(Do,{small:!0,children:Object(ee.jsx)(re,{color:"#323637"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.RAM")})]}),Object(ee.jsxs)(wo,{small:!0,selected:!0,children:[Object(ee.jsx)(Do,{small:!0,selected:!0,children:Object(ee.jsx)(ae,{color:"#dee3e5"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.Disk")})]})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:h,onChange:n,id:"RemoveCacheOnDrop",color:"secondary"}),label:b("SettingsDialog.RemoveCacheOnDrop"),labelPlacement:"start"}),Object(ee.jsx)("div",{children:Object(ee.jsx)("small",{children:b("SettingsDialog.RemoveCacheOnDropDesc")})}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"TorrentsSavePath",label:b("SettingsDialog.TorrentsSavePath"),value:u,type:"url",variant:"outlined",fullWidth:!0})]}):Object(ee.jsxs)(To,{children:[Object(ee.jsx)(zo,{style:{placeSelf:"start",gridArea:"label"}}),Object(ee.jsxs)(wo,{selected:!0,children:[Object(ee.jsx)(Do,{selected:!0,children:Object(ee.jsx)(re,{color:"#dee3e5"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.RAM")})]}),Object(ee.jsxs)(wo,{onClick:function(){return d({UseDisk:!0})},children:[Object(ee.jsx)(Do,{children:Object(ee.jsx)(ae,{color:"#323637"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.Disk")})]})]})]})}var Io=n(480),Uo=n(464),Vo=n(503),Wo=n(494);function Zo(e){var t=e.settings,n=e.inputForm,a=Object(be.a)().t,r=t||{},i=r.RetrackersMode,o=r.TorrentDisconnectTimeout,c=r.EnableDebug,s=r.EnableDLNA,l=r.EnableIPv6,d=r.FriendlyName,b=r.EnableRutorSearch,p=r.ForceEncrypt,j=r.DisableTCP,u=r.DisableUTP,h=r.DisableUPNP,x=r.DisableDHT,g=r.DisablePEX,O=r.DisableUpload,m=r.DownloadRateLimit,f=r.UploadRateLimit,C=r.ConnectionsLimit,v=r.PeersListenPort;return Object(ee.jsxs)(yo,{children:[Object(ee.jsx)(ko,{children:a("SettingsDialog.AdditionalSettings")}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:l,onChange:n,id:"EnableIPv6",color:"secondary"}),label:"IPv6",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.EnableIPv6Hint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!j,onChange:n,id:"DisableTCP",color:"secondary"}),label:"TCP (Transmission Control Protocol)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableTCPHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!u,onChange:n,id:"DisableUTP",color:"secondary"}),label:"\u03bcTP (Micro Transport Protocol)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableUTPHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!g,onChange:n,id:"DisablePEX",color:"secondary"}),label:"PEX (Peer Exchange)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisablePEXHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:p,onChange:n,id:"ForceEncrypt",color:"secondary"}),label:a("SettingsDialog.ForceEncrypt"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.ForceEncryptHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"TorrentDisconnectTimeout",label:a("SettingsDialog.TorrentDisconnectTimeout"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Seconds")})},value:o,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"ConnectionsLimit",label:a("SettingsDialog.ConnectionsLimit"),helperText:a("SettingsDialog.ConnectionsLimitHint"),value:C,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!x,onChange:n,id:"DisableDHT",color:"secondary"}),label:a("SettingsDialog.DHT"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableDHTHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"DownloadRateLimit",label:a("SettingsDialog.DownloadRateLimit"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Kilobytes")})},value:m,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!O,onChange:n,id:"DisableUpload",color:"secondary"}),label:a("SettingsDialog.Upload"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.UploadHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"UploadRateLimit",label:a("SettingsDialog.UploadRateLimit"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Kilobytes")})},value:f,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"PeersListenPort",label:a("SettingsDialog.PeersListenPort"),helperText:a("SettingsDialog.PeersListenPortHint"),value:v,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!h,onChange:n,id:"DisableUPNP",color:"secondary"}),label:"UPnP (Universal Plug and Play)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableUPNPHint")})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:s,onChange:n,id:"EnableDLNA",color:"secondary"}),label:a("SettingsDialog.DLNA"),labelPlacement:"start"}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"FriendlyName",label:a("SettingsDialog.FriendlyName"),helperText:a("SettingsDialog.FriendlyNameHint"),value:d,type:"text",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:b,onChange:n,id:"EnableRutorSearch",color:"secondary"}),label:a("SettingsDialog.EnableRutorSearch"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.EnableRutorSearchHint")})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:c,onChange:n,id:"EnableDebug",color:"secondary"}),label:a("SettingsDialog.EnableDebug"),labelPlacement:"start"}),Object(ee.jsx)("br",{}),Object(ee.jsx)(Vo.a,{htmlFor:"RetrackersMode",children:a("SettingsDialog.RetrackersMode")}),Object(ee.jsxs)(Wo.a,{onChange:n,margin:"dense",type:"number",native:!0,id:"RetrackersMode",value:i,variant:"outlined",children:[Object(ee.jsx)("option",{value:0,children:a("SettingsDialog.DontAddRetrackers")}),Object(ee.jsx)("option",{value:1,children:a("SettingsDialog.AddRetrackers")}),Object(ee.jsx)("option",{value:2,children:a("SettingsDialog.RemoveRetrackers")}),Object(ee.jsx)("option",{value:3,children:a("SettingsDialog.ReplaceRetrackers")})]}),Object(ee.jsx)("br",{})]})}function _o(e){var t=e.isVlcUsed,n=e.setIsVlcUsed,a=Object(be.a)().t;return Object(ee.jsxs)(yo,{children:[Object(ee.jsx)(ko,{children:a("SettingsDialog.MobileAppSettings")}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:t,onChange:function(){return n((function(e){return!e}))},color:"secondary"}),label:a("SettingsDialog.UseVLC"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.UseVLCHint")})]})]})}function Ko(e){var t,n=e.handleClose,r=Object(be.a)().t,i=Object(He.a)("@media (max-width:930px)"),o=Object(q.a)().direction,s=Object(a.useState)(),l=Object(c.a)(s,2),d=l[0],b=l[1],p=Object(a.useState)(0),j=Object(c.a)(p,2),u=j[0],h=j[1],x=Object(a.useState)(32),g=Object(c.a)(x,2),O=g[0],m=g[1],f=Object(a.useState)(40),C=Object(c.a)(f,2),v=C[0],S=C[1],w=Object(a.useState)(0),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(JSON.parse(localStorage.getItem("isProMode"))||!1),L=Object(c.a)(P,2),A=L[0],B=L[1],F=Object(a.useState)(null!==(t=JSON.parse(localStorage.getItem("isVlcUsed")))&&void 0!==t&&t),E=Object(c.a)(F,2),H=E[0],N=E[1];Object(a.useEffect)((function(){M.a.post(y(),{action:"get"}).then((function(e){var t=e.data;b(Object(R.a)(Object(R.a)({},t),{},{CacheSize:t.CacheSize/1048576}))}))}),[]);var z=xa(n),G=function(e){var t=e.target,n=t.type,a=t.value,r=t.checked,i=t.id,o=JSON.parse(JSON.stringify(d));"number"===n||"select-one"===n?o[i]=Number(a):"checkbox"===n?o[i]="DisableTCP"===i||"DisableUTP"===i||"DisableUPNP"===i||"DisableDHT"===i||"DisablePEX"===i||"DisableUpload"===i?Boolean(!r):Boolean(r):"url"!==n&&"text"!==n||(o[i]=a),b(o)},I=d||{},U=I.CacheSize,V=I.ReaderReadAHead,W=I.PreloadCache;Object(a.useEffect)((function(){isNaN(U)||isNaN(V)||isNaN(W)||(m(U),S(V),k(W))}),[U,V,W]);var Z=function(e){return b(Object(R.a)(Object(R.a)({},d),e))};return Object(ee.jsxs)(ua,{open:!0,onClose:n,fullScreen:i,fullWidth:!0,maxWidth:"md",ref:z,children:[Object(ee.jsxs)(mo,{children:[Object(ee.jsx)("div",{children:r("SettingsDialog.Settings")}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:A,onChange:function(e){var t=e.target.checked;B(t),localStorage.setItem("isProMode",t),t||h(0)},style:{color:"white"}}),label:r("SettingsDialog.ProMode"),labelPlacement:"start"})]}),Object(ee.jsx)(ue.a,{position:"static",color:"default",children:Object(ee.jsxs)(jo.a,{value:u,onChange:function(e,t){return h(t)},indicatorColor:"secondary",textColor:"secondary",variant:"fullWidth",children:[Object(ee.jsx)(uo.a,Object(R.a)({label:r("SettingsDialog.Tabs.Main")},Ao(0))),Object(ee.jsx)(uo.a,Object(R.a)({disabled:!A,label:Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)("div",{children:r("SettingsDialog.Tabs.Additional")}),!A&&Object(ee.jsx)("div",{style:{fontSize:"9px"},children:r("SettingsDialog.Tabs.AdditionalDisabled")})]})},Ao(1))),Q&&Object(ee.jsx)(uo.a,Object(R.a)({label:r("SettingsDialog.Tabs.App")},Ao(2)))]})}),Object(ee.jsx)(Co,{isLoading:!d,children:d?Object(ee.jsx)(ee.Fragment,{children:Object(ee.jsxs)(xo.a,{axis:"rtl"===o?"x-reverse":"x",index:u,onChangeIndex:function(e){return h(e)},children:[Object(ee.jsx)(Bo,{value:u,index:0,dir:o,children:Object(ee.jsx)(Go,{settings:d,inputForm:G,cachePercentage:v,preloadCachePercentage:T,cacheSize:O,isProMode:A,setCacheSize:m,setCachePercentage:S,setPreloadCachePercentage:k,updateSettings:Z})}),Object(ee.jsx)(Bo,{value:u,index:1,dir:o,children:Object(ee.jsx)(Zo,{settings:d,inputForm:G})}),Q&&Object(ee.jsx)(Bo,{value:u,index:2,dir:o,children:Object(ee.jsx)(_o,{isVlcUsed:H,setIsVlcUsed:N})})]})}):Object(ee.jsx)(de.a,{color:"secondary"})}),Object(ee.jsxs)(fo,{children:[Object(ee.jsx)(oe.a,{onClick:n,color:"secondary",variant:"outlined",children:r("Cancel")}),Object(ee.jsx)(oe.a,{onClick:function(){m(Mo.CacheSize),S(Mo.ReaderReadAHead),k(Mo.PreloadCache),Z(Mo)},color:"secondary",variant:"outlined",children:r("SettingsDialog.ResetToDefault")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){n();var e=JSON.parse(JSON.stringify(d));e.CacheSize=1024*O*1024,e.ReaderReadAHead=v,e.PreloadCache=T,M.a.post(y(),{action:"set",sets:e}),localStorage.setItem("isVlcUsed",H)},color:"secondary",children:r("Save")})]})]})}function Jo(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1];return Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(bo.a,{}),Object(ee.jsx)("div",{children:r("SettingsDialog.Settings")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(bo.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("SettingsDialog.Settings")})]})}),s&&Object(ee.jsx)(Ko,{handleClose:function(){return l(!1)}})]})}var Xo=n(204),Yo=n.n(Xo);function $o(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1],d=function(){return l(!1)};return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(la.a,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Yo.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("RemoveAll")})]},r("RemoveAll")),Object(ee.jsxs)(zn.a,{open:s,onClose:d,children:[Object(ee.jsx)(In.a,{children:r("DeleteTorrents?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:d,color:"secondary",children:r("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){fetch(v(),{method:"post",body:JSON.stringify({action:"list"}),headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"}}).then((function(e){return e.json()})).then((function(e){e.forEach((function(e){fetch(v(),{method:"post",body:JSON.stringify({action:"rem",hash:e.hash}),headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"}})}))})),d()},color:"secondary",autoFocus:!0,children:r("OK")})]})]})]})}var Qo,qo,ec,tc,nc,ac,rc,ic,oc,cc,sc,lc=n(132),dc=n.n(lc),bc=n(482),pc=_e.d.div(Qo||(Qo=Object(Ze.a)(["\n height: 100%;\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n"]))),jc=_e.d.section(qo||(qo=Object(Ze.a)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n font-weight: 300;\n padding: 20px;\n\n img {\n width: 64px;\n }\n\n @media (max-width: 930px) {\n font-size: 22px;\n padding: 10px 20px;\n\n img {\n width: 60px;\n }\n }\n\n ","\n"])),da(Object(_e.c)(ec||(ec=Object(Ze.a)(["\n padding-top: 30px;\n "]))))),uc=_e.d.section(tc||(tc=Object(Ze.a)(["\n padding: 20px;\n text-align: center;\n font-size: 24px;\n font-weight: 300;\n background: #e8e5eb;\n color: #323637;\n\n @media (max-width: 930px) {\n font-size: 20px;\n padding: 30px 20px;\n }\n"]))),hc=_e.d.section(nc||(nc=Object(Ze.a)(["\n padding: 20px;\n\n > span {\n font-size: 22px;\n display: block;\n margin-bottom: 15px;\n }\n\n a {\n text-decoration: none;\n }\n\n > div {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(4, max-content);\n\n @media (max-width: 930px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 780px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 550px) {\n grid-template-columns: 1fr;\n }\n }\n"]))),xc=_e.d.div(ac||(ac=Object(Ze.a)(["\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n background: #e8e5eb;\n"]))),gc=_e.d.a(rc||(rc=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isLink;return Object(_e.c)(ic||(ic=Object(Ze.a)(["\n display: inline-flex;\n align-items: center;\n justify-content: start;\n border: 1px solid;\n padding: 7px 10px;\n border-radius: 5px;\n text-transform: uppercase;\n text-decoration: none;\n background: #545a5e;\n color: #f1eff3;\n transition: 0.2s;\n\n > * {\n transition: 0.2s;\n }\n\n ","\n "])),t?Object(_e.c)(oc||(oc=Object(Ze.a)(["\n :hover {\n filter: brightness(1.1);\n\n > * {\n transform: translateY(0px);\n }\n }\n "]))):Object(_e.c)(cc||(cc=Object(Ze.a)(["\n cursor: default;\n "]))))})),Oc=_e.d.div(sc||(sc=Object(Ze.a)(["\n display: grid;\n margin-right: 10px;\n"])));function mc(e){var t=e.name,n=e.link;return Object(ee.jsxs)(gc,{isLink:!!n,href:n,target:"_blank",rel:"noreferrer",children:[n&&Object(ee.jsx)(Oc,{children:Object(ee.jsx)(bc.a,{})}),Object(ee.jsx)("div",{children:t})]})}function fc(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(""),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(He.a)("@media (max-width:930px)");Object(a.useEffect)((function(){M.a.get(D()).then((function(e){var t=e.data;return d(t)}))}),[]);var p=function(){return i(!1)},j=xa(p);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ja,{button:!0,onClick:function(){return i(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(dc.a,{}),Object(ee.jsx)("div",{children:e("Details")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(dc.a,{})}),Object(ee.jsx)(Fi.a,{primary:e("About")})]})},"Settings"),Object(ee.jsx)(ua,{open:r,onClose:p,"aria-labelledby":"form-dialog-title",fullScreen:b,maxWidth:"xl",ref:j,children:Object(ee.jsxs)(pc,{children:[Object(ee.jsxs)(jc,{children:[Object(ee.jsx)("div",{children:e("About")}),l,Object(ee.jsx)("img",{src:"/icon.png",alt:"ts-icon"})]}),Object(ee.jsxs)("div",{style:{overflow:"auto"},children:[Object(ee.jsx)(uc,{children:e("ThanksToEveryone")}),Object(ee.jsxs)(hc,{children:[Object(ee.jsx)("span",{children:e("Links")}),Object(ee.jsxs)("div",{children:[Object(ee.jsx)(mc,{name:e("ProjectSource"),link:"https://github.com/YouROK/TorrServer"}),Object(ee.jsx)(mc,{name:e("Releases"),link:"https://github.com/YouROK/TorrServer/releases"})]})]}),Object(ee.jsxs)(hc,{children:[Object(ee.jsx)("span",{children:e("SpecialThanks")}),Object(ee.jsxs)("div",{children:[Object(ee.jsx)(mc,{name:"Daniel Shleifman",link:"https://github.com/dancheskus"}),Object(ee.jsx)(mc,{name:"Matt Joiner",link:"https://github.com/anacrolix"}),Object(ee.jsx)(mc,{name:"nikk",link:"https://github.com/tsynik"}),Object(ee.jsx)(mc,{name:"kolsys",link:"https://github.com/kolsys"}),Object(ee.jsx)(mc,{name:"tw1cker",link:"https://github.com/Nemiroff"}),Object(ee.jsx)(mc,{name:"SpAwN_LMG",link:"https://github.com/spawnlmg"}),Object(ee.jsx)(mc,{name:"damiva",link:"https://github.com/damiva"}),Object(ee.jsx)(mc,{name:"Anton Potekhin",link:"https://github.com/Anton111111"}),Object(ee.jsx)(mc,{name:"FaintGhost",link:"https://github.com/FaintGhost"})]})]})]}),Object(ee.jsx)(xc,{children:Object(ee.jsx)(oe.a,{onClick:p,color:"primary",variant:"contained",children:e("Close")})})]})})]})}var Cc=n(483);function vc(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1],d=function(){return l(!1)},b=xa(d);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Cc.a,{}),Object(ee.jsx)("div",{children:r("TurnOff")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Cc.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("CloseServer")})]})},r("CloseServer")),Object(ee.jsxs)(ua,{open:s,onClose:d,ref:b,children:[Object(ee.jsx)(In.a,{children:r("CloseServer?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:d,color:"secondary",children:r("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){fetch("".concat(C,"/shutdown")),d()},color:"secondary",autoFocus:!0,children:r("TurnOff")})]})]})]})}var Sc,yc,wc,Dc,Tc,kc,Pc=function(e){var t=e.isDrawerOpen,n=e.setIsDonationDialogOpen,a=e.isOffline,r=e.isLoading,i=Object(be.a)().t;return Object(ee.jsxs)(ji,{isDrawerOpen:t,children:[Object(ee.jsxs)(Hi.a,{children:[Object(ee.jsx)(Gi,{isOffline:a,isLoading:r}),Object(ee.jsx)($o,{isOffline:a,isLoading:r})]}),Object(ee.jsx)(Ai.a,{}),Object(ee.jsxs)(Hi.a,{children:[Object(ee.jsx)(Jo,{isOffline:a,isLoading:r}),Object(ee.jsx)(fc,{}),Object(ee.jsxs)(la.a,{button:!0,onClick:function(){return n(!0)},children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Ei.a,{})}),Object(ee.jsx)(Fi.a,{primary:i("Donate")})]}),Object(ee.jsx)(vc,{isOffline:a,isLoading:r})]})]})},Mc=Object(a.memo)(Pc);function Lc(e){var t=e.setIsDonationDialogOpen,n=e.isOffline,a=e.isLoading,r=Object(be.a)().t;return Object(ee.jsxs)(pa,{children:[Object(ee.jsx)(vc,{isOffline:n,isLoading:a}),Object(ee.jsxs)(ja,{onClick:function(){return t(!0)},children:[Object(ee.jsx)(Ei.a,{}),Object(ee.jsx)("div",{children:r("Donate")})]}),Object(ee.jsx)(Gi,{isOffline:n,isLoading:a}),Object(ee.jsx)(fc,{}),Object(ee.jsx)(Jo,{isOffline:n,isLoading:a})]})}function Rc(){return Object(ee.jsxs)("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:23,x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",xmlSpace:"preserve",fill:"#005FF2",children:[Object(ee.jsx)("metadata",{children:" Svg Vector Icons : http://www.onlinewebfonts.com/icon "}),Object(ee.jsx)("g",{children:Object(ee.jsx)("path",{d:"M780,290H640v35h140c19.3,0,35,15.7,35,35v560c0,19.3-15.7,35-35,35H220c-19.2,0-35-15.7-35-35V360c0-19.2,15.7-35,35-35h140v-35H220c-38.7,0-70,31.3-70,70v560c0,38.7,31.3,70,70,70h560c38.7,0,70-31.3,70-70V360C850,321.3,818.7,290,780,290z M372.5,180l110-110.2v552.7c0,9.6,7.9,17.5,17.5,17.5c9.6,0,17.5-7.9,17.5-17.5V69.8l110,110c3.5,3.5,7.9,5,12.5,5s9-1.7,12.5-5c6.8-6.8,6.8-17.9,0-24.7l-140-140c-6.8-6.8-17.9-6.8-24.7,0l-140,140c-6.8,6.8-6.8,17.9,0,24.7C354.5,186.8,365.5,186.8,372.5,180z"})})]})}var Ac=_e.d.div(Sc||(Sc=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isOpen;return Object(_e.c)(yc||(yc=Object(Ze.a)(["\n position: absolute;\n bottom: 10px;\n left: 50%;\n background: #eeeef0;\n width: calc(100% - 20px);\n z-index: 9999;\n border-radius: 10px;\n transition: all 0.3s;\n color: #000;\n\n ","\n\n > :not(:last-child) {\n border-bottom: 1px solid #dadadc;\n }\n\n > * {\n padding: 20px;\n }\n "])),t?Object(_e.c)(wc||(wc=Object(Ze.a)(["\n opacity: 1;\n transform: translate(-50%, 0);\n "]))):Object(_e.c)(Dc||(Dc=Object(Ze.a)(["\n transform: translate(-50%, 150%);\n opacity: 0;\n pointer-events: none;\n "]))))})),Bc=_e.d.div(Tc||(Tc=Object(Ze.a)(["\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: min-content 1fr;\n gap: 20px;\n align-items: center;\n font-weight: 700;\n\n img {\n border-radius: 5px;\n }\n"]))),Fc=_e.d.div(kc||(kc=Object(Ze.a)(["\n > :not(:last-child) {\n margin-bottom: 25px;\n }\n\n span {\n background: #fefcfd;\n padding: 5px;\n border-radius: 5px;\n }\n"])));function Ec(){var e=JSON.parse(localStorage.getItem("pwaNotificationIsClosed")),t=Object(a.useState)(!e),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(!e),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(be.a)().t;return r?Object(ee.jsxs)(Ac,{isOpen:l,children:[Object(ee.jsxs)(Bc,{children:[Object(ee.jsx)("img",{src:"/icon.png",width:50,alt:"ts-icon"}),b("PWAGuide.Header"),Object(ee.jsx)(xe.a,{size:"small","aria-label":"close",color:"inherit",onClick:function(){d(!1),setTimeout((function(){i(!1),localStorage.setItem("pwaNotificationIsClosed",!0)}),300)},children:Object(ee.jsx)(Oe.a,{fontSize:"small"})})]}),Object(ee.jsxs)(Fc,{children:[Object(ee.jsx)("p",{children:b("PWAGuide.Description")}),Object(ee.jsx)("p",{children:b("PWAGuide.VLC")}),Object(ee.jsxs)("p",{children:["1. ",b("PWAGuide.FirstStep")," ",Object(ee.jsx)(Rc,{})]}),Object(ee.jsxs)("p",{children:["2. ",b("PWAGuide.SecondStep.Select")," ",Object(ee.jsx)("span",{children:b("PWAGuide.SecondStep.AddToHomeScreen")})]})]})]}):null}var Hc=JSON.parse(localStorage.getItem("snackbarIsClosed")),Nc=Object(a.createContext)();function zc(){var e,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],g=Object(a.useState)(!1),O=Object(c.a)(g,2),m=O[0],f=O[1],C=Object(a.useState)(""),v=Object(c.a)(C,2),S=v[0],y=v[1],w=function(){var e=localStorage.getItem("themeMode"),t=Object(He.a)("(prefers-color-scheme: dark)"),n=Object(a.useState)("dark"===e||t),r=Object(c.a)(n,2),i=r[0],o=r[1],s=Object(a.useState)(e||Ie),l=Object(c.a)(s,2),d=l[0],b=l[1];Object(a.useEffect)((function(){d===Ie&&o(!1),d===Ue&&o(!0),d===Ve&&o(t)}),[t,d]);var p=i?Ue:Ie,j=Object(a.useMemo)((function(){return Object(Ee.a)({typography:We,palette:{type:p,primary:{main:Ge[p].primary},secondary:{main:Ge[p].secondary}},overrides:{MuiTypography:{h6:{fontSize:"1.0rem"}},MuiPaper:{root:{backgroundColor:ze[p].app.paperColor}},MuiInputBase:{input:{color:Ge[p].labels}},MuiFormControlLabel:{labelPlacementStart:{display:"flex",justifyContent:"space-between",marginStart:0,marginTop:6,marginBottom:2}},MuiInputLabel:{root:{color:Ge[p].labels,marginBottom:8,"&$focused":{color:Ge[p].labels}}},MuiFormGroup:{root:{"& .MuiFormHelperText-root":{marginTop:-8}}}}})}),[p]);return[i,d,function(e){b(e),localStorage.setItem("themeMode",e)},j]}(),T=Object(c.a)(w,4),P=T[0],L=T[1],A=T[2],B=T[3],F=Zn(),E=Object(c.a)(F,2),H=E[0],N=E[1],z=Object(a.useState)(!1),G=Object(c.a)(z,2),I=G[0],U=G[1],V=Object(o.useQuery)("torrents",$,{retry:1,refetchInterval:1e3,onError:function(){return U(!0)},onSuccess:function(){return U(!1)}}),W=V.data,Z=V.isLoading,_=Object(a.useState)(!1),K=Object(c.a)(_,2),J=K[0],X=K[1];return Object(a.useEffect)((function(){M.a.get(D()).then((function(e){var t=e.data;return y(t)}))}),[]),Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Ri,{}),Object(ee.jsx)(Nc.Provider,{value:{isDarkMode:P},children:Object(ee.jsx)(Li.a,{theme:B,children:Object(ee.jsxs)(_e.a,{theme:(e=P?Ue:Ie,Object(R.a)(Object(R.a)({},ze[e]),Ge[e])),children:[Object(ee.jsx)(s.a,{}),Object(ee.jsx)(k.a,{children:Object(ee.jsxs)(di,{children:[Object(ee.jsxs)(pi,{children:[Object(ee.jsx)(xi,{edge:"start",color:"inherit",onClick:function(){return i(!r)},children:r?Object(ee.jsx)(d.a,{}):Object(ee.jsx)(b.a,{})}),Object(ee.jsxs)(l.a,{variant:"h6",noWrap:!0,children:["TorrServer ",S]}),Object(ee.jsxs)("div",{style:{justifySelf:"end",display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"10px"},children:[Object(ee.jsx)(hi,{onClick:function(){return X(!0!==J)},children:!0===J?Object(ee.jsx)(p.a,{}):Object(ee.jsx)(j.a,{})}),Object(ee.jsx)(hi,{onClick:function(){L===Ie&&A(Ue),L===Ue&&A(Ve),L===Ve&&A(Ie)},children:L===Ie?Object(ee.jsx)(u.a,{}):L===Ue?Object(ee.jsx)(h.a,{}):Object(ee.jsx)(x.a,{})}),Object(ee.jsx)(hi,{onClick:function(){return N("en"===H?"ru":"ru"===H?"ua":"ua"===H?"zh":"en")},children:H.toUpperCase()})]})]}),Object(ee.jsx)(Mc,{isOffline:I,isLoading:Z,isDrawerOpen:r,setIsDonationDialogOpen:f}),Object(ee.jsx)(fi,{isOffline:I,torrents:W,isLoading:Z,sortABC:J}),Object(ee.jsx)(Lc,{isOffline:I,isLoading:Z,setIsDonationDialogOpen:f}),m&&Object(ee.jsx)(Di,{onClose:function(){return f(!1)}}),Hc?"undefined"!==typeof window&&"undefined"!==typeof navigator&&/iPhone|iPad|iPod/i.test(navigator.userAgent||navigator.vendor)&&!Q&&Object(ee.jsx)(Ec,{}):Object(ee.jsx)(ki,{})]})})]})})})]})}var Gc=new o.QueryClient;i.a.render(Object(ee.jsx)(a.StrictMode,{children:Object(ee.jsx)(o.QueryClientProvider,{client:Gc,children:Object(ee.jsx)(zc,{})})}),document.getElementById("root"))}},[[396,1,2]]]);
-//# sourceMappingURL=main.2ccffc2f.chunk.js.map
\ No newline at end of file
diff --git a/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js.map b/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js.map
deleted file mode 100644
index 1cc6f85..0000000
--- a/server/web/pages/template/pages/static/js/main.2ccffc2f.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["utils/Hosts.js","i18n.js","utils/Utils.js","icons/index.jsx","components/DialogTorrentDetailsContent/customHooks.jsx","components/DialogTorrentDetailsContent/DialogHeader.jsx","style/colors.js","style/materialUISetup.js","components/DialogTorrentDetailsContent/TorrentCache/snakeSettings.js","components/DialogTorrentDetailsContent/TorrentCache/style.js","components/DialogTorrentDetailsContent/TorrentCache/index.jsx","components/DialogTorrentDetailsContent/TorrentCache/getShortCacheMap.js","components/DialogTorrentDetailsContent/Table/style.js","components/DialogTorrentDetailsContent/Table/index.jsx","components/DialogTorrentDetailsContent/style.js","components/DialogTorrentDetailsContent/DetailedView/style.js","components/DialogTorrentDetailsContent/StatisticsField.jsx","components/DialogTorrentDetailsContent/widgets/useGetWidgetColors.jsx","components/DialogTorrentDetailsContent/widgets/index.jsx","torrentStates.js","components/DialogTorrentDetailsContent/DetailedView/index.jsx","components/DialogTorrentDetailsContent/TorrentFunctions/style.js","components/DialogTorrentDetailsContent/TorrentFunctions/index.jsx","components/DialogTorrentDetailsContent/helpers.js","components/DialogTorrentDetailsContent/index.jsx","utils/useChangeLanguage.js","utils/usePreviousState.js","style/DialogStyles.js","style/standaloneMedia.js","components/App/PWAFooter/style.js","style/CustomMaterialUiStyles.js","utils/useOnStandaloneAppOutsideClick.jsx","components/Add/helpers.js","components/Add/style.js","components/Add/RightSideComponent.jsx","components/Add/LeftSideComponent.jsx","components/Add/AddDialog.jsx","components/TorrentCard/style.js","components/TorrentCard/index.jsx","components/App/style.js","components/TorrentList/style.js","components/TorrentList/NoServerConnection.jsx","components/TorrentList/AddFirstTorrent.jsx","components/TorrentList/index.jsx","components/Donate/DonateDialog.jsx","components/Donate/index.jsx","style/GlobalStyle.js","components/Add/index.jsx","components/Settings/style.js","components/Settings/defaultSettings.js","components/Settings/tabComponents.jsx","components/Settings/SliderInput.jsx","components/Settings/PrimarySettingsComponent.jsx","components/Settings/SecondarySettingsComponent.jsx","components/Settings/MobileAppSettings.jsx","components/Settings/SettingsDialog.jsx","components/Settings/index.jsx","components/RemoveAll.jsx","components/About/style.js","components/About/LinkComponent.jsx","components/About/index.jsx","components/CloseServer.jsx","components/App/Sidebar.jsx","components/App/PWAFooter/index.jsx","components/App/PWAInstallationGuide/IOSShareIcon.jsx","components/App/PWAInstallationGuide/style.jsx","components/App/PWAInstallationGuide/index.jsx","components/App/index.jsx","style/getStyledComponentsTheme.js","utils/checkIsIOS.jsx","index.jsx"],"names":["window","location","protocol","hostname","port","torrserverHost","torrentsHost","viewedHost","settingsHost","streamHost","echoHost","playlistTorrHost","i18n","use","LanguageDetector","initReactI18next","init","fallbackLng","interpolation","escapeValue","resources","en","translation","translationEN","ru","translationRU","ua","translationUA","zh","translationZH","humanizeSize","size","i","Math","floor","log","pow","toFixed","t","humanizeSpeed","speed","getPeerString","torrent","connected_seeders","active_peers","total_peers","removeRedundantCharacters","string","newString","forEach","el","leftBracketRegexFormula","leftBracketRegex","RegExp","leftBracketAmount","matchAll","length","rightBracketRegexFormula","rightBracketRegex","removeFormula","removeRegex","replace","hasThreeDotsAtTheEnd","match","trimmedString","trim","getTorrents","axios","post","action","data","Error","isStandaloneApp","matchMedia","matches","NoImageIcon","color","primary","useTheme","palette","main","height","width","fill","xmlns","xmlnsXlink","version","x","y","viewBox","enableBackground","xmlSpace","d","points","AddItemIcon","id","opacity","USBIcon","RAMIcon","TorrentIcon","secondaryColor","useUpdateCache","hash","useState","cache","setCache","componentIsMounted","useRef","timerID","useEffect","current","setInterval","updateCache","newCache","then","catch","clearInterval","useStyles","makeStyles","appBar","position","paddingTop","title","marginLeft","flex","DialogHeader","onClose","onBack","classes","AppBar","className","Toolbar","IconButton","edge","onClick","ArrowBack","Typography","variant","autoFocus","style","marginRight","themeColors","light","app","headerToggleColor","appSecondaryColor","sidebarBGColor","sidebarFillColor","paperColor","torrentCard","accentCardColor","buttonBGColor","rgba","cardPrimaryColor","cardSecondaryColor","dialogTorrentDetailsContent","posterBGColor","gradientStartColor","gradientEndColor","chacheSectionBGColor","widgetFontColor","titleFontColor","subNameFontColor","torrentFilesSectionBGColor","detailedView","cacheSectionBGColor","addDialog","fontColor","notificationErrorBGColor","notificationSuccessBGColor","languageSwitchBGColor","languageSwitchFontColor","torrentFunctions","table","defaultPrimaryColor","defaultSecondaryColor","defaultTertiaryColor","settingsDialog","contentBG","footerBG","dark","mainColors","secondary","labels","THEME_MODES","typography","fontFamily","createTheme","type","snakeSettings","default","borderWidth","pieceSize","gapBetweenPieces","borderColor","completeColor","backgroundColor","progressColor","readerColor","rangeColor","mini","cacheMaxHeight","ScrollNotification","styled","div","SnakeWrapper","isMini","themeType","css","TorrentCache","shotCacheMap","isSnakeDebugMode","useTranslation","dimensions","setDimensions","canvasRef","ctxRef","cacheMap","setCacheMap","PiecesCount","Pieces","Readers","map","Size","Length","Priority","newPiece","percentage","priority","r","Reader","isReader","Start","End","isReaderRange","push","useCreateCacheMap","settingsTarget","theme","useContext","DarkModeContext","isDarkMode","canvasWidth","pieceSizeWithGap","piecesInOneRow","preloadPiecesAmount","cacheMapWithoutEmptyBlocks","filter","getFullAmountOfBlocks","amountOfBlocks","amountOfBlocksToRenderInShortView","scalableAmountOfBlocksToRenderInShortView","extraBlocksAmount","max","extraEmptyBlocksForFillingLine","Array","getShortCacheMap","round","Capacity","PiecesLength","source","startingXPoint","ceil","canvas","getContext","ctx","clearRect","inProgress","isCompleted","currentRow","currentColumn","fixBlurStroke","requiredFix","lineWidth","fillStyle","snakeType","gradient","createLinearGradient","addColorStop","createGradient","strokeStyle","translate","fillRect","strokeRect","setTransform","info","font","xpad","ypad","fillText","bounds","onResize","measureRef","display","flexDirection","ref","memo","prev","next","isEqual","viewedPrimaryColor","viewedIndicator","TableStyle","ShortTableWrapper","ShortTable","isViewed","require","ptt","addHandler","Table","playableFileList","viewedFileList","selectedSeason","seasonAmount","preloadBuffer","fileId","fetch","getFileLink","path","encodeURIComponent","split","pop","fileHasEpisodeText","find","parse","episode","fileHasSeasonText","season","fileHasResolutionText","resolution","shouldDisplayFullFileName","isVlcUsed","JSON","localStorage","getItem","includes","link","Button","textDecoration","href","target","rel","text","DialogContentGrid","Poster","poster","MainSection","section","CacheSection","TorrentFilesSection","SectionSubName","mb","SectionTitle","SectionHeader","WidgetWrapper","WidgetFieldWrapper","WidgetFieldTitle","WidgetFieldIcon","bgColor","WidgetFieldValue","LoadingProgress","attrs","value","fullAmount","min","background","label","Divider","DetailedViewWidgetSection","DetailedViewCacheSection","StatisticsField","Icon","icon","iconBg","valueBg","LIGHT","DARK","colors","downloadSpeed","iconBGColor","valueBGColor","uploadSpeed","peers","piecesCount","piecesLength","status","useGetWidgetColors","widgetName","DownlodSpeedWidget","ArrowDownwardIcon","UploadSpeedWidget","ArrowUpwardIcon","PeersWidget","SwapVerticalCircleIcon","PiecesCountWidget","WidgetsIcon","PiecesLengthWidget","PhotoSizeSelectSmallIcon","StatusWidget","stat","values","BuildIcon","SizeWidget","ViewAgendaIcon","DetailedView","torrentSize","setIsSnakeDebugMode","justifyContent","alignItems","FormControlLabel","control","Checkbox","checked","disableRipple","onChange","setItem","labelPlacement","MainSectionButtonGroup","SmallLabel","TorrentFunctions","name","setViewedFileList","latestViewedFileId","latestViewedFile","isOnlyOnePlayableFile","latestViewedFileData","fullPlaylistLink","partialPlaylistLink","file_index","playableExtList","Loader","minHeight","placeItems","CircularProgress","DialogTorrentDetailsContent","closeDialog","isLoading","setIsLoading","isDetailedCacheView","setIsDetailedCacheView","setPlayableFileList","setSeasonAmount","setSelectedSeason","download_speed","upload_speed","torrent_size","torrentFileList","file_stats","settings","setSettings","useGetSettings","Filled","seasons","currentSeason","sort","a","b","fileName","filename","ext","toLowerCase","getExt","cacheLoaded","Object","entries","torrentLoaded","lst","itm","preloadSize","PreloadCache","bufferSize","getParsedTitle","newNameStringArr","torrentParsedName","year","newNameString","join","overflow","alt","src","marginTop","ButtonGroup","marginBottom","language","substr","lang","changeLanguage","usePreviousState","Header","ButtonWrapper","standaloneMedia","styles","pwaFooterHeight","StyledMenuButtonWrapper","ListItem","button","StyledDialog","Dialog","hideBackdrop","transitionDuration","StyledHeader","useOnStandaloneAppOutsideClick","onClickOutside","handleClickOutside","event","contains","document","addEventListener","removeEventListener","getMoviePosters","movieName","url","imgHost","get","params","api_key","process","include_image_language","query","results","poster_path","checkImageURL","magnetRegex","hashRegex","torrentRegex","linkRegex","Content","isEditMode","RightSide","RightSideContainer","isHidden","notificationMessage","isError","LeftSide","LeftSideBottomSectionBasicStyles","LeftSideBottomSectionNoFile","isDragActive","LeftSideBottomSectionFileSelected","TorrentIconWrapper","CancelIconWrapper","IconWrapper","LeftSideTopSection","active","PosterWrapper","PosterSuggestions","PosterSuggestionsItem","ClearPosterButton","showbutton","PosterLanguageSwitch","StyledPWAAddButton","RightSideComponent","setTitle","setPosterUrl","setIsPosterUrlCorrect","setIsUserInteractedWithPoster","setPosterList","isTorrentSourceCorrect","isHashAlreadyExists","parsedTitle","posterUrl","isPosterUrlCorrect","posterList","currentLang","posterSearchLanguage","setPosterSearchLanguage","posterSearch","removePoster","torrentSource","originalTorrentTitle","updateTitleFromSource","isCustomTitleEnabled","setIsCustomTitleEnabled","handleTitleChange","TextField","margin","fullWidth","disabled","InputProps","readOnly","onFocus","onBlur","helperText","endAdornment","InputAdornment","padding","HighlightOff","slice","userChangesPosterUrl","newLanguage","shouldRefreshMainPoster","LeftSideComponent","setSelectedFile","setTorrentSource","selectedFile","isTorrentSourceActive","setIsTorrentSourceActive","useDropzone","onDrop","files","file","accept","getRootProps","getInputProps","inputProps","autoComplete","Cancel","AddDialog","handleClose","originalHash","originalTitle","originalName","originalPoster","setOriginalTorrentTitle","setParsedTitle","setIsTorrentSourceCorrect","setIsHashAlreadyExists","isUserInteractedWithPoster","useChangeLanguage","isSaving","setIsSaving","skipDebounce","setSkipDebounce","currentSourceHash","setCurrentSourceHash","torrents","useQuery","retry","refetchInterval","parseTorrent","remote","_","infoHash","allHashes","fullScreen","useMediaQuery","useCallback","parsingSource","callback","err","torrentName","nameOfFileInsideTorrent","newTitle","correctImage","useMemo","urlList","firstPoster","delayedPosterSearch","debounce","prevTorrentSourceState","prevTitleState","cancel","open","maxWidth","minWidth","finally","FormData","append","save_to_db","TorrentCard","TorrentCardPoster","isPoster","TorrentCardButtons","TorrentCardDescription","StyledButton","StatusIndicators","Transition","forwardRef","props","Slide","direction","Torrent","isDetailedInfoOpened","setIsDetailedInfoOpened","isDeleteTorrentOpened","setIsDeleteTorrentOpened","breakpoints","down","closeDetailedInfo","closeDeleteTorrentAlert","key","titleStrings","parsedYear","parsedResolution","isEditDialogOpen","setIsEditDialogOpen","detailedInfoDialogRef","UnfoldMore","PlayArrow","Close","Delete","TransitionComponent","DialogTitle","DialogActions","StatusIndicator","AppWrapper","CenteredGrid","AppHeader","AppSidebarStyle","isDrawerOpen","TorrentListWrapper","HeaderToggle","StyledIconButton","isButton","NoServerConnection","trigger","stroke","scale","AddFirstTorrent","isDialogOpen","setIsDialogOpen","TorrentList","isOffline","sortABC","DonateDialog","DialogContent","StyledSnackbar","Snackbar","DonateSnackbar","setOpen","snackbarOpen","setSnackbarOpen","disableSnackbar","anchorOrigin","vertical","horizontal","message","fontSize","createGlobalStyle","AddDialogButton","ListItemIcon","ListItemText","cacheBeforeReaderColor","cacheAfterReaderColor","SettingsHeader","FooterSection","PreloadCacheValue","MainSettingsContent","SecondarySettingsContent","StorageButton","small","selected","StorageIconWrapper","CacheStorageSelector","SettingSectionLabel","PreloadCachePercentage","preloadCachePercentage","CacheSize","ReaderReadAHead","UseDisk","TorrentsSavePath","RemoveCacheOnDrop","ForceEncrypt","RetrackersMode","TorrentDisconnectTimeout","EnableDebug","EnableDLNA","FriendlyName","EnableRutorSearch","EnableIPv6","DisableTCP","DisableUTP","DisableUPNP","DisableDHT","DisablePEX","DisableUpload","DownloadRateLimit","UploadRateLimit","ConnectionsLimit","PeersListenPort","a11yProps","index","TabPanel","children","other","role","hidden","SliderInput","isProMode","setValue","sliderMin","sliderMax","inputMin","inputMax","step","onBlurCallback","Grid","container","spacing","item","xs","Slider","newValue","OutlinedInput","Number","CacheStorageLocationLabel","PrimarySettingsComponent","inputForm","cachePercentage","cacheSize","setCacheSize","setCachePercentage","setPreloadCachePercentage","updateSettings","preloadCacheSize","gridAutoFlow","Switch","placeSelf","gridArea","SecondarySettingsComponent","FormGroup","FormHelperText","InputLabel","htmlFor","Select","native","MobileAppSettings","setIsVlcUsed","SettingsDialog","selectedTab","setSelectedTab","setIsProMode","sets","stringify","Boolean","isNaN","newProps","Tabs","indicatorColor","textColor","Tab","axis","onChangeIndex","dir","defaultSettings","SettingsDialogButton","RemoveAll","method","body","headers","Accept","res","json","torr","DialogWrapper","HeaderSection","ThanksSection","Section","LinkWrapper","isLink","LinkIcon","LinkComponent","GitHub","AboutDialog","torrServerVersion","setTorrServerVersion","CloseServer","PowerSettingsNew","Sidebar","setIsDonationDialogOpen","List","PWAFooter","IOSShareIcon","StyledWrapper","isOpen","StyledContent","PWAInstallationGuide","pwaNotificationIsClosed","setIsOpen","shouldBeOpened","setShouldBeOpened","setTimeout","snackbarIsClosed","createContext","App","setIsDrawerOpen","isDonationDialogOpen","savedThemeMode","isSystemModeDark","setIsDarkMode","currentThemeMode","setCurrentThemeMode","muiTheme","overrides","MuiTypography","h6","MuiPaper","root","MuiInputBase","input","MuiFormControlLabel","labelPlacementStart","marginStart","MuiInputLabel","MuiFormGroup","mode","useMaterialUITheme","updateThemeMode","changeLang","setIsOffline","onError","onSuccess","setSortABC","GlobalStyle","Provider","CssBaseline","Menu","noWrap","justifySelf","gridTemplateColumns","gap","SortByAlpha","Sort","Brightness5","Brightness4","BrightnessAuto","toUpperCase","navigator","test","userAgent","vendor","queryClient","QueryClient","ReactDOM","render","client","getElementById"],"mappings":"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","file":"static/js/main.2ccffc2f.chunk.js","sourcesContent":["const { protocol, hostname, port } = window.location\n\nlet torrserverHost = process.env.REACT_APP_SERVER_HOST || `${protocol}//${hostname}${port ? `:${port}` : ''}`\n\nexport const torrentsHost = () => `${torrserverHost}/torrents`\nexport const viewedHost = () => `${torrserverHost}/viewed`\nexport const cacheHost = () => `${torrserverHost}/cache`\nexport const torrentUploadHost = () => `${torrserverHost}/torrent/upload`\nexport const settingsHost = () => `${torrserverHost}/settings`\nexport const streamHost = () => `${torrserverHost}/stream`\nexport const shutdownHost = () => `${torrserverHost}/shutdown`\nexport const echoHost = () => `${torrserverHost}/echo`\nexport const playlistTorrHost = () => `${torrserverHost}/stream`\n\nexport const getTorrServerHost = () => torrserverHost\nexport const setTorrServerHost = host => {\n torrserverHost = host\n}\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport translationEN from 'locales/en/translation.json'\nimport translationRU from 'locales/ru/translation.json'\nimport translationUA from 'locales/ua/translation.json'\nimport translationZH from 'locales/zh/translation.json'\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: 'en', // default language will be used if none of declared lanuages detected (en, ru)\n interpolation: { escapeValue: false }, // react already safes from xss\n resources: {\n en: { translation: translationEN },\n ru: { translation: translationRU },\n ua: { translation: translationUA },\n zh: { translation: translationZH },\n },\n })\n\nexport default i18n\n","import axios from 'axios'\n\nimport i18n from '../i18n'\nimport { torrentsHost } from './Hosts'\n\nexport function humanizeSize(size) {\n if (!size) return ''\n const i = Math.floor(Math.log(size) / Math.log(1024))\n return `${(size / Math.pow(1024, i)).toFixed(2) * 1} ${\n [i18n.t('B'), i18n.t('KB'), i18n.t('MB'), i18n.t('GB'), i18n.t('TB')][i]\n }`\n}\n\nexport function humanizeSpeed(speed) {\n if (!speed) return ''\n const i = Math.floor(Math.log(speed * 8) / Math.log(1000))\n return `${((speed * 8) / Math.pow(1000, i)).toFixed(0) * 1} ${\n [i18n.t('bps'), i18n.t('kbps'), i18n.t('Mbps'), i18n.t('Gbps'), i18n.t('Tbps')][i]\n }`\n}\n\nexport function getPeerString(torrent) {\n if (!torrent || !torrent.connected_seeders) return null\n return `${torrent.connected_seeders} · ${torrent.active_peers} / ${torrent.total_peers}`\n}\n\nexport const shortenText = (text, sympolAmount) =>\n text ? text.slice(0, sympolAmount) + (text.length > sympolAmount ? '…' : '') : ''\n\nexport const removeRedundantCharacters = string => {\n let newString = string\n const brackets = [\n ['(', ')'],\n ['[', ']'],\n ['{', '}'],\n ]\n\n brackets.forEach(el => {\n const leftBracketRegexFormula = `\\\\${el[0]}`\n const leftBracketRegex = new RegExp(leftBracketRegexFormula, 'g')\n const leftBracketAmount = [...newString.matchAll(leftBracketRegex)].length\n const rightBracketRegexFormula = `\\\\${el[1]}`\n const rightBracketRegex = new RegExp(rightBracketRegexFormula, 'g')\n const rightBracketAmount = [...newString.matchAll(rightBracketRegex)].length\n\n if (leftBracketAmount !== rightBracketAmount) {\n const removeFormula = `(\\\\${el[0]})(?!.*\\\\1).*`\n const removeRegex = new RegExp(removeFormula, 'g')\n newString = newString.replace(removeRegex, '')\n }\n })\n\n const hasThreeDotsAtTheEnd = !!newString.match(/\\.{3}$/g)\n\n const trimmedString = newString.replace(/[\\\\.| ]+$/g, '').trim()\n\n return hasThreeDotsAtTheEnd ? `${trimmedString}..` : trimmedString\n}\n\nexport const getTorrents = async () => {\n try {\n const { data } = await axios.post(torrentsHost(), { action: 'list' })\n return data\n } catch (error) {\n throw new Error(null)\n }\n}\n\nexport const isStandaloneApp = window.matchMedia('screen and (display-mode: standalone)').matches\n","import { useTheme } from '@material-ui/core'\n\nexport const NoImageIcon = ({ color }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const AddItemIcon = () => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const USBIcon = ({ color, width }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const RAMIcon = ({ color, width }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const TorrentIcon = () => {\n const primary = useTheme().palette.primary.main\n const secondaryColor = primary === '#00a572' ? '#74c39c' : '#4a5255'\n\n return (\n \n )\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { cacheHost, settingsHost } from 'utils/Hosts'\nimport axios from 'axios'\n\nexport const useUpdateCache = hash => {\n const [cache, setCache] = useState({})\n const componentIsMounted = useRef(true)\n const timerID = useRef(null)\n\n useEffect(\n () => () => {\n // this function is required to notify \"updateCache\" when NOT to make state update\n componentIsMounted.current = false\n },\n [],\n )\n\n useEffect(() => {\n if (hash) {\n timerID.current = setInterval(() => {\n const updateCache = newCache => componentIsMounted.current && setCache(newCache)\n\n axios\n .post(cacheHost(), { action: 'get', hash })\n .then(({ data }) => updateCache(data))\n // empty cache if error\n .catch(() => updateCache({}))\n }, 100)\n } else clearInterval(timerID.current)\n\n return () => clearInterval(timerID.current)\n }, [hash])\n\n return cache\n}\n\nexport const useCreateCacheMap = cache => {\n const [cacheMap, setCacheMap] = useState([])\n\n useEffect(() => {\n const { PiecesCount, Pieces, Readers } = cache\n\n const map = []\n\n for (let i = 0; i < PiecesCount; i++) {\n const { Size, Length, Priority } = Pieces[i] || {}\n\n const newPiece = { id: i, percentage: (Size / Length) * 100 || 0, priority: Priority || 0 }\n\n Readers.forEach(r => {\n if (i === r.Reader) newPiece.isReader = true\n if (i >= r.Start && i <= r.End) newPiece.isReaderRange = true\n })\n\n map.push(newPiece)\n }\n setCacheMap(map)\n }, [cache])\n\n return cacheMap\n}\n\nexport const useGetSettings = cache => {\n const [settings, setSettings] = useState()\n useEffect(() => {\n axios.post(settingsHost(), { action: 'get' }).then(({ data }) => setSettings(data))\n }, [cache])\n\n return settings\n}\n","import { AppBar, IconButton, makeStyles, Toolbar, Typography } from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { ArrowBack } from '@material-ui/icons'\nimport { isStandaloneApp } from 'utils/Utils'\n\nconst useStyles = makeStyles({\n appBar: { position: 'relative', ...(isStandaloneApp && { paddingTop: '30px' }) },\n title: { marginLeft: '5px', flex: 1 },\n})\n\nexport default function DialogHeader({ title, onClose, onBack }) {\n const classes = useStyles()\n\n return (\n \n \n {onBack && (\n \n \n \n )}\n\n \n {title}\n \n\n \n \n \n \n \n )\n}\n","import { rgba } from 'polished'\n\nexport const themeColors = {\n light: {\n app: {\n headerToggleColor: '#4db380',\n appSecondaryColor: '#cbe8d9',\n sidebarBGColor: '#575757',\n sidebarFillColor: '#dee3e5',\n paperColor: '#eeeeee',\n },\n torrentCard: {\n accentCardColor: '#337a57',\n buttonBGColor: rgba('#337a57', 0.5),\n cardPrimaryColor: '#00a572',\n cardSecondaryColor: '#74c39c',\n },\n dialogTorrentDetailsContent: {\n posterBGColor: '#74c39c',\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n chacheSectionBGColor: '#88cdaa',\n widgetFontColor: '#fff',\n titleFontColor: '#000',\n subNameFontColor: '#7c7b7c',\n torrentFilesSectionBGColor: '#f1eff3',\n },\n detailedView: {\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n cacheSectionBGColor: '#fff',\n },\n addDialog: {\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n fontColor: '#000',\n notificationErrorBGColor: '#cda184',\n notificationSuccessBGColor: '#88cdaa',\n languageSwitchBGColor: '#74c39c',\n languageSwitchFontColor: '#e4f6ed',\n posterBGColor: '#74c39c',\n },\n torrentFunctions: {\n fontColor: '#000',\n },\n table: {\n defaultPrimaryColor: '#009879',\n defaultSecondaryColor: '#00a383',\n defaultTertiaryColor: '#03aa89',\n },\n settingsDialog: {\n contentBG: '#f1eff3',\n footerBG: '#fff',\n },\n },\n dark: {\n app: {\n headerToggleColor: '#545a5e',\n appSecondaryColor: '#545a5e',\n sidebarBGColor: '#323637',\n sidebarFillColor: '#dee3e5',\n paperColor: '#323637',\n },\n torrentCard: {\n accentCardColor: '#323637',\n buttonBGColor: rgba('#323637', 0.5),\n cardPrimaryColor: '#545a5e',\n cardSecondaryColor: rgba('#dee3e5', 0.4),\n },\n dialogTorrentDetailsContent: {\n posterBGColor: rgba('#dee3e5', 0.4),\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n chacheSectionBGColor: '#3c4244',\n widgetFontColor: rgba('#fff', 0.8),\n titleFontColor: '#f1eff3',\n subNameFontColor: '#dee3e5',\n torrentFilesSectionBGColor: rgba('#545a5e', 0.9),\n },\n detailedView: {\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n cacheSectionBGColor: '#949ca0',\n },\n addDialog: {\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n fontColor: '#fff',\n notificationErrorBGColor: '#c82e3f',\n notificationSuccessBGColor: '#323637',\n languageSwitchBGColor: '#545a5e',\n languageSwitchFontColor: '#dee3e5',\n posterBGColor: '#dee3e5',\n },\n torrentFunctions: {\n fontColor: '#f1eff3',\n },\n table: {\n defaultPrimaryColor: '#323637',\n defaultSecondaryColor: rgba('#545a5e', 0.9),\n defaultTertiaryColor: '#545a5e',\n },\n settingsDialog: {\n contentBG: '#5a6166',\n footerBG: '#323637',\n },\n },\n}\n\nexport const mainColors = {\n light: {\n primary: '#00a572',\n secondary: '#00a572',\n labels: rgba('#000', 0.9),\n },\n dark: {\n primary: '#323637',\n secondary: '#dee3e5',\n labels: rgba('#fff', 0.9),\n },\n}\n","import { createTheme, useMediaQuery } from '@material-ui/core'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport { mainColors, themeColors } from './colors'\n\nexport const THEME_MODES = { LIGHT: 'light', DARK: 'dark', AUTO: 'auto' }\n\nconst typography = { fontFamily: 'Open Sans, sans-serif' }\n\nexport const darkTheme = createTheme({\n typography,\n palette: {\n type: THEME_MODES.DARK,\n primary: { main: mainColors.dark.primary },\n secondary: { main: mainColors.dark.secondary },\n },\n})\nexport const lightTheme = createTheme({\n typography,\n palette: {\n type: THEME_MODES.LIGHT,\n primary: { main: mainColors.light.primary },\n secondary: { main: mainColors.light.secondary },\n },\n})\n\nexport const useMaterialUITheme = () => {\n const savedThemeMode = localStorage.getItem('themeMode')\n const isSystemModeDark = useMediaQuery('(prefers-color-scheme: dark)')\n const [isDarkMode, setIsDarkMode] = useState(savedThemeMode === 'dark' || isSystemModeDark)\n const [currentThemeMode, setCurrentThemeMode] = useState(savedThemeMode || THEME_MODES.LIGHT)\n\n const updateThemeMode = mode => {\n setCurrentThemeMode(mode)\n localStorage.setItem('themeMode', mode)\n }\n\n useEffect(() => {\n currentThemeMode === THEME_MODES.LIGHT && setIsDarkMode(false)\n currentThemeMode === THEME_MODES.DARK && setIsDarkMode(true)\n currentThemeMode === THEME_MODES.AUTO && setIsDarkMode(isSystemModeDark)\n }, [isSystemModeDark, currentThemeMode])\n\n const theme = isDarkMode ? THEME_MODES.DARK : THEME_MODES.LIGHT\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n typography,\n palette: {\n type: theme,\n primary: { main: mainColors[theme].primary },\n secondary: { main: mainColors[theme].secondary },\n },\n overrides: {\n MuiTypography: {\n h6: {\n fontSize: '1.0rem',\n },\n },\n MuiPaper: {\n root: {\n backgroundColor: themeColors[theme].app.paperColor,\n },\n },\n MuiInputBase: {\n input: {\n color: mainColors[theme].labels,\n },\n },\n // https://material-ui.com/ru/api/form-control-label/\n MuiFormControlLabel: {\n labelPlacementStart: {\n display: 'flex',\n justifyContent: 'space-between',\n marginStart: 0,\n marginTop: 6,\n marginBottom: 2,\n },\n },\n MuiInputLabel: {\n root: {\n color: mainColors[theme].labels,\n marginBottom: 8,\n '&$focused': {\n color: mainColors[theme].labels,\n },\n },\n },\n MuiFormGroup: {\n root: {\n '& .MuiFormHelperText-root': {\n marginTop: -8,\n },\n },\n },\n },\n }),\n [theme],\n )\n\n return [isDarkMode, currentThemeMode, updateThemeMode, muiTheme]\n}\n","import { rgba } from 'polished'\nimport { mainColors } from 'style/colors'\n\nexport const snakeSettings = {\n dark: {\n default: {\n borderWidth: 1,\n pieceSize: 14,\n gapBetweenPieces: 3,\n borderColor: rgba('#fff', 0.2),\n completeColor: rgba(mainColors.dark.primary, 0.5),\n backgroundColor: '#949ca0',\n progressColor: rgba('#fff', 0.2),\n readerColor: '#8f0405',\n rangeColor: '#cda184',\n },\n mini: {\n cacheMaxHeight: 340,\n borderWidth: 2,\n pieceSize: 23,\n gapBetweenPieces: 6,\n borderColor: '#5c6469',\n completeColor: '#5c6469',\n backgroundColor: '#949ca0',\n progressColor: '#949ca0',\n readerColor: '#ccc',\n rangeColor: '#cda184',\n },\n },\n light: {\n default: {\n borderWidth: 1,\n pieceSize: 14,\n gapBetweenPieces: 3,\n borderColor: '#dbf2e8',\n completeColor: mainColors.light.primary,\n backgroundColor: '#fff',\n progressColor: '#b3dfc9',\n readerColor: '#000',\n rangeColor: '#afa6e3',\n },\n mini: {\n cacheMaxHeight: 340,\n borderWidth: 2,\n pieceSize: 23,\n gapBetweenPieces: 6,\n borderColor: '#4db380',\n completeColor: '#4db380',\n backgroundColor: '#dbf2e8',\n progressColor: '#dbf2e8',\n readerColor: '#0a0a0a',\n rangeColor: '#afa6e3',\n },\n },\n}\n\nexport const createGradient = (ctx, percentage, theme, snakeType) => {\n const { pieceSize, completeColor, progressColor } = snakeSettings[theme][snakeType]\n\n const gradient = ctx.createLinearGradient(0, pieceSize, 0, 0)\n gradient.addColorStop(0, completeColor)\n gradient.addColorStop(percentage / 100, completeColor)\n gradient.addColorStop(percentage / 100, progressColor)\n gradient.addColorStop(1, progressColor)\n\n return gradient\n}\n","import styled, { css } from 'styled-components'\n\nimport { snakeSettings } from './snakeSettings'\n\nexport const ScrollNotification = styled.div`\n margin-top: 10px;\n text-transform: uppercase;\n color: rgba(0, 0, 0, 0.5);\n align-self: center;\n`\n\nexport const SnakeWrapper = styled.div`\n ${({ isMini, themeType }) => css`\n ${isMini &&\n css`\n display: grid;\n justify-content: center;\n max-height: ${snakeSettings[themeType].mini.cacheMaxHeight}px;\n overflow: auto;\n `}\n\n canvas {\n display: block;\n }\n `}\n`\n","import Measure from 'react-measure'\nimport { useState, memo, useRef, useEffect, useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash/isEqual'\nimport { DarkModeContext } from 'components/App'\nimport { THEME_MODES } from 'style/materialUISetup'\n\nimport { useCreateCacheMap } from '../customHooks'\nimport getShortCacheMap from './getShortCacheMap'\nimport { SnakeWrapper, ScrollNotification } from './style'\nimport { createGradient, snakeSettings } from './snakeSettings'\n\nconst TorrentCache = ({ cache, isMini, isSnakeDebugMode }) => {\n const { t } = useTranslation()\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n const { width } = dimensions\n const canvasRef = useRef(null)\n const ctxRef = useRef(null)\n const cacheMap = useCreateCacheMap(cache)\n const settingsTarget = isMini ? 'mini' : 'default'\n const { isDarkMode } = useContext(DarkModeContext)\n const theme = isDarkMode ? THEME_MODES.DARK : THEME_MODES.LIGHT\n\n const {\n readerColor,\n rangeColor,\n borderWidth,\n pieceSize,\n gapBetweenPieces,\n backgroundColor,\n borderColor,\n cacheMaxHeight,\n completeColor,\n } = snakeSettings[theme][settingsTarget]\n\n const canvasWidth = isMini ? width * 0.93 : width\n\n const pieceSizeWithGap = pieceSize + gapBetweenPieces\n const piecesInOneRow = Math.floor(canvasWidth / pieceSizeWithGap)\n\n let shotCacheMap\n if (isMini) {\n const preloadPiecesAmount = Math.round(cache.Capacity / cache.PiecesLength - 1)\n shotCacheMap = getShortCacheMap({ cacheMap, preloadPiecesAmount, piecesInOneRow })\n }\n const source = isMini ? shotCacheMap : cacheMap\n const startingXPoint = Math.ceil((canvasWidth - pieceSizeWithGap * piecesInOneRow) / 2) // needed to center grid\n const height = Math.ceil(source.length / piecesInOneRow) * pieceSizeWithGap\n\n useEffect(() => {\n if (!canvasWidth || !height) return\n\n const canvas = canvasRef.current\n canvas.width = canvasWidth\n canvas.height = height\n ctxRef.current = canvas.getContext('2d')\n }, [canvasRef, height, canvasWidth])\n\n useEffect(() => {\n const ctx = ctxRef.current\n if (!ctx) return\n\n ctx.clearRect(0, 0, canvasWidth, height)\n\n source.forEach(({ percentage, priority, isReader, isReaderRange }, i) => {\n const inProgress = percentage > 0 && percentage < 100\n const isCompleted = percentage === 100\n const currentRow = i % piecesInOneRow\n const currentColumn = Math.floor(i / piecesInOneRow)\n const fixBlurStroke = borderWidth % 2 === 0 ? 0 : 0.5\n const requiredFix = Math.ceil(borderWidth / 2) + 1 + fixBlurStroke\n const x = currentRow * pieceSize + currentRow * gapBetweenPieces + startingXPoint + requiredFix\n const y = currentColumn * pieceSize + currentColumn * gapBetweenPieces + requiredFix\n\n ctx.lineWidth = borderWidth\n ctx.fillStyle = inProgress\n ? createGradient(ctx, percentage, theme, settingsTarget)\n : isCompleted\n ? completeColor\n : backgroundColor\n ctx.strokeStyle = isReader\n ? readerColor\n : inProgress || isCompleted\n ? completeColor\n : isReaderRange\n ? rangeColor\n : borderColor\n\n ctx.translate(x, y)\n ctx.fillRect(0, 0, pieceSize, pieceSize)\n ctx.strokeRect(0, 0, pieceSize, pieceSize)\n ctx.setTransform(1, 0, 0, 1, 0, 0)\n\n if (isSnakeDebugMode && priority > 0) {\n let info = ''\n if (priority === 1) info = ''\n else if (priority === 2) info = 'H'\n else if (priority === 3) info = 'R'\n else if (priority === 4) info = 'N'\n else if (priority === 5) info = 'A'\n ctx.font = isMini ? '13px monospace' : '10px monospace'\n const xpad = isMini ? pieceSize * 0.35 : pieceSize * 0.29\n const ypad = isMini ? pieceSize * 0.69 : pieceSize * 0.78\n ctx.fillStyle = 'black'\n ctx.fillText(info, x + xpad, y + ypad)\n }\n })\n }, [\n cacheMap,\n height,\n canvasWidth,\n piecesInOneRow,\n startingXPoint,\n pieceSize,\n gapBetweenPieces,\n source,\n backgroundColor,\n borderColor,\n borderWidth,\n settingsTarget,\n completeColor,\n readerColor,\n rangeColor,\n isMini,\n theme,\n isSnakeDebugMode,\n ])\n\n return (\n setDimensions(bounds)}>\n {({ measureRef }) => (\n \n \n \n \n\n {isMini && height >= cacheMaxHeight && {t('ScrollDown')}}\n
\n )}\n \n )\n}\n\nexport default memo(\n TorrentCache,\n (prev, next) => isEqual(prev.cache.Pieces, next.cache.Pieces) && isEqual(prev.cache.Readers, next.cache.Readers),\n)\n","export default ({ cacheMap, preloadPiecesAmount, piecesInOneRow }) => {\n const cacheMapWithoutEmptyBlocks = cacheMap.filter(({ percentage }) => percentage > 0)\n\n const getFullAmountOfBlocks = amountOfBlocks =>\n // this function counts existed amount of blocks with extra \"empty blocks\" to fill the row till the end\n amountOfBlocks % piecesInOneRow === 0\n ? amountOfBlocks - 1\n : amountOfBlocks + piecesInOneRow - (amountOfBlocks % piecesInOneRow) - 1 || 0\n\n const amountOfBlocksToRenderInShortView = getFullAmountOfBlocks(preloadPiecesAmount)\n // preloadPiecesAmount is counted from \"cache.Capacity / cache.PiecesLength\". We always show at least this amount of blocks\n const scalableAmountOfBlocksToRenderInShortView = getFullAmountOfBlocks(cacheMapWithoutEmptyBlocks.length)\n // cacheMap can become bigger than preloadPiecesAmount counted before. In that case we count blocks dynamically\n\n const finalAmountOfBlocksToRenderInShortView = Math.max(\n // this check is needed to decide which is the biggest amount of blocks and take it to render\n scalableAmountOfBlocksToRenderInShortView,\n amountOfBlocksToRenderInShortView,\n )\n\n const extraBlocksAmount = finalAmountOfBlocksToRenderInShortView - cacheMapWithoutEmptyBlocks.length + 1\n // amount of blocks needed to fill the line till the end\n\n const extraEmptyBlocksForFillingLine = extraBlocksAmount ? new Array(extraBlocksAmount).fill({}) : []\n\n return [...cacheMapWithoutEmptyBlocks, ...extraEmptyBlocksForFillingLine]\n}\n","import styled, { css } from 'styled-components'\n\nconst viewedPrimaryColor = '#858c90'\nconst viewedSecondaryColor = '#8c9498'\nconst viewedTertiaryColor = '#949ca0'\nconst bigTableDividerColor = '#d2d2d2'\nconst bigTableDefaultRowColor = '#f3f3f3'\nconst bigTableViewedRowColor = '#ddd'\n\nconst viewedIndicator = css`\n ${({\n theme: {\n table: { defaultPrimaryColor },\n },\n }) => css`\n :before {\n content: '';\n width: 10px;\n height: 10px;\n background: ${defaultPrimaryColor};\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `}\n`\nexport const TableStyle = styled.table`\n ${({\n theme: {\n table: { defaultPrimaryColor },\n },\n }) => css`\n border-collapse: collapse;\n margin: 25px 0;\n font-size: 0.9em;\n width: 100%;\n border-radius: 5px 5px 0 0;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n color: #000;\n\n thead tr {\n background: ${defaultPrimaryColor};\n color: #fff;\n text-align: left;\n text-transform: uppercase;\n }\n\n th,\n td {\n padding: 12px 15px;\n }\n\n tbody tr {\n border-bottom: 1px solid ${bigTableDividerColor};\n background: ${bigTableDefaultRowColor};\n\n :last-of-type {\n border-bottom: 2px solid ${defaultPrimaryColor};\n }\n\n &.viewed-file-row {\n background: ${bigTableViewedRowColor};\n }\n }\n\n td {\n &.viewed-file-indicator {\n position: relative;\n\n ${viewedIndicator}\n }\n }\n\n .button-cell {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 10px;\n }\n\n @media (max-width: 970px) {\n display: none;\n }\n `}\n`\n\nexport const ShortTableWrapper = styled.div`\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(2, 1fr);\n display: none;\n\n @media (max-width: 970px) {\n display: grid;\n }\n\n @media (max-width: 820px) {\n gap: 15px;\n grid-template-columns: 1fr;\n }\n`\n\nexport const ShortTable = styled.div`\n ${({\n isViewed,\n theme: {\n table: { defaultPrimaryColor, defaultSecondaryColor, defaultTertiaryColor },\n },\n }) => css`\n width: 100%;\n grid-template-rows: repeat(3, max-content);\n border-radius: 5px;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n\n .short-table {\n &-name {\n background: ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n display: grid;\n place-items: center;\n padding: 15px;\n color: #fff;\n text-transform: uppercase;\n font-size: 15px;\n font-weight: bold;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 10px;\n }\n }\n &-data {\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: ${isViewed ? 'max-content' : '1fr'};\n grid-auto-columns: 1fr;\n }\n &-field {\n display: grid;\n grid-template-rows: 30px 1fr;\n background: black;\n :not(:last-child) {\n border-right: 1px solid ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n }\n\n &-name {\n background: ${isViewed ? viewedSecondaryColor : defaultSecondaryColor};\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 500;\n display: grid;\n place-items: center;\n padding: 0 10px;\n\n @media (max-width: 880px) {\n font-size: 11px;\n }\n }\n\n &-value {\n background: ${isViewed ? viewedTertiaryColor : defaultTertiaryColor};\n display: grid;\n place-items: center;\n color: #fff;\n font-size: 15px;\n padding: 15px 10px;\n position: relative;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 12px 8px;\n }\n }\n }\n\n &-viewed-indicator {\n ${isViewed && viewedIndicator}\n }\n\n &-buttons {\n padding: 20px;\n border-bottom: 2px solid ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n align-items: center;\n gap: 20px;\n background: #f3f3f3;\n\n @media (max-width: 410px) {\n gap: 10px;\n grid-template-columns: 1fr;\n }\n }\n }\n `}\n`\n","import { streamHost } from 'utils/Hosts'\nimport isEqual from 'lodash/isEqual'\nimport { humanizeSize, isStandaloneApp } from 'utils/Utils'\nimport ptt from 'parse-torrent-title'\nimport { Button } from '@material-ui/core'\nimport CopyToClipboard from 'react-copy-to-clipboard'\nimport { useTranslation } from 'react-i18next'\n\nimport { TableStyle, ShortTableWrapper, ShortTable } from './style'\n\nconst { memo } = require('react')\n\n// russian episode detection support\nptt.addHandler('episode', /(\\d{1,4})[- |. ]серия|серия[- |. ](\\d{1,4})/i, { type: 'integer' })\nptt.addHandler('season', /sezon[- |. ](\\d{1,3})|(\\d{1,3})[- |. ]sezon/i, { type: 'integer' })\nptt.addHandler('season', /сезон[- |. ](\\d{1,3})|(\\d{1,3})[- |. ]сезон/i, { type: 'integer' })\n\nconst Table = memo(\n ({ playableFileList, viewedFileList, selectedSeason, seasonAmount, hash }) => {\n const { t } = useTranslation()\n const preloadBuffer = fileId => fetch(`${streamHost()}?link=${hash}&index=${fileId}&preload`)\n const getFileLink = (path, id) =>\n `${streamHost()}/${encodeURIComponent(path.split('\\\\').pop().split('/').pop())}?link=${hash}&index=${id}&play`\n const fileHasEpisodeText = !!playableFileList?.find(({ path }) => ptt.parse(path).episode)\n const fileHasSeasonText = !!playableFileList?.find(({ path }) => ptt.parse(path).season)\n const fileHasResolutionText = !!playableFileList?.find(({ path }) => ptt.parse(path).resolution)\n\n // if files in list is more then 1 and no season text detected by ptt.parse, show full name\n const shouldDisplayFullFileName = playableFileList?.length > 1 && !fileHasEpisodeText\n\n const isVlcUsed = JSON.parse(localStorage.getItem('isVlcUsed')) ?? false\n\n return !playableFileList?.length ? (\n 'No playable files in this torrent'\n ) : (\n <>\n \n \n \n | {t('Viewed')} | \n {t('Name')} | \n {fileHasSeasonText && seasonAmount?.length === 1 && {t('Season')} | }\n {fileHasEpisodeText && {t('Episode')} | }\n {fileHasResolutionText && {t('Resolution')} | }\n {t('Size')} | \n {t('Actions')} | \n
\n \n\n \n {playableFileList.map(({ id, path, length }) => {\n const { title, resolution, episode, season } = ptt.parse(path)\n const isViewed = viewedFileList?.includes(id)\n const link = getFileLink(path, id)\n\n return (\n (season === selectedSeason || !seasonAmount?.length) && (\n \n | \n {shouldDisplayFullFileName ? path : title} | \n {fileHasSeasonText && seasonAmount?.length === 1 && {season} | }\n {fileHasEpisodeText && {episode} | }\n {fileHasResolutionText && {resolution} | }\n {humanizeSize(length)} | \n \n \n \n\n \n \n \n\n \n \n \n \n | \n
\n )\n )\n })}\n \n \n\n \n {playableFileList.map(({ id, path, length }) => {\n const { title, resolution, episode, season } = ptt.parse(path)\n const isViewed = viewedFileList?.includes(id)\n const link = getFileLink(path, id)\n\n return (\n (season === selectedSeason || !seasonAmount?.length) && (\n \n {shouldDisplayFullFileName ? path : title}
\n \n {isViewed && (\n
\n )}\n {fileHasSeasonText && seasonAmount?.length === 1 && (\n
\n
{t('Season')}
\n
{season}
\n
\n )}\n {fileHasEpisodeText && (\n
\n
{t('Episode')}
\n
{episode}
\n
\n )}\n {fileHasResolutionText && (\n
\n
{t('Resolution')}
\n
{resolution}
\n
\n )}\n
\n
{t('Size')}
\n
{humanizeSize(length)}
\n
\n
\n \n
\n\n {isVlcUsed && isStandaloneApp ? (\n
\n \n \n ) : (\n
\n \n \n )}\n\n
\n \n \n
\n \n )\n )\n })}\n \n >\n )\n },\n (prev, next) => isEqual(prev, next),\n)\n\nexport default Table\n","import { rgba } from 'polished'\nimport styled, { css } from 'styled-components'\n\nexport const DialogContentGrid = styled.div`\n display: grid;\n grid-template-columns: 70% 1fr;\n grid-template-rows: repeat(2, min-content);\n grid-template-areas:\n 'main cache'\n 'file-list file-list';\n\n @media (max-width: 1450px) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(3, min-content);\n grid-template-areas:\n 'main'\n 'cache'\n 'file-list';\n }\n`\nexport const Poster = styled.div`\n ${({\n poster,\n theme: {\n dialogTorrentDetailsContent: { posterBGColor },\n },\n }) => css`\n height: 400px;\n border-radius: 5px;\n overflow: hidden;\n align-self: center;\n\n ${poster\n ? css`\n img {\n border-radius: 5px;\n height: 100%;\n }\n `\n : css`\n width: 300px;\n display: grid;\n place-items: center;\n background: ${posterBGColor};\n\n svg {\n transform: scale(2.5) translateY(-3px);\n }\n `}\n\n @media (max-width: 1280px) {\n align-self: start;\n }\n\n @media (max-width: 840px) {\n ${poster\n ? css`\n height: 200px;\n `\n : css`\n display: none;\n `}\n }\n `}\n`\nexport const MainSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { gradientStartColor, gradientEndColor },\n },\n }) => css`\n grid-area: main;\n padding: 40px;\n display: grid;\n grid-template-columns: min-content 1fr;\n gap: 30px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n\n @media (max-width: 840px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const CacheSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { chacheSectionBGColor },\n },\n }) => css`\n grid-area: cache;\n padding: 40px;\n display: grid;\n align-content: start;\n grid-template-rows: min-content 1fr min-content;\n background: ${chacheSectionBGColor};\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const TorrentFilesSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { torrentFilesSectionBGColor },\n },\n }) => css`\n grid-area: file-list;\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ${torrentFilesSectionBGColor};\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const SectionSubName = styled.div`\n ${({\n theme: {\n dialogTorrentDetailsContent: { subNameFontColor },\n },\n }) => css`\n ${({ mb }) => css`\n ${mb && `margin-top: ${mb / 3}px`};\n ${mb && `margin-bottom: ${mb}px`};\n line-height: 1.2;\n color: ${subNameFontColor};\n\n @media (max-width: 800px) {\n ${mb && `margin-top: ${mb / 4}px`};\n ${mb && `margin-bottom: ${mb / 2}px`};\n font-size: 14px;\n }\n `}\n `}\n`\n\nexport const SectionTitle = styled.div`\n ${({\n color,\n theme: {\n dialogTorrentDetailsContent: { titleFontColor },\n },\n }) => css`\n ${({ mb }) => css`\n ${mb && `margin-bottom: ${mb}px`};\n font-size: 34px;\n font-weight: 300;\n line-height: 1;\n word-break: break-word;\n color: ${color || titleFontColor};\n\n @media (max-width: 800px) {\n font-size: 24px;\n line-height: 1.1;\n ${mb && `margin-bottom: ${mb / 2}px`};\n }\n `}\n `}\n`\n\nexport const SectionHeader = styled.div`\n margin-bottom: 20px;\n`\n\nexport const WidgetWrapper = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 220px));\n gap: 20px;\n\n @media (max-width: 800px) {\n gap: 15px;\n }\n @media (max-width: 410px) {\n gap: 10px;\n }\n\n ${({ detailedView }) =>\n detailedView\n ? css`\n @media (max-width: 800px) {\n grid-template-columns: repeat(2, 1fr);\n }\n @media (max-width: 410px) {\n grid-template-columns: 1fr;\n }\n `\n : css`\n @media (max-width: 800px) {\n grid-template-columns: repeat(auto-fit, minmax(max-content, 185px));\n }\n @media (max-width: 480px) {\n grid-template-columns: 1fr 1fr;\n }\n @media (max-width: 390px) {\n grid-template-columns: 1fr;\n }\n `}\n`\n\nexport const WidgetFieldWrapper = styled.div`\n display: grid;\n grid-template-columns: 40px 1fr;\n grid-template-rows: min-content 50px;\n grid-template-areas:\n 'title title'\n 'icon value';\n\n > * {\n display: grid;\n place-items: center;\n }\n\n @media (max-width: 800px) {\n grid-template-columns: 30px 1fr;\n grid-template-rows: min-content 40px;\n }\n`\nexport const WidgetFieldTitle = styled.div`\n ${({\n theme: {\n dialogTorrentDetailsContent: { titleFontColor },\n },\n }) => css`\n grid-area: title;\n justify-self: start;\n text-transform: uppercase;\n font-size: 11px;\n margin-bottom: 2px;\n font-weight: 600;\n color: ${titleFontColor};\n `}\n`\n\nexport const WidgetFieldIcon = styled.div`\n ${({ bgColor }) => css`\n grid-area: icon;\n color: ${rgba('#fff', 0.8)};\n background: ${bgColor};\n border-radius: 5px 0 0 5px;\n\n @media (max-width: 800px) {\n > svg {\n width: 50%;\n }\n }\n `}\n`\nexport const WidgetFieldValue = styled.div`\n ${({\n bgColor,\n theme: {\n dialogTorrentDetailsContent: { widgetFontColor },\n },\n }) => css`\n grid-area: value;\n font-size: 24px;\n padding: 0 20px 0 0;\n color: ${widgetFontColor};\n background: ${bgColor};\n border-radius: 0 5px 5px 0;\n white-space: nowrap;\n\n @media (max-width: 800px) {\n font-size: 18px;\n padding: 0 16px 0 0;\n }\n `}\n`\n\nexport const LoadingProgress = styled.div.attrs(\n ({\n value,\n fullAmount,\n theme: {\n dialogTorrentDetailsContent: { gradientStartColor, gradientEndColor },\n },\n }) => {\n const percentage = Math.min(100, (value * 100) / fullAmount)\n\n return {\n // this block is here according to styled-components recomendation about fast changable components\n style: {\n background: `linear-gradient(to right, ${gradientStartColor} 0%, ${gradientEndColor} ${percentage}%, #eee ${percentage}%, #fff 100%)`,\n },\n }\n },\n)`\n ${({ label }) => css`\n border: 1px solid;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n\n :before {\n content: '${label}';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n `}\n`\n\nexport const Divider = styled.div`\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n`\n","import styled, { css } from 'styled-components'\n\nexport const DetailedViewWidgetSection = styled.section`\n ${({\n theme: {\n detailedView: { gradientStartColor, gradientEndColor },\n },\n }) => css`\n padding: 40px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const DetailedViewCacheSection = styled.section`\n ${({\n theme: {\n detailedView: { cacheSectionBGColor },\n },\n }) => css`\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ${cacheSectionBGColor};\n flex: 1;\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n","import { WidgetFieldWrapper, WidgetFieldIcon, WidgetFieldValue, WidgetFieldTitle } from './style'\n\nexport default function StatisticsField({ icon: Icon, title, value, iconBg, valueBg }) {\n return (\n \n {title}\n \n \n \n\n {value}\n \n )\n}\n","import { DarkModeContext } from 'components/App'\nimport { useContext } from 'react'\nimport { THEME_MODES } from 'style/materialUISetup'\n\nconst { LIGHT, DARK } = THEME_MODES\n\nconst colors = {\n light: {\n downloadSpeed: { iconBGColor: '#118f00', valueBGColor: '#13a300' },\n uploadSpeed: { iconBGColor: '#0146ad', valueBGColor: '#0058db' },\n peers: { iconBGColor: '#cdc118', valueBGColor: '#d8cb18' },\n piecesCount: { iconBGColor: '#b6c95e', valueBGColor: '#c0d076' },\n piecesLength: { iconBGColor: '#0982c8', valueBGColor: '#098cd7' },\n status: { iconBGColor: '#aea25b', valueBGColor: '#b4aa6e' },\n size: { iconBGColor: '#9b01ad', valueBGColor: '#ac03bf' },\n },\n dark: {\n downloadSpeed: { iconBGColor: '#0c6600', valueBGColor: '#0d7000' },\n uploadSpeed: { iconBGColor: '#003f9e', valueBGColor: '#0047b3' },\n peers: { iconBGColor: '#a69c11', valueBGColor: '#b4a913' },\n piecesCount: { iconBGColor: '#8da136', valueBGColor: '#99ae3d' },\n piecesLength: { iconBGColor: '#07659c', valueBGColor: '#0872af' },\n status: { iconBGColor: '#938948', valueBGColor: '#9f9450' },\n size: { iconBGColor: '#81008f', valueBGColor: '#9102a1' },\n },\n}\n\nexport default function useGetWidgetColors(widgetName) {\n const { isDarkMode } = useContext(DarkModeContext)\n const widgetColors = colors[isDarkMode ? DARK : LIGHT][widgetName]\n\n return widgetColors\n}\n","import {\n ArrowDownward as ArrowDownwardIcon,\n ArrowUpward as ArrowUpwardIcon,\n SwapVerticalCircle as SwapVerticalCircleIcon,\n ViewAgenda as ViewAgendaIcon,\n Widgets as WidgetsIcon,\n PhotoSizeSelectSmall as PhotoSizeSelectSmallIcon,\n Build as BuildIcon,\n} from '@material-ui/icons'\nimport { getPeerString, humanizeSize, humanizeSpeed } from 'utils/Utils'\nimport { useTranslation } from 'react-i18next'\nimport { GETTING_INFO, IN_DB, CLOSED, PRELOAD, WORKING } from 'torrentStates'\n\nimport StatisticsField from '../StatisticsField'\nimport useGetWidgetColors from './useGetWidgetColors'\n\nexport const DownlodSpeedWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('downloadSpeed')\n\n return (\n \n )\n}\n\nexport const UploadSpeedWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('uploadSpeed')\n\n return (\n \n )\n}\n\nexport const PeersWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('peers')\n\n return (\n \n )\n}\n\nexport const PiecesCountWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('piecesCount')\n\n return (\n \n )\n}\n\nexport const PiecesLengthWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('piecesLength')\n\n return (\n \n )\n}\n\nexport const StatusWidget = ({ stat }) => {\n const { t } = useTranslation()\n\n const values = {\n [GETTING_INFO]: t('TorrentGettingInfo'),\n [PRELOAD]: t('TorrentPreload'),\n [WORKING]: t('TorrentWorking'),\n [CLOSED]: t('TorrentClosed'),\n [IN_DB]: t('TorrentInDb'),\n }\n const { iconBGColor, valueBGColor } = useGetWidgetColors('status')\n\n return (\n \n )\n}\n\nexport const SizeWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('size')\n\n return (\n \n )\n}\n","export const [GETTING_INFO, PRELOAD, WORKING, CLOSED, IN_DB] = [1, 2, 3, 4, 5]\n","import { useTranslation } from 'react-i18next'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\nimport { useState } from 'react'\n\nimport { SectionTitle, WidgetWrapper } from '../style'\nimport { DetailedViewCacheSection, DetailedViewWidgetSection } from './style'\nimport TorrentCache from '../TorrentCache'\nimport {\n SizeWidget,\n PiecesLengthWidget,\n StatusWidget,\n PiecesCountWidget,\n PeersWidget,\n UploadSpeedWidget,\n DownlodSpeedWidget,\n} from '../widgets'\n\nexport default function DetailedView({\n downloadSpeed,\n uploadSpeed,\n torrent,\n torrentSize,\n PiecesCount,\n PiecesLength,\n stat,\n cache,\n}) {\n const { t } = useTranslation()\n const [isSnakeDebugMode, setIsSnakeDebugMode] = useState(\n JSON.parse(localStorage.getItem('isSnakeDebugMode')) || false,\n )\n\n return (\n <>\n \n {t('Data')}\n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n {t('Cache')}\n\n {\n setIsSnakeDebugMode(checked)\n localStorage.setItem('isSnakeDebugMode', checked)\n }}\n />\n }\n label={t('DebugMode')}\n labelPlacement='start'\n />\n
\n \n\n \n \n >\n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const MainSectionButtonGroup = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n\n :not(:last-child) {\n margin-bottom: 30px;\n }\n\n @media (max-width: 1580px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 880px) {\n grid-template-columns: 1fr;\n }\n`\n\nexport const SmallLabel = styled.div`\n ${({\n mb,\n theme: {\n torrentFunctions: { fontColor },\n },\n }) => css`\n ${mb && `margin-bottom: ${mb}px`};\n font-size: 20px;\n font-weight: 300;\n line-height: 1;\n color: ${fontColor};\n\n @media (max-width: 800px) {\n font-size: 18px;\n ${mb && `margin-bottom: ${mb / 1.5}px`};\n }\n `}\n`\n","import axios from 'axios'\nimport { memo } from 'react'\nimport { playlistTorrHost, torrentsHost, viewedHost } from 'utils/Hosts'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\nimport { Button } from '@material-ui/core'\nimport ptt from 'parse-torrent-title'\nimport { useTranslation } from 'react-i18next'\n\nimport { SmallLabel, MainSectionButtonGroup } from './style'\nimport { SectionSubName } from '../style'\n\nconst TorrentFunctions = memo(\n ({ hash, viewedFileList, playableFileList, name, title, setViewedFileList }) => {\n const { t } = useTranslation()\n const latestViewedFileId = viewedFileList?.[viewedFileList?.length - 1]\n const latestViewedFile = playableFileList?.find(({ id }) => id === latestViewedFileId)?.path\n const isOnlyOnePlayableFile = playableFileList?.length === 1\n const latestViewedFileData = latestViewedFile && ptt.parse(latestViewedFile)\n const dropTorrent = () => axios.post(torrentsHost(), { action: 'drop', hash })\n const removeTorrentViews = () =>\n axios.post(viewedHost(), { action: 'rem', hash, file_index: -1 }).then(() => setViewedFileList())\n const fullPlaylistLink = `${playlistTorrHost()}/${encodeURIComponent(name || title || 'file')}.m3u?link=${hash}&m3u`\n const partialPlaylistLink = `${fullPlaylistLink}&fromlast`\n\n return (\n <>\n {!isOnlyOnePlayableFile && !!viewedFileList?.length && (\n <>\n {t('DownloadPlaylist')}\n \n {t('LatestFilePlayed')}{' '}\n \n {latestViewedFileData?.title}.\n {latestViewedFileData?.season && (\n <>\n {' '}\n {t('Season')}: {latestViewedFileData?.season}. {t('Episode')}: {latestViewedFileData?.episode}.\n >\n )}\n \n \n\n \n \n \n \n\n \n \n \n \n >\n )}\n {t('TorrentState')}\n \n \n \n \n {t('Info')}\n \n {(isOnlyOnePlayableFile || !viewedFileList?.length) && (\n \n \n \n )}\n \n \n \n \n >\n )\n },\n () => true,\n)\n\nexport default TorrentFunctions\n","const getExt = filename => {\n const ext = filename.split('.').pop()\n if (ext === filename) return ''\n return ext.toLowerCase()\n}\nconst playableExtList = [\n // video\n '3g2',\n '3gp',\n 'aaf',\n 'asf',\n 'avchd',\n 'avi',\n 'drc',\n 'flv',\n 'iso',\n 'm2v',\n 'm2ts',\n 'm4p',\n 'm4v',\n 'mkv',\n 'mng',\n 'mov',\n 'mp2',\n 'mp4',\n 'mpe',\n 'mpeg',\n 'mpg',\n 'mpv',\n 'mxf',\n 'nsv',\n 'ogg',\n 'ogv',\n 'ts',\n 'qt',\n 'rm',\n 'rmvb',\n 'roq',\n 'svi',\n 'vob',\n 'webm',\n 'wmv',\n 'yuv',\n // audio\n 'aac',\n 'aiff',\n 'ape',\n 'au',\n 'flac',\n 'gsm',\n 'it',\n 'm3u',\n 'm4a',\n 'mid',\n 'mod',\n 'mp3',\n 'mpa',\n 'pls',\n 'ra',\n 's3m',\n 'sid',\n 'wav',\n 'wma',\n 'xm',\n]\n\n// eslint-disable-next-line import/prefer-default-export\nexport const isFilePlayable = fileName => playableExtList.includes(getExt(fileName))\n","import { NoImageIcon } from 'icons'\nimport { humanizeSize, removeRedundantCharacters } from 'utils/Utils'\nimport { useEffect, useState } from 'react'\nimport { Button, ButtonGroup } from '@material-ui/core'\nimport ptt from 'parse-torrent-title'\nimport axios from 'axios'\nimport { viewedHost } from 'utils/Hosts'\nimport { GETTING_INFO, IN_DB } from 'torrentStates'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { useTranslation } from 'react-i18next'\n\nimport { useUpdateCache, useGetSettings } from './customHooks'\nimport DialogHeader from './DialogHeader'\nimport TorrentCache from './TorrentCache'\nimport Table from './Table'\nimport DetailedView from './DetailedView'\nimport {\n DialogContentGrid,\n MainSection,\n Poster,\n SectionTitle,\n SectionSubName,\n WidgetWrapper,\n LoadingProgress,\n SectionHeader,\n CacheSection,\n TorrentFilesSection,\n Divider,\n} from './style'\nimport { DownlodSpeedWidget, UploadSpeedWidget, PeersWidget, SizeWidget, StatusWidget } from './widgets'\nimport TorrentFunctions from './TorrentFunctions'\nimport { isFilePlayable } from './helpers'\n\nconst Loader = () => (\n \n \n
\n)\n\nexport default function DialogTorrentDetailsContent({ closeDialog, torrent }) {\n const { t } = useTranslation()\n const [isLoading, setIsLoading] = useState(true)\n const [isDetailedCacheView, setIsDetailedCacheView] = useState(false)\n const [viewedFileList, setViewedFileList] = useState()\n const [playableFileList, setPlayableFileList] = useState()\n const [seasonAmount, setSeasonAmount] = useState(null)\n const [selectedSeason, setSelectedSeason] = useState()\n const [isSnakeDebugMode] = useState(JSON.parse(localStorage.getItem('isSnakeDebugMode')) || false)\n\n const {\n poster,\n hash,\n title,\n name,\n stat,\n download_speed: downloadSpeed,\n upload_speed: uploadSpeed,\n torrent_size: torrentSize,\n file_stats: torrentFileList,\n } = torrent\n\n const cache = useUpdateCache(hash)\n const settings = useGetSettings(cache)\n\n const { Capacity, PiecesCount, PiecesLength, Filled } = cache\n\n useEffect(() => {\n if (playableFileList && seasonAmount === null) {\n const seasons = []\n playableFileList.forEach(({ path }) => {\n const currentSeason = ptt.parse(path).season\n if (currentSeason) {\n !seasons.includes(currentSeason) && seasons.push(currentSeason)\n }\n })\n seasons.length && setSelectedSeason(seasons[0])\n setSeasonAmount(seasons.sort((a, b) => a - b))\n }\n }, [playableFileList, seasonAmount])\n\n useEffect(() => {\n setPlayableFileList(torrentFileList?.filter(({ path }) => isFilePlayable(path)))\n }, [torrentFileList])\n\n useEffect(() => {\n const cacheLoaded = !!Object.entries(cache).length\n const torrentLoaded = stat !== GETTING_INFO && stat !== IN_DB\n\n if (!cacheLoaded && !isLoading) setIsLoading(true)\n if (cacheLoaded && isLoading && torrentLoaded) setIsLoading(false)\n }, [stat, cache, isLoading])\n\n useEffect(() => {\n // getting viewed file list\n axios.post(viewedHost(), { action: 'list', hash }).then(({ data }) => {\n if (data) {\n const lst = data.map(itm => itm.file_index).sort((a, b) => a - b)\n setViewedFileList(lst)\n } else setViewedFileList()\n })\n }, [hash])\n\n const preloadPerc = settings?.PreloadCache\n const preloadSize = (Capacity / 100) * preloadPerc\n const bufferSize = preloadSize > 33554432 ? preloadSize : 33554432 // Not less than 32MB\n\n const getParsedTitle = () => {\n const newNameStringArr = []\n\n const torrentParsedName = name && ptt.parse(name)\n\n if (title !== name) {\n newNameStringArr.push(removeRedundantCharacters(title))\n } else if (torrentParsedName?.title) newNameStringArr.push(removeRedundantCharacters(torrentParsedName?.title))\n\n // These 2 checks are needed to get year and resolution from torrent name if title does not have this info\n if (torrentParsedName?.year && !newNameStringArr[0].includes(torrentParsedName?.year))\n newNameStringArr.push(torrentParsedName?.year)\n if (torrentParsedName?.resolution && !newNameStringArr[0].includes(torrentParsedName?.resolution))\n newNameStringArr.push(torrentParsedName?.resolution)\n\n const newNameString = newNameStringArr.join('. ')\n\n // removeRedundantCharacters is returning \"..\" if it was \"...\"\n const lastDotShouldBeAdded =\n newNameString[newNameString.length - 1] === '.' && newNameString[newNameString.length - 2] === '.'\n\n return lastDotShouldBeAdded ? `${newNameString}.` : newNameString\n }\n\n return (\n <>\n setIsDetailedCacheView(false) })}\n />\n\n \n {isLoading ? (\n
\n ) : isDetailedCacheView ? (\n
\n ) : (\n
\n \n {poster ?
: }\n\n \n {title && name !== title ? (\n getParsedTitle().length > 90 ? (\n <>\n
{ptt.parse(name).title}\n
{getParsedTitle()}\n >\n ) : (\n <>\n
{getParsedTitle()}\n
{ptt.parse(name || '')?.title}\n >\n )\n ) : (\n
{getParsedTitle()}\n )}\n\n
\n \n \n \n \n \n \n\n
\n\n
\n
\n \n\n \n \n {t('Buffer')}\n {bufferSize <= 33554432 && {t('BufferNote')}}\n \n \n\n \n \n \n\n \n {t('TorrentContent')}\n\n {seasonAmount?.length > 1 && (\n <>\n {t('SelectSeason')}\n \n {seasonAmount.map(season => (\n \n ))}\n \n\n \n {t('Season')} {selectedSeason}\n \n >\n )}\n\n \n \n \n )}\n
\n >\n )\n}\n","import { useTranslation } from 'react-i18next'\n\nexport default () => {\n const { i18n } = useTranslation()\n const currentLanguage = i18n.language.substr(0, 2)\n\n return [currentLanguage, lang => i18n.changeLanguage(lang)]\n}\n","import { useEffect, useRef } from 'react'\n\nexport default function usePreviousState(value) {\n const ref = useRef(value)\n\n useEffect(() => {\n ref.current = value\n }, [value])\n\n return ref.current\n}\n","import styled, { css } from 'styled-components'\n\nexport const Header = styled.div`\n ${({ theme: { primary } }) => css`\n background: ${primary};\n color: rgba(0, 0, 0, 0.87);\n font-size: 20px;\n color: #fff;\n font-weight: 600;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 15px 24px;\n position: relative;\n `}\n`\n\nexport const ButtonWrapper = styled.div`\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n\n > :not(:last-child) {\n margin-right: 10px;\n }\n`\n","import { css } from 'styled-components'\n\nexport const standaloneMedia = styles => css`\n @media screen and (display-mode: standalone) {\n ${styles};\n }\n`\n","import { standaloneMedia } from 'style/standaloneMedia'\nimport styled, { css } from 'styled-components'\n\nexport const pwaFooterHeight = 90\n\nexport default styled.div`\n background: #575757;\n color: #fff;\n position: fixed;\n bottom: 0;\n width: 100%;\n height: ${pwaFooterHeight}px;\n\n display: none;\n\n ${standaloneMedia(css`\n display: grid;\n grid-template-columns: repeat(5, calc(100% / 5));\n justify-items: center;\n `)}\n`\n","import { ListItem } from '@material-ui/core'\nimport Dialog from '@material-ui/core/Dialog'\nimport { pwaFooterHeight } from 'components/App/PWAFooter/style'\nimport styled, { css } from 'styled-components'\nimport { Header } from 'style/DialogStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport { standaloneMedia } from './standaloneMedia'\n\nexport const StyledMenuButtonWrapper = styled(ListItem).attrs({ button: true })`\n ${standaloneMedia(css`\n width: 100%;\n height: 60px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n `)}\n`\n\nexport const StyledDialog = styled(Dialog).attrs({\n ...(isStandaloneApp && { hideBackdrop: true, transitionDuration: 0 }),\n})`\n ${standaloneMedia(css`\n margin-bottom: ${pwaFooterHeight}px;\n\n .MuiDialog-container .MuiPaper-root {\n box-shadow: none;\n }\n `)}\n`\n\nexport const StyledHeader = styled(Header)`\n ${standaloneMedia(css`\n padding-top: 47px;\n `)}\n`\n","import { useEffect, useRef } from 'react'\nimport { isStandaloneApp } from 'utils/Utils'\n\nexport default function useOnStandaloneAppOutsideClick(onClickOutside) {\n const ref = useRef()\n\n useEffect(() => {\n if (!isStandaloneApp) return\n\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClickOutside && onClickOutside()\n }\n }\n\n document.addEventListener('click', handleClickOutside, true)\n\n return () => {\n document.removeEventListener('click', handleClickOutside, true)\n }\n })\n\n return ref\n}\n","import axios from 'axios'\nimport parseTorrent from 'parse-torrent'\nimport ptt from 'parse-torrent-title'\n\nexport const getMoviePosters = (movieName, language = 'en') => {\n const url = 'http://api.themoviedb.org/3/search/multi'\n const imgHost = language === 'ru' ? 'http://imagetmdb.com' : 'http://image.tmdb.org' // https:\n\n return axios\n .get(url, {\n params: {\n api_key: process.env.REACT_APP_TMDB_API_KEY,\n language,\n include_image_language: `${language},null,en`,\n query: movieName,\n },\n })\n .then(({ data: { results } }) =>\n results.filter(el => el.poster_path).map(el => `${imgHost}/t/p/w300${el.poster_path}`),\n )\n .catch(() => null)\n}\n\nexport const checkImageURL = async url => {\n if (!url || !url.match(/.(\\.jpg|\\.jpeg|\\.png|\\.gif|\\.svg||\\.webp).*$/i)) return false\n return true\n}\n\nconst magnetRegex = /^magnet:\\?xt=urn:[a-z0-9].*/i\nexport const hashRegex = /^\\b[0-9a-f]{32}\\b$|^\\b[0-9a-f]{40}\\b$|^\\b[0-9a-f]{64}\\b$/i\nconst torrentRegex = /^.*\\.(torrent)$/i\nconst linkRegex = /^(http(s?)):\\/\\/.*/i\n\nexport const checkTorrentSource = source =>\n source.match(hashRegex) !== null ||\n source.match(magnetRegex) !== null ||\n source.match(torrentRegex) !== null ||\n source.match(linkRegex) !== null\n\nexport const parseTorrentTitle = (parsingSource, callback) => {\n parseTorrent.remote(parsingSource, (err, { name, files } = {}) => {\n if (!name || err) return callback({ parsedTitle: null, originalName: null })\n\n const torrentName = ptt.parse(name).title\n const nameOfFileInsideTorrent = files ? ptt.parse(files[0].name).title : null\n\n let newTitle = torrentName\n if (nameOfFileInsideTorrent) {\n // taking shorter title because in most cases it is more accurate\n newTitle = torrentName.length < nameOfFileInsideTorrent.length ? torrentName : nameOfFileInsideTorrent\n }\n\n callback({ parsedTitle: newTitle, originalName: name })\n })\n}\n","import { Button } from '@material-ui/core'\nimport styled, { css } from 'styled-components'\n\nexport const Content = styled.div`\n ${({\n isEditMode,\n theme: {\n addDialog: { gradientStartColor, gradientEndColor, fontColor },\n },\n }) => css`\n height: 550px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n flex: 1;\n display: grid;\n grid-template-columns: repeat(${isEditMode ? '1' : '2'}, 1fr);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n overflow: auto;\n color: ${fontColor};\n\n @media (max-width: 540px) {\n ${'' /* Just for bug fixing on small screens */}\n overflow: scroll;\n }\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 500px) {\n align-content: start;\n }\n `}\n`\n\nexport const RightSide = styled.div`\n padding: 0 20px 20px 20px;\n`\n\nexport const RightSideContainer = styled.div`\n ${({\n isHidden,\n notificationMessage,\n isError,\n theme: {\n addDialog: { notificationErrorBGColor, notificationSuccessBGColor },\n },\n }) => css`\n height: 530px;\n\n ${notificationMessage &&\n css`\n position: relative;\n white-space: nowrap;\n\n :before {\n font-size: 20px;\n font-weight: 300;\n content: '${notificationMessage}';\n display: grid;\n place-items: center;\n background: ${isError ? notificationErrorBGColor : notificationSuccessBGColor};\n padding: 10px 15px;\n position: absolute;\n top: 52%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 5px;\n }\n `};\n\n ${isHidden &&\n css`\n display: none;\n `};\n\n @media (max-width: 500px) {\n height: 170px;\n }\n `}\n`\nexport const LeftSide = styled.div`\n display: flex;\n flex-direction: column;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n`\n\nexport const LeftSideBottomSectionBasicStyles = css`\n transition: transform 0.3s;\n padding: 20px;\n height: 100%;\n display: grid;\n`\n\nexport const LeftSideBottomSectionNoFile = styled.div`\n ${LeftSideBottomSectionBasicStyles}\n border: 4px dashed rgba(0,0,0,0.1);\n text-align: center;\n outline: none;\n\n ${({ isDragActive }) => isDragActive && `border: 4px dashed green`};\n\n justify-items: center;\n grid-template-rows: 130px 1fr;\n cursor: pointer;\n\n :hover {\n background-color: rgba(0, 0, 0, 0.04);\n svg {\n transform: translateY(-4%);\n }\n }\n\n @media (max-width: 930px) {\n border: 4px dashed transparent;\n height: 400px;\n place-items: center;\n grid-template-rows: 40% 1fr;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n grid-template-rows: 1fr;\n\n > div:first-of-type {\n display: none;\n }\n }\n`\n\nexport const LeftSideBottomSectionFileSelected = styled.div`\n ${LeftSideBottomSectionBasicStyles}\n place-items: center;\n\n @media (max-width: 930px) {\n height: 400px;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n }\n`\n\nexport const TorrentIconWrapper = styled.div`\n position: relative;\n`\n\nexport const CancelIconWrapper = styled.div`\n position: absolute;\n top: -9px;\n left: 10px;\n cursor: pointer;\n\n > svg {\n transition: all 0.3s;\n fill: rgba(0, 0, 0, 0.7);\n\n :hover {\n fill: rgba(0, 0, 0, 0.6);\n }\n }\n`\n\nexport const IconWrapper = styled.div`\n display: grid;\n justify-items: center;\n align-content: start;\n gap: 10px;\n align-self: start;\n\n svg {\n transition: all 0.3s;\n }\n`\n\nexport const LeftSideTopSection = styled.div`\n ${({\n active,\n theme: {\n addDialog: { gradientStartColor },\n },\n }) => css`\n background: ${gradientStartColor};\n padding: 0 20px 20px 20px;\n transition: all 0.3s;\n\n ${active && 'box-shadow: 0 8px 10px -9px rgba(0, 0, 0, 0.5)'};\n `}\n`\n\nexport const PosterWrapper = styled.div`\n margin-top: 20px;\n display: grid;\n grid-template-columns: max-content 1fr;\n grid-template-rows: 300px max-content;\n column-gap: 5px;\n position: relative;\n margin-bottom: 20px;\n\n grid-template-areas:\n 'poster suggestions'\n 'clear empty';\n\n @media (max-width: 540px) {\n grid-template-columns: 1fr;\n gap: 5px 0;\n justify-items: center;\n grid-template-areas:\n 'poster'\n 'clear'\n 'suggestions';\n }\n`\n\nexport const PosterSuggestions = styled.div`\n display: grid;\n grid-area: suggestions;\n grid-auto-flow: column;\n grid-template-columns: repeat(3, max-content);\n grid-template-rows: repeat(4, max-content);\n gap: 5px;\n\n @media (max-width: 540px) {\n grid-auto-flow: row;\n grid-template-columns: repeat(5, max-content);\n }\n @media (max-width: 375px) {\n grid-template-columns: repeat(4, max-content);\n }\n`\n\nexport const PosterSuggestionsItem = styled.div`\n cursor: pointer;\n width: 71px;\n height: 71px;\n\n @media (max-width: 430px) {\n width: 60px;\n height: 60px;\n }\n\n @media (max-width: 375px) {\n width: 71px;\n height: 71px;\n }\n\n @media (max-width: 355px) {\n width: 60px;\n height: 60px;\n }\n\n img {\n transition: all 0.3s;\n border-radius: 5px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n :hover {\n filter: brightness(130%);\n }\n }\n`\n\nexport const Poster = styled.div`\n ${({\n poster,\n theme: {\n addDialog: { posterBGColor },\n },\n }) => css`\n border-radius: 5px;\n overflow: hidden;\n width: 200px;\n grid-area: poster;\n\n ${poster\n ? css`\n img {\n width: 200px;\n object-fit: cover;\n border-radius: 5px;\n height: 100%;\n }\n `\n : css`\n display: grid;\n place-items: center;\n background: ${posterBGColor};\n\n svg {\n transform: scale(1.5) translateY(-3px);\n }\n `}\n `}\n`\n\nexport const ClearPosterButton = styled(Button)`\n grid-area: clear;\n justify-self: center;\n transform: translateY(-50%);\n position: absolute;\n ${({ showbutton }) => !showbutton && 'display: none'};\n\n @media (max-width: 540px) {\n transform: translateY(-140%);\n }\n`\n\nexport const PosterLanguageSwitch = styled.div`\n ${({\n showbutton,\n theme: {\n addDialog: { languageSwitchBGColor, languageSwitchFontColor },\n },\n }) => css`\n grid-area: poster;\n z-index: 5;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 30px;\n height: 30px;\n background: ${languageSwitchBGColor};\n border-radius: 50%;\n display: grid;\n place-items: center;\n color: ${languageSwitchFontColor};\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s;\n\n ${!showbutton && 'display: none'};\n\n :hover {\n filter: brightness(1.1);\n }\n `}\n`\n\nexport const StyledPWAAddButton = styled.div`\n border: 2px solid white;\n border-radius: 50%;\n height: 45px;\n width: 45px;\n position: relative;\n\n :before,\n :after {\n content: '';\n background: white;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n :before {\n width: 2px;\n height: 25px;\n }\n :after {\n width: 25px;\n height: 2px;\n }\n`\n","import { useTranslation } from 'react-i18next'\nimport { rgba } from 'polished'\nimport { NoImageIcon } from 'icons'\nimport { IconButton, InputAdornment, TextField, useTheme } from '@material-ui/core'\nimport { HighlightOff as HighlightOffIcon } from '@material-ui/icons'\n\nimport {\n ClearPosterButton,\n PosterLanguageSwitch,\n RightSide,\n Poster,\n PosterSuggestions,\n PosterSuggestionsItem,\n PosterWrapper,\n RightSideContainer,\n} from './style'\nimport { checkImageURL } from './helpers'\n\nexport default function RightSideComponent({\n setTitle,\n setPosterUrl,\n setIsPosterUrlCorrect,\n setIsUserInteractedWithPoster,\n setPosterList,\n isTorrentSourceCorrect,\n isHashAlreadyExists,\n title,\n parsedTitle,\n posterUrl,\n isPosterUrlCorrect,\n posterList,\n currentLang,\n posterSearchLanguage,\n setPosterSearchLanguage,\n posterSearch,\n removePoster,\n torrentSource,\n originalTorrentTitle,\n updateTitleFromSource,\n isCustomTitleEnabled,\n setIsCustomTitleEnabled,\n isEditMode,\n}) {\n const { t } = useTranslation()\n const primary = useTheme().palette.primary.main\n\n const handleTitleChange = ({ target: { value } }) => setTitle(value)\n const handlePosterUrlChange = ({ target: { value } }) => {\n setPosterUrl(value)\n checkImageURL(value).then(setIsPosterUrlCorrect)\n setIsUserInteractedWithPoster(!!value)\n setPosterList()\n }\n const userChangesPosterUrl = url => {\n setPosterUrl(url)\n checkImageURL(url).then(setIsPosterUrlCorrect)\n setIsUserInteractedWithPoster(true)\n }\n\n return (\n \n \n {originalTorrentTitle ? (\n <>\n \n setIsCustomTitleEnabled(true)}\n onBlur={({ target: { value } }) => !value && setIsCustomTitleEnabled(false)}\n value={title}\n margin='dense'\n label={t('AddDialog.CustomTorrentTitle')}\n type='text'\n variant='outlined'\n fullWidth\n helperText={t('AddDialog.CustomTorrentTitleHelperText')}\n InputProps={{\n endAdornment: (\n \n {\n setTitle('')\n setIsCustomTitleEnabled(!isCustomTitleEnabled)\n updateTitleFromSource()\n setIsUserInteractedWithPoster(false)\n }}\n >\n \n \n \n ),\n }}\n />\n >\n ) : (\n \n )}\n \n\n \n \n {isPosterUrlCorrect ?
: }\n \n\n \n {posterList\n ?.filter(url => url !== posterUrl)\n .slice(0, 12)\n .map(url => (\n userChangesPosterUrl(url)} key={url}>\n
\n \n ))}\n \n\n {currentLang !== 'en' && (\n {\n const newLanguage = posterSearchLanguage === 'en' ? 'ru' : 'en'\n setPosterSearchLanguage(newLanguage)\n posterSearch(isCustomTitleEnabled ? title : originalTorrentTitle ? parsedTitle : title, newLanguage, {\n shouldRefreshMainPoster: true,\n })\n }}\n showbutton={+isPosterUrlCorrect}\n color='primary'\n variant='contained'\n size='small'\n >\n {posterSearchLanguage === 'en' ? 'EN' : 'RU'}\n \n )}\n\n {\n removePoster()\n setIsUserInteractedWithPoster(true)\n }}\n color='primary'\n variant='contained'\n size='small'\n >\n {t('Clear')}\n \n \n \n\n \n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { useDropzone } from 'react-dropzone'\nimport { AddItemIcon, TorrentIcon } from 'icons'\nimport TextField from '@material-ui/core/TextField'\nimport { Cancel as CancelIcon } from '@material-ui/icons'\nimport { useState } from 'react'\n\nimport {\n CancelIconWrapper,\n IconWrapper,\n LeftSide,\n LeftSideBottomSectionFileSelected,\n LeftSideBottomSectionNoFile,\n LeftSideTopSection,\n TorrentIconWrapper,\n} from './style'\n\nexport default function LeftSideComponent({\n setIsUserInteractedWithPoster,\n setSelectedFile,\n torrentSource,\n setTorrentSource,\n selectedFile,\n}) {\n const { t } = useTranslation()\n\n const handleCapture = files => {\n const [file] = files\n if (!file) return\n\n setIsUserInteractedWithPoster(false)\n setSelectedFile(file)\n setTorrentSource(file.name)\n }\n\n const clearSelectedFile = () => {\n setSelectedFile()\n setTorrentSource('')\n }\n\n const [isTorrentSourceActive, setIsTorrentSourceActive] = useState(false)\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: handleCapture, accept: '.torrent' })\n\n const handleTorrentSourceChange = ({ target: { value } }) => setTorrentSource(value)\n\n return (\n \n \n setIsTorrentSourceActive(true)}\n onBlur={() => setIsTorrentSourceActive(false)}\n inputProps={{ autoComplete: 'off' }}\n disabled={!!selectedFile}\n />\n \n\n {selectedFile ? (\n \n \n \n\n \n \n \n \n \n ) : (\n \n \n {t('AddDialog.AppendFile.Or')}
\n\n \n \n {t('AddDialog.AppendFile.ClickOrDrag')}
\n \n \n )}\n \n )\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport { torrentsHost, torrentUploadHost } from 'utils/Hosts'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport debounce from 'lodash/debounce'\nimport useChangeLanguage from 'utils/useChangeLanguage'\nimport { useMediaQuery } from '@material-ui/core'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport usePreviousState from 'utils/usePreviousState'\nimport { useQuery } from 'react-query'\nimport { getTorrents } from 'utils/Utils'\nimport parseTorrent from 'parse-torrent'\nimport { ButtonWrapper } from 'style/DialogStyles'\nimport { StyledDialog, StyledHeader } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nimport { checkImageURL, getMoviePosters, checkTorrentSource, parseTorrentTitle } from './helpers'\nimport { Content } from './style'\nimport RightSideComponent from './RightSideComponent'\nimport LeftSideComponent from './LeftSideComponent'\n\nexport default function AddDialog({\n handleClose,\n hash: originalHash,\n title: originalTitle,\n name: originalName,\n poster: originalPoster,\n}) {\n const { t } = useTranslation()\n const isEditMode = !!originalHash\n const [torrentSource, setTorrentSource] = useState(originalHash || '')\n const [title, setTitle] = useState(originalTitle || '')\n const [originalTorrentTitle, setOriginalTorrentTitle] = useState('')\n const [parsedTitle, setParsedTitle] = useState('')\n const [posterUrl, setPosterUrl] = useState(originalPoster || '')\n const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false)\n const [isTorrentSourceCorrect, setIsTorrentSourceCorrect] = useState(false)\n const [isHashAlreadyExists, setIsHashAlreadyExists] = useState(false)\n const [posterList, setPosterList] = useState()\n const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(isEditMode)\n const [currentLang] = useChangeLanguage()\n const [selectedFile, setSelectedFile] = useState()\n const [posterSearchLanguage, setPosterSearchLanguage] = useState(currentLang === 'ru' ? 'ru' : 'en')\n const [isSaving, setIsSaving] = useState(false)\n const [skipDebounce, setSkipDebounce] = useState(false)\n const [isCustomTitleEnabled, setIsCustomTitleEnabled] = useState(false)\n const [currentSourceHash, setCurrentSourceHash] = useState()\n\n const ref = useOnStandaloneAppOutsideClick(handleClose)\n\n const { data: torrents } = useQuery('torrents', getTorrents, { retry: 1, refetchInterval: 1000 })\n\n useEffect(() => {\n // getting hash from added torrent source\n parseTorrent.remote(selectedFile || torrentSource, (_, { infoHash } = {}) => setCurrentSourceHash(infoHash))\n }, [selectedFile, torrentSource])\n\n useEffect(() => {\n // checking if torrent already exists in DB\n if (!setCurrentSourceHash) return\n\n const allHashes = torrents.map(({ hash }) => hash)\n setIsHashAlreadyExists(allHashes.includes(currentSourceHash))\n }, [currentSourceHash, torrents])\n\n useEffect(() => {\n // closing dialog when torrent successfully added in DB\n if (!isSaving) return\n\n const allHashes = torrents.map(({ hash }) => hash)\n allHashes.includes(currentSourceHash) && handleClose()\n // FIXME! check api reply on add links\n const linkRegex = /^(http(s?)):\\/\\/.*/i\n torrentSource.match(linkRegex) !== null && handleClose()\n }, [isSaving, torrents, torrentSource, currentSourceHash, handleClose])\n\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n\n const updateTitleFromSource = useCallback(() => {\n parseTorrentTitle(selectedFile || torrentSource, ({ parsedTitle, originalName }) => {\n if (!originalName) return\n\n setSkipDebounce(true)\n setTitle('')\n setIsCustomTitleEnabled(false)\n setOriginalTorrentTitle(originalName)\n setParsedTitle(parsedTitle)\n })\n }, [selectedFile, torrentSource])\n\n useEffect(() => {\n if (!selectedFile && !torrentSource) {\n setTitle('')\n setOriginalTorrentTitle('')\n setParsedTitle('')\n setIsCustomTitleEnabled(false)\n setPosterList()\n removePoster()\n setIsUserInteractedWithPoster(false)\n }\n }, [selectedFile, torrentSource])\n\n const removePoster = () => {\n setIsPosterUrlCorrect(false)\n setPosterUrl('')\n }\n\n useEffect(() => {\n if (originalHash) {\n checkImageURL(posterUrl).then(correctImage => {\n correctImage ? setIsPosterUrlCorrect(true) : removePoster()\n })\n }\n // This is needed only on mount. Do not remove line below\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const posterSearch = useMemo(\n () =>\n (movieName, language, { shouldRefreshMainPoster = false } = {}) => {\n if (!movieName) {\n setPosterList()\n removePoster()\n return\n }\n\n getMoviePosters(movieName, language).then(urlList => {\n if (urlList) {\n setPosterList(urlList)\n if (!shouldRefreshMainPoster && isUserInteractedWithPoster) return\n\n const [firstPoster] = urlList\n checkImageURL(firstPoster).then(correctImage => {\n if (correctImage) {\n setIsPosterUrlCorrect(true)\n setPosterUrl(firstPoster)\n } else removePoster()\n })\n } else {\n setPosterList()\n if (isUserInteractedWithPoster) return\n\n removePoster()\n }\n })\n },\n [isUserInteractedWithPoster],\n )\n\n const delayedPosterSearch = useMemo(() => debounce(posterSearch, 700), [posterSearch])\n\n const prevTorrentSourceState = usePreviousState(torrentSource)\n\n useEffect(() => {\n const isCorrectSource = checkTorrentSource(torrentSource)\n if (!isCorrectSource) return setIsTorrentSourceCorrect(false)\n\n setIsTorrentSourceCorrect(true)\n\n // if torrentSource is updated then we are getting title from the source\n const torrentSourceChanged = torrentSource !== prevTorrentSourceState\n if (!torrentSourceChanged) return\n\n updateTitleFromSource()\n }, [prevTorrentSourceState, selectedFile, torrentSource, updateTitleFromSource])\n\n const prevTitleState = usePreviousState(title)\n\n useEffect(() => {\n // if title exists and title was changed then search poster.\n const titleChanged = title !== prevTitleState\n if (!titleChanged && !parsedTitle) return\n\n if (skipDebounce) {\n posterSearch(title || parsedTitle, posterSearchLanguage)\n setSkipDebounce(false)\n } else if (!title) {\n delayedPosterSearch.cancel()\n\n if (parsedTitle) {\n posterSearch(parsedTitle, posterSearchLanguage)\n } else {\n !isUserInteractedWithPoster && removePoster()\n }\n } else {\n delayedPosterSearch(title, posterSearchLanguage)\n }\n }, [\n title,\n parsedTitle,\n prevTitleState,\n delayedPosterSearch,\n posterSearch,\n posterSearchLanguage,\n skipDebounce,\n isUserInteractedWithPoster,\n ])\n\n const handleSave = () => {\n setIsSaving(true)\n\n if (isEditMode) {\n axios\n .post(torrentsHost(), {\n action: 'set',\n hash: originalHash,\n title: title || originalName,\n poster: posterUrl,\n })\n .finally(handleClose)\n } else if (selectedFile) {\n // file save\n const data = new FormData()\n data.append('save', 'true')\n data.append('file', selectedFile)\n title && data.append('title', title)\n posterUrl && data.append('poster', posterUrl)\n axios.post(torrentUploadHost(), data).catch(handleClose)\n } else {\n // link save\n axios\n .post(torrentsHost(), { action: 'add', link: torrentSource, title, poster: posterUrl, save_to_db: true })\n .catch(handleClose)\n }\n }\n\n return (\n \n {t(isEditMode ? 'EditTorrent' : 'AddNewTorrent')}\n\n \n {!isEditMode && (\n \n )}\n\n \n \n\n \n \n\n \n \n \n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const TorrentCard = styled.div`\n ${({\n theme: {\n torrentCard: { cardPrimaryColor },\n },\n }) => css`\n border-radius: 5px;\n display: grid;\n grid-template-columns: 120px 260px 1fr;\n grid-template-rows: 180px;\n grid-template-areas: 'poster description buttons';\n gap: 10px;\n padding: 10px;\n background: ${cardPrimaryColor};\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-areas:\n 'poster description'\n 'buttons buttons';\n\n grid-template-columns: 70px 1fr;\n grid-template-rows: 110px max-content;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 60px 1fr;\n grid-template-rows: 90px max-content;\n }\n `}\n`\n\nexport const TorrentCardPoster = styled.div`\n grid-area: poster;\n border-radius: 5px;\n overflow: hidden;\n text-align: center;\n cursor: pointer;\n transition: 0.2s;\n position: relative;\n\n :hover {\n filter: brightness(0.7);\n }\n\n ${({\n isPoster,\n theme: {\n torrentCard: { cardSecondaryColor, accentCardColor },\n },\n }) =>\n isPoster\n ? css`\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 5px;\n }\n `\n : css`\n display: grid;\n place-items: center;\n background: ${cardSecondaryColor};\n border: 1px solid ${accentCardColor};\n\n svg {\n transform: translateY(-3px);\n }\n `};\n\n @media (max-width: 1260px), (max-height: 500px) {\n svg {\n width: 50%;\n }\n }\n`\n\nexport const TorrentCardButtons = styled.div`\n grid-area: buttons;\n display: grid;\n gap: 10px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: repeat(4, 1fr);\n }\n\n @media (max-width: 340px) {\n gap: 5px;\n }\n`\nexport const TorrentCardDescription = styled.div`\n ${({\n theme: {\n torrentCard: { cardSecondaryColor, accentCardColor },\n },\n }) => css`\n grid-area: description;\n background: ${cardSecondaryColor};\n border-radius: 5px;\n padding: 5px;\n display: grid;\n grid-template-rows: 55% 1fr;\n gap: 10px;\n\n @media (max-width: 770px) {\n grid-template-rows: 60% 1fr;\n gap: 3px;\n }\n\n .description-title-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .description-section-name {\n text-transform: uppercase;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.4px;\n color: ${accentCardColor};\n\n @media (max-width: 770px) {\n font-size: 0.5rem;\n line-height: 10px;\n }\n }\n\n .description-status-wrapper {\n display: inline-block;\n height: 8px;\n margin-inline-end: 4px;\n vertical-align: baseline;\n }\n\n .description-torrent-title {\n overflow: auto;\n word-break: break-all;\n }\n\n .description-statistics-wrapper {\n display: grid;\n grid-template-columns: 80px 80px 1fr;\n align-self: end;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: 70px 70px 1fr;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 65px 65px 1fr;\n }\n\n @media (max-width: 700px) {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .description-statistics-element-wrapper {\n }\n\n .description-statistics-element-value {\n margin-bottom: 10px;\n margin-left: 0;\n word-break: break-all;\n\n @media (max-width: 1260px), (max-height: 500px) {\n font-size: 0.7rem;\n margin-bottom: 0;\n margin-left: 0;\n }\n }\n\n .description-torrent-title,\n .description-statistics-element-value {\n @media (max-width: 770px) {\n font-size: 0.6rem;\n }\n\n @media (max-width: 410px) {\n font-size: 10px;\n }\n }\n `}\n`\n\nexport const StyledButton = styled.button`\n ${({\n theme: {\n torrentCard: { buttonBGColor, accentCardColor },\n },\n }) => css`\n border-radius: 5px;\n border: none;\n cursor: pointer;\n transition: 0.2s;\n display: flex;\n align-items: center;\n text-transform: uppercase;\n background: ${buttonBGColor};\n color: #fff;\n font-size: 0.9rem;\n letter-spacing: 0.009em;\n padding: 0 12px;\n svg {\n width: 20px;\n }\n\n :hover {\n background: ${accentCardColor};\n }\n\n > :first-child {\n margin-right: 10px;\n }\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 7px 10px;\n justify-content: center;\n font-size: 0.8rem;\n\n svg {\n display: none;\n }\n }\n\n @media (max-width: 770px) {\n font-size: 0.7rem;\n }\n\n @media (max-width: 420px) {\n font-size: 0.6rem;\n padding: 7px 5px;\n }\n `}\n`\n\nexport const StatusIndicators = styled.div`\n ${({ color }) => css`\n height: 8px;\n width: 8px;\n background-color: ${color};\n border-radius: 50%;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n `}\n`\n","import { forwardRef, memo, useState } from 'react'\nimport {\n UnfoldMore as UnfoldMoreIcon,\n PlayArrow as PlayArrowIcon,\n Close as CloseIcon,\n Delete as DeleteIcon,\n} from '@material-ui/icons'\nimport { getPeerString, humanizeSize, humanizeSpeed, removeRedundantCharacters } from 'utils/Utils'\nimport { playlistTorrHost, torrentsHost } from 'utils/Hosts'\nimport { NoImageIcon } from 'icons'\nimport DialogTorrentDetailsContent from 'components/DialogTorrentDetailsContent'\nimport Dialog from '@material-ui/core/Dialog'\nimport Slide from '@material-ui/core/Slide'\nimport { Button, DialogActions, DialogTitle, useMediaQuery, useTheme } from '@material-ui/core'\nimport axios from 'axios'\nimport ptt from 'parse-torrent-title'\nimport { useTranslation } from 'react-i18next'\nimport AddDialog from 'components/Add/AddDialog'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\nimport { GETTING_INFO, IN_DB, CLOSED, PRELOAD, WORKING } from 'torrentStates'\n\nimport {\n StatusIndicators,\n StyledButton,\n TorrentCard,\n TorrentCardButtons,\n TorrentCardDescription,\n TorrentCardPoster,\n} from './style'\n\nconst Transition = forwardRef((props, ref) => )\n\nconst Torrent = ({ torrent }) => {\n const { t } = useTranslation()\n const [isDetailedInfoOpened, setIsDetailedInfoOpened] = useState(false)\n const [isDeleteTorrentOpened, setIsDeleteTorrentOpened] = useState(false)\n\n const theme = useTheme()\n const fullScreen = useMediaQuery(theme.breakpoints.down('md'))\n\n const openDetailedInfo = () => setIsDetailedInfoOpened(true)\n const closeDetailedInfo = () => setIsDetailedInfoOpened(false)\n const openDeleteTorrentAlert = () => setIsDeleteTorrentOpened(true)\n const closeDeleteTorrentAlert = () => setIsDeleteTorrentOpened(false)\n\n const { title, name, poster, torrent_size: torrentSize, download_speed: downloadSpeed, hash, stat } = torrent\n\n const dropTorrent = () => axios.post(torrentsHost(), { action: 'drop', hash })\n const deleteTorrent = () => axios.post(torrentsHost(), { action: 'rem', hash })\n\n const getParsedTitle = () => {\n const parse = key => ptt.parse(title || '')?.[key] || ptt.parse(name || '')?.[key]\n\n const titleStrings = []\n\n let parsedTitle = removeRedundantCharacters(parse('title'))\n const parsedYear = parse('year')\n const parsedResolution = parse('resolution')\n if (parsedTitle) titleStrings.push(parsedTitle)\n if (parsedYear) titleStrings.push(`(${parsedYear})`)\n if (parsedResolution) titleStrings.push(`[${parsedResolution}]`)\n parsedTitle = titleStrings.join(' ')\n return { parsedTitle }\n }\n const { parsedTitle } = getParsedTitle()\n\n const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)\n const handleClickOpenEditDialog = () => setIsEditDialogOpen(true)\n const handleCloseEditDialog = () => setIsEditDialogOpen(false)\n\n const fullPlaylistLink = `${playlistTorrHost()}/${encodeURIComponent(parsedTitle || 'file')}.m3u?link=${hash}&m3u`\n\n const detailedInfoDialogRef = useOnStandaloneAppOutsideClick(closeDetailedInfo)\n\n return (\n <>\n \n \n {poster ?
: }\n \n\n \n \n \n {t('Details')}\n \n\n {\n window.open(fullPlaylistLink, '_blank')\n }}\n >\n \n {t('Playlist')}\n \n\n dropTorrent(torrent)}>\n \n {t('Drop')}\n \n\n \n \n {t('Delete')}\n \n \n\n \n \n
{t('Name')}
\n
{parsedTitle}
\n
\n\n \n
\n
\n \n {t('Size')}\n
\n
{torrentSize > 0 && humanizeSize(torrentSize)}
\n
\n\n
\n
{t('Speed')}
\n
\n {downloadSpeed > 0 ? humanizeSpeed(downloadSpeed) : '---'}\n
\n
\n\n
\n
{t('Peers')}
\n
{getPeerString(torrent) || '---'}
\n
\n
\n \n \n\n \n \n \n\n \n\n {isEditDialogOpen && (\n \n )}\n >\n )\n}\n\nexport const StatusIndicator = ({ stat }) => {\n const { t } = useTranslation()\n\n const values = {\n [GETTING_INFO]: t('TorrentGettingInfo'),\n [PRELOAD]: t('TorrentPreload'),\n [WORKING]: t('TorrentWorking'),\n [CLOSED]: t('TorrentClosed'),\n [IN_DB]: t('TorrentInDb'),\n }\n\n const colors = {\n [GETTING_INFO]: '#2196F3',\n [PRELOAD]: '#FFC107',\n [WORKING]: '#CDDC39',\n [CLOSED]: '#E57373',\n [IN_DB]: '#9E9E9E',\n }\n\n return (\n \n \n \n )\n}\n\nexport default memo(Torrent)\n","import { IconButton } from '@material-ui/core'\nimport { rgba } from 'polished'\nimport { standaloneMedia } from 'style/standaloneMedia'\nimport styled, { css } from 'styled-components'\n\nimport { pwaFooterHeight } from './PWAFooter/style'\n\nexport const AppWrapper = styled.div`\n ${({\n theme: {\n app: { appSecondaryColor },\n },\n }) => css`\n height: 100%;\n background: ${rgba(appSecondaryColor, 0.8)};\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-rows: 60px 1fr;\n grid-template-areas:\n 'head head'\n 'side content';\n\n ${standaloneMedia(css`\n grid-template-columns: 0 1fr;\n grid-template-rows: ${pwaFooterHeight}px 1fr ${pwaFooterHeight}px;\n height: 100vh;\n `)}\n `}\n`\n\nexport const CenteredGrid = styled.div`\n display: grid;\n place-items: center;\n\n ${standaloneMedia(css`\n height: 100vh;\n width: 100vw;\n `)}\n`\n\nexport const AppHeader = styled.div`\n ${({ theme: { primary } }) => css`\n background: ${primary};\n color: #fff;\n grid-area: head;\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n grid-template-columns: repeat(2, max-content) 1fr;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 0 16px;\n z-index: 3;\n\n ${standaloneMedia(css`\n grid-template-columns: max-content 1fr;\n align-items: end;\n padding: 7px 16px;\n position: fixed;\n width: 100%;\n height: ${pwaFooterHeight}px;\n `)}\n `}\n`\nexport const AppSidebarStyle = styled.div`\n ${({\n isDrawerOpen,\n theme: {\n app: { appSecondaryColor, sidebarBGColor, sidebarFillColor },\n },\n }) => css`\n grid-area: side;\n width: ${isDrawerOpen ? '400%' : '100%'};\n z-index: 2;\n overflow-x: hidden;\n transition: width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms;\n border-right: 1px solid ${rgba(appSecondaryColor, 0.12)};\n background: ${sidebarBGColor};\n color: ${sidebarFillColor};\n white-space: nowrap;\n\n svg {\n fill: ${sidebarFillColor};\n }\n\n ${standaloneMedia(css`\n display: none;\n `)}\n `}\n`\nexport const TorrentListWrapper = styled.div`\n grid-area: content;\n padding: 20px;\n overflow: auto;\n\n display: grid;\n place-content: start;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 570px));\n gap: 20px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 10px;\n gap: 15px;\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 1100px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 700px) {\n grid-template-columns: 1fr;\n }\n\n ${standaloneMedia(css`\n height: calc(100vh - ${pwaFooterHeight}px);\n padding-bottom: 105px;\n `)}\n`\n\nexport const HeaderToggle = styled.div`\n ${({\n theme: {\n app: { headerToggleColor },\n },\n }) => css`\n cursor: pointer;\n border-radius: 50%;\n background: ${headerToggleColor};\n height: 35px;\n width: 35px;\n transition: all 0.2s;\n font-weight: 600;\n display: grid;\n place-items: center;\n color: #fff;\n\n :hover {\n background: ${rgba(headerToggleColor, 0.7)};\n }\n\n @media (max-width: 700px) {\n height: 28px;\n width: 28px;\n font-size: 12px;\n\n svg {\n width: 17px;\n }\n }\n `}\n`\n\nexport const StyledIconButton = styled(IconButton)`\n margin-right: 6px;\n\n ${standaloneMedia(css`\n display: none;\n `)}\n`\n","import styled, { css } from 'styled-components'\n\nexport default styled.div`\n ${({\n isButton,\n theme: {\n addDialog: { notificationSuccessBGColor, languageSwitchBGColor },\n },\n }) => css`\n display: grid;\n place-items: center;\n padding: 20px 40px;\n border-radius: 5px;\n\n ${isButton &&\n css`\n background: ${notificationSuccessBGColor};\n transition: 0.2s;\n cursor: pointer;\n\n :hover {\n background: ${languageSwitchBGColor};\n }\n `}\n\n lord-icon {\n width: 200px;\n height: 200px;\n }\n\n .icon-label {\n font-size: 20px;\n }\n `}\n`\n","import { useTheme } from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\n\nimport IconWrapper from './style'\n\nexport default function NoServerConnection() {\n const { t } = useTranslation()\n const primary = useTheme().palette.primary.main\n\n return (\n \n \n {t('Offline')}
\n \n )\n}\n","import { useTheme } from '@material-ui/core'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport AddDialog from '../Add/AddDialog'\nimport IconWrapper from './style'\n\nexport default function AddFirstTorrent() {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n const primary = useTheme().palette.primary.main\n\n return (\n <>\n handleClickOpen(true)} isButton>\n \n {t('NoTorrentsAdded')}
\n \n\n {isDialogOpen && }\n >\n )\n}\n","import TorrentCard from 'components/TorrentCard'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { TorrentListWrapper, CenteredGrid } from 'components/App/style'\n\nimport NoServerConnection from './NoServerConnection'\nimport AddFirstTorrent from './AddFirstTorrent'\n\nexport default function TorrentList({ isOffline, isLoading, sortABC, torrents }) {\n if (isLoading || isOffline || !torrents.length) {\n return (\n \n {isOffline ? (\n \n ) : isLoading ? (\n \n ) : (\n !torrents.length && \n )}\n \n )\n }\n\n return sortABC ? (\n \n {torrents\n .sort((a, b) => a.title > b.title)\n .map(torrent => (\n \n ))}\n \n ) : (\n \n {torrents.map(torrent => (\n \n ))}\n \n )\n}\n","// import ListItem from '@material-ui/core/ListItem'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\n// import List from '@material-ui/core/List'\nimport ButtonGroup from '@material-ui/core/ButtonGroup'\nimport Button from '@material-ui/core/Button'\nimport { useTranslation } from 'react-i18next'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\n// const donateFrame = ''\n\nexport default function DonateDialog({ onClose }) {\n const { t } = useTranslation()\n const ref = useOnStandaloneAppOutsideClick(onClose)\n\n return (\n \n {t('Donate')}\n \n {/* */}\n {/* */}\n \n \n \n \n {/* */}\n \n {/* */}\n {/* */}\n {/* eslint-disable-next-line react/no-danger */}\n {/* */}\n {/* */}\n {/*
*/}\n \n \n \n \n \n )\n}\n","import { useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport Snackbar from '@material-ui/core/Snackbar'\nimport IconButton from '@material-ui/core/IconButton'\nimport CreditCardIcon from '@material-ui/icons/CreditCard'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport { standaloneMedia } from 'style/standaloneMedia'\n\nimport DonateDialog from './DonateDialog'\n\nconst StyledSnackbar = styled(Snackbar)`\n ${standaloneMedia('margin-bottom: 90px')};\n`\n\nexport default function DonateSnackbar() {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const [snackbarOpen, setSnackbarOpen] = useState(true)\n\n const disableSnackbar = () => {\n setSnackbarOpen(false)\n localStorage.setItem('snackbarIsClosed', true)\n }\n\n return (\n <>\n {open && setOpen(false)} />}\n\n \n \n\n \n \n \n >\n }\n />\n >\n )\n}\n","import { createGlobalStyle, css } from 'styled-components'\n\nimport { standaloneMedia } from './standaloneMedia'\n\nexport default createGlobalStyle`\n *,\n *::before,\n *::after { \n margin: 0;\n padding: 0;\n box-sizing: inherit;\n }\n\n body { \n font-family: \"Open Sans\", sans-serif;\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.1px;\n -webkit-tap-highlight-color: transparent;\n\n\n ${standaloneMedia(css`\n height: 100vh;\n `)}\n }\n\n button {\n font-family: \"Open Sans\", sans-serif;\n letter-spacing: -0.1px;\n }\n`\n","import { useState } from 'react'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport LibraryAddIcon from '@material-ui/icons/LibraryAdd'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useTranslation } from 'react-i18next'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport AddDialog from './AddDialog'\nimport { StyledPWAAddButton } from './style'\n\nexport default function AddDialogButton({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n\n return (\n \n
\n {isStandaloneApp ? (\n \n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n {isDialogOpen &&
}\n
\n )\n}\n","import styled, { css } from 'styled-components'\nimport { mainColors } from 'style/colors'\nimport { StyledHeader } from 'style/CustomMaterialUiStyles'\n\nexport const cacheBeforeReaderColor = '#b3dfc9'\nexport const cacheAfterReaderColor = mainColors.light.primary\n\nexport const SettingsHeader = styled(StyledHeader)`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 340px) {\n grid-auto-flow: row;\n }\n`\n\nexport const FooterSection = styled.div`\n ${({\n theme: {\n settingsDialog: { footerBG },\n },\n }) => css`\n padding: 20px;\n display: grid;\n grid-auto-flow: column;\n justify-content: end;\n gap: 10px;\n align-items: center;\n background: ${footerBG};\n\n @media (max-width: 500px) {\n grid-auto-flow: row;\n justify-content: stretch;\n }\n `}\n`\nexport const Divider = styled.div`\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n`\n\nexport const Content = styled.div`\n ${({\n isLoading,\n theme: {\n settingsDialog: { contentBG },\n },\n }) => css`\n background: ${contentBG};\n overflow: auto;\n flex: 1;\n\n ${isLoading &&\n css`\n min-height: 500px;\n display: grid;\n place-items: center;\n `}\n `}\n`\n\nexport const PreloadCacheValue = styled.div`\n ${({ color }) => css`\n display: grid;\n grid-template-columns: max-content 100px 1fr;\n gap: 10px;\n align-items: flex-start;\n\n :not(:last-child) {\n margin-bottom: 5px;\n }\n\n :before {\n content: '';\n background: ${color};\n width: 16px;\n height: 16px;\n border-radius: 50%;\n margin-top: 2px;\n }\n `}\n`\n\nexport const MainSettingsContent = styled.div`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 40px;\n padding: 20px;\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n`\nexport const SecondarySettingsContent = styled.div`\n padding: 20px;\n`\n\nexport const StorageButton = styled.div`\n ${({ small, selected }) => css`\n transition: 0.2s;\n cursor: default;\n text-align: center;\n\n ${!selected &&\n css`\n cursor: pointer;\n\n :hover {\n filter: brightness(0.8);\n }\n `}\n\n ${small\n ? css`\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 20px;\n align-items: center;\n justify-items: start;\n margin-bottom: 20px;\n `\n : css`\n display: grid;\n place-items: center;\n gap: 10px;\n `}\n `}\n`\n\nexport const StorageIconWrapper = styled.div`\n ${({ selected, small }) => css`\n width: ${small ? '60px' : '150px'};\n height: ${small ? '60px' : '150px'};\n border-radius: 50%;\n background: ${selected ? '#323637' : '#dee3e5'};\n\n svg {\n transform: rotate(-45deg) scale(0.75);\n }\n\n @media (max-width: 930px) {\n width: ${small ? '50px' : '90px'};\n height: ${small ? '50px' : '90px'};\n }\n `}\n`\n\nexport const CacheStorageSelector = styled.div`\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-template-areas: 'label label';\n place-items: center;\n\n @media (max-width: 930px) {\n justify-content: start;\n column-gap: 30px;\n }\n`\n\nexport const SettingSectionLabel = styled.div`\n font-size: 25px;\n padding-bottom: 20px;\n\n small {\n display: block;\n font-size: 11px;\n }\n`\n\nexport const PreloadCachePercentage = styled.div.attrs(({ value }) => ({\n // this block is here according to styled-components recomendation about fast changable components\n style: {\n background: `linear-gradient(to right, ${cacheBeforeReaderColor} 0%, ${cacheBeforeReaderColor} ${value}%, ${cacheAfterReaderColor} ${value}%, ${cacheAfterReaderColor} 100%)`,\n },\n}))`\n ${({ label, preloadCachePercentage }) => css`\n border: 1px solid #323637;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n margin-bottom: 10px;\n position: relative;\n\n :before {\n content: '${label}';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n\n :after {\n content: '';\n width: ${preloadCachePercentage}%;\n height: 100%;\n background: #323637;\n position: absolute;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n filter: opacity(0.15);\n }\n `}\n`\n","export default {\n CacheSize: 64,\n ReaderReadAHead: 95,\n PreloadCache: 50,\n UseDisk: false,\n TorrentsSavePath: '',\n RemoveCacheOnDrop: false,\n ForceEncrypt: false,\n RetrackersMode: 1,\n TorrentDisconnectTimeout: 30,\n EnableDebug: false,\n EnableDLNA: false,\n FriendlyName: '',\n EnableRutorSearch: false,\n EnableIPv6: false,\n DisableTCP: false,\n DisableUTP: false,\n DisableUPNP: false,\n DisableDHT: false,\n DisablePEX: false,\n DisableUpload: false,\n DownloadRateLimit: 0,\n UploadRateLimit: 0,\n ConnectionsLimit: 25,\n PeersListenPort: 0,\n}\n","export const a11yProps = index => ({\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n})\n\nexport const TabPanel = ({ children, value, index, ...other }) => (\n \n {value === index && <>{children}>}\n
\n)\n","import { Grid, OutlinedInput, Slider } from '@material-ui/core'\n\nexport default function SliderInput({\n isProMode,\n title,\n value,\n setValue,\n sliderMin,\n sliderMax,\n inputMin,\n inputMax,\n step = 1,\n onBlurCallback,\n}) {\n const onBlur = ({ target: { value } }) => {\n if (value < inputMin) return setValue(inputMin)\n if (value > inputMax) return setValue(inputMax)\n\n onBlurCallback && onBlurCallback(value)\n }\n\n const onInputChange = ({ target: { value } }) => setValue(value === '' ? '' : Number(value))\n const onSliderChange = (_, newValue) => setValue(newValue)\n\n return (\n <>\n {title}
\n\n \n \n \n \n\n {isProMode && (\n \n \n \n )}\n \n >\n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { USBIcon, RAMIcon } from 'icons'\nimport { FormControlLabel, Switch } from '@material-ui/core'\nimport TextField from '@material-ui/core/TextField'\n\nimport {\n PreloadCacheValue,\n MainSettingsContent,\n StorageButton,\n StorageIconWrapper,\n CacheStorageSelector,\n SettingSectionLabel,\n PreloadCachePercentage,\n cacheBeforeReaderColor,\n cacheAfterReaderColor,\n} from './style'\nimport SliderInput from './SliderInput'\n\nconst CacheStorageLocationLabel = ({ style }) => {\n const { t } = useTranslation()\n\n return (\n \n {t('SettingsDialog.CacheStorageLocation')}\n {t('SettingsDialog.UseDiskDesc')}\n \n )\n}\n\nexport default function PrimarySettingsComponent({\n settings,\n inputForm,\n cachePercentage,\n preloadCachePercentage,\n cacheSize,\n isProMode,\n setCacheSize,\n setCachePercentage,\n setPreloadCachePercentage,\n updateSettings,\n}) {\n const { t } = useTranslation()\n const { UseDisk, TorrentsSavePath, RemoveCacheOnDrop } = settings || {}\n const preloadCacheSize = Math.round((cacheSize / 100) * preloadCachePercentage)\n\n return (\n \n \n
{t('SettingsDialog.CacheSettings')}\n\n
\n\n
\n \n {100 - cachePercentage}% ({Math.round((cacheSize / 100) * (100 - cachePercentage))} {t('MB')})\n
\n\n {t('SettingsDialog.CacheBeforeReaderDesc')}
\n \n\n
\n \n {cachePercentage}% ({Math.round((cacheSize / 100) * cachePercentage)} {t('MB')})\n
\n\n {t('SettingsDialog.CacheAfterReaderDesc')}
\n \n\n
\n\n
setCacheSize(Math.round(value / 4) * 4)}\n />\n\n \n\n \n \n\n {UseDisk ? (\n \n
\n\n
\n
updateSettings({ UseDisk: false })}>\n \n \n \n\n {t('SettingsDialog.RAM')}
\n \n\n
\n \n \n \n\n {t('SettingsDialog.Disk')}
\n \n
\n\n
\n }\n label={t('SettingsDialog.RemoveCacheOnDrop')}\n labelPlacement='start'\n />\n
\n {t('SettingsDialog.RemoveCacheOnDropDesc')}\n
\n
\n
\n
\n ) : (\n \n \n\n \n \n \n \n\n {t('SettingsDialog.RAM')}
\n \n\n updateSettings({ UseDisk: true })}>\n \n \n \n\n {t('SettingsDialog.Disk')}
\n \n \n )}\n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport TextField from '@material-ui/core/TextField'\nimport {\n FormControlLabel,\n FormGroup,\n FormHelperText,\n InputAdornment,\n InputLabel,\n Select,\n Switch,\n} from '@material-ui/core'\n\nimport { SecondarySettingsContent, SettingSectionLabel } from './style'\n\nexport default function SecondarySettingsComponent({ settings, inputForm }) {\n const { t } = useTranslation()\n\n const {\n RetrackersMode,\n TorrentDisconnectTimeout,\n EnableDebug,\n EnableDLNA,\n EnableIPv6,\n FriendlyName,\n EnableRutorSearch,\n ForceEncrypt,\n DisableTCP,\n DisableUTP,\n DisableUPNP,\n DisableDHT,\n DisablePEX,\n DisableUpload,\n DownloadRateLimit,\n UploadRateLimit,\n ConnectionsLimit,\n PeersListenPort,\n } = settings || {}\n\n return (\n \n {t('SettingsDialog.AdditionalSettings')}\n \n }\n label='IPv6'\n labelPlacement='start'\n />\n {t('SettingsDialog.EnableIPv6Hint')}\n \n \n }\n label='TCP (Transmission Control Protocol)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableTCPHint')}\n \n \n }\n label='μTP (Micro Transport Protocol)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableUTPHint')}\n \n \n }\n label='PEX (Peer Exchange)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisablePEXHint')}\n \n \n }\n label={t('SettingsDialog.ForceEncrypt')}\n labelPlacement='start'\n />\n {t('SettingsDialog.ForceEncryptHint')}\n \n {t('Seconds')},\n }}\n value={TorrentDisconnectTimeout}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n
\n \n }\n label={t('SettingsDialog.DHT')}\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableDHTHint')}\n \n {t('Kilobytes')},\n }}\n value={DownloadRateLimit}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n }\n label={t('SettingsDialog.Upload')}\n labelPlacement='start'\n />\n {t('SettingsDialog.UploadHint')}\n \n {t('Kilobytes')},\n }}\n value={UploadRateLimit}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n \n }\n label='UPnP (Universal Plug and Play)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableUPNPHint')}\n \n }\n label={t('SettingsDialog.DLNA')}\n labelPlacement='start'\n />\n \n \n }\n label={t('SettingsDialog.EnableRutorSearch')}\n labelPlacement='start'\n />\n {t('SettingsDialog.EnableRutorSearchHint')}\n \n }\n label={t('SettingsDialog.EnableDebug')}\n labelPlacement='start'\n />\n
\n {t('SettingsDialog.RetrackersMode')}\n \n
\n \n )\n}\n","import { FormControlLabel, FormGroup, FormHelperText, Switch } from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\n\nimport { SecondarySettingsContent, SettingSectionLabel } from './style'\n\nexport default function MobileAppSettings({ isVlcUsed, setIsVlcUsed }) {\n const { t } = useTranslation()\n\n return (\n \n {t('SettingsDialog.MobileAppSettings')}\n \n setIsVlcUsed(prev => !prev)} color='secondary' />}\n label={t('SettingsDialog.UseVLC')}\n labelPlacement='start'\n />\n {t('SettingsDialog.UseVLCHint')}\n \n \n )\n}\n","import axios from 'axios'\nimport Button from '@material-ui/core/Button'\nimport Switch from '@material-ui/core/Switch'\nimport { FormControlLabel, useMediaQuery, useTheme } from '@material-ui/core'\nimport { settingsHost } from 'utils/Hosts'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport AppBar from '@material-ui/core/AppBar'\nimport Tabs from '@material-ui/core/Tabs'\nimport Tab from '@material-ui/core/Tab'\nimport SwipeableViews from 'react-swipeable-views'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport { SettingsHeader, FooterSection, Content } from './style'\nimport defaultSettings from './defaultSettings'\nimport { a11yProps, TabPanel } from './tabComponents'\nimport PrimarySettingsComponent from './PrimarySettingsComponent'\nimport SecondarySettingsComponent from './SecondarySettingsComponent'\nimport MobileAppSettings from './MobileAppSettings'\n\nexport default function SettingsDialog({ handleClose }) {\n const { t } = useTranslation()\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n const { direction } = useTheme()\n\n const [settings, setSettings] = useState()\n const [selectedTab, setSelectedTab] = useState(0)\n const [cacheSize, setCacheSize] = useState(32)\n const [cachePercentage, setCachePercentage] = useState(40)\n const [preloadCachePercentage, setPreloadCachePercentage] = useState(0)\n const [isProMode, setIsProMode] = useState(JSON.parse(localStorage.getItem('isProMode')) || false)\n const [isVlcUsed, setIsVlcUsed] = useState(JSON.parse(localStorage.getItem('isVlcUsed')) ?? false)\n\n useEffect(() => {\n axios.post(settingsHost(), { action: 'get' }).then(({ data }) => {\n setSettings({ ...data, CacheSize: data.CacheSize / (1024 * 1024) })\n })\n }, [])\n\n const ref = useOnStandaloneAppOutsideClick(handleClose)\n\n const handleSave = () => {\n handleClose()\n const sets = JSON.parse(JSON.stringify(settings))\n sets.CacheSize = cacheSize * 1024 * 1024\n sets.ReaderReadAHead = cachePercentage\n sets.PreloadCache = preloadCachePercentage\n axios.post(settingsHost(), { action: 'set', sets })\n localStorage.setItem('isVlcUsed', isVlcUsed)\n }\n\n const inputForm = ({ target: { type, value, checked, id } }) => {\n const sets = JSON.parse(JSON.stringify(settings))\n\n if (type === 'number' || type === 'select-one') {\n sets[id] = Number(value)\n } else if (type === 'checkbox') {\n if (\n id === 'DisableTCP' ||\n id === 'DisableUTP' ||\n id === 'DisableUPNP' ||\n id === 'DisableDHT' ||\n id === 'DisablePEX' ||\n id === 'DisableUpload'\n )\n sets[id] = Boolean(!checked)\n else sets[id] = Boolean(checked)\n } else if (type === 'url' || type === 'text') {\n sets[id] = value\n }\n setSettings(sets)\n }\n\n const { CacheSize, ReaderReadAHead, PreloadCache } = settings || {}\n\n useEffect(() => {\n if (isNaN(CacheSize) || isNaN(ReaderReadAHead) || isNaN(PreloadCache)) return\n\n setCacheSize(CacheSize)\n setCachePercentage(ReaderReadAHead)\n setPreloadCachePercentage(PreloadCache)\n }, [CacheSize, ReaderReadAHead, PreloadCache])\n\n const updateSettings = newProps => setSettings({ ...settings, ...newProps })\n const handleChange = (_, newValue) => setSelectedTab(newValue)\n const handleChangeIndex = index => setSelectedTab(index)\n\n return (\n \n \n {t('SettingsDialog.Settings')}
\n {\n setIsProMode(checked)\n localStorage.setItem('isProMode', checked)\n if (!checked) setSelectedTab(0)\n }}\n style={{ color: 'white' }}\n />\n }\n label={t('SettingsDialog.ProMode')}\n labelPlacement='start'\n />\n \n\n \n \n \n\n \n {t('SettingsDialog.Tabs.Additional')}
\n {!isProMode && {t('SettingsDialog.Tabs.AdditionalDisabled')}
}\n >\n }\n {...a11yProps(1)}\n />\n\n {isStandaloneApp && }\n \n \n\n \n {settings ? (\n <>\n \n \n \n \n\n \n \n \n\n {isStandaloneApp && (\n \n \n \n )}\n \n >\n ) : (\n \n )}\n \n\n \n \n\n \n\n \n \n \n )\n}\n","import ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useState } from 'react'\nimport SettingsIcon from '@material-ui/icons/Settings'\nimport { useTranslation } from 'react-i18next'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport SettingsDialog from './SettingsDialog'\n\nexport default function SettingsDialogButton({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n\n return (\n \n
\n {isStandaloneApp ? (\n <>\n \n {t('SettingsDialog.Settings')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n {isDialogOpen &&
}\n
\n )\n}\n","import { Button, Dialog, DialogActions, DialogTitle } from '@material-ui/core'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport { useState } from 'react'\nimport { torrentsHost } from 'utils/Hosts'\nimport { useTranslation } from 'react-i18next'\n\nconst fnRemoveAll = () => {\n fetch(torrentsHost(), {\n method: 'post',\n body: JSON.stringify({ action: 'list' }),\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n })\n .then(res => res.json())\n .then(json => {\n json.forEach(torr => {\n fetch(torrentsHost(), {\n method: 'post',\n body: JSON.stringify({ action: 'rem', hash: torr.hash }),\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n })\n })\n })\n}\n\nexport default function RemoveAll({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const closeDialog = () => setOpen(false)\n const openDialog = () => setOpen(true)\n\n return (\n <>\n \n \n \n \n\n \n \n\n \n >\n )\n}\n","import styled, { css } from 'styled-components'\nimport { standaloneMedia } from 'style/standaloneMedia'\n\nexport const DialogWrapper = styled.div`\n height: 100%;\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n`\n\nexport const HeaderSection = styled.section`\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n font-weight: 300;\n padding: 20px;\n\n img {\n width: 64px;\n }\n\n @media (max-width: 930px) {\n font-size: 22px;\n padding: 10px 20px;\n\n img {\n width: 60px;\n }\n }\n\n ${standaloneMedia(css`\n padding-top: 30px;\n `)}\n`\n\nexport const ThanksSection = styled.section`\n padding: 20px;\n text-align: center;\n font-size: 24px;\n font-weight: 300;\n background: #e8e5eb;\n color: #323637;\n\n @media (max-width: 930px) {\n font-size: 20px;\n padding: 30px 20px;\n }\n`\n\nexport const Section = styled.section`\n padding: 20px;\n\n > span {\n font-size: 22px;\n display: block;\n margin-bottom: 15px;\n }\n\n a {\n text-decoration: none;\n }\n\n > div {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(4, max-content);\n\n @media (max-width: 930px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 780px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 550px) {\n grid-template-columns: 1fr;\n }\n }\n`\n\nexport const FooterSection = styled.div`\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n background: #e8e5eb;\n`\n\nexport const LinkWrapper = styled.a`\n ${({ isLink }) => css`\n display: inline-flex;\n align-items: center;\n justify-content: start;\n border: 1px solid;\n padding: 7px 10px;\n border-radius: 5px;\n text-transform: uppercase;\n text-decoration: none;\n background: #545a5e;\n color: #f1eff3;\n transition: 0.2s;\n\n > * {\n transition: 0.2s;\n }\n\n ${isLink\n ? css`\n :hover {\n filter: brightness(1.1);\n\n > * {\n transform: translateY(0px);\n }\n }\n `\n : css`\n cursor: default;\n `}\n `}\n`\n\nexport const LinkIcon = styled.div`\n display: grid;\n margin-right: 10px;\n`\n","import { GitHub as GitHubIcon } from '@material-ui/icons'\n\nimport { LinkWrapper, LinkIcon } from './style'\n\nexport default function LinkComponent({ name, link }) {\n return (\n \n {link && (\n \n \n \n )}\n\n {name}
\n \n )\n}\n","import axios from 'axios'\nimport { useEffect, useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport InfoIcon from '@material-ui/icons/Info'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useTranslation } from 'react-i18next'\nimport { useMediaQuery } from '@material-ui/core'\nimport { echoHost } from 'utils/Hosts'\nimport { StyledDialog, StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nimport LinkComponent from './LinkComponent'\nimport { DialogWrapper, HeaderSection, ThanksSection, Section, FooterSection } from './style'\n\nexport default function AboutDialog() {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const [torrServerVersion, setTorrServerVersion] = useState('')\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n useEffect(() => {\n axios.get(echoHost()).then(({ data }) => setTorrServerVersion(data))\n }, [])\n\n const onClose = () => setOpen(false)\n const ref = useOnStandaloneAppOutsideClick(onClose)\n\n return (\n <>\n setOpen(true)}>\n {isStandaloneApp ? (\n <>\n \n {t('Details')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n \n \n \n {t('About')}
\n {torrServerVersion}\n
\n \n\n \n
{t('ThanksToEveryone')}\n\n
\n {t('Links')}\n\n \n \n \n
\n \n\n
\n {t('SpecialThanks')}\n\n \n \n \n \n \n \n \n \n \n \n
\n \n
\n\n \n \n \n \n \n >\n )\n}\n","import { useState } from 'react'\nimport { Button, DialogActions, DialogTitle, ListItemIcon, ListItemText } from '@material-ui/core'\nimport { StyledDialog, StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { PowerSettingsNew as PowerSettingsNewIcon } from '@material-ui/icons'\nimport { shutdownHost } from 'utils/Hosts'\nimport { useTranslation } from 'react-i18next'\nimport { isStandaloneApp } from 'utils/Utils'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nexport default function CloseServer({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const closeDialog = () => setOpen(false)\n const openDialog = () => setOpen(true)\n\n const ref = useOnStandaloneAppOutsideClick(closeDialog)\n\n return (\n <>\n \n {isStandaloneApp ? (\n <>\n \n {t('TurnOff')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n \n {t('CloseServer?')}\n \n \n\n \n \n \n >\n )\n}\n","import Divider from '@material-ui/core/Divider'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { CreditCard as CreditCardIcon } from '@material-ui/icons'\nimport List from '@material-ui/core/List'\nimport { useTranslation } from 'react-i18next'\nimport AddDialogButton from 'components/Add'\nimport SettingsDialog from 'components/Settings'\nimport RemoveAll from 'components/RemoveAll'\nimport AboutDialog from 'components/About'\nimport CloseServer from 'components/CloseServer'\nimport { memo } from 'react'\n\nimport { AppSidebarStyle } from './style'\n\nconst Sidebar = ({ isDrawerOpen, setIsDonationDialogOpen, isOffline, isLoading }) => {\n const { t } = useTranslation()\n\n return (\n \n \n \n\n \n
\n\n \n\n \n \n\n \n\n setIsDonationDialogOpen(true)}>\n \n \n \n\n \n \n\n \n
\n \n )\n}\n\nexport default memo(Sidebar)\n","import { CreditCard as CreditCardIcon } from '@material-ui/icons'\nimport { useTranslation } from 'react-i18next'\nimport CloseServer from 'components/CloseServer'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport AddDialogButton from 'components/Add'\nimport AboutDialog from 'components/About'\nimport SettingsDialogButton from 'components/Settings'\n\nimport StyledPWAFooter from './style'\n\nexport default function PWAFooter({ setIsDonationDialogOpen, isOffline, isLoading }) {\n const { t } = useTranslation()\n\n return (\n \n \n\n setIsDonationDialogOpen(true)}>\n \n\n {t('Donate')}
\n \n\n \n\n \n\n \n \n )\n}\n","export default function IOSShareIcon() {\n return (\n \n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const StyledWrapper = styled.div`\n ${({ isOpen }) => css`\n position: absolute;\n bottom: 10px;\n left: 50%;\n background: #eeeef0;\n width: calc(100% - 20px);\n z-index: 9999;\n border-radius: 10px;\n transition: all 0.3s;\n color: #000;\n\n ${isOpen\n ? css`\n opacity: 1;\n transform: translate(-50%, 0);\n `\n : css`\n transform: translate(-50%, 150%);\n opacity: 0;\n pointer-events: none;\n `}\n\n > :not(:last-child) {\n border-bottom: 1px solid #dadadc;\n }\n\n > * {\n padding: 20px;\n }\n `}\n`\n\nexport const StyledHeader = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: min-content 1fr;\n gap: 20px;\n align-items: center;\n font-weight: 700;\n\n img {\n border-radius: 5px;\n }\n`\n\nexport const StyledContent = styled.div`\n > :not(:last-child) {\n margin-bottom: 25px;\n }\n\n span {\n background: #fefcfd;\n padding: 5px;\n border-radius: 5px;\n }\n`\n","import IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport IOSShareIcon from './IOSShareIcon'\nimport { StyledWrapper, StyledHeader, StyledContent } from './style'\n\nexport function PWAInstallationGuide() {\n const pwaNotificationIsClosed = JSON.parse(localStorage.getItem('pwaNotificationIsClosed'))\n const [isOpen, setIsOpen] = useState(!pwaNotificationIsClosed)\n const [shouldBeOpened, setShouldBeOpened] = useState(!pwaNotificationIsClosed)\n\n const { t } = useTranslation()\n\n if (!isOpen) return null\n\n return (\n \n \n
\n\n {t('PWAGuide.Header')}\n\n {\n setShouldBeOpened(false)\n\n setTimeout(() => {\n setIsOpen(false)\n localStorage.setItem('pwaNotificationIsClosed', true)\n }, 300)\n }}\n >\n \n \n \n\n \n {t('PWAGuide.Description')}
\n\n {t('PWAGuide.VLC')}
\n\n \n 1. {t('PWAGuide.FirstStep')} \n
\n\n \n 2. {t('PWAGuide.SecondStep.Select')} {t('PWAGuide.SecondStep.AddToHomeScreen')}\n
\n \n \n )\n}\n","import CssBaseline from '@material-ui/core/CssBaseline'\nimport { createContext, useEffect, useState } from 'react'\nimport Typography from '@material-ui/core/Typography'\nimport {\n Menu as MenuIcon,\n Close as CloseIcon,\n Brightness4 as Brightness4Icon,\n Brightness5 as Brightness5Icon,\n BrightnessAuto as BrightnessAutoIcon,\n Sort as SortIcon,\n SortByAlpha as SortByAlphaIcon,\n} from '@material-ui/icons'\nimport { echoHost } from 'utils/Hosts'\nimport Div100vh from 'react-div-100vh'\nimport axios from 'axios'\nimport TorrentList from 'components/TorrentList'\nimport DonateSnackbar from 'components/Donate'\nimport DonateDialog from 'components/Donate/DonateDialog'\nimport useChangeLanguage from 'utils/useChangeLanguage'\nimport { ThemeProvider as MuiThemeProvider } from '@material-ui/core/styles'\nimport { ThemeProvider as StyledComponentsThemeProvider } from 'styled-components'\nimport { useQuery } from 'react-query'\nimport { getTorrents, isStandaloneApp } from 'utils/Utils'\nimport GlobalStyle from 'style/GlobalStyle'\nimport { /* lightTheme, */ THEME_MODES, useMaterialUITheme } from 'style/materialUISetup'\nimport getStyledComponentsTheme from 'style/getStyledComponentsTheme'\nimport checkIsIOS from 'utils/checkIsIOS'\n\nimport { AppWrapper, AppHeader, HeaderToggle, StyledIconButton } from './style'\nimport Sidebar from './Sidebar'\nimport PWAFooter from './PWAFooter'\nimport { PWAInstallationGuide } from './PWAInstallationGuide'\n\nconst snackbarIsClosed = JSON.parse(localStorage.getItem('snackbarIsClosed'))\n\nexport const DarkModeContext = createContext()\n\nexport default function App() {\n const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n const [isDonationDialogOpen, setIsDonationDialogOpen] = useState(false)\n const [torrServerVersion, setTorrServerVersion] = useState('')\n\n const [isDarkMode, currentThemeMode, updateThemeMode, muiTheme] = useMaterialUITheme()\n const [currentLang, changeLang] = useChangeLanguage()\n const [isOffline, setIsOffline] = useState(false)\n const { data: torrents, isLoading } = useQuery('torrents', getTorrents, {\n retry: 1,\n refetchInterval: 1000,\n onError: () => setIsOffline(true),\n onSuccess: () => setIsOffline(false),\n })\n const [sortABC, setSortABC] = useState(false)\n const handleClickSortABC = () => setSortABC(true)\n const handleClickSortDate = () => setSortABC(false)\n\n useEffect(() => {\n axios.get(echoHost()).then(({ data }) => setTorrServerVersion(data))\n }, [])\n\n return (\n <>\n \n\n \n \n \n \n\n {/* Div100vh - iOS WebKit fix */}\n \n \n \n setIsDrawerOpen(!isDrawerOpen)}>\n {isDrawerOpen ? : }\n \n\n \n TorrServer {torrServerVersion}\n \n\n \n (sortABC === true ? handleClickSortDate() : handleClickSortABC())}>\n {sortABC === true ? : }\n \n\n {\n if (currentThemeMode === THEME_MODES.LIGHT) updateThemeMode(THEME_MODES.DARK)\n if (currentThemeMode === THEME_MODES.DARK) updateThemeMode(THEME_MODES.AUTO)\n if (currentThemeMode === THEME_MODES.AUTO) updateThemeMode(THEME_MODES.LIGHT)\n }}\n >\n {currentThemeMode === THEME_MODES.LIGHT ? (\n \n ) : currentThemeMode === THEME_MODES.DARK ? (\n \n ) : (\n \n )}\n \n\n \n currentLang === 'en'\n ? changeLang('ru')\n : currentLang === 'ru'\n ? changeLang('ua')\n : currentLang === 'ua'\n ? changeLang('zh')\n : changeLang('en')\n }\n >\n {currentLang.toUpperCase()}\n \n
\n \n\n \n\n \n\n \n\n {/* */}\n {isDonationDialogOpen && setIsDonationDialogOpen(false)} />}\n {/* */}\n\n {snackbarIsClosed ? checkIsIOS() && !isStandaloneApp && : }\n \n \n \n \n \n >\n )\n}\n","import { mainColors, themeColors } from './colors'\n\nexport default type => ({ ...themeColors[type], ...mainColors[type] })\n","export default () => {\n if (typeof window === `undefined` || typeof navigator === `undefined`) return false\n\n return /iPhone|iPad|iPod/i.test(navigator.userAgent || navigator.vendor)\n}\n","import { StrictMode } from 'react'\nimport ReactDOM from 'react-dom'\nimport { QueryClientProvider, QueryClient } from 'react-query'\n\nimport App from './components/App'\nimport 'i18n'\n\nconst queryClient = new QueryClient()\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js b/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js
new file mode 100644
index 0000000..f58b87e
--- /dev/null
+++ b/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js
@@ -0,0 +1,2 @@
+(this.webpackJsonptorrserver_web=this.webpackJsonptorrserver_web||[]).push([[0],{190:function(e){e.exports=JSON.parse('{"About":"About","Actions":"Actions","Add":"Add","AddDialog":{"AddPosterLinkInput":"Poster link","AddTorrentSourceNotification":"First add your torrent source","AppendFile":{"Or":"OR","ClickOrDrag":"CLICK / DRAG & DROP (.torrent)"},"CustomTorrentTitle":"Custom title (optional)","CustomTorrentTitleHelperText":"Write custom title to find poster","HashExists":"This torrent is already in database","OriginalTorrentTitle":"Original torrent title","TitleBlank":"Title","TitleBlankHelperText":"Blank for orig. torrent title","TorrentSourceLink":"Torrent source","TorrentSourceOptions":"magnet / hash / .torrent file link","WrongTorrentSource":"Wrong torrent source"},"AddFromLink":"Add Torrent","AddNewTorrent":"Add new torrent","B":"B","bps":"bps","Buffer":"Preload Buffer / Cache","BufferNote":"Set Preload Cache Before Play > 32 MB in settings to change preload size","Cache":"Cache","Cancel":"Cancel","Clear":"Clear","Close":"Close","CloseServer?":"Do you want to turn off server?","CloseServer":"Turn Off","CopyHash":"Copy Hash","CopyLink":"Copy link","Data":"Data","DebugMode":"Download priorities","Delete":"Delete","DeleteTorrent?":"Delete Torrent?","DeleteTorrents?":"Delete All Torrents?","DetailedCacheView":{"button":"Cache Details View","header":"$t(DetailedCacheView.button)"},"Details":"Details","Donate?":"Want to donate?","Donate":"Donate","DownloadPlaylist":"Download Playlist","DownloadSpeed":"Download speed","Drop":"Drop","DropTorrent":"Reset Torrent","Edit":"Edit","EditTorrent":"Edit torrent","Episode":"Episode","FromLatestFile":"From Latest File","Full":"Full","GB":"GB","Gbps":"Gbps","Host":"Host","Info":"Info","KB":"KB","kbps":"kbps","Kilobytes":"Kilobytes","LatestFilePlayed":"Latest file played:","Links":"Links","MB":"MB","Mbps":"Mbps","Name":"Name","NoTorrentsAdded":"No torrents added","Offline":"Offline","OK":"OK","OpenLink":"Open link","Peers":"Peers","PiecesCount":"Pieces count","PiecesLength":"Pieces length","Playlist":"Playlist","Preload":"Preload","ProjectSource":"Project GitHub","NasReleases":"NAS Releases GitHub","PWAGuide":{"Header":"Install application","Description":"Install the app on your device to easily access it anytime. No app store. No download.","VLC":"VLC button will be added to open video instantly on the phone","FirstStep":"Tap on","SecondStep":{"Select":"Select","AddToHomeScreen":"Add to Home Screen"}},"Releases":"TorrServer Releases","RemoveAll":"Remove All","RemoveViews":"Remove View States","Resolution":"Resolution","Save":"Save","ScrollDown":"scroll down","Season":"Season","Sec":"s","Seconds":"Seconds","SelectSeason":"Select Season","SettingsDialog":{"AddRetrackers":"Add retrackers","AdditionalSettings":"Additional Settings","MobileAppSettings":"Mobile app settings","CacheBeforeReaderDesc":"from cache will be saved before currently played frame","CacheAfterReaderDesc":"from cache will be loaded after currently played frame","CacheSize":"Cache Size","CacheSettings":"Cache Settings","CacheStorageLocation":"Cache Storage Location","ConnectionsLimit":"Connections Limit","ConnectionsLimitHint":"20-25 recommended","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"Disable if there is no network after starting the server","DisablePEXHint":"Better leave enabled","DisableTCPHint":"Don\'t disable without \u03bcTP enabled","DisableUPNPHint":"Auto-open port on router","DisableUTPHint":"Recommended to disable in Windows OS","Disk":"Disk","DLNA":"DLNA Media Server","DontAddRetrackers":"Don`t add retrackers","DownloadRateLimit":"Download Rate Limit","EnableDebug":"Enable Debug Server Log","EnableIPv6Hint":"Enable only if supported by ISP","ForceEncrypt":"Force Encrypt Headers","ForceEncryptHint":"Can help with torrent blocking providers","FriendlyName":"DLNA Server Name","FriendlyNameHint":"Leave blank to use default","EnableRutorSearch":"Turn on torrents search by RuTor","EnableRutorSearchHint":"You can search torrents by RuTor, even if the RuTor is not available. NOTE: The database takes about 500 MB of RAM.","PeersListenPort":"Peers Listen Port","PeersListenPortHint":"1024 - 65535, 0 - random","PreloadCache":"Preload Cache Before Play","ProMode":"PRO mode","RAM":"RAM","ReaderReadAHead":"Readahead Cache (5-100%, rec. 95%)","RemoveCacheOnDrop":"Remove Cache from Disk on Drop Torrent","RemoveCacheOnDropDesc":"If disabled, cache removed on delete torrent.","RemoveRetrackers":"Remove retrackers","ReplaceRetrackers":"Replace retrackers","RetrackersMode":"Retrackers Mode","ResetToDefault":"Reset to default","Settings":"Settings","TorrentDisconnectTimeout":"Torrent Disconnect Timeout","TorrentsSavePath":"Torrents Save Path","Upload":"Upload","UploadHint":"Not recommended to disable","UploadRateLimit":"Upload Rate Limit","UseDiskDesc":"Better use RAM or external storage on flash-based devices","Tabs":{"Main":"Main","Additional":"Additional","AdditionalDisabled":"(enable PRO mode)","App":"App"},"UseVLC":"Prompt to open video in VLC","UseVLCHint":"Add VLC player button to torrent content list"},"Size":"Size","SpecialThanks":"Special Thanks","Speed":"Speed","Support":"Support","TB":"TB","Tbps":"Tbps","ThanksToEveryone":"Thanks to everyone who tested and helped.","TorrentAdded":"Added","TorrentClosed":"\u0421losed","TorrentContent":"Torrent Content","TorrentDetails":"Torrent Details","TorrentGettingInfo":"Getting Info","TorrentInDb":"In DB","TorrentPreload":"Preload","TorrentSize":"Torrent size","TorrentState":"Torrent State","TorrentStatus":"Torrent Status","TorrentWorking":"Active","TurnOff":"Turn Off","UploadFile":"Upload File","UploadSpeed":"Upload speed","Viewed":"Viewed"}')},191:function(e){e.exports=JSON.parse('{"About":"\u041e \u0441\u0435\u0440\u0432\u0435\u0440\u0435","Actions":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f","Add":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","AddDialog":{"AddPosterLinkInput":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0441\u0442\u0435\u0440","AddTorrentSourceNotification":"\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442","AppendFile":{"Or":"\u0418\u041b\u0418","ClickOrDrag":"\u041d\u0410\u0416\u041c\u0418\u0422\u0415 / \u041f\u0415\u0420\u0415\u0422\u0410\u0429\u0418\u0422\u0415 \u0424\u0410\u0419\u041b (.torrent)"},"CustomTorrentTitle":"C\u0432\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","CustomTorrentTitleHelperText":"\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0432\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u0440","HashExists":"\u042d\u0442\u043e\u0442 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445","OriginalTorrentTitle":"\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TitleBlank":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","TitleBlankHelperText":"\u041f\u0443\u0441\u0442\u043e\u0435 - \u043e\u0440\u0438\u0433. \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentSourceLink":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentSourceOptions":"magnet-\u0441\u0441\u044b\u043b\u043a\u0430 / \u0445\u0435\u0448 / \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 .torrent \u0444\u0430\u0439\u043b","WrongTorrentSource":"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u0440\u0440\u0435\u043d\u0442"},"AddFromLink":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","AddNewTorrent":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u0440\u0440\u0435\u043d\u0442","B":"\u0411","bps":"\u0431\u0438\u0442/c","Buffer":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 / \u041a\u0435\u0448","BufferNote":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0411\u0443\u0444\u0435\u0440 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 > 32 \u041c\u0411 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","Cache":"\u041a\u0435\u0448","Cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","Clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c","Close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","CloseServer?":"\u0425\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440?","CloseServer":"\u0412\u044b\u043a\u043b. \u0441\u0435\u0440\u0432\u0435\u0440","CopyHash":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0445\u0435\u0448","CopyLink":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","Data":"\u0414\u0430\u043d\u043d\u044b\u0435","DebugMode":"\u041c\u0435\u0442\u043a\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432","Delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","DeleteTorrent?":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442?","DeleteTorrents?":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u044b?","DetailedCacheView":{"button":"\u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0435\u0448\u0430","header":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u0435\u0448\u0435"},"Details":"\u0418\u043d\u0444\u043e","Donate?":"\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442?","Donate":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430","DownloadPlaylist":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","DownloadSpeed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","Drop":"\u0421\u0431\u0440\u043e\u0441","DropTorrent":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442","Edit":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c","EditTorrent":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u0440\u0440\u0435\u043d\u0442","Episode":"\u0421\u0435\u0440\u0438\u044f","FromLatestFile":"C \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430","Full":"\u041f\u043e\u043b\u043d\u044b\u0439","GB":"\u0413\u0411","Gbps":"\u0413\u0431\u0438\u0442/c","Host":"\u0425\u043e\u0441\u0442","Info":"\u0418\u043d\u0444\u043e","KB":"\u041a\u0411","kbps":"\u043a\u0431\u0438\u0442/\u0441","Kilobytes":"\u041a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u044b","LatestFilePlayed":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:","Links":"\u0421\u0441\u044b\u043b\u043a\u0438","MB":"\u041c\u0411","Mbps":"\u041c\u0431\u0438\u0442/c","Name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","NoTorrentsAdded":"\u041d\u0435\u0442 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432","Offline":"\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d","OK":"OK","OpenLink":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","Peers":"\u041f\u0438\u0440\u044b","PiecesCount":"\u041a\u043e\u043b-\u0432\u043e \u0431\u043b\u043e\u043a\u043e\u0432","PiecesLength":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430","Playlist":"\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","Preload":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440.","ProjectSource":"GitHub \u043f\u0440\u043e\u0435\u043a\u0442\u0430","NasReleases":"\u0420\u0435\u043b\u0438\u0437\u044b \u0434\u043b\u044f NAS GitHub","PWAGuide":{"Header":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435","Description":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0411\u0435\u0437 AppStore. \u0411\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.","VLC":"\u041a\u043d\u043e\u043f\u043a\u0430 VLC \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435","FirstStep":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430","SecondStep":{"Select":"\u0412\u044b\u0431\u0438\u0440\u0438\u0442\u0435","AddToHomeScreen":"\u041d\u0430 \u044d\u043a\u0440\u0430\u043d \xab\u0414\u043e\u043c\u043e\u0439\xbb"}},"Releases":"\u0420\u0435\u043b\u0438\u0437\u044b TorrServer","RemoveAll":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435","RemoveViews":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b","Resolution":"\u0420\u0430\u0437\u0440\u0435\u0448.","Save":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","ScrollDown":"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u0437","Season":"\u0421\u0435\u0437\u043e\u043d","Sec":"c","Seconds":"\u0421\u0435\u043a\u0443\u043d\u0434\u044b","SelectSeason":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0435\u0437\u043e\u043d\u0430","SettingsDialog":{"AddRetrackers":"\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c","AdditionalSettings":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","MobileAppSettings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f","CacheBeforeReaderDesc":"\u043e\u0442 \u043a\u0435\u0448\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0437\u0430\u0434\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430","CacheAfterReaderDesc":"\u043a\u0435\u0448\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u0435\u0440\u0435\u0434\u0438 \u043e\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430","CacheSize":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0435\u0448\u0430","CacheSettings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0435\u0448\u0430","CacheStorageLocation":"\u041c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0448\u0430","ConnectionsLimit":"\u0422\u043e\u0440\u0440\u0435\u043d\u0442-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f","ConnectionsLimitHint":"\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f 20-25","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 - \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u0435\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","DisablePEXHint":"\u041e\u0431\u043c\u0435\u043d \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 - \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c","DisableTCPHint":"\u041d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0431\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u03bcTP","DisableUPNPHint":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u0430 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435","DisableUTPHint":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u041e\u0421 Windows","Disk":"\u041f\u0417\u0423 / \u041d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c","DLNA":"DLNA-\u043c\u0435\u0434\u0438\u0430\u0441\u0435\u0440\u0432\u0435\u0440","DontAddRetrackers":"\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c","DownloadRateLimit":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","EnableDebug":"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u0430","EnableIPv6Hint":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f","ForceEncrypt":"\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432","ForceEncryptHint":"\u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438","FriendlyName":"\u0418\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 DLNA","FriendlyNameHint":"\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.","EnableRutorSearch":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e RuTor","EnableRutorSearchHint":"\u041f\u043e\u0438\u0441\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 RuTor, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 RuTor \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0431\u0430\u0437\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e 500 \u041c\u0411 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.","PeersListenPort":"\u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439","PeersListenPortHint":"1024 - 65535, 0 - \u0430\u0432\u0442\u043e","PreloadCache":"\u0411\u0443\u0444\u0435\u0440 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","ProMode":"\u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c","RAM":"\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c","ReaderReadAHead":"\u041e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0449\u0438\u0439 \u043a\u0435\u0448 (5-100%, \u0440\u0435\u043a. 95%)","RemoveCacheOnDrop":"\u041e\u0447\u0438\u0449\u0430\u0442\u044c \u043a\u0435\u0448 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","RemoveCacheOnDropDesc":"\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u043a\u0435\u0448 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430.","RemoveRetrackers":"\u0423\u0434\u0430\u043b\u044f\u0442\u044c","ReplaceRetrackers":"\u0417\u0430\u043c\u0435\u043d\u044f\u0442\u044c","RetrackersMode":"\u0420\u0435\u0442\u0440\u0435\u043a\u0435\u0440\u044b","ResetToDefault":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Settings":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","TorrentDisconnectTimeout":"\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentsSavePath":"\u041f\u0443\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0448\u0430","Upload":"\u041e\u0442\u0434\u0430\u0447\u0430","UploadHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c","UploadRateLimit":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0442\u0434\u0430\u0447\u0438","UseDiskDesc":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0441 flash-\u043f\u0430\u043c\u044f\u0442\u044c\u044e","Tabs":{"Main":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435","Additional":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435","AdditionalDisabled":"(\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c)","App":"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435"},"UseVLC":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0432 VLC","UseVLCHint":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f VLC \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"},"Size":"\u0420\u0430\u0437\u043c\u0435\u0440","SpecialThanks":"\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e","Speed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c","Support":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c","TB":"\u0422\u0411","Tbps":"\u0422\u0431\u0438\u0442/\u0441","ThanksToEveryone":"\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u043b!","TorrentAdded":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d","TorrentClosed":"\u0417\u0430\u043a\u0440\u044b\u0442","TorrentContent":"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentDetails":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0435","TorrentGettingInfo":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e","TorrentInDb":"\u0422\u043e\u0440\u0440\u0435\u043d\u0442 \u0432 \u0411\u0414","TorrentPreload":"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430","TorrentSize":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentState":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentStatus":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentWorking":"\u0410\u043a\u0442\u0438\u0432\u0435\u043d","TurnOff":"\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c","UploadFile":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b","UploadSpeed":"\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0442\u0434\u0430\u0447\u0438","Viewed":"\u041f\u0440\u043e\u0441\u043c."}')},192:function(e){e.exports=JSON.parse('{"About":"\u041f\u0440\u043e \u0441\u0435\u0440\u0432\u0435\u0440","Actions":"\u0414\u0456\u0457","Add":"\u0414\u043e\u0434\u0430\u0442\u0438","AddDialog":{"AddPosterLinkInput":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043b\u0430\u043a\u0430\u0442","AddTorrentSourceNotification":"\u0421\u043f\u043e\u0447\u0430\u0442\u043a\u0443 \u0434\u043e\u0434\u0430\u0439\u0442\u0435 torrent-\u0434\u0436\u0435\u0440\u0435\u043b\u043e","AppendFile":{"Or":"\u0427\u0418","ClickOrDrag":"\u041d\u0410\u0422\u0418\u0421\u041d\u0406\u0422\u042c / \u041f\u0415\u0420\u0415\u0422\u042f\u0413\u041d\u0406\u0422\u042c \u0424\u0410\u0419\u041b (.torrent)"},"CustomTorrentTitle":"\u0412\u043b\u0430\u0441\u043d\u0430 \u043d\u0430\u0437\u0432\u0430 (\u043e\u043f\u0446\u0456\u0439\u043d\u043e)","CustomTorrentTitleHelperText":"\u041d\u0430\u043f\u0438\u0448\u0456\u0442\u044c \u0432\u043b\u0430\u0441\u043d\u0443 \u043d\u0430\u0437\u0432\u0443, \u0449\u043e\u0431 \u0437\u043d\u0430\u0439\u0442\u0438 \u043f\u043b\u0430\u043a\u0430\u0442","HashExists":"\u0414\u0430\u043d\u0438\u0439 \u0442\u043e\u0440\u0435\u043d\u0442 \u0432\u0436\u0435 \u0454 \u0443 \u0431\u0430\u0437\u0456 \u0434\u0430\u043d\u0438\u0445","OriginalTorrentTitle":"\u041e\u0440\u0438\u0433\u0456\u043d\u0430\u043b\u044c\u043d\u0430 \u043d\u0430\u0437\u0432\u0430 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TitleBlank":"\u041d\u0430\u0437\u0432\u0430","TitleBlankHelperText":"\u041f\u043e\u0440\u043e\u0436\u043d\u0454 - \u043e\u0440\u0438\u0433. \u043d\u0430\u0437\u0432\u0430 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentSourceLink":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0434\u0436\u0435\u0440\u0435\u043b\u043e \u0442\u0435\u0440\u0435\u043d\u0442\u0430","TorrentSourceOptions":"magnet-\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f / \u0445\u0435\u0448 / \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 .torrent \u0444\u0430\u0439\u043b","WrongTorrentSource":"\u0425\u0438\u0431\u043d\u0435 torrent-\u0434\u0436\u0435\u0440\u0435\u043b\u043e"},"AddFromLink":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","AddNewTorrent":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0442\u043e\u0440\u0435\u043d\u0442","B":"\u0411","bps":"\u0431\u0456\u0442/c","Buffer":"\u0411\u0443\u0444\u0435\u0440","BufferNote":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u0433\u043e \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f > 32 \u041c\u0411 \u0432 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f\u0445, \u0449\u043e\u0431 \u0439\u043e\u0433\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438.","Cache":"\u041a\u0435\u0448","Cancel":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438","Clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438","Close":"\u0417\u0430\u043a\u0440\u0438\u0442\u0438","CloseServer?":"\u0425\u043e\u0447\u0435\u0442\u0435 \u0432\u0438\u043c\u043a\u043d\u0443\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440?","CloseServer":"\u0412\u0438\u043c\u043a. \u0441\u0435\u0440\u0432\u0435\u0440","CopyHash":"\u0421\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0445\u0435\u0448","CopyLink":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438","Data":"\u0414\u0430\u043d\u0456","DebugMode":"\u041c\u0456\u0442\u043a\u0438 \u043f\u0440\u0456\u043e\u0440\u0438\u0442\u0435\u0442\u0456\u0432","Delete":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","DeleteTorrent?":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442?","DeleteTorrents?":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0432\u0441\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0438?","DetailedCacheView":{"button":"\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0430","header":"\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u043a\u0435\u0448"},"Details":"\u0414\u0435\u0442\u0430\u043b\u0456","Donate?":"\u0411\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043f\u0440\u043e\u0454\u043a\u0442?","Donate":"\u041f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0430","DownloadPlaylist":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f","DownloadSpeed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","Drop":"\u0421\u043a\u0438\u043d\u0443\u0442\u0438","DropTorrent":"\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","Edit":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438","EditTorrent":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0442\u043e\u0440\u0435\u043d\u0442","Episode":"\u0421\u0435\u0440\u0456\u044f","FromLatestFile":"\u0417 \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0443","Full":"\u041f\u043e\u0432\u043d\u0438\u0439","GB":"\u0413\u0411","Gbps":"\u0413\u0431\u0456\u0442/c","Host":"\u0425\u043e\u0441\u0442","Info":"\u0406\u043d\u0444\u043e","KB":"\u041a\u0411","kbps":"\u043a\u0431\u0456\u0442/\u0441","Kilobytes":"\u041a\u0456\u043b\u043e\u0431\u0430\u0439\u0442","LatestFilePlayed":"\u041e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u0444\u0430\u0439\u043b, \u0449\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0432\u0441\u044f:","Links":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","MB":"\u041c\u0411","Mbps":"\u041c\u0431\u0456\u0442/c","Name":"\u041d\u0430\u0437\u0432\u0430","NoTorrentsAdded":"\u041d\u0435\u043c\u0430\u0454 \u0442\u043e\u0440\u0435\u043d\u0442\u0456\u0432","Offline":"\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439","OK":"OK","OpenLink":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438","Peers":"\u041f\u0456\u0440\u0438","PiecesCount":"\u041a-\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u0456\u0432","PiecesLength":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0431\u043b\u043e\u043a\u0443","Playlist":"\u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442","Preload":"\u041f\u0435\u0440\u0435\u0434\u0437\u0430\u0432.","ProjectSource":"\u0421\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0443","NasReleases":"\u0420\u0435\u043b\u0456\u0437\u0438 \u0434\u043b\u044f NAS GitHub","PWAGuide":{"Header":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0434\u043e\u0434\u0430\u0442\u043e\u043a","Description":"\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0443 \u043d\u0430 \u0441\u0432\u0456\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439, \u0449\u043e\u0431 \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0434\u043e \u043d\u0435\u0457 \u0434\u043e\u0441\u0442\u0443\u043f \u0443 \u0431\u0443\u0434\u044c-\u044f\u043a\u0438\u0439 \u0447\u0430\u0441. \u041d\u0435\u043c\u0430\u0454 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0443 \u0434\u043e\u0434\u0430\u0442\u043a\u0456\u0432. \u041d\u0435\u043c\u0430\u0454 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f.","VLC":"\u041a\u043d\u043e\u043f\u043a\u0430 VLC \u0431\u0443\u0434\u0435 \u0434\u043e\u0434\u0430\u043d\u0430, \u0449\u043e\u0431 \u043c\u0438\u0442\u0442\u0454\u0432\u043e \u0432\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0456","FirstStep":"\u0422\u043e\u0440\u043a\u043d\u0456\u0442\u044c\u0441\u044f","SecondStep":{"Select":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c","AddToHomeScreen":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0438\u0439 \u0435\u043a\u0440\u0430\u043d"}},"Releases":"\u0420\u0435\u043b\u0456\u0437\u0438 TorrServer","RemoveAll":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0432\u0441\u0435","RemoveViews":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0438","Resolution":"\u0414\u043e\u0437\u0432\u043e\u043b\u0438","Save":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438","ScrollDown":"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0456\u0442\u044c \u0432\u043d\u0438\u0445","Season":"\u0421\u0435\u0437\u043e\u043d","Sec":"c","Seconds":"\u0421\u0435\u043a\u0443\u043d\u0434\u0438","SelectSeason":"\u0412\u0438\u0431\u0456\u0440 \u0441\u0435\u0437\u043e\u043d\u0443","SettingsDialog":{"AddRetrackers":"\u0414\u043e\u0434\u0430\u0432\u0430\u0442\u0438","AdditionalSettings":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","MobileAppSettings":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0431. \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438","CacheBeforeReaderDesc":"\u0437 \u043a\u0435\u0448\u0443 \u0431\u0443\u0434\u0435 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e \u0434\u043e \u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0443","CacheAfterReaderDesc":"\u0437 \u043a\u0435\u0448\u0443 \u0431\u0443\u0434\u0435 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043e \u043f\u0456\u0441\u043b\u044f \u043f\u043e\u0442\u043e\u0447\u043d\u043e \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0443","CacheSize":"\u0420\u0430\u0437\u043c\u0456\u0440 \u043a\u0435\u0448\u0443","CacheSettings":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u0435\u0448\u0443","CacheStorageLocation":"\u041c\u0456\u0441\u0446\u0435 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0443","ConnectionsLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0437\'\u0454\u0434\u0430\u043d\u044c","ConnectionsLimitHint":"\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e 20-25","DHT":"DHT (Distributed Hash Table)","DisableDHTHint":"\u0412\u0456\u0434\u043a\u043b\u044e\u0447\u0456\u0442\u044c \u043f\u0440\u0438 \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u043e\u0441\u0442\u0456 \u043c\u0435\u0440\u0435\u0436\u0456 \u043f\u0456\u0441\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","DisablePEXHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u0438","DisableTCPHint":"\u041d\u0435 \u0432\u0438\u043c\u0438\u043a\u0430\u0439\u0442\u0435 \u0431\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\u0433\u043e \u03bcTP","DisableUPNPHint":"\u0410\u0432\u0442\u043e\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0442\u044f \u043f\u043e\u0440\u0442\u0443 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0456","DisableUTPHint":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0432 \u041e\u0421 Windows","Disk":"\u041f\u0417\u041f / \u041d\u043e\u0441\u0456\u0439","DLNA":"DLNA-\u043c\u0435\u0434\u0438\u0430\u0441\u0435\u0440\u0432\u0435\u0440","DontAddRetrackers":"\u041d\u0456\u0447\u043e\u0433\u043e \u043d\u0435 \u0440\u043e\u0431\u0438\u0442\u0438","DownloadRateLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0448\u0432\u0438\u0434\u043a\u043e\u0441\u0442\u0456 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","EnableDebug":"\u0416\u0443\u0440\u043d\u0430\u043b \u043d\u0430\u043b\u0430\u0433\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430","EnableIPv6Hint":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044f\u043a\u0449\u043e \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u044c\u0441\u044f","ForceEncrypt":"\u041f\u0440\u0438\u043c\u0443\u0441\u043e\u0432\u043e \u0448\u0438\u0444\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","ForceEncryptHint":"\u041c\u043e\u0436\u0435 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0442\u0438 \u0437 \u0431\u043b\u043e\u043a\u0443\u044e\u0447\u0438\u043c\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438","FriendlyName":"\u0406\u043c\'\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 DLNA","FriendlyNameHint":"\u0417\u0430\u043b\u0438\u0448\u0442\u0435 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u043c, \u0449\u043e\u0431 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0437\u0430 \u043f\u0440\u043e\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c.","EnableRutorSearch":"\u0423\u0432\u0456\u043c\u043a\u043d\u0456\u0442\u044c \u043f\u043e\u0448\u0443\u043a RuTor","EnableRutorSearchHint":"\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0443\u043a\u0430\u0442\u0438 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0438 \u043e\u0442 RuTor, \u043d\u0430\u0432\u0456\u0442\u044c \u044f\u043a\u0449\u043e RuTor \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439. \u0423\u0412\u0410\u0413\u0410: \u041e\u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0439\u043c\u0430\u0454 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0457 \u043f\u0430\u043c\'\u044f\u0442\u0456 \u0431\u043b\u0438\u0437\u044c\u043a\u043e 500 \u041c\u0411.","PeersListenPort":"\u041f\u043e\u0440\u0442 \u0434\u043b\u044f \u0432\u0445\u0456\u0434\u043d\u0438\u0445 \u0437\'\u0454\u0434\u043d\u0430\u043d\u044c","PeersListenPortHint":"1024 - 65535, 0 - \u0430\u0432\u0442\u043e","PreloadCache":"\u0411\u0443\u0444\u0435\u0440 \u043f\u043e\u043f\u0435\u0440. \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","ProMode":"\u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c","RAM":"\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430 \u043f\u0430\u043c\'\u044f\u0442\u044c","ReaderReadAHead":"\u041a\u0430\u0447\u0430\u0442\u0438 \u043a\u0435\u0448 \u0437\u0430\u0437\u0434\u0435\u043b\u0435\u0433\u0456\u0434\u044c (5-100%, \u0440\u0435\u043a. 95%)","RemoveCacheOnDrop":"\u0412\u0438\u0434\u0430\u043b\u044f\u0442\u0438 \u043a\u0435\u0448 \u043f\u0440\u0438 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0456 \u0432\u0456\u0434 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","RemoveCacheOnDropDesc":"\u042f\u043a\u0449\u043e \u0432\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442\u043e\u0434\u0456 \u043a\u0435\u0448 \u0432\u0438\u0434\u0430\u043b\u044f\u0454\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0443.","RemoveRetrackers":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","ReplaceRetrackers":"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438","RetrackersMode":"\u0420\u0435\u0442\u0440\u0435\u043a\u0435\u0440\u0438","ResetToDefault":"\u0411\u0430\u0437\u043e\u0432\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","Settings":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","TorrentDisconnectTimeout":"\u0427\u0430\u0441 \u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u0430","TorrentsSavePath":"\u0428\u043b\u044f\u0445 \u0434\u043b\u044f \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f \u043a\u0435\u0448\u0443","Upload":"\u0412\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","UploadHint":"\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u0442\u044c\u0441\u044f \u0432\u0438\u043c\u0438\u043a\u0430\u0442\u0438","UploadRateLimit":"\u041e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f \u0448\u0432\u0438\u0434\u043a\u043e\u0441\u0442\u0456 \u0432\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","UseDiskDesc":"\u041a\u0440\u0430\u0449\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443 \u043f\u0430\u043c\'\u044f\u0442\u044c \u0430\u0431\u043e \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u044e \u043f\u0430\u043c\'\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044f\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 flash-\u043f\u0430\u043c\'\u044f\u0442\u0442\u044e","Tabs":{"Main":"\u041e\u0441\u043d\u043e\u0432\u043d\u0456","Additional":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0456","AdditionalDisabled":"(\u0432\u043a\u043b\u044e\u0447\u0456\u0442\u044c \u041f\u0420\u041e-\u0440\u0435\u0436\u0438\u043c)","App":"\u0414\u043e\u0434\u0430\u0442\u043e\u043a"},"UseVLC":"\u041f\u0440\u043e\u043f\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u0443 VLC","UseVLCHint":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0447\u0430 VLC \u0434\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u0442\u043e\u0440\u0440\u0435\u043d\u0442-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443"},"Size":"\u0420\u043e\u0437\u043c\u0456\u0440","SpecialThanks":"\u041e\u043a\u0440\u0435\u043c\u0430 \u043f\u043e\u0434\u044f\u043a\u0430","Speed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c","Support":"\u041f\u0456\u0434\u0442\u0440\u0438\u043c\u0430\u0442\u0438","TB":"\u0422\u0411","Tbps":"\u0422\u0431\u0456\u0442/\u0441","ThanksToEveryone":"\u0414\u044f\u043a\u0443\u0454\u043c\u043e \u0432\u0441\u0456\u043c, \u0445\u0442\u043e \u0442\u0435\u0441\u0442\u0443\u0432\u0430\u0432 \u0456 \u0434\u043e\u043f\u043e\u043c\u0430\u0433\u0430\u0432!","TorrentAdded":"\u0414\u043e\u0434\u0430\u043d\u0438\u0439","TorrentClosed":"\u0417\u0430\u043a\u0440\u0438\u0442\u0438\u0439","TorrentContent":"\u0412\u043c\u0456\u0441\u0442 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentDetails":"\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u0442\u043e\u0440\u0435\u043d\u0442","TorrentGettingInfo":"\u041e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457","TorrentInDb":"\u0422\u043e\u0440\u0435\u043d\u0442 \u0432 \u0411\u0414","TorrentPreload":"\u041f\u0435\u0440\u0435\u0434\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","TorrentSize":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentState":"\u0414\u0430\u043d\u0456 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentStatus":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0442\u043e\u0440\u0435\u043d\u0442\u0443","TorrentWorking":"\u0410\u043a\u0442\u0438\u0432\u043d\u0438\u0439","TurnOff":"\u0412\u0438\u043a\u043b\u044e\u0447\u0438\u0442\u0438","UploadFile":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u0430\u0439\u043b","UploadSpeed":"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0432\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","Viewed":"\u041f\u0435\u0440\u0435\u0433\u043b."}')},193:function(e){e.exports=JSON.parse('{"About":"\u5173\u4e8e","Actions":"\u64cd\u4f5c","Add":"\u6dfb\u52a0","AddDialog":{"AddPosterLinkInput":"\u6d77\u62a5\u94fe\u63a5","AddTorrentSourceNotification":"\u5148\u6dfb\u52a0\u4f60\u7684\u79cd\u5b50","AppendFile":{"Or":"\u6216","ClickOrDrag":"\u70b9\u51fb/\u62d6\u653e\u4e0a\u4f20 (.torrent)"},"CustomTorrentTitle":"\u81ea\u5b9a\u4e49\u6807\u9898\uff08\u53ef\u9009\uff09","CustomTorrentTitleHelperText":"\u7f16\u5199\u81ea\u5b9a\u4e49\u6807\u9898\u4ee5\u67e5\u627e\u6d77\u62a5","HashExists":"\u8fd9\u4e2a\u79cd\u5b50\u5df2\u7ecf\u5728\u6570\u636e\u5e93\u4e2d","OriginalTorrentTitle":"\u539f\u59cb\u79cd\u5b50\u6807\u9898","TitleBlank":"\u6807\u9898","TitleBlankHelperText":"\u7559\u7a7a\u5219\u4f7f\u7528\u79cd\u5b50\u539f\u59cb\u6807\u9898","TorrentSourceLink":"\u79cd\u5b50\u5730\u5740","TorrentSourceOptions":"magnet / hash / .torrent\u6587\u4ef6\u94fe\u63a5","WrongTorrentSource":"\u9519\u8bef\u7684\u79cd\u5b50\u6765\u6e90"},"AddFromLink":"\u6dfb\u52a0\u79cd\u5b50","AddNewTorrent":"\u6dfb\u52a0\u65b0\u79cd\u5b50","B":"B","bps":"bps","Buffer":"\u9884\u52a0\u8f7d\u7f13\u51b2\u533a/\u7f13\u5b58","BufferNote":"\u5728\u8bbe\u7f6e\u4e2d\u5c06\u64ad\u653e\u524d\u9884\u52a0\u8f7d\u7f13\u5b58\u8bbe\u7f6e\u4e3a\u5927\u4e8e 32 MB \u4ee5\u66f4\u6539\u9884\u52a0\u8f7d\u5927\u5c0f","Cache":"\u7f13\u5b58","Cancel":"\u53d6\u6d88","Clear":"\u6e05\u9664","Close":"\u5173\u95ed","CloseServer?":"\u4f60\u60f3\u5173\u95ed\u670d\u52a1\u5668\u5417\uff1f","CloseServer":"\u5173\u95ed","CopyHash":"\u590d\u5236\u54c8\u5e0c","CopyLink":"\u590d\u5236\u94fe\u63a5","Data":"\u6570\u636e","DebugMode":"\u4f18\u5148\u7ea7\u6807\u8bb0","Delete":"\u5220\u9664","DeleteTorrent?":"\u5220\u9664\u79cd\u5b50\uff1f","DeleteTorrents?":"\u5220\u9664\u6240\u6709\u79cd\u5b50\uff1f","DetailedCacheView":{"button":"\u67e5\u770b\u7f13\u5b58\u8be6\u60c5","header":"$t(DetailedCacheView.button)"},"Details":"\u8be6\u7ec6\u4fe1\u606f","Donate?":"\u60f3\u8981\u6350\u8d60\uff1f","Donate":"\u6350\u8d60","DownloadPlaylist":"\u4e0b\u8f7d\u64ad\u653e\u5217\u8868","DownloadSpeed":"\u4e0b\u8f7d\u901f\u5ea6","Drop":"\u505c\u6b62","DropTorrent":"\u505c\u6b62\u79cd\u5b50","Edit":"\u7f16\u8f91","EditTorrent":"\u7f16\u8f91\u79cd\u5b50","Episode":"\u5267\u96c6","FromLatestFile":"\u6765\u81ea\u6700\u65b0\u6587\u4ef6","Full":"\u5168\u90e8","GB":"GB","Gbps":"Gbps","Host":"\u4e3b\u673a","Info":"\u4fe1\u606f","KB":"KB","kbps":"kbps","Kilobytes":"\u5343\u5b57\u8282","LatestFilePlayed":"\u6700\u8fd1\u64ad\u653e\u7684\u6587\u4ef6\uff1a","Links":"\u94fe\u63a5","MB":"MB","Mbps":"Mbps","Name":"\u540d\u79f0","NoTorrentsAdded":"\u6ca1\u6709\u6dfb\u52a0\u79cd\u5b50","Offline":"\u79bb\u7ebf","OK":"\u786e\u5b9a","OpenLink":"\u6253\u5f00\u94fe\u63a5","Peers":"Peers","PiecesCount":"\u5757\u6570\u91cf","PiecesLength":"\u5757\u957f\u5ea6","Playlist":"\u64ad\u653e\u5217\u8868","Preload":"\u9884\u52a0\u8f7d","ProjectSource":"\u9879\u76eeGitHub","NasReleases":"NAS GitHub \u7248\u672c","PWAGuide":{"Header":"\u5b89\u88c5\u5e94\u7528\u7a0b\u5e8f","Description":"\u5c06\u5e94\u7528\u7a0b\u5e8f\u5b89\u88c5\u5230\u60a8\u7684\u8bbe\u5907\u4e0a\uff0c\u4ee5\u4fbf\u968f\u65f6\u65b9\u4fbf\u5730\u8bbf\u95ee\u3002\u65e0\u9700\u5e94\u7528\u5546\u5e97\u3001\u65e0\u9700\u4e0b\u8f7d\u3002","VLC":"\u6dfb\u52a0VLC\u6309\u94ae\u4ee5\u5728\u624b\u673a\u4e0a\u7acb\u5373\u6253\u5f00\u89c6\u9891","FirstStep":"\u70b9\u51fb","SecondStep":{"Select":"\u9009\u62e9","AddToHomeScreen":"\u6dfb\u52a0\u5230\u4e3b\u5c4f\u5e55"}},"Releases":"TorrServer\u53d1\u884c\u7248","RemoveAll":"\u5168\u90e8\u5220\u9664","RemoveViews":"\u79fb\u9664\u89c6\u56fe\u72b6\u6001","Resolution":"\u5206\u8fa8\u7387","Save":"\u4fdd\u5b58","ScrollDown":"\u5411\u4e0b\u6eda\u52a8","Season":"\u5b63","Sec":"\u79d2","Seconds":"\u79d2","SelectSeason":"\u9009\u62e9\u5b63","SettingsDialog":{"AddRetrackers":"\u6dfb\u52a0retrackers","AdditionalSettings":"\u9644\u52a0\u8bbe\u7f6e","MobileAppSettings":"\u79fb\u52a8APP\u8bbe\u7f6e","CacheBeforeReaderDesc":"\u5728\u64ad\u653e\u5e27\u524d\u9762\u7684\u7f13\u5b58","CacheAfterReaderDesc":"\u5728\u64ad\u653e\u5e27\u540e\u9762\u7684\u7f13\u5b58","CacheSize":"\u7f13\u5b58\u5927\u5c0f","CacheSettings":"\u7f13\u5b58\u8bbe\u7f6e","CacheStorageLocation":"\u7f13\u5b58\u5b58\u50a8\u4f4d\u7f6e","ConnectionsLimit":"\u8fde\u63a5\u9650\u5236","ConnectionsLimitHint":"\u63a8\u835020-25","DHT":"DHT\uff08\u5206\u5e03\u5f0f\u54c8\u5e0c\u8868\uff09","DisableDHTHint":"\u542f\u52a8\u670d\u52a1\u5668\u540e\u65e0\u7f51\u7edc\u65f6\u7981\u7528","DisablePEXHint":"\u6700\u597d\u4fdd\u6301\u542f\u7528\u72b6\u6001","DisableTCPHint":"\u5728\u672a\u542f\u7528\u03bcTP\u7684\u60c5\u51b5\u4e0b\u4e0d\u8981\u7981\u7528","DisableUPNPHint":"\u5728\u8def\u7531\u5668\u4e0a\u81ea\u52a8\u6253\u5f00\u7aef\u53e3","DisableUTPHint":"\u5efa\u8bae\u5728 Windows \u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7981\u7528","Disk":"\u78c1\u76d8","DLNA":"DLNA\u5a92\u4f53\u670d\u52a1\u5668","DontAddRetrackers":"\u4e0d\u52a0retrackers","DownloadRateLimit":"\u4e0b\u8f7d\u901f\u5ea6\u9650\u5236","EnableDebug":"\u542f\u7528\u8c03\u8bd5\u670d\u52a1\u5668\u65e5\u5fd7","EnableIPv6Hint":"\u4ec5\u5728ISP\u652f\u6301\u65f6\u542f\u7528","ForceEncrypt":"\u5f3a\u5236\u52a0\u5bc6\u6807\u5934","ForceEncryptHint":"\u53ef\u4ee5\u9632\u6b62\u8fd0\u8425\u5546\u963b\u6b62\u79cd\u5b50","FriendlyName":"DLNA\u670d\u52a1\u5668\u540d\u79f0","FriendlyNameHint":"\u7559\u7a7a\u4f7f\u7528\u9ed8\u8ba4\u503c","EnableRutorSearch":"\u6253\u5f00RuTor\u79cd\u5b50\u641c\u7d22","EnableRutorSearchHint":"\u60a8\u53ef\u4ee5\u901a\u8fc7RuTor\u641c\u7d22\u79cd\u5b50\uff0c\u5373\u4f7fRuTor\u4e0d\u53ef\u7528\u3002\u6ce8\u610f\uff1a\u6570\u636e\u5e93\u5360\u7528\u5927\u7ea6500 MB\u7684\u5b58\u50a8\u3002","PeersListenPort":"Peers\u76d1\u542c\u7aef\u53e3","PeersListenPortHint":"1024 - 65535\uff0c0 - \u81ea\u52a8","PreloadCache":"\u64ad\u653e\u524d\u9884\u52a0\u8f7d\u7f13\u5b58","ProMode":"\u4e13\u4e1a\u6a21\u5f0f","RAM":"\u5185\u5b58","ReaderReadAHead":"\u9884\u8bfb\u7f13\u5b58 (5-100%, rec. 95%)","RemoveCacheOnDrop":"\u5220\u9664\u5df2\u505c\u7528\u79cd\u5b50\u5728\u78c1\u76d8\u4e0a\u7684\u7f13\u5b58","RemoveCacheOnDropDesc":"\u5982\u679c\u7981\u7528\uff0c\u7f13\u5b58\u4f1a\u5728\u5220\u9664\u79cd\u5b50\u65f6\u79fb\u9664\u3002","RemoveRetrackers":"\u5220\u9664retrackers","ReplaceRetrackers":"\u66ff\u6362retrackers","RetrackersMode":"Retrackers\u6a21\u5f0f","ResetToDefault":"\u91cd\u7f6e\u4e3a\u9ed8\u8ba4\u503c","Settings":"\u8bbe\u7f6e","TorrentDisconnectTimeout":"\u79cd\u5b50\u65ad\u5f00\u8d85\u65f6","TorrentsSavePath":"\u79cd\u5b50\u7f13\u5b58\u4fdd\u5b58\u8def\u5f84","Upload":"\u4e0a\u4f20","UploadHint":"\u4e0d\u5efa\u8bae\u7981\u7528","UploadRateLimit":"\u4e0a\u4f20\u901f\u5ea6\u9650\u5236","UseDiskDesc":"\u6700\u597d\u4f7f\u7528\u5185\u5b58\u6216\u56fa\u6001\u5b58\u50a8\u4f5c\u4e3a\u7f13\u5b58","Tabs":{"Main":"\u4e3b\u8981","Additional":"\u9644\u52a0","AdditionalDisabled":"\uff08\u542f\u7528\u4e13\u4e1a\u6a21\u5f0f\uff09","App":"App"},"UseVLC":"\u63d0\u793a\u5728VLC\u4e2d\u6253\u5f00\u89c6\u9891","UseVLCHint":"\u5c06VLC\u64ad\u653e\u5668\u6309\u94ae\u6dfb\u52a0\u5230\u79cd\u5b50\u5185\u5bb9\u5217\u8868"},"Size":"\u5927\u5c0f","SpecialThanks":"\u7279\u522b\u611f\u8c22","Speed":"\u901f\u5ea6","Support":"\u652f\u6301","TB":"TB","Tbps":"Tbps","ThanksToEveryone":"\u611f\u8c22\u6240\u6709\u6d4b\u8bd5\u548c\u5e2e\u52a9\u7684\u4eba\u3002","TorrentAdded":"\u5df2\u6dfb\u52a0","TorrentClosed":"\u5df2\u5173\u95ed","TorrentContent":"\u79cd\u5b50\u5185\u5bb9","TorrentDetails":"\u79cd\u5b50\u8be6\u60c5","TorrentGettingInfo":"\u83b7\u53d6\u4fe1\u606f","TorrentInDb":"\u5728\u6570\u636e\u5e93\u4e2d","TorrentPreload":"\u9884\u52a0\u8f7d","TorrentSize":"\u79cd\u5b50\u5927\u5c0f","TorrentState":"\u63a7\u5236","TorrentStatus":"\u79cd\u5b50\u72b6\u6001","TorrentWorking":"\u6d3b\u8dc3","TurnOff":"\u5173\u95ed","UploadFile":"\u4e0a\u4f20\u6587\u4ef6","UploadSpeed":"\u4e0a\u4f20\u901f\u5ea6","Viewed":"\u67e5\u770b"}')},343:function(e,t){},346:function(e,t){},348:function(e,t){},350:function(e,t){},396:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n(17),i=n.n(r),o=n(63),c=n(9),s=n(487),l=n(66),d=n(471),b=n(488),p=n(489),j=n(490),u=n(491),h=n(492),x=n(493),g=window.location,O=g.protocol,m=g.hostname,f=g.port,C="".concat(O,"//").concat(m).concat(f?":".concat(f):""),v=function(){return"".concat(C,"/torrents")},S=function(){return"".concat(C,"/viewed")},y=function(){return"".concat(C,"/settings")},w=function(){return"".concat(C,"/stream")},D=function(){return"".concat(C,"/echo")},T=function(){return"".concat(C,"/stream")},k=n(187),P=n(23),M=n.n(P),R=n(12),L=n(22),A=n(469),B=n(470),F=n(472),H=n(75),N=n(105),E=n(33),z=n(133),G=n(89),I=n(189),U=n(190),V=n(191),W=n(192),Z=n(193);z.a.use(I.a).use(G.e).init({fallbackLng:"en",interpolation:{escapeValue:!1},resources:{en:{translation:U},ru:{translation:V},ua:{translation:W},zh:{translation:Z}}});var _=z.a;function K(e){if(!e)return"";var t=Math.floor(Math.log(e)/Math.log(1024));return"".concat(1*(e/Math.pow(1024,t)).toFixed(2)," ").concat([_.t("B"),_.t("KB"),_.t("MB"),_.t("GB"),_.t("TB")][t])}function J(e){if(!e)return"";var t=Math.floor(Math.log(8*e)/Math.log(1e3));return"".concat(1*(8*e/Math.pow(1e3,t)).toFixed(0)," ").concat([_.t("bps"),_.t("kbps"),_.t("Mbps"),_.t("Gbps"),_.t("Tbps")][t])}function X(e){return e&&e.connected_seeders?"".concat(e.connected_seeders," \xb7 ").concat(e.active_peers," / ").concat(e.total_peers):null}var Y=function(e){var t=e;[["(",")"],["[","]"],["{","}"]].forEach((function(e){var n="\\".concat(e[0]),a=new RegExp(n,"g"),r=Object(E.a)(t.matchAll(a)).length,i="\\".concat(e[1]),o=new RegExp(i,"g");if(r!==Object(E.a)(t.matchAll(o)).length){var c="(\\".concat(e[0],")(?!.*\\1).*"),s=new RegExp(c,"g");t=t.replace(s,"")}}));var n=!!t.match(/\.{3}$/g),a=t.replace(/[\\.| ]+$/g,"").trim();return n?"".concat(a,".."):a},$=function(){var e=Object(N.a)(Object(H.a)().mark((function e(){var t,n;return Object(H.a)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,M.a.post(v(),{action:"list"});case 3:return t=e.sent,n=t.data,e.abrupt("return",n);case 8:throw e.prev=8,e.t0=e.catch(0),new Error(null);case 11:case"end":return e.stop()}}),e,null,[[0,8]])})));return function(){return e.apply(this,arguments)}}(),Q=window.matchMedia("screen and (display-mode: standalone)").matches,q=n(36),ee=n(1),te=function(e){var t=e.color,n=Object(q.a)().palette.primary.main;return Object(ee.jsx)("svg",{height:"80px",width:"80px",fill:t||n,xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1",x:"0px",y:"0px",viewBox:"0 0 100 100",enableBackground:"new 0 0 100 100",xmlSpace:"preserve",children:Object(ee.jsxs)("g",{children:[Object(ee.jsx)("path",{d:"M18.293,93.801c0.066,0.376,0.284,0.718,0.597,0.937c0.313,0.219,0.708,0.307,1.085,0.241l70.058-12.353 c0.376-0.066,0.718-0.284,0.937-0.597c0.219-0.313,0.307-0.708,0.24-1.085l-9.502-53.891c-0.139-0.79-0.892-1.317-1.682-1.178 l-19.402,3.421L47.997,14.16c0.241-0.706,0.375-1.456,0.375-2.229c0-0.399-0.035-0.804-0.106-1.209C47.671,7.363,44.757,5,41.455,5 c-0.4,0-0.804,0.035-1.209,0.106h0c-3.359,0.595-5.723,3.509-5.723,6.812c0,0.4,0.035,0.804,0.106,1.209 c0.178,1.005,0.567,1.918,1.109,2.709l-6.875,19.061L9.968,38.228c-0.79,0.139-1.317,0.892-1.177,1.682L18.293,93.801z M40.75,7.966L40.75,7.966c0.239-0.042,0.474-0.062,0.705-0.062c1.909,0,3.612,1.373,3.953,3.324v0 c0.042,0.238,0.062,0.473,0.062,0.704c0,1.908-1.373,3.612-3.323,3.953h0.001c-0.238,0.042-0.473,0.062-0.705,0.062 c-1.908,0-3.612-1.373-3.953-3.323c-0.042-0.238-0.062-0.473-0.062-0.705C37.427,10.01,38.799,8.306,40.75,7.966z M38.059,17.96 c1.012,0.569,2.17,0.89,3.383,0.89c0.399,0,0.804-0.034,1.208-0.106h0.001c1.48-0.263,2.766-0.976,3.743-1.974l10.935,13.108 L32.16,34.315L38.059,17.96z M29.978,37.648c0.136-0.004,0.268-0.029,0.396-0.07l29.75-5.246c0.134-0.006,0.266-0.027,0.395-0.07 l18.582-3.277l8.998,51.031L20.9,91.867l-8.998-51.032L29.978,37.648z"}),Object(ee.jsx)("path",{d:"M49.984,75.561c0.809,0,1.627-0.065,2.449-0.199l0.001,0c7.425-1.213,12.701-7.627,12.701-14.919 c0-0.809-0.065-1.627-0.199-2.449c-1.213-7.425-7.626-12.701-14.919-12.701c-0.808,0-1.627,0.065-2.45,0.199 c-7.425,1.213-12.701,7.626-12.701,14.918c0,0.808,0.065,1.627,0.199,2.449C36.278,70.284,42.692,75.561,49.984,75.561z M51.967,72.496c-0.668,0.109-1.33,0.161-1.983,0.161c-5.883,0-11.079-4.265-12.053-10.265c-0.109-0.668-0.161-1.33-0.161-1.983 c0-2.108,0.555-4.123,1.534-5.892l19.693,14.176C57.206,70.645,54.782,72.039,51.967,72.496z M48.034,48.357L48.034,48.357 c0.668-0.109,1.329-0.161,1.983-0.161c5.882,0,11.079,4.265,12.053,10.265c0.109,0.667,0.161,1.329,0.161,1.983 c0,2.109-0.556,4.127-1.536,5.897L41.001,52.163C42.791,50.21,45.217,48.814,48.034,48.357z"}),Object(ee.jsx)("polygon",{points:"47.567,45.492 47.567,45.492 47.568,45.491 "})]})})},ne=function(){var e=Object(q.a)().palette.primary.main;return Object(ee.jsx)("svg",{height:"100px",width:"100px",fill:e,viewBox:"0 0 452 452",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:Object(ee.jsxs)("g",{id:"#000000",children:[Object(ee.jsx)("path",{opacity:"1.00",d:" M 210.49 18.69 C 244.92 16.12 280.02 22.13 311.46 36.47 C 344.90 51.54 374.16 75.69 395.41 105.58 C 415.62 133.87 428.55 167.34 432.48 201.89 C 438.07 248.86 427.02 297.61 401.45 337.43 C 382.92 366.59 357.02 391.04 326.80 407.80 C 300.81 422.31 271.64 431.08 241.96 433.26 C 207.37 435.97 172.14 429.83 140.54 415.51 C 109.95 401.69 82.82 380.33 62.16 353.86 C 39.25 324.67 24.38 289.21 19.78 252.38 C 14.94 214.51 20.65 175.31 36.47 140.54 C 54.11 101.38 84.24 67.99 121.37 46.39 C 148.44 30.52 179.19 20.98 210.49 18.69 M 213.46 36.60 C 178.91 38.80 145.03 50.71 116.76 70.72 C 84.67 93.21 59.84 125.88 46.91 162.88 C 34.87 196.99 32.96 234.54 41.25 269.73 C 48.89 302.45 65.53 332.98 88.79 357.21 C 113.91 383.56 146.78 402.45 182.25 410.72 C 216.67 418.86 253.37 417.21 286.87 405.85 C 329.85 391.49 367.13 361.01 389.89 321.85 C 406.02 294.41 414.96 262.84 415.73 231.03 C 416.71 196.59 408.11 161.91 390.97 132.00 C 372.31 99.13 343.57 72.09 309.61 55.49 C 279.95 40.89 246.43 34.40 213.46 36.60 Z"}),Object(ee.jsx)("path",{opacity:"1.00",d:" M 217.02 117.63 C 223.01 117.45 228.99 117.45 234.98 117.63 C 235.16 150.72 234.93 183.81 235.09 216.89 C 268.18 217.03 301.28 216.82 334.38 216.99 C 334.57 222.99 334.57 229.00 334.38 235.01 C 301.28 235.18 268.18 234.97 235.09 235.11 C 234.93 268.19 235.16 301.28 234.98 334.37 C 228.99 334.55 223.00 334.55 217.02 334.37 C 216.84 301.28 217.07 268.19 216.92 235.11 C 183.82 234.97 150.72 235.17 117.62 235.01 C 117.43 229.00 117.43 222.99 117.62 216.99 C 150.72 216.82 183.82 217.03 216.91 216.89 C 217.07 183.81 216.84 150.72 217.02 117.63 Z"})]})})},ae=function(e){var t=e.color,n=e.width,a=Object(q.a)().palette.primary.main;return Object(ee.jsxs)("svg",{width:n||"100%",height:"100%",viewBox:"96.96632385253906 377.9800109863281 873.03369140625 310.9999694824219",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 603.05 378.50 C 648.01 378.10 692.99 378.30 737.96 378.24 C 746.80 377.82 755.66 378.04 764.51 378.02 C 764.49 396.01 764.50 414.00 764.50 432.00 C 833.00 432.01 901.50 431.99 970.00 432.00 C 970.00 499.67 970.00 567.33 970.00 635.00 C 941.01 635.01 912.02 634.98 883.04 635.01 C 868.37 635.70 853.70 634.86 839.03 635.00 C 814.19 635.00 789.35 634.99 764.50 635.00 C 764.50 652.99 764.49 670.99 764.51 688.98 C 722.02 688.64 679.51 688.76 637.01 688.76 C 610.36 688.24 583.70 688.61 557.04 688.50 C 535.36 688.64 513.69 688.06 492.00 688.25 C 467.01 688.45 442.03 687.89 417.04 688.00 C 393.35 688.06 369.67 687.54 345.97 687.76 C 331.65 687.28 317.32 687.58 303.00 687.51 C 287.69 686.89 272.35 687.61 257.03 686.99 C 244.25 687.26 231.37 686.92 218.84 684.09 C 183.39 676.56 151.36 655.48 129.16 627.00 C 110.45 603.11 98.57 573.55 97.40 543.09 C 95.46 518.81 100.09 494.17 110.06 471.99 C 126.89 434.21 159.00 403.08 198.12 389.13 C 227.91 377.22 260.63 379.63 292.01 379.76 C 308.00 379.13 324.02 379.87 340.01 379.25 C 355.65 379.17 371.30 379.41 386.95 379.13 C 409.62 378.70 432.32 379.37 455.00 378.74 C 504.35 378.92 553.69 378.31 603.05 378.50 M 348.01 411.51 C 320.98 411.52 293.95 411.45 266.93 411.54 C 256.91 412.17 246.82 411.10 236.84 412.46 C 208.12 415.88 181.14 430.38 161.51 451.48 C 144.71 469.43 133.29 492.57 130.42 517.07 C 124.64 554.31 138.80 593.31 165.32 619.73 C 177.83 632.43 193.39 641.88 210.05 648.05 C 228.40 654.56 248.11 655.87 267.42 655.59 C 319.94 655.19 372.45 655.94 424.97 655.75 C 450.32 655.57 475.67 656.17 501.02 656.00 C 525.32 656.12 549.63 655.73 573.92 656.26 C 626.62 656.05 679.30 656.63 732.00 656.50 C 732.00 574.50 732.00 492.50 732.00 410.51 C 689.66 410.38 647.34 410.94 605.01 410.75 C 587.68 410.55 570.37 411.13 553.05 411.00 C 526.36 411.00 499.67 411.01 472.98 411.00 C 431.33 411.69 389.65 410.81 348.01 411.51 M 764.49 464.27 C 764.51 510.42 764.51 556.58 764.49 602.73 C 822.24 602.77 879.99 602.74 937.74 602.75 C 938.25 556.59 937.90 510.41 937.99 464.25 C 880.16 464.27 822.32 464.23 764.49 464.27 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 842.49 484.02 C 853.57 483.79 864.63 484.32 875.71 484.25 C 876.25 495.35 875.68 506.46 875.04 517.54 C 864.40 517.59 853.77 516.92 843.13 517.38 C 842.74 516.32 842.40 515.20 842.48 514.06 C 842.50 504.04 842.50 494.03 842.49 484.02 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 287.02 517.49 C 345.02 517.51 403.02 517.49 461.02 517.50 C 499.18 517.57 537.34 517.29 575.49 517.75 C 575.51 528.25 575.51 538.75 575.49 549.25 C 531.01 549.74 486.52 549.41 442.04 549.50 C 390.37 549.51 338.69 549.49 287.02 549.51 C 286.99 538.84 286.99 528.16 287.02 517.49 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 842.78 549.74 C 853.53 549.91 864.26 549.51 875.01 549.44 C 875.73 560.52 876.27 571.65 875.71 582.75 C 864.63 582.80 853.57 583.17 842.49 582.99 C 842.69 571.91 842.12 560.80 842.78 549.74 Z"})]})},re=function(e){var t=e.color,n=e.width,a=Object(q.a)().palette.primary.main;return Object(ee.jsxs)("svg",{width:n||"100%",height:"100%",viewBox:"13.928732872009277 69.97769927978516 172.15252685546875 60.067893981933594",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 18.20 70.32 C 19.46 70.07 20.73 69.96 22.01 69.98 C 74.36 70.03 126.72 69.97 179.08 70.01 C 182.16 69.72 185.50 71.74 185.82 74.99 C 186.15 79.61 186.20 84.29 185.78 88.91 C 183.66 90.31 179.87 90.73 180.00 93.99 C 179.86 97.27 183.68 97.69 185.79 99.12 C 186.27 107.07 185.91 115.06 185.99 123.03 C 186.29 126.14 184.25 129.52 180.97 129.83 C 175.33 130.27 169.65 129.88 164.00 130.00 C 147.71 129.85 131.39 130.31 115.12 129.78 C 112.92 127.53 114.51 123.74 113.95 120.86 C 114.67 118.55 111.27 116.64 110.24 119.19 C 109.73 122.42 110.24 125.71 109.79 128.95 C 108.65 130.43 106.57 129.83 104.96 130.03 C 76.94 129.95 48.93 130.04 20.91 129.99 C 17.47 130.37 13.95 127.70 14.07 124.10 C 14.02 115.76 13.75 107.39 14.22 99.07 C 16.33 97.68 20.10 97.27 20.00 94.03 C 20.17 90.71 16.28 90.35 14.20 88.85 C 13.80 84.56 13.92 80.24 14.07 75.94 C 14.03 73.43 15.75 70.97 18.20 70.32 M 18.23 75.15 C 17.73 78.78 18.05 82.46 18.02 86.11 C 21.05 87.67 24.20 90.21 23.99 94.00 C 24.20 97.79 21.03 100.31 18.01 101.89 C 18.15 109.55 17.67 117.24 18.22 124.87 C 18.45 125.10 18.90 125.56 19.13 125.78 C 26.06 126.33 33.03 125.84 39.98 126.00 C 39.99 123.36 40.01 120.72 40.09 118.08 C 62.07 117.87 84.05 118.10 106.03 117.96 C 107.62 116.17 109.32 113.83 112.02 114.00 C 114.70 113.85 116.37 116.19 117.96 117.96 C 131.94 118.09 145.93 117.88 159.91 118.08 C 159.98 120.72 160.01 123.36 160.02 126.00 C 166.94 125.83 173.90 126.34 180.80 125.78 C 181.05 125.57 181.54 125.14 181.78 124.93 C 182.32 117.28 181.85 109.57 181.99 101.90 C 178.96 100.31 175.78 97.79 176.01 93.99 C 175.79 90.20 178.94 87.66 181.98 86.11 C 181.94 82.47 182.27 78.80 181.77 75.19 C 181.16 73.66 179.34 74.17 178.06 73.99 C 126.04 74.00 74.01 74.01 21.99 73.99 C 20.69 74.16 18.91 73.67 18.23 75.15 M 42.00 120.00 C 42.00 122.00 42.00 124.00 42.00 126.00 C 43.33 126.00 44.67 126.00 46.00 126.00 C 46.00 124.00 46.00 122.00 46.00 120.00 C 44.67 120.00 43.33 120.00 42.00 120.00 M 48.00 120.00 C 48.00 122.00 48.00 124.00 48.00 126.00 C 49.33 126.00 50.67 126.00 52.00 126.00 C 52.00 124.00 52.00 122.00 52.00 120.00 C 50.67 120.00 49.33 120.00 48.00 120.00 M 54.00 120.00 C 54.00 122.00 54.00 124.00 54.00 126.00 C 55.33 126.00 56.67 126.00 58.00 126.00 C 58.00 124.00 58.00 122.00 58.00 120.00 C 56.67 120.00 55.33 120.00 54.00 120.00 M 60.00 120.00 C 60.00 122.00 60.00 124.00 60.00 126.00 C 61.33 126.00 62.67 126.00 64.00 126.00 C 64.00 124.00 64.00 122.00 64.00 120.00 C 62.67 120.00 61.33 120.00 60.00 120.00 M 66.00 120.00 C 66.00 122.00 66.00 124.00 66.00 126.00 C 67.33 126.00 68.67 126.00 70.00 126.00 C 70.00 124.00 70.00 122.00 70.00 120.00 C 68.67 120.00 67.33 120.00 66.00 120.00 M 72.00 120.00 C 72.00 122.00 72.00 124.00 72.00 126.00 C 73.33 126.00 74.67 126.00 76.00 126.00 C 76.00 124.00 76.00 122.00 76.00 120.00 C 74.67 120.00 73.33 120.00 72.00 120.00 M 78.00 120.00 C 78.00 122.00 78.00 124.00 78.00 126.00 C 79.33 126.00 80.67 126.00 82.00 126.00 C 82.00 124.00 82.00 122.00 82.00 120.00 C 80.67 120.00 79.33 120.00 78.00 120.00 M 84.00 120.00 C 84.00 122.00 84.00 124.00 84.00 126.00 C 85.33 126.00 86.67 126.00 88.00 126.00 C 88.00 124.00 88.00 122.00 88.00 120.00 C 86.67 120.00 85.33 120.00 84.00 120.00 M 90.00 120.00 C 90.00 122.00 90.00 124.00 90.00 126.00 C 91.33 126.00 92.67 126.00 94.00 126.00 C 94.00 124.00 94.00 122.00 94.00 120.00 C 92.67 120.00 91.33 120.00 90.00 120.00 M 96.00 120.00 C 96.00 122.00 96.00 124.00 96.00 126.00 C 97.33 126.00 98.67 126.00 100.00 126.00 C 100.00 124.00 100.00 122.00 100.00 120.00 C 98.67 120.00 97.33 120.00 96.00 120.00 M 102.00 120.00 C 102.00 122.00 102.00 124.00 102.00 126.00 C 103.33 126.00 104.67 126.00 106.00 126.00 C 106.00 124.00 106.00 122.00 106.00 120.00 C 104.67 120.00 103.33 120.00 102.00 120.00 M 118.00 120.00 C 118.00 122.00 118.00 124.00 118.00 126.00 C 119.33 126.00 120.67 126.00 122.00 126.00 C 122.00 124.00 122.00 122.00 122.00 120.00 C 120.67 120.00 119.33 120.00 118.00 120.00 M 124.00 120.00 C 124.00 122.00 124.00 124.00 124.00 126.00 C 125.33 126.00 126.67 126.00 128.00 126.00 C 128.00 124.00 128.00 122.00 128.00 120.00 C 126.67 120.00 125.33 120.00 124.00 120.00 M 130.00 120.00 C 130.00 122.00 130.00 124.00 130.00 126.00 C 131.33 126.00 132.67 126.00 134.00 126.00 C 134.00 124.00 134.00 122.00 134.00 120.00 C 132.67 120.00 131.33 120.00 130.00 120.00 M 136.00 120.00 C 136.00 122.00 136.00 124.00 136.00 126.00 C 137.33 126.00 138.67 126.00 140.00 126.00 C 140.00 124.00 140.00 122.00 140.00 120.00 C 138.67 120.00 137.33 120.00 136.00 120.00 M 142.00 120.00 C 142.00 122.00 142.00 124.00 142.00 126.00 C 143.33 126.00 144.66 126.00 146.00 126.00 C 146.00 124.00 146.00 122.00 146.00 120.00 C 144.67 120.00 143.33 120.00 142.00 120.00 M 148.00 120.00 C 148.00 122.00 148.00 124.00 148.00 126.00 C 149.33 126.00 150.66 126.00 152.00 126.00 C 152.00 124.00 152.00 122.00 152.00 120.00 C 150.67 120.00 149.33 120.00 148.00 120.00 M 154.00 120.00 C 154.00 122.00 154.00 124.00 154.00 126.00 C 155.33 126.00 156.66 126.00 158.00 126.00 C 158.00 124.00 158.00 122.00 158.00 120.00 C 156.67 120.00 155.33 120.00 154.00 120.00 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 30.03 81.93 C 29.85 80.12 30.82 77.95 32.93 78.11 C 37.91 77.93 42.93 77.74 47.89 78.25 C 50.98 79.21 49.68 83.33 50.10 85.77 C 49.59 85.78 48.57 85.80 48.06 85.80 C 48.01 83.89 47.96 81.98 47.90 80.08 C 42.62 79.96 37.35 79.96 32.08 80.08 C 31.95 89.36 31.95 98.64 32.08 107.91 C 37.36 108.05 42.64 108.05 47.92 107.91 C 48.02 104.01 48.01 100.11 48.02 96.21 C 48.51 96.21 49.48 96.21 49.97 96.20 C 49.93 100.09 50.29 104.01 49.76 107.87 C 49.40 110.05 46.77 109.95 45.09 110.01 C 40.74 109.96 36.36 110.29 32.04 109.74 C 29.91 109.31 30.07 106.74 29.99 105.08 C 30.02 97.37 29.93 89.65 30.03 81.93 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 56.08 78.25 C 61.33 77.80 66.67 77.79 71.92 78.25 C 74.45 78.84 73.88 82.03 74.03 83.96 C 73.88 91.66 74.20 99.37 73.89 107.07 C 73.99 110.35 68.80 111.17 67.40 108.44 C 68.91 108.19 70.43 107.96 71.95 107.75 C 72.01 98.53 72.08 89.30 71.91 80.08 C 66.64 79.96 61.36 79.96 56.08 80.08 C 55.95 89.35 55.95 98.63 56.08 107.90 C 58.65 107.98 61.23 108.01 63.80 108.04 C 63.80 108.54 63.78 109.52 63.78 110.02 C 60.75 109.51 55.74 111.45 54.25 107.89 C 53.63 99.96 54.19 91.96 53.97 84.00 C 54.13 82.06 53.53 78.84 56.08 78.25 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 79.38 78.49 C 84.51 77.49 89.88 78.03 95.10 78.12 C 97.17 77.98 98.14 80.11 97.97 81.89 C 98.04 89.96 98.04 98.04 97.97 106.11 C 98.13 107.87 97.20 109.99 95.14 109.88 C 90.11 110.08 85.02 110.27 80.01 109.73 C 77.91 109.26 78.05 106.71 77.99 105.04 C 77.99 97.70 77.99 90.35 77.99 83.01 C 78.12 81.47 77.82 79.41 79.38 78.49 M 80.08 80.08 C 79.95 89.36 79.95 98.64 80.08 107.92 C 85.36 108.04 90.64 108.04 95.92 107.92 C 96.05 98.64 96.05 89.36 95.92 80.08 C 90.64 79.96 85.36 79.96 80.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 103.34 78.52 C 108.47 77.46 113.88 78.05 119.12 78.12 C 121.20 77.99 122.14 80.13 121.97 81.91 C 122.04 89.97 122.04 98.04 121.97 106.10 C 122.14 107.87 121.19 110.00 119.12 109.88 C 114.37 110.13 109.59 110.13 104.85 109.88 C 102.80 109.99 101.86 107.88 102.03 106.13 C 101.92 98.40 102.03 90.66 101.99 82.93 C 102.13 81.44 101.84 79.43 103.34 78.52 M 104.08 80.08 C 103.95 89.36 103.95 98.64 104.08 107.92 C 109.36 108.05 114.64 108.04 119.92 107.92 C 120.06 98.64 120.05 89.36 119.92 80.08 C 114.64 79.96 109.36 79.95 104.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 127.43 78.45 C 131.88 77.51 136.52 78.12 141.04 77.99 C 143.01 77.87 145.98 78.22 145.88 80.86 C 146.19 88.89 145.92 96.94 146.01 104.98 C 145.93 106.67 146.12 109.28 143.96 109.74 C 141.40 110.19 138.79 109.99 136.21 110.02 C 136.21 109.52 136.21 108.53 136.21 108.04 C 138.78 108.01 141.35 107.98 143.92 107.91 C 144.05 98.63 144.06 89.35 143.92 80.08 C 138.64 79.96 133.36 79.96 128.09 80.08 C 128.02 82.64 127.99 85.21 127.96 87.78 C 127.47 87.79 126.48 87.79 125.99 87.79 C 126.38 84.77 124.90 80.72 127.43 78.45 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 151.38 78.48 C 155.82 77.48 160.48 78.14 165.01 77.99 C 167.01 77.85 170.02 78.25 169.89 80.92 C 170.18 88.94 169.92 96.98 170.01 105.01 C 170.13 107.00 169.77 109.99 167.12 109.88 C 162.10 110.07 157.02 110.27 152.02 109.74 C 149.89 109.27 150.05 106.67 149.99 104.99 C 149.99 97.64 149.99 90.30 149.99 82.95 C 150.12 81.43 149.84 79.39 151.38 78.48 M 152.08 80.08 C 151.95 89.36 151.95 98.64 152.08 107.92 C 157.36 108.04 162.64 108.04 167.92 107.92 C 168.05 98.64 168.05 89.36 167.92 80.08 C 162.64 79.96 157.36 79.96 152.08 80.08 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 48.01 88.19 C 48.50 88.19 49.49 88.19 49.99 88.19 C 49.98 90.06 49.98 91.92 49.99 93.78 C 49.49 93.79 48.51 93.79 48.01 93.79 C 48.01 91.92 48.01 90.06 48.01 88.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 126.01 92.19 C 126.51 92.19 127.49 92.19 127.99 92.19 C 127.98 94.06 127.98 95.93 127.98 97.80 C 127.49 97.79 126.50 97.78 126.01 97.78 C 126.01 95.91 126.01 94.05 126.01 92.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 125.98 100.19 C 126.48 100.19 127.47 100.19 127.96 100.19 C 127.99 102.75 128.02 105.32 128.08 107.88 C 129.98 107.95 131.89 108.01 133.81 108.07 C 133.80 108.57 133.78 109.59 133.77 110.10 C 131.39 109.71 128.07 110.79 126.45 108.53 C 125.66 105.83 126.07 102.96 125.98 100.19 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 24.41 112.66 C 27.59 110.67 32.28 113.20 32.00 117.04 C 32.18 120.52 28.24 123.02 25.11 121.66 C 21.33 120.42 20.93 114.50 24.41 112.66 M 26.15 114.12 C 24.25 114.47 23.50 116.93 24.38 118.50 C 25.45 120.81 29.45 120.37 29.89 117.81 C 30.58 115.59 28.37 113.39 26.15 114.12 Z"}),Object(ee.jsx)("path",{fill:t||a,opacity:"1.00",d:" M 170.48 112.62 C 173.67 110.70 178.29 113.25 178.00 117.06 C 178.16 120.55 174.19 123.04 171.06 121.64 C 167.28 120.35 166.95 114.41 170.48 112.62 M 172.11 114.13 C 169.72 114.60 169.28 118.30 171.30 119.51 C 173.13 120.90 176.17 119.39 175.97 117.02 C 176.16 114.97 173.98 113.54 172.11 114.13 Z"})]})},ie=function(){var e=Object(q.a)().palette.primary.main,t="#00a572"===e?"#74c39c":"#4a5255";return Object(ee.jsxs)("svg",{width:"150px",height:"150px",viewBox:"0 0 512 512",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:[Object(ee.jsxs)("g",{id:e,children:[Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 102.41 0.00 L 319.87 0.00 C 320.21 29.68 319.87 59.37 320.04 89.05 C 320.29 97.32 323.88 105.47 329.94 111.12 C 336.01 117.07 344.56 120.18 353.01 120.01 C 382.02 119.87 411.04 120.22 440.05 119.83 C 439.94 236.88 440.04 353.93 440.00 470.98 C 440.01 478.16 440.50 485.68 437.47 492.41 C 432.79 503.85 421.05 511.80 408.71 512.00 L 103.28 512.00 C 90.95 511.79 79.20 503.84 74.53 492.42 C 72.06 486.96 71.87 480.87 71.99 474.97 C 72.01 327.63 71.99 180.30 72.00 32.96 C 71.95 27.61 73.03 22.22 75.52 17.46 C 80.55 7.39 91.19 0.57 102.41 0.00 M 360.00 382.07 C 358.69 383.73 359.01 385.99 358.90 387.97 C 358.95 396.36 358.91 404.75 358.93 413.14 C 352.50 403.51 346.13 393.83 339.77 384.16 C 338.65 382.47 337.13 380.65 334.92 380.63 C 331.97 380.41 329.13 382.87 329.22 385.89 C 328.94 396.58 329.24 407.28 329.08 417.98 C 329.14 420.43 328.85 422.98 329.54 425.38 C 330.75 429.14 337.11 428.63 337.54 424.63 C 338.19 415.09 337.55 405.51 337.83 395.95 C 343.71 404.78 349.41 413.73 355.26 422.58 C 356.92 424.93 358.74 427.96 362.00 428.00 C 365.02 428.51 367.54 425.83 367.40 422.90 C 367.55 411.27 367.39 399.62 367.48 387.99 C 367.40 386.11 367.63 384.06 366.61 382.38 C 365.24 380.16 361.58 380.00 360.00 382.07 M 100.79 382.81 C 98.94 384.82 100.19 388.63 103.01 388.89 C 106.91 389.29 110.85 388.97 114.77 389.07 C 114.77 399.73 114.78 410.39 114.75 421.05 C 114.76 423.37 114.89 426.34 117.28 427.52 C 119.95 429.02 123.67 427.14 123.86 424.04 C 124.22 412.40 123.84 400.72 124.04 389.07 C 128.25 388.87 132.57 389.54 136.71 388.62 C 140.15 387.40 139.25 381.72 135.61 381.56 C 126.10 381.14 116.55 381.57 107.03 381.37 C 104.95 381.53 102.34 381.06 100.79 382.81 M 156.46 381.58 C 150.26 383.15 145.11 388.05 143.12 394.11 C 140.49 401.86 140.79 410.83 144.81 418.06 C 151.07 429.05 167.20 430.79 177.27 424.26 C 183.48 420.06 186.24 412.28 186.28 405.03 C 186.43 398.11 184.59 390.56 179.19 385.85 C 173.03 380.52 164.12 379.62 156.46 381.58 M 197.74 381.67 C 195.24 381.99 194.12 384.61 194.23 386.87 C 194.06 397.92 194.27 408.97 194.15 420.02 C 194.24 422.43 193.92 425.36 195.97 427.11 C 198.62 429.25 203.28 427.47 203.31 423.89 C 203.66 418.45 203.32 412.99 203.49 407.54 C 206.76 407.72 210.68 407.24 213.15 409.89 C 217.60 414.61 220.01 420.80 223.85 425.97 C 225.63 428.66 230.20 428.72 231.83 425.86 C 232.87 424.27 231.80 422.43 231.24 420.89 C 228.63 415.38 225.17 409.99 220.02 406.56 C 223.42 405.53 227.11 404.31 229.29 401.31 C 233.14 395.94 231.83 387.34 226.14 383.76 C 221.99 381.01 216.77 381.52 212.04 381.39 C 207.28 381.52 202.48 381.08 197.74 381.67 M 240.23 386.91 C 240.19 398.28 240.20 409.66 240.22 421.03 C 240.25 423.12 240.14 425.65 241.97 427.09 C 244.58 429.23 249.25 427.52 249.33 423.98 C 249.76 418.50 249.34 413.00 249.49 407.51 C 252.77 407.64 256.62 407.29 259.13 409.85 C 263.88 414.69 266.10 421.38 270.41 426.55 C 272.74 429.20 278.48 428.00 278.28 424.04 C 276.28 417.09 271.87 410.81 266.09 406.46 C 269.75 405.55 273.64 404.05 275.74 400.71 C 278.91 395.49 277.81 387.82 272.73 384.18 C 268.85 381.14 263.64 381.44 259.00 381.41 C 254.02 381.52 249.02 381.13 244.05 381.58 C 241.41 381.77 240.05 384.51 240.23 386.91 M 286.38 386.01 C 286.17 397.35 286.39 408.70 286.27 420.04 C 286.31 422.30 286.17 425.31 288.52 426.53 C 291.20 427.60 294.20 427.07 297.03 427.21 C 304.36 427.04 311.73 427.52 319.04 426.95 C 322.44 426.37 322.43 420.75 319.05 420.15 C 311.25 419.44 303.38 420.13 295.56 419.82 C 295.59 415.47 295.58 411.12 295.58 406.78 C 302.60 406.71 309.65 407.09 316.66 406.54 C 320.07 405.84 319.57 399.91 315.98 399.96 C 309.20 399.54 302.39 399.95 295.59 399.80 C 295.57 396.05 295.57 392.30 295.58 388.55 C 303.03 388.43 310.50 388.74 317.94 388.37 C 321.67 388.25 321.80 381.95 318.11 381.66 C 309.41 381.03 300.65 381.57 291.93 381.42 C 289.16 381.15 286.27 383.00 286.38 386.01 M 375.06 381.95 C 372.19 383.34 372.77 388.27 375.95 388.84 C 379.96 389.33 384.02 388.96 388.05 389.08 C 387.92 400.08 388.05 411.07 387.99 422.07 C 387.75 424.61 389.07 427.71 391.95 427.92 C 394.85 428.51 397.33 425.86 397.14 423.05 C 397.37 411.73 397.16 400.40 397.23 389.08 C 401.42 388.89 405.69 389.52 409.82 388.64 C 413.41 387.46 412.48 381.48 408.64 381.52 C 400.79 381.23 392.93 381.50 385.08 381.39 C 381.74 381.50 378.31 381.05 375.06 381.95 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 160.39 388.45 C 164.79 387.33 170.01 388.38 173.03 391.97 C 176.12 395.52 177.00 400.46 176.87 405.04 C 176.76 409.47 175.56 414.16 172.29 417.34 C 167.50 421.98 158.82 421.68 154.58 416.43 C 150.59 411.44 150.26 404.45 151.51 398.43 C 152.46 393.85 155.68 389.57 160.39 388.45 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 203.47 388.42 C 208.28 388.55 213.18 387.93 217.93 388.93 C 222.82 390.10 223.71 398.14 218.81 399.89 C 213.88 401.57 208.52 400.89 203.40 400.90 C 203.44 396.73 203.45 392.57 203.47 388.42 Z"}),Object(ee.jsx)("path",{fill:e,opacity:"1.00",d:" M 249.45 388.38 C 254.29 388.56 259.22 387.96 264.00 388.94 C 268.52 390.07 269.67 397.04 265.66 399.44 C 260.63 401.83 254.85 400.80 249.47 400.94 C 249.51 396.75 249.48 392.57 249.45 388.38 Z"})]}),Object(ee.jsx)("g",{id:t,children:Object(ee.jsx)("path",{fill:t,opacity:"1.00",d:" M 319.87 0.00 L 320.20 0.00 C 360.20 39.89 400.19 79.79 440.05 119.83 C 411.04 120.22 382.02 119.87 353.01 120.01 C 344.56 120.18 336.01 117.07 329.94 111.12 C 323.88 105.47 320.29 97.32 320.04 89.05 C 319.87 59.37 320.21 29.68 319.87 0.00 Z"})}),Object(ee.jsxs)("g",{id:"#fdfdfd",children:[Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 360.00 382.07 C 361.58 380.00 365.24 380.16 366.61 382.38 C 367.63 384.06 367.40 386.11 367.48 387.99 C 367.39 399.62 367.55 411.27 367.40 422.90 C 367.54 425.83 365.02 428.51 362.00 428.00 C 358.74 427.96 356.92 424.93 355.26 422.58 C 349.41 413.73 343.71 404.78 337.83 395.95 C 337.55 405.51 338.19 415.09 337.54 424.63 C 337.11 428.63 330.75 429.14 329.54 425.38 C 328.85 422.98 329.14 420.43 329.08 417.98 C 329.24 407.28 328.94 396.58 329.22 385.89 C 329.13 382.87 331.97 380.41 334.92 380.63 C 337.13 380.65 338.65 382.47 339.77 384.16 C 346.13 393.83 352.50 403.51 358.93 413.14 C 358.91 404.75 358.95 396.36 358.90 387.97 C 359.01 385.99 358.69 383.73 360.00 382.07 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 100.79 382.81 C 102.34 381.06 104.95 381.53 107.03 381.37 C 116.55 381.57 126.10 381.14 135.61 381.56 C 139.25 381.72 140.15 387.40 136.71 388.62 C 132.57 389.54 128.25 388.87 124.04 389.07 C 123.84 400.72 124.22 412.40 123.86 424.04 C 123.67 427.14 119.95 429.02 117.28 427.52 C 114.89 426.34 114.76 423.37 114.75 421.05 C 114.78 410.39 114.77 399.73 114.77 389.07 C 110.85 388.97 106.91 389.29 103.01 388.89 C 100.19 388.63 98.94 384.82 100.79 382.81 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 156.46 381.58 C 164.12 379.62 173.03 380.52 179.19 385.85 C 184.59 390.56 186.43 398.11 186.28 405.03 C 186.24 412.28 183.48 420.06 177.27 424.26 C 167.20 430.79 151.07 429.05 144.81 418.06 C 140.79 410.83 140.49 401.86 143.12 394.11 C 145.11 388.05 150.26 383.15 156.46 381.58 M 160.39 388.45 C 155.68 389.57 152.46 393.85 151.51 398.43 C 150.26 404.45 150.59 411.44 154.58 416.43 C 158.82 421.68 167.50 421.98 172.29 417.34 C 175.56 414.16 176.76 409.47 176.87 405.04 C 177.00 400.46 176.12 395.52 173.03 391.97 C 170.01 388.38 164.79 387.33 160.39 388.45 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 197.74 381.67 C 202.48 381.08 207.28 381.52 212.04 381.39 C 216.77 381.52 221.99 381.01 226.14 383.76 C 231.83 387.34 233.14 395.94 229.29 401.31 C 227.11 404.31 223.42 405.53 220.02 406.56 C 225.17 409.99 228.63 415.38 231.24 420.89 C 231.80 422.43 232.87 424.27 231.83 425.86 C 230.20 428.72 225.63 428.66 223.85 425.97 C 220.01 420.80 217.60 414.61 213.15 409.89 C 210.68 407.24 206.76 407.72 203.49 407.54 C 203.32 412.99 203.66 418.45 203.31 423.89 C 203.28 427.47 198.62 429.25 195.97 427.11 C 193.92 425.36 194.24 422.43 194.15 420.02 C 194.27 408.97 194.06 397.92 194.23 386.87 C 194.12 384.61 195.24 381.99 197.74 381.67 M 203.47 388.42 C 203.45 392.57 203.44 396.73 203.40 400.90 C 208.52 400.89 213.88 401.57 218.81 399.89 C 223.71 398.14 222.82 390.10 217.93 388.93 C 213.18 387.93 208.28 388.55 203.47 388.42 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 240.23 386.91 C 240.05 384.51 241.41 381.77 244.05 381.58 C 249.02 381.13 254.02 381.52 259.00 381.41 C 263.64 381.44 268.85 381.14 272.73 384.18 C 277.81 387.82 278.91 395.49 275.74 400.71 C 273.64 404.05 269.75 405.55 266.09 406.46 C 271.87 410.81 276.28 417.09 278.28 424.04 C 278.48 428.00 272.74 429.20 270.41 426.55 C 266.10 421.38 263.88 414.69 259.13 409.85 C 256.62 407.29 252.77 407.64 249.49 407.51 C 249.34 413.00 249.76 418.50 249.33 423.98 C 249.25 427.52 244.58 429.23 241.97 427.09 C 240.14 425.65 240.25 423.12 240.22 421.03 C 240.20 409.66 240.19 398.28 240.23 386.91 M 249.45 388.38 C 249.48 392.57 249.51 396.75 249.47 400.94 C 254.85 400.80 260.63 401.83 265.66 399.44 C 269.67 397.04 268.52 390.07 264.00 388.94 C 259.22 387.96 254.29 388.56 249.45 388.38 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 286.38 386.01 C 286.27 383.00 289.16 381.15 291.93 381.42 C 300.65 381.57 309.41 381.03 318.11 381.66 C 321.80 381.95 321.67 388.25 317.94 388.37 C 310.50 388.74 303.03 388.43 295.58 388.55 C 295.57 392.30 295.57 396.05 295.59 399.80 C 302.39 399.95 309.20 399.54 315.98 399.96 C 319.57 399.91 320.07 405.84 316.66 406.54 C 309.65 407.09 302.60 406.71 295.58 406.78 C 295.58 411.12 295.59 415.47 295.56 419.82 C 303.38 420.13 311.25 419.44 319.05 420.15 C 322.43 420.75 322.44 426.37 319.04 426.95 C 311.73 427.52 304.36 427.04 297.03 427.21 C 294.20 427.07 291.20 427.60 288.52 426.53 C 286.17 425.31 286.31 422.30 286.27 420.04 C 286.39 408.70 286.17 397.35 286.38 386.01 Z"}),Object(ee.jsx)("path",{fill:"#fdfdfd",opacity:"1.00",d:" M 375.06 381.95 C 378.31 381.05 381.74 381.50 385.08 381.39 C 392.93 381.50 400.79 381.23 408.64 381.52 C 412.48 381.48 413.41 387.46 409.82 388.64 C 405.69 389.52 401.42 388.89 397.23 389.08 C 397.16 400.40 397.37 411.73 397.14 423.05 C 397.33 425.86 394.85 428.51 391.95 427.92 C 389.07 427.71 387.75 424.61 387.99 422.07 C 388.05 411.07 387.92 400.08 388.05 389.08 C 384.02 388.96 379.96 389.33 375.95 388.84 C 372.77 388.27 372.19 383.34 375.06 381.95 Z"})]})]})},oe=n(403),ce=n(458),se=n(26),le=n.n(se),de=n(457),be=n(500),pe=function(e){var t=Object(a.useState)({}),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useRef)(!0),s=Object(a.useRef)(null);return Object(a.useEffect)((function(){return function(){o.current=!1}}),[]),Object(a.useEffect)((function(){return e?s.current=setInterval((function(){var t=function(e){return o.current&&i(e)};M.a.post("".concat(C,"/cache"),{action:"get",hash:e}).then((function(e){var n=e.data;return t(n)})).catch((function(){return t({})}))}),100):clearInterval(s.current),function(){return clearInterval(s.current)}}),[e]),r},je=n(443),ue=n(445),he=n(446),xe=n(402),ge=n(74),Oe=n.n(ge),me=n(447),fe=Object(je.a)({appBar:Object(L.a)({position:"relative"},Q&&{paddingTop:"30px"}),title:{marginLeft:"5px",flex:1}});function Ce(e){var t=e.title,n=e.onClose,a=e.onBack,r=fe();return Object(ee.jsx)(ue.a,{className:r.appBar,children:Object(ee.jsxs)(he.a,{children:[a&&Object(ee.jsx)(xe.a,{edge:"start",color:"inherit",onClick:a,"aria-label":"back",children:Object(ee.jsx)(me.a,{})}),Object(ee.jsx)(l.a,{variant:"h6",className:r.title,children:t}),Object(ee.jsx)(xe.a,{autoFocus:!0,color:"inherit",onClick:n,"aria-label":"close",style:{marginRight:"-10px"},children:Object(ee.jsx)(Oe.a,{})})]})})}var ve,Se,ye,we,De,Te,ke,Pe,Me,Re,Le,Ae=n(194),Be=n(87),Fe=n.n(Be),He=n(205),Ne=n(448),Ee=n(27),ze={light:{app:{headerToggleColor:"#4db380",appSecondaryColor:"#cbe8d9",sidebarBGColor:"#575757",sidebarFillColor:"#dee3e5",paperColor:"#eeeeee"},torrentCard:{accentCardColor:"#337a57",buttonBGColor:Object(Ee.a)("#337a57",.5),cardPrimaryColor:"#00a572",cardSecondaryColor:"#74c39c"},dialogTorrentDetailsContent:{posterBGColor:"#74c39c",gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",chacheSectionBGColor:"#88cdaa",widgetFontColor:"#fff",titleFontColor:"#000",subNameFontColor:"#7c7b7c",torrentFilesSectionBGColor:"#f1eff3"},detailedView:{gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",cacheSectionBGColor:"#fff"},addDialog:{gradientStartColor:"#e4f6ed",gradientEndColor:"#b5dec9",fontColor:"#000",notificationErrorBGColor:"#cda184",notificationSuccessBGColor:"#88cdaa",languageSwitchBGColor:"#74c39c",languageSwitchFontColor:"#e4f6ed",posterBGColor:"#74c39c"},torrentFunctions:{fontColor:"#000"},table:{defaultPrimaryColor:"#009879",defaultSecondaryColor:"#00a383",defaultTertiaryColor:"#03aa89"},settingsDialog:{contentBG:"#f1eff3",footerBG:"#fff"}},dark:{app:{headerToggleColor:"#545a5e",appSecondaryColor:"#545a5e",sidebarBGColor:"#323637",sidebarFillColor:"#dee3e5",paperColor:"#323637"},torrentCard:{accentCardColor:"#323637",buttonBGColor:Object(Ee.a)("#323637",.5),cardPrimaryColor:"#545a5e",cardSecondaryColor:Object(Ee.a)("#dee3e5",.4)},dialogTorrentDetailsContent:{posterBGColor:Object(Ee.a)("#dee3e5",.4),gradientStartColor:"#656f76",gradientEndColor:"#545a5e",chacheSectionBGColor:"#3c4244",widgetFontColor:Object(Ee.a)("#fff",.8),titleFontColor:"#f1eff3",subNameFontColor:"#dee3e5",torrentFilesSectionBGColor:Object(Ee.a)("#545a5e",.9)},detailedView:{gradientStartColor:"#656f76",gradientEndColor:"#545a5e",cacheSectionBGColor:"#949ca0"},addDialog:{gradientStartColor:"#656f76",gradientEndColor:"#545a5e",fontColor:"#fff",notificationErrorBGColor:"#c82e3f",notificationSuccessBGColor:"#323637",languageSwitchBGColor:"#545a5e",languageSwitchFontColor:"#dee3e5",posterBGColor:"#dee3e5"},torrentFunctions:{fontColor:"#f1eff3"},table:{defaultPrimaryColor:"#323637",defaultSecondaryColor:Object(Ee.a)("#545a5e",.9),defaultTertiaryColor:"#545a5e"},settingsDialog:{contentBG:"#5a6166",footerBG:"#323637"}}},Ge={light:{primary:"#00a572",secondary:"#00a572",labels:Object(Ee.a)("#000",.9)},dark:{primary:"#323637",secondary:"#dee3e5",labels:Object(Ee.a)("#fff",.9)}},Ie="light",Ue="dark",Ve="auto",We={fontFamily:"Open Sans, sans-serif"},Ze=(Object(He.a)({typography:We,palette:{type:Ue,primary:{main:Ge.dark.primary},secondary:{main:Ge.dark.secondary}}}),Object(He.a)({typography:We,palette:{type:Ie,primary:{main:Ge.light.primary},secondary:{main:Ge.light.secondary}}}),n(4)),_e=n(3),Ke={dark:{default:{borderWidth:1,pieceSize:14,gapBetweenPieces:3,borderColor:Object(Ee.a)("#fff",.2),completeColor:Object(Ee.a)(Ge.dark.primary,.5),backgroundColor:"#949ca0",progressColor:Object(Ee.a)("#fff",.2),readerColor:"#8f0405",rangeColor:"#cda184"},mini:{cacheMaxHeight:340,borderWidth:2,pieceSize:23,gapBetweenPieces:6,borderColor:"#5c6469",completeColor:"#5c6469",backgroundColor:"#949ca0",progressColor:"#949ca0",readerColor:"#ccc",rangeColor:"#cda184"}},light:{default:{borderWidth:1,pieceSize:14,gapBetweenPieces:3,borderColor:"#dbf2e8",completeColor:Ge.light.primary,backgroundColor:"#fff",progressColor:"#b3dfc9",readerColor:"#000",rangeColor:"#afa6e3"},mini:{cacheMaxHeight:340,borderWidth:2,pieceSize:23,gapBetweenPieces:6,borderColor:"#4db380",completeColor:"#4db380",backgroundColor:"#dbf2e8",progressColor:"#dbf2e8",readerColor:"#0a0a0a",rangeColor:"#afa6e3"}}},Je=_e.d.div(ve||(ve=Object(Ze.a)(["\n margin-top: 10px;\n text-transform: uppercase;\n color: rgba(0, 0, 0, 0.5);\n align-self: center;\n"]))),Xe=_e.d.div(Se||(Se=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isMini,n=e.themeType;return Object(_e.c)(ye||(ye=Object(Ze.a)(["\n ","\n\n canvas {\n display: block;\n }\n "])),t&&Object(_e.c)(we||(we=Object(Ze.a)(["\n display: grid;\n justify-content: center;\n max-height: ","px;\n overflow: auto;\n "])),Ke[n].mini.cacheMaxHeight))})),Ye=function(e){var t,n=e.cache,r=e.isMini,i=e.isSnakeDebugMode,o=Object(be.a)().t,s=Object(a.useState)({width:0,height:0}),l=Object(c.a)(s,2),d=l[0],b=l[1],p=d.width,j=Object(a.useRef)(null),u=Object(a.useRef)(null),h=function(e){var t=Object(a.useState)([]),n=Object(c.a)(t,2),r=n[0],i=n[1];return Object(a.useEffect)((function(){for(var t=e.PiecesCount,n=e.Pieces,a=e.Readers,r=[],o=function(e){var t=n[e]||{},i=t.Size,o=t.Length,c=t.Priority,s={id:e,percentage:i/o*100||0,priority:c||0};a.forEach((function(t){e===t.Reader&&(s.isReader=!0),e>=t.Start&&e<=t.End&&(s.isReaderRange=!0)})),r.push(s)},c=0;c0})),i=function(e){return e%a===0?e-1:e+a-e%a-1||0},o=i(n),c=i(r.length),s=Math.max(c,o)-r.length+1,l=s?new Array(s).fill({}):[];return[].concat(Object(E.a)(r),Object(E.a)(l))}({cacheMap:h,preloadPiecesAmount:Math.round(n.Capacity/n.PiecesLength-1),piecesInOneRow:M}));var R=r?t:h,L=Math.ceil((k-P*M)/2),A=Math.ceil(R.length/M)*P;return Object(a.useEffect)((function(){if(k&&A){var e=j.current;e.width=k,e.height=A,u.current=e.getContext("2d")}}),[j,A,k]),Object(a.useEffect)((function(){var e=u.current;e&&(e.clearRect(0,0,k,A),R.forEach((function(t,n){var a=t.percentage,o=t.priority,c=t.isReader,s=t.isReaderRange,l=a>0&&a<100,d=100===a,b=n%M,p=Math.floor(n/M),j=C%2===0?0:.5,u=Math.ceil(C/2)+1+j,h=b*v+b*S+L+u,O=p*v+p*S+u;if(e.lineWidth=C,e.fillStyle=l?function(e,t,n,a){var r=Ke[n][a],i=r.pieceSize,o=r.completeColor,c=r.progressColor,s=e.createLinearGradient(0,i,0,0);return s.addColorStop(0,o),s.addColorStop(t/100,o),s.addColorStop(t/100,c),s.addColorStop(1,c),s}(e,a,g,x):d?T:y,e.strokeStyle=c?m:l||d?T:s?f:w,e.translate(h,O),e.fillRect(0,0,v,v),e.strokeRect(0,0,v,v),e.setTransform(1,0,0,1,0,0),i&&o>0){var D="";1===o?D="":2===o?D="H":3===o?D="R":4===o?D="N":5===o&&(D="A"),e.font=r?"13px monospace":"10px monospace";var k=r?.35*v:.29*v,P=r?.69*v:.78*v;e.fillStyle="black",e.fillText(D,h+k,O+P)}})))}),[h,A,k,M,L,v,S,R,y,w,C,x,T,m,f,r,g,i]),Object(ee.jsx)(Ae.a,{bounds:!0,onResize:function(e){var t=e.bounds;return b(t)},children:function(e){var t=e.measureRef;return Object(ee.jsxs)("div",{style:{display:"flex",flexDirection:"column"},ref:t,children:[Object(ee.jsx)(Xe,{themeType:g,isMini:r,children:Object(ee.jsx)("canvas",{ref:j})}),r&&A>=D&&Object(ee.jsx)(Je,{children:o("ScrollDown")})]})}})},$e=Object(a.memo)(Ye,(function(e,t){return Fe()(e.cache.Pieces,t.cache.Pieces)&&Fe()(e.cache.Readers,t.cache.Readers)})),Qe=n(88),qe=n.n(Qe),et="#858c90",tt=Object(_e.c)(De||(De=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.table.defaultPrimaryColor;return Object(_e.c)(Te||(Te=Object(Ze.a)(["\n :before {\n content: '';\n width: 10px;\n height: 10px;\n background: ",";\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "])),t)})),nt=_e.d.table(ke||(ke=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.table.defaultPrimaryColor;return Object(_e.c)(Pe||(Pe=Object(Ze.a)(["\n border-collapse: collapse;\n margin: 25px 0;\n font-size: 0.9em;\n width: 100%;\n border-radius: 5px 5px 0 0;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n color: #000;\n\n thead tr {\n background: ",";\n color: #fff;\n text-align: left;\n text-transform: uppercase;\n }\n\n th,\n td {\n padding: 12px 15px;\n }\n\n tbody tr {\n border-bottom: 1px solid ",";\n background: ",";\n\n :last-of-type {\n border-bottom: 2px solid ",";\n }\n\n &.viewed-file-row {\n background: ",";\n }\n }\n\n td {\n &.viewed-file-indicator {\n position: relative;\n\n ","\n }\n }\n\n .button-cell {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 10px;\n }\n\n @media (max-width: 970px) {\n display: none;\n }\n "])),t,"#d2d2d2","#f3f3f3",t,"#ddd",tt)})),at=_e.d.div(Me||(Me=Object(Ze.a)(["\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(2, 1fr);\n display: none;\n\n @media (max-width: 970px) {\n display: grid;\n }\n\n @media (max-width: 820px) {\n gap: 15px;\n grid-template-columns: 1fr;\n }\n"]))),rt=_e.d.div(Re||(Re=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isViewed,n=e.theme.table,a=n.defaultPrimaryColor,r=n.defaultSecondaryColor,i=n.defaultTertiaryColor;return Object(_e.c)(Le||(Le=Object(Ze.a)(["\n width: 100%;\n grid-template-rows: repeat(3, max-content);\n border-radius: 5px;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n\n .short-table {\n &-name {\n background: ",";\n display: grid;\n place-items: center;\n padding: 15px;\n color: #fff;\n text-transform: uppercase;\n font-size: 15px;\n font-weight: bold;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 10px;\n }\n }\n &-data {\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: ",";\n grid-auto-columns: 1fr;\n }\n &-field {\n display: grid;\n grid-template-rows: 30px 1fr;\n background: black;\n :not(:last-child) {\n border-right: 1px solid ",";\n }\n\n &-name {\n background: ",";\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 500;\n display: grid;\n place-items: center;\n padding: 0 10px;\n\n @media (max-width: 880px) {\n font-size: 11px;\n }\n }\n\n &-value {\n background: ",";\n display: grid;\n place-items: center;\n color: #fff;\n font-size: 15px;\n padding: 15px 10px;\n position: relative;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 12px 8px;\n }\n }\n }\n\n &-viewed-indicator {\n ","\n }\n\n &-buttons {\n padding: 20px;\n border-bottom: 2px solid ",";\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n align-items: center;\n gap: 20px;\n background: #f3f3f3;\n\n @media (max-width: 410px) {\n gap: 10px;\n grid-template-columns: 1fr;\n }\n }\n }\n "])),t?et:a,t?"max-content":"1fr",t?et:a,t?"#8c9498":r,t?"#949ca0":i,t&&tt,t?et:a)})),it=n(0).memo;le.a.addHandler("episode",/(\d{1,4})[- |. ]\u0441\u0435\u0440\u0438\u044f|\u0441\u0435\u0440\u0438\u044f[- |. ](\d{1,4})/i,{type:"integer"}),le.a.addHandler("season",/sezon[- |. ](\d{1,3})|(\d{1,3})[- |. ]sezon/i,{type:"integer"}),le.a.addHandler("season",/\u0441\u0435\u0437\u043e\u043d[- |. ](\d{1,3})|(\d{1,3})[- |. ]\u0441\u0435\u0437\u043e\u043d/i,{type:"integer"});var ot,ct,st,lt,dt,bt,pt,jt,ut,ht,xt,gt,Ot,mt,ft,Ct,vt,St,yt,wt,Dt,Tt,kt,Pt,Mt,Rt,Lt,At,Bt,Ft,Ht,Nt,Et,zt,Gt,It,Ut,Vt=it((function(e){var t,n=e.playableFileList,a=e.viewedFileList,r=e.selectedSeason,i=e.seasonAmount,o=e.hash,c=Object(be.a)().t,s=function(e){return fetch("".concat(w(),"?link=").concat(o,"&index=").concat(e,"&preload"))},l=function(e,t){return"".concat(w(),"/").concat(encodeURIComponent(e.split("\\").pop().split("/").pop()),"?link=").concat(o,"&index=").concat(t,"&play")},d=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).episode}))),b=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).season}))),p=!(null===n||void 0===n||!n.find((function(e){var t=e.path;return le.a.parse(t).resolution}))),j=(null===n||void 0===n?void 0:n.length)>1&&!d,u=null!==(t=JSON.parse(localStorage.getItem("isVlcUsed")))&&void 0!==t&&t;return null!==n&&void 0!==n&&n.length?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(nt,{children:[Object(ee.jsx)("thead",{children:Object(ee.jsxs)("tr",{children:[Object(ee.jsx)("th",{style:{width:"0"},children:c("Viewed")}),Object(ee.jsx)("th",{children:c("Name")}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Season")}),d&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Episode")}),p&&Object(ee.jsx)("th",{style:{width:"0"},children:c("Resolution")}),Object(ee.jsx)("th",{style:{width:"100px"},children:c("Size")}),Object(ee.jsx)("th",{style:{width:"400px"},children:c("Actions")})]})}),Object(ee.jsx)("tbody",{children:n.map((function(e){var t=e.id,n=e.path,o=e.length,u=le.a.parse(n),h=u.title,x=u.resolution,g=u.episode,O=u.season,m=null===a||void 0===a?void 0:a.includes(t),f=l(n,t);return(O===r||!(null!==i&&void 0!==i&&i.length))&&Object(ee.jsxs)("tr",{className:m?"viewed-file-row":null,children:[Object(ee.jsx)("td",{"data-label":"viewed",className:m?"viewed-file-indicator":null}),Object(ee.jsx)("td",{"data-label":"name",children:j?n:h}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsx)("td",{"data-label":"season",children:O}),d&&Object(ee.jsx)("td",{"data-label":"episode",children:g}),p&&Object(ee.jsx)("td",{"data-label":"resolution",children:x}),Object(ee.jsx)("td",{"data-label":"size",children:K(o)}),Object(ee.jsx)("td",{children:Object(ee.jsxs)("div",{className:"button-cell",children:[Object(ee.jsx)(oe.a,{onClick:function(){return s(t)},variant:"outlined",color:"primary",size:"small",children:c("Preload")}),Object(ee.jsx)("a",{style:{textDecoration:"none"},href:f,target:"_blank",rel:"noreferrer",children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:c("OpenLink")})}),Object(ee.jsx)(qe.a,{text:f,children:Object(ee.jsx)(oe.a,{variant:"outlined",color:"primary",size:"small",children:c("CopyLink")})})]})})]},t)}))})]}),Object(ee.jsx)(at,{children:n.map((function(e){var t=e.id,n=e.path,o=e.length,h=le.a.parse(n),x=h.title,g=h.resolution,O=h.episode,m=h.season,f=null===a||void 0===a?void 0:a.includes(t),C=l(n,t);return(m===r||!(null!==i&&void 0!==i&&i.length))&&Object(ee.jsxs)(rt,{isViewed:f,children:[Object(ee.jsx)("div",{className:"short-table-name",children:j?n:x}),Object(ee.jsxs)("div",{className:"short-table-data",children:[f&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Viewed")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:Object(ee.jsx)("div",{className:"short-table-viewed-indicator"})})]}),b&&1===(null===i||void 0===i?void 0:i.length)&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Season")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:m})]}),d&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Episode")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:O})]}),p&&Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Resolution")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:g})]}),Object(ee.jsxs)("div",{className:"short-table-field",children:[Object(ee.jsx)("div",{className:"short-table-field-name",children:c("Size")}),Object(ee.jsx)("div",{className:"short-table-field-value",children:K(o)})]})]}),Object(ee.jsxs)("div",{className:"short-table-buttons",children:[Object(ee.jsx)(oe.a,{onClick:function(){return s(t)},variant:"outlined",color:"primary",size:"small",children:c("Preload")}),u&&Q?Object(ee.jsx)("a",{style:{textDecoration:"none"},href:"vlc://".concat(C),children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:"VLC"})}):Object(ee.jsx)("a",{style:{textDecoration:"none"},href:C,target:"_blank",rel:"noreferrer",children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"outlined",color:"primary",size:"small",children:c("OpenLink")})}),Object(ee.jsx)(qe.a,{text:C,children:Object(ee.jsx)(oe.a,{variant:"outlined",color:"primary",size:"small",children:c("CopyLink")})})]})]},t)}))})]}):"No playable files in this torrent"}),(function(e,t){return Fe()(e,t)})),Wt=n(456),Zt=n(497),_t=_e.d.div(ot||(ot=Object(Ze.a)(["\n display: grid;\n grid-template-columns: 70% 1fr;\n grid-template-rows: repeat(2, min-content);\n grid-template-areas:\n 'main cache'\n 'file-list file-list';\n\n @media (max-width: 1450px) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(3, min-content);\n grid-template-areas:\n 'main'\n 'cache'\n 'file-list';\n }\n"]))),Kt=_e.d.div(ct||(ct=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.poster,n=e.theme.dialogTorrentDetailsContent.posterBGColor;return Object(_e.c)(st||(st=Object(Ze.a)(["\n height: 400px;\n border-radius: 5px;\n overflow: hidden;\n align-self: center;\n\n ","\n\n @media (max-width: 1280px) {\n align-self: start;\n }\n\n @media (max-width: 840px) {\n ","\n }\n "])),t?Object(_e.c)(lt||(lt=Object(Ze.a)(["\n img {\n border-radius: 5px;\n height: 100%;\n }\n "]))):Object(_e.c)(dt||(dt=Object(Ze.a)(["\n width: 300px;\n display: grid;\n place-items: center;\n background: ",";\n\n svg {\n transform: scale(2.5) translateY(-3px);\n }\n "])),n),t?Object(_e.c)(bt||(bt=Object(Ze.a)(["\n height: 200px;\n "]))):Object(_e.c)(pt||(pt=Object(Ze.a)(["\n display: none;\n "]))))})),Jt=_e.d.section(jt||(jt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent,n=t.gradientStartColor,a=t.gradientEndColor;return Object(_e.c)(ut||(ut=Object(Ze.a)(["\n grid-area: main;\n padding: 40px;\n display: grid;\n grid-template-columns: min-content 1fr;\n gap: 30px;\n background: linear-gradient(145deg, ",", ",");\n\n @media (max-width: 840px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),n,a)})),Xt=_e.d.section(ht||(ht=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.chacheSectionBGColor;return Object(_e.c)(xt||(xt=Object(Ze.a)(["\n grid-area: cache;\n padding: 40px;\n display: grid;\n align-content: start;\n grid-template-rows: min-content 1fr min-content;\n background: ",";\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),Yt=_e.d.section(gt||(gt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.torrentFilesSectionBGColor;return Object(_e.c)(Ot||(Ot=Object(Ze.a)(["\n grid-area: file-list;\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ",";\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),$t=_e.d.div(mt||(mt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.subNameFontColor;return Object(_e.c)(ft||(ft=Object(Ze.a)(["\n ","\n "])),(function(e){var n=e.mb;return Object(_e.c)(Ct||(Ct=Object(Ze.a)(["\n ",";\n ",";\n line-height: 1.2;\n color: ",";\n\n @media (max-width: 800px) {\n ",";\n ",";\n font-size: 14px;\n }\n "])),n&&"margin-top: ".concat(n/3,"px"),n&&"margin-bottom: ".concat(n,"px"),t,n&&"margin-top: ".concat(n/4,"px"),n&&"margin-bottom: ".concat(n/2,"px"))}))})),Qt=_e.d.div(vt||(vt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color,n=e.theme.dialogTorrentDetailsContent.titleFontColor;return Object(_e.c)(St||(St=Object(Ze.a)(["\n ","\n "])),(function(e){var a=e.mb;return Object(_e.c)(yt||(yt=Object(Ze.a)(["\n ",";\n font-size: 34px;\n font-weight: 300;\n line-height: 1;\n word-break: break-word;\n color: ",";\n\n @media (max-width: 800px) {\n font-size: 24px;\n line-height: 1.1;\n ",";\n }\n "])),a&&"margin-bottom: ".concat(a,"px"),t||n,a&&"margin-bottom: ".concat(a/2,"px"))}))})),qt=_e.d.div(wt||(wt=Object(Ze.a)(["\n margin-bottom: 20px;\n"]))),en=_e.d.div(Dt||(Dt=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 220px));\n gap: 20px;\n\n @media (max-width: 800px) {\n gap: 15px;\n }\n @media (max-width: 410px) {\n gap: 10px;\n }\n\n ","\n"])),(function(e){return e.detailedView?Object(_e.c)(Tt||(Tt=Object(Ze.a)(["\n @media (max-width: 800px) {\n grid-template-columns: repeat(2, 1fr);\n }\n @media (max-width: 410px) {\n grid-template-columns: 1fr;\n }\n "]))):Object(_e.c)(kt||(kt=Object(Ze.a)(["\n @media (max-width: 800px) {\n grid-template-columns: repeat(auto-fit, minmax(max-content, 185px));\n }\n @media (max-width: 480px) {\n grid-template-columns: 1fr 1fr;\n }\n @media (max-width: 390px) {\n grid-template-columns: 1fr;\n }\n "])))})),tn=_e.d.div(Pt||(Pt=Object(Ze.a)(["\n display: grid;\n grid-template-columns: 40px 1fr;\n grid-template-rows: min-content 50px;\n grid-template-areas:\n 'title title'\n 'icon value';\n\n > * {\n display: grid;\n place-items: center;\n }\n\n @media (max-width: 800px) {\n grid-template-columns: 30px 1fr;\n grid-template-rows: min-content 40px;\n }\n"]))),nn=_e.d.div(Mt||(Mt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.dialogTorrentDetailsContent.titleFontColor;return Object(_e.c)(Rt||(Rt=Object(Ze.a)(["\n grid-area: title;\n justify-self: start;\n text-transform: uppercase;\n font-size: 11px;\n margin-bottom: 2px;\n font-weight: 600;\n color: ",";\n "])),t)})),an=_e.d.div(Lt||(Lt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.bgColor;return Object(_e.c)(At||(At=Object(Ze.a)(["\n grid-area: icon;\n color: ",";\n background: ",";\n border-radius: 5px 0 0 5px;\n\n @media (max-width: 800px) {\n > svg {\n width: 50%;\n }\n }\n "])),Object(Ee.a)("#fff",.8),t)})),rn=_e.d.div(Bt||(Bt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.bgColor,n=e.theme.dialogTorrentDetailsContent.widgetFontColor;return Object(_e.c)(Ft||(Ft=Object(Ze.a)(["\n grid-area: value;\n font-size: 24px;\n padding: 0 20px 0 0;\n color: ",";\n background: ",";\n border-radius: 0 5px 5px 0;\n white-space: nowrap;\n\n @media (max-width: 800px) {\n font-size: 18px;\n padding: 0 16px 0 0;\n }\n "])),n,t)})),on=_e.d.div.attrs((function(e){var t=e.value,n=e.fullAmount,a=e.theme.dialogTorrentDetailsContent,r=a.gradientStartColor,i=a.gradientEndColor,o=Math.min(100,100*t/n);return{style:{background:"linear-gradient(to right, ".concat(r," 0%, ").concat(i," ").concat(o,"%, #eee ").concat(o,"%, #fff 100%)")}}}))(Ht||(Ht=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.label;return Object(_e.c)(Nt||(Nt=Object(Ze.a)(["\n border: 1px solid;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n\n :before {\n content: '","';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n "])),t)})),cn=_e.d.div(Et||(Et=Object(Ze.a)(["\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n"]))),sn=_e.d.section(zt||(zt=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.detailedView,n=t.gradientStartColor,a=t.gradientEndColor;return Object(_e.c)(Gt||(Gt=Object(Ze.a)(["\n padding: 40px;\n background: linear-gradient(145deg, ",", ",");\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),n,a)})),ln=_e.d.section(It||(It=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.detailedView.cacheSectionBGColor;return Object(_e.c)(Ut||(Ut=Object(Ze.a)(["\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ",";\n flex: 1;\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n "])),t)})),dn=n(449),bn=n(450),pn=n(451),jn=n(452),un=n(453),hn=n(454),xn=n(455);function gn(e){var t=e.icon,n=e.title,a=e.value,r=e.iconBg,i=e.valueBg;return Object(ee.jsxs)(tn,{children:[Object(ee.jsx)(nn,{children:n}),Object(ee.jsx)(an,{bgColor:r,children:Object(ee.jsx)(t,{})}),Object(ee.jsx)(rn,{bgColor:i,children:a})]})}var On=Ie,mn=Ue,fn={light:{downloadSpeed:{iconBGColor:"#118f00",valueBGColor:"#13a300"},uploadSpeed:{iconBGColor:"#0146ad",valueBGColor:"#0058db"},peers:{iconBGColor:"#cdc118",valueBGColor:"#d8cb18"},piecesCount:{iconBGColor:"#b6c95e",valueBGColor:"#c0d076"},piecesLength:{iconBGColor:"#0982c8",valueBGColor:"#098cd7"},status:{iconBGColor:"#aea25b",valueBGColor:"#b4aa6e"},size:{iconBGColor:"#9b01ad",valueBGColor:"#ac03bf"}},dark:{downloadSpeed:{iconBGColor:"#0c6600",valueBGColor:"#0d7000"},uploadSpeed:{iconBGColor:"#003f9e",valueBGColor:"#0047b3"},peers:{iconBGColor:"#a69c11",valueBGColor:"#b4a913"},piecesCount:{iconBGColor:"#8da136",valueBGColor:"#99ae3d"},piecesLength:{iconBGColor:"#07659c",valueBGColor:"#0872af"},status:{iconBGColor:"#938948",valueBGColor:"#9f9450"},size:{iconBGColor:"#81008f",valueBGColor:"#9102a1"}}};function Cn(e){var t=Object(a.useContext)(Ec).isDarkMode;return fn[t?mn:On][e]}var vn,Sn,yn,wn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("downloadSpeed"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("DownloadSpeed"),value:J(t)||"0 ".concat(n("bps")),iconBg:r,valueBg:i,icon:dn.a})},Dn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("uploadSpeed"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("UploadSpeed"),value:J(t)||"0 ".concat(n("bps")),iconBg:r,valueBg:i,icon:bn.a})},Tn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("peers"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("Peers"),value:X(t)||"0 \xb7 0 / 0",iconBg:r,valueBg:i,icon:pn.a})},kn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("piecesCount"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("PiecesCount"),value:t,iconBg:r,valueBg:i,icon:jn.a})},Pn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("piecesLength"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("PiecesLength"),value:K(t),iconBg:r,valueBg:i,icon:un.a})},Mn=function(e){var t,n=e.stat,a=Object(be.a)().t,r=(t={},Object(R.a)(t,1,a("TorrentGettingInfo")),Object(R.a)(t,2,a("TorrentPreload")),Object(R.a)(t,3,a("TorrentWorking")),Object(R.a)(t,4,a("TorrentClosed")),Object(R.a)(t,5,a("TorrentInDb")),t),i=Cn("status"),o=i.iconBGColor,c=i.valueBGColor;return Object(ee.jsx)(gn,{title:a("TorrentStatus"),value:r[n],iconBg:o,valueBg:c,icon:hn.a})},Rn=function(e){var t=e.data,n=Object(be.a)().t,a=Cn("size"),r=a.iconBGColor,i=a.valueBGColor;return Object(ee.jsx)(gn,{title:n("TorrentSize"),value:K(t),iconBg:r,valueBg:i,icon:xn.a})};function Ln(e){var t=e.downloadSpeed,n=e.uploadSpeed,r=e.torrent,i=e.torrentSize,o=e.PiecesCount,s=e.PiecesLength,l=e.stat,d=e.cache,b=Object(be.a)().t,p=Object(a.useState)(JSON.parse(localStorage.getItem("isSnakeDebugMode"))||!1),j=Object(c.a)(p,2),u=j[0],h=j[1];return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(sn,{children:[Object(ee.jsx)(Qt,{mb:20,children:b("Data")}),Object(ee.jsxs)(en,{detailedView:!0,children:[Object(ee.jsx)(wn,{data:t}),Object(ee.jsx)(Dn,{data:n}),Object(ee.jsx)(Tn,{data:r}),Object(ee.jsx)(Rn,{data:i}),Object(ee.jsx)(kn,{data:o}),Object(ee.jsx)(Pn,{data:s}),Object(ee.jsx)(Mn,{stat:l})]})]}),Object(ee.jsxs)(ln,{children:[Object(ee.jsx)(Qt,{color:"#000",mb:20,children:Object(ee.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[Object(ee.jsx)("span",{children:b("Cache")}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(Zt.a,{color:"primary",checked:u,disableRipple:!0,onChange:function(e){var t=e.target.checked;h(t),localStorage.setItem("isSnakeDebugMode",t)}}),label:b("DebugMode"),labelPlacement:"start"})]})}),Object(ee.jsx)($e,{cache:d,isSnakeDebugMode:u})]})]})}var An=_e.d.div(vn||(vn=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n\n :not(:last-child) {\n margin-bottom: 30px;\n }\n\n @media (max-width: 1580px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 880px) {\n grid-template-columns: 1fr;\n }\n"]))),Bn=_e.d.div(Sn||(Sn=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.mb,n=e.theme.torrentFunctions.fontColor;return Object(_e.c)(yn||(yn=Object(Ze.a)(["\n ",";\n font-size: 20px;\n font-weight: 300;\n line-height: 1;\n color: ",";\n\n @media (max-width: 800px) {\n font-size: 18px;\n ",";\n }\n "])),t&&"margin-bottom: ".concat(t,"px"),n,t&&"margin-bottom: ".concat(t/1.5,"px"))})),Fn=Object(a.memo)((function(e){var t,n=e.hash,a=e.viewedFileList,r=e.playableFileList,i=e.name,o=e.title,c=e.setViewedFileList,s=Object(be.a)().t,l=null===a||void 0===a?void 0:a[(null===a||void 0===a?void 0:a.length)-1],d=null===r||void 0===r||null===(t=r.find((function(e){return e.id===l})))||void 0===t?void 0:t.path,b=1===(null===r||void 0===r?void 0:r.length),p=d&&le.a.parse(d),j="".concat(T(),"/").concat(encodeURIComponent(i||o||"file"),".m3u?link=").concat(n,"&m3u"),u="".concat(j,"&fromlast");return Object(ee.jsxs)(ee.Fragment,{children:[!b&&!(null===a||void 0===a||!a.length)&&Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bn,{children:s("DownloadPlaylist")}),Object(ee.jsxs)($t,{mb:10,children:[s("LatestFilePlayed")," ",Object(ee.jsxs)("strong",{children:[null===p||void 0===p?void 0:p.title,".",(null===p||void 0===p?void 0:p.season)&&Object(ee.jsxs)(ee.Fragment,{children:[" ",s("Season"),": ",null===p||void 0===p?void 0:p.season,". ",s("Episode"),": ",null===p||void 0===p?void 0:p.episode,"."]})]})]}),Object(ee.jsxs)(An,{children:[Object(ee.jsx)("a",{style:{textDecoration:"none"},href:j,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("Full")})}),Object(ee.jsx)("a",{style:{textDecoration:"none"},href:u,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("FromLatestFile")})})]})]}),Object(ee.jsx)(Bn,{mb:10,children:s("TorrentState")}),Object(ee.jsxs)(An,{children:[Object(ee.jsx)(oe.a,{onClick:function(){return M.a.post(S(),{action:"rem",hash:n,file_index:-1}).then((function(){return c()}))},variant:"contained",color:"primary",size:"large",children:s("RemoveViews")}),Object(ee.jsx)(oe.a,{onClick:function(){return M.a.post(v(),{action:"drop",hash:n})},variant:"contained",color:"primary",size:"large",children:s("DropTorrent")})]}),Object(ee.jsx)(Bn,{mb:10,children:s("Info")}),Object(ee.jsxs)(An,{children:[(b||!(null!==a&&void 0!==a&&a.length))&&Object(ee.jsx)("a",{style:{textDecoration:"none"},href:j,children:Object(ee.jsx)(oe.a,{style:{width:"100%"},variant:"contained",color:"primary",size:"large",children:s("DownloadPlaylist")})}),Object(ee.jsx)(Qe.CopyToClipboard,{text:n,children:Object(ee.jsx)(oe.a,{variant:"contained",color:"primary",size:"large",children:s("CopyHash")})})]})]})}),(function(){return!0})),Hn=["3g2","3gp","aaf","asf","avchd","avi","drc","flv","iso","m2v","m2ts","m4p","m4v","mkv","mng","mov","mp2","mp4","mpe","mpeg","mpg","mpv","mxf","nsv","ogg","ogv","ts","qt","rm","rmvb","roq","svi","vob","webm","wmv","yuv","aac","aiff","ape","au","flac","gsm","it","m3u","m4a","mid","mod","mp3","mpa","pls","ra","s3m","sid","wav","wma","xm"],Nn=function(){return Object(ee.jsx)("div",{style:{minHeight:"80vh",display:"grid",placeItems:"center"},children:Object(ee.jsx)(de.a,{color:"secondary"})})};function En(e){var t,n=e.closeDialog,r=e.torrent,i=Object(be.a)().t,o=Object(a.useState)(!0),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(a.useState)(!1),p=Object(c.a)(b,2),j=p[0],u=p[1],h=Object(a.useState)(),x=Object(c.a)(h,2),g=x[0],O=x[1],m=Object(a.useState)(),f=Object(c.a)(m,2),C=f[0],v=f[1],w=Object(a.useState)(null),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(),R=Object(c.a)(P,2),A=R[0],B=R[1],F=Object(a.useState)(JSON.parse(localStorage.getItem("isSnakeDebugMode"))||!1),H=Object(c.a)(F,1)[0],N=r.poster,E=r.hash,z=r.title,G=r.name,I=r.stat,U=r.download_speed,V=r.upload_speed,W=r.torrent_size,Z=r.file_stats,_=pe(E),J=function(e){var t=Object(a.useState)(),n=Object(c.a)(t,2),r=n[0],i=n[1];return Object(a.useEffect)((function(){M.a.post(y(),{action:"get"}).then((function(e){var t=e.data;return i(t)}))}),[e]),r}(_),X=_.Capacity,$=_.PiecesCount,Q=_.PiecesLength,q=_.Filled;Object(a.useEffect)((function(){if(C&&null===T){var e=[];C.forEach((function(t){var n=t.path,a=le.a.parse(n).season;a&&!e.includes(a)&&e.push(a)})),e.length&&B(e[0]),k(e.sort((function(e,t){return e-t})))}}),[C,T]),Object(a.useEffect)((function(){v(null===Z||void 0===Z?void 0:Z.filter((function(e){var t,n=e.path;return t=n,Hn.includes(function(e){var t=e.split(".").pop();return t===e?"":t.toLowerCase()}(t))})))}),[Z]),Object(a.useEffect)((function(){var e=!!Object.entries(_).length,t=1!==I&&5!==I;e||l||d(!0),e&&l&&t&&d(!1)}),[I,_,l]),Object(a.useEffect)((function(){M.a.post(S(),{action:"list",hash:E}).then((function(e){var t=e.data;if(t){var n=t.map((function(e){return e.file_index})).sort((function(e,t){return e-t}));O(n)}else O()}))}),[E]);var ne=X/100*(null===J||void 0===J?void 0:J.PreloadCache),ae=ne>33554432?ne:33554432,re=function(){var e=[],t=G&&le.a.parse(G);z!==G?e.push(Y(z)):null!==t&&void 0!==t&&t.title&&e.push(Y(null===t||void 0===t?void 0:t.title)),null!==t&&void 0!==t&&t.year&&!e[0].includes(null===t||void 0===t?void 0:t.year)&&e.push(null===t||void 0===t?void 0:t.year),null!==t&&void 0!==t&&t.resolution&&!e[0].includes(null===t||void 0===t?void 0:t.resolution)&&e.push(null===t||void 0===t?void 0:t.resolution);var n=e.join(". ");return"."===n[n.length-1]&&"."===n[n.length-2]?"".concat(n,"."):n};return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Ce,Object(L.a)({onClose:n,title:i(j?"DetailedCacheView.header":"TorrentDetails")},j&&{onBack:function(){return u(!1)}})),Object(ee.jsx)("div",{style:Object(L.a)({minHeight:"80vh",overflow:"auto"},j&&{display:"flex",flexDirection:"column"}),children:l?Object(ee.jsx)(Nn,{}):j?Object(ee.jsx)(Ln,{downloadSpeed:U,uploadSpeed:V,torrent:r,torrentSize:W,PiecesCount:$,PiecesLength:Q,stat:I,cache:_}):Object(ee.jsxs)(_t,{children:[Object(ee.jsxs)(Jt,{children:[Object(ee.jsx)(Kt,{poster:N,children:N?Object(ee.jsx)("img",{alt:"poster",src:N}):Object(ee.jsx)(te,{})}),Object(ee.jsxs)("div",{children:[z&&G!==z?re().length>90?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Qt,{children:le.a.parse(G).title}),Object(ee.jsx)($t,{mb:20,children:re()})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Qt,{children:re()}),Object(ee.jsx)($t,{mb:20,children:null===(t=le.a.parse(G||""))||void 0===t?void 0:t.title})]}):Object(ee.jsx)(Qt,{mb:20,children:re()}),Object(ee.jsxs)(en,{children:[Object(ee.jsx)(wn,{data:U}),Object(ee.jsx)(Dn,{data:V}),Object(ee.jsx)(Tn,{data:r}),Object(ee.jsx)(Rn,{data:W}),Object(ee.jsx)(Mn,{stat:I})]}),Object(ee.jsx)(cn,{}),Object(ee.jsx)(Fn,{hash:E,viewedFileList:g,playableFileList:C,name:G,title:z,setViewedFileList:O})]})]}),Object(ee.jsxs)(Xt,{children:[Object(ee.jsxs)(qt,{children:[Object(ee.jsx)(Qt,{mb:20,children:i("Buffer")}),ae<=33554432&&Object(ee.jsx)($t,{children:i("BufferNote")}),Object(ee.jsx)(on,{value:q,style:{marginTop:"5px"},fullAmount:ae,label:"".concat(K(ae)," / ").concat(K(q)||"0 ".concat(i("B")))})]}),Object(ee.jsx)($e,{isMini:!0,cache:_,isSnakeDebugMode:H}),Object(ee.jsx)(oe.a,{style:{marginTop:"30px"},variant:"contained",color:"primary",size:"large",onClick:function(){return u(!0)},children:i("DetailedCacheView.button")})]}),Object(ee.jsxs)(Yt,{children:[Object(ee.jsx)(Qt,{mb:20,children:i("TorrentContent")}),(null===T||void 0===T?void 0:T.length)>1&&Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)($t,{mb:7,children:i("SelectSeason")}),Object(ee.jsx)(ce.a,{style:{marginBottom:"30px"},color:"secondary",children:T.map((function(e){return Object(ee.jsx)(oe.a,{variant:A===e?"contained":"outlined",onClick:function(){return B(e)},children:e},e)}))}),Object(ee.jsxs)(Qt,{mb:20,children:[i("Season")," ",A]})]}),Object(ee.jsx)(Vt,{hash:E,playableFileList:C,viewedFileList:g,selectedSeason:A,seasonAmount:T})]})]})})]})}var zn=n(499),Gn=n(468),In=n(473),Un=n(474),Vn=n(199),Wn=n.n(Vn),Zn=function(){var e=Object(be.a)().i18n;return[e.language.substr(0,2),function(t){return e.changeLanguage(t)}]};function _n(e){var t=Object(a.useRef)(e);return Object(a.useEffect)((function(){t.current=e}),[e]),t.current}var Kn,Jn,Xn,Yn,$n,Qn,qn,ea,ta,na,aa,ra,ia=n(111),oa=n.n(ia),ca=_e.d.div(Kn||(Kn=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.primary;return Object(_e.c)(Jn||(Jn=Object(Ze.a)(["\n background: ",";\n color: rgba(0, 0, 0, 0.87);\n font-size: 20px;\n color: #fff;\n font-weight: 600;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 15px 24px;\n position: relative;\n "])),t)})),sa=_e.d.div(Xn||(Xn=Object(Ze.a)(["\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n\n > :not(:last-child) {\n margin-right: 10px;\n }\n"]))),la=n(459),da=function(e){return Object(_e.c)(Yn||(Yn=Object(Ze.a)(["\n @media screen and (display-mode: standalone) {\n ",";\n }\n"])),e)},ba=90,pa=_e.d.div($n||($n=Object(Ze.a)(["\n background: #575757;\n color: #fff;\n position: fixed;\n bottom: 0;\n width: 100%;\n height: ","px;\n\n display: none;\n\n ","\n"])),ba,da(Object(_e.c)(Qn||(Qn=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(5, calc(100% / 5));\n justify-items: center;\n "]))))),ja=Object(_e.d)(la.a).attrs({button:!0})(qn||(qn=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(ea||(ea=Object(Ze.a)(["\n width: 100%;\n height: 60px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n "]))))),ua=Object(_e.d)(zn.a).attrs(Object(L.a)({},Q&&{hideBackdrop:!0,transitionDuration:0}))(ta||(ta=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(na||(na=Object(Ze.a)(["\n margin-bottom: ","px;\n\n .MuiDialog-container .MuiPaper-root {\n box-shadow: none;\n }\n "])),ba))),ha=Object(_e.d)(ca)(aa||(aa=Object(Ze.a)(["\n ","\n"])),da(Object(_e.c)(ra||(ra=Object(Ze.a)(["\n padding-top: 47px;\n "])))));function xa(e){var t=Object(a.useRef)();return Object(a.useEffect)((function(){if(Q){var n=function(n){t.current&&!t.current.contains(n.target)&&e&&e()};return document.addEventListener("click",n,!0),function(){document.removeEventListener("click",n,!0)}}})),t}var ga,Oa,ma,fa,Ca,va,Sa,ya,wa,Da,Ta,ka,Pa,Ma,Ra,La,Aa,Ba,Fa,Ha,Na,Ea,za,Ga,Ia,Ua,Va,Wa=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n="http://api.themoviedb.org/3/search/multi",a="ru"===t?"http://imagetmdb.com":"http://image.tmdb.org";return M.a.get(n,{params:{api_key:"45ddf563ac3fb845f2d5c363190d1a33",language:t,include_image_language:"".concat(t,",null,en"),query:e}}).then((function(e){return e.data.results.filter((function(e){return e.poster_path})).map((function(e){return"".concat(a,"/t/p/w300").concat(e.poster_path)}))})).catch((function(){return null}))},Za=function(){var e=Object(N.a)(Object(H.a)().mark((function e(t){return Object(H.a)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&t.match(/.(\.jpg|\.jpeg|\.png|\.gif|\.svg||\.webp).*$/i)){e.next=2;break}return e.abrupt("return",!1);case 2:return e.abrupt("return",!0);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),_a=/^magnet:\?xt=urn:[a-z0-9].*/i,Ka=/^\b[0-9a-f]{32}\b$|^\b[0-9a-f]{40}\b$|^\b[0-9a-f]{64}\b$/i,Ja=/^.*\.(torrent)$/i,Xa=/^(http(s?)):\/\/.*/i,Ya=_e.d.div(ga||(ga=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isEditMode,n=e.theme.addDialog,a=n.gradientStartColor,r=n.gradientEndColor,i=n.fontColor;return Object(_e.c)(Oa||(Oa=Object(Ze.a)(["\n height: 550px;\n background: linear-gradient(145deg, ",", ",");\n flex: 1;\n display: grid;\n grid-template-columns: repeat(",", 1fr);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n overflow: auto;\n color: ",";\n\n @media (max-width: 540px) {\n ","\n overflow: scroll;\n }\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 500px) {\n align-content: start;\n }\n "])),a,r,t?"1":"2",i,"")})),$a=_e.d.div(ma||(ma=Object(Ze.a)(["\n padding: 0 20px 20px 20px;\n"]))),Qa=_e.d.div(fa||(fa=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isHidden,n=e.notificationMessage,a=e.isError,r=e.theme.addDialog,i=r.notificationErrorBGColor,o=r.notificationSuccessBGColor;return Object(_e.c)(Ca||(Ca=Object(Ze.a)(["\n height: 530px;\n\n ",";\n\n ",";\n\n @media (max-width: 500px) {\n height: 170px;\n }\n "])),n&&Object(_e.c)(va||(va=Object(Ze.a)(["\n position: relative;\n white-space: nowrap;\n\n :before {\n font-size: 20px;\n font-weight: 300;\n content: '","';\n display: grid;\n place-items: center;\n background: ",";\n padding: 10px 15px;\n position: absolute;\n top: 52%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 5px;\n }\n "])),n,a?i:o),t&&Object(_e.c)(Sa||(Sa=Object(Ze.a)(["\n display: none;\n "]))))})),qa=_e.d.div(ya||(ya=Object(Ze.a)(["\n display: flex;\n flex-direction: column;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n"]))),er=Object(_e.c)(wa||(wa=Object(Ze.a)(["\n transition: transform 0.3s;\n padding: 20px;\n height: 100%;\n display: grid;\n"]))),tr=_e.d.div(Da||(Da=Object(Ze.a)(["\n ","\n border: 4px dashed rgba(0,0,0,0.1);\n text-align: center;\n outline: none;\n\n ",";\n\n justify-items: center;\n grid-template-rows: 130px 1fr;\n cursor: pointer;\n\n :hover {\n background-color: rgba(0, 0, 0, 0.04);\n svg {\n transform: translateY(-4%);\n }\n }\n\n @media (max-width: 930px) {\n border: 4px dashed transparent;\n height: 400px;\n place-items: center;\n grid-template-rows: 40% 1fr;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n grid-template-rows: 1fr;\n\n > div:first-of-type {\n display: none;\n }\n }\n"])),er,(function(e){return e.isDragActive&&"border: 4px dashed green"})),nr=_e.d.div(Ta||(Ta=Object(Ze.a)(["\n ","\n place-items: center;\n\n @media (max-width: 930px) {\n height: 400px;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n }\n"])),er),ar=_e.d.div(ka||(ka=Object(Ze.a)(["\n position: relative;\n"]))),rr=_e.d.div(Pa||(Pa=Object(Ze.a)(["\n position: absolute;\n top: -9px;\n left: 10px;\n cursor: pointer;\n\n > svg {\n transition: all 0.3s;\n fill: rgba(0, 0, 0, 0.7);\n\n :hover {\n fill: rgba(0, 0, 0, 0.6);\n }\n }\n"]))),ir=_e.d.div(Ma||(Ma=Object(Ze.a)(["\n display: grid;\n justify-items: center;\n align-content: start;\n gap: 10px;\n align-self: start;\n\n svg {\n transition: all 0.3s;\n }\n"]))),or=_e.d.div(Ra||(Ra=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.active,n=e.theme.addDialog.gradientStartColor;return Object(_e.c)(La||(La=Object(Ze.a)(["\n background: ",";\n padding: 0 20px 20px 20px;\n transition: all 0.3s;\n\n ",";\n "])),n,t&&"box-shadow: 0 8px 10px -9px rgba(0, 0, 0, 0.5)")})),cr=_e.d.div(Aa||(Aa=Object(Ze.a)(["\n margin-top: 20px;\n display: grid;\n grid-template-columns: max-content 1fr;\n grid-template-rows: 300px max-content;\n column-gap: 5px;\n position: relative;\n margin-bottom: 20px;\n\n grid-template-areas:\n 'poster suggestions'\n 'clear empty';\n\n @media (max-width: 540px) {\n grid-template-columns: 1fr;\n gap: 5px 0;\n justify-items: center;\n grid-template-areas:\n 'poster'\n 'clear'\n 'suggestions';\n }\n"]))),sr=_e.d.div(Ba||(Ba=Object(Ze.a)(["\n display: grid;\n grid-area: suggestions;\n grid-auto-flow: column;\n grid-template-columns: repeat(3, max-content);\n grid-template-rows: repeat(4, max-content);\n gap: 5px;\n\n @media (max-width: 540px) {\n grid-auto-flow: row;\n grid-template-columns: repeat(5, max-content);\n }\n @media (max-width: 375px) {\n grid-template-columns: repeat(4, max-content);\n }\n"]))),lr=_e.d.div(Fa||(Fa=Object(Ze.a)(["\n cursor: pointer;\n width: 71px;\n height: 71px;\n\n @media (max-width: 430px) {\n width: 60px;\n height: 60px;\n }\n\n @media (max-width: 375px) {\n width: 71px;\n height: 71px;\n }\n\n @media (max-width: 355px) {\n width: 60px;\n height: 60px;\n }\n\n img {\n transition: all 0.3s;\n border-radius: 5px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n :hover {\n filter: brightness(130%);\n }\n }\n"]))),dr=_e.d.div(Ha||(Ha=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.poster,n=e.theme.addDialog.posterBGColor;return Object(_e.c)(Na||(Na=Object(Ze.a)(["\n border-radius: 5px;\n overflow: hidden;\n width: 200px;\n grid-area: poster;\n\n ","\n "])),t?Object(_e.c)(Ea||(Ea=Object(Ze.a)(["\n img {\n width: 200px;\n object-fit: cover;\n border-radius: 5px;\n height: 100%;\n }\n "]))):Object(_e.c)(za||(za=Object(Ze.a)(["\n display: grid;\n place-items: center;\n background: ",";\n\n svg {\n transform: scale(1.5) translateY(-3px);\n }\n "])),n))})),br=Object(_e.d)(oe.a)(Ga||(Ga=Object(Ze.a)(["\n grid-area: clear;\n justify-self: center;\n transform: translateY(-50%);\n position: absolute;\n ",";\n\n @media (max-width: 540px) {\n transform: translateY(-140%);\n }\n"])),(function(e){return!e.showbutton&&"display: none"})),pr=_e.d.div(Ia||(Ia=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.showbutton,n=e.theme.addDialog,a=n.languageSwitchBGColor,r=n.languageSwitchFontColor;return Object(_e.c)(Ua||(Ua=Object(Ze.a)(["\n grid-area: poster;\n z-index: 5;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 30px;\n height: 30px;\n background: ",";\n border-radius: 50%;\n display: grid;\n place-items: center;\n color: ",";\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s;\n\n ",";\n\n :hover {\n filter: brightness(1.1);\n }\n "])),a,r,!t&&"display: none")})),jr=_e.d.div(Va||(Va=Object(Ze.a)(["\n border: 2px solid white;\n border-radius: 50%;\n height: 45px;\n width: 45px;\n position: relative;\n\n :before,\n :after {\n content: '';\n background: white;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n :before {\n width: 2px;\n height: 25px;\n }\n :after {\n width: 25px;\n height: 2px;\n }\n"]))),ur=n(501),hr=n(465),xr=n(466);function gr(e){var t=e.setTitle,n=e.setPosterUrl,a=e.setIsPosterUrlCorrect,r=e.setIsUserInteractedWithPoster,i=e.setPosterList,o=e.isTorrentSourceCorrect,c=e.isHashAlreadyExists,s=e.title,l=e.parsedTitle,d=e.posterUrl,b=e.isPosterUrlCorrect,p=e.posterList,j=e.currentLang,u=e.posterSearchLanguage,h=e.setPosterSearchLanguage,x=e.posterSearch,g=e.removePoster,O=e.torrentSource,m=e.originalTorrentTitle,f=e.updateTitleFromSource,C=e.isCustomTitleEnabled,v=e.setIsCustomTitleEnabled,S=e.isEditMode,y=Object(be.a)().t,w=Object(q.a)().palette.primary.main,D=function(e){var n=e.target.value;return t(n)};return Object(ee.jsxs)($a,{children:[Object(ee.jsxs)(Qa,{isHidden:!o||c&&!S,children:[m?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ur.a,{value:m,margin:"dense",label:y("AddDialog.OriginalTorrentTitle"),type:"text",variant:"outlined",fullWidth:!0,disabled:C,InputProps:{readOnly:!0}}),Object(ee.jsx)(ur.a,{onChange:D,onFocus:function(){return v(!0)},onBlur:function(e){return!e.target.value&&v(!1)},value:s,margin:"dense",label:y("AddDialog.CustomTorrentTitle"),type:"text",variant:"outlined",fullWidth:!0,helperText:y("AddDialog.CustomTorrentTitleHelperText"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:Object(ee.jsx)(xe.a,{style:{padding:"1px"},onClick:function(){t(""),v(!C),f(),r(!1)},children:Object(ee.jsx)(xr.a,{style:{color:C?w:Object(Ee.a)("#ccc",.5)}})})})}})]}):Object(ee.jsx)(ur.a,{onChange:D,value:s,margin:"dense",label:y("AddDialog.TitleBlank"),type:"text",variant:"outlined",fullWidth:!0,helperText:y("AddDialog.TitleBlankHelperText")}),Object(ee.jsx)(ur.a,{onChange:function(e){var t=e.target.value;n(t),Za(t).then(a),r(!!t),i()},value:d,margin:"dense",label:y("AddDialog.AddPosterLinkInput"),type:"url",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(cr,{children:[Object(ee.jsx)(dr,{poster:+b,children:b?Object(ee.jsx)("img",{src:d,alt:"poster"}):Object(ee.jsx)(te,{})}),Object(ee.jsx)(sr,{children:null===p||void 0===p?void 0:p.filter((function(e){return e!==d})).slice(0,12).map((function(e){return Object(ee.jsx)(lr,{onClick:function(){return function(e){n(e),Za(e).then(a),r(!0)}(e)},children:Object(ee.jsx)("img",{src:e,alt:"poster"})},e)}))}),"en"!==j&&Object(ee.jsx)(pr,{onClick:function(){var e="en"===u?"ru":"en";h(e),x(C?s:m?l:s,e,{shouldRefreshMainPoster:!0})},showbutton:+b,color:"primary",variant:"contained",size:"small",children:"en"===u?"EN":"RU"}),Object(ee.jsx)(br,{showbutton:+b,onClick:function(){g(),r(!0)},color:"primary",variant:"contained",size:"small",children:y("Clear")})]})]}),Object(ee.jsx)(Qa,{isError:O&&(!o||c),notificationMessage:O?o?c&&y("AddDialog.HashExists"):y("AddDialog.WrongTorrentSource"):y("AddDialog.AddTorrentSourceNotification"),isHidden:S||o&&!c})]})}var Or,mr,fr,Cr,vr,Sr,yr,wr,Dr,Tr,kr,Pr,Mr=n(206),Rr=n(467);function Lr(e){var t=e.setIsUserInteractedWithPoster,n=e.setSelectedFile,r=e.torrentSource,i=e.setTorrentSource,o=e.selectedFile,s=Object(be.a)().t,l=Object(a.useState)(!1),d=Object(c.a)(l,2),b=d[0],p=d[1],j=Object(Mr.a)({onDrop:function(e){var a=Object(c.a)(e,1)[0];a&&(t(!1),n(a),i(a.name))},accept:".torrent"}),u=j.getRootProps,h=j.getInputProps,x=j.isDragActive;return Object(ee.jsxs)(qa,{children:[Object(ee.jsx)(or,{active:b,children:Object(ee.jsx)(ur.a,{onChange:function(e){var t=e.target.value;return i(t)},value:r,margin:"dense",label:s("AddDialog.TorrentSourceLink"),helperText:s("AddDialog.TorrentSourceOptions"),type:"text",fullWidth:!0,variant:"outlined",onFocus:function(){return p(!0)},onBlur:function(){return p(!1)},inputProps:{autoComplete:"off"},disabled:!!o})}),o?Object(ee.jsx)(nr,{children:Object(ee.jsxs)(ar,{children:[Object(ee.jsx)(ie,{}),Object(ee.jsx)(rr,{onClick:function(){n(),i("")},children:Object(ee.jsx)(Rr.a,{})})]})}):Object(ee.jsxs)(tr,Object(L.a)(Object(L.a)({isDragActive:x},u()),{},{children:[Object(ee.jsx)("input",Object(L.a)({},h())),Object(ee.jsx)("div",{children:s("AddDialog.AppendFile.Or")}),Object(ee.jsxs)(ir,{children:[Object(ee.jsx)(ne,{color:"primary"}),Object(ee.jsx)("div",{children:s("AddDialog.AppendFile.ClickOrDrag")})]})]}))]})}function Ar(e){var t=e.handleClose,n=e.hash,r=e.title,i=e.name,s=e.poster,l=Object(be.a)().t,d=!!n,b=Object(a.useState)(n||""),p=Object(c.a)(b,2),j=p[0],u=p[1],h=Object(a.useState)(r||""),x=Object(c.a)(h,2),g=x[0],O=x[1],m=Object(a.useState)(""),f=Object(c.a)(m,2),S=f[0],y=f[1],w=Object(a.useState)(""),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(s||""),R=Object(c.a)(P,2),L=R[0],A=R[1],B=Object(a.useState)(!1),F=Object(c.a)(B,2),H=F[0],N=F[1],E=Object(a.useState)(!1),z=Object(c.a)(E,2),G=z[0],I=z[1],U=Object(a.useState)(!1),V=Object(c.a)(U,2),W=V[0],Z=V[1],_=Object(a.useState)(),K=Object(c.a)(_,2),J=K[0],X=K[1],Y=Object(a.useState)(d),Q=Object(c.a)(Y,2),q=Q[0],te=Q[1],ne=Zn(),ae=Object(c.a)(ne,1)[0],re=Object(a.useState)(),ie=Object(c.a)(re,2),ce=ie[0],se=ie[1],pe=Object(a.useState)("ru"===ae?"ru":"en"),je=Object(c.a)(pe,2),ue=je[0],he=je[1],xe=Object(a.useState)(!1),ge=Object(c.a)(xe,2),Oe=ge[0],me=ge[1],fe=Object(a.useState)(!1),Ce=Object(c.a)(fe,2),ve=Ce[0],Se=Ce[1],ye=Object(a.useState)(!1),we=Object(c.a)(ye,2),De=we[0],Te=we[1],ke=Object(a.useState)(),Pe=Object(c.a)(ke,2),Me=Pe[0],Re=Pe[1],Le=xa(t),Ae=Object(o.useQuery)("torrents",$,{retry:1,refetchInterval:1e3}).data;Object(a.useEffect)((function(){oa.a.remote(ce||j,(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.infoHash;return Re(n)}))}),[ce,j]),Object(a.useEffect)((function(){if(Re){var e=Ae.map((function(e){return e.hash}));Z(e.includes(Me))}}),[Me,Ae]),Object(a.useEffect)((function(){if(Oe){Ae.map((function(e){return e.hash})).includes(Me)&&t();null!==j.match(/^(http(s?)):\/\/.*/i)&&t()}}),[Oe,Ae,j,Me,t]);var Be=Object(Ne.a)("@media (max-width:930px)"),Fe=Object(a.useCallback)((function(){var e,t;e=ce||j,t=function(e){var t=e.parsedTitle,n=e.originalName;n&&(Se(!0),O(""),Te(!1),y(n),k(t))},oa.a.remote(e,(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.name,r=n.files;if(!a||e)return t({parsedTitle:null,originalName:null});var i=le.a.parse(a).title,o=r?le.a.parse(r[0].name).title:null,c=i;o&&(c=i.length2&&void 0!==arguments[2]?arguments[2]:{},a=n.shouldRefreshMainPoster,r=void 0!==a&&a;if(!e)return X(),void He();Wa(e,t).then((function(e){if(e){if(X(e),!r&&q)return;var t=Object(c.a)(e,1)[0];Za(t).then((function(e){e?(N(!0),A(t)):He()}))}else{if(X(),q)return;He()}}))}}),[q]),ze=Object(a.useMemo)((function(){return Wn()(Ee,700)}),[Ee]),Ge=_n(j);Object(a.useEffect)((function(){var e;if(!(null!==(e=j).match(Ka)||null!==e.match(_a)||null!==e.match(Ja)||null!==e.match(Xa)))return I(!1);I(!0),j!==Ge&&Fe()}),[Ge,ce,j,Fe]);var Ie=_n(g);Object(a.useEffect)((function(){(g!==Ie||T)&&(ve?(Ee(g||T,ue),Se(!1)):g?ze(g,ue):(ze.cancel(),T?Ee(T,ue):!q&&He()))}),[g,T,Ie,ze,Ee,ue,ve,q]);return Object(ee.jsxs)(ua,{open:!0,onClose:t,fullScreen:Be,fullWidth:!0,maxWidth:"md",ref:Le,children:[Object(ee.jsx)(ha,{children:l(d?"EditTorrent":"AddNewTorrent")}),Object(ee.jsxs)(Ya,{isEditMode:d,children:[!d&&Object(ee.jsx)(Lr,{setIsUserInteractedWithPoster:te,selectedFile:ce,setSelectedFile:se,torrentSource:j,setTorrentSource:u}),Object(ee.jsx)(gr,{originalTorrentTitle:S,setTitle:O,setPosterUrl:A,setIsPosterUrlCorrect:N,setIsUserInteractedWithPoster:te,setPosterList:X,isTorrentSourceCorrect:G,isHashAlreadyExists:W,title:g,parsedTitle:T,posterUrl:L,isPosterUrlCorrect:H,posterList:J,currentLang:ae,posterSearchLanguage:ue,setPosterSearchLanguage:he,posterSearch:Ee,removePoster:He,updateTitleFromSource:Fe,torrentSource:j,isCustomTitleEnabled:De,setIsCustomTitleEnabled:Te,isEditMode:d})]}),Object(ee.jsxs)(sa,{children:[Object(ee.jsx)(oe.a,{onClick:t,color:"secondary",variant:"outlined",children:l("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",style:{minWidth:"110px"},disabled:!j||W&&!d||!G,onClick:function(){if(me(!0),d)M.a.post(v(),{action:"set",hash:n,title:g||i,poster:L}).finally(t);else if(ce){var e=new FormData;e.append("save","true"),e.append("file",ce),g&&e.append("title",g),L&&e.append("poster",L),M.a.post("".concat(C,"/torrent/upload"),e).catch(t)}else M.a.post(v(),{action:"add",link:j,title:g,poster:L,save_to_db:!0}).catch(t)},color:"secondary",children:Oe?Object(ee.jsx)(de.a,{style:{color:"white"},size:20}):l(d?"Save":"Add")})]})]})}var Br,Fr,Hr,Nr,Er,zr,Gr,Ir,Ur,Vr,Wr,Zr,_r,Kr,Jr,Xr,Yr,$r,Qr,qr,ei=_e.d.div(Or||(Or=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard.cardPrimaryColor;return Object(_e.c)(mr||(mr=Object(Ze.a)(["\n border-radius: 5px;\n display: grid;\n grid-template-columns: 120px 260px 1fr;\n grid-template-rows: 180px;\n grid-template-areas: 'poster description buttons';\n gap: 10px;\n padding: 10px;\n background: ",";\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-areas:\n 'poster description'\n 'buttons buttons';\n\n grid-template-columns: 70px 1fr;\n grid-template-rows: 110px max-content;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 60px 1fr;\n grid-template-rows: 90px max-content;\n }\n "])),t)})),ti=_e.d.div(fr||(fr=Object(Ze.a)(["\n grid-area: poster;\n border-radius: 5px;\n overflow: hidden;\n text-align: center;\n cursor: pointer;\n transition: 0.2s;\n position: relative;\n\n :hover {\n filter: brightness(0.7);\n }\n\n ",";\n\n @media (max-width: 1260px), (max-height: 500px) {\n svg {\n width: 50%;\n }\n }\n"])),(function(e){var t=e.isPoster,n=e.theme.torrentCard,a=n.cardSecondaryColor,r=n.accentCardColor;return t?Object(_e.c)(Cr||(Cr=Object(Ze.a)(["\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 5px;\n }\n "]))):Object(_e.c)(vr||(vr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n background: ",";\n border: 1px solid ",";\n\n svg {\n transform: translateY(-3px);\n }\n "])),a,r)})),ni=_e.d.div(Sr||(Sr=Object(Ze.a)(["\n grid-area: buttons;\n display: grid;\n gap: 10px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: repeat(4, 1fr);\n }\n\n @media (max-width: 340px) {\n gap: 5px;\n }\n"]))),ai=_e.d.div(yr||(yr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard,n=t.cardSecondaryColor,a=t.accentCardColor;return Object(_e.c)(wr||(wr=Object(Ze.a)(["\n grid-area: description;\n background: ",";\n border-radius: 5px;\n padding: 5px;\n display: grid;\n grid-template-rows: 55% 1fr;\n gap: 10px;\n\n @media (max-width: 770px) {\n grid-template-rows: 60% 1fr;\n gap: 3px;\n }\n\n .description-title-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .description-section-name {\n text-transform: uppercase;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.4px;\n color: ",";\n\n @media (max-width: 770px) {\n font-size: 0.5rem;\n line-height: 10px;\n }\n }\n\n .description-status-wrapper {\n display: inline-block;\n height: 8px;\n margin-inline-end: 4px;\n vertical-align: baseline;\n }\n\n .description-torrent-title {\n overflow: auto;\n word-break: break-all;\n }\n\n .description-statistics-wrapper {\n display: grid;\n grid-template-columns: 80px 80px 1fr;\n align-self: end;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: 70px 70px 1fr;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 65px 65px 1fr;\n }\n\n @media (max-width: 700px) {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .description-statistics-element-wrapper {\n }\n\n .description-statistics-element-value {\n margin-bottom: 10px;\n margin-left: 0;\n word-break: break-all;\n\n @media (max-width: 1260px), (max-height: 500px) {\n font-size: 0.7rem;\n margin-bottom: 0;\n margin-left: 0;\n }\n }\n\n .description-torrent-title,\n .description-statistics-element-value {\n @media (max-width: 770px) {\n font-size: 0.6rem;\n }\n\n @media (max-width: 410px) {\n font-size: 10px;\n }\n }\n "])),n,a)})),ri=_e.d.button(Dr||(Dr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.torrentCard,n=t.buttonBGColor,a=t.accentCardColor;return Object(_e.c)(Tr||(Tr=Object(Ze.a)(["\n border-radius: 5px;\n border: none;\n cursor: pointer;\n transition: 0.2s;\n display: flex;\n align-items: center;\n text-transform: uppercase;\n background: ",";\n color: #fff;\n font-size: 0.9rem;\n letter-spacing: 0.009em;\n padding: 0 12px;\n svg {\n width: 20px;\n }\n\n :hover {\n background: ",";\n }\n\n > :first-child {\n margin-right: 10px;\n }\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 7px 10px;\n justify-content: center;\n font-size: 0.8rem;\n\n svg {\n display: none;\n }\n }\n\n @media (max-width: 770px) {\n font-size: 0.7rem;\n }\n\n @media (max-width: 420px) {\n font-size: 0.6rem;\n padding: 7px 5px;\n }\n "])),n,a)})),ii=_e.d.div(kr||(kr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color;return Object(_e.c)(Pr||(Pr=Object(Ze.a)(["\n height: 8px;\n width: 8px;\n background-color: ",";\n border-radius: 50%;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n "])),t)})),oi=Object(a.forwardRef)((function(e,t){return Object(ee.jsx)(Gn.a,Object(L.a)({direction:"up",ref:t},e))})),ci=function(e){var t=e.torrent,n=Object(be.a)().t,r=Object(a.useState)(!1),i=Object(c.a)(r,2),o=i[0],s=i[1],l=Object(a.useState)(!1),b=Object(c.a)(l,2),p=b[0],j=b[1],u=Object(q.a)(),h=Object(Ne.a)(u.breakpoints.down("md")),x=function(){return s(!1)},g=function(){return j(!1)},O=t.title,m=t.name,f=t.poster,C=t.torrent_size,S=t.download_speed,y=t.hash,w=t.stat,D=function(){var e=function(e){var t,n;return(null===(t=le.a.parse(O||""))||void 0===t?void 0:t[e])||(null===(n=le.a.parse(m||""))||void 0===n?void 0:n[e])},t=[],n=Y(e("title")),a=e("year"),r=e("resolution");return n&&t.push(n),a&&t.push("(".concat(a,")")),r&&t.push("[".concat(r,"]")),{parsedTitle:n=t.join(" ")}}(),k=D.parsedTitle,P=Object(a.useState)(!1),R=Object(c.a)(P,2),L=R[0],H=R[1],N="".concat(T(),"/").concat(encodeURIComponent(k||"file"),".m3u?link=").concat(y,"&m3u"),E=xa(x);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(ei,{children:[Object(ee.jsx)(ti,{isPoster:f,onClick:function(){return H(!0)},children:f?Object(ee.jsx)("img",{src:f,alt:"poster"}):Object(ee.jsx)(te,{})}),Object(ee.jsxs)(ni,{children:[Object(ee.jsxs)(ri,{onClick:function(){return s(!0)},children:[Object(ee.jsx)(A.a,{}),Object(ee.jsx)("span",{children:n("Details")})]}),Object(ee.jsxs)(ri,{onClick:function(){window.open(N,"_blank")},children:[Object(ee.jsx)(B.a,{}),Object(ee.jsx)("span",{children:n("Playlist")})]}),Object(ee.jsxs)(ri,{onClick:function(){return M.a.post(v(),{action:"drop",hash:y})},children:[Object(ee.jsx)(d.a,{}),Object(ee.jsx)("span",{children:n("Drop")})]}),Object(ee.jsxs)(ri,{onClick:function(){return j(!0)},children:[Object(ee.jsx)(F.a,{}),Object(ee.jsx)("span",{children:n("Delete")})]})]}),Object(ee.jsxs)(ai,{children:[Object(ee.jsxs)("div",{className:"description-title-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Name")}),Object(ee.jsx)("div",{className:"description-torrent-title",children:k})]}),Object(ee.jsxs)("div",{className:"description-statistics-wrapper",children:[Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsxs)("div",{className:"description-section-name",children:[Object(ee.jsx)(si,{stat:w}),n("Size")]}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:C>0&&K(C)})]}),Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Speed")}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:S>0?J(S):"---"})]}),Object(ee.jsxs)("div",{className:"description-statistics-element-wrapper",children:[Object(ee.jsx)("div",{className:"description-section-name",children:n("Peers")}),Object(ee.jsx)("div",{className:"description-statistics-element-value",children:X(t)||"---"})]})]})]})]}),Object(ee.jsx)(ua,{open:o,onClose:x,fullScreen:h,fullWidth:!0,maxWidth:"xl",TransitionComponent:oi,ref:E,children:Object(ee.jsx)(En,{closeDialog:x,torrent:t})}),Object(ee.jsxs)(zn.a,{open:p,onClose:g,children:[Object(ee.jsx)(In.a,{children:n("DeleteTorrent?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:g,color:"secondary",children:n("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){M.a.post(v(),{action:"rem",hash:y}),g()},color:"secondary",autoFocus:!0,children:n("OK")})]})]}),L&&Object(ee.jsx)(Ar,{hash:y,title:O,name:m,poster:f,handleClose:function(){return H(!1)}})]})},si=function(e){var t,n,a=e.stat,r=Object(be.a)().t,i=(t={},Object(R.a)(t,1,r("TorrentGettingInfo")),Object(R.a)(t,2,r("TorrentPreload")),Object(R.a)(t,3,r("TorrentWorking")),Object(R.a)(t,4,r("TorrentClosed")),Object(R.a)(t,5,r("TorrentInDb")),t),o=(n={},Object(R.a)(n,1,"#2196F3"),Object(R.a)(n,2,"#FFC107"),Object(R.a)(n,3,"#CDDC39"),Object(R.a)(n,4,"#E57373"),Object(R.a)(n,5,"#9E9E9E"),n);return Object(ee.jsx)("span",{className:"description-status-wrapper",children:Object(ee.jsx)(ii,{color:o[a],title:i[a]})})},li=Object(a.memo)(ci),di=_e.d.div(Br||(Br=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.app.appSecondaryColor;return Object(_e.c)(Fr||(Fr=Object(Ze.a)(["\n height: 100%;\n background: ",";\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-rows: 60px 1fr;\n grid-template-areas:\n 'head head'\n 'side content';\n\n ","\n "])),Object(Ee.a)(t,.8),da(Object(_e.c)(Hr||(Hr=Object(Ze.a)(["\n grid-template-columns: 0 1fr;\n grid-template-rows: ","px 1fr ","px;\n height: 100vh;\n "])),ba,ba)))})),bi=_e.d.div(Nr||(Nr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n\n ","\n"])),da(Object(_e.c)(Er||(Er=Object(Ze.a)(["\n height: 100vh;\n width: 100vw;\n "]))))),pi=_e.d.div(zr||(zr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.primary;return Object(_e.c)(Gr||(Gr=Object(Ze.a)(["\n background: ",";\n color: #fff;\n grid-area: head;\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n grid-template-columns: repeat(2, max-content) 1fr;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 0 16px;\n z-index: 3;\n\n ","\n "])),t,da(Object(_e.c)(Ir||(Ir=Object(Ze.a)(["\n grid-template-columns: max-content 1fr;\n align-items: end;\n padding: 7px 16px;\n position: fixed;\n width: 100%;\n height: ","px;\n "])),ba)))})),ji=_e.d.div(Ur||(Ur=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isDrawerOpen,n=e.theme.app,a=n.appSecondaryColor,r=n.sidebarBGColor,i=n.sidebarFillColor;return Object(_e.c)(Vr||(Vr=Object(Ze.a)(["\n grid-area: side;\n width: ",";\n z-index: 2;\n overflow-x: hidden;\n transition: width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms;\n border-right: 1px solid ",";\n background: ",";\n color: ",";\n white-space: nowrap;\n\n svg {\n fill: ",";\n }\n\n ","\n "])),t?"400%":"100%",Object(Ee.a)(a,.12),r,i,i,da(Object(_e.c)(Wr||(Wr=Object(Ze.a)(["\n display: none;\n "])))))})),ui=_e.d.div(Zr||(Zr=Object(Ze.a)(["\n grid-area: content;\n padding: 20px;\n overflow: auto;\n\n display: grid;\n place-content: start;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 570px));\n gap: 20px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 10px;\n gap: 15px;\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 1100px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 700px) {\n grid-template-columns: 1fr;\n }\n\n ","\n"])),da(Object(_e.c)(_r||(_r=Object(Ze.a)(["\n height: calc(100vh - ","px);\n padding-bottom: 105px;\n "])),ba))),hi=_e.d.div(Kr||(Kr=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.app.headerToggleColor;return Object(_e.c)(Jr||(Jr=Object(Ze.a)(["\n cursor: pointer;\n border-radius: 50%;\n background: ",";\n height: 35px;\n width: 35px;\n transition: all 0.2s;\n font-weight: 600;\n display: grid;\n place-items: center;\n color: #fff;\n\n :hover {\n background: ",";\n }\n\n @media (max-width: 700px) {\n height: 28px;\n width: 28px;\n font-size: 12px;\n\n svg {\n width: 17px;\n }\n }\n "])),t,Object(Ee.a)(t,.7))})),xi=Object(_e.d)(xe.a)(Xr||(Xr=Object(Ze.a)(["\n margin-right: 6px;\n\n ","\n"])),da(Object(_e.c)(Yr||(Yr=Object(Ze.a)(["\n display: none;\n "]))))),gi=_e.d.div($r||($r=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isButton,n=e.theme.addDialog,a=n.notificationSuccessBGColor,r=n.languageSwitchBGColor;return Object(_e.c)(Qr||(Qr=Object(Ze.a)(["\n display: grid;\n place-items: center;\n padding: 20px 40px;\n border-radius: 5px;\n\n ","\n\n lord-icon {\n width: 200px;\n height: 200px;\n }\n\n .icon-label {\n font-size: 20px;\n }\n "])),t&&Object(_e.c)(qr||(qr=Object(Ze.a)(["\n background: ",";\n transition: 0.2s;\n cursor: pointer;\n\n :hover {\n background: ",";\n }\n "])),a,r))}));function Oi(){var e=Object(be.a)().t,t=Object(q.a)().palette.primary.main;return Object(ee.jsxs)(gi,{children:[Object(ee.jsx)("lord-icon",{src:"https://cdn.lordicon.com/wrprwmwt.json",trigger:"loop",colors:"primary:#121331,secondary:".concat(t),stroke:"26",scale:"60"}),Object(ee.jsx)("div",{className:"icon-label",children:e("Offline")})]})}function mi(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(q.a)().palette.primary.main;return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(gi,{onClick:function(){return i(!0)},isButton:!0,children:[Object(ee.jsx)("lord-icon",{src:"https://cdn.lordicon.com/bbnkwdur.json",trigger:"loop",colors:"primary:#121331,secondary:".concat(o),stroke:"26",scale:"60"}),Object(ee.jsx)("div",{className:"icon-label",children:e("NoTorrentsAdded")})]}),r&&Object(ee.jsx)(Ar,{handleClose:function(){return i(!1)}})]})}function fi(e){var t=e.isOffline,n=e.isLoading,a=e.sortABC,r=e.torrents;return n||t||!r.length?Object(ee.jsx)(bi,{children:t?Object(ee.jsx)(Oi,{}):n?Object(ee.jsx)(de.a,{color:"secondary"}):!r.length&&Object(ee.jsx)(mi,{})}):a?Object(ee.jsx)(ui,{children:r.sort((function(e,t){return e.title>t.title})).map((function(e){return Object(ee.jsx)(li,{torrent:e},e.hash)}))}):Object(ee.jsx)(ui,{children:r.map((function(e){return Object(ee.jsx)(li,{torrent:e},e.hash)}))})}var Ci,vi=n(498),Si=n(201),yi=n.n(Si),wi=n(475);function Di(e){var t=e.onClose,n=Object(be.a)().t,a=xa(t);return Object(ee.jsxs)(ua,{open:!0,onClose:t,"aria-labelledby":"form-dialog-title",fullWidth:!0,maxWidth:"xs",ref:a,children:[Object(ee.jsx)(In.a,{id:"form-dialog-title",children:n("Donate")}),Object(ee.jsx)(wi.a,{children:Object(ee.jsxs)(ce.a,{variant:"outlined",color:"secondary","aria-label":"contained primary button group",children:[Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://boosty.to/yourok","_blank")},children:"Boosty"}),Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://yoomoney.ru/to/410013733697114","_blank")},children:"IO.Money"}),Object(ee.jsx)(oe.a,{onClick:function(){return window.open("https://qiwi.com/n/YOUROK85","_blank")},children:"QIWI"})]})}),Object(ee.jsx)(Un.a,{children:Object(ee.jsx)(oe.a,{onClick:t,color:"secondary",variant:"contained",children:"Ok"})})]})}var Ti=Object(_e.d)(vi.a)(Ci||(Ci=Object(Ze.a)(["\n ",";\n"])),da("margin-bottom: 90px"));function ki(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(!0),s=Object(c.a)(o,2),l=s[0],d=s[1],b=function(){d(!1),localStorage.setItem("snackbarIsClosed",!0)};return Object(ee.jsxs)(ee.Fragment,{children:[r&&Object(ee.jsx)(Di,{onClose:function(){return i(!1)}}),Object(ee.jsx)(Ti,{anchorOrigin:{vertical:"bottom",horizontal:"center"},open:l,onClose:b,message:e("Donate?"),action:Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(oe.a,{style:{marginRight:"10px"},color:"secondary",size:"small",onClick:function(){i(!0),b()},children:[Object(ee.jsx)(yi.a,{style:{marginRight:"10px"},fontSize:"small"}),e("Support")]}),Object(ee.jsx)(xe.a,{size:"small","aria-label":"close",color:"inherit",onClick:b,children:Object(ee.jsx)(Oe.a,{fontSize:"small"})})]})})]})}var Pi,Mi,Ri=n(486),Li=Object(_e.b)(Pi||(Pi=Object(Ze.a)(['\n *,\n *::before,\n *::after { \n margin: 0;\n padding: 0;\n box-sizing: inherit;\n }\n\n body { \n font-family: "Open Sans", sans-serif;\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.1px;\n -webkit-tap-highlight-color: transparent;\n\n\n ','\n }\n\n button {\n font-family: "Open Sans", sans-serif;\n letter-spacing: -0.1px;\n }\n'])),da(Object(_e.c)(Mi||(Mi=Object(Ze.a)(["\n height: 100vh;\n "]))))),Ai=n(484),Bi=n(476),Fi=n(477),Hi=n(485),Ni=n(463),Ei=n(202),zi=n.n(Ei);function Gi(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1];return Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsx)(jr,{}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(zi.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("AddFromLink")})]})}),s&&Object(ee.jsx)(Ar,{handleClose:function(){return l(!1)}})]})}var Ii,Ui,Vi,Wi,Zi,_i,Ki,Ji,Xi,Yi,$i,Qi,qi,eo,to,no,ao,ro,io,oo,co,so,lo=n(131),bo=n.n(lo),po=n(479),jo=n(495),uo=n(481),ho=n(203),xo=n.n(ho),go="#b3dfc9",Oo=Ge.light.primary,mo=Object(_e.d)(ha)(Ii||(Ii=Object(Ze.a)(["\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 340px) {\n grid-auto-flow: row;\n }\n"]))),fo=_e.d.div(Ui||(Ui=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.theme.settingsDialog.footerBG;return Object(_e.c)(Vi||(Vi=Object(Ze.a)(["\n padding: 20px;\n display: grid;\n grid-auto-flow: column;\n justify-content: end;\n gap: 10px;\n align-items: center;\n background: ",";\n\n @media (max-width: 500px) {\n grid-auto-flow: row;\n justify-content: stretch;\n }\n "])),t)})),Co=(_e.d.div(Wi||(Wi=Object(Ze.a)(["\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n"]))),_e.d.div(Zi||(Zi=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isLoading,n=e.theme.settingsDialog.contentBG;return Object(_e.c)(_i||(_i=Object(Ze.a)(["\n background: ",";\n overflow: auto;\n flex: 1;\n\n ","\n "])),n,t&&Object(_e.c)(Ki||(Ki=Object(Ze.a)(["\n min-height: 500px;\n display: grid;\n place-items: center;\n "]))))}))),vo=_e.d.div(Ji||(Ji=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.color;return Object(_e.c)(Xi||(Xi=Object(Ze.a)(["\n display: grid;\n grid-template-columns: max-content 100px 1fr;\n gap: 10px;\n align-items: flex-start;\n\n :not(:last-child) {\n margin-bottom: 5px;\n }\n\n :before {\n content: '';\n background: ",";\n width: 16px;\n height: 16px;\n border-radius: 50%;\n margin-top: 2px;\n }\n "])),t)})),So=_e.d.div(Yi||(Yi=Object(Ze.a)(["\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 40px;\n padding: 20px;\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n"]))),yo=_e.d.div($i||($i=Object(Ze.a)(["\n padding: 20px;\n"]))),wo=_e.d.div(Qi||(Qi=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.small,n=e.selected;return Object(_e.c)(qi||(qi=Object(Ze.a)(["\n transition: 0.2s;\n cursor: default;\n text-align: center;\n\n ","\n\n ","\n "])),!n&&Object(_e.c)(eo||(eo=Object(Ze.a)(["\n cursor: pointer;\n\n :hover {\n filter: brightness(0.8);\n }\n "]))),t?Object(_e.c)(to||(to=Object(Ze.a)(["\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 20px;\n align-items: center;\n justify-items: start;\n margin-bottom: 20px;\n "]))):Object(_e.c)(no||(no=Object(Ze.a)(["\n display: grid;\n place-items: center;\n gap: 10px;\n "]))))})),Do=_e.d.div(ao||(ao=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.selected,n=e.small;return Object(_e.c)(ro||(ro=Object(Ze.a)(["\n width: ",";\n height: ",";\n border-radius: 50%;\n background: ",";\n\n svg {\n transform: rotate(-45deg) scale(0.75);\n }\n\n @media (max-width: 930px) {\n width: ",";\n height: ",";\n }\n "])),n?"60px":"150px",n?"60px":"150px",t?"#323637":"#dee3e5",n?"50px":"90px",n?"50px":"90px")})),To=_e.d.div(io||(io=Object(Ze.a)(["\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-template-areas: 'label label';\n place-items: center;\n\n @media (max-width: 930px) {\n justify-content: start;\n column-gap: 30px;\n }\n"]))),ko=_e.d.div(oo||(oo=Object(Ze.a)(["\n font-size: 25px;\n padding-bottom: 20px;\n\n small {\n display: block;\n font-size: 11px;\n }\n"]))),Po=_e.d.div.attrs((function(e){var t=e.value;return{style:{background:"linear-gradient(to right, ".concat(go," 0%, ").concat(go," ").concat(t,"%, ").concat(Oo," ").concat(t,"%, ").concat(Oo," 100%)")}}}))(co||(co=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.label,n=e.preloadCachePercentage;return Object(_e.c)(so||(so=Object(Ze.a)(["\n border: 1px solid #323637;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n margin-bottom: 10px;\n position: relative;\n\n :before {\n content: '","';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n\n :after {\n content: '';\n width: ","%;\n height: 100%;\n background: #323637;\n position: absolute;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n filter: opacity(0.15);\n }\n "])),t,n)})),Mo={CacheSize:64,ReaderReadAHead:95,PreloadCache:50,UseDisk:!1,TorrentsSavePath:"",RemoveCacheOnDrop:!1,ForceEncrypt:!1,RetrackersMode:1,TorrentDisconnectTimeout:30,EnableDebug:!1,EnableDLNA:!1,FriendlyName:"",EnableRutorSearch:!1,EnableIPv6:!1,DisableTCP:!1,DisableUTP:!1,DisableUPNP:!1,DisableDHT:!1,DisablePEX:!1,DisableUpload:!1,DownloadRateLimit:0,UploadRateLimit:0,ConnectionsLimit:25,PeersListenPort:0},Ro=n(5),Lo=["children","value","index"],Ao=function(e){return{id:"full-width-tab-".concat(e),"aria-controls":"full-width-tabpanel-".concat(e)}},Bo=function(e){var t=e.children,n=e.value,a=e.index,r=Object(Ro.a)(e,Lo);return Object(ee.jsx)("div",Object(L.a)(Object(L.a)({role:"tabpanel",hidden:n!==a,id:"full-width-tabpanel-".concat(a)},r),{},{children:n===a&&Object(ee.jsx)(ee.Fragment,{children:t})}))},Fo=n(478),Ho=n(504),No=n(502);function Eo(e){var t=e.isProMode,n=e.title,a=e.value,r=e.setValue,i=e.sliderMin,o=e.sliderMax,c=e.inputMin,s=e.inputMax,l=e.step,d=void 0===l?1:l,b=e.onBlurCallback;return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)("div",{children:n}),Object(ee.jsxs)(Fo.a,{container:!0,spacing:2,alignItems:"center",children:[Object(ee.jsx)(Fo.a,{item:!0,xs:!0,children:Object(ee.jsx)(Ho.a,{min:i,max:o,value:a,onChange:function(e,t){return r(t)},step:d,color:"secondary"})}),t&&Object(ee.jsx)(Fo.a,{item:!0,children:Object(ee.jsx)(No.a,{value:a,margin:"dense",onChange:function(e){var t=e.target.value;return r(""===t?"":Number(t))},onBlur:function(e){var t=e.target.value;return ts?r(s):void(b&&b(t))},style:{width:"91px",marginTop:"-6px"},inputProps:{step:d,min:c,max:s,type:"number"}})})]})]})}var zo=function(e){var t=e.style,n=Object(be.a)().t;return Object(ee.jsxs)(ko,{style:t,children:[n("SettingsDialog.CacheStorageLocation"),Object(ee.jsx)("small",{children:n("SettingsDialog.UseDiskDesc")})]})};function Go(e){var t=e.settings,n=e.inputForm,a=e.cachePercentage,r=e.preloadCachePercentage,i=e.cacheSize,o=e.isProMode,c=e.setCacheSize,s=e.setCachePercentage,l=e.setPreloadCachePercentage,d=e.updateSettings,b=Object(be.a)().t,p=t||{},j=p.UseDisk,u=p.TorrentsSavePath,h=p.RemoveCacheOnDrop,x=Math.round(i/100*r);return Object(ee.jsxs)(So,{children:[Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ko,{children:b("SettingsDialog.CacheSettings")}),Object(ee.jsx)(Po,{value:100-a,label:"".concat(b("Cache")," ").concat(i," ").concat(b("MB")),preloadCachePercentage:r}),Object(ee.jsxs)(vo,{color:go,children:[Object(ee.jsxs)("div",{children:[100-a,"% (",Math.round(i/100*(100-a))," ",b("MB"),")"]}),Object(ee.jsx)("div",{children:b("SettingsDialog.CacheBeforeReaderDesc")})]}),Object(ee.jsxs)(vo,{color:Oo,children:[Object(ee.jsxs)("div",{children:[a,"% (",Math.round(i/100*a)," ",b("MB"),")"]}),Object(ee.jsx)("div",{children:b("SettingsDialog.CacheAfterReaderDesc")})]}),Object(ee.jsx)("br",{}),Object(ee.jsx)(Eo,{isProMode:o,title:b("SettingsDialog.CacheSize"),value:i,setValue:c,sliderMin:32,sliderMax:1024,inputMin:32,inputMax:999999,step:4,onBlurCallback:function(e){return c(4*Math.round(e/4))}}),Object(ee.jsx)(Eo,{isProMode:o,title:b("SettingsDialog.ReaderReadAHead"),value:a,setValue:s,sliderMin:40,sliderMax:95,inputMin:0,inputMax:100}),Object(ee.jsx)(Eo,{isProMode:o,title:"".concat(b("SettingsDialog.PreloadCache")," - ").concat(r,"% (").concat(x," ").concat(b("MB"),")"),value:r,setValue:l,sliderMin:0,sliderMax:100,inputMin:0,inputMax:100})]}),j?Object(ee.jsxs)("div",{children:[Object(ee.jsx)(zo,{}),Object(ee.jsxs)("div",{style:{display:"grid",gridAutoFlow:"column"},children:[Object(ee.jsxs)(wo,{small:!0,onClick:function(){return d({UseDisk:!1})},children:[Object(ee.jsx)(Do,{small:!0,children:Object(ee.jsx)(re,{color:"#323637"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.RAM")})]}),Object(ee.jsxs)(wo,{small:!0,selected:!0,children:[Object(ee.jsx)(Do,{small:!0,selected:!0,children:Object(ee.jsx)(ae,{color:"#dee3e5"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.Disk")})]})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:h,onChange:n,id:"RemoveCacheOnDrop",color:"secondary"}),label:b("SettingsDialog.RemoveCacheOnDrop"),labelPlacement:"start"}),Object(ee.jsx)("div",{children:Object(ee.jsx)("small",{children:b("SettingsDialog.RemoveCacheOnDropDesc")})}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"TorrentsSavePath",label:b("SettingsDialog.TorrentsSavePath"),value:u,type:"url",variant:"outlined",fullWidth:!0})]}):Object(ee.jsxs)(To,{children:[Object(ee.jsx)(zo,{style:{placeSelf:"start",gridArea:"label"}}),Object(ee.jsxs)(wo,{selected:!0,children:[Object(ee.jsx)(Do,{selected:!0,children:Object(ee.jsx)(re,{color:"#dee3e5"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.RAM")})]}),Object(ee.jsxs)(wo,{onClick:function(){return d({UseDisk:!0})},children:[Object(ee.jsx)(Do,{children:Object(ee.jsx)(ae,{color:"#323637"})}),Object(ee.jsx)("div",{children:b("SettingsDialog.Disk")})]})]})]})}var Io=n(480),Uo=n(464),Vo=n(503),Wo=n(494);function Zo(e){var t=e.settings,n=e.inputForm,a=Object(be.a)().t,r=t||{},i=r.RetrackersMode,o=r.TorrentDisconnectTimeout,c=r.EnableDebug,s=r.EnableDLNA,l=r.EnableIPv6,d=r.FriendlyName,b=r.EnableRutorSearch,p=r.ForceEncrypt,j=r.DisableTCP,u=r.DisableUTP,h=r.DisableUPNP,x=r.DisableDHT,g=r.DisablePEX,O=r.DisableUpload,m=r.DownloadRateLimit,f=r.UploadRateLimit,C=r.ConnectionsLimit,v=r.PeersListenPort;return Object(ee.jsxs)(yo,{children:[Object(ee.jsx)(ko,{children:a("SettingsDialog.AdditionalSettings")}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:l,onChange:n,id:"EnableIPv6",color:"secondary"}),label:"IPv6",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.EnableIPv6Hint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!j,onChange:n,id:"DisableTCP",color:"secondary"}),label:"TCP (Transmission Control Protocol)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableTCPHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!u,onChange:n,id:"DisableUTP",color:"secondary"}),label:"\u03bcTP (Micro Transport Protocol)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableUTPHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!g,onChange:n,id:"DisablePEX",color:"secondary"}),label:"PEX (Peer Exchange)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisablePEXHint")})]}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:p,onChange:n,id:"ForceEncrypt",color:"secondary"}),label:a("SettingsDialog.ForceEncrypt"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.ForceEncryptHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"TorrentDisconnectTimeout",label:a("SettingsDialog.TorrentDisconnectTimeout"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Seconds")})},value:o,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"ConnectionsLimit",label:a("SettingsDialog.ConnectionsLimit"),helperText:a("SettingsDialog.ConnectionsLimitHint"),value:C,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!x,onChange:n,id:"DisableDHT",color:"secondary"}),label:a("SettingsDialog.DHT"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableDHTHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"DownloadRateLimit",label:a("SettingsDialog.DownloadRateLimit"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Kilobytes")})},value:m,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!O,onChange:n,id:"DisableUpload",color:"secondary"}),label:a("SettingsDialog.Upload"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.UploadHint")})]}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"UploadRateLimit",label:a("SettingsDialog.UploadRateLimit"),InputProps:{endAdornment:Object(ee.jsx)(hr.a,{position:"end",children:a("Kilobytes")})},value:f,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsx)("br",{}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"PeersListenPort",label:a("SettingsDialog.PeersListenPort"),helperText:a("SettingsDialog.PeersListenPortHint"),value:v,type:"number",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:!h,onChange:n,id:"DisableUPNP",color:"secondary"}),label:"UPnP (Universal Plug and Play)",labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.DisableUPNPHint")})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:s,onChange:n,id:"EnableDLNA",color:"secondary"}),label:a("SettingsDialog.DLNA"),labelPlacement:"start"}),Object(ee.jsx)(ur.a,{onChange:n,margin:"normal",id:"FriendlyName",label:a("SettingsDialog.FriendlyName"),helperText:a("SettingsDialog.FriendlyNameHint"),value:d,type:"text",variant:"outlined",fullWidth:!0}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:b,onChange:n,id:"EnableRutorSearch",color:"secondary"}),label:a("SettingsDialog.EnableRutorSearch"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.EnableRutorSearchHint")})]}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:c,onChange:n,id:"EnableDebug",color:"secondary"}),label:a("SettingsDialog.EnableDebug"),labelPlacement:"start"}),Object(ee.jsx)("br",{}),Object(ee.jsx)(Vo.a,{htmlFor:"RetrackersMode",children:a("SettingsDialog.RetrackersMode")}),Object(ee.jsxs)(Wo.a,{onChange:n,margin:"dense",type:"number",native:!0,id:"RetrackersMode",value:i,variant:"outlined",children:[Object(ee.jsx)("option",{value:0,children:a("SettingsDialog.DontAddRetrackers")}),Object(ee.jsx)("option",{value:1,children:a("SettingsDialog.AddRetrackers")}),Object(ee.jsx)("option",{value:2,children:a("SettingsDialog.RemoveRetrackers")}),Object(ee.jsx)("option",{value:3,children:a("SettingsDialog.ReplaceRetrackers")})]}),Object(ee.jsx)("br",{})]})}function _o(e){var t=e.isVlcUsed,n=e.setIsVlcUsed,a=Object(be.a)().t;return Object(ee.jsxs)(yo,{children:[Object(ee.jsx)(ko,{children:a("SettingsDialog.MobileAppSettings")}),Object(ee.jsxs)(Io.a,{children:[Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:t,onChange:function(){return n((function(e){return!e}))},color:"secondary"}),label:a("SettingsDialog.UseVLC"),labelPlacement:"start"}),Object(ee.jsx)(Uo.a,{margin:"none",children:a("SettingsDialog.UseVLCHint")})]})]})}function Ko(e){var t,n=e.handleClose,r=Object(be.a)().t,i=Object(Ne.a)("@media (max-width:930px)"),o=Object(q.a)().direction,s=Object(a.useState)(),l=Object(c.a)(s,2),d=l[0],b=l[1],p=Object(a.useState)(0),j=Object(c.a)(p,2),u=j[0],h=j[1],x=Object(a.useState)(32),g=Object(c.a)(x,2),O=g[0],m=g[1],f=Object(a.useState)(40),C=Object(c.a)(f,2),v=C[0],S=C[1],w=Object(a.useState)(0),D=Object(c.a)(w,2),T=D[0],k=D[1],P=Object(a.useState)(JSON.parse(localStorage.getItem("isProMode"))||!1),R=Object(c.a)(P,2),A=R[0],B=R[1],F=Object(a.useState)(null!==(t=JSON.parse(localStorage.getItem("isVlcUsed")))&&void 0!==t&&t),H=Object(c.a)(F,2),N=H[0],E=H[1];Object(a.useEffect)((function(){M.a.post(y(),{action:"get"}).then((function(e){var t=e.data;b(Object(L.a)(Object(L.a)({},t),{},{CacheSize:t.CacheSize/1048576}))}))}),[]);var z=xa(n),G=function(e){var t=e.target,n=t.type,a=t.value,r=t.checked,i=t.id,o=JSON.parse(JSON.stringify(d));"number"===n||"select-one"===n?o[i]=Number(a):"checkbox"===n?o[i]="DisableTCP"===i||"DisableUTP"===i||"DisableUPNP"===i||"DisableDHT"===i||"DisablePEX"===i||"DisableUpload"===i?Boolean(!r):Boolean(r):"url"!==n&&"text"!==n||(o[i]=a),b(o)},I=d||{},U=I.CacheSize,V=I.ReaderReadAHead,W=I.PreloadCache;Object(a.useEffect)((function(){isNaN(U)||isNaN(V)||isNaN(W)||(m(U),S(V),k(W))}),[U,V,W]);var Z=function(e){return b(Object(L.a)(Object(L.a)({},d),e))};return Object(ee.jsxs)(ua,{open:!0,onClose:n,fullScreen:i,fullWidth:!0,maxWidth:"md",ref:z,children:[Object(ee.jsxs)(mo,{children:[Object(ee.jsx)("div",{children:r("SettingsDialog.Settings")}),Object(ee.jsx)(Wt.a,{control:Object(ee.jsx)(po.a,{checked:A,onChange:function(e){var t=e.target.checked;B(t),localStorage.setItem("isProMode",t),t||h(0)},style:{color:"white"}}),label:r("SettingsDialog.ProMode"),labelPlacement:"start"})]}),Object(ee.jsx)(ue.a,{position:"static",color:"default",children:Object(ee.jsxs)(jo.a,{value:u,onChange:function(e,t){return h(t)},indicatorColor:"secondary",textColor:"secondary",variant:"fullWidth",children:[Object(ee.jsx)(uo.a,Object(L.a)({label:r("SettingsDialog.Tabs.Main")},Ao(0))),Object(ee.jsx)(uo.a,Object(L.a)({disabled:!A,label:Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)("div",{children:r("SettingsDialog.Tabs.Additional")}),!A&&Object(ee.jsx)("div",{style:{fontSize:"9px"},children:r("SettingsDialog.Tabs.AdditionalDisabled")})]})},Ao(1))),Q&&Object(ee.jsx)(uo.a,Object(L.a)({label:r("SettingsDialog.Tabs.App")},Ao(2)))]})}),Object(ee.jsx)(Co,{isLoading:!d,children:d?Object(ee.jsx)(ee.Fragment,{children:Object(ee.jsxs)(xo.a,{axis:"rtl"===o?"x-reverse":"x",index:u,onChangeIndex:function(e){return h(e)},children:[Object(ee.jsx)(Bo,{value:u,index:0,dir:o,children:Object(ee.jsx)(Go,{settings:d,inputForm:G,cachePercentage:v,preloadCachePercentage:T,cacheSize:O,isProMode:A,setCacheSize:m,setCachePercentage:S,setPreloadCachePercentage:k,updateSettings:Z})}),Object(ee.jsx)(Bo,{value:u,index:1,dir:o,children:Object(ee.jsx)(Zo,{settings:d,inputForm:G})}),Q&&Object(ee.jsx)(Bo,{value:u,index:2,dir:o,children:Object(ee.jsx)(_o,{isVlcUsed:N,setIsVlcUsed:E})})]})}):Object(ee.jsx)(de.a,{color:"secondary"})}),Object(ee.jsxs)(fo,{children:[Object(ee.jsx)(oe.a,{onClick:n,color:"secondary",variant:"outlined",children:r("Cancel")}),Object(ee.jsx)(oe.a,{onClick:function(){m(Mo.CacheSize),S(Mo.ReaderReadAHead),k(Mo.PreloadCache),Z(Mo)},color:"secondary",variant:"outlined",children:r("SettingsDialog.ResetToDefault")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){n();var e=JSON.parse(JSON.stringify(d));e.CacheSize=1024*O*1024,e.ReaderReadAHead=v,e.PreloadCache=T,M.a.post(y(),{action:"set",sets:e}),localStorage.setItem("isVlcUsed",N)},color:"secondary",children:r("Save")})]})]})}function Jo(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1];return Object(ee.jsxs)("div",{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(bo.a,{}),Object(ee.jsx)("div",{children:r("SettingsDialog.Settings")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(bo.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("SettingsDialog.Settings")})]})}),s&&Object(ee.jsx)(Ko,{handleClose:function(){return l(!1)}})]})}var Xo=n(204),Yo=n.n(Xo);function $o(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1],d=function(){return l(!1)};return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsxs)(la.a,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Yo.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("RemoveAll")})]},r("RemoveAll")),Object(ee.jsxs)(zn.a,{open:s,onClose:d,children:[Object(ee.jsx)(In.a,{children:r("DeleteTorrents?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:d,color:"secondary",children:r("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){fetch(v(),{method:"post",body:JSON.stringify({action:"list"}),headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"}}).then((function(e){return e.json()})).then((function(e){e.forEach((function(e){fetch(v(),{method:"post",body:JSON.stringify({action:"rem",hash:e.hash}),headers:{Accept:"application/json, text/plain, */*","Content-Type":"application/json"}})}))})),d()},color:"secondary",autoFocus:!0,children:r("OK")})]})]})]})}var Qo,qo,ec,tc,nc,ac,rc,ic,oc,cc,sc,lc=n(132),dc=n.n(lc),bc=n(482),pc=_e.d.div(Qo||(Qo=Object(Ze.a)(["\n height: 100%;\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n"]))),jc=_e.d.section(qo||(qo=Object(Ze.a)(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n font-weight: 300;\n padding: 20px;\n\n img {\n width: 64px;\n }\n\n @media (max-width: 930px) {\n font-size: 22px;\n padding: 10px 20px;\n\n img {\n width: 60px;\n }\n }\n\n ","\n"])),da(Object(_e.c)(ec||(ec=Object(Ze.a)(["\n padding-top: 30px;\n "]))))),uc=_e.d.section(tc||(tc=Object(Ze.a)(["\n padding: 20px;\n text-align: center;\n font-size: 24px;\n font-weight: 300;\n background: #e8e5eb;\n color: #323637;\n\n @media (max-width: 930px) {\n font-size: 20px;\n padding: 30px 20px;\n }\n"]))),hc=_e.d.section(nc||(nc=Object(Ze.a)(["\n padding: 20px;\n\n > span {\n font-size: 22px;\n display: block;\n margin-bottom: 15px;\n }\n\n a {\n text-decoration: none;\n }\n\n > div {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(4, max-content);\n\n @media (max-width: 930px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 780px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 550px) {\n grid-template-columns: 1fr;\n }\n }\n"]))),xc=_e.d.div(ac||(ac=Object(Ze.a)(["\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n background: #e8e5eb;\n"]))),gc=_e.d.a(rc||(rc=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isLink;return Object(_e.c)(ic||(ic=Object(Ze.a)(["\n display: inline-flex;\n align-items: center;\n justify-content: start;\n border: 1px solid;\n padding: 7px 10px;\n border-radius: 5px;\n text-transform: uppercase;\n text-decoration: none;\n background: #545a5e;\n color: #f1eff3;\n transition: 0.2s;\n\n > * {\n transition: 0.2s;\n }\n\n ","\n "])),t?Object(_e.c)(oc||(oc=Object(Ze.a)(["\n :hover {\n filter: brightness(1.1);\n\n > * {\n transform: translateY(0px);\n }\n }\n "]))):Object(_e.c)(cc||(cc=Object(Ze.a)(["\n cursor: default;\n "]))))})),Oc=_e.d.div(sc||(sc=Object(Ze.a)(["\n display: grid;\n margin-right: 10px;\n"])));function mc(e){var t=e.name,n=e.link;return Object(ee.jsxs)(gc,{isLink:!!n,href:n,target:"_blank",rel:"noreferrer",children:[n&&Object(ee.jsx)(Oc,{children:Object(ee.jsx)(bc.a,{})}),Object(ee.jsx)("div",{children:t})]})}function fc(){var e=Object(be.a)().t,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(""),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(Ne.a)("@media (max-width:930px)");Object(a.useEffect)((function(){M.a.get(D()).then((function(e){var t=e.data;return d(t)}))}),[]);var p=function(){return i(!1)},j=xa(p);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ja,{button:!0,onClick:function(){return i(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(dc.a,{}),Object(ee.jsx)("div",{children:e("Details")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(dc.a,{})}),Object(ee.jsx)(Fi.a,{primary:e("About")})]})},"Settings"),Object(ee.jsx)(ua,{open:r,onClose:p,"aria-labelledby":"form-dialog-title",fullScreen:b,maxWidth:"xl",ref:j,children:Object(ee.jsxs)(pc,{children:[Object(ee.jsxs)(jc,{children:[Object(ee.jsx)("div",{children:e("About")}),l,Object(ee.jsx)("img",{src:"/icon.png",alt:"ts-icon"})]}),Object(ee.jsxs)("div",{style:{overflow:"auto"},children:[Object(ee.jsx)(uc,{children:e("ThanksToEveryone")}),Object(ee.jsxs)(hc,{children:[Object(ee.jsx)("span",{children:e("Links")}),Object(ee.jsxs)("div",{children:[Object(ee.jsx)(mc,{name:e("ProjectSource"),link:"https://github.com/YouROK/TorrServer"}),Object(ee.jsx)(mc,{name:e("Releases"),link:"https://github.com/YouROK/TorrServer/releases"}),Object(ee.jsx)(mc,{name:e("NasReleases"),link:"https://github.com/vladlenas"})]})]}),Object(ee.jsxs)(hc,{children:[Object(ee.jsx)("span",{children:e("SpecialThanks")}),Object(ee.jsxs)("div",{children:[Object(ee.jsx)(mc,{name:"Daniel Shleifman",link:"https://github.com/dancheskus"}),Object(ee.jsx)(mc,{name:"Matt Joiner",link:"https://github.com/anacrolix"}),Object(ee.jsx)(mc,{name:"nikk",link:"https://github.com/tsynik"}),Object(ee.jsx)(mc,{name:"kolsys",link:"https://github.com/kolsys"}),Object(ee.jsx)(mc,{name:"tw1cker",link:"https://github.com/Nemiroff"}),Object(ee.jsx)(mc,{name:"SpAwN_LMG",link:"https://github.com/spawnlmg"}),Object(ee.jsx)(mc,{name:"damiva",link:"https://github.com/damiva"}),Object(ee.jsx)(mc,{name:"Anton Potekhin",link:"https://github.com/Anton111111"}),Object(ee.jsx)(mc,{name:"FaintGhost",link:"https://github.com/FaintGhost"}),Object(ee.jsx)(mc,{name:"vladlenas",link:"https://github.com/vladlenas"})]})]})]}),Object(ee.jsx)(xc,{children:Object(ee.jsx)(oe.a,{onClick:p,color:"primary",variant:"contained",children:e("Close")})})]})})]})}var Cc=n(483);function vc(e){var t=e.isOffline,n=e.isLoading,r=Object(be.a)().t,i=Object(a.useState)(!1),o=Object(c.a)(i,2),s=o[0],l=o[1],d=function(){return l(!1)},b=xa(d);return Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(ja,{disabled:t||n,button:!0,onClick:function(){return l(!0)},children:Q?Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Cc.a,{}),Object(ee.jsx)("div",{children:r("TurnOff")})]}):Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Cc.a,{})}),Object(ee.jsx)(Fi.a,{primary:r("CloseServer")})]})},r("CloseServer")),Object(ee.jsxs)(ua,{open:s,onClose:d,ref:b,children:[Object(ee.jsx)(In.a,{children:r("CloseServer?")}),Object(ee.jsxs)(Un.a,{children:[Object(ee.jsx)(oe.a,{variant:"outlined",onClick:d,color:"secondary",children:r("Cancel")}),Object(ee.jsx)(oe.a,{variant:"contained",onClick:function(){fetch("".concat(C,"/shutdown")),d()},color:"secondary",autoFocus:!0,children:r("TurnOff")})]})]})]})}var Sc,yc,wc,Dc,Tc,kc,Pc=function(e){var t=e.isDrawerOpen,n=e.setIsDonationDialogOpen,a=e.isOffline,r=e.isLoading,i=Object(be.a)().t;return Object(ee.jsxs)(ji,{isDrawerOpen:t,children:[Object(ee.jsxs)(Ni.a,{children:[Object(ee.jsx)(Gi,{isOffline:a,isLoading:r}),Object(ee.jsx)($o,{isOffline:a,isLoading:r})]}),Object(ee.jsx)(Ai.a,{}),Object(ee.jsxs)(Ni.a,{children:[Object(ee.jsx)(Jo,{isOffline:a,isLoading:r}),Object(ee.jsx)(fc,{}),Object(ee.jsxs)(la.a,{button:!0,onClick:function(){return n(!0)},children:[Object(ee.jsx)(Bi.a,{children:Object(ee.jsx)(Hi.a,{})}),Object(ee.jsx)(Fi.a,{primary:i("Donate")})]}),Object(ee.jsx)(vc,{isOffline:a,isLoading:r})]})]})},Mc=Object(a.memo)(Pc);function Rc(e){var t=e.setIsDonationDialogOpen,n=e.isOffline,a=e.isLoading,r=Object(be.a)().t;return Object(ee.jsxs)(pa,{children:[Object(ee.jsx)(vc,{isOffline:n,isLoading:a}),Object(ee.jsxs)(ja,{onClick:function(){return t(!0)},children:[Object(ee.jsx)(Hi.a,{}),Object(ee.jsx)("div",{children:r("Donate")})]}),Object(ee.jsx)(Gi,{isOffline:n,isLoading:a}),Object(ee.jsx)(fc,{}),Object(ee.jsx)(Jo,{isOffline:n,isLoading:a})]})}function Lc(){return Object(ee.jsxs)("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:23,x:"0px",y:"0px",viewBox:"0 0 1000 1000",enableBackground:"new 0 0 1000 1000",xmlSpace:"preserve",fill:"#005FF2",children:[Object(ee.jsx)("metadata",{children:" Svg Vector Icons : http://www.onlinewebfonts.com/icon "}),Object(ee.jsx)("g",{children:Object(ee.jsx)("path",{d:"M780,290H640v35h140c19.3,0,35,15.7,35,35v560c0,19.3-15.7,35-35,35H220c-19.2,0-35-15.7-35-35V360c0-19.2,15.7-35,35-35h140v-35H220c-38.7,0-70,31.3-70,70v560c0,38.7,31.3,70,70,70h560c38.7,0,70-31.3,70-70V360C850,321.3,818.7,290,780,290z M372.5,180l110-110.2v552.7c0,9.6,7.9,17.5,17.5,17.5c9.6,0,17.5-7.9,17.5-17.5V69.8l110,110c3.5,3.5,7.9,5,12.5,5s9-1.7,12.5-5c6.8-6.8,6.8-17.9,0-24.7l-140-140c-6.8-6.8-17.9-6.8-24.7,0l-140,140c-6.8,6.8-6.8,17.9,0,24.7C354.5,186.8,365.5,186.8,372.5,180z"})})]})}var Ac=_e.d.div(Sc||(Sc=Object(Ze.a)(["\n ","\n"])),(function(e){var t=e.isOpen;return Object(_e.c)(yc||(yc=Object(Ze.a)(["\n position: absolute;\n bottom: 10px;\n left: 50%;\n background: #eeeef0;\n width: calc(100% - 20px);\n z-index: 9999;\n border-radius: 10px;\n transition: all 0.3s;\n color: #000;\n\n ","\n\n > :not(:last-child) {\n border-bottom: 1px solid #dadadc;\n }\n\n > * {\n padding: 20px;\n }\n "])),t?Object(_e.c)(wc||(wc=Object(Ze.a)(["\n opacity: 1;\n transform: translate(-50%, 0);\n "]))):Object(_e.c)(Dc||(Dc=Object(Ze.a)(["\n transform: translate(-50%, 150%);\n opacity: 0;\n pointer-events: none;\n "]))))})),Bc=_e.d.div(Tc||(Tc=Object(Ze.a)(["\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: min-content 1fr;\n gap: 20px;\n align-items: center;\n font-weight: 700;\n\n img {\n border-radius: 5px;\n }\n"]))),Fc=_e.d.div(kc||(kc=Object(Ze.a)(["\n > :not(:last-child) {\n margin-bottom: 25px;\n }\n\n span {\n background: #fefcfd;\n padding: 5px;\n border-radius: 5px;\n }\n"])));function Hc(){var e=JSON.parse(localStorage.getItem("pwaNotificationIsClosed")),t=Object(a.useState)(!e),n=Object(c.a)(t,2),r=n[0],i=n[1],o=Object(a.useState)(!e),s=Object(c.a)(o,2),l=s[0],d=s[1],b=Object(be.a)().t;return r?Object(ee.jsxs)(Ac,{isOpen:l,children:[Object(ee.jsxs)(Bc,{children:[Object(ee.jsx)("img",{src:"/icon.png",width:50,alt:"ts-icon"}),b("PWAGuide.Header"),Object(ee.jsx)(xe.a,{size:"small","aria-label":"close",color:"inherit",onClick:function(){d(!1),setTimeout((function(){i(!1),localStorage.setItem("pwaNotificationIsClosed",!0)}),300)},children:Object(ee.jsx)(Oe.a,{fontSize:"small"})})]}),Object(ee.jsxs)(Fc,{children:[Object(ee.jsx)("p",{children:b("PWAGuide.Description")}),Object(ee.jsx)("p",{children:b("PWAGuide.VLC")}),Object(ee.jsxs)("p",{children:["1. ",b("PWAGuide.FirstStep")," ",Object(ee.jsx)(Lc,{})]}),Object(ee.jsxs)("p",{children:["2. ",b("PWAGuide.SecondStep.Select")," ",Object(ee.jsx)("span",{children:b("PWAGuide.SecondStep.AddToHomeScreen")})]})]})]}):null}var Nc=JSON.parse(localStorage.getItem("snackbarIsClosed")),Ec=Object(a.createContext)();function zc(){var e,t=Object(a.useState)(!1),n=Object(c.a)(t,2),r=n[0],i=n[1],g=Object(a.useState)(!1),O=Object(c.a)(g,2),m=O[0],f=O[1],C=Object(a.useState)(""),v=Object(c.a)(C,2),S=v[0],y=v[1],w=function(){var e=localStorage.getItem("themeMode"),t=Object(Ne.a)("(prefers-color-scheme: dark)"),n=Object(a.useState)("dark"===e||t),r=Object(c.a)(n,2),i=r[0],o=r[1],s=Object(a.useState)(e||Ie),l=Object(c.a)(s,2),d=l[0],b=l[1];Object(a.useEffect)((function(){d===Ie&&o(!1),d===Ue&&o(!0),d===Ve&&o(t)}),[t,d]);var p=i?Ue:Ie,j=Object(a.useMemo)((function(){return Object(He.a)({typography:We,palette:{type:p,primary:{main:Ge[p].primary},secondary:{main:Ge[p].secondary}},overrides:{MuiTypography:{h6:{fontSize:"1.0rem"}},MuiPaper:{root:{backgroundColor:ze[p].app.paperColor}},MuiInputBase:{input:{color:Ge[p].labels}},MuiFormControlLabel:{labelPlacementStart:{display:"flex",justifyContent:"space-between",marginStart:0,marginTop:6,marginBottom:2}},MuiInputLabel:{root:{color:Ge[p].labels,marginBottom:8,"&$focused":{color:Ge[p].labels}}},MuiFormGroup:{root:{"& .MuiFormHelperText-root":{marginTop:-8}}}}})}),[p]);return[i,d,function(e){b(e),localStorage.setItem("themeMode",e)},j]}(),T=Object(c.a)(w,4),P=T[0],R=T[1],A=T[2],B=T[3],F=Zn(),H=Object(c.a)(F,2),N=H[0],E=H[1],z=Object(a.useState)(!1),G=Object(c.a)(z,2),I=G[0],U=G[1],V=Object(o.useQuery)("torrents",$,{retry:1,refetchInterval:1e3,onError:function(){return U(!0)},onSuccess:function(){return U(!1)}}),W=V.data,Z=V.isLoading,_=Object(a.useState)(!1),K=Object(c.a)(_,2),J=K[0],X=K[1];return Object(a.useEffect)((function(){M.a.get(D()).then((function(e){var t=e.data;return y(t)}))}),[]),Object(ee.jsxs)(ee.Fragment,{children:[Object(ee.jsx)(Li,{}),Object(ee.jsx)(Ec.Provider,{value:{isDarkMode:P},children:Object(ee.jsx)(Ri.a,{theme:B,children:Object(ee.jsxs)(_e.a,{theme:(e=P?Ue:Ie,Object(L.a)(Object(L.a)({},ze[e]),Ge[e])),children:[Object(ee.jsx)(s.a,{}),Object(ee.jsx)(k.a,{children:Object(ee.jsxs)(di,{children:[Object(ee.jsxs)(pi,{children:[Object(ee.jsx)(xi,{edge:"start",color:"inherit",onClick:function(){return i(!r)},children:r?Object(ee.jsx)(d.a,{}):Object(ee.jsx)(b.a,{})}),Object(ee.jsxs)(l.a,{variant:"h6",noWrap:!0,children:["TorrServer ",S]}),Object(ee.jsxs)("div",{style:{justifySelf:"end",display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"10px"},children:[Object(ee.jsx)(hi,{onClick:function(){return X(!0!==J)},children:!0===J?Object(ee.jsx)(p.a,{}):Object(ee.jsx)(j.a,{})}),Object(ee.jsx)(hi,{onClick:function(){R===Ie&&A(Ue),R===Ue&&A(Ve),R===Ve&&A(Ie)},children:R===Ie?Object(ee.jsx)(u.a,{}):R===Ue?Object(ee.jsx)(h.a,{}):Object(ee.jsx)(x.a,{})}),Object(ee.jsx)(hi,{onClick:function(){return E("en"===N?"ru":"ru"===N?"ua":"ua"===N?"zh":"en")},children:N.toUpperCase()})]})]}),Object(ee.jsx)(Mc,{isOffline:I,isLoading:Z,isDrawerOpen:r,setIsDonationDialogOpen:f}),Object(ee.jsx)(fi,{isOffline:I,torrents:W,isLoading:Z,sortABC:J}),Object(ee.jsx)(Rc,{isOffline:I,isLoading:Z,setIsDonationDialogOpen:f}),m&&Object(ee.jsx)(Di,{onClose:function(){return f(!1)}}),Nc?"undefined"!==typeof window&&"undefined"!==typeof navigator&&/iPhone|iPad|iPod/i.test(navigator.userAgent||navigator.vendor)&&!Q&&Object(ee.jsx)(Hc,{}):Object(ee.jsx)(ki,{})]})})]})})})]})}var Gc=new o.QueryClient;i.a.render(Object(ee.jsx)(a.StrictMode,{children:Object(ee.jsx)(o.QueryClientProvider,{client:Gc,children:Object(ee.jsx)(zc,{})})}),document.getElementById("root"))}},[[396,1,2]]]);
+//# sourceMappingURL=main.489fa76c.chunk.js.map
\ No newline at end of file
diff --git a/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js.map b/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js.map
new file mode 100644
index 0000000..2337b99
--- /dev/null
+++ b/server/web/pages/template/pages/static/js/main.489fa76c.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["utils/Hosts.js","i18n.js","utils/Utils.js","icons/index.jsx","components/DialogTorrentDetailsContent/customHooks.jsx","components/DialogTorrentDetailsContent/DialogHeader.jsx","style/colors.js","style/materialUISetup.js","components/DialogTorrentDetailsContent/TorrentCache/snakeSettings.js","components/DialogTorrentDetailsContent/TorrentCache/style.js","components/DialogTorrentDetailsContent/TorrentCache/index.jsx","components/DialogTorrentDetailsContent/TorrentCache/getShortCacheMap.js","components/DialogTorrentDetailsContent/Table/style.js","components/DialogTorrentDetailsContent/Table/index.jsx","components/DialogTorrentDetailsContent/style.js","components/DialogTorrentDetailsContent/DetailedView/style.js","components/DialogTorrentDetailsContent/StatisticsField.jsx","components/DialogTorrentDetailsContent/widgets/useGetWidgetColors.jsx","components/DialogTorrentDetailsContent/widgets/index.jsx","torrentStates.js","components/DialogTorrentDetailsContent/DetailedView/index.jsx","components/DialogTorrentDetailsContent/TorrentFunctions/style.js","components/DialogTorrentDetailsContent/TorrentFunctions/index.jsx","components/DialogTorrentDetailsContent/helpers.js","components/DialogTorrentDetailsContent/index.jsx","utils/useChangeLanguage.js","utils/usePreviousState.js","style/DialogStyles.js","style/standaloneMedia.js","components/App/PWAFooter/style.js","style/CustomMaterialUiStyles.js","utils/useOnStandaloneAppOutsideClick.jsx","components/Add/helpers.js","components/Add/style.js","components/Add/RightSideComponent.jsx","components/Add/LeftSideComponent.jsx","components/Add/AddDialog.jsx","components/TorrentCard/style.js","components/TorrentCard/index.jsx","components/App/style.js","components/TorrentList/style.js","components/TorrentList/NoServerConnection.jsx","components/TorrentList/AddFirstTorrent.jsx","components/TorrentList/index.jsx","components/Donate/DonateDialog.jsx","components/Donate/index.jsx","style/GlobalStyle.js","components/Add/index.jsx","components/Settings/style.js","components/Settings/defaultSettings.js","components/Settings/tabComponents.jsx","components/Settings/SliderInput.jsx","components/Settings/PrimarySettingsComponent.jsx","components/Settings/SecondarySettingsComponent.jsx","components/Settings/MobileAppSettings.jsx","components/Settings/SettingsDialog.jsx","components/Settings/index.jsx","components/RemoveAll.jsx","components/About/style.js","components/About/LinkComponent.jsx","components/About/index.jsx","components/CloseServer.jsx","components/App/Sidebar.jsx","components/App/PWAFooter/index.jsx","components/App/PWAInstallationGuide/IOSShareIcon.jsx","components/App/PWAInstallationGuide/style.jsx","components/App/PWAInstallationGuide/index.jsx","components/App/index.jsx","style/getStyledComponentsTheme.js","utils/checkIsIOS.jsx","index.jsx"],"names":["window","location","protocol","hostname","port","torrserverHost","torrentsHost","viewedHost","settingsHost","streamHost","echoHost","playlistTorrHost","i18n","use","LanguageDetector","initReactI18next","init","fallbackLng","interpolation","escapeValue","resources","en","translation","translationEN","ru","translationRU","ua","translationUA","zh","translationZH","humanizeSize","size","i","Math","floor","log","pow","toFixed","t","humanizeSpeed","speed","getPeerString","torrent","connected_seeders","active_peers","total_peers","removeRedundantCharacters","string","newString","forEach","el","leftBracketRegexFormula","leftBracketRegex","RegExp","leftBracketAmount","matchAll","length","rightBracketRegexFormula","rightBracketRegex","removeFormula","removeRegex","replace","hasThreeDotsAtTheEnd","match","trimmedString","trim","getTorrents","axios","post","action","data","Error","isStandaloneApp","matchMedia","matches","NoImageIcon","color","primary","useTheme","palette","main","height","width","fill","xmlns","xmlnsXlink","version","x","y","viewBox","enableBackground","xmlSpace","d","points","AddItemIcon","id","opacity","USBIcon","RAMIcon","TorrentIcon","secondaryColor","useUpdateCache","hash","useState","cache","setCache","componentIsMounted","useRef","timerID","useEffect","current","setInterval","updateCache","newCache","then","catch","clearInterval","useStyles","makeStyles","appBar","position","paddingTop","title","marginLeft","flex","DialogHeader","onClose","onBack","classes","AppBar","className","Toolbar","IconButton","edge","onClick","ArrowBack","Typography","variant","autoFocus","style","marginRight","themeColors","light","app","headerToggleColor","appSecondaryColor","sidebarBGColor","sidebarFillColor","paperColor","torrentCard","accentCardColor","buttonBGColor","rgba","cardPrimaryColor","cardSecondaryColor","dialogTorrentDetailsContent","posterBGColor","gradientStartColor","gradientEndColor","chacheSectionBGColor","widgetFontColor","titleFontColor","subNameFontColor","torrentFilesSectionBGColor","detailedView","cacheSectionBGColor","addDialog","fontColor","notificationErrorBGColor","notificationSuccessBGColor","languageSwitchBGColor","languageSwitchFontColor","torrentFunctions","table","defaultPrimaryColor","defaultSecondaryColor","defaultTertiaryColor","settingsDialog","contentBG","footerBG","dark","mainColors","secondary","labels","THEME_MODES","typography","fontFamily","createTheme","type","snakeSettings","default","borderWidth","pieceSize","gapBetweenPieces","borderColor","completeColor","backgroundColor","progressColor","readerColor","rangeColor","mini","cacheMaxHeight","ScrollNotification","styled","div","SnakeWrapper","isMini","themeType","css","TorrentCache","shotCacheMap","isSnakeDebugMode","useTranslation","dimensions","setDimensions","canvasRef","ctxRef","cacheMap","setCacheMap","PiecesCount","Pieces","Readers","map","Size","Length","Priority","newPiece","percentage","priority","r","Reader","isReader","Start","End","isReaderRange","push","useCreateCacheMap","settingsTarget","theme","useContext","DarkModeContext","isDarkMode","canvasWidth","pieceSizeWithGap","piecesInOneRow","preloadPiecesAmount","cacheMapWithoutEmptyBlocks","filter","getFullAmountOfBlocks","amountOfBlocks","amountOfBlocksToRenderInShortView","scalableAmountOfBlocksToRenderInShortView","extraBlocksAmount","max","extraEmptyBlocksForFillingLine","Array","getShortCacheMap","round","Capacity","PiecesLength","source","startingXPoint","ceil","canvas","getContext","ctx","clearRect","inProgress","isCompleted","currentRow","currentColumn","fixBlurStroke","requiredFix","lineWidth","fillStyle","snakeType","gradient","createLinearGradient","addColorStop","createGradient","strokeStyle","translate","fillRect","strokeRect","setTransform","info","font","xpad","ypad","fillText","bounds","onResize","measureRef","display","flexDirection","ref","memo","prev","next","isEqual","viewedPrimaryColor","viewedIndicator","TableStyle","ShortTableWrapper","ShortTable","isViewed","require","ptt","addHandler","Table","playableFileList","viewedFileList","selectedSeason","seasonAmount","preloadBuffer","fileId","fetch","getFileLink","path","encodeURIComponent","split","pop","fileHasEpisodeText","find","parse","episode","fileHasSeasonText","season","fileHasResolutionText","resolution","shouldDisplayFullFileName","isVlcUsed","JSON","localStorage","getItem","includes","link","Button","textDecoration","href","target","rel","text","DialogContentGrid","Poster","poster","MainSection","section","CacheSection","TorrentFilesSection","SectionSubName","mb","SectionTitle","SectionHeader","WidgetWrapper","WidgetFieldWrapper","WidgetFieldTitle","WidgetFieldIcon","bgColor","WidgetFieldValue","LoadingProgress","attrs","value","fullAmount","min","background","label","Divider","DetailedViewWidgetSection","DetailedViewCacheSection","StatisticsField","Icon","icon","iconBg","valueBg","LIGHT","DARK","colors","downloadSpeed","iconBGColor","valueBGColor","uploadSpeed","peers","piecesCount","piecesLength","status","useGetWidgetColors","widgetName","DownlodSpeedWidget","ArrowDownwardIcon","UploadSpeedWidget","ArrowUpwardIcon","PeersWidget","SwapVerticalCircleIcon","PiecesCountWidget","WidgetsIcon","PiecesLengthWidget","PhotoSizeSelectSmallIcon","StatusWidget","stat","values","BuildIcon","SizeWidget","ViewAgendaIcon","DetailedView","torrentSize","setIsSnakeDebugMode","justifyContent","alignItems","FormControlLabel","control","Checkbox","checked","disableRipple","onChange","setItem","labelPlacement","MainSectionButtonGroup","SmallLabel","TorrentFunctions","name","setViewedFileList","latestViewedFileId","latestViewedFile","isOnlyOnePlayableFile","latestViewedFileData","fullPlaylistLink","partialPlaylistLink","file_index","playableExtList","Loader","minHeight","placeItems","CircularProgress","DialogTorrentDetailsContent","closeDialog","isLoading","setIsLoading","isDetailedCacheView","setIsDetailedCacheView","setPlayableFileList","setSeasonAmount","setSelectedSeason","download_speed","upload_speed","torrent_size","torrentFileList","file_stats","settings","setSettings","useGetSettings","Filled","seasons","currentSeason","sort","a","b","fileName","filename","ext","toLowerCase","getExt","cacheLoaded","Object","entries","torrentLoaded","lst","itm","preloadSize","PreloadCache","bufferSize","getParsedTitle","newNameStringArr","torrentParsedName","year","newNameString","join","overflow","alt","src","marginTop","ButtonGroup","marginBottom","language","substr","lang","changeLanguage","usePreviousState","Header","ButtonWrapper","standaloneMedia","styles","pwaFooterHeight","StyledMenuButtonWrapper","ListItem","button","StyledDialog","Dialog","hideBackdrop","transitionDuration","StyledHeader","useOnStandaloneAppOutsideClick","onClickOutside","handleClickOutside","event","contains","document","addEventListener","removeEventListener","getMoviePosters","movieName","url","imgHost","get","params","api_key","process","include_image_language","query","results","poster_path","checkImageURL","magnetRegex","hashRegex","torrentRegex","linkRegex","Content","isEditMode","RightSide","RightSideContainer","isHidden","notificationMessage","isError","LeftSide","LeftSideBottomSectionBasicStyles","LeftSideBottomSectionNoFile","isDragActive","LeftSideBottomSectionFileSelected","TorrentIconWrapper","CancelIconWrapper","IconWrapper","LeftSideTopSection","active","PosterWrapper","PosterSuggestions","PosterSuggestionsItem","ClearPosterButton","showbutton","PosterLanguageSwitch","StyledPWAAddButton","RightSideComponent","setTitle","setPosterUrl","setIsPosterUrlCorrect","setIsUserInteractedWithPoster","setPosterList","isTorrentSourceCorrect","isHashAlreadyExists","parsedTitle","posterUrl","isPosterUrlCorrect","posterList","currentLang","posterSearchLanguage","setPosterSearchLanguage","posterSearch","removePoster","torrentSource","originalTorrentTitle","updateTitleFromSource","isCustomTitleEnabled","setIsCustomTitleEnabled","handleTitleChange","TextField","margin","fullWidth","disabled","InputProps","readOnly","onFocus","onBlur","helperText","endAdornment","InputAdornment","padding","HighlightOff","slice","userChangesPosterUrl","newLanguage","shouldRefreshMainPoster","LeftSideComponent","setSelectedFile","setTorrentSource","selectedFile","isTorrentSourceActive","setIsTorrentSourceActive","useDropzone","onDrop","files","file","accept","getRootProps","getInputProps","inputProps","autoComplete","Cancel","AddDialog","handleClose","originalHash","originalTitle","originalName","originalPoster","setOriginalTorrentTitle","setParsedTitle","setIsTorrentSourceCorrect","setIsHashAlreadyExists","isUserInteractedWithPoster","useChangeLanguage","isSaving","setIsSaving","skipDebounce","setSkipDebounce","currentSourceHash","setCurrentSourceHash","torrents","useQuery","retry","refetchInterval","parseTorrent","remote","_","infoHash","allHashes","fullScreen","useMediaQuery","useCallback","parsingSource","callback","err","torrentName","nameOfFileInsideTorrent","newTitle","correctImage","useMemo","urlList","firstPoster","delayedPosterSearch","debounce","prevTorrentSourceState","prevTitleState","cancel","open","maxWidth","minWidth","finally","FormData","append","save_to_db","TorrentCard","TorrentCardPoster","isPoster","TorrentCardButtons","TorrentCardDescription","StyledButton","StatusIndicators","Transition","forwardRef","props","Slide","direction","Torrent","isDetailedInfoOpened","setIsDetailedInfoOpened","isDeleteTorrentOpened","setIsDeleteTorrentOpened","breakpoints","down","closeDetailedInfo","closeDeleteTorrentAlert","key","titleStrings","parsedYear","parsedResolution","isEditDialogOpen","setIsEditDialogOpen","detailedInfoDialogRef","UnfoldMore","PlayArrow","Close","Delete","TransitionComponent","DialogTitle","DialogActions","StatusIndicator","AppWrapper","CenteredGrid","AppHeader","AppSidebarStyle","isDrawerOpen","TorrentListWrapper","HeaderToggle","StyledIconButton","isButton","NoServerConnection","trigger","stroke","scale","AddFirstTorrent","isDialogOpen","setIsDialogOpen","TorrentList","isOffline","sortABC","DonateDialog","DialogContent","StyledSnackbar","Snackbar","DonateSnackbar","setOpen","snackbarOpen","setSnackbarOpen","disableSnackbar","anchorOrigin","vertical","horizontal","message","fontSize","createGlobalStyle","AddDialogButton","ListItemIcon","ListItemText","cacheBeforeReaderColor","cacheAfterReaderColor","SettingsHeader","FooterSection","PreloadCacheValue","MainSettingsContent","SecondarySettingsContent","StorageButton","small","selected","StorageIconWrapper","CacheStorageSelector","SettingSectionLabel","PreloadCachePercentage","preloadCachePercentage","CacheSize","ReaderReadAHead","UseDisk","TorrentsSavePath","RemoveCacheOnDrop","ForceEncrypt","RetrackersMode","TorrentDisconnectTimeout","EnableDebug","EnableDLNA","FriendlyName","EnableRutorSearch","EnableIPv6","DisableTCP","DisableUTP","DisableUPNP","DisableDHT","DisablePEX","DisableUpload","DownloadRateLimit","UploadRateLimit","ConnectionsLimit","PeersListenPort","a11yProps","index","TabPanel","children","other","role","hidden","SliderInput","isProMode","setValue","sliderMin","sliderMax","inputMin","inputMax","step","onBlurCallback","Grid","container","spacing","item","xs","Slider","newValue","OutlinedInput","Number","CacheStorageLocationLabel","PrimarySettingsComponent","inputForm","cachePercentage","cacheSize","setCacheSize","setCachePercentage","setPreloadCachePercentage","updateSettings","preloadCacheSize","gridAutoFlow","Switch","placeSelf","gridArea","SecondarySettingsComponent","FormGroup","FormHelperText","InputLabel","htmlFor","Select","native","MobileAppSettings","setIsVlcUsed","SettingsDialog","selectedTab","setSelectedTab","setIsProMode","sets","stringify","Boolean","isNaN","newProps","Tabs","indicatorColor","textColor","Tab","axis","onChangeIndex","dir","defaultSettings","SettingsDialogButton","RemoveAll","method","body","headers","Accept","res","json","torr","DialogWrapper","HeaderSection","ThanksSection","Section","LinkWrapper","isLink","LinkIcon","LinkComponent","GitHub","AboutDialog","torrServerVersion","setTorrServerVersion","CloseServer","PowerSettingsNew","Sidebar","setIsDonationDialogOpen","List","PWAFooter","IOSShareIcon","StyledWrapper","isOpen","StyledContent","PWAInstallationGuide","pwaNotificationIsClosed","setIsOpen","shouldBeOpened","setShouldBeOpened","setTimeout","snackbarIsClosed","createContext","App","setIsDrawerOpen","isDonationDialogOpen","savedThemeMode","isSystemModeDark","setIsDarkMode","currentThemeMode","setCurrentThemeMode","muiTheme","overrides","MuiTypography","h6","MuiPaper","root","MuiInputBase","input","MuiFormControlLabel","labelPlacementStart","marginStart","MuiInputLabel","MuiFormGroup","mode","useMaterialUITheme","updateThemeMode","changeLang","setIsOffline","onError","onSuccess","setSortABC","GlobalStyle","Provider","CssBaseline","Menu","noWrap","justifySelf","gridTemplateColumns","gap","SortByAlpha","Sort","Brightness5","Brightness4","BrightnessAuto","toUpperCase","navigator","test","userAgent","vendor","queryClient","QueryClient","ReactDOM","render","client","getElementById"],"mappings":"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","file":"static/js/main.489fa76c.chunk.js","sourcesContent":["const { protocol, hostname, port } = window.location\n\nlet torrserverHost = process.env.REACT_APP_SERVER_HOST || `${protocol}//${hostname}${port ? `:${port}` : ''}`\n\nexport const torrentsHost = () => `${torrserverHost}/torrents`\nexport const viewedHost = () => `${torrserverHost}/viewed`\nexport const cacheHost = () => `${torrserverHost}/cache`\nexport const torrentUploadHost = () => `${torrserverHost}/torrent/upload`\nexport const settingsHost = () => `${torrserverHost}/settings`\nexport const streamHost = () => `${torrserverHost}/stream`\nexport const shutdownHost = () => `${torrserverHost}/shutdown`\nexport const echoHost = () => `${torrserverHost}/echo`\nexport const playlistTorrHost = () => `${torrserverHost}/stream`\n\nexport const getTorrServerHost = () => torrserverHost\nexport const setTorrServerHost = host => {\n torrserverHost = host\n}\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport translationEN from 'locales/en/translation.json'\nimport translationRU from 'locales/ru/translation.json'\nimport translationUA from 'locales/ua/translation.json'\nimport translationZH from 'locales/zh/translation.json'\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: 'en', // default language will be used if none of declared lanuages detected (en, ru)\n interpolation: { escapeValue: false }, // react already safes from xss\n resources: {\n en: { translation: translationEN },\n ru: { translation: translationRU },\n ua: { translation: translationUA },\n zh: { translation: translationZH },\n },\n })\n\nexport default i18n\n","import axios from 'axios'\n\nimport i18n from '../i18n'\nimport { torrentsHost } from './Hosts'\n\nexport function humanizeSize(size) {\n if (!size) return ''\n const i = Math.floor(Math.log(size) / Math.log(1024))\n return `${(size / Math.pow(1024, i)).toFixed(2) * 1} ${\n [i18n.t('B'), i18n.t('KB'), i18n.t('MB'), i18n.t('GB'), i18n.t('TB')][i]\n }`\n}\n\nexport function humanizeSpeed(speed) {\n if (!speed) return ''\n const i = Math.floor(Math.log(speed * 8) / Math.log(1000))\n return `${((speed * 8) / Math.pow(1000, i)).toFixed(0) * 1} ${\n [i18n.t('bps'), i18n.t('kbps'), i18n.t('Mbps'), i18n.t('Gbps'), i18n.t('Tbps')][i]\n }`\n}\n\nexport function getPeerString(torrent) {\n if (!torrent || !torrent.connected_seeders) return null\n return `${torrent.connected_seeders} · ${torrent.active_peers} / ${torrent.total_peers}`\n}\n\nexport const shortenText = (text, sympolAmount) =>\n text ? text.slice(0, sympolAmount) + (text.length > sympolAmount ? '…' : '') : ''\n\nexport const removeRedundantCharacters = string => {\n let newString = string\n const brackets = [\n ['(', ')'],\n ['[', ']'],\n ['{', '}'],\n ]\n\n brackets.forEach(el => {\n const leftBracketRegexFormula = `\\\\${el[0]}`\n const leftBracketRegex = new RegExp(leftBracketRegexFormula, 'g')\n const leftBracketAmount = [...newString.matchAll(leftBracketRegex)].length\n const rightBracketRegexFormula = `\\\\${el[1]}`\n const rightBracketRegex = new RegExp(rightBracketRegexFormula, 'g')\n const rightBracketAmount = [...newString.matchAll(rightBracketRegex)].length\n\n if (leftBracketAmount !== rightBracketAmount) {\n const removeFormula = `(\\\\${el[0]})(?!.*\\\\1).*`\n const removeRegex = new RegExp(removeFormula, 'g')\n newString = newString.replace(removeRegex, '')\n }\n })\n\n const hasThreeDotsAtTheEnd = !!newString.match(/\\.{3}$/g)\n\n const trimmedString = newString.replace(/[\\\\.| ]+$/g, '').trim()\n\n return hasThreeDotsAtTheEnd ? `${trimmedString}..` : trimmedString\n}\n\nexport const getTorrents = async () => {\n try {\n const { data } = await axios.post(torrentsHost(), { action: 'list' })\n return data\n } catch (error) {\n throw new Error(null)\n }\n}\n\nexport const isStandaloneApp = window.matchMedia('screen and (display-mode: standalone)').matches\n","import { useTheme } from '@material-ui/core'\n\nexport const NoImageIcon = ({ color }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const AddItemIcon = () => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const USBIcon = ({ color, width }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const RAMIcon = ({ color, width }) => {\n const primary = useTheme().palette.primary.main\n\n return (\n \n )\n}\n\nexport const TorrentIcon = () => {\n const primary = useTheme().palette.primary.main\n const secondaryColor = primary === '#00a572' ? '#74c39c' : '#4a5255'\n\n return (\n \n )\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { cacheHost, settingsHost } from 'utils/Hosts'\nimport axios from 'axios'\n\nexport const useUpdateCache = hash => {\n const [cache, setCache] = useState({})\n const componentIsMounted = useRef(true)\n const timerID = useRef(null)\n\n useEffect(\n () => () => {\n // this function is required to notify \"updateCache\" when NOT to make state update\n componentIsMounted.current = false\n },\n [],\n )\n\n useEffect(() => {\n if (hash) {\n timerID.current = setInterval(() => {\n const updateCache = newCache => componentIsMounted.current && setCache(newCache)\n\n axios\n .post(cacheHost(), { action: 'get', hash })\n .then(({ data }) => updateCache(data))\n // empty cache if error\n .catch(() => updateCache({}))\n }, 100)\n } else clearInterval(timerID.current)\n\n return () => clearInterval(timerID.current)\n }, [hash])\n\n return cache\n}\n\nexport const useCreateCacheMap = cache => {\n const [cacheMap, setCacheMap] = useState([])\n\n useEffect(() => {\n const { PiecesCount, Pieces, Readers } = cache\n\n const map = []\n\n for (let i = 0; i < PiecesCount; i++) {\n const { Size, Length, Priority } = Pieces[i] || {}\n\n const newPiece = { id: i, percentage: (Size / Length) * 100 || 0, priority: Priority || 0 }\n\n Readers.forEach(r => {\n if (i === r.Reader) newPiece.isReader = true\n if (i >= r.Start && i <= r.End) newPiece.isReaderRange = true\n })\n\n map.push(newPiece)\n }\n setCacheMap(map)\n }, [cache])\n\n return cacheMap\n}\n\nexport const useGetSettings = cache => {\n const [settings, setSettings] = useState()\n useEffect(() => {\n axios.post(settingsHost(), { action: 'get' }).then(({ data }) => setSettings(data))\n }, [cache])\n\n return settings\n}\n","import { AppBar, IconButton, makeStyles, Toolbar, Typography } from '@material-ui/core'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { ArrowBack } from '@material-ui/icons'\nimport { isStandaloneApp } from 'utils/Utils'\n\nconst useStyles = makeStyles({\n appBar: { position: 'relative', ...(isStandaloneApp && { paddingTop: '30px' }) },\n title: { marginLeft: '5px', flex: 1 },\n})\n\nexport default function DialogHeader({ title, onClose, onBack }) {\n const classes = useStyles()\n\n return (\n \n \n {onBack && (\n \n \n \n )}\n\n \n {title}\n \n\n \n \n \n \n \n )\n}\n","import { rgba } from 'polished'\n\nexport const themeColors = {\n light: {\n app: {\n headerToggleColor: '#4db380',\n appSecondaryColor: '#cbe8d9',\n sidebarBGColor: '#575757',\n sidebarFillColor: '#dee3e5',\n paperColor: '#eeeeee',\n },\n torrentCard: {\n accentCardColor: '#337a57',\n buttonBGColor: rgba('#337a57', 0.5),\n cardPrimaryColor: '#00a572',\n cardSecondaryColor: '#74c39c',\n },\n dialogTorrentDetailsContent: {\n posterBGColor: '#74c39c',\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n chacheSectionBGColor: '#88cdaa',\n widgetFontColor: '#fff',\n titleFontColor: '#000',\n subNameFontColor: '#7c7b7c',\n torrentFilesSectionBGColor: '#f1eff3',\n },\n detailedView: {\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n cacheSectionBGColor: '#fff',\n },\n addDialog: {\n gradientStartColor: '#e4f6ed',\n gradientEndColor: '#b5dec9',\n fontColor: '#000',\n notificationErrorBGColor: '#cda184',\n notificationSuccessBGColor: '#88cdaa',\n languageSwitchBGColor: '#74c39c',\n languageSwitchFontColor: '#e4f6ed',\n posterBGColor: '#74c39c',\n },\n torrentFunctions: {\n fontColor: '#000',\n },\n table: {\n defaultPrimaryColor: '#009879',\n defaultSecondaryColor: '#00a383',\n defaultTertiaryColor: '#03aa89',\n },\n settingsDialog: {\n contentBG: '#f1eff3',\n footerBG: '#fff',\n },\n },\n dark: {\n app: {\n headerToggleColor: '#545a5e',\n appSecondaryColor: '#545a5e',\n sidebarBGColor: '#323637',\n sidebarFillColor: '#dee3e5',\n paperColor: '#323637',\n },\n torrentCard: {\n accentCardColor: '#323637',\n buttonBGColor: rgba('#323637', 0.5),\n cardPrimaryColor: '#545a5e',\n cardSecondaryColor: rgba('#dee3e5', 0.4),\n },\n dialogTorrentDetailsContent: {\n posterBGColor: rgba('#dee3e5', 0.4),\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n chacheSectionBGColor: '#3c4244',\n widgetFontColor: rgba('#fff', 0.8),\n titleFontColor: '#f1eff3',\n subNameFontColor: '#dee3e5',\n torrentFilesSectionBGColor: rgba('#545a5e', 0.9),\n },\n detailedView: {\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n cacheSectionBGColor: '#949ca0',\n },\n addDialog: {\n gradientStartColor: '#656f76',\n gradientEndColor: '#545a5e',\n fontColor: '#fff',\n notificationErrorBGColor: '#c82e3f',\n notificationSuccessBGColor: '#323637',\n languageSwitchBGColor: '#545a5e',\n languageSwitchFontColor: '#dee3e5',\n posterBGColor: '#dee3e5',\n },\n torrentFunctions: {\n fontColor: '#f1eff3',\n },\n table: {\n defaultPrimaryColor: '#323637',\n defaultSecondaryColor: rgba('#545a5e', 0.9),\n defaultTertiaryColor: '#545a5e',\n },\n settingsDialog: {\n contentBG: '#5a6166',\n footerBG: '#323637',\n },\n },\n}\n\nexport const mainColors = {\n light: {\n primary: '#00a572',\n secondary: '#00a572',\n labels: rgba('#000', 0.9),\n },\n dark: {\n primary: '#323637',\n secondary: '#dee3e5',\n labels: rgba('#fff', 0.9),\n },\n}\n","import { createTheme, useMediaQuery } from '@material-ui/core'\nimport { useEffect, useMemo, useState } from 'react'\n\nimport { mainColors, themeColors } from './colors'\n\nexport const THEME_MODES = { LIGHT: 'light', DARK: 'dark', AUTO: 'auto' }\n\nconst typography = { fontFamily: 'Open Sans, sans-serif' }\n\nexport const darkTheme = createTheme({\n typography,\n palette: {\n type: THEME_MODES.DARK,\n primary: { main: mainColors.dark.primary },\n secondary: { main: mainColors.dark.secondary },\n },\n})\nexport const lightTheme = createTheme({\n typography,\n palette: {\n type: THEME_MODES.LIGHT,\n primary: { main: mainColors.light.primary },\n secondary: { main: mainColors.light.secondary },\n },\n})\n\nexport const useMaterialUITheme = () => {\n const savedThemeMode = localStorage.getItem('themeMode')\n const isSystemModeDark = useMediaQuery('(prefers-color-scheme: dark)')\n const [isDarkMode, setIsDarkMode] = useState(savedThemeMode === 'dark' || isSystemModeDark)\n const [currentThemeMode, setCurrentThemeMode] = useState(savedThemeMode || THEME_MODES.LIGHT)\n\n const updateThemeMode = mode => {\n setCurrentThemeMode(mode)\n localStorage.setItem('themeMode', mode)\n }\n\n useEffect(() => {\n currentThemeMode === THEME_MODES.LIGHT && setIsDarkMode(false)\n currentThemeMode === THEME_MODES.DARK && setIsDarkMode(true)\n currentThemeMode === THEME_MODES.AUTO && setIsDarkMode(isSystemModeDark)\n }, [isSystemModeDark, currentThemeMode])\n\n const theme = isDarkMode ? THEME_MODES.DARK : THEME_MODES.LIGHT\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n typography,\n palette: {\n type: theme,\n primary: { main: mainColors[theme].primary },\n secondary: { main: mainColors[theme].secondary },\n },\n overrides: {\n MuiTypography: {\n h6: {\n fontSize: '1.0rem',\n },\n },\n MuiPaper: {\n root: {\n backgroundColor: themeColors[theme].app.paperColor,\n },\n },\n MuiInputBase: {\n input: {\n color: mainColors[theme].labels,\n },\n },\n // https://material-ui.com/ru/api/form-control-label/\n MuiFormControlLabel: {\n labelPlacementStart: {\n display: 'flex',\n justifyContent: 'space-between',\n marginStart: 0,\n marginTop: 6,\n marginBottom: 2,\n },\n },\n MuiInputLabel: {\n root: {\n color: mainColors[theme].labels,\n marginBottom: 8,\n '&$focused': {\n color: mainColors[theme].labels,\n },\n },\n },\n MuiFormGroup: {\n root: {\n '& .MuiFormHelperText-root': {\n marginTop: -8,\n },\n },\n },\n },\n }),\n [theme],\n )\n\n return [isDarkMode, currentThemeMode, updateThemeMode, muiTheme]\n}\n","import { rgba } from 'polished'\nimport { mainColors } from 'style/colors'\n\nexport const snakeSettings = {\n dark: {\n default: {\n borderWidth: 1,\n pieceSize: 14,\n gapBetweenPieces: 3,\n borderColor: rgba('#fff', 0.2),\n completeColor: rgba(mainColors.dark.primary, 0.5),\n backgroundColor: '#949ca0',\n progressColor: rgba('#fff', 0.2),\n readerColor: '#8f0405',\n rangeColor: '#cda184',\n },\n mini: {\n cacheMaxHeight: 340,\n borderWidth: 2,\n pieceSize: 23,\n gapBetweenPieces: 6,\n borderColor: '#5c6469',\n completeColor: '#5c6469',\n backgroundColor: '#949ca0',\n progressColor: '#949ca0',\n readerColor: '#ccc',\n rangeColor: '#cda184',\n },\n },\n light: {\n default: {\n borderWidth: 1,\n pieceSize: 14,\n gapBetweenPieces: 3,\n borderColor: '#dbf2e8',\n completeColor: mainColors.light.primary,\n backgroundColor: '#fff',\n progressColor: '#b3dfc9',\n readerColor: '#000',\n rangeColor: '#afa6e3',\n },\n mini: {\n cacheMaxHeight: 340,\n borderWidth: 2,\n pieceSize: 23,\n gapBetweenPieces: 6,\n borderColor: '#4db380',\n completeColor: '#4db380',\n backgroundColor: '#dbf2e8',\n progressColor: '#dbf2e8',\n readerColor: '#0a0a0a',\n rangeColor: '#afa6e3',\n },\n },\n}\n\nexport const createGradient = (ctx, percentage, theme, snakeType) => {\n const { pieceSize, completeColor, progressColor } = snakeSettings[theme][snakeType]\n\n const gradient = ctx.createLinearGradient(0, pieceSize, 0, 0)\n gradient.addColorStop(0, completeColor)\n gradient.addColorStop(percentage / 100, completeColor)\n gradient.addColorStop(percentage / 100, progressColor)\n gradient.addColorStop(1, progressColor)\n\n return gradient\n}\n","import styled, { css } from 'styled-components'\n\nimport { snakeSettings } from './snakeSettings'\n\nexport const ScrollNotification = styled.div`\n margin-top: 10px;\n text-transform: uppercase;\n color: rgba(0, 0, 0, 0.5);\n align-self: center;\n`\n\nexport const SnakeWrapper = styled.div`\n ${({ isMini, themeType }) => css`\n ${isMini &&\n css`\n display: grid;\n justify-content: center;\n max-height: ${snakeSettings[themeType].mini.cacheMaxHeight}px;\n overflow: auto;\n `}\n\n canvas {\n display: block;\n }\n `}\n`\n","import Measure from 'react-measure'\nimport { useState, memo, useRef, useEffect, useContext } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash/isEqual'\nimport { DarkModeContext } from 'components/App'\nimport { THEME_MODES } from 'style/materialUISetup'\n\nimport { useCreateCacheMap } from '../customHooks'\nimport getShortCacheMap from './getShortCacheMap'\nimport { SnakeWrapper, ScrollNotification } from './style'\nimport { createGradient, snakeSettings } from './snakeSettings'\n\nconst TorrentCache = ({ cache, isMini, isSnakeDebugMode }) => {\n const { t } = useTranslation()\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n const { width } = dimensions\n const canvasRef = useRef(null)\n const ctxRef = useRef(null)\n const cacheMap = useCreateCacheMap(cache)\n const settingsTarget = isMini ? 'mini' : 'default'\n const { isDarkMode } = useContext(DarkModeContext)\n const theme = isDarkMode ? THEME_MODES.DARK : THEME_MODES.LIGHT\n\n const {\n readerColor,\n rangeColor,\n borderWidth,\n pieceSize,\n gapBetweenPieces,\n backgroundColor,\n borderColor,\n cacheMaxHeight,\n completeColor,\n } = snakeSettings[theme][settingsTarget]\n\n const canvasWidth = isMini ? width * 0.93 : width\n\n const pieceSizeWithGap = pieceSize + gapBetweenPieces\n const piecesInOneRow = Math.floor(canvasWidth / pieceSizeWithGap)\n\n let shotCacheMap\n if (isMini) {\n const preloadPiecesAmount = Math.round(cache.Capacity / cache.PiecesLength - 1)\n shotCacheMap = getShortCacheMap({ cacheMap, preloadPiecesAmount, piecesInOneRow })\n }\n const source = isMini ? shotCacheMap : cacheMap\n const startingXPoint = Math.ceil((canvasWidth - pieceSizeWithGap * piecesInOneRow) / 2) // needed to center grid\n const height = Math.ceil(source.length / piecesInOneRow) * pieceSizeWithGap\n\n useEffect(() => {\n if (!canvasWidth || !height) return\n\n const canvas = canvasRef.current\n canvas.width = canvasWidth\n canvas.height = height\n ctxRef.current = canvas.getContext('2d')\n }, [canvasRef, height, canvasWidth])\n\n useEffect(() => {\n const ctx = ctxRef.current\n if (!ctx) return\n\n ctx.clearRect(0, 0, canvasWidth, height)\n\n source.forEach(({ percentage, priority, isReader, isReaderRange }, i) => {\n const inProgress = percentage > 0 && percentage < 100\n const isCompleted = percentage === 100\n const currentRow = i % piecesInOneRow\n const currentColumn = Math.floor(i / piecesInOneRow)\n const fixBlurStroke = borderWidth % 2 === 0 ? 0 : 0.5\n const requiredFix = Math.ceil(borderWidth / 2) + 1 + fixBlurStroke\n const x = currentRow * pieceSize + currentRow * gapBetweenPieces + startingXPoint + requiredFix\n const y = currentColumn * pieceSize + currentColumn * gapBetweenPieces + requiredFix\n\n ctx.lineWidth = borderWidth\n ctx.fillStyle = inProgress\n ? createGradient(ctx, percentage, theme, settingsTarget)\n : isCompleted\n ? completeColor\n : backgroundColor\n ctx.strokeStyle = isReader\n ? readerColor\n : inProgress || isCompleted\n ? completeColor\n : isReaderRange\n ? rangeColor\n : borderColor\n\n ctx.translate(x, y)\n ctx.fillRect(0, 0, pieceSize, pieceSize)\n ctx.strokeRect(0, 0, pieceSize, pieceSize)\n ctx.setTransform(1, 0, 0, 1, 0, 0)\n\n if (isSnakeDebugMode && priority > 0) {\n let info = ''\n if (priority === 1) info = ''\n else if (priority === 2) info = 'H'\n else if (priority === 3) info = 'R'\n else if (priority === 4) info = 'N'\n else if (priority === 5) info = 'A'\n ctx.font = isMini ? '13px monospace' : '10px monospace'\n const xpad = isMini ? pieceSize * 0.35 : pieceSize * 0.29\n const ypad = isMini ? pieceSize * 0.69 : pieceSize * 0.78\n ctx.fillStyle = 'black'\n ctx.fillText(info, x + xpad, y + ypad)\n }\n })\n }, [\n cacheMap,\n height,\n canvasWidth,\n piecesInOneRow,\n startingXPoint,\n pieceSize,\n gapBetweenPieces,\n source,\n backgroundColor,\n borderColor,\n borderWidth,\n settingsTarget,\n completeColor,\n readerColor,\n rangeColor,\n isMini,\n theme,\n isSnakeDebugMode,\n ])\n\n return (\n setDimensions(bounds)}>\n {({ measureRef }) => (\n \n \n \n \n\n {isMini && height >= cacheMaxHeight && {t('ScrollDown')}}\n
\n )}\n \n )\n}\n\nexport default memo(\n TorrentCache,\n (prev, next) => isEqual(prev.cache.Pieces, next.cache.Pieces) && isEqual(prev.cache.Readers, next.cache.Readers),\n)\n","export default ({ cacheMap, preloadPiecesAmount, piecesInOneRow }) => {\n const cacheMapWithoutEmptyBlocks = cacheMap.filter(({ percentage }) => percentage > 0)\n\n const getFullAmountOfBlocks = amountOfBlocks =>\n // this function counts existed amount of blocks with extra \"empty blocks\" to fill the row till the end\n amountOfBlocks % piecesInOneRow === 0\n ? amountOfBlocks - 1\n : amountOfBlocks + piecesInOneRow - (amountOfBlocks % piecesInOneRow) - 1 || 0\n\n const amountOfBlocksToRenderInShortView = getFullAmountOfBlocks(preloadPiecesAmount)\n // preloadPiecesAmount is counted from \"cache.Capacity / cache.PiecesLength\". We always show at least this amount of blocks\n const scalableAmountOfBlocksToRenderInShortView = getFullAmountOfBlocks(cacheMapWithoutEmptyBlocks.length)\n // cacheMap can become bigger than preloadPiecesAmount counted before. In that case we count blocks dynamically\n\n const finalAmountOfBlocksToRenderInShortView = Math.max(\n // this check is needed to decide which is the biggest amount of blocks and take it to render\n scalableAmountOfBlocksToRenderInShortView,\n amountOfBlocksToRenderInShortView,\n )\n\n const extraBlocksAmount = finalAmountOfBlocksToRenderInShortView - cacheMapWithoutEmptyBlocks.length + 1\n // amount of blocks needed to fill the line till the end\n\n const extraEmptyBlocksForFillingLine = extraBlocksAmount ? new Array(extraBlocksAmount).fill({}) : []\n\n return [...cacheMapWithoutEmptyBlocks, ...extraEmptyBlocksForFillingLine]\n}\n","import styled, { css } from 'styled-components'\n\nconst viewedPrimaryColor = '#858c90'\nconst viewedSecondaryColor = '#8c9498'\nconst viewedTertiaryColor = '#949ca0'\nconst bigTableDividerColor = '#d2d2d2'\nconst bigTableDefaultRowColor = '#f3f3f3'\nconst bigTableViewedRowColor = '#ddd'\n\nconst viewedIndicator = css`\n ${({\n theme: {\n table: { defaultPrimaryColor },\n },\n }) => css`\n :before {\n content: '';\n width: 10px;\n height: 10px;\n background: ${defaultPrimaryColor};\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `}\n`\nexport const TableStyle = styled.table`\n ${({\n theme: {\n table: { defaultPrimaryColor },\n },\n }) => css`\n border-collapse: collapse;\n margin: 25px 0;\n font-size: 0.9em;\n width: 100%;\n border-radius: 5px 5px 0 0;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n color: #000;\n\n thead tr {\n background: ${defaultPrimaryColor};\n color: #fff;\n text-align: left;\n text-transform: uppercase;\n }\n\n th,\n td {\n padding: 12px 15px;\n }\n\n tbody tr {\n border-bottom: 1px solid ${bigTableDividerColor};\n background: ${bigTableDefaultRowColor};\n\n :last-of-type {\n border-bottom: 2px solid ${defaultPrimaryColor};\n }\n\n &.viewed-file-row {\n background: ${bigTableViewedRowColor};\n }\n }\n\n td {\n &.viewed-file-indicator {\n position: relative;\n\n ${viewedIndicator}\n }\n }\n\n .button-cell {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 10px;\n }\n\n @media (max-width: 970px) {\n display: none;\n }\n `}\n`\n\nexport const ShortTableWrapper = styled.div`\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(2, 1fr);\n display: none;\n\n @media (max-width: 970px) {\n display: grid;\n }\n\n @media (max-width: 820px) {\n gap: 15px;\n grid-template-columns: 1fr;\n }\n`\n\nexport const ShortTable = styled.div`\n ${({\n isViewed,\n theme: {\n table: { defaultPrimaryColor, defaultSecondaryColor, defaultTertiaryColor },\n },\n }) => css`\n width: 100%;\n grid-template-rows: repeat(3, max-content);\n border-radius: 5px;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);\n\n .short-table {\n &-name {\n background: ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n display: grid;\n place-items: center;\n padding: 15px;\n color: #fff;\n text-transform: uppercase;\n font-size: 15px;\n font-weight: bold;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 10px;\n }\n }\n &-data {\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: ${isViewed ? 'max-content' : '1fr'};\n grid-auto-columns: 1fr;\n }\n &-field {\n display: grid;\n grid-template-rows: 30px 1fr;\n background: black;\n :not(:last-child) {\n border-right: 1px solid ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n }\n\n &-name {\n background: ${isViewed ? viewedSecondaryColor : defaultSecondaryColor};\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n font-weight: 500;\n display: grid;\n place-items: center;\n padding: 0 10px;\n\n @media (max-width: 880px) {\n font-size: 11px;\n }\n }\n\n &-value {\n background: ${isViewed ? viewedTertiaryColor : defaultTertiaryColor};\n display: grid;\n place-items: center;\n color: #fff;\n font-size: 15px;\n padding: 15px 10px;\n position: relative;\n\n @media (max-width: 880px) {\n font-size: 13px;\n padding: 12px 8px;\n }\n }\n }\n\n &-viewed-indicator {\n ${isViewed && viewedIndicator}\n }\n\n &-buttons {\n padding: 20px;\n border-bottom: 2px solid ${isViewed ? viewedPrimaryColor : defaultPrimaryColor};\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n align-items: center;\n gap: 20px;\n background: #f3f3f3;\n\n @media (max-width: 410px) {\n gap: 10px;\n grid-template-columns: 1fr;\n }\n }\n }\n `}\n`\n","import { streamHost } from 'utils/Hosts'\nimport isEqual from 'lodash/isEqual'\nimport { humanizeSize, isStandaloneApp } from 'utils/Utils'\nimport ptt from 'parse-torrent-title'\nimport { Button } from '@material-ui/core'\nimport CopyToClipboard from 'react-copy-to-clipboard'\nimport { useTranslation } from 'react-i18next'\n\nimport { TableStyle, ShortTableWrapper, ShortTable } from './style'\n\nconst { memo } = require('react')\n\n// russian episode detection support\nptt.addHandler('episode', /(\\d{1,4})[- |. ]серия|серия[- |. ](\\d{1,4})/i, { type: 'integer' })\nptt.addHandler('season', /sezon[- |. ](\\d{1,3})|(\\d{1,3})[- |. ]sezon/i, { type: 'integer' })\nptt.addHandler('season', /сезон[- |. ](\\d{1,3})|(\\d{1,3})[- |. ]сезон/i, { type: 'integer' })\n\nconst Table = memo(\n ({ playableFileList, viewedFileList, selectedSeason, seasonAmount, hash }) => {\n const { t } = useTranslation()\n const preloadBuffer = fileId => fetch(`${streamHost()}?link=${hash}&index=${fileId}&preload`)\n const getFileLink = (path, id) =>\n `${streamHost()}/${encodeURIComponent(path.split('\\\\').pop().split('/').pop())}?link=${hash}&index=${id}&play`\n const fileHasEpisodeText = !!playableFileList?.find(({ path }) => ptt.parse(path).episode)\n const fileHasSeasonText = !!playableFileList?.find(({ path }) => ptt.parse(path).season)\n const fileHasResolutionText = !!playableFileList?.find(({ path }) => ptt.parse(path).resolution)\n\n // if files in list is more then 1 and no season text detected by ptt.parse, show full name\n const shouldDisplayFullFileName = playableFileList?.length > 1 && !fileHasEpisodeText\n\n const isVlcUsed = JSON.parse(localStorage.getItem('isVlcUsed')) ?? false\n\n return !playableFileList?.length ? (\n 'No playable files in this torrent'\n ) : (\n <>\n \n \n \n | {t('Viewed')} | \n {t('Name')} | \n {fileHasSeasonText && seasonAmount?.length === 1 && {t('Season')} | }\n {fileHasEpisodeText && {t('Episode')} | }\n {fileHasResolutionText && {t('Resolution')} | }\n {t('Size')} | \n {t('Actions')} | \n
\n \n\n \n {playableFileList.map(({ id, path, length }) => {\n const { title, resolution, episode, season } = ptt.parse(path)\n const isViewed = viewedFileList?.includes(id)\n const link = getFileLink(path, id)\n\n return (\n (season === selectedSeason || !seasonAmount?.length) && (\n \n | \n {shouldDisplayFullFileName ? path : title} | \n {fileHasSeasonText && seasonAmount?.length === 1 && {season} | }\n {fileHasEpisodeText && {episode} | }\n {fileHasResolutionText && {resolution} | }\n {humanizeSize(length)} | \n \n \n \n\n \n \n \n\n \n \n \n \n | \n
\n )\n )\n })}\n \n \n\n \n {playableFileList.map(({ id, path, length }) => {\n const { title, resolution, episode, season } = ptt.parse(path)\n const isViewed = viewedFileList?.includes(id)\n const link = getFileLink(path, id)\n\n return (\n (season === selectedSeason || !seasonAmount?.length) && (\n \n {shouldDisplayFullFileName ? path : title}
\n \n {isViewed && (\n
\n )}\n {fileHasSeasonText && seasonAmount?.length === 1 && (\n
\n
{t('Season')}
\n
{season}
\n
\n )}\n {fileHasEpisodeText && (\n
\n
{t('Episode')}
\n
{episode}
\n
\n )}\n {fileHasResolutionText && (\n
\n
{t('Resolution')}
\n
{resolution}
\n
\n )}\n
\n
{t('Size')}
\n
{humanizeSize(length)}
\n
\n
\n \n
\n\n {isVlcUsed && isStandaloneApp ? (\n
\n \n \n ) : (\n
\n \n \n )}\n\n
\n \n \n
\n \n )\n )\n })}\n \n >\n )\n },\n (prev, next) => isEqual(prev, next),\n)\n\nexport default Table\n","import { rgba } from 'polished'\nimport styled, { css } from 'styled-components'\n\nexport const DialogContentGrid = styled.div`\n display: grid;\n grid-template-columns: 70% 1fr;\n grid-template-rows: repeat(2, min-content);\n grid-template-areas:\n 'main cache'\n 'file-list file-list';\n\n @media (max-width: 1450px) {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(3, min-content);\n grid-template-areas:\n 'main'\n 'cache'\n 'file-list';\n }\n`\nexport const Poster = styled.div`\n ${({\n poster,\n theme: {\n dialogTorrentDetailsContent: { posterBGColor },\n },\n }) => css`\n height: 400px;\n border-radius: 5px;\n overflow: hidden;\n align-self: center;\n\n ${poster\n ? css`\n img {\n border-radius: 5px;\n height: 100%;\n }\n `\n : css`\n width: 300px;\n display: grid;\n place-items: center;\n background: ${posterBGColor};\n\n svg {\n transform: scale(2.5) translateY(-3px);\n }\n `}\n\n @media (max-width: 1280px) {\n align-self: start;\n }\n\n @media (max-width: 840px) {\n ${poster\n ? css`\n height: 200px;\n `\n : css`\n display: none;\n `}\n }\n `}\n`\nexport const MainSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { gradientStartColor, gradientEndColor },\n },\n }) => css`\n grid-area: main;\n padding: 40px;\n display: grid;\n grid-template-columns: min-content 1fr;\n gap: 30px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n\n @media (max-width: 840px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const CacheSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { chacheSectionBGColor },\n },\n }) => css`\n grid-area: cache;\n padding: 40px;\n display: grid;\n align-content: start;\n grid-template-rows: min-content 1fr min-content;\n background: ${chacheSectionBGColor};\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const TorrentFilesSection = styled.section`\n ${({\n theme: {\n dialogTorrentDetailsContent: { torrentFilesSectionBGColor },\n },\n }) => css`\n grid-area: file-list;\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ${torrentFilesSectionBGColor};\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const SectionSubName = styled.div`\n ${({\n theme: {\n dialogTorrentDetailsContent: { subNameFontColor },\n },\n }) => css`\n ${({ mb }) => css`\n ${mb && `margin-top: ${mb / 3}px`};\n ${mb && `margin-bottom: ${mb}px`};\n line-height: 1.2;\n color: ${subNameFontColor};\n\n @media (max-width: 800px) {\n ${mb && `margin-top: ${mb / 4}px`};\n ${mb && `margin-bottom: ${mb / 2}px`};\n font-size: 14px;\n }\n `}\n `}\n`\n\nexport const SectionTitle = styled.div`\n ${({\n color,\n theme: {\n dialogTorrentDetailsContent: { titleFontColor },\n },\n }) => css`\n ${({ mb }) => css`\n ${mb && `margin-bottom: ${mb}px`};\n font-size: 34px;\n font-weight: 300;\n line-height: 1;\n word-break: break-word;\n color: ${color || titleFontColor};\n\n @media (max-width: 800px) {\n font-size: 24px;\n line-height: 1.1;\n ${mb && `margin-bottom: ${mb / 2}px`};\n }\n `}\n `}\n`\n\nexport const SectionHeader = styled.div`\n margin-bottom: 20px;\n`\n\nexport const WidgetWrapper = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 220px));\n gap: 20px;\n\n @media (max-width: 800px) {\n gap: 15px;\n }\n @media (max-width: 410px) {\n gap: 10px;\n }\n\n ${({ detailedView }) =>\n detailedView\n ? css`\n @media (max-width: 800px) {\n grid-template-columns: repeat(2, 1fr);\n }\n @media (max-width: 410px) {\n grid-template-columns: 1fr;\n }\n `\n : css`\n @media (max-width: 800px) {\n grid-template-columns: repeat(auto-fit, minmax(max-content, 185px));\n }\n @media (max-width: 480px) {\n grid-template-columns: 1fr 1fr;\n }\n @media (max-width: 390px) {\n grid-template-columns: 1fr;\n }\n `}\n`\n\nexport const WidgetFieldWrapper = styled.div`\n display: grid;\n grid-template-columns: 40px 1fr;\n grid-template-rows: min-content 50px;\n grid-template-areas:\n 'title title'\n 'icon value';\n\n > * {\n display: grid;\n place-items: center;\n }\n\n @media (max-width: 800px) {\n grid-template-columns: 30px 1fr;\n grid-template-rows: min-content 40px;\n }\n`\nexport const WidgetFieldTitle = styled.div`\n ${({\n theme: {\n dialogTorrentDetailsContent: { titleFontColor },\n },\n }) => css`\n grid-area: title;\n justify-self: start;\n text-transform: uppercase;\n font-size: 11px;\n margin-bottom: 2px;\n font-weight: 600;\n color: ${titleFontColor};\n `}\n`\n\nexport const WidgetFieldIcon = styled.div`\n ${({ bgColor }) => css`\n grid-area: icon;\n color: ${rgba('#fff', 0.8)};\n background: ${bgColor};\n border-radius: 5px 0 0 5px;\n\n @media (max-width: 800px) {\n > svg {\n width: 50%;\n }\n }\n `}\n`\nexport const WidgetFieldValue = styled.div`\n ${({\n bgColor,\n theme: {\n dialogTorrentDetailsContent: { widgetFontColor },\n },\n }) => css`\n grid-area: value;\n font-size: 24px;\n padding: 0 20px 0 0;\n color: ${widgetFontColor};\n background: ${bgColor};\n border-radius: 0 5px 5px 0;\n white-space: nowrap;\n\n @media (max-width: 800px) {\n font-size: 18px;\n padding: 0 16px 0 0;\n }\n `}\n`\n\nexport const LoadingProgress = styled.div.attrs(\n ({\n value,\n fullAmount,\n theme: {\n dialogTorrentDetailsContent: { gradientStartColor, gradientEndColor },\n },\n }) => {\n const percentage = Math.min(100, (value * 100) / fullAmount)\n\n return {\n // this block is here according to styled-components recomendation about fast changable components\n style: {\n background: `linear-gradient(to right, ${gradientStartColor} 0%, ${gradientEndColor} ${percentage}%, #eee ${percentage}%, #fff 100%)`,\n },\n }\n },\n)`\n ${({ label }) => css`\n border: 1px solid;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n\n :before {\n content: '${label}';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n `}\n`\n\nexport const Divider = styled.div`\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n`\n","import styled, { css } from 'styled-components'\n\nexport const DetailedViewWidgetSection = styled.section`\n ${({\n theme: {\n detailedView: { gradientStartColor, gradientEndColor },\n },\n }) => css`\n padding: 40px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n\nexport const DetailedViewCacheSection = styled.section`\n ${({\n theme: {\n detailedView: { cacheSectionBGColor },\n },\n }) => css`\n padding: 40px;\n box-shadow: inset 3px 25px 8px -25px rgba(0, 0, 0, 0.5);\n background: ${cacheSectionBGColor};\n flex: 1;\n\n @media (max-width: 800px) {\n padding: 20px;\n }\n `}\n`\n","import { WidgetFieldWrapper, WidgetFieldIcon, WidgetFieldValue, WidgetFieldTitle } from './style'\n\nexport default function StatisticsField({ icon: Icon, title, value, iconBg, valueBg }) {\n return (\n \n {title}\n \n \n \n\n {value}\n \n )\n}\n","import { DarkModeContext } from 'components/App'\nimport { useContext } from 'react'\nimport { THEME_MODES } from 'style/materialUISetup'\n\nconst { LIGHT, DARK } = THEME_MODES\n\nconst colors = {\n light: {\n downloadSpeed: { iconBGColor: '#118f00', valueBGColor: '#13a300' },\n uploadSpeed: { iconBGColor: '#0146ad', valueBGColor: '#0058db' },\n peers: { iconBGColor: '#cdc118', valueBGColor: '#d8cb18' },\n piecesCount: { iconBGColor: '#b6c95e', valueBGColor: '#c0d076' },\n piecesLength: { iconBGColor: '#0982c8', valueBGColor: '#098cd7' },\n status: { iconBGColor: '#aea25b', valueBGColor: '#b4aa6e' },\n size: { iconBGColor: '#9b01ad', valueBGColor: '#ac03bf' },\n },\n dark: {\n downloadSpeed: { iconBGColor: '#0c6600', valueBGColor: '#0d7000' },\n uploadSpeed: { iconBGColor: '#003f9e', valueBGColor: '#0047b3' },\n peers: { iconBGColor: '#a69c11', valueBGColor: '#b4a913' },\n piecesCount: { iconBGColor: '#8da136', valueBGColor: '#99ae3d' },\n piecesLength: { iconBGColor: '#07659c', valueBGColor: '#0872af' },\n status: { iconBGColor: '#938948', valueBGColor: '#9f9450' },\n size: { iconBGColor: '#81008f', valueBGColor: '#9102a1' },\n },\n}\n\nexport default function useGetWidgetColors(widgetName) {\n const { isDarkMode } = useContext(DarkModeContext)\n const widgetColors = colors[isDarkMode ? DARK : LIGHT][widgetName]\n\n return widgetColors\n}\n","import {\n ArrowDownward as ArrowDownwardIcon,\n ArrowUpward as ArrowUpwardIcon,\n SwapVerticalCircle as SwapVerticalCircleIcon,\n ViewAgenda as ViewAgendaIcon,\n Widgets as WidgetsIcon,\n PhotoSizeSelectSmall as PhotoSizeSelectSmallIcon,\n Build as BuildIcon,\n} from '@material-ui/icons'\nimport { getPeerString, humanizeSize, humanizeSpeed } from 'utils/Utils'\nimport { useTranslation } from 'react-i18next'\nimport { GETTING_INFO, IN_DB, CLOSED, PRELOAD, WORKING } from 'torrentStates'\n\nimport StatisticsField from '../StatisticsField'\nimport useGetWidgetColors from './useGetWidgetColors'\n\nexport const DownlodSpeedWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('downloadSpeed')\n\n return (\n \n )\n}\n\nexport const UploadSpeedWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('uploadSpeed')\n\n return (\n \n )\n}\n\nexport const PeersWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('peers')\n\n return (\n \n )\n}\n\nexport const PiecesCountWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('piecesCount')\n\n return (\n \n )\n}\n\nexport const PiecesLengthWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('piecesLength')\n\n return (\n \n )\n}\n\nexport const StatusWidget = ({ stat }) => {\n const { t } = useTranslation()\n\n const values = {\n [GETTING_INFO]: t('TorrentGettingInfo'),\n [PRELOAD]: t('TorrentPreload'),\n [WORKING]: t('TorrentWorking'),\n [CLOSED]: t('TorrentClosed'),\n [IN_DB]: t('TorrentInDb'),\n }\n const { iconBGColor, valueBGColor } = useGetWidgetColors('status')\n\n return (\n \n )\n}\n\nexport const SizeWidget = ({ data }) => {\n const { t } = useTranslation()\n const { iconBGColor, valueBGColor } = useGetWidgetColors('size')\n\n return (\n \n )\n}\n","export const [GETTING_INFO, PRELOAD, WORKING, CLOSED, IN_DB] = [1, 2, 3, 4, 5]\n","import { useTranslation } from 'react-i18next'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\nimport { useState } from 'react'\n\nimport { SectionTitle, WidgetWrapper } from '../style'\nimport { DetailedViewCacheSection, DetailedViewWidgetSection } from './style'\nimport TorrentCache from '../TorrentCache'\nimport {\n SizeWidget,\n PiecesLengthWidget,\n StatusWidget,\n PiecesCountWidget,\n PeersWidget,\n UploadSpeedWidget,\n DownlodSpeedWidget,\n} from '../widgets'\n\nexport default function DetailedView({\n downloadSpeed,\n uploadSpeed,\n torrent,\n torrentSize,\n PiecesCount,\n PiecesLength,\n stat,\n cache,\n}) {\n const { t } = useTranslation()\n const [isSnakeDebugMode, setIsSnakeDebugMode] = useState(\n JSON.parse(localStorage.getItem('isSnakeDebugMode')) || false,\n )\n\n return (\n <>\n \n {t('Data')}\n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n {t('Cache')}\n\n {\n setIsSnakeDebugMode(checked)\n localStorage.setItem('isSnakeDebugMode', checked)\n }}\n />\n }\n label={t('DebugMode')}\n labelPlacement='start'\n />\n
\n \n\n \n \n >\n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const MainSectionButtonGroup = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n\n :not(:last-child) {\n margin-bottom: 30px;\n }\n\n @media (max-width: 1580px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 880px) {\n grid-template-columns: 1fr;\n }\n`\n\nexport const SmallLabel = styled.div`\n ${({\n mb,\n theme: {\n torrentFunctions: { fontColor },\n },\n }) => css`\n ${mb && `margin-bottom: ${mb}px`};\n font-size: 20px;\n font-weight: 300;\n line-height: 1;\n color: ${fontColor};\n\n @media (max-width: 800px) {\n font-size: 18px;\n ${mb && `margin-bottom: ${mb / 1.5}px`};\n }\n `}\n`\n","import axios from 'axios'\nimport { memo } from 'react'\nimport { playlistTorrHost, torrentsHost, viewedHost } from 'utils/Hosts'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\nimport { Button } from '@material-ui/core'\nimport ptt from 'parse-torrent-title'\nimport { useTranslation } from 'react-i18next'\n\nimport { SmallLabel, MainSectionButtonGroup } from './style'\nimport { SectionSubName } from '../style'\n\nconst TorrentFunctions = memo(\n ({ hash, viewedFileList, playableFileList, name, title, setViewedFileList }) => {\n const { t } = useTranslation()\n const latestViewedFileId = viewedFileList?.[viewedFileList?.length - 1]\n const latestViewedFile = playableFileList?.find(({ id }) => id === latestViewedFileId)?.path\n const isOnlyOnePlayableFile = playableFileList?.length === 1\n const latestViewedFileData = latestViewedFile && ptt.parse(latestViewedFile)\n const dropTorrent = () => axios.post(torrentsHost(), { action: 'drop', hash })\n const removeTorrentViews = () =>\n axios.post(viewedHost(), { action: 'rem', hash, file_index: -1 }).then(() => setViewedFileList())\n const fullPlaylistLink = `${playlistTorrHost()}/${encodeURIComponent(name || title || 'file')}.m3u?link=${hash}&m3u`\n const partialPlaylistLink = `${fullPlaylistLink}&fromlast`\n\n return (\n <>\n {!isOnlyOnePlayableFile && !!viewedFileList?.length && (\n <>\n {t('DownloadPlaylist')}\n \n {t('LatestFilePlayed')}{' '}\n \n {latestViewedFileData?.title}.\n {latestViewedFileData?.season && (\n <>\n {' '}\n {t('Season')}: {latestViewedFileData?.season}. {t('Episode')}: {latestViewedFileData?.episode}.\n >\n )}\n \n \n\n \n \n \n \n\n \n \n \n \n >\n )}\n {t('TorrentState')}\n \n \n \n \n {t('Info')}\n \n {(isOnlyOnePlayableFile || !viewedFileList?.length) && (\n \n \n \n )}\n \n \n \n \n >\n )\n },\n () => true,\n)\n\nexport default TorrentFunctions\n","const getExt = filename => {\n const ext = filename.split('.').pop()\n if (ext === filename) return ''\n return ext.toLowerCase()\n}\nconst playableExtList = [\n // video\n '3g2',\n '3gp',\n 'aaf',\n 'asf',\n 'avchd',\n 'avi',\n 'drc',\n 'flv',\n 'iso',\n 'm2v',\n 'm2ts',\n 'm4p',\n 'm4v',\n 'mkv',\n 'mng',\n 'mov',\n 'mp2',\n 'mp4',\n 'mpe',\n 'mpeg',\n 'mpg',\n 'mpv',\n 'mxf',\n 'nsv',\n 'ogg',\n 'ogv',\n 'ts',\n 'qt',\n 'rm',\n 'rmvb',\n 'roq',\n 'svi',\n 'vob',\n 'webm',\n 'wmv',\n 'yuv',\n // audio\n 'aac',\n 'aiff',\n 'ape',\n 'au',\n 'flac',\n 'gsm',\n 'it',\n 'm3u',\n 'm4a',\n 'mid',\n 'mod',\n 'mp3',\n 'mpa',\n 'pls',\n 'ra',\n 's3m',\n 'sid',\n 'wav',\n 'wma',\n 'xm',\n]\n\n// eslint-disable-next-line import/prefer-default-export\nexport const isFilePlayable = fileName => playableExtList.includes(getExt(fileName))\n","import { NoImageIcon } from 'icons'\nimport { humanizeSize, removeRedundantCharacters } from 'utils/Utils'\nimport { useEffect, useState } from 'react'\nimport { Button, ButtonGroup } from '@material-ui/core'\nimport ptt from 'parse-torrent-title'\nimport axios from 'axios'\nimport { viewedHost } from 'utils/Hosts'\nimport { GETTING_INFO, IN_DB } from 'torrentStates'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { useTranslation } from 'react-i18next'\n\nimport { useUpdateCache, useGetSettings } from './customHooks'\nimport DialogHeader from './DialogHeader'\nimport TorrentCache from './TorrentCache'\nimport Table from './Table'\nimport DetailedView from './DetailedView'\nimport {\n DialogContentGrid,\n MainSection,\n Poster,\n SectionTitle,\n SectionSubName,\n WidgetWrapper,\n LoadingProgress,\n SectionHeader,\n CacheSection,\n TorrentFilesSection,\n Divider,\n} from './style'\nimport { DownlodSpeedWidget, UploadSpeedWidget, PeersWidget, SizeWidget, StatusWidget } from './widgets'\nimport TorrentFunctions from './TorrentFunctions'\nimport { isFilePlayable } from './helpers'\n\nconst Loader = () => (\n \n \n
\n)\n\nexport default function DialogTorrentDetailsContent({ closeDialog, torrent }) {\n const { t } = useTranslation()\n const [isLoading, setIsLoading] = useState(true)\n const [isDetailedCacheView, setIsDetailedCacheView] = useState(false)\n const [viewedFileList, setViewedFileList] = useState()\n const [playableFileList, setPlayableFileList] = useState()\n const [seasonAmount, setSeasonAmount] = useState(null)\n const [selectedSeason, setSelectedSeason] = useState()\n const [isSnakeDebugMode] = useState(JSON.parse(localStorage.getItem('isSnakeDebugMode')) || false)\n\n const {\n poster,\n hash,\n title,\n name,\n stat,\n download_speed: downloadSpeed,\n upload_speed: uploadSpeed,\n torrent_size: torrentSize,\n file_stats: torrentFileList,\n } = torrent\n\n const cache = useUpdateCache(hash)\n const settings = useGetSettings(cache)\n\n const { Capacity, PiecesCount, PiecesLength, Filled } = cache\n\n useEffect(() => {\n if (playableFileList && seasonAmount === null) {\n const seasons = []\n playableFileList.forEach(({ path }) => {\n const currentSeason = ptt.parse(path).season\n if (currentSeason) {\n !seasons.includes(currentSeason) && seasons.push(currentSeason)\n }\n })\n seasons.length && setSelectedSeason(seasons[0])\n setSeasonAmount(seasons.sort((a, b) => a - b))\n }\n }, [playableFileList, seasonAmount])\n\n useEffect(() => {\n setPlayableFileList(torrentFileList?.filter(({ path }) => isFilePlayable(path)))\n }, [torrentFileList])\n\n useEffect(() => {\n const cacheLoaded = !!Object.entries(cache).length\n const torrentLoaded = stat !== GETTING_INFO && stat !== IN_DB\n\n if (!cacheLoaded && !isLoading) setIsLoading(true)\n if (cacheLoaded && isLoading && torrentLoaded) setIsLoading(false)\n }, [stat, cache, isLoading])\n\n useEffect(() => {\n // getting viewed file list\n axios.post(viewedHost(), { action: 'list', hash }).then(({ data }) => {\n if (data) {\n const lst = data.map(itm => itm.file_index).sort((a, b) => a - b)\n setViewedFileList(lst)\n } else setViewedFileList()\n })\n }, [hash])\n\n const preloadPerc = settings?.PreloadCache\n const preloadSize = (Capacity / 100) * preloadPerc\n const bufferSize = preloadSize > 33554432 ? preloadSize : 33554432 // Not less than 32MB\n\n const getParsedTitle = () => {\n const newNameStringArr = []\n\n const torrentParsedName = name && ptt.parse(name)\n\n if (title !== name) {\n newNameStringArr.push(removeRedundantCharacters(title))\n } else if (torrentParsedName?.title) newNameStringArr.push(removeRedundantCharacters(torrentParsedName?.title))\n\n // These 2 checks are needed to get year and resolution from torrent name if title does not have this info\n if (torrentParsedName?.year && !newNameStringArr[0].includes(torrentParsedName?.year))\n newNameStringArr.push(torrentParsedName?.year)\n if (torrentParsedName?.resolution && !newNameStringArr[0].includes(torrentParsedName?.resolution))\n newNameStringArr.push(torrentParsedName?.resolution)\n\n const newNameString = newNameStringArr.join('. ')\n\n // removeRedundantCharacters is returning \"..\" if it was \"...\"\n const lastDotShouldBeAdded =\n newNameString[newNameString.length - 1] === '.' && newNameString[newNameString.length - 2] === '.'\n\n return lastDotShouldBeAdded ? `${newNameString}.` : newNameString\n }\n\n return (\n <>\n setIsDetailedCacheView(false) })}\n />\n\n \n {isLoading ? (\n
\n ) : isDetailedCacheView ? (\n
\n ) : (\n
\n \n {poster ?
: }\n\n \n {title && name !== title ? (\n getParsedTitle().length > 90 ? (\n <>\n
{ptt.parse(name).title}\n
{getParsedTitle()}\n >\n ) : (\n <>\n
{getParsedTitle()}\n
{ptt.parse(name || '')?.title}\n >\n )\n ) : (\n
{getParsedTitle()}\n )}\n\n
\n \n \n \n \n \n \n\n
\n\n
\n
\n \n\n \n \n {t('Buffer')}\n {bufferSize <= 33554432 && {t('BufferNote')}}\n \n \n\n \n \n \n\n \n {t('TorrentContent')}\n\n {seasonAmount?.length > 1 && (\n <>\n {t('SelectSeason')}\n \n {seasonAmount.map(season => (\n \n ))}\n \n\n \n {t('Season')} {selectedSeason}\n \n >\n )}\n\n \n \n \n )}\n
\n >\n )\n}\n","import { useTranslation } from 'react-i18next'\n\nexport default () => {\n const { i18n } = useTranslation()\n const currentLanguage = i18n.language.substr(0, 2)\n\n return [currentLanguage, lang => i18n.changeLanguage(lang)]\n}\n","import { useEffect, useRef } from 'react'\n\nexport default function usePreviousState(value) {\n const ref = useRef(value)\n\n useEffect(() => {\n ref.current = value\n }, [value])\n\n return ref.current\n}\n","import styled, { css } from 'styled-components'\n\nexport const Header = styled.div`\n ${({ theme: { primary } }) => css`\n background: ${primary};\n color: rgba(0, 0, 0, 0.87);\n font-size: 20px;\n color: #fff;\n font-weight: 600;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 15px 24px;\n position: relative;\n `}\n`\n\nexport const ButtonWrapper = styled.div`\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n\n > :not(:last-child) {\n margin-right: 10px;\n }\n`\n","import { css } from 'styled-components'\n\nexport const standaloneMedia = styles => css`\n @media screen and (display-mode: standalone) {\n ${styles};\n }\n`\n","import { standaloneMedia } from 'style/standaloneMedia'\nimport styled, { css } from 'styled-components'\n\nexport const pwaFooterHeight = 90\n\nexport default styled.div`\n background: #575757;\n color: #fff;\n position: fixed;\n bottom: 0;\n width: 100%;\n height: ${pwaFooterHeight}px;\n\n display: none;\n\n ${standaloneMedia(css`\n display: grid;\n grid-template-columns: repeat(5, calc(100% / 5));\n justify-items: center;\n `)}\n`\n","import { ListItem } from '@material-ui/core'\nimport Dialog from '@material-ui/core/Dialog'\nimport { pwaFooterHeight } from 'components/App/PWAFooter/style'\nimport styled, { css } from 'styled-components'\nimport { Header } from 'style/DialogStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport { standaloneMedia } from './standaloneMedia'\n\nexport const StyledMenuButtonWrapper = styled(ListItem).attrs({ button: true })`\n ${standaloneMedia(css`\n width: 100%;\n height: 60px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n `)}\n`\n\nexport const StyledDialog = styled(Dialog).attrs({\n ...(isStandaloneApp && { hideBackdrop: true, transitionDuration: 0 }),\n})`\n ${standaloneMedia(css`\n margin-bottom: ${pwaFooterHeight}px;\n\n .MuiDialog-container .MuiPaper-root {\n box-shadow: none;\n }\n `)}\n`\n\nexport const StyledHeader = styled(Header)`\n ${standaloneMedia(css`\n padding-top: 47px;\n `)}\n`\n","import { useEffect, useRef } from 'react'\nimport { isStandaloneApp } from 'utils/Utils'\n\nexport default function useOnStandaloneAppOutsideClick(onClickOutside) {\n const ref = useRef()\n\n useEffect(() => {\n if (!isStandaloneApp) return\n\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClickOutside && onClickOutside()\n }\n }\n\n document.addEventListener('click', handleClickOutside, true)\n\n return () => {\n document.removeEventListener('click', handleClickOutside, true)\n }\n })\n\n return ref\n}\n","import axios from 'axios'\nimport parseTorrent from 'parse-torrent'\nimport ptt from 'parse-torrent-title'\n\nexport const getMoviePosters = (movieName, language = 'en') => {\n const url = 'http://api.themoviedb.org/3/search/multi'\n const imgHost = language === 'ru' ? 'http://imagetmdb.com' : 'http://image.tmdb.org' // https:\n\n return axios\n .get(url, {\n params: {\n api_key: process.env.REACT_APP_TMDB_API_KEY,\n language,\n include_image_language: `${language},null,en`,\n query: movieName,\n },\n })\n .then(({ data: { results } }) =>\n results.filter(el => el.poster_path).map(el => `${imgHost}/t/p/w300${el.poster_path}`),\n )\n .catch(() => null)\n}\n\nexport const checkImageURL = async url => {\n if (!url || !url.match(/.(\\.jpg|\\.jpeg|\\.png|\\.gif|\\.svg||\\.webp).*$/i)) return false\n return true\n}\n\nconst magnetRegex = /^magnet:\\?xt=urn:[a-z0-9].*/i\nexport const hashRegex = /^\\b[0-9a-f]{32}\\b$|^\\b[0-9a-f]{40}\\b$|^\\b[0-9a-f]{64}\\b$/i\nconst torrentRegex = /^.*\\.(torrent)$/i\nconst linkRegex = /^(http(s?)):\\/\\/.*/i\n\nexport const checkTorrentSource = source =>\n source.match(hashRegex) !== null ||\n source.match(magnetRegex) !== null ||\n source.match(torrentRegex) !== null ||\n source.match(linkRegex) !== null\n\nexport const parseTorrentTitle = (parsingSource, callback) => {\n parseTorrent.remote(parsingSource, (err, { name, files } = {}) => {\n if (!name || err) return callback({ parsedTitle: null, originalName: null })\n\n const torrentName = ptt.parse(name).title\n const nameOfFileInsideTorrent = files ? ptt.parse(files[0].name).title : null\n\n let newTitle = torrentName\n if (nameOfFileInsideTorrent) {\n // taking shorter title because in most cases it is more accurate\n newTitle = torrentName.length < nameOfFileInsideTorrent.length ? torrentName : nameOfFileInsideTorrent\n }\n\n callback({ parsedTitle: newTitle, originalName: name })\n })\n}\n","import { Button } from '@material-ui/core'\nimport styled, { css } from 'styled-components'\n\nexport const Content = styled.div`\n ${({\n isEditMode,\n theme: {\n addDialog: { gradientStartColor, gradientEndColor, fontColor },\n },\n }) => css`\n height: 550px;\n background: linear-gradient(145deg, ${gradientStartColor}, ${gradientEndColor});\n flex: 1;\n display: grid;\n grid-template-columns: repeat(${isEditMode ? '1' : '2'}, 1fr);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n overflow: auto;\n color: ${fontColor};\n\n @media (max-width: 540px) {\n ${'' /* Just for bug fixing on small screens */}\n overflow: scroll;\n }\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n\n @media (max-width: 500px) {\n align-content: start;\n }\n `}\n`\n\nexport const RightSide = styled.div`\n padding: 0 20px 20px 20px;\n`\n\nexport const RightSideContainer = styled.div`\n ${({\n isHidden,\n notificationMessage,\n isError,\n theme: {\n addDialog: { notificationErrorBGColor, notificationSuccessBGColor },\n },\n }) => css`\n height: 530px;\n\n ${notificationMessage &&\n css`\n position: relative;\n white-space: nowrap;\n\n :before {\n font-size: 20px;\n font-weight: 300;\n content: '${notificationMessage}';\n display: grid;\n place-items: center;\n background: ${isError ? notificationErrorBGColor : notificationSuccessBGColor};\n padding: 10px 15px;\n position: absolute;\n top: 52%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 5px;\n }\n `};\n\n ${isHidden &&\n css`\n display: none;\n `};\n\n @media (max-width: 500px) {\n height: 170px;\n }\n `}\n`\nexport const LeftSide = styled.div`\n display: flex;\n flex-direction: column;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n`\n\nexport const LeftSideBottomSectionBasicStyles = css`\n transition: transform 0.3s;\n padding: 20px;\n height: 100%;\n display: grid;\n`\n\nexport const LeftSideBottomSectionNoFile = styled.div`\n ${LeftSideBottomSectionBasicStyles}\n border: 4px dashed rgba(0,0,0,0.1);\n text-align: center;\n outline: none;\n\n ${({ isDragActive }) => isDragActive && `border: 4px dashed green`};\n\n justify-items: center;\n grid-template-rows: 130px 1fr;\n cursor: pointer;\n\n :hover {\n background-color: rgba(0, 0, 0, 0.04);\n svg {\n transform: translateY(-4%);\n }\n }\n\n @media (max-width: 930px) {\n border: 4px dashed transparent;\n height: 400px;\n place-items: center;\n grid-template-rows: 40% 1fr;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n grid-template-rows: 1fr;\n\n > div:first-of-type {\n display: none;\n }\n }\n`\n\nexport const LeftSideBottomSectionFileSelected = styled.div`\n ${LeftSideBottomSectionBasicStyles}\n place-items: center;\n\n @media (max-width: 930px) {\n height: 400px;\n }\n\n @media (max-width: 500px) {\n height: 170px;\n }\n`\n\nexport const TorrentIconWrapper = styled.div`\n position: relative;\n`\n\nexport const CancelIconWrapper = styled.div`\n position: absolute;\n top: -9px;\n left: 10px;\n cursor: pointer;\n\n > svg {\n transition: all 0.3s;\n fill: rgba(0, 0, 0, 0.7);\n\n :hover {\n fill: rgba(0, 0, 0, 0.6);\n }\n }\n`\n\nexport const IconWrapper = styled.div`\n display: grid;\n justify-items: center;\n align-content: start;\n gap: 10px;\n align-self: start;\n\n svg {\n transition: all 0.3s;\n }\n`\n\nexport const LeftSideTopSection = styled.div`\n ${({\n active,\n theme: {\n addDialog: { gradientStartColor },\n },\n }) => css`\n background: ${gradientStartColor};\n padding: 0 20px 20px 20px;\n transition: all 0.3s;\n\n ${active && 'box-shadow: 0 8px 10px -9px rgba(0, 0, 0, 0.5)'};\n `}\n`\n\nexport const PosterWrapper = styled.div`\n margin-top: 20px;\n display: grid;\n grid-template-columns: max-content 1fr;\n grid-template-rows: 300px max-content;\n column-gap: 5px;\n position: relative;\n margin-bottom: 20px;\n\n grid-template-areas:\n 'poster suggestions'\n 'clear empty';\n\n @media (max-width: 540px) {\n grid-template-columns: 1fr;\n gap: 5px 0;\n justify-items: center;\n grid-template-areas:\n 'poster'\n 'clear'\n 'suggestions';\n }\n`\n\nexport const PosterSuggestions = styled.div`\n display: grid;\n grid-area: suggestions;\n grid-auto-flow: column;\n grid-template-columns: repeat(3, max-content);\n grid-template-rows: repeat(4, max-content);\n gap: 5px;\n\n @media (max-width: 540px) {\n grid-auto-flow: row;\n grid-template-columns: repeat(5, max-content);\n }\n @media (max-width: 375px) {\n grid-template-columns: repeat(4, max-content);\n }\n`\n\nexport const PosterSuggestionsItem = styled.div`\n cursor: pointer;\n width: 71px;\n height: 71px;\n\n @media (max-width: 430px) {\n width: 60px;\n height: 60px;\n }\n\n @media (max-width: 375px) {\n width: 71px;\n height: 71px;\n }\n\n @media (max-width: 355px) {\n width: 60px;\n height: 60px;\n }\n\n img {\n transition: all 0.3s;\n border-radius: 5px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n\n :hover {\n filter: brightness(130%);\n }\n }\n`\n\nexport const Poster = styled.div`\n ${({\n poster,\n theme: {\n addDialog: { posterBGColor },\n },\n }) => css`\n border-radius: 5px;\n overflow: hidden;\n width: 200px;\n grid-area: poster;\n\n ${poster\n ? css`\n img {\n width: 200px;\n object-fit: cover;\n border-radius: 5px;\n height: 100%;\n }\n `\n : css`\n display: grid;\n place-items: center;\n background: ${posterBGColor};\n\n svg {\n transform: scale(1.5) translateY(-3px);\n }\n `}\n `}\n`\n\nexport const ClearPosterButton = styled(Button)`\n grid-area: clear;\n justify-self: center;\n transform: translateY(-50%);\n position: absolute;\n ${({ showbutton }) => !showbutton && 'display: none'};\n\n @media (max-width: 540px) {\n transform: translateY(-140%);\n }\n`\n\nexport const PosterLanguageSwitch = styled.div`\n ${({\n showbutton,\n theme: {\n addDialog: { languageSwitchBGColor, languageSwitchFontColor },\n },\n }) => css`\n grid-area: poster;\n z-index: 5;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 30px;\n height: 30px;\n background: ${languageSwitchBGColor};\n border-radius: 50%;\n display: grid;\n place-items: center;\n color: ${languageSwitchFontColor};\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s;\n\n ${!showbutton && 'display: none'};\n\n :hover {\n filter: brightness(1.1);\n }\n `}\n`\n\nexport const StyledPWAAddButton = styled.div`\n border: 2px solid white;\n border-radius: 50%;\n height: 45px;\n width: 45px;\n position: relative;\n\n :before,\n :after {\n content: '';\n background: white;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n :before {\n width: 2px;\n height: 25px;\n }\n :after {\n width: 25px;\n height: 2px;\n }\n`\n","import { useTranslation } from 'react-i18next'\nimport { rgba } from 'polished'\nimport { NoImageIcon } from 'icons'\nimport { IconButton, InputAdornment, TextField, useTheme } from '@material-ui/core'\nimport { HighlightOff as HighlightOffIcon } from '@material-ui/icons'\n\nimport {\n ClearPosterButton,\n PosterLanguageSwitch,\n RightSide,\n Poster,\n PosterSuggestions,\n PosterSuggestionsItem,\n PosterWrapper,\n RightSideContainer,\n} from './style'\nimport { checkImageURL } from './helpers'\n\nexport default function RightSideComponent({\n setTitle,\n setPosterUrl,\n setIsPosterUrlCorrect,\n setIsUserInteractedWithPoster,\n setPosterList,\n isTorrentSourceCorrect,\n isHashAlreadyExists,\n title,\n parsedTitle,\n posterUrl,\n isPosterUrlCorrect,\n posterList,\n currentLang,\n posterSearchLanguage,\n setPosterSearchLanguage,\n posterSearch,\n removePoster,\n torrentSource,\n originalTorrentTitle,\n updateTitleFromSource,\n isCustomTitleEnabled,\n setIsCustomTitleEnabled,\n isEditMode,\n}) {\n const { t } = useTranslation()\n const primary = useTheme().palette.primary.main\n\n const handleTitleChange = ({ target: { value } }) => setTitle(value)\n const handlePosterUrlChange = ({ target: { value } }) => {\n setPosterUrl(value)\n checkImageURL(value).then(setIsPosterUrlCorrect)\n setIsUserInteractedWithPoster(!!value)\n setPosterList()\n }\n const userChangesPosterUrl = url => {\n setPosterUrl(url)\n checkImageURL(url).then(setIsPosterUrlCorrect)\n setIsUserInteractedWithPoster(true)\n }\n\n return (\n \n \n {originalTorrentTitle ? (\n <>\n \n setIsCustomTitleEnabled(true)}\n onBlur={({ target: { value } }) => !value && setIsCustomTitleEnabled(false)}\n value={title}\n margin='dense'\n label={t('AddDialog.CustomTorrentTitle')}\n type='text'\n variant='outlined'\n fullWidth\n helperText={t('AddDialog.CustomTorrentTitleHelperText')}\n InputProps={{\n endAdornment: (\n \n {\n setTitle('')\n setIsCustomTitleEnabled(!isCustomTitleEnabled)\n updateTitleFromSource()\n setIsUserInteractedWithPoster(false)\n }}\n >\n \n \n \n ),\n }}\n />\n >\n ) : (\n \n )}\n \n\n \n \n {isPosterUrlCorrect ?
: }\n \n\n \n {posterList\n ?.filter(url => url !== posterUrl)\n .slice(0, 12)\n .map(url => (\n userChangesPosterUrl(url)} key={url}>\n
\n \n ))}\n \n\n {currentLang !== 'en' && (\n {\n const newLanguage = posterSearchLanguage === 'en' ? 'ru' : 'en'\n setPosterSearchLanguage(newLanguage)\n posterSearch(isCustomTitleEnabled ? title : originalTorrentTitle ? parsedTitle : title, newLanguage, {\n shouldRefreshMainPoster: true,\n })\n }}\n showbutton={+isPosterUrlCorrect}\n color='primary'\n variant='contained'\n size='small'\n >\n {posterSearchLanguage === 'en' ? 'EN' : 'RU'}\n \n )}\n\n {\n removePoster()\n setIsUserInteractedWithPoster(true)\n }}\n color='primary'\n variant='contained'\n size='small'\n >\n {t('Clear')}\n \n \n \n\n \n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { useDropzone } from 'react-dropzone'\nimport { AddItemIcon, TorrentIcon } from 'icons'\nimport TextField from '@material-ui/core/TextField'\nimport { Cancel as CancelIcon } from '@material-ui/icons'\nimport { useState } from 'react'\n\nimport {\n CancelIconWrapper,\n IconWrapper,\n LeftSide,\n LeftSideBottomSectionFileSelected,\n LeftSideBottomSectionNoFile,\n LeftSideTopSection,\n TorrentIconWrapper,\n} from './style'\n\nexport default function LeftSideComponent({\n setIsUserInteractedWithPoster,\n setSelectedFile,\n torrentSource,\n setTorrentSource,\n selectedFile,\n}) {\n const { t } = useTranslation()\n\n const handleCapture = files => {\n const [file] = files\n if (!file) return\n\n setIsUserInteractedWithPoster(false)\n setSelectedFile(file)\n setTorrentSource(file.name)\n }\n\n const clearSelectedFile = () => {\n setSelectedFile()\n setTorrentSource('')\n }\n\n const [isTorrentSourceActive, setIsTorrentSourceActive] = useState(false)\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: handleCapture, accept: '.torrent' })\n\n const handleTorrentSourceChange = ({ target: { value } }) => setTorrentSource(value)\n\n return (\n \n \n setIsTorrentSourceActive(true)}\n onBlur={() => setIsTorrentSourceActive(false)}\n inputProps={{ autoComplete: 'off' }}\n disabled={!!selectedFile}\n />\n \n\n {selectedFile ? (\n \n \n \n\n \n \n \n \n \n ) : (\n \n \n {t('AddDialog.AppendFile.Or')}
\n\n \n \n {t('AddDialog.AppendFile.ClickOrDrag')}
\n \n \n )}\n \n )\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport { torrentsHost, torrentUploadHost } from 'utils/Hosts'\nimport axios from 'axios'\nimport { useTranslation } from 'react-i18next'\nimport debounce from 'lodash/debounce'\nimport useChangeLanguage from 'utils/useChangeLanguage'\nimport { useMediaQuery } from '@material-ui/core'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport usePreviousState from 'utils/usePreviousState'\nimport { useQuery } from 'react-query'\nimport { getTorrents } from 'utils/Utils'\nimport parseTorrent from 'parse-torrent'\nimport { ButtonWrapper } from 'style/DialogStyles'\nimport { StyledDialog, StyledHeader } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nimport { checkImageURL, getMoviePosters, checkTorrentSource, parseTorrentTitle } from './helpers'\nimport { Content } from './style'\nimport RightSideComponent from './RightSideComponent'\nimport LeftSideComponent from './LeftSideComponent'\n\nexport default function AddDialog({\n handleClose,\n hash: originalHash,\n title: originalTitle,\n name: originalName,\n poster: originalPoster,\n}) {\n const { t } = useTranslation()\n const isEditMode = !!originalHash\n const [torrentSource, setTorrentSource] = useState(originalHash || '')\n const [title, setTitle] = useState(originalTitle || '')\n const [originalTorrentTitle, setOriginalTorrentTitle] = useState('')\n const [parsedTitle, setParsedTitle] = useState('')\n const [posterUrl, setPosterUrl] = useState(originalPoster || '')\n const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false)\n const [isTorrentSourceCorrect, setIsTorrentSourceCorrect] = useState(false)\n const [isHashAlreadyExists, setIsHashAlreadyExists] = useState(false)\n const [posterList, setPosterList] = useState()\n const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(isEditMode)\n const [currentLang] = useChangeLanguage()\n const [selectedFile, setSelectedFile] = useState()\n const [posterSearchLanguage, setPosterSearchLanguage] = useState(currentLang === 'ru' ? 'ru' : 'en')\n const [isSaving, setIsSaving] = useState(false)\n const [skipDebounce, setSkipDebounce] = useState(false)\n const [isCustomTitleEnabled, setIsCustomTitleEnabled] = useState(false)\n const [currentSourceHash, setCurrentSourceHash] = useState()\n\n const ref = useOnStandaloneAppOutsideClick(handleClose)\n\n const { data: torrents } = useQuery('torrents', getTorrents, { retry: 1, refetchInterval: 1000 })\n\n useEffect(() => {\n // getting hash from added torrent source\n parseTorrent.remote(selectedFile || torrentSource, (_, { infoHash } = {}) => setCurrentSourceHash(infoHash))\n }, [selectedFile, torrentSource])\n\n useEffect(() => {\n // checking if torrent already exists in DB\n if (!setCurrentSourceHash) return\n\n const allHashes = torrents.map(({ hash }) => hash)\n setIsHashAlreadyExists(allHashes.includes(currentSourceHash))\n }, [currentSourceHash, torrents])\n\n useEffect(() => {\n // closing dialog when torrent successfully added in DB\n if (!isSaving) return\n\n const allHashes = torrents.map(({ hash }) => hash)\n allHashes.includes(currentSourceHash) && handleClose()\n // FIXME! check api reply on add links\n const linkRegex = /^(http(s?)):\\/\\/.*/i\n torrentSource.match(linkRegex) !== null && handleClose()\n }, [isSaving, torrents, torrentSource, currentSourceHash, handleClose])\n\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n\n const updateTitleFromSource = useCallback(() => {\n parseTorrentTitle(selectedFile || torrentSource, ({ parsedTitle, originalName }) => {\n if (!originalName) return\n\n setSkipDebounce(true)\n setTitle('')\n setIsCustomTitleEnabled(false)\n setOriginalTorrentTitle(originalName)\n setParsedTitle(parsedTitle)\n })\n }, [selectedFile, torrentSource])\n\n useEffect(() => {\n if (!selectedFile && !torrentSource) {\n setTitle('')\n setOriginalTorrentTitle('')\n setParsedTitle('')\n setIsCustomTitleEnabled(false)\n setPosterList()\n removePoster()\n setIsUserInteractedWithPoster(false)\n }\n }, [selectedFile, torrentSource])\n\n const removePoster = () => {\n setIsPosterUrlCorrect(false)\n setPosterUrl('')\n }\n\n useEffect(() => {\n if (originalHash) {\n checkImageURL(posterUrl).then(correctImage => {\n correctImage ? setIsPosterUrlCorrect(true) : removePoster()\n })\n }\n // This is needed only on mount. Do not remove line below\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const posterSearch = useMemo(\n () =>\n (movieName, language, { shouldRefreshMainPoster = false } = {}) => {\n if (!movieName) {\n setPosterList()\n removePoster()\n return\n }\n\n getMoviePosters(movieName, language).then(urlList => {\n if (urlList) {\n setPosterList(urlList)\n if (!shouldRefreshMainPoster && isUserInteractedWithPoster) return\n\n const [firstPoster] = urlList\n checkImageURL(firstPoster).then(correctImage => {\n if (correctImage) {\n setIsPosterUrlCorrect(true)\n setPosterUrl(firstPoster)\n } else removePoster()\n })\n } else {\n setPosterList()\n if (isUserInteractedWithPoster) return\n\n removePoster()\n }\n })\n },\n [isUserInteractedWithPoster],\n )\n\n const delayedPosterSearch = useMemo(() => debounce(posterSearch, 700), [posterSearch])\n\n const prevTorrentSourceState = usePreviousState(torrentSource)\n\n useEffect(() => {\n const isCorrectSource = checkTorrentSource(torrentSource)\n if (!isCorrectSource) return setIsTorrentSourceCorrect(false)\n\n setIsTorrentSourceCorrect(true)\n\n // if torrentSource is updated then we are getting title from the source\n const torrentSourceChanged = torrentSource !== prevTorrentSourceState\n if (!torrentSourceChanged) return\n\n updateTitleFromSource()\n }, [prevTorrentSourceState, selectedFile, torrentSource, updateTitleFromSource])\n\n const prevTitleState = usePreviousState(title)\n\n useEffect(() => {\n // if title exists and title was changed then search poster.\n const titleChanged = title !== prevTitleState\n if (!titleChanged && !parsedTitle) return\n\n if (skipDebounce) {\n posterSearch(title || parsedTitle, posterSearchLanguage)\n setSkipDebounce(false)\n } else if (!title) {\n delayedPosterSearch.cancel()\n\n if (parsedTitle) {\n posterSearch(parsedTitle, posterSearchLanguage)\n } else {\n !isUserInteractedWithPoster && removePoster()\n }\n } else {\n delayedPosterSearch(title, posterSearchLanguage)\n }\n }, [\n title,\n parsedTitle,\n prevTitleState,\n delayedPosterSearch,\n posterSearch,\n posterSearchLanguage,\n skipDebounce,\n isUserInteractedWithPoster,\n ])\n\n const handleSave = () => {\n setIsSaving(true)\n\n if (isEditMode) {\n axios\n .post(torrentsHost(), {\n action: 'set',\n hash: originalHash,\n title: title || originalName,\n poster: posterUrl,\n })\n .finally(handleClose)\n } else if (selectedFile) {\n // file save\n const data = new FormData()\n data.append('save', 'true')\n data.append('file', selectedFile)\n title && data.append('title', title)\n posterUrl && data.append('poster', posterUrl)\n axios.post(torrentUploadHost(), data).catch(handleClose)\n } else {\n // link save\n axios\n .post(torrentsHost(), { action: 'add', link: torrentSource, title, poster: posterUrl, save_to_db: true })\n .catch(handleClose)\n }\n }\n\n return (\n \n {t(isEditMode ? 'EditTorrent' : 'AddNewTorrent')}\n\n \n {!isEditMode && (\n \n )}\n\n \n \n\n \n \n\n \n \n \n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const TorrentCard = styled.div`\n ${({\n theme: {\n torrentCard: { cardPrimaryColor },\n },\n }) => css`\n border-radius: 5px;\n display: grid;\n grid-template-columns: 120px 260px 1fr;\n grid-template-rows: 180px;\n grid-template-areas: 'poster description buttons';\n gap: 10px;\n padding: 10px;\n background: ${cardPrimaryColor};\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-areas:\n 'poster description'\n 'buttons buttons';\n\n grid-template-columns: 70px 1fr;\n grid-template-rows: 110px max-content;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 60px 1fr;\n grid-template-rows: 90px max-content;\n }\n `}\n`\n\nexport const TorrentCardPoster = styled.div`\n grid-area: poster;\n border-radius: 5px;\n overflow: hidden;\n text-align: center;\n cursor: pointer;\n transition: 0.2s;\n position: relative;\n\n :hover {\n filter: brightness(0.7);\n }\n\n ${({\n isPoster,\n theme: {\n torrentCard: { cardSecondaryColor, accentCardColor },\n },\n }) =>\n isPoster\n ? css`\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 5px;\n }\n `\n : css`\n display: grid;\n place-items: center;\n background: ${cardSecondaryColor};\n border: 1px solid ${accentCardColor};\n\n svg {\n transform: translateY(-3px);\n }\n `};\n\n @media (max-width: 1260px), (max-height: 500px) {\n svg {\n width: 50%;\n }\n }\n`\n\nexport const TorrentCardButtons = styled.div`\n grid-area: buttons;\n display: grid;\n gap: 10px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: repeat(4, 1fr);\n }\n\n @media (max-width: 340px) {\n gap: 5px;\n }\n`\nexport const TorrentCardDescription = styled.div`\n ${({\n theme: {\n torrentCard: { cardSecondaryColor, accentCardColor },\n },\n }) => css`\n grid-area: description;\n background: ${cardSecondaryColor};\n border-radius: 5px;\n padding: 5px;\n display: grid;\n grid-template-rows: 55% 1fr;\n gap: 10px;\n\n @media (max-width: 770px) {\n grid-template-rows: 60% 1fr;\n gap: 3px;\n }\n\n .description-title-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .description-section-name {\n text-transform: uppercase;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.4px;\n color: ${accentCardColor};\n\n @media (max-width: 770px) {\n font-size: 0.5rem;\n line-height: 10px;\n }\n }\n\n .description-status-wrapper {\n display: inline-block;\n height: 8px;\n margin-inline-end: 4px;\n vertical-align: baseline;\n }\n\n .description-torrent-title {\n overflow: auto;\n word-break: break-all;\n }\n\n .description-statistics-wrapper {\n display: grid;\n grid-template-columns: 80px 80px 1fr;\n align-self: end;\n\n @media (max-width: 1260px), (max-height: 500px) {\n grid-template-columns: 70px 70px 1fr;\n }\n\n @media (max-width: 770px) {\n grid-template-columns: 65px 65px 1fr;\n }\n\n @media (max-width: 700px) {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n .description-statistics-element-wrapper {\n }\n\n .description-statistics-element-value {\n margin-bottom: 10px;\n margin-left: 0;\n word-break: break-all;\n\n @media (max-width: 1260px), (max-height: 500px) {\n font-size: 0.7rem;\n margin-bottom: 0;\n margin-left: 0;\n }\n }\n\n .description-torrent-title,\n .description-statistics-element-value {\n @media (max-width: 770px) {\n font-size: 0.6rem;\n }\n\n @media (max-width: 410px) {\n font-size: 10px;\n }\n }\n `}\n`\n\nexport const StyledButton = styled.button`\n ${({\n theme: {\n torrentCard: { buttonBGColor, accentCardColor },\n },\n }) => css`\n border-radius: 5px;\n border: none;\n cursor: pointer;\n transition: 0.2s;\n display: flex;\n align-items: center;\n text-transform: uppercase;\n background: ${buttonBGColor};\n color: #fff;\n font-size: 0.9rem;\n letter-spacing: 0.009em;\n padding: 0 12px;\n svg {\n width: 20px;\n }\n\n :hover {\n background: ${accentCardColor};\n }\n\n > :first-child {\n margin-right: 10px;\n }\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 7px 10px;\n justify-content: center;\n font-size: 0.8rem;\n\n svg {\n display: none;\n }\n }\n\n @media (max-width: 770px) {\n font-size: 0.7rem;\n }\n\n @media (max-width: 420px) {\n font-size: 0.6rem;\n padding: 7px 5px;\n }\n `}\n`\n\nexport const StatusIndicators = styled.div`\n ${({ color }) => css`\n height: 8px;\n width: 8px;\n background-color: ${color};\n border-radius: 50%;\n position: relative;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);\n `}\n`\n","import { forwardRef, memo, useState } from 'react'\nimport {\n UnfoldMore as UnfoldMoreIcon,\n PlayArrow as PlayArrowIcon,\n Close as CloseIcon,\n Delete as DeleteIcon,\n} from '@material-ui/icons'\nimport { getPeerString, humanizeSize, humanizeSpeed, removeRedundantCharacters } from 'utils/Utils'\nimport { playlistTorrHost, torrentsHost } from 'utils/Hosts'\nimport { NoImageIcon } from 'icons'\nimport DialogTorrentDetailsContent from 'components/DialogTorrentDetailsContent'\nimport Dialog from '@material-ui/core/Dialog'\nimport Slide from '@material-ui/core/Slide'\nimport { Button, DialogActions, DialogTitle, useMediaQuery, useTheme } from '@material-ui/core'\nimport axios from 'axios'\nimport ptt from 'parse-torrent-title'\nimport { useTranslation } from 'react-i18next'\nimport AddDialog from 'components/Add/AddDialog'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\nimport { GETTING_INFO, IN_DB, CLOSED, PRELOAD, WORKING } from 'torrentStates'\n\nimport {\n StatusIndicators,\n StyledButton,\n TorrentCard,\n TorrentCardButtons,\n TorrentCardDescription,\n TorrentCardPoster,\n} from './style'\n\nconst Transition = forwardRef((props, ref) => )\n\nconst Torrent = ({ torrent }) => {\n const { t } = useTranslation()\n const [isDetailedInfoOpened, setIsDetailedInfoOpened] = useState(false)\n const [isDeleteTorrentOpened, setIsDeleteTorrentOpened] = useState(false)\n\n const theme = useTheme()\n const fullScreen = useMediaQuery(theme.breakpoints.down('md'))\n\n const openDetailedInfo = () => setIsDetailedInfoOpened(true)\n const closeDetailedInfo = () => setIsDetailedInfoOpened(false)\n const openDeleteTorrentAlert = () => setIsDeleteTorrentOpened(true)\n const closeDeleteTorrentAlert = () => setIsDeleteTorrentOpened(false)\n\n const { title, name, poster, torrent_size: torrentSize, download_speed: downloadSpeed, hash, stat } = torrent\n\n const dropTorrent = () => axios.post(torrentsHost(), { action: 'drop', hash })\n const deleteTorrent = () => axios.post(torrentsHost(), { action: 'rem', hash })\n\n const getParsedTitle = () => {\n const parse = key => ptt.parse(title || '')?.[key] || ptt.parse(name || '')?.[key]\n\n const titleStrings = []\n\n let parsedTitle = removeRedundantCharacters(parse('title'))\n const parsedYear = parse('year')\n const parsedResolution = parse('resolution')\n if (parsedTitle) titleStrings.push(parsedTitle)\n if (parsedYear) titleStrings.push(`(${parsedYear})`)\n if (parsedResolution) titleStrings.push(`[${parsedResolution}]`)\n parsedTitle = titleStrings.join(' ')\n return { parsedTitle }\n }\n const { parsedTitle } = getParsedTitle()\n\n const [isEditDialogOpen, setIsEditDialogOpen] = useState(false)\n const handleClickOpenEditDialog = () => setIsEditDialogOpen(true)\n const handleCloseEditDialog = () => setIsEditDialogOpen(false)\n\n const fullPlaylistLink = `${playlistTorrHost()}/${encodeURIComponent(parsedTitle || 'file')}.m3u?link=${hash}&m3u`\n\n const detailedInfoDialogRef = useOnStandaloneAppOutsideClick(closeDetailedInfo)\n\n return (\n <>\n \n \n {poster ?
: }\n \n\n \n \n \n {t('Details')}\n \n\n {\n window.open(fullPlaylistLink, '_blank')\n }}\n >\n \n {t('Playlist')}\n \n\n dropTorrent(torrent)}>\n \n {t('Drop')}\n \n\n \n \n {t('Delete')}\n \n \n\n \n \n
{t('Name')}
\n
{parsedTitle}
\n
\n\n \n
\n
\n \n {t('Size')}\n
\n
{torrentSize > 0 && humanizeSize(torrentSize)}
\n
\n\n
\n
{t('Speed')}
\n
\n {downloadSpeed > 0 ? humanizeSpeed(downloadSpeed) : '---'}\n
\n
\n\n
\n
{t('Peers')}
\n
{getPeerString(torrent) || '---'}
\n
\n
\n \n \n\n \n \n \n\n \n\n {isEditDialogOpen && (\n \n )}\n >\n )\n}\n\nexport const StatusIndicator = ({ stat }) => {\n const { t } = useTranslation()\n\n const values = {\n [GETTING_INFO]: t('TorrentGettingInfo'),\n [PRELOAD]: t('TorrentPreload'),\n [WORKING]: t('TorrentWorking'),\n [CLOSED]: t('TorrentClosed'),\n [IN_DB]: t('TorrentInDb'),\n }\n\n const colors = {\n [GETTING_INFO]: '#2196F3',\n [PRELOAD]: '#FFC107',\n [WORKING]: '#CDDC39',\n [CLOSED]: '#E57373',\n [IN_DB]: '#9E9E9E',\n }\n\n return (\n \n \n \n )\n}\n\nexport default memo(Torrent)\n","import { IconButton } from '@material-ui/core'\nimport { rgba } from 'polished'\nimport { standaloneMedia } from 'style/standaloneMedia'\nimport styled, { css } from 'styled-components'\n\nimport { pwaFooterHeight } from './PWAFooter/style'\n\nexport const AppWrapper = styled.div`\n ${({\n theme: {\n app: { appSecondaryColor },\n },\n }) => css`\n height: 100%;\n background: ${rgba(appSecondaryColor, 0.8)};\n display: grid;\n grid-template-columns: 60px 1fr;\n grid-template-rows: 60px 1fr;\n grid-template-areas:\n 'head head'\n 'side content';\n\n ${standaloneMedia(css`\n grid-template-columns: 0 1fr;\n grid-template-rows: ${pwaFooterHeight}px 1fr ${pwaFooterHeight}px;\n height: 100vh;\n `)}\n `}\n`\n\nexport const CenteredGrid = styled.div`\n display: grid;\n place-items: center;\n\n ${standaloneMedia(css`\n height: 100vh;\n width: 100vw;\n `)}\n`\n\nexport const AppHeader = styled.div`\n ${({ theme: { primary } }) => css`\n background: ${primary};\n color: #fff;\n grid-area: head;\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n grid-template-columns: repeat(2, max-content) 1fr;\n box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%), 0px 4px 5px 0px rgb(0 0 0 / 14%), 0px 1px 10px 0px rgb(0 0 0 / 12%);\n padding: 0 16px;\n z-index: 3;\n\n ${standaloneMedia(css`\n grid-template-columns: max-content 1fr;\n align-items: end;\n padding: 7px 16px;\n position: fixed;\n width: 100%;\n height: ${pwaFooterHeight}px;\n `)}\n `}\n`\nexport const AppSidebarStyle = styled.div`\n ${({\n isDrawerOpen,\n theme: {\n app: { appSecondaryColor, sidebarBGColor, sidebarFillColor },\n },\n }) => css`\n grid-area: side;\n width: ${isDrawerOpen ? '400%' : '100%'};\n z-index: 2;\n overflow-x: hidden;\n transition: width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms;\n border-right: 1px solid ${rgba(appSecondaryColor, 0.12)};\n background: ${sidebarBGColor};\n color: ${sidebarFillColor};\n white-space: nowrap;\n\n svg {\n fill: ${sidebarFillColor};\n }\n\n ${standaloneMedia(css`\n display: none;\n `)}\n `}\n`\nexport const TorrentListWrapper = styled.div`\n grid-area: content;\n padding: 20px;\n overflow: auto;\n\n display: grid;\n place-content: start;\n grid-template-columns: repeat(auto-fit, minmax(max-content, 570px));\n gap: 20px;\n\n @media (max-width: 1260px), (max-height: 500px) {\n padding: 10px;\n gap: 15px;\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 1100px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 700px) {\n grid-template-columns: 1fr;\n }\n\n ${standaloneMedia(css`\n height: calc(100vh - ${pwaFooterHeight}px);\n padding-bottom: 105px;\n `)}\n`\n\nexport const HeaderToggle = styled.div`\n ${({\n theme: {\n app: { headerToggleColor },\n },\n }) => css`\n cursor: pointer;\n border-radius: 50%;\n background: ${headerToggleColor};\n height: 35px;\n width: 35px;\n transition: all 0.2s;\n font-weight: 600;\n display: grid;\n place-items: center;\n color: #fff;\n\n :hover {\n background: ${rgba(headerToggleColor, 0.7)};\n }\n\n @media (max-width: 700px) {\n height: 28px;\n width: 28px;\n font-size: 12px;\n\n svg {\n width: 17px;\n }\n }\n `}\n`\n\nexport const StyledIconButton = styled(IconButton)`\n margin-right: 6px;\n\n ${standaloneMedia(css`\n display: none;\n `)}\n`\n","import styled, { css } from 'styled-components'\n\nexport default styled.div`\n ${({\n isButton,\n theme: {\n addDialog: { notificationSuccessBGColor, languageSwitchBGColor },\n },\n }) => css`\n display: grid;\n place-items: center;\n padding: 20px 40px;\n border-radius: 5px;\n\n ${isButton &&\n css`\n background: ${notificationSuccessBGColor};\n transition: 0.2s;\n cursor: pointer;\n\n :hover {\n background: ${languageSwitchBGColor};\n }\n `}\n\n lord-icon {\n width: 200px;\n height: 200px;\n }\n\n .icon-label {\n font-size: 20px;\n }\n `}\n`\n","import { useTheme } from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\n\nimport IconWrapper from './style'\n\nexport default function NoServerConnection() {\n const { t } = useTranslation()\n const primary = useTheme().palette.primary.main\n\n return (\n \n \n {t('Offline')}
\n \n )\n}\n","import { useTheme } from '@material-ui/core'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport AddDialog from '../Add/AddDialog'\nimport IconWrapper from './style'\n\nexport default function AddFirstTorrent() {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n const primary = useTheme().palette.primary.main\n\n return (\n <>\n handleClickOpen(true)} isButton>\n \n {t('NoTorrentsAdded')}
\n \n\n {isDialogOpen && }\n >\n )\n}\n","import TorrentCard from 'components/TorrentCard'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { TorrentListWrapper, CenteredGrid } from 'components/App/style'\n\nimport NoServerConnection from './NoServerConnection'\nimport AddFirstTorrent from './AddFirstTorrent'\n\nexport default function TorrentList({ isOffline, isLoading, sortABC, torrents }) {\n if (isLoading || isOffline || !torrents.length) {\n return (\n \n {isOffline ? (\n \n ) : isLoading ? (\n \n ) : (\n !torrents.length && \n )}\n \n )\n }\n\n return sortABC ? (\n \n {torrents\n .sort((a, b) => a.title > b.title)\n .map(torrent => (\n \n ))}\n \n ) : (\n \n {torrents.map(torrent => (\n \n ))}\n \n )\n}\n","// import ListItem from '@material-ui/core/ListItem'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\n// import List from '@material-ui/core/List'\nimport ButtonGroup from '@material-ui/core/ButtonGroup'\nimport Button from '@material-ui/core/Button'\nimport { useTranslation } from 'react-i18next'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\n// const donateFrame = ''\n\nexport default function DonateDialog({ onClose }) {\n const { t } = useTranslation()\n const ref = useOnStandaloneAppOutsideClick(onClose)\n\n return (\n \n {t('Donate')}\n \n {/* */}\n {/* */}\n \n \n \n \n {/* */}\n \n {/* */}\n {/* */}\n {/* eslint-disable-next-line react/no-danger */}\n {/* */}\n {/* */}\n {/*
*/}\n \n \n \n \n \n )\n}\n","import { useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport Snackbar from '@material-ui/core/Snackbar'\nimport IconButton from '@material-ui/core/IconButton'\nimport CreditCardIcon from '@material-ui/icons/CreditCard'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport { standaloneMedia } from 'style/standaloneMedia'\n\nimport DonateDialog from './DonateDialog'\n\nconst StyledSnackbar = styled(Snackbar)`\n ${standaloneMedia('margin-bottom: 90px')};\n`\n\nexport default function DonateSnackbar() {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const [snackbarOpen, setSnackbarOpen] = useState(true)\n\n const disableSnackbar = () => {\n setSnackbarOpen(false)\n localStorage.setItem('snackbarIsClosed', true)\n }\n\n return (\n <>\n {open && setOpen(false)} />}\n\n \n \n\n \n \n \n >\n }\n />\n >\n )\n}\n","import { createGlobalStyle, css } from 'styled-components'\n\nimport { standaloneMedia } from './standaloneMedia'\n\nexport default createGlobalStyle`\n *,\n *::before,\n *::after { \n margin: 0;\n padding: 0;\n box-sizing: inherit;\n }\n\n body { \n font-family: \"Open Sans\", sans-serif;\n box-sizing: border-box;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n letter-spacing: -0.1px;\n -webkit-tap-highlight-color: transparent;\n\n\n ${standaloneMedia(css`\n height: 100vh;\n `)}\n }\n\n button {\n font-family: \"Open Sans\", sans-serif;\n letter-spacing: -0.1px;\n }\n`\n","import { useState } from 'react'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport LibraryAddIcon from '@material-ui/icons/LibraryAdd'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useTranslation } from 'react-i18next'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport AddDialog from './AddDialog'\nimport { StyledPWAAddButton } from './style'\n\nexport default function AddDialogButton({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n\n return (\n \n
\n {isStandaloneApp ? (\n \n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n {isDialogOpen &&
}\n
\n )\n}\n","import styled, { css } from 'styled-components'\nimport { mainColors } from 'style/colors'\nimport { StyledHeader } from 'style/CustomMaterialUiStyles'\n\nexport const cacheBeforeReaderColor = '#b3dfc9'\nexport const cacheAfterReaderColor = mainColors.light.primary\n\nexport const SettingsHeader = styled(StyledHeader)`\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 340px) {\n grid-auto-flow: row;\n }\n`\n\nexport const FooterSection = styled.div`\n ${({\n theme: {\n settingsDialog: { footerBG },\n },\n }) => css`\n padding: 20px;\n display: grid;\n grid-auto-flow: column;\n justify-content: end;\n gap: 10px;\n align-items: center;\n background: ${footerBG};\n\n @media (max-width: 500px) {\n grid-auto-flow: row;\n justify-content: stretch;\n }\n `}\n`\nexport const Divider = styled.div`\n height: 1px;\n background-color: rgba(0, 0, 0, 0.12);\n margin: 30px 0;\n`\n\nexport const Content = styled.div`\n ${({\n isLoading,\n theme: {\n settingsDialog: { contentBG },\n },\n }) => css`\n background: ${contentBG};\n overflow: auto;\n flex: 1;\n\n ${isLoading &&\n css`\n min-height: 500px;\n display: grid;\n place-items: center;\n `}\n `}\n`\n\nexport const PreloadCacheValue = styled.div`\n ${({ color }) => css`\n display: grid;\n grid-template-columns: max-content 100px 1fr;\n gap: 10px;\n align-items: flex-start;\n\n :not(:last-child) {\n margin-bottom: 5px;\n }\n\n :before {\n content: '';\n background: ${color};\n width: 16px;\n height: 16px;\n border-radius: 50%;\n margin-top: 2px;\n }\n `}\n`\n\nexport const MainSettingsContent = styled.div`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 40px;\n padding: 20px;\n\n @media (max-width: 930px) {\n grid-template-columns: 1fr;\n }\n`\nexport const SecondarySettingsContent = styled.div`\n padding: 20px;\n`\n\nexport const StorageButton = styled.div`\n ${({ small, selected }) => css`\n transition: 0.2s;\n cursor: default;\n text-align: center;\n\n ${!selected &&\n css`\n cursor: pointer;\n\n :hover {\n filter: brightness(0.8);\n }\n `}\n\n ${small\n ? css`\n display: grid;\n grid-template-columns: max-content 1fr;\n gap: 20px;\n align-items: center;\n justify-items: start;\n margin-bottom: 20px;\n `\n : css`\n display: grid;\n place-items: center;\n gap: 10px;\n `}\n `}\n`\n\nexport const StorageIconWrapper = styled.div`\n ${({ selected, small }) => css`\n width: ${small ? '60px' : '150px'};\n height: ${small ? '60px' : '150px'};\n border-radius: 50%;\n background: ${selected ? '#323637' : '#dee3e5'};\n\n svg {\n transform: rotate(-45deg) scale(0.75);\n }\n\n @media (max-width: 930px) {\n width: ${small ? '50px' : '90px'};\n height: ${small ? '50px' : '90px'};\n }\n `}\n`\n\nexport const CacheStorageSelector = styled.div`\n display: grid;\n grid-template-rows: max-content 1fr;\n grid-template-areas: 'label label';\n place-items: center;\n\n @media (max-width: 930px) {\n justify-content: start;\n column-gap: 30px;\n }\n`\n\nexport const SettingSectionLabel = styled.div`\n font-size: 25px;\n padding-bottom: 20px;\n\n small {\n display: block;\n font-size: 11px;\n }\n`\n\nexport const PreloadCachePercentage = styled.div.attrs(({ value }) => ({\n // this block is here according to styled-components recomendation about fast changable components\n style: {\n background: `linear-gradient(to right, ${cacheBeforeReaderColor} 0%, ${cacheBeforeReaderColor} ${value}%, ${cacheAfterReaderColor} ${value}%, ${cacheAfterReaderColor} 100%)`,\n },\n}))`\n ${({ label, preloadCachePercentage }) => css`\n border: 1px solid #323637;\n padding: 10px 20px;\n border-radius: 5px;\n color: #000;\n margin-bottom: 10px;\n position: relative;\n\n :before {\n content: '${label}';\n display: grid;\n place-items: center;\n font-size: 20px;\n }\n\n :after {\n content: '';\n width: ${preloadCachePercentage}%;\n height: 100%;\n background: #323637;\n position: absolute;\n bottom: 0;\n left: 0;\n border-radius: 4px;\n filter: opacity(0.15);\n }\n `}\n`\n","export default {\n CacheSize: 64,\n ReaderReadAHead: 95,\n PreloadCache: 50,\n UseDisk: false,\n TorrentsSavePath: '',\n RemoveCacheOnDrop: false,\n ForceEncrypt: false,\n RetrackersMode: 1,\n TorrentDisconnectTimeout: 30,\n EnableDebug: false,\n EnableDLNA: false,\n FriendlyName: '',\n EnableRutorSearch: false,\n EnableIPv6: false,\n DisableTCP: false,\n DisableUTP: false,\n DisableUPNP: false,\n DisableDHT: false,\n DisablePEX: false,\n DisableUpload: false,\n DownloadRateLimit: 0,\n UploadRateLimit: 0,\n ConnectionsLimit: 25,\n PeersListenPort: 0,\n}\n","export const a11yProps = index => ({\n id: `full-width-tab-${index}`,\n 'aria-controls': `full-width-tabpanel-${index}`,\n})\n\nexport const TabPanel = ({ children, value, index, ...other }) => (\n \n {value === index && <>{children}>}\n
\n)\n","import { Grid, OutlinedInput, Slider } from '@material-ui/core'\n\nexport default function SliderInput({\n isProMode,\n title,\n value,\n setValue,\n sliderMin,\n sliderMax,\n inputMin,\n inputMax,\n step = 1,\n onBlurCallback,\n}) {\n const onBlur = ({ target: { value } }) => {\n if (value < inputMin) return setValue(inputMin)\n if (value > inputMax) return setValue(inputMax)\n\n onBlurCallback && onBlurCallback(value)\n }\n\n const onInputChange = ({ target: { value } }) => setValue(value === '' ? '' : Number(value))\n const onSliderChange = (_, newValue) => setValue(newValue)\n\n return (\n <>\n {title}
\n\n \n \n \n \n\n {isProMode && (\n \n \n \n )}\n \n >\n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { USBIcon, RAMIcon } from 'icons'\nimport { FormControlLabel, Switch } from '@material-ui/core'\nimport TextField from '@material-ui/core/TextField'\n\nimport {\n PreloadCacheValue,\n MainSettingsContent,\n StorageButton,\n StorageIconWrapper,\n CacheStorageSelector,\n SettingSectionLabel,\n PreloadCachePercentage,\n cacheBeforeReaderColor,\n cacheAfterReaderColor,\n} from './style'\nimport SliderInput from './SliderInput'\n\nconst CacheStorageLocationLabel = ({ style }) => {\n const { t } = useTranslation()\n\n return (\n \n {t('SettingsDialog.CacheStorageLocation')}\n {t('SettingsDialog.UseDiskDesc')}\n \n )\n}\n\nexport default function PrimarySettingsComponent({\n settings,\n inputForm,\n cachePercentage,\n preloadCachePercentage,\n cacheSize,\n isProMode,\n setCacheSize,\n setCachePercentage,\n setPreloadCachePercentage,\n updateSettings,\n}) {\n const { t } = useTranslation()\n const { UseDisk, TorrentsSavePath, RemoveCacheOnDrop } = settings || {}\n const preloadCacheSize = Math.round((cacheSize / 100) * preloadCachePercentage)\n\n return (\n \n \n
{t('SettingsDialog.CacheSettings')}\n\n
\n\n
\n \n {100 - cachePercentage}% ({Math.round((cacheSize / 100) * (100 - cachePercentage))} {t('MB')})\n
\n\n {t('SettingsDialog.CacheBeforeReaderDesc')}
\n \n\n
\n \n {cachePercentage}% ({Math.round((cacheSize / 100) * cachePercentage)} {t('MB')})\n
\n\n {t('SettingsDialog.CacheAfterReaderDesc')}
\n \n\n
\n\n
setCacheSize(Math.round(value / 4) * 4)}\n />\n\n \n\n \n \n\n {UseDisk ? (\n \n
\n\n
\n
updateSettings({ UseDisk: false })}>\n \n \n \n\n {t('SettingsDialog.RAM')}
\n \n\n
\n \n \n \n\n {t('SettingsDialog.Disk')}
\n \n
\n\n
\n }\n label={t('SettingsDialog.RemoveCacheOnDrop')}\n labelPlacement='start'\n />\n
\n {t('SettingsDialog.RemoveCacheOnDropDesc')}\n
\n
\n
\n
\n ) : (\n \n \n\n \n \n \n \n\n {t('SettingsDialog.RAM')}
\n \n\n updateSettings({ UseDisk: true })}>\n \n \n \n\n {t('SettingsDialog.Disk')}
\n \n \n )}\n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport TextField from '@material-ui/core/TextField'\nimport {\n FormControlLabel,\n FormGroup,\n FormHelperText,\n InputAdornment,\n InputLabel,\n Select,\n Switch,\n} from '@material-ui/core'\n\nimport { SecondarySettingsContent, SettingSectionLabel } from './style'\n\nexport default function SecondarySettingsComponent({ settings, inputForm }) {\n const { t } = useTranslation()\n\n const {\n RetrackersMode,\n TorrentDisconnectTimeout,\n EnableDebug,\n EnableDLNA,\n EnableIPv6,\n FriendlyName,\n EnableRutorSearch,\n ForceEncrypt,\n DisableTCP,\n DisableUTP,\n DisableUPNP,\n DisableDHT,\n DisablePEX,\n DisableUpload,\n DownloadRateLimit,\n UploadRateLimit,\n ConnectionsLimit,\n PeersListenPort,\n } = settings || {}\n\n return (\n \n {t('SettingsDialog.AdditionalSettings')}\n \n }\n label='IPv6'\n labelPlacement='start'\n />\n {t('SettingsDialog.EnableIPv6Hint')}\n \n \n }\n label='TCP (Transmission Control Protocol)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableTCPHint')}\n \n \n }\n label='μTP (Micro Transport Protocol)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableUTPHint')}\n \n \n }\n label='PEX (Peer Exchange)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisablePEXHint')}\n \n \n }\n label={t('SettingsDialog.ForceEncrypt')}\n labelPlacement='start'\n />\n {t('SettingsDialog.ForceEncryptHint')}\n \n {t('Seconds')},\n }}\n value={TorrentDisconnectTimeout}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n
\n \n }\n label={t('SettingsDialog.DHT')}\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableDHTHint')}\n \n {t('Kilobytes')},\n }}\n value={DownloadRateLimit}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n }\n label={t('SettingsDialog.Upload')}\n labelPlacement='start'\n />\n {t('SettingsDialog.UploadHint')}\n \n {t('Kilobytes')},\n }}\n value={UploadRateLimit}\n type='number'\n variant='outlined'\n fullWidth\n />\n
\n \n \n }\n label='UPnP (Universal Plug and Play)'\n labelPlacement='start'\n />\n {t('SettingsDialog.DisableUPNPHint')}\n \n }\n label={t('SettingsDialog.DLNA')}\n labelPlacement='start'\n />\n \n \n }\n label={t('SettingsDialog.EnableRutorSearch')}\n labelPlacement='start'\n />\n {t('SettingsDialog.EnableRutorSearchHint')}\n \n }\n label={t('SettingsDialog.EnableDebug')}\n labelPlacement='start'\n />\n
\n {t('SettingsDialog.RetrackersMode')}\n \n
\n \n )\n}\n","import { FormControlLabel, FormGroup, FormHelperText, Switch } from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\n\nimport { SecondarySettingsContent, SettingSectionLabel } from './style'\n\nexport default function MobileAppSettings({ isVlcUsed, setIsVlcUsed }) {\n const { t } = useTranslation()\n\n return (\n \n {t('SettingsDialog.MobileAppSettings')}\n \n setIsVlcUsed(prev => !prev)} color='secondary' />}\n label={t('SettingsDialog.UseVLC')}\n labelPlacement='start'\n />\n {t('SettingsDialog.UseVLCHint')}\n \n \n )\n}\n","import axios from 'axios'\nimport Button from '@material-ui/core/Button'\nimport Switch from '@material-ui/core/Switch'\nimport { FormControlLabel, useMediaQuery, useTheme } from '@material-ui/core'\nimport { settingsHost } from 'utils/Hosts'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport AppBar from '@material-ui/core/AppBar'\nimport Tabs from '@material-ui/core/Tabs'\nimport Tab from '@material-ui/core/Tab'\nimport SwipeableViews from 'react-swipeable-views'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { StyledDialog } from 'style/CustomMaterialUiStyles'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport { SettingsHeader, FooterSection, Content } from './style'\nimport defaultSettings from './defaultSettings'\nimport { a11yProps, TabPanel } from './tabComponents'\nimport PrimarySettingsComponent from './PrimarySettingsComponent'\nimport SecondarySettingsComponent from './SecondarySettingsComponent'\nimport MobileAppSettings from './MobileAppSettings'\n\nexport default function SettingsDialog({ handleClose }) {\n const { t } = useTranslation()\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n const { direction } = useTheme()\n\n const [settings, setSettings] = useState()\n const [selectedTab, setSelectedTab] = useState(0)\n const [cacheSize, setCacheSize] = useState(32)\n const [cachePercentage, setCachePercentage] = useState(40)\n const [preloadCachePercentage, setPreloadCachePercentage] = useState(0)\n const [isProMode, setIsProMode] = useState(JSON.parse(localStorage.getItem('isProMode')) || false)\n const [isVlcUsed, setIsVlcUsed] = useState(JSON.parse(localStorage.getItem('isVlcUsed')) ?? false)\n\n useEffect(() => {\n axios.post(settingsHost(), { action: 'get' }).then(({ data }) => {\n setSettings({ ...data, CacheSize: data.CacheSize / (1024 * 1024) })\n })\n }, [])\n\n const ref = useOnStandaloneAppOutsideClick(handleClose)\n\n const handleSave = () => {\n handleClose()\n const sets = JSON.parse(JSON.stringify(settings))\n sets.CacheSize = cacheSize * 1024 * 1024\n sets.ReaderReadAHead = cachePercentage\n sets.PreloadCache = preloadCachePercentage\n axios.post(settingsHost(), { action: 'set', sets })\n localStorage.setItem('isVlcUsed', isVlcUsed)\n }\n\n const inputForm = ({ target: { type, value, checked, id } }) => {\n const sets = JSON.parse(JSON.stringify(settings))\n\n if (type === 'number' || type === 'select-one') {\n sets[id] = Number(value)\n } else if (type === 'checkbox') {\n if (\n id === 'DisableTCP' ||\n id === 'DisableUTP' ||\n id === 'DisableUPNP' ||\n id === 'DisableDHT' ||\n id === 'DisablePEX' ||\n id === 'DisableUpload'\n )\n sets[id] = Boolean(!checked)\n else sets[id] = Boolean(checked)\n } else if (type === 'url' || type === 'text') {\n sets[id] = value\n }\n setSettings(sets)\n }\n\n const { CacheSize, ReaderReadAHead, PreloadCache } = settings || {}\n\n useEffect(() => {\n if (isNaN(CacheSize) || isNaN(ReaderReadAHead) || isNaN(PreloadCache)) return\n\n setCacheSize(CacheSize)\n setCachePercentage(ReaderReadAHead)\n setPreloadCachePercentage(PreloadCache)\n }, [CacheSize, ReaderReadAHead, PreloadCache])\n\n const updateSettings = newProps => setSettings({ ...settings, ...newProps })\n const handleChange = (_, newValue) => setSelectedTab(newValue)\n const handleChangeIndex = index => setSelectedTab(index)\n\n return (\n \n \n {t('SettingsDialog.Settings')}
\n {\n setIsProMode(checked)\n localStorage.setItem('isProMode', checked)\n if (!checked) setSelectedTab(0)\n }}\n style={{ color: 'white' }}\n />\n }\n label={t('SettingsDialog.ProMode')}\n labelPlacement='start'\n />\n \n\n \n \n \n\n \n {t('SettingsDialog.Tabs.Additional')}
\n {!isProMode && {t('SettingsDialog.Tabs.AdditionalDisabled')}
}\n >\n }\n {...a11yProps(1)}\n />\n\n {isStandaloneApp && }\n \n \n\n \n {settings ? (\n <>\n \n \n \n \n\n \n \n \n\n {isStandaloneApp && (\n \n \n \n )}\n \n >\n ) : (\n \n )}\n \n\n \n \n\n \n\n \n \n \n )\n}\n","import ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useState } from 'react'\nimport SettingsIcon from '@material-ui/icons/Settings'\nimport { useTranslation } from 'react-i18next'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\n\nimport SettingsDialog from './SettingsDialog'\n\nexport default function SettingsDialogButton({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const handleClickOpen = () => setIsDialogOpen(true)\n const handleClose = () => setIsDialogOpen(false)\n\n return (\n \n
\n {isStandaloneApp ? (\n <>\n \n {t('SettingsDialog.Settings')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n {isDialogOpen &&
}\n
\n )\n}\n","import { Button, Dialog, DialogActions, DialogTitle } from '@material-ui/core'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport { useState } from 'react'\nimport { torrentsHost } from 'utils/Hosts'\nimport { useTranslation } from 'react-i18next'\n\nconst fnRemoveAll = () => {\n fetch(torrentsHost(), {\n method: 'post',\n body: JSON.stringify({ action: 'list' }),\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n })\n .then(res => res.json())\n .then(json => {\n json.forEach(torr => {\n fetch(torrentsHost(), {\n method: 'post',\n body: JSON.stringify({ action: 'rem', hash: torr.hash }),\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n })\n })\n })\n}\n\nexport default function RemoveAll({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const closeDialog = () => setOpen(false)\n const openDialog = () => setOpen(true)\n\n return (\n <>\n \n \n \n \n\n \n \n\n \n >\n )\n}\n","import styled, { css } from 'styled-components'\nimport { standaloneMedia } from 'style/standaloneMedia'\n\nexport const DialogWrapper = styled.div`\n height: 100%;\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n`\n\nexport const HeaderSection = styled.section`\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 36px;\n font-weight: 300;\n padding: 20px;\n\n img {\n width: 64px;\n }\n\n @media (max-width: 930px) {\n font-size: 22px;\n padding: 10px 20px;\n\n img {\n width: 60px;\n }\n }\n\n ${standaloneMedia(css`\n padding-top: 30px;\n `)}\n`\n\nexport const ThanksSection = styled.section`\n padding: 20px;\n text-align: center;\n font-size: 24px;\n font-weight: 300;\n background: #e8e5eb;\n color: #323637;\n\n @media (max-width: 930px) {\n font-size: 20px;\n padding: 30px 20px;\n }\n`\n\nexport const Section = styled.section`\n padding: 20px;\n\n > span {\n font-size: 22px;\n display: block;\n margin-bottom: 15px;\n }\n\n a {\n text-decoration: none;\n }\n\n > div {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(4, max-content);\n\n @media (max-width: 930px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n @media (max-width: 780px) {\n grid-template-columns: repeat(2, 1fr);\n }\n\n @media (max-width: 550px) {\n grid-template-columns: 1fr;\n }\n }\n`\n\nexport const FooterSection = styled.div`\n padding: 20px;\n display: flex;\n justify-content: flex-end;\n background: #e8e5eb;\n`\n\nexport const LinkWrapper = styled.a`\n ${({ isLink }) => css`\n display: inline-flex;\n align-items: center;\n justify-content: start;\n border: 1px solid;\n padding: 7px 10px;\n border-radius: 5px;\n text-transform: uppercase;\n text-decoration: none;\n background: #545a5e;\n color: #f1eff3;\n transition: 0.2s;\n\n > * {\n transition: 0.2s;\n }\n\n ${isLink\n ? css`\n :hover {\n filter: brightness(1.1);\n\n > * {\n transform: translateY(0px);\n }\n }\n `\n : css`\n cursor: default;\n `}\n `}\n`\n\nexport const LinkIcon = styled.div`\n display: grid;\n margin-right: 10px;\n`\n","import { GitHub as GitHubIcon } from '@material-ui/icons'\n\nimport { LinkWrapper, LinkIcon } from './style'\n\nexport default function LinkComponent({ name, link }) {\n return (\n \n {link && (\n \n \n \n )}\n\n {name}
\n \n )\n}\n","import axios from 'axios'\nimport { useEffect, useState } from 'react'\nimport Button from '@material-ui/core/Button'\nimport InfoIcon from '@material-ui/icons/Info'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { useTranslation } from 'react-i18next'\nimport { useMediaQuery } from '@material-ui/core'\nimport { echoHost } from 'utils/Hosts'\nimport { StyledDialog, StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { isStandaloneApp } from 'utils/Utils'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nimport LinkComponent from './LinkComponent'\nimport { DialogWrapper, HeaderSection, ThanksSection, Section, FooterSection } from './style'\n\nexport default function AboutDialog() {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const [torrServerVersion, setTorrServerVersion] = useState('')\n const fullScreen = useMediaQuery('@media (max-width:930px)')\n useEffect(() => {\n axios.get(echoHost()).then(({ data }) => setTorrServerVersion(data))\n }, [])\n\n const onClose = () => setOpen(false)\n const ref = useOnStandaloneAppOutsideClick(onClose)\n\n return (\n <>\n setOpen(true)}>\n {isStandaloneApp ? (\n <>\n \n {t('Details')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n \n \n \n {t('About')}
\n {torrServerVersion}\n
\n \n\n \n
{t('ThanksToEveryone')}\n\n
\n {t('Links')}\n\n \n \n \n \n
\n \n\n
\n {t('SpecialThanks')}\n\n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n\n \n \n \n \n \n >\n )\n}\n","import { useState } from 'react'\nimport { Button, DialogActions, DialogTitle, ListItemIcon, ListItemText } from '@material-ui/core'\nimport { StyledDialog, StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport { PowerSettingsNew as PowerSettingsNewIcon } from '@material-ui/icons'\nimport { shutdownHost } from 'utils/Hosts'\nimport { useTranslation } from 'react-i18next'\nimport { isStandaloneApp } from 'utils/Utils'\nimport useOnStandaloneAppOutsideClick from 'utils/useOnStandaloneAppOutsideClick'\n\nexport default function CloseServer({ isOffline, isLoading }) {\n const { t } = useTranslation()\n const [open, setOpen] = useState(false)\n const closeDialog = () => setOpen(false)\n const openDialog = () => setOpen(true)\n\n const ref = useOnStandaloneAppOutsideClick(closeDialog)\n\n return (\n <>\n \n {isStandaloneApp ? (\n <>\n \n {t('TurnOff')}
\n >\n ) : (\n <>\n \n \n \n\n \n >\n )}\n \n\n \n {t('CloseServer?')}\n \n \n\n \n \n \n >\n )\n}\n","import Divider from '@material-ui/core/Divider'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { CreditCard as CreditCardIcon } from '@material-ui/icons'\nimport List from '@material-ui/core/List'\nimport { useTranslation } from 'react-i18next'\nimport AddDialogButton from 'components/Add'\nimport SettingsDialog from 'components/Settings'\nimport RemoveAll from 'components/RemoveAll'\nimport AboutDialog from 'components/About'\nimport CloseServer from 'components/CloseServer'\nimport { memo } from 'react'\n\nimport { AppSidebarStyle } from './style'\n\nconst Sidebar = ({ isDrawerOpen, setIsDonationDialogOpen, isOffline, isLoading }) => {\n const { t } = useTranslation()\n\n return (\n \n \n \n\n \n
\n\n \n\n \n \n\n \n\n setIsDonationDialogOpen(true)}>\n \n \n \n\n \n \n\n \n
\n \n )\n}\n\nexport default memo(Sidebar)\n","import { CreditCard as CreditCardIcon } from '@material-ui/icons'\nimport { useTranslation } from 'react-i18next'\nimport CloseServer from 'components/CloseServer'\nimport { StyledMenuButtonWrapper } from 'style/CustomMaterialUiStyles'\nimport AddDialogButton from 'components/Add'\nimport AboutDialog from 'components/About'\nimport SettingsDialogButton from 'components/Settings'\n\nimport StyledPWAFooter from './style'\n\nexport default function PWAFooter({ setIsDonationDialogOpen, isOffline, isLoading }) {\n const { t } = useTranslation()\n\n return (\n \n \n\n setIsDonationDialogOpen(true)}>\n \n\n {t('Donate')}
\n \n\n \n\n \n\n \n \n )\n}\n","export default function IOSShareIcon() {\n return (\n \n )\n}\n","import styled, { css } from 'styled-components'\n\nexport const StyledWrapper = styled.div`\n ${({ isOpen }) => css`\n position: absolute;\n bottom: 10px;\n left: 50%;\n background: #eeeef0;\n width: calc(100% - 20px);\n z-index: 9999;\n border-radius: 10px;\n transition: all 0.3s;\n color: #000;\n\n ${isOpen\n ? css`\n opacity: 1;\n transform: translate(-50%, 0);\n `\n : css`\n transform: translate(-50%, 150%);\n opacity: 0;\n pointer-events: none;\n `}\n\n > :not(:last-child) {\n border-bottom: 1px solid #dadadc;\n }\n\n > * {\n padding: 20px;\n }\n `}\n`\n\nexport const StyledHeader = styled.div`\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: min-content 1fr;\n gap: 20px;\n align-items: center;\n font-weight: 700;\n\n img {\n border-radius: 5px;\n }\n`\n\nexport const StyledContent = styled.div`\n > :not(:last-child) {\n margin-bottom: 25px;\n }\n\n span {\n background: #fefcfd;\n padding: 5px;\n border-radius: 5px;\n }\n`\n","import IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport IOSShareIcon from './IOSShareIcon'\nimport { StyledWrapper, StyledHeader, StyledContent } from './style'\n\nexport function PWAInstallationGuide() {\n const pwaNotificationIsClosed = JSON.parse(localStorage.getItem('pwaNotificationIsClosed'))\n const [isOpen, setIsOpen] = useState(!pwaNotificationIsClosed)\n const [shouldBeOpened, setShouldBeOpened] = useState(!pwaNotificationIsClosed)\n\n const { t } = useTranslation()\n\n if (!isOpen) return null\n\n return (\n \n \n
\n\n {t('PWAGuide.Header')}\n\n {\n setShouldBeOpened(false)\n\n setTimeout(() => {\n setIsOpen(false)\n localStorage.setItem('pwaNotificationIsClosed', true)\n }, 300)\n }}\n >\n \n \n \n\n \n {t('PWAGuide.Description')}
\n\n {t('PWAGuide.VLC')}
\n\n \n 1. {t('PWAGuide.FirstStep')} \n
\n\n \n 2. {t('PWAGuide.SecondStep.Select')} {t('PWAGuide.SecondStep.AddToHomeScreen')}\n
\n \n \n )\n}\n","import CssBaseline from '@material-ui/core/CssBaseline'\nimport { createContext, useEffect, useState } from 'react'\nimport Typography from '@material-ui/core/Typography'\nimport {\n Menu as MenuIcon,\n Close as CloseIcon,\n Brightness4 as Brightness4Icon,\n Brightness5 as Brightness5Icon,\n BrightnessAuto as BrightnessAutoIcon,\n Sort as SortIcon,\n SortByAlpha as SortByAlphaIcon,\n} from '@material-ui/icons'\nimport { echoHost } from 'utils/Hosts'\nimport Div100vh from 'react-div-100vh'\nimport axios from 'axios'\nimport TorrentList from 'components/TorrentList'\nimport DonateSnackbar from 'components/Donate'\nimport DonateDialog from 'components/Donate/DonateDialog'\nimport useChangeLanguage from 'utils/useChangeLanguage'\nimport { ThemeProvider as MuiThemeProvider } from '@material-ui/core/styles'\nimport { ThemeProvider as StyledComponentsThemeProvider } from 'styled-components'\nimport { useQuery } from 'react-query'\nimport { getTorrents, isStandaloneApp } from 'utils/Utils'\nimport GlobalStyle from 'style/GlobalStyle'\nimport { /* lightTheme, */ THEME_MODES, useMaterialUITheme } from 'style/materialUISetup'\nimport getStyledComponentsTheme from 'style/getStyledComponentsTheme'\nimport checkIsIOS from 'utils/checkIsIOS'\n\nimport { AppWrapper, AppHeader, HeaderToggle, StyledIconButton } from './style'\nimport Sidebar from './Sidebar'\nimport PWAFooter from './PWAFooter'\nimport { PWAInstallationGuide } from './PWAInstallationGuide'\n\nconst snackbarIsClosed = JSON.parse(localStorage.getItem('snackbarIsClosed'))\n\nexport const DarkModeContext = createContext()\n\nexport default function App() {\n const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n const [isDonationDialogOpen, setIsDonationDialogOpen] = useState(false)\n const [torrServerVersion, setTorrServerVersion] = useState('')\n\n const [isDarkMode, currentThemeMode, updateThemeMode, muiTheme] = useMaterialUITheme()\n const [currentLang, changeLang] = useChangeLanguage()\n const [isOffline, setIsOffline] = useState(false)\n const { data: torrents, isLoading } = useQuery('torrents', getTorrents, {\n retry: 1,\n refetchInterval: 1000,\n onError: () => setIsOffline(true),\n onSuccess: () => setIsOffline(false),\n })\n const [sortABC, setSortABC] = useState(false)\n const handleClickSortABC = () => setSortABC(true)\n const handleClickSortDate = () => setSortABC(false)\n\n useEffect(() => {\n axios.get(echoHost()).then(({ data }) => setTorrServerVersion(data))\n }, [])\n\n return (\n <>\n \n\n \n \n \n \n\n {/* Div100vh - iOS WebKit fix */}\n \n \n \n setIsDrawerOpen(!isDrawerOpen)}>\n {isDrawerOpen ? : }\n \n\n \n TorrServer {torrServerVersion}\n \n\n \n (sortABC === true ? handleClickSortDate() : handleClickSortABC())}>\n {sortABC === true ? : }\n \n\n {\n if (currentThemeMode === THEME_MODES.LIGHT) updateThemeMode(THEME_MODES.DARK)\n if (currentThemeMode === THEME_MODES.DARK) updateThemeMode(THEME_MODES.AUTO)\n if (currentThemeMode === THEME_MODES.AUTO) updateThemeMode(THEME_MODES.LIGHT)\n }}\n >\n {currentThemeMode === THEME_MODES.LIGHT ? (\n \n ) : currentThemeMode === THEME_MODES.DARK ? (\n \n ) : (\n \n )}\n \n\n \n currentLang === 'en'\n ? changeLang('ru')\n : currentLang === 'ru'\n ? changeLang('ua')\n : currentLang === 'ua'\n ? changeLang('zh')\n : changeLang('en')\n }\n >\n {currentLang.toUpperCase()}\n \n
\n \n\n \n\n \n\n \n\n {/* */}\n {isDonationDialogOpen && setIsDonationDialogOpen(false)} />}\n {/* */}\n\n {snackbarIsClosed ? checkIsIOS() && !isStandaloneApp && : }\n \n \n \n \n \n >\n )\n}\n","import { mainColors, themeColors } from './colors'\n\nexport default type => ({ ...themeColors[type], ...mainColors[type] })\n","export default () => {\n if (typeof window === `undefined` || typeof navigator === `undefined`) return false\n\n return /iPhone|iPad|iPod/i.test(navigator.userAgent || navigator.vendor)\n}\n","import { StrictMode } from 'react'\nimport ReactDOM from 'react-dom'\nimport { QueryClientProvider, QueryClient } from 'react-query'\n\nimport App from './components/App'\nimport 'i18n'\n\nconst queryClient = new QueryClient()\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n)\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/server/web/pages/template/route.go b/server/web/pages/template/route.go
new file mode 100644
index 0000000..2072f3b
--- /dev/null
+++ b/server/web/pages/template/route.go
@@ -0,0 +1,191 @@
+package template
+
+import (
+ "github.com/gin-gonic/gin"
+)
+
+func RouteWebPages(route *gin.RouterGroup) {
+ route.GET("/", func(c *gin.Context) {
+ c.Data(200, "text/html; charset=utf-8", Indexhtml)
+ })
+
+ route.GET("/apple-splash-1125-2436.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash11252436jpg)
+ })
+
+ route.GET("/apple-splash-1136-640.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash1136640jpg)
+ })
+
+ route.GET("/apple-splash-1170-2532.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash11702532jpg)
+ })
+
+ route.GET("/apple-splash-1242-2208.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash12422208jpg)
+ })
+
+ route.GET("/apple-splash-1242-2688.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash12422688jpg)
+ })
+
+ route.GET("/apple-splash-1284-2778.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash12842778jpg)
+ })
+
+ route.GET("/apple-splash-1334-750.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash1334750jpg)
+ })
+
+ route.GET("/apple-splash-1536-2048.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash15362048jpg)
+ })
+
+ route.GET("/apple-splash-1620-2160.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash16202160jpg)
+ })
+
+ route.GET("/apple-splash-1668-2224.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash16682224jpg)
+ })
+
+ route.GET("/apple-splash-1668-2388.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash16682388jpg)
+ })
+
+ route.GET("/apple-splash-1792-828.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash1792828jpg)
+ })
+
+ route.GET("/apple-splash-2048-1536.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash20481536jpg)
+ })
+
+ route.GET("/apple-splash-2048-2732.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash20482732jpg)
+ })
+
+ route.GET("/apple-splash-2160-1620.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash21601620jpg)
+ })
+
+ route.GET("/apple-splash-2208-1242.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash22081242jpg)
+ })
+
+ route.GET("/apple-splash-2224-1668.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash22241668jpg)
+ })
+
+ route.GET("/apple-splash-2388-1668.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash23881668jpg)
+ })
+
+ route.GET("/apple-splash-2436-1125.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash24361125jpg)
+ })
+
+ route.GET("/apple-splash-2532-1170.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash25321170jpg)
+ })
+
+ route.GET("/apple-splash-2688-1242.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash26881242jpg)
+ })
+
+ route.GET("/apple-splash-2732-2048.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash27322048jpg)
+ })
+
+ route.GET("/apple-splash-2778-1284.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash27781284jpg)
+ })
+
+ route.GET("/apple-splash-640-1136.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash6401136jpg)
+ })
+
+ route.GET("/apple-splash-750-1334.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash7501334jpg)
+ })
+
+ route.GET("/apple-splash-828-1792.jpg", func(c *gin.Context) {
+ c.Data(200, "image/jpeg", Applesplash8281792jpg)
+ })
+
+ route.GET("/asset-manifest.json", func(c *gin.Context) {
+ c.Data(200, "application/json", Assetmanifestjson)
+ })
+
+ route.GET("/browserconfig.xml", func(c *gin.Context) {
+ c.Data(200, "application/xml; charset=utf-8", Browserconfigxml)
+ })
+
+ route.GET("/dlnaicon-120.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Dlnaicon120png)
+ })
+
+ route.GET("/dlnaicon-48.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Dlnaicon48png)
+ })
+
+ route.GET("/favicon-16x16.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Favicon16x16png)
+ })
+
+ route.GET("/favicon-32x32.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Favicon32x32png)
+ })
+
+ route.GET("/favicon.ico", func(c *gin.Context) {
+ c.Data(200, "image/vnd.microsoft.icon", Faviconico)
+ })
+
+ route.GET("/icon.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Iconpng)
+ })
+
+ route.GET("/index.html", func(c *gin.Context) {
+ c.Data(200, "text/html; charset=utf-8", Indexhtml)
+ })
+
+ route.GET("/logo.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Logopng)
+ })
+
+ route.GET("/mstile-150x150.png", func(c *gin.Context) {
+ c.Data(200, "image/png", Mstile150x150png)
+ })
+
+ route.GET("/site.webmanifest", func(c *gin.Context) {
+ c.Data(200, "application/manifest+json", Sitewebmanifest)
+ })
+
+ route.GET("/static/js/2.a4cb6022.chunk.js", func(c *gin.Context) {
+ c.Data(200, "application/javascript; charset=utf-8", Staticjs2a4cb6022chunkjs)
+ })
+
+ route.GET("/static/js/2.a4cb6022.chunk.js.LICENSE.txt", func(c *gin.Context) {
+ c.Data(200, "text/plain; charset=utf-8", Staticjs2a4cb6022chunkjsLICENSEtxt)
+ })
+
+ route.GET("/static/js/2.a4cb6022.chunk.js.map", func(c *gin.Context) {
+ c.Data(200, "application/json", Staticjs2a4cb6022chunkjsmap)
+ })
+
+ route.GET("/static/js/main.489fa76c.chunk.js", func(c *gin.Context) {
+ c.Data(200, "application/javascript; charset=utf-8", Staticjsmain489fa76cchunkjs)
+ })
+
+ route.GET("/static/js/main.489fa76c.chunk.js.map", func(c *gin.Context) {
+ c.Data(200, "application/json", Staticjsmain489fa76cchunkjsmap)
+ })
+
+ route.GET("/static/js/runtime-main.64d07802.js", func(c *gin.Context) {
+ c.Data(200, "application/javascript; charset=utf-8", Staticjsruntimemain64d07802js)
+ })
+
+ route.GET("/static/js/runtime-main.64d07802.js.map", func(c *gin.Context) {
+ c.Data(200, "application/json", Staticjsruntimemain64d07802jsmap)
+ })
+}
diff --git a/web/src/components/About/index.jsx b/web/src/components/About/index.jsx
index d0ac76f..eb2b6f3 100644
--- a/web/src/components/About/index.jsx
+++ b/web/src/components/About/index.jsx
@@ -69,6 +69,7 @@ export default function AboutDialog() {
+
@@ -85,6 +86,7 @@ export default function AboutDialog() {
+
diff --git a/web/src/locales/en/translation.json b/web/src/locales/en/translation.json
index 27c9c32..50dadf5 100644
--- a/web/src/locales/en/translation.json
+++ b/web/src/locales/en/translation.json
@@ -76,6 +76,7 @@
"Playlist": "Playlist",
"Preload": "Preload",
"ProjectSource": "Project GitHub",
+ "NasReleases": "NAS Releases GitHub",
"PWAGuide": {
"Header": "Install application",
"Description": "Install the app on your device to easily access it anytime. No app store. No download.",
diff --git a/web/src/locales/ru/translation.json b/web/src/locales/ru/translation.json
index a288fb0..8b13e50 100644
--- a/web/src/locales/ru/translation.json
+++ b/web/src/locales/ru/translation.json
@@ -76,6 +76,7 @@
"Playlist": "Плейлист",
"Preload": "Предзагр.",
"ProjectSource": "GitHub проекта",
+ "NasReleases": "Релизы для NAS GitHub",
"PWAGuide": {
"Header": "Установить приложение",
"Description": "Установите приложение на ваше устройство для быстрого доступа в любой момент. Без AppStore. Без загрузки.",
diff --git a/web/src/locales/ua/translation.json b/web/src/locales/ua/translation.json
index 047fa72..1b384bc 100644
--- a/web/src/locales/ua/translation.json
+++ b/web/src/locales/ua/translation.json
@@ -76,6 +76,7 @@
"Playlist": "Плейлист",
"Preload": "Передзав.",
"ProjectSource": "Сайт проекту",
+ "NasReleases": "Релізи для NAS GitHub",
"PWAGuide": {
"Header": "Встановити додаток",
"Description": "Встановіть програму на свій пристрій, щоб легко отримати до неї доступ у будь-який час. Немає магазину додатків. Немає завантаження.",
diff --git a/web/src/locales/zh/translation.json b/web/src/locales/zh/translation.json
index 6ef8332..92598ae 100644
--- a/web/src/locales/zh/translation.json
+++ b/web/src/locales/zh/translation.json
@@ -76,6 +76,7 @@
"Playlist": "播放列表",
"Preload": "预加载",
"ProjectSource": "项目GitHub",
+ "NasReleases": "NAS GitHub 版本",
"PWAGuide": {
"Header": "安装应用程序",
"Description": "将应用程序安装到您的设备上,以便随时方便地访问。无需应用商店、无需下载。",