diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
index 3676020008..e6babb37e8 100644
--- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
+++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
@@ -1 +1 @@
-define(["events","apiclient","appStorage"],function(events,apiClientFactory,appStorage){"use strict";var ConnectionState={Unavailable:0,ServerSelection:1,ServerSignIn:2,SignedIn:3,ConnectSignIn:4,ServerUpdateNeeded:5},ConnectionMode={Local:0,Remote:1,Manual:2},ServerInfo={getServerAddress:function(server,mode){switch(mode){case ConnectionMode.Local:return server.LocalAddress;case ConnectionMode.Manual:return server.ManualAddress;case ConnectionMode.Remote:return server.RemoteAddress;default:return server.ManualAddress||server.LocalAddress||server.RemoteAddress}}},ConnectionManager=function(credentialProvider,appName,appVersion,deviceName,deviceId,capabilities,devicePixelRatio){function mergeServers(list1,list2){for(var i=0,length=list2.length;i0})}function findServers(){return new Promise(function(resolve,reject){var onFinish=function(foundServers){var servers=foundServers.map(function(foundServer){var info={Id:foundServer.Id,LocalAddress:convertEndpointAddressToManualAddress(foundServer)||foundServer.Address,Name:foundServer.Name};return info.LastConnectionMode=info.ManualAddress?ConnectionMode.Manual:ConnectionMode.Local,info});resolve(servers)};require(["serverdiscovery"],function(serverDiscovery){serverDiscovery.findServers(1e3).then(onFinish,function(){onFinish([])})})})}function convertEndpointAddressToManualAddress(info){if(info.Address&&info.EndpointAddress){var address=info.EndpointAddress.split(":")[0],parts=info.Address.split(":");if(parts.length>1){var portString=parts[parts.length-1];isNaN(parseInt(portString))||(address+=":"+portString)}return normalizeAddress(address)}return null}function stringEqualsIgnoreCase(str1,str2){return(str1||"").toLowerCase()===(str2||"").toLowerCase()}function compareVersions(a,b){a=a.split("."),b=b.split(".");for(var i=0,length=Math.max(a.length,b.length);ibVal)return 1}return 0}function testNextConnectionMode(tests,index,server,options,resolve){if(index>=tests.length)return console.log("Tested all connection modes. Failing server connection."),void resolveFailure(resolve);var mode=tests[index],address=ServerInfo.getServerAddress(server,mode),enableRetry=!1,skipTest=!1,timeout=defaultTimeout;return mode===ConnectionMode.Local?(enableRetry=!0,timeout=8e3,stringEqualsIgnoreCase(address,server.ManualAddress)&&(console.log("skipping LocalAddress test because it is the same as ManualAddress"),skipTest=!0)):mode===ConnectionMode.Manual&&stringEqualsIgnoreCase(address,server.LocalAddress)&&(enableRetry=!0,timeout=8e3),skipTest||!address?(console.log("skipping test at index "+index),void testNextConnectionMode(tests,index+1,server,options,resolve)):(console.log("testing connection mode "+mode+" with server "+server.Name),void tryConnect(address,timeout).then(function(result){1===compareVersions(self.minServerVersion(),result.Version)?(console.log("minServerVersion requirement not met. Server version: "+result.Version),resolve({State:ConnectionState.ServerUpdateNeeded,Servers:[server]})):result.Id!==server.Id?testNextConnectionMode(tests,index+1,server,options,resolve):(console.log("calling onSuccessfulConnection with connection mode "+mode+" with server "+server.Name),onSuccessfulConnection(server,result,mode,options,resolve))},function(){console.log("test failed for connection mode "+mode+" with server "+server.Name),enableRetry?testNextConnectionMode(tests,index+1,server,options,resolve):testNextConnectionMode(tests,index+1,server,options,resolve)}))}function onSuccessfulConnection(server,systemInfo,connectionMode,options,resolve){var credentials=credentialProvider.credentials();options=options||{},credentials.ConnectAccessToken&&options.enableAutoLogin!==!1?ensureConnectUser(credentials).then(function(){server.ExchangeToken?addAuthenticationInfoFromConnect(server,connectionMode,credentials).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)},function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}function afterConnectValidated(server,credentials,systemInfo,connectionMode,verifyLocalAuthentication,options,resolve){if(options=options||{},options.enableAutoLogin===!1)server.UserId=null,server.AccessToken=null;else if(verifyLocalAuthentication&&server.AccessToken&&options.enableAutoLogin!==!1)return void validateAuthentication(server,connectionMode).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!1,options,resolve)});updateServerInfo(server,systemInfo),server.LastConnectionMode=connectionMode,options.updateDateLastAccessed!==!1&&(server.DateLastAccessed=(new Date).getTime()),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials);var result={Servers:[]};result.ApiClient=getOrAddApiClient(server,connectionMode),result.State=server.AccessToken&&options.enableAutoLogin!==!1?ConnectionState.SignedIn:ConnectionState.ServerSignIn,result.Servers.push(server),result.ApiClient.updateServerInfo(server,connectionMode),result.State===ConnectionState.SignedIn&&afterConnected(result.ApiClient,options),resolve(result),events.trigger(self,"connected",[result])}function replaceAll(originalString,strReplace,strWith){var reg=new RegExp(strReplace,"ig");return originalString.replace(reg,strWith)}function normalizeAddress(address){return address=address.trim(),0!==address.toLowerCase().indexOf("http")&&(address="http://"+address),address=replaceAll(address,"Http:","http:"),address=replaceAll(address,"Https:","https:")}function addAppInfoToConnectRequest(request){request.headers=request.headers||{},request.headers["X-Application"]=appName+"/"+appVersion}function exchangePin(pinInfo){if(!pinInfo)throw new Error("pinInfo cannot be null");var request={type:"POST",url:getConnectUrl("pin/authenticate"),data:{deviceId:pinInfo.DeviceId,pin:pinInfo.Pin},dataType:"json"};return addAppInfoToConnectRequest(request),ajax(request)}console.log("Begin ConnectionManager constructor");var connectUser,self=this,apiClients=[],defaultTimeout=2e4;self.connectUser=function(){return connectUser};var minServerVersion="3.1.5";return self.minServerVersion=function(val){return val&&(minServerVersion=val),minServerVersion},self.appVersion=function(){return appVersion},self.capabilities=function(){return capabilities},self.deviceId=function(){return deviceId},self.credentialProvider=function(){return credentialProvider},self.connectUserId=function(){return credentialProvider.credentials().ConnectUserId},self.connectToken=function(){return credentialProvider.credentials().ConnectAccessToken},self.getApiClients=function(){var servers=self.getSavedServers();return servers.map(function(s){self.getOrCreateApiClient(s.Id)}),apiClients},self.getServerInfo=function(id){var servers=credentialProvider.credentials().Servers;return servers.filter(function(s){return s.Id===id})[0]},self.getLastUsedServer=function(){var servers=credentialProvider.credentials().Servers;return servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),servers.length?servers[0]:null},self.getLastUsedApiClient=function(){var servers=credentialProvider.credentials().Servers;if(servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),!servers.length)return null;var server=servers[0];return getOrAddApiClient(server,server.LastConnectionMode)},self.addApiClient=function(apiClient){apiClients.push(apiClient);var existingServers=credentialProvider.credentials().Servers.filter(function(s){return stringEqualsIgnoreCase(s.ManualAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.LocalAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.RemoteAddress,apiClient.serverAddress())}),existingServer=existingServers.length?existingServers[0]:{};if(existingServer.DateLastAccessed=(new Date).getTime(),existingServer.LastConnectionMode=ConnectionMode.Manual,existingServer.ManualAddress=apiClient.serverAddress(),apiClient.serverInfo(existingServer),apiClient.onAuthenticated=function(instance,result){onAuthenticated(instance,result,{},!0)},!existingServers.length){var credentials=credentialProvider.credentials();credentials.Servers=[existingServer],credentialProvider.credentials(credentials)}events.trigger(self,"apiclientcreated",[apiClient]),existingServer.Id||apiClient.getPublicSystemInfo().then(function(systemInfo){var credentials=credentialProvider.credentials();existingServer.Id=systemInfo.Id,apiClient.serverInfo(existingServer),credentials.Servers=[existingServer],credentialProvider.credentials(credentials)})},self.clearData=function(){console.log("connection manager clearing data"),connectUser=null;var credentials=credentialProvider.credentials();credentials.ConnectAccessToken=null,credentials.ConnectUserId=null,credentials.Servers=[],credentialProvider.credentials(credentials)},self.getOrCreateApiClient=function(serverId){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return stringEqualsIgnoreCase(s.Id,serverId)});if(!servers.length)throw new Error("Server not found: "+serverId);var server=servers[0];return getOrAddApiClient(server,server.LastConnectionMode)},self.user=function(apiClient){return new Promise(function(resolve,reject){function onLocalUserDone(e){var image=getImageUrl(localUser);resolve({localUser:localUser,name:connectUser?connectUser.Name:localUser?localUser.Name:null,imageUrl:image.url,supportsImageParams:image.supportsParams})}function onEnsureConnectUserDone(){apiClient&&apiClient.getCurrentUserId()?apiClient.getCurrentUser().then(function(u){localUser=u,onLocalUserDone()},onLocalUserDone):onLocalUserDone()}var localUser,credentials=credentialProvider.credentials();!credentials.ConnectUserId||!credentials.ConnectAccessToken||apiClient&&apiClient.getCurrentUserId()?onEnsureConnectUserDone():ensureConnectUser(credentials).then(onEnsureConnectUserDone,onEnsureConnectUserDone)})},self.isLoggedIntoConnect=function(){return!(!self.connectToken()||!self.connectUserId())},self.logout=function(){console.log("begin connectionManager loguot");for(var promises=[],i=0,length=apiClients.length;i0})}function findServers(){return new Promise(function(resolve,reject){var onFinish=function(foundServers){var servers=foundServers.map(function(foundServer){var info={Id:foundServer.Id,LocalAddress:convertEndpointAddressToManualAddress(foundServer)||foundServer.Address,Name:foundServer.Name};return info.LastConnectionMode=info.ManualAddress?ConnectionMode.Manual:ConnectionMode.Local,info});resolve(servers)};require(["serverdiscovery"],function(serverDiscovery){serverDiscovery.findServers(1e3).then(onFinish,function(){onFinish([])})})})}function convertEndpointAddressToManualAddress(info){if(info.Address&&info.EndpointAddress){var address=info.EndpointAddress.split(":")[0],parts=info.Address.split(":");if(parts.length>1){var portString=parts[parts.length-1];isNaN(parseInt(portString))||(address+=":"+portString)}return normalizeAddress(address)}return null}function stringEqualsIgnoreCase(str1,str2){return(str1||"").toLowerCase()===(str2||"").toLowerCase()}function compareVersions(a,b){a=a.split("."),b=b.split(".");for(var i=0,length=Math.max(a.length,b.length);ibVal)return 1}return 0}function testNextConnectionMode(tests,index,server,options,resolve){if(index>=tests.length)return console.log("Tested all connection modes. Failing server connection."),void resolveFailure(resolve);var mode=tests[index],address=ServerInfo.getServerAddress(server,mode),enableRetry=!1,skipTest=!1,timeout=defaultTimeout;return mode===ConnectionMode.Local?(enableRetry=!0,timeout=8e3,stringEqualsIgnoreCase(address,server.ManualAddress)&&(console.log("skipping LocalAddress test because it is the same as ManualAddress"),skipTest=!0)):mode===ConnectionMode.Manual&&stringEqualsIgnoreCase(address,server.LocalAddress)&&(enableRetry=!0,timeout=8e3),skipTest||!address?(console.log("skipping test at index "+index),void testNextConnectionMode(tests,index+1,server,options,resolve)):(console.log("testing connection mode "+mode+" with server "+server.Name),void tryConnect(address,timeout).then(function(result){1===compareVersions(self.minServerVersion(),result.Version)?(console.log("minServerVersion requirement not met. Server version: "+result.Version),resolve({State:ConnectionState.ServerUpdateNeeded,Servers:[server]})):result.Id!==server.Id?testNextConnectionMode(tests,index+1,server,options,resolve):(console.log("calling onSuccessfulConnection with connection mode "+mode+" with server "+server.Name),onSuccessfulConnection(server,result,mode,options,resolve))},function(){console.log("test failed for connection mode "+mode+" with server "+server.Name),enableRetry?testNextConnectionMode(tests,index+1,server,options,resolve):testNextConnectionMode(tests,index+1,server,options,resolve)}))}function onSuccessfulConnection(server,systemInfo,connectionMode,options,resolve){var credentials=credentialProvider.credentials();options=options||{},credentials.ConnectAccessToken&&options.enableAutoLogin!==!1?ensureConnectUser(credentials).then(function(){server.ExchangeToken?addAuthenticationInfoFromConnect(server,connectionMode,credentials).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)},function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}):afterConnectValidated(server,credentials,systemInfo,connectionMode,!0,options,resolve)}function afterConnectValidated(server,credentials,systemInfo,connectionMode,verifyLocalAuthentication,options,resolve){if(options=options||{},options.enableAutoLogin===!1)server.UserId=null,server.AccessToken=null;else if(verifyLocalAuthentication&&server.AccessToken&&options.enableAutoLogin!==!1)return void validateAuthentication(server,connectionMode).then(function(){afterConnectValidated(server,credentials,systemInfo,connectionMode,!1,options,resolve)});updateServerInfo(server,systemInfo),server.LastConnectionMode=connectionMode,options.updateDateLastAccessed!==!1&&(server.DateLastAccessed=(new Date).getTime()),credentialProvider.addOrUpdateServer(credentials.Servers,server),credentialProvider.credentials(credentials);var result={Servers:[]};result.ApiClient=getOrAddApiClient(server,connectionMode),result.State=server.AccessToken&&options.enableAutoLogin!==!1?ConnectionState.SignedIn:ConnectionState.ServerSignIn,result.Servers.push(server),result.ApiClient.updateServerInfo(server,connectionMode),result.State===ConnectionState.SignedIn&&afterConnected(result.ApiClient,options),resolve(result),events.trigger(self,"connected",[result])}function replaceAll(originalString,strReplace,strWith){var reg=new RegExp(strReplace,"ig");return originalString.replace(reg,strWith)}function normalizeAddress(address){return address=address.trim(),0!==address.toLowerCase().indexOf("http")&&(address="http://"+address),address=replaceAll(address,"Http:","http:"),address=replaceAll(address,"Https:","https:")}function addAppInfoToConnectRequest(request){request.headers=request.headers||{},request.headers["X-Application"]=appName+"/"+appVersion}function exchangePin(pinInfo){if(!pinInfo)throw new Error("pinInfo cannot be null");var request={type:"POST",url:getConnectUrl("pin/authenticate"),data:{deviceId:pinInfo.DeviceId,pin:pinInfo.Pin},dataType:"json"};return addAppInfoToConnectRequest(request),ajax(request)}console.log("Begin ConnectionManager constructor");var connectUser,self=this,apiClients=[],defaultTimeout=2e4;self.connectUser=function(){return connectUser};var minServerVersion="3.1.5";return self.minServerVersion=function(val){return val&&(minServerVersion=val),minServerVersion},self.appVersion=function(){return appVersion},self.capabilities=function(){return capabilities},self.deviceId=function(){return deviceId},self.credentialProvider=function(){return credentialProvider},self.connectUserId=function(){return credentialProvider.credentials().ConnectUserId},self.connectToken=function(){return credentialProvider.credentials().ConnectAccessToken},self.getApiClients=function(){var servers=self.getSavedServers();return servers.map(function(s){self.getOrCreateApiClient(s.Id)}),apiClients},self.getServerInfo=function(id){var servers=credentialProvider.credentials().Servers;return servers.filter(function(s){return s.Id===id})[0]},self.getLastUsedServer=function(){var servers=credentialProvider.credentials().Servers;return servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),servers.length?servers[0]:null},self.getLastUsedApiClient=function(){var servers=credentialProvider.credentials().Servers;if(servers.sort(function(a,b){return(b.DateLastAccessed||0)-(a.DateLastAccessed||0)}),!servers.length)return null;var server=servers[0];return getOrAddApiClient(server,server.LastConnectionMode)},self.addApiClient=function(apiClient){apiClients.push(apiClient);var existingServers=credentialProvider.credentials().Servers.filter(function(s){return stringEqualsIgnoreCase(s.ManualAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.LocalAddress,apiClient.serverAddress())||stringEqualsIgnoreCase(s.RemoteAddress,apiClient.serverAddress())}),existingServer=existingServers.length?existingServers[0]:{};if(existingServer.DateLastAccessed=(new Date).getTime(),existingServer.LastConnectionMode=ConnectionMode.Manual,existingServer.ManualAddress=apiClient.serverAddress(),apiClient.serverInfo(existingServer),apiClient.onAuthenticated=function(instance,result){onAuthenticated(instance,result,{},!0)},!existingServers.length){var credentials=credentialProvider.credentials();credentials.Servers=[existingServer],credentialProvider.credentials(credentials)}events.trigger(self,"apiclientcreated",[apiClient]),existingServer.Id||apiClient.getPublicSystemInfo().then(function(systemInfo){var credentials=credentialProvider.credentials();existingServer.Id=systemInfo.Id,apiClient.serverInfo(existingServer),credentials.Servers=[existingServer],credentialProvider.credentials(credentials)})},self.clearData=function(){console.log("connection manager clearing data"),connectUser=null;var credentials=credentialProvider.credentials();credentials.ConnectAccessToken=null,credentials.ConnectUserId=null,credentials.Servers=[],credentialProvider.credentials(credentials)},self.getOrCreateApiClient=function(serverId){var credentials=credentialProvider.credentials(),servers=credentials.Servers.filter(function(s){return stringEqualsIgnoreCase(s.Id,serverId)});if(!servers.length)throw new Error("Server not found: "+serverId);var server=servers[0];return getOrAddApiClient(server,server.LastConnectionMode)},self.user=function(apiClient){return new Promise(function(resolve,reject){function onLocalUserDone(e){var image=getImageUrl(localUser);resolve({localUser:localUser,name:connectUser?connectUser.Name:localUser?localUser.Name:null,imageUrl:image.url,supportsImageParams:image.supportsParams})}function onEnsureConnectUserDone(){apiClient&&apiClient.getCurrentUserId()?apiClient.getCurrentUser().then(function(u){localUser=u,onLocalUserDone()},onLocalUserDone):onLocalUserDone()}var localUser,credentials=credentialProvider.credentials();!credentials.ConnectUserId||!credentials.ConnectAccessToken||apiClient&&apiClient.getCurrentUserId()?onEnsureConnectUserDone():ensureConnectUser(credentials).then(onEnsureConnectUserDone,onEnsureConnectUserDone)})},self.isLoggedIntoConnect=function(){return!(!self.connectToken()||!self.connectUserId())},self.logout=function(){console.log("begin connectionManager loguot");for(var promises=[],i=0,length=apiClients.length;i.card{contain:layout style}.cardScalable{position:relative}.cardPadder-backdrop,.cardPadder-overflowBackdrop,.cardPadder-overflowSmallBackdrop,.cardPadder-smallBackdrop{padding-bottom:56.25%}.cardPadder-overflowSquare,.cardPadder-square{padding-bottom:100%}.cardPadder-overflowPortrait,.cardPadder-portrait,.overflowPortraitCard-textCardPadder{padding-bottom:150%}.cardPadder-banner{padding-bottom:18.5%}.cardBox{padding:0!important;margin:.427em;-webkit-transition:none;-o-transition:none;transition:none;border:0 solid transparent;background-color:transparent}.layout-tv .cardBox{margin:.5em}.layout-mobile .cardBox{margin:.3em}.card-focuscontent{border:.12em solid transparent}.cardBox-focustransform{will-change:transform;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.card:focus>.cardBox-focustransform{-webkit-transform:scale(1.16,1.16);transform:scale(1.16,1.16)}.card:focus{position:relative!important;z-index:10!important}.cardBox-bottompadded{margin-bottom:1.2em!important}.btnCardOptions{position:absolute;bottom:.25em;right:0;margin:0!important;z-index:1}.mediaSourceIndicator{display:flex;position:absolute;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;top:.3em;left:.3em;text-align:center;vertical-align:middle;width:24px;height:24px;-webkit-border-radius:50%;border-radius:50%;color:#fff;background:#38c}.cardText,.innerCardFooter{overflow:hidden;text-align:left}.cardImageContainer{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;display:-webkit-flex;display:-webkit-box;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;-webkit-background-clip:content-box!important;background-clip:content-box!important;color:inherit;height:100%}.chapterCardImageContainer{background-color:#000;-webkit-border-radius:0;border-radius:0}.textCardImageContainer{background-color:#444}.cardImageContainer-button{border:0;padding:0;background-color:transparent;-webkit-box-sizing:content-box;box-sizing:content-box}.forceRelative{position:relative}.cardContent,.cardImage{position:absolute;top:0;left:0;right:0;bottom:0}.cardContent{overflow:hidden;display:block;height:100%}.cardContent-shadow{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.cardImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center bottom}.cardImage-img{max-height:100%;max-width:100%;min-height:70%;min-width:70%;margin:auto}.coveredImage-img{width:100%;height:100%}.coveredImage-noscale-img{max-height:none;max-width:none}.coveredImage{-webkit-background-size:100% 100%;background-size:100% 100%;background-position:center center}.coveredImage-noScale{-webkit-background-size:cover;background-size:cover}.cardFooter{padding:.5em .3em;position:relative}.cardFooter-transparent{padding-top:.16em}.layout-tv .cardFooter-transparent{padding-top:0}.visualCardBox{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);background-color:#222326;-webkit-border-radius:2px;border-radius:2px}.innerCardFooter{background:rgba(0,0,0,.7);position:absolute;bottom:0;left:0;z-index:1;max-width:100%;color:#fff}.innerCardFooterClear{background-color:transparent}.fullInnerCardFooter{right:0}.cardText{padding:.1em .5em;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:inherit}.cardDefaultText,.cardTextCentered{text-align:center}.layout-tv .cardText{padding:0 .5em;font-size:92%}.innerCardFooter>.cardText{padding:.3em .5em}.cardFooter-transparent>.cardText{color:#ccc}.cardText-secondary{color:#888!important}.visualCardBox .cardText-secondary{color:inherit!important;opacity:.5}.card:focus .cardText{color:#fff!important}.cardText-rightmargin{margin-right:2em}.cardDefaultText{white-space:normal}.textActionButton{background:0 0;border:0!important;padding:0!important;color:inherit;vertical-align:middle;font-family:inherit;font-size:inherit}.textActionButton:hover{text-decoration:underline}.cardFooterLogo{margin-right:1em}.cardImageIcon{width:auto;height:auto;font-size:5em;color:inherit}.cardIndicators{right:2.5%;top:2.5%;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.portraitCardIndicators{right:3%;top:2%}.backdropCardIndicators{right:1.5%;top:2.8%}.cardOverlayButton{color:#fff!important;background-color:rgba(0,0,0,.8)!important;-webkit-border-radius:500px;border-radius:500px;position:absolute;bottom:0;right:0;margin:0 .35em .5em 0;z-index:1;padding:6px}.cardOverlayButton:hover{background-color:rgba(0,0,0,.9)!important;-webkit-transition:background-color .5s ease-out;-o-transition:background-color .5s ease-out;transition:background-color .5s ease-out}.defaultCardColor1{background-color:#009688}.defaultCardColor2{background-color:#D32F2F}.defaultCardColor3{background-color:#0288D1}.defaultCardColor4{background-color:#388E3C}.defaultCardColor5{background-color:#F57F17}.backdropCard-scalable,.bannerCard-scalable{width:100%}.smallBackdropCard-scalable,.squareCard-scalable{width:50%}.portraitCard-scalable{width:33.333333333333333333333333333333%}.overflowPortraitCard-scalable{width:42vw}.overflowBackdropCard-scalable{width:72vw}.overflowSmallBackdropCard-scalable{width:60%}.overflowSquareCard-scalable{width:42vw}@media all and (min-width:400px){.backdropCard-scalable{width:50%}}@media all and (min-width:500px){.smallBackdropCard-scalable,.squareCard-scalable{width:33.333333333333333333333333333333%}}@media all and (min-width:540px){.overflowPortraitCard-scalable{width:30vw}.overflowBackdropCard-scalable{width:64vw}.overflowSquareCard-scalable{width:30vw}.overflowSmallBackdropCard-scalable{width:40%}}@media all and (min-width:640px){.portraitCard-scalable{width:25%}.overflowBackdropCard-scalable{width:56vw}.overflowSmallBackdropCard-scalable{width:40%}}@media all and (min-width:700px){.squareCard-scalable{width:25%}}@media all and (min-width:770px){.backdropCard-scalable{width:33.333333333333333333333333333333%}.overflowSmallBackdropCard-scalable{width:30%}}@media all and (min-width:800px){.bannerCard-scalable{width:50%}.portraitCard-scalable{width:20%}.smallBackdropCard-scalable{width:25%}}@media all and (min-width:900px){.squareCard-scalable{width:20%}}@media all and (min-width:1000px){.smallBackdropCard-scalable{width:20%}.overflowPortraitCard-scalable{width:22vw}.overflowBackdropCard-scalable{width:40vw}.overflowSmallBackdropCard-scalable{width:24%}.overflowSquareCard-scalable{width:22vw}}@media all and (min-width:1200px){.backdropCard-scalable{width:25%}.squareCard-scalable{width:16.666666666666666666666666666667%}.bannerCard-scalable{width:33.333333333333333333333333333333%}.portraitCard-scalable,.smallBackdropCard-scalable{width:16.666666666666666666666666666667%}.overflowSmallBackdropCard-scalable{width:18%}.overflowPortraitCard-scalable,.overflowSquareCard-scalable{width:18vw}}@media all and (min-width:1400px){.portraitCard-scalable,.smallBackdropCard-scalable,.squareCard-scalable{width:14.285714285714285714285714285714%}.overflowPortraitCard-scalable,.overflowSquareCard-scalable{width:15vw}.overflowBackdropCard-scalable{width:30vw}}@media all and (min-width:1600px){.portraitCard-scalable,.smallBackdropCard-scalable{width:12.5%}.backdropCard-scalable{width:20%}.squareCard-scalable{width:12.5%}}@media all and (min-width:1800px){.smallBackdropCard-scalable{width:10%}.overflowBackdropCard-scalable{width:23.5vw}}@media all and (min-width:1920px){.squareCard-scalable{width:11.111111111111111111111111111111%}.smallBackdropCard-scalable{width:10%}}@media all and (min-width:2100px){.backdropCard-scalable{width:20%}.portraitCard-scalable{width:11.111111111111111111111111111111%}}@media all and (min-width:2200px){.bannerCard-scalable{width:25%}.portraitCard-scalable{width:10%}}@media all and (min-width:2500px){.backdropCard-scalable{width:16.666666666666666666666666666667%}}.itemsContainer-tv>.backdropCard-scalable{width:25%}.itemsContainer-tv>.portraitCard-scalable,.itemsContainer-tv>.squareCard-scalable{width:16.666666666666666666666666666667%}.itemsContainer-tv>.overflowSmallBackdropCard-scalable{width:18vw}.itemsContainer-tv>.overflowBackdropCard-scalable{width:23.3vw}.overflowBackdropCard-textCard{width:15.5vw!important}.overflowBackdropCard-textCardPadder{padding-bottom:87.75%}.itemsContainer-tv>.overflowPortraitCard-scalable,.itemsContainer-tv>.overflowSquareCard-scalable{width:15.5vw}
\ No newline at end of file
+.card,.cardImageContainer-button,.textActionButton{cursor:pointer;outline:0!important}.card,.card:focus{font-weight:inherit!important}.card,.cardBox,.textActionButton{outline:0!important}button::-moz-focus-inner{padding:0;border:0}button{-webkit-border-fit:border!important}.card{border:0;font-size:inherit!important;font-family:inherit!important;text-transform:none;background:0 0!important;margin:0;padding:0;display:block;color:inherit!important;contain:style;-webkit-flex-shrink:0;flex-shrink:0}.itemsContainer,.vertical-list{display:-webkit-box;display:-webkit-flex}.itemsContainer{display:flex}.vertical-list{display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.mediaSourceIndicator,.vertical-wrap{display:-webkit-box;display:-webkit-flex}.vertical-wrap{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap}.vertical-wrap.centered{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.vertical-wrap>.card{contain:layout style}.cardScalable{position:relative}.cardPadder-backdrop,.cardPadder-overflowBackdrop,.cardPadder-overflowSmallBackdrop,.cardPadder-smallBackdrop{padding-bottom:56.25%}.cardPadder-overflowSquare,.cardPadder-square{padding-bottom:100%}.cardPadder-overflowPortrait,.cardPadder-portrait,.overflowPortraitCard-textCardPadder{padding-bottom:150%}.cardPadder-banner{padding-bottom:18.5%}.cardBox{padding:0!important;margin:.427em;-webkit-transition:none;-o-transition:none;transition:none;border:0 solid transparent;background-color:transparent}.layout-tv .cardBox{margin:.5em}.layout-mobile .cardBox{margin:.3em}.card-focuscontent{border:.12em solid transparent}.cardBox-focustransform{will-change:transform;-webkit-transition:-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out;transition:transform .2s ease-out}.card:focus>.cardBox-focustransform{-webkit-transform:scale(1.16,1.16);transform:scale(1.16,1.16)}.card:focus{position:relative!important;z-index:10!important}.cardBox-bottompadded{margin-bottom:1.2em!important}.btnCardOptions{position:absolute;bottom:.25em;right:0;margin:0!important;z-index:1}.mediaSourceIndicator{display:flex;position:absolute;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;top:.3em;left:.3em;text-align:center;vertical-align:middle;width:24px;height:24px;-webkit-border-radius:50%;border-radius:50%;color:#fff;background:#38c}.cardText,.innerCardFooter{overflow:hidden;text-align:left}.cardImageContainer{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center center;display:-webkit-flex;display:-webkit-box;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;-webkit-background-clip:content-box!important;background-clip:content-box!important;color:inherit;height:100%}.chapterCardImageContainer{background-color:#000;-webkit-border-radius:0;border-radius:0}.textCardImageContainer{background-color:#444}.cardImageContainer-button{border:0;padding:0;background-color:transparent;-webkit-box-sizing:content-box;box-sizing:content-box}.forceRelative{position:relative}.cardContent,.cardImage{position:absolute;top:0;left:0;right:0;bottom:0}.cardContent{overflow:hidden;display:block;height:100%}.cardContent-shadow{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.cardImage{-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;background-position:center bottom}.cardImage-img{max-height:100%;max-width:100%;min-height:70%;min-width:70%;margin:auto}.coveredImage-img{width:100%;height:100%}.coveredImage-noscale-img{max-height:none;max-width:none}.coveredImage{-webkit-background-size:100% 100%;background-size:100% 100%;background-position:center center}.coveredImage-noScale{-webkit-background-size:cover;background-size:cover}.cardFooter{padding:.5em .3em;position:relative}.cardFooter-transparent{padding-top:.16em}.layout-tv .cardFooter-transparent{padding-top:0}.visualCardBox{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);background-color:#222326;-webkit-border-radius:2px;border-radius:2px}.innerCardFooter{background:rgba(0,0,0,.7);position:absolute;bottom:0;left:0;z-index:1;max-width:100%;color:#fff}.innerCardFooterClear{background-color:transparent}.fullInnerCardFooter{right:0}.cardText{padding:.1em .5em;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:inherit}.cardDefaultText,.cardTextCentered{text-align:center}.layout-tv .cardText{padding:0 .5em;font-size:92%}.innerCardFooter>.cardText{padding:.3em .5em}.cardFooter-transparent>.cardText{color:#ccc}.cardText-secondary{color:#888!important}.visualCardBox .cardText-secondary{color:inherit!important;opacity:.5}.card:focus .cardText{color:#fff!important}.cardText-rightmargin{margin-right:2em}.cardDefaultText{white-space:normal}.textActionButton{background:0 0;border:0!important;padding:0!important;color:inherit;vertical-align:middle;font-family:inherit;font-size:inherit}.textActionButton:hover{text-decoration:underline}.cardFooterLogo{margin-right:1em}.cardImageIcon{width:auto;height:auto;font-size:5em;color:inherit}.cardIndicators{right:2.5%;top:2.5%;position:absolute;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.portraitCardIndicators{right:3%;top:2%}.backdropCardIndicators{right:1.5%;top:2.8%}.cardOverlayButton{color:#fff!important;background-color:rgba(0,0,0,.8)!important;-webkit-border-radius:500px;border-radius:500px;position:absolute;bottom:0;right:0;margin:0 .35em .5em 0;z-index:1;padding:6px}.cardOverlayButton:hover{background-color:rgba(0,0,0,.9)!important;-webkit-transition:background-color .5s ease-out;-o-transition:background-color .5s ease-out;transition:background-color .5s ease-out}.defaultCardColor1{background-color:#009688}.defaultCardColor2{background-color:#D32F2F}.defaultCardColor3{background-color:#0288D1}.defaultCardColor4{background-color:#388E3C}.defaultCardColor5{background-color:#F57F17}.backdropCard-scalable,.bannerCard-scalable{width:100%}.smallBackdropCard-scalable,.squareCard-scalable{width:50%}.portraitCard-scalable{width:33.333333333333333333333333333333%}.overflowPortraitCard-scalable{width:42vw}.overflowBackdropCard-scalable{width:72vw}.overflowSmallBackdropCard-scalable{width:60%}.overflowSquareCard-scalable{width:42vw}@media all and (min-width:400px){.backdropCard-scalable{width:50%}}@media all and (min-width:500px){.smallBackdropCard-scalable,.squareCard-scalable{width:33.333333333333333333333333333333%}}@media all and (min-width:540px){.overflowPortraitCard-scalable{width:30vw}.overflowBackdropCard-scalable{width:64vw}.overflowSquareCard-scalable{width:30vw}.overflowSmallBackdropCard-scalable{width:40%}}@media all and (min-width:640px){.portraitCard-scalable{width:25%}.overflowBackdropCard-scalable{width:56vw}.overflowSmallBackdropCard-scalable{width:40%}}@media all and (min-width:700px){.squareCard-scalable{width:25%}}@media all and (min-width:770px){.backdropCard-scalable{width:33.333333333333333333333333333333%}.overflowSmallBackdropCard-scalable{width:30%}}@media all and (min-width:800px){.bannerCard-scalable{width:50%}.portraitCard-scalable{width:20%}.smallBackdropCard-scalable{width:25%}}@media all and (min-width:900px){.squareCard-scalable{width:20%}}@media all and (min-width:1000px){.smallBackdropCard-scalable{width:20%}.overflowPortraitCard-scalable{width:22vw}.overflowBackdropCard-scalable{width:40vw}.overflowSmallBackdropCard-scalable{width:24%}.overflowSquareCard-scalable{width:22vw}}@media all and (min-width:1200px){.backdropCard-scalable{width:25%}.squareCard-scalable{width:16.666666666666666666666666666667%}.bannerCard-scalable{width:33.333333333333333333333333333333%}.portraitCard-scalable,.smallBackdropCard-scalable{width:16.666666666666666666666666666667%}.overflowSmallBackdropCard-scalable{width:18%}.overflowPortraitCard-scalable,.overflowSquareCard-scalable{width:18vw}}@media all and (min-width:1400px){.portraitCard-scalable,.smallBackdropCard-scalable,.squareCard-scalable{width:14.285714285714285714285714285714%}.overflowPortraitCard-scalable,.overflowSquareCard-scalable{width:15vw}.overflowBackdropCard-scalable{width:30vw}}@media all and (min-width:1600px){.portraitCard-scalable,.smallBackdropCard-scalable{width:12.5%}.backdropCard-scalable{width:20%}.squareCard-scalable{width:12.5%}}@media all and (min-width:1800px){.overflowBackdropCard-scalable{width:23.5vw}}@media all and (min-width:1920px){.squareCard-scalable{width:11.111111111111111111111111111111%}.smallBackdropCard-scalable{width:10%}}@media all and (min-width:2100px){.backdropCard-scalable{width:20%}.portraitCard-scalable{width:11.111111111111111111111111111111%}}@media all and (min-width:2200px){.bannerCard-scalable{width:25%}.portraitCard-scalable{width:10%}}@media all and (min-width:2500px){.backdropCard-scalable{width:16.666666666666666666666666666667%}}.itemsContainer-tv>.backdropCard-scalable{width:25%}.itemsContainer-tv>.portraitCard-scalable,.itemsContainer-tv>.squareCard-scalable{width:16.666666666666666666666666666667%}.itemsContainer-tv>.overflowSmallBackdropCard-scalable{width:18vw}.itemsContainer-tv>.overflowBackdropCard-scalable{width:23.3vw}.overflowBackdropCard-textCard{width:15.5vw!important}.overflowBackdropCard-textCardPadder{padding-bottom:87.75%}.itemsContainer-tv>.overflowPortraitCard-scalable,.itemsContainer-tv>.overflowSquareCard-scalable{width:15.5vw}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js
index 35d19b56ef..31c52d8630 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/cardbuilder/cardbuilder.js
@@ -1,2 +1,2 @@
-define(["datetime","imageLoader","connectionManager","itemHelper","focusManager","indicators","globalize","layoutManager","apphost","dom","browser","itemShortcuts","css!./card","paper-icon-button-light","clearButtonStyle"],function(datetime,imageLoader,connectionManager,itemHelper,focusManager,indicators,globalize,layoutManager,appHost,dom,browser,itemShortcuts){"use strict";function getCardsHtml(items,options){1===arguments.length&&(options=arguments[0],items=options.items);var html=buildCardsHtmlInternal(items,options);return html}function getPostersPerRow(shape,screenWidth){switch(shape){case"portrait":return screenWidth>=2200?10:screenWidth>=2100?9:screenWidth>=1600?8:screenWidth>=1400?7:screenWidth>=1200?6:screenWidth>=800?5:screenWidth>=640?4:3;case"square":return screenWidth>=2100?9:screenWidth>=1800?8:screenWidth>=1400?7:screenWidth>=1200?6:screenWidth>=900?5:screenWidth>=700?4:screenWidth>=500?3:2;case"banner":return screenWidth>=2200?4:screenWidth>=1200?3:screenWidth>=800?2:1;case"backdrop":return screenWidth>=2500?6:screenWidth>=1600?5:screenWidth>=1200?4:screenWidth>=770?3:screenWidth>=420?2:1;case"smallBackdrop":return screenWidth>=1440?8:screenWidth>=1100?6:screenWidth>=800?5:screenWidth>=600?4:screenWidth>=540?3:screenWidth>=420?2:1;case"overflowPortrait":return screenWidth>=1e3?100/22:screenWidth>=540?100/30:100/42;case"overflowSquare":return screenWidth>=1e3?100/22:screenWidth>=540?100/30:100/42;case"overflowBackdrop":return screenWidth>=1e3?2.5:screenWidth>=640?100/56:screenWidth>=540?1.5625:100/72;case"overflowSmallBackdrop":return screenWidth>=1200?100/18:screenWidth>=1e3?100/24:screenWidth>=770?100/30:screenWidth>=540?2.5:100/60;default:return 4}}function isResizable(windowWidth){var screen=window.screen;if(screen){var screenWidth=screen.availWidth;if(screenWidth-windowWidth>20)return!0}return!1}function getImageWidth(shape){var screenWidth=dom.getWindowSize().innerWidth;if(isResizable(screenWidth)){var roundScreenTo=100;screenWidth=Math.floor(screenWidth/roundScreenTo)*roundScreenTo}window.screen&&(screenWidth=Math.min(screenWidth,screen.availWidth||screenWidth));var imagesPerRow=getPostersPerRow(shape,screenWidth),shapeWidth=screenWidth/imagesPerRow;return Math.round(shapeWidth)}function setCardData(items,options){options.shape=options.shape||"auto";var primaryImageAspectRatio=imageLoader.getPrimaryImageAspectRatio(items),isThumbAspectRatio=primaryImageAspectRatio&&Math.abs(primaryImageAspectRatio-1.777777778)<.3,isSquareAspectRatio=primaryImageAspectRatio&&Math.abs(primaryImageAspectRatio-1)<.33||primaryImageAspectRatio&&Math.abs(primaryImageAspectRatio-1.3333334)<.01;"auto"!==options.shape&&"autohome"!==options.shape&&"autooverflow"!==options.shape&&"autoVertical"!==options.shape||(options.preferThumb===!0||isThumbAspectRatio?options.shape="autooverflow"===options.shape?"overflowBackdrop":"backdrop":isSquareAspectRatio?(options.coverImage=!0,options.shape="autooverflow"===options.shape?"overflowSquare":"square"):primaryImageAspectRatio&&primaryImageAspectRatio>1.9?(options.shape="banner",options.coverImage=!0):primaryImageAspectRatio&&Math.abs(primaryImageAspectRatio-.6666667)<.2?options.shape="autooverflow"===options.shape?"overflowPortrait":"portrait":options.shape=options.defaultShape||("autooverflow"===options.shape?"overflowSquare":"square")),"auto"===options.preferThumb&&(options.preferThumb="backdrop"===options.shape||"overflowBackdrop"===options.shape),options.uiAspect=getDesiredAspect(options.shape),options.primaryImageAspectRatio=primaryImageAspectRatio,!options.width&&options.widths&&(options.width=options.widths[options.shape]),options.rows&&"number"!=typeof options.rows&&(options.rows=options.rows[options.shape]),layoutManager.tv&&("backdrop"===options.shape?options.width=options.width||500:"portrait"===options.shape?options.width=options.width||256:"square"===options.shape?options.width=options.width||256:"banner"===options.shape&&(options.width=options.width||800)),options.width=options.width||getImageWidth(options.shape)}function buildCardsHtmlInternal(items,options){var isVertical;"autoVertical"===options.shape&&(isVertical=!0),options.vibrant&&!appHost.supports("imageanalysis")&&(options.vibrant=!1),setCardData(items,options);var className="card";options.shape&&(className+=" "+options.shape+"Card"),options.cardCssClass&&(className+=" "+options.cardCssClass);var currentIndexValue,hasOpenRow,hasOpenSection,apiClient,lastServerId,i,length,html="",itemsInRow=0,sectionTitleTagName=options.sectionTitleTagName||"div";for(i=0,length=items.length;i=.5?.5:0)+"+":null);newIndexValue!==currentIndexValue&&(hasOpenRow&&(html+="",hasOpenRow=!1,itemsInRow=0),hasOpenSection&&(html+="",isVertical&&(html+=""),hasOpenSection=!1),html+=isVertical?'
',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function renderTracksEvents(videoElement,track,serverId){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,serverId);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,serverId);for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent?(videoSubtitlesElem.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),videoSubtitlesElem.classList.remove("hide")):(videoSubtitlesElem.innerHTML="",videoSubtitlesElem.classList.add("hide"))}}}function getMediaStreamAudioTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Audio"===s.Type})}function getMediaStreamTextTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type&&"External"===s.DeliveryMethod})}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(currentPlayOptions.mediaSource),track=streamIndex===-1?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(track)?setTrackForCustomDisplay(mediaElement,null):(setTrackForCustomDisplay(mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=streamIndex!==-1&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=mediaElement.textTracks,i=0;i':'",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,mediaElement=videoElement,options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}var self=this;self.name="Html Video Player",self.type="mediaplayer",self.id="htmlvideoplayer",self.priority=1;var mediaElement,videoDialog,currentSrc,hlsPlayer,currentPlayOptions,subtitleTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,currentAspectRatio,videoSubtitlesElem,currentTrackEvents,started=!1,lastCustomTrackMs=0,customTrackIndex=-1;self.canPlayMediaType=function(mediaType){return"video"===(mediaType||"").toLowerCase()},self.getDeviceProfile=function(item,options){return appHost.getDeviceProfile?appHost.getDeviceProfile(item,options):getDefaultProfile()},self.currentSrc=function(){return currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(started=!1,_currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))};var supportedFeatures;self.supports=function(feature){return supportedFeatures||(supportedFeatures=getSupportedFeatures()),supportedFeatures.indexOf(feature)!==-1},self.setAspectRatio=function(val){var video=mediaElement;video&&(currentAspectRatio=val)},self.getAspectRatio=function(){return currentAspectRatio},self.getSupportedAspectRatios=function(){return[]},self.togglePictureInPicture=function(){return self.setPictureInPictureEnabled(!self.isPictureInPictureEnabled())},self.setPictureInPictureEnabled=function(isEnabled){var video=mediaElement;video&&video.webkitSupportsPresentationMode&&"function"==typeof video.webkitSetPresentationMode&&video.webkitSetPresentationMode(isEnabled?"picture-in-picture":"inline")},self.isPictureInPictureEnabled=function(isEnabled){var video=mediaElement;return!!video&&"picture-in-picture"===video.webkitPresentationMode};var recoverDecodingErrorDate,recoverSwapAudioCodecDate;self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.canSetAudioStreamIndex=function(){return!(!browser.edge&&!browser.msie)},self.setAudioStreamIndex=function(index){var i,length,audioStreams=getMediaStreamAudioTracks(currentPlayOptions.mediaSource),audioTrackOffset=-1;for(i=0,length=audioStreams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(self,"brightnesschange")}},self.getBrightness=function(){if(mediaElement){var val=mediaElement.brightnessValue;return null==val?100:val}},self.setVolume=function(val){mediaElement&&(mediaElement.volume=val/100)},self.getVolume=function(){if(mediaElement)return 100*mediaElement.volume},self.volumeUp=function(){self.setVolume(Math.min(self.getVolume()+2,100))},self.volumeDown=function(){self.setVolume(Math.max(self.getVolume()-2,0))},self.setMute=function(mute){mediaElement&&(mediaElement.muted=mute)},self.isMuted=function(){return!!mediaElement&&mediaElement.muted}}});
\ No newline at end of file
+define(["browser","require","events","apphost","loading","playbackManager","embyRouter","appSettings","connectionManager"],function(browser,require,events,appHost,loading,playbackManager,embyRouter,appSettings,connectionManager){"use strict";function tryRemoveElement(elem){var parentNode=elem.parentNode;if(parentNode)try{parentNode.removeChild(elem)}catch(err){console.log("Error removing dialog element: "+err)}}return function(){function getSavedVolume(){return appSettings.get("volume")||1}function saveVolume(value){value&&appSettings.set("volume",value)}function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function updateVideoUrl(streamInfo){var isHls=streamInfo.url.toLowerCase().indexOf(".m3u8")!==-1,mediaSource=streamInfo.mediaSource,item=streamInfo.item;if(mediaSource&&item&&!mediaSource.RunTimeTicks&&isHls&&"Transcode"===streamInfo.playMethod&&(browser.iOS||browser.osx)){var hlsPlaylistUrl=streamInfo.url.replace("master.m3u8","live.m3u8");return loading.show(),console.log("prefetching hls playlist: "+hlsPlaylistUrl),connectionManager.getApiClient(item.ServerId).ajax({type:"GET",url:hlsPlaylistUrl}).then(function(){return console.log("completed prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),streamInfo.url=hlsPlaylistUrl,Promise.resolve()},function(){return console.log("error prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),Promise.resolve()})}return Promise.resolve()}function getSupportedFeatures(){var list=[],video=document.createElement("video");return browser.ipad&&navigator.userAgent.toLowerCase().indexOf("os 9")===-1&&video.webkitSupportsPresentationMode&&video.webkitSupportsPresentationMode&&"function"==typeof video.webkitSetPresentationMode&&list.push("PictureInPicture"),list.push("SetBrightness"),list}function getCrossOriginValue(mediaSource){return mediaSource.IsRemote?null:"anonymous"}function requireHlsPlayer(callback){require(["hlsjs"],function(hls){window.Hls=hls,callback()})}function bindEventsToHlsPlayer(hls,elem,resolve,reject){hls.on(Hls.Events.MANIFEST_PARSED,function(){playWithPromise(elem).then(resolve,function(){reject&&(reject(),reject=null)})}),hls.on(Hls.Events.ERROR,function(event,data){if(console.log("HLS Error: Type: "+data.type+" Details: "+(data.details||"")+" Fatal: "+(data.fatal||!1)),data.fatal)switch(data.type){case Hls.ErrorTypes.NETWORK_ERROR:data.response&&data.response.code&&data.response.code>=400&&data.response.code<500?(console.log("hls.js response error code: "+data.response.code),reject?(reject(),reject=null):onErrorInternal("network")):(console.log("fatal network error encountered, try to recover"),hls.startLoad());break;case Hls.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover");var currentReject=reject;reject=null,handleMediaError(currentReject);break;default:hls.destroy(),reject?(reject(),reject=null):onErrorInternal("mediadecodeerror")}})}function setCurrentSrc(elem,options){elem.removeEventListener("error",onError);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),destroyHlsPlayer();for(var tracks=getMediaStreamTextTracks(options.mediaSource),currentTrackIndex=-1,i=0,length=tracks.length;i'+getTracksHtml(tracks,options.mediaSource,options.item.ServerId),elem.addEventListener("loadedmetadata",onLoadedMetadata),currentSrc=val,setCurrentTrackElement(currentTrackIndex),playWithPromise(elem)):applySrc(elem,val,options).then(function(){return setTracks(elem,tracks,options.mediaSource,options.item.ServerId),currentSrc=val,setCurrentTrackElement(currentTrackIndex),playWithPromise(elem)})}function handleMediaError(reject){if(hlsPlayer){var now=Date.now();window.performance&&window.performance.now&&(now=performance.now()),!recoverDecodingErrorDate||now-recoverDecodingErrorDate>3e3?(recoverDecodingErrorDate=now,console.log("try to recover media Error ..."),hlsPlayer.recoverMediaError()):!recoverSwapAudioCodecDate||now-recoverSwapAudioCodecDate>3e3?(recoverSwapAudioCodecDate=now,console.log("try to swap Audio Codec and recover media Error ..."),hlsPlayer.swapAudioCodec(),hlsPlayer.recoverMediaError()):(console.error("cannot recover, last media error recovery failed ..."),reject?reject():onErrorInternal("mediadecodeerror"))}}function applySrc(elem,src,options){return window.Windows&&options.mediaSource&&options.mediaSource.IsLocal?Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function(file){var playlist=new Windows.Media.Playback.MediaPlaybackList,source1=Windows.Media.Core.MediaSource.createFromStorageFile(file),startTime=(options.playerStartPositionTicks||0)/1e4;return playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1,startTime)),elem.src=URL.createObjectURL(playlist,{oneTimeOnly:!0}),Promise.resolve()}):(elem.src=src,Promise.resolve())}function onSuccessfulPlay(elem){elem.addEventListener("error",onError)}function playWithPromise(elem){try{var promise=elem.play();return promise&&promise.then?promise.catch(function(e){var errorName=(e.name||"").toLowerCase();return"notallowederror"===errorName||"aborterror"===errorName?(onSuccessfulPlay(elem),Promise.resolve()):Promise.reject()}):(onSuccessfulPlay(elem),Promise.resolve())}catch(err){return console.log("error calling video.play: "+err),Promise.reject()}}function destroyHlsPlayer(){var player=hlsPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}hlsPlayer=null}}function onEnded(){destroyCustomTrack(this),onEndedInternal(!0,this)}function onEndedInternal(triggerEnded,elem){if(elem.removeEventListener("error",onError),elem.src="",elem.innerHTML="",elem.removeAttribute("src"),destroyHlsPlayer(),self.originalDocumentTitle&&(document.title=self.originalDocumentTitle,self.originalDocumentTitle=null),triggerEnded){var stopInfo={src:currentSrc};events.trigger(self,"stopped",[stopInfo]),_currentTime=null}currentSrc=null}function onTimeUpdate(e){var time=this.currentTime;_currentTime=time;var timeMs=1e3*time;timeMs+=(currentPlayOptions.transcodingOffsetTicks||0)/1e4,updateSubtitleText(timeMs),events.trigger(self,"timeupdate")}function onVolumeChange(){saveVolume(this.volume),events.trigger(self,"volumechange")}function onNavigatedToOsd(){videoDialog.classList.remove("videoPlayerContainer-withBackdrop"),videoDialog.classList.remove("videoPlayerContainer-onTop")}function onPlaying(e){started?events.trigger(self,"unpause"):(started=!0,this.removeAttribute("controls"),currentPlayOptions.title?(self.originalDocumentTitle=document.title,document.title=currentPlayOptions.title):self.originalDocumentTitle=null,setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying),seekOnPlaybackStart(e.target),currentPlayOptions.fullscreen?embyRouter.showVideoOsd().then(onNavigatedToOsd):(embyRouter.setTransparency("backdrop"),videoDialog.classList.remove("videoPlayerContainer-withBackdrop"),videoDialog.classList.remove("videoPlayerContainer-onTop")),loading.hide(),ensureValidVideo(this)),events.trigger(self,"playing")}function ensureValidVideo(elem){setTimeout(function(){if(elem===mediaElement)return 0===elem.videoWidth&&0===elem.videoHeight?void onErrorInternal("mediadecodeerror"):void 0},100)}function seekOnPlaybackStart(element){var seconds=(currentPlayOptions.playerStartPositionTicks||0)/1e7;if(seconds){var src=(self.currentSrc()||"").toLowerCase();if(!browser.chrome||src.indexOf(".m3u8")!==-1){var delay=browser.safari?2500:0;delay?setTimeout(function(){element.currentTime=seconds},delay):element.currentTime=seconds}}}function onClick(){events.trigger(self,"click")}function onDblClick(){events.trigger(self,"dblclick")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0;console.log("Media element error code: "+errorCode.toString());var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(hlsPlayer)return void handleMediaError();type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}onErrorInternal(type)}function onErrorInternal(type){destroyCustomTrack(mediaElement),events.trigger(self,"error",[{type:type}])}function onLoadedMetadata(e){var mediaElem=e.target;if(mediaElem.removeEventListener("loadedmetadata",onLoadedMetadata),!hlsPlayer)try{mediaElem.play()}catch(err){console.log("error calling mediaElement.play: "+err)}}function enableHlsPlayer(src,item,mediaSource){if(src&&src.indexOf(".m3u8")===-1)return!1;if(null==window.MediaSource)return!1;if(canPlayNativeHls()){if(browser.edge)return!0;if(mediaSource.RunTimeTicks)return!1}return!(browser.safari&&!browser.osx)}function canPlayNativeHls(){var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function setTracks(elem,tracks,mediaSource,serverId){elem.innerHTML=getTracksHtml(tracks,mediaSource,serverId)}function getTextTrackUrl(track,serverId){return playbackManager.getSubtitleUrl(track,serverId)}function getTracksHtml(tracks,mediaSource,serverId){return tracks.map(function(t){var defaultAttribute=mediaSource.DefaultSubtitleStreamIndex===t.Index?" default":"",language=t.Language||"und",label=t.Language||"und";return'"}).join("")}function enableNativeTrackSupport(track){if(browser.firefox&&(currentSrc||"").toLowerCase().indexOf(".m3u8")!==-1)return!1;if(browser.ps4)return!1;if(browser.edge)return!1;if(track){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return!1}return!0}function destroyCustomTrack(videoElement){if(window.removeEventListener("resize",onVideoResize),window.removeEventListener("orientationchange",onVideoResize),videoSubtitlesElem){var subtitlesContainer=videoSubtitlesElem.parentNode;subtitlesContainer&&tryRemoveElement(subtitlesContainer),videoSubtitlesElem=null}if(currentTrackEvents=null,videoElement)for(var allTracks=videoElement.textTracks||[],i=0;i
',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function renderTracksEvents(videoElement,track,serverId){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,serverId);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,serverId);for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent?(videoSubtitlesElem.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),videoSubtitlesElem.classList.remove("hide")):(videoSubtitlesElem.innerHTML="",videoSubtitlesElem.classList.add("hide"))}}}function getMediaStreamAudioTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Audio"===s.Type})}function getMediaStreamTextTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type&&"External"===s.DeliveryMethod})}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(currentPlayOptions.mediaSource),track=streamIndex===-1?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(track)?setTrackForCustomDisplay(mediaElement,null):(setTrackForCustomDisplay(mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=streamIndex!==-1&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=mediaElement.textTracks,i=0;i':'",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,mediaElement=videoElement,options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}var self=this;self.name="Html Video Player",self.type="mediaplayer",self.id="htmlvideoplayer",self.priority=1;var mediaElement,videoDialog,currentSrc,hlsPlayer,currentPlayOptions,subtitleTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,currentAspectRatio,videoSubtitlesElem,currentTrackEvents,started=!1,lastCustomTrackMs=0,customTrackIndex=-1;self.canPlayMediaType=function(mediaType){return"video"===(mediaType||"").toLowerCase()},self.getDeviceProfile=function(item,options){return appHost.getDeviceProfile?appHost.getDeviceProfile(item,options):getDefaultProfile()},self.currentSrc=function(){return currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(started=!1,_currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))};var supportedFeatures;self.supports=function(feature){return supportedFeatures||(supportedFeatures=getSupportedFeatures()),supportedFeatures.indexOf(feature)!==-1},self.setAspectRatio=function(val){var video=mediaElement;video&&(currentAspectRatio=val)},self.getAspectRatio=function(){return currentAspectRatio},self.getSupportedAspectRatios=function(){return[]},self.togglePictureInPicture=function(){return self.setPictureInPictureEnabled(!self.isPictureInPictureEnabled())},self.setPictureInPictureEnabled=function(isEnabled){var video=mediaElement;video&&video.webkitSupportsPresentationMode&&"function"==typeof video.webkitSetPresentationMode&&video.webkitSetPresentationMode(isEnabled?"picture-in-picture":"inline")},self.isPictureInPictureEnabled=function(isEnabled){var video=mediaElement;return!!video&&"picture-in-picture"===video.webkitPresentationMode};var recoverDecodingErrorDate,recoverSwapAudioCodecDate;self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.canSetAudioStreamIndex=function(){return!(!browser.edge&&!browser.msie)},self.setAudioStreamIndex=function(index){var i,length,audioStreams=getMediaStreamAudioTracks(currentPlayOptions.mediaSource),audioTrackOffset=-1;for(i=0,length=audioStreams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(self,"brightnesschange")}},self.getBrightness=function(){if(mediaElement){var val=mediaElement.brightnessValue;return null==val?100:val}},self.setVolume=function(val){mediaElement&&(mediaElement.volume=val/100)},self.getVolume=function(){if(mediaElement)return 100*mediaElement.volume},self.volumeUp=function(){self.setVolume(Math.min(self.getVolume()+2,100))},self.volumeDown=function(){self.setVolume(Math.max(self.getVolume()-2,0))},self.setMute=function(mute){mediaElement&&(mediaElement.muted=mute)},self.isMuted=function(){return!!mediaElement&&mediaElement.muted}}});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js b/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js
index 23f751b425..8a9995adff 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.js
@@ -1 +1 @@
-define(["dialogHelper","connectionManager","loading","dom","layoutManager","focusManager","globalize","scrollHelper","imageLoader","require","cardStyle","formDialogStyle","emby-button","paper-icon-button-light","css!./imageeditor"],function(dialogHelper,connectionManager,loading,dom,layoutManager,focusManager,globalize,scrollHelper,imageLoader,require){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItem.Id,options}function reload(page,item,focusContext){loading.show();var apiClient;item?(apiClient=connectionManager.getApiClient(item.ServerId),reloadItem(page,item,apiClient,focusContext)):(apiClient=connectionManager.getApiClient(currentItem.ServerId),apiClient.getItem(apiClient.getCurrentUserId(),currentItem.Id).then(function(item){reloadItem(page,item,apiClient,focusContext)}))}function addListeners(container,className,eventName,fn){container.addEventListener(eventName,function(e){var elem=dom.parentWithClass(e.target,className);elem&&fn.call(elem,e)})}function reloadItem(page,item,apiClient,focusContext){currentItem=item,apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function(providers){for(var btnBrowseAllImages=page.querySelectorAll(".btnBrowseAllImages"),i=0,length=btnBrowseAllImages.length;i",html+='
",dlg.innerHTML=html,document.body.appendChild(dlg),loading.hide(),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),dlg.querySelector(".btnRestoreSub").addEventListener("click",function(){dialogHelper.close(dlg),alertText({text:globalize.translate("sharedcomponents#MessageToValidateSupporter"),title:"Emby Premiere"})});var btnRestoreUnlock=dlg.querySelector(".btnRestoreUnlock");btnRestoreUnlock&&btnRestoreUnlock.addEventListener("click",function(){dialogHelper.close(dlg),iapManager.restorePurchase()}),dialogHelper.open(dlg).then(function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1)})}function getUserEmail(){if(connectionManager.isLoggedIntoConnect()){var connectUser=connectionManager.connectUser();if(connectUser&&connectUser.Email)return Promise.resolve(connectUser.Email)}return new Promise(function(resolve,reject){require(["prompt"],function(prompt){prompt({label:globalize.translate("sharedcomponents#LabelEmailAddress")}).then(resolve,reject)})})}function onProductUpdated(e,product){if(product.owned){var resolve=currentDisplayingResolve;resolve&¤tDisplayingProductInfos.filter(function(p){return product.id===p.id}).length&&(cancelInAppPurchase(),resolve())}}function showPremiereInfo(){return appHost.supports("externalpremium")?(showExternalPremiereInfo(),Promise.resolve()):iapManager.getSubscriptionOptions().then(function(subscriptionOptions){var dialogOptions={title:"Emby Premiere",feature:"sync"};return showInAppPurchaseInfo(subscriptionOptions,null,dialogOptions)})}var currentDisplayingProductInfos=[],currentDisplayingResolve=null;return events.on(iapManager,"productupdated",onProductUpdated),{validateFeature:validateFeature,showPremiereInfo:showPremiereInfo}});
\ No newline at end of file
+define(["appSettings","loading","apphost","iapManager","events","shell","globalize","dialogHelper","connectionManager","layoutManager","emby-button","emby-linkbutton"],function(appSettings,loading,appHost,iapManager,events,shell,globalize,dialogHelper,connectionManager,layoutManager){"use strict";function alertText(options){return new Promise(function(resolve,reject){require(["alert"],function(alert){alert(options).then(resolve,reject)})})}function showInAppPurchaseInfo(subscriptionOptions,unlockableProductInfo,dialogOptions){return new Promise(function(resolve,reject){require(["listViewStyle","formDialogStyle"],function(){showInAppPurchaseElement(subscriptionOptions,unlockableProductInfo,dialogOptions,resolve,reject),currentDisplayingResolve=resolve})})}function showPeriodicMessage(feature,settingsKey){return new Promise(function(resolve,reject){require(["listViewStyle","emby-button","formDialogStyle"],function(){var dlg=dialogHelper.createDialog({size:layoutManager.tv?"fullscreen":"fullscreen-border",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog");var html="";html+='
",dlg.innerHTML=html,document.body.appendChild(dlg),loading.hide(),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),dlg.querySelector(".btnRestoreSub").addEventListener("click",function(){dialogHelper.close(dlg),alertText({text:globalize.translate("sharedcomponents#MessageToValidateSupporter"),title:"Emby Premiere"})});var btnRestoreUnlock=dlg.querySelector(".btnRestoreUnlock");btnRestoreUnlock&&btnRestoreUnlock.addEventListener("click",function(){dialogHelper.close(dlg),iapManager.restorePurchase()}),dialogHelper.open(dlg).then(function(){layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1)})}function getUserEmail(){if(connectionManager.isLoggedIntoConnect()){var connectUser=connectionManager.connectUser();if(connectUser&&connectUser.Email)return Promise.resolve(connectUser.Email)}return new Promise(function(resolve,reject){require(["prompt"],function(prompt){prompt({label:globalize.translate("sharedcomponents#LabelEmailAddress")}).then(resolve,reject)})})}function onProductUpdated(e,product){if(product.owned){var resolve=currentDisplayingResolve;resolve&¤tDisplayingProductInfos.filter(function(p){return product.id===p.id}).length&&(cancelInAppPurchase(),resolve())}}function showPremiereInfo(){return appHost.supports("externalpremium")?(showExternalPremiereInfo(),Promise.resolve()):iapManager.getSubscriptionOptions().then(function(subscriptionOptions){var dialogOptions={title:"Emby Premiere",feature:"sync"};return showInAppPurchaseInfo(subscriptionOptions,null,dialogOptions)})}var currentDisplayingProductInfos=[],currentDisplayingResolve=null;return events.on(iapManager,"productupdated",onProductUpdated),{validateFeature:validateFeature,showPremiereInfo:showPremiereInfo}});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/sessionplayer.js b/dashboard-ui/bower_components/emby-webcomponents/sessionplayer.js
index 67cf9a9656..0f9d231e3e 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/sessionplayer.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/sessionplayer.js
@@ -1 +1 @@
-define(["playbackManager","events","serverNotifications","connectionManager"],function(playbackManager,events,serverNotifications,connectionManager){"use strict";function getActivePlayerId(){var info=playbackManager.getPlayerInfo();return info?info.id:null}function sendPlayCommand(apiClient,options,playType){var sessionId=getActivePlayerId(),ids=options.ids||options.items.map(function(i){return i.Id}),remoteOptions={ItemIds:ids.join(","),PlayCommand:playType};return options.startPositionTicks&&(remoteOptions.startPositionTicks=options.startPositionTicks),apiClient.sendPlayCommand(sessionId,remoteOptions)}function sendPlayStateCommand(apiClient,command,options){var sessionId=getActivePlayerId();apiClient.sendPlayStateCommand(sessionId,command,options)}return function(){function getCurrentApiClient(){return currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient()}function sendCommandByName(name,options){var command={Name:name};options&&(command.Arguments=options),self.sendCommand(command)}function onPollIntervalFired(){var apiClient=getCurrentApiClient();apiClient.isWebSocketOpen()||apiClient&&apiClient.getSessions().then(function(sessions){processUpdatedSessions(sessions,apiClient)})}function unsubscribeFromPlayerUpdates(){self.isUpdating=!0;var apiClient=getCurrentApiClient();apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SessionsStop"),pollInterval&&(clearInterval(pollInterval),pollInterval=null)}function getPlayerState(session){return session}function normalizeImages(state){if(state&&state.NowPlayingItem){var item=state.NowPlayingItem;item.ImageTags&&item.ImageTags.Primary||item.PrimaryImageTag&&(item.ImageTags=item.ImageTags||{},item.ImageTags.Primary=item.PrimaryImageTag),item.BackdropImageTag&&item.BackdropItemId===item.Id&&(item.BackdropImageTags=[item.BackdropImageTag]),item.BackdropImageTag&&item.BackdropItemId!==item.Id&&(item.ParentBackdropImageTags=[item.BackdropImageTag],item.ParentBackdropItemId=item.BackdropItemId)}}function firePlaybackEvent(name,session){var state=getPlayerState(session);normalizeImages(state),self.lastPlayerData=state,events.trigger(self,name,[state])}function processUpdatedSessions(sessions,apiClient){var serverId=apiClient.serverId();sessions.map(function(s){s.NowPlayingItem&&(s.NowPlayingItem.ServerId=serverId)});var currentTargetId=getActivePlayerId(),session=sessions.filter(function(s){return s.Id===currentTargetId})[0];session&&(firePlaybackEvent("statechange",session),firePlaybackEvent("timeupdate",session),firePlaybackEvent("pause",session))}var self=this;self.name="Remote Control",self.type="mediaplayer",self.isLocalPlayer=!1,self.id="remoteplayer";var currentServerId;self.sendCommand=function(command){var sessionId=getActivePlayerId(),apiClient=getCurrentApiClient();apiClient.sendCommand(sessionId,command)},self.play=function(options){var playOptions={};return playOptions.ids=options.ids||options.items.map(function(i){return i.Id}),options.startPositionTicks&&(playOptions.startPositionTicks=options.startPositionTicks),sendPlayCommand(getCurrentApiClient(),playOptions,"PlayNow")},self.shuffle=function(item){sendPlayCommand(getCurrentApiClient(),{ids:[item.Id]},"PlayShuffle")},self.instantMix=function(item){sendPlayCommand(getCurrentApiClient(),{ids:[item.Id]},"PlayInstantMix")},self.queue=function(options){sendPlayCommand(getCurrentApiClient(),options,"PlayNext")},self.queueNext=function(options){sendPlayCommand(getCurrentApiClient(),options,"PlayLast")},self.canPlayMediaType=function(mediaType){return mediaType=(mediaType||"").toLowerCase(),"audio"===mediaType||"video"===mediaType},self.canQueueMediaType=function(mediaType){return self.canPlayMediaType(mediaType)},self.stop=function(){sendPlayStateCommand(getCurrentApiClient(),"stop")},self.nextTrack=function(){sendPlayStateCommand(getCurrentApiClient(),"nextTrack")},self.previousTrack=function(){sendPlayStateCommand(getCurrentApiClient(),"previousTrack")},self.seek=function(positionTicks){sendPlayStateCommand(getCurrentApiClient(),"seek",{SeekPositionTicks:positionTicks})},self.currentTime=function(val){if(null!=val)return self.seek(val);var state=self.lastPlayerData||{};return state=state.PlayState||{},state.PositionTicks},self.duration=function(){var state=self.lastPlayerData||{};return state=state.NowPlayingItem||{},state.RunTimeTicks},self.paused=function(){var state=self.lastPlayerData||{};return state=state.PlayState||{},state.IsPaused},self.getVolume=function(){var state=self.lastPlayerData||{};return state=state.PlayState||{},state.VolumeLevel},self.pause=function(){sendPlayStateCommand(getCurrentApiClient(),"Pause")},self.unpause=function(){sendPlayStateCommand(getCurrentApiClient(),"Unpause")},self.setMute=function(isMuted){sendCommandByName(isMuted?"Mute":"Unmute")},self.toggleMute=function(){sendCommandByName("ToggleMute")},self.setVolume=function(vol){sendCommandByName("SetVolume",{Volume:vol})},self.volumeUp=function(){sendCommandByName("VolumeUp")},self.volumeDown=function(){sendCommandByName("VolumeDown")},self.toggleFullscreen=function(){sendCommandByName("ToggleFullscreen")},self.audioTracks=function(){var state=self.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Audio"===s.Type})},self.getAudioStreamIndex=function(){var state=self.lastPlayerData||{};return state=state.PlayState||{},state.AudioStreamIndex},self.setAudioStreamIndex=function(index){sendCommandByName("SetAudioStreamIndex",{Index:index})},self.subtitleTracks=function(){var state=self.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Subtitle"===s.Type})},self.getSubtitleStreamIndex=function(){var state=self.lastPlayerData||{};return state=state.PlayState||{},state.SubtitleStreamIndex},self.setSubtitleStreamIndex=function(index){sendCommandByName("SetSubtitleStreamIndex",{Index:index})},self.getMaxStreamingBitrate=function(){},self.setMaxStreamingBitrate=function(options){},self.isFullscreen=function(){},self.toggleFullscreen=function(){},self.getRepeatMode=function(){},self.setRepeatMode=function(mode){sendCommandByName("SetRepeatMode",{RepeatMode:mode})},self.displayContent=function(options){sendCommandByName("DisplayContent",options)},self.isPlaying=function(){var state=self.lastPlayerData||{};return null!=state.NowPlayingItem},self.isPlayingVideo=function(){var state=self.lastPlayerData||{};return state=state.NowPlayingItem||{},"Video"===state.MediaType},self.isPlayingAudio=function(){var state=self.lastPlayerData||{};return state=state.NowPlayingItem||{},"Audio"===state.MediaType},self.getPlaylist=function(){return Promise.resolve([])},self.getCurrentPlaylistItemId=function(){},self.setCurrentPlaylistItem=function(playlistItemId){return Promise.resolve()},self.removeFromPlaylist=function(playlistItemIds){return Promise.resolve()},self.getPlayerState=function(){var apiClient=getCurrentApiClient();return apiClient?apiClient.getSessions().then(function(sessions){var currentTargetId=getActivePlayerId(),session=sessions.filter(function(s){return s.Id===currentTargetId})[0];return session&&(session=getPlayerState(session)),session}):Promise.resolve({})};var pollInterval;self.subscribeToPlayerUpdates=function(){self.isUpdating=!0;var apiClient=getCurrentApiClient();apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SessionsStart","100,800"),pollInterval&&(clearInterval(pollInterval),pollInterval=null),pollInterval=setInterval(onPollIntervalFired,5e3)};var playerListenerCount=0;self.beginPlayerUpdates=function(){playerListenerCount<=0&&(playerListenerCount=0,self.subscribeToPlayerUpdates()),playerListenerCount++},self.endPlayerUpdates=function(){playerListenerCount--,playerListenerCount<=0&&(unsubscribeFromPlayerUpdates(),playerListenerCount=0)},self.getTargets=function(){var apiClient=getCurrentApiClient(),sessionQuery={ControllableByUserId:apiClient.getCurrentUserId()};return apiClient?apiClient.getSessions(sessionQuery).then(function(sessions){return sessions.filter(function(s){return s.DeviceId!==apiClient.deviceId()}).map(function(s){return{name:s.DeviceName,deviceName:s.DeviceName,id:s.Id,playerName:self.name,appName:s.Client,playableMediaTypes:s.PlayableMediaTypes,isLocalPlayer:!1,supportedCommands:s.SupportedCommands}})}):Promise.resolve([])},self.tryPair=function(target){return Promise.resolve()},events.on(serverNotifications,"Sessions",function(e,apiClient,data){processUpdatedSessions(data,apiClient)}),events.on(serverNotifications,"SessionEnded",function(e,apiClient,data){console.log("Server reports another session ended"),getActivePlayerId()===data.Id&&playbackManager.setDefaultPlayerActive()}),events.on(serverNotifications,"PlaybackStart",function(e,apiClient,data){data.DeviceId!==apiClient.deviceId()&&getActivePlayerId()===data.Id&&firePlaybackEvent("playbackstart",data)}),events.on(serverNotifications,"PlaybackStopped",function(e,apiClient,data){data.DeviceId!==apiClient.deviceId()&&getActivePlayerId()===data.Id&&firePlaybackEvent("playbackstop",data)})}});
\ No newline at end of file
+define(["playbackManager","events","serverNotifications","connectionManager"],function(playbackManager,events,serverNotifications,connectionManager){"use strict";function getActivePlayerId(){var info=playbackManager.getPlayerInfo();return info?info.id:null}function sendPlayCommand(apiClient,options,playType){var sessionId=getActivePlayerId(),ids=options.ids||options.items.map(function(i){return i.Id}),remoteOptions={ItemIds:ids.join(","),PlayCommand:playType};return options.startPositionTicks&&(remoteOptions.startPositionTicks=options.startPositionTicks),apiClient.sendPlayCommand(sessionId,remoteOptions)}function sendPlayStateCommand(apiClient,command,options){var sessionId=getActivePlayerId();apiClient.sendPlayStateCommand(sessionId,command,options)}function getCurrentApiClient(instance){var currentServerId=instance.currentServerId;return currentServerId?connectionManager.getApiClient(currentServerId):connectionManager.currentApiClient()}function sendCommandByName(instance,name,options){var command={Name:name};options&&(command.Arguments=options),instance.sendCommand(command)}function unsubscribeFromPlayerUpdates(instance){instance.isUpdating=!0;var apiClient=getCurrentApiClient(instance);apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SessionsStop"),instance.pollInterval&&(clearInterval(instance.pollInterval),instance.pollInterval=null)}function processUpdatedSessions(instance,sessions,apiClient){var serverId=apiClient.serverId();sessions.map(function(s){s.NowPlayingItem&&(s.NowPlayingItem.ServerId=serverId)});var currentTargetId=getActivePlayerId(),session=sessions.filter(function(s){return s.Id===currentTargetId})[0];session&&(firePlaybackEvent(instance,"statechange",session,apiClient),firePlaybackEvent(instance,"timeupdate",session,apiClient),firePlaybackEvent(instance,"pause",session,apiClient))}function onPollIntervalFired(){var instance=this,apiClient=getCurrentApiClient(instance);apiClient.isWebSocketOpen()||apiClient&&apiClient.getSessions().then(function(sessions){processUpdatedSessions(instance,sessions,apiClient)})}function subscribeToPlayerUpdates(instance){instance.isUpdating=!0;var apiClient=getCurrentApiClient(instance);apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("SessionsStart","100,800"),instance.pollInterval&&(clearInterval(instance.pollInterval),instance.pollInterval=null),instance.pollInterval=setInterval(onPollIntervalFired.bind(instance),5e3)}function getPlayerState(session){return session}function normalizeImages(state,apiClient){if(state&&state.NowPlayingItem){var item=state.NowPlayingItem;item.ImageTags&&item.ImageTags.Primary||item.PrimaryImageTag&&(item.ImageTags=item.ImageTags||{},item.ImageTags.Primary=item.PrimaryImageTag),item.BackdropImageTag&&item.BackdropItemId===item.Id&&(item.BackdropImageTags=[item.BackdropImageTag]),item.BackdropImageTag&&item.BackdropItemId!==item.Id&&(item.ParentBackdropImageTags=[item.BackdropImageTag],item.ParentBackdropItemId=item.BackdropItemId),item.ServerId||(item.ServerId=apiClient.serverId())}}function firePlaybackEvent(instance,name,session,apiClient){var state=getPlayerState(session);normalizeImages(state,apiClient),instance.lastPlayerData=state,events.trigger(instance,name,[state])}function SessionPlayer(){var self=this;this.name="Remote Control",this.type="mediaplayer",this.isLocalPlayer=!1,this.id="remoteplayer",events.on(serverNotifications,"Sessions",function(e,apiClient,data){processUpdatedSessions(self,data,apiClient)}),events.on(serverNotifications,"SessionEnded",function(e,apiClient,data){console.log("Server reports another session ended"),getActivePlayerId()===data.Id&&playbackManager.setDefaultPlayerActive()}),events.on(serverNotifications,"PlaybackStart",function(e,apiClient,data){data.DeviceId!==apiClient.deviceId()&&getActivePlayerId()===data.Id&&firePlaybackEvent(self,"playbackstart",data,apiClient)}),events.on(serverNotifications,"PlaybackStopped",function(e,apiClient,data){data.DeviceId!==apiClient.deviceId()&&getActivePlayerId()===data.Id&&firePlaybackEvent(self,"playbackstop",data,apiClient)})}return SessionPlayer.prototype.beginPlayerUpdates=function(){this.playerListenerCount=this.playerListenerCount||0,this.playerListenerCount<=0&&(this.playerListenerCount=0,subscribeToPlayerUpdates(this)),this.playerListenerCount++},SessionPlayer.prototype.endPlayerUpdates=function(){this.playerListenerCount=this.playerListenerCount||0,this.playerListenerCount--,this.playerListenerCount<=0&&(unsubscribeFromPlayerUpdates(this),this.playerListenerCount=0)},SessionPlayer.prototype.getPlayerState=function(){var apiClient=getCurrentApiClient(this);return apiClient?apiClient.getSessions().then(function(sessions){var currentTargetId=getActivePlayerId(),session=sessions.filter(function(s){return s.Id===currentTargetId})[0];return session&&(session=getPlayerState(session)),session}):Promise.resolve({})},SessionPlayer.prototype.getTargets=function(){var apiClient=getCurrentApiClient(this),sessionQuery={ControllableByUserId:apiClient.getCurrentUserId()};if(apiClient){var name=this.name;return apiClient.getSessions(sessionQuery).then(function(sessions){return sessions.filter(function(s){return s.DeviceId!==apiClient.deviceId()}).map(function(s){return{name:s.DeviceName,deviceName:s.DeviceName,id:s.Id,playerName:name,appName:s.Client,playableMediaTypes:s.PlayableMediaTypes,isLocalPlayer:!1,supportedCommands:s.SupportedCommands}})})}return Promise.resolve([])},SessionPlayer.prototype.sendCommand=function(command){var sessionId=getActivePlayerId(),apiClient=getCurrentApiClient(this);apiClient.sendCommand(sessionId,command)},SessionPlayer.prototype.play=function(options){var playOptions={};return playOptions.ids=options.ids||options.items.map(function(i){return i.Id}),options.startPositionTicks&&(playOptions.startPositionTicks=options.startPositionTicks),sendPlayCommand(getCurrentApiClient(),playOptions,"PlayNow")},SessionPlayer.prototype.shuffle=function(item){sendPlayCommand(getCurrentApiClient(),{ids:[item.Id]},"PlayShuffle")},SessionPlayer.prototype.instantMix=function(item){sendPlayCommand(getCurrentApiClient(this),{ids:[item.Id]},"PlayInstantMix")},SessionPlayer.prototype.queue=function(options){sendPlayCommand(getCurrentApiClient(this),options,"PlayNext")},SessionPlayer.prototype.queueNext=function(options){sendPlayCommand(getCurrentApiClient(this),options,"PlayLast")},SessionPlayer.prototype.canPlayMediaType=function(mediaType){return mediaType=(mediaType||"").toLowerCase(),"audio"===mediaType||"video"===mediaType},SessionPlayer.prototype.canQueueMediaType=function(mediaType){return this.canPlayMediaType(mediaType)},SessionPlayer.prototype.stop=function(){sendPlayStateCommand(getCurrentApiClient(this),"stop")},SessionPlayer.prototype.nextTrack=function(){sendPlayStateCommand(getCurrentApiClient(this),"nextTrack")},SessionPlayer.prototype.previousTrack=function(){sendPlayStateCommand(getCurrentApiClient(this),"previousTrack")},SessionPlayer.prototype.seek=function(positionTicks){sendPlayStateCommand(getCurrentApiClient(this),"seek",{SeekPositionTicks:positionTicks})},SessionPlayer.prototype.currentTime=function(val){if(null!=val)return this.seek(val);var state=this.lastPlayerData||{};return state=state.PlayState||{},state.PositionTicks},SessionPlayer.prototype.duration=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},state.RunTimeTicks},SessionPlayer.prototype.paused=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.IsPaused},SessionPlayer.prototype.getVolume=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.VolumeLevel},SessionPlayer.prototype.pause=function(){sendPlayStateCommand(getCurrentApiClient(this),"Pause")},SessionPlayer.prototype.unpause=function(){sendPlayStateCommand(getCurrentApiClient(this),"Unpause")},SessionPlayer.prototype.setMute=function(isMuted){isMuted?sendCommandByName(this,"Mute"):sendCommandByName(this,"Unmute")},SessionPlayer.prototype.toggleMute=function(){sendCommandByName(this,"ToggleMute")},SessionPlayer.prototype.setVolume=function(vol){sendCommandByName(this,"SetVolume",{Volume:vol})},SessionPlayer.prototype.volumeUp=function(){sendCommandByName(this,"VolumeUp")},SessionPlayer.prototype.volumeDown=function(){sendCommandByName(this,"VolumeDown")},SessionPlayer.prototype.toggleFullscreen=function(){sendCommandByName(this,"ToggleFullscreen")},SessionPlayer.prototype.audioTracks=function(){var state=this.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Audio"===s.Type})},SessionPlayer.prototype.getAudioStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.AudioStreamIndex},SessionPlayer.prototype.setAudioStreamIndex=function(index){sendCommandByName(this,"SetAudioStreamIndex",{Index:index})},SessionPlayer.prototype.subtitleTracks=function(){var state=this.lastPlayerData||{};state=state.NowPlayingItem||{};var streams=state.MediaStreams||[];return streams.filter(function(s){return"Subtitle"===s.Type})},SessionPlayer.prototype.getSubtitleStreamIndex=function(){var state=this.lastPlayerData||{};return state=state.PlayState||{},state.SubtitleStreamIndex},SessionPlayer.prototype.setSubtitleStreamIndex=function(index){sendCommandByName(this,"SetSubtitleStreamIndex",{Index:index})},SessionPlayer.prototype.getMaxStreamingBitrate=function(){},SessionPlayer.prototype.setMaxStreamingBitrate=function(options){},SessionPlayer.prototype.isFullscreen=function(){},SessionPlayer.prototype.toggleFullscreen=function(){},SessionPlayer.prototype.getRepeatMode=function(){},SessionPlayer.prototype.setRepeatMode=function(mode){sendCommandByName(this,"SetRepeatMode",{RepeatMode:mode})},SessionPlayer.prototype.displayContent=function(options){sendCommandByName(this,"DisplayContent",options)},SessionPlayer.prototype.isPlaying=function(){var state=this.lastPlayerData||{};return null!=state.NowPlayingItem},SessionPlayer.prototype.isPlayingVideo=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Video"===state.MediaType},SessionPlayer.prototype.isPlayingAudio=function(){var state=this.lastPlayerData||{};return state=state.NowPlayingItem||{},"Audio"===state.MediaType},SessionPlayer.prototype.getPlaylist=function(){return Promise.resolve([])},SessionPlayer.prototype.getCurrentPlaylistItemId=function(){},SessionPlayer.prototype.setCurrentPlaylistItem=function(playlistItemId){return Promise.resolve()},SessionPlayer.prototype.removeFromPlaylist=function(playlistItemIds){return Promise.resolve()},SessionPlayer.prototype.tryPair=function(target){return Promise.resolve()},SessionPlayer});
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json
index 952814b48e..cc71826be5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ar.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json
index 54493b8447..548c14eff2 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/bg-bg.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json
index cbcd2d8dc7..224e3d7008 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ca.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json
index 76506b6b6c..cced0a5a60 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/cs.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline m\u00e9dia",
"HeaderOfflineDownloadsDescription": "St\u00e1hnout m\u00e9dia do va\u0161eho za\u0159\u00edzen\u00ed pro snadn\u00e9 pou\u017eit\u00ed offline.",
"CloudSyncFeatureDescription": "Synchronizujte va\u0161e m\u00e9dia na cloud pro jednodu\u0161\u0161\u00ed z\u00e1lohov\u00e1n\u00ed, archivaci a konverzi.",
- "CoverArtFeatureDescription": "Cover Art vytv\u00e1\u0159\u00ed z\u00e1bavn\u00e9 obaly a dal\u0161\u00ed mo\u017enosti \u00faprav, kter\u00e9 v\u00e1m pomohou p\u0159izp\u016fsobit va\u0161e medi\u00e1ln\u00ed obr\u00e1zky.",
- "CoverArt": "Obal",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Zru\u0161it synchronizaci",
"CancelSyncJobConfirmation": "Zru\u0161en\u00edm synchronizace budou odstran\u011bny ji\u017e synchronizovan\u00e1 media ze za\u0159\u00edzen\u00ed b\u011bhem dal\u0161\u00edho synchroniza\u010dn\u00edho procesu. Chcete opravdu pokra\u010dovat?",
"CinemaModeFeatureDescription": "S re\u017eimem Kino z\u00edskate funkci, kter\u00e1 p\u0159ed hlavn\u00edm programem p\u0159ehraje trailery a u\u017eivatelsk\u00e1 intra.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json
index b8d155cb5b..06dda75c66 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Medie",
"HeaderOfflineDownloadsDescription": "Download medier til dine enheder for nem offline-brug.",
"CloudSyncFeatureDescription": "Synk dine medier til skyen for nem backup, arkivering og konvertering.",
- "CoverArtFeatureDescription": "Cover Art opretter sjove covers og andre \u00e6ndringer for at personalisere dine mediebilleder.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Annull\u00e9r synk",
"CancelSyncJobConfirmation": "Annullering af synk-jobbet fjerner synkroniserede medier fra enheden under n\u00e6ste synk. Er du sikker p\u00e5 at du vil forts\u00e6tte?",
"CinemaModeFeatureDescription": "Biograftilstand giver dig den \u00e6gte biografoplevelse med trailers og brugertilpassede introer, f\u00f8r selve filmen.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json
index 3f0b77b6f2..de03a22dae 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Medien",
"HeaderOfflineDownloadsDescription": "Lade Medien auf deine Ger\u00e4te herunter um sie einfach offline zu nutzen.",
"CloudSyncFeatureDescription": "Synchronisiere deine Medien in die Cloud f\u00fcr ein Backup, eine Archivierung und Konvertierung.",
- "CoverArtFeatureDescription": "Cover Art erstellt z.B. lustige Cover und erlaubt dir eine weitergehende pers\u00f6nliche Gestaltung deiner Medienbilder.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Download abbrechen",
"CancelSyncJobConfirmation": "Der Abbruch der Synchronisation wird bereits heruntergeladene Medien bei der n\u00e4chsten Synchronisation vom Ger\u00e4t l\u00f6schen. M\u00f6chtest du wirklich fortfahren?",
"CinemaModeFeatureDescription": "Der Cinema Mode bringt das richtige Kinogef\u00fchl mit Trailern und eigenen Intros vor dem Hauptfilm.",
@@ -425,10 +424,13 @@
"Suggestions": "Empfehlungen",
"Favorites": "Favoriten",
"Collections": "Sammlungen",
- "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:",
- "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",
+ "LabelSelectFolderGroups": "Gruppiere Inhalte von folgenden Verzeichnissen automatisch zu Ansichten wie beispielsweise Filme, Musik und TV:",
+ "LabelSelectFolderGroupsHelp": "Verzeichnisse die nicht markiert sind werden alleine mit ihren eigenen Ansichten angezeigt.",
"Shows": "Serien",
- "HeaderLibraryFolders": "Library Folders",
+ "HeaderLibraryFolders": "Bibliotheksverzeichnisse",
"HeaderLandingScreens": "Einstiegsbildschirme",
- "LandingScreensHelp": "W\u00e4hle den Standard-Einstiegsbildschirm bei Klick auf eine Bibliothek."
+ "LandingScreensHelp": "W\u00e4hle den Standard-Einstiegsbildschirm bei Klick auf eine Bibliothek.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json
index b1778219c8..2b81ec6fc4 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/el.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/el.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json
index e4a9dc7a8a..27718358c1 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-gb.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalise your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel sync",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json b/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json
index 63d916aa51..a76e087b5d 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -259,7 +258,7 @@
"PleaseEnterNameOrId": "Please enter a name or an external Id.",
"MessageItemSaved": "Item saved.",
"SearchResults": "Search Results",
- "SyncToOtherDevice": "Sync to other device",
+ "DownloadToOtherDevice": "Download to other device",
"MakeAvailableOffline": "Make available offline",
"ServerNameIsRestarting": "Emby Server - {0} is restarting.",
"ServerNameIsShuttingDown": "Emby Server - {0} is shutting down.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json
index b92844d4ac..d8fe9c4be0 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-ar.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json
index 47400e37a3..bd29222efa 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-mx.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Medios sin conexion",
"HeaderOfflineDownloadsDescription": "Descargue sus medios en su dispositivo para f\u00e1cil uso mientras esta desconectado.",
"CloudSyncFeatureDescription": "Sincronice sus medios a la nube para un f\u00e1cil respaldo, archivo y conversi\u00f3n.",
- "CoverArtFeatureDescription": "Cover Art crea divertidas caratulas y da otros tratamientos para ayudar a personalizar las im\u00e1genes de sus medios.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Programe grabaciones individuales de TV en Vivo, series, y mas con Emby DVR.",
"ButtonCancelSyncJob": "Cancelar descarga",
"CancelSyncJobConfirmation": "Cancelando el trabajo de sincronizaci\u00f3n eliminara los medios descargados del dispositivo durante el pr\u00f3ximo proceso de sincronizaci\u00f3n. \u00bfEsta seguro de que desea continuar?",
"CinemaModeFeatureDescription": "El Modo Cine le da una verdadera experiencia de cine con trailers e intros personalizados antes de la funci\u00f3n.",
@@ -428,7 +427,10 @@
"LabelSelectFolderGroups": "Agrupar autom\u00e1ticamente el contenido de las siguientes carpetas en vistas tales como Pel\u00edculas, M\u00fasica y TV:",
"LabelSelectFolderGroupsHelp": "Las carpetas sin marcar ser\u00e1n mostradas individualmente en su propia vista.",
"Shows": "Programas",
- "HeaderLibraryFolders": "Library Folders",
+ "HeaderLibraryFolders": "Carpetas de Biblioteca",
"HeaderLandingScreens": "Pantallas de Llegada",
- "LandingScreensHelp": "Seleccione la pantalla de llegada por defecto al dar clic sobre una biblioteca."
+ "LandingScreensHelp": "Seleccione la pantalla de llegada por defecto al dar clic sobre una biblioteca.",
+ "HeaderTermsOfPurchase": "T\u00e9rminos de Compra",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json
index 4b86c2efca..fe5892c50c 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/es.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json
index 0fe71f5c88..f0d7acf53b 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fi.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json
index 8080c6b898..85efb151c1 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr-ca.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "M\u00e9dia hors ligne",
"HeaderOfflineDownloadsDescription": "T\u00e9l\u00e9chargez le m\u00e9dia sur vos appareils pour une utilisation hors ligne facile.",
"CloudSyncFeatureDescription": "Synchronisez vos m\u00e9dias avec le Cloud pour faciliter la sauvegarde, l'archivage et la conversion.",
- "CoverArtFeatureDescription": "Covert Art cr\u00e9e des couvertures amusantes et d'autres traitements pour vous aider \u00e0 personnaliser vos images multim\u00e9dias.",
- "CoverArt": "Covert Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Annuler la synchronisation",
"CancelSyncJobConfirmation": "L'annulation de la t\u00e2che de synchronisation supprimera le support synchronis\u00e9 du p\u00e9riph\u00e9rique pendant le prochain processus de synchronisation. \u00cates-vous s\u00fbr de vouloir continuer?",
"CinemaModeFeatureDescription": "Le Mode Cin\u00e9ma vous donne la v\u00e9ritable exp\u00e9rience cin\u00e9matographique avec des bandes annonces et des intros personnalis\u00e9s avant le film.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json
index c6b88855b3..d5e0a09f05 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Contenu multim\u00e9dia hors-ligne",
"HeaderOfflineDownloadsDescription": "T\u00e9l\u00e9chargez votre contenu multim\u00e9dia vers vos appareils pour une meilleure utilisation hors-ligne.",
"CloudSyncFeatureDescription": "Synchronisez votre contenu multim\u00e9dia vers le cloud pour le sauvegarder, l'archiver et le convertir plus facilement.",
- "CoverArtFeatureDescription": "Pochette cr\u00e9\u00e9 des couvertures amusantes et d'autres fonctions pour vous aider \u00e0 personnaliser les pochettes de votre contenu multim\u00e9dia.",
- "CoverArt": "Pochette",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Annuler la synchronisation",
"CancelSyncJobConfirmation": "L'annulation d'une t\u00e2che de synchronisation provoquera la suppression des m\u00e9dias synchronis\u00e9s sur l'appareil lors la prochaine ex\u00e9cution de la synchronisation. \u00cates-vous s\u00fbr de vouloir continuer ?",
"CinemaModeFeatureDescription": "Le Mode Cin\u00e9ma vous donne une v\u00e9ritable exp\u00e9rience cin\u00e9matique avec des trailers et des intros personnalis\u00e9es avant la lecture du contenu.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json
index f336087992..8d8ff49b29 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/gsw.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json
index 4fdba73ae6..faf62d7daa 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/he.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/he.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "\u05de\u05d3\u05d9\u05d4 \u05dc\u05d0 \u05de\u05e7\u05d5\u05d5\u05e0\u05ea",
"HeaderOfflineDownloadsDescription": "\u05d4\u05d5\u05e8\u05d3 \u05de\u05d3\u05d9\u05d4 \u05dc\u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05e9\u05dc\u05da \u05dc\u05e9\u05d9\u05de\u05d5\u05e9 \u05dc\u05d0 \u05de\u05e7\u05d5\u05d5\u05df \u05d1\u05e7\u05dc\u05d5\u05ea.",
"CloudSyncFeatureDescription": "\u05e1\u05e0\u05db\u05e8\u05df \u05d0\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da \u05dc\u05e2\u05e0\u05df \u05dc\u05e6\u05d5\u05e8\u05da \u05d2\u05d9\u05d1\u05d5\u05d9 \u05e7\u05dc, \u05d0\u05d7\u05e1\u05d5\u05df \u05d1\u05d0\u05e8\u05db\u05d9\u05d5\u05df \u05d5\u05d4\u05de\u05e8\u05d4.",
- "CoverArtFeatureDescription": "\u05d0\u05de\u05e0\u05d5\u05ea \u05db\u05e8\u05d9\u05db\u05d4 \u05d9\u05d5\u05e6\u05e8 \u05db\u05d9\u05e1\u05d5\u05d9\u05d9 \u05db\u05d9\u05e3 \u05d5\u05d8\u05d9\u05e4\u05d5\u05dc\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd \u05e9\u05d9\u05e1\u05d9\u05d9\u05e2\u05d5 \u05dc\u05da \u05dc\u05d4\u05ea\u05d0\u05d9\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05d0\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da.",
- "CoverArt": "\u05d0\u05de\u05e0\u05d5\u05ea \u05db\u05e8\u05d9\u05db\u05d4",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05d4\u05d5\u05e8\u05d3\u05d4",
"CancelSyncJobConfirmation": "\u05d1\u05d9\u05d8\u05d5\u05dc \u05de\u05e9\u05d9\u05de\u05ea \u05d4\u05e1\u05d9\u05e0\u05db\u05e8\u05d5\u05df \u05ea\u05e1\u05d9\u05e8 \u05de\u05d3\u05d9\u05d4 \u05e9\u05d4\u05d5\u05e8\u05d3\u05d4 \u05de\u05d4\u05de\u05db\u05e9\u05d9\u05e8 \u05d1\u05de\u05d4\u05dc\u05da \u05ea\u05d4\u05dc\u05d9\u05da \u05d4\u05e1\u05e0\u05db\u05e8\u05d5\u05df \u05d4\u05d1\u05d0. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05de\u05e9\u05d9\u05da?",
"CinemaModeFeatureDescription": "\u05de\u05e6\u05d1 \u05e7\u05d5\u05dc\u05e0\u05d5\u05e2 \u05e0\u05d5\u05ea\u05df \u05dc\u05da \u05d0\u05ea \u05d4\u05d7\u05d5\u05d5\u05d9\u05d4 \u05d4\u05e7\u05d5\u05dc\u05e0\u05d5\u05e2 \u05d0\u05de\u05d9\u05ea\u05d9 \u05e2\u05dd \u05e7\u05d3\u05d9\u05de\u05d5\u05e0\u05d9\u05dd \u05de\u05d5\u05ea\u05d0\u05de\u05d9\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05dc\u05e4\u05e0\u05d9 \u05d4\u05ea\u05db\u05d5\u05e0\u05d4.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json
index feead7a4b4..bb462ffb18 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hr.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Izvanmre\u017eni mediji",
"HeaderOfflineDownloadsDescription": "Preuzimanje medija na svojim ure\u0111ajima za jednostavnu upotrebu izvan mre\u017ee.",
"CloudSyncFeatureDescription": "Sinkronizirajte svoje medije na oblaku za jednostavni backup, arhiviranje i konvertiranje.",
- "CoverArtFeatureDescription": "\"Cover Art\" stvara zabavne naslovnice i druge tretmane koji \u0107e vam pomo\u0107i personalizirati va\u0161e medijske slike.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Kino na\u010din vam daje pravi do\u017eivljaj kina s kratkim filmovima i prilago\u0111enim isje\u010dcima prije odabrane zna\u010dajke.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json
index 120bf1e735..2d3f075b5e 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/hu.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Lemezbor\u00edt\u00f3",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "A Cinema Mode igazi mozi \u00e9lm\u00e9nyt ny\u00fajt el\u0151zetessel \u00e9s egyedi intr\u00f3val a film vet\u00edt\u00e9se el\u0151tt.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json
index b6a148e970..5e1c6ddd31 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/id.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/id.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json
index 4e58072075..b6b4613fe5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/it.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/it.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Media Offline",
"HeaderOfflineDownloadsDescription": "Scarica facilmente i media sui tuoi dispositivi per vederli offline.",
"CloudSyncFeatureDescription": "Sincronizza i tuoi media nel cloud per un facile backup, archiviazione e conversione.",
- "CoverArtFeatureDescription": "Copertine crea delle copertine divertenti ed altri effetti per aiutarti a personalizzare le immagini dei tuoi media.",
- "CoverArt": "Copertine",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Annulla sinc.",
"CancelSyncJobConfirmation": "La cancellazione dell'attivit\u00e0 di sincronizzazione causer\u00e0, alla prossima sincronizzazione, la rimozione di tutti i media sincronizzati dal dispositivo. Sei sicuro di voler procedere?",
"CinemaModeFeatureDescription": "Modalit\u00e0 Cinema ti fa provare la vera esperienza del cinema con trailer ed intro personalizzate prima del contenuto principale.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json
index cbff59798b..cfa2dd2805 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "\u0414\u0435\u0440\u0431\u0435\u0441 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a",
"HeaderOfflineDownloadsDescription": "\u041e\u04a3\u0430\u0439 \u0434\u0435\u0440\u0431\u0435\u0441 \u049b\u043e\u043b\u0434\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b\u04a3\u044b\u0437\u0493\u0430 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u04a3\u044b\u0437.",
"CloudSyncFeatureDescription": "\u0421\u0430\u049b\u0442\u044b\u049b \u043a\u04e9\u0448\u0456\u0440\u043c\u0435\u043d\u0456, \u043c\u04b1\u0440\u0430\u0493\u0430\u0442\u0442\u0430\u0443\u0434\u044b \u0436\u04d9\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443\u0434\u0456 \u0436\u0435\u04a3\u0456\u043b\u0434\u0435\u0442\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0431\u04b1\u043b\u0442\u043f\u0435\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u04a3\u0456\u0437.",
- "CoverArtFeatureDescription": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0436\u0435\u043a\u0435\u043b\u0435\u0443\u0433\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d Cover Art \u049b\u044b\u0437\u044b\u049b\u0442\u044b \u043c\u04b1\u049b\u0430\u0431\u0430\u043b\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u04e9\u04a3\u0434\u0435\u0442\u0443\u043b\u0435\u0440\u0434\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
"CancelSyncJobConfirmation": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u044b \u043a\u0435\u043b\u0435\u0441\u0456 \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044f\u0434\u044b. \u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043a\u0456\u0440\u0456\u0441\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?",
"CinemaModeFeatureDescription": "\u041a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440 \u0440\u0435\u0436\u0456\u043c\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440\u0434\u0456 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043a\u04e9\u0440\u043d\u0435\u0443\u0434\u0456 \u0444\u0438\u043b\u044c\u043c \u0430\u043b\u0434\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u0443 \u043a\u0438\u043d\u043e\u0437\u0430\u043b \u04d9\u0441\u0435\u0440\u0456\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0435\u0434\u0456.",
@@ -425,10 +424,13 @@
"Suggestions": "\u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440",
"Favorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440",
"Collections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440",
- "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:",
- "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",
+ "LabelSelectFolderGroups": "\u041a\u0435\u043b\u0435\u0441\u0456 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u041a\u0438\u043d\u043e, \u041c\u0443\u0437\u044b\u043a\u0430 \u0436\u04d9\u043d\u0435 \u0422\u0414 \u0441\u0438\u044f\u049b\u0442\u044b \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0433\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443:",
+ "LabelSelectFolderGroupsHelp": "\u0411\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0431\u0435\u0433\u0435\u043d \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u04e9\u0437 \u0431\u0435\u0442\u0456\u043c\u0435\u043d \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456.",
"Shows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440",
- "HeaderLibraryFolders": "Library Folders",
+ "HeaderLibraryFolders": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440",
"HeaderLandingScreens": "\u041c\u0430\u049b\u0441\u0430\u0442\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440",
- "LandingScreensHelp": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u0431\u0430\u0441\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0442\u0456\u043d \u04d9\u0434\u0435\u043f\u043a\u0456 \u043c\u0430\u049b\u0441\u0430\u0442\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437."
+ "LandingScreensHelp": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u0431\u0430\u0441\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0442\u0456\u043d \u04d9\u0434\u0435\u043f\u043a\u0456 \u043c\u0430\u049b\u0441\u0430\u0442\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json
index fc941e7e02..00cbf1cf09 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ko.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json b/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json
index e43eef40ee..bd2d7e0f0a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/lt-lt.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Vietin\u0117 medija",
"HeaderOfflineDownloadsDescription": "Atsisi\u0173sti medij\u0105 \u012f savo \u012frenginius lengvai prieigai be interneto.",
"CloudSyncFeatureDescription": "Sinchronizuokite savo medij\u0105 su debesimi lengvam i\u0161saugojimui, archyvavimui ir konvertavimui.",
- "CoverArtFeatureDescription": "Vir\u0161eliai leid\u017eia sukurti linksmus vir\u0161elius ir kita pritaikant medijos paveikslus.",
- "CoverArt": "Vir\u0161eliai",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Kinoteatro re\u017eimas papildomai rodo anonsus ir kit\u0105 med\u017eiag\u0105 prie\u0161 film\u0105.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json
index 45a12ae0ba..5922ac2fd5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ms.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json
index ac557cc41b..f437ee5781 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json
index 42f7e0184b..edcde329cc 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media naar je apparaten voor gemakkelijk offlineebruik.",
"CloudSyncFeatureDescription": "Synchroniseer uw media naar de cloud voor eenvoudige backup, archivering en conversie.",
- "CoverArtFeatureDescription": "Cover Art cre\u00ebert leuke covers en andere bewerkingen om u te helpen uw mediabeelden te personaliseren.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Annuleer synchronisatie",
"CancelSyncJobConfirmation": "Als u de synchroniseertaak annuleert wordt de gesynchroniseerde media bij de volgende synchroniseertaak van het apparaat verwijderd. Weet u zeker dat u door wilt gaan?",
"CinemaModeFeatureDescription": "Bioscoop mode geeft u de ware bioscoopervaring met trailers en aangepaste intro voor de weergave van uw keuze.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json
index 2005955365..86c36d9e1e 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json
index b1d1c60b14..f99323de33 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-br.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "M\u00eddia Offline",
"HeaderOfflineDownloadsDescription": "Download sua m\u00eddia para seus dispositivos para uso offline f\u00e1cil.",
"CloudSyncFeatureDescription": "Sincronize sua m\u00eddia para a nuvem para backup, arquivamento e convers\u00e3o f\u00e1ceis.",
- "CoverArtFeatureDescription": "Arta da Capa cria capas divertidas e d\u00e1 outros tratamentos para ajudar na personaliza\u00e7\u00e3o das imagens da sua m\u00eddia.",
- "CoverArt": "Arta da Capa",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancelar download",
"CancelSyncJobConfirmation": "Cancelar a tarefa de sincroniza\u00e7\u00e3o remover\u00e1 as m\u00eddias transferidas do dispositivo durante o pr\u00f3ximo processo de sincroniza\u00e7\u00e3o. Deseja realmente continuar?",
"CinemaModeFeatureDescription": "Modo Cinema oferece a voc\u00ea uma verdadeira experi\u00eancia de cinema com trailers e intros customizados antes da funcionalidade.",
@@ -275,9 +274,9 @@
"LearnMore": "Saiba mais",
"LabelProfile": "Perfil:",
"LabelBitrateMbps": "Taxa (Mbps):",
- "SyncUnwatchedVideosOnly": "Sincronizar apenas v\u00eddeos n\u00e3o assistidos",
+ "SyncUnwatchedVideosOnly": "Transferir apenas v\u00eddeos n\u00e3o assistidos",
"SyncUnwatchedVideosOnlyHelp": "Apenas v\u00eddeos n\u00e3o assistidos ser\u00e3o transferidos, e os v\u00eddeos ser\u00e3o removidos do dispositivo assim que forem assistidos.",
- "AutomaticallySyncNewContent": "Sincronizar novo conte\u00fado automaticamente",
+ "AutomaticallySyncNewContent": "Transferir novo conte\u00fado automaticamente",
"AutomaticallySyncNewContentHelp": "Novo conte\u00fado adicionado a esta pasta ser\u00e1 automaticamente transferido para o dispositivo.",
"LabelItemLimit": "Limite de itens:",
"LabelItemLimitHelp": "Opcional. Defina o n\u00famero limite de itens que ser\u00e3o transferidos.",
@@ -418,17 +417,20 @@
"HideWatchedContentFromLatestMedia": "Ocultar conte\u00fado assistido das m\u00eddias recentes",
"HeaderOnNow": "Em Exibi\u00e7\u00e3o",
"HeaderPlaybackError": "Erro na Reprodu\u00e7\u00e3o",
- "PlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.",
- "PlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.",
- "PlaybackErrorPlaceHolder": "Please insert the disc in order to play this video.",
+ "PlaybackErrorNotAllowed": "Voc\u00ea n\u00e3o est\u00e1 autorizado a reproduzir este conte\u00fado. Por favor, contacte seu administrador do sistema para mais detalhes.",
+ "PlaybackErrorNoCompatibleStream": "N\u00e3o existem streams compat\u00edveis. Por favor, tente novamente mais tarde ou contate o administrador do sistema para mais detalhes.",
+ "PlaybackErrorPlaceHolder": "Por favor, insira o disco para reproduzir este v\u00eddeo.",
"Guide": "Guia",
- "Suggestions": "Suggestions",
- "Favorites": "Favorites",
- "Collections": "Collections",
- "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:",
- "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",
- "Shows": "Shows",
- "HeaderLibraryFolders": "Library Folders",
- "HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "Suggestions": "Sugest\u00f5es",
+ "Favorites": "Favoritos",
+ "Collections": "Colet\u00e2neas",
+ "LabelSelectFolderGroups": "Agrupar automaticamente o conte\u00fado das seguintes pastas dentro das visualiza\u00e7\u00f5es como Filmes, M\u00fasicas e TV:",
+ "LabelSelectFolderGroupsHelp": "Pastas que n\u00e3o est\u00e3o marcadas ser\u00e3o exibidas em sua pr\u00f3pria visualiza\u00e7\u00e3o.",
+ "Shows": "S\u00e9ries",
+ "HeaderLibraryFolders": "Pastas da Biblioteca",
+ "HeaderLandingScreens": "Telas de Entrada",
+ "LandingScreensHelp": "Selecione a tela de entrada padr\u00e3o quando clicar em uma biblioteca.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json
index d7636a6f74..c682de15a5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-pt.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json
index 5f0aa5c64a..96cf33b82a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ro.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json
index 2cdc8a0bc3..816ebc0215 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435",
"HeaderOfflineDownloadsDescription": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u0430\u0448\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.",
"CloudSyncFeatureDescription": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0431\u043b\u0430\u043a\u043e\u043c \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.",
- "CoverArtFeatureDescription": "Cover Art \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0438 \u0438\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u043a \u0432\u0430\u0448\u0438\u043c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443",
"CancelSyncJobConfirmation": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0438\u0437\u044a\u044f\u0442\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c?",
"CinemaModeFeatureDescription": "\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043d\u043e\u0437\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043b\u0430 \u0441 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0434 \u0444\u0438\u043b\u044c\u043c\u043e\u043c.",
@@ -331,7 +330,7 @@
"Categories": "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438",
"Sports": "\u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u044b\u0435",
"News": "\u041d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0435",
- "Movies": "\u0424\u0438\u043b\u044c\u043c\u043e\u0432\u044b\u0435",
+ "Movies": "\u0424\u0438\u043b\u044c\u043c\u044b",
"Kids": "\u0414\u0435\u0442\u0441\u043a\u0438\u0435",
"EnableColorCodedBackgrounds": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0444\u043e\u043d",
"SortChannelsBy": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b\u044b \u043f\u043e:",
@@ -425,10 +424,13 @@
"Suggestions": "\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435",
"Favorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435",
"Collections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438",
- "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:",
- "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",
+ "LabelSelectFolderGroups": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u041a\u0438\u043d\u043e, \u041c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0422\u0412) \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043e\u043a:",
+ "LabelSelectFolderGroupsHelp": "\u041f\u0430\u043f\u043a\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043d\u044f\u0442\u044b \u0444\u043b\u0430\u0436\u043a\u0438, \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445.",
"Shows": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0438",
- "HeaderLibraryFolders": "Library Folders",
+ "HeaderLibraryFolders": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438",
"HeaderLandingScreens": "\u0426\u0435\u043b\u0435\u0432\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b",
- "LandingScreensHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0449\u0435\u043b\u0447\u043a\u0435 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435."
+ "LandingScreensHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u044d\u043a\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0449\u0435\u043b\u0447\u043a\u0435 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json
index 45a12ae0ba..5922ac2fd5 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json
index b5d9f25975..3dc1d81f22 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sl-si.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json
index a24cc251a4..848291afdc 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offlinemedia",
"HeaderOfflineDownloadsDescription": "Ladda ner media till dina enheter f\u00f6r att sen spela upp dom enkelt offline.",
"CloudSyncFeatureDescription": "Synka din media till molnet f\u00f6r l\u00e4tttillg\u00e4ngligt backup, arkivering och konvertering.",
- "CoverArtFeatureDescription": "Cover Art ger dig roliga omslag och andra funktioner f\u00f6r att personanpassa dina mediabilder.",
- "CoverArt": "Bildomslag",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Avbryt synkronisering",
"CancelSyncJobConfirmation": "Om synkroniseringen avbryts kommer synkad media tas bort under n\u00e4sta synkprocess. \u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta?",
"CinemaModeFeatureDescription": "Biol\u00e4get ger dig en bioupplevelse med trailers och anpassade intros f\u00f6re varje film.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json
index b22bdf9d5b..4377144803 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/tr.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json
index 4c79ea122d..8e21b5cf26 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/uk.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json
index f72e71b6d3..fe0d6e9933 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/vi.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json
index 25968da819..54e9bda139 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-cn.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "\u79bb\u7ebf\u5a92\u4f53",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "\u5c01\u9762\u56fe",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "\u53d6\u6d88\u540c\u6b65",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json
index bebce15626..a11381fe4a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-hk.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json
index 6833e2ffc1..9587f655ed 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json
+++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-tw.json
@@ -48,8 +48,7 @@
"HeaderOfflineDownloads": "Offline Media",
"HeaderOfflineDownloadsDescription": "Download media to your devices for easy offline use.",
"CloudSyncFeatureDescription": "Sync your media to the cloud for easy backup, archiving, and converting.",
- "CoverArtFeatureDescription": "Cover Art creates fun covers and other treatments to help you personalize your media images.",
- "CoverArt": "Cover Art",
+ "DvrFeatureDescription": "Schedule individual Live TV recordings, series recordings, and more with Emby DVR.",
"ButtonCancelSyncJob": "Cancel download",
"CancelSyncJobConfirmation": "Cancelling the sync job will remove downloaded media from the device during the next sync process. Are you sure you wish to proceed?",
"CinemaModeFeatureDescription": "Cinema Mode gives you the true cinema experience with trailers and custom intros before the feature.",
@@ -430,5 +429,8 @@
"Shows": "Shows",
"HeaderLibraryFolders": "Library Folders",
"HeaderLandingScreens": "Landing Screens",
- "LandingScreensHelp": "Select the default landing screen when clicking on a library."
+ "LandingScreensHelp": "Select the default landing screen when clicking on a library.",
+ "HeaderTermsOfPurchase": "Terms of Purchase",
+ "PrivacyPolicy": "Privacy policy",
+ "TermsOfUse": "Terms of use"
}
\ No newline at end of file
diff --git a/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js b/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js
index ea6b70f1e6..71969c1e9a 100644
--- a/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js
+++ b/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js
@@ -1 +1 @@
-define(["apphost","globalize","connectionManager","layoutManager","shell","focusManager","scrollHelper","appSettings","registrationServices","dialogHelper","paper-icon-button-light","formDialogStyle"],function(appHost,globalize,connectionManager,layoutManager,shell,focusManager,scrollHelper,appSettings,registrationServices,dialogHelper){"use strict";function submitJob(dlg,apiClient,userId,syncOptions,form){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!form)throw new Error("form cannot be null");var selectSyncTarget=form.querySelector("#selectSyncTarget"),target=selectSyncTarget?selectSyncTarget.value:null;if(!target)return require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#PleaseSelectDeviceToSyncTo"))}),!1;var options={userId:userId,TargetId:target,ParentId:syncOptions.ParentId,Category:syncOptions.Category};return setJobValues(options,form),syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){dialogHelper.close(dlg),require(["toast"],function(toast){var msg=target===apiClient.deviceId()?globalize.translate("sharedcomponents#DownloadScheduled"):globalize.translate("sharedcomponents#SyncJobCreated");toast(msg)})}),!0}function submitQuickSyncJob(apiClient,userId,targetId,syncOptions){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!targetId)throw new Error("targetId cannot be null");var options={userId:userId,TargetId:targetId,ParentId:syncOptions.ParentId,Category:syncOptions.Category,Quality:syncOptions.Quality,Bitrate:syncOptions.Bitrate};return syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){require(["toast"],function(toast){var msg=targetId===apiClient.deviceId()?globalize.translate("sharedcomponents#DownloadScheduled"):globalize.translate("sharedcomponents#SyncJobCreated");toast(msg)})})}function setJobValues(job,form){var txtBitrate=form.querySelector("#txtBitrate"),bitrate=txtBitrate?txtBitrate.value:null;bitrate&&(bitrate=1e6*parseFloat(bitrate)),job.Bitrate=bitrate;var selectQuality=form.querySelector("#selectQuality");selectQuality&&(job.Quality=selectQuality.value,appSettings.set("sync-lastquality",job.Quality||""));var selectProfile=form.querySelector("#selectProfile");selectProfile&&(job.Profile=selectProfile.value);var txtItemLimit=form.querySelector("#txtItemLimit");txtItemLimit&&(job.ItemLimit=txtItemLimit.value||null);var chkSyncNewContent=form.querySelector("#chkSyncNewContent");chkSyncNewContent&&(job.SyncNewContent=chkSyncNewContent.checked);var chkUnwatchedOnly=form.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(job.UnwatchedOnly=chkUnwatchedOnly.checked)}function renderForm(options){return new Promise(function(resolve,reject){require(["emby-checkbox","emby-input","emby-select"],function(){appHost.appInfo().then(function(appInfo){renderFormInternal(options,appInfo,resolve)})})})}function onHelpLinkClick(e){return shell.openUrl(this.href),e.preventDefault(),!1}function renderFormInternal(options,appInfo,resolve){var elem=options.elem,dialogOptions=options.dialogOptions,targets=dialogOptions.Targets,html="",targetContainerClass=options.isLocalSync?" hide":"";(options.showName||dialogOptions.Options.indexOf("Name")!==-1)&&(html+='');var syncTargetLabel=globalize.translate("sharedcomponents#LabelDownloadTo");options.readOnlySyncTarget?(html+='
",html+=getEditorHtml(options,systemInfo),dlg.innerHTML=html,initEditor(dlg,options,fileOptions),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),currentDialog=dlg;var txtCurrentPath=dlg.querySelector("#txtDirectoryPickerPath");txtCurrentPath.value=initialPath;var txtNetworkPath=dlg.querySelector("#txtNetworkPath");txtNetworkPath&&(txtNetworkPath.value=options.networkSharePath||""),options.pathReadOnly||refreshDirectoryBrowser(dlg,txtCurrentPath.value,null,!0)})},self.close=function(){currentDialog&&dialogHelper.close(currentDialog)}}var systemInfo;return directoryBrowser});
\ No newline at end of file
diff --git a/dashboard-ui/components/guestinviter/connectlink.js b/dashboard-ui/components/guestinviter/connectlink.js
index 2e8db92412..51f817f563 100644
--- a/dashboard-ui/components/guestinviter/connectlink.js
+++ b/dashboard-ui/components/guestinviter/connectlink.js
@@ -1 +1 @@
-define(["dialogHelper","connectHelper","emby-input","emby-button","emby-collapse","paper-icon-button-light","formDialogStyle"],function(dialogHelper,connectHelper){"use strict";return{show:function(){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET","components/guestinviter/connectlink.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return ApiClient.getCurrentUser().then(function(user){connectHelper.updateUserLink(ApiClient,user,dlg.querySelector("#txtConnectUsername").value).then(function(){dialogHelper.close(dlg)},function(){dialogHelper.close(dlg)})}),e.preventDefault(),!1})},xhr.send()})}}});
\ No newline at end of file
+define(["dialogHelper","connectHelper","emby-input","emby-button","emby-collapse","paper-icon-button-light","formDialogStyle","emby-linkbutton"],function(dialogHelper,connectHelper){"use strict";return{show:function(){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET","components/guestinviter/connectlink.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return ApiClient.getCurrentUser().then(function(user){connectHelper.updateUserLink(ApiClient,user,dlg.querySelector("#txtConnectUsername").value).then(function(){dialogHelper.close(dlg)},function(){dialogHelper.close(dlg)})}),e.preventDefault(),!1})},xhr.send()})}}});
\ No newline at end of file
diff --git a/dashboard-ui/components/guestinviter/connectlink.template.html b/dashboard-ui/components/guestinviter/connectlink.template.html
index 6db4daaadc..4416a712ea 100644
--- a/dashboard-ui/components/guestinviter/connectlink.template.html
+++ b/dashboard-ui/components/guestinviter/connectlink.template.html
@@ -17,7 +17,7 @@
',html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;return html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',image.Width&&image.Height?(html+=image.Width+" x "+image.Height,image.Language&&(html+=" • "+image.Language)):image.Language&&(html+=image.Language),html+="
",dlg.innerHTML=html,dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".editorContent");initEditor(editorContent),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),reloadBrowsableImages(editorContent)},xhr.send()}function onDialogClosed(){loading.hide(),hasChanges?currentResolve():currentReject()}var currentItemId,currentItemType,currentResolve,currentReject,selectedProvider,hasChanges=!1,browsableImagePageSize=browserInfo.slow?6:30,browsableImageStartIndex=0,browsableImageType="Primary";return{show:function(itemId,itemType,imageType){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,hasChanges=!1,browsableImageStartIndex=0,browsableImageType=imageType||"Primary",selectedProvider=null,showEditor(itemId,itemType)})}}});
\ No newline at end of file
+define(["loading","dialogHelper","imageLoader","emby-checkbox","emby-button","paper-icon-button-light","css!css/metadataeditor.css","emby-linkbutton"],function(loading,dialogHelper,imageLoader){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItemId,options}function reloadBrowsableImages(page){loading.show();var options=getBaseRemoteOptions();options.type=browsableImageType,options.startIndex=browsableImageStartIndex,options.limit=browsableImagePageSize,options.IncludeAllLanguages=page.querySelector("#chkAllLanguages").checked;var provider=selectedProvider||"";provider&&(options.ProviderName=provider),ApiClient.getAvailableRemoteImages(options).then(function(result){renderRemoteImages(page,result,browsableImageType,options.startIndex,options.limit),page.querySelector("#selectBrowsableImageType").value=browsableImageType;var providersHtml=result.Providers.map(function(p){return'"}),selectImageProvider=page.querySelector("#selectImageProvider");selectImageProvider.innerHTML='"+providersHtml,selectImageProvider.value=provider,loading.hide()})}function renderRemoteImages(page,imagesResult,imageType,startIndex,limit){page.querySelector(".availableImagesPaging").innerHTML=getPagingHtml(startIndex,limit,imagesResult.TotalRecordCount);for(var html="",i=0,length=imagesResult.Images.length;ilimit;html+='
',html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;return html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',image.Width&&image.Height?(html+=image.Width+" x "+image.Height,image.Language&&(html+=" • "+image.Language)):image.Language&&(html+=image.Language),html+="
diff --git a/dashboard-ui/devices/ios/ios.css b/dashboard-ui/devices/ios/ios.css
index ef8f87611c..a94a48e9d3 100644
--- a/dashboard-ui/devices/ios/ios.css
+++ b/dashboard-ui/devices/ios/ios.css
@@ -1 +1 @@
-.backdropContainer{background-attachment:initial}.txtSearch{padding-bottom:.5em!important;text-indent:0!important}.searchInputContainer{margin-left:5%;margin-right:5%}.btnSync,.categorySyncButton{display:none!important}.dialog.background-theme-b{background:rgba(28,28,28,.84);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
\ No newline at end of file
+.backdropContainer{background-attachment:initial}.txtSearch{padding-bottom:.5em!important;text-indent:0!important}.searchInputContainer{margin-left:5%;margin-right:5%}.btnSync,.categorySyncButton{display:none!important}.dialog.background-theme-b{background:rgba(28,28,28,.84);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.formDialogFooter{position:static!important;margin:0 -1em!important}
\ No newline at end of file
diff --git a/dashboard-ui/librarydisplay.html b/dashboard-ui/librarydisplay.html
index f38b4ce0bb..d80de88af4 100644
--- a/dashboard-ui/librarydisplay.html
+++ b/dashboard-ui/librarydisplay.html
@@ -30,7 +30,7 @@
\ No newline at end of file
diff --git a/dashboard-ui/mypreferencesdisplay.html b/dashboard-ui/mypreferencesdisplay.html
index 719ad9efb7..75e9e12e14 100644
--- a/dashboard-ui/mypreferencesdisplay.html
+++ b/dashboard-ui/mypreferencesdisplay.html
@@ -46,7 +46,7 @@
";page.querySelector(".content-primary").insertAdjacentHTML("afterbegin",html)}})})});
\ No newline at end of file
+define(["datetime","jQuery","dom","loading","humanedate","cardStyle","listViewStyle","emby-linkbutton"],function(datetime,$,dom,loading){"use strict";function renderNoHealthAlertsMessage(page){var html='
"}).join(""):"";var imgHeight=70,url=nowPlayingItem?seriesImageUrl(nowPlayingItem,{height:imgHeight})||imageUrl(nowPlayingItem,{height:imgHeight}):null,isRefreshing=!1;url!==currentImgUrl&&(currentImgUrl=url,isRefreshing=!0,imageLoader.lazyImage(nowPlayingImageElement,url)),nowPlayingItem.Id?isRefreshing&&ApiClient.getItem(Dashboard.getCurrentUserId(),nowPlayingItem.Id).then(function(item){userdataButtons.fill({item:item,includePlayed:!1,element:nowPlayingUserData})}):userdataButtons.destroy({element:nowPlayingUserData})}function onPlaybackStart(e,state){var player=this;onStateChanged.call(player,e,state)}function onRepeatModeChange(e){var player=this;updateRepeatModeDisplay(playbackManager.getRepeatMode(player))}function showNowPlayingBar(){getNowPlayingBar().then(slideUp)}function hideNowPlayingBar(){isEnabled=!1;var elem=document.getElementsByClassName("nowPlayingBar")[0];elem&&(document.body.classList.contains("hiddenNowPlayingBar")?(dom.removeEventListener(elem,dom.whichTransitionEvent(),onSlideDownComplete,{once:!0}),elem.classList.add("hide"),elem.classList.add("nowPlayingBar-hidden")):slideDown(elem))}function onPlaybackStopped(e,state){var player=this;player.isLocalPlayer?"Audio"!==state.NextMediaType&&hideNowPlayingBar():state.NextMediaType||hideNowPlayingBar()}function onPlayPauseStateChanged(e){if(isEnabled){var player=this;updatePlayPauseState(player.paused())}}function onStateChanged(event,state){var player=this;return state.NowPlayingItem?player.isLocalPlayer&&state.NowPlayingItem&&"Video"==state.NowPlayingItem.MediaType?void hideNowPlayingBar():(isEnabled=!0,nowPlayingBarElement?void updatePlayerStateInternal(event,state):void getNowPlayingBar().then(function(){updatePlayerStateInternal(event,state)})):void hideNowPlayingBar()}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player),updateTimeDisplay(playbackManager.currentTime(player),currentRuntimeTicks)}}}function releaseCurrentPlayer(){var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"statechange",onPlaybackStart),events.off(player,"repeatmodechange",onRepeatModeChange),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"playing",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),currentPlayer=null,hideNowPlayingBar())}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player.isMuted(),player.getVolume())}}function bindToPlayer(player){player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player&&(playbackManager.getPlayerState(player).then(function(state){onStateChanged.call(player,{type:"init"},state)}),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"statechange",onPlaybackStart),events.on(player,"repeatmodechange",onRepeatModeChange),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"playing",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate)))}var currentPlayer,currentTimeElement,nowPlayingImageElement,nowPlayingTextElement,nowPlayingUserData,muteButton,volumeSlider,volumeSliderContainer,playPauseButtons,positionSlider,toggleRepeatButton,toggleRepeatButtonIcon,isEnabled,nowPlayingBarElement,currentImgUrl,currentPlayerSupportedCommands=[],lastUpdateTime=0,lastPlayerState={},currentRuntimeTicks=0;events.on(playbackManager,"playerchange",function(){bindToPlayer(playbackManager.getCurrentPlayer())}),bindToPlayer(playbackManager.getCurrentPlayer())});
\ No newline at end of file
diff --git a/dashboard-ui/strings/be-by.json b/dashboard-ui/strings/be-by.json
index 608b0917a2..8393671de7 100644
--- a/dashboard-ui/strings/be-by.json
+++ b/dashboard-ui/strings/be-by.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/bg-bg.json b/dashboard-ui/strings/bg-bg.json
index 3fac1ea090..8974674b83 100644
--- a/dashboard-ui/strings/bg-bg.json
+++ b/dashboard-ui/strings/bg-bg.json
@@ -794,7 +794,7 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
"LabelKodiMetadataUserHelp": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u0442\u0435 \u0442\u043e\u0432\u0430, \u0437\u0430 \u0434\u0430 \u0434\u044a\u0440\u0436\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u0433\u043b\u0435\u0434\u0430\u043d\u0438\u044f\u0442\u0430 \u043c\u0435\u0436\u0434\u0443 Emby \u0441\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u0438 Nfo \u0444\u0430\u0439\u043b\u043e\u0432\u0435\u0442\u0435 \u0443\u0435\u0434\u043d\u0430\u043a\u0432\u0435\u043d\u0430.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
diff --git a/dashboard-ui/strings/ca.json b/dashboard-ui/strings/ca.json
index 2b5b846112..c920d1cd9d 100644
--- a/dashboard-ui/strings/ca.json
+++ b/dashboard-ui/strings/ca.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Prefer\u00e8ncies d'Nfo",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Format de la data de publicaci\u00f3:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Desa els directoris de les imatges als fitxers nfo",
diff --git a/dashboard-ui/strings/de-de.json b/dashboard-ui/strings/de-de.json
index 20832a9b4e..a32194b945 100644
--- a/dashboard-ui/strings/de-de.json
+++ b/dashboard-ui/strings/de-de.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/el.json b/dashboard-ui/strings/el.json
index 17130aab97..f4cdc49a32 100644
--- a/dashboard-ui/strings/el.json
+++ b/dashboard-ui/strings/el.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/es-ar.json b/dashboard-ui/strings/es-ar.json
index 4cc25798a9..faff66db4d 100644
--- a/dashboard-ui/strings/es-ar.json
+++ b/dashboard-ui/strings/es-ar.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/es-es.json b/dashboard-ui/strings/es-es.json
index e1aedfffaf..6f993d8eb0 100644
--- a/dashboard-ui/strings/es-es.json
+++ b/dashboard-ui/strings/es-es.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/fa.json b/dashboard-ui/strings/fa.json
index 3ed422ddf2..b1422de32a 100644
--- a/dashboard-ui/strings/fa.json
+++ b/dashboard-ui/strings/fa.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/fi.json b/dashboard-ui/strings/fi.json
index 514dfbd264..3f2226639b 100644
--- a/dashboard-ui/strings/fi.json
+++ b/dashboard-ui/strings/fi.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/fr-ca.json b/dashboard-ui/strings/fr-ca.json
index 6337ff01fa..66fe4cb5ab 100644
--- a/dashboard-ui/strings/fr-ca.json
+++ b/dashboard-ui/strings/fr-ca.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/gsw.json b/dashboard-ui/strings/gsw.json
index cc32c207ca..26738c7426 100644
--- a/dashboard-ui/strings/gsw.json
+++ b/dashboard-ui/strings/gsw.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/he.json b/dashboard-ui/strings/he.json
index fedfd05ad4..821215a5a9 100644
--- a/dashboard-ui/strings/he.json
+++ b/dashboard-ui/strings/he.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/hu.json b/dashboard-ui/strings/hu.json
index f322b5fd6a..8f5e8fcf56 100644
--- a/dashboard-ui/strings/hu.json
+++ b/dashboard-ui/strings/hu.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Megjelen\u00e9si d\u00e1tum form\u00e1tuma:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/id.json b/dashboard-ui/strings/id.json
index 90790b5662..a12c3b8b61 100644
--- a/dashboard-ui/strings/id.json
+++ b/dashboard-ui/strings/id.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/kk.json b/dashboard-ui/strings/kk.json
index 79148c3b8f..7c2ae12692 100644
--- a/dashboard-ui/strings/kk.json
+++ b/dashboard-ui/strings/kk.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "\u0411\u04b1\u043b \u043c\u04d9\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043d\u044b\u04a3 GetProtocolInfo \u0441\u04b1\u0440\u0430\u043d\u044b\u0441\u0442\u0430\u0440\u044b\u043d\u0430 \u0436\u0430\u0443\u0430\u043f \u0431\u0435\u0440\u0433\u0435\u043d\u0434\u0435 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b.",
"TabNfoSettings": "NFO \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456",
"HeaderKodiMetadataHelp": "NFO \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d Emby \u043a\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u043c\u0435 \u049b\u043e\u043b\u0434\u0430\u0443\u044b\u043d \u049b\u0430\u043c\u0442\u0438\u0434\u044b. NFO \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443 \u043d\u0435\u043c\u0435\u0441\u0435 \u04e9\u0448\u0456\u0440\u0443 \u04af\u0448\u0456\u043d, \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0442\u04af\u0440\u043b\u0435\u0440\u0456\u043d\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u043e\u043f\u0446\u0438\u044f\u043b\u0430\u0440\u0434\u044b \u0442\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u049b\u043e\u0439\u044b\u043d\u0434\u044b\u0441\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.",
- "LabelKodiMetadataUser": "NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u043c\u044b\u043d\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u0430\u0440\u0430\u0443 \u043a\u04af\u0439\u0456\u043c\u0435\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443:",
- "LabelKodiMetadataUserHelp": "Emby Server \u0436\u04d9\u043d\u0435 NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u043a\u04af\u0439 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d \u0431\u04b1\u043d\u044b \u049b\u043e\u0441\u044b\u04a3\u044b\u0437.",
+ "LabelKodiMetadataUser": "NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u0430 \u043c\u044b\u043d\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b\u04a3 \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u0441\u0430\u049b\u0442\u0430\u0443:",
+ "LabelKodiMetadataUserHelp": "\u0411\u0430\u0441\u049b\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u0434\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u0430 \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u0441\u0430\u049b\u0442\u0430\u0443\u044b\u0434\u044b \u049b\u043e\u0441\u044b\u04a3\u044b\u0437.",
"LabelKodiMetadataDateFormat": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456\u043d\u0456\u04a3 \u043f\u0456\u0448\u0456\u043c\u0456:",
"LabelKodiMetadataDateFormatHelp": "\u041e\u0441\u044b \u043f\u0456\u0448\u0456\u043c\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f nfo \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u0431\u0430\u0440\u043b\u044b\u049b \u043a\u04af\u043d\u0434\u0435\u0440\u0456 \u043e\u049b\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.",
"LabelKodiMetadataSaveImagePaths": "\u0421\u0443\u0440\u0435\u0442 \u0436\u043e\u043b\u0434\u0430\u0440\u044b\u043d NFO-\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u0443",
diff --git a/dashboard-ui/strings/ko.json b/dashboard-ui/strings/ko.json
index ae3a14f0c3..9f0c8ec96f 100644
--- a/dashboard-ui/strings/ko.json
+++ b/dashboard-ui/strings/ko.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "\ucd9c\uc2dc \ub0a0\uc9dc \ud615\uc2dd:",
"LabelKodiMetadataDateFormatHelp": "nfo \ud30c\uc77c\uc758 \ubaa8\ub4e0 \ub0a0\uc9dc\ub294 \uc774 \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc77d\uace0 \uc501\ub2c8\ub2e4.",
"LabelKodiMetadataSaveImagePaths": "nfo \ud30c\uc77c\uc5d0 \uc774\ubbf8\uc9c0 \uacbd\ub85c \uc800\uc7a5",
diff --git a/dashboard-ui/strings/lt-lt.json b/dashboard-ui/strings/lt-lt.json
index df9f8de27f..a05903d6f5 100644
--- a/dashboard-ui/strings/lt-lt.json
+++ b/dashboard-ui/strings/lt-lt.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/ms.json b/dashboard-ui/strings/ms.json
index 257565b2b7..2207b80b20 100644
--- a/dashboard-ui/strings/ms.json
+++ b/dashboard-ui/strings/ms.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/ro.json b/dashboard-ui/strings/ro.json
index 2c7d11f1ff..1aaf68564e 100644
--- a/dashboard-ui/strings/ro.json
+++ b/dashboard-ui/strings/ro.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/ru.json b/dashboard-ui/strings/ru.json
index 137fe6fc8c..a2a4478dec 100644
--- a/dashboard-ui/strings/ru.json
+++ b/dashboard-ui/strings/ru.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b GetProtocolInfo \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.",
"TabNfoSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b NFO",
"HeaderKodiMetadataHelp": "\u0412 Emby \u043d\u0430\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f NFO- \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f NFO-\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u043e\u0439 \u00ab\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435\u00bb, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u0438 \u043f\u043e \u0442\u0438\u043f\u0430\u043c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445.",
- "LabelKodiMetadataUser": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441 NFO-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c:",
- "LabelKodiMetadataUserHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\u0445 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 Emby Server \u0438 NFO-\u0444\u0430\u0439\u043b\u0430\u043c\u0438.",
+ "LabelKodiMetadataUser": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 NFO-\u0444\u0430\u0439\u043b\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c:",
+ "LabelKodiMetadataUserHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\u0445 \u0432 NFO-\u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445.",
"LabelKodiMetadataDateFormat": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430:",
"LabelKodiMetadataDateFormatHelp": "\u0412\u0441\u0435 \u0434\u0430\u0442\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 NFO-\u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443.",
"LabelKodiMetadataSaveImagePaths": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 NFO-\u0444\u0430\u0439\u043b\u043e\u0432",
diff --git a/dashboard-ui/strings/sk.json b/dashboard-ui/strings/sk.json
index 1fa953f393..b76605e90b 100644
--- a/dashboard-ui/strings/sk.json
+++ b/dashboard-ui/strings/sk.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/sl-si.json b/dashboard-ui/strings/sl-si.json
index eceae19f71..a242f42118 100644
--- a/dashboard-ui/strings/sl-si.json
+++ b/dashboard-ui/strings/sl-si.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/tr.json b/dashboard-ui/strings/tr.json
index 2332294239..21ebca2ba2 100644
--- a/dashboard-ui/strings/tr.json
+++ b/dashboard-ui/strings/tr.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/uk.json b/dashboard-ui/strings/uk.json
index c45e109d85..477012bed7 100644
--- a/dashboard-ui/strings/uk.json
+++ b/dashboard-ui/strings/uk.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/vi.json b/dashboard-ui/strings/vi.json
index ac1ce1c1b5..c8f18d88d5 100644
--- a/dashboard-ui/strings/vi.json
+++ b/dashboard-ui/strings/vi.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/zh-cn.json b/dashboard-ui/strings/zh-cn.json
index fffe44c54d..dad9c59b23 100644
--- a/dashboard-ui/strings/zh-cn.json
+++ b/dashboard-ui/strings/zh-cn.json
@@ -795,7 +795,7 @@
"TabNfoSettings": "Nfo \u8bbe\u5b9a",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
"LabelKodiMetadataUser": "\u540c\u6b65\u7528\u6237\u7684\u89c2\u770b\u65e5\u671f\u5230nfo\u6587\u4ef6:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "\u53d1\u884c\u65e5\u671f\u683c\u5f0f\uff1a",
"LabelKodiMetadataDateFormatHelp": "Nfo\u7684\u6240\u6709\u65e5\u671f\u5c06\u4f7f\u7528\u8fd9\u79cd\u683c\u5f0f\u88ab\u8bfb\u53d6\u548c\u5199\u5165\u3002",
"LabelKodiMetadataSaveImagePaths": "\u4fdd\u5b58\u56fe\u50cf\u8def\u5f84\u5728NFO\u6587\u4ef6",
diff --git a/dashboard-ui/strings/zh-hk.json b/dashboard-ui/strings/zh-hk.json
index 7dffc301d4..406590de7f 100644
--- a/dashboard-ui/strings/zh-hk.json
+++ b/dashboard-ui/strings/zh-hk.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/strings/zh-tw.json b/dashboard-ui/strings/zh-tw.json
index 5672b56986..bab609bbd2 100644
--- a/dashboard-ui/strings/zh-tw.json
+++ b/dashboard-ui/strings/zh-tw.json
@@ -794,8 +794,8 @@
"LabelProtocolInfoHelp": "The value that will be used when responding to GetProtocolInfo requests from the device.",
"TabNfoSettings": "Nfo Settings",
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Metadata tab to configure options for your media types.",
- "LabelKodiMetadataUser": "Sync user watch data to nfo's for:",
- "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.",
+ "LabelKodiMetadataUser": "Save user watch data to nfo's for:",
+ "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.",
"LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
diff --git a/dashboard-ui/tv.html b/dashboard-ui/tv.html
index 68b47c0334..eadd5c6a94 100644
--- a/dashboard-ui/tv.html
+++ b/dashboard-ui/tv.html
@@ -5,7 +5,7 @@